/* Generated by Nim Compiler v0.12.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 Ttype223847 Ttype223847;
typedef struct Tidobj196015 Tidobj196015;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Ttypeseq223843 Ttypeseq223843;
typedef struct Tnode223809 Tnode223809;
typedef struct Tsym223841 Tsym223841;
typedef struct Tloc223823 Tloc223823;
typedef struct Ropeobj174009 Ropeobj174009;
typedef struct Cell48947 Cell48947;
typedef struct Cellseq48963 Cellseq48963;
typedef struct Gcheap51018 Gcheap51018;
typedef struct Gcstack51016 Gcstack51016;
typedef struct Cellset48959 Cellset48959;
typedef struct Pagedesc48955 Pagedesc48955;
typedef struct Memregion30890 Memregion30890;
typedef struct Smallchunk30842 Smallchunk30842;
typedef struct Llchunk30884 Llchunk30884;
typedef struct Bigchunk30844 Bigchunk30844;
typedef struct Intset30817 Intset30817;
typedef struct Trunk30813 Trunk30813;
typedef struct Avlnode30888 Avlnode30888;
typedef struct Gcstat51014 Gcstat51014;
typedef struct Tident196021 Tident196021;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tscope223835 Tscope223835;
typedef struct TY223944 TY223944;
typedef struct Tstrtable223813 Tstrtable223813;
typedef struct Tsymseq223811 Tsymseq223811;
typedef struct Tlineinfo188352 Tlineinfo188352;
typedef struct Tlib223827 Tlib223827;
typedef struct Tpasscontext275005 Tpasscontext275005;
typedef struct Tcontext278023 Tcontext278023;
typedef struct Tproccon278011 Tproccon278011;
typedef struct Intset220056 Intset220056;
typedef struct Trunk220052 Trunk220052;
typedef struct Trunkseq220054 Trunkseq220054;
typedef struct Tlinkedlist139028 Tlinkedlist139028;
typedef struct Tlistentry139022 Tlistentry139022;
typedef struct Tidtable223859 Tidtable223859;
typedef struct Tidpairseq223857 Tidpairseq223857;
typedef struct Tctx277048 Tctx277048;
typedef struct TY278143 TY278143;
typedef struct Tnodeseq223803 Tnodeseq223803;
typedef struct Slice90369 Slice90369;
typedef struct Toverloaditer284431 Toverloaditer284431;
typedef struct Tidentiter231141 Tidentiter231141;
typedef struct TY90959 TY90959;
typedef struct Tcandidate386209 Tcandidate386209;
typedef struct Trepltypevars300577 Trepltypevars300577;
typedef struct Genericctx474888 Genericctx474888;
typedef struct Tinstantiation223831 Tinstantiation223831;
typedef struct TY223932 TY223932;
typedef struct Tinstantiationpair278013 Tinstantiationpair278013;
typedef struct TY458962 TY458962;
typedef struct TY458963 TY458963;
typedef struct Suggest393010 Suggest393010;
typedef struct TY129408 TY129408;
typedef struct Toptionentry278005 Toptionentry278005;
typedef struct TY467453 TY467453;
typedef struct Templctx470056 Templctx470056;
typedef struct Tliftctx482686 Tliftctx482686;
typedef struct Exception Exception;
typedef struct TSafePoint TSafePoint;
typedef struct Tfieldinstctx484548 Tfieldinstctx484548;
typedef struct Tfieldsctx484710 Tfieldsctx484710;
typedef struct Ttabiter231119 Ttabiter231119;
typedef struct Trodreader266030 Trodreader266030;
typedef struct Tindex266028 Tindex266028;
typedef struct Tiitable231274 Tiitable231274;
typedef struct Tiipairseq231272 Tiipairseq231272;
typedef struct Table266063 Table266063;
typedef struct Keyvaluepairseq266066 Keyvaluepairseq266066;
typedef struct Memfile264208 Memfile264208;
typedef struct Basechunk30840 Basechunk30840;
typedef struct Freecell30832 Freecell30832;
typedef struct Tidpair223855 Tidpair223855;
typedef struct TY277254 TY277254;
typedef struct TY189420 TY189420;
typedef struct PprocHEX3Aobjecttype277233 PprocHEX3Aobjecttype277233;
typedef struct TY277273 TY277273;
typedef struct Tiipair231270 Tiipair231270;
typedef struct Keyvaluepair266069 Keyvaluepair266069;
typedef struct TY277234 TY277234;
typedef struct TY277239 TY277239;
typedef struct TY277274 TY277274;
typedef struct Vmargs277042 Vmargs277042;
typedef struct Tblock277030 Tblock277030;
typedef struct TY277214 TY277214;
typedef N_NIMCALL_PTR(void, TY3889) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3894) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3889 marker;
TY3894 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj196015  {
  TNimObject Sup;
NI id;
};
struct  Tloc223823  {
NU8 k;
NU8 s;
NU16 flags;
Ttype223847* t;
Ropeobj174009* r;
Ropeobj174009* heaproot;
};
struct  Ttype223847  {
  Tidobj196015 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq223843* sons;
Tnode223809* n;
Tsym223841* owner;
Tsym223841* sym;
Tsym223841* destructor;
Tsym223841* deepcopy;
Tsym223841* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc223823 loc;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  Cell48947  {
NI refcount;
TNimType* typ;
};
struct  Cellseq48963  {
NI len;
NI cap;
Cell48947** d;
};
struct  Cellset48959  {
NI counter;
NI max;
Pagedesc48955* head;
Pagedesc48955** data;
};
typedef Smallchunk30842* TY30905[512];
typedef Trunk30813* Trunkbuckets30815[256];
struct  Intset30817  {
Trunkbuckets30815 data;
};
struct  Memregion30890  {
NI minlargeobj;
NI maxlargeobj;
TY30905 freesmallchunks;
Llchunk30884* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk30844* freechunkslist;
Intset30817 chunkstarts;
Avlnode30888* root;
Avlnode30888* deleted;
Avlnode30888* last;
Avlnode30888* freeavlnodes;
};
struct  Gcstat51014  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap51018  {
Gcstack51016* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq48963 zct;
Cellseq48963 decstack;
Cellset48959 cycleroots;
Cellseq48963 tempstack;
NI recgclock;
Memregion30890 region;
Gcstat51014 stat;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tstrtable223813  {
NI counter;
Tsymseq223811* data;
};
struct  Tlineinfo188352  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tsym223841  {
  Tidobj196015 Sup;
NU8 kind;
union{
struct {Ttypeseq223843* typeinstcache;
Tscope223835* typscope;
} S1;
struct {TY223944* procinstcache;
Tsym223841* gcunsafetyreason;
} S2;
struct {TY223944* usedgenerics;
Tstrtable223813 tab;
} S3;
struct {Tsym223841* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype223847* typ;
Tident196021* name;
Tlineinfo188352 info;
Tsym223841* owner;
NU32 flags;
Tnode223809* ast;
NU32 options;
NI position;
NI offset;
Tloc223823 loc;
Tlib223827* annex;
Tnode223809* constraint;
};
struct  Tpasscontext275005  {
  TNimObject Sup;
NIM_BOOL fromcache;
};
struct  Intset220056  {
NI counter;
NI max;
Trunk220052* head;
Trunkseq220054* data;
};
struct  Tlinkedlist139028  {
Tlistentry139022* head;
Tlistentry139022* tail;
NI counter;
};
struct  Tidtable223859  {
NI counter;
Tidpairseq223857* data;
};
typedef N_NIMCALL_PTR(Tnode223809*, TY278074) (Tcontext278023* c, Tnode223809* n);
typedef N_NIMCALL_PTR(Tnode223809*, TY278079) (Tcontext278023* c, Tnode223809* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode223809*, TY278087) (Tcontext278023* c, Tnode223809* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode223809*, TY278095) (Tcontext278023* c, Tnode223809* n);
typedef N_NIMCALL_PTR(Tnode223809*, TY278100) (Tcontext278023* c, Tnode223809* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode223809*, TY278108) (Tcontext278023* c, Tnode223809* n);
typedef N_NIMCALL_PTR(Tnode223809*, TY278113) (Tcontext278023* c, Tnode223809* n, Tnode223809* norig, NU32 filter);
typedef N_NIMCALL_PTR(Ttype223847*, TY278120) (Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
typedef struct {
N_NIMCALL_PTR(Tnode223809*, ClPrc) (Tcontext278023* c, Tidtable223859 pt, Tnode223809* n, void* ClEnv);
void* ClEnv;
} TY278126;
typedef struct {
N_NIMCALL_PTR(Tsym223841*, ClPrc) (Tcontext278023* c, Tsym223841* fn, Tidtable223859 pt, Tlineinfo188352 info, void* ClEnv);
void* ClEnv;
} TY278132;
typedef N_NIMCALL_PTR(Tsym223841*, TY278148) (Tcontext278023* c, Tsym223841* dc, Ttype223847* t, Tlineinfo188352 info, NU8 op);
struct  Tcontext278023  {
  Tpasscontext275005 Sup;
Tsym223841* module;
Tscope223835* currentscope;
Tscope223835* importtable;
Tscope223835* toplevelscope;
Tproccon278011* p;
Tsymseq223811* friendmodules;
NI instcounter;
Intset220056 ambiguoussymbols;
NI intypeclass;
NI ingenericcontext;
NI inunrolledcontext;
NI compilescontextid;
NI compilescontextidgenerator;
NI ingenericinst;
Tsymseq223811* converters;
Tsymseq223811* patterns;
Tlinkedlist139028 optionstack;
Tidtable223859 symmapping;
Tlinkedlist139028 libs;
TY278074 semconstexpr;
TY278079 semexpr;
TY278087 semtryexpr;
TY278095 semtryconstexpr;
TY278100 semoperand;
TY278108 semconstboolexpr;
TY278113 semoverloadedcall;
TY278120 semtypenode;
TY278126 seminferredlambda;
TY278132 semgenerateinstance;
Intset220056 includedfiles;
Tstrtable223813 userpragmas;
Tctx277048* evalcontext;
Intset220056 unknownidents;
TY278143* generics;
NI lastgenericidx;
NI hloloopdetector;
NI inparallelstmt;
TY278148 insttypeboundop;
};
struct  Tnode223809  {
Ttype223847* typ;
Tlineinfo188352 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym223841* sym;
} S4;
struct {Tident196021* ident;
} S5;
struct {Tnodeseq223803* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
struct  Tproccon278011  {
Tsym223841* owner;
Tsym223841* resultsym;
NI nestedloopcounter;
NI nestedblockcounter;
NI intrystmt;
Tproccon278011* next;
NIM_BOOL wasforwarded;
Tnode223809* bracketexpr;
};
struct  Tident196021  {
  Tidobj196015 Sup;
NimStringDesc* s;
Tident196021* next;
NI h;
};
typedef NU8 TY481044[20];
struct  Slice90369  {
NI a;
NI b;
};
typedef Tnode223809* TY463620[2];
typedef Ttype223847* TY463625[2];
struct  Tidentiter231141  {
NI h;
Tident196021* name;
};
struct  Toverloaditer284431  {
Tidentiter231141 it;
Tsym223841* m;
NU8 mode;
NI symchoiceindex;
Tscope223835* scope;
Intset220056 insymchoice;
};
typedef NimStringDesc* TY191306[2];
struct TY90959 {
NimStringDesc* Field0;
NI Field1;
};
struct  Tcandidate386209  {
Tcontext278023* c;
NI exactmatches;
NI genericmatches;
NI subtypematches;
NI intconvmatches;
NI convmatches;
NU8 state;
Ttype223847* callee;
Tsym223841* calleesym;
NI calleescope;
Tnode223809* call;
Tidtable223859 bindings;
NIM_BOOL basetypematch;
NU8 fauxmatch;
NIM_BOOL genericconverter;
NIM_BOOL coercedistincts;
NIM_BOOL typedescmatched;
NIM_BOOL isnocall;
NI inheritancepenalty;
Tsymseq223811* errors;
};
struct  Trepltypevars300577  {
Tcontext278023* c;
Tidtable223859 typemap;
Tidtable223859 symmap;
Tidtable223859 localcache;
Tlineinfo188352 info;
NIM_BOOL allowmetatypes;
NIM_BOOL skiptypedesc;
Tsym223841* owner;
NI recursionlimit;
};
struct  Genericctx474888  {
Intset220056 tomixin;
NIM_BOOL cursorinbody;
Tnode223809* bracketexpr;
};
struct  Tscope223835  {
NI depthlevel;
Tstrtable223813 symbols;
Tnodeseq223803* usingsyms;
Tscope223835* parent;
};
struct  Tinstantiation223831  {
Tsym223841* sym;
Ttypeseq223843* concretetypes;
TY223932* usedby;
NI compilesid;
};
struct  Tinstantiationpair278013  {
Tsym223841* genericsym;
Tinstantiation223831* inst;
};
typedef NU8 Tspecialwords204012[33];
typedef Ttype223847* TY278864[2];
typedef Tnode223809* TY496414[3];
struct TY458963 {
Tsym223841* Field0;
NI Field1;
};
struct  Suggest393010  {
NU8 section;
TY129408* qualifiedpath;
NimStringDesc* filepath;
NI line;
NI column;
NimStringDesc* doc;
NU8 symkind;
NimStringDesc* forth;
};
typedef Ttype223847* TY391275[1];
struct  Tlistentry139022  {
  TNimObject Sup;
Tlistentry139022* prev;
Tlistentry139022* next;
};
struct  Toptionentry278005  {
  Tlistentry139022 Sup;
NU32 options;
NU8 defaultcc;
Tlib223827* dynlib;
NU64 notes;
Tnode223809* otherpragmas;
};
struct  TY467453  {
NI HEX3Astate;
Tnode223809* genericparams466483;
NimStringDesc* paramname466485;
Tlineinfo188352 info466486;
Tcontext278023* c466481;
};
typedef struct {
N_NIMCALL_PTR(Ttype223847*, ClPrc) (Ttype223847* typeclass, Tident196021* typid, void* ClEnv);
void* ClEnv;
} TY466502;
typedef N_CLOSURE_PTR(Ttype223847*, TMP3275) (Ttype223847* typeclass, Tident196021* typid);
typedef N_CLOSURE_PTR(Ttype223847*, TMP3276) (Ttype223847* typeclass, Tident196021* typid);
typedef N_CLOSURE_PTR(Ttype223847*, TMP3277) (Ttype223847* typeclass, Tident196021* typid);
typedef N_CLOSURE_PTR(Ttype223847*, TMP3278) (Ttype223847* typeclass, Tident196021* typid);
typedef N_CLOSURE_PTR(Ttype223847*, TMP3279) (Ttype223847* typeclass, Tident196021* typid);
typedef N_CLOSURE_PTR(Ttype223847*, TMP3280) (Ttype223847* typeclass, Tident196021* typid);
typedef N_CLOSURE_PTR(Ttype223847*, TMP3281) (Ttype223847* typeclass, Tident196021* typid);
typedef N_CLOSURE_PTR(Ttype223847*, TMP3282) (Ttype223847* typeclass, Tident196021* typid);
typedef N_CLOSURE_PTR(Ttype223847*, TMP3284) (Ttype223847* typeclass, Tident196021* typid);
typedef N_CLOSURE_PTR(Ttype223847*, TMP3285) (Ttype223847* typeclass, Tident196021* typid);
struct  Templctx470056  {
Tcontext278023* c;
Intset220056 tobind;
Intset220056 tomixin;
Intset220056 toinject;
Tsym223841* owner;
NIM_BOOL cursorinbody;
Tnode223809* bracketexpr;
};
typedef Tsym223841* TY480397[2];
typedef Tnode223809* TY279106[2];
typedef Tnode223809* TY226071[7];
typedef Tnode223809* TY241880[1];
typedef NU8 TY493057[32];
typedef NimStringDesc* TY491845[2];
typedef N_NIMCALL_PTR(Tnode223809*, Transformation452013) (Tcontext278023* c, Tnode223809* n);
typedef NimStringDesc* TY191293[3];
typedef NimStringDesc* TY190421[1];
struct  Tliftctx482686  {
Tcontext278023* c;
Tlineinfo188352 info;
NU8 kind;
Tsym223841* fn;
Ttype223847* 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;
} TY19211;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY19211 raiseAction;
};
typedef N_CLOSURE_PTR(Tsym223841*, TMP3569) (Tcontext278023* c, Tsym223841* fn, Tidtable223859 pt, Tlineinfo188352 info);
struct  Tfieldinstctx484548  {
Ttype223847* tupletype;
NI tupleindex;
Tsym223841* field;
NIM_BOOL replacebyfieldname;
};
struct  Tfieldsctx484710  {
Tcontext278023* c;
NU8 m;
};
typedef N_NIMCALL_PTR(Tnode223809*, TY275069) (Tsym223841* m, NI32 fileidx);
struct  Ttabiter231119  {
NI h;
};
typedef N_CLOSURE_PTR(Tnode223809*, TMP3633) (Tcontext278023* c, Tidtable223859 pt, Tnode223809* n, void* ClEnv);
typedef N_CLOSURE_PTR(Tsym223841*, TMP3634) (Tcontext278023* c, Tsym223841* fn, Tidtable223859 pt, Tlineinfo188352 info, void* ClEnv);
struct  Tiitable231274  {
NI counter;
Tiipairseq231272* data;
};
struct  Tindex266028  {
NI lastidxkey;
NI lastidxval;
Tiitable231274 tab;
NimStringDesc* r;
NI offset;
};
struct  Table266063  {
Keyvaluepairseq266066* data;
NI counter;
};
struct  Memfile264208  {
void* mem;
NI size;
int handle;
};
struct  Trodreader266030  {
  TNimObject Sup;
NI pos;
NCSTRING s;
NU32 options;
NU8 reason;
TY223932* moddeps;
TY223932* files;
NI dataidx;
NI convertersidx;
NI initidx;
NI interfidx;
NI compilerprocsidx;
NI methodsidx;
NimStringDesc* filename;
Tindex266028 index;
Tindex266028 imports;
NI readerindex;
NI line;
NI moduleid;
Table266063 syms;
Memfile264208 memfile;
Tsymseq223811* methods;
NimStringDesc* origfile;
NIM_BOOL inviewmode;
};
struct  Ropeobj174009  {
  TNimObject Sup;
Ropeobj174009* left;
Ropeobj174009* right;
NI length;
NimStringDesc* data;
};
struct  Gcstack51016  {
Gcstack51016* prev;
Gcstack51016* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY30821[16];
struct  Pagedesc48955  {
Pagedesc48955* next;
NI key;
TY30821 bits;
};
struct  Basechunk30840  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk30842  {
  Basechunk30840 Sup;
Smallchunk30842* next;
Smallchunk30842* prev;
Freecell30832* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk30884  {
NI size;
NI acc;
Llchunk30884* next;
};
struct  Bigchunk30844  {
  Basechunk30840 Sup;
Bigchunk30844* next;
Bigchunk30844* prev;
NI align;
NF data;
};
struct  Trunk30813  {
Trunk30813* next;
NI key;
TY30821 bits;
};
typedef Avlnode30888* TY30895[2];
struct  Avlnode30888  {
TY30895 link;
NI key;
NI upperbound;
NI level;
};
struct  Tlib223827  {
  Tlistentry139022 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj174009* name;
Tnode223809* path;
};
struct  Trunk220052  {
Trunk220052* next;
NI key;
TY30821 bits;
};
struct  Tidpair223855  {
Tidobj196015* key;
TNimObject* val;
};
struct  Tctx277048  {
  Tpasscontext275005 Sup;
TY277254* code;
TY189420* debug;
Tnode223809* globals;
Tnode223809* constants;
Ttypeseq223843* types;
Tnode223809* currentexceptiona;
Tnode223809* currentexceptionb;
NI exceptioninstr;
PprocHEX3Aobjecttype277233* prc;
Tsym223841* module;
Tnode223809* callsite;
NU8 mode;
NU8 features;
NIM_BOOL traceactive;
NI loopiterations;
Tlineinfo188352 comesfromheuristic;
TY277273* callbacks;
NimStringDesc* errorflag;
};
struct  Tiipair231270  {
NI key;
NI val;
};
struct Keyvaluepair266069 {
NI Field0;
NI Field1;
Tsym223841* Field2;
};
struct  Freecell30832  {
Freecell30832* next;
NI zerofield;
};
struct TY277239 {
NIM_BOOL Field0;
NU8 Field1;
};
typedef TY277239 TY277242[256];
struct  PprocHEX3Aobjecttype277233  {
TY277234* blocks;
Tsym223841* sym;
TY277242 slots;
NI maxslots;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (Vmargs277042* args, void* ClEnv);
void* ClEnv;
} Vmcallback277044;
struct TY277274 {
NimStringDesc* Field0;
Vmcallback277044 Field1;
};
struct  Tblock277030  {
Tsym223841* label;
TY277214* fixups;
};
struct  Vmargs277042  {
NI ra;
NI rb;
NI rc;
void* slots;
Tnode223809* currentexception;
};
struct Tsymseq223811 {
  TGenericSeq Sup;
  Tsym223841* data[SEQ_DECL_SIZE];
};
struct Ttypeseq223843 {
  TGenericSeq Sup;
  Ttype223847* data[SEQ_DECL_SIZE];
};
struct TY223944 {
  TGenericSeq Sup;
  Tinstantiation223831* data[SEQ_DECL_SIZE];
};
struct TY278143 {
  TGenericSeq Sup;
  Tinstantiationpair278013 data[SEQ_DECL_SIZE];
};
struct Tnodeseq223803 {
  TGenericSeq Sup;
  Tnode223809* data[SEQ_DECL_SIZE];
};
struct TY458962 {
  TGenericSeq Sup;
  TY458963 data[SEQ_DECL_SIZE];
};
struct Trunkseq220054 {
  TGenericSeq Sup;
  Trunk220052* data[SEQ_DECL_SIZE];
};
struct Tidpairseq223857 {
  TGenericSeq Sup;
  Tidpair223855 data[SEQ_DECL_SIZE];
};
struct TY223932 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct TY129408 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct Tiipairseq231272 {
  TGenericSeq Sup;
  Tiipair231270 data[SEQ_DECL_SIZE];
};
struct Keyvaluepairseq266066 {
  TGenericSeq Sup;
  Keyvaluepair266069 data[SEQ_DECL_SIZE];
};
struct TY277254 {
  TGenericSeq Sup;
  NU32 data[SEQ_DECL_SIZE];
};
struct TY189420 {
  TGenericSeq Sup;
  Tlineinfo188352 data[SEQ_DECL_SIZE];
};
struct TY277273 {
  TGenericSeq Sup;
  TY277274 data[SEQ_DECL_SIZE];
};
struct TY277234 {
  TGenericSeq Sup;
  Tblock277030 data[SEQ_DECL_SIZE];
};
struct TY277214 {
  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(Cell48947*, usrtocell_52646)(void* usr);
static N_INLINE(void, rtladdzct_54204)(Cell48947* c);
N_NOINLINE(void, addzct_52617)(Cellseq48963* s, Cell48947* c);
N_NIMCALL(Tident196021*, getident_196463)(NimStringDesc* identifier);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newObjRC1)(TNimType* typ, NI size);
N_NIMCALL(Tnode223809*, newidentnode_225313)(Tident196021* ident, Tlineinfo188352 info);
N_NIMCALL(Tlineinfo188352, unknownlineinfo_189411)(void);
N_NIMCALL(Tcontext278023*, newcontext_278184)(Tsym223841* module);
N_NIMCALL(void, internalerror_194172)(Tlineinfo188352 info, NimStringDesc* errmsg);
N_NIMCALL(Tnode223809*, semconstexpr_456485)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semexprwithtype_455211)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, semexpr_455201)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(void, suggestexpr_396865)(Tcontext278023* c, Tnode223809* node);
N_NIMCALL(Tsym223841*, lookup_284804)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, semcapturesym_405834)(Tsym223841* s, Tsym223841* owner);
N_NIMCALL(Tnode223809*, semsym_490258)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, NU16 flags);
N_NIMCALL(void, markused_386253)(Tlineinfo188352 info, Tsym223841* s);
N_NIMCALL(Ttype223847*, skiptypes_227167)(Ttype223847* t, NU64 kinds);
static N_INLINE(Tnode223809*, inlineconst_490248)(Tnode223809* n, Tsym223841* s);
N_NIMCALL(Tnode223809*, copytree_228028)(Tnode223809* src);
N_NIMCALL(Tnode223809*, newsymnode_225338)(Tsym223841* sym, Tlineinfo188352 info);
static N_INLINE(NI, len_224098)(Tnode223809* n);
N_NIMCALL(Tnode223809*, semmacroexpr_456073)(Tcontext278023* c, Tnode223809* n, Tnode223809* norig, Tsym223841* sym, NU16 flags);
N_NIMCALL(void, pushinfocontext_189581)(Tlineinfo188352 info);
N_NIMCALL(void, globalerror_194107)(Tlineinfo188352 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(Tnode223809*, evalmacrocall_444308)(Tsym223841* module, Tnode223809* n, Tnode223809* norig, Tsym223841* sym);
N_NIMCALL(Tnode223809*, semaftermacrocall_462631)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, NU16 flags);
N_NIMCALL(Tsym223841*, getmodule_231243)(Tsym223841* s);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(Tnode223809*, semstmt_455277)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semexprnotype_455221)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, discardcheck_481156)(Tcontext278023* c, Tnode223809* result);
N_NIMCALL(void, message_194161)(Tlineinfo188352 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NIM_BOOL, implicitlydiscardable_481045)(Tnode223809* n_481047);
N_NIMCALL(Tnode223809*, lastson_226406)(Tnode223809* n);
N_NIMCALL(NIM_BOOL, iscallexpr_224072)(Tnode223809* n);
N_NIMCALL(void, fixniltype_481094)(Tnode223809* n);
static N_INLINE(NIM_BOOL, isatom_228904)(Tnode223809* n);
N_NIMCALL(void, localerror_194128)(Tlineinfo188352 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, typetostring_253032)(Ttype223847* typ, NU8 prefer);
N_NIMCALL(Ttype223847*, semtypenode_455269)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(void, checksonslen_279260)(Tnode223809* n, NI length);
N_NIMCALL(NI, sonslen_226387)(Tnode223809* n);
N_NIMCALL(Ttype223847*, semanontuple_464614)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(Ttype223847*, neworprevtype_462895)(NU8 kind, Ttype223847* prev, Tcontext278023* c);
N_NIMCALL(Ttype223847*, newtypes_278221)(NU8 kind, Tcontext278023* c);
N_NIMCALL(void, addsonskipintlit_272729)(Ttype223847* father, Ttype223847* son);
static N_INLINE(Tnode223809*, HEX5BHEX5D_224244)(Tnode223809* n, NI i);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(Tnode223809*, newnodei_225351)(NU8 kind, Tlineinfo188352 info);
static N_INLINE(Slice90369, HEX2EHEX2E_105290)(NI a, NI b);
N_NIMCALL(void, add_224165)(Tnode223809* father, Tnode223809* son);
N_NIMCALL(Ttype223847*, semrangeaux_463427)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
static N_INLINE(Ttype223847*, skipintlit_272696)(Ttype223847* t);
N_NIMCALL(Ttype223847*, getsystype_272190)(NU8 kind);
N_NIMCALL(NIM_BOOL, sametype_258092)(Ttype223847* a, Ttype223847* b, NU8 flags);
N_NIMCALL(NIM_BOOL, isordinaltype_253093)(Ttype223847* t);
N_NIMCALL(NIM_BOOL, enumhasholes_253099)(Ttype223847* t);
N_NIMCALL(NIM_BOOL, hasgenericarguments_300965)(Tnode223809* n);
N_NIMCALL(void, addson_225819)(Tnode223809* father, Tnode223809* son);
N_NIMCALL(Tnode223809*, makestaticexpr_278820)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NU8, weaklevalue_231424)(Tnode223809* a, Tnode223809* b);
N_NIMCALL(Ttype223847*, semtypeexpr_468381)(Tcontext278023* c, Tnode223809* n_468384);
N_NIMCALL(Ttype223847*, base_253039)(Ttype223847* t);
N_NIMCALL(NimStringDesc*, rendertree_245059)(Tnode223809* n, NU8 renderflags);
N_NIMCALL(Ttype223847*, errortype_279161)(Tcontext278023* c);
N_NIMCALL(Tident196021*, considerquotedident_284010)(Tnode223809* n);
N_NIMCALL(Ttype223847*, makeandtype_278858)(Tcontext278023* c, Ttype223847* t1, Ttype223847* t2);
N_NIMCALL(Ttype223847*, makeortype_278931)(Tcontext278023* c, Ttype223847* t1, Ttype223847* t2);
static N_INLINE(Ttype223847*, freshtype_468401)(Ttype223847* res, Ttype223847* prev);
N_NIMCALL(Ttype223847*, copytype_226542)(Ttype223847* t, Tsym223841* owner, NIM_BOOL keepid);
N_NIMCALL(Ttype223847*, makenottype_279004)(Tcontext278023* c, Ttype223847* t1);
N_NIMCALL(Ttype223847*, semanyref_463311)(Tcontext278023* c, Tnode223809* n_463314, NU8 kind, Ttype223847* prev);
N_NIMCALL(Ttype223847*, newconstraint_462925)(Tcontext278023* c, NU8 k);
N_NIMCALL(void, checkminsonslen_279270)(Tnode223809* n, NI length);
N_NIMCALL(Tnode223809*, semwhen_456047)(Tcontext278023* c, Tnode223809* n, NIM_BOOL semcheck);
N_NIMCALL(void, illformedast_279240)(Tnode223809* n);
N_NIMCALL(void, idsynchronizationpoint_222453)(NI idrange);
N_NIMCALL(Tsym223841*, semtypeident_463976)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tsym223841*, qualifiedlookup_284864)(Tcontext278023* c, Tnode223809* n, NU8 flags);
N_NIMCALL(Tsym223841*, errorsym_284372)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tsym223841*, copysym_226607)(Tsym223841* s, NIM_BOOL keepid);
N_NIMCALL(NI, len_226369)(Ttype223847* n);
N_NIMCALL(Tsym223841*, initoverloaditer_285108)(Toverloaditer284431* o, Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tsym223841*, nextoverloaditer_285277)(Toverloaditer284431* o, Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_NIMCALL(Ttype223847*, semarray_463918)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(Ttype223847*, semarrayindex_463808)(Tcontext278023* c, Tnode223809* n);
static N_INLINE(NIM_BOOL, isrange_252626)(Tnode223809* n);
N_NIMCALL(Ttype223847*, makerangewithstaticexpr_279087)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Ttype223847*, makerangetype_279193)(Tcontext278023* c, NI64 first, NI64 last, Tlineinfo188352 info, Ttype223847* inttype);
N_NIMCALL(Ttype223847*, lastson_226426)(Ttype223847* n);
N_NIMCALL(Ttype223847*, semcontainer_463285)(Tcontext278023* c, Tnode223809* n, NU8 kind, NimStringDesc* kindstr, Ttype223847* prev);
N_NIMCALL(Ttype223847*, semrange_463701)(Tcontext278023* c, Tnode223809* n_463704, Ttype223847* prev);
N_NIMCALL(Ttype223847*, semset_463256)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(NI64, lengthord_253016)(Ttype223847* t);
N_NIMCALL(Ttype223847*, semordinal_463955)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(Ttype223847*, semvarargs_463298)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(Ttype223847*, maketypedesc_278684)(Tcontext278023* c, Ttype223847* typ);
N_NIMCALL(Tsym223841*, getcurrowner_278258)(void);
N_NIMCALL(void, rawaddson_227498)(Ttype223847* father, Ttype223847* son);
N_NIMCALL(Ttype223847*, semgeneric_468132)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, Ttype223847* prev);
N_NIMCALL(void, localerror_194139)(Tlineinfo188352 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_86859, TNimType* typ);
N_NIMCALL(Ttype223847*, semgenericparamininvocation_468124)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, internalerror_194191)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_194279)(TY90959 x);
N_NIMCALL(void, newcandidate_386480)(Tcontext278023* ctx, Ttype223847* callee, Tcandidate386209* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, matches_392720)(Tcontext278023* c, Tnode223809* n, Tnode223809* norig, Tcandidate386209* m);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, describeargs_386974)(Tcontext278023* c, Tnode223809* n, NI startidx, NU8 prefer);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NIM_BOOL, containsgenerictype_262310)(Ttype223847* t);
N_NIMCALL(Ttype223847*, instgenericcontainer_458151)(Tcontext278023* c, Tlineinfo188352 info, Ttype223847* header, NIM_BOOL allowmetatypes);
N_NIMCALL(void, initidtable_227057)(Tidtable223859* x);
N_NIMCALL(Ttype223847*, replacetypevarst_300627)(Trepltypevars300577* cl, Ttype223847* t);
N_NIMCALL(NIM_BOOL, ismetatype_224821)(Ttype223847* t);
N_NIMCALL(Tnode223809*, semgenericstmt_462888)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, initintset_220927)(Intset220056* Result);
N_NIMCALL(Tnode223809*, semgenericstmt_474899)(Tcontext278023* c, Tnode223809* n, NU8 flags_474903, Genericctx474888* ctx);
N_NIMCALL(Tnode223809*, lookup_476204)(Tcontext278023* c, Tnode223809* n, NU8 flags, Genericctx474888* ctx);
N_NIMCALL(Tsym223841*, skipalias_284150)(Tsym223841* s, Tnode223809* n);
N_NIMCALL(Tsym223841*, searchinscopes_284205)(Tcontext278023* c, Tident196021* s);
N_NIMCALL(NIM_BOOL, contains_220829)(Intset220056 s, NI key);
N_NIMCALL(Tnode223809*, symchoice_469790)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, NU8 r);
N_NIMCALL(Tnode223809*, newnodeit_225807)(NU8 kind, Tlineinfo188352 info, Ttype223847* typ);
N_NIMCALL(Tnode223809*, semgenericstmtsymbol_474924)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, Genericctx474888* ctx);
N_NIMCALL(Tnode223809*, semtemplateexpr_456062)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, NU16 flags);
N_NIMCALL(Tnode223809*, evaltemplate_429400)(Tnode223809* n, Tsym223841* tmpl, Tsym223841* gensymowner);
N_NIMCALL(void, popinfocontext_189600)(void);
N_NIMCALL(Tnode223809*, newsymnodetypedesc_292736)(Tsym223841* s, Tlineinfo188352 info);
N_NIMCALL(Tnode223809*, fuzzylookup_476262)(Tcontext278023* c, Tnode223809* n_476265, NU8 flags, Genericctx474888* ctx, NIM_BOOL* ismacro);
N_NIMCALL(Tnode223809*, newdot_476251)(Tnode223809* n, Tnode223809* b);
N_NIMCALL(Tnode223809*, semmixinstmt_469995)(Tcontext278023* c, Tnode223809* n, Intset220056* tomixin);
N_NIMCALL(void, incl_220856)(Intset220056* s, NI key);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(Tnode223809*, semgenericstmtscope_474906)(Tcontext278023* c, Tnode223809* n, NU8 flags, Genericctx474888* ctx);
N_NIMCALL(Tscope223835*, openscope_284091)(Tcontext278023* c);
N_NIMCALL(void, closescope_284111)(Tcontext278023* c);
N_NIMCALL(void, addtempdecl_476692)(Tcontext278023* c, Tnode223809* n, NU8 kind);
N_NIMCALL(Tsym223841*, newsyms_455904)(NU8 kind, Tnode223809* n, Tcontext278023* c);
N_NIMCALL(Tsym223841*, newsym_224656)(NU8 symkind, Tident196021* name, Tsym223841* owner, Tlineinfo188352 info);
N_NIMCALL(Tnode223809*, getidentnode_474878)(Tnode223809* n);
N_NIMCALL(void, addprelimdecl_284619)(Tcontext278023* c, Tsym223841* sym);
N_NIMCALL(void, adddecl_284607)(Tcontext278023* c, Tsym223841* sym);
N_NIMCALL(Tnode223809*, getbody_269062)(Tsym223841* s);
N_NIMCALL(Ttype223847*, maketypefromexpr_278729)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, assigntype_226445)(Ttype223847* dest, Ttype223847* src);
N_NIMCALL(Ttype223847*, semobjectnode_466216)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(Ttype223847*, skiptypesornil_227195)(Ttype223847* t, NU64 kinds);
static N_INLINE(Ttype223847*, skipgenericinvocation_465964)(Ttype223847* t);
N_NIMCALL(void, addinheritedfields_465998)(Tcontext278023* c, Intset220056* check, NI* pos, Ttype223847* obj);
N_NIMCALL(NI, sonslen_226351)(Ttype223847* n);
N_NIMCALL(void, addinheritedfieldsaux_465868)(Tcontext278023* c, Intset220056* check, NI* pos, Tnode223809* n);
N_NIMCALL(void, semrecordnodeaux_465288)(Tcontext278023* c, Tnode223809* n, Intset220056* check, NI* pos, Tnode223809* father, Ttype223847* rectype);
N_NIMCALL(Tnode223809*, semconstboolexpr_462852)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, fitnode_455245)(Tcontext278023* c, Ttype223847* formal, Tnode223809* arg);
N_NIMCALL(Tnode223809*, copynode_227660)(Tnode223809* src);
N_NIMCALL(Tnode223809*, indextypesmatch_455348)(Tcontext278023* c, Ttype223847* f, Ttype223847* a, Tnode223809* arg);
N_NIMCALL(void, initcandidate_386278)(Tcontext278023* ctx, Tcandidate386209* c, Ttype223847* callee);
N_NIMCALL(Tnode223809*, paramtypesmatch_391733)(Tcandidate386209* m, Ttype223847* f, Ttype223847* a, Tnode223809* arg, Tnode223809* argorig);
N_NIMCALL(void, instgenericconvertersarg_461276)(Tcontext278023* c, Tnode223809* a, Tcandidate386209* x);
N_NIMCALL(NIM_BOOL, isgenericroutine_228650)(Tsym223841* s);
N_NIMCALL(Tsym223841*, generateinstance_458450)(Tcontext278023* c, Tsym223841* fn, Tidtable223859 pt, Tlineinfo188352 info);
static N_INLINE(NIM_BOOL, istoplevel_279280)(Tcontext278023* c);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_55022)(Cell48947* c);
static N_INLINE(NIM_BOOL, canbecycleroot_52667)(Cell48947* c);
static N_INLINE(void, rtladdcycleroot_53423)(Cell48947* c);
N_NOINLINE(void, incl_49665)(Cellset48959* s, Cell48947* cell);
static N_INLINE(void, decref_54604)(Cell48947* c);
N_NIMCALL(void, pushowner_278263)(Tsym223841* owner);
N_NIMCALL(Tnode223809*, newsymnode_225325)(Tsym223841* sym);
N_NIMCALL(Tinstantiation223831*, new_458534)(void);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(TNimObject*, idtableget_231182)(Tidtable223859 t, Tidobj196015* key);
N_NIMCALL(Ttype223847*, generatetypeinstance_302894)(Tcontext278023* p, Tidtable223859 pt, Tlineinfo188352 info, Ttype223847* t);
static N_INLINE(void, pushproccon_278361)(Tcontext278023* c, Tsym223841* owner);
N_NIMCALL(void, instantiateproctype_458176)(Tcontext278023* c, Tidtable223859 pt, Tsym223841* prc, Tlineinfo188352 info);
N_NIMCALL(void, inittypevars_302846)(Tcontext278023* p, Tidtable223859 pt, Tlineinfo188352 info, Tsym223841* owner, Trepltypevars300577* Result);
N_NIMCALL(Ttype223847*, instcopytype_301694)(Trepltypevars300577* cl, Ttype223847* t);
N_NIMCALL(Tnode223809*, shallowcopy_227817)(Tnode223809* src);
N_NIMCALL(void, resetidtable_227077)(Tidtable223859* x);
N_NIMCALL(void, propagatetoowner_227274)(Ttype223847* owner, Ttype223847* elem);
N_NIMCALL(void, erasevoidparams_302182)(Ttype223847* t);
N_NIMCALL(void, skipintliteralparams_302336)(Ttype223847* t);
N_NIMCALL(void, maybeaddresult_455301)(Tcontext278023* c, Tsym223841* s, Tnode223809* n);
N_NIMCALL(void, addresult_486830)(Tcontext278023* c, Ttype223847* t, Tlineinfo188352 info, NU8 owner);
N_NIMCALL(void, addparamorresult_457885)(Tcontext278023* c, Tsym223841* param, NU8 kind);
N_NIMCALL(Ttype223847*, findenforcedstatictype_466339)(Ttype223847* t_466341);
N_NIMCALL(Tsym223841*, getcompilerproc_272809)(NimStringDesc* name);
N_NIMCALL(Tsym223841*, getsyssym_272077)(NimStringDesc* name);
N_NIMCALL(void, addresultnode_486864)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tsym223841*, genericcacheget_457449)(Tsym223841* genericsym, Tinstantiation223831 entry, NI id);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_226870)(TY223944* x, TY223944* y);
N_NIMCALL(NIM_BOOL, sameinstantiation_457396)(Tinstantiation223831 a, Tinstantiation223831 b);
N_NIMCALL(NIM_BOOL, comparetypes_260047)(Ttype223847* x, Ttype223847* y, NU8 cmp, NU8 flags);
N_NIMCALL(void, safeadd_458699)(TY223944** x, Tinstantiation223831* y);
N_NIMCALL(void, makeinstpair_278159)(Tsym223841* s, Tinstantiation223831* inst, Tinstantiationpair278013* Result);
N_NIMCALL(void, pragma_295082)(Tcontext278023* c, Tsym223841* sym, Tnode223809* n, Tspecialwords204012 validpragmas);
N_NIMCALL(void, instantiatebody_457941)(Tcontext278023* c, Tnode223809* n, Tnode223809* params, Tsym223841* result);
N_NIMCALL(void, idtableput_231196)(Tidtable223859* t, Tidobj196015* key, TNimObject* val);
N_NIMCALL(void, freshgensyms_457801)(Tnode223809* n, Tsym223841* owner, Tidtable223859* symmap);
static N_INLINE(NI, safelen_224126)(Tnode223809* n);
N_NIMCALL(Tnode223809*, semprocbody_455238)(Tcontext278023* c, Tnode223809* n);
static N_INLINE(NIM_BOOL, isemptytype_228932)(Ttype223847* t);
N_NIMCALL(Tnode223809*, newnodei_225407)(NU8 kind, Tlineinfo188352 info, NI children);
N_NIMCALL(Tnode223809*, semasgn_493310)(Tcontext278023* c, Tnode223809* n, NU8 mode);
N_NIMCALL(Tnode223809*, builtinfieldaccess_495358)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(NIM_BOOL, istypeexpr_494861)(Tnode223809* n);
N_NIMCALL(Tsym223841*, getsymfromlist_231228)(Tnode223809* list, Tident196021* ident, NI start);
N_NIMCALL(Tnode223809*, readtypeparameter_495277)(Tcontext278023* c, Ttype223847* typ, Tident196021* paramname, Tlineinfo188352 info);
N_NIMCALL(Ttype223847*, skipgenericalias_259119)(Ttype223847* t);
N_NIMCALL(Tsym223841*, linkto_224884)(Tsym223841* s, Ttype223847* t);
N_NIMCALL(Ttype223847*, newtypewithsons_278807)(Tcontext278023* c, NU8 kind, Ttypeseq223843* sons);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(Tsym223841*, lookupinrecordandbuildcheck_495004)(Tcontext278023* c, Tnode223809* n, Tnode223809* r, Tident196021* field, Tnode223809** check);
N_NIMCALL(Ttype223847*, createsettype_494878)(Tcontext278023* c, Ttype223847* basetype);
static N_INLINE(NIM_BOOL, fieldvisible_393471)(Tcontext278023* c, Tsym223841* f);
N_NIMCALL(Tnode223809*, makederef_495233)(Tnode223809* n);
N_NIMCALL(Tnode223809*, propertywriteaccess_496404)(Tcontext278023* c, Tnode223809* n, Tnode223809* norig, Tnode223809* a);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(Tnode223809*, newnode_225607)(NU8 kind, Tlineinfo188352 info, Tnodeseq223803* sons, Ttype223847* typ);
N_NIMCALL(Tnode223809*, semoverloadedcallanalyseeffects_494293)(Tcontext278023* c, Tnode223809* n, Tnode223809* norig, NU16 flags);
N_NIMCALL(Tnode223809*, semoverloadedcall_461971)(Tcontext278023* c, Tnode223809* n, Tnode223809* norig, NU32 filter);
N_NIMCALL(void, resolveoverloads_459584)(Tcontext278023* c, Tnode223809* n, Tnode223809* orig, NU32 filter, Tsymseq223811** errors, Tcandidate386209* Result);
N_NIMCALL(void, gatherusedsyms_459474)(Tcontext278023* c, Tnodeseq223803** usedsyms);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_298972)(Tnodeseq223803* x, Tnodeseq223803* y);
N_NIMCALL(void, safeadd_459504)(Tnodeseq223803** x, Tnode223809* y);
N_NIMCALL(void, insert_459637)(Tnodeseq223803** x, Tnode223809* item, NI i);
N_NIMCALL(void, pickbestcandidate_458945)(Tcontext278023* c, Tnode223809* headsymbol, Tnode223809* n, Tnode223809* orig, Tnode223809* initialbinding, NU32 filter, Tcandidate386209* best, Tcandidate386209* alt, Tsymseq223811** errors);
N_NIMCALL(NI, lastoverloadscope_285259)(Toverloaditer284431* o);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP3245)(void* p, NI op);
N_NIMCALL(void, initcandidate_386303)(Tcontext278023* ctx, Tcandidate386209* c, Tsym223841* callee, Tnode223809* binding, NI calleescope);
N_NIMCALL(void, determinetype_458941)(Tcontext278023* c, Tsym223841* s);
N_NIMCALL(Tnode223809*, semprocaux_487900)(Tcontext278023* c, Tnode223809* n, NU8 kind, Tspecialwords204012 validpragmas, NU8 phase);
N_NIMCALL(Tnode223809*, semprocannotation_486960)(Tcontext278023* c, Tnode223809* prc, Tspecialwords204012 validpragmas);
N_NIMCALL(Tsym223841*, lookupmacro_486930)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tsym223841*, searchinscopes_284323)(Tcontext278023* c, Tident196021* s, NU32 filter);
N_NIMCALL(Tnode223809*, copyexcept_486883)(Tnode223809* n, NI i);
N_NIMCALL(Tsym223841*, semidentdef_482542)(Tcontext278023* c, Tnode223809* n, NU8 kind);
N_NIMCALL(Tsym223841*, semidentwithpragma_455971)(Tcontext278023* c, NU8 kind, Tnode223809* n, NU32 allowed);
N_NIMCALL(Tsym223841*, semidentvis_455962)(Tcontext278023* c, NU8 kind, Tnode223809* n, NU32 allowed);
N_NIMCALL(Tsym223841*, newsymg_455916)(NU8 kind, Tnode223809* n, Tcontext278023* c);
N_NIMCALL(NimStringDesc*, HEX24_455922)(NU8 kind);
static N_INLINE(void, suggestsym_396733)(Tlineinfo188352 info, Tsym223841* s);
N_NIMCALL(void, findusages_396665)(Tlineinfo188352 info, Tsym223841* s);
N_NIMCALL(void, finddefinition_396696)(Tlineinfo188352 info, Tsym223841* s);
N_NIMCALL(NIM_BOOL, istracked_396569)(Tlineinfo188352 current, NI tokenlen);
N_NIMCALL(void, suggestresult_393414)(Suggest393010* s);
N_NIMCALL(void, symtosuggest_393404)(Tsym223841* s, NIM_BOOL islocal, NimStringDesc* section, Suggest393010* Result);
N_NIMCALL(NimStringDesc*, HEX24_166755)(NU8 c);
N_NIMCALL(Tnode223809*, semgenericparamlist_469425)(Tcontext278023* c, Tnode223809* n, Ttype223847* father);
N_NIMCALL(Ttype223847*, semgenericconstraints_469404)(Tcontext278023* c, Ttype223847* x);
N_NIMCALL(void, semparamlist_455284)(Tcontext278023* c, Tnode223809* n, Tnode223809* genericparams, Tsym223841* s);
N_NIMCALL(Ttype223847*, semproctypenode_467551)(Tcontext278023* c, Tnode223809* n, Tnode223809* genericparams, Ttype223847* prev, NU8 kind, NIM_BOOL istype);
N_NIMCALL(Ttype223847*, newproctype_467542)(Tcontext278023* c, Tlineinfo188352 info, Ttype223847* prev);
N_NIMCALL(Toptionentry278005*, lastoptionentry_278190)(Tcontext278023* c);
N_NIMCALL(Ttype223847*, semparamtype_467522)(Tcontext278023* c, Tnode223809* n, Tnode223809** constraint);
N_NIMCALL(Tnode223809*, semnodekindconstraints_303679)(Tnode223809* p);
N_NIMCALL(Ttype223847*, liftparamtype_466479)(Tcontext278023* c, NU8 prockind, Tnode223809* genericparams, Ttype223847* paramtype, NimStringDesc* paramname, Tlineinfo188352 info, NIM_BOOL anon);
N_NIMCALL(void, TMP3273)(void* p, NI op);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_CLOSURE(Ttype223847*, addimplicitgenericimpl_466501)(Ttype223847* typeclass, Tident196021* typid, void* ClEnv);
N_NIMCALL(NIM_BOOL, containsorincl_220898)(Intset220056* s, NI key);
N_NIMCALL(NIM_BOOL, isinlineiterator_391087)(Ttype223847* t);
N_NIMCALL(Tnode223809*, sempattern_471348)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, flattenstmts_252773)(Tnode223809* n);
N_NIMCALL(Tnode223809*, sempatternbody_474070)(Templctx470056* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, handlesym_474401)(Templctx470056* c, Tnode223809* n, Tsym223841* s);
N_NIMCALL(Tnode223809*, newparam_474084)(Templctx470056* c, Tnode223809* n, Tsym223841* s);
N_NIMCALL(Tnode223809*, sembindstmt_469895)(Tcontext278023* c, Tnode223809* n, Intset220056* tobind);
N_NIMCALL(Tnode223809*, expectparam_474464)(Templctx470056* c, Tnode223809* n);
N_NIMCALL(NIM_BOOL, stupidstmtlistexpr_474506)(Tnode223809* n);
N_NIMCALL(Tsym223841*, searchforproc_294278)(Tcontext278023* c, Tscope223835* scope, Tsym223841* fn);
N_NIMCALL(void, addinterfaceoverloadablesymat_284746)(Tcontext278023* c, Tscope223835* scope, Tsym223841* sym);
N_NIMCALL(void, addinterfacedeclat_284677)(Tcontext278023* c, Tscope223835* scope, Tsym223841* sym);
N_NIMCALL(void, implicitpragmas_298759)(Tcontext278023* c, Tsym223841* sym, Tnode223809* n, Tspecialwords204012 validpragmas);
N_NIMCALL(void, wrongredefinition_284588)(Tlineinfo188352 info, NimStringDesc* s);
N_NIMCALL(void, addgenericparamlisttoscope_485541)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, addparams_455293)(Tcontext278023* c, Tnode223809* n, NU8 kind);
static N_INLINE(NIM_BOOL, importantcomments_165168)(void);
N_NIMCALL(void, popowner_278269)(void);
N_NIMCALL(void, semoverride_487632)(Tcontext278023* c, Tsym223841* s, Tnode223809* n);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(void, dodestructorstuff_479826)(Tcontext278023* c, Tsym223841* s, Tnode223809* n);
N_NIMCALL(Ttype223847*, instantiatedestructor_479822)(Tcontext278023* c, Ttype223847* typ);
static N_INLINE(NIM_BOOL, contains_480401)(Tsym223841** a, NI aLen0, Tsym223841* item);
static N_INLINE(NI, find_480411)(Tsym223841** a, NI aLen0, Tsym223841* item);
N_NIMCALL(Tnode223809*, generatedestructor_480318)(Tcontext278023* c, Ttype223847* t);
N_NIMCALL(Tnode223809*, destroyfieldorfields_479995)(Tcontext278023* c, Tnode223809* field, Tnode223809* holder);
N_NIMCALL(Tnode223809*, destroycase_480051)(Tcontext278023* c, Tnode223809* n, Tnode223809* holder);
N_NIMCALL(Tnodeseq223803*, HEX5BHEX5D_414753)(Tnodeseq223803* s, Slice90369 x);
N_NIMCALL(Tnode223809*, newnode_224401)(NU8 kind);
N_NIMCALL(Tnode223809*, destroysym_480000)(Tcontext278023* c, Tsym223841* field, Tnode223809* holder);
N_NIMCALL(Tnode223809*, usesym_396850)(Tsym223841* sym);
N_NIMCALL(Tnode223809*, symnodefromtype_456120)(Tcontext278023* c, Ttype223847* t, Tlineinfo188352 info);
N_NIMCALL(Tsym223841*, symfromtype_456085)(Ttype223847* t, Tlineinfo188352 info);
N_NIMCALL(Ttype223847*, makevartype_278645)(Tcontext278023* c, Ttype223847* basetype);
N_NIMCALL(Tnode223809*, semproc_479797)(Tcontext278023* c, Tnode223809* n);
static N_INLINE(NIM_BOOL, experimentalmode_279290)(Tcontext278023* c);
static N_INLINE(void, paramstypecheck_456022)(Tcontext278023* c, Ttype223847* typ);
N_NIMCALL(void, typeallowedcheck_455987)(Tlineinfo188352 info, Ttype223847* typ, NU8 kind);
N_NIMCALL(Ttype223847*, typeallowed_261654)(Ttype223847* t, NU8 kind);
N_NIMCALL(Tnode223809*, hlobody_457161)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, hlo_456542)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, applypatterns_456630)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, applyrule_447303)(Tcontext278023* c, Tsym223841* s, Tnode223809* n);
N_NIMCALL(Tnode223809*, evalpattern_456546)(Tcontext278023* c, Tnode223809* n, Tnode223809* orig);
N_NIMCALL(Tnode223809*, semdirectop_456039)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, aftercallactions_494784)(Tcontext278023* c, Tnode223809* n, Tnode223809* orig, NU16 flags);
N_NIMCALL(void, semfinishoperands_392656)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, activate_455327)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, fixabstracttype_492616)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, changetype_455253)(Tnode223809* n, Ttype223847* newtype, NIM_BOOL check);
N_NIMCALL(Ttype223847*, elemtype_253522)(Ttype223847* t);
N_NIMCALL(void, globalerror_194118)(Tlineinfo188352 info, NimStringDesc* arg);
N_NIMCALL(NI64, firstord_253004)(Ttype223847* t);
N_NIMCALL(NI64, lastord_253010)(Ttype223847* t);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(void, analyseifaddresstakenincall_493052)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NU8, isassignable_492842)(Tcontext278023* c, Tnode223809* n, NIM_BOOL isunsafeaddr);
N_NIMCALL(NU8, isassignable_304056)(Tsym223841* owner, Tnode223809* n, NIM_BOOL isunsafeaddr);
N_NIMCALL(void, semprocvarcheck_479766)(Tcontext278023* c, Tnode223809* n_479769);
N_NIMCALL(Tnode223809*, skipconv_262935)(Tnode223809* n);
N_NIMCALL(void, performprocvarcheck_479702)(Tcontext278023* c, Tnode223809* n, Tsym223841* s);
N_NIMCALL(Tnode223809*, analyseifaddresstaken_492900)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, newhiddenaddrtaken_492851)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, magicsafteroverloadresolution_493738)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, semaddr_493250)(Tcontext278023* c, Tnode223809* n, NIM_BOOL isunsafeaddr);
N_NIMCALL(Ttype223847*, makeptrtype_278214)(Tcontext278023* c, Ttype223847* basetype);
N_NIMCALL(Tnode223809*, semtypeof_493293)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semarrget_493337)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, semsubscript_493315)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, semderef_496161)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NI64, getordvalue_253178)(Tnode223809* n);
N_NIMCALL(Tnode223809*, semsymgenericinstantiation_490239)(Tcontext278023* c, Tnode223809* n, Tsym223841* s);
N_NIMCALL(Tnode223809*, explicitgenericinstantiation_462205)(Tcontext278023* c, Tnode223809* n, Tsym223841* s_462209);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(Tnode223809*, explicitgenericsym_462018)(Tcontext278023* c, Tnode223809* n, Tsym223841* s);
N_NIMCALL(Tnode223809*, explicitgenericinsterror_462011)(Tnode223809* n);
N_NIMCALL(NimStringDesc*, HEX24_245090)(Tnode223809* n);
N_NIMCALL(Tnode223809*, semarrput_493412)(Tcontext278023* c, Tnode223809* n, NU16 flags);
static N_INLINE(Tnode223809*, skipaddr_493320)(Tnode223809* n);
N_NIMCALL(Tnode223809*, semasgnopr_493457)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semispartof_493467)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(NU8, ispartof_445375)(Tnode223809* a, Tnode223809* b);
N_NIMCALL(Tnode223809*, newintnodet_291028)(NI64 intval, Tnode223809* n);
N_NIMCALL(Tnode223809*, semtypetraits_493551)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, evaltypetrait_493514)(Tnode223809* trait, Ttype223847* operand, Tsym223841* context);
N_NIMCALL(Tnode223809*, newstrnode_224644)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(Ttype223847*, newtype_226140)(NU8 kind, Tsym223841* owner);
N_NIMCALL(Tnode223809*, newintnode_224608)(NU8 kind, NI64 intval);
N_NIMCALL(Tnode223809*, newstrnodet_291042)(NimStringDesc* strval, Tnode223809* n);
N_NIMCALL(Tnode223809*, seminstantiationinfo_493495)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NI, expectintlit_493485)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tlineinfo188352, getinfocontext_189626)(NI index);
N_NIMCALL(NimStringDesc*, tofullpath_189665)(NI32 fileidx);
N_NIMCALL(NimStringDesc*, tofilename_189655)(NI32 fileidx);
static N_INLINE(NI, tolinenumber_189839)(Tlineinfo188352 info);
N_NIMCALL(Tnode223809*, semord_493589)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semlowhigh_491837)(Tcontext278023* c, Tnode223809* n, NU8 m);
N_NIMCALL(Tnode223809*, semshallowcopy_493661)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, sembindsym_493599)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, errornode_279171)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NIM_BOOL, isnegative_493683)(Tnode223809* n_493685);
N_NIMCALL(NU8, checkforsideeffects_303869)(Tnode223809* n);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(NIM_BOOL, isstrangearray_493666)(Ttype223847* t_493668);
N_NIMCALL(Tsym223841*, createmagic_229047)(NimStringDesc* name, NU8 m);
N_NIMCALL(Transformation452013, getplugin_452094)(Tsym223841* fn);
N_NIMCALL(Tnode223809*, evalatcompiletime_493821)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, getconstexpr_291004)(Tsym223841* m, Tnode223809* n);
N_NIMCALL(Ttype223847*, getintervaltype_291364)(NU8 m, Tnode223809* n);
N_NIMCALL(Tnode223809*, evalstaticexpr_444232)(Tsym223841* module, Tnode223809* e, Tsym223841* prc);
N_NIMCALL(Tnode223809*, fixuptypeaftereval_456201)(Tcontext278023* c, Tnode223809* evaluated, Tnode223809* eorig);
N_NIMCALL(void, annotatetype_448134)(Tnode223809* n, Ttype223847* t);
N_NIMCALL(Tnode223809*, evalconstexpr_444221)(Tsym223841* module, Tnode223809* e);
N_NIMCALL(Tnode223809*, commonoptimizations_413597)(Tsym223841* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, transformbody_415225)(Tsym223841* module, Tnode223809* n, Tsym223841* prc);
static N_INLINE(void, popproccon_278393)(Tcontext278023* c);
N_NIMCALL(void, fixupinstantiatedsymbols_458063)(Tcontext278023* c, Tsym223841* s);
N_NIMCALL(void, semborrow_486808)(Tcontext278023* c, Tnode223809* n, Tsym223841* s);
N_NIMCALL(Tsym223841*, searchforborrowproc_462522)(Tcontext278023* c, Tscope223835* startscope, Tsym223841* fn);
N_NIMCALL(Ttype223847*, baseofdistinct_262320)(Ttype223847* t);
N_NIMCALL(void, sideeffectscheck_458116)(Tcontext278023* c, Tsym223841* s);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_459058)(Tsymseq223811* x, Tsymseq223811* y);
N_NIMCALL(void, safeadd_459171)(Tsymseq223811** x, Tsym223841* y);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(NI, cmpcandidates_386824)(Tcandidate386209* a, Tcandidate386209* b);
N_NIMCALL(void, delete_460246)(Tnodeseq223803** x, NI i);
N_NIMCALL(Tnode223809*, withinfo_225302)(Tnode223809* n, Tlineinfo188352 info);
N_NIMCALL(void, HEX5BHEX5DHEX3D_414817)(Tnodeseq223803** s, Slice90369 x, Tnode223809** b, NI bLen0);
static N_INLINE(NimStringDesc*, HEX5BHEX5D_90362)(NimStringDesc* s, Slice90369 x);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_81016, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(NIM_BOOL, samemethoddispatcher_458880)(Tsym223841* a, Tsym223841* b);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, msgkindtostring_190406)(NU16 kind);
N_NIMCALL(NimStringDesc*, getprocheader_253447)(Tsym223841* sym, NU8 prefer);
N_NIMCALL(Tnode223809*, semresolvedcall_461507)(Tcontext278023* c, Tnode223809* n, Tcandidate386209* x);
N_NIMCALL(void, instgenericconverterssons_461312)(Tcontext278023* c, Tnode223809* n, Tcandidate386209* x);
static N_INLINE(NIM_BOOL, canderef_461930)(Tnode223809* n);
N_NIMCALL(Tnode223809*, tryderef_461963)(Tnode223809* n);
N_NIMCALL(void, notfounderror_459326)(Tcontext278023* c, Tnode223809* n_459329, Tsymseq223811* errors);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(Tnode223809*, dottransformation_496079)(Tcontext278023* c, Tnode223809* n);
static N_INLINE(NIM_BOOL, issymchoice_491671)(Tnode223809* n);
N_NIMCALL(Tnode223809*, buildoverloadedsubscripts_496122)(Tnode223809* n, Tident196021* ident);
N_NIMCALL(Tnode223809*, lowertupleunpackingforasgn_400283)(Tnode223809* n, Tsym223841* owner);
N_NIMCALL(NU8, cmptypes_390796)(Tcontext278023* c, Ttype223847* f, Ttype223847* a);
N_NIMCALL(void, typemismatch_455379)(Tnode223809* n, Ttype223847* formal, Ttype223847* actual);
N_NIMCALL(Tnode223809*, overloadedasgn_483696)(Tcontext278023* c, Tnode223809* dest, Tnode223809* src);
N_NIMCALL(Tsym223841*, getasgnorliftbody_483676)(Tcontext278023* c, Ttype223847* typ, Tlineinfo188352 info);
N_NIMCALL(Tsym223841*, liftbody_482701)(Tcontext278023* c, Ttype223847* typ, Tlineinfo188352 info);
N_NIMCALL(Ttype223847*, newproctype_483594)(Tlineinfo188352 info, Tsym223841* owner);
N_NIMCALL(void, addparam_483602)(Ttype223847* proctype, Tsym223841* param);
N_NIMCALL(void, liftbodyaux_482693)(Tliftctx482686* c, Ttype223847* t, Tnode223809* body, Tnode223809* x, Tnode223809* y);
N_NIMCALL(void, defaultop_483406)(Tliftctx482686* c, Ttype223847* t, Tnode223809* body, Tnode223809* x, Tnode223809* y);
N_NIMCALL(Tnode223809*, newasgnstmt_482910)(Tnode223809* le, Tnode223809* ri);
N_NIMCALL(Tnode223809*, newseqcall_483501)(Tcontext278023* c, Tnode223809* x, Tnode223809* y);
N_NIMCALL(Tnode223809*, genbuiltin_483465)(NU8 magic, NimStringDesc* name, Tnode223809* i);
N_NIMCALL(Tnode223809*, declarecounter_483439)(Tliftctx482686* c, Tnode223809* body, NI64 first);
N_NIMCALL(void, addvar_483427)(Tnode223809* father, Tnode223809* v, Tnode223809* value);
N_NIMCALL(Tnode223809*, newintlit_402681)(NI64 value);
N_NIMCALL(Tnode223809*, genwhileloop_483477)(Tliftctx482686* c, Tnode223809* i, Tnode223809* dest);
N_NIMCALL(Tnode223809*, genhigh_402691)(Tnode223809* n);
N_NIMCALL(Tnode223809*, at_482706)(Tnode223809* a, Tnode223809* i, Ttype223847* elemtype);
N_NIMCALL(void, addincstmt_483491)(Tnode223809* body, Tnode223809* i);
N_NIMCALL(NIM_BOOL, consideroverloadedop_482940)(Tliftctx482686* c, Ttype223847* t, Tnode223809* body, Tnode223809* x, Tnode223809* y);
N_NIMCALL(Tnode223809*, newdestructorcall_482920)(Tsym223841* op, Tnode223809* x);
N_NIMCALL(Tnode223809*, newasgncall_482885)(Tcontext278023* c, Tsym223841* op, Tnode223809* x, Tnode223809* y);
N_NIMCALL(Tnode223809*, genaddr_482867)(Tcontext278023* c, Tnode223809* x);
N_NIMCALL(Tnode223809*, newdeepcopycall_482931)(Tsym223841* op, Tnode223809* x, Tnode223809* y);
N_NIMCALL(void, liftbodyobj_482778)(Tliftctx482686* c, Tnode223809* n, Tnode223809* body, Tnode223809* x, Tnode223809* y);
N_NIMCALL(Tnode223809*, dotfield_482767)(Tnode223809* x, Tsym223841* f);
N_NIMCALL(void, illformedastlocal_279250)(Tnode223809* n);
N_NIMCALL(void, liftbodytup_482717)(Tliftctx482686* c, Ttype223847* t, Tnode223809* body, Tnode223809* x, Tnode223809* y);
static N_INLINE(Tnode223809*, newderef_400024)(Tnode223809* n);
static N_INLINE(void, asgntoresultvar_496501)(Tcontext278023* c, Tnode223809* n, Tnode223809* le, Tnode223809* ri);
N_NIMCALL(Tnode223809*, takeimplicitaddr_496470)(Tcontext278023* c, Tnode223809* n);
static N_INLINE(Tsym223841*, pop_411918)(Tsymseq223811** s);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, finishmethod_455341)(Tcontext278023* c, Tsym223841* s);
N_NIMCALL(NIM_BOOL, hasobjparam_488833)(Tsym223841* s);
N_NIMCALL(void, methoddef_398634)(Tsym223841* s, NIM_BOOL fromcache);
N_NIMCALL(Tnode223809*, skiphiddensubconv_263078)(Tnode223809* n);
N_NIMCALL(Tnode223809*, forcebool_462829)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, assign_220964)(Intset220056* dest, Intset220056 src);
N_NIMCALL(void, semrecordcase_465298)(Tcontext278023* c, Tnode223809* n, Intset220056* check, NI* pos, Tnode223809* father, Ttype223847* rectype);
N_NIMCALL(void, semcasebranch_465147)(Tcontext278023* c, Tnode223809* t, Tnode223809* branch, NI branchindex, NI64* covered);
N_NIMCALL(Tnode223809*, semcasebranchrange_465100)(Tcontext278023* c, Tnode223809* t, Tnode223809* b, NI64* covered);
N_NIMCALL(Tnode223809*, sembranchrange_465078)(Tcontext278023* c, Tnode223809* t, Tnode223809* a, Tnode223809* b, NI64* covered);
N_NIMCALL(Tnode223809*, skipconvtaketype_262967)(Tnode223809* n);
N_NIMCALL(NIM_BOOL, emptyrange_274034)(Tnode223809* a, Tnode223809* b);
N_NIMCALL(void, delson_227597)(Tnode223809* father, NI idx);
N_NIMCALL(Tnode223809*, semcasebranchsetelem_465113)(Tcontext278023* c, Tnode223809* t, Tnode223809* b, NI64* covered);
N_NIMCALL(void, checkforoverlap_465004)(Tcontext278023* c, Tnode223809* t, NI currentex, NI branchindex);
N_NIMCALL(NIM_BOOL, overlap_274012)(Tnode223809* a, Tnode223809* b);
N_NIMCALL(Ropeobj174009*, rope_174322)(NimStringDesc* s);
N_NIMCALL(Ttype223847*, semtuple_464654)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(Ttype223847*, semtypeclass_468417)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(void, safeadd_300522)(Ttypeseq223843** x, Ttype223847* y);
N_NIMCALL(Ttype223847*, semvartype_463395)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(Ttype223847*, semdistinct_463415)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(Ttype223847*, semproctypewithscope_468486)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev, NU8 kind);
N_NIMCALL(void, seteffectsforproctype_368612)(Ttype223847* t, Tnode223809* n);
N_NIMCALL(NIM_BOOL, haspragma_298952)(Tnode223809* n, NU16 pragma);
N_NIMCALL(Ttype223847*, semenum_462933)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(void, strtableadd_231103)(Tstrtable223813* t, Tsym223841* n);
N_NIMCALL(Ttype223847*, semstmtlisttype_468038)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
N_NIMCALL(Ttype223847*, semblocktype_468082)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev);
static N_INLINE(void, markindirect_279208)(Tcontext278023* c, Tsym223841* s);
N_NIMCALL(void, setintlittype_272774)(Tnode223809* result);
N_NIMCALL(Ttype223847*, getfloatlittype_272686)(Tnode223809* literal);
N_NIMCALL(Tnode223809*, semfieldaccess_490014)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, semconv_491710)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, maybelifttype_491688)(Ttype223847** t, Tcontext278023* c, Tlineinfo188352 info);
N_NIMCALL(Tnode223809*, inferwithmetatype_455463)(Tcontext278023* c, Ttype223847* formal, Tnode223809* arg, NIM_BOOL coercedistincts);
N_NIMCALL(NU8, checkconvertible_491423)(Tcontext278023* c, Ttype223847* castdest, Ttype223847* src);
N_NIMCALL(NU8, checkconversionbetweenobjects_491409)(Ttype223847* castdest, Ttype223847* src);
N_NIMCALL(NI, inheritancediff_260091)(Ttype223847* a, Ttype223847* b);
N_NIMCALL(Tnode223809*, semobjconstr_494433)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(void, checkinitialized_499065)(Tnode223809* n, Intset220056 ids, Tlineinfo188352 info);
N_NIMCALL(Tnode223809*, semmagic_498194)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, NU16 flags);
N_NIMCALL(Tnode223809*, semdefined_497236)(Tcontext278023* c, Tnode223809* n, NIM_BOOL onlycurrentscope);
N_NIMCALL(NIM_BOOL, isdefined_197167)(Tident196021* symbol);
N_NIMCALL(Tsym223841*, lookupfordefined_497187)(Tcontext278023* c, Tnode223809* n, NIM_BOOL onlycurrentscope);
N_NIMCALL(Tsym223841*, lookupfordefined_497178)(Tcontext278023* c, Tident196021* i, NIM_BOOL onlycurrentscope);
N_NIMCALL(Tsym223841*, localsearchinscope_284194)(Tcontext278023* c, Tident196021* s);
N_NIMCALL(Tsym223841*, strtableget_231111)(Tstrtable223813 t, Tident196021* name);
N_NIMCALL(Tnode223809*, setms_498184)(Tnode223809* n, Tsym223841* s);
N_NIMCALL(Tnode223809*, semcompiles_498079)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, tryexpr_455317)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(NI, getinfocontextlen_189545)(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_89208)(void);
static N_INLINE(void, popCurrentException)(void);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src_85804, TNimType* mt);
N_NIMCALL(void, setinfocontextlen_189562)(NI L);
N_NIMCALL(Tnode223809*, semsizeof_491884)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semis_492107)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, maketypesymnode_278714)(Tcontext278023* c, Ttype223847* typ, Tlineinfo188352 info);
N_NIMCALL(Tnode223809*, isopimpl_456055)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NU8, typerel_387064)(Tcandidate386209* c, Ttype223847* f, Ttype223847* aorig, NIM_BOOL dobind);
N_NIMCALL(Tnode223809*, semof_491895)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semexpandtoast_497669)(Tcontext278023* c, Tnode223809* n, Tsym223841* magicsym, NU16 flags);
N_NIMCALL(Tnode223809*, semexpandtoast_497430)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tsym223841*, expectmacroortemplatecall_456032)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Ttype223847*, systypefromname_272179)(NimStringDesc* name);
N_NIMCALL(Tnode223809*, semquoteast_455334)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NimStringDesc*, expectstring_497308)(Tcontext278023* c, Tnode223809* n_497311);
N_NIMCALL(Tnodeseq223803*, newseq_497862)(NI len);
N_NIMCALL(void, processquotations_497682)(Tnode223809** n, NimStringDesc* op, Tnodeseq223803** quotes, Tnodeseq223803** ids);
N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s, NimStringDesc* prefix);
N_NIMCALL(Tsym223841*, newanonsym_497343)(NU8 kind, Tlineinfo188352 info, Tsym223841* owner);
N_NIMCALL(Tnode223809*, semtemplatedef_473709)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semtemplbodydirty_473496)(Templctx470056* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semtemplbody_470170)(Templctx470056* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semtemplsymbol_470811)(Tcontext278023* c, Tnode223809* n, Tsym223841* s);
N_NIMCALL(void, openscope_470175)(Templctx470056* c);
N_NIMCALL(void, closescope_470182)(Templctx470056* c);
N_NIMCALL(Tnode223809*, semtemplbodyscope_470189)(Templctx470056* c, Tnode223809* n);
N_NIMCALL(void, addlocaldecl_470475)(Templctx470056* c, Tnode223809** n, NU8 k);
N_NIMCALL(NU8, symbinding_469725)(Tnode223809* n);
N_NIMCALL(NU16, whichkeyword_204390)(Tident196021* id);
N_NIMCALL(Tnode223809*, onlyreplaceparams_470198)(Templctx470056* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, getidentnode_470071)(Templctx470056* c, Tnode223809* n);
static N_INLINE(NIM_BOOL, istemplparam_470118)(Templctx470056* c, Tnode223809* n);
N_NIMCALL(void, replaceidentbysym_470043)(Tnode223809** n, Tnode223809* s);
N_NIMCALL(Tsym223841*, newgensym_470443)(NU8 kind, Tnode223809* n, Templctx470056* c);
N_NIMCALL(void, semtemplsomedecl_471238)(Templctx470056* c, Tnode223809* n, NU8 symkind, NI start);
N_NIMCALL(Tnode223809*, semroutineintemplbody_471036)(Templctx470056* c, Tnode223809* n, NU8 k);
N_NIMCALL(Tnode223809*, semroutineintemplname_470854)(Templctx470056* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semtemplbodysons_471352)(Templctx470056* c, Tnode223809* n);
N_NIMCALL(NIM_BOOL, oprisroof_471639)(Tnode223809* n);
N_NIMCALL(void, symtabreplace_235415)(Tstrtable223813* t, Tsym223841* prevsym, Tsym223841* newsym);
N_NIMCALL(Tsym223841*, getmagicsym_497328)(NU8 magic);
N_NIMCALL(NU8, spawnresult_402208)(Ttype223847* t, NIM_BOOL inparallel);
N_NIMCALL(Ttype223847*, createflowvar_498119)(Tcontext278023* c, Ttype223847* t, Tlineinfo188352 info);
N_NIMCALL(Tsym223841*, instantiatecreateflowvarcall_498129)(Tcontext278023* c, Ttype223847* t, Tlineinfo188352 info);
N_NIMCALL(Tnode223809*, semindirectop_494464)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(void, semopaux_492150)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, resolveindirectcall_494438)(Tcontext278023* c, Tnode223809* n, Tnode223809* norig, Ttype223847* t, Tcandidate386209* Result);
N_NIMCALL(Tnode223809*, overloadedcallopr_492209)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NIM_BOOL, shouldbebracketexpr_499837)(Tnode223809* n);
N_NIMCALL(void, setgenericparams_500151)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semarrayaccess_496382)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(NU8, checkpar_498735)(Tnode223809* n);
N_NIMCALL(Tnode223809*, semtuplepositionsconstr_498949)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(NIM_BOOL, istupletype_499005)(Tnode223809* n);
N_NIMCALL(Tnode223809*, semtuplefieldsconstr_498837)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, semsetconstr_498479)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semarrayconstr_492482)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Ttype223847*, commontype_455477)(Ttype223847* x, Ttype223847* y);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_262739)(Ttypeseq223843* x, Ttypeseq223843* y);
N_NIMCALL(NIM_BOOL, isemptycontainer_262978)(Ttype223847* t);
N_NIMCALL(Ttype223847*, commonsuperclass_260468)(Ttype223847* a, Ttype223847* b);
N_NIMCALL(Tnode223809*, semlambda_455261)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, semdo_487263)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, semcast_491825)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NIM_BOOL, iscastable_491583)(Ttype223847* dst, Ttype223847* src);
N_NIMCALL(NI64, computesize_253184)(Ttype223847* typ);
N_NIMCALL(Tnode223809*, semif_481260)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semexprbranch_481004)(Tcontext278023* c, Tnode223809* n);
static N_INLINE(void, semdestructorcheck_480851)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, semexprbranchscope_481035)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semtableconstr_498640)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semstaticexpr_494274)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semblock_499450)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semstmtlist_489286)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, semtry_482115)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semraise_485501)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semvarorlet_483852)(Tcontext278023* c, Tnode223809* n, NU8 symkind);
N_NIMCALL(void, suggeststmt_397098)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, newsons_226272)(Tnode223809* father, NI length);
N_NIMCALL(void, addtovarsection_483706)(Tcontext278023* c, Tnode223809** result, Tnode223809* orig, Tnode223809* identdefs);
N_NIMCALL(NIM_BOOL, isdiscardunderscore_483833)(Tsym223841* v);
N_NIMCALL(void, addinterfacedecl_284736)(Tcontext278023* c, Tsym223841* sym);
N_NIMCALL(Tsym223841*, findshadowedvar_482435)(Tcontext278023* c, Tsym223841* v);
N_NIMCALL(NIM_BOOL, identwithin_482493)(Tnode223809* n, Tident196021* s);
N_NIMCALL(void, adddefer_483799)(Tcontext278023* c, Tnode223809** result, Tsym223841* s);
N_NIMCALL(Tnode223809*, createdestructorcall_480601)(Tcontext278023* c, Tsym223841* s);
N_NIMCALL(void, checknilable_482604)(Tsym223841* v);
N_NIMCALL(void, setupcompiletimevar_444255)(Tsym223841* module, Tnode223809* n);
N_NIMCALL(Tnode223809*, semconst_484383)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, fitremovehiddenconv_482413)(Tcontext278023* c, Ttype223847* typ, Tnode223809* n);
N_NIMCALL(Tnode223809*, semtypesection_486685)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, typesectionleftsidepass_485599)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, typesectionrightsidepass_485697)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, processmagictype_469315)(Tcontext278023* c, Tsym223841* m);
N_NIMCALL(void, setmagictype_469304)(Tsym223841* m, NU8 kind, NI size);
N_NIMCALL(void, typesectionfinalpass_486146)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, checkconstructedtype_300110)(Tlineinfo188352 info, Ttype223847* typ);
N_NIMCALL(void, checkformetafields_485980)(Tnode223809* n);
N_NIMCALL(Tnode223809*, semdiscard_479406)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semwhile_479617)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, sembreakorcontinue_479427)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semfor_485381)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semexprnoderef_455228)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, semforvars_485204)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tsym223841*, symforvar_485108)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, addforvardecl_485076)(Tcontext278023* c, Tsym223841* v);
N_NIMCALL(Tnode223809*, semforfields_484835)(Tcontext278023* c, Tnode223809* n, NU8 m);
N_NIMCALL(Tnode223809*, instfieldloopbody_484553)(Tfieldinstctx484548 c, Tnode223809* n, Tnode223809* forloop);
N_NIMCALL(void, semforobjectfields_484713)(Tfieldsctx484710 c, Tnode223809* typ, Tnode223809* forloop, Tnode223809* father);
N_NIMCALL(NIM_BOOL, containsnode_228365)(Tnode223809* n, TY481044 kinds);
N_NIMCALL(Tnode223809*, implicititerator_485347)(Tcontext278023* c, NimStringDesc* it, Tnode223809* arg);
N_NIMCALL(Tnode223809*, semcase_481701)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NI64, tocover_479659)(Ttype223847* t);
N_NIMCALL(Tnode223809*, semreturn_496777)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semusing_497354)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, adddeclat_284629)(Tscope223835* scope, Tsym223841* sym);
N_NIMCALL(Tnode223809*, semasm_479607)(Tcontext278023* con, Tnode223809* n);
N_NIMCALL(NIM_CHAR, pragmaasm_295101)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semasmoremit_296737)(Tcontext278023* con, Tnode223809* n, NIM_CHAR marker);
N_NIMCALL(Tnode223809*, semyield_497044)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, semyieldvarresult_496942)(Tcontext278023* c, Tnode223809* n, Ttype223847* restype);
N_NIMCALL(Tnode223809*, semiterator_488709)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semmethod_488888)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semconverterdef_488899)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, addconverter_278564)(Tcontext278023* c, Tsym223841* conv);
N_NIMCALL(Tnode223809*, semmacrodef_488924)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, evalimport_286004)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, evalimportexcept_286857)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, evalfrom_286011)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, evalinclude_488960)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NI32, checkmodulename_286064)(Tnode223809* n);
N_NIMCALL(void, excl_220871)(Intset220056* s, NI key);
N_NIMCALL(Tnode223809*, semexport_499616)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tsym223841*, inittabiter_231124)(Ttabiter231119* ti, Tstrtable223813 tab);
N_NIMCALL(Tsym223841*, nextiter_231132)(Ttabiter231119* ti, Tstrtable223813 tab);
N_NIMCALL(Tnode223809*, sempragmablock_489046)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(NU16, whichpragma_252687)(Tnode223809* n);
N_NIMCALL(void, setline_489002)(Tnode223809* n, Tlineinfo188352 info);
N_NIMCALL(Tnode223809*, semstaticstmt_489108)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, evalstaticstmt_444244)(Tsym223841* module, Tnode223809* e, Tsym223841* prc);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_191255)(Tlineinfo188352 a, Tlineinfo188352 b);
N_NIMCALL(Tnode223809*, tryconstexpr_456420)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semoperand_490021)(Tcontext278023* c, Tnode223809* n, NU16 flags);
N_NIMCALL(Tnode223809*, seminferredlambda_487290)(Tcontext278023* c, Tidtable223859 pt, Tnode223809* n_487294);
N_NIMCALL(Tnode223809*, replacetypesinbody_302862)(Tcontext278023* p, Tidtable223859 pt, Tnode223809* n, Tsym223841* owner);
N_NIMCALL(Tsym223841*, insttypeboundop_392846)(Tcontext278023* c, Tsym223841* dc, Ttype223847* t, Tlineinfo188352 info, NU8 op);
N_NIMCALL(void, importallsymbols_286389)(Tcontext278023* c, Tsym223841* frommod);
N_NIMCALL(Tpasscontext275005*, myopen_500741)(Tsym223841* module);
N_NIMCALL(Tnode223809*, semstmtandgenerategenerics_500815)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, semalltypesections_486273)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(void, gatherstmts_486278)(Tcontext278023* c, Tnode223809* n, Tnode223809* result);
N_NIMCALL(void, addcodeforgenerics_500632)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, hlostmt_457187)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, buildechostmt_494830)(Tcontext278023* c, Tnode223809* n);
N_NIMCALL(Tnode223809*, transformstmt_415407)(Tsym223841* module, Tnode223809* n);
N_NIMCALL(void, recovercontext_500864)(Tcontext278023* c);
static N_INLINE(NIM_BOOL, isObjWithCache)(TNimType* obj, TNimType* subclass, TNimType** cache);
N_NOINLINE(NIM_BOOL, isobjslowpath_25161)(TNimType* obj, TNimType* subclass, TNimType** cache);
N_NIMCALL(void, rawclosescope_284102)(Tcontext278023* c);
STRING_LITERAL(TMP1113, "typedesc", 8);
STRING_LITERAL(TMP1114, "destroy_", 8);
STRING_LITERAL(TMP1115, "this_", 5);
STRING_LITERAL(TMP1116, "destructor", 10);
STRING_LITERAL(TMP2060, "sem.myOpen", 10);
STRING_LITERAL(TMP3115, "", 0);
static NIM_CONST TY481044 TMP3116 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0xE0, 0x11, 0x02, 0x0C, 0x01, 0xC0,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3117, "[]", 2);
STRING_LITERAL(TMP3118, "|", 1);
STRING_LITERAL(TMP3119, "invalid type", 12);
STRING_LITERAL(TMP3120, "region needs to be an object type", 33);
STRING_LITERAL(TMP3122, "openarray", 9);
STRING_LITERAL(TMP3123, "range", 5);
STRING_LITERAL(TMP3124, "set", 3);
STRING_LITERAL(TMP3125, "ordinal", 7);
STRING_LITERAL(TMP3126, "seq", 3);
STRING_LITERAL(TMP3127, "varargs", 7);
STRING_LITERAL(TMP3128, "cannot instantiate the \'$1\' $2", 30);
STRING_LITERAL(TMP3130, "compiler/semtypes.nim", 21);
NIM_CONST TY90959 TMP3129 = {((NimStringDesc*) &TMP3130),
((NI) 1051)}
;
STRING_LITERAL(TMP3131, "cannot instantiate ", 19);
STRING_LITERAL(TMP3132, "\012got: (", 7);
STRING_LITERAL(TMP3136, ")\012but expected: (", 17);
STRING_LITERAL(TMP3137, ")", 1);
STRING_LITERAL(TMP3138, "^", 1);
STRING_LITERAL(TMP3139, "{}", 2);
STRING_LITERAL(TMP3140, "{}=", 3);
STRING_LITERAL(TMP3141, "[]=", 3);
STRING_LITERAL(TMP3142, "result", 6);
NIM_CONST TY90959 TMP3143 = {((NimStringDesc*) &TMP3130),
((NI) 1254)}
;
STRING_LITERAL(TMP3144, "object", 6);
STRING_LITERAL(TMP3145, "addInheritedFieldsAux", 21);
STRING_LITERAL(TMP3146, "addInheritedFieldsAux(record case branch)", 41);
STRING_LITERAL(TMP3147, "addInheritedFieldsAux()", 23);
STRING_LITERAL(TMP3148, "semObjectNode", 13);
STRING_LITERAL(TMP3150, "compiler/seminst.nim", 20);
NIM_CONST TY90959 TMP3149 = {((NimStringDesc*) &TMP3150),
((NI) 216)}
;
STRING_LITERAL(TMP3151, "nesting too deep", 16);
NIM_CONST TY90959 TMP3152 = {((NimStringDesc*) &TMP3150),
((NI) 237)}
;
NIM_CONST TY90959 TMP3153 = {((NimStringDesc*) &TMP3150),
((NI) 14)}
;
NIM_CONST TY90959 TMP3154 = {((NimStringDesc*) &TMP3150),
((NI) 16)}
;
STRING_LITERAL(TMP3155, "owner is nil", 12);
NIM_CONST TY90959 TMP3156 = {((NimStringDesc*) &TMP3150),
((NI) 180)}
;
STRING_LITERAL(TMP3157, "result", 6);
STRING_LITERAL(TMP3158, "NimNode", 7);
STRING_LITERAL(TMP3159, "NimNode", 7);
STRING_LITERAL(TMP3160, "PNimrodNode", 11);
static NIM_CONST Tspecialwords204012 TMP3241 = {
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(TMP3243, "compiler/semexprs.nim", 21);
NIM_CONST TY90959 TMP3242 = {((NimStringDesc*) &TMP3243),
((NI) 1003)}
;
STRING_LITERAL(TMP3246, "()", 2);
STRING_LITERAL(TMP3247, "cannot use symbol of kind \'", 27);
STRING_LITERAL(TMP3248, "\' as a \'", 8);
STRING_LITERAL(TMP3249, "\'", 1);
static NIM_CONST Tspecialwords204012 TMP3250 = {
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 Tspecialwords204012 TMP3251 = {
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 Tspecialwords204012 TMP3252 = {
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(TMP3271, "\':\' expected", 12);
STRING_LITERAL(TMP3274, ":type", 5);
NIM_CONST TY90959 TMP3283 = {((NimStringDesc*) &TMP3130),
((NI) 712)}
;
STRING_LITERAL(TMP3286, "implicit return type for \'iterator\'", 35);
STRING_LITERAL(TMP3287, "invalid return type: \'stmt\'", 27);
STRING_LITERAL(TMP3288, "*", 1);
STRING_LITERAL(TMP3289, "**", 2);
STRING_LITERAL(TMP3290, "~", 1);
STRING_LITERAL(TMP3293, "semProcAux", 10);
STRING_LITERAL(TMP3295, "destroy", 7);
STRING_LITERAL(TMP3296, "=destroy", 8);
STRING_LITERAL(TMP3297, "deepcopy", 8);
STRING_LITERAL(TMP3298, "=deepcopy", 9);
STRING_LITERAL(TMP3299, "=", 1);
STRING_LITERAL(TMP3300, "nimDestroyRange", 15);
STRING_LITERAL(TMP3302, "compiler/semdestruct.nim", 24);
NIM_CONST TY90959 TMP3301 = {((NimStringDesc*) &TMP3302),
((NI) 114)}
;
NIM_CONST TY90959 TMP3303 = {((NimStringDesc*) &TMP3302),
((NI) 105)}
;
NIM_CONST TY90959 TMP3304 = {((NimStringDesc*) &TMP3302),
((NI) 151)}
;
STRING_LITERAL(TMP3305, "AnonType", 8);
static NIM_CONST Tspecialwords204012 TMP3306 = {
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(TMP3307, "use the {.experimental.} pragma to enable destructors", 53);
STRING_LITERAL(TMP3308, "cannot bind another \'deepCopy\' to: ", 35);
STRING_LITERAL(TMP3309, "cannot bind \'deepCopy\' to: ", 27);
STRING_LITERAL(TMP3310, "signature for \'deepCopy\' must be proc[T: ptr|ref](x: T): T", 58);
STRING_LITERAL(TMP3311, "cannot bind another \'=\' to: ", 28);
STRING_LITERAL(TMP3312, "signature for \'=\' must be proc[T: object](x: var T; y: T)", 57);
STRING_LITERAL(TMP3313, "\'destroy\' or \'deepCopy\' expected for \'override\'", 47);
STRING_LITERAL(TMP3314, "invalid type: \'", 15);
STRING_LITERAL(TMP3315, "\' in this context: \'", 20);
STRING_LITERAL(TMP3329, "compiler/hlo.nim", 16);
NIM_CONST TY90959 TMP3328 = {((NimStringDesc*) &TMP3329),
((NI) 15)}
;
STRING_LITERAL(TMP3330, "no tuple type for constructor", 29);
STRING_LITERAL(TMP3331, "invalid tuple constructor", 25);
STRING_LITERAL(TMP3332, "unknown identifier: ", 20);
STRING_LITERAL(TMP3333, "cannot convert ", 15);
STRING_LITERAL(TMP3334, " to ", 4);
static NIM_CONST TY493057 TMP3335 = {
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(TMP3336, "analyseIfAddressTaken", 21);
STRING_LITERAL(TMP3338, "unsafeAddr", 10);
STRING_LITERAL(TMP3339, "cannot instantiate: ", 20);
STRING_LITERAL(TMP3340, "; got ", 6);
STRING_LITERAL(TMP3341, " type(s) but expected ", 22);
STRING_LITERAL(TMP3342, "could not resolve: ", 19);
STRING_LITERAL(TMP3344, "compiler/semmagic.nim", 21);
NIM_CONST TY90959 TMP3343 = {((NimStringDesc*) &TMP3344),
((NI) 103)}
;
STRING_LITERAL(TMP3345, "name", 4);
STRING_LITERAL(TMP3346, "arity", 5);
NIM_CONST TY90959 TMP3347 = {((NimStringDesc*) &TMP3344),
((NI) 98)}
;
STRING_LITERAL(TMP3348, "low", 3);
STRING_LITERAL(TMP3349, "high", 4);
NIM_CONST TY491845 optostr_491843 = {((NimStringDesc*) &TMP3348),
((NimStringDesc*) &TMP3349)}
;
STRING_LITERAL(TMP3350, "use \'^\' instead of \'-\'; negative indexing is obsolete", 53);
STRING_LITERAL(TMP3351, "no surrounding array access context for \'^\'", 43);
STRING_LITERAL(TMP3352, "invalid context for \'^\' as \'$#\' has side effects", 48);
STRING_LITERAL(TMP3353, "invalid context for \'^\' as len!=high+1 for \'$#\'", 47);
STRING_LITERAL(TMP3354, "len", 3);
STRING_LITERAL(TMP3355, "\'$#\' has to be of an ordinal type for \'^\'", 41);
STRING_LITERAL(TMP3356, "-", 1);
STRING_LITERAL(TMP3357, "cannot find plugin ", 19);
static NIM_CONST TY493057 TMP3358 = {
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(TMP3444, " --> \'", 6);
STRING_LITERAL(TMP3497, "top level \'.closure\' calling convention", 39);
static NIM_CONST Tspecialwords204012 TMP3498 = {
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(TMP3500, "compiler/semcall.nim", 20);
NIM_CONST TY90959 TMP3499 = {((NimStringDesc*) &TMP3500),
((NI) 185)}
;
STRING_LITERAL(TMP3501, ".()", 3);
STRING_LITERAL(TMP3502, ".", 1);
NIM_CONST TY90959 TMP3503 = {((NimStringDesc*) &TMP3500),
((NI) 206)}
;
STRING_LITERAL(TMP3504, ".=", 2);
NIM_CONST TY90959 TMP3505 = {((NimStringDesc*) &TMP3500),
((NI) 238)}
;
STRING_LITERAL(TMP3506, "ambiguous call", 14);
STRING_LITERAL(TMP3507, "(", 1);
STRING_LITERAL(TMP3508, ", ", 2);
STRING_LITERAL(TMP3509, "calleeSym.ast is nil", 20);
NIM_CONST TY90959 TMP3510 = {((NimStringDesc*) &TMP3500),
((NI) 328)}
;
STRING_LITERAL(TMP3511, "\012", 1);
STRING_LITERAL(TMP3512, "semOverloadedCallAnalyseEffects", 31);
STRING_LITERAL(TMP3513, "[]=", 3);
STRING_LITERAL(TMP3514, "{}=", 3);
NIM_CONST TY90959 TMP3515 = {((NimStringDesc*) &TMP3243),
((NI) 1332)}
;
STRING_LITERAL(TMP3516, ") ", 2);
STRING_LITERAL(TMP3517, ":lifted=", 8);
STRING_LITERAL(TMP3518, "dest", 4);
STRING_LITERAL(TMP3519, "src", 3);
STRING_LITERAL(TMP3520, "newSeq", 6);
STRING_LITERAL(TMP3521, "len", 3);
STRING_LITERAL(TMP3522, ":tmp", 4);
STRING_LITERAL(TMP3523, "<=", 2);
STRING_LITERAL(TMP3525, "inc", 3);
STRING_LITERAL(TMP3526, "cannot lift assignment operator to \'case\' object", 48);
STRING_LITERAL(TMP3527, "deepCopy", 8);
STRING_LITERAL(TMP3528, "cannot copy openArray", 21);
STRING_LITERAL(TMP3529, "assignment requested for type: ", 31);
STRING_LITERAL(TMP3530, "semRecordNodeAux", 16);
STRING_LITERAL(TMP3531, "semRecordCase: discriminant is no symbol", 40);
STRING_LITERAL(TMP3532, "low(", 4);
STRING_LITERAL(TMP3533, ") must be 0 for discriminant", 28);
STRING_LITERAL(TMP3534, "dummy", 5);
static NIM_CONST Tspecialwords204012 TMP3535 = {
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(TMP3536, "use \'concept\' instead; \'generic\'", 32);
static NIM_CONST Tspecialwords204012 TMP3537 = {
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 TY90959 TMP3540 = {((NimStringDesc*) &TMP3243),
((NI) 118)}
;
NIM_CONST TY90959 TMP3541 = {((NimStringDesc*) &TMP3243),
((NI) 123)}
;
STRING_LITERAL(TMP3542, "illegal context for \'nimvm\' magic", 33);
STRING_LITERAL(TMP3544, "bind", 4);
STRING_LITERAL(TMP3545, ":anon", 5);
STRING_LITERAL(TMP3546, "object constructor needs an object type", 39);
STRING_LITERAL(TMP3547, "checkInitialized", 16);
STRING_LITERAL(TMP3548, "field not initialized: ", 23);
STRING_LITERAL(TMP3549, "defined", 7);
STRING_LITERAL(TMP3550, "obsolete usage of \'defined\', use \'declared\' instead", 51);
STRING_LITERAL(TMP3552, "sizeof", 6);
STRING_LITERAL(TMP3553, "is", 2);
NIM_CONST TY90959 TMP3554 = {((NimStringDesc*) &TMP3243),
((NI) 375)}
;
STRING_LITERAL(TMP3555, "closure", 7);
STRING_LITERAL(TMP3556, "of", 2);
NIM_CONST TY90959 TMP3557 = {((NimStringDesc*) &TMP3243),
((NI) 1566)}
;
NIM_CONST TY90959 TMP3558 = {((NimStringDesc*) &TMP3243),
((NI) 1604)}
;
STRING_LITERAL(TMP3559, "``", 2);
STRING_LITERAL(TMP3560, "block", 5);
STRING_LITERAL(TMP3561, "stmt", 4);
STRING_LITERAL(TMP3562, "expr", 4);
static NIM_CONST Tspecialwords204012 TMP3563 = {
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(TMP3564, "use the {.experimental.} pragma to enable \'parallel\'", 52);
STRING_LITERAL(TMP3567, "FlowVar", 7);
STRING_LITERAL(TMP3568, "nimCreateFlowVar", 16);
STRING_LITERAL(TMP3570, ")\012", 2);
STRING_LITERAL(TMP3571, "[]", 2);
STRING_LITERAL(TMP3572, "{}", 2);
STRING_LITERAL(TMP3573, "semExpr() to implement", 22);
static NIM_CONST Tspecialwords204012 TMP3574 = {
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(TMP3575, "use \'defer\'; standalone \'finally\'", 33);
STRING_LITERAL(TMP3576, "use an explicit \'try\'; standalone \'except\'", 42);
STRING_LITERAL(TMP3577, "type class predicate failed", 27);
STRING_LITERAL(TMP3578, "\'typedesc\' metatype is not valid here; typed \'=\' instead of \':\'"
"?", 64);
STRING_LITERAL(TMP3579, "tuple", 5);
STRING_LITERAL(TMP3580, "_", 1);
STRING_LITERAL(TMP3581, "auto", 4);
STRING_LITERAL(TMP3582, "shared", 6);
STRING_LITERAL(TMP3584, "compiler/semstmts.nim", 21);
NIM_CONST TY90959 TMP3583 = {((NimStringDesc*) &TMP3584),
((NI) 709)}
;
NIM_CONST TY90959 TMP3585 = {((NimStringDesc*) &TMP3584),
((NI) 710)}
;
STRING_LITERAL(TMP3586, ":ObjectType", 11);
NIM_CONST TY90959 TMP3587 = {((NimStringDesc*) &TMP3584),
((NI) 736)}
;
STRING_LITERAL(TMP3588, "\'continue\' cannot have a label", 30);
STRING_LITERAL(TMP3589, "true", 4);
STRING_LITERAL(TMP3590, "true", 4);
STRING_LITERAL(TMP3591, "no object or tuple type", 23);
STRING_LITERAL(TMP3592, "Field", 5);
STRING_LITERAL(TMP3593, "\'continue\' not supported in a \'fields\' loop", 43);
STRING_LITERAL(TMP3594, "parallel \'fields\' iterator does not work for \'case\' objects", 59);
static NIM_CONST TY481044 TMP3595 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3596, "items", 5);
STRING_LITERAL(TMP3597, "pairs", 5);
STRING_LITERAL(TMP3598, "use \'else: discard\'; non-ordinal case without \'else\'", 52);
STRING_LITERAL(TMP3599, "\'return\'", 8);
STRING_LITERAL(TMP3600, "use the {.experimental.} pragma to enable \'using\'", 49);
STRING_LITERAL(TMP3601, "semYield", 8);
STRING_LITERAL(TMP3602, "tuple constructor", 17);
STRING_LITERAL(TMP3603, "yield statement must yield a value", 34);
static NIM_CONST Tspecialwords204012 TMP3604 = {
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 Tspecialwords204012 TMP3605 = {
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(TMP3606, "iterator", 8);
STRING_LITERAL(TMP3607, "method", 6);
static NIM_CONST Tspecialwords204012 TMP3608 = {
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(TMP3609, "converter", 9);
static NIM_CONST Tspecialwords204012 TMP3610 = {
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(TMP3611, "macro", 5);
STRING_LITERAL(TMP3612, "import", 6);
STRING_LITERAL(TMP3623, "from", 4);
STRING_LITERAL(TMP3626, "include", 7);
STRING_LITERAL(TMP3627, "export", 6);
STRING_LITERAL(TMP3628, "cannot export: ", 15);
static NIM_CONST Tspecialwords204012 TMP3629 = {
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(TMP3630, "\'defer\' takes a \'void\' expression", 33);
STRING_LITERAL(TMP3632, "cannot infer type of parameter: ", 32);
STRING_LITERAL(TMP3637, "no code for ", 12);
STRING_LITERAL(TMP3638, "echo", 4);
STRING_LITERAL(TMP3639, "echo", 4);
STRING_LITERAL(TMP3641, "n is not nil", 12);
Ttype223847* commontypebegin_455472;
extern TNimType NTI223805; /* PType */
extern TNimType NTI223847; /* TType */
extern Gcheap51018 gch_51059;
Tident196021* typedescid_466473;
Ttype223847* enforcevoidcontext_479405;
Tsym223841* analyzingdestructor_479801;
Tsym223841* destructoristrivial_479802;
extern TNimType NTI223807; /* PSym */
extern TNimType NTI223841; /* TSym */
Tident196021* destructorname_479819;
Tident196021* destructorparam_479820;
Tnode223809* destructorpragma_479821;
extern NU8 gcmd_165134;
extern NI evaltemplatecounter_429396;
extern TNimType NTI223809; /* TNode */
extern TNimType NTI223441; /* TSymKind */
extern TNimType NTI223843; /* TTypeSeq */
extern TNimType NTI278009; /* PProcCon */
extern Tnode223809* emptynode_224807;
extern Tsym223841* opcontains_229060;
extern Tsym223841* opnot_229059;
extern TNimType NTI223803; /* TNodeSeq */
TNimType NTI458963; /* tuple[a: PSym, b: int] */
extern TNimType NTI108; /* int */
TNimType NTI458962; /* seq[tuple[a: PSym, b: int]] */
extern Tident196021* iddelegator_196562;
extern Tident196021* idanon_196495;
extern NU8 gidecmd_165119;
TNimType NTI467453; /* object */
extern TNimType NTI344033; /* range -1..0(int) */
extern TNimType NTI223801; /* PNode */
extern TNimType NTI149; /* string */
extern TNimType NTI188352; /* TLineInfo */
extern TNimType NTI278021; /* PContext */
TNimType NTI467511; /* ref object */
extern NU32 goptions_165130;
extern NIM_BOOL gexperimentalmode_165149;
extern NU64 gnotes_189398;
extern TNimType NTI386209; /* TCandidate */
extern TNimType NTI223811; /* TSymSeq */
extern NI gerrorcounter_189399;
extern NU32 gglobaloptions_165132;
extern NI gerrormax_189402;
extern Tsymseq223811* gowners_278291;
extern NU8 erroroutputs_189440;
extern TNimType NTI278143; /* seq[TInstantiationPair] */
extern TSafePoint* exchandler_20843;
extern TNimType NTI188358; /* ERecoverableError */
extern Exception* currexception_20845;
extern TNimType NTI223534; /* TMagic */
extern Tsym223841* systemmodule_272019;
extern Tlineinfo188352 gcodegenlineinfo_189361;
extern NI ptrsize_172653;
extern TNimType NTI223262; /* TTypeKind */
extern NI intsize_172651;
extern NI floatsize_172652;
extern TY275069 gincludefile_275073;
extern TNimType NTI188360; /* ESuggestDone */
static TNimType* Nim_OfCheck_CACHE1[2];

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

static N_INLINE(void, rtladdzct_54204)(Cell48947* c) {
	addzct_52617((&gch_51059.zct), c);
}

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

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

static N_INLINE(Tnode223809*, inlineconst_490248)(Tnode223809* n, Tsym223841* s) {
	Tnode223809* result;
	result = 0;
	result = copytree_228028((*s).ast);
	asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	(*result).info = (*n).info;
	return result;
}

static N_INLINE(NI, len_224098)(Tnode223809* 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_481045)(Tnode223809* n_481047) {
	NIM_BOOL result;
	Tnode223809* n;
	NIM_BOOL LOC3;
	NIM_BOOL LOC4;
	result = 0;
	n = n_481047;
	{
		while (1) {
			if (!((TMP3116[(*n).kind/8] &(1<<((*n).kind%8)))!=0)) goto LA2;
			n = lastson_226406(n);
		} LA2: ;
	}
	LOC3 = 0;
	LOC4 = 0;
	LOC4 = iscallexpr_224072(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 &(1<<((((NU8) 29))&31)))!=0);
	LA6: ;
	result = LOC3;
	return result;
}

static N_INLINE(NIM_BOOL, isatom_228904)(Tnode223809* 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_481094)(Tnode223809* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isatom_228904(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_253032((*n).typ, ((NU8) 0));
			localerror_194128((*n).info, ((NU16) 144), LOC12);
		}
		LA10: ;
	}
	goto LA1;
	LA4: ;
	{
		if (!((*n).kind == ((NU8) 115) || (*n).kind == ((NU8) 126))) goto LA14;
		(*n).kind = ((NU8) 115);
		{
			Tnode223809* it_481129;
			it_481129 = 0;
			{
				NI i_481134;
				NI HEX3Atmp_481136;
				NI LOC18;
				NI res_481138;
				i_481134 = 0;
				HEX3Atmp_481136 = 0;
				LOC18 = 0;
				LOC18 = len_224098(n);
				HEX3Atmp_481136 = (LOC18 - 1);
				res_481138 = ((NI) 0);
				{
					while (1) {
						if (!(res_481138 <= HEX3Atmp_481136)) goto LA20;
						i_481134 = res_481138;
						it_481129 = (*n).kindU.S6.sons->data[i_481134];
						fixniltype_481094(it_481129);
						res_481138 += ((NI) 1);
					} LA20: ;
				}
			}
		}
	}
	goto LA1;
	LA14: ;
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), NIM_NIL);
}

N_NIMCALL(void, discardcheck_481156)(Tcontext278023* c, Tnode223809* 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_194161((*result).info, ((NU16) 250), ((NimStringDesc*) &TMP3115));
		}
		goto LA11;
		LA13: ;
		{
			NIM_BOOL LOC16;
			Tnode223809* n;
			LOC16 = 0;
			LOC16 = implicitlydiscardable_481045(result);
			if (!LOC16) goto LA17;
			n = result;
			asgnRefNoCycle((void**) (&(*result).typ), NIM_NIL);
			{
				while (1) {
					if (!((TMP3116[(*n).kind/8] &(1<<((*n).kind%8)))!=0)) goto LA20;
					n = lastson_226406(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_165134 == ((NU8) 18)));
			LA23: ;
			if (!LOC22) goto LA24;
			{
				if (!((*(*result).typ).kind == ((NU8) 5))) goto LA28;
				fixniltype_481094(result);
				message_194161((*result).info, ((NU16) 250), ((NimStringDesc*) &TMP3115));
			}
			goto LA26;
			LA28: ;
			{
				Tnode223809* n;
				NimStringDesc* LOC33;
				n = result;
				{
					while (1) {
						if (!((TMP3116[(*n).kind/8] &(1<<((*n).kind%8)))!=0)) goto LA32;
						n = lastson_226406(n);
					} LA32: ;
				}
				LOC33 = 0;
				LOC33 = typetostring_253032((*result).typ, ((NU8) 0));
				localerror_194128((*n).info, ((NU16) 144), LOC33);
			}
			LA26: ;
		}
		goto LA11;
		LA24: ;
		LA11: ;
	}
	LA9: ;
	}BeforeRet: ;
}

N_NIMCALL(Tnode223809*, semexprnotype_455221)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = semexpr_455201(c, n, 8);
	discardcheck_481156(c, result);
	return result;
}

N_NIMCALL(Tnode223809*, semstmt_455277)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = semexprnotype_455221(c, n);
	return result;
}

N_NIMCALL(Ttype223847*, neworprevtype_462895)(NU8 kind, Ttype223847* prev, Tcontext278023* c) {
	Ttype223847* result;
	result = 0;
	{
		if (!(prev == NIM_NIL)) goto LA3;
		result = newtypes_278221(kind, c);
	}
	goto LA1;
	LA3: ;
	{
		result = prev;
		{
			if (!((*result).kind == ((NU8) 30))) goto LA8;
			(*result).kind = kind;
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype223847*, semanontuple_464614)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		localerror_194128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
	}
	LA4: ;
	result = neworprevtype_462895(((NU8) 18), prev, c);
	{
		NI i_464632;
		NI HEX3Atmp_464635;
		NI LOC7;
		NI res_464638;
		i_464632 = 0;
		HEX3Atmp_464635 = 0;
		LOC7 = 0;
		LOC7 = sonslen_226387(n);
		HEX3Atmp_464635 = (NI)(LOC7 - ((NI) 1));
		res_464638 = ((NI) 0);
		{
			while (1) {
				Ttype223847* LOC10;
				if (!(res_464638 <= HEX3Atmp_464635)) goto LA9;
				i_464632 = res_464638;
				LOC10 = 0;
				LOC10 = semtypenode_455269(c, (*n).kindU.S6.sons->data[i_464632], NIM_NIL);
				addsonskipintlit_272729(result, LOC10);
				res_464638 += ((NI) 1);
			} LA9: ;
		}
	}
	return result;
}

static N_INLINE(Tnode223809*, HEX5BHEX5D_224244)(Tnode223809* n, NI i) {
	Tnode223809* 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(Slice90369, HEX2EHEX2E_105290)(NI a, NI b) {
	Slice90369 result;
	memset((void*)(&result), 0, sizeof(result));
	result.a = a;
	result.b = b;
	return result;
}

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

N_NIMCALL(Ttype223847*, semrangeaux_463427)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	TY463620 range;
	Tnode223809* LOC9;
	Tnode223809* LOC10;
	TY463625 ranget;
	result = 0;
	checksonslen_279260(n, ((NI) 3));
	result = neworprevtype_462895(((NU8) 20), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_225351(((NU8) 44), (*n).info));
	{
		NIM_BOOL LOC3;
		Tnode223809* LOC4;
		Tnode223809* LOC6;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_224244(n, ((NI) 1));
		LOC3 = ((*LOC4).kind == ((NU8) 1));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_224244(n, ((NI) 2));
		LOC3 = ((*LOC6).kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		localerror_194128((*n).info, ((NU16) 110), ((NimStringDesc*) &TMP3115));
	}
	LA7: ;
	memset((void*)range, 0, sizeof(range));
	LOC9 = 0;
	LOC9 = HEX5BHEX5D_224244(n, ((NI) 1));
	range[(((NI) 0))- 0] = semexprwithtype_455211(c, LOC9, 32);
	LOC10 = 0;
	LOC10 = HEX5BHEX5D_224244(n, ((NI) 2));
	range[(((NI) 1))- 0] = semexprwithtype_455211(c, LOC10, 32);
	memset((void*)ranget, 0, sizeof(ranget));
	{
		NI i_463637;
		NI res_463669;
		i_463637 = 0;
		res_463669 = ((NI) 0);
		{
			while (1) {
				Ttype223847* LOC14;
				if (!(res_463669 <= ((NI) 1))) goto LA13;
				i_463637 = res_463669;
				LOC14 = 0;
				LOC14 = skiptypes_227167((*range[(i_463637)- 0]).typ, IL64(576460752303423488));
				ranget[(i_463637)- 0] = skipintlit_272696(LOC14);
				res_463669 += ((NI) 1);
			} LA13: ;
		}
	}
	{
		Ttype223847* LOC17;
		Ttype223847* LOC18;
		NIM_BOOL LOC19;
		LOC17 = 0;
		LOC17 = skiptypes_227167(ranget[(((NI) 0))- 0], 1048576);
		LOC18 = 0;
		LOC18 = skiptypes_227167(ranget[(((NI) 1))- 0], 1048576);
		LOC19 = 0;
		LOC19 = sametype_258092(LOC17, LOC18, 0);
		if (!!(LOC19)) goto LA20;
		localerror_194128((*n).info, ((NU16) 132), ((NimStringDesc*) &TMP3115));
	}
	goto LA15;
	LA20: ;
	{
		NIM_BOOL LOC23;
		LOC23 = 0;
		LOC23 = isordinaltype_253093(ranget[(((NI) 0))- 0]);
		if (!!(LOC23)) goto LA24;
		localerror_194128((*n).info, ((NU16) 78), ((NimStringDesc*) &TMP3115));
	}
	goto LA15;
	LA24: ;
	{
		NIM_BOOL LOC27;
		LOC27 = 0;
		LOC27 = enumhasholes_253099(ranget[(((NI) 0))- 0]);
		if (!LOC27) goto LA28;
		localerror_194128((*n).info, ((NU16) 150), (*(*(*ranget[(((NI) 0))- 0]).sym).name).s);
	}
	goto LA15;
	LA28: ;
	LA15: ;
	{
		NI i_463652;
		NI res_463676;
		i_463652 = 0;
		res_463676 = ((NI) 0);
		{
			while (1) {
				if (!(res_463676 <= ((NI) 1))) goto LA32;
				i_463652 = res_463676;
				{
					NIM_BOOL LOC35;
					Tnode223809* LOC38;
					LOC35 = 0;
					LOC35 = hasgenericarguments_300965(range[(i_463652)- 0]);
					if (!LOC35) goto LA36;
					LOC38 = 0;
					LOC38 = makestaticexpr_278820(c, range[(i_463652)- 0]);
					addson_225819((*result).n, LOC38);
				}
				goto LA33;
				LA36: ;
				{
					Tnode223809* LOC40;
					LOC40 = 0;
					LOC40 = semconstexpr_456485(c, range[(i_463652)- 0]);
					addson_225819((*result).n, LOC40);
				}
				LA33: ;
				res_463676 += ((NI) 1);
			} LA32: ;
		}
	}
	{
		Tnode223809* LOC43;
		Tnode223809* LOC44;
		NU8 LOC45;
		LOC43 = 0;
		LOC43 = HEX5BHEX5D_224244((*result).n, ((NI) 0));
		LOC44 = 0;
		LOC44 = HEX5BHEX5D_224244((*result).n, ((NI) 1));
		LOC45 = 0;
		LOC45 = weaklevalue_231424(LOC43, LOC44);
		if (!(LOC45 == ((NU8) 1))) goto LA46;
		localerror_194128((*n).info, ((NU16) 110), ((NimStringDesc*) &TMP3115));
	}
	LA46: ;
	addsonskipintlit_272729(result, ranget[(((NI) 0))- 0]);
	return result;
}

N_NIMCALL(Ttype223847*, semtypeexpr_468381)(Tcontext278023* c, Tnode223809* n_468384) {
	Ttype223847* result;
	Tnode223809* n;
	result = 0;
	n = semexprwithtype_455211(c, n_468384, 32);
	{
		if (!((*(*n).typ).kind == ((NU8) 8))) goto LA3;
		result = base_253039((*n).typ);
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC6;
		LOC6 = 0;
		LOC6 = rendertree_245059(n, 0);
		localerror_194128((*n).info, ((NU16) 67), LOC6);
		result = errortype_279161(c);
	}
	LA1: ;
	return result;
}

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

N_NIMCALL(Ttype223847*, newconstraint_462925)(Tcontext278023* c, NU8 k) {
	Ttype223847* result;
	Ttype223847* LOC1;
	result = 0;
	result = newtypes_278221(((NU8) 51), c);
	LOC1 = 0;
	LOC1 = newtypes_278221(k, c);
	addsonskipintlit_272729(result, LOC1);
	return result;
}

N_NIMCALL(Ttype223847*, semanyref_463311)(Tcontext278023* c, Tnode223809* n_463314, NU8 kind, Ttype223847* prev) {
	Ttype223847* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_224098(n_463314);
		if (!(LOC3 < ((NI) 1))) goto LA4;
		result = newconstraint_462925(c, kind);
	}
	goto LA1;
	LA4: ;
	{
		NI iscall;
		Tnode223809* n;
		Ttype223847* base;
		Tnode223809* LOC13;
		iscall = ((*n_463314).kind == ((NU8) 27) || (*n_463314).kind == ((NU8) 29) || (*n_463314).kind == ((NU8) 30) || (*n_463314).kind == ((NU8) 31) || (*n_463314).kind == ((NU8) 26) || (*n_463314).kind == ((NU8) 28) || (*n_463314).kind == ((NU8) 32));
		{
			Tnode223809* LOC9;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_224244(n_463314, ((NI) 0));
			if (!((*LOC9).kind == ((NU8) 41))) goto LA10;
			n = HEX5BHEX5D_224244(n_463314, ((NI) 0));
		}
		goto LA7;
		LA10: ;
		{
			n = n_463314;
		}
		LA7: ;
		checkminsonslen_279270(n, ((NI) 1));
		LOC13 = 0;
		LOC13 = lastson_226406(n);
		base = semtypenode_455269(c, LOC13, NIM_NIL);
		result = neworprevtype_462895(kind, prev, c);
		{
			NI i_463361;
			NI HEX3Atmp_463376;
			NI LOC15;
			NI res_463379;
			i_463361 = 0;
			HEX3Atmp_463376 = 0;
			LOC15 = 0;
			LOC15 = len_224098(n);
			HEX3Atmp_463376 = (NI)(LOC15 - ((NI) 2));
			res_463379 = ((NI) (iscall));
			{
				while (1) {
					Ttype223847* region;
					Tnode223809* LOC18;
					if (!(res_463379 <= HEX3Atmp_463376)) goto LA17;
					i_463361 = res_463379;
					LOC18 = 0;
					LOC18 = HEX5BHEX5D_224244(n, i_463361);
					region = semtypenode_455269(c, LOC18, NIM_NIL);
					{
						Ttype223847* LOC21;
						Tnode223809* LOC24;
						LOC21 = 0;
						LOC21 = skiptypes_227167(region, 2048);
						if (!!(((*LOC21).kind == ((NU8) 50) || (*LOC21).kind == ((NU8) 17)))) goto LA22;
						LOC24 = 0;
						LOC24 = HEX5BHEX5D_224244(n, i_463361);
						message_194161((*LOC24).info, ((NU16) 4), ((NimStringDesc*) &TMP3120));
					}
					LA22: ;
					addsonskipintlit_272729(result, region);
					res_463379 += ((NI) 1);
				} LA17: ;
			}
		}
		addsonskipintlit_272729(result, base);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, semwhen_456047)(Tcontext278023* c, Tnode223809* n, NIM_BOOL semcheck) {
	Tnode223809* result;
	NIM_BOOL whennimvm;
	result = 0;
	result = NIM_NIL;
	whennimvm = NIM_FALSE;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		Tnode223809* 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)];
		{
			Tsym223841* LOC13;
			if (!((*exprnode).kind == ((NU8) 2))) goto LA11;
			LOC13 = 0;
			LOC13 = lookup_284804(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: ;
	}
	LA7: ;
	{
		NI i_498389;
		NI HEX3Atmp_498460;
		NI LOC18;
		NI res_498463;
		i_498389 = 0;
		HEX3Atmp_498460 = 0;
		LOC18 = 0;
		LOC18 = sonslen_226387(n);
		HEX3Atmp_498460 = (NI)(LOC18 - ((NI) 1));
		res_498463 = ((NI) 0);
		{
			while (1) {
				Tnode223809* it;
				if (!(res_498463 <= HEX3Atmp_498460)) goto LA20;
				i_498389 = res_498463;
				it = (*n).kindU.S6.sons->data[i_498389];
				switch ((*it).kind) {
				case ((NU8) 86):
				case ((NU8) 49):
				{
					checksonslen_279260(it, ((NI) 2));
					{
						if (!whennimvm) goto LA24;
						{
							if (!semcheck) goto LA28;
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), semstmt_455277(c, (*it).kindU.S6.sons->data[((NI) 1)]));
						}
						LA28: ;
						result = n;
					}
					goto LA22;
					LA24: ;
					{
						Tnode223809* e;
						e = semconstexpr_456485(c, (*it).kindU.S6.sons->data[((NI) 0)]);
						{
							if (!!(((*e).kind == ((NU8) 6)))) goto LA33;
						}
						goto LA31;
						LA33: ;
						{
							NIM_BOOL LOC36;
							LOC36 = 0;
							LOC36 = !(((*e).kindU.S1.intval == IL64(0)));
							if (!(LOC36)) goto LA37;
							LOC36 = (result == NIM_NIL);
							LA37: ;
							if (!LOC36) goto LA38;
							{
								if (!semcheck) goto LA42;
								result = semstmt_455277(c, (*it).kindU.S6.sons->data[((NI) 1)]);
							}
							goto LA40;
							LA42: ;
							{
								result = (*it).kindU.S6.sons->data[((NI) 1)];
							}
							LA40: ;
						}
						goto LA31;
						LA38: ;
						LA31: ;
					}
					LA22: ;
				}
				break;
				case ((NU8) 88):
				case ((NU8) 50):
				{
					checksonslen_279260(it, ((NI) 1));
					{
						NIM_BOOL LOC48;
						LOC48 = 0;
						LOC48 = (result == NIM_NIL);
						if (LOC48) goto LA49;
						LOC48 = whennimvm;
						LA49: ;
						if (!LOC48) goto LA50;
						{
							if (!semcheck) goto LA54;
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), semstmt_455277(c, (*it).kindU.S6.sons->data[((NI) 0)]));
						}
						LA54: ;
						{
							if (!(result == NIM_NIL)) goto LA58;
							result = (*it).kindU.S6.sons->data[((NI) 0)];
						}
						LA58: ;
					}
					LA50: ;
				}
				break;
				default:
				{
					illformedast_279240(n);
				}
				break;
				}
				res_498463 += ((NI) 1);
			} LA20: ;
		}
	}
	{
		if (!(result == NIM_NIL)) goto LA63;
		result = newnodei_225351(((NU8) 1), (*n).info);
	}
	LA63: ;
	idsynchronizationpoint_222453(((NI) 200));
	return result;
}

N_NIMCALL(Tsym223841*, semtypeident_463976)(Tcontext278023* c, Tnode223809* n) {
	Tsym223841* result;
{	result = 0;
	{
		if (!((*n).kind == ((NU8) 3))) goto LA3;
		result = (*n).kindU.S4.sym;
	}
	goto LA1;
	LA3: ;
	{
		result = qualifiedlookup_284864(c, n, 3);
		{
			if (!!((result == NIM_NIL))) goto LA8;
			markused_386253((*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;
				{
					Tsym223841* 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_194128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
					result = errorsym_284372(c, n);
					goto BeforeRet;
				}
				LA26: ;
				result = copysym_226607((*(*result).typ).sym, NIM_FALSE);
				asgnRefNoCycle((void**) (&(*result).typ), copytype_226542((*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_226369((*result).typ);
					LOC35 = (LOC37 == ((NI) 0));
					LA36: ;
					LOC34 = LOC35;
					if (!(LOC34)) goto LA38;
					LOC34 = (((*(*result).typ).flags &(1<<((((NU8) 25))&31)))!=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_194128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
					result = errorsym_284372(c, n);
					goto BeforeRet;
				}
				LA32: ;
			}
			LA30: ;
			{
				Toverloaditer284431 ov;
				Tsym223841* amb;
				if (!!(((*result).kind == ((NU8) 7)))) goto LA44;
				memset((void*)(&ov), 0, sizeof(ov));
				amb = initoverloaditer_285108((&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_285277((&ov), c, n);
					} LA47: ;
				}
				{
					if (!!((amb == NIM_NIL))) goto LA52;
					result = amb;
				}
				goto LA50;
				LA52: ;
				{
					{
						if (!!(((*result).kind == ((NU8) 0)))) goto LA57;
						localerror_194128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
					}
					LA57: ;
					result = errorsym_284372(c, n);
					goto BeforeRet;
				}
				LA50: ;
			}
			LA44: ;
			{
				Tlineinfo188352 oldinfo;
				if (!!(((*(*result).typ).kind == ((NU8) 12)))) goto LA61;
				oldinfo = (*n).info;
				genericReset((void*)(&(*n)), (&NTI223809));
				(*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_194128((*n).info, ((NU16) 20), ((NimStringDesc*) &TMP3115));
			result = errorsym_284372(c, n);
		}
		LA6: ;
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, isrange_252626)(Tnode223809* 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;
			Tnode223809* LOC9;
			Tnode223809* LOC11;
			NIM_BOOL LOC13;
			Tnode223809* LOC14;
			Tnode223809* LOC16;
			Tnode223809* LOC17;
			LOC7 = 0;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_224244(n, ((NI) 0));
			LOC8 = ((*LOC9).kind == ((NU8) 2));
			if (!(LOC8)) goto LA10;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_224244(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_224244(n, ((NI) 0));
			LOC13 = ((*LOC14).kind == ((NU8) 56) || (*LOC14).kind == ((NU8) 57));
			if (!(LOC13)) goto LA15;
			LOC16 = 0;
			LOC16 = HEX5BHEX5D_224244(n, ((NI) 0));
			LOC17 = 0;
			LOC17 = HEX5BHEX5D_224244(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(Ttype223847*, semarrayindex_463808)(Tcontext278023* c, Tnode223809* n) {
	Ttype223847* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isrange_252626(n);
		if (!LOC3) goto LA4;
		result = semrangeaux_463427(c, n, NIM_NIL);
	}
	goto LA1;
	LA4: ;
	{
		Tnode223809* e;
		e = semexprwithtype_455211(c, n, 32);
		{
			if (!((*(*e).typ).kind == ((NU8) 60))) goto LA9;
			result = makerangewithstaticexpr_279087(c, (*(*e).typ).n);
		}
		goto LA7;
		LA9: ;
		{
			if (!((*e).kind >= ((NU8) 6) && (*e).kind <= ((NU8) 15))) goto LA12;
			result = makerangetype_279193(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_463808(c, (*(*e).kindU.S4.sym).ast);
				goto BeforeRet;
			}
			LA21: ;
			{
				Ttype223847* LOC25;
				NIM_BOOL LOC26;
				Tnode223809* LOC29;
				LOC25 = 0;
				LOC25 = lastson_226426((*e).typ);
				LOC26 = 0;
				LOC26 = isordinaltype_253093(LOC25);
				if (!!(LOC26)) goto LA27;
				LOC29 = 0;
				LOC29 = HEX5BHEX5D_224244(n, ((NI) 1));
				localerror_194128((*LOC29).info, ((NU16) 78), ((NimStringDesc*) &TMP3115));
			}
			LA27: ;
			result = makerangewithstaticexpr_279087(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_300965(e);
			LA36: ;
			if (!LOC35) goto LA37;
			{
				NIM_BOOL LOC41;
				Tnode223809* LOC44;
				LOC41 = 0;
				LOC41 = isordinaltype_253093((*e).typ);
				if (!!(LOC41)) goto LA42;
				LOC44 = 0;
				LOC44 = HEX5BHEX5D_224244(n, ((NI) 1));
				localerror_194128((*LOC44).info, ((NU16) 78), ((NimStringDesc*) &TMP3115));
			}
			LA42: ;
			result = makerangewithstaticexpr_279087(c, e);
		}
		goto LA7;
		LA37: ;
		{
			if (!((*e).kind == ((NU8) 2))) goto LA46;
			result = skiptypes_227167((*e).typ, 256);
		}
		goto LA7;
		LA46: ;
		{
			Tnode223809* x;
			x = semconstexpr_456485(c, e);
			{
				Ttype223847* LOC53;
				if (!((*x).kind >= ((NU8) 6) && (*x).kind <= ((NU8) 15))) goto LA51;
				LOC53 = 0;
				LOC53 = skiptypes_227167((*x).typ, 256);
				result = makerangetype_279193(c, IL64(0), (NI64)((*x).kindU.S1.intval - IL64(1)), (*n).info, LOC53);
			}
			goto LA49;
			LA51: ;
			{
				result = skiptypes_227167((*x).typ, 256);
			}
			LA49: ;
		}
		LA7: ;
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, semarray_463918)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	Ttype223847* base;
	result = 0;
	base = 0;
	{
		NI LOC3;
		Ttype223847* indx;
		Tnode223809* LOC6;
		Ttype223847* indxb;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_224244(n, ((NI) 1));
		indx = semarrayindex_463808(c, LOC6);
		indxb = indx;
		{
			if (!((*indxb).kind == ((NU8) 11))) goto LA9;
			indxb = lastson_226426(indxb);
		}
		LA9: ;
		{
			if (!!(((*indxb).kind == ((NU8) 12) || (*indxb).kind == ((NU8) 59) || (*indxb).kind == ((NU8) 60)))) goto LA13;
			{
				NIM_BOOL LOC17;
				LOC17 = 0;
				LOC17 = isordinaltype_253093(indxb);
				if (!!(LOC17)) goto LA18;
				localerror_194128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 78), ((NimStringDesc*) &TMP3115));
			}
			goto LA15;
			LA18: ;
			{
				NIM_BOOL LOC21;
				Ttype223847* LOC24;
				NimStringDesc* LOC25;
				LOC21 = 0;
				LOC21 = enumhasholes_253099(indxb);
				if (!LOC21) goto LA22;
				LOC24 = 0;
				LOC24 = skiptypes_227167(indxb, 1048576);
				LOC25 = 0;
				LOC25 = typetostring_253032(LOC24, ((NU8) 0));
				localerror_194128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 150), LOC25);
			}
			goto LA15;
			LA22: ;
			LA15: ;
		}
		LA13: ;
		base = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
		result = neworprevtype_462895(((NU8) 16), prev, c);
		addsonskipintlit_272729(result, indx);
		addsonskipintlit_272729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		localerror_194128((*n).info, ((NU16) 177), ((NimStringDesc*) &TMP3115));
		result = neworprevtype_462895(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype223847*, semcontainer_463285)(Tcontext278023* c, Tnode223809* n, NU8 kind, NimStringDesc* kindstr, Ttype223847* prev) {
	Ttype223847* result;
	result = 0;
	result = neworprevtype_462895(kind, prev, c);
	{
		NI LOC3;
		Ttype223847* base;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_272729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		Ttype223847* LOC7;
		localerror_194128((*n).info, ((NU16) 176), kindstr);
		LOC7 = 0;
		LOC7 = errortype_279161(c);
		addsonskipintlit_272729(result, LOC7);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype223847*, semrange_463701)(Tcontext278023* c, Tnode223809* n_463704, Ttype223847* prev) {
	Ttype223847* result;
	result = 0;
	result = NIM_NIL;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226387(n_463704);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		{
			Tnode223809* LOC8;
			NIM_BOOL LOC9;
			Tnode223809* LOC12;
			Tnode223809* n;
			LOC8 = 0;
			LOC8 = HEX5BHEX5D_224244(n_463704, ((NI) 1));
			LOC9 = 0;
			LOC9 = isrange_252626(LOC8);
			if (!LOC9) goto LA10;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_224244(n_463704, ((NI) 1));
			result = semrangeaux_463427(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_194128((*(*n_463704).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 100), ((NimStringDesc*) &TMP3115));
			result = neworprevtype_462895(((NU8) 50), prev, c);
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		localerror_194128((*n_463704).info, ((NU16) 176), ((NimStringDesc*) &TMP3123));
		result = neworprevtype_462895(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype223847*, semset_463256)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	result = 0;
	result = neworprevtype_462895(((NU8) 19), prev, c);
	{
		NI LOC3;
		Ttype223847* base;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_272729(result, base);
		{
			if (!((*base).kind == ((NU8) 11))) goto LA8;
			base = lastson_226426(base);
		}
		LA8: ;
		{
			if (!!(((*base).kind == ((NU8) 12)))) goto LA12;
			{
				NIM_BOOL LOC16;
				LOC16 = 0;
				LOC16 = isordinaltype_253093(base);
				if (!!(LOC16)) goto LA17;
				localerror_194128((*n).info, ((NU16) 78), ((NimStringDesc*) &TMP3115));
			}
			goto LA14;
			LA17: ;
			{
				NI64 LOC20;
				LOC20 = 0;
				LOC20 = lengthord_253016(base);
				if (!(IL64(65536) < LOC20)) goto LA21;
				localerror_194128((*n).info, ((NU16) 123), ((NimStringDesc*) &TMP3115));
			}
			goto LA14;
			LA21: ;
			LA14: ;
		}
		LA12: ;
	}
	goto LA1;
	LA4: ;
	{
		Ttype223847* LOC24;
		localerror_194128((*n).info, ((NU16) 176), ((NimStringDesc*) &TMP3124));
		LOC24 = 0;
		LOC24 = errortype_279161(c);
		addsonskipintlit_272729(result, LOC24);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype223847*, semordinal_463955)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	result = 0;
	result = neworprevtype_462895(((NU8) 15), prev, c);
	{
		NI LOC3;
		Ttype223847* base;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		{
			if (!!(((*base).kind == ((NU8) 12)))) goto LA8;
			{
				NIM_BOOL LOC12;
				LOC12 = 0;
				LOC12 = isordinaltype_253093(base);
				if (!!(LOC12)) goto LA13;
				localerror_194128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 78), ((NimStringDesc*) &TMP3115));
			}
			LA13: ;
		}
		LA8: ;
		addsonskipintlit_272729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		localerror_194128((*n).info, ((NU16) 176), ((NimStringDesc*) &TMP3125));
		result = neworprevtype_462895(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype223847*, semvarargs_463298)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	result = 0;
	result = neworprevtype_462895(((NU8) 48), prev, c);
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NI LOC6;
		Ttype223847* base;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_226387(n);
		LOC3 = (LOC4 == ((NI) 2));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = sonslen_226387(n);
		LOC3 = (LOC6 == ((NI) 3));
		LA5: ;
		if (!LOC3) goto LA7;
		base = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_272729(result, base);
		{
			NI LOC11;
			Tident196021* LOC14;
			LOC11 = 0;
			LOC11 = sonslen_226387(n);
			if (!(LOC11 == ((NI) 3))) goto LA12;
			LOC14 = 0;
			LOC14 = considerquotedident_284010((*n).kindU.S6.sons->data[((NI) 2)]);
			asgnRefNoCycle((void**) (&(*result).n), newidentnode_225313(LOC14, (*(*n).kindU.S6.sons->data[((NI) 2)]).info));
		}
		LA12: ;
	}
	goto LA1;
	LA7: ;
	{
		Ttype223847* LOC16;
		localerror_194128((*n).info, ((NU16) 176), ((NimStringDesc*) &TMP3127));
		LOC16 = 0;
		LOC16 = errortype_279161(c);
		addsonskipintlit_272729(result, LOC16);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype223847*, semgenericparamininvocation_468124)(Tcontext278023* c, Tnode223809* n) {
	Ttype223847* result;
	result = 0;
	result = semtypenode_455269(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(Ttype223847*, instgenericcontainer_458151)(Tcontext278023* c, Tlineinfo188352 info, Ttype223847* header, NIM_BOOL allowmetatypes) {
	Ttype223847* result;
	Trepltypevars300577 cl;
	result = 0;
	memset((void*)(&cl), 0, sizeof(cl));
	initidtable_227057((&cl.symmap));
	initidtable_227057((&cl.typemap));
	initidtable_227057((&cl.localcache));
	cl.info = info;
	cl.c = c;
	cl.allowmetatypes = allowmetatypes;
	result = replacetypevarst_300627((&cl), header);
	return result;
}

N_NIMCALL(Ttype223847*, semgeneric_468132)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, Ttype223847* prev) {
	Ttype223847* result;
	Ttype223847* t;
{	result = 0;
	{
		TY191306 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, (&NTI223441)), ((NI) 2));
		LOC5[1] = nsuToLowerStr(LOC6);
		LOC7 = 0;
		LOC7 = nsuFormatOpenArray(((NimStringDesc*) &TMP3128), LOC5, 2);
		localerror_194139((*n).info, LOC7);
		result = neworprevtype_462895(((NU8) 50), prev, c);
		goto BeforeRet;
	}
	LA3: ;
	t = (*s).typ;
	{
		NIM_BOOL LOC10;
		Ttype223847* LOC12;
		LOC10 = 0;
		LOC10 = ((*t).kind == ((NU8) 54));
		if (!(LOC10)) goto LA11;
		LOC12 = 0;
		LOC12 = base_253039(t);
		LOC10 = ((*LOC12).kind == ((NU8) 10));
		LA11: ;
		if (!LOC10) goto LA13;
		t = base_253039(t);
	}
	LA13: ;
	result = neworprevtype_462895(((NU8) 9), prev, c);
	addsonskipintlit_272729(result, t);
	{
		if (!((*t).kind == ((NU8) 30))) goto LA17;
		{
			NI i_468209;
			NI HEX3Atmp_468345;
			NI LOC20;
			NI res_468348;
			i_468209 = 0;
			HEX3Atmp_468345 = 0;
			LOC20 = 0;
			LOC20 = sonslen_226387(n);
			HEX3Atmp_468345 = (NI)(LOC20 - ((NI) 1));
			res_468348 = ((NI) 1);
			{
				while (1) {
					Ttype223847* elem;
					if (!(res_468348 <= HEX3Atmp_468345)) goto LA22;
					i_468209 = res_468348;
					elem = semgenericparamininvocation_468124(c, (*n).kindU.S6.sons->data[i_468209]);
					{
						if (!elem == 0) goto LA25;
						{
							NimStringDesc* LOC31;
							if (!NIM_TRUE) goto LA29;
							LOC31 = 0;
							LOC31 = HEX24_194279(TMP3129);
							internalerror_194191(LOC31);
						}
						LA29: ;
						rawaddson_227498(result, elem);
					}
					goto LA23;
					LA25: ;
					{
						addsonskipintlit_272729(result, elem);
					}
					LA23: ;
					res_468348 += ((NI) 1);
				} LA22: ;
			}
		}
		goto BeforeRet;
	}
	goto LA15;
	LA17: ;
	{
		if (!!(((*t).kind == ((NU8) 10)))) goto LA34;
		localerror_194128((*n).info, ((NU16) 160), (*(*s).name).s);
		result = neworprevtype_462895(((NU8) 50), prev, c);
		goto BeforeRet;
	}
	goto LA15;
	LA34: ;
	{
		Tcandidate386209 m;
		Tnode223809* LOC37;
		NIM_BOOL isconcrete;
		memset((void*)(&m), 0, sizeof(m));
		chckNil((void*)(&m));
		memset((void*)(&m), 0, sizeof(m));
		newcandidate_386480(c, t, (&m));
		m.isnocall = NIM_TRUE;
		LOC37 = 0;
		LOC37 = copytree_228028(n);
		matches_392720(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_253032(t, ((NU8) 0));
			LOC46 = 0;
			LOC46 = describeargs_386974(c, n, ((NI) 1), ((NU8) 0));
			LOC47 = 0;
			LOC47 = describeargs_386974(c, (*t).n, ((NI) 0), ((NU8) 0));
			LOC44 = rawNewString(LOC45->Sup.len + LOC46->Sup.len + LOC47->Sup.len + 44);
appendString(LOC44, ((NimStringDesc*) &TMP3131));
appendString(LOC44, LOC45);
appendString(LOC44, ((NimStringDesc*) &TMP3132));
appendString(LOC44, LOC46);
appendString(LOC44, ((NimStringDesc*) &TMP3136));
appendString(LOC44, LOC47);
appendString(LOC44, ((NimStringDesc*) &TMP3137));
			err = LOC44;
			localerror_194128((*n).info, ((NU16) 4), err);
			result = neworprevtype_462895(((NU8) 50), prev, c);
			goto BeforeRet;
		}
		LA42: ;
		isconcrete = NIM_TRUE;
		{
			NI i_468269;
			NI HEX3Atmp_468353;
			NI LOC49;
			NI res_468356;
			i_468269 = 0;
			HEX3Atmp_468353 = 0;
			LOC49 = 0;
			LOC49 = len_224098(m.call);
			HEX3Atmp_468353 = (LOC49 - 1);
			res_468356 = ((NI) 1);
			{
				while (1) {
					Ttype223847* typ;
					Tnode223809* LOC52;
					if (!(res_468356 <= HEX3Atmp_468353)) goto LA51;
					i_468269 = res_468356;
					LOC52 = 0;
					LOC52 = HEX5BHEX5D_224244(m.call, i_468269);
					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_194279(TMP3129);
								internalerror_194191(LOC67);
							}
							LA65: ;
							rawaddson_227498(result, typ);
						}
						goto LA59;
						LA61: ;
						{
							addsonskipintlit_272729(result, typ);
						}
						LA59: ;
					}
					goto LA53;
					LA57: ;
					{
						typ = skiptypes_227167(typ, 256);
						{
							NIM_BOOL LOC72;
							LOC72 = 0;
							LOC72 = containsgenerictype_262310(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_194279(TMP3129);
								internalerror_194191(LOC83);
							}
							LA81: ;
							rawaddson_227498(result, typ);
						}
						goto LA75;
						LA77: ;
						{
							addsonskipintlit_272729(result, typ);
						}
						LA75: ;
					}
					LA53: ;
					res_468356 += ((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_194128((*n).info, ((NU16) 128), (*(*s).name).s);
				result = neworprevtype_462895(((NU8) 50), prev, c);
			}
			goto LA89;
			LA93: ;
			{
				result = instgenericcontainer_458151(c, (*n).info, result, NIM_FALSE);
			}
			LA89: ;
		}
		LA87: ;
	}
	LA15: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, symchoice_469790)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, NU8 r) {
	Tnode223809* result;
	Tsym223841* a;
	Toverloaditer284431 o;
	NI i;
	result = 0;
	a = 0;
	memset((void*)(&o), 0, sizeof(o));
	i = ((NI) 0);
	a = initoverloaditer_285108((&o), c, n);
	{
		while (1) {
			if (!!((a == NIM_NIL))) goto LA2;
			a = nextoverloaditer_285277((&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_225338(s, (*n).info);
		markused_386253((*n).info, s);
	}
	goto LA7;
	LA11: ;
	{
		NU8 kind;
		Ttype223847* 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_278221(((NU8) 0), c);
		result = newnodeit_225807(kind, (*n).info, LOC21);
		a = initoverloaditer_285108((&o), c, n);
		{
			while (1) {
				Tnode223809* LOC24;
				if (!!((a == NIM_NIL))) goto LA23;
				(*a).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				LOC24 = 0;
				LOC24 = newsymnode_225338(a, (*n).info);
				addson_225819(result, LOC24);
				a = nextoverloaditer_285277((&o), c, n);
			} LA23: ;
		}
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode223809*, semtemplateexpr_456062)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, NU16 flags) {
	Tnode223809* result;
	Tsym223841* LOC1;
	result = 0;
	markused_386253((*n).info, s);
	pushinfocontext_189581((*n).info);
	LOC1 = 0;
	LOC1 = getcurrowner_278258();
	result = evaltemplate_429400(n, s, LOC1);
	{
		if (!!(((flags &(1<<((((NU8) 9))&15)))!=0))) goto LA4;
		result = semaftermacrocall_462631(c, result, s, flags);
	}
	LA4: ;
	popinfocontext_189600();
	return result;
}

N_NIMCALL(Tnode223809*, semgenericstmtsymbol_474924)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, Genericctx474888* ctx) {
	Tnode223809* 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) 16):
	case ((NU8) 6):
	case ((NU8) 15):
	{
		result = symchoice_469790(c, n, s, ((NU8) 1));
	}
	break;
	case ((NU8) 18):
	{
		{
			NIM_BOOL LOC6;
			NIM_BOOL LOC8;
			NI LOC9;
			LOC6 = 0;
			LOC6 = ((393216 &(1<<(((*s).kind)&31)))!=0);
			if (!(LOC6)) goto LA7;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = len_226369((*s).typ);
			LOC8 = (LOC9 == ((NI) 1));
			if (LOC8) goto LA10;
			LOC8 = (((*s).flags &(1<<((((NU8) 25))&31)))!=0);
			LA10: ;
			LOC6 = LOC8;
			LA7: ;
			if (!LOC6) goto LA11;
			result = semtemplateexpr_456062(c, n, s, 512);
			result = semgenericstmt_474899(c, result, 0, ctx);
		}
		goto LA4;
		LA11: ;
		{
			result = symchoice_469790(c, n, s, ((NU8) 1));
		}
		LA4: ;
	}
	break;
	case ((NU8) 17):
	{
		{
			NIM_BOOL LOC17;
			NIM_BOOL LOC19;
			NI LOC20;
			LOC17 = 0;
			LOC17 = ((393216 &(1<<(((*s).kind)&31)))!=0);
			if (!(LOC17)) goto LA18;
			LOC19 = 0;
			LOC20 = 0;
			LOC20 = len_226369((*s).typ);
			LOC19 = (LOC20 == ((NI) 1));
			if (LOC19) goto LA21;
			LOC19 = (((*s).flags &(1<<((((NU8) 25))&31)))!=0);
			LA21: ;
			LOC17 = LOC19;
			LA18: ;
			if (!LOC17) goto LA22;
			result = semmacroexpr_456073(c, n, n, s, 512);
			result = semgenericstmt_474899(c, result, 0, ctx);
		}
		goto LA15;
		LA22: ;
		{
			result = symchoice_469790(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_292736(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_292736(s, (*n).info);
		}
		goto LA40;
		LA44: ;
		{
			result = n;
		}
		LA40: ;
	}
	break;
	default:
	{
		result = newsymnode_225338(s, (*n).info);
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode223809*, lookup_476204)(Tcontext278023* c, Tnode223809* n, NU8 flags, Genericctx474888* ctx) {
	Tnode223809* result;
	Tident196021* ident;
	Tsym223841* s;
	Tsym223841* LOC1;
	result = 0;
	result = n;
	ident = considerquotedident_284010(n);
	LOC1 = 0;
	LOC1 = searchinscopes_284205(c, ident);
	s = skipalias_284150(LOC1, n);
	{
		if (!(s == NIM_NIL)) goto LA4;
		{
			NIM_BOOL LOC8;
			NIM_BOOL LOC9;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = contains_220829((*ctx).tomixin, (*ident).Sup.id);
			LOC8 = !(LOC9);
			if (!(LOC8)) goto LA10;
			LOC8 = !(((flags &(1<<((((NU8) 2))&7)))!=0));
			LA10: ;
			if (!LOC8) goto LA11;
			localerror_194128((*n).info, ((NU16) 63), (*ident).s);
		}
		LA11: ;
	}
	goto LA2;
	LA4: ;
	{
		{
			if (!((flags &(1<<((((NU8) 0))&7)))!=0)) goto LA16;
			result = symchoice_469790(c, n, s, ((NU8) 0));
		}
		goto LA14;
		LA16: ;
		{
			NIM_BOOL LOC19;
			LOC19 = 0;
			LOC19 = contains_220829((*ctx).tomixin, (*(*s).name).Sup.id);
			if (!LOC19) goto LA20;
			result = symchoice_469790(c, n, s, ((NU8) 2));
		}
		goto LA14;
		LA20: ;
		{
			result = semgenericstmtsymbol_474924(c, n, s, ctx);
		}
		LA14: ;
	}
	LA2: ;
	return result;
}

N_NIMCALL(Tnode223809*, newdot_476251)(Tnode223809* n, Tnode223809* b) {
	Tnode223809* result;
	result = 0;
	result = newnodei_225351(((NU8) 45), (*n).info);
	add_224165(result, (*n).kindU.S6.sons->data[((NI) 0)]);
	add_224165(result, b);
	return result;
}

N_NIMCALL(Tnode223809*, fuzzylookup_476262)(Tcontext278023* c, Tnode223809* n_476265, NU8 flags, Genericctx474888* ctx, NIM_BOOL* ismacro) {
	Tnode223809* result;
	NU8 luf;
	Tsym223841* s_476615;
	result = 0;
	{
		if (!!(((flags &(1<<((((NU8) 2))&7)))!=0))) goto LA3;
		luf = 2;
	}
	goto LA1;
	LA3: ;
	{
		luf = 0;
	}
	LA1: ;
	s_476615 = qualifiedlookup_284864(c, n_476265, luf);
	{
		if (!!((s_476615 == NIM_NIL))) goto LA8;
		result = semgenericstmtsymbol_474924(c, n_476265, s_476615, ctx);
	}
	goto LA6;
	LA8: ;
	{
		Tnode223809* n;
		Tident196021* ident;
		Tsym223841* s;
		Tsym223841* LOC11;
		asgnRefNoCycle((void**) (&(*n_476265).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_474899(c, (*n_476265).kindU.S6.sons->data[((NI) 0)], flags, ctx));
		result = n_476265;
		n = HEX5BHEX5D_224244(n_476265, ((NI) 1));
		ident = considerquotedident_284010(n);
		LOC11 = 0;
		LOC11 = searchinscopes_284205(c, ident);
		s = skipalias_284150(LOC11, n);
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = !((s == NIM_NIL));
			if (!(LOC14)) goto LA15;
			LOC14 = ((520192 &(1<<(((*s).kind)&31)))!=0);
			LA15: ;
			if (!LOC14) goto LA16;
			(*ismacro) = ((393216 &(1<<(((*s).kind)&31)))!=0);
			{
				Tnode223809* LOC22;
				if (!((flags &(1<<((((NU8) 0))&7)))!=0)) goto LA20;
				LOC22 = 0;
				LOC22 = symchoice_469790(c, n, s, ((NU8) 0));
				result = newdot_476251(result, LOC22);
			}
			goto LA18;
			LA20: ;
			{
				NIM_BOOL LOC24;
				Tnode223809* LOC27;
				LOC24 = 0;
				LOC24 = contains_220829((*ctx).tomixin, (*(*s).name).Sup.id);
				if (!LOC24) goto LA25;
				LOC27 = 0;
				LOC27 = symchoice_469790(c, n, s, ((NU8) 2));
				result = newdot_476251(result, LOC27);
			}
			goto LA18;
			LA25: ;
			{
				Tnode223809* syms;
				syms = semgenericstmtsymbol_474924(c, n, s, ctx);
				{
					Tnode223809* choice;
					if (!((*syms).kind == ((NU8) 3))) goto LA31;
					choice = symchoice_469790(c, n, s, ((NU8) 2));
					(*choice).kind = ((NU8) 56);
					result = newdot_476251(result, choice);
				}
				goto LA29;
				LA31: ;
				{
					result = newdot_476251(result, syms);
				}
				LA29: ;
			}
			LA18: ;
		}
		LA16: ;
	}
	LA6: ;
	return result;
}

N_NIMCALL(Tnode223809*, semmixinstmt_469995)(Tcontext278023* c, Tnode223809* n, Intset220056* tomixin) {
	Tnode223809* result;
	result = 0;
	{
		NI i_470021;
		NI HEX3Atmp_470024;
		NI LOC2;
		NI res_470027;
		i_470021 = 0;
		HEX3Atmp_470024 = 0;
		LOC2 = 0;
		LOC2 = len_224098(n);
		HEX3Atmp_470024 = (LOC2 - 1);
		res_470027 = ((NI) 0);
		{
			while (1) {
				Tident196021* LOC5;
				if (!(res_470027 <= HEX3Atmp_470024)) goto LA4;
				i_470021 = res_470027;
				LOC5 = 0;
				LOC5 = considerquotedident_284010((*n).kindU.S6.sons->data[i_470021]);
				incl_220856(tomixin, (*LOC5).Sup.id);
				res_470027 += ((NI) 1);
			} LA4: ;
		}
	}
	result = newnodei_225351(((NU8) 1), (*n).info);
	return result;
}

N_NIMCALL(Tnode223809*, semgenericstmtscope_474906)(Tcontext278023* c, Tnode223809* n, NU8 flags, Genericctx474888* ctx) {
	Tnode223809* result;
	Tscope223835* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	result = semgenericstmt_474899(c, n, flags, ctx);
	closescope_284111(c);
	return result;
}

N_NIMCALL(Tsym223841*, newsyms_455904)(NU8 kind, Tnode223809* n, Tcontext278023* c) {
	Tsym223841* result;
	Tident196021* LOC1;
	Tsym223841* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = considerquotedident_284010(n);
	LOC2 = 0;
	LOC2 = getcurrowner_278258();
	result = newsym_224656(kind, LOC1, LOC2, (*n).info);
	return result;
}

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

N_NIMCALL(void, addtempdecl_476692)(Tcontext278023* c, Tnode223809* n, NU8 kind) {
	Tsym223841* s;
	Tnode223809* LOC1;
	LOC1 = 0;
	LOC1 = getidentnode_474878(n);
	s = newsyms_455904(((NU8) 0), LOC1, c);
	addprelimdecl_284619(c, s);
}

N_NIMCALL(Tnode223809*, semgenericstmt_474899)(Tcontext278023* c, Tnode223809* n, NU8 flags_474903, Genericctx474888* ctx) {
	Tnode223809* result;
	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	case ((NU8) 53):
	{
		result = lookup_476204(c, n, flags_474903, ctx);
	}
	break;
	case ((NU8) 45):
	{
		NIM_BOOL dummy;
		dummy = 0;
		result = fuzzylookup_476262(c, n, flags_474903, ctx, (&dummy));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 55):
	{
		result = semgenericstmt_474899(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_474903 | 1), ctx);
	}
	break;
	case ((NU8) 123):
	{
		result = semmixinstmt_469995(c, n, (&(*ctx).tomixin));
	}
	break;
	case ((NU8) 27):
	case ((NU8) 32):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		Tnode223809* fn;
		Tsym223841* s;
		NI first;
		NIM_BOOL mixincontext;
		NU8 flags;
		checkminsonslen_279270(n, ((NI) 1));
		fn = (*n).kindU.S6.sons->data[((NI) 0)];
		s = qualifiedlookup_284864(c, fn, 0);
		{
			NIM_BOOL LOC9;
			NIM_BOOL LOC10;
			NIM_BOOL LOC11;
			Tident196021* LOC15;
			NIM_BOOL LOC16;
			NimStringDesc* LOC19;
			LOC9 = 0;
			LOC10 = 0;
			LOC11 = 0;
			LOC11 = (s == NIM_NIL);
			if (!(LOC11)) goto LA12;
			LOC11 = !(((flags_474903 &(1<<((((NU8) 2))&7)))!=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_284010(fn);
			LOC16 = 0;
			LOC16 = contains_220829((*ctx).tomixin, (*LOC15).Sup.id);
			LOC9 = !(LOC16);
			LA14: ;
			if (!LOC9) goto LA17;
			LOC19 = 0;
			LOC19 = rendertree_245059(fn, 0);
			localerror_194128((*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_220829((*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) 17):
			{
				{
					NIM_BOOL LOC33;
					NIM_BOOL LOC35;
					NI LOC36;
					LOC33 = 0;
					LOC33 = ((393216 &(1<<(((*s).kind)&31)))!=0);
					if (!(LOC33)) goto LA34;
					LOC35 = 0;
					LOC36 = 0;
					LOC36 = len_226369((*s).typ);
					LOC35 = (LOC36 == ((NI) 1));
					if (LOC35) goto LA37;
					LOC35 = (((*s).flags &(1<<((((NU8) 25))&31)))!=0);
					LA37: ;
					LOC33 = LOC35;
					LA34: ;
					if (!LOC33) goto LA38;
					result = semmacroexpr_456073(c, n, n, s, 512);
					result = semgenericstmt_474899(c, result, 0, ctx);
				}
				goto LA31;
				LA38: ;
				{
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), symchoice_469790(c, fn, s, scoption));
					result = n;
				}
				LA31: ;
				mixincontext = NIM_TRUE;
			}
			break;
			case ((NU8) 18):
			{
				{
					NIM_BOOL LOC44;
					NIM_BOOL LOC46;
					NI LOC47;
					LOC44 = 0;
					LOC44 = ((393216 &(1<<(((*s).kind)&31)))!=0);
					if (!(LOC44)) goto LA45;
					LOC46 = 0;
					LOC47 = 0;
					LOC47 = len_226369((*s).typ);
					LOC46 = (LOC47 == ((NI) 1));
					if (LOC46) goto LA48;
					LOC46 = (((*s).flags &(1<<((((NU8) 25))&31)))!=0);
					LA48: ;
					LOC44 = LOC46;
					LA45: ;
					if (!LOC44) goto LA49;
					result = semtemplateexpr_456062(c, n, s, 512);
					result = semgenericstmt_474899(c, result, 0, ctx);
				}
				goto LA42;
				LA49: ;
				{
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), symchoice_469790(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) 16):
			case ((NU8) 6):
			case ((NU8) 15):
			{
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), symchoice_469790(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_224098(n);
					LOC57 = (LOC59 == ((NI) 2));
					LA58: ;
					LOC56 = LOC57;
					if (!(LOC56)) goto LA60;
					LOC56 = eqStrings((*(*s).name).s, ((NimStringDesc*) &TMP3138));
					LA60: ;
					if (!LOC56) goto LA61;
					add_224165(result, (*ctx).bracketexpr);
				}
				LA61: ;
				first = ((NI) 1);
			}
			break;
			case ((NU8) 4):
			{
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnodetypedesc_292736(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_292736(s, (*fn).info));
					first = ((NI) 1);
				}
				LA69: ;
			}
			break;
			default:
			{
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_225338(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_476262(c, fn, flags_474903, ctx, (&mixincontext)));
			first = ((NI) 1);
		}
		goto LA20;
		LA73: ;
		LA20: ;
		{
			if (!mixincontext) goto LA77;
			flags = (flags_474903 | 4);
		}
		goto LA75;
		LA77: ;
		{
			flags = flags_474903;
		}
		LA75: ;
		{
			NI i_478038;
			NI HEX3Atmp_478848;
			NI LOC81;
			NI res_478851;
			i_478038 = 0;
			HEX3Atmp_478848 = 0;
			LOC81 = 0;
			LOC81 = sonslen_226387(result);
			HEX3Atmp_478848 = (NI)(LOC81 - ((NI) 1));
			res_478851 = first;
			{
				while (1) {
					if (!(res_478851 <= HEX3Atmp_478848)) goto LA83;
					i_478038 = res_478851;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_478038]), semgenericstmt_474899(c, (*result).kindU.S6.sons->data[i_478038], flags, ctx));
					res_478851 += ((NI) 1);
				} LA83: ;
			}
		}
	}
	break;
	case ((NU8) 40):
	{
		Tident196021* LOC85;
		Tnode223809* LOC86;
		result = newnodei_225351(((NU8) 27), (*n).info);
		LOC85 = 0;
		LOC85 = getident_196463(((NimStringDesc*) &TMP3139));
		LOC86 = 0;
		LOC86 = newidentnode_225313(LOC85, (*n).info);
		add_224165(result, LOC86);
		{
			NI i_478069;
			Slice90369 HEX3Atmp_478856;
			NI LOC88;
			i_478069 = 0;
			memset((void*)(&HEX3Atmp_478856), 0, sizeof(HEX3Atmp_478856));
			LOC88 = 0;
			LOC88 = len_224098(n);
			HEX3Atmp_478856 = HEX2EHEX2E_105290(((NI) 0), (LOC88 - 1));
			{
				NI x_478860;
				NI HEX3Atmp_478862;
				NI HEX3Atmp_478864;
				NI res_478866;
				x_478860 = 0;
				HEX3Atmp_478862 = 0;
				HEX3Atmp_478864 = 0;
				HEX3Atmp_478862 = HEX3Atmp_478856.a;
				HEX3Atmp_478864 = HEX3Atmp_478856.b;
				res_478866 = HEX3Atmp_478862;
				{
					while (1) {
						Tnode223809* LOC92;
						if (!(res_478866 <= HEX3Atmp_478864)) goto LA91;
						x_478860 = res_478866;
						i_478069 = x_478860;
						LOC92 = 0;
						LOC92 = HEX5BHEX5D_224244(n, i_478069);
						add_224165(result, LOC92);
						res_478866 += ((NI) 1);
					} LA91: ;
				}
			}
		}
		result = semgenericstmt_474899(c, result, flags_474903, ctx);
	}
	break;
	case ((NU8) 42):
	{
		Tident196021* LOC94;
		Tnode223809* LOC95;
		Tnode223809* old_478102;
		result = newnodei_225351(((NU8) 27), (*n).info);
		LOC94 = 0;
		LOC94 = getident_196463(((NimStringDesc*) &TMP3117));
		LOC95 = 0;
		LOC95 = newidentnode_225313(LOC94, (*n).info);
		add_224165(result, LOC95);
		{
			NI i_478099;
			Slice90369 HEX3Atmp_478871;
			NI LOC97;
			i_478099 = 0;
			memset((void*)(&HEX3Atmp_478871), 0, sizeof(HEX3Atmp_478871));
			LOC97 = 0;
			LOC97 = len_224098(n);
			HEX3Atmp_478871 = HEX2EHEX2E_105290(((NI) 0), (LOC97 - 1));
			{
				NI x_478875;
				NI HEX3Atmp_478877;
				NI HEX3Atmp_478879;
				NI res_478881;
				x_478875 = 0;
				HEX3Atmp_478877 = 0;
				HEX3Atmp_478879 = 0;
				HEX3Atmp_478877 = HEX3Atmp_478871.a;
				HEX3Atmp_478879 = HEX3Atmp_478871.b;
				res_478881 = HEX3Atmp_478877;
				{
					while (1) {
						Tnode223809* LOC101;
						if (!(res_478881 <= HEX3Atmp_478879)) goto LA100;
						x_478875 = res_478881;
						i_478099 = x_478875;
						LOC101 = 0;
						LOC101 = HEX5BHEX5D_224244(n, i_478099);
						add_224165(result, LOC101);
						res_478881 += ((NI) 1);
					} LA100: ;
				}
			}
		}
		old_478102 = (*ctx).bracketexpr;
		unsureAsgnRef((void**) (&(*ctx).bracketexpr), (*n).kindU.S6.sons->data[((NI) 0)]);
		result = semgenericstmt_474899(c, result, flags_474903, ctx);
		unsureAsgnRef((void**) (&(*ctx).bracketexpr), old_478102);
	}
	break;
	case ((NU8) 73):
	case ((NU8) 74):
	{
		Tnode223809* a;
		Tnode223809* b;
		NU8 k;
		checksonslen_279260(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):
		{
			Tident196021* LOC104;
			Tnode223809* LOC105;
			result = newnodei_225351(((NU8) 27), (*n).info);
			LOC104 = 0;
			LOC104 = getident_196463(((NimStringDesc*) &TMP3140));
			LOC105 = 0;
			LOC105 = newidentnode_225313(LOC104, (*n).info);
			add_224165(result, LOC105);
			{
				NI i_478137;
				Slice90369 HEX3Atmp_478886;
				NI LOC107;
				i_478137 = 0;
				memset((void*)(&HEX3Atmp_478886), 0, sizeof(HEX3Atmp_478886));
				LOC107 = 0;
				LOC107 = len_224098(a);
				HEX3Atmp_478886 = HEX2EHEX2E_105290(((NI) 0), (LOC107 - 1));
				{
					NI x_478890;
					NI HEX3Atmp_478892;
					NI HEX3Atmp_478894;
					NI res_478896;
					x_478890 = 0;
					HEX3Atmp_478892 = 0;
					HEX3Atmp_478894 = 0;
					HEX3Atmp_478892 = HEX3Atmp_478886.a;
					HEX3Atmp_478894 = HEX3Atmp_478886.b;
					res_478896 = HEX3Atmp_478892;
					{
						while (1) {
							Tnode223809* LOC111;
							if (!(res_478896 <= HEX3Atmp_478894)) goto LA110;
							x_478890 = res_478896;
							i_478137 = x_478890;
							LOC111 = 0;
							LOC111 = HEX5BHEX5D_224244(a, i_478137);
							add_224165(result, LOC111);
							res_478896 += ((NI) 1);
						} LA110: ;
					}
				}
			}
			add_224165(result, b);
			result = semgenericstmt_474899(c, result, flags_474903, ctx);
		}
		break;
		case ((NU8) 42):
		{
			Tident196021* LOC113;
			Tnode223809* LOC114;
			Tnode223809* old_478172;
			result = newnodei_225351(((NU8) 27), (*n).info);
			LOC113 = 0;
			LOC113 = getident_196463(((NimStringDesc*) &TMP3141));
			LOC114 = 0;
			LOC114 = newidentnode_225313(LOC113, (*n).info);
			add_224165(result, LOC114);
			{
				NI i_478168;
				Slice90369 HEX3Atmp_478901;
				NI LOC116;
				i_478168 = 0;
				memset((void*)(&HEX3Atmp_478901), 0, sizeof(HEX3Atmp_478901));
				LOC116 = 0;
				LOC116 = len_224098(a);
				HEX3Atmp_478901 = HEX2EHEX2E_105290(((NI) 0), (LOC116 - 1));
				{
					NI x_478905;
					NI HEX3Atmp_478907;
					NI HEX3Atmp_478909;
					NI res_478911;
					x_478905 = 0;
					HEX3Atmp_478907 = 0;
					HEX3Atmp_478909 = 0;
					HEX3Atmp_478907 = HEX3Atmp_478901.a;
					HEX3Atmp_478909 = HEX3Atmp_478901.b;
					res_478911 = HEX3Atmp_478907;
					{
						while (1) {
							Tnode223809* LOC120;
							if (!(res_478911 <= HEX3Atmp_478909)) goto LA119;
							x_478905 = res_478911;
							i_478168 = x_478905;
							LOC120 = 0;
							LOC120 = HEX5BHEX5D_224244(a, i_478168);
							add_224165(result, LOC120);
							res_478911 += ((NI) 1);
						} LA119: ;
					}
				}
			}
			add_224165(result, b);
			old_478172 = (*ctx).bracketexpr;
			unsureAsgnRef((void**) (&(*ctx).bracketexpr), (*a).kindU.S6.sons->data[((NI) 0)]);
			result = semgenericstmt_474899(c, result, flags_474903, ctx);
			unsureAsgnRef((void**) (&(*ctx).bracketexpr), old_478172);
		}
		break;
		default:
		{
			{
				NI i_478186;
				NI HEX3Atmp_478916;
				NI LOC123;
				NI res_478919;
				i_478186 = 0;
				HEX3Atmp_478916 = 0;
				LOC123 = 0;
				LOC123 = sonslen_226387(n);
				HEX3Atmp_478916 = (NI)(LOC123 - ((NI) 1));
				res_478919 = ((NI) 0);
				{
					while (1) {
						if (!(res_478919 <= HEX3Atmp_478916)) goto LA125;
						i_478186 = res_478919;
						asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_478186]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[i_478186], flags_474903, ctx));
						res_478919 += ((NI) 1);
					} LA125: ;
				}
			}
		}
		break;
		}
	}
	break;
	case ((NU8) 92):
	{
		{
			NI i_478201;
			NI HEX3Atmp_478924;
			NI LOC128;
			NI res_478927;
			i_478201 = 0;
			HEX3Atmp_478924 = 0;
			LOC128 = 0;
			LOC128 = sonslen_226387(n);
			HEX3Atmp_478924 = (NI)(LOC128 - ((NI) 1));
			res_478927 = ((NI) 0);
			{
				while (1) {
					if (!(res_478927 <= HEX3Atmp_478924)) goto LA130;
					i_478201 = res_478927;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_478201]), semgenericstmtscope_474906(c, (*n).kindU.S6.sons->data[i_478201], flags_474903, ctx));
					res_478927 += ((NI) 1);
				} LA130: ;
			}
		}
	}
	break;
	case ((NU8) 93):
	{
		{
			NI i_478216;
			NI HEX3Atmp_478932;
			NI LOC133;
			NI res_478935;
			i_478216 = 0;
			HEX3Atmp_478932 = 0;
			LOC133 = 0;
			LOC133 = sonslen_226387(n);
			HEX3Atmp_478932 = (NI)(LOC133 - ((NI) 1));
			res_478935 = ((NI) 0);
			{
				while (1) {
					if (!(res_478935 <= HEX3Atmp_478932)) goto LA135;
					i_478216 = res_478935;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_478216]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[i_478216], (flags_474903 | 4), ctx));
					res_478935 += ((NI) 1);
				} LA135: ;
			}
		}
	}
	break;
	case ((NU8) 96):
	{
		Tscope223835* LOC137;
		LOC137 = 0;
		LOC137 = openscope_284091(c);
		{
			NI i_478244;
			NI HEX3Atmp_478940;
			NI LOC139;
			NI res_478943;
			i_478244 = 0;
			HEX3Atmp_478940 = 0;
			LOC139 = 0;
			LOC139 = sonslen_226387(n);
			HEX3Atmp_478940 = (NI)(LOC139 - ((NI) 1));
			res_478943 = ((NI) 0);
			{
				while (1) {
					if (!(res_478943 <= HEX3Atmp_478940)) goto LA141;
					i_478244 = res_478943;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_478244]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[i_478244], flags_474903, ctx));
					res_478943 += ((NI) 1);
				} LA141: ;
			}
		}
		closescope_284111(c);
	}
	break;
	case ((NU8) 97):
	{
		Tscope223835* LOC143;
		LOC143 = 0;
		LOC143 = openscope_284091(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[((NI) 0)], flags_474903, ctx));
		{
			NI i_478261;
			NI HEX3Atmp_478956;
			NI LOC145;
			NI res_478959;
			i_478261 = 0;
			HEX3Atmp_478956 = 0;
			LOC145 = 0;
			LOC145 = sonslen_226387(n);
			HEX3Atmp_478956 = (NI)(LOC145 - ((NI) 1));
			res_478959 = ((NI) 1);
			{
				while (1) {
					Tnode223809* a;
					NI L;
					if (!(res_478959 <= HEX3Atmp_478956)) goto LA147;
					i_478261 = res_478959;
					a = (*n).kindU.S6.sons->data[i_478261];
					checkminsonslen_279270(a, ((NI) 1));
					L = sonslen_226387(a);
					{
						NI j_478277;
						NI HEX3Atmp_478949;
						NI res_478952;
						j_478277 = 0;
						HEX3Atmp_478949 = 0;
						HEX3Atmp_478949 = (NI)(L - ((NI) 2));
						res_478952 = ((NI) 0);
						{
							while (1) {
								if (!(res_478952 <= HEX3Atmp_478949)) goto LA150;
								j_478277 = res_478952;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_478277]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[j_478277], flags_474903, ctx));
								res_478952 += ((NI) 1);
							} LA150: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmtscope_474906(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_474903, ctx));
					res_478959 += ((NI) 1);
				} LA147: ;
			}
		}
		closescope_284111(c);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		NI L;
		Tscope223835* LOC152;
		L = sonslen_226387(n);
		LOC152 = 0;
		LOC152 = openscope_284091(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))], flags_474903, ctx));
		{
			NI i_478297;
			NI HEX3Atmp_478964;
			NI res_478967;
			i_478297 = 0;
			HEX3Atmp_478964 = 0;
			HEX3Atmp_478964 = (NI)(L - ((NI) 3));
			res_478967 = ((NI) 0);
			{
				while (1) {
					if (!(res_478967 <= HEX3Atmp_478964)) goto LA155;
					i_478297 = res_478967;
					addtempdecl_476692(c, (*n).kindU.S6.sons->data[i_478297], ((NU8) 21));
					res_478967 += ((NI) 1);
				} LA155: ;
			}
		}
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_474903, ctx));
		closescope_284111(c);
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	case ((NU8) 129):
	{
		Tscope223835* LOC157;
		checksonslen_279260(n, ((NI) 2));
		LOC157 = 0;
		LOC157 = openscope_284091(c);
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA160;
			addtempdecl_476692(c, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 22));
		}
		LA160: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[((NI) 1)], flags_474903, ctx));
		closescope_284111(c);
	}
	break;
	case ((NU8) 106):
	{
		checkminsonslen_279270(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmtscope_474906(c, (*n).kindU.S6.sons->data[((NI) 0)], flags_474903, ctx));
		{
			NI i_478328;
			NI HEX3Atmp_478980;
			NI LOC164;
			NI res_478983;
			i_478328 = 0;
			HEX3Atmp_478980 = 0;
			LOC164 = 0;
			LOC164 = sonslen_226387(n);
			HEX3Atmp_478980 = (NI)(LOC164 - ((NI) 1));
			res_478983 = ((NI) 1);
			{
				while (1) {
					Tnode223809* a;
					NI L;
					if (!(res_478983 <= HEX3Atmp_478980)) goto LA166;
					i_478328 = res_478983;
					a = (*n).kindU.S6.sons->data[i_478328];
					checkminsonslen_279270(a, ((NI) 1));
					L = sonslen_226387(a);
					{
						NI j_478344;
						NI HEX3Atmp_478973;
						NI res_478976;
						j_478344 = 0;
						HEX3Atmp_478973 = 0;
						HEX3Atmp_478973 = (NI)(L - ((NI) 2));
						res_478976 = ((NI) 0);
						{
							while (1) {
								if (!(res_478976 <= HEX3Atmp_478973)) goto LA169;
								j_478344 = res_478976;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_478344]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[j_478344], (flags_474903 | 2), ctx));
								res_478976 += ((NI) 1);
							} LA169: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmtscope_474906(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_474903, ctx));
					res_478983 += ((NI) 1);
				} LA166: ;
			}
		}
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		{
			NI i_478374;
			NI HEX3Atmp_478997;
			NI LOC172;
			NI res_479000;
			i_478374 = 0;
			HEX3Atmp_478997 = 0;
			LOC172 = 0;
			LOC172 = sonslen_226387(n);
			HEX3Atmp_478997 = (NI)(LOC172 - ((NI) 1));
			res_479000 = ((NI) 0);
			{
				while (1) {
					if (!(res_479000 <= HEX3Atmp_478997)) goto LA174;
					i_478374 = res_479000;
					{
						Tnode223809* a;
						NI L;
						a = (*n).kindU.S6.sons->data[i_478374];
						{
							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_279240(a);
						}
						LA184: ;
						checkminsonslen_279270(a, ((NI) 3));
						L = sonslen_226387(a);
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_474903 | 2), ctx));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_474903, ctx));
						{
							NI j_478434;
							NI HEX3Atmp_478990;
							NI res_478993;
							j_478434 = 0;
							HEX3Atmp_478990 = 0;
							HEX3Atmp_478990 = (NI)(L - ((NI) 3));
							res_478993 = ((NI) 0);
							{
								while (1) {
									Tnode223809* LOC189;
									if (!(res_478993 <= HEX3Atmp_478990)) goto LA188;
									j_478434 = res_478993;
									LOC189 = 0;
									LOC189 = getidentnode_474878((*a).kindU.S6.sons->data[j_478434]);
									addtempdecl_476692(c, LOC189, ((NU8) 8));
									res_478993 += ((NI) 1);
								} LA188: ;
							}
						}
					} LA175: ;
					res_479000 += ((NI) 1);
				} LA174: ;
			}
		}
	}
	break;
	case ((NU8) 75):
	{
		{
			NI i_478448;
			NI HEX3Atmp_479013;
			NI LOC192;
			NI res_479016;
			i_478448 = 0;
			HEX3Atmp_479013 = 0;
			LOC192 = 0;
			LOC192 = sonslen_226387(n);
			HEX3Atmp_479013 = (NI)(LOC192 - ((NI) 1));
			res_479016 = ((NI) 0);
			{
				while (1) {
					Tnode223809* a;
					NI L;
					if (!(res_479016 <= HEX3Atmp_479013)) goto LA194;
					i_478448 = res_479016;
					a = (*n).kindU.S6.sons->data[i_478448];
					{
						if (!!(((*a).kind == ((NU8) 35)))) goto LA197;
						illformedast_279240(a);
					}
					LA197: ;
					checkminsonslen_279270(a, ((NI) 3));
					L = sonslen_226387(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_474903 | 2), ctx));
					{
						NI j_478488;
						NI HEX3Atmp_479006;
						NI res_479009;
						j_478488 = 0;
						HEX3Atmp_479006 = 0;
						HEX3Atmp_479006 = (NI)(L - ((NI) 3));
						res_479009 = ((NI) 0);
						{
							while (1) {
								Tnode223809* LOC202;
								if (!(res_479009 <= HEX3Atmp_479006)) goto LA201;
								j_478488 = res_479009;
								LOC202 = 0;
								LOC202 = getidentnode_474878((*a).kindU.S6.sons->data[j_478488]);
								addtempdecl_476692(c, LOC202, ((NU8) 7));
								res_479009 += ((NI) 1);
							} LA201: ;
						}
					}
					res_479016 += ((NI) 1);
				} LA194: ;
			}
		}
	}
	break;
	case ((NU8) 101):
	{
		{
			NI i_478502;
			NI HEX3Atmp_479022;
			NI LOC205;
			NI res_479025;
			i_478502 = 0;
			HEX3Atmp_479022 = 0;
			LOC205 = 0;
			LOC205 = sonslen_226387(n);
			HEX3Atmp_479022 = (NI)(LOC205 - ((NI) 1));
			res_479025 = ((NI) 0);
			{
				while (1) {
					if (!(res_479025 <= HEX3Atmp_479022)) goto LA207;
					i_478502 = res_479025;
					{
						Tnode223809* a;
						Tnode223809* LOC217;
						a = (*n).kindU.S6.sons->data[i_478502];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA211;
							goto LA208;
						}
						LA211: ;
						{
							if (!!(((*a).kind == ((NU8) 102)))) goto LA215;
							illformedast_279240(a);
						}
						LA215: ;
						checksonslen_279260(a, ((NI) 3));
						LOC217 = 0;
						LOC217 = getidentnode_474878((*a).kindU.S6.sons->data[((NI) 0)]);
						addtempdecl_476692(c, LOC217, ((NU8) 10));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[((NI) 1)], (flags_474903 | 2), ctx));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[((NI) 2)], flags_474903, ctx));
					} LA208: ;
					res_479025 += ((NI) 1);
				} LA207: ;
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		{
			NI i_478553;
			NI HEX3Atmp_479031;
			NI LOC220;
			NI res_479034;
			i_478553 = 0;
			HEX3Atmp_479031 = 0;
			LOC220 = 0;
			LOC220 = sonslen_226387(n);
			HEX3Atmp_479031 = (NI)(LOC220 - ((NI) 1));
			res_479034 = ((NI) 0);
			{
				while (1) {
					if (!(res_479034 <= HEX3Atmp_479031)) goto LA222;
					i_478553 = res_479034;
					{
						Tnode223809* a;
						Tnode223809* LOC232;
						a = (*n).kindU.S6.sons->data[i_478553];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA226;
							goto LA223;
						}
						LA226: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA230;
							illformedast_279240(a);
						}
						LA230: ;
						checksonslen_279260(a, ((NI) 3));
						LOC232 = 0;
						LOC232 = getidentnode_474878((*a).kindU.S6.sons->data[((NI) 0)]);
						addtempdecl_476692(c, LOC232, ((NU8) 7));
					} LA223: ;
					res_479034 += ((NI) 1);
				} LA222: ;
			}
		}
		{
			NI i_478587;
			NI HEX3Atmp_479040;
			NI LOC234;
			NI res_479043;
			i_478587 = 0;
			HEX3Atmp_479040 = 0;
			LOC234 = 0;
			LOC234 = sonslen_226387(n);
			HEX3Atmp_479040 = (NI)(LOC234 - ((NI) 1));
			res_479043 = ((NI) 0);
			{
				while (1) {
					if (!(res_479043 <= HEX3Atmp_479040)) goto LA236;
					i_478587 = res_479043;
					{
						Tnode223809* a;
						a = (*n).kindU.S6.sons->data[i_478587];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA240;
							goto LA237;
						}
						LA240: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA244;
							illformedast_279240(a);
						}
						LA244: ;
						checksonslen_279260(a, ((NI) 3));
						{
							Tscope223835* LOC250;
							if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA248;
							LOC250 = 0;
							LOC250 = openscope_284091(c);
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[((NI) 1)], flags_474903, ctx));
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[((NI) 2)], (flags_474903 | 2), ctx));
							closescope_284111(c);
						}
						goto LA246;
						LA248: ;
						{
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[((NI) 2)], (flags_474903 | 2), ctx));
						}
						LA246: ;
					} LA237: ;
					res_479043 += ((NI) 1);
				} LA236: ;
			}
		}
	}
	break;
	case ((NU8) 150):
	{
		{
			NI LOC255;
			LOC255 = 0;
			LOC255 = sonslen_226387(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_474899(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_474903 | 2), ctx));
			}
			LA260: ;
			{
				NI i_478688;
				NI HEX3Atmp_479049;
				NI LOC263;
				NI res_479052;
				i_478688 = 0;
				HEX3Atmp_479049 = 0;
				LOC263 = 0;
				LOC263 = sonslen_226387(n);
				HEX3Atmp_479049 = (NI)(LOC263 - ((NI) 1));
				res_479052 = ((NI) 1);
				{
					while (1) {
						Tnode223809* a;
						Tnode223809* LOC269;
						Tsym223841* LOC270;
						if (!(res_479052 <= HEX3Atmp_479049)) goto LA265;
						i_478688 = res_479052;
						a = 0;
						switch ((*(*n).kindU.S6.sons->data[i_478688]).kind) {
						case ((NU8) 151):
						{
							a = (*(*n).kindU.S6.sons->data[i_478688]).kindU.S6.sons->data[((NI) 0)];
						}
						break;
						case ((NU8) 2):
						{
							a = (*n).kindU.S6.sons->data[i_478688];
						}
						break;
						default:
						{
							illformedast_279240(n);
						}
						break;
						}
						LOC269 = 0;
						LOC269 = getidentnode_474878(a);
						LOC270 = 0;
						LOC270 = newsyms_455904(((NU8) 0), LOC269, c);
						adddecl_284607(c, LOC270);
						res_479052 += ((NI) 1);
					} LA265: ;
				}
			}
		}
		LA256: ;
	}
	break;
	case ((NU8) 133):
	case ((NU8) 134):
	case ((NU8) 135):
	{
	}
	break;
	case ((NU8) 76):
	{
		checkminsonslen_279270(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_474899(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_474903 | 2), ctx));
		}
		LA275: ;
		{
			NI i_478731;
			NI HEX3Atmp_479065;
			NI LOC278;
			NI res_479068;
			i_478731 = 0;
			HEX3Atmp_479065 = 0;
			LOC278 = 0;
			LOC278 = sonslen_226387(n);
			HEX3Atmp_479065 = (NI)(LOC278 - ((NI) 1));
			res_479068 = ((NI) 1);
			{
				while (1) {
					Tnode223809* a;
					NI L;
					if (!(res_479068 <= HEX3Atmp_479065)) goto LA280;
					i_478731 = res_479068;
					a = (*n).kindU.S6.sons->data[i_478731];
					{
						if (!!(((*a).kind == ((NU8) 35)))) goto LA283;
						illformedast_279240(a);
					}
					LA283: ;
					checkminsonslen_279270(a, ((NI) 3));
					L = sonslen_226387(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_474903 | 2), ctx));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_474899(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_474903, ctx));
					{
						NI j_478773;
						NI HEX3Atmp_479058;
						NI res_479061;
						j_478773 = 0;
						HEX3Atmp_479058 = 0;
						HEX3Atmp_479058 = (NI)(L - ((NI) 3));
						res_479061 = ((NI) 0);
						{
							while (1) {
								Tnode223809* LOC288;
								if (!(res_479061 <= HEX3Atmp_479058)) goto LA287;
								j_478773 = res_479061;
								LOC288 = 0;
								LOC288 = getidentnode_474878((*a).kindU.S6.sons->data[j_478773]);
								addtempdecl_476692(c, LOC288, ((NU8) 3));
								res_479061 += ((NI) 1);
							} LA287: ;
						}
					}
					res_479068 += ((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):
	{
		Tscope223835* LOC295;
		Tnode223809* body;
		checksonslen_279260(n, ((NI) 7));
		{
			Tnode223809* LOC294;
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA292;
			LOC294 = 0;
			LOC294 = getidentnode_474878((*n).kindU.S6.sons->data[((NI) 0)]);
			addtempdecl_476692(c, LOC294, ((NU8) 12));
		}
		LA292: ;
		LOC295 = 0;
		LOC295 = openscope_284091(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[((NI) 2)], flags_474903, ctx));
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA298;
			{
				Tident196021* LOC304;
				Tsym223841* LOC305;
				if (!!(((*(*(*n).kindU.S6.sons->data[((NI) 3)]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA302;
				LOC304 = 0;
				LOC304 = getident_196463(((NimStringDesc*) &TMP3142));
				LOC305 = 0;
				LOC305 = newsym_224656(((NU8) 0), LOC304, NIM_NIL, (*n).info);
				addprelimdecl_284619(c, LOC305);
			}
			LA302: ;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 3)]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[((NI) 3)], flags_474903, ctx));
		}
		LA298: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 4)]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[((NI) 4)], flags_474903, ctx));
		body = 0;
		{
			if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3))) goto LA308;
			body = getbody_269062((*(*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_474906(c, body, flags_474903, ctx));
		closescope_284111(c);
	}
	break;
	case ((NU8) 90):
	case ((NU8) 43):
	{
	}
	break;
	case ((NU8) 34):
	case ((NU8) 33):
	{
		checkminsonslen_279270(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[((NI) 1)], flags_474903, ctx));
	}
	break;
	default:
	{
		{
			NI i_478843;
			NI HEX3Atmp_479074;
			NI LOC315;
			NI res_479077;
			i_478843 = 0;
			HEX3Atmp_479074 = 0;
			LOC315 = 0;
			LOC315 = sonslen_226387(n);
			HEX3Atmp_479074 = (NI)(LOC315 - ((NI) 1));
			res_479077 = ((NI) 0);
			{
				while (1) {
					if (!(res_479077 <= HEX3Atmp_479074)) goto LA317;
					i_478843 = res_479077;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_478843]), semgenericstmt_474899(c, (*n).kindU.S6.sons->data[i_478843], flags_474903, ctx));
					res_479077 += ((NI) 1);
				} LA317: ;
			}
		}
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode223809*, semgenericstmt_462888)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Genericctx474888 ctx;
	result = 0;
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_220927((&ctx.tomixin));
	result = semgenericstmt_474899(c, n, 0, (&ctx));
	return result;
}

static N_INLINE(Ttype223847*, skipgenericinvocation_465964)(Ttype223847* t) {
	Ttype223847* 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_226426(result);
		} LA6: ;
	}
	return result;
}

N_NIMCALL(void, addinheritedfieldsaux_465868)(Tcontext278023* c, Intset220056* check, NI* pos, Tnode223809* n) {
	switch ((*n).kind) {
	case ((NU8) 139):
	{
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA4;
			internalerror_194172((*n).info, ((NimStringDesc*) &TMP3145));
		}
		LA4: ;
		addinheritedfieldsaux_465868(c, check, pos, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_465899;
			NI HEX3Atmp_465928;
			NI LOC7;
			NI res_465931;
			i_465899 = 0;
			HEX3Atmp_465928 = 0;
			LOC7 = 0;
			LOC7 = sonslen_226387(n);
			HEX3Atmp_465928 = (NI)(LOC7 - ((NI) 1));
			res_465931 = ((NI) 1);
			{
				while (1) {
					if (!(res_465931 <= HEX3Atmp_465928)) goto LA9;
					i_465899 = res_465931;
					switch ((*(*n).kindU.S6.sons->data[i_465899]).kind) {
					case ((NU8) 85):
					case ((NU8) 88):
					{
						Tnode223809* LOC11;
						LOC11 = 0;
						LOC11 = lastson_226406((*n).kindU.S6.sons->data[i_465899]);
						addinheritedfieldsaux_465868(c, check, pos, LOC11);
					}
					break;
					default:
					{
						internalerror_194172((*n).info, ((NimStringDesc*) &TMP3146));
					}
					break;
					}
					res_465931 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	break;
	case ((NU8) 138):
	{
		{
			NI i_465914;
			NI HEX3Atmp_465936;
			NI LOC15;
			NI res_465939;
			i_465914 = 0;
			HEX3Atmp_465936 = 0;
			LOC15 = 0;
			LOC15 = sonslen_226387(n);
			HEX3Atmp_465936 = (NI)(LOC15 - ((NI) 1));
			res_465939 = ((NI) 0);
			{
				while (1) {
					if (!(res_465939 <= HEX3Atmp_465936)) goto LA17;
					i_465914 = res_465939;
					addinheritedfieldsaux_465868(c, check, pos, (*n).kindU.S6.sons->data[i_465914]);
					res_465939 += ((NI) 1);
				} LA17: ;
			}
		}
	}
	break;
	case ((NU8) 3):
	{
		incl_220856(check, (*(*(*n).kindU.S4.sym).name).Sup.id);
		(*pos) += ((NI) 1);
	}
	break;
	default:
	{
		internalerror_194172((*n).info, ((NimStringDesc*) &TMP3147));
	}
	break;
	}
}

N_NIMCALL(void, addinheritedfields_465998)(Tcontext278023* c, Intset220056* check, NI* pos, Ttype223847* obj) {
	{
		NIM_BOOL LOC3;
		NI LOC4;
		Ttype223847* LOC8;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_226351(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_465964((*obj).sons->data[((NI) 0)]);
		addinheritedfields_465998(c, check, pos, LOC8);
	}
	LA6: ;
	addinheritedfieldsaux_465868(c, check, pos, (*obj).n);
}

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

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

static N_INLINE(void, rtladdcycleroot_53423)(Cell48947* c) {
	{
		if (!!((((NI) ((NI)((*c).refcount & ((NI) 3)))) == ((NI) 3)))) goto LA3;
		(*c).refcount = (NI)((NI)((*c).refcount & ((NI) -4)) | ((NI) 3));
		incl_49665((&gch_51059.cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_55022)(Cell48947* c) {
	(*c).refcount = (NI)((NU32)((*c).refcount) + (NU32)(((NI) 8)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_52667(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_53423(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_54604)(Cell48947* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_54204(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_52667(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_53423(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		Cell48947* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_52646(src);
		incref_55022(LOC5);
	}
	LA3: ;
	{
		Cell48947* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_52646((*dest));
		decref_54604(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

static N_INLINE(void, pushproccon_278361)(Tcontext278023* c, Tsym223841* owner) {
	Tproccon278011* x;
{	{
		if (!(owner == NIM_NIL)) goto LA3;
		internalerror_194191(((NimStringDesc*) &TMP3155));
		goto BeforeRet;
	}
	LA3: ;
	x = 0;
	x = (Tproccon278011*) newObj((&NTI278009), sizeof(Tproccon278011));
	asgnRefNoCycle((void**) (&(*x).owner), owner);
	asgnRef((void**) (&(*x).next), (*c).p);
	asgnRef((void**) (&(*c).p), x);
	}BeforeRet: ;
}

N_NIMCALL(Ttype223847*, findenforcedstatictype_466339)(Ttype223847* t_466341) {
	Ttype223847* result;
{	result = 0;
	{
		if (!((*t_466341).kind == ((NU8) 59))) goto LA3;
		result = t_466341;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*t_466341).kind == ((NU8) 55))) goto LA7;
		{
			Ttype223847* s_466370;
			Ttypeseq223843* HEX3Atmp_466385;
			NI i_466388;
			NI L_466390;
			s_466370 = 0;
			HEX3Atmp_466385 = 0;
			HEX3Atmp_466385 = (*t_466341).sons;
			i_466388 = ((NI) 0);
			L_466390 = (HEX3Atmp_466385 ? HEX3Atmp_466385->Sup.len : 0);
			{
				while (1) {
					Ttype223847* t;
					if (!(i_466388 < L_466390)) goto LA11;
					s_466370 = HEX3Atmp_466385->data[i_466388];
					t = findenforcedstatictype_466339(s_466370);
					{
						if (!!((t == NIM_NIL))) goto LA14;
						result = t;
						goto BeforeRet;
					}
					LA14: ;
					i_466388 += ((NI) 1);
				} LA11: ;
			}
		}
	}
	LA7: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, addparamorresult_457885)(Tcontext278023* c, Tsym223841* param, NU8 kind) {
	{
		Ttype223847* statictype;
		if (!(kind == ((NU8) 17))) goto LA3;
		statictype = findenforcedstatictype_466339((*param).typ);
		{
			Tsym223841* a;
			if (!!((statictype == NIM_NIL))) goto LA7;
			a = copysym_226607(param, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*a).typ), base_253039(statictype));
			adddecl_284607(c, a);
		}
		goto LA5;
		LA7: ;
		{
			if (!((*(*param).typ).kind == ((NU8) 8))) goto LA10;
			adddecl_284607(c, param);
		}
		goto LA5;
		LA10: ;
		{
			Tsym223841* nn;
			Tsym223841* a;
			{
				Tsym223841* LOC15;
				LOC15 = 0;
				LOC15 = getcompilerproc_272809(((NimStringDesc*) &TMP3158));
				if (!!((LOC15 == NIM_NIL))) goto LA16;
				nn = getsyssym_272077(((NimStringDesc*) &TMP3159));
			}
			goto LA13;
			LA16: ;
			{
				nn = getsyssym_272077(((NimStringDesc*) &TMP3160));
			}
			LA13: ;
			a = copysym_226607(param, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*a).typ), (*nn).typ);
			adddecl_284607(c, a);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!!((((*param).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA22;
			adddecl_284607(c, param);
		}
		LA22: ;
	}
	LA1: ;
}

N_NIMCALL(void, addresult_486830)(Tcontext278023* c, Ttype223847* t, Tlineinfo188352 info, NU8 owner) {
	{
		Tsym223841* s;
		Tident196021* LOC5;
		Tsym223841* LOC6;
		if (!!((t == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = getident_196463(((NimStringDesc*) &TMP3157));
		LOC6 = 0;
		LOC6 = getcurrowner_278258();
		s = newsym_224656(((NU8) 11), LOC5, LOC6, info);
		asgnRefNoCycle((void**) (&(*s).typ), t);
		(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
		addparamorresult_457885(c, s, owner);
		asgnRefNoCycle((void**) (&(*(*c).p).resultsym), s);
	}
	LA3: ;
}

N_NIMCALL(void, addresultnode_486864)(Tcontext278023* c, Tnode223809* n) {
	{
		Tnode223809* LOC5;
		if (!!(((*(*c).p).resultsym == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = newsymnode_225325((*(*c).p).resultsym);
		addson_225819(n, LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, maybeaddresult_455301)(Tcontext278023* c, Tsym223841* s, Tnode223809* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*s).kind == ((NU8) 14)));
		LA4: ;
		if (!LOC3) goto LA5;
		addresult_486830(c, (*(*s).typ).sons->data[((NI) 0)], (*n).info, (*s).kind);
		addresultnode_486864(c, n);
	}
	LA5: ;
}

N_NIMCALL(void, instantiateproctype_458176)(Tcontext278023* c, Tidtable223859 pt, Tsym223841* prc, Tlineinfo188352 info) {
	Trepltypevars300577 cl;
	Ttype223847* result;
	Tnode223809* originalparams;
	Tnode223809* LOC20;
	adddecl_284607(c, prc);
	pushinfocontext_189581(info);
	memset((void*)(&cl), 0, sizeof(cl));
	chckNil((void*)(&cl));
	memset((void*)(&cl), 0, sizeof(cl));
	inittypevars_302846(c, pt, info, NIM_NIL, (&cl));
	result = instcopytype_301694((&cl), (*prc).typ);
	originalparams = (*result).n;
	asgnRefNoCycle((void**) (&(*result).n), shallowcopy_227817(originalparams));
	{
		NI i_458206;
		NI HEX3Atmp_458431;
		NI LOC2;
		NI res_458434;
		i_458206 = 0;
		HEX3Atmp_458431 = 0;
		LOC2 = 0;
		LOC2 = len_226369(result);
		HEX3Atmp_458431 = (LOC2 - 1);
		res_458434 = ((NI) 1);
		{
			while (1) {
				Tsym223841* oldparam;
				Tnode223809* LOC15;
				Tsym223841* param;
				if (!(res_458434 <= HEX3Atmp_458431)) goto LA4;
				i_458206 = res_458434;
				{
					if (!(((NI) 1) < i_458206)) goto LA7;
					resetidtable_227077((&cl.symmap));
					resetidtable_227077((&cl.localcache));
				}
				LA7: ;
				asgnRefNoCycle((void**) (&(*result).sons->data[i_458206]), replacetypevarst_300627((&cl), (*result).sons->data[i_458206]));
				propagatetoowner_227274(result, (*result).sons->data[i_458206]);
				{
					Tnode223809* LOC11;
					NimStringDesc* LOC14;
					LOC11 = 0;
					LOC11 = HEX5BHEX5D_224244(originalparams, i_458206);
					if (!!(((*LOC11).kind == ((NU8) 3)))) goto LA12;
					LOC14 = 0;
					LOC14 = HEX24_194279(TMP3156);
					internalerror_194191(LOC14);
				}
				LA12: ;
				LOC15 = 0;
				LOC15 = HEX5BHEX5D_224244(originalparams, i_458206);
				oldparam = (*LOC15).kindU.S4.sym;
				param = copysym_226607(oldparam, NIM_FALSE);
				asgnRefNoCycle((void**) (&(*param).owner), prc);
				asgnRefNoCycle((void**) (&(*param).typ), (*result).sons->data[i_458206]);
				{
					if (!!(((*oldparam).ast == NIM_NIL))) goto LA18;
					asgnRefNoCycle((void**) (&(*param).ast), fitnode_455245(c, (*param).typ, (*oldparam).ast));
				}
				LA18: ;
				asgnRefNoCycle((void**) (&(*(*result).n).kindU.S6.sons->data[i_458206]), newsymnode_225325(param));
				adddecl_284607(c, param);
				res_458434 += ((NI) 1);
			} LA4: ;
		}
	}
	resetidtable_227077((&cl.symmap));
	resetidtable_227077((&cl.localcache));
	asgnRefNoCycle((void**) (&(*result).sons->data[((NI) 0)]), replacetypevarst_300627((&cl), (*result).sons->data[((NI) 0)]));
	LOC20 = 0;
	LOC20 = HEX5BHEX5D_224244(originalparams, ((NI) 0));
	asgnRefNoCycle((void**) (&(*(*result).n).kindU.S6.sons->data[((NI) 0)]), copytree_228028(LOC20));
	erasevoidparams_302182(result);
	skipintliteralparams_302336(result);
	asgnRefNoCycle((void**) (&(*prc).typ), result);
	maybeaddresult_455301(c, prc, (*prc).ast);
	popinfocontext_189600();
}

N_NIMCALL(NIM_BOOL, sameinstantiation_457396)(Tinstantiation223831 a, Tinstantiation223831 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_457427;
			NI HEX3Atmp_457430;
			NI res_457433;
			i_457427 = 0;
			HEX3Atmp_457430 = 0;
			HEX3Atmp_457430 = (a.concretetypes ? (a.concretetypes->Sup.len-1) : -1);
			res_457433 = ((NI) 0);
			{
				while (1) {
					if (!(res_457433 <= HEX3Atmp_457430)) goto LA7;
					i_457427 = res_457433;
					{
						NIM_BOOL LOC10;
						LOC10 = 0;
						LOC10 = comparetypes_260047(a.concretetypes->data[i_457427], b.concretetypes->data[i_457427], ((NU8) 0), 4);
						if (!!(LOC10)) goto LA11;
						goto BeforeRet;
					}
					LA11: ;
					res_457433 += ((NI) 1);
				} LA7: ;
			}
		}
		result = NIM_TRUE;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym223841*, genericcacheget_457449)(Tsym223841* genericsym, Tinstantiation223831 entry, NI id) {
	Tsym223841* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = HEX3DHEX3D_226870((*genericsym).kindU.S2.procinstcache, NIM_NIL);
		if (!!(LOC3)) goto LA4;
		{
			Tinstantiation223831* inst_457611;
			TY223944* HEX3Atmp_457613;
			NI i_457616;
			NI L_457618;
			inst_457611 = 0;
			HEX3Atmp_457613 = 0;
			HEX3Atmp_457613 = (*genericsym).kindU.S2.procinstcache;
			i_457616 = ((NI) 0);
			L_457618 = (HEX3Atmp_457613 ? HEX3Atmp_457613->Sup.len : 0);
			{
				while (1) {
					if (!(i_457616 < L_457618)) goto LA8;
					inst_457611 = HEX3Atmp_457613->data[i_457616];
					{
						NIM_BOOL LOC11;
						LOC11 = 0;
						LOC11 = ((*inst_457611).compilesid == id);
						if (!(LOC11)) goto LA12;
						LOC11 = sameinstantiation_457396(entry, (*inst_457611));
						LA12: ;
						if (!LOC11) goto LA13;
						result = (*inst_457611).sym;
						goto BeforeRet;
					}
					LA13: ;
					i_457616 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	LA4: ;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NI, safelen_224126)(Tnode223809* 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_457801)(Tnode223809* n, Tsym223841* owner, Tidtable223859* symmap) {
	{
		NIM_BOOL LOC3;
		Tsym223841* s;
		Tsym223841* x;
		Tidobj196015* LOC7;
		TNimObject* LOC8;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 3));
		if (!(LOC3)) goto LA4;
		LOC3 = (((*(*n).kindU.S4.sym).flags &(1<<((((NU8) 31))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		s = (*n).kindU.S4.sym;
		LOC7 = 0;
		LOC7 = &s->Sup;
		LOC8 = 0;
		LOC8 = idtableget_231182((*symmap), LOC7);
		x = ((Tsym223841*) (LOC8));
		{
			Tidobj196015* LOC13;
			TNimObject* LOC14;
			if (!(x == NIM_NIL)) goto LA11;
			x = copysym_226607(s, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*x).owner), owner);
			LOC13 = 0;
			LOC13 = &s->Sup;
			LOC14 = 0;
			LOC14 = &x->Sup.Sup;
			idtableput_231196(symmap, LOC13, LOC14);
		}
		LA11: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S4.sym), x);
	}
	goto LA1;
	LA5: ;
	{
		{
			NI i_457863;
			NI HEX3Atmp_457866;
			NI LOC17;
			NI res_457869;
			i_457863 = 0;
			HEX3Atmp_457866 = 0;
			LOC17 = 0;
			LOC17 = safelen_224126(n);
			HEX3Atmp_457866 = (LOC17 - 1);
			res_457869 = ((NI) 0);
			{
				while (1) {
					if (!(res_457869 <= HEX3Atmp_457866)) goto LA19;
					i_457863 = res_457869;
					freshgensyms_457801((*n).kindU.S6.sons->data[i_457863], owner, symmap);
					res_457869 += ((NI) 1);
				} LA19: ;
			}
		}
	}
	LA1: ;
}

static N_INLINE(NIM_BOOL, isemptytype_228932)(Ttype223847* 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_494861)(Tnode223809* 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(Tnode223809*, readtypeparameter_495277)(Tcontext278023* c, Ttype223847* typ, Tident196021* paramname, Tlineinfo188352 info) {
	Tnode223809* result;
	Ttype223847* ty;
	Ttype223847* tbody;
{	result = 0;
	{
		if (!((*typ).kind == ((NU8) 11))) goto LA3;
		ty = skipgenericalias_259119(typ);
	}
	goto LA1;
	LA3: ;
	{
		{
			NimStringDesc* LOC10;
			if (!!(((*typ).kind == ((NU8) 54)))) goto LA8;
			LOC10 = 0;
			LOC10 = HEX24_194279(TMP3242);
			internalerror_194191(LOC10);
		}
		LA8: ;
		ty = skipgenericalias_259119((*typ).sons->data[((NI) 1)]);
	}
	LA1: ;
	tbody = (*ty).sons->data[((NI) 0)];
	{
		NI s_495323;
		NI HEX3Atmp_495339;
		NI LOC12;
		NI res_495342;
		s_495323 = 0;
		HEX3Atmp_495339 = 0;
		LOC12 = 0;
		LOC12 = len_226369(tbody);
		HEX3Atmp_495339 = (NI)(LOC12 - ((NI) 2));
		res_495342 = ((NI) 0);
		{
			while (1) {
				Ttype223847* tparam;
				if (!(res_495342 <= HEX3Atmp_495339)) goto LA14;
				s_495323 = res_495342;
				tparam = (*tbody).sons->data[s_495323];
				{
					Ttype223847* rawtyp;
					if (!((*(*(*tparam).sym).name).Sup.id == (*paramname).Sup.id)) goto LA17;
					rawtyp = (*ty).sons->data[(NI)(s_495323 + ((NI) 1))];
					{
						if (!((*rawtyp).kind == ((NU8) 59))) goto LA21;
						result = (*rawtyp).n;
						goto BeforeRet;
					}
					goto LA19;
					LA21: ;
					{
						Ttype223847* foundtyp;
						Tsym223841* LOC24;
						Tsym223841* LOC25;
						foundtyp = maketypedesc_278684(c, rawtyp);
						LOC24 = 0;
						LOC24 = copysym_226607((*tparam).sym, NIM_FALSE);
						LOC25 = 0;
						LOC25 = linkto_224884(LOC24, foundtyp);
						result = newsymnode_225338(LOC25, info);
						goto BeforeRet;
					}
					LA19: ;
				}
				LA17: ;
				res_495342 += ((NI) 1);
			} LA14: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, createsettype_494878)(Tcontext278023* c, Ttype223847* basetype) {
	Ttype223847* result;
	result = 0;
	result = newtypes_278221(((NU8) 19), c);
	rawaddson_227498(result, basetype);
	return result;
}

N_NIMCALL(Tsym223841*, lookupinrecordandbuildcheck_495004)(Tcontext278023* c, Tnode223809* n, Tnode223809* r, Tident196021* field, Tnode223809** check) {
	Tsym223841* result;
{	result = 0;
	result = NIM_NIL;
	switch ((*r).kind) {
	case ((NU8) 138):
	{
		{
			NI i_495025;
			NI HEX3Atmp_495163;
			NI LOC3;
			NI res_495166;
			i_495025 = 0;
			HEX3Atmp_495163 = 0;
			LOC3 = 0;
			LOC3 = sonslen_226387(r);
			HEX3Atmp_495163 = (NI)(LOC3 - ((NI) 1));
			res_495166 = ((NI) 0);
			{
				while (1) {
					if (!(res_495166 <= HEX3Atmp_495163)) goto LA5;
					i_495025 = res_495166;
					result = lookupinrecordandbuildcheck_495004(c, n, (*r).kindU.S6.sons->data[i_495025], field, check);
					{
						if (!!((result == NIM_NIL))) goto LA8;
						goto BeforeRet;
					}
					LA8: ;
					res_495166 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 139):
	{
		Ttype223847* settype;
		Tnode223809* s;
		checkminsonslen_279270(r, ((NI) 2));
		{
			if (!!(((*(*r).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA13;
			illformedast_279240(r);
		}
		LA13: ;
		result = lookupinrecordandbuildcheck_495004(c, n, (*r).kindU.S6.sons->data[((NI) 0)], field, check);
		{
			if (!!((result == NIM_NIL))) goto LA17;
			goto BeforeRet;
		}
		LA17: ;
		settype = createsettype_494878(c, (*(*r).kindU.S6.sons->data[((NI) 0)]).typ);
		s = newnodeit_225807(((NU8) 39), (*r).info, settype);
		{
			NI i_495077;
			NI HEX3Atmp_495187;
			NI LOC20;
			NI res_495190;
			i_495077 = 0;
			HEX3Atmp_495187 = 0;
			LOC20 = 0;
			LOC20 = sonslen_226387(r);
			HEX3Atmp_495187 = (NI)(LOC20 - ((NI) 1));
			res_495190 = ((NI) 1);
			{
				while (1) {
					Tnode223809* it;
					if (!(res_495190 <= HEX3Atmp_495187)) goto LA22;
					i_495077 = res_495190;
					it = (*r).kindU.S6.sons->data[i_495077];
					switch ((*it).kind) {
					case ((NU8) 85):
					{
						Tnode223809* LOC24;
						LOC24 = 0;
						LOC24 = lastson_226406(it);
						result = lookupinrecordandbuildcheck_495004(c, n, LOC24, field, check);
						{
							if (!(result == NIM_NIL)) goto LA27;
							{
								NI j_495102;
								NI HEX3Atmp_495172;
								NI LOC30;
								NI res_495175;
								j_495102 = 0;
								HEX3Atmp_495172 = 0;
								LOC30 = 0;
								LOC30 = sonslen_226387(it);
								HEX3Atmp_495172 = (NI)(LOC30 - ((NI) 2));
								res_495175 = ((NI) 0);
								{
									while (1) {
										Tnode223809* LOC33;
										if (!(res_495175 <= HEX3Atmp_495172)) goto LA32;
										j_495102 = res_495175;
										LOC33 = 0;
										LOC33 = copytree_228028((*it).kindU.S6.sons->data[j_495102]);
										addson_225819(s, LOC33);
										res_495175 += ((NI) 1);
									} LA32: ;
								}
							}
						}
						goto LA25;
						LA27: ;
						{
							Tnode223809* inexpr;
							Ttype223847* LOC44;
							Tnode223809* LOC45;
							Tnode223809* LOC46;
							{
								if (!((*check) == NIM_NIL)) goto LA37;
								unsureAsgnRef((void**) (&(*check)), newnodei_225351(((NU8) 46), (*n).info));
								addson_225819((*check), emptynode_224807);
							}
							LA37: ;
							s = newnodeit_225807(((NU8) 39), (*n).info, settype);
							{
								NI j_495128;
								NI HEX3Atmp_495180;
								NI LOC40;
								NI res_495183;
								j_495128 = 0;
								HEX3Atmp_495180 = 0;
								LOC40 = 0;
								LOC40 = sonslen_226387(it);
								HEX3Atmp_495180 = (NI)(LOC40 - ((NI) 2));
								res_495183 = ((NI) 0);
								{
									while (1) {
										Tnode223809* LOC43;
										if (!(res_495183 <= HEX3Atmp_495180)) goto LA42;
										j_495128 = res_495183;
										LOC43 = 0;
										LOC43 = copytree_228028((*it).kindU.S6.sons->data[j_495128]);
										addson_225819(s, LOC43);
										res_495183 += ((NI) 1);
									} LA42: ;
								}
							}
							LOC44 = 0;
							LOC44 = getsystype_272190(((NU8) 1));
							inexpr = newnodeit_225807(((NU8) 27), (*n).info, LOC44);
							LOC45 = 0;
							LOC45 = newsymnode_225338(opcontains_229060, (*n).info);
							addson_225819(inexpr, LOC45);
							addson_225819(inexpr, s);
							LOC46 = 0;
							LOC46 = copytree_228028((*r).kindU.S6.sons->data[((NI) 0)]);
							addson_225819(inexpr, LOC46);
							addson_225819((*check), inexpr);
							goto BeforeRet;
						}
						LA25: ;
					}
					break;
					case ((NU8) 88):
					{
						Tnode223809* LOC48;
						LOC48 = 0;
						LOC48 = lastson_226406(it);
						result = lookupinrecordandbuildcheck_495004(c, n, LOC48, field, check);
						{
							Tnode223809* inexpr;
							Ttype223847* LOC57;
							Tnode223809* LOC58;
							Tnode223809* LOC59;
							Tnode223809* notexpr;
							Ttype223847* LOC60;
							Tnode223809* LOC61;
							if (!!((result == NIM_NIL))) goto LA51;
							{
								if (!((*check) == NIM_NIL)) goto LA55;
								unsureAsgnRef((void**) (&(*check)), newnodei_225351(((NU8) 46), (*n).info));
								addson_225819((*check), emptynode_224807);
							}
							LA55: ;
							LOC57 = 0;
							LOC57 = getsystype_272190(((NU8) 1));
							inexpr = newnodeit_225807(((NU8) 27), (*n).info, LOC57);
							LOC58 = 0;
							LOC58 = newsymnode_225338(opcontains_229060, (*n).info);
							addson_225819(inexpr, LOC58);
							addson_225819(inexpr, s);
							LOC59 = 0;
							LOC59 = copytree_228028((*r).kindU.S6.sons->data[((NI) 0)]);
							addson_225819(inexpr, LOC59);
							LOC60 = 0;
							LOC60 = getsystype_272190(((NU8) 1));
							notexpr = newnodeit_225807(((NU8) 27), (*n).info, LOC60);
							LOC61 = 0;
							LOC61 = newsymnode_225338(opnot_229059, (*n).info);
							addson_225819(notexpr, LOC61);
							addson_225819(notexpr, inexpr);
							addson_225819((*check), notexpr);
							goto BeforeRet;
						}
						LA51: ;
					}
					break;
					default:
					{
						illformedast_279240(it);
					}
					break;
					}
					res_495190 += ((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_279240(n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, fieldvisible_393471)(Tcontext278023* c, Tsym223841* f) {
	NIM_BOOL result;
	NI fmoduleid;
	Tsym223841* LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getmodule_231243(f);
	fmoduleid = (*LOC1).Sup.id;
	LOC2 = 0;
	LOC2 = (((*f).flags &(1<<((((NU8) 1))&31)))!=0);
	if (LOC2) goto LA3;
	LOC2 = (fmoduleid == (*(*c).module).Sup.id);
	LA3: ;
	result = LOC2;
	{
		Tsym223841* module_393611;
		Tsymseq223811* HEX3Atmp_393614;
		NI i_393617;
		NI L_393619;
		module_393611 = 0;
		HEX3Atmp_393614 = 0;
		HEX3Atmp_393614 = (*c).friendmodules;
		i_393617 = ((NI) 0);
		L_393619 = (HEX3Atmp_393614 ? HEX3Atmp_393614->Sup.len : 0);
		{
			while (1) {
				if (!(i_393617 < L_393619)) goto LA6;
				module_393611 = HEX3Atmp_393614->data[i_393617];
				{
					if (!(fmoduleid == (*module_393611).Sup.id)) goto LA9;
					result = NIM_TRUE;
					goto LA4;
				}
				LA9: ;
				i_393617 += ((NI) 1);
			} LA6: ;
		}
	} LA4: ;
	return result;
}

N_NIMCALL(Tnode223809*, makederef_495233)(Tnode223809* n) {
	Tnode223809* result;
	Ttype223847* t;
	result = 0;
	t = skiptypes_227167((*n).typ, 2048);
	result = n;
	{
		if (!((*t).kind == ((NU8) 23))) goto LA3;
		result = newnodeit_225807(((NU8) 65), (*n).info, (*t).sons->data[((NI) 0)]);
		addson_225819(result, n);
		t = skiptypes_227167((*t).sons->data[((NI) 0)], 2048);
	}
	LA3: ;
	{
		while (1) {
			Tnode223809* a;
			Ttype223847* basetyp;
			if (!((*t).kind == ((NU8) 21) || (*t).kind == ((NU8) 22))) goto LA6;
			a = result;
			basetyp = lastson_226426(t);
			result = newnodeit_225807(((NU8) 65), (*n).info, basetyp);
			addson_225819(result, a);
			t = skiptypes_227167(basetyp, 2048);
		} LA6: ;
	}
	return result;
}

N_NIMCALL(Tnode223809*, builtinfieldaccess_495358)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Tsym223841* s;
	Tident196021* i;
	Ttype223847* ty;
	Tsym223841* f;
	Tnode223809* check;
{	result = 0;
	checksonslen_279260(n, ((NI) 2));
	s = qualifiedlookup_284864(c, n, 3);
	{
		if (!!((s == NIM_NIL))) goto LA3;
		{
			if (!((520256 &(1<<(((*s).kind)&31)))!=0)) goto LA7;
			result = symchoice_469790(c, n, s, ((NU8) 0));
			{
				if (!((*result).kind == ((NU8) 3))) goto LA11;
				result = semsym_490258(c, n, s, flags);
			}
			LA11: ;
		}
		goto LA5;
		LA7: ;
		{
			markused_386253((*(*n).kindU.S6.sons->data[((NI) 1)]).info, s);
			result = semsym_490258(c, n, s, flags);
		}
		LA5: ;
		goto BeforeRet;
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags | 32)));
	i = considerquotedident_284010((*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;
		Ttype223847* LOC20;
		LOC16 = 0;
		LOC16 = istypeexpr_494861((*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_253039(ty);
		LOC18 = !(((*LOC20).kind == ((NU8) 0)));
		LA19: ;
		LOC16 = LOC18;
		LA17: ;
		if (!LOC16) goto LA21;
		{
			if (!((*ty).kind == ((NU8) 8))) goto LA25;
			ty = base_253039(ty);
		}
		LA25: ;
		ty = skiptypes_227167(ty, 14680064);
		switch ((*ty).kind) {
		case ((NU8) 14):
		{
			{
				while (1) {
					if (!!((ty == NIM_NIL))) goto LA29;
					f = getsymfromlist_231228((*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_225325(f);
				(*result).info = (*n).info;
				asgnRefNoCycle((void**) (&(*result).typ), ty);
				markused_386253((*n).info, f);
				goto BeforeRet;
			}
			LA36: ;
		}
		break;
		case ((NU8) 11):
		case ((NU8) 54):
		{
			result = readtypeparameter_495277(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;
				{
					Tnode223809* field_495622;
					Tnode223809* HEX3Atmp_496032;
					field_495622 = 0;
					HEX3Atmp_496032 = 0;
					HEX3Atmp_496032 = (*ty).n;
					{
						NI i_496036;
						NI HEX3Atmp_496038;
						NI LOC48;
						NI res_496040;
						i_496036 = 0;
						HEX3Atmp_496038 = 0;
						LOC48 = 0;
						LOC48 = len_224098(HEX3Atmp_496032);
						HEX3Atmp_496038 = (LOC48 - 1);
						res_496040 = ((NI) 0);
						{
							while (1) {
								if (!(res_496040 <= HEX3Atmp_496038)) goto LA50;
								i_496036 = res_496040;
								field_495622 = (*HEX3Atmp_496032).kindU.S6.sons->data[i_496036];
								{
									Ttypeseq223843* LOC55;
									TY278864 LOC56;
									if (!((*(*field_495622).kindU.S4.sym).name == i)) goto LA53;
									LOC55 = 0;
									LOC55 = (Ttypeseq223843*) newSeq((&NTI223843), 2);
									memset((void*)LOC56, 0, sizeof(LOC56));
									LOC56[0] = ty;
									LOC56[1] = (*(*field_495622).kindU.S4.sym).typ;
									asgnRefNoCycle((void**) (&LOC55->data[0]), LOC56[0]);
									asgnRefNoCycle((void**) (&LOC55->data[1]), LOC56[1]);
									asgnRefNoCycle((void**) (&(*n).typ), newtypewithsons_278807(c, ((NU8) 61), LOC55));
									asgnRefNoCycle((void**) (&(*(*n).typ).n), copytree_228028(n));
									result = n;
									goto BeforeRet;
								}
								LA53: ;
								res_496040 += ((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_227167(ty, 14682112);
	{
		while (1) {
			if (!(((*ty).flags &(1<<((((NU8) 27))&31)))!=0)) goto LA59;
			ty = skiptypes_227167(ty, 8192);
		} LA59: ;
	}
	check = NIM_NIL;
	{
		if (!((*ty).kind == ((NU8) 17))) goto LA62;
		{
			while (1) {
				check = NIM_NIL;
				f = lookupinrecordandbuildcheck_495004(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_227167((*ty).sons->data[((NI) 0)], 2048);
			}
		} LA64: ;
		{
			if (!!((f == NIM_NIL))) goto LA76;
			{
				NIM_BOOL LOC80;
				LOC80 = 0;
				LOC80 = fieldvisible_393471(c, f);
				if (!LOC80) goto LA81;
				markused_386253((*(*n).kindU.S6.sons->data[((NI) 1)]).info, f);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_495233((*n).kindU.S6.sons->data[((NI) 0)]));
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), newsymnode_225325(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_231228((*ty).n, i, ((NI) 0));
		{
			if (!!((f == NIM_NIL))) goto LA95;
			markused_386253((*(*n).kindU.S6.sons->data[((NI) 1)]).info, f);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_495233((*n).kindU.S6.sons->data[((NI) 0)]));
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), newsymnode_225325(f));
			asgnRefNoCycle((void**) (&(*n).typ), (*f).typ);
			result = n;
		}
		LA95: ;
	}
	goto LA60;
	LA91: ;
	LA60: ;
	{
		Ttype223847* t;
		if (!(result == NIM_NIL)) goto LA99;
		t = skiptypes_227167((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, 14680064);
		{
			if (!((*t).kind == ((NU8) 11) || (*t).kind == ((NU8) 54))) goto LA103;
			result = readtypeparameter_495277(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_459474)(Tcontext278023* c, Tnodeseq223803** usedsyms) {
	{
		Tscope223835* scope_459480;
		Tscope223835* HEX3Atmp_459559;
		Tscope223835* current_459562;
		scope_459480 = 0;
		HEX3Atmp_459559 = 0;
		HEX3Atmp_459559 = (*c).currentscope;
		current_459562 = HEX3Atmp_459559;
		{
			while (1) {
				if (!!((current_459562 == NIM_NIL))) goto LA3;
				scope_459480 = current_459562;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = HEX3DHEX3D_298972((*scope_459480).usingsyms, NIM_NIL);
					if (!!(LOC6)) goto LA7;
					{
						Tnode223809* s_459502;
						Tnodeseq223803* HEX3Atmp_459553;
						NI i_459556;
						NI L_459558;
						s_459502 = 0;
						HEX3Atmp_459553 = 0;
						HEX3Atmp_459553 = (*scope_459480).usingsyms;
						i_459556 = ((NI) 0);
						L_459558 = (HEX3Atmp_459553 ? HEX3Atmp_459553->Sup.len : 0);
						{
							while (1) {
								if (!(i_459556 < L_459558)) goto LA11;
								s_459502 = HEX3Atmp_459553->data[i_459556];
								safeadd_459504(usedsyms, s_459502);
								i_459556 += ((NI) 1);
							} LA11: ;
						}
					}
				}
				LA7: ;
				current_459562 = (*current_459562).parent;
			} LA3: ;
		}
	}
}
N_NIMCALL(void, TMP3245)(void* p, NI op) {
	TY458962* a;
	NI LOC1;
	a = (TY458962*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].Field0, op);
	}
}

N_NIMCALL(Tsym223841*, lookupmacro_486930)(Tcontext278023* c, Tnode223809* n) {
	Tsym223841* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 3))) goto LA3;
		result = (*n).kindU.S4.sym;
		{
			if (!!(((393216 &(1<<(((*result).kind)&31)))!=0))) goto LA7;
			result = NIM_NIL;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		Tident196021* LOC10;
		LOC10 = 0;
		LOC10 = considerquotedident_284010(n);
		result = searchinscopes_284323(c, LOC10, 393216);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, copyexcept_486883)(Tnode223809* n, NI i) {
	Tnode223809* result;
	result = 0;
	result = copynode_227660(n);
	{
		NI j_486907;
		NI HEX3Atmp_486911;
		NI LOC2;
		NI res_486914;
		j_486907 = 0;
		HEX3Atmp_486911 = 0;
		LOC2 = 0;
		LOC2 = len_224098(n);
		HEX3Atmp_486911 = (LOC2 - 1);
		res_486914 = ((NI) 0);
		{
			while (1) {
				if (!(res_486914 <= HEX3Atmp_486911)) goto LA4;
				j_486907 = res_486914;
				{
					if (!!((j_486907 == i))) goto LA7;
					add_224165(result, (*n).kindU.S6.sons->data[j_486907]);
				}
				LA7: ;
				res_486914 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode223809*, semprocannotation_486960)(Tcontext278023* c, Tnode223809* prc, Tspecialwords204012 validpragmas) {
	Tnode223809* result;
	Tnode223809* 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_487010;
		NI HEX3Atmp_487105;
		NI LOC8;
		NI res_487108;
		i_487010 = 0;
		HEX3Atmp_487105 = 0;
		LOC8 = 0;
		LOC8 = len_224098(n);
		HEX3Atmp_487105 = (LOC8 - 1);
		res_487108 = ((NI) 0);
		{
			while (1) {
				if (!(res_487108 <= HEX3Atmp_487105)) goto LA10;
				i_487010 = res_487108;
				{
					Tnode223809* it;
					Tnode223809* key;
					Tsym223841* m;
					Tnode223809* x;
					Tnode223809* LOC33;
					it = (*n).kindU.S6.sons->data[i_487010];
					{
						if (!((*it).kind == ((NU8) 34))) goto LA14;
						key = (*it).kindU.S6.sons->data[((NI) 0)];
					}
					goto LA12;
					LA14: ;
					{
						key = it;
					}
					LA12: ;
					m = lookupmacro_486930(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;
							{
								Tident196021* LOC29;
								LOC29 = 0;
								LOC29 = considerquotedident_284010((*prc).kindU.S6.sons->data[((NI) 0)]);
								if (!eqStrings((*LOC29).s, ((NimStringDesc*) &TMP3246))) goto LA30;
								asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 0)]), newidentnode_225313(iddelegator_196562, (*prc).info));
								asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 4)]), copyexcept_486883(n, i_487010));
							}
							goto LA27;
							LA30: ;
							{
								localerror_194128((*prc).info, ((NU16) 204), ((NimStringDesc*) &TMP3115));
							}
							LA27: ;
						}
						LA25: ;
						goto LA11;
					}
					LA19: ;
					x = newnodei_225351(((NU8) 27), (*n).info);
					LOC33 = 0;
					LOC33 = newsymnode_225325(m);
					add_224165(x, LOC33);
					asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 4)]), copyexcept_486883(n, i_487010));
					{
						if (!((*it).kind == ((NU8) 34))) goto LA36;
						add_224165(x, (*it).kindU.S6.sons->data[((NI) 1)]);
					}
					LA36: ;
					add_224165(x, prc);
					result = semstmt_455277(c, x);
					{
						NIM_BOOL LOC40;
						NIM_BOOL LOC41;
						Tnode223809* LOC43;
						Tnode223809* LOC45;
						Tnode223809* LOC48;
						Tnode223809* 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_224244(result, ((NI) 0));
						LOC41 = ((*LOC43).kind == ((NU8) 3));
						LA42: ;
						LOC40 = LOC41;
						if (!(LOC40)) goto LA44;
						LOC45 = 0;
						LOC45 = HEX5BHEX5D_224244(result, ((NI) 4));
						LOC40 = !(((*LOC45).kind == ((NU8) 1)));
						LA44: ;
						if (!LOC40) goto LA46;
						LOC48 = 0;
						LOC48 = HEX5BHEX5D_224244(result, ((NI) 0));
						LOC49 = 0;
						LOC49 = HEX5BHEX5D_224244(result, ((NI) 4));
						pragma_295082(c, (*LOC48).kindU.S4.sym, LOC49, validpragmas);
					}
					LA46: ;
					goto BeforeRet;
				} LA11: ;
				res_487108 += ((NI) 1);
			} LA10: ;
		}
	}
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(Tsym223841*, newsymg_455916)(NU8 kind, Tnode223809* n, Tcontext278023* c) {
	Tsym223841* 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_455922((*result).kind);
			LOC11 = 0;
			LOC11 = HEX24_455922(kind);
			LOC9 = rawNewString(LOC10->Sup.len + LOC11->Sup.len + 36);
appendString(LOC9, ((NimStringDesc*) &TMP3247));
appendString(LOC9, LOC10);
appendString(LOC9, ((NimStringDesc*) &TMP3248));
appendString(LOC9, LOC11);
appendString(LOC9, ((NimStringDesc*) &TMP3249));
			localerror_194139((*n).info, LOC9);
		}
		LA7: ;
		asgnRefNoCycle((void**) (&(*result).owner), getcurrowner_278258());
	}
	goto LA1;
	LA3: ;
	{
		Tident196021* LOC13;
		Tsym223841* LOC14;
		LOC13 = 0;
		LOC13 = considerquotedident_284010(n);
		LOC14 = 0;
		LOC14 = getcurrowner_278258();
		result = newsym_224656(kind, LOC13, LOC14, (*n).info);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym223841*, semidentvis_455962)(Tcontext278023* c, NU8 kind, Tnode223809* n, NU32 allowed) {
	Tsym223841* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 31))) goto LA3;
		{
			NIM_BOOL LOC7;
			NI LOC8;
			Tident196021* v;
			LOC7 = 0;
			LOC8 = 0;
			LOC8 = sonslen_226387(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_455916(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 &(1<<((((NU8) 1))&31)))!=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_194128((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 178), (*v).s);
			}
			LA12: ;
		}
		goto LA5;
		LA10: ;
		{
			illformedast_279240(n);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		result = newsymg_455916(kind, n, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym223841*, semidentwithpragma_455971)(Tcontext278023* c, NU8 kind, Tnode223809* n, NU32 allowed) {
	Tsym223841* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 43))) goto LA3;
		checksonslen_279260(n, ((NI) 2));
		result = semidentvis_455962(c, kind, (*n).kindU.S6.sons->data[((NI) 0)], allowed);
		switch (kind) {
		case ((NU8) 7):
		{
		}
		break;
		case ((NU8) 19):
		{
			pragma_295082(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3250);
		}
		break;
		case ((NU8) 8):
		{
			pragma_295082(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3251);
		}
		break;
		case ((NU8) 9):
		{
			pragma_295082(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3251);
		}
		break;
		case ((NU8) 10):
		{
			pragma_295082(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3252);
		}
		break;
		default:
		{
		}
		break;
		}
	}
	goto LA1;
	LA3: ;
	{
		result = semidentvis_455962(c, kind, n, allowed);
	}
	LA1: ;
	{
		if (!(gcmd_165134 == ((NU8) 7))) goto LA14;
	}
	LA14: ;
	return result;
}

static N_INLINE(void, suggestsym_396733)(Tlineinfo188352 info, Tsym223841* s) {
	{
		if (!(gidecmd_165119 == ((NU8) 4))) goto LA3;
		findusages_396665(info, s);
	}
	goto LA1;
	LA3: ;
	{
		if (!(gidecmd_165119 == ((NU8) 3))) goto LA6;
		finddefinition_396696(info, s);
	}
	goto LA1;
	LA6: ;
	{
		NIM_BOOL LOC9;
		LOC9 = 0;
		LOC9 = (gidecmd_165119 == ((NU8) 5));
		if (!(LOC9)) goto LA10;
		LOC9 = !((s == NIM_NIL));
		LA10: ;
		if (!LOC9) goto LA11;
		{
			NIM_BOOL LOC15;
			NimStringDesc* LOC18;
			Suggest393010 LOC19;
			LOC15 = 0;
			LOC15 = istracked_396569(info, ((*(*s).name).s ? (*(*s).name).s->Sup.len : 0));
			if (!LOC15) goto LA16;
			LOC18 = 0;
			LOC18 = HEX24_166755(((NU8) 3));
			memset((void*)(&LOC19), 0, sizeof(LOC19));
			symtosuggest_393404(s, NIM_FALSE, LOC18, (&LOC19));
			suggestresult_393414((&LOC19));
		}
		LA16: ;
		findusages_396665(info, s);
	}
	goto LA1;
	LA11: ;
	LA1: ;
}

N_NIMCALL(Tsym223841*, semidentdef_482542)(Tcontext278023* c, Tnode223809* n, NU8 kind) {
	Tsym223841* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_279280(c);
		if (!LOC3) goto LA4;
		result = semidentwithpragma_455971(c, kind, n, 2);
		(*result).flags |= ((NU32)1)<<((((NU8) 3))%(sizeof(NU32)*8));
	}
	goto LA1;
	LA4: ;
	{
		result = semidentwithpragma_455971(c, kind, n, 0);
	}
	LA1: ;
	suggestsym_396733((*n).info, result);
	return result;
}

N_NIMCALL(Ttype223847*, semgenericconstraints_469404)(Tcontext278023* c, Ttype223847* x) {
	Ttype223847* result;
	Ttypeseq223843* LOC1;
	TY391275 LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = (Ttypeseq223843*) newSeq((&NTI223843), 1);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = x;
	asgnRefNoCycle((void**) (&LOC1->data[0]), LOC2[0]);
	result = newtypewithsons_278807(c, ((NU8) 12), LOC1);
	return result;
}

N_NIMCALL(Tnode223809*, semgenericparamlist_469425)(Tcontext278023* c, Tnode223809* n, Ttype223847* father) {
	Tnode223809* result;
{	result = 0;
	result = copynode_227660(n);
	{
		if (!!(((*n).kind == ((NU8) 75)))) goto LA3;
		illformedast_279240(n);
		goto BeforeRet;
	}
	LA3: ;
	{
		NI i_469452;
		NI HEX3Atmp_469692;
		NI LOC6;
		NI res_469695;
		i_469452 = 0;
		HEX3Atmp_469692 = 0;
		LOC6 = 0;
		LOC6 = sonslen_226387(n);
		HEX3Atmp_469692 = (NI)(LOC6 - ((NI) 1));
		res_469695 = ((NI) 0);
		{
			while (1) {
				Tnode223809* a;
				NI L;
				Tnode223809* def;
				NI LOC13;
				Tnode223809* constraint;
				NI LOC20;
				Ttype223847* typ;
				if (!(res_469695 <= HEX3Atmp_469692)) goto LA8;
				i_469452 = res_469695;
				a = (*n).kindU.S6.sons->data[i_469452];
				{
					if (!!(((*a).kind == ((NU8) 35)))) goto LA11;
					illformedast_279240(n);
				}
				LA11: ;
				L = len_224098(a);
				LOC13 = 0;
				{
					if (!NIM_FALSE) goto LA16;
					LOC13 = ((NI) -1);
				}
				goto LA14;
				LA16: ;
				{
					NI LOC19;
					LOC19 = 0;
					LOC19 = len_224098(a);
					LOC13 = (NI)(LOC19 + ((NI) -1));
				}
				LA14: ;
				def = HEX5BHEX5D_224244(a, LOC13);
				LOC20 = 0;
				{
					if (!NIM_FALSE) goto LA23;
					LOC20 = ((NI) -2);
				}
				goto LA21;
				LA23: ;
				{
					NI LOC26;
					LOC26 = 0;
					LOC26 = len_224098(a);
					LOC20 = (NI)(LOC26 + ((NI) -2));
				}
				LA21: ;
				constraint = HEX5BHEX5D_224244(a, LOC20);
				typ = 0;
				{
					if (!!(((*constraint).kind == ((NU8) 1)))) goto LA29;
					typ = semtypenode_455269(c, constraint, NIM_NIL);
					{
						NIM_BOOL LOC33;
						NI LOC35;
						LOC33 = 0;
						LOC33 = !(((*typ).kind == ((NU8) 59)));
						if (LOC33) goto LA34;
						LOC35 = 0;
						LOC35 = len_226369(typ);
						LOC33 = (LOC35 == ((NI) 0));
						LA34: ;
						if (!LOC33) goto LA36;
						{
							if (!((*typ).kind == ((NU8) 8))) goto LA40;
							{
								Ttypeseq223843* LOC46;
								TY391275 LOC47;
								if (!((*(*typ).sons->data[((NI) 0)]).kind == ((NU8) 0))) goto LA44;
								LOC46 = 0;
								LOC46 = (Ttypeseq223843*) newSeq((&NTI223843), 1);
								memset((void*)LOC47, 0, sizeof(LOC47));
								LOC47[0] = newtypes_278221(((NU8) 0), c);
								asgnRefNoCycle((void**) (&LOC46->data[0]), LOC47[0]);
								typ = newtypewithsons_278807(c, ((NU8) 8), LOC46);
							}
							LA44: ;
						}
						goto LA38;
						LA40: ;
						{
							typ = semgenericconstraints_469404(c, typ);
						}
						LA38: ;
					}
					LA36: ;
				}
				LA29: ;
				{
					if (!!(((*def).kind == ((NU8) 1)))) goto LA51;
					def = semconstexpr_456485(c, def);
					{
						if (!(typ == NIM_NIL)) goto LA55;
						{
							Ttypeseq223843* LOC61;
							TY391275 LOC62;
							if (!!(((*(*def).typ).kind == ((NU8) 8)))) goto LA59;
							LOC61 = 0;
							LOC61 = (Ttypeseq223843*) newSeq((&NTI223843), 1);
							memset((void*)LOC62, 0, sizeof(LOC62));
							LOC62[0] = (*def).typ;
							asgnRefNoCycle((void**) (&LOC61->data[0]), LOC62[0]);
							typ = newtypewithsons_278807(c, ((NU8) 59), LOC61);
						}
						LA59: ;
					}
					goto LA53;
					LA55: ;
					{
						asgnRefNoCycle((void**) (&(*def).typ), skiptypes_227167((*def).typ, 256));
						{
							NIM_BOOL LOC66;
							LOC66 = 0;
							LOC66 = containsgenerictype_262310((*def).typ);
							if (!!(LOC66)) goto LA67;
							def = fitnode_455245(c, typ, def);
						}
						LA67: ;
					}
					LA53: ;
				}
				LA51: ;
				{
					if (!(typ == NIM_NIL)) goto LA71;
					typ = newtypes_278221(((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_469620;
					NI HEX3Atmp_469685;
					NI res_469688;
					j_469620 = 0;
					HEX3Atmp_469685 = 0;
					HEX3Atmp_469685 = (NI)(L - ((NI) 3));
					res_469688 = ((NI) 0);
					{
						while (1) {
							Ttype223847* finaltype;
							Tsym223841* s;
							Tnode223809* LOC102;
							if (!(res_469688 <= HEX3Atmp_469685)) goto LA79;
							j_469620 = res_469688;
							{
								if (!(j_469620 == ((NI) 0))) goto LA82;
								finaltype = typ;
							}
							goto LA80;
							LA82: ;
							{
								finaltype = copytype_226542(typ, (*typ).owner, NIM_FALSE);
							}
							LA80: ;
							{
								NIM_BOOL LOC87;
								Tsym223841* LOC91;
								LOC87 = 0;
								LOC87 = ((*finaltype).kind == ((NU8) 59));
								if (LOC87) goto LA88;
								LOC87 = (((*typ).flags &(1<<((((NU8) 25))&31)))!=0);
								LA88: ;
								if (!LOC87) goto LA89;
								LOC91 = 0;
								LOC91 = newsymg_455916(((NU8) 4), (*a).kindU.S6.sons->data[j_469620], c);
								s = linkto_224884(LOC91, finaltype);
							}
							goto LA85;
							LA89: ;
							{
								Tsym223841* LOC93;
								LOC93 = 0;
								LOC93 = newsymg_455916(((NU8) 7), (*a).kindU.S6.sons->data[j_469620], c);
								s = linkto_224884(LOC93, finaltype);
							}
							LA85: ;
							{
								if (!!(((*def).kind == ((NU8) 1)))) goto LA96;
								asgnRefNoCycle((void**) (&(*s).ast), def);
							}
							LA96: ;
							{
								if (!!((father == NIM_NIL))) goto LA100;
								addsonskipintlit_272729(father, (*s).typ);
							}
							LA100: ;
							(*s).position = len_224098(result);
							LOC102 = 0;
							LOC102 = newsymnode_225325(s);
							addson_225819(result, LOC102);
							{
								if (!!((((*s).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA105;
								adddecl_284607(c, s);
							}
							LA105: ;
							res_469688 += ((NI) 1);
						} LA79: ;
					}
				}
				res_469695 += ((NI) 1);
			} LA8: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, newproctype_467542)(Tcontext278023* c, Tlineinfo188352 info, Ttype223847* prev) {
	Ttype223847* result;
	Toptionentry278005* LOC1;
	Tnode223809* LOC2;
	result = 0;
	result = neworprevtype_462895(((NU8) 25), prev, c);
	LOC1 = 0;
	LOC1 = lastoptionentry_278190(c);
	(*result).callconv = (*LOC1).defaultcc;
	asgnRefNoCycle((void**) (&(*result).n), newnodei_225351(((NU8) 76), info));
	rawaddson_227498(result, NIM_NIL);
	LOC2 = 0;
	LOC2 = newnodei_225351(((NU8) 152), info);
	addson_225819((*result).n, LOC2);
	return result;
}

N_NIMCALL(Ttype223847*, semparamtype_467522)(Tcontext278023* c, Tnode223809* n, Tnode223809** constraint) {
	Ttype223847* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 40))) goto LA3;
		result = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		unsureAsgnRef((void**) (&(*constraint)), semnodekindconstraints_303679(n));
	}
	goto LA1;
	LA3: ;
	{
		result = semtypenode_455269(c, n, NIM_NIL);
	}
	LA1: ;
	return result;
}
N_NIMCALL(void, TMP3273)(void* p, NI op) {
	TY467453* a;
	a = (TY467453*)p;
	nimGCvisit((void*)(*a).genericparams466483, op);
	nimGCvisit((void*)(*a).paramname466485, op);
	nimGCvisit((void*)(*a).c466481, op);
}

N_CLOSURE(Ttype223847*, addimplicitgenericimpl_466501)(Ttype223847* typeclass, Tident196021* typid, void* ClEnv) {
	Ttype223847* result;
	TY467453* HEX3Aenvp_467468;
	Tident196021* finaltypid;
	Tsym223841* owner;
	Tsym223841* s;
	Tsym223841* LOC28;
	Tnode223809* LOC29;
{	result = 0;
	HEX3Aenvp_467468 = (TY467453*) ClEnv;
	{
		if (!((*HEX3Aenvp_467468).genericparams466483 == 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_467468).paramname466485->Sup.len + 5);
appendString(LOC10, (*HEX3Aenvp_467468).paramname466485);
appendString(LOC10, ((NimStringDesc*) &TMP3274));
		finaltypid = getident_196463(LOC10);
	}
	LA5: ;
	{
		NI i_466544;
		NI HEX3Atmp_466601;
		NI LOC12;
		NI res_466604;
		i_466544 = 0;
		HEX3Atmp_466601 = 0;
		LOC12 = 0;
		LOC12 = len_224098((*HEX3Aenvp_467468).genericparams466483);
		HEX3Atmp_466601 = (NI)(LOC12 - ((NI) 1));
		res_466604 = ((NI) 0);
		{
			while (1) {
				if (!(res_466604 <= HEX3Atmp_466601)) goto LA14;
				i_466544 = res_466604;
				{
					if (!((*(*(*(*(*HEX3Aenvp_467468).genericparams466483).kindU.S6.sons->data[i_466544]).kindU.S4.sym).name).Sup.id == (*finaltypid).Sup.id)) goto LA17;
					result = (*(*(*HEX3Aenvp_467468).genericparams466483).kindU.S6.sons->data[i_466544]).typ;
					goto BeforeRet;
				}
				LA17: ;
				res_466604 += ((NI) 1);
			} LA14: ;
		}
	}
	{
		if (!!(((*typeclass).sym == NIM_NIL))) goto LA21;
		owner = (*typeclass).sym;
	}
	goto LA19;
	LA21: ;
	{
		owner = getcurrowner_278258();
	}
	LA19: ;
	s = newsym_224656(((NU8) 7), finaltypid, owner, (*HEX3Aenvp_467468).info466486);
	{
		if (!(typid == NIM_NIL)) goto LA26;
		(*s).flags |= ((NU32)1)<<((((NU8) 29))%(sizeof(NU32)*8));
	}
	LA26: ;
	LOC28 = 0;
	LOC28 = linkto_224884(s, typeclass);
	(*typeclass).flags |= ((NU32)1)<<((((NU8) 24))%(sizeof(NU32)*8));
	(*s).position = len_224098((*HEX3Aenvp_467468).genericparams466483);
	LOC29 = 0;
	LOC29 = newsymnode_225325(s);
	addson_225819((*HEX3Aenvp_467468).genericparams466483, LOC29);
	result = typeclass;
	adddecl_284607((*HEX3Aenvp_467468).c466481, s);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, liftparamtype_466479)(Tcontext278023* c, NU8 prockind, Tnode223809* genericparams, Ttype223847* paramtype, NimStringDesc* paramname, Tlineinfo188352 info, NIM_BOOL anon) {
	Ttype223847* result;
	TY467453* HEX3Aenv_467510;
	NimStringDesc* LOC1;
	Tident196021* paramtypid;
{	result = 0;
	HEX3Aenv_467510 = 0;
	HEX3Aenv_467510 = (TY467453*) newObj((&NTI467511), sizeof(TY467453));
	asgnRefNoCycle((void**) (&(*HEX3Aenv_467510).genericparams466483), genericparams);
	LOC1 = 0;
	LOC1 = (*HEX3Aenv_467510).paramname466485; (*HEX3Aenv_467510).paramname466485 = copyStringRC1(paramname);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	(*HEX3Aenv_467510).info466486 = info;
	asgnRef((void**) (&(*HEX3Aenv_467510).c466481), c);
	{
		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):
	{
		TY466502 LOC14;
		Ttype223847* LOC15;
		memset((void*)(&LOC14), 0, sizeof(LOC14));
		LOC14.ClPrc = addimplicitgenericimpl_466501; LOC14.ClEnv = HEX3Aenv_467510;
		LOC15 = 0;
		LOC15 = newtypes_278221(((NU8) 12), (*HEX3Aenv_467510).c466481);
		result = LOC14.ClEnv? LOC14.ClPrc(LOC15, NIM_NIL, LOC14.ClEnv):((TMP3275)(LOC14.ClPrc))(LOC15, NIM_NIL);
	}
	break;
	case ((NU8) 59):
	{
		Ttype223847* base;
		Ttype223847* lifted_466656;
		Ttype223847* LOC25;
		TY466502 LOC37;
		Ttypeseq223843* LOC38;
		TY391275 LOC39;
		Ttype223847* LOC40;
		{
			if (!!(((*paramtype).n == NIM_NIL))) goto LA19;
			goto BeforeRet;
		}
		LA19: ;
		{
			if (!(((*paramtype).flags &(1<<((((NU8) 9))&31)))!=0)) goto LA23;
			goto BeforeRet;
		}
		LA23: ;
		LOC25 = 0;
		LOC25 = base_253039(paramtype);
		lifted_466656 = liftparamtype_466479((*HEX3Aenv_467510).c466481, prockind, (*HEX3Aenv_467510).genericparams466483, LOC25, (*HEX3Aenv_467510).paramname466485, (*HEX3Aenv_467510).info466486, NIM_FALSE);
		{
			if (!!((lifted_466656 == NIM_NIL))) goto LA28;
			base = lifted_466656;
		}
		goto LA26;
		LA28: ;
		{
			base = base_253039(paramtype);
		}
		LA26: ;
		{
			NIM_BOOL LOC33;
			LOC33 = 0;
			LOC33 = ismetatype_224821(base);
			if (!(LOC33)) goto LA34;
			LOC33 = (prockind == ((NU8) 17));
			LA34: ;
			if (!LOC33) goto LA35;
			localerror_194128((*HEX3Aenv_467510).info466486, ((NU16) 206), (*HEX3Aenv_467510).paramname466485);
		}
		LA35: ;
		memset((void*)(&LOC37), 0, sizeof(LOC37));
		LOC37.ClPrc = addimplicitgenericimpl_466501; LOC37.ClEnv = HEX3Aenv_467510;
		LOC38 = 0;
		LOC38 = (Ttypeseq223843*) newSeq((&NTI223843), 1);
		memset((void*)LOC39, 0, sizeof(LOC39));
		LOC39[0] = base;
		asgnRefNoCycle((void**) (&LOC38->data[0]), LOC39[0]);
		LOC40 = 0;
		LOC40 = newtypewithsons_278807((*HEX3Aenv_467510).c466481, ((NU8) 59), LOC38);
		result = LOC37.ClEnv? LOC37.ClPrc(LOC40, paramtypid, LOC37.ClEnv):((TMP3276)(LOC37.ClPrc))(LOC40, paramtypid);
		(*result).flags = ((*result).flags | 4194816);
	}
	break;
	case ((NU8) 8):
	{
		{
			TY466502 LOC55;
			Ttypeseq223843* LOC56;
			TY391275 LOC57;
			Ttype223847* LOC58;
			if (!!((((*paramtype).flags &(1<<((((NU8) 9))&31)))!=0))) goto LA44;
			{
				NIM_BOOL LOC48;
				NIM_BOOL LOC49;
				Ttype223847* LOC50;
				LOC48 = 0;
				LOC49 = 0;
				LOC50 = 0;
				LOC50 = base_253039(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_466473).Sup.id);
				LA52: ;
				if (!LOC48) goto LA53;
				paramtypid = NIM_NIL;
			}
			LA53: ;
			memset((void*)(&LOC55), 0, sizeof(LOC55));
			LOC55.ClPrc = addimplicitgenericimpl_466501; LOC55.ClEnv = HEX3Aenv_467510;
			LOC56 = 0;
			LOC56 = (Ttypeseq223843*) newSeq((&NTI223843), 1);
			memset((void*)LOC57, 0, sizeof(LOC57));
			LOC57[0] = base_253039(paramtype);
			asgnRefNoCycle((void**) (&LOC56->data[0]), LOC57[0]);
			LOC58 = 0;
			LOC58 = newtypewithsons_278807((*HEX3Aenv_467510).c466481, ((NU8) 8), LOC56);
			result = LOC55.ClEnv? LOC55.ClPrc(LOC58, paramtypid, LOC55.ClEnv):((TMP3277)(LOC55.ClPrc))(LOC58, paramtypid);
		}
		LA44: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			NI LOC62;
			LOC62 = 0;
			LOC62 = sonslen_226351(paramtype);
			if (!(LOC62 == ((NI) 1))) goto LA63;
			result = liftparamtype_466479((*HEX3Aenv_467510).c466481, prockind, (*HEX3Aenv_467510).genericparams466483, (*paramtype).sons->data[((NI) 0)], (*HEX3Aenv_467510).paramname466485, (*HEX3Aenv_467510).info466486, 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;
			Ttype223847* LOC70;
			Ttype223847* typ;
			Ttypeseq223843* LOC73;
			TY391275 LOC74;
			TY466502 LOC75;
			LOC68 = 0;
			LOC68 = ((*paramtype).kind == ((NU8) 24));
			if (!(LOC68)) goto LA69;
			LOC70 = 0;
			LOC70 = lastson_226426(paramtype);
			LOC68 = ((*LOC70).kind == ((NU8) 0));
			LA69: ;
			if (!LOC68) goto LA71;
			LOC73 = 0;
			LOC73 = (Ttypeseq223843*) newSeq((&NTI223843), 1);
			memset((void*)LOC74, 0, sizeof(LOC74));
			LOC74[0] = newtypes_278221((*paramtype).kind, (*HEX3Aenv_467510).c466481);
			asgnRefNoCycle((void**) (&LOC73->data[0]), LOC74[0]);
			typ = newtypewithsons_278807((*HEX3Aenv_467510).c466481, ((NU8) 51), LOC73);
			memset((void*)(&LOC75), 0, sizeof(LOC75));
			LOC75.ClPrc = addimplicitgenericimpl_466501; LOC75.ClEnv = HEX3Aenv_467510;
			result = LOC75.ClEnv? LOC75.ClPrc(typ, paramtypid, LOC75.ClEnv):((TMP3278)(LOC75.ClPrc))(typ, paramtypid);
		}
		goto LA66;
		LA71: ;
		{
			{
				NI i_466800;
				NI HEX3Atmp_467422;
				NI LOC78;
				NI res_467425;
				i_466800 = 0;
				HEX3Atmp_467422 = 0;
				LOC78 = 0;
				LOC78 = len_226369(paramtype);
				HEX3Atmp_467422 = (LOC78 - 1);
				res_467425 = ((NI) 0);
				{
					while (1) {
						Ttype223847* lifted;
						if (!(res_467425 <= HEX3Atmp_467422)) goto LA80;
						i_466800 = res_467425;
						{
							NimStringDesc* LOC85;
							if (!((*paramtype).sons->data[i_466800] == paramtype)) goto LA83;
							LOC85 = 0;
							LOC85 = typetostring_253032(paramtype, ((NU8) 0));
							globalerror_194107((*HEX3Aenv_467510).info466486, ((NU16) 127), LOC85);
						}
						LA83: ;
						lifted = liftparamtype_466479((*HEX3Aenv_467510).c466481, prockind, (*HEX3Aenv_467510).genericparams466483, (*paramtype).sons->data[i_466800], (*HEX3Aenv_467510).paramname466485, (*HEX3Aenv_467510).info466486, NIM_FALSE);
						{
							if (!!((lifted == NIM_NIL))) goto LA88;
							asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_466800]), lifted);
							result = paramtype;
						}
						LA88: ;
						res_467425 += ((NI) 1);
					} LA80: ;
				}
			}
		}
		LA66: ;
	}
	break;
	case ((NU8) 10):
	{
		Ttypeseq223843* LOC109;
		TY278864 LOC110;
		TY466502 LOC111;
		result = newtypes_278221(((NU8) 9), (*HEX3Aenv_467510).c466481);
		rawaddson_227498(result, paramtype);
		{
			NI i_466835;
			NI HEX3Atmp_467430;
			NI LOC92;
			NI res_467433;
			i_466835 = 0;
			HEX3Atmp_467430 = 0;
			LOC92 = 0;
			LOC92 = sonslen_226351(paramtype);
			HEX3Atmp_467430 = (NI)(LOC92 - ((NI) 2));
			res_467433 = ((NI) 0);
			{
				while (1) {
					if (!(res_467433 <= HEX3Atmp_467430)) goto LA94;
					i_466835 = res_467433;
					{
						Tnode223809* x;
						Ttype223847* LOC99;
						if (!((*(*paramtype).sons->data[i_466835]).kind == ((NU8) 59))) goto LA97;
						x = copynode_227660(emptynode_224807);
						asgnRefNoCycle((void**) (&(*x).typ), (*paramtype).sons->data[i_466835]);
						LOC99 = 0;
						LOC99 = maketypefromexpr_278729((*HEX3Aenv_467510).c466481, x);
						rawaddson_227498(result, LOC99);
					}
					goto LA95;
					LA97: ;
					{
						Ttype223847* LOC101;
						LOC101 = 0;
						LOC101 = newtypes_278221(((NU8) 58), (*HEX3Aenv_467510).c466481);
						rawaddson_227498(result, LOC101);
					}
					LA95: ;
					res_467433 += ((NI) 1);
				} LA94: ;
			}
		}
		{
			Ttype223847* LOC104;
			Ttype223847* LOC107;
			TY466502 LOC108;
			LOC104 = 0;
			LOC104 = lastson_226426(paramtype);
			if (!((*LOC104).kind == ((NU8) 52))) goto LA105;
			(*result).kind = ((NU8) 53);
			LOC107 = 0;
			LOC107 = lastson_226426(paramtype);
			rawaddson_227498(result, LOC107);
			memset((void*)(&LOC108), 0, sizeof(LOC108));
			LOC108.ClPrc = addimplicitgenericimpl_466501; LOC108.ClEnv = HEX3Aenv_467510;
			result = LOC108.ClEnv? LOC108.ClPrc(result, paramtypid, LOC108.ClEnv):((TMP3279)(LOC108.ClPrc))(result, paramtypid);
			goto BeforeRet;
		}
		LA105: ;
		result = instgenericcontainer_458151((*HEX3Aenv_467510).c466481, (*(*paramtype).sym).info, result, NIM_TRUE);
		LOC109 = 0;
		LOC109 = (Ttypeseq223843*) newSeq((&NTI223843), 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_278807((*HEX3Aenv_467510).c466481, ((NU8) 54), LOC109);
		memset((void*)(&LOC111), 0, sizeof(LOC111));
		LOC111.ClPrc = addimplicitgenericimpl_466501; LOC111.ClEnv = HEX3Aenv_467510;
		result = LOC111.ClEnv? LOC111.ClPrc(result, paramtypid, LOC111.ClEnv):((TMP3280)(LOC111.ClPrc))(result, paramtypid);
	}
	break;
	case ((NU8) 49):
	{
		{
			TY466502 LOC131;
			if (!((*paramtype).callconv == ((NU8) 5))) goto LA115;
			{
				if (!!(((409600 &(1<<((prockind)&31)))!=0))) goto LA119;
				localerror_194128((*HEX3Aenv_467510).info466486, ((NU16) 208), ((NimStringDesc*) &TMP3115));
			}
			LA119: ;
			{
				NI LOC123;
				Ttype223847* lifted;
				Ttype223847* LOC126;
				LOC123 = 0;
				LOC123 = len_226369(paramtype);
				if (!(LOC123 == ((NI) 1))) goto LA124;
				LOC126 = 0;
				LOC126 = base_253039(paramtype);
				lifted = liftparamtype_466479((*HEX3Aenv_467510).c466481, prockind, (*HEX3Aenv_467510).genericparams466483, LOC126, (*HEX3Aenv_467510).paramname466485, (*HEX3Aenv_467510).info466486, NIM_FALSE);
				{
					if (!!((lifted == NIM_NIL))) goto LA129;
					asgnRefNoCycle((void**) (&(*paramtype).sons->data[((NI) 0)]), lifted);
				}
				LA129: ;
			}
			LA124: ;
			memset((void*)(&LOC131), 0, sizeof(LOC131));
			LOC131.ClPrc = addimplicitgenericimpl_466501; LOC131.ClEnv = HEX3Aenv_467510;
			result = LOC131.ClEnv? LOC131.ClPrc(paramtype, paramtypid, LOC131.ClEnv):((TMP3281)(LOC131.ClPrc))(paramtype, paramtypid);
		}
		LA115: ;
	}
	break;
	case ((NU8) 11):
	{
		Ttype223847* liftbody;
		Ttype223847* LOC154;
		{
			Ttype223847* LOC135;
			Ttype223847* cp;
			Tsym223841* LOC138;
			TY466502 LOC139;
			LOC135 = 0;
			LOC135 = lastson_226426(paramtype);
			if (!((*LOC135).kind == ((NU8) 52))) goto LA136;
			LOC138 = 0;
			LOC138 = getcurrowner_278258();
			cp = copytype_226542(paramtype, LOC138, NIM_FALSE);
			(*cp).kind = ((NU8) 53);
			memset((void*)(&LOC139), 0, sizeof(LOC139));
			LOC139.ClPrc = addimplicitgenericimpl_466501; LOC139.ClEnv = HEX3Aenv_467510;
			result = LOC139.ClEnv? LOC139.ClPrc(cp, paramtypid, LOC139.ClEnv):((TMP3282)(LOC139.ClPrc))(cp, paramtypid);
			goto BeforeRet;
		}
		LA136: ;
		{
			NI i_466922;
			NI HEX3Atmp_467438;
			NI LOC141;
			NI res_467441;
			i_466922 = 0;
			HEX3Atmp_467438 = 0;
			LOC141 = 0;
			LOC141 = len_226369(paramtype);
			HEX3Atmp_467438 = (NI)(LOC141 - ((NI) 2));
			res_467441 = ((NI) 1);
			{
				while (1) {
					Ttype223847* lifted;
					if (!(res_467441 <= HEX3Atmp_467438)) goto LA143;
					i_466922 = res_467441;
					lifted = liftparamtype_466479((*HEX3Aenv_467510).c466481, prockind, (*HEX3Aenv_467510).genericparams466483, (*paramtype).sons->data[i_466922], (*HEX3Aenv_467510).paramname466485, (*HEX3Aenv_467510).info466486, NIM_FALSE);
					{
						if (!!((lifted == NIM_NIL))) goto LA146;
						asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_466922]), lifted);
						result = paramtype;
						{
							Ttype223847* LOC150;
							NimStringDesc* LOC153;
							LOC150 = 0;
							LOC150 = lastson_226426(result);
							if (!!((((*LOC150).flags &(1<<((((NU8) 19))&31)))!=0))) goto LA151;
							LOC153 = 0;
							LOC153 = HEX24_194279(TMP3283);
							internalerror_194191(LOC153);
						}
						LA151: ;
					}
					LA146: ;
					res_467441 += ((NI) 1);
				} LA143: ;
			}
		}
		LOC154 = 0;
		LOC154 = lastson_226426(paramtype);
		liftbody = liftparamtype_466479((*HEX3Aenv_467510).c466481, prockind, (*HEX3Aenv_467510).genericparams466483, LOC154, (*HEX3Aenv_467510).paramname466485, (*HEX3Aenv_467510).info466486, NIM_TRUE);
		{
			if (!!((liftbody == NIM_NIL))) goto LA157;
			result = liftbody;
			{
				NimStringDesc* LOC163;
				if (!!((((*result).flags &(1<<((((NU8) 19))&31)))!=0))) goto LA161;
				LOC163 = 0;
				LOC163 = HEX24_194279(TMP3283);
				internalerror_194191(LOC163);
			}
			LA161: ;
		}
		LA157: ;
	}
	break;
	case ((NU8) 9):
	{
		{
			NI i_467001;
			NI HEX3Atmp_467446;
			NI LOC166;
			NI res_467449;
			i_467001 = 0;
			HEX3Atmp_467446 = 0;
			LOC166 = 0;
			LOC166 = len_226369(paramtype);
			HEX3Atmp_467446 = (LOC166 - 1);
			res_467449 = ((NI) 1);
			{
				while (1) {
					Ttype223847* lifted;
					if (!(res_467449 <= HEX3Atmp_467446)) goto LA168;
					i_467001 = res_467449;
					lifted = liftparamtype_466479((*HEX3Aenv_467510).c466481, prockind, (*HEX3Aenv_467510).genericparams466483, (*paramtype).sons->data[i_467001], (*HEX3Aenv_467510).paramname466485, (*HEX3Aenv_467510).info466486, NIM_FALSE);
					{
						if (!!((lifted == NIM_NIL))) goto LA171;
						asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_467001]), lifted);
					}
					LA171: ;
					res_467449 += ((NI) 1);
				} LA168: ;
			}
		}
	}
	break;
	case ((NU8) 52):
	case ((NU8) 51):
	case ((NU8) 55):
	case ((NU8) 56):
	case ((NU8) 57):
	{
		TY466502 LOC174;
		Tsym223841* LOC175;
		Ttype223847* LOC176;
		memset((void*)(&LOC174), 0, sizeof(LOC174));
		LOC174.ClPrc = addimplicitgenericimpl_466501; LOC174.ClEnv = HEX3Aenv_467510;
		LOC175 = 0;
		LOC175 = getcurrowner_278258();
		LOC176 = 0;
		LOC176 = copytype_226542(paramtype, LOC175, NIM_TRUE);
		result = LOC174.ClEnv? LOC174.ClPrc(LOC176, paramtypid, LOC174.ClEnv):((TMP3284)(LOC174.ClPrc))(LOC176, paramtypid);
	}
	break;
	case ((NU8) 6):
	{
		{
			TY466502 LOC182;
			Ttype223847* LOC183;
			if (!!(((393216 &(1<<((prockind)&31)))!=0))) goto LA180;
			memset((void*)(&LOC182), 0, sizeof(LOC182));
			LOC182.ClPrc = addimplicitgenericimpl_466501; LOC182.ClEnv = HEX3Aenv_467510;
			LOC183 = 0;
			LOC183 = newtypes_278221(((NU8) 58), (*HEX3Aenv_467510).c466481);
			result = LOC182.ClEnv? LOC182.ClPrc(LOC183, paramtypid, LOC182.ClEnv):((TMP3285)(LOC182.ClPrc))(LOC183, paramtypid);
		}
		LA180: ;
	}
	break;
	case ((NU8) 12):
	{
		markused_386253((*HEX3Aenv_467510).info466486, (*paramtype).sym);
		{
			if (!(((*paramtype).flags &(1<<((((NU8) 25))&31)))!=0)) goto LA187;
			(*paramtype).flags &= ~(((NU32)1) << ((((NU8) 25)) % (sizeof(NU32)*8)));
			(*(*paramtype).sym).kind = ((NU8) 7);
		}
		LA187: ;
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, semproctypenode_467551)(Tcontext278023* c, Tnode223809* n, Tnode223809* genericparams, Ttype223847* prev, NU8 kind, NIM_BOOL istype) {
	Ttype223847* result;
	Intset220056 cl;
	Intset220056 check;
	NI counter;
	Ttype223847* r;
	result = 0;
	memset((void*)(&cl), 0, sizeof(cl));
	checkminsonslen_279270(n, ((NI) 1));
	result = newproctype_467542(c, (*n).info, prev);
	{
		NIM_BOOL LOC3;
		NI LOC5;
		LOC3 = 0;
		LOC3 = !((genericparams == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = sonslen_226387(genericparams);
		LOC3 = (LOC5 == ((NI) 0));
		LA4: ;
		if (!LOC3) goto LA6;
		chckNil((void*)(&cl));
		memset((void*)(&cl), 0, sizeof(cl));
		initintset_220927((&cl));
	}
	LA6: ;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_220927((&check));
	counter = ((NI) 0);
	{
		NI i_467588;
		NI HEX3Atmp_467983;
		NI LOC9;
		NI res_467986;
		i_467588 = 0;
		HEX3Atmp_467983 = 0;
		LOC9 = 0;
		LOC9 = len_224098(n);
		HEX3Atmp_467983 = (NI)(LOC9 - ((NI) 1));
		res_467986 = ((NI) 1);
		{
			while (1) {
				if (!(res_467986 <= HEX3Atmp_467983)) goto LA11;
				i_467588 = res_467986;
				{
					Tnode223809* a;
					Ttype223847* typ;
					Tnode223809* def;
					Tnode223809* constraint;
					NI length;
					NIM_BOOL hastype;
					NIM_BOOL hasdefault;
					a = (*n).kindU.S6.sons->data[i_467588];
					{
						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 &(1<<((((NU8) 2))&31)))!=0);
							LA20: ;
							if (!LOC19) goto LA21;
							goto LA12;
						}
						LA21: ;
						illformedast_279240(a);
					}
					LA15: ;
					checkminsonslen_279270(a, ((NI) 3));
					typ = NIM_NIL;
					def = NIM_NIL;
					constraint = NIM_NIL;
					length = sonslen_226387(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_467522(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))], &constraint);
					}
					LA25: ;
					{
						if (!hasdefault) goto LA29;
						def = semexprwithtype_455211(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_262310(typ);
								if (!!(LOC40)) goto LA41;
								def = fitnode_455245(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_194139((*a).info, ((NimStringDesc*) &TMP3271));
						}
						LA51: ;
						{
							if (!((393216 &(1<<((kind)&31)))!=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_245059(n, 0);
							message_194161((*a).info, ((NU16) 251), LOC62);
						}
						LA60: ;
						typ = newtypes_278221(tdef, c);
					}
					LA47: ;
					{
						Ttype223847* LOC65;
						LOC65 = 0;
						LOC65 = skiptypes_227167(typ, 2048);
						if (!((*LOC65).kind == ((NU8) 3))) goto LA66;
						goto LA12;
					}
					LA66: ;
					{
						NI j_467717;
						NI HEX3Atmp_467976;
						NI res_467979;
						j_467717 = 0;
						HEX3Atmp_467976 = 0;
						HEX3Atmp_467976 = (NI)(length - ((NI) 3));
						res_467979 = ((NI) 0);
						{
							while (1) {
								Tsym223841* arg;
								Ttype223847* lifted;
								Ttype223847* finaltype;
								Tnode223809* LOC87;
								if (!(res_467979 <= HEX3Atmp_467976)) goto LA70;
								j_467717 = res_467979;
								arg = newsymg_455916(((NU8) 3), (*a).kindU.S6.sons->data[j_467717], c);
								lifted = liftparamtype_466479(c, kind, genericparams, typ, (*(*arg).name).s, (*arg).info, NIM_FALSE);
								{
									if (!!((lifted == NIM_NIL))) goto LA73;
									finaltype = lifted;
								}
								goto LA71;
								LA73: ;
								{
									finaltype = skipintlit_272696(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_228028(def));
								}
								LA80: ;
								{
									NIM_BOOL LOC84;
									LOC84 = 0;
									LOC84 = containsorincl_220898((&check), (*(*arg).name).Sup.id);
									if (!LOC84) goto LA85;
									localerror_194128((*(*a).kindU.S6.sons->data[j_467717]).info, ((NU16) 41), (*(*arg).name).s);
								}
								LA85: ;
								LOC87 = 0;
								LOC87 = newsymnode_225325(arg);
								addson_225819((*result).n, LOC87);
								rawaddson_227498(result, finaltype);
								addparamorresult_457885(c, arg, kind);
								{
									if (!(gcmd_165134 == ((NU8) 7))) goto LA90;
								}
								LA90: ;
								res_467979 += ((NI) 1);
							} LA70: ;
						}
					}
				} LA12: ;
				res_467986 += ((NI) 1);
			} LA11: ;
		}
	}
	r = 0;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA94;
		r = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	}
	goto LA92;
	LA94: ;
	{
		if (!(kind == ((NU8) 14))) goto LA97;
		r = newtypes_278221(((NU8) 6), c);
		message_194161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3286));
	}
	goto LA92;
	LA97: ;
	LA92: ;
	{
		if (!!((r == NIM_NIL))) goto LA101;
		{
			Ttype223847* LOC105;
			LOC105 = 0;
			LOC105 = skiptypes_227167(r, 2048);
			if (!!(((*LOC105).kind == ((NU8) 3)))) goto LA106;
			{
				if (!((*r).kind == ((NU8) 58))) goto LA110;
				r = newtypes_278221(((NU8) 6), c);
			}
			goto LA108;
			LA110: ;
			{
				if (!!(((*r).kind == ((NU8) 6)))) goto LA113;
				{
					NIM_BOOL LOC117;
					Ttype223847* lifted;
					LOC117 = 0;
					LOC117 = ((*r).sym == NIM_NIL);
					if (LOC117) goto LA118;
					LOC117 = !((((*(*r).sym).flags &(1<<((((NU8) 29))&31)))!=0));
					LA118: ;
					if (!LOC117) goto LA119;
					lifted = liftparamtype_466479(c, kind, genericparams, r, ((NimStringDesc*) &TMP3142), (*(*n).kindU.S6.sons->data[((NI) 0)]).info, NIM_FALSE);
					{
						if (!!((lifted == NIM_NIL))) goto LA123;
						r = lifted;
						(*r).flags |= ((NU32)1)<<((((NU8) 10))%(sizeof(NU32)*8));
					}
					LA123: ;
				}
				LA119: ;
				r = skipintlit_272696(r);
				{
					if (!(kind == ((NU8) 14))) goto LA127;
					{
						NIM_BOOL LOC131;
						Ttypeseq223843* LOC134;
						TY391275 LOC135;
						LOC131 = 0;
						LOC131 = isinlineiterator_391087(r);
						if (!!(LOC131)) goto LA132;
						LOC134 = 0;
						LOC134 = (Ttypeseq223843*) newSeq((&NTI223843), 1);
						memset((void*)LOC135, 0, sizeof(LOC135));
						LOC135[0] = r;
						asgnRefNoCycle((void**) (&LOC134->data[0]), LOC135[0]);
						r = newtypewithsons_278807(c, ((NU8) 49), LOC134);
					}
					LA132: ;
				}
				LA127: ;
			}
			goto LA108;
			LA113: ;
			LA108: ;
			asgnRefNoCycle((void**) (&(*result).sons->data[((NI) 0)]), r);
			asgnRefNoCycle((void**) (&(*(*result).n).typ), r);
		}
		LA106: ;
	}
	LA101: ;
	{
		if (!!((genericparams == NIM_NIL))) goto LA138;
		{
			Tnode223809* n_467943;
			n_467943 = 0;
			{
				NI i_467995;
				NI HEX3Atmp_467997;
				NI LOC142;
				NI res_467999;
				i_467995 = 0;
				HEX3Atmp_467997 = 0;
				LOC142 = 0;
				LOC142 = len_224098(genericparams);
				HEX3Atmp_467997 = (LOC142 - 1);
				res_467999 = ((NI) 0);
				{
					while (1) {
						if (!(res_467999 <= HEX3Atmp_467997)) goto LA144;
						i_467995 = res_467999;
						n_467943 = (*genericparams).kindU.S6.sons->data[i_467995];
						{
							if (!(((*(*(*n_467943).kindU.S4.sym).typ).flags &(1<<((((NU8) 25))&31)))!=0)) goto LA147;
							(*(*n_467943).kindU.S4.sym).kind = ((NU8) 7);
							(*(*(*n_467943).kindU.S4.sym).typ).flags &= ~(((NU32)1) << ((((NU8) 25)) % (sizeof(NU32)*8)));
						}
						LA147: ;
						res_467999 += ((NI) 1);
					} LA144: ;
				}
			}
		}
	}
	LA138: ;
	return result;
}

N_NIMCALL(void, semparamlist_455284)(Tcontext278023* c, Tnode223809* n, Tnode223809* genericparams, Tsym223841* s) {
	asgnRefNoCycle((void**) (&(*s).typ), semproctypenode_467551(c, n, genericparams, NIM_NIL, (*s).kind, NIM_FALSE));
	{
		if (!!(((393216 &(1<<(((*s).kind)&31)))!=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_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3287));
		}
		LA9: ;
	}
	LA3: ;
}

N_NIMCALL(Tnode223809*, newparam_474084)(Templctx470056* c, Tnode223809* n, Tsym223841* s) {
	Tnode223809* result;
	Tsym223841* 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_225338(x, (*n).info);
	return result;
}

N_NIMCALL(Tnode223809*, handlesym_474401)(Templctx470056* c, Tnode223809* n, Tsym223841* s) {
	Tnode223809* 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_474084(c, n, s);
		}
		goto LA5;
		LA9: ;
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = contains_220829((*c).tobind, (*s).Sup.id);
			if (!LOC12) goto LA13;
			result = symchoice_469790((*c).c, n, s, ((NU8) 0));
		}
		goto LA5;
		LA13: ;
		{
			NIM_BOOL LOC16;
			NIM_BOOL LOC18;
			NI LOC19;
			Tnode223809* LOC23;
			LOC16 = 0;
			LOC16 = ((*s).kind == ((NU8) 18));
			if (!(LOC16)) goto LA17;
			LOC18 = 0;
			LOC19 = 0;
			LOC19 = len_226369((*s).typ);
			LOC18 = (LOC19 == ((NI) 1));
			if (LOC18) goto LA20;
			LOC18 = (((*s).flags &(1<<((((NU8) 25))&31)))!=0);
			LA20: ;
			LOC16 = LOC18;
			LA17: ;
			if (!LOC16) goto LA21;
			LOC23 = 0;
			LOC23 = semtemplateexpr_456062((*c).c, n, s, 512);
			result = sempatternbody_474070(c, LOC23);
		}
		goto LA5;
		LA21: ;
		{
		}
		LA5: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode223809*, sembindstmt_469895)(Tcontext278023* c, Tnode223809* n, Intset220056* tobind) {
	Tnode223809* result;
	result = 0;
	{
		NI i_469921;
		NI HEX3Atmp_469964;
		NI LOC2;
		NI res_469967;
		i_469921 = 0;
		HEX3Atmp_469964 = 0;
		LOC2 = 0;
		LOC2 = len_224098(n);
		HEX3Atmp_469964 = (LOC2 - 1);
		res_469967 = ((NI) 0);
		{
			while (1) {
				Tnode223809* a;
				Tsym223841* s;
				if (!(res_469967 <= HEX3Atmp_469964)) goto LA4;
				i_469921 = res_469967;
				a = (*n).kindU.S6.sons->data[i_469921];
				s = qualifiedlookup_284864(c, a, 2);
				{
					Tnode223809* sc;
					if (!!((s == NIM_NIL))) goto LA7;
					sc = symchoice_469790(c, n, s, ((NU8) 0));
					{
						if (!((*sc).kind == ((NU8) 3))) goto LA11;
						incl_220856(tobind, (*(*sc).kindU.S4.sym).Sup.id);
					}
					goto LA9;
					LA11: ;
					{
						{
							Tnode223809* x_469949;
							x_469949 = 0;
							{
								NI i_469957;
								NI HEX3Atmp_469959;
								NI LOC16;
								NI res_469961;
								i_469957 = 0;
								HEX3Atmp_469959 = 0;
								LOC16 = 0;
								LOC16 = len_224098(sc);
								HEX3Atmp_469959 = (LOC16 - 1);
								res_469961 = ((NI) 0);
								{
									while (1) {
										if (!(res_469961 <= HEX3Atmp_469959)) goto LA18;
										i_469957 = res_469961;
										x_469949 = (*sc).kindU.S6.sons->data[i_469957];
										incl_220856(tobind, (*(*x_469949).kindU.S4.sym).Sup.id);
										res_469961 += ((NI) 1);
									} LA18: ;
								}
							}
						}
					}
					LA9: ;
				}
				goto LA5;
				LA7: ;
				{
					illformedast_279240(a);
				}
				LA5: ;
				res_469967 += ((NI) 1);
			} LA4: ;
		}
	}
	result = newnodei_225351(((NU8) 1), (*n).info);
	return result;
}

N_NIMCALL(Tnode223809*, expectparam_474464)(Templctx470056* c, Tnode223809* n) {
	Tnode223809* result;
	Tsym223841* s;
	result = 0;
	s = qualifiedlookup_284864((*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_474084(c, n, s);
	}
	goto LA1;
	LA7: ;
	{
		localerror_194128((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3115));
		result = n;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, stupidstmtlistexpr_474506)(Tnode223809* n) {
	NIM_BOOL result;
{	result = 0;
	{
		NI i_474521;
		NI HEX3Atmp_474534;
		NI LOC2;
		NI res_474537;
		i_474521 = 0;
		HEX3Atmp_474534 = 0;
		LOC2 = 0;
		LOC2 = len_224098(n);
		HEX3Atmp_474534 = (NI)(LOC2 - ((NI) 2));
		res_474537 = ((NI) 0);
		{
			while (1) {
				if (!(res_474537 <= HEX3Atmp_474534)) goto LA4;
				i_474521 = res_474537;
				{
					Tnode223809* LOC7;
					LOC7 = 0;
					LOC7 = HEX5BHEX5D_224244(n, i_474521);
					if (!!(((*LOC7).kind == ((NU8) 1) || (*LOC7).kind == ((NU8) 125)))) goto LA8;
					result = NIM_FALSE;
					goto BeforeRet;
				}
				LA8: ;
				res_474537 += ((NI) 1);
			} LA4: ;
		}
	}
	result = NIM_TRUE;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, sempatternbody_474070)(Templctx470056* c, Tnode223809* n) {
	Tnode223809* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym223841* s;
		s = qualifiedlookup_284864((*c).c, n, 0);
		result = handlesym_474401(c, n, s);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_469895((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 40):
	{
		{
			NI LOC7;
			LOC7 = 0;
			LOC7 = len_224098(n);
			if (!!((LOC7 == ((NI) 2)))) goto LA8;
			localerror_194128((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3115));
		}
		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_474070(c, (*n).kindU.S6.sons->data[((NI) 0)]));
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), expectparam_474464(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		}
		goto LA5;
		LA11: ;
		{
			NIM_BOOL LOC14;
			Tnode223809* 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*) &TMP3118))) goto LA20;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), sempatternbody_474070(c, (*n).kindU.S6.sons->data[((NI) 0)]));
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 1)]), expectparam_474464(c, (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 1)]));
			}
			goto LA18;
			LA20: ;
			{
				localerror_194128((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3115));
			}
			LA18: ;
		}
		goto LA5;
		LA16: ;
		{
			localerror_194128((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3115));
		}
		LA5: ;
	}
	break;
	case ((NU8) 115):
	case ((NU8) 126):
	{
		{
			NIM_BOOL LOC27;
			Tnode223809* LOC30;
			LOC27 = 0;
			LOC27 = stupidstmtlistexpr_474506(n);
			if (!LOC27) goto LA28;
			LOC30 = 0;
			LOC30 = lastson_226406(n);
			result = sempatternbody_474070(c, LOC30);
		}
		goto LA25;
		LA28: ;
		{
			{
				NI i_474604;
				NI HEX3Atmp_474779;
				NI LOC33;
				NI res_474782;
				i_474604 = 0;
				HEX3Atmp_474779 = 0;
				LOC33 = 0;
				LOC33 = sonslen_226387(n);
				HEX3Atmp_474779 = (NI)(LOC33 - ((NI) 1));
				res_474782 = ((NI) 0);
				{
					while (1) {
						if (!(res_474782 <= HEX3Atmp_474779)) goto LA35;
						i_474604 = res_474782;
						asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_474604]), sempatternbody_474070(c, (*n).kindU.S6.sons->data[i_474604]));
						res_474782 += ((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):
	{
		Tsym223841* s;
		s = qualifiedlookup_284864((*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_220829((*c).tobind, (*s).Sup.id);
				if (!LOC48) goto LA49;
			}
			goto LA41;
			LA49: ;
			{
				NIM_BOOL LOC52;
				NIM_BOOL LOC54;
				NI LOC55;
				Tnode223809* LOC59;
				LOC52 = 0;
				LOC52 = ((*s).kind == ((NU8) 18));
				if (!(LOC52)) goto LA53;
				LOC54 = 0;
				LOC55 = 0;
				LOC55 = len_226369((*s).typ);
				LOC54 = (LOC55 == ((NI) 1));
				if (LOC54) goto LA56;
				LOC54 = (((*s).flags &(1<<((((NU8) 25))&31)))!=0);
				LA56: ;
				LOC52 = LOC54;
				LA53: ;
				if (!LOC52) goto LA57;
				LOC59 = 0;
				LOC59 = semtemplateexpr_456062((*c).c, n, s, 512);
				result = sempatternbody_474070(c, LOC59);
				goto BeforeRet;
			}
			goto LA41;
			LA57: ;
			LA41: ;
		}
		LA39: ;
		{
			NIM_BOOL LOC62;
			Tnode223809* 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*) &TMP3288));
				if (LOC68) goto LA69;
				LOC68 = eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3289));
				LA69: ;
				if (!LOC68) goto LA70;
				LOC72 = 0;
				LOC72 = len_224098(n);
				result = newnodei_225407(((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_474070(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), expectparam_474464(c, (*n).kindU.S6.sons->data[((NI) 2)]));
				goto BeforeRet;
			}
			goto LA66;
			LA70: ;
			{
				NI LOC76;
				if (!eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3118))) goto LA74;
				LOC76 = 0;
				LOC76 = len_224098(n);
				result = newnodei_225407(((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_474070(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), sempatternbody_474070(c, (*n).kindU.S6.sons->data[((NI) 2)]));
				goto BeforeRet;
			}
			goto LA66;
			LA74: ;
			LA66: ;
		}
		LA64: ;
		{
			NIM_BOOL LOC79;
			Tnode223809* 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*) &TMP3290))) goto LA85;
				LOC87 = 0;
				LOC87 = len_224098(n);
				result = newnodei_225407(((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_474070(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				goto BeforeRet;
			}
			LA85: ;
		}
		LA81: ;
		{
			NI i_474741;
			NI HEX3Atmp_474787;
			NI LOC89;
			NI res_474790;
			i_474741 = 0;
			HEX3Atmp_474787 = 0;
			LOC89 = 0;
			LOC89 = sonslen_226387(n);
			HEX3Atmp_474787 = (NI)(LOC89 - ((NI) 1));
			res_474790 = ((NI) 0);
			{
				while (1) {
					if (!(res_474790 <= HEX3Atmp_474787)) goto LA91;
					i_474741 = res_474790;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_474741]), sempatternbody_474070(c, (*n).kindU.S6.sons->data[i_474741]));
					res_474790 += ((NI) 1);
				} LA91: ;
			}
		}
	}
	break;
	default:
	{
		switch ((*n).kind) {
		case ((NU8) 45):
		case ((NU8) 53):
		{
			Tsym223841* s;
			s = qualifiedlookup_284864((*c).c, n, 0);
			{
				if (!!((s == NIM_NIL))) goto LA96;
				{
					NIM_BOOL LOC100;
					LOC100 = 0;
					LOC100 = contains_220829((*c).tobind, (*s).Sup.id);
					if (!LOC100) goto LA101;
					result = symchoice_469790((*c).c, n, s, ((NU8) 0));
					goto BeforeRet;
				}
				goto LA98;
				LA101: ;
				{
					result = newidentnode_225313((*s).name, (*n).info);
					goto BeforeRet;
				}
				LA98: ;
			}
			LA96: ;
		}
		break;
		case ((NU8) 37):
		{
			{
				NI LOC107;
				LOC107 = 0;
				LOC107 = len_224098(n);
				if (!(LOC107 == ((NI) 1))) goto LA108;
				result = sempatternbody_474070(c, (*n).kindU.S6.sons->data[((NI) 0)]);
				goto BeforeRet;
			}
			LA108: ;
		}
		break;
		default:
		{
		}
		break;
		}
		{
			NI i_474775;
			NI HEX3Atmp_474795;
			NI LOC112;
			NI res_474798;
			i_474775 = 0;
			HEX3Atmp_474795 = 0;
			LOC112 = 0;
			LOC112 = sonslen_226387(n);
			HEX3Atmp_474795 = (NI)(LOC112 - ((NI) 1));
			res_474798 = ((NI) 0);
			{
				while (1) {
					if (!(res_474798 <= HEX3Atmp_474795)) goto LA114;
					i_474775 = res_474798;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_474775]), sempatternbody_474070(c, (*n).kindU.S6.sons->data[i_474775]));
					res_474798 += ((NI) 1);
				} LA114: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, sempattern_471348)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tscope223835* LOC1;
	Templctx470056 ctx;
	Tnode223809* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_220927((&ctx.tobind));
	initintset_220927((&ctx.tomixin));
	initintset_220927((&ctx.toinject));
	ctx.c = c;
	ctx.owner = getcurrowner_278258();
	LOC2 = 0;
	LOC2 = sempatternbody_474070((&ctx), n);
	result = flattenstmts_252773(LOC2);
	{
		if (!((*result).kind == ((NU8) 115) || (*result).kind == ((NU8) 126))) goto LA5;
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_224098(result);
			if (!(LOC9 == ((NI) 1))) goto LA10;
			result = (*result).kindU.S6.sons->data[((NI) 0)];
		}
		goto LA7;
		LA10: ;
		{
			NI LOC13;
			LOC13 = 0;
			LOC13 = len_224098(result);
			if (!(LOC13 == ((NI) 0))) goto LA14;
			localerror_194128((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3115));
		}
		goto LA7;
		LA14: ;
		LA7: ;
	}
	LA5: ;
	closescope_284111(c);
	return result;
}

N_NIMCALL(void, addgenericparamlisttoscope_485541)(Tcontext278023* c, Tnode223809* n) {
	{
		if (!!(((*n).kind == ((NU8) 75)))) goto LA3;
		illformedast_279240(n);
	}
	LA3: ;
	{
		NI i_485566;
		NI HEX3Atmp_485580;
		NI LOC6;
		NI res_485583;
		i_485566 = 0;
		HEX3Atmp_485580 = 0;
		LOC6 = 0;
		LOC6 = sonslen_226387(n);
		HEX3Atmp_485580 = (NI)(LOC6 - ((NI) 1));
		res_485583 = ((NI) 0);
		{
			while (1) {
				Tnode223809* a;
				if (!(res_485583 <= HEX3Atmp_485580)) goto LA8;
				i_485566 = res_485583;
				a = (*n).kindU.S6.sons->data[i_485566];
				{
					if (!((*a).kind == ((NU8) 3))) goto LA11;
					adddecl_284607(c, (*a).kindU.S4.sym);
				}
				goto LA9;
				LA11: ;
				{
					illformedast_279240(a);
				}
				LA9: ;
				res_485583 += ((NI) 1);
			} LA8: ;
		}
	}
}

N_NIMCALL(void, addparams_455293)(Tcontext278023* c, Tnode223809* n, NU8 kind) {
	{
		NI i_486775;
		NI HEX3Atmp_486789;
		NI LOC2;
		NI res_486792;
		i_486775 = 0;
		HEX3Atmp_486789 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_486789 = (NI)(LOC2 - ((NI) 1));
		res_486792 = ((NI) 1);
		{
			while (1) {
				if (!(res_486792 <= HEX3Atmp_486789)) goto LA4;
				i_486775 = res_486792;
				{
					if (!((*(*n).kindU.S6.sons->data[i_486775]).kind == ((NU8) 3))) goto LA7;
					addparamorresult_457885(c, (*(*n).kindU.S6.sons->data[i_486775]).kindU.S4.sym, kind);
				}
				goto LA5;
				LA7: ;
				{
					illformedast_279240(n);
				}
				LA5: ;
				res_486792 += ((NI) 1);
			} LA4: ;
		}
	}
}

static N_INLINE(NIM_BOOL, importantcomments_165168)(void) {
	NIM_BOOL result;
	result = 0;
	result = ((16640 &(1<<((gcmd_165134)&31)))!=0);
	return result;
}

static N_INLINE(NI, find_480411)(Tsym223841** a, NI aLen0, Tsym223841* item) {
	NI result;
{	result = 0;
	{
		Tsym223841* i_480455;
		NI i_480479;
		i_480455 = 0;
		i_480479 = ((NI) 0);
		{
			while (1) {
				if (!(i_480479 < aLen0)) goto LA3;
				i_480455 = a[i_480479];
				{
					if (!(i_480455 == item)) goto LA6;
					goto BeforeRet;
				}
				LA6: ;
				result += ((NI) 1);
				i_480479 += ((NI) 1);
			} LA3: ;
		}
	}
	result = ((NI) -1);
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, contains_480401)(Tsym223841** a, NI aLen0, Tsym223841* item) {
	NIM_BOOL result;
	NI LOC1;
{	result = 0;
	LOC1 = 0;
	LOC1 = find_480411(a, aLen0, item);
	result = (((NI) 0) <= LOC1);
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, destroycase_480051)(Tcontext278023* c, Tnode223809* n, Tnode223809* holder) {
	Tnode223809* result;
	NI nontrivialfields;
	Tnodeseq223803* LOC1;
	Tnodeseq223803* LOC2;
	TY279106 LOC3;
	Tnode223809* LOC4;
	result = 0;
	nontrivialfields = ((NI) 0);
	LOC1 = 0;
	LOC1 = (Tnodeseq223803*) newSeq((&NTI223803), 0);
	result = newnode_225607(((NU8) 97), (*n).info, LOC1, NIM_NIL);
	LOC2 = 0;
	LOC2 = (Tnodeseq223803*) newSeq((&NTI223803), 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_225607(((NU8) 45), (*n).info, LOC2, NIM_NIL);
	addson_225819(result, LOC4);
	{
		NI i_480101;
		NI HEX3Atmp_480171;
		NI LOC6;
		NI res_480174;
		i_480101 = 0;
		HEX3Atmp_480171 = 0;
		LOC6 = 0;
		LOC6 = len_224098(n);
		HEX3Atmp_480171 = (NI)(LOC6 - ((NI) 1));
		res_480174 = ((NI) 1);
		{
			while (1) {
				Tnode223809* ni;
				Tnode223809* casebranch;
				NI LOC9;
				Slice90369 LOC10;
				Tnodeseq223803* LOC11;
				Tnode223809* stmt;
				Tnode223809* LOC12;
				if (!(res_480174 <= HEX3Atmp_480171)) goto LA8;
				i_480101 = res_480174;
				ni = HEX5BHEX5D_224244(n, i_480101);
				LOC9 = 0;
				LOC9 = len_224098(ni);
				LOC10 = HEX2EHEX2E_105290(((NI) 0), (NI)(LOC9 - ((NI) 2)));
				LOC11 = 0;
				LOC11 = HEX5BHEX5D_414753((*ni).kindU.S6.sons, LOC10);
				casebranch = newnode_225607((*ni).kind, (*ni).info, LOC11, NIM_NIL);
				LOC12 = 0;
				LOC12 = lastson_226406(ni);
				stmt = destroyfieldorfields_479995(c, LOC12, holder);
				{
					Tnodeseq223803* LOC17;
					Tnode223809* LOC18;
					if (!(stmt == NIM_NIL)) goto LA15;
					LOC17 = 0;
					LOC17 = (Tnodeseq223803*) newSeq((&NTI223803), 0);
					LOC18 = 0;
					LOC18 = newnode_225607(((NU8) 115), (*ni).info, LOC17, NIM_NIL);
					addson_225819(casebranch, LOC18);
				}
				goto LA13;
				LA15: ;
				{
					NI LOC20;
					addson_225819(casebranch, stmt);
					LOC20 = 0;
					LOC20 = len_224098(stmt);
					nontrivialfields += LOC20;
				}
				LA13: ;
				addson_225819(result, casebranch);
				res_480174 += ((NI) 1);
			} LA8: ;
		}
	}
	{
		if (!(nontrivialfields == ((NI) 0))) goto LA23;
		result = NIM_NIL;
	}
	LA23: ;
	return result;
}

N_NIMCALL(Tnode223809*, destroysym_480000)(Tcontext278023* c, Tsym223841* field, Tnode223809* holder) {
	Tnode223809* result;
	Ttype223847* destructablet;
	result = 0;
	destructablet = instantiatedestructor_479822(c, (*field).typ);
	{
		Tnodeseq223803* LOC5;
		TY279106 LOC6;
		Tnodeseq223803* LOC7;
		TY279106 LOC8;
		if (!!((destructablet == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = (Tnodeseq223803*) newSeq((&NTI223803), 2);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = usesym_396850((*destructablet).destructor);
		LOC7 = 0;
		LOC7 = (Tnodeseq223803*) newSeq((&NTI223803), 2);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = holder;
		LOC8[1] = usesym_396850(field);
		asgnRefNoCycle((void**) (&LOC7->data[0]), LOC8[0]);
		asgnRefNoCycle((void**) (&LOC7->data[1]), LOC8[1]);
		LOC6[1] = newnode_225607(((NU8) 45), (*field).info, LOC7, NIM_NIL);
		asgnRefNoCycle((void**) (&LOC5->data[0]), LOC6[0]);
		asgnRefNoCycle((void**) (&LOC5->data[1]), LOC6[1]);
		result = newnode_225607(((NU8) 27), (*field).info, LOC5, NIM_NIL);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode223809*, destroyfieldorfields_479995)(Tcontext278023* c, Tnode223809* field, Tnode223809* holder) {
	Tnode223809* result;
	result = 0;
	switch ((*field).kind) {
	case ((NU8) 139):
	{
		Tnode223809* stmt_480203;
		stmt_480203 = destroycase_480051(c, field, holder);
		{
			if (!!((stmt_480203 == NIM_NIL))) goto LA4;
			{
				if (!(result == NIM_NIL)) goto LA8;
				result = newnode_224401(((NU8) 115));
			}
			LA8: ;
			addson_225819(result, stmt_480203);
		}
		LA4: ;
	}
	break;
	case ((NU8) 3):
	{
		Tnode223809* stmt_480230;
		stmt_480230 = destroysym_480000(c, (*field).kindU.S4.sym, holder);
		{
			if (!!((stmt_480230 == NIM_NIL))) goto LA13;
			{
				if (!(result == NIM_NIL)) goto LA17;
				result = newnode_224401(((NU8) 115));
			}
			LA17: ;
			addson_225819(result, stmt_480230);
		}
		LA13: ;
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode223809* son_480257;
			son_480257 = 0;
			{
				NI i_480296;
				NI HEX3Atmp_480298;
				NI LOC22;
				NI res_480300;
				i_480296 = 0;
				HEX3Atmp_480298 = 0;
				LOC22 = 0;
				LOC22 = len_224098(field);
				HEX3Atmp_480298 = (LOC22 - 1);
				res_480300 = ((NI) 0);
				{
					while (1) {
						Tnode223809* stmt_480259;
						if (!(res_480300 <= HEX3Atmp_480298)) goto LA24;
						i_480296 = res_480300;
						son_480257 = (*field).kindU.S6.sons->data[i_480296];
						stmt_480259 = destroyfieldorfields_479995(c, son_480257, holder);
						{
							if (!!((stmt_480259 == NIM_NIL))) goto LA27;
							{
								if (!(result == NIM_NIL)) goto LA31;
								result = newnode_224401(((NU8) 115));
							}
							LA31: ;
							addson_225819(result, stmt_480259);
						}
						LA27: ;
						res_480300 += ((NI) 1);
					} LA24: ;
				}
			}
		}
	}
	break;
	default:
	{
		{
			NimStringDesc* LOC38;
			if (!NIM_TRUE) goto LA36;
			LOC38 = 0;
			LOC38 = HEX24_194279(TMP3303);
			internalerror_194191(LOC38);
		}
		LA36: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode223809*, generatedestructor_480318)(Tcontext278023* c, Ttype223847* t) {
	Tnode223809* result;
	Tnode223809* destructedobj;
	Tlineinfo188352 LOC12;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*t).n == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = HEX3DHEX3D_298972((*(*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_194279(TMP3301);
		internalerror_194191(LOC11);
	}
	LA9: ;
	LOC12 = unknownlineinfo_189411();
	destructedobj = newidentnode_225313(destructorparam_479820, LOC12);
	result = destroyfieldorfields_479995(c, (*t).n, destructedobj);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym223841*, symfromtype_456085)(Ttype223847* t, Tlineinfo188352 info) {
	Tsym223841* result;
	Tident196021* LOC5;
{	result = 0;
	{
		if (!!(((*t).sym == NIM_NIL))) goto LA3;
		result = (*t).sym;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getident_196463(((NimStringDesc*) &TMP3305));
	result = newsym_224656(((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(Tnode223809*, symnodefromtype_456120)(Tcontext278023* c, Ttype223847* t, Tlineinfo188352 info) {
	Tnode223809* result;
	Tsym223841* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = symfromtype_456085(t, info);
	result = newsymnode_225338(LOC1, info);
	asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_278684(c, t));
	return result;
}

N_NIMCALL(Tnode223809*, semproc_479797)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = semprocaux_487900(c, n, ((NU8) 12), TMP3306, ((NU8) 0));
	return result;
}

N_NIMCALL(Ttype223847*, instantiatedestructor_479822)(Tcontext278023* c, Ttype223847* typ) {
	Ttype223847* result;
	Ttype223847* t;
	Ttype223847* LOC1;
	Ttype223847* typeholdinguserdefinition;
{	result = 0;
	LOC1 = 0;
	LOC1 = skiptypes_227167(typ, IL64(211106232532992));
	t = skipgenericalias_259119(LOC1);
	{
		if (!((*t).kind == ((NU8) 11))) goto LA4;
		typeholdinguserdefinition = base_253039(t);
	}
	goto LA2;
	LA4: ;
	{
		typeholdinguserdefinition = t;
	}
	LA2: ;
	{
		if (!!(((*typeholdinguserdefinition).destructor == NIM_NIL))) goto LA9;
		{
			TY480397 LOC13;
			NIM_BOOL LOC14;
			memset((void*)LOC13, 0, sizeof(LOC13));
			LOC13[0] = analyzingdestructor_479801;
			LOC13[1] = destructoristrivial_479802;
			LOC14 = 0;
			LOC14 = contains_480401(LOC13, 2, (*typeholdinguserdefinition).destructor);
			if (!!(LOC14)) goto LA15;
			result = typeholdinguserdefinition;
			goto BeforeRet;
		}
		goto LA11;
		LA15: ;
		{
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA11: ;
	}
	LA9: ;
	t = skiptypes_227167(t, 2048);
	switch ((*t).kind) {
	case ((NU8) 24):
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			Ttype223847* LOC21;
			LOC21 = 0;
			LOC21 = instantiatedestructor_479822(c, (*t).sons->data[((NI) 0)]);
			if (!!((LOC21 == NIM_NIL))) goto LA22;
			asgnRefNoCycle((void**) (&(*t).destructor), getcompilerproc_272809(((NimStringDesc*) &TMP3300)));
			result = t;
			goto BeforeRet;
		}
		goto LA19;
		LA22: ;
		{
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA19: ;
	}
	break;
	case ((NU8) 18):
	case ((NU8) 17):
	{
		Tnode223809* generated;
		asgnRefNoCycle((void**) (&(*t).destructor), analyzingdestructor_479801);
		generated = generatedestructor_480318(c, t);
		{
			Tlineinfo188352 i;
			Tnode223809* fulldef;
			Tnodeseq223803* LOC35;
			TY226071 LOC36;
			Tnodeseq223803* LOC37;
			TY279106 LOC38;
			Tnodeseq223803* LOC39;
			TY496414 LOC40;
			Ttype223847* LOC41;
			Tnodeseq223803* LOC42;
			TY241880 LOC43;
			Tnode223809* semantizeddef;
			Tnode223809* LOC44;
			if (!!((generated == NIM_NIL))) goto LA28;
			{
				NimStringDesc* LOC34;
				if (!!(!(((*t).sym == NIM_NIL)))) goto LA32;
				LOC34 = 0;
				LOC34 = HEX24_194279(TMP3304);
				internalerror_194191(LOC34);
			}
			LA32: ;
			i = (*(*t).sym).info;
			LOC35 = 0;
			LOC35 = (Tnodeseq223803*) newSeq((&NTI223803), 7);
			memset((void*)LOC36, 0, sizeof(LOC36));
			LOC36[0] = newidentnode_225313(destructorname_479819, i);
			LOC36[1] = emptynode_224807;
			LOC36[2] = emptynode_224807;
			LOC37 = 0;
			LOC37 = (Tnodeseq223803*) newSeq((&NTI223803), 2);
			memset((void*)LOC38, 0, sizeof(LOC38));
			LOC38[0] = emptynode_224807;
			LOC39 = 0;
			LOC39 = (Tnodeseq223803*) newSeq((&NTI223803), 3);
			memset((void*)LOC40, 0, sizeof(LOC40));
			LOC40[0] = newidentnode_225313(destructorparam_479820, i);
			LOC41 = 0;
			LOC41 = makevartype_278645(c, t);
			LOC40[1] = symnodefromtype_456120(c, LOC41, (*(*t).sym).info);
			LOC40[2] = emptynode_224807;
			asgnRefNoCycle((void**) (&LOC39->data[0]), LOC40[0]);
			asgnRefNoCycle((void**) (&LOC39->data[1]), LOC40[1]);
			asgnRefNoCycle((void**) (&LOC39->data[2]), LOC40[2]);
			LOC38[1] = newnode_225607(((NU8) 35), i, LOC39, NIM_NIL);
			asgnRefNoCycle((void**) (&LOC37->data[0]), LOC38[0]);
			asgnRefNoCycle((void**) (&LOC37->data[1]), LOC38[1]);
			LOC36[3] = newnode_225607(((NU8) 76), i, LOC37, NIM_NIL);
			LOC42 = 0;
			LOC42 = (Tnodeseq223803*) newSeq((&NTI223803), 1);
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC43[0] = destructorpragma_479821;
			asgnRefNoCycle((void**) (&LOC42->data[0]), LOC43[0]);
			LOC36[4] = newnode_225607(((NU8) 90), i, LOC42, NIM_NIL);
			LOC36[5] = emptynode_224807;
			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_225607(((NU8) 79), i, LOC35, NIM_NIL);
			semantizeddef = semproc_479797(c, fulldef);
			LOC44 = 0;
			LOC44 = HEX5BHEX5D_224244(semantizeddef, ((NI) 0));
			asgnRefNoCycle((void**) (&(*t).destructor), (*LOC44).kindU.S4.sym);
			result = t;
			goto BeforeRet;
		}
		goto LA26;
		LA28: ;
		{
			asgnRefNoCycle((void**) (&(*t).destructor), destructoristrivial_479802);
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA26: ;
	}
	break;
	default:
	{
		result = NIM_NIL;
		goto BeforeRet;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, dodestructorstuff_479826)(Tcontext278023* c, Tsym223841* s, Tnode223809* n) {
	Ttype223847* t;
{	t = skiptypes_227167((*(*s).typ).sons->data[((NI) 1)], 8388608);
	{
		if (!((*t).kind == ((NU8) 9))) goto LA3;
		{
			NI i_479861;
			NI HEX3Atmp_479955;
			NI LOC6;
			NI res_479958;
			i_479861 = 0;
			HEX3Atmp_479955 = 0;
			LOC6 = 0;
			LOC6 = sonslen_226351(t);
			HEX3Atmp_479955 = (LOC6 - 1);
			res_479958 = ((NI) 1);
			{
				while (1) {
					if (!(res_479958 <= HEX3Atmp_479955)) goto LA8;
					i_479861 = res_479958;
					{
						if (!!(((*(*t).sons->data[i_479861]).kind == ((NU8) 12)))) goto LA11;
						localerror_194128((*n).info, ((NU16) 207), ((NimStringDesc*) &TMP3115));
						goto BeforeRet;
					}
					LA11: ;
					res_479958 += ((NI) 1);
				} LA8: ;
			}
		}
		t = base_253039(t);
	}
	goto LA1;
	LA3: ;
	{
		if (!((*t).kind == ((NU8) 54))) goto LA14;
		t = base_253039(t);
		{
			if (!!(((*t).kind == ((NU8) 10)))) goto LA18;
			localerror_194128((*n).info, ((NU16) 207), ((NimStringDesc*) &TMP3115));
			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_479911;
			NI HEX3Atmp_479964;
			NI LOC25;
			NI res_479967;
			i_479911 = 0;
			HEX3Atmp_479964 = 0;
			LOC25 = 0;
			LOC25 = sonslen_226351(t);
			HEX3Atmp_479964 = (NI)(LOC25 - ((NI) 1));
			res_479967 = ((NI) 0);
			{
				while (1) {
					if (!(res_479967 <= HEX3Atmp_479964)) goto LA27;
					i_479911 = res_479967;
					{
						Ttype223847* destructablet;
						{
							if (!((*t).sons->data[i_479911] == NIM_NIL)) goto LA31;
							goto LA28;
						}
						LA31: ;
						destructablet = instantiatedestructor_479822(c, (*t).sons->data[i_479911]);
						{
							Tnodeseq223803* LOC37;
							TY279106 LOC38;
							Tnode223809* LOC39;
							Tnode223809* LOC40;
							if (!!((destructablet == NIM_NIL))) goto LA35;
							LOC37 = 0;
							LOC37 = (Tnodeseq223803*) newSeq((&NTI223803), 2);
							memset((void*)LOC38, 0, sizeof(LOC38));
							LOC38[0] = usesym_396850((*destructablet).destructor);
							LOC39 = 0;
							LOC39 = HEX5BHEX5D_224244((*n).kindU.S6.sons->data[((NI) 3)], ((NI) 1));
							LOC38[1] = HEX5BHEX5D_224244(LOC39, ((NI) 0));
							asgnRefNoCycle((void**) (&LOC37->data[0]), LOC38[0]);
							asgnRefNoCycle((void**) (&LOC37->data[1]), LOC38[1]);
							LOC40 = 0;
							LOC40 = newnode_225607(((NU8) 27), (*(*t).sym).info, LOC37, NIM_NIL);
							addson_225819((*n).kindU.S6.sons->data[((NI) 6)], LOC40);
						}
						LA35: ;
					} LA28: ;
					res_479967 += ((NI) 1);
				} LA27: ;
			}
		}
	}
	LA22: ;
	}BeforeRet: ;
}

static N_INLINE(NIM_BOOL, experimentalmode_279290)(Tcontext278023* c) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = gexperimentalmode_165149;
	if (LOC1) goto LA2;
	LOC1 = (((*(*c).module).flags &(1<<((((NU8) 30))&31)))!=0);
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, semoverride_487632)(Tcontext278023* c, Tsym223841* s, Tnode223809* n) {
	NimStringDesc* LOC1;
{	LOC1 = 0;
	LOC1 = nsuNormalize((*(*s).name).s);
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3295))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3296))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3297))) goto LA3;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3298))) goto LA3;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3299))) goto LA4;
	goto LA5;
	LA2: ;
	{
		dodestructorstuff_479826(c, s, n);
		{
			NIM_BOOL LOC10;
			LOC10 = 0;
			LOC10 = experimentalmode_279290(c);
			if (!!(LOC10)) goto LA11;
			localerror_194139((*n).info, ((NimStringDesc*) &TMP3307));
		}
		LA11: ;
		(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	goto LA6;
	LA3: ;
	{
		{
			NIM_BOOL LOC16;
			NIM_BOOL LOC17;
			NI LOC18;
			Ttype223847* LOC20;
			Ttype223847* t;
			Ttype223847* LOC24;
			Ttype223847* LOC25;
			LOC16 = 0;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = len_226369((*s).typ);
			LOC17 = (LOC18 == ((NI) 2));
			if (!(LOC17)) goto LA19;
			LOC20 = 0;
			LOC20 = skiptypes_227167((*(*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_258092((*(*s).typ).sons->data[((NI) 1)], (*(*s).typ).sons->data[((NI) 0)], 0);
			LA21: ;
			if (!LOC16) goto LA22;
			LOC24 = 0;
			LOC24 = skiptypes_227167((*(*s).typ).sons->data[((NI) 1)], IL64(211106232576256));
			LOC25 = 0;
			LOC25 = lastson_226426(LOC24);
			t = skiptypes_227167(LOC25, IL64(211106232576256));
			{
				while (1) {
					{
						if (!((*t).kind == ((NU8) 10))) goto LA30;
						t = lastson_226426(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_253032(t, ((NU8) 0));
					LOC45 = rawNewString(LOC46->Sup.len + 35);
appendString(LOC45, ((NimStringDesc*) &TMP3308));
appendString(LOC45, LOC46);
					localerror_194128((*n).info, ((NU16) 4), LOC45);
				}
				LA40: ;
			}
			goto LA36;
			LA38: ;
			{
				NimStringDesc* LOC48;
				NimStringDesc* LOC49;
				LOC48 = 0;
				LOC49 = 0;
				LOC49 = typetostring_253032(t, ((NU8) 0));
				LOC48 = rawNewString(LOC49->Sup.len + 27);
appendString(LOC48, ((NimStringDesc*) &TMP3309));
appendString(LOC48, LOC49);
				localerror_194128((*n).info, ((NU16) 4), LOC48);
			}
			LA36: ;
		}
		goto LA14;
		LA22: ;
		{
			localerror_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3310));
		}
		LA14: ;
		(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	goto LA6;
	LA4: ;
	{
		Ttype223847* 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;
			Ttype223847* obj;
			Ttype223847* objb;
			LOC58 = 0;
			LOC59 = 0;
			LOC60 = 0;
			LOC60 = len_226369(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_226426(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_226426(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_258092(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_253032(obj, ((NU8) 0));
					LOC96 = rawNewString(LOC97->Sup.len + 28);
appendString(LOC96, ((NimStringDesc*) &TMP3311));
appendString(LOC96, LOC97);
					localerror_194128((*n).info, ((NU16) 4), LOC96);
				}
				LA91: ;
				goto BeforeRet;
			}
			LA89: ;
		}
		LA63: ;
		localerror_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3312));
	}
	goto LA6;
	LA5: ;
	{
		{
			if (!(((*s).flags &(1<<((((NU8) 30))&31)))!=0)) goto LA101;
			localerror_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3313));
		}
		LA101: ;
	}
	LA6: ;
	}BeforeRet: ;
}

N_NIMCALL(void, typeallowedcheck_455987)(Tlineinfo188352 info, Ttype223847* typ, NU8 kind) {
	Ttype223847* t;
	t = typeallowed_261654(typ, kind);
	{
		if (!!((t == NIM_NIL))) goto LA3;
		{
			NimStringDesc* LOC9;
			NimStringDesc* LOC10;
			if (!(t == typ)) goto LA7;
			LOC9 = 0;
			LOC10 = 0;
			LOC10 = typetostring_253032(typ, ((NU8) 0));
			LOC9 = rawNewString(LOC10->Sup.len + 16);
appendString(LOC9, ((NimStringDesc*) &TMP3314));
appendString(LOC9, LOC10);
appendString(LOC9, ((NimStringDesc*) &TMP3249));
			localerror_194139(info, LOC9);
		}
		goto LA5;
		LA7: ;
		{
			NimStringDesc* LOC12;
			NimStringDesc* LOC13;
			NimStringDesc* LOC14;
			LOC12 = 0;
			LOC13 = 0;
			LOC13 = typetostring_253032(t, ((NU8) 0));
			LOC14 = 0;
			LOC14 = typetostring_253032(typ, ((NU8) 0));
			LOC12 = rawNewString(LOC13->Sup.len + LOC14->Sup.len + 36);
appendString(LOC12, ((NimStringDesc*) &TMP3314));
appendString(LOC12, LOC13);
appendString(LOC12, ((NimStringDesc*) &TMP3315));
appendString(LOC12, LOC14);
appendString(LOC12, ((NimStringDesc*) &TMP3249));
			localerror_194139(info, LOC12);
		}
		LA5: ;
	}
	LA3: ;
}

static N_INLINE(void, paramstypecheck_456022)(Tcontext278023* c, Ttype223847* typ) {
	typeallowedcheck_455987((*(*typ).n).info, typ, ((NU8) 10));
}

N_NIMCALL(void, activate_455327)(Tcontext278023* c, Tnode223809* n) {
}

N_NIMCALL(void, changetype_455253)(Tnode223809* n, Ttype223847* newtype, NIM_BOOL check) {
{	switch ((*n).kind) {
	case ((NU8) 39):
	case ((NU8) 41):
	{
		{
			NI i_492278;
			NI HEX3Atmp_492413;
			NI LOC3;
			NI res_492416;
			i_492278 = 0;
			HEX3Atmp_492413 = 0;
			LOC3 = 0;
			LOC3 = sonslen_226387(n);
			HEX3Atmp_492413 = (NI)(LOC3 - ((NI) 1));
			res_492416 = ((NI) 0);
			{
				while (1) {
					Ttype223847* LOC6;
					if (!(res_492416 <= HEX3Atmp_492413)) goto LA5;
					i_492278 = res_492416;
					LOC6 = 0;
					LOC6 = elemtype_253522(newtype);
					changetype_455253((*n).kindU.S6.sons->data[i_492278], LOC6, check);
					res_492416 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 37):
	{
		Ttype223847* tup;
		tup = skiptypes_227167(newtype, 2048);
		{
			if (!!(((*tup).kind == ((NU8) 18)))) goto LA10;
			{
				if (!((*tup).kind == ((NU8) 17))) goto LA14;
				goto BeforeRet;
			}
			LA14: ;
			globalerror_194118((*n).info, ((NimStringDesc*) &TMP3330));
		}
		goto LA8;
		LA10: ;
		{
			NIM_BOOL LOC17;
			NI LOC18;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = sonslen_226387(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_492322;
				NI HEX3Atmp_492421;
				NI LOC23;
				NI res_492424;
				i_492322 = 0;
				HEX3Atmp_492421 = 0;
				LOC23 = 0;
				LOC23 = sonslen_226387(n);
				HEX3Atmp_492421 = (NI)(LOC23 - ((NI) 1));
				res_492424 = ((NI) 0);
				{
					while (1) {
						Tnode223809* m;
						if (!(res_492424 <= HEX3Atmp_492421)) goto LA25;
						i_492322 = res_492424;
						m = (*(*n).kindU.S6.sons->data[i_492322]).kindU.S6.sons->data[((NI) 0)];
						{
							if (!!(((*m).kind == ((NU8) 3)))) goto LA28;
							globalerror_194118((*m).info, ((NimStringDesc*) &TMP3331));
							goto BeforeRet;
						}
						LA28: ;
						{
							Tsym223841* f;
							if (!!(((*tup).n == NIM_NIL))) goto LA32;
							f = getsymfromlist_231228((*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*) &TMP3332));
appendString(LOC38, (*(*(*m).kindU.S4.sym).name).s);
								globalerror_194118((*m).info, LOC38);
								goto BeforeRet;
							}
							LA36: ;
							changetype_455253((*(*n).kindU.S6.sons->data[i_492322]).kindU.S6.sons->data[((NI) 1)], (*f).typ, check);
						}
						goto LA30;
						LA32: ;
						{
							changetype_455253((*(*n).kindU.S6.sons->data[i_492322]).kindU.S6.sons->data[((NI) 1)], (*tup).sons->data[i_492322], check);
						}
						LA30: ;
						res_492424 += ((NI) 1);
					} LA25: ;
				}
			}
		}
		goto LA8;
		LA20: ;
		{
			{
				NI i_492381;
				NI HEX3Atmp_492429;
				NI LOC42;
				NI res_492432;
				i_492381 = 0;
				HEX3Atmp_492429 = 0;
				LOC42 = 0;
				LOC42 = sonslen_226387(n);
				HEX3Atmp_492429 = (NI)(LOC42 - ((NI) 1));
				res_492432 = ((NI) 0);
				{
					while (1) {
						if (!(res_492432 <= HEX3Atmp_492429)) goto LA44;
						i_492381 = res_492432;
						changetype_455253((*n).kindU.S6.sons->data[i_492381], (*tup).sons->data[i_492381], check);
						res_492432 += ((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_253004(newtype);
				LOC54 = (value < LOC55);
				if (LOC54) goto LA56;
				LOC57 = 0;
				LOC57 = lastord_253010(newtype);
				LOC54 = (LOC57 < value);
				LA56: ;
				if (!LOC54) goto LA58;
				LOC60 = 0;
				LOC61 = 0;
				LOC61 = nimInt64ToStr(value);
				LOC62 = 0;
				LOC62 = typetostring_253032(newtype, ((NU8) 0));
				LOC60 = rawNewString(LOC61->Sup.len + LOC62->Sup.len + 19);
appendString(LOC60, ((NimStringDesc*) &TMP3333));
appendString(LOC60, LOC61);
appendString(LOC60, ((NimStringDesc*) &TMP3334));
appendString(LOC60, LOC62);
				localerror_194128((*n).info, ((NU16) 4), LOC60);
			}
			LA58: ;
		}
		LA50: ;
	}
	break;
	default:
	{
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).typ), newtype);
	}BeforeRet: ;
}

N_NIMCALL(void, fixabstracttype_492616)(Tcontext278023* c, Tnode223809* n) {
	{
		NI i_492639;
		NI HEX3Atmp_492802;
		NI LOC2;
		NI res_492805;
		i_492639 = 0;
		HEX3Atmp_492802 = 0;
		LOC2 = 0;
		LOC2 = len_224098(n);
		HEX3Atmp_492802 = (LOC2 - 1);
		res_492805 = ((NI) 1);
		{
			while (1) {
				Tnode223809* it;
				if (!(res_492805 <= HEX3Atmp_492802)) goto LA4;
				i_492639 = res_492805;
				it = (*n).kindU.S6.sons->data[i_492639];
				{
					NIM_BOOL LOC7;
					Ttype223847* LOC9;
					LOC7 = 0;
					LOC7 = ((*it).kind == ((NU8) 59));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = skiptypes_227167((*it).typ, IL64(211106240964864));
					LOC7 = !(((*LOC9).kind == ((NU8) 27) || (*LOC9).kind == ((NU8) 48)));
					LA8: ;
					if (!LOC7) goto LA10;
					{
						Ttype223847* LOC14;
						Ttype223847* s;
						LOC14 = 0;
						LOC14 = skiptypes_227167((*(*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_227167((*it).typ, IL64(211106240964864));
						{
							if (!!(((*s).kind == ((NU8) 6)))) goto LA19;
							changetype_455253((*it).kindU.S6.sons->data[((NI) 1)], s, NIM_TRUE);
						}
						LA19: ;
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_492639]), (*it).kindU.S6.sons->data[((NI) 1)]);
					}
					LA15: ;
				}
				LA10: ;
				res_492805 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(NU8, isassignable_492842)(Tcontext278023* c, Tnode223809* n, NIM_BOOL isunsafeaddr) {
	NU8 result;
	result = 0;
	result = isassignable_304056((*(*c).p).owner, n, isunsafeaddr);
	return result;
}

N_NIMCALL(void, performprocvarcheck_479702)(Tcontext278023* c, Tnode223809* n, Tsym223841* s) {
	NI smoduleid;
	Tsym223841* LOC1;
	LOC1 = 0;
	LOC1 = getmodule_231243(s);
	smoduleid = (*LOC1).Sup.id;
	{
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		LOC4 = 0;
		LOC5 = 0;
		LOC5 = !((((*s).flags &(1<<((((NU8) 17))&31)))!=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;
		{
			{
				Tsym223841* module_479741;
				Tsymseq223811* HEX3Atmp_479745;
				NI i_479748;
				NI L_479750;
				module_479741 = 0;
				HEX3Atmp_479745 = 0;
				HEX3Atmp_479745 = (*c).friendmodules;
				i_479748 = ((NI) 0);
				L_479750 = (HEX3Atmp_479745 ? HEX3Atmp_479745->Sup.len : 0);
				{
					while (1) {
						if (!(i_479748 < L_479750)) goto LA13;
						module_479741 = HEX3Atmp_479745->data[i_479748];
						{
							if (!(smoduleid == (*module_479741).Sup.id)) goto LA16;
							goto LA10;
						}
						LA16: ;
						i_479748 += ((NI) 1);
					} LA13: ;
				}
			}
			localerror_194128((*n).info, ((NU16) 138), (*(*s).name).s);
		} LA10: ;
	}
	LA8: ;
}

N_NIMCALL(void, semprocvarcheck_479766)(Tcontext278023* c, Tnode223809* n_479769) {
	Tnode223809* n;
	n = skipconv_262935(n_479769);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 3));
		if (!(LOC3)) goto LA4;
		LOC3 = ((126976 &(1<<(((*(*n).kindU.S4.sym).kind)&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		performprocvarcheck_479702(c, n, (*n).kindU.S4.sym);
	}
	LA5: ;
}

N_NIMCALL(Tnode223809*, newhiddenaddrtaken_492851)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 65));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = (gcmd_165134 == ((NU8) 2));
		if (LOC5) goto LA6;
		LOC5 = (((*(*c).module).flags &(1<<((((NU8) 27))&31)))!=0);
		LA6: ;
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA7;
		checksonslen_279260(n, ((NI) 1));
		result = (*n).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA7: ;
	{
		Ttype223847* LOC10;
		LOC10 = 0;
		LOC10 = makevartype_278645(c, (*n).typ);
		result = newnodeit_225807(((NU8) 64), (*n).info, LOC10);
		addson_225819(result, n);
		{
			NU8 LOC13;
			LOC13 = 0;
			LOC13 = isassignable_492842(c, n, NIM_FALSE);
			if (!!(((6 &(1<<((LOC13)&7)))!=0))) goto LA14;
			localerror_194128((*n).info, ((NU16) 131), ((NimStringDesc*) &TMP3115));
		}
		LA14: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, analyseifaddresstaken_492900)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC4;
			Ttype223847* LOC6;
			LOC4 = 0;
			LOC4 = !(((*(*n).kindU.S4.sym).typ == NIM_NIL));
			if (!(LOC4)) goto LA5;
			LOC6 = 0;
			LOC6 = skiptypes_227167((*(*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_492851(c, n);
		}
		LA7: ;
	}
	break;
	case ((NU8) 45):
	{
		checksonslen_279260(n, ((NI) 2));
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 3)))) goto LA12;
			internalerror_194172((*n).info, ((NimStringDesc*) &TMP3336));
			goto BeforeRet;
		}
		LA12: ;
		{
			Ttype223847* LOC16;
			LOC16 = 0;
			LOC16 = skiptypes_227167((*(*(*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_492851(c, n);
		}
		LA17: ;
	}
	break;
	case ((NU8) 42):
	{
		checkminsonslen_279270(n, ((NI) 1));
		{
			Ttype223847* LOC22;
			LOC22 = 0;
			LOC22 = skiptypes_227167((*(*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_492851(c, n);
		}
		LA23: ;
	}
	break;
	default:
	{
		result = newhiddenaddrtaken_492851(c, n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, analyseifaddresstakenincall_493052)(Tcontext278023* c, Tnode223809* n) {
	Ttype223847* t;
{	checkminsonslen_279270(n, ((NI) 1));
	t = skiptypes_227167((*(*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 = ((TMP3335[(*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic/8] &(1<<((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic%8)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NI i_493096;
			NI HEX3Atmp_493214;
			NI LOC8;
			NI res_493217;
			i_493096 = 0;
			HEX3Atmp_493214 = 0;
			LOC8 = 0;
			LOC8 = sonslen_226387(n);
			HEX3Atmp_493214 = (NI)(LOC8 - ((NI) 1));
			res_493217 = ((NI) 1);
			{
				while (1) {
					if (!(res_493217 <= HEX3Atmp_493214)) goto LA10;
					i_493096 = res_493217;
					{
						NIM_BOOL LOC13;
						NIM_BOOL LOC14;
						NI LOC15;
						Ttype223847* LOC18;
						LOC13 = 0;
						LOC14 = 0;
						LOC15 = 0;
						LOC15 = sonslen_226351(t);
						LOC14 = (i_493096 < LOC15);
						if (!(LOC14)) goto LA16;
						LOC14 = !(((*t).sons->data[i_493096] == NIM_NIL));
						LA16: ;
						LOC13 = LOC14;
						if (!(LOC13)) goto LA17;
						LOC18 = 0;
						LOC18 = skiptypes_227167((*t).sons->data[i_493096], IL64(211106232576000));
						LOC13 = ((*LOC18).kind == ((NU8) 23));
						LA17: ;
						if (!LOC13) goto LA19;
						{
							NU8 LOC23;
							LOC23 = 0;
							LOC23 = isassignable_492842(c, (*n).kindU.S6.sons->data[i_493096], NIM_FALSE);
							if (!!(((6 &(1<<((LOC23)&7)))!=0))) goto LA24;
							{
								if (!!(((*(*n).kindU.S6.sons->data[i_493096]).kind == ((NU8) 64)))) goto LA28;
								localerror_194128((*(*n).kindU.S6.sons->data[i_493096]).info, ((NU16) 131), ((NimStringDesc*) &TMP3115));
							}
							LA28: ;
						}
						LA24: ;
					}
					LA19: ;
					res_493217 += ((NI) 1);
				} LA10: ;
			}
		}
		goto BeforeRet;
	}
	LA5: ;
	{
		NI i_493166;
		NI HEX3Atmp_493222;
		NI LOC31;
		NI res_493225;
		i_493166 = 0;
		HEX3Atmp_493222 = 0;
		LOC31 = 0;
		LOC31 = sonslen_226387(n);
		HEX3Atmp_493222 = (NI)(LOC31 - ((NI) 1));
		res_493225 = ((NI) 1);
		{
			while (1) {
				if (!(res_493225 <= HEX3Atmp_493222)) goto LA33;
				i_493166 = res_493225;
				{
					if (!((*(*n).kindU.S6.sons->data[i_493166]).kind == ((NU8) 32))) goto LA36;
					analyseifaddresstakenincall_493052(c, (*n).kindU.S6.sons->data[i_493166]);
				}
				LA36: ;
				semprocvarcheck_479766(c, (*n).kindU.S6.sons->data[i_493166]);
				{
					NIM_BOOL LOC40;
					NI LOC41;
					Ttype223847* LOC43;
					LOC40 = 0;
					LOC41 = 0;
					LOC41 = sonslen_226351(t);
					LOC40 = (i_493166 < LOC41);
					if (!(LOC40)) goto LA42;
					LOC43 = 0;
					LOC43 = skiptypes_227167((*t).sons->data[i_493166], IL64(211106232576000));
					LOC40 = ((*LOC43).kind == ((NU8) 23));
					LA42: ;
					if (!LOC40) goto LA44;
					{
						if (!!(((*(*n).kindU.S6.sons->data[i_493166]).kind == ((NU8) 64)))) goto LA48;
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_493166]), analyseifaddresstaken_492900(c, (*n).kindU.S6.sons->data[i_493166]));
					}
					LA48: ;
				}
				LA44: ;
				res_493225 += ((NI) 1);
			} LA33: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode223809*, semaddr_493250)(Tcontext278023* c, Tnode223809* n, NIM_BOOL isunsafeaddr) {
	Tnode223809* result;
	Tnode223809* x;
	result = 0;
	result = newnodei_225351(((NU8) 63), (*n).info);
	x = semexprwithtype_455211(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_492842(c, x, isunsafeaddr);
		if (!!(((6 &(1<<((LOC7)&7)))!=0))) goto LA8;
		localerror_194128((*n).info, ((NU16) 129), ((NimStringDesc*) &TMP3115));
	}
	LA8: ;
	add_224165(result, x);
	asgnRefNoCycle((void**) (&(*result).typ), makeptrtype_278214(c, (*x).typ));
	return result;
}

N_NIMCALL(Tnode223809*, semtypeof_493293)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* typexpr;
	Ttype223847* LOC1;
	result = 0;
	result = newnodei_225351(((NU8) 132), (*n).info);
	typexpr = semexprwithtype_455211(c, n, 4);
	add_224165(result, typexpr);
	LOC1 = 0;
	LOC1 = skiptypes_227167((*typexpr).typ, IL64(562949953421568));
	asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_278684(c, LOC1));
	return result;
}

N_NIMCALL(Tnode223809*, semderef_496161)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Ttype223847* t;
	result = 0;
	checksonslen_279260(n, ((NI) 1));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
	result = n;
	t = skiptypes_227167((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, 8390656);
	switch ((*t).kind) {
	case ((NU8) 22):
	case ((NU8) 21):
	{
		asgnRefNoCycle((void**) (&(*n).typ), lastson_226426(t));
	}
	break;
	default:
	{
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode223809*, semsymgenericinstantiation_490239)(Tcontext278023* c, Tnode223809* n, Tsym223841* s) {
	Tnode223809* result;
	result = 0;
	result = symchoice_469790(c, n, s, ((NU8) 0));
	return result;
}

N_NIMCALL(Tnode223809*, explicitgenericsym_462018)(Tcontext278023* c, Tnode223809* n, Tsym223841* s) {
	Tnode223809* result;
	Tcandidate386209 m;
	Tsym223841* newinst;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_386303(c, (&m), s, n, ((NI) -1));
	newinst = generateinstance_458450(c, s, m.bindings, (*n).info);
	markused_386253((*n).info, s);
	result = newsymnode_225338(newinst, (*n).info);
	return result;
}

N_NIMCALL(Tnode223809*, explicitgenericinsterror_462011)(Tnode223809* n) {
	Tnode223809* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = rendertree_245059(n, 0);
	localerror_194128((*n).info, ((NU16) 128), LOC1);
	result = n;
	return result;
}

N_NIMCALL(Tnode223809*, explicitgenericinstantiation_462205)(Tcontext278023* c, Tnode223809* n, Tsym223841* s_462209) {
	Tnode223809* result;
	Tsym223841* s;
	Tnode223809* a;
{	result = 0;
	{
		NI i_462411;
		NI HEX3Atmp_462486;
		NI LOC2;
		NI res_462489;
		i_462411 = 0;
		HEX3Atmp_462486 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_462486 = (NI)(LOC2 - ((NI) 1));
		res_462489 = ((NI) 1);
		{
			while (1) {
				if (!(res_462489 <= HEX3Atmp_462486)) goto LA4;
				i_462411 = res_462489;
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_462411]).typ), semtypenode_455269(c, (*n).kindU.S6.sons->data[i_462411], NIM_NIL));
				res_462489 += ((NI) 1);
			} LA4: ;
		}
	}
	s = s_462209;
	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_224126((*(*s).ast).kindU.S6.sons->data[((NI) 2)]);
			LOC12 = 0;
			LOC12 = len_224098(n);
			if (!!((LOC11 == (NI)(LOC12 - ((NI) 1))))) goto LA13;
			expected = safelen_224126((*(*s).ast).kindU.S6.sons->data[((NI) 2)]);
			LOC15 = 0;
			LOC16 = 0;
			LOC16 = rendertree_245059(n, 0);
			LOC17 = 0;
			LOC17 = len_224098(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*) &TMP3339));
appendString(LOC15, LOC16);
appendString(LOC15, ((NimStringDesc*) &TMP3340));
appendString(LOC15, LOC18);
appendString(LOC15, ((NimStringDesc*) &TMP3341));
appendString(LOC15, LOC19);
			localerror_194128((*n).info, ((NU16) 4), LOC15);
			result = n;
			goto BeforeRet;
		}
		LA13: ;
		result = explicitgenericsym_462018(c, n, s);
	}
	goto LA5;
	LA7: ;
	{
		if (!((*a).kind == ((NU8) 56) || (*a).kind == ((NU8) 57))) goto LA21;
		result = newnodei_225351((*a).kind, (*n).info);
		{
			NI i_462456;
			NI HEX3Atmp_462494;
			NI LOC24;
			NI res_462497;
			i_462456 = 0;
			HEX3Atmp_462494 = 0;
			LOC24 = 0;
			LOC24 = len_224098(a);
			HEX3Atmp_462494 = (NI)(LOC24 - ((NI) 1));
			res_462497 = ((NI) 0);
			{
				while (1) {
					Tsym223841* candidate;
					if (!(res_462497 <= HEX3Atmp_462494)) goto LA26;
					i_462456 = res_462497;
					candidate = (*(*a).kindU.S6.sons->data[i_462456]).kindU.S4.sym;
					{
						if (!((126976 &(1<<(((*candidate).kind)&31)))!=0)) goto LA29;
						{
							NI LOC33;
							NI LOC34;
							Tnode223809* LOC37;
							LOC33 = 0;
							LOC33 = safelen_224126((*(*candidate).ast).kindU.S6.sons->data[((NI) 2)]);
							LOC34 = 0;
							LOC34 = len_224098(n);
							if (!(LOC33 == (NI)(LOC34 - ((NI) 1)))) goto LA35;
							LOC37 = 0;
							LOC37 = explicitgenericsym_462018(c, n, candidate);
							add_224165(result, LOC37);
						}
						LA35: ;
					}
					LA29: ;
					res_462497 += ((NI) 1);
				} LA26: ;
			}
		}
		{
			NIM_BOOL LOC40;
			NI LOC41;
			LOC40 = 0;
			LOC41 = 0;
			LOC41 = len_224098(result);
			LOC40 = (LOC41 == ((NI) 1));
			if (!(LOC40)) goto LA42;
			LOC40 = ((*a).kind == ((NU8) 56));
			LA42: ;
			if (!LOC40) goto LA43;
			result = HEX5BHEX5D_224244(result, ((NI) 0));
		}
		LA43: ;
	}
	goto LA5;
	LA21: ;
	{
		result = explicitgenericinsterror_462011(n);
	}
	LA5: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semsubscript_493315)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Ttype223847* arr;
{	result = 0;
	{
		NI LOC3;
		Tnode223809* x;
		Tnode223809* LOC10;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 1))) goto LA4;
		x = semderef_496161(c, n);
		{
			if (!(x == NIM_NIL)) goto LA8;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA8: ;
		result = newnodeit_225807(((NU8) 47), (*x).info, (*x).typ);
		LOC10 = 0;
		LOC10 = HEX5BHEX5D_224244(x, ((NI) 0));
		add_224165(result, LOC10);
		goto BeforeRet;
	}
	LA4: ;
	checkminsonslen_279270(n, ((NI) 2));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 0)], 1024));
	arr = skiptypes_227167((*(*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):
	{
		Ttype223847* indextype;
		Tnode223809* arg;
		{
			NI LOC14;
			LOC14 = 0;
			LOC14 = len_224098(n);
			if (!!((LOC14 == ((NI) 2)))) goto LA15;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA15: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_495233((*n).kindU.S6.sons->data[((NI) 0)]));
		asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_496216;
			NI HEX3Atmp_496363;
			NI LOC18;
			NI res_496366;
			i_496216 = 0;
			HEX3Atmp_496363 = 0;
			LOC18 = 0;
			LOC18 = sonslen_226387(n);
			HEX3Atmp_496363 = (NI)(LOC18 - ((NI) 1));
			res_496366 = ((NI) 1);
			{
				while (1) {
					if (!(res_496366 <= HEX3Atmp_496363)) goto LA20;
					i_496216 = res_496366;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_496216]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[i_496216], (flags & 36)));
					res_496366 += ((NI) 1);
				} LA20: ;
			}
		}
		{
			if (!((*arr).kind == ((NU8) 16))) goto LA23;
			indextype = (*arr).sons->data[((NI) 0)];
		}
		goto LA21;
		LA23: ;
		{
			indextype = getsystype_272190(((NU8) 31));
		}
		LA21: ;
		arg = indextypesmatch_455348(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_253522(arr));
		}
		LA28: ;
	}
	break;
	case ((NU8) 8):
	{
		Ttype223847* LOC31;
		result = n;
		LOC31 = 0;
		LOC31 = semtypenode_455269(c, n, NIM_NIL);
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_278684(c, LOC31));
	}
	break;
	case ((NU8) 18):
	{
		checksonslen_279260(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_495233((*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_456485(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		{
			Ttype223847* LOC35;
			NI64 idx;
			LOC35 = 0;
			LOC35 = skiptypes_227167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, 1083392);
			if (!((*LOC35).kind >= ((NU8) 31) && (*LOC35).kind <= ((NU8) 35))) goto LA36;
			idx = getordvalue_253178((*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_226351(arr);
				LOC40 = (idx < ((NI64) (LOC42)));
				LA41: ;
				if (!LOC40) goto LA43;
				asgnRefNoCycle((void**) (&(*n).typ), (*arr).sons->data[idx]);
			}
			goto LA38;
			LA43: ;
			{
				localerror_194128((*n).info, ((NU16) 190), ((NimStringDesc*) &TMP3115));
			}
			LA38: ;
		}
		goto LA33;
		LA36: ;
		{
			localerror_194128((*n).info, ((NU16) 87), ((NimStringDesc*) &TMP3115));
		}
		LA33: ;
		result = n;
	}
	break;
	default:
	{
		Tsym223841* 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: ;
		{
			Tnode223809* LOC53;
			Tnode223809* LOC56;
			LOC53 = 0;
			LOC53 = HEX5BHEX5D_224244(n, ((NI) 0));
			if (!((*LOC53).kind == ((NU8) 56) || (*LOC53).kind == ((NU8) 57))) goto LA54;
			LOC56 = 0;
			LOC56 = HEX5BHEX5D_224244((*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 = ((126976 &(1<<(((*s).kind)&31)))!=0);
			LA61: ;
			if (!LOC60) goto LA62;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semsymgenericinstantiation_490239(c, (*n).kindU.S6.sons->data[((NI) 0)], s));
			result = explicitgenericinstantiation_462205(c, n, s);
		}
		goto LA58;
		LA62: ;
		{
			NIM_BOOL LOC65;
			Ttype223847* 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_455269(c, n, NIM_NIL);
			result = symnodefromtype_456120(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(Tnode223809*, semarrget_493337)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Tnode223809* oldbracketexpr;
	result = 0;
	result = newnodei_225351(((NU8) 42), (*n).info);
	{
		NI i_493370;
		Slice90369 HEX3Atmp_493383;
		NI LOC2;
		i_493370 = 0;
		memset((void*)(&HEX3Atmp_493383), 0, sizeof(HEX3Atmp_493383));
		LOC2 = 0;
		LOC2 = len_224098(n);
		HEX3Atmp_493383 = HEX2EHEX2E_105290(((NI) 1), (LOC2 - 1));
		{
			NI x_493387;
			NI HEX3Atmp_493389;
			NI HEX3Atmp_493391;
			NI res_493393;
			x_493387 = 0;
			HEX3Atmp_493389 = 0;
			HEX3Atmp_493391 = 0;
			HEX3Atmp_493389 = HEX3Atmp_493383.a;
			HEX3Atmp_493391 = HEX3Atmp_493383.b;
			res_493393 = HEX3Atmp_493389;
			{
				while (1) {
					Tnode223809* LOC6;
					if (!(res_493393 <= HEX3Atmp_493391)) goto LA5;
					x_493387 = res_493393;
					i_493370 = x_493387;
					LOC6 = 0;
					LOC6 = HEX5BHEX5D_224244(n, i_493370);
					add_224165(result, LOC6);
					res_493393 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	oldbracketexpr = (*(*c).p).bracketexpr;
	result = semsubscript_493315(c, result, flags);
	asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
	{
		NimStringDesc* LOC11;
		NimStringDesc* LOC12;
		if (!result == 0) goto LA9;
		LOC11 = 0;
		LOC12 = 0;
		LOC12 = HEX24_245090(n);
		LOC11 = rawNewString(LOC12->Sup.len + 19);
appendString(LOC11, ((NimStringDesc*) &TMP3342));
appendString(LOC11, LOC12);
		localerror_194139((*n).info, LOC11);
		result = n;
	}
	LA9: ;
	return result;
}

static N_INLINE(Tnode223809*, skipaddr_493320)(Tnode223809* n) {
	Tnode223809* 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(Tnode223809*, semarrput_493412)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Tnode223809* b;
	Tnode223809* LOC1;
	Tnode223809* LOC2;
	result = 0;
	b = newnodei_225351(((NU8) 42), (*n).info);
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_224244(n, ((NI) 1));
	LOC2 = 0;
	LOC2 = skipaddr_493320(LOC1);
	add_224165(b, LOC2);
	{
		NI i_493432;
		NI HEX3Atmp_493438;
		NI LOC4;
		NI res_493441;
		i_493432 = 0;
		HEX3Atmp_493438 = 0;
		LOC4 = 0;
		LOC4 = len_224098(n);
		HEX3Atmp_493438 = (NI)(LOC4 - ((NI) 2));
		res_493441 = ((NI) 2);
		{
			while (1) {
				Tnode223809* LOC7;
				if (!(res_493441 <= HEX3Atmp_493438)) goto LA6;
				i_493432 = res_493441;
				LOC7 = 0;
				LOC7 = HEX5BHEX5D_224244(n, i_493432);
				add_224165(b, LOC7);
				res_493441 += ((NI) 1);
			} LA6: ;
		}
	}
	result = newnodei_225407(((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_226406(n));
	result = semasgn_493310(c, result, ((NU8) 1));
	return result;
}

N_NIMCALL(Tnode223809*, semasgnopr_493457)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = newnodei_225407(((NU8) 73), (*n).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), HEX5BHEX5D_224244(n, ((NI) 1)));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), HEX5BHEX5D_224244(n, ((NI) 2)));
	result = semasgn_493310(c, result, ((NU8) 2));
	return result;
}

N_NIMCALL(Tnode223809*, semispartof_493467)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	NU8 r;
	Tnode223809* LOC1;
	Tnode223809* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_224244(n, ((NI) 1));
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_224244(n, ((NI) 2));
	r = ispartof_445375(LOC1, LOC2);
	result = newintnodet_291028(((NI64) (r)), n);
	return result;
}

N_NIMCALL(Tnode223809*, evaltypetrait_493514)(Tnode223809* trait, Ttype223847* operand, Tsym223841* context) {
	Tnode223809* result;
	Ttype223847* typ;
	NimStringDesc* LOC1;
	result = 0;
	typ = skiptypes_227167(operand, 256);
	LOC1 = 0;
	LOC1 = nsuNormalize((*(*(*trait).kindU.S4.sym).name).s);
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3345))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3346))) goto LA3;
	goto LA4;
	LA2: ;
	{
		NimStringDesc* LOC7;
		LOC7 = 0;
		LOC7 = typetostring_253032(typ, ((NU8) 0));
		result = newstrnode_224644(((NU8) 20), LOC7);
		asgnRefNoCycle((void**) (&(*result).typ), newtype_226140(((NU8) 28), context));
		(*result).info = (*trait).info;
	}
	goto LA5;
	LA3: ;
	{
		NI LOC9;
		LOC9 = 0;
		LOC9 = len_226369(typ);
		result = newintnode_224608(((NU8) 6), ((NI64) ((NI)(LOC9 - ((NI) (((*typ).kind == ((NU8) 25))))))));
		asgnRefNoCycle((void**) (&(*result).typ), newtype_226140(((NU8) 31), context));
		(*result).info = (*trait).info;
	}
	goto LA5;
	LA4: ;
	{
		{
			NimStringDesc* LOC15;
			if (!NIM_TRUE) goto LA13;
			LOC15 = 0;
			LOC15 = HEX24_194279(TMP3347);
			internalerror_194191(LOC15);
		}
		LA13: ;
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode223809*, semtypetraits_493551)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Ttype223847* t;
	result = 0;
	checkminsonslen_279270(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_194279(TMP3343);
		internalerror_194191(LOC7);
	}
	LA5: ;
	{
		NI LOC10;
		Tnode223809* LOC13;
		Tsym223841* LOC14;
		LOC10 = 0;
		LOC10 = sonslen_226351(t);
		if (!(((NI) 0) < LOC10)) goto LA11;
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_224244(n, ((NI) 0));
		LOC14 = 0;
		LOC14 = getcurrowner_278258();
		result = evaltypetrait_493514(LOC13, t, LOC14);
	}
	goto LA8;
	LA11: ;
	{
		result = n;
	}
	LA8: ;
	return result;
}

N_NIMCALL(NI, expectintlit_493485)(Tcontext278023* c, Tnode223809* n) {
	NI result;
	Tnode223809* 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_194128((*n).info, ((NU16) 7), ((NimStringDesc*) &TMP3115));
	}
	break;
	}
	return result;
}

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

N_NIMCALL(Tnode223809*, seminstantiationinfo_493495)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	NI idx;
	NI usefullpaths;
	Tlineinfo188352 info;
	Tnode223809* filename;
	Ttype223847* LOC1;
	Tnode223809* line;
	Ttype223847* LOC7;
	NI LOC8;
	result = 0;
	result = newnodeit_225807(((NU8) 37), (*n).info, (*n).typ);
	idx = expectintlit_493485(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	usefullpaths = expectintlit_493485(c, (*n).kindU.S6.sons->data[((NI) 2)]);
	info = getinfocontext_189626(idx);
	LOC1 = 0;
	LOC1 = getsystype_272190(((NU8) 28));
	filename = newnodeit_225807(((NU8) 20), (*n).info, LOC1);
	{
		if (!!((usefullpaths == ((NI) 0)))) goto LA4;
		asgnRefNoCycle((void**) (&(*filename).kindU.S3.strval), tofullpath_189665(info.fileindex));
	}
	goto LA2;
	LA4: ;
	{
		asgnRefNoCycle((void**) (&(*filename).kindU.S3.strval), tofilename_189655(info.fileindex));
	}
	LA2: ;
	LOC7 = 0;
	LOC7 = getsystype_272190(((NU8) 31));
	line = newnodeit_225807(((NU8) 6), (*n).info, LOC7);
	LOC8 = 0;
	LOC8 = tolinenumber_189839(info);
	(*line).kindU.S1.intval = ((NI64) (LOC8));
	add_224165(result, filename);
	add_224165(result, line);
	return result;
}

N_NIMCALL(Tnode223809*, semord_493589)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	NI64 LOC1;
	NI64 LOC2;
	Ttype223847* LOC3;
	result = 0;
	result = n;
	LOC1 = 0;
	LOC1 = firstord_253004((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
	LOC2 = 0;
	LOC2 = lastord_253010((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
	LOC3 = 0;
	LOC3 = getsystype_272190(((NU8) 31));
	asgnRefNoCycle((void**) (&(*result).typ), makerangetype_279193(c, LOC1, LOC2, (*n).info, LOC3));
	return result;
}

N_NIMCALL(Tnode223809*, semlowhigh_491837)(Tcontext278023* c, Tnode223809* n, NU8 m) {
	Tnode223809* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_194128((*n).info, ((NU16) 73), optostr_491843[(m)- 7]);
	}
	goto LA1;
	LA4: ;
	{
		Ttype223847* typ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 1)], 32));
		typ = skiptypes_227167((*(*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_272190(((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_227167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(2306054115454658816)));
		}
		break;
		case ((NU8) 12):
		{
			Tnode223809* LOC11;
			LOC11 = 0;
			LOC11 = copytree_228028(n);
			asgnRefNoCycle((void**) (&(*n).typ), maketypefromexpr_278729(c, LOC11));
		}
		break;
		default:
		{
			localerror_194128((*n).info, ((NU16) 71), optostr_491843[(m)- 7]);
		}
		break;
		}
	}
	LA1: ;
	result = n;
	return result;
}

N_NIMCALL(Tnode223809*, semshallowcopy_493661)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	result = 0;
	{
		NI LOC3;
		Tnode223809* LOC6;
		Tnode223809* LOC7;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		result = newnodei_225351(((NU8) 74), (*n).info);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_224244(n, ((NI) 1));
		add_224165(result, LOC6);
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_224244(n, ((NI) 2));
		add_224165(result, LOC7);
		result = semasgn_493310(c, result, ((NU8) 0));
	}
	goto LA1;
	LA4: ;
	{
		result = semdirectop_456039(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, sembindsym_493599)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* sl;
	Tnode223809* ismixin;
	Tnode223809* id;
	Tident196021* LOC13;
	Tsym223841* s;
{	result = 0;
	result = copynode_227660(n);
	add_224165(result, (*n).kindU.S6.sons->data[((NI) 0)]);
	sl = semconstexpr_456485(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	{
		if (!!(((*sl).kind == ((NU8) 20) || (*sl).kind == ((NU8) 21) || (*sl).kind == ((NU8) 22)))) goto LA3;
		localerror_194128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 6), ((NimStringDesc*) &TMP3115));
		result = errornode_279171(c, n);
		goto BeforeRet;
	}
	LA3: ;
	ismixin = semconstexpr_456485(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_194128((*(*n).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 108), ((NimStringDesc*) &TMP3115));
		result = errornode_279171(c, n);
		goto BeforeRet;
	}
	LA11: ;
	LOC13 = 0;
	LOC13 = getident_196463((*sl).kindU.S3.strval);
	id = newidentnode_225313(LOC13, (*n).info);
	s = qualifiedlookup_284864(c, id, 2);
	{
		Tnode223809* sc;
		if (!!((s == NIM_NIL))) goto LA16;
		sc = symchoice_469790(c, id, s, ((NU8) ((*ismixin).kindU.S1.intval)));
		add_224165(result, sc);
	}
	goto LA14;
	LA16: ;
	{
		localerror_194128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 63), (*sl).kindU.S3.strval);
	}
	LA14: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isnegative_493683)(Tnode223809* n_493685) {
	NIM_BOOL result;
	Tnode223809* n;
	result = 0;
	n = skipconv_262935(n_493685);
	{
		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_493666)(Ttype223847* t_493668) {
	NIM_BOOL result;
	Ttype223847* t;
	NIM_BOOL LOC1;
	NI64 LOC3;
	result = 0;
	t = skiptypes_227167(t_493668, IL64(211106232576256));
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 16));
	if (!(LOC1)) goto LA2;
	LOC3 = 0;
	LOC3 = firstord_253004(t);
	LOC1 = !((LOC3 == IL64(0)));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Tnode223809*, magicsafteroverloadresolution_493738)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Tnode223809* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_224244(n, ((NI) 0));
	switch ((*(*LOC1).kindU.S4.sym).magic) {
	case ((NU8) 13):
	{
		Tnode223809* LOC3;
		checksonslen_279260(n, ((NI) 2));
		LOC3 = 0;
		LOC3 = HEX5BHEX5D_224244(n, ((NI) 0));
		result = semaddr_493250(c, (*n).kindU.S6.sons->data[((NI) 1)], eqStrings((*(*(*LOC3).kindU.S4.sym).name).s, ((NimStringDesc*) &TMP3338)));
	}
	break;
	case ((NU8) 14):
	{
		checksonslen_279260(n, ((NI) 2));
		result = semtypeof_493293(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 4):
	{
		result = semarrget_493337(c, n, flags);
	}
	break;
	case ((NU8) 5):
	{
		result = semarrput_493412(c, n, flags);
	}
	break;
	case ((NU8) 6):
	{
		result = semasgnopr_493457(c, n);
	}
	break;
	case ((NU8) 152):
	{
		result = semispartof_493467(c, n, flags);
	}
	break;
	case ((NU8) 10):
	{
		result = semtypetraits_493551(c, n);
	}
	break;
	case ((NU8) 153):
	{
		Tnode223809* LOC11;
		NimStringDesc* LOC12;
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_224244(n, ((NI) 1));
		LOC12 = 0;
		LOC12 = rendertree_245059(LOC11, 4);
		result = newstrnodet_291042(LOC12, n);
		asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 28)));
	}
	break;
	case ((NU8) 251):
	{
		result = seminstantiationinfo_493495(c, n);
	}
	break;
	case ((NU8) 28):
	{
		result = semord_493589(c, n);
	}
	break;
	case ((NU8) 8):
	case ((NU8) 7):
	{
		Tnode223809* LOC16;
		LOC16 = 0;
		LOC16 = HEX5BHEX5D_224244(n, ((NI) 0));
		result = semlowhigh_491837(c, n, (*(*LOC16).kindU.S4.sym).magic);
	}
	break;
	case ((NU8) 18):
	{
		result = semshallowcopy_493661(c, n, flags);
	}
	break;
	case ((NU8) 241):
	{
		result = sembindsym_493599(c, n);
	}
	break;
	case ((NU8) 206):
	{
		Tnode223809* LOC20;
		result = n;
		LOC20 = 0;
		LOC20 = HEX5BHEX5D_224244(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_493683((*n).kindU.S6.sons->data[((NI) 1)]);
				if (LOC28) goto LA29;
				LOC30 = 0;
				LOC31 = 0;
				LOC31 = len_224098(n);
				LOC30 = (((NI) 2) < LOC31);
				if (!(LOC30)) goto LA32;
				LOC30 = isnegative_493683((*n).kindU.S6.sons->data[((NI) 2)]);
				LA32: ;
				LOC28 = LOC30;
				LA29: ;
				if (!LOC28) goto LA33;
				localerror_194139((*n).info, ((NimStringDesc*) &TMP3350));
			}
			LA33: ;
		}
		LA24: ;
	}
	break;
	case ((NU8) 15):
	{
		Tnode223809* bracketexpr;
		{
			NI LOC38;
			LOC38 = 0;
			LOC38 = len_224098(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_194139((*n).info, ((NimStringDesc*) &TMP3351));
			result = (*n).kindU.S6.sons->data[((NI) 1)];
		}
		goto LA42;
		LA44: ;
		{
			NU8 LOC47;
			NimStringDesc* LOC50;
			NimStringDesc* LOC51;
			LOC47 = 0;
			LOC47 = checkforsideeffects_303869(bracketexpr);
			if (!!((LOC47 == ((NU8) 2)))) goto LA48;
			LOC50 = 0;
			LOC50 = rendertree_245059(bracketexpr, 0);
			LOC51 = 0;
			LOC51 = nsuFormatSingleElem(((NimStringDesc*) &TMP3352), LOC50);
			localerror_194139((*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_493666((*bracketexpr).typ);
			if (!LOC53) goto LA54;
			LOC56 = 0;
			LOC56 = rendertree_245059(bracketexpr, 0);
			LOC57 = 0;
			LOC57 = nsuFormatSingleElem(((NimStringDesc*) &TMP3353), LOC56);
			localerror_194139((*n).info, LOC57);
			result = (*n).kindU.S6.sons->data[((NI) 1)];
		}
		goto LA42;
		LA54: ;
		{
			Tnode223809* lenexpr;
			Tident196021* LOC59;
			Tnode223809* LOC60;
			Tnode223809* lenexprb;
			lenexpr = newnodei_225351(((NU8) 27), (*n).info);
			LOC59 = 0;
			LOC59 = getident_196463(((NimStringDesc*) &TMP3354));
			LOC60 = 0;
			LOC60 = newidentnode_225313(LOC59, (*n).info);
			add_224165(lenexpr, LOC60);
			add_224165(lenexpr, bracketexpr);
			lenexprb = semexprwithtype_455211(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_253093((*lenexprb).typ);
				LOC63 = !(LOC65);
				LA64: ;
				if (!LOC63) goto LA66;
				LOC68 = 0;
				LOC68 = rendertree_245059(lenexpr, 0);
				LOC69 = 0;
				LOC69 = nsuFormatSingleElem(((NimStringDesc*) &TMP3355), LOC68);
				localerror_194139((*n).info, LOC69);
				result = (*n).kindU.S6.sons->data[((NI) 1)];
			}
			goto LA61;
			LA66: ;
			{
				Ttype223847* LOC71;
				Tsym223841* LOC72;
				Tnode223809* LOC73;
				LOC71 = 0;
				LOC71 = getsystype_272190(((NU8) 31));
				result = newnodeit_225807(((NU8) 27), (*n).info, LOC71);
				LOC72 = 0;
				LOC72 = createmagic_229047(((NimStringDesc*) &TMP3356), ((NU8) 45));
				LOC73 = 0;
				LOC73 = newsymnode_225338(LOC72, (*n).info);
				add_224165(result, LOC73);
				add_224165(result, lenexprb);
				add_224165(result, (*n).kindU.S6.sons->data[((NI) 1)]);
			}
			LA61: ;
		}
		LA42: ;
	}
	break;
	case ((NU8) 16):
	{
		Transformation452013 plugin;
		Tnode223809* LOC75;
		LOC75 = 0;
		LOC75 = HEX5BHEX5D_224244(n, ((NI) 0));
		plugin = getplugin_452094((*LOC75).kindU.S4.sym);
		{
			NimStringDesc* LOC80;
			Tnode223809* LOC81;
			if (!plugin == 0) goto LA78;
			LOC80 = 0;
			LOC81 = 0;
			LOC81 = HEX5BHEX5D_224244(n, ((NI) 0));
			LOC80 = rawNewString((*(*(*LOC81).kindU.S4.sym).name).s->Sup.len + 19);
appendString(LOC80, ((NimStringDesc*) &TMP3357));
appendString(LOC80, (*(*(*LOC81).kindU.S4.sym).name).s);
			localerror_194139((*n).info, LOC80);
			result = n;
		}
		goto LA76;
		LA78: ;
		{
			result = plugin(c, n);
		}
		LA76: ;
	}
	break;
	default:
	{
		result = n;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode223809*, fixuptypeaftereval_456201)(Tcontext278023* c, Tnode223809* evaluated, Tnode223809* eorig) {
	Tnode223809* result;
	result = 0;
	{
		if (!((*(*eorig).typ).kind == ((NU8) 6) || (*(*eorig).typ).kind == ((NU8) 7) || (*(*eorig).typ).kind == ((NU8) 8))) goto LA3;
		result = semexprwithtype_455211(c, evaluated, 0);
	}
	goto LA1;
	LA3: ;
	{
		Ttype223847* expectedtype;
		result = evaluated;
		expectedtype = skiptypes_227167((*eorig).typ, IL64(576460752303423488));
		annotatetype_448134(result, expectedtype);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, evalatcompiletime_493821)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tsym223841* 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;
		Tnode223809* call;
		NIM_BOOL allconst;
		LOC9 = 0;
		LOC10 = 0;
		LOC10 = !(((*callee).magic == ((NU8) 0)));
		if (!(LOC10)) goto LA11;
		LOC10 = ((TMP3358[(*callee).magic/8] &(1<<((*callee).magic%8)))!=0);
		LA11: ;
		LOC9 = LOC10;
		if (!(LOC9)) goto LA12;
		LOC9 = !(((*n).typ == NIM_NIL));
		LA12: ;
		if (!LOC9) goto LA13;
		call = newnodeit_225807(((NU8) 27), (*n).info, (*n).typ);
		add_224165(call, (*n).kindU.S6.sons->data[((NI) 0)]);
		allconst = NIM_TRUE;
		{
			NI i_493905;
			NI HEX3Atmp_494218;
			NI LOC16;
			NI res_494221;
			i_493905 = 0;
			HEX3Atmp_494218 = 0;
			LOC16 = 0;
			LOC16 = len_224098(n);
			HEX3Atmp_494218 = (LOC16 - 1);
			res_494221 = ((NI) 1);
			{
				while (1) {
					Tnode223809* a;
					if (!(res_494221 <= HEX3Atmp_494218)) goto LA18;
					i_493905 = res_494221;
					a = getconstexpr_291004((*c).module, (*n).kindU.S6.sons->data[i_493905]);
					{
						if (!(a == NIM_NIL)) goto LA21;
						allconst = NIM_FALSE;
						a = (*n).kindU.S6.sons->data[i_493905];
						{
							if (!((*a).kind == ((NU8) 58))) goto LA25;
							a = (*a).kindU.S6.sons->data[((NI) 1)];
						}
						LA25: ;
					}
					LA21: ;
					add_224165(call, a);
					res_494221 += ((NI) 1);
				} LA18: ;
			}
		}
		{
			if (!allconst) goto LA29;
			result = getconstexpr_291004((*c).module, call);
			{
				if (!result == 0) goto LA33;
				result = n;
			}
			goto LA31;
			LA33: ;
			{
				goto BeforeRet;
			}
			LA31: ;
		}
		LA29: ;
		asgnRefNoCycle((void**) (&(*result).typ), getintervaltype_291364((*callee).magic, call));
	}
	LA13: ;
	{
		{
			NI LOC39;
			Ttypeseq223843* LOC57;
			TY391275 LOC58;
			LOC39 = 0;
			LOC39 = len_224098(n);
			if (!(((NI) 1) < LOC39)) goto LA40;
			{
				NI i_493963;
				NI HEX3Atmp_494226;
				NI LOC43;
				NI res_494229;
				i_493963 = 0;
				HEX3Atmp_494226 = 0;
				LOC43 = 0;
				LOC43 = len_224098(n);
				HEX3Atmp_494226 = (LOC43 - 1);
				res_494229 = ((NI) 1);
				{
					while (1) {
						if (!(res_494229 <= HEX3Atmp_494226)) goto LA45;
						i_493963 = res_494229;
						{
							NIM_BOOL LOC48;
							NIM_BOOL LOC49;
							Tnode223809* LOC50;
							Tnode223809* LOC52;
							Tnode223809* LOC54;
							LOC48 = 0;
							LOC49 = 0;
							LOC50 = 0;
							LOC50 = HEX5BHEX5D_224244(n, i_493963);
							LOC49 = (*LOC50).typ == 0;
							if (LOC49) goto LA51;
							LOC52 = 0;
							LOC52 = HEX5BHEX5D_224244(n, i_493963);
							LOC49 = !(((*(*LOC52).typ).kind == ((NU8) 59)));
							LA51: ;
							LOC48 = LOC49;
							if (LOC48) goto LA53;
							LOC54 = 0;
							LOC54 = HEX5BHEX5D_224244(n, i_493963);
							LOC48 = !((((*(*LOC54).typ).flags &(1<<((((NU8) 9))&31)))!=0));
							LA53: ;
							if (!LOC48) goto LA55;
							goto LA36;
						}
						LA55: ;
						res_494229 += ((NI) 1);
					} LA45: ;
				}
			}
			LOC57 = 0;
			LOC57 = (Ttypeseq223843*) newSeq((&NTI223843), 1);
			memset((void*)LOC58, 0, sizeof(LOC58));
			LOC58[0] = (*n).typ;
			asgnRefNoCycle((void**) (&LOC57->data[0]), LOC58[0]);
			asgnRefNoCycle((void**) (&(*n).typ), newtypewithsons_278807(c, ((NU8) 59), LOC57));
			(*(*n).typ).flags |= ((NU32)1)<<((((NU8) 9))%(sizeof(NU32)*8));
		}
		LA40: ;
	} LA36: ;
	{
		NIM_BOOL LOC61;
		NIM_BOOL LOC62;
		Tnode223809* 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 &(1<<((((NU8) 23))&31)))!=0));
			if (!(LOC69)) goto LA70;
			LOC69 = !(((goptions_165130 &(1<<((((NU8) 20))&31)))!=0));
			LA70: ;
			if (!LOC69) goto LA71;
			goto BeforeRet;
		}
		LA71: ;
		{
			if (!!(((TMP3358[(*callee).magic/8] &(1<<((*callee).magic%8)))!=0))) goto LA75;
			goto BeforeRet;
		}
		LA75: ;
		{
			NIM_BOOL LOC79;
			LOC79 = 0;
			LOC79 = !(((69632 &(1<<(((*callee).kind)&31)))!=0));
			if (LOC79) goto LA80;
			LOC79 = isgenericroutine_228650(callee);
			LA80: ;
			if (!LOC79) goto LA81;
			goto BeforeRet;
		}
		LA81: ;
		{
			NIM_BOOL LOC85;
			Ttype223847* LOC87;
			LOC85 = 0;
			LOC85 = !(((*n).typ == NIM_NIL));
			if (!(LOC85)) goto LA86;
			LOC87 = 0;
			LOC87 = typeallowed_261654((*n).typ, ((NU8) 10));
			LOC85 = !((LOC87 == NIM_NIL));
			LA86: ;
			if (!LOC85) goto LA88;
			goto BeforeRet;
		}
		LA88: ;
		call = newnodeit_225807(((NU8) 27), (*n).info, (*n).typ);
		add_224165(call, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_494172;
			NI HEX3Atmp_494234;
			NI LOC91;
			NI res_494237;
			i_494172 = 0;
			HEX3Atmp_494234 = 0;
			LOC91 = 0;
			LOC91 = len_224098(n);
			HEX3Atmp_494234 = (LOC91 - 1);
			res_494237 = ((NI) 1);
			{
				while (1) {
					Tnode223809* a;
					if (!(res_494237 <= HEX3Atmp_494234)) goto LA93;
					i_494172 = res_494237;
					a = getconstexpr_291004((*c).module, (*n).kindU.S6.sons->data[i_494172]);
					{
						if (!(a == NIM_NIL)) goto LA96;
						result = n;
						goto BeforeRet;
					}
					LA96: ;
					add_224165(call, a);
					res_494237 += ((NI) 1);
				} LA93: ;
			}
		}
		{
			if (!(((*callee).flags &(1<<((((NU8) 23))&31)))!=0)) goto LA100;
			result = evalstaticexpr_444232((*c).module, call, (*(*c).p).owner);
			{
				NimStringDesc* LOC106;
				if (!result == 0) goto LA104;
				LOC106 = 0;
				LOC106 = rendertree_245059(call, 0);
				localerror_194128((*n).info, ((NU16) 213), LOC106);
			}
			goto LA102;
			LA104: ;
			{
				result = fixuptypeaftereval_456201(c, result, n);
			}
			LA102: ;
		}
		goto LA98;
		LA100: ;
		{
			result = evalconstexpr_444221((*c).module, call);
			{
				if (!result == 0) goto LA111;
				result = n;
			}
			goto LA109;
			LA111: ;
			{
				result = fixuptypeaftereval_456201(c, result, n);
			}
			LA109: ;
		}
		LA98: ;
	}
	LA65: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, aftercallactions_494784)(Tcontext278023* c, Tnode223809* n, Tnode223809* orig, NU16 flags) {
	Tnode223809* result;
	Tsym223841* callee;
	result = 0;
	result = n;
	callee = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	switch ((*callee).kind) {
	case ((NU8) 17):
	{
		result = semmacroexpr_456073(c, result, orig, callee, flags);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_456062(c, result, callee, flags);
	}
	break;
	default:
	{
		semfinishoperands_392656(c, result);
		activate_455327(c, result);
		fixabstracttype_492616(c, result);
		analyseifaddresstakenincall_493052(c, result);
		{
			if (!!(((*callee).magic == ((NU8) 0)))) goto LA6;
			result = magicsafteroverloadresolution_493738(c, result, flags);
		}
		LA6: ;
	}
	break;
	}
	{
		if (!((*c).intypeclass == ((NI) 0))) goto LA10;
		result = evalatcompiletime_493821(c, result);
	}
	LA10: ;
	return result;
}

N_NIMCALL(Tnode223809*, semdirectop_456039)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Tnode223809* norig;
	result = 0;
	norig = copytree_228028(n);
	result = semoverloadedcallanalyseeffects_494293(c, n, norig, flags);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		result = aftercallactions_494784(c, result, norig, flags);
	}
	goto LA1;
	LA3: ;
	{
		result = errornode_279171(c, n);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, evalpattern_456546)(Tcontext278023* c, Tnode223809* n, Tnode223809* orig) {
	Tnode223809* result;
	NimStringDesc* rule;
	Tsym223841* 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_194279(TMP3328);
		internalerror_194191(LOC7);
	}
	LA5: ;
	rule = 0;
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = ((goptions_165130 &(1<<((((NU8) 12))&31)))!=0);
		if (!(LOC10)) goto LA11;
		LOC10 = ((gnotes_189398 &(IL64(1)<<(((((NU16) 283)- 237))&IL64(63))))!=0);
		LA11: ;
		if (!LOC10) goto LA12;
		rule = rendertree_245059(n, 4);
	}
	LA12: ;
	s = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	switch ((*s).kind) {
	case ((NU8) 17):
	{
		result = semmacroexpr_456073(c, n, orig, s, 0);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_456062(c, n, s, 0);
	}
	break;
	default:
	{
		result = semdirectop_456039(c, n, 0);
	}
	break;
	}
	{
		NIM_BOOL LOC19;
		NimStringDesc* LOC23;
		NimStringDesc* LOC24;
		LOC19 = 0;
		LOC19 = ((goptions_165130 &(1<<((((NU8) 12))&31)))!=0);
		if (!(LOC19)) goto LA20;
		LOC19 = ((gnotes_189398 &(IL64(1)<<(((((NU16) 283)- 237))&IL64(63))))!=0);
		LA20: ;
		if (!LOC19) goto LA21;
		LOC23 = 0;
		LOC24 = 0;
		LOC24 = rendertree_245059(result, 4);
		LOC23 = rawNewString(rule->Sup.len + LOC24->Sup.len + 7);
appendString(LOC23, rule);
appendString(LOC23, ((NimStringDesc*) &TMP3444));
appendString(LOC23, LOC24);
appendString(LOC23, ((NimStringDesc*) &TMP3249));
		message_194161((*orig).info, ((NU16) 283), LOC23);
	}
	LA21: ;
	return result;
}

N_NIMCALL(Tnode223809*, applypatterns_456630)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = n;
	{
		NI i_456662;
		NI HEX3Atmp_457013;
		NI res_457016;
		i_456662 = 0;
		HEX3Atmp_457013 = 0;
		HEX3Atmp_457013 = (((*c).patterns ? (*c).patterns->Sup.len : 0) - 1);
		res_457016 = HEX3Atmp_457013;
		{
			while (1) {
				Tsym223841* pattern;
				if (!(((NI) 0) <= res_457016)) goto LA3;
				i_456662 = res_457016;
				pattern = (*c).patterns->data[i_456662];
				{
					Tnode223809* x;
					if (!!(pattern == 0)) goto LA6;
					x = applyrule_447303(c, pattern, result);
					{
						if (!!(x == 0)) goto LA10;
						evaltemplatecounter_429396 += ((NI) 1);
						{
							if (!(((NI) 100) < evaltemplatecounter_429396)) goto LA14;
							globalerror_194107((*n).info, ((NU16) 188), ((NimStringDesc*) &TMP3115));
						}
						LA14: ;
						asgnRefNoCycle((void**) (&(*c).patterns->data[i_456662]), NIM_NIL);
						{
							if (!((*x).kind == ((NU8) 115))) goto LA18;
							asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 1)]), evalpattern_456546(c, (*x).kindU.S6.sons->data[((NI) 1)], result));
							result = flattenstmts_252773(x);
						}
						goto LA16;
						LA18: ;
						{
							result = evalpattern_456546(c, x, result);
						}
						LA16: ;
						evaltemplatecounter_429396 -= ((NI) 1);
						asgnRefNoCycle((void**) (&(*c).patterns->data[i_456662]), pattern);
					}
					LA10: ;
				}
				LA6: ;
				res_457016 -= ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode223809*, hlo_456542)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* 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_456630(c, n);
		{
			if (!(result == n)) goto LA17;
			{
				NI i_457125;
				NI HEX3Atmp_457142;
				NI LOC20;
				NI res_457145;
				i_457125 = 0;
				HEX3Atmp_457142 = 0;
				LOC20 = 0;
				LOC20 = safelen_224126(result);
				HEX3Atmp_457142 = (LOC20 - 1);
				res_457145 = ((NI) 0);
				{
					while (1) {
						Tnode223809* a;
						Tnode223809* h;
						if (!(res_457145 <= HEX3Atmp_457142)) goto LA22;
						i_457125 = res_457145;
						a = (*result).kindU.S6.sons->data[i_457125];
						h = hlo_456542(c, a);
						{
							if (!!((h == a))) goto LA25;
							asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_457125]), h);
						}
						LA25: ;
						res_457145 += ((NI) 1);
					} LA22: ;
				}
			}
		}
		goto LA15;
		LA17: ;
		{
			{
				NIM_BOOL LOC30;
				LOC30 = 0;
				LOC30 = isemptytype_228932((*n).typ);
				if (!(LOC30)) goto LA31;
				LOC30 = isemptytype_228932((*result).typ);
				LA31: ;
				if (!LOC30) goto LA32;
			}
			goto LA28;
			LA32: ;
			{
				result = fitnode_455245(c, (*n).typ, result);
			}
			LA28: ;
			result = commonoptimizations_413597((*c).module, result);
			result = hlo_456542(c, result);
			result = commonoptimizations_413597((*c).module, result);
		}
		LA15: ;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, hlobody_457161)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*c).patterns ? (*c).patterns->Sup.len : 0) == ((NI) 0));
		if (LOC3) goto LA4;
		LOC3 = !(((goptions_165130 &(1<<((((NU8) 21))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
		goto BeforeRet;
	}
	LA5: ;
	(*c).hloloopdetector = ((NI) 0);
	result = hlo_456542(c, n);
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(void, fixupinstantiatedsymbols_458063)(Tcontext278023* c, Tsym223841* s) {
	{
		NI i_458087;
		NI HEX3Atmp_458097;
		NI res_458100;
		i_458087 = 0;
		HEX3Atmp_458097 = 0;
		HEX3Atmp_458097 = (NI)(((*c).generics ? (*c).generics->Sup.len : 0) - ((NI) 1));
		res_458100 = ((NI) 0);
		{
			while (1) {
				if (!(res_458100 <= HEX3Atmp_458097)) goto LA3;
				i_458087 = res_458100;
				{
					Tsym223841* oldprc;
					Tscope223835* LOC8;
					Tnode223809* n;
					Tnode223809* LOC9;
					if (!((*(*c).generics->data[i_458087].genericsym).Sup.id == (*s).Sup.id)) goto LA6;
					oldprc = (*(*c).generics->data[i_458087].inst).sym;
					pushinfocontext_189581((*oldprc).info);
					LOC8 = 0;
					LOC8 = openscope_284091(c);
					n = (*oldprc).ast;
					LOC9 = 0;
					LOC9 = getbody_269062(s);
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), copytree_228028(LOC9));
					instantiatebody_457941(c, n, NIM_NIL, oldprc);
					closescope_284111(c);
					popinfocontext_189600();
				}
				LA6: ;
				res_458100 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(Tsym223841*, searchforborrowproc_462522)(Tcontext278023* c, Tscope223835* startscope, Tsym223841* fn) {
	Tsym223841* result;
	Tnode223809* call;
	NIM_BOOL hasdistinct;
	Tnode223809* LOC1;
	result = 0;
	call = newnodei_225351(((NU8) 27), (*fn).info);
	hasdistinct = NIM_FALSE;
	LOC1 = 0;
	LOC1 = newidentnode_225313((*fn).name, (*fn).info);
	add_224165(call, LOC1);
	{
		NI i_462554;
		NI HEX3Atmp_462609;
		NI LOC3;
		NI res_462612;
		i_462554 = 0;
		HEX3Atmp_462609 = 0;
		LOC3 = 0;
		LOC3 = len_224098((*(*fn).typ).n);
		HEX3Atmp_462609 = (LOC3 - 1);
		res_462612 = ((NI) 1);
		{
			while (1) {
				Tnode223809* param;
				Ttype223847* t;
				Ttype223847* LOC12;
				Tnode223809* LOC13;
				if (!(res_462612 <= HEX3Atmp_462609)) goto LA5;
				i_462554 = res_462612;
				param = (*(*(*fn).typ).n).kindU.S6.sons->data[i_462554];
				t = skiptypes_227167((*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_262320(t);
				LOC13 = 0;
				LOC13 = newnodeit_225807(((NU8) 1), (*fn).info, LOC12);
				add_224165(call, LOC13);
				res_462612 += ((NI) 1);
			} LA5: ;
		}
	}
	{
		Tnode223809* resolved;
		NU32 LOC18;
		if (!hasdistinct) goto LA16;
		LOC18 = 0;
		LOC18 |=((NU32)(1)<<(((*fn).kind)%(sizeof(NU32)*8)));
		resolved = semoverloadedcall_461971(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_486808)(Tcontext278023* c, Tnode223809* n, Tsym223841* s) {
	Tsym223841* b;
	b = searchforborrowproc_462522(c, (*(*c).currentscope).parent, s);
	{
		if (!!((b == NIM_NIL))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), newsymnode_225325(b));
	}
	goto LA1;
	LA3: ;
	{
		localerror_194128((*n).info, ((NU16) 143), ((NimStringDesc*) &TMP3115));
	}
	LA1: ;
}

N_NIMCALL(void, sideeffectscheck_458116)(Tcontext278023* c, Tsym223841* s) {
	{
		if (!((3072 & (*s).flags) == 3072)) goto LA3;
		localerror_194128((*s).info, ((NU16) 222), (*(*s).name).s);
	}
	LA3: ;
}

N_NIMCALL(Tnode223809*, semprocaux_487900)(Tcontext278023* c, Tnode223809* n, NU8 kind, Tspecialwords204012 validpragmas, NU8 phase) {
	Tnode223809* result;
	Tsym223841* s;
	NIM_BOOL typeisdetermined;
	NIM_BOOL isanon;
	Tscope223835* oldscope;
	Tscope223835* LOC19;
	Tnode223809* gp;
	Tsym223841* proto;
{	result = 0;
	result = semprocannotation_486960(c, n, validpragmas);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = n;
	checksonslen_279260(n, ((NI) 7));
	s = 0;
	typeisdetermined = NIM_FALSE;
	isanon = NIM_FALSE;
	{
		Tnode223809* LOC7;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_224244(n, ((NI) 0));
		if (!!(((*LOC7).kind == ((NU8) 3)))) goto LA8;
		{
			Tnode223809* LOC12;
			Tsym223841* LOC15;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_224244(n, ((NI) 0));
			if (!((*LOC12).kind == ((NU8) 1))) goto LA13;
			LOC15 = 0;
			LOC15 = getcurrowner_278258();
			s = newsym_224656(kind, idanon_196495, LOC15, (*n).info);
			isanon = NIM_TRUE;
		}
		goto LA10;
		LA13: ;
		{
			s = semidentdef_482542(c, (*n).kindU.S6.sons->data[((NI) 0)], kind);
		}
		LA10: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325(s));
		asgnRefNoCycle((void**) (&(*s).ast), n);
	}
	goto LA5;
	LA8: ;
	{
		Tnode223809* LOC18;
		LOC18 = 0;
		LOC18 = HEX5BHEX5D_224244(n, ((NI) 0));
		s = (*LOC18).kindU.S4.sym;
		asgnRefNoCycle((void**) (&(*s).owner), getcurrowner_278258());
		typeisdetermined = ((*s).typ == NIM_NIL);
		asgnRefNoCycle((void**) (&(*s).ast), n);
	}
	LA5: ;
	oldscope = (*c).currentscope;
	pushowner_278263(s);
	LOC19 = 0;
	LOC19 = openscope_284091(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_469425(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA20;
	LA22: ;
	{
		gp = newnodei_225351(((NU8) 75), (*n).info);
	}
	LA20: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA27;
		semparamlist_455284(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NI LOC31;
			LOC31 = 0;
			LOC31 = sonslen_226387(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_467542(c, (*n).info, NIM_NIL));
	}
	LA25: ;
	{
		if (!(((*(*s).typ).flags &(1<<((((NU8) 28))&31)))!=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_471348(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	}
	LA45: ;
	{
		if (!((49152 &(1<<(((*s).kind)&31)))!=0)) goto LA49;
		(*(*s).typ).flags |= ((NU32)1)<<((((NU8) 14))%(sizeof(NU32)*8));
	}
	LA49: ;
	proto = searchforproc_294278(c, oldscope, s);
	{
		if (!(proto == NIM_NIL)) goto LA53;
		{
			if (!((*s).kind == ((NU8) 15))) goto LA57;
			(*(*s).typ).callconv = ((NU8) 8);
		}
		goto LA55;
		LA57: ;
		{
			Toptionentry278005* LOC60;
			LOC60 = 0;
			LOC60 = lastoptionentry_278190(c);
			(*(*s).typ).callconv = (*LOC60).defaultcc;
		}
		LA55: ;
		{
			if (!(((*s).flags &(1<<((((NU8) 31))&31)))!=0)) goto LA63;
		}
		goto LA61;
		LA63: ;
		{
			if (!((520256 &(1<<((kind)&31)))!=0)) goto LA66;
			{
				if (!!(typeisdetermined)) goto LA70;
				addinterfaceoverloadablesymat_284746(c, oldscope, s);
			}
			LA70: ;
		}
		goto LA61;
		LA66: ;
		{
			{
				if (!!(typeisdetermined)) goto LA75;
				addinterfacedeclat_284677(c, oldscope, s);
			}
			LA75: ;
		}
		LA61: ;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA79;
			pragma_295082(c, s, (*n).kindU.S6.sons->data[((NI) 4)], validpragmas);
		}
		goto LA77;
		LA79: ;
		{
			implicitpragmas_298759(c, s, n, validpragmas);
		}
		LA77: ;
	}
	goto LA51;
	LA53: ;
	{
		Tscope223835* LOC91;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA85;
			localerror_194128((*(*n).kindU.S6.sons->data[((NI) 4)]).info, ((NU16) 140), ((NimStringDesc*) &TMP3115));
		}
		LA85: ;
		{
			if (!!((((*proto).flags &(1<<((((NU8) 4))&31)))!=0))) goto LA89;
			wrongredefinition_284588((*n).info, (*(*proto).name).s);
		}
		LA89: ;
		(*proto).flags &= ~(((NU32)1) << ((((NU8) 4)) % (sizeof(NU32)*8)));
		closescope_284111(c);
		LOC91 = 0;
		LOC91 = openscope_284091(c);
		{
			if (!!(((*(*(*proto).ast).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA94;
			addgenericparamlisttoscope_485541(c, (*(*proto).ast).kindU.S6.sons->data[((NI) 2)]);
		}
		LA94: ;
		addparams_455293(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 LA98;
			internalerror_194172((*n).info, ((NimStringDesc*) &TMP3293));
		}
		LA98: ;
		asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym), proto);
		{
			NIM_BOOL LOC102;
			NimStringDesc* LOC106;
			LOC102 = 0;
			LOC102 = importantcomments_165168();
			if (!(LOC102)) goto LA103;
			LOC102 = !((*(*proto).ast).comment == 0);
			LA103: ;
			if (!LOC102) goto LA104;
			LOC106 = 0;
			LOC106 = (*n).comment; (*n).comment = copyStringRC1((*(*proto).ast).comment);
			if (LOC106) nimGCunrefNoCycle(LOC106);
		}
		LA104: ;
		asgnRefNoCycle((void**) (&(*proto).ast), n);
		popowner_278269();
		pushowner_278263(s);
	}
	LA51: ;
	(*s).options = goptions_165130;
	{
		NIM_BOOL LOC109;
		LOC109 = 0;
		LOC109 = (((*s).flags &(1<<((((NU8) 30))&31)))!=0);
		if (LOC109) goto LA110;
		LOC109 = ((NU8)((*(*s).name).s->data[((NI) 0)]) == (NU8)(61));
		LA110: ;
		if (!LOC109) goto LA111;
		semoverride_487632(c, s, n);
	}
	LA111: ;
	{
		NIM_BOOL usepseudogenerics;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1)))) goto LA115;
		{
			if (!(((*s).flags &(1<<((((NU8) 26))&31)))!=0)) goto LA119;
			localerror_194128((*(*n).kindU.S6.sons->data[((NI) 6)]).info, ((NU16) 141), (*(*s).name).s);
		}
		LA119: ;
		usepseudogenerics = ((393216 &(1<<((kind)&31)))!=0);
		{
			NIM_BOOL LOC123;
			LOC123 = 0;
			LOC123 = ((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1));
			if (LOC123) goto LA124;
			LOC123 = usepseudogenerics;
			LA124: ;
			if (!LOC123) goto LA125;
			{
				if (!!(usepseudogenerics)) goto LA129;
				paramstypecheck_456022(c, (*s).typ);
			}
			LA129: ;
			pushproccon_278361(c, s);
			(*(*c).p).wasforwarded = !((proto == NIM_NIL));
			maybeaddresult_455301(c, s, n);
			{
				Tnode223809* sembody;
				Tnode223809* LOC135;
				if (!!((((*s).flags &(1<<((((NU8) 5))&31)))!=0))) goto LA133;
				LOC135 = 0;
				LOC135 = semprocbody_455238(c, (*n).kindU.S6.sons->data[((NI) 6)]);
				sembody = hlobody_457161(c, LOC135);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_415225((*c).module, sembody, s));
			}
			LA133: ;
			popproccon_278393(c);
		}
		goto LA121;
		LA125: ;
		{
			Tscope223835* LOC145;
			{
				NIM_BOOL LOC139;
				Tident196021* LOC143;
				Tsym223841* LOC144;
				LOC139 = 0;
				LOC139 = !(((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL));
				if (!(LOC139)) goto LA140;
				LOC139 = !(((49152 &(1<<((kind)&31)))!=0));
				LA140: ;
				if (!LOC139) goto LA141;
				LOC143 = 0;
				LOC143 = getident_196463(((NimStringDesc*) &TMP3157));
				LOC144 = 0;
				LOC144 = newsym_224656(((NU8) 0), LOC143, NIM_NIL, (*n).info);
				adddecl_284607(c, LOC144);
			}
			LA141: ;
			LOC145 = 0;
			LOC145 = openscope_284091(c);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semgenericstmt_462888(c, (*n).kindU.S6.sons->data[((NI) 6)]));
			closescope_284111(c);
			fixupinstantiatedsymbols_458063(c, s);
		}
		LA121: ;
		{
			if (!(((*s).flags &(1<<((((NU8) 5))&31)))!=0)) goto LA148;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), emptynode_224807);
		}
		LA148: ;
	}
	goto LA113;
	LA115: ;
	{
		{
			if (!!((proto == NIM_NIL))) goto LA153;
			localerror_194128((*n).info, ((NU16) 142), (*(*proto).name).s);
		}
		LA153: ;
		{
			NIM_BOOL LOC157;
			LOC157 = 0;
			LOC157 = ((67108896 & (*s).flags) == 0);
			if (!(LOC157)) goto LA158;
			LOC157 = ((*s).magic == ((NU8) 0));
			LA158: ;
			if (!LOC157) goto LA159;
			(*s).flags |= ((NU32)1)<<((((NU8) 4))%(sizeof(NU32)*8));
		}
		goto LA155;
		LA159: ;
		{
			if (!(((*s).flags &(1<<((((NU8) 26))&31)))!=0)) goto LA162;
			semborrow_486808(c, n, s);
		}
		goto LA155;
		LA162: ;
		LA155: ;
	}
	LA113: ;
	sideeffectscheck_458116(c, s);
	closescope_284111(c);
	popowner_278269();
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA166;
		(*c).patterns = (Tsymseq223811*) incrSeqV2(&((*c).patterns)->Sup, sizeof(Tsym223841*));
		asgnRefNoCycle((void**) (&(*c).patterns->data[(*c).patterns->Sup.len]), s);
		++(*c).patterns->Sup.len;
	}
	LA166: ;
	{
		if (!isanon) goto LA170;
		asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	}
	LA170: ;
	{
		NIM_BOOL LOC174;
		NIM_BOOL LOC175;
		LOC174 = 0;
		LOC175 = 0;
		LOC175 = istoplevel_279280(c);
		if (!(LOC175)) goto LA176;
		LOC175 = !(((*s).kind == ((NU8) 15)));
		LA176: ;
		LOC174 = LOC175;
		if (!(LOC174)) goto LA177;
		LOC174 = ((*(*s).typ).callconv == ((NU8) 8));
		LA177: ;
		if (!LOC174) goto LA178;
		message_194161((*s).info, ((NU16) 241), ((NimStringDesc*) &TMP3497));
	}
	LA178: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, determinetype_458941)(Tcontext278023* c, Tsym223841* s) {
	Tnode223809* LOC5;
{	{
		if (!!(((*s).typ == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = semprocaux_487900(c, (*s).ast, (*s).kind, TMP3498, ((NU8) 1));
	}BeforeRet: ;
}

N_NIMCALL(void, pickbestcandidate_458945)(Tcontext278023* c, Tnode223809* headsymbol, Tnode223809* n, Tnode223809* orig, Tnode223809* initialbinding, NU32 filter, Tcandidate386209* best, Tcandidate386209* alt, Tsymseq223811** errors) {
	Toverloaditer284431 o;
	Tsym223841* symx;
	NI symscope;
	TY458962* syms;
	Tcandidate386209 z;
{	memset((void*)(&o), 0, sizeof(o));
	symx = initoverloaditer_285108((&o), c, headsymbol);
	symscope = lastoverloadscope_285259((&o));
	syms = (TY458962*) newSeq((&NTI458962), 0);
	{
		while (1) {
			if (!!((symx == NIM_NIL))) goto LA2;
			{
				TY458963 LOC7;
				if (!((filter &(1<<(((*symx).kind)&31)))!=0)) goto LA5;
				memset((void*)(&LOC7), 0, sizeof(LOC7));
				LOC7.Field0 = symx;
				LOC7.Field1 = lastoverloadscope_285259((&o));
				syms = (TY458962*) incrSeqV2(&(syms)->Sup, sizeof(TY458963));
				asgnRefNoCycle((void**) (&syms->data[syms->Sup.len].Field0), LOC7.Field0);
				syms->data[syms->Sup.len].Field1 = LOC7.Field1;
				++syms->Sup.len;
			}
			LA5: ;
			symx = nextoverloaditer_285277((&o), c, headsymbol);
		} LA2: ;
	}
	{
		if (!((syms ? syms->Sup.len : 0) == ((NI) 0))) goto LA10;
		goto BeforeRet;
	}
	LA10: ;
	memset((void*)(&z), 0, sizeof(z));
	initcandidate_386303(c, best, syms->data[((NI) 0)].Field0, initialbinding, symscope);
	initcandidate_386303(c, alt, syms->data[((NI) 0)].Field0, initialbinding, symscope);
	(*best).state = ((NU8) 2);
	{
		NI i_459052;
		NI HEX3Atmp_459292;
		NI res_459295;
		i_459052 = 0;
		HEX3Atmp_459292 = 0;
		HEX3Atmp_459292 = ((syms ? syms->Sup.len : 0) - 1);
		res_459295 = ((NI) 0);
		{
			while (1) {
				Tsym223841* sym;
				if (!(res_459295 <= HEX3Atmp_459292)) goto LA14;
				i_459052 = res_459295;
				sym = syms->data[i_459052].Field0;
				determinetype_458941(c, sym);
				initcandidate_386303(c, (&z), sym, initialbinding, syms->data[i_459052].Field1);
				z.calleesym = sym;
				matches_392720(c, n, orig, (&z));
				{
					NIM_BOOL LOC17;
					LOC17 = 0;
					LOC17 = HEX3DHEX3D_459058((*errors), NIM_NIL);
					if (!!(LOC17)) goto LA18;
					safeadd_459171(errors, sym);
					{
						NIM_BOOL LOC22;
						LOC22 = 0;
						LOC22 = HEX3DHEX3D_459058(z.errors, NIM_NIL);
						if (!!(LOC22)) goto LA23;
						{
							Tsym223841* err_459239;
							Tsymseq223811* HEX3Atmp_459286;
							NI i_459289;
							NI L_459291;
							err_459239 = 0;
							HEX3Atmp_459286 = 0;
							HEX3Atmp_459286 = z.errors;
							i_459289 = ((NI) 0);
							L_459291 = (HEX3Atmp_459286 ? HEX3Atmp_459286->Sup.len : 0);
							{
								while (1) {
									if (!(i_459289 < L_459291)) goto LA27;
									err_459239 = HEX3Atmp_459286->data[i_459289];
									(*errors) = (Tsymseq223811*) incrSeqV2(&((*errors))->Sup, sizeof(Tsym223841*));
									asgnRefNoCycle((void**) (&(*errors)->data[(*errors)->Sup.len]), err_459239);
									++(*errors)->Sup.len;
									i_459289 += ((NI) 1);
								} LA27: ;
							}
						}
					}
					LA23: ;
				}
				LA18: ;
				{
					if (!(z.state == ((NU8) 1))) goto LA30;
					{
						if (!((49152 &(1<<(((*sym).kind)&31)))!=0)) goto LA34;
						z.exactmatches += ((NI) 200);
					}
					LA34: ;
					switch ((*best).state) {
					case ((NU8) 0):
					case ((NU8) 2):
					{
						genericAssign((void*)(&(*best)), (void*)(&z), (&NTI386209));
					}
					break;
					case ((NU8) 1):
					{
						NI cmp;
						cmp = cmpcandidates_386824((&(*best)), (&z));
						{
							if (!(cmp < ((NI) 0))) goto LA40;
							genericAssign((void*)(&(*best)), (void*)(&z), (&NTI386209));
						}
						goto LA38;
						LA40: ;
						{
							if (!(cmp == ((NI) 0))) goto LA43;
							genericAssign((void*)(&(*alt)), (void*)(&z), (&NTI386209));
						}
						goto LA38;
						LA43: ;
						{
						}
						LA38: ;
					}
					break;
					}
				}
				LA30: ;
				res_459295 += ((NI) 1);
			} LA14: ;
		}
	}
	}BeforeRet: ;
}

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

N_NIMCALL(NIM_BOOL, samemethoddispatcher_458880)(Tsym223841* a, Tsym223841* b) {
	NIM_BOOL result;
	result = 0;
	result = NIM_FALSE;
	{
		NIM_BOOL LOC3;
		Tnode223809* aa;
		Tnode223809* bb;
		LOC3 = 0;
		LOC3 = ((*a).kind == ((NU8) 13));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*b).kind == ((NU8) 13));
		LA4: ;
		if (!LOC3) goto LA5;
		aa = lastson_226406((*a).ast);
		bb = lastson_226406((*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_459584)(Tcontext278023* c, Tnode223809* n, Tnode223809* orig, NU32 filter, Tsymseq223811** errors, Tcandidate386209* Result) {
	Tnode223809* initialbinding;
	Tcandidate386209 alt;
	Tnode223809* f;
	Tnodeseq223803* 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_459474(c, (&usedsyms));
	{
		NIM_BOOL LOC8;
		Tnode223809* hiddenarg;
		LOC8 = 0;
		LOC8 = HEX3DHEX3D_298972(usedsyms, NIM_NIL);
		if (!!(LOC8)) goto LA9;
		{
			if (!(((NI) 1) < (usedsyms ? usedsyms->Sup.len : 0))) goto LA13;
			hiddenarg = newnode_225607(((NU8) 56), (*n).info, usedsyms, NIM_NIL);
		}
		goto LA11;
		LA13: ;
		{
			hiddenarg = usedsyms->data[((NI) 0)];
		}
		LA11: ;
		insert_459637((&(*n).kindU.S6.sons), hiddenarg, ((NI) 1));
		insert_459637((&(*orig).kindU.S6.sons), hiddenarg, ((NI) 1));
		pickbestcandidate_458945(c, f, n, orig, initialbinding, filter, Result, (&alt), errors);
		{
			if (!!(((*Result).state == ((NU8) 1)))) goto LA18;
			delete_460246((&(*n).kindU.S6.sons), ((NI) 1));
			delete_460246((&(*orig).kindU.S6.sons), ((NI) 1));
		}
		goto LA16;
		LA18: ;
		{
			goto BeforeRet;
		}
		LA16: ;
	}
	LA9: ;
	pickbestcandidate_458945(c, f, n, orig, initialbinding, filter, Result, (&alt), errors);
	overloadsstate = (*Result).state;
	{
		if (!!((overloadsstate == ((NU8) 1)))) goto LA23;
		{
			Tnode223809* calleename;
			Tnode223809* LOC37;
			Slice90369 LOC38;
			TY496414 LOC39;
			Slice90369 LOC40;
			TY496414 LOC41;
			if (!(((*n).flags &(1<<((((NU8) 9))&15)))!=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_226387(n);
				LOC31 = (((NI) 2) <= LOC33);
				LA32: ;
				if (!!(LOC31)) goto LA34;
				LOC36 = 0;
				LOC36 = HEX24_194279(TMP3499);
				internalerror_194191(LOC36);
			}
			LA34: ;
			LOC37 = 0;
			LOC37 = newstrnode_224644(((NU8) 20), (*(*f).kindU.S5.ident).s);
			calleename = withinfo_225302(LOC37, (*n).info);
			LOC38 = HEX2EHEX2E_105290(((NI) 0), ((NI) 1));
			memset((void*)LOC39, 0, sizeof(LOC39));
			LOC39[0] = NIM_NIL;
			LOC39[1] = HEX5BHEX5D_224244(n, ((NI) 1));
			LOC39[2] = calleename;
			HEX5BHEX5DHEX3D_414817((&(*n).kindU.S6.sons), LOC38, LOC39, 3);
			LOC40 = HEX2EHEX2E_105290(((NI) 0), ((NI) 1));
			memset((void*)LOC41, 0, sizeof(LOC41));
			LOC41[0] = NIM_NIL;
			LOC41[1] = HEX5BHEX5D_224244(orig, ((NI) 1));
			LOC41[2] = calleename;
			HEX5BHEX5DHEX3D_414817((&(*orig).kindU.S6.sons), LOC40, LOC41, 3);
			{
				Tnode223809* op_460971;
				Tident196021* LOC46;
				if (!(((*n).flags &(1<<((((NU8) 11))&15)))!=0)) goto LA44;
				LOC46 = 0;
				LOC46 = getident_196463(((NimStringDesc*) &TMP3501));
				op_460971 = newidentnode_225313(LOC46, (*n).info);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), op_460971);
				asgnRefNoCycle((void**) (&(*orig).kindU.S6.sons->data[((NI) 0)]), op_460971);
				pickbestcandidate_458945(c, op_460971, n, orig, initialbinding, filter, Result, (&alt), errors);
			}
			LA44: ;
			{
				Tnode223809* op_460988;
				Tident196021* LOC51;
				if (!((5 &(1<<(((*Result).state)&7)))!=0)) goto LA49;
				LOC51 = 0;
				LOC51 = getident_196463(((NimStringDesc*) &TMP3502));
				op_460988 = newidentnode_225313(LOC51, (*n).info);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), op_460988);
				asgnRefNoCycle((void**) (&(*orig).kindU.S6.sons->data[((NI) 0)]), op_460988);
				pickbestcandidate_458945(c, op_460988, n, orig, initialbinding, filter, Result, (&alt), errors);
			}
			LA49: ;
		}
		goto LA25;
		LA27: ;
		{
			Tnode223809* calleename;
			Slice90369 LOC63;
			NimStringDesc* LOC64;
			Tnode223809* LOC65;
			Tnode223809* callop;
			Tident196021* LOC66;
			Slice90369 LOC67;
			TY496414 LOC68;
			Slice90369 LOC69;
			TY496414 LOC70;
			if (!(((*n).flags &(1<<((((NU8) 10))&15)))!=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_226387(n);
				LOC57 = (LOC59 == ((NI) 3));
				LA58: ;
				if (!!(LOC57)) goto LA60;
				LOC62 = 0;
				LOC62 = HEX24_194279(TMP3503);
				internalerror_194191(LOC62);
			}
			LA60: ;
			LOC63 = HEX2EHEX2E_105290(((NI) 0), (NI)(((*(*f).kindU.S5.ident).s ? (*(*f).kindU.S5.ident).s->Sup.len : 0) - ((NI) 2)));
			LOC64 = 0;
			LOC64 = HEX5BHEX5D_90362((*(*f).kindU.S5.ident).s, LOC63);
			LOC65 = 0;
			LOC65 = newstrnode_224644(((NU8) 20), LOC64);
			calleename = withinfo_225302(LOC65, (*n).info);
			LOC66 = 0;
			LOC66 = getident_196463(((NimStringDesc*) &TMP3504));
			callop = newidentnode_225313(LOC66, (*n).info);
			LOC67 = HEX2EHEX2E_105290(((NI) 0), ((NI) 1));
			memset((void*)LOC68, 0, sizeof(LOC68));
			LOC68[0] = callop;
			LOC68[1] = HEX5BHEX5D_224244(n, ((NI) 1));
			LOC68[2] = calleename;
			HEX5BHEX5DHEX3D_414817((&(*n).kindU.S6.sons), LOC67, LOC68, 3);
			LOC69 = HEX2EHEX2E_105290(((NI) 0), ((NI) 1));
			memset((void*)LOC70, 0, sizeof(LOC70));
			LOC70[0] = callop;
			LOC70[1] = HEX5BHEX5D_224244(orig, ((NI) 1));
			LOC70[2] = calleename;
			HEX5BHEX5DHEX3D_414817((&(*orig).kindU.S6.sons), LOC69, LOC70, 3);
			pickbestcandidate_458945(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;
				Tident196021* LOC83;
				LOC79 = 0;
				LOC79 = (((*n).flags &(1<<((((NU8) 9))&15)))!=0);
				if (!(LOC79)) goto LA80;
				LOC79 = !((((*n).flags &(1<<((((NU8) 11))&15)))!=0));
				LA80: ;
				if (!LOC79) goto LA81;
				LOC83 = 0;
				LOC83 = considerquotedident_284010(f);
				localerror_194128((*n).info, ((NU16) 64), (*LOC83).s);
			}
			goto LA77;
			LA81: ;
			{
				Tident196021* LOC85;
				LOC85 = 0;
				LOC85 = considerquotedident_284010(f);
				localerror_194128((*n).info, ((NU16) 65), (*LOC85).s);
			}
			LA77: ;
			goto BeforeRet;
		}
		goto LA71;
		LA75: ;
		{
			if (!!(((*Result).state == ((NU8) 1)))) goto LA87;
			{
				NimStringDesc* LOC93;
				if (!(((*n).flags &(1<<((((NU8) 12))&15)))!=0)) goto LA91;
				LOC93 = 0;
				LOC93 = rendertree_245059(n, 4);
				localerror_194128((*n).info, ((NU16) 92), LOC93);
			}
			goto LA89;
			LA91: ;
			{
				{
					if (!!(((1536 & (*n).flags) == 0))) goto LA97;
					delete_460246((&(*n).kindU.S6.sons), ((NI) 2));
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), f);
				}
				LA97: ;
				unsureAsgnRef((void**) (&(*errors)), (Tsymseq223811*) newSeq((&NTI223811), 0));
				pickbestcandidate_458945(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_386824(Result, (&alt));
		LOC102 = (LOC104 == ((NI) 0));
		LA103: ;
		LOC101 = LOC102;
		if (!(LOC101)) goto LA105;
		LOC106 = 0;
		LOC106 = samemethoddispatcher_458880((*Result).calleesym, alt.calleesym);
		LOC101 = !(LOC106);
		LA105: ;
		if (!LOC101) goto LA107;
		{
			NimStringDesc* LOC113;
			if (!!(((*Result).state == ((NU8) 1)))) goto LA111;
			LOC113 = 0;
			LOC113 = HEX24_194279(TMP3505);
			internalerror_194191(LOC113);
		}
		LA111: ;
		{
			if (!(((NI) 0) < (*c).compilescontextid)) goto LA116;
			globalerror_194107((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3506));
		}
		goto LA114;
		LA116: ;
		{
			NimStringDesc* args;
			NimStringDesc* LOC130;
			TY191293 LOC131;
			NimStringDesc* LOC132;
			if (!(gerrorcounter_189399 == ((NI) 0))) goto LA119;
			args = copyString(((NimStringDesc*) &TMP3507));
			{
				NI i_461249;
				NI HEX3Atmp_461257;
				NI LOC122;
				NI res_461260;
				i_461249 = 0;
				HEX3Atmp_461257 = 0;
				LOC122 = 0;
				LOC122 = sonslen_226387(n);
				HEX3Atmp_461257 = (NI)(LOC122 - ((NI) 1));
				res_461260 = ((NI) 1);
				{
					while (1) {
						NimStringDesc* LOC129;
						if (!(res_461260 <= HEX3Atmp_461257)) goto LA124;
						i_461249 = res_461260;
						{
							if (!(((NI) 1) < i_461249)) goto LA127;
							args = resizeString(args, 2);
appendString(args, ((NimStringDesc*) &TMP3508));
						}
						LA127: ;
						LOC129 = 0;
						LOC129 = typetostring_253032((*(*n).kindU.S6.sons->data[i_461249]).typ, ((NU8) 0));
						args = resizeString(args, LOC129->Sup.len + 0);
appendString(args, LOC129);
						res_461260 += ((NI) 1);
					} LA124: ;
				}
			}
			args = resizeString(args, 1);
appendString(args, ((NimStringDesc*) &TMP3137));
			LOC130 = 0;
			LOC130 = msgkindtostring_190406(((NU16) 136));
			memset((void*)LOC131, 0, sizeof(LOC131));
			LOC131[0] = getprocheader_253447((*Result).calleesym, ((NU8) 0));
			LOC131[1] = getprocheader_253447(alt.calleesym, ((NU8) 0));
			LOC131[2] = copyString(args);
			LOC132 = 0;
			LOC132 = nsuFormatOpenArray(LOC130, LOC131, 3);
			localerror_194128((*n).info, ((NU16) 4), LOC132);
		}
		goto LA114;
		LA119: ;
		LA114: ;
	}
	LA107: ;
	}BeforeRet: ;
}

N_NIMCALL(void, instgenericconverterssons_461312)(Tcontext278023* c, Tnode223809* n, Tcandidate386209* x) {
	{
		if (!(*x).genericconverter) goto LA3;
		{
			NI i_461420;
			NI HEX3Atmp_461423;
			NI LOC6;
			NI res_461426;
			i_461420 = 0;
			HEX3Atmp_461423 = 0;
			LOC6 = 0;
			LOC6 = len_224098(n);
			HEX3Atmp_461423 = (LOC6 - 1);
			res_461426 = ((NI) 1);
			{
				while (1) {
					if (!(res_461426 <= HEX3Atmp_461423)) goto LA8;
					i_461420 = res_461426;
					instgenericconvertersarg_461276(c, (*n).kindU.S6.sons->data[i_461420], x);
					res_461426 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	LA3: ;
}

N_NIMCALL(Tnode223809*, semresolvedcall_461507)(Tcontext278023* c, Tnode223809* n, Tcandidate386209* x) {
	Tnode223809* result;
	Tsym223841* finalcallee;
	Tnode223809* gp;
{	result = 0;
	finalcallee = (*x).calleesym;
	markused_386253((*(*n).kindU.S6.sons->data[((NI) 0)]).info, finalcallee);
	{
		if (!((*finalcallee).ast == NIM_NIL)) goto LA3;
		internalerror_194172((*n).info, ((NimStringDesc*) &TMP3509));
	}
	LA3: ;
	{
		if (!!(((*x).fauxmatch == ((NU8) 0)))) goto LA7;
		result = (*x).call;
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_225338(finalcallee, (*(*result).kindU.S6.sons->data[((NI) 0)]).info));
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = containsgenerictype_262310((*result).typ);
			if (LOC11) goto LA12;
			LOC11 = ((*x).fauxmatch == ((NU8) 60));
			LA12: ;
			if (!LOC11) goto LA13;
			asgnRefNoCycle((void**) (&(*result).typ), newtypes_278221((*x).fauxmatch, c));
		}
		LA13: ;
		goto BeforeRet;
	}
	LA7: ;
	gp = (*(*finalcallee).ast).kindU.S6.sons->data[((NI) 2)];
	{
		if (!!(((*gp).kind == ((NU8) 1)))) goto LA17;
		{
			if (!!(((393216 &(1<<(((*(*x).calleesym).kind)&31)))!=0))) goto LA21;
			{
				if (!((*(*x).calleesym).magic == ((NU8) 4) || (*(*x).calleesym).magic == ((NU8) 5))) goto LA25;
				finalcallee = (*x).calleesym;
			}
			goto LA23;
			LA25: ;
			{
				finalcallee = generateinstance_458450(c, (*x).calleesym, (*x).bindings, (*n).info);
			}
			LA23: ;
		}
		goto LA19;
		LA21: ;
		{
			{
				Tsym223841* s_461869;
				Tidtable223859 HEX3Atmp_461884;
				s_461869 = 0;
				memset((void*)(&HEX3Atmp_461884), 0, sizeof(HEX3Atmp_461884));
				HEX3Atmp_461884.counter = (*x).bindings.counter;
				HEX3Atmp_461884.data = (*x).bindings.data;
				{
					NimStringDesc* LOC34;
					if (!!(((*gp).kind == ((NU8) 75)))) goto LA32;
					LOC34 = 0;
					LOC34 = HEX24_194279(TMP3153);
					internalerror_194191(LOC34);
				}
				LA32: ;
				{
					NI i_461890;
					Tnode223809* a_461892;
					i_461890 = 0;
					a_461892 = 0;
					{
						NI i_461894;
						NI HEX3Atmp_461896;
						NI LOC37;
						NI res_461898;
						i_461894 = 0;
						HEX3Atmp_461896 = 0;
						LOC37 = 0;
						LOC37 = len_224098(gp);
						HEX3Atmp_461896 = (LOC37 - 1);
						res_461898 = ((NI) 0);
						{
							while (1) {
								if (!(res_461898 <= HEX3Atmp_461896)) goto LA39;
								i_461894 = res_461898;
								i_461890 = i_461894;
								a_461892 = (*gp).kindU.S6.sons->data[i_461894];
								{
									Tsym223841* q_461902;
									NU8 symkind_461904;
									Tsym223841* s_461906;
									Tsym223841* LOC55;
									Ttype223847* t_461908;
									Tidobj196015* LOC56;
									TNimObject* LOC57;
									{
										NimStringDesc* LOC45;
										if (!!(((*a_461892).kind == ((NU8) 3)))) goto LA43;
										LOC45 = 0;
										LOC45 = HEX24_194279(TMP3154);
										internalerror_194191(LOC45);
									}
									LA43: ;
									q_461902 = (*a_461892).kindU.S4.sym;
									{
										if (!!(((*(*q_461902).typ).kind == ((NU8) 8) || (*(*q_461902).typ).kind == ((NU8) 12) || (*(*q_461902).typ).kind == ((NU8) 49) || (*(*q_461902).typ).kind >= ((NU8) 51) && (*(*q_461902).typ).kind <= ((NU8) 59)))) goto LA48;
										goto LA40;
									}
									LA48: ;
									{
										if (!((*(*q_461902).typ).kind == ((NU8) 59))) goto LA52;
										symkind_461904 = ((NU8) 10);
									}
									goto LA50;
									LA52: ;
									{
										symkind_461904 = ((NU8) 7);
									}
									LA50: ;
									LOC55 = 0;
									LOC55 = getcurrowner_278258();
									s_461906 = newsym_224656(symkind_461904, (*q_461902).name, LOC55, (*q_461902).info);
									(*s_461906).flags = ((*s_461906).flags | 5);
									LOC56 = 0;
									LOC56 = &(*q_461902).typ->Sup;
									LOC57 = 0;
									LOC57 = idtableget_231182(HEX3Atmp_461884, LOC56);
									t_461908 = ((Ttype223847*) (LOC57));
									{
										if (!(t_461908 == NIM_NIL)) goto LA60;
										{
											if (!(((*(*q_461902).typ).flags &(1<<((((NU8) 10))&31)))!=0)) goto LA64;
											t_461908 = (*q_461902).typ;
										}
										goto LA62;
										LA64: ;
										{
											localerror_194128((*a_461892).info, ((NU16) 128), (*(*s_461906).name).s);
											t_461908 = errortype_279161(c);
										}
										LA62: ;
									}
									goto LA58;
									LA60: ;
									{
										if (!((*t_461908).kind == ((NU8) 12))) goto LA68;
										localerror_194128((*a_461892).info, ((NU16) 128), (*(*q_461902).name).s);
										t_461908 = errortype_279161(c);
									}
									goto LA58;
									LA68: ;
									{
										if (!((*t_461908).kind == ((NU8) 9))) goto LA71;
										t_461908 = generatetypeinstance_302894(c, HEX3Atmp_461884, (*a_461892).info, t_461908);
									}
									goto LA58;
									LA71: ;
									LA58: ;
									asgnRefNoCycle((void**) (&(*s_461906).typ), t_461908);
									{
										if (!((*t_461908).kind == ((NU8) 59))) goto LA75;
										asgnRefNoCycle((void**) (&(*s_461906).ast), (*t_461908).n);
									}
									LA75: ;
									s_461869 = s_461906;
									switch ((*s_461869).kind) {
									case ((NU8) 10):
									{
										add_224165((*x).call, (*s_461869).ast);
									}
									break;
									case ((NU8) 7):
									{
										Tnode223809* LOC79;
										LOC79 = 0;
										LOC79 = newsymnode_225338(s_461869, (*n).info);
										add_224165((*x).call, LOC79);
									}
									break;
									default:
									{
										{
											NimStringDesc* LOC85;
											if (!NIM_TRUE) goto LA83;
											LOC85 = 0;
											LOC85 = HEX24_194279(TMP3510);
											internalerror_194191(LOC85);
										}
										LA83: ;
									}
									break;
									}
								} LA40: ;
								res_461898 += ((NI) 1);
							} LA39: ;
						}
					}
				}
			}
		}
		LA19: ;
	}
	LA17: ;
	result = (*x).call;
	instgenericconverterssons_461312(c, result, x);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_225338(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_461930)(Tnode223809* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NI LOC2;
	Ttype223847* t;
	Tnode223809* LOC4;
	NIM_BOOL LOC5;
	Ttype223847* LOC7;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = len_224098(n);
	LOC1 = (((NI) 2) <= LOC2);
	if (!(LOC1)) goto LA3;
	LOC4 = 0;
	LOC4 = HEX5BHEX5D_224244(n, ((NI) 1));
	t = (*LOC4).typ;
	LOC5 = 0;
	LOC5 = !((t == NIM_NIL));
	if (!(LOC5)) goto LA6;
	LOC7 = 0;
	LOC7 = skiptypes_227167(t, 2048);
	LOC5 = ((*LOC7).kind == ((NU8) 21) || (*LOC7).kind == ((NU8) 22));
	LA6: ;
	LOC1 = LOC5;
	LA3: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Tnode223809*, tryderef_461963)(Tnode223809* n) {
	Tnode223809* result;
	Ttype223847* LOC1;
	result = 0;
	result = newnodei_225351(((NU8) 65), (*n).info);
	LOC1 = 0;
	LOC1 = skiptypes_227167((*n).typ, IL64(211106232576256));
	asgnRefNoCycle((void**) (&(*result).typ), (*LOC1).sons->data[((NI) 0)]);
	addson_225819(result, n);
	return result;
}

N_NIMCALL(void, notfounderror_459326)(Tcontext278023* c, Tnode223809* n_459329, Tsymseq223811* 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_165132 &(1<<((((NU8) 6))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		globalerror_194107((*n_459329).info, ((NU16) 133), ((NimStringDesc*) &TMP3115));
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		Tnode223809* 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_224244(n_459329, ((NI) 0));
		LOC14 = 0;
		LOC14 = rendertree_245059(LOC13, 0);
		localerror_194128((*n_459329).info, ((NU16) 92), LOC14);
		goto BeforeRet;
	}
	LA11: ;
	proto = describeargs_386974(c, n_459329, ((NI) 1), ((NU8) 0));
	prefer = ((NU8) 0);
	{
		Tsym223841* err_459369;
		NI i_459435;
		NI L_459437;
		err_459369 = 0;
		i_459435 = ((NI) 0);
		L_459437 = (errors ? errors->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* errproto;
				Tnode223809* n;
				if (!(i_459435 < L_459437)) goto LA17;
				err_459369 = errors->data[i_459435];
				errproto = copyString(((NimStringDesc*) &TMP3115));
				n = (*(*err_459369).typ).n;
				{
					NI i_459386;
					NI HEX3Atmp_459426;
					NI LOC19;
					NI res_459429;
					i_459386 = 0;
					HEX3Atmp_459426 = 0;
					LOC19 = 0;
					LOC19 = len_224098(n);
					HEX3Atmp_459426 = (NI)(LOC19 - ((NI) 1));
					res_459429 = ((NI) 1);
					{
						while (1) {
							Tnode223809* p;
							if (!(res_459429 <= HEX3Atmp_459426)) goto LA21;
							i_459386 = res_459429;
							p = (*n).kindU.S6.sons->data[i_459386];
							{
								NimStringDesc* LOC26;
								if (!((*p).kind == ((NU8) 3))) goto LA24;
								LOC26 = 0;
								LOC26 = typetostring_253032((*(*p).kindU.S4.sym).typ, ((NU8) 0));
								errproto = resizeString(errproto, LOC26->Sup.len + 0);
appendString(errproto, LOC26);
								{
									NI LOC29;
									LOC29 = 0;
									LOC29 = len_224098(n);
									if (!!((i_459386 == (NI)(LOC29 - ((NI) 1))))) goto LA30;
									errproto = resizeString(errproto, 2);
appendString(errproto, ((NimStringDesc*) &TMP3508));
								}
								LA30: ;
							}
							LA24: ;
							res_459429 += ((NI) 1);
						} LA21: ;
					}
				}
				{
					if (!eqStrings(errproto, proto)) goto LA34;
					prefer = ((NU8) 3);
					goto LA15;
				}
				LA34: ;
				i_459435 += ((NI) 1);
			} LA17: ;
		}
	} LA15: ;
	result = msgkindtostring_190406(((NU16) 133));
	LOC36 = 0;
	LOC36 = describeargs_386974(c, n_459329, ((NI) 1), prefer);
	result = resizeString(result, LOC36->Sup.len + 0);
appendString(result, LOC36);
	result = addChar(result, 41);
	candidates = copyString(((NimStringDesc*) &TMP3115));
	{
		Tsym223841* err_459412;
		NI i_459441;
		NI L_459443;
		err_459412 = 0;
		i_459441 = ((NI) 0);
		L_459443 = (errors ? errors->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* LOC40;
				if (!(i_459441 < L_459443)) goto LA39;
				err_459412 = errors->data[i_459441];
				LOC40 = 0;
				LOC40 = getprocheader_253447(err_459412, prefer);
				candidates = resizeString(candidates, LOC40->Sup.len + 0);
appendString(candidates, LOC40);
				candidates = resizeString(candidates, 1);
appendString(candidates, ((NimStringDesc*) &TMP3511));
				i_459441 += ((NI) 1);
			} LA39: ;
		}
	}
	{
		NimStringDesc* LOC45;
		NimStringDesc* LOC46;
		if (!!(((candidates) && (candidates)->Sup.len == 0))) goto LA43;
		LOC45 = 0;
		LOC46 = 0;
		LOC46 = msgkindtostring_190406(((NU16) 134));
		LOC45 = rawNewString(LOC46->Sup.len + candidates->Sup.len + 2);
appendString(LOC45, ((NimStringDesc*) &TMP3511));
appendString(LOC45, LOC46);
appendString(LOC45, ((NimStringDesc*) &TMP3511));
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_165132 &(1<<((((NU8) 6))&31)))!=0);
		LA50: ;
		if (!LOC49) goto LA51;
		globalerror_194107((*n_459329).info, ((NU16) 4), result);
	}
	goto LA47;
	LA51: ;
	{
		localerror_194128((*n_459329).info, ((NU16) 4), result);
	}
	LA47: ;
	}BeforeRet: ;
}

N_NIMCALL(Tnode223809*, semoverloadedcall_461971)(Tcontext278023* c, Tnode223809* n, Tnode223809* norig, NU32 filter) {
	Tnode223809* result;
	Tsymseq223811* errors;
	Tcandidate386209 r_461980;
	result = 0;
	errors = 0;
	memset((void*)(&r_461980), 0, sizeof(r_461980));
	chckNil((void*)(&r_461980));
	memset((void*)(&r_461980), 0, sizeof(r_461980));
	resolveoverloads_459584(c, n, norig, filter, (&errors), (&r_461980));
	{
		if (!(r_461980.state == ((NU8) 1))) goto LA3;
		result = semresolvedcall_461507(c, n, (&r_461980));
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		Tcandidate386209 r;
		LOC6 = 0;
		LOC6 = experimentalmode_279290(c);
		if (!(LOC6)) goto LA7;
		LOC6 = canderef_461930(n);
		LA7: ;
		if (!LOC6) goto LA8;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), tryderef_461963((*n).kindU.S6.sons->data[((NI) 1)]));
		memset((void*)(&r), 0, sizeof(r));
		chckNil((void*)(&r));
		memset((void*)(&r), 0, sizeof(r));
		resolveoverloads_459584(c, n, norig, filter, (&errors), (&r));
		{
			if (!(r.state == ((NU8) 1))) goto LA12;
			result = semresolvedcall_461507(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_459326(c, n, errors);
		}
		LA10: ;
	}
	goto LA1;
	LA8: ;
	{
		notfounderror_459326(c, n, errors);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, semoverloadedcallanalyseeffects_494293)(Tcontext278023* c, Tnode223809* n, Tnode223809* norig, NU16 flags) {
	Tnode223809* result;
{	result = 0;
	{
		if (!!(((flags & 6) == 0))) goto LA3;
		result = semoverloadedcall_461971(c, n, norig, 520192);
	}
	goto LA1;
	LA3: ;
	{
		result = semoverloadedcall_461971(c, n, norig, 471040);
	}
	LA1: ;
	{
		Tsym223841* callee;
		if (!!((result == NIM_NIL))) goto LA8;
		{
			if (!!(((*(*result).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA12;
			internalerror_194191(((NimStringDesc*) &TMP3512));
			goto BeforeRet;
		}
		LA12: ;
		callee = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
		switch ((*callee).kind) {
		case ((NU8) 17):
		case ((NU8) 18):
		{
		}
		break;
		default:
		{
			{
				NIM_BOOL LOC18;
				Tsym223841* LOC22;
				LOC18 = 0;
				LOC18 = ((49152 &(1<<(((*callee).kind)&31)))!=0);
				if (!(LOC18)) goto LA19;
				LOC18 = ((*callee).Sup.id == (*(*(*c).p).owner).Sup.id);
				LA19: ;
				if (!LOC18) goto LA20;
				localerror_194128((*n).info, ((NU16) 26), (*(*callee).name).s);
				LOC22 = 0;
				LOC22 = errorsym_284372(c, n);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325(LOC22));
			}
			LA20: ;
			{
				if (!!((((*callee).flags &(1<<((((NU8) 10))&31)))!=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(Tnode223809*, propertywriteaccess_496404)(Tcontext278023* c, Tnode223809* n, Tnode223809* norig, Tnode223809* a) {
	Tnode223809* result;
	Tident196021* id;
	Tnode223809* LOC1;
	Tnode223809* setterid;
	NimStringDesc* LOC2;
	Tident196021* LOC3;
	Tnode223809* aorig;
	Tnodeseq223803* LOC4;
	TY496414 LOC5;
	Tnode223809* LOC6;
	Tnode223809* orig;
	Tnodeseq223803* LOC7;
	TY496414 LOC8;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_224244(a, ((NI) 1));
	id = considerquotedident_284010(LOC1);
	LOC2 = 0;
	LOC2 = rawNewString((*id).s->Sup.len + 1);
appendString(LOC2, (*id).s);
appendChar(LOC2, 61);
	LOC3 = 0;
	LOC3 = getident_196463(LOC2);
	setterid = newidentnode_225313(LOC3, (*n).info);
	aorig = HEX5BHEX5D_224244(norig, ((NI) 0));
	LOC4 = 0;
	LOC4 = (Tnodeseq223803*) newSeq((&NTI223803), 3);
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = setterid;
	LOC5[1] = HEX5BHEX5D_224244(a, ((NI) 0));
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_224244(n, ((NI) 1));
	LOC5[2] = semexpr_455201(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_225607(((NU8) 27), (*n).info, LOC4, NIM_NIL);
	(*result).flags |= ((NU16)1)<<((((NU8) 10))%(sizeof(NU16)*8));
	LOC7 = 0;
	LOC7 = (Tnodeseq223803*) newSeq((&NTI223803), 3);
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = setterid;
	LOC8[1] = HEX5BHEX5D_224244(aorig, ((NI) 0));
	LOC8[2] = HEX5BHEX5D_224244(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_225607(((NU8) 27), (*n).info, LOC7, NIM_NIL);
	result = semoverloadedcallanalyseeffects_494293(c, result, orig, 0);
	{
		if (!!((result == NIM_NIL))) goto LA11;
		result = aftercallactions_494784(c, result, norig, 0);
	}
	LA11: ;
	return result;
}

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

N_NIMCALL(Tnode223809*, dottransformation_496079)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode223809* LOC6;
		Tnode223809* LOC7;
		LOC3 = 0;
		LOC3 = issymchoice_491671((*n).kindU.S6.sons->data[((NI) 1)]);
		if (!LOC3) goto LA4;
		result = newnodei_225351(((NU8) 25), (*n).info);
		addson_225819(result, (*n).kindU.S6.sons->data[((NI) 1)]);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_224244(n, ((NI) 0));
		LOC7 = 0;
		LOC7 = copytree_228028(LOC6);
		addson_225819(result, LOC7);
	}
	goto LA1;
	LA4: ;
	{
		Tident196021* i;
		Tnode223809* LOC9;
		Tnode223809* LOC10;
		Tnode223809* LOC11;
		Tnode223809* LOC12;
		i = considerquotedident_284010((*n).kindU.S6.sons->data[((NI) 1)]);
		result = newnodei_225351(((NU8) 25), (*n).info);
		(*result).flags |= ((NU16)1)<<((((NU8) 9))%(sizeof(NU16)*8));
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_224244(n, ((NI) 1));
		LOC10 = 0;
		LOC10 = newidentnode_225313(i, (*LOC9).info);
		addson_225819(result, LOC10);
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_224244(n, ((NI) 0));
		LOC12 = 0;
		LOC12 = copytree_228028(LOC11);
		addson_225819(result, LOC12);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, buildoverloadedsubscripts_496122)(Tnode223809* n, Tident196021* ident) {
	Tnode223809* result;
	Tnode223809* LOC1;
	result = 0;
	result = newnodei_225351(((NU8) 27), (*n).info);
	LOC1 = 0;
	LOC1 = newidentnode_225313(ident, (*n).info);
	add_224165(result, LOC1);
	{
		NI i_496139;
		NI HEX3Atmp_496142;
		NI LOC3;
		NI res_496145;
		i_496139 = 0;
		HEX3Atmp_496142 = 0;
		LOC3 = 0;
		LOC3 = len_224098(n);
		HEX3Atmp_496142 = (NI)(LOC3 - ((NI) 1));
		res_496145 = ((NI) 0);
		{
			while (1) {
				Tnode223809* LOC6;
				if (!(res_496145 <= HEX3Atmp_496142)) goto LA5;
				i_496139 = res_496145;
				LOC6 = 0;
				LOC6 = HEX5BHEX5D_224244(n, i_496139);
				add_224165(result, LOC6);
				res_496145 += ((NI) 1);
			} LA5: ;
		}
	}
	return result;
}

N_NIMCALL(void, typemismatch_455379)(Tnode223809* n, Ttype223847* formal, Ttype223847* actual) {
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		NimStringDesc* LOC8;
		NimStringDesc* LOC9;
		NimStringDesc* LOC10;
		TY190421 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_190406(((NU16) 133));
		LOC9 = 0;
		LOC9 = typetostring_253032(actual, ((NU8) 0));
		LOC10 = 0;
		LOC10 = msgkindtostring_190406(((NU16) 135));
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = typetostring_253032(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*) &TMP3516));
appendString(LOC7, LOC12);
		localerror_194128((*n).info, ((NU16) 4), LOC7);
	}
	LA5: ;
}

N_NIMCALL(Ttype223847*, newproctype_483594)(Tlineinfo188352 info, Tsym223841* owner) {
	Ttype223847* result;
	Tnode223809* LOC1;
	result = 0;
	result = newtype_226140(((NU8) 25), owner);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_225351(((NU8) 76), info));
	rawaddson_227498(result, NIM_NIL);
	LOC1 = 0;
	LOC1 = newnodei_225351(((NU8) 152), info);
	addson_225819((*result).n, LOC1);
	return result;
}

N_NIMCALL(void, addparam_483602)(Ttype223847* proctype, Tsym223841* param) {
	NI LOC1;
	Tnode223809* LOC2;
	LOC1 = 0;
	LOC1 = len_226369(proctype);
	(*param).position = (NI)(LOC1 - ((NI) 1));
	LOC2 = 0;
	LOC2 = newsymnode_225325(param);
	addson_225819((*proctype).n, LOC2);
	rawaddson_227498(proctype, (*param).typ);
}

N_NIMCALL(Tnode223809*, newasgnstmt_482910)(Tnode223809* le, Tnode223809* ri) {
	Tnode223809* result;
	result = 0;
	result = newnodei_225407(((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_483406)(Tliftctx482686* c, Ttype223847* t, Tnode223809* body, Tnode223809* x, Tnode223809* y) {
	{
		Tnode223809* LOC5;
		if (!!(((*c).kind == ((NU8) 2)))) goto LA3;
		LOC5 = 0;
		LOC5 = newasgnstmt_482910(x, y);
		add_224165(body, LOC5);
	}
	LA3: ;
}

N_NIMCALL(Tnode223809*, genbuiltin_483465)(NU8 magic, NimStringDesc* name, Tnode223809* i) {
	Tnode223809* result;
	Tsym223841* LOC1;
	Tnode223809* LOC2;
	result = 0;
	result = newnodei_225351(((NU8) 27), (*i).info);
	LOC1 = 0;
	LOC1 = createmagic_229047(name, magic);
	LOC2 = 0;
	LOC2 = newsymnode_225325(LOC1);
	add_224165(result, LOC2);
	add_224165(result, i);
	return result;
}

N_NIMCALL(Tnode223809*, newseqcall_483501)(Tcontext278023* c, Tnode223809* x, Tnode223809* y) {
	Tnode223809* result;
	Tnode223809* lencall;
	result = 0;
	result = genbuiltin_483465(((NU8) 31), ((NimStringDesc*) &TMP3520), x);
	lencall = genbuiltin_483465(((NU8) 35), ((NimStringDesc*) &TMP3521), y);
	asgnRefNoCycle((void**) (&(*lencall).typ), getsystype_272190(((NU8) 31)));
	add_224165(result, lencall);
	return result;
}

N_NIMCALL(void, addvar_483427)(Tnode223809* father, Tnode223809* v, Tnode223809* value) {
	Tnode223809* vpart;
	vpart = newnodei_225407(((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_224807);
	asgnRefNoCycle((void**) (&(*vpart).kindU.S6.sons->data[((NI) 2)]), value);
	addson_225819(father, vpart);
}

N_NIMCALL(Tnode223809*, declarecounter_483439)(Tliftctx482686* c, Tnode223809* body, NI64 first) {
	Tnode223809* result;
	Tsym223841* temp;
	Tident196021* LOC1;
	Tnode223809* v;
	Tnode223809* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_196463(((NimStringDesc*) &TMP3522));
	temp = newsym_224656(((NU8) 5), LOC1, (*c).fn, (*c).info);
	asgnRefNoCycle((void**) (&(*temp).typ), getsystype_272190(((NU8) 31)));
	(*temp).flags |= ((NU32)1)<<((((NU8) 2))%(sizeof(NU32)*8));
	v = newnodei_225351(((NU8) 99), (*c).info);
	result = newsymnode_225325(temp);
	LOC2 = 0;
	LOC2 = newintlit_402681(first);
	addvar_483427(v, result, LOC2);
	add_224165(body, v);
	return result;
}

N_NIMCALL(Tnode223809*, genwhileloop_483477)(Tliftctx482686* c, Tnode223809* i, Tnode223809* dest) {
	Tnode223809* result;
	Tnode223809* cmp;
	Tnode223809* LOC1;
	result = 0;
	result = newnodei_225407(((NU8) 96), (*c).info, ((NI) 2));
	cmp = genbuiltin_483465(((NU8) 70), ((NimStringDesc*) &TMP3523), i);
	LOC1 = 0;
	LOC1 = genhigh_402691(dest);
	add_224165(cmp, LOC1);
	asgnRefNoCycle((void**) (&(*cmp).typ), getsystype_272190(((NU8) 1)));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), cmp);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), newnodei_225351(((NU8) 115), (*c).info));
	return result;
}

N_NIMCALL(Tnode223809*, at_482706)(Tnode223809* a, Tnode223809* i, Ttype223847* elemtype) {
	Tnode223809* result;
	result = 0;
	result = newnodei_225407(((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_483491)(Tnode223809* body, Tnode223809* i) {
	Tnode223809* inccall;
	Tnode223809* LOC1;
	inccall = genbuiltin_483465(((NU8) 26), ((NimStringDesc*) &TMP3525), i);
	LOC1 = 0;
	LOC1 = newintlit_402681(IL64(1));
	add_224165(inccall, LOC1);
	add_224165(body, inccall);
}

N_NIMCALL(Tnode223809*, newdestructorcall_482920)(Tsym223841* op, Tnode223809* x) {
	Tnode223809* result;
	Tnode223809* LOC1;
	result = 0;
	result = newnodeit_225807(((NU8) 27), (*x).info, (*(*op).typ).sons->data[((NI) 0)]);
	LOC1 = 0;
	LOC1 = newsymnode_225325(op);
	add_224165(result, LOC1);
	add_224165(result, x);
	return result;
}

N_NIMCALL(Tnode223809*, genaddr_482867)(Tcontext278023* c, Tnode223809* x) {
	Tnode223809* result;
	result = 0;
	{
		if (!((*x).kind == ((NU8) 65))) goto LA3;
		checksonslen_279260(x, ((NI) 1));
		result = (*x).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA3: ;
	{
		Ttype223847* LOC6;
		LOC6 = 0;
		LOC6 = makevartype_278645(c, (*x).typ);
		result = newnodeit_225807(((NU8) 64), (*x).info, LOC6);
		addson_225819(result, x);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, newasgncall_482885)(Tcontext278023* c, Tsym223841* op, Tnode223809* x, Tnode223809* y) {
	Tnode223809* result;
	Tnode223809* LOC5;
	Tnode223809* LOC6;
	result = 0;
	{
		if (!(((*op).flags &(1<<((((NU8) 20))&31)))!=0)) goto LA3;
		localerror_194128((*x).info, ((NU16) 226), (*(*op).name).s);
	}
	LA3: ;
	result = newnodei_225351(((NU8) 27), (*x).info);
	LOC5 = 0;
	LOC5 = newsymnode_225325(op);
	add_224165(result, LOC5);
	LOC6 = 0;
	LOC6 = genaddr_482867(c, x);
	add_224165(result, LOC6);
	add_224165(result, y);
	return result;
}

N_NIMCALL(Tnode223809*, newdeepcopycall_482931)(Tsym223841* op, Tnode223809* x, Tnode223809* y) {
	Tnode223809* result;
	Tnode223809* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = newdestructorcall_482920(op, y);
	result = newasgnstmt_482910(x, LOC1);
	return result;
}

N_NIMCALL(NIM_BOOL, consideroverloadedop_482940)(Tliftctx482686* c, Ttype223847* t, Tnode223809* body, Tnode223809* x, Tnode223809* y) {
	NIM_BOOL result;
{	result = 0;
	switch ((*c).kind) {
	case ((NU8) 2):
	{
		Tsym223841* op;
		op = (*t).destructor;
		{
			Tnode223809* LOC6;
			if (!!((op == NIM_NIL))) goto LA4;
			markused_386253((*c).info, op);
			LOC6 = 0;
			LOC6 = newdestructorcall_482920(op, x);
			add_224165(body, LOC6);
			result = NIM_TRUE;
		}
		LA4: ;
	}
	break;
	case ((NU8) 0):
	{
		{
			Tsym223841* op;
			Tnode223809* LOC27;
			if (!(((*t).flags &(1<<((((NU8) 26))&31)))!=0)) goto LA10;
			op = 0;
			{
				NIM_BOOL LOC14;
				LOC14 = 0;
				LOC14 = sametype_258092(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_482701((*c).c, t, (*c).info);
				}
				LA25: ;
			}
			LA12: ;
			markused_386253((*c).info, op);
			LOC27 = 0;
			LOC27 = newasgncall_482885((*c).c, op, x, y);
			add_224165(body, LOC27);
			result = NIM_TRUE;
		}
		LA10: ;
	}
	break;
	case ((NU8) 1):
	{
		Tsym223841* op;
		op = (*t).deepcopy;
		{
			Tnode223809* LOC33;
			if (!!((op == NIM_NIL))) goto LA31;
			markused_386253((*c).info, op);
			LOC33 = 0;
			LOC33 = newdeepcopycall_482931(op, x, y);
			add_224165(body, LOC33);
			result = NIM_TRUE;
		}
		LA31: ;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, dotfield_482767)(Tnode223809* x, Tsym223841* f) {
	Tnode223809* result;
	result = 0;
	result = newnodei_225407(((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_225338(f, (*x).info));
	asgnRefNoCycle((void**) (&(*result).typ), (*f).typ);
	return result;
}

N_NIMCALL(void, liftbodyobj_482778)(Tliftctx482686* c, Tnode223809* n, Tnode223809* body, Tnode223809* x, Tnode223809* y) {
	switch ((*n).kind) {
	case ((NU8) 3):
	{
		Tsym223841* f;
		Tnode223809* LOC2;
		Tnode223809* LOC3;
		f = (*n).kindU.S4.sym;
		LOC2 = 0;
		LOC2 = dotfield_482767(x, f);
		LOC3 = 0;
		LOC3 = dotfield_482767(y, f);
		liftbodyaux_482693(c, (*f).typ, body, LOC2, LOC3);
	}
	break;
	case ((NU8) 23):
	{
	}
	break;
	case ((NU8) 139):
	{
		Tnode223809* LOC6;
		Tnode223809* casestmt;
		Tnode223809* access;
		Tnode223809* LOC7;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_224244(n, ((NI) 0));
		liftbodyobj_482778(c, LOC6, body, x, y);
		casestmt = newnodei_225351(((NU8) 97), (*c).info);
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_224244(n, ((NI) 0));
		access = dotfield_482767(x, (*LOC7).kindU.S4.sym);
		add_224165(casestmt, access);
		{
			NI i_482814;
			NI HEX3Atmp_482825;
			NI LOC9;
			NI res_482828;
			i_482814 = 0;
			HEX3Atmp_482825 = 0;
			LOC9 = 0;
			LOC9 = len_224098(n);
			HEX3Atmp_482825 = (LOC9 - 1);
			res_482828 = ((NI) 1);
			{
				while (1) {
					Tnode223809* branch;
					Tnode223809* LOC12;
					NI L;
					Tnode223809* LOC13;
					Tnode223809* LOC14;
					if (!(res_482828 <= HEX3Atmp_482825)) goto LA11;
					i_482814 = res_482828;
					LOC12 = 0;
					LOC12 = HEX5BHEX5D_224244(n, i_482814);
					branch = copytree_228028(LOC12);
					L = len_224098(branch);
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), newnodei_225351(((NU8) 115), (*c).info));
					LOC13 = 0;
					LOC13 = HEX5BHEX5D_224244(n, i_482814);
					LOC14 = 0;
					LOC14 = lastson_226406(LOC13);
					liftbodyobj_482778(c, LOC14, (*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))], x, y);
					add_224165(casestmt, branch);
					res_482828 += ((NI) 1);
				} LA11: ;
			}
		}
		add_224165(body, casestmt);
		localerror_194139((*c).info, ((NimStringDesc*) &TMP3526));
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode223809* t_482823;
			t_482823 = 0;
			{
				NI i_482836;
				NI HEX3Atmp_482838;
				NI LOC18;
				NI res_482840;
				i_482836 = 0;
				HEX3Atmp_482838 = 0;
				LOC18 = 0;
				LOC18 = len_224098(n);
				HEX3Atmp_482838 = (LOC18 - 1);
				res_482840 = ((NI) 0);
				{
					while (1) {
						if (!(res_482840 <= HEX3Atmp_482838)) goto LA20;
						i_482836 = res_482840;
						t_482823 = (*n).kindU.S6.sons->data[i_482836];
						liftbodyobj_482778(c, t_482823, body, x, y);
						res_482840 += ((NI) 1);
					} LA20: ;
				}
			}
		}
	}
	break;
	default:
	{
		illformedastlocal_279250(n);
	}
	break;
	}
}

N_NIMCALL(void, liftbodytup_482717)(Tliftctx482686* c, Ttype223847* t, Tnode223809* body, Tnode223809* x, Tnode223809* y) {
	{
		NI i_482743;
		NI HEX3Atmp_482748;
		NI LOC2;
		NI res_482751;
		i_482743 = 0;
		HEX3Atmp_482748 = 0;
		LOC2 = 0;
		LOC2 = len_226369(t);
		HEX3Atmp_482748 = (LOC2 - 1);
		res_482751 = ((NI) 0);
		{
			while (1) {
				Tnode223809* lit;
				Tnode223809* LOC5;
				Tnode223809* LOC6;
				if (!(res_482751 <= HEX3Atmp_482748)) goto LA4;
				i_482743 = res_482751;
				lit = newintlit_402681(((NI64) (i_482743)));
				LOC5 = 0;
				LOC5 = at_482706(x, lit, (*t).sons->data[i_482743]);
				LOC6 = 0;
				LOC6 = at_482706(y, lit, (*t).sons->data[i_482743]);
				liftbodyaux_482693(c, (*t).sons->data[i_482743], body, LOC5, LOC6);
				res_482751 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, liftbodyaux_482693)(Tliftctx482686* c, Ttype223847* t, Tnode223809* body, Tnode223809* x, Tnode223809* 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_483406(c, t, body, x, y);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	case ((NU8) 24):
	{
		{
			Tnode223809* i;
			NI64 LOC13;
			Tnode223809* whileloop;
			Ttype223847* elemtype;
			Tnode223809* LOC14;
			Tnode223809* LOC15;
			if (!(((*t).flags &(1<<((((NU8) 26))&31)))!=0)) goto LA6;
			{
				Tnode223809* LOC12;
				if (!((*t).kind == ((NU8) 24))) goto LA10;
				LOC12 = 0;
				LOC12 = newseqcall_483501((*c).c, x, y);
				add_224165(body, LOC12);
			}
			LA10: ;
			LOC13 = 0;
			LOC13 = firstord_253004(t);
			i = declarecounter_483439(c, body, LOC13);
			whileloop = genwhileloop_483477(c, i, x);
			elemtype = lastson_226426(t);
			LOC14 = 0;
			LOC14 = at_482706(x, i, elemtype);
			LOC15 = 0;
			LOC15 = at_482706(y, i, elemtype);
			liftbodyaux_482693(c, elemtype, (*whileloop).kindU.S6.sons->data[((NI) 1)], LOC14, LOC15);
			addincstmt_483491((*whileloop).kindU.S6.sons->data[((NI) 1)], i);
			add_224165(body, whileloop);
		}
		goto LA4;
		LA6: ;
		{
			defaultop_483406(c, t, body, x, y);
		}
		LA4: ;
	}
	break;
	case ((NU8) 17):
	case ((NU8) 13):
	{
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = consideroverloadedop_482940(c, t, body, x, y);
			if (!!(LOC20)) goto LA21;
			{
				if (!!(((*t).sons->data[((NI) 0)] == NIM_NIL))) goto LA25;
				liftbodyaux_482693(c, (*t).sons->data[((NI) 0)], body, x, y);
			}
			LA25: ;
			{
				if (!((*t).kind == ((NU8) 17))) goto LA29;
				liftbodyobj_482778(c, (*t).n, body, x, y);
			}
			LA29: ;
		}
		LA21: ;
	}
	break;
	case ((NU8) 18):
	{
		liftbodytup_482717(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_483406(c, t, body, x, y);
		}
		goto LA33;
		LA37: ;
		{
			Tnode223809* call;
			Tsym223841* LOC40;
			Tnode223809* LOC41;
			call = newnodei_225407(((NU8) 27), (*c).info, ((NI) 2));
			asgnRefNoCycle((void**) (&(*call).typ), t);
			LOC40 = 0;
			LOC40 = createmagic_229047(((NimStringDesc*) &TMP3527), ((NU8) 202));
			asgnRefNoCycle((void**) (&(*call).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325(LOC40));
			asgnRefNoCycle((void**) (&(*call).kindU.S6.sons->data[((NI) 1)]), y);
			LOC41 = 0;
			LOC41 = newasgnstmt_482910(x, call);
			add_224165(body, LOC41);
		}
		LA33: ;
	}
	break;
	case ((NU8) 48):
	case ((NU8) 27):
	{
		localerror_194128((*c).info, ((NU16) 4), ((NimStringDesc*) &TMP3528));
	}
	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_253032(t, ((NU8) 0));
		LOC44 = rawNewString(LOC45->Sup.len + 31);
appendString(LOC44, ((NimStringDesc*) &TMP3529));
appendString(LOC44, LOC45);
		internalerror_194172((*c).info, LOC44);
	}
	break;
	case ((NU8) 15):
	case ((NU8) 20):
	case ((NU8) 11):
	case ((NU8) 61):
	case ((NU8) 59):
	case ((NU8) 23):
	{
		Ttype223847* LOC47;
		LOC47 = 0;
		LOC47 = lastson_226426(t);
		liftbodyaux_482693(c, LOC47, body, x, y);
	}
	break;
	}
}

static N_INLINE(Tnode223809*, newderef_400024)(Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = newnodeit_225807(((NU8) 65), (*n).info, (*(*n).typ).sons->data[((NI) 0)]);
	addson_225819(result, n);
	return result;
}

N_NIMCALL(Tsym223841*, liftbody_482701)(Tcontext278023* c, Ttype223847* typ, Tlineinfo188352 info) {
	Tsym223841* result;
	Tliftctx482686 a;
	Tnode223809* body;
	Tident196021* LOC1;
	Tsym223841* dest;
	Tident196021* LOC2;
	Tsym223841* src;
	Tident196021* LOC3;
	Tnode223809* LOC4;
	Tnode223809* LOC5;
	Tnode223809* LOC6;
	Tnode223809* n;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	a.info = info;
	body = newnodei_225351(((NU8) 115), info);
	LOC1 = 0;
	LOC1 = getident_196463(((NimStringDesc*) &TMP3517));
	result = newsym_224656(((NU8) 12), LOC1, (*typ).owner, info);
	a.fn = result;
	a.asgnfortype = typ;
	LOC2 = 0;
	LOC2 = getident_196463(((NimStringDesc*) &TMP3518));
	dest = newsym_224656(((NU8) 3), LOC2, result, info);
	LOC3 = 0;
	LOC3 = getident_196463(((NimStringDesc*) &TMP3519));
	src = newsym_224656(((NU8) 3), LOC3, result, info);
	asgnRefNoCycle((void**) (&(*dest).typ), makevartype_278645(c, typ));
	asgnRefNoCycle((void**) (&(*src).typ), typ);
	asgnRefNoCycle((void**) (&(*result).typ), newproctype_483594(info, (*typ).owner));
	addparam_483602((*result).typ, dest);
	addparam_483602((*result).typ, src);
	LOC4 = 0;
	LOC4 = newsymnode_225325(dest);
	LOC5 = 0;
	LOC5 = newderef_400024(LOC4);
	LOC6 = 0;
	LOC6 = newsymnode_225325(src);
	liftbodyaux_482693((&a), typ, body, LOC5, LOC6);
	n = newnodei_225407(((NU8) 79), info, ((NI) 7));
	{
		NI i_483648;
		NI HEX3Atmp_483657;
		NI LOC8;
		NI res_483660;
		i_483648 = 0;
		HEX3Atmp_483657 = 0;
		LOC8 = 0;
		LOC8 = len_224098(n);
		HEX3Atmp_483657 = (LOC8 - 1);
		res_483660 = ((NI) 0);
		{
			while (1) {
				if (!(res_483660 <= HEX3Atmp_483657)) goto LA10;
				i_483648 = res_483660;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_483648]), emptynode_224807);
				res_483660 += ((NI) 1);
			} LA10: ;
		}
	}
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325(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(Tsym223841*, getasgnorliftbody_483676)(Tcontext278023* c, Ttype223847* typ, Tlineinfo188352 info) {
	Tsym223841* result;
	Ttype223847* t;
	result = 0;
	t = skiptypes_227167(typ, 8390656);
	result = (*t).assignment;
	{
		if (!result == 0) goto LA3;
		result = liftbody_482701(c, t, info);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode223809*, overloadedasgn_483696)(Tcontext278023* c, Tnode223809* dest, Tnode223809* src) {
	Tnode223809* result;
	Tsym223841* a;
	result = 0;
	a = getasgnorliftbody_483676(c, (*dest).typ, (*dest).info);
	result = newasgncall_482885(c, a, dest, src);
	return result;
}

N_NIMCALL(Tnode223809*, takeimplicitaddr_496470)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	NU8 valid;
	Ttype223847* 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_224098(n);
			if (!(LOC6 == ((NI) 1))) goto LA7;
			result = (*n).kindU.S6.sons->data[((NI) 0)];
			goto BeforeRet;
		}
		LA7: ;
	}
	break;
	default:
	{
	}
	break;
	}
	valid = isassignable_492842(c, n, NIM_FALSE);
	{
		if (!!((valid == ((NU8) 1)))) goto LA12;
		{
			NimStringDesc* LOC18;
			if (!(valid == ((NU8) 2))) goto LA16;
			LOC18 = 0;
			LOC18 = rendertree_245059(n, 4);
			localerror_194128((*n).info, ((NU16) 130), LOC18);
		}
		goto LA14;
		LA16: ;
		{
			localerror_194128((*n).info, ((NU16) 129), ((NimStringDesc*) &TMP3115));
		}
		LA14: ;
	}
	LA12: ;
	LOC20 = 0;
	LOC20 = makeptrtype_278214(c, (*n).typ);
	result = newnodeit_225807(((NU8) 64), (*n).info, LOC20);
	add_224165(result, n);
	}BeforeRet: ;
	return result;
}

static N_INLINE(void, asgntoresultvar_496501)(Tcontext278023* c, Tnode223809* n, Tnode223809* le, Tnode223809* ri) {
	{
		Tnode223809* 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_496470(c, ri));
			(*(*x).typ).flags |= ((NU32)1)<<((((NU8) 18))%(sizeof(NU32)*8));
		}
		LA11: ;
	}
	LA3: ;
}

N_NIMCALL(Tnode223809*, semasgn_493310)(Tcontext278023* c, Tnode223809* n, NU8 mode) {
	Tnode223809* result;
	Tnode223809* a;
	Ttype223847* le;
{	result = 0;
	checksonslen_279260(n, ((NI) 2));
	a = (*n).kindU.S6.sons->data[((NI) 0)];
	switch ((*a).kind) {
	case ((NU8) 45):
	{
		Tnode223809* norig;
		norig = copytree_228028(n);
		a = builtinfieldaccess_495358(c, a, 1);
		{
			Tnode223809* LOC6;
			Tnode223809* LOC11;
			if (!(a == NIM_NIL)) goto LA4;
			LOC6 = 0;
			LOC6 = HEX5BHEX5D_224244(n, ((NI) 0));
			a = propertywriteaccess_496404(c, n, norig, LOC6);
			{
				if (!!((a == NIM_NIL))) goto LA9;
				result = a;
				goto BeforeRet;
			}
			LA9: ;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_224244(n, ((NI) 0));
			a = dottransformation_496079(c, LOC11);
			{
				if (!((*a).kind == ((NU8) 25))) goto LA14;
				(*a).kind = ((NU8) 27);
				a = semexprwithtype_455211(c, a, 1);
			}
			LA14: ;
		}
		LA4: ;
	}
	break;
	case ((NU8) 42):
	{
		Tnode223809* oldbracketexpr;
		oldbracketexpr = (*(*c).p).bracketexpr;
		a = semsubscript_493315(c, a, 1);
		{
			NIM_BOOL LOC19;
			Tident196021* LOC23;
			Tnode223809* LOC24;
			LOC19 = 0;
			LOC19 = (a == NIM_NIL);
			if (!(LOC19)) goto LA20;
			LOC19 = !((mode == ((NU8) 1)));
			LA20: ;
			if (!LOC19) goto LA21;
			LOC23 = 0;
			LOC23 = getident_196463(((NimStringDesc*) &TMP3513));
			result = buildoverloadedsubscripts_496122((*n).kindU.S6.sons->data[((NI) 0)], LOC23);
			LOC24 = 0;
			LOC24 = HEX5BHEX5D_224244(n, ((NI) 1));
			add_224165(result, LOC24);
			result = semexprnotype_455221(c, result);
			asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
			goto BeforeRet;
		}
		goto LA17;
		LA21: ;
		{
			NimStringDesc* LOC28;
			Tnode223809* LOC29;
			NimStringDesc* LOC30;
			if (!(a == NIM_NIL)) goto LA26;
			LOC28 = 0;
			LOC29 = 0;
			LOC29 = HEX5BHEX5D_224244(n, ((NI) 0));
			LOC30 = 0;
			LOC30 = HEX24_245090(LOC29);
			LOC28 = rawNewString(LOC30->Sup.len + 19);
appendString(LOC28, ((NimStringDesc*) &TMP3342));
appendString(LOC28, LOC30);
			localerror_194139((*n).info, LOC28);
			result = n;
			goto BeforeRet;
		}
		goto LA17;
		LA26: ;
		LA17: ;
		asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
	}
	break;
	case ((NU8) 40):
	{
		Tident196021* LOC32;
		Tnode223809* LOC33;
		LOC32 = 0;
		LOC32 = getident_196463(((NimStringDesc*) &TMP3514));
		result = buildoverloadedsubscripts_496122((*n).kindU.S6.sons->data[((NI) 0)], LOC32);
		LOC33 = 0;
		LOC33 = HEX5BHEX5D_224244(n, ((NI) 1));
		add_224165(result, LOC33);
		result = semexprnotype_455221(c, result);
		goto BeforeRet;
	}
	break;
	case ((NU8) 37):
	{
		{
			NI LOC37;
			Tnode223809* LOC40;
			LOC37 = 0;
			LOC37 = len_224098(a);
			if (!(((NI) 2) <= LOC37)) goto LA38;
			LOC40 = 0;
			LOC40 = lowertupleunpackingforasgn_400283(n, (*(*c).p).owner);
			result = semstmt_455277(c, LOC40);
			goto BeforeRet;
		}
		goto LA35;
		LA38: ;
		{
			a = semexprwithtype_455211(c, a, 1);
		}
		LA35: ;
	}
	break;
	default:
	{
		a = semexprwithtype_455211(c, a, 1);
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), a);
	le = (*a).typ;
	{
		NIM_BOOL LOC45;
		Ttype223847* LOC46;
		NU8 LOC48;
		NimStringDesc* LOC51;
		LOC45 = 0;
		LOC46 = 0;
		LOC46 = skiptypes_227167(le, 2048);
		LOC45 = !(((*LOC46).kind == ((NU8) 23)));
		if (!(LOC45)) goto LA47;
		LOC48 = 0;
		LOC48 = isassignable_492842(c, a, NIM_FALSE);
		LOC45 = (LOC48 == ((NU8) 0));
		LA47: ;
		if (!LOC45) goto LA49;
		LOC51 = 0;
		LOC51 = rendertree_245059(a, 4);
		localerror_194128((*a).info, ((NU16) 180), LOC51);
	}
	goto LA43;
	LA49: ;
	{
		Tnode223809* lhs;
		NIM_BOOL lhsisresult;
		NIM_BOOL LOC53;
		Tnode223809* 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_455211(c, (*n).kindU.S6.sons->data[((NI) 1)], LOC55);
		{
			if (!lhsisresult) goto LA63;
			asgnRefNoCycle((void**) (&(*n).typ), enforcevoidcontext_479405);
			{
				NIM_BOOL LOC67;
				NIM_BOOL LOC69;
				LOC67 = 0;
				LOC67 = !(((*(*(*c).p).owner).kind == ((NU8) 17)));
				if (!(LOC67)) goto LA68;
				LOC69 = 0;
				LOC69 = ismetatype_224821((*(*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_390796(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_194279(TMP3515);
						internalerror_194191(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_455379(n, (*lhs).typ, (*rhs).typ);
				}
				LA73: ;
			}
			LA71: ;
		}
		LA63: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), fitnode_455245(c, le, rhs));
		{
			NIM_BOOL LOC86;
			NIM_BOOL LOC87;
			LOC86 = 0;
			LOC87 = 0;
			LOC87 = (((*(*lhs).typ).flags &(1<<((((NU8) 26))&31)))!=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_483696(c, lhs, (*n).kindU.S6.sons->data[((NI) 1)]);
			goto BeforeRet;
		}
		LA90: ;
		fixabstracttype_492616(c, n);
		asgntoresultvar_496501(c, n, (*n).kindU.S6.sons->data[((NI) 0)], (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	LA43: ;
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semprocbody_455238)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tscope223835* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	result = semexpr_455201(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_228932((*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_481094(result);
		}
		goto LA9;
		LA21: ;
		{
			Tnode223809* a;
			a = newnodei_225407(((NU8) 73), (*n).info, ((NI) 2));
			asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325((*(*c).p).resultsym));
			asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), result);
			result = semasgn_493310(c, a, ((NU8) 0));
		}
		LA9: ;
	}
	goto LA2;
	LA7: ;
	{
		discardcheck_481156(c, result);
	}
	LA2: ;
	{
		NIM_BOOL LOC27;
		NIM_BOOL LOC28;
		LOC27 = 0;
		LOC28 = 0;
		LOC28 = !(((393216 &(1<<(((*(*(*c).p).owner).kind)&31)))!=0));
		if (!(LOC28)) goto LA29;
		LOC28 = !(((*(*c).p).resultsym == NIM_NIL));
		LA29: ;
		LOC27 = LOC28;
		if (!(LOC27)) goto LA30;
		LOC27 = ismetatype_224821((*(*(*c).p).resultsym).typ);
		LA30: ;
		if (!LOC27) goto LA31;
		{
			NIM_BOOL LOC35;
			LOC35 = 0;
			LOC35 = isemptytype_228932((*result).typ);
			if (!LOC35) goto LA36;
			asgnRefNoCycle((void**) (&(*(*(*c).p).resultsym).typ), errortype_279161(c));
			asgnRefNoCycle((void**) (&(*(*(*(*c).p).owner).typ).sons->data[((NI) 0)]), NIM_NIL);
		}
		goto LA33;
		LA36: ;
		{
			localerror_194128((*(*(*c).p).resultsym).info, ((NU16) 231), ((NimStringDesc*) &TMP3115));
		}
		LA33: ;
	}
	LA31: ;
	closescope_284111(c);
	return result;
}

N_NIMCALL(void, instantiatebody_457941)(Tcontext278023* c, Tnode223809* n, Tnode223809* params, Tsym223841* result) {
	{
		Tnode223809* b;
		Tidtable223859 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_227057((&symmap));
		{
			if (!!((params == NIM_NIL))) goto LA7;
			{
				NI i_458001;
				NI HEX3Atmp_458044;
				NI LOC10;
				NI res_458047;
				i_458001 = 0;
				HEX3Atmp_458044 = 0;
				LOC10 = 0;
				LOC10 = len_224098(params);
				HEX3Atmp_458044 = (LOC10 - 1);
				res_458047 = ((NI) 1);
				{
					while (1) {
						Tsym223841* param;
						Tnode223809* LOC13;
						if (!(res_458047 <= HEX3Atmp_458044)) goto LA12;
						i_458001 = res_458047;
						LOC13 = 0;
						LOC13 = HEX5BHEX5D_224244(params, i_458001);
						param = (*LOC13).kindU.S4.sym;
						{
							Tnode223809* LOC18;
							Tidobj196015* LOC19;
							Tnode223809* LOC20;
							TNimObject* LOC21;
							if (!(((*param).flags &(1<<((((NU8) 31))&31)))!=0)) goto LA16;
							LOC18 = 0;
							LOC18 = HEX5BHEX5D_224244(params, i_458001);
							LOC19 = 0;
							LOC19 = &(*LOC18).kindU.S4.sym->Sup;
							LOC20 = 0;
							LOC20 = HEX5BHEX5D_224244((*(*result).typ).n, (NI)((*param).position + ((NI) 1)));
							LOC21 = 0;
							LOC21 = &(*LOC20).kindU.S4.sym->Sup.Sup;
							idtableput_231196((&symmap), LOC19, LOC21);
						}
						LA16: ;
						res_458047 += ((NI) 1);
					} LA12: ;
				}
			}
		}
		LA7: ;
		freshgensyms_457801(b, result, (&symmap));
		b = semprocbody_455238(c, b);
		b = hlobody_457161(c, b);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_415225((*c).module, b, result));
		(*result).flags &= ~(((NU32)1) << ((((NU8) 4)) % (sizeof(NU32)*8)));
		(*c).ingenericinst -= ((NI) 1);
	}
	LA3: ;
}

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

N_NIMCALL(NIM_BOOL, hasobjparam_488833)(Tsym223841* s) {
	NIM_BOOL result;
	Ttype223847* t;
{	result = 0;
	t = (*s).typ;
	{
		NI col_488851;
		NI HEX3Atmp_488862;
		NI LOC2;
		NI res_488865;
		col_488851 = 0;
		HEX3Atmp_488862 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226351(t);
		HEX3Atmp_488862 = (NI)(LOC2 - ((NI) 1));
		res_488865 = ((NI) 1);
		{
			while (1) {
				if (!(res_488865 <= HEX3Atmp_488862)) goto LA4;
				col_488851 = res_488865;
				{
					Ttype223847* LOC7;
					LOC7 = 0;
					LOC7 = skiptypes_227167((*t).sons->data[col_488851], IL64(211106247215360));
					if (!((*LOC7).kind == ((NU8) 17))) goto LA8;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA8: ;
				res_488865 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, finishmethod_455341)(Tcontext278023* c, Tsym223841* s) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = hasobjparam_488833(s);
		if (!LOC3) goto LA4;
		methoddef_398634(s, NIM_FALSE);
	}
	LA4: ;
}

N_NIMCALL(Tsym223841*, generateinstance_458450)(Tcontext278023* c, Tsym223841* fn, Tidtable223859 pt, Tlineinfo188352 info) {
	Tsym223841* result;
	Tnode223809* n;
	Tsym223841* LOC10;
	NI oldintypeclass;
	Tscope223835* oldscope;
	Tscope223835* LOC14;
	Tnode223809* gp;
	Tinstantiation223831* entry;
	NI i;
	NI LOC20;
	NI LOC21;
	Tsym223841* oldprc;
	Tsym223841* LOC93;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!!(!(((393216 &(1<<(((*fn).kind)&31)))!=0)))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_194279(TMP3149);
		internalerror_194191(LOC5);
	}
	LA3: ;
	{
		if (!(((NI) 1000) < (*c).instcounter)) goto LA8;
		internalerror_194172((*(*fn).ast).info, ((NimStringDesc*) &TMP3151));
	}
	LA8: ;
	(*c).instcounter += ((NI) 1);
	n = copytree_228028((*fn).ast);
	LOC10 = 0;
	LOC10 = getmodule_231243(fn);
	(*c).friendmodules = (Tsymseq223811*) incrSeqV2(&((*c).friendmodules)->Sup, sizeof(Tsym223841*));
	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_279280(c);
			if (!!(LOC13)) goto LA12;
			asgnRef((void**) (&(*c).currentscope), (*(*c).currentscope).parent);
		} LA12: ;
	}
	result = copysym_226607(fn, NIM_FALSE);
	(*result).flags |= ((NU32)1)<<((((NU8) 2))%(sizeof(NU32)*8));
	asgnRefNoCycle((void**) (&(*result).owner), fn);
	asgnRefNoCycle((void**) (&(*result).ast), n);
	pushowner_278263(result);
	LOC14 = 0;
	LOC14 = openscope_284091(c);
	gp = (*n).kindU.S6.sons->data[((NI) 2)];
	{
		NimStringDesc* LOC19;
		if (!!(!(((*gp).kind == ((NU8) 1))))) goto LA17;
		LOC19 = 0;
		LOC19 = HEX24_194279(TMP3152);
		internalerror_194191(LOC19);
	}
	LA17: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325(result));
	pushinfocontext_189581(info);
	entry = new_458534();
	asgnRefNoCycle((void**) (&(*entry).sym), result);
	i = ((NI) 0);
	LOC20 = 0;
	LOC20 = len_226369((*fn).typ);
	LOC21 = 0;
	LOC21 = len_224098(gp);
	if ((*entry).concretetypes) nimGCunrefNoCycle((*entry).concretetypes);
	(*entry).concretetypes = (Ttypeseq223843*) newSeqRC1((&NTI223843), ((NI) ((NI)((NI)(LOC20 + LOC21) - ((NI) 1)))));
	{
		Tsym223841* s_458628;
		s_458628 = 0;
		{
			NimStringDesc* LOC27;
			if (!!(((*gp).kind == ((NU8) 75)))) goto LA25;
			LOC27 = 0;
			LOC27 = HEX24_194279(TMP3153);
			internalerror_194191(LOC27);
		}
		LA25: ;
		{
			NI i_458817;
			Tnode223809* a_458819;
			i_458817 = 0;
			a_458819 = 0;
			{
				NI i_458821;
				NI HEX3Atmp_458823;
				NI LOC30;
				NI res_458825;
				i_458821 = 0;
				HEX3Atmp_458823 = 0;
				LOC30 = 0;
				LOC30 = len_224098(gp);
				HEX3Atmp_458823 = (LOC30 - 1);
				res_458825 = ((NI) 0);
				{
					while (1) {
						if (!(res_458825 <= HEX3Atmp_458823)) goto LA32;
						i_458821 = res_458825;
						i_458817 = i_458821;
						a_458819 = (*gp).kindU.S6.sons->data[i_458821];
						{
							Tsym223841* q_458829;
							NU8 symkind_458831;
							Tsym223841* s_458833;
							Tsym223841* LOC48;
							Ttype223847* t_458835;
							Tidobj196015* LOC49;
							TNimObject* LOC50;
							{
								NimStringDesc* LOC38;
								if (!!(((*a_458819).kind == ((NU8) 3)))) goto LA36;
								LOC38 = 0;
								LOC38 = HEX24_194279(TMP3154);
								internalerror_194191(LOC38);
							}
							LA36: ;
							q_458829 = (*a_458819).kindU.S4.sym;
							{
								if (!!(((*(*q_458829).typ).kind == ((NU8) 8) || (*(*q_458829).typ).kind == ((NU8) 12) || (*(*q_458829).typ).kind == ((NU8) 49) || (*(*q_458829).typ).kind >= ((NU8) 51) && (*(*q_458829).typ).kind <= ((NU8) 59)))) goto LA41;
								goto LA33;
							}
							LA41: ;
							{
								if (!((*(*q_458829).typ).kind == ((NU8) 59))) goto LA45;
								symkind_458831 = ((NU8) 10);
							}
							goto LA43;
							LA45: ;
							{
								symkind_458831 = ((NU8) 7);
							}
							LA43: ;
							LOC48 = 0;
							LOC48 = getcurrowner_278258();
							s_458833 = newsym_224656(symkind_458831, (*q_458829).name, LOC48, (*q_458829).info);
							(*s_458833).flags = ((*s_458833).flags | 5);
							LOC49 = 0;
							LOC49 = &(*q_458829).typ->Sup;
							LOC50 = 0;
							LOC50 = idtableget_231182(pt, LOC49);
							t_458835 = ((Ttype223847*) (LOC50));
							{
								if (!(t_458835 == NIM_NIL)) goto LA53;
								{
									if (!(((*(*q_458829).typ).flags &(1<<((((NU8) 10))&31)))!=0)) goto LA57;
									t_458835 = (*q_458829).typ;
								}
								goto LA55;
								LA57: ;
								{
									localerror_194128((*a_458819).info, ((NU16) 128), (*(*s_458833).name).s);
									t_458835 = errortype_279161(c);
								}
								LA55: ;
							}
							goto LA51;
							LA53: ;
							{
								if (!((*t_458835).kind == ((NU8) 12))) goto LA61;
								localerror_194128((*a_458819).info, ((NU16) 128), (*(*q_458829).name).s);
								t_458835 = errortype_279161(c);
							}
							goto LA51;
							LA61: ;
							{
								if (!((*t_458835).kind == ((NU8) 9))) goto LA64;
								t_458835 = generatetypeinstance_302894(c, pt, (*a_458819).info, t_458835);
							}
							goto LA51;
							LA64: ;
							LA51: ;
							asgnRefNoCycle((void**) (&(*s_458833).typ), t_458835);
							{
								if (!((*t_458835).kind == ((NU8) 59))) goto LA68;
								asgnRefNoCycle((void**) (&(*s_458833).ast), (*t_458835).n);
							}
							LA68: ;
							s_458628 = s_458833;
							adddecl_284607(c, s_458628);
							asgnRefNoCycle((void**) (&(*entry).concretetypes->data[i]), (*s_458628).typ);
							i += ((NI) 1);
						} LA33: ;
						res_458825 += ((NI) 1);
					} LA32: ;
				}
			}
		}
	}
	pushproccon_278361(c, result);
	instantiateproctype_458176(c, pt, result, info);
	{
		NI j_458650;
		NI HEX3Atmp_458837;
		NI LOC71;
		NI res_458840;
		j_458650 = 0;
		HEX3Atmp_458837 = 0;
		LOC71 = 0;
		LOC71 = len_226369((*result).typ);
		HEX3Atmp_458837 = (NI)(LOC71 - ((NI) 1));
		res_458840 = ((NI) 1);
		{
			while (1) {
				if (!(res_458840 <= HEX3Atmp_458837)) goto LA73;
				j_458650 = res_458840;
				asgnRefNoCycle((void**) (&(*entry).concretetypes->data[i]), (*(*result).typ).sons->data[j_458650]);
				i += ((NI) 1);
				res_458840 += ((NI) 1);
			} LA73: ;
		}
	}
	{
		if (!(((*(*result).typ).flags &(1<<((((NU8) 28))&31)))!=0)) goto LA76;
		(*result).flags |= ((NU32)1)<<((((NU8) 23))%(sizeof(NU32)*8));
	}
	LA76: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), emptynode_224807);
	oldprc = genericcacheget_457449(fn, (*entry), (*c).compilescontextid);
	{
		Tinstantiationpair278013 LOC82;
		if (!(oldprc == NIM_NIL)) goto LA80;
		(*entry).compilesid = (*c).compilescontextid;
		safeadd_458699((&(*fn).kindU.S2.procinstcache), entry);
		memset((void*)(&LOC82), 0, sizeof(LOC82));
		makeinstpair_278159(fn, entry, (&LOC82));
		(*c).generics = (TY278143*) incrSeqV2(&((*c).generics)->Sup, sizeof(Tinstantiationpair278013));
		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_295082(c, result, (*n).kindU.S6.sons->data[((NI) 4)], TMP3241);
		}
		LA85: ;
		{
			Tnode223809* LOC91;
			if (!(*n).kindU.S6.sons->data[((NI) 6)] == 0) goto LA89;
			LOC91 = 0;
			LOC91 = getbody_269062(fn);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), copytree_228028(LOC91));
		}
		LA89: ;
		instantiatebody_457941(c, n, (*(*fn).typ).n, result);
		sideeffectscheck_458116(c, result);
		paramstypecheck_456022(c, (*result).typ);
	}
	goto LA78;
	LA80: ;
	{
		result = oldprc;
	}
	LA78: ;
	popproccon_278393(c);
	popinfocontext_189600();
	closescope_284111(c);
	popowner_278269();
	asgnRef((void**) (&(*c).currentscope), oldscope);
	LOC93 = 0;
	LOC93 = pop_411918((&(*c).friendmodules));
	(*c).instcounter -= ((NI) 1);
	(*c).intypeclass = oldintypeclass;
	{
		if (!((*result).kind == ((NU8) 13))) goto LA96;
		finishmethod_455341(c, result);
	}
	LA96: ;
	return result;
}

N_NIMCALL(void, instgenericconvertersarg_461276)(Tcontext278023* c, Tnode223809* a, Tcandidate386209* x) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		Tsym223841* 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_228650((*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym);
		LA6: ;
		if (!LOC3) goto LA7;
		finalcallee = generateinstance_458450(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(Tnode223809*, indextypesmatch_455348)(Tcontext278023* c, Ttype223847* f, Ttype223847* a, Tnode223809* arg) {
	Tnode223809* result;
	Tcandidate386209 m;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_386278(c, (&m), f);
	result = paramtypesmatch_391733((&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_461276(c, result, (&m));
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode223809*, fitnode_455245)(Tcontext278023* c, Ttype223847* formal, Tnode223809* arg) {
	Tnode223809* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!(*arg).typ == 0) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_245059(arg, 4);
		localerror_194128((*arg).info, ((NU16) 94), LOC5);
		result = copynode_227660(arg);
		asgnRefNoCycle((void**) (&(*result).typ), formal);
	}
	goto LA1;
	LA3: ;
	{
		result = indextypesmatch_455348(c, formal, (*arg).typ, arg);
		{
			if (!(result == NIM_NIL)) goto LA9;
			typemismatch_455379(arg, formal, (*arg).typ);
			result = copytree_228028(arg);
			asgnRefNoCycle((void**) (&(*result).typ), formal);
		}
		goto LA7;
		LA9: ;
		{
			Tnode223809* x;
			x = skipconv_262935(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_455253(x, formal, NIM_TRUE);
			}
			goto LA12;
			LA16: ;
			{
				result = skiphiddensubconv_263078(result);
			}
			LA12: ;
		}
		LA7: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, semconstboolexpr_462852)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* nn;
	Ttype223847* LOC1;
{	result = 0;
	nn = semexprwithtype_455211(c, n, 0);
	LOC1 = 0;
	LOC1 = getsystype_272190(((NU8) 1));
	result = fitnode_455245(c, LOC1, nn);
	{
		if (!(result == NIM_NIL)) goto LA4;
		localerror_194128((*n).info, ((NU16) 108), ((NimStringDesc*) &TMP3115));
		result = nn;
		goto BeforeRet;
	}
	LA4: ;
	result = getconstexpr_291004((*c).module, result);
	{
		if (!(result == NIM_NIL)) goto LA8;
		localerror_194128((*n).info, ((NU16) 108), ((NimStringDesc*) &TMP3115));
		result = nn;
	}
	LA8: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, forcebool_462829)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Ttype223847* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getsystype_272190(((NU8) 1));
	result = fitnode_455245(c, LOC1, n);
	{
		if (!(result == NIM_NIL)) goto LA4;
		result = n;
	}
	LA4: ;
	return result;
}

N_NIMCALL(Tnode223809*, sembranchrange_465078)(Tcontext278023* c, Tnode223809* t, Tnode223809* a, Tnode223809* b, NI64* covered) {
	Tnode223809* result;
	Tnode223809* ac;
	Tnode223809* bc;
	Tnode223809* at;
	Tnode223809* LOC1;
	Tnode223809* bt;
	Tnode223809* LOC2;
	result = 0;
	checkminsonslen_279270(t, ((NI) 1));
	ac = semconstexpr_456485(c, a);
	bc = semconstexpr_456485(c, b);
	LOC1 = 0;
	LOC1 = fitnode_455245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, ac);
	at = skipconvtaketype_262967(LOC1);
	LOC2 = 0;
	LOC2 = fitnode_455245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, bc);
	bt = skipconvtaketype_262967(LOC2);
	result = newnodei_225351(((NU8) 44), (*a).info);
	add_224165(result, at);
	add_224165(result, bt);
	{
		NIM_BOOL LOC5;
		LOC5 = 0;
		LOC5 = emptyrange_274034(ac, bc);
		if (!LOC5) goto LA6;
		localerror_194128((*b).info, ((NU16) 110), ((NimStringDesc*) &TMP3115));
	}
	goto LA3;
	LA6: ;
	{
		NI64 LOC9;
		NI64 LOC10;
		LOC9 = 0;
		LOC9 = getordvalue_253178(bc);
		LOC10 = 0;
		LOC10 = getordvalue_253178(ac);
		(*covered) = (NI64)((NI64)((NI64)((*covered) + LOC9) - LOC10) + IL64(1));
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode223809*, semcasebranchrange_465100)(Tcontext278023* c, Tnode223809* t, Tnode223809* b, NI64* covered) {
	Tnode223809* result;
	result = 0;
	checksonslen_279260(b, ((NI) 3));
	result = sembranchrange_465078(c, t, (*b).kindU.S6.sons->data[((NI) 1)], (*b).kindU.S6.sons->data[((NI) 2)], covered);
	return result;
}

N_NIMCALL(Tnode223809*, semcasebranchsetelem_465113)(Tcontext278023* c, Tnode223809* t, Tnode223809* b, NI64* covered) {
	Tnode223809* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isrange_252626(b);
		if (!LOC3) goto LA4;
		checksonslen_279260(b, ((NI) 3));
		result = sembranchrange_465078(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_279260(b, ((NI) 2));
		result = sembranchrange_465078(c, t, (*b).kindU.S6.sons->data[((NI) 0)], (*b).kindU.S6.sons->data[((NI) 1)], covered);
	}
	goto LA1;
	LA7: ;
	{
		result = fitnode_455245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, b);
		(*covered) += ((NI) 1);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, checkforoverlap_465004)(Tcontext278023* c, Tnode223809* t, NI currentex, NI branchindex) {
	Tnode223809* ex;
	Tnode223809* LOC1;
	Tnode223809* LOC2;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_224244(t, branchindex);
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_224244(LOC1, currentex);
	ex = skipconv_262935(LOC2);
	{
		NI i_465024;
		NI res_465053;
		i_465024 = 0;
		res_465053 = ((NI) 1);
		{
			while (1) {
				if (!(res_465053 <= branchindex)) goto LA5;
				i_465024 = res_465053;
				{
					NI j_465038;
					NI HEX3Atmp_465044;
					NI LOC7;
					NI res_465047;
					j_465038 = 0;
					HEX3Atmp_465044 = 0;
					LOC7 = 0;
					LOC7 = sonslen_226387((*t).kindU.S6.sons->data[i_465024]);
					HEX3Atmp_465044 = (NI)(LOC7 - ((NI) 2));
					res_465047 = ((NI) 0);
					{
						while (1) {
							if (!(res_465047 <= HEX3Atmp_465044)) goto LA9;
							j_465038 = res_465047;
							{
								NIM_BOOL LOC12;
								LOC12 = 0;
								LOC12 = (i_465024 == branchindex);
								if (!(LOC12)) goto LA13;
								LOC12 = (j_465038 == currentex);
								LA13: ;
								if (!LOC12) goto LA14;
								goto LA6;
							}
							LA14: ;
							{
								Tnode223809* LOC18;
								NIM_BOOL LOC19;
								LOC18 = 0;
								LOC18 = skipconv_262935((*(*t).kindU.S6.sons->data[i_465024]).kindU.S6.sons->data[j_465038]);
								LOC19 = 0;
								LOC19 = overlap_274012(LOC18, ex);
								if (!LOC19) goto LA20;
								localerror_194128((*ex).info, ((NU16) 109), ((NimStringDesc*) &TMP3115));
							}
							LA20: ;
							res_465047 += ((NI) 1);
						} LA9: ;
					}
				} LA6: ;
				res_465053 += ((NI) 1);
			} LA5: ;
		}
	}
}

N_NIMCALL(void, semcasebranch_465147)(Tcontext278023* c, Tnode223809* t, Tnode223809* branch, NI branchindex, NI64* covered) {
{	{
		NI i_465167;
		NI HEX3Atmp_465260;
		NI LOC2;
		NI res_465263;
		i_465167 = 0;
		HEX3Atmp_465260 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(branch);
		HEX3Atmp_465260 = (NI)(LOC2 - ((NI) 2));
		res_465263 = ((NI) 0);
		{
			while (1) {
				Tnode223809* b;
				if (!(res_465263 <= HEX3Atmp_465260)) goto LA4;
				i_465167 = res_465263;
				b = (*branch).kindU.S6.sons->data[i_465167];
				{
					if (!((*b).kind == ((NU8) 44))) goto LA7;
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_465167]), b);
				}
				goto LA5;
				LA7: ;
				{
					NIM_BOOL LOC10;
					LOC10 = 0;
					LOC10 = isrange_252626(b);
					if (!LOC10) goto LA11;
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_465167]), semcasebranchrange_465100(c, t, b, covered));
				}
				goto LA5;
				LA11: ;
				{
					Tnode223809* r;
					r = semconstexpr_456485(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_224098(r);
						LOC17 = (LOC19 == ((NI) 0));
						LA18: ;
						LOC16 = LOC17;
						if (!(LOC16)) goto LA20;
						LOC21 = 0;
						LOC21 = sonslen_226387(branch);
						LOC16 = (LOC21 == ((NI) 2));
						LA20: ;
						if (!LOC16) goto LA22;
						delson_227597(branch, ((NI) 0));
						goto BeforeRet;
					}
					goto LA14;
					LA22: ;
					{
						NIM_BOOL LOC25;
						NI LOC27;
						Tnode223809* LOC30;
						LOC25 = 0;
						LOC25 = !(((*r).kind == ((NU8) 39) || (*r).kind == ((NU8) 41)));
						if (LOC25) goto LA26;
						LOC27 = 0;
						LOC27 = len_224098(r);
						LOC25 = (LOC27 == ((NI) 0));
						LA26: ;
						if (!LOC25) goto LA28;
						checkminsonslen_279270(t, ((NI) 1));
						LOC30 = 0;
						LOC30 = fitnode_455245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, r);
						asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_465167]), skipconv_262935(LOC30));
						(*covered) += ((NI) 1);
					}
					goto LA14;
					LA28: ;
					{
						Tnode223809* LOC32;
						LOC32 = 0;
						LOC32 = HEX5BHEX5D_224244(r, ((NI) 0));
						asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_465167]), semcasebranchsetelem_465113(c, t, LOC32, covered));
						{
							NI j_465235;
							NI HEX3Atmp_465253;
							NI LOC34;
							NI res_465256;
							j_465235 = 0;
							HEX3Atmp_465253 = 0;
							LOC34 = 0;
							LOC34 = len_224098(r);
							HEX3Atmp_465253 = (LOC34 - 1);
							res_465256 = ((NI) 1);
							{
								while (1) {
									Tnode223809* LOC37;
									Tnode223809* LOC38;
									NI L;
									Tnode223809* LOC39;
									if (!(res_465256 <= HEX3Atmp_465253)) goto LA36;
									j_465235 = res_465256;
									LOC37 = 0;
									LOC37 = HEX5BHEX5D_224244(r, j_465235);
									LOC38 = 0;
									LOC38 = semcasebranchsetelem_465113(c, t, LOC37, covered);
									add_224165(branch, LOC38);
									L = len_224098(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_465256 += ((NI) 1);
								} LA36: ;
							}
						}
					}
					LA14: ;
				}
				LA5: ;
				checkforoverlap_465004(c, t, i_465167, branchindex);
				res_465263 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(void, semrecordcase_465298)(Tcontext278023* c, Tnode223809* n, Intset220056* check, NI* pos, Tnode223809* father, Ttype223847* rectype) {
	Tnode223809* a;
	NI64 covered;
	Ttype223847* typ;
	NIM_BOOL chckcovered;
{	a = copynode_227660(n);
	checkminsonslen_279270(n, ((NI) 2));
	semrecordnodeaux_465288(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_194191(((NimStringDesc*) &TMP3531));
		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_227167((*(*a).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106240964608));
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = isordinaltype_253093(typ);
		if (!!(LOC7)) goto LA8;
		localerror_194128((*n).info, ((NU16) 112), ((NimStringDesc*) &TMP3115));
	}
	goto LA5;
	LA8: ;
	{
		NI64 LOC11;
		NimStringDesc* LOC14;
		LOC11 = 0;
		LOC11 = firstord_253004(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*) &TMP3532));
appendString(LOC14, (*(*(*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
appendString(LOC14, ((NimStringDesc*) &TMP3533));
		localerror_194128((*n).info, ((NU16) 4), LOC14);
	}
	goto LA5;
	LA12: ;
	{
		NI64 LOC16;
		LOC16 = 0;
		LOC16 = lengthord_253016(typ);
		if (!(IL64(32767) < LOC16)) goto LA17;
		localerror_194128((*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_465369;
		NI HEX3Atmp_465378;
		NI LOC20;
		NI res_465381;
		i_465369 = 0;
		HEX3Atmp_465378 = 0;
		LOC20 = 0;
		LOC20 = sonslen_226387(n);
		HEX3Atmp_465378 = (NI)(LOC20 - ((NI) 1));
		res_465381 = ((NI) 1);
		{
			while (1) {
				Tnode223809* b;
				NI LOC26;
				Tnode223809* LOC27;
				if (!(res_465381 <= HEX3Atmp_465378)) goto LA22;
				i_465369 = res_465381;
				b = copytree_228028((*n).kindU.S6.sons->data[i_465369]);
				addson_225819(a, b);
				switch ((*(*n).kindU.S6.sons->data[i_465369]).kind) {
				case ((NU8) 85):
				{
					checkminsonslen_279270(b, ((NI) 2));
					semcasebranch_465147(c, a, b, i_465369, (&covered));
				}
				break;
				case ((NU8) 88):
				{
					chckcovered = NIM_FALSE;
					checksonslen_279260(b, ((NI) 1));
				}
				break;
				default:
				{
					illformedast_279240(n);
				}
				break;
				}
				LOC26 = 0;
				LOC26 = sonslen_226387(b);
				delson_227597(b, (NI)(LOC26 - ((NI) 1)));
				LOC27 = 0;
				LOC27 = lastson_226406((*n).kindU.S6.sons->data[i_465369]);
				semrecordnodeaux_465288(c, LOC27, check, pos, b, rectype);
				res_465381 += ((NI) 1);
			} LA22: ;
		}
	}
	{
		NIM_BOOL LOC30;
		NI64 LOC32;
		LOC30 = 0;
		LOC30 = chckcovered;
		if (!(LOC30)) goto LA31;
		LOC32 = 0;
		LOC32 = lengthord_253016((*(*a).kindU.S6.sons->data[((NI) 0)]).typ);
		LOC30 = !((covered == LOC32));
		LA31: ;
		if (!LOC30) goto LA33;
		localerror_194128((*a).info, ((NU16) 155), ((NimStringDesc*) &TMP3115));
	}
	LA33: ;
	addson_225819(father, a);
	}BeforeRet: ;
}

N_NIMCALL(void, semrecordnodeaux_465288)(Tcontext278023* c, Tnode223809* n, Intset220056* check, NI* pos, Tnode223809* father, Ttype223847* rectype) {
{	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 140):
	{
		Tnode223809* branch;
		branch = NIM_NIL;
		{
			NI i_465432;
			NI HEX3Atmp_465813;
			NI LOC7;
			NI res_465816;
			i_465432 = 0;
			HEX3Atmp_465813 = 0;
			LOC7 = 0;
			LOC7 = sonslen_226387(n);
			HEX3Atmp_465813 = (NI)(LOC7 - ((NI) 1));
			res_465816 = ((NI) 0);
			{
				while (1) {
					Tnode223809* it;
					NI idx;
					if (!(res_465816 <= HEX3Atmp_465813)) goto LA9;
					i_465432 = res_465816;
					it = (*n).kindU.S6.sons->data[i_465432];
					{
						if (!(it == NIM_NIL)) goto LA12;
						illformedast_279240(n);
					}
					LA12: ;
					idx = ((NI) 1);
					switch ((*it).kind) {
					case ((NU8) 86):
					{
						checksonslen_279260(it, ((NI) 2));
						{
							Tnode223809* e;
							if (!((*c).ingenericcontext == ((NI) 0))) goto LA17;
							e = semconstboolexpr_462852(c, (*it).kindU.S6.sons->data[((NI) 0)]);
							{
								if (!!(((*e).kind == ((NU8) 6)))) goto LA21;
								internalerror_194172((*e).info, ((NimStringDesc*) &TMP3530));
							}
							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: ;
						{
							Tnode223809* LOC29;
							LOC29 = 0;
							LOC29 = semexprwithtype_455211(c, (*it).kindU.S6.sons->data[((NI) 0)], 0);
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), forcebool_462829(c, LOC29));
						}
						LA15: ;
					}
					break;
					case ((NU8) 88):
					{
						checksonslen_279260(it, ((NI) 1));
						{
							if (!(branch == NIM_NIL)) goto LA33;
							branch = (*it).kindU.S6.sons->data[((NI) 0)];
						}
						LA33: ;
						idx = ((NI) 0);
					}
					break;
					default:
					{
						illformedast_279240(n);
					}
					break;
					}
					{
						Intset220056 newcheck;
						NI newpos;
						Tnode223809* newf;
						if (!(((NI) 0) < (*c).ingenericcontext)) goto LA38;
						memset((void*)(&newcheck), 0, sizeof(newcheck));
						assign_220964((&newcheck), (*check));
						newpos = (*pos);
						newf = newnodei_225351(((NU8) 138), (*n).info);
						semrecordnodeaux_465288(c, (*it).kindU.S6.sons->data[idx], (&newcheck), (&newpos), newf, rectype);
						{
							NI LOC42;
							LOC42 = 0;
							LOC42 = len_224098(newf);
							if (!(LOC42 == ((NI) 1))) goto LA43;
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[idx]), HEX5BHEX5D_224244(newf, ((NI) 0)));
						}
						goto LA40;
						LA43: ;
						{
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[idx]), newf);
						}
						LA40: ;
					}
					LA38: ;
					res_465816 += ((NI) 1);
				} LA9: ;
			}
		}
		{
			if (!(((NI) 0) < (*c).ingenericcontext)) goto LA48;
			addson_225819(father, n);
		}
		goto LA46;
		LA48: ;
		{
			if (!!((branch == NIM_NIL))) goto LA51;
			semrecordnodeaux_465288(c, branch, check, pos, father, rectype);
		}
		goto LA46;
		LA51: ;
		LA46: ;
	}
	break;
	case ((NU8) 139):
	{
		semrecordcase_465298(c, n, check, pos, father, rectype);
	}
	break;
	case ((NU8) 23):
	{
		{
			Tnode223809* LOC59;
			if (!!(((*father).kind == ((NU8) 138)))) goto LA57;
			LOC59 = 0;
			LOC59 = newnodei_225351(((NU8) 138), (*n).info);
			addson_225819(father, LOC59);
		}
		LA57: ;
	}
	break;
	case ((NU8) 138):
	{
		Tnode223809* a;
		{
			if (!((*father).kind == ((NU8) 138))) goto LA63;
			a = father;
		}
		goto LA61;
		LA63: ;
		{
			a = copynode_227660(n);
		}
		LA61: ;
		{
			NI i_465540;
			NI HEX3Atmp_465821;
			NI LOC67;
			NI res_465824;
			i_465540 = 0;
			HEX3Atmp_465821 = 0;
			LOC67 = 0;
			LOC67 = sonslen_226387(n);
			HEX3Atmp_465821 = (NI)(LOC67 - ((NI) 1));
			res_465824 = ((NI) 0);
			{
				while (1) {
					if (!(res_465824 <= HEX3Atmp_465821)) goto LA69;
					i_465540 = res_465824;
					semrecordnodeaux_465288(c, (*n).kindU.S6.sons->data[i_465540], check, pos, a, rectype);
					res_465824 += ((NI) 1);
				} LA69: ;
			}
		}
		{
			if (!!((a == father))) goto LA72;
			addson_225819(father, a);
		}
		LA72: ;
	}
	break;
	case ((NU8) 35):
	{
		NI length;
		Tnode223809* a;
		Ttype223847* typ;
		Tsym223841* rec;
		checkminsonslen_279270(n, ((NI) 3));
		length = sonslen_226387(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_225351(((NU8) 138), (*n).info);
		}
		goto LA75;
		LA79: ;
		{
			a = emptynode_224807;
		}
		LA75: ;
		{
			if (!!(((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((NU8) 1)))) goto LA84;
			localerror_194128((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).info, ((NU16) 179), ((NimStringDesc*) &TMP3115));
		}
		LA84: ;
		typ = 0;
		{
			if (!((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1))) goto LA88;
			localerror_194128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
			typ = errortype_279161(c);
		}
		goto LA86;
		LA88: ;
		{
			typ = semtypenode_455269(c, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
			propagatetoowner_227274(rectype, typ);
		}
		LA86: ;
		rec = (*rectype).sym;
		{
			NI i_465600;
			NI HEX3Atmp_465831;
			NI LOC92;
			NI res_465834;
			i_465600 = 0;
			HEX3Atmp_465831 = 0;
			LOC92 = 0;
			LOC92 = sonslen_226387(n);
			HEX3Atmp_465831 = (NI)(LOC92 - ((NI) 3));
			res_465834 = ((NI) 0);
			{
				while (1) {
					Tsym223841* f;
					if (!(res_465834 <= HEX3Atmp_465831)) goto LA94;
					i_465600 = res_465834;
					f = semidentwithpragma_455971(c, ((NU8) 19), (*n).kindU.S6.sons->data[i_465600], 2);
					suggestsym_396733((*(*n).kindU.S6.sons->data[i_465600]).info, f);
					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_174322((*(*f).name).s));
						(*f).flags = ((*f).flags | (96 & (*rec).flags));
					}
					LA101: ;
					(*pos) += ((NI) 1);
					{
						NIM_BOOL LOC105;
						LOC105 = 0;
						LOC105 = containsorincl_220898(check, (*(*f).name).Sup.id);
						if (!LOC105) goto LA106;
						localerror_194128((*(*n).kindU.S6.sons->data[i_465600]).info, ((NU16) 41), (*(*f).name).s);
					}
					LA106: ;
					{
						Tnode223809* LOC112;
						if (!((*a).kind == ((NU8) 1))) goto LA110;
						LOC112 = 0;
						LOC112 = newsymnode_225325(f);
						addson_225819(father, LOC112);
					}
					goto LA108;
					LA110: ;
					{
						Tnode223809* LOC114;
						LOC114 = 0;
						LOC114 = newsymnode_225325(f);
						addson_225819(a, LOC114);
					}
					LA108: ;
					res_465834 += ((NI) 1);
				} LA94: ;
			}
		}
		{
			if (!!(((*a).kind == ((NU8) 1)))) goto LA117;
			addson_225819(father, a);
		}
		LA117: ;
	}
	break;
	case ((NU8) 1):
	{
	}
	break;
	default:
	{
		illformedast_279240(n);
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(Ttype223847*, semobjectnode_466216)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	Intset220056 check;
	NI pos;
	Ttype223847* base;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_462925(c, ((NU8) 17));
		goto BeforeRet;
	}
	LA4: ;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_220927((&check));
	pos = ((NI) 0);
	base = NIM_NIL;
	checksonslen_279260(n, ((NI) 3));
	{
		Ttype223847* LOC10;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA8;
		LOC10 = 0;
		LOC10 = semtypenode_455269(c, (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		base = skiptypesornil_227195(LOC10, IL64(211106247215360));
		{
			if (!base == 0) goto LA13;
			localerror_194128((*n).info, ((NU16) 127), ((NimStringDesc*) &TMP3144));
		}
		goto LA11;
		LA13: ;
		{
			Ttype223847* concretebase;
			concretebase = skipgenericinvocation_465964(base);
			{
				NIM_BOOL LOC18;
				LOC18 = 0;
				LOC18 = ((*concretebase).kind == ((NU8) 17));
				if (!(LOC18)) goto LA19;
				LOC18 = !((((*concretebase).flags &(1<<((((NU8) 2))&31)))!=0));
				LA19: ;
				if (!LOC18) goto LA20;
				addinheritedfields_465998(c, (&check), (&pos), concretebase);
			}
			goto LA16;
			LA20: ;
			{
				{
					if (!!(((*concretebase).kind == ((NU8) 50)))) goto LA25;
					localerror_194128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 125), ((NimStringDesc*) &TMP3115));
				}
				LA25: ;
				base = NIM_NIL;
			}
			LA16: ;
		}
		LA11: ;
	}
	LA8: ;
	{
		if (!!(((*n).kind == ((NU8) 133)))) goto LA29;
		internalerror_194172((*n).info, ((NimStringDesc*) &TMP3148));
	}
	LA29: ;
	result = neworprevtype_462895(((NU8) 17), prev, c);
	rawaddson_227498(result, base);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_225351(((NU8) 138), (*n).info));
	semrecordnodeaux_465288(c, (*n).kindU.S6.sons->data[((NI) 2)], (&check), (&pos), (*result).n, result);
	{
		Tsym223841* s;
		Tident196021* LOC35;
		Tnode223809* LOC36;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA33;
		LOC35 = 0;
		LOC35 = getident_196463(((NimStringDesc*) &TMP3534));
		LOC36 = 0;
		LOC36 = newidentnode_225313(LOC35, (*n).info);
		s = newsyms_455904(((NU8) 7), LOC36, c);
		asgnRefNoCycle((void**) (&(*s).typ), result);
		pragma_295082(c, s, (*n).kindU.S6.sons->data[((NI) 0)], TMP3535);
	}
	LA33: ;
	{
		NIM_BOOL LOC39;
		LOC39 = 0;
		LOC39 = (base == NIM_NIL);
		if (!(LOC39)) goto LA40;
		LOC39 = !((((*result).flags &(1<<((((NU8) 3))&31)))!=0));
		LA40: ;
		if (!LOC39) goto LA41;
		(*result).flags |= ((NU32)1)<<((((NU8) 2))%(sizeof(NU32)*8));
	}
	LA41: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, semtuple_464654)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	Ttype223847* typ;
	Intset220056 check;
	NI counter;
	result = 0;
	typ = 0;
	result = neworprevtype_462895(((NU8) 18), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_225351(((NU8) 138), (*n).info));
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_220927((&check));
	counter = ((NI) 0);
	{
		NI i_464675;
		NI HEX3Atmp_464811;
		NI LOC2;
		NI res_464814;
		i_464675 = 0;
		HEX3Atmp_464811 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_464811 = (NI)(LOC2 - ((NI) 1));
		res_464814 = ((NI) 0);
		{
			while (1) {
				Tnode223809* a;
				NI length;
				if (!(res_464814 <= HEX3Atmp_464811)) goto LA4;
				i_464675 = res_464814;
				a = (*n).kindU.S6.sons->data[i_464675];
				{
					if (!!(((*a).kind == ((NU8) 35)))) goto LA7;
					illformedast_279240(a);
				}
				LA7: ;
				checkminsonslen_279270(a, ((NI) 3));
				length = sonslen_226387(a);
				{
					if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1)))) goto LA11;
					typ = semtypenode_455269(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
				}
				goto LA9;
				LA11: ;
				{
					localerror_194128((*a).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
					typ = errortype_279161(c);
				}
				LA9: ;
				{
					if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((NU8) 1)))) goto LA16;
					localerror_194128((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).info, ((NU16) 179), ((NimStringDesc*) &TMP3115));
				}
				LA16: ;
				{
					NI j_464722;
					NI HEX3Atmp_464804;
					NI res_464807;
					j_464722 = 0;
					HEX3Atmp_464804 = 0;
					HEX3Atmp_464804 = (NI)(length - ((NI) 3));
					res_464807 = ((NI) 0);
					{
						while (1) {
							Tsym223841* field;
							if (!(res_464807 <= HEX3Atmp_464804)) goto LA20;
							j_464722 = res_464807;
							field = newsymg_455916(((NU8) 19), (*a).kindU.S6.sons->data[j_464722], c);
							asgnRefNoCycle((void**) (&(*field).typ), typ);
							(*field).position = counter;
							counter += ((NI) 1);
							{
								NIM_BOOL LOC23;
								LOC23 = 0;
								LOC23 = containsorincl_220898((&check), (*(*field).name).Sup.id);
								if (!LOC23) goto LA24;
								localerror_194128((*(*a).kindU.S6.sons->data[j_464722]).info, ((NU16) 41), (*(*field).name).s);
							}
							goto LA21;
							LA24: ;
							{
								Tnode223809* LOC27;
								LOC27 = 0;
								LOC27 = newsymnode_225325(field);
								addson_225819((*result).n, LOC27);
								addsonskipintlit_272729(result, typ);
							}
							LA21: ;
							{
								if (!(gcmd_165134 == ((NU8) 7))) goto LA30;
							}
							LA30: ;
							res_464807 += ((NI) 1);
						} LA20: ;
					}
				}
				res_464814 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Ttype223847*, semtypeclass_468417)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	Tnode223809* pragmas;
	Tnode223809* inherited;
	result = 0;
	{
		if (!(((*n).flags &(1<<((((NU8) 1))&15)))!=0)) goto LA3;
		message_194161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3536));
	}
	LA3: ;
	result = neworprevtype_462895(((NU8) 52), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), n);
	pragmas = HEX5BHEX5D_224244(n, ((NI) 1));
	inherited = HEX5BHEX5D_224244(n, ((NI) 2));
	{
		if (!!(((*inherited).kind == ((NU8) 1)))) goto LA7;
		{
			Tnode223809* n_468454;
			Tnodeseq223803* HEX3Atmp_468468;
			NI i_468471;
			NI L_468473;
			n_468454 = 0;
			HEX3Atmp_468468 = 0;
			HEX3Atmp_468468 = (*inherited).kindU.S6.sons;
			i_468471 = ((NI) 0);
			L_468473 = (HEX3Atmp_468468 ? HEX3Atmp_468468->Sup.len : 0);
			{
				while (1) {
					Ttype223847* typ;
					if (!(i_468471 < L_468473)) goto LA11;
					n_468454 = HEX3Atmp_468468->data[i_468471];
					typ = semtypenode_455269(c, n_468454, NIM_NIL);
					safeadd_300522((&(*result).sons), typ);
					i_468471 += ((NI) 1);
				} LA11: ;
			}
		}
	}
	LA7: ;
	return result;
}

N_NIMCALL(Ttype223847*, semvartype_463395)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	result = 0;
	{
		NI LOC3;
		Ttype223847* base;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 1))) goto LA4;
		result = neworprevtype_462895(((NU8) 23), prev, c);
		base = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		{
			if (!((*base).kind == ((NU8) 23))) goto LA8;
			localerror_194128((*n).info, ((NU16) 202), ((NimStringDesc*) &TMP3115));
			base = (*base).sons->data[((NI) 0)];
		}
		LA8: ;
		addsonskipintlit_272729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		result = newconstraint_462925(c, ((NU8) 23));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype223847*, semdistinct_463415)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	Ttype223847* LOC6;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_224098(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_462925(c, ((NU8) 13));
		goto BeforeRet;
	}
	LA4: ;
	result = neworprevtype_462895(((NU8) 13), prev, c);
	LOC6 = 0;
	LOC6 = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	addsonskipintlit_272729(result, LOC6);
	{
		NI LOC9;
		LOC9 = 0;
		LOC9 = len_224098(n);
		if (!(((NI) 1) < LOC9)) goto LA10;
		asgnRefNoCycle((void**) (&(*result).n), HEX5BHEX5D_224244(n, ((NI) 1)));
	}
	LA10: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, semproctypewithscope_468486)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev, NU8 kind) {
	Ttype223847* result;
	Tscope223835* LOC1;
	Tsym223841* s;
	Tident196021* LOC2;
	Tnode223809* LOC3;
	result = 0;
	checksonslen_279260(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	result = semproctypenode_467551(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL, prev, kind, NIM_TRUE);
	LOC2 = 0;
	LOC2 = getident_196463(((NimStringDesc*) &TMP3534));
	LOC3 = 0;
	LOC3 = newidentnode_225313(LOC2, (*n).info);
	s = newsyms_455904(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_224098((*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_295082(c, s, (*n).kindU.S6.sons->data[((NI) 1)], TMP3537);
		seteffectsforproctype_368612(result, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	LA4: ;
	closescope_284111(c);
	return result;
}

N_NIMCALL(Ttype223847*, semenum_462933)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	NI64 counter;
	NI64 x;
	Tsym223841* e;
	Ttype223847* base;
	NIM_BOOL ispure;
	NIM_BOOL LOC19;
	NIM_BOOL hasnull;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_462925(c, ((NU8) 14));
		goto BeforeRet;
	}
	goto LA1;
	LA4: ;
	{
		NI LOC7;
		LOC7 = 0;
		LOC7 = sonslen_226387(n);
		if (!(LOC7 == ((NI) 1))) goto LA8;
		result = errortype_279161(c);
		goto BeforeRet;
	}
	goto LA1;
	LA8: ;
	LA1: ;
	counter = 0;
	x = 0;
	e = 0;
	base = 0;
	counter = IL64(0);
	base = NIM_NIL;
	result = neworprevtype_462895(((NU8) 14), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_225351(((NU8) 150), (*n).info));
	checkminsonslen_279270(n, ((NI) 1));
	{
		NI64 LOC18;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA12;
		base = semtypenode_455269(c, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		{
			if (!!(((*base).kind == ((NU8) 14)))) goto LA16;
			localerror_194128((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 126), ((NimStringDesc*) &TMP3115));
		}
		LA16: ;
		LOC18 = 0;
		LOC18 = lastord_253010(base);
		counter = (NI64)(LOC18 + IL64(1));
	}
	LA12: ;
	rawaddson_227498(result, base);
	LOC19 = 0;
	LOC19 = !(((*result).sym == NIM_NIL));
	if (!(LOC19)) goto LA20;
	LOC19 = (((*(*result).sym).flags &(1<<((((NU8) 9))&31)))!=0);
	LA20: ;
	ispure = LOC19;
	hasnull = NIM_FALSE;
	{
		NI i_463004;
		NI HEX3Atmp_463237;
		NI LOC22;
		NI res_463240;
		i_463004 = 0;
		HEX3Atmp_463237 = 0;
		LOC22 = 0;
		LOC22 = sonslen_226387(n);
		HEX3Atmp_463237 = (NI)(LOC22 - ((NI) 1));
		res_463240 = ((NI) 1);
		{
			while (1) {
				Tnode223809* LOC72;
				if (!(res_463240 <= HEX3Atmp_463237)) goto LA24;
				i_463004 = res_463240;
				switch ((*(*n).kindU.S6.sons->data[i_463004]).kind) {
				case ((NU8) 151):
				{
					Tnode223809* v;
					Tnode223809* strval;
					Ttype223847* LOC26;
					e = newsyms_455904(((NU8) 20), (*(*n).kindU.S6.sons->data[i_463004]).kindU.S6.sons->data[((NI) 0)], c);
					v = semconstexpr_456485(c, (*(*n).kindU.S6.sons->data[i_463004]).kindU.S6.sons->data[((NI) 1)]);
					strval = NIM_NIL;
					LOC26 = 0;
					LOC26 = skiptypes_227167((*v).typ, IL64(211106232576000));
					switch ((*LOC26).kind) {
					case ((NU8) 18):
					{
						{
							NI LOC30;
							LOC30 = 0;
							LOC30 = sonslen_226387(v);
							if (!(LOC30 == ((NI) 2))) goto LA31;
							strval = (*v).kindU.S6.sons->data[((NI) 1)];
							{
								Ttype223847* LOC35;
								LOC35 = 0;
								LOC35 = skiptypes_227167((*strval).typ, IL64(211106232576256));
								if (!((*LOC35).kind == ((NU8) 28) || (*LOC35).kind == ((NU8) 29))) goto LA36;
								x = getordvalue_253178((*v).kindU.S6.sons->data[((NI) 0)]);
							}
							goto LA33;
							LA36: ;
							{
								localerror_194128((*strval).info, ((NU16) 6), ((NimStringDesc*) &TMP3115));
							}
							LA33: ;
						}
						goto LA28;
						LA31: ;
						{
							localerror_194128((*v).info, ((NU16) 115), ((NimStringDesc*) &TMP3115));
						}
						LA28: ;
					}
					break;
					case ((NU8) 28):
					case ((NU8) 29):
					{
						strval = v;
						x = counter;
					}
					break;
					default:
					{
						x = getordvalue_253178(v);
					}
					break;
					}
					{
						if (!!((i_463004 == ((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_194128((*(*n).kindU.S6.sons->data[i_463004]).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_463004]).kindU.S4.sym;
				}
				break;
				case ((NU8) 2):
				case ((NU8) 53):
				{
					e = newsyms_455904(((NU8) 20), (*n).kindU.S6.sons->data[i_463004], c);
				}
				break;
				default:
				{
					Tnode223809* LOC57;
					LOC57 = 0;
					LOC57 = HEX5BHEX5D_224244(n, i_463004);
					illformedast_279240(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 &(1<<((((NU8) 1))&31)))!=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_231103((&(*(*c).module).kindU.S3.tab), e);
					}
					LA70: ;
				}
				LA66: ;
				LOC72 = 0;
				LOC72 = newsymnode_225325(e);
				addson_225819((*result).n, LOC72);
				{
					NIM_BOOL LOC75;
					LOC75 = 0;
					LOC75 = !((((*e).flags &(1<<((((NU8) 31))&31)))!=0));
					if (!(LOC75)) goto LA76;
					LOC75 = !(ispure);
					LA76: ;
					if (!LOC75) goto LA77;
					adddecl_284607(c, e);
				}
				LA77: ;
				counter += ((NI) 1);
				res_463240 += ((NI) 1);
			} LA24: ;
		}
	}
	{
		if (!!(hasnull)) goto LA81;
		(*result).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
	}
	LA81: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, semstmtlisttype_468038)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	NI length;
	result = 0;
	checkminsonslen_279270(n, ((NI) 1));
	length = sonslen_226387(n);
	{
		NI i_468057;
		NI HEX3Atmp_468063;
		NI res_468066;
		i_468057 = 0;
		HEX3Atmp_468063 = 0;
		HEX3Atmp_468063 = (NI)(length - ((NI) 2));
		res_468066 = ((NI) 0);
		{
			while (1) {
				if (!(res_468066 <= HEX3Atmp_468063)) goto LA3;
				i_468057 = res_468066;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_468057]), semstmt_455277(c, (*n).kindU.S6.sons->data[i_468057]));
				res_468066 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		if (!(((NI) 0) < length)) goto LA6;
		result = semtypenode_455269(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(Ttype223847*, semblocktype_468082)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	Tscope223835* LOC1;
	result = 0;
	(*(*c).p).nestedblockcounter += ((NI) 1);
	checksonslen_279260(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	{
		Tsym223841* 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_455904(((NU8) 22), (*n).kindU.S6.sons->data[((NI) 0)], c);
		adddecl_284607(c, LOC6);
	}
	LA4: ;
	result = semstmtlisttype_468038(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_284111(c);
	(*(*c).p).nestedblockcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Ttype223847*, semtypenode_455269)(Tcontext278023* c, Tnode223809* n, Ttype223847* prev) {
	Ttype223847* result;
	result = 0;
	result = NIM_NIL;
	{
		if (!(gcmd_165134 == ((NU8) 14))) goto LA3;
		suggestexpr_396865(c, n);
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 1):
	{
	}
	break;
	case ((NU8) 132):
	{
		Tnode223809* typexpr;
		checksonslen_279260(n, ((NI) 1));
		typexpr = semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 0)], 4);
		result = skiptypes_227167((*typexpr).typ, IL64(562949953421312));
	}
	break;
	case ((NU8) 37):
	{
		{
			NI LOC10;
			LOC10 = 0;
			LOC10 = sonslen_226387(n);
			if (!(LOC10 == ((NI) 1))) goto LA11;
			result = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 0)], prev);
		}
		goto LA8;
		LA11: ;
		{
			result = semanontuple_464614(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):
	{
		Tnode223809* x;
		Tident196021* ident;
		x = HEX5BHEX5D_224244(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):
		{
			Tnode223809* LOC18;
			LOC18 = 0;
			LOC18 = HEX5BHEX5D_224244(x, ((NI) 0));
			ident = (*(*LOC18).kindU.S4.sym).name;
		}
		break;
		default:
		{
			ident = NIM_NIL;
		}
		break;
		}
		{
			NIM_BOOL LOC22;
			Tnode223809* b;
			LOC22 = 0;
			LOC22 = !((ident == NIM_NIL));
			if (!(LOC22)) goto LA23;
			LOC22 = eqStrings((*ident).s, ((NimStringDesc*) &TMP3117));
			LA23: ;
			if (!LOC22) goto LA24;
			b = newnodei_225351(((NU8) 42), (*n).info);
			{
				NI i_468672;
				Slice90369 HEX3Atmp_469258;
				NI LOC27;
				i_468672 = 0;
				memset((void*)(&HEX3Atmp_469258), 0, sizeof(HEX3Atmp_469258));
				LOC27 = 0;
				LOC27 = len_224098(n);
				HEX3Atmp_469258 = HEX2EHEX2E_105290(((NI) 1), (LOC27 - 1));
				{
					NI x_469262;
					NI HEX3Atmp_469264;
					NI HEX3Atmp_469266;
					NI res_469268;
					x_469262 = 0;
					HEX3Atmp_469264 = 0;
					HEX3Atmp_469266 = 0;
					HEX3Atmp_469264 = HEX3Atmp_469258.a;
					HEX3Atmp_469266 = HEX3Atmp_469258.b;
					res_469268 = HEX3Atmp_469264;
					{
						while (1) {
							Tnode223809* LOC31;
							if (!(res_469268 <= HEX3Atmp_469266)) goto LA30;
							x_469262 = res_469268;
							i_468672 = x_469262;
							LOC31 = 0;
							LOC31 = HEX5BHEX5D_224244(n, i_468672);
							add_224165(b, LOC31);
							res_469268 += ((NI) 1);
						} LA30: ;
					}
				}
			}
			result = semtypenode_455269(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_463427(c, n, prev);
		}
		goto LA20;
		LA35: ;
		{
			Tnode223809* LOC38;
			LOC38 = 0;
			LOC38 = HEX5BHEX5D_224244(n, ((NI) 0));
			if (!!(((*LOC38).kind == ((NU8) 2) || (*LOC38).kind == ((NU8) 3) || (*LOC38).kind == ((NU8) 53) || (*LOC38).kind == ((NU8) 57) || (*LOC38).kind == ((NU8) 56)))) goto LA39;
			result = semtypeexpr_468381(c, n);
		}
		goto LA20;
		LA39: ;
		{
			Tident196021* op;
			op = considerquotedident_284010((*n).kindU.S6.sons->data[((NI) 0)]);
			{
				NIM_BOOL LOC44;
				Ttype223847* t1;
				Ttype223847* t2;
				LOC44 = 0;
				LOC44 = ((*op).Sup.id == ((NI) 2) || (*op).Sup.id == ((NI) 49));
				if (LOC44) goto LA45;
				LOC44 = eqStrings((*op).s, ((NimStringDesc*) &TMP3118));
				LA45: ;
				if (!LOC44) goto LA46;
				checksonslen_279260(n, ((NI) 3));
				t1 = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
				t2 = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
				{
					if (!(t1 == NIM_NIL)) goto LA50;
					localerror_194128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
					result = neworprevtype_462895(((NU8) 50), prev, c);
				}
				goto LA48;
				LA50: ;
				{
					if (!(t2 == NIM_NIL)) goto LA53;
					localerror_194128((*(*n).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
					result = neworprevtype_462895(((NU8) 50), prev, c);
				}
				goto LA48;
				LA53: ;
				{
					{
						if (!((*op).Sup.id == ((NI) 2))) goto LA58;
						result = makeandtype_278858(c, t1, t2);
					}
					goto LA56;
					LA58: ;
					{
						result = makeortype_278931(c, t1, t2);
					}
					LA56: ;
				}
				LA48: ;
			}
			goto LA42;
			LA46: ;
			{
				NI LOC64;
				if (!((*op).Sup.id == ((NI) 45))) goto LA62;
				LOC64 = 0;
				LOC64 = len_224098(n);
				switch (LOC64) {
				case ((NI) 3):
				{
					result = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 1)], prev);
					{
						NIM_BOOL LOC68;
						Ttype223847* LOC69;
						LOC68 = 0;
						LOC69 = 0;
						LOC69 = skiptypes_227167(result, 2048);
						LOC68 = ((*LOC69).kind >= ((NU8) 9) && (*LOC69).kind <= ((NU8) 10) || (*LOC69).kind == ((NU8) 12) || (*LOC69).kind >= ((NU8) 21) && (*LOC69).kind <= ((NU8) 22) || (*LOC69).kind >= ((NU8) 24) && (*LOC69).kind <= ((NU8) 26) || (*LOC69).kind >= ((NU8) 28) && (*LOC69).kind <= ((NU8) 29) || (*LOC69).kind == ((NU8) 50));
						if (!(LOC68)) goto LA70;
						LOC68 = ((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 23));
						LA70: ;
						if (!LOC68) goto LA71;
						result = freshtype_468401(result, prev);
						(*result).flags |= ((NU32)1)<<((((NU8) 16))%(sizeof(NU32)*8));
					}
					goto LA66;
					LA71: ;
					{
						localerror_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3119));
					}
					LA66: ;
				}
				break;
				case ((NI) 2):
				{
					Ttype223847* negated;
					negated = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 1)], prev);
					result = makenottype_279004(c, negated);
				}
				break;
				default:
				{
					localerror_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3119));
				}
				break;
				}
			}
			goto LA42;
			LA62: ;
			{
				if (!((*op).Sup.id == ((NI) 52))) goto LA77;
				result = semanyref_463311(c, n, ((NU8) 21), prev);
			}
			goto LA42;
			LA77: ;
			{
				if (!((*op).Sup.id == ((NI) 54))) goto LA80;
				result = semanyref_463311(c, n, ((NU8) 22), prev);
			}
			goto LA42;
			LA80: ;
			{
				Tnode223809* typexpr;
				if (!((*op).Sup.id == ((NI) 62))) goto LA83;
				checksonslen_279260(n, ((NI) 2));
				typexpr = semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 1)], 4);
				result = skiptypes_227167((*typexpr).typ, IL64(562949953421312));
			}
			goto LA42;
			LA83: ;
			{
				result = semtypeexpr_468381(c, n);
			}
			LA42: ;
		}
		LA20: ;
	}
	break;
	case ((NU8) 93):
	{
		Tnode223809* whenresult;
		whenresult = semwhen_456047(c, n, NIM_FALSE);
		{
			if (!((*whenresult).kind == ((NU8) 115))) goto LA89;
			(*whenresult).kind = ((NU8) 128);
		}
		LA89: ;
		result = semtypenode_455269(c, whenresult, prev);
	}
	break;
	case ((NU8) 42):
	{
		Tsym223841* s;
		checkminsonslen_279270(n, ((NI) 2));
		s = semtypeident_463976(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		switch ((*s).magic) {
		case ((NU8) 164):
		{
			result = semarray_463918(c, n, prev);
		}
		break;
		case ((NU8) 165):
		{
			result = semcontainer_463285(c, n, ((NU8) 27), ((NimStringDesc*) &TMP3122), prev);
		}
		break;
		case ((NU8) 166):
		{
			result = semrange_463701(c, n, prev);
		}
		break;
		case ((NU8) 167):
		{
			result = semset_463256(c, n, prev);
		}
		break;
		case ((NU8) 170):
		{
			result = semordinal_463955(c, n, prev);
		}
		break;
		case ((NU8) 168):
		{
			result = semcontainer_463285(c, n, ((NU8) 24), ((NimStringDesc*) &TMP3126), prev);
		}
		break;
		case ((NU8) 169):
		{
			result = semvarargs_463298(c, n, prev);
		}
		break;
		case ((NU8) 195):
		{
			Tnode223809* LOC100;
			Ttype223847* LOC101;
			LOC100 = 0;
			LOC100 = HEX5BHEX5D_224244(n, ((NI) 1));
			LOC101 = 0;
			LOC101 = semtypenode_455269(c, LOC100, NIM_NIL);
			result = maketypedesc_278684(c, LOC101);
		}
		break;
		case ((NU8) 193):
		{
			result = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
			{
				Tsym223841* LOC107;
				if (!!((result == NIM_NIL))) goto LA105;
				LOC107 = 0;
				LOC107 = getcurrowner_278258();
				result = copytype_226542(result, LOC107, NIM_FALSE);
				{
					NI i_468896;
					NI HEX3Atmp_469273;
					NI LOC109;
					NI res_469276;
					i_468896 = 0;
					HEX3Atmp_469273 = 0;
					LOC109 = 0;
					LOC109 = len_224098(n);
					HEX3Atmp_469273 = (NI)(LOC109 - ((NI) 1));
					res_469276 = ((NI) 1);
					{
						while (1) {
							Ttype223847* LOC112;
							if (!(res_469276 <= HEX3Atmp_469273)) goto LA111;
							i_468896 = res_469276;
							LOC112 = 0;
							LOC112 = semtypenode_455269(c, (*n).kindU.S6.sons->data[i_468896], NIM_NIL);
							rawaddson_227498(result, LOC112);
							res_469276 += ((NI) 1);
						} LA111: ;
					}
				}
			}
			LA105: ;
		}
		break;
		default:
		{
			result = semgeneric_468132(c, n, s, prev);
		}
		break;
		}
	}
	break;
	case ((NU8) 45):
	{
		Tnode223809* typeexpr;
		typeexpr = semexpr_455201(c, n, 0);
		{
			if (!!(((*(*typeexpr).typ).kind == ((NU8) 8)))) goto LA117;
			localerror_194128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
			result = errortype_279161(c);
		}
		goto LA115;
		LA117: ;
		{
			result = base_253039((*typeexpr).typ);
			{
				NIM_BOOL LOC122;
				Tnode223809* preprocessed;
				Tnode223809* LOC125;
				LOC122 = 0;
				LOC122 = ismetatype_224821(result);
				if (!LOC122) goto LA123;
				preprocessed = semgenericstmt_462888(c, n);
				LOC125 = 0;
				LOC125 = copytree_228028(preprocessed);
				result = maketypefromexpr_278729(c, LOC125);
			}
			LA123: ;
		}
		LA115: ;
	}
	break;
	case ((NU8) 2):
	case ((NU8) 53):
	{
		Tsym223841* s;
		s = semtypeident_463976(c, n);
		{
			if (!((*s).typ == NIM_NIL)) goto LA129;
			{
				if (!!(((*s).kind == ((NU8) 0)))) goto LA133;
				localerror_194128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
			}
			LA133: ;
			result = neworprevtype_462895(((NU8) 50), prev, c);
		}
		goto LA127;
		LA129: ;
		{
			NIM_BOOL LOC136;
			LOC136 = 0;
			LOC136 = ((*s).kind == ((NU8) 3));
			if (!(LOC136)) goto LA137;
			LOC136 = ((*(*s).typ).kind == ((NU8) 8));
			LA137: ;
			if (!LOC136) goto LA138;
			{
				NIM_BOOL LOC142;
				Ttype223847* LOC143;
				NimStringDesc* LOC147;
				LOC142 = 0;
				LOC143 = 0;
				LOC143 = base_253039((*s).typ);
				LOC142 = !(((*LOC143).kind == ((NU8) 0)));
				if (!(LOC142)) goto LA144;
				LOC142 = (prev == NIM_NIL);
				LA144: ;
				if (!!(LOC142)) goto LA145;
				LOC147 = 0;
				LOC147 = HEX24_194279(TMP3143);
				internalerror_194191(LOC147);
			}
			LA145: ;
			result = base_253039((*s).typ);
		}
		goto LA127;
		LA138: ;
		{
			if (!(prev == NIM_NIL)) goto LA149;
			result = (*s).typ;
		}
		goto LA127;
		LA149: ;
		{
			assigntype_226445(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 LA154;
				(*prev).Sup.id = (*(*s).typ).Sup.id;
			}
			LA154: ;
			result = prev;
		}
		LA127: ;
	}
	break;
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC159;
			Ttype223847* t;
			LOC159 = 0;
			LOC159 = ((*(*n).kindU.S4.sym).kind == ((NU8) 7));
			if (!(LOC159)) goto LA160;
			LOC159 = !(((*(*n).kindU.S4.sym).typ == NIM_NIL));
			LA160: ;
			if (!LOC159) goto LA161;
			t = (*(*n).kindU.S4.sym).typ;
			{
				if (!(prev == NIM_NIL)) goto LA165;
				result = t;
			}
			goto LA163;
			LA165: ;
			{
				assigntype_226445(prev, t);
				result = prev;
			}
			LA163: ;
			markused_386253((*n).info, (*n).kindU.S4.sym);
		}
		goto LA157;
		LA161: ;
		{
			{
				if (!!(((*(*n).kindU.S4.sym).kind == ((NU8) 0)))) goto LA171;
				localerror_194128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
			}
			LA171: ;
			result = neworprevtype_462895(((NU8) 50), prev, c);
		}
		LA157: ;
	}
	break;
	case ((NU8) 133):
	{
		result = semobjectnode_466216(c, n, prev);
	}
	break;
	case ((NU8) 134):
	{
		result = semtuple_464654(c, n, prev);
	}
	break;
	case ((NU8) 135):
	{
		result = newconstraint_462925(c, ((NU8) 18));
	}
	break;
	case ((NU8) 136):
	{
		result = semtypeclass_468417(c, n, prev);
	}
	break;
	case ((NU8) 141):
	{
		result = semanyref_463311(c, n, ((NU8) 22), prev);
	}
	break;
	case ((NU8) 142):
	{
		result = semanyref_463311(c, n, ((NU8) 21), prev);
	}
	break;
	case ((NU8) 143):
	{
		result = semvartype_463395(c, n, prev);
	}
	break;
	case ((NU8) 146):
	{
		result = semdistinct_463415(c, n, prev);
	}
	break;
	case ((NU8) 137):
	{
		Ttype223847* base;
		result = neworprevtype_462895(((NU8) 59), prev, c);
		base = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		rawaddson_227498(result, base);
		(*result).flags |= ((NU32)1)<<((((NU8) 22))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 148):
	{
		{
			NI LOC185;
			LOC185 = 0;
			LOC185 = sonslen_226387(n);
			if (!(LOC185 == ((NI) 0))) goto LA186;
			result = newconstraint_462925(c, ((NU8) 49));
		}
		goto LA183;
		LA186: ;
		{
			result = semproctypewithscope_468486(c, n, prev, ((NU8) 15));
			{
				NIM_BOOL LOC191;
				Tnode223809* LOC192;
				Tnode223809* LOC194;
				LOC191 = 0;
				LOC192 = 0;
				LOC192 = lastson_226406(n);
				LOC191 = ((*LOC192).kind == ((NU8) 90));
				if (!(LOC191)) goto LA193;
				LOC194 = 0;
				LOC194 = lastson_226406(n);
				LOC191 = haspragma_298952(LOC194, ((NU16) 136));
				LA193: ;
				if (!LOC191) goto LA195;
				(*result).kind = ((NU8) 49);
				(*result).callconv = ((NU8) 5);
			}
			goto LA189;
			LA195: ;
			{
				(*result).flags |= ((NU32)1)<<((((NU8) 14))%(sizeof(NU32)*8));
				(*result).callconv = ((NU8) 8);
			}
			LA189: ;
		}
		LA183: ;
	}
	break;
	case ((NU8) 147):
	{
		{
			NI LOC201;
			LOC201 = 0;
			LOC201 = sonslen_226387(n);
			if (!(LOC201 == ((NI) 0))) goto LA202;
			result = newconstraint_462925(c, ((NU8) 25));
		}
		goto LA199;
		LA202: ;
		{
			result = semproctypewithscope_468486(c, n, prev, ((NU8) 12));
		}
		LA199: ;
	}
	break;
	case ((NU8) 150):
	{
		result = semenum_462933(c, n, prev);
	}
	break;
	case ((NU8) 4):
	{
		result = (*n).typ;
	}
	break;
	case ((NU8) 128):
	{
		result = semstmtlisttype_468038(c, n, prev);
	}
	break;
	case ((NU8) 129):
	{
		result = semblocktype_468082(c, n, prev);
	}
	break;
	case ((NU8) 149):
	{
		checksonslen_279260(n, ((NI) 1));
		result = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 0)], prev);
		result = freshtype_468401(result, prev);
		(*result).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
	}
	break;
	default:
	{
		localerror_194128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
		result = neworprevtype_462895(((NU8) 50), prev, c);
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).typ), result);
	return result;
}

N_NIMCALL(Tnode223809*, semaftermacrocall_462631)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, NU16 flags) {
	Tnode223809* result;
	Tsym223841* LOC5;
	Tsym223841* LOC19;
	result = 0;
	evaltemplatecounter_429396 += ((NI) 1);
	{
		if (!(((NI) 100) < evaltemplatecounter_429396)) goto LA3;
		globalerror_194107((*s).info, ((NU16) 188), ((NimStringDesc*) &TMP3115));
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getmodule_231243((*s).owner);
	(*c).friendmodules = (Tsymseq223811*) incrSeqV2(&((*c).friendmodules)->Sup, sizeof(Tsym223841*));
	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_455277(c, result);
	}
	goto LA6;
	LA8: ;
	{
		switch ((*(*(*s).typ).sons->data[((NI) 0)]).kind) {
		case ((NU8) 6):
		{
			result = semexpr_455201(c, result, flags);
		}
		break;
		case ((NU8) 7):
		{
			result = semstmt_455277(c, result);
		}
		break;
		case ((NU8) 8):
		{
			Ttype223847* typ;
			{
				if (!((*n).kind == ((NU8) 115))) goto LA16;
				(*result).kind = ((NU8) 128);
			}
			LA16: ;
			typ = semtypenode_455269(c, result, NIM_NIL);
			asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_278684(c, typ));
		}
		break;
		default:
		{
			result = semexpr_455201(c, result, flags);
			result = fitnode_455245(c, (*(*s).typ).sons->data[((NI) 0)], result);
		}
		break;
		}
	}
	LA6: ;
	evaltemplatecounter_429396 -= ((NI) 1);
	LOC19 = 0;
	LOC19 = pop_411918((&(*c).friendmodules));
	return result;
}

N_NIMCALL(Tnode223809*, semmacroexpr_456073)(Tcontext278023* c, Tnode223809* n, Tnode223809* norig, Tsym223841* sym, NU16 flags) {
	Tnode223809* result;
	result = 0;
	pushinfocontext_189581((*norig).info);
	markused_386253((*n).info, sym);
	{
		if (!(sym == (*(*c).p).owner)) goto LA3;
		globalerror_194107((*n).info, ((NU16) 26), (*(*sym).name).s);
	}
	LA3: ;
	result = evalmacrocall_444308((*c).module, n, norig, sym);
	{
		if (!!(((flags &(1<<((((NU8) 9))&15)))!=0))) goto LA7;
		result = semaftermacrocall_462631(c, result, sym, flags);
	}
	LA7: ;
	popinfocontext_189600();
	return result;
}

N_NIMCALL(Tnode223809*, semsym_490258)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, NU16 flags) {
	Tnode223809* result;
{	result = 0;
	switch ((*s).kind) {
	case ((NU8) 10):
	{
		Ttype223847* LOC2;
		markused_386253((*n).info, s);
		LOC2 = 0;
		LOC2 = skiptypes_227167((*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_490248(n, s);
			}
			goto LA4;
			LA6: ;
			{
				result = newsymnode_225338(s, (*n).info);
			}
			LA4: ;
		}
		break;
		case ((NU8) 4):
		case ((NU8) 24):
		{
			{
				NI LOC12;
				LOC12 = 0;
				LOC12 = len_224098((*s).ast);
				if (!(LOC12 == ((NI) 0))) goto LA13;
				result = inlineconst_490248(n, s);
			}
			goto LA10;
			LA13: ;
			{
				result = newsymnode_225338(s, (*n).info);
			}
			LA10: ;
		}
		break;
		default:
		{
			result = newsymnode_225338(s, (*n).info);
		}
		break;
		}
	}
	break;
	case ((NU8) 17):
	{
		result = semmacroexpr_456073(c, n, n, s, flags);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_456062(c, n, s, flags);
	}
	break;
	case ((NU8) 3):
	{
		markused_386253((*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 &(1<<((((NU8) 31))&31)))!=0)) goto LA27;
			{
				Tnode223809* realparam;
				Tnode223809* LOC40;
				if (!(*(*c).p).wasforwarded) goto LA31;
				realparam = HEX5BHEX5D_224244((*(*(*(*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_194279(TMP3540);
					internalerror_194191(LOC39);
				}
				LA37: ;
				LOC40 = 0;
				LOC40 = HEX5BHEX5D_224244((*(*(*(*c).p).owner).typ).n, (NI)((*s).position + ((NI) 1)));
				result = newsymnode_225338((*LOC40).kindU.S4.sym, (*n).info);
				goto BeforeRet;
			}
			goto LA29;
			LA31: ;
			{
				Tsym223841* u;
				if (!((*(*(*c).p).owner).kind == ((NU8) 17))) goto LA42;
				u = searchinscopes_284205(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_194279(TMP3541);
					internalerror_194191(LOC52);
				}
				LA50: ;
				result = newsymnode_225338(u, (*n).info);
				goto BeforeRet;
			}
			goto LA29;
			LA42: ;
			LA29: ;
		}
		goto LA20;
		LA27: ;
		LA20: ;
		result = newsymnode_225338(s, (*n).info);
	}
	break;
	case ((NU8) 8):
	case ((NU8) 9):
	case ((NU8) 11):
	case ((NU8) 21):
	{
		{
			if (!((*s).magic == ((NU8) 254))) goto LA56;
			localerror_194139((*n).info, ((NimStringDesc*) &TMP3542));
		}
		LA56: ;
		markused_386253((*n).info, s);
		{
			if (!(((*s).flags &(1<<((((NU8) 3))&31)))!=0)) goto LA60;
			(*(*(*c).p).owner).flags |= ((NU32)1)<<((((NU8) 11))%(sizeof(NU32)*8));
		}
		LA60: ;
		result = newsymnode_225338(s, (*n).info);
	}
	break;
	case ((NU8) 4):
	{
		{
			if (!((*(*s).typ).kind == ((NU8) 59))) goto LA65;
			result = newsymnode_225338(s, (*n).info);
			asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
		}
		goto LA63;
		LA65: ;
		{
			if (!!(((*s).ast == NIM_NIL))) goto LA68;
			result = semexpr_455201(c, (*s).ast, 0);
		}
		goto LA63;
		LA68: ;
		{
			asgnRefNoCycle((void**) (&(*n).typ), (*s).typ);
			result = n;
			goto BeforeRet;
		}
		LA63: ;
	}
	break;
	case ((NU8) 7):
	{
		markused_386253((*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_225338(s, (*n).info);
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_278684(c, (*s).typ));
	}
	break;
	default:
	{
		markused_386253((*n).info, s);
		result = newsymnode_225338(s, (*n).info);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

static N_INLINE(void, markindirect_279208)(Tcontext278023* c, Tsym223841* s) {
	{
		if (!((126976 &(1<<(((*s).kind)&31)))!=0)) goto LA3;
		(*s).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
	}
	LA3: ;
}

N_NIMCALL(Tnode223809*, semfieldaccess_490014)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	result = 0;
	result = builtinfieldaccess_495358(c, n, flags);
	{
		if (!(result == NIM_NIL)) goto LA3;
		result = dottransformation_496079(c, n);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, maybelifttype_491688)(Ttype223847** t, Tcontext278023* c, Tlineinfo188352 info) {
	Tscope223835* LOC1;
	Ttype223847* lifted;
	Tnode223809* LOC2;
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	LOC2 = 0;
	LOC2 = newnodei_225351(((NU8) 152), info);
	lifted = liftparamtype_466479(c, ((NU8) 7), LOC2, (*t), ((NimStringDesc*) &TMP3545), info, NIM_FALSE);
	closescope_284111(c);
	{
		if (!!((lifted == NIM_NIL))) goto LA5;
		unsureAsgnRef((void**) (&(*t)), lifted);
	}
	LA5: ;
}

N_NIMCALL(Tnode223809*, inferwithmetatype_455463)(Tcontext278023* c, Ttype223847* formal, Tnode223809* arg, NIM_BOOL coercedistincts) {
	Tnode223809* result;
	Tcandidate386209 m;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_386278(c, (&m), formal);
	m.coercedistincts = coercedistincts;
	result = paramtypesmatch_391733((&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_461276(c, result, (&m));
	}
	LA5: ;
	{
		Ttype223847* LOC11;
		if (!!((result == NIM_NIL))) goto LA9;
		LOC11 = 0;
		LOC11 = skiptypes_227167(formal, IL64(18014398509481984));
		asgnRefNoCycle((void**) (&(*result).typ), generatetypeinstance_302894(c, m.bindings, (*arg).info, LOC11));
	}
	goto LA7;
	LA9: ;
	{
		typemismatch_455379(arg, formal, (*arg).typ);
		result = copytree_228028(arg);
		asgnRefNoCycle((void**) (&(*result).typ), formal);
	}
	LA7: ;
	return result;
}

N_NIMCALL(NU8, checkconversionbetweenobjects_491409)(Ttype223847* castdest, Ttype223847* src) {
	NU8 result;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = inheritancediff_260091(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_491423)(Tcontext278023* c, Ttype223847* castdest, Ttype223847* src) {
	NU8 result;
	Ttype223847* d;
	Ttype223847* s;
{	result = 0;
	result = ((NU8) 0);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametype_258092(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_227167(castdest, IL64(211106240964864));
	s = skiptypes_227167(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_226426(d);
			s = lastson_226426(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_491409(d, s);
	}
	goto LA17;
	LA24: ;
	{
		NIM_BOOL LOC27;
		Ttype223847* LOC28;
		Ttype223847* LOC30;
		LOC27 = 0;
		LOC28 = 0;
		LOC28 = skiptypes_227167(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_227167(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_390796(c, d, s);
		switch (LOC34) {
		case ((NU8) 0):
		case ((NU8) 8):
		{
			{
				NIM_BOOL LOC38;
				LOC38 = 0;
				LOC38 = comparetypes_260047(castdest, src, ((NU8) 1), 0);
				if (!!(LOC38)) goto LA39;
				result = ((NU8) 2);
			}
			LA39: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA17: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semconv_491710)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Ttype223847* targettype;
	Ttype223847* LOC6;
	Tnode223809* LOC7;
	Tnode223809* LOC8;
	Tnode223809* op;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_194128((*n).info, ((NU16) 165), ((NimStringDesc*) &TMP3115));
		result = n;
		goto BeforeRet;
	}
	LA4: ;
	result = newnodei_225351(((NU8) 60), (*n).info);
	LOC6 = 0;
	LOC6 = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	targettype = skiptypes_227167(LOC6, 256);
	LOC7 = 0;
	LOC7 = HEX5BHEX5D_224244(n, ((NI) 0));
	maybelifttype_491688(&targettype, c, (*LOC7).info);
	LOC8 = 0;
	LOC8 = copytree_228028((*n).kindU.S6.sons->data[((NI) 0)]);
	addson_225819(result, LOC8);
	op = semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	{
		NIM_BOOL LOC11;
		Tnode223809* final;
		LOC11 = 0;
		LOC11 = ismetatype_224821(targettype);
		if (!LOC11) goto LA12;
		final = inferwithmetatype_455463(c, targettype, op, NIM_TRUE);
		addson_225819(result, final);
		asgnRefNoCycle((void**) (&(*result).typ), (*final).typ);
		goto BeforeRet;
	}
	LA12: ;
	asgnRefNoCycle((void**) (&(*result).typ), targettype);
	addson_225819(result, op);
	{
		NIM_BOOL LOC16;
		NU8 status;
		LOC16 = 0;
		LOC16 = issymchoice_491671(op);
		if (!!(LOC16)) goto LA17;
		status = checkconvertible_491423(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_228650((*op).kindU.S4.sym);
				LA23: ;
				if (!LOC22) goto LA24;
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), fitnode_455245(c, (*result).typ, (*result).kindU.S6.sons->data[((NI) 1)]));
			}
			LA24: ;
		}
		break;
		case ((NU8) 1):
		{
			NimStringDesc* LOC27;
			LOC27 = 0;
			LOC27 = typetostring_253032((*result).typ, ((NU8) 0));
			message_194161((*n).info, ((NU16) 273), LOC27);
		}
		break;
		case ((NU8) 2):
		{
			NimStringDesc* LOC29;
			TY191306 LOC30;
			NimStringDesc* LOC31;
			LOC29 = 0;
			LOC29 = msgkindtostring_190406(((NU16) 146));
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = typetostring_253032((*op).typ, ((NU8) 0));
			LOC30[1] = typetostring_253032((*result).typ, ((NU8) 0));
			LOC31 = 0;
			LOC31 = nsuFormatOpenArray(LOC29, LOC30, 2);
			localerror_194128((*n).info, ((NU16) 4), LOC31);
		}
		break;
		}
	}
	goto LA14;
	LA17: ;
	{
		{
			NI i_491753;
			NI HEX3Atmp_491806;
			NI LOC34;
			NI res_491809;
			i_491753 = 0;
			HEX3Atmp_491806 = 0;
			LOC34 = 0;
			LOC34 = sonslen_226387(op);
			HEX3Atmp_491806 = (NI)(LOC34 - ((NI) 1));
			res_491809 = ((NI) 0);
			{
				while (1) {
					Tnode223809* it;
					NU8 status;
					if (!(res_491809 <= HEX3Atmp_491806)) goto LA36;
					i_491753 = res_491809;
					it = (*op).kindU.S6.sons->data[i_491753];
					status = checkconvertible_491423(c, (*result).typ, (*it).typ);
					{
						if (!((3 &(1<<((status)&7)))!=0)) goto LA39;
						markused_386253((*n).info, (*it).kindU.S4.sym);
						markindirect_279208(c, (*it).kindU.S4.sym);
						result = it;
						goto BeforeRet;
					}
					LA39: ;
					res_491809 += ((NI) 1);
				} LA36: ;
			}
		}
		localerror_194128((*n).info, ((NU16) 66), (*(*(*(*op).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
	}
	LA14: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, checkinitialized_499065)(Tnode223809* n, Intset220056 ids, Tlineinfo188352 info) {
	switch ((*n).kind) {
	case ((NU8) 138):
	{
		{
			NI i_499082;
			NI HEX3Atmp_499235;
			NI LOC3;
			NI res_499238;
			i_499082 = 0;
			HEX3Atmp_499235 = 0;
			LOC3 = 0;
			LOC3 = sonslen_226387(n);
			HEX3Atmp_499235 = (NI)(LOC3 - ((NI) 1));
			res_499238 = ((NI) 0);
			{
				while (1) {
					if (!(res_499238 <= HEX3Atmp_499235)) goto LA5;
					i_499082 = res_499238;
					checkinitialized_499065((*n).kindU.S6.sons->data[i_499082], ids, info);
					res_499238 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 139):
	{
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA9;
			internalerror_194172(info, ((NimStringDesc*) &TMP3547));
		}
		LA9: ;
		checkinitialized_499065((*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_220829(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*) &TMP3548));
appendString(LOC19, (*(*(*n).kindU.S4.sym).name).s);
			message_194161(info, ((NU16) 4), LOC19);
		}
		LA17: ;
	}
	break;
	default:
	{
		internalerror_194172(info, ((NimStringDesc*) &TMP3547));
	}
	break;
	}
}

N_NIMCALL(Tnode223809*, semobjconstr_494433)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Ttype223847* t;
	Ttype223847* objtype;
	Intset220056 ids;
{	result = 0;
	t = semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	result = n;
	asgnRefNoCycle((void**) (&(*result).typ), t);
	(*result).kind = ((NU8) 38);
	t = skiptypes_227167(t, 2048);
	{
		if (!((*t).kind == ((NU8) 22))) goto LA3;
		t = skiptypes_227167((*t).sons->data[((NI) 0)], 2048);
	}
	LA3: ;
	{
		if (!!(((*t).kind == ((NU8) 17)))) goto LA7;
		localerror_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3546));
		goto BeforeRet;
	}
	LA7: ;
	objtype = t;
	memset((void*)(&ids), 0, sizeof(ids));
	chckNil((void*)(&ids));
	memset((void*)(&ids), 0, sizeof(ids));
	initintset_220927((&ids));
	{
		NI i_499303;
		NI HEX3Atmp_499418;
		NI LOC10;
		NI res_499421;
		i_499303 = 0;
		HEX3Atmp_499418 = 0;
		LOC10 = 0;
		LOC10 = len_224098(n);
		HEX3Atmp_499418 = (LOC10 - 1);
		res_499421 = ((NI) 1);
		{
			while (1) {
				Tnode223809* it;
				Tident196021* id;
				Tnode223809* e;
				Tnode223809* check;
				Tsym223841* f;
				if (!(res_499421 <= HEX3Atmp_499418)) goto LA12;
				i_499303 = res_499421;
				it = (*n).kindU.S6.sons->data[i_499303];
				{
					if (!!(((*it).kind == ((NU8) 34)))) goto LA15;
					localerror_194128((*n).info, ((NU16) 174), ((NimStringDesc*) &TMP3115));
					goto LA9;
				}
				LA15: ;
				id = considerquotedident_284010((*it).kindU.S6.sons->data[((NI) 0)]);
				{
					NIM_BOOL LOC19;
					LOC19 = 0;
					LOC19 = containsorincl_220898((&ids), (*id).Sup.id);
					if (!LOC19) goto LA20;
					localerror_194128((*it).info, ((NU16) 90), (*id).s);
				}
				LA20: ;
				e = semexprwithtype_455211(c, (*it).kindU.S6.sons->data[((NI) 1)], (flags & 64));
				check = NIM_NIL;
				f = 0;
				t = objtype;
				{
					while (1) {
						check = NIM_NIL;
						f = lookupinrecordandbuildcheck_495004(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_227167((*t).sons->data[((NI) 0)], 2048);
					}
				} LA22: ;
				{
					NIM_BOOL LOC34;
					LOC34 = 0;
					LOC34 = !((f == NIM_NIL));
					if (!(LOC34)) goto LA35;
					LOC34 = fieldvisible_393471(c, f);
					LA35: ;
					if (!LOC34) goto LA36;
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325(f));
					e = fitnode_455245(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_224165(it, check);
					}
					LA40: ;
				}
				goto LA32;
				LA36: ;
				{
					localerror_194128((*it).info, ((NU16) 84), (*id).s);
				}
				LA32: ;
				asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), e);
				res_499421 += ((NI) 1);
			} LA12: ;
		}
	} LA9: ;
	{
		if (!(((*objtype).flags &(1<<((((NU8) 17))&31)))!=0)) goto LA45;
		{
			while (1) {
				checkinitialized_499065((*objtype).n, ids, (*n).info);
				{
					if (!((*objtype).sons->data[((NI) 0)] == NIM_NIL)) goto LA51;
					goto LA47;
				}
				LA51: ;
				objtype = skiptypes_227167((*objtype).sons->data[((NI) 0)], 2048);
			}
		} LA47: ;
	}
	LA45: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym223841*, lookupfordefined_497178)(Tcontext278023* c, Tident196021* i, NIM_BOOL onlycurrentscope) {
	Tsym223841* result;
	result = 0;
	{
		if (!onlycurrentscope) goto LA3;
		result = localsearchinscope_284194(c, i);
	}
	goto LA1;
	LA3: ;
	{
		result = searchinscopes_284205(c, i);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym223841*, lookupfordefined_497187)(Tcontext278023* c, Tnode223809* n, NIM_BOOL onlycurrentscope) {
	Tsym223841* result;
{	result = 0;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		result = lookupfordefined_497178(c, (*n).kindU.S5.ident, onlycurrentscope);
	}
	break;
	case ((NU8) 45):
	{
		Tsym223841* m;
		result = NIM_NIL;
		{
			if (!onlycurrentscope) goto LA5;
			goto BeforeRet;
		}
		LA5: ;
		checksonslen_279260(n, ((NI) 2));
		m = lookupfordefined_497187(c, (*n).kindU.S6.sons->data[((NI) 0)], onlycurrentscope);
		{
			NIM_BOOL LOC9;
			Tident196021* ident;
			Tnode223809* 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_224244(n, ((NI) 1));
			ident = considerquotedident_284010(LOC13);
			{
				if (!(m == (*c).module)) goto LA16;
				result = strtableget_231111((*(*c).toplevelscope).symbols, ident);
			}
			goto LA14;
			LA16: ;
			{
				result = strtableget_231111((*m).kindU.S3.tab, ident);
			}
			LA14: ;
		}
		LA11: ;
	}
	break;
	case ((NU8) 53):
	{
		Tident196021* LOC20;
		LOC20 = 0;
		LOC20 = considerquotedident_284010(n);
		result = lookupfordefined_497178(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_245059(n, 0);
		localerror_194128((*n).info, ((NU16) 20), LOC24);
		result = NIM_NIL;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semdefined_497236)(Tcontext278023* c, Tnode223809* n, NIM_BOOL onlycurrentscope) {
	Tnode223809* result;
	result = 0;
	checksonslen_279260(n, ((NI) 2));
	result = newintnode_224608(((NU8) 6), IL64(0));
	{
		NIM_BOOL LOC3;
		Tnode223809* LOC5;
		Tident196021* LOC6;
		LOC3 = 0;
		LOC3 = !(onlycurrentscope);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = HEX5BHEX5D_224244(n, ((NI) 0));
		LOC6 = 0;
		LOC6 = considerquotedident_284010(LOC5);
		LOC3 = eqStrings((*LOC6).s, ((NimStringDesc*) &TMP3549));
		LA4: ;
		if (!LOC3) goto LA7;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2)))) goto LA11;
			localerror_194139((*n).info, ((NimStringDesc*) &TMP3550));
		}
		goto LA9;
		LA11: ;
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = isdefined_197167((*(*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: ;
	{
		Tsym223841* LOC18;
		LOC18 = 0;
		LOC18 = lookupfordefined_497187(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_272190(((NU8) 1)));
	return result;
}

N_NIMCALL(Tnode223809*, setms_498184)(Tnode223809* n, Tsym223841* s) {
	Tnode223809* result;
	result = 0;
	result = n;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325(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_20843;
	exchandler_20843 = s;
}

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

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

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

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

N_NIMCALL(Tnode223809*, tryexpr_455317)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* volatile result;
	NI olderrorcount;
	NI olderrormax;
	NI oldcompilesid;
	Tscope223835* oldscope;
	Tscope223835* LOC1;
	NI oldownerlen;
	TY278143* oldgenerics;
	NU8 olderroroutputs;
	NI oldcontextlen;
	NI oldingenericcontext;
	NI oldinunrolledcontext;
	NI oldingenericinst;
	Tproccon278011* oldproccon;
	NimStringDesc* err;
	TSafePoint TMP3551;
	result = 0;
	olderrorcount = gerrorcounter_189399;
	olderrormax = gerrormax_189402;
	oldcompilesid = (*c).compilescontextid;
	(*c).compilescontextidgenerator += ((NI) 1);
	(*c).compilescontextid = (*c).compilescontextidgenerator;
	gerrormax_189402 = ((NI) 2147483647);
	oldscope = (*c).currentscope;
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	oldownerlen = (gowners_278291 ? gowners_278291->Sup.len : 0);
	oldgenerics = (*c).generics;
	olderroroutputs = erroroutputs_189440;
	erroroutputs_189440 = 0;
	oldcontextlen = getinfocontextlen_189545();
	oldingenericcontext = (*c).ingenericcontext;
	oldinunrolledcontext = (*c).inunrolledcontext;
	oldingenericinst = (*c).ingenericinst;
	oldproccon = (*c).p;
	if ((*c).generics) nimGCunrefNoCycle((*c).generics);
	(*c).generics = (TY278143*) newSeqRC1((&NTI278143), 0);
	err = 0;
	pushSafePoint(&TMP3551);
	TMP3551.status = setjmp(TMP3551.context);
	if (TMP3551.status == 0) {
		result = semexpr_455201(c, n, flags);
		{
			if (!!((gerrorcounter_189399 == olderrorcount))) goto LA5;
			result = NIM_NIL;
		}
		LA5: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI188358))) {
			TMP3551.status = 0;
			{
				if (!((gglobaloptions_165132 &(1<<((((NU8) 6))&31)))!=0)) goto LA11;
				err = getcurrentexceptionmsg_89208();
			}
			LA11: ;
			popCurrentException();
		}
	}
	if (TMP3551.status != 0) reraiseException();
	(*c).compilescontextid = oldcompilesid;
	genericSeqAssign((&(*c).generics), oldgenerics, (&NTI278143));
	(*c).ingenericcontext = oldingenericcontext;
	(*c).inunrolledcontext = oldinunrolledcontext;
	(*c).ingenericinst = oldingenericinst;
	asgnRef((void**) (&(*c).p), oldproccon);
	setinfocontextlen_189562(oldcontextlen);
	gowners_278291 = (Tsymseq223811*) setLengthSeq(&(gowners_278291)->Sup, sizeof(Tsym223841*), ((NI) (oldownerlen)));
	asgnRef((void**) (&(*c).currentscope), oldscope);
	erroroutputs_189440 = olderroroutputs;
	gerrorcounter_189399 = olderrorcount;
	gerrormax_189402 = olderrormax;
	{
		NIM_BOOL LOC15;
		LOC15 = 0;
		LOC15 = ((gglobaloptions_165132 &(1<<((((NU8) 6))&31)))!=0);
		if (!(LOC15)) goto LA16;
		LOC15 = !(err == 0);
		LA16: ;
		if (!LOC15) goto LA17;
		localerror_194139((*n).info, err);
	}
	LA17: ;
	return result;
}

N_NIMCALL(Tnode223809*, semcompiles_498079)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Tnode223809* LOC6;
	Tnode223809* LOC7;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		result = semdirectop_456039(c, n, flags);
		goto BeforeRet;
	}
	LA4: ;
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_224244(n, ((NI) 1));
	LOC7 = 0;
	LOC7 = tryexpr_455317(c, LOC6, flags);
	result = newintnode_224608(((NU8) 6), ((NI64) (!((LOC7 == NIM_NIL)))));
	(*result).info = (*n).info;
	asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 1)));
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semsizeof_491884)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_194128((*n).info, ((NU16) 73), ((NimStringDesc*) &TMP3552));
	}
	goto LA1;
	LA4: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 1)], 32));
	}
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_272190(((NU8) 31)));
	result = n;
	return result;
}

N_NIMCALL(Tnode223809*, isopimpl_456055)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Ttype223847* t1;
	Tnode223809* LOC16;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NI LOC6;
		Tnode223809* LOC8;
		Tnode223809* LOC10;
		Tnode223809* LOC12;
		NimStringDesc* LOC15;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = sonslen_226387(n);
		LOC5 = (LOC6 == ((NI) 3));
		if (!(LOC5)) goto LA7;
		LOC8 = 0;
		LOC8 = HEX5BHEX5D_224244(n, ((NI) 1));
		LOC5 = !(((*LOC8).typ == NIM_NIL));
		LA7: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA9;
		LOC10 = 0;
		LOC10 = HEX5BHEX5D_224244(n, ((NI) 1));
		LOC4 = ((*(*LOC10).typ).kind == ((NU8) 8));
		LA9: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA11;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_224244(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_194279(TMP3554);
		internalerror_194191(LOC15);
	}
	LA13: ;
	LOC16 = 0;
	LOC16 = HEX5BHEX5D_224244(n, ((NI) 1));
	t1 = skiptypes_227167((*LOC16).typ, IL64(2305843009213694208));
	{
		Tnode223809* LOC19;
		Tnode223809* LOC22;
		NimStringDesc* LOC23;
		LOC19 = 0;
		LOC19 = HEX5BHEX5D_224244(n, ((NI) 2));
		if (!((*LOC19).kind >= ((NU8) 20) && (*LOC19).kind <= ((NU8) 22))) goto LA20;
		LOC22 = 0;
		LOC22 = HEX5BHEX5D_224244(n, ((NI) 2));
		LOC23 = 0;
		LOC23 = nsuNormalize((*LOC22).kindU.S3.strval);
		if (eqStrings(LOC23, ((NimStringDesc*) &TMP3555))) goto LA24;
		goto LA25;
		LA24: ;
		{
			Ttype223847* t;
			NIM_BOOL LOC28;
			NIM_BOOL LOC29;
			t = skiptypes_227167(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 &(1<<((((NU8) 14))&31)))!=0));
			LA31: ;
			result = newintnode_224608(((NU8) 6), ((NI64) (LOC28)));
		}
		goto LA26;
		LA25: ;
		{
		}
		LA26: ;
	}
	goto LA17;
	LA20: ;
	{
		Ttype223847* t2;
		Tnode223809* LOC34;
		Tcandidate386209 m;
		NIM_BOOL match;
		NU8 LOC35;
		LOC34 = 0;
		LOC34 = HEX5BHEX5D_224244(n, ((NI) 2));
		t2 = skiptypes_227167((*LOC34).typ, 256);
		maybelifttype_491688(&t2, c, (*n).info);
		memset((void*)(&m), 0, sizeof(m));
		initcandidate_386278(c, (&m), t2);
		LOC35 = 0;
		LOC35 = typerel_387064((&m), t2, t1, NIM_TRUE);
		match = (((NU8) 3) <= LOC35);
		result = newintnode_224608(((NU8) 6), ((NI64) (match)));
	}
	LA17: ;
	asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	return result;
}

N_NIMCALL(Tnode223809*, semis_492107)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* LOC6;
	Ttype223847* lhstype;
	Tnode223809* LOC14;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!!((LOC3 == ((NI) 3)))) goto LA4;
		localerror_194128((*n).info, ((NU16) 209), ((NimStringDesc*) &TMP3553));
	}
	LA4: ;
	result = n;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_272190(((NU8) 1)));
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_224244(n, ((NI) 1));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_455211(c, LOC6, 34));
	{
		Tnode223809* LOC9;
		Ttype223847* t2;
		Tnode223809* LOC12;
		Tnode223809* LOC13;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_224244(n, ((NI) 2));
		if (!!(((*LOC9).kind >= ((NU8) 20) && (*LOC9).kind <= ((NU8) 22)))) goto LA10;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_224244(n, ((NI) 2));
		t2 = semtypenode_455269(c, LOC12, NIM_NIL);
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_224244(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), newnodeit_225807(((NU8) 4), (*LOC13).info, t2));
	}
	LA10: ;
	LOC14 = 0;
	LOC14 = HEX5BHEX5D_224244(n, ((NI) 1));
	lhstype = (*LOC14).typ;
	{
		Tnode223809* LOC19;
		if (!!(((*lhstype).kind == ((NU8) 8)))) goto LA17;
		LOC19 = 0;
		LOC19 = HEX5BHEX5D_224244(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), maketypesymnode_278714(c, lhstype, (*LOC19).info));
	}
	goto LA15;
	LA17: ;
	{
		Ttype223847* LOC21;
		LOC21 = 0;
		LOC21 = base_253039(lhstype);
		if (!((*LOC21).kind == ((NU8) 0))) goto LA22;
		goto BeforeRet;
	}
	goto LA15;
	LA22: ;
	LA15: ;
	{
		Tnode223809* LOC26;
		Ttype223847* LOC27;
		NIM_BOOL LOC28;
		LOC26 = 0;
		LOC26 = HEX5BHEX5D_224244(n, ((NI) 1));
		LOC27 = 0;
		LOC27 = base_253039((*LOC26).typ);
		LOC28 = 0;
		LOC28 = containsgenerictype_262310(LOC27);
		if (!!(LOC28)) goto LA29;
		result = isopimpl_456055(c, n);
	}
	LA29: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semof_491895)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
{	result = 0;
	{
		NI LOC3;
		Ttype223847* a;
		Ttype223847* b;
		Ttype223847* x;
		Ttype223847* y;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 1)], 0));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 2)], 32));
		a = skiptypes_227167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106247256320));
		b = skiptypes_227167((*(*n).kindU.S6.sons->data[((NI) 2)]).typ, IL64(211106247256320));
		x = skiptypes_227167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106247256064));
		y = skiptypes_227167((*(*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_194128((*n).info, ((NU16) 210), ((NimStringDesc*) &TMP3556));
		}
		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_194128((*n).info, ((NU16) 210), ((NimStringDesc*) &TMP3556));
		}
		goto LA6;
		LA15: ;
		{
			NI diff;
			diff = inheritancediff_260091(a, b);
			{
				NimStringDesc* LOC22;
				if (!(diff <= ((NI) 0))) goto LA20;
				LOC22 = 0;
				LOC22 = rendertree_245059(n, 0);
				message_194161((*n).info, ((NU16) 281), LOC22);
				result = newintnode_224608(((NU8) 6), IL64(1));
				(*result).info = (*n).info;
				asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 1)));
				goto BeforeRet;
			}
			goto LA18;
			LA20: ;
			{
				NimStringDesc* LOC26;
				if (!(diff == ((NI) 2147483647))) goto LA24;
				LOC26 = 0;
				LOC26 = typetostring_253032(a, ((NU8) 0));
				localerror_194128((*n).info, ((NU16) 211), LOC26);
			}
			goto LA18;
			LA24: ;
			LA18: ;
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		localerror_194128((*n).info, ((NU16) 209), ((NimStringDesc*) &TMP3556));
	}
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_272190(((NU8) 1)));
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym223841*, expectmacroortemplatecall_456032)(Tcontext278023* c, Tnode223809* n) {
	Tsym223841* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		Tsym223841* expandedsym;
		Tnode223809* LOC6;
		LOC3 = 0;
		LOC3 = iscallexpr_224072(n);
		if (!LOC3) goto LA4;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_224244(n, ((NI) 0));
		expandedsym = qualifiedlookup_284864(c, LOC6, 2);
		{
			Tnode223809* LOC11;
			NimStringDesc* LOC12;
			Tnode223809* LOC13;
			if (!(expandedsym == NIM_NIL)) goto LA9;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_224244(n, ((NI) 0));
			LOC12 = 0;
			LOC12 = rendertree_245059(LOC11, 0);
			localerror_194128((*n).info, ((NU16) 63), LOC12);
			LOC13 = 0;
			LOC13 = HEX5BHEX5D_224244(n, ((NI) 0));
			result = errorsym_284372(c, LOC13);
			goto BeforeRet;
		}
		LA9: ;
		{
			Tnode223809* LOC18;
			if (!!(((393216 &(1<<(((*expandedsym).kind)&31)))!=0))) goto LA16;
			localerror_194128((*n).info, ((NU16) 221), (*(*expandedsym).name).s);
			LOC18 = 0;
			LOC18 = HEX5BHEX5D_224244(n, ((NI) 0));
			result = errorsym_284372(c, LOC18);
			goto BeforeRet;
		}
		LA16: ;
		result = expandedsym;
	}
	goto LA1;
	LA4: ;
	{
		NimStringDesc* LOC20;
		LOC20 = 0;
		LOC20 = rendertree_245059(n, 0);
		localerror_194128((*n).info, ((NU16) 221), LOC20);
		result = errorsym_284372(c, n);
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semexpandtoast_497430)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* macrocall;
	Tsym223841* expandedsym;
{	result = 0;
	macrocall = HEX5BHEX5D_224244(n, ((NI) 1));
	expandedsym = expectmacroortemplatecall_456032(c, macrocall);
	{
		if (!((*expandedsym).kind == ((NU8) 0))) goto LA3;
		result = n;
		goto BeforeRet;
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*macrocall).kindU.S6.sons->data[((NI) 0)]), newsymnode_225338(expandedsym, (*macrocall).info));
	markused_386253((*n).info, expandedsym);
	{
		NI i_497614;
		NI HEX3Atmp_497650;
		NI LOC6;
		NI res_497653;
		i_497614 = 0;
		HEX3Atmp_497650 = 0;
		LOC6 = 0;
		LOC6 = len_224098(macrocall);
		HEX3Atmp_497650 = (NI)(LOC6 - ((NI) 1));
		res_497653 = ((NI) 1);
		{
			while (1) {
				Tnode223809* LOC9;
				if (!(res_497653 <= HEX3Atmp_497650)) goto LA8;
				i_497614 = res_497653;
				LOC9 = 0;
				LOC9 = HEX5BHEX5D_224244(macrocall, i_497614);
				asgnRefNoCycle((void**) (&(*macrocall).kindU.S6.sons->data[i_497614]), semexprwithtype_455211(c, LOC9, 0));
				res_497653 += ((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_194279(TMP3557);
		internalerror_194191(LOC14);
	}
	LA12: ;
	{
		Tsym223841* LOC17;
		LOC17 = 0;
		LOC17 = getcompilerproc_272809(((NimStringDesc*) &TMP3158));
		if (!!((LOC17 == NIM_NIL))) goto LA18;
		asgnRefNoCycle((void**) (&(*n).typ), systypefromname_272179(((NimStringDesc*) &TMP3159)));
	}
	goto LA15;
	LA18: ;
	{
		asgnRefNoCycle((void**) (&(*n).typ), systypefromname_272179(((NimStringDesc*) &TMP3160)));
	}
	LA15: ;
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semexpandtoast_497669)(Tcontext278023* c, Tnode223809* n, Tsym223841* magicsym, NU16 flags) {
	Tnode223809* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_225338(magicsym, (*n).info));
		result = semexpandtoast_497430(c, n);
	}
	goto LA1;
	LA4: ;
	{
		result = semdirectop_456039(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NimStringDesc*, expectstring_497308)(Tcontext278023* c, Tnode223809* n_497311) {
	NimStringDesc* result;
	Tnode223809* n;
{	result = 0;
	n = semconstexpr_456485(c, n_497311);
	{
		if (!((*n).kind >= ((NU8) 20) && (*n).kind <= ((NU8) 22))) goto LA3;
		result = copyString((*n).kindU.S3.strval);
		goto BeforeRet;
	}
	goto LA1;
	LA3: ;
	{
		localerror_194128((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3115));
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, processquotations_497682)(Tnode223809** n, NimStringDesc* op, Tnodeseq223803** quotes, Tnodeseq223803** ids) {
{	{
		if (!((*(*n)).kind == ((NU8) 30))) goto LA3;
		checksonslen_279260((*n), ((NI) 2));
		{
			Tnode223809* LOC7;
			NimStringDesc* examinedop;
			Tnode223809* LOC10;
			LOC7 = 0;
			LOC7 = HEX5BHEX5D_224244((*n), ((NI) 0));
			if (!((*LOC7).kind == ((NU8) 2))) goto LA8;
			LOC10 = 0;
			LOC10 = HEX5BHEX5D_224244((*n), ((NI) 0));
			examinedop = copyString((*(*LOC10).kindU.S5.ident).s);
			{
				Tnode223809* LOC15;
				NimStringDesc* LOC16;
				Tident196021* LOC17;
				if (!eqStrings(examinedop, op)) goto LA13;
				LOC15 = 0;
				LOC15 = HEX5BHEX5D_224244((*n), ((NI) 1));
				(*quotes) = (Tnodeseq223803*) incrSeqV2(&((*quotes))->Sup, sizeof(Tnode223809*));
				asgnRefNoCycle((void**) (&(*quotes)->data[(*quotes)->Sup.len]), LOC15);
				++(*quotes)->Sup.len;
				LOC16 = 0;
				LOC16 = nimIntToStr(((*quotes) ? (*quotes)->Sup.len : 0));
				LOC17 = 0;
				LOC17 = getident_196463(LOC16);
				unsureAsgnRef((void**) (&(*n)), newidentnode_225313(LOC17, (*(*n)).info));
				(*ids) = (Tnodeseq223803*) incrSeqV2(&((*ids))->Sup, sizeof(Tnode223809*));
				asgnRefNoCycle((void**) (&(*ids)->data[(*ids)->Sup.len]), (*n));
				++(*ids)->Sup.len;
				goto BeforeRet;
			}
			goto LA11;
			LA13: ;
			{
				NIM_BOOL LOC19;
				NimStringDesc* LOC22;
				Tident196021* 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_196463(LOC22);
				asgnRefNoCycle((void**) (&(*(*n)).kindU.S6.sons->data[((NI) 0)]), newidentnode_225313(LOC23, (*(*n)).info));
			}
			goto LA11;
			LA20: ;
			LA11: ;
		}
		LA8: ;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC25;
		Tnode223809* LOC29;
		NimStringDesc* LOC30;
		Tident196021* LOC31;
		LOC25 = 0;
		LOC25 = ((*(*n)).kind == ((NU8) 53));
		if (!(LOC25)) goto LA26;
		LOC25 = eqStrings(op, ((NimStringDesc*) &TMP3559));
		LA26: ;
		if (!LOC25) goto LA27;
		LOC29 = 0;
		LOC29 = HEX5BHEX5D_224244((*n), ((NI) 0));
		(*quotes) = (Tnodeseq223803*) incrSeqV2(&((*quotes))->Sup, sizeof(Tnode223809*));
		asgnRefNoCycle((void**) (&(*quotes)->data[(*quotes)->Sup.len]), LOC29);
		++(*quotes)->Sup.len;
		LOC30 = 0;
		LOC30 = nimIntToStr(((*quotes) ? (*quotes)->Sup.len : 0));
		LOC31 = 0;
		LOC31 = getident_196463(LOC30);
		unsureAsgnRef((void**) (&(*n)), newidentnode_225313(LOC31, (*(*n)).info));
		(*ids) = (Tnodeseq223803*) incrSeqV2(&((*ids))->Sup, sizeof(Tnode223809*));
		asgnRefNoCycle((void**) (&(*ids)->data[(*ids)->Sup.len]), (*n));
		++(*ids)->Sup.len;
		goto BeforeRet;
	}
	goto LA1;
	LA27: ;
	LA1: ;
	{
		NI i_497808;
		NI HEX3Atmp_497812;
		NI LOC33;
		NI res_497815;
		i_497808 = 0;
		HEX3Atmp_497812 = 0;
		LOC33 = 0;
		LOC33 = safelen_224126((*n));
		HEX3Atmp_497812 = (LOC33 - 1);
		res_497815 = ((NI) 0);
		{
			while (1) {
				if (!(res_497815 <= HEX3Atmp_497812)) goto LA35;
				i_497808 = res_497815;
				processquotations_497682(&(*(*n)).kindU.S6.sons->data[i_497808], op, quotes, ids);
				res_497815 += ((NI) 1);
			} LA35: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tsym223841*, newanonsym_497343)(NU8 kind, Tlineinfo188352 info, Tsym223841* owner) {
	Tsym223841* result;
	result = 0;
	result = newsym_224656(kind, idanon_196495, owner, info);
	(*result).flags = IL64(2147483648);
	return result;
}

N_NIMCALL(Tnode223809*, semtemplbodydirty_473496)(Templctx470056* c, Tnode223809* n) {
	Tnode223809* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym223841* s;
		s = qualifiedlookup_284864((*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_225338(s, (*n).info);
			}
			goto LA6;
			LA10: ;
			{
				NIM_BOOL LOC13;
				LOC13 = 0;
				LOC13 = contains_220829((*c).tobind, (*s).Sup.id);
				if (!LOC13) goto LA14;
				result = symchoice_469790((*c).c, n, s, ((NU8) 0));
			}
			goto LA6;
			LA14: ;
			LA6: ;
		}
		LA4: ;
	}
	break;
	case ((NU8) 55):
	{
		result = semtemplbodydirty_473496(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_469895((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC22;
			Tsym223841* s;
			LOC22 = 0;
			LOC22 = ((*n).kind == ((NU8) 45));
			if (LOC22) goto LA23;
			LOC22 = ((*n).kind == ((NU8) 53));
			LA23: ;
			if (!LOC22) goto LA24;
			s = qualifiedlookup_284864((*c).c, n, 0);
			{
				NIM_BOOL LOC28;
				LOC28 = 0;
				LOC28 = !((s == NIM_NIL));
				if (!(LOC28)) goto LA29;
				LOC28 = contains_220829((*c).tobind, (*s).Sup.id);
				LA29: ;
				if (!LOC28) goto LA30;
				result = symchoice_469790((*c).c, n, s, ((NU8) 0));
				goto BeforeRet;
			}
			LA30: ;
		}
		LA24: ;
		result = n;
		{
			NI i_473686;
			NI HEX3Atmp_473690;
			NI LOC33;
			NI res_473693;
			i_473686 = 0;
			HEX3Atmp_473690 = 0;
			LOC33 = 0;
			LOC33 = sonslen_226387(n);
			HEX3Atmp_473690 = (NI)(LOC33 - ((NI) 1));
			res_473693 = ((NI) 0);
			{
				while (1) {
					if (!(res_473693 <= HEX3Atmp_473690)) goto LA35;
					i_473686 = res_473693;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_473686]), semtemplbodydirty_473496(c, (*n).kindU.S6.sons->data[i_473686]));
					res_473693 += ((NI) 1);
				} LA35: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semtemplsymbol_470811)(Tcontext278023* c, Tnode223809* n, Tsym223841* s) {
	Tnode223809* 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) 16):
	case ((NU8) 6):
	case ((NU8) 18):
	case ((NU8) 17):
	{
		result = symchoice_469790(c, n, s, ((NU8) 1));
	}
	break;
	case ((NU8) 4):
	{
		result = newsymnodetypedesc_292736(s, (*n).info);
	}
	break;
	case ((NU8) 3):
	{
		result = n;
	}
	break;
	case ((NU8) 7):
	{
		{
			NIM_BOOL LOC8;
			LOC8 = 0;
			LOC8 = !(((*s).typ == NIM_NIL));
			if (!(LOC8)) goto LA9;
			LOC8 = !(((*(*s).typ).kind == ((NU8) 12)));
			LA9: ;
			if (!LOC8) goto LA10;
			result = newsymnodetypedesc_292736(s, (*n).info);
		}
		goto LA6;
		LA10: ;
		{
			result = n;
		}
		LA6: ;
	}
	break;
	default:
	{
		result = newsymnode_225338(s, (*n).info);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, openscope_470175)(Templctx470056* c) {
	Tscope223835* LOC1;
	LOC1 = 0;
	LOC1 = openscope_284091((*c).c);
}

N_NIMCALL(void, closescope_470182)(Templctx470056* c) {
	closescope_284111((*c).c);
}

N_NIMCALL(Tnode223809*, semtemplbodyscope_470189)(Templctx470056* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	openscope_470175(c);
	result = semtemplbody_470170(c, n);
	closescope_470182(c);
	return result;
}

N_NIMCALL(NU8, symbinding_469725)(Tnode223809* n) {
	NU8 result;
{	result = 0;
	{
		NI i_469741;
		NI HEX3Atmp_469766;
		NI LOC2;
		NI res_469769;
		i_469741 = 0;
		HEX3Atmp_469766 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_469766 = (NI)(LOC2 - ((NI) 1));
		res_469769 = ((NI) 0);
		{
			while (1) {
				Tnode223809* it;
				Tnode223809* key;
				if (!(res_469769 <= HEX3Atmp_469766)) goto LA4;
				i_469741 = res_469769;
				it = (*n).kindU.S6.sons->data[i_469741];
				{
					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_204390((*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_469769 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, onlyreplaceparams_470198)(Templctx470056* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = n;
	{
		Tsym223841* s;
		if (!((*n).kind == ((NU8) 2))) goto LA3;
		s = qualifiedlookup_284864((*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_225338(s, (*n).info);
			}
			LA13: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			NI i_470420;
			NI HEX3Atmp_470424;
			NI LOC17;
			NI res_470427;
			i_470420 = 0;
			HEX3Atmp_470424 = 0;
			LOC17 = 0;
			LOC17 = safelen_224126(n);
			HEX3Atmp_470424 = (LOC17 - 1);
			res_470427 = ((NI) 0);
			{
				while (1) {
					if (!(res_470427 <= HEX3Atmp_470424)) goto LA19;
					i_470420 = res_470427;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_470420]), onlyreplaceparams_470198(c, (*n).kindU.S6.sons->data[i_470420]));
					res_470427 += ((NI) 1);
				} LA19: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, getidentnode_470071)(Templctx470056* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	switch ((*n).kind) {
	case ((NU8) 31):
	{
		result = getidentnode_470071(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 43):
	{
		result = getidentnode_470071(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 2):
	{
		Tsym223841* s;
		result = n;
		s = qualifiedlookup_284864((*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_225338(s, (*n).info);
			}
			LA12: ;
		}
		LA6: ;
	}
	break;
	case ((NU8) 53):
	case ((NU8) 3):
	{
		result = n;
	}
	break;
	default:
	{
		illformedast_279240(n);
		result = n;
	}
	break;
	}
	return result;
}

static N_INLINE(NIM_BOOL, istemplparam_470118)(Templctx470056* c, Tnode223809* 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 &(1<<((((NU8) 31))&31)))!=0));
	LA6: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, replaceidentbysym_470043)(Tnode223809** n, Tnode223809* s) {
	switch ((*(*n)).kind) {
	case ((NU8) 31):
	{
		replaceidentbysym_470043(&(*(*n)).kindU.S6.sons->data[((NI) 1)], s);
	}
	break;
	case ((NU8) 43):
	{
		replaceidentbysym_470043(&(*(*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_279240((*n));
	}
	break;
	}
}

N_NIMCALL(Tsym223841*, newgensym_470443)(NU8 kind, Tnode223809* n, Templctx470056* c) {
	Tsym223841* result;
	Tident196021* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = considerquotedident_284010(n);
	result = newsym_224656(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_470475)(Templctx470056* c, Tnode223809** n, NU8 k) {
{	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		Tnode223809* x;
		Tnode223809* ident;
		LOC3 = 0;
		LOC3 = ((*(*n)).kind == ((NU8) 43));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = symbinding_469725((*(*n)).kindU.S6.sons->data[((NI) 1)]);
		LOC3 = (LOC5 == ((NU8) 2));
		LA4: ;
		if (!LOC3) goto LA6;
		x = HEX5BHEX5D_224244((*n), ((NI) 0));
		{
			while (1) {
				switch ((*x).kind) {
				case ((NU8) 31):
				{
					x = HEX5BHEX5D_224244(x, ((NI) 1));
				}
				break;
				case ((NU8) 43):
				{
					x = HEX5BHEX5D_224244(x, ((NI) 0));
				}
				break;
				case ((NU8) 2):
				{
					goto LA8;
				}
				break;
				case ((NU8) 53):
				{
					unsureAsgnRef((void**) (&(*n)), onlyreplaceparams_470198(c, (*n)));
					goto BeforeRet;
				}
				break;
				default:
				{
					illformedast_279240(x);
				}
				break;
				}
			}
		} LA8: ;
		ident = getidentnode_470071(c, x);
		{
			NIM_BOOL LOC17;
			LOC17 = 0;
			LOC17 = istemplparam_470118((&(*c)), ident);
			if (!!(LOC17)) goto LA18;
			incl_220856((&(*c).toinject), (*(*x).kindU.S5.ident).Sup.id);
		}
		goto LA15;
		LA18: ;
		{
			replaceidentbysym_470043(n, ident);
		}
		LA15: ;
	}
	goto LA1;
	LA6: ;
	{
		Tnode223809* ident;
		ident = getidentnode_470071(c, (*n));
		{
			NIM_BOOL LOC24;
			Tsym223841* s;
			Tident196021* LOC27;
			LOC24 = 0;
			LOC24 = istemplparam_470118((&(*c)), ident);
			if (!!(LOC24)) goto LA25;
			LOC27 = 0;
			LOC27 = considerquotedident_284010(ident);
			s = localsearchinscope_284194((*c).c, LOC27);
			{
				NIM_BOOL LOC30;
				NIM_BOOL LOC31;
				Tnode223809* 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 &(1<<((((NU8) 31))&31)))!=0);
				LA33: ;
				if (!LOC30) goto LA34;
				LOC36 = 0;
				LOC36 = newsymnode_225338(s, (*(*n)).info);
				replaceidentbysym_470043(n, LOC36);
			}
			goto LA28;
			LA34: ;
			{
				Tsym223841* local;
				Tnode223809* LOC38;
				local = newgensym_470443(k, ident, c);
				addprelimdecl_284619((*c).c, local);
				LOC38 = 0;
				LOC38 = newsymnode_225338(local, (*(*n)).info);
				replaceidentbysym_470043(n, LOC38);
			}
			LA28: ;
		}
		goto LA22;
		LA25: ;
		{
			replaceidentbysym_470043(n, ident);
		}
		LA22: ;
	}
	LA1: ;
	}BeforeRet: ;
}

N_NIMCALL(void, semtemplsomedecl_471238)(Templctx470056* c, Tnode223809* n, NU8 symkind, NI start) {
	{
		NI i_471257;
		NI HEX3Atmp_471317;
		NI LOC2;
		NI res_471320;
		i_471257 = 0;
		HEX3Atmp_471317 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_471317 = (NI)(LOC2 - ((NI) 1));
		res_471320 = start;
		{
			while (1) {
				if (!(res_471320 <= HEX3Atmp_471317)) goto LA4;
				i_471257 = res_471320;
				{
					Tnode223809* a;
					NI L;
					a = (*n).kindU.S6.sons->data[i_471257];
					{
						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_279240(a);
					}
					LA14: ;
					checkminsonslen_279270(a, ((NI) 3));
					L = sonslen_226387(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semtemplbody_470170(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbody_470170(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					{
						NI j_471304;
						NI HEX3Atmp_471310;
						NI res_471313;
						j_471304 = 0;
						HEX3Atmp_471310 = 0;
						HEX3Atmp_471310 = (NI)(L - ((NI) 3));
						res_471313 = ((NI) 0);
						{
							while (1) {
								if (!(res_471313 <= HEX3Atmp_471310)) goto LA18;
								j_471304 = res_471313;
								addlocaldecl_470475(c, &(*a).kindU.S6.sons->data[j_471304], symkind);
								res_471313 += ((NI) 1);
							} LA18: ;
						}
					}
				} LA5: ;
				res_471320 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode223809*, semroutineintemplname_470854)(Templctx470056* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = n;
	{
		Tsym223841* s;
		if (!((*n).kind == ((NU8) 2))) goto LA3;
		s = qualifiedlookup_284864((*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 &(1<<((((NU8) 31))&31)))!=0);
				LA14: ;
				LOC11 = LOC13;
				LA12: ;
				if (!LOC11) goto LA15;
				(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				result = newsymnode_225338(s, (*n).info);
			}
			LA15: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			NI i_471013;
			NI HEX3Atmp_471017;
			NI LOC19;
			NI res_471020;
			i_471013 = 0;
			HEX3Atmp_471017 = 0;
			LOC19 = 0;
			LOC19 = safelen_224126(n);
			HEX3Atmp_471017 = (NI)(LOC19 - ((NI) 1));
			res_471020 = ((NI) 0);
			{
				while (1) {
					if (!(res_471020 <= HEX3Atmp_471017)) goto LA21;
					i_471013 = res_471020;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_471013]), semroutineintemplname_470854(c, (*n).kindU.S6.sons->data[i_471013]));
					res_471020 += ((NI) 1);
				} LA21: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, semroutineintemplbody_471036)(Templctx470056* c, Tnode223809* n, NU8 k) {
	Tnode223809* result;
	result = 0;
	result = n;
	checksonslen_279260(n, ((NI) 7));
	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		Tnode223809* ident;
		LOC3 = 0;
		LOC3 = !(((*n).kind == ((NU8) 51) || (*n).kind == ((NU8) 52)));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = symbinding_469725((*n).kindU.S6.sons->data[((NI) 4)]);
		LOC3 = (LOC5 == ((NU8) 1));
		LA4: ;
		if (!LOC3) goto LA6;
		ident = getidentnode_470071(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NIM_BOOL LOC10;
			Tsym223841* s;
			LOC10 = 0;
			LOC10 = istemplparam_470118((&(*c)), ident);
			if (!!(LOC10)) goto LA11;
			s = newgensym_470443(k, ident, c);
			asgnRefNoCycle((void**) (&(*s).ast), n);
			addprelimdecl_284619((*c).c, s);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_225338(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_470854(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	LA1: ;
	openscope_470175(c);
	{
		NI i_471216;
		NI res_471222;
		i_471216 = 0;
		res_471222 = ((NI) 1);
		{
			while (1) {
				if (!(res_471222 <= ((NI) 6))) goto LA17;
				i_471216 = res_471222;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_471216]), semtemplbody_470170(c, (*n).kindU.S6.sons->data[i_471216]));
				res_471222 += ((NI) 1);
			} LA17: ;
		}
	}
	closescope_470182(c);
	return result;
}

N_NIMCALL(Tnode223809*, semtemplbodysons_471352)(Templctx470056* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = n;
	{
		NI i_471377;
		NI HEX3Atmp_471381;
		NI LOC2;
		NI res_471384;
		i_471377 = 0;
		HEX3Atmp_471381 = 0;
		LOC2 = 0;
		LOC2 = len_224098(n);
		HEX3Atmp_471381 = (LOC2 - 1);
		res_471384 = ((NI) 0);
		{
			while (1) {
				if (!(res_471384 <= HEX3Atmp_471381)) goto LA4;
				i_471377 = res_471384;
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_471377]), semtemplbody_470170(c, (*n).kindU.S6.sons->data[i_471377]));
				res_471384 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

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

N_NIMCALL(Tnode223809*, semtemplbody_470170)(Templctx470056* c, Tnode223809* n) {
	Tnode223809* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym223841* s;
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = contains_220829((*c).toinject, (*(*n).kindU.S5.ident).Sup.id);
			if (!LOC4) goto LA5;
			result = n;
			goto BeforeRet;
		}
		LA5: ;
		s = qualifiedlookup_284864((*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_225338(s, (*n).info);
			}
			goto LA11;
			LA15: ;
			{
				NIM_BOOL LOC18;
				LOC18 = 0;
				LOC18 = contains_220829((*c).tobind, (*s).Sup.id);
				if (!LOC18) goto LA19;
				result = symchoice_469790((*c).c, n, s, ((NU8) 0));
			}
			goto LA11;
			LA19: ;
			{
				NIM_BOOL LOC22;
				LOC22 = 0;
				LOC22 = contains_220829((*c).tomixin, (*(*s).name).Sup.id);
				if (!LOC22) goto LA23;
				result = symchoice_469790((*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 &(1<<((((NU8) 31))&31)))!=0);
				LA27: ;
				if (!LOC26) goto LA28;
				(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				result = newsymnode_225338(s, (*n).info);
			}
			goto LA11;
			LA28: ;
			{
				result = semtemplsymbol_470811((*c).c, n, s);
			}
			LA11: ;
		}
		LA9: ;
	}
	break;
	case ((NU8) 55):
	{
		result = semtemplbody_470170(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_469895((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 123):
	{
		result = semmixinstmt_469995((*c).c, n, (&(*c).tomixin));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 92):
	{
		{
			NI i_472216;
			NI HEX3Atmp_473204;
			NI LOC37;
			NI res_473207;
			i_472216 = 0;
			HEX3Atmp_473204 = 0;
			LOC37 = 0;
			LOC37 = sonslen_226387(n);
			HEX3Atmp_473204 = (NI)(LOC37 - ((NI) 1));
			res_473207 = ((NI) 0);
			{
				while (1) {
					Tnode223809* it;
					if (!(res_473207 <= HEX3Atmp_473204)) goto LA39;
					i_472216 = res_473207;
					it = (*n).kindU.S6.sons->data[i_472216];
					{
						NI LOC42;
						LOC42 = 0;
						LOC42 = len_224098(it);
						if (!(LOC42 == ((NI) 2))) goto LA43;
						openscope_470175(c);
						asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), semtemplbody_470170(c, (*it).kindU.S6.sons->data[((NI) 0)]));
						asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), semtemplbody_470170(c, (*it).kindU.S6.sons->data[((NI) 1)]));
						closescope_470182(c);
					}
					goto LA40;
					LA43: ;
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_472216]), semtemplbodyscope_470189(c, it));
					}
					LA40: ;
					res_473207 += ((NI) 1);
				} LA39: ;
			}
		}
	}
	break;
	case ((NU8) 96):
	{
		openscope_470175(c);
		{
			NI i_472616;
			NI HEX3Atmp_473212;
			NI LOC48;
			NI res_473215;
			i_472616 = 0;
			HEX3Atmp_473212 = 0;
			LOC48 = 0;
			LOC48 = sonslen_226387(n);
			HEX3Atmp_473212 = (NI)(LOC48 - ((NI) 1));
			res_473215 = ((NI) 0);
			{
				while (1) {
					if (!(res_473215 <= HEX3Atmp_473212)) goto LA50;
					i_472616 = res_473215;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_472616]), semtemplbody_470170(c, (*n).kindU.S6.sons->data[i_472616]));
					res_473215 += ((NI) 1);
				} LA50: ;
			}
		}
		closescope_470182(c);
	}
	break;
	case ((NU8) 97):
	{
		openscope_470175(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbody_470170(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_472633;
			NI HEX3Atmp_473228;
			NI LOC53;
			NI res_473231;
			i_472633 = 0;
			HEX3Atmp_473228 = 0;
			LOC53 = 0;
			LOC53 = sonslen_226387(n);
			HEX3Atmp_473228 = (NI)(LOC53 - ((NI) 1));
			res_473231 = ((NI) 1);
			{
				while (1) {
					Tnode223809* a;
					NI L;
					if (!(res_473231 <= HEX3Atmp_473228)) goto LA55;
					i_472633 = res_473231;
					a = (*n).kindU.S6.sons->data[i_472633];
					checkminsonslen_279270(a, ((NI) 1));
					L = sonslen_226387(a);
					{
						NI j_472649;
						NI HEX3Atmp_473221;
						NI res_473224;
						j_472649 = 0;
						HEX3Atmp_473221 = 0;
						HEX3Atmp_473221 = (NI)(L - ((NI) 2));
						res_473224 = ((NI) 0);
						{
							while (1) {
								if (!(res_473224 <= HEX3Atmp_473221)) goto LA58;
								j_472649 = res_473224;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_472649]), semtemplbody_470170(c, (*a).kindU.S6.sons->data[j_472649]));
								res_473224 += ((NI) 1);
							} LA58: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbodyscope_470189(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					res_473231 += ((NI) 1);
				} LA55: ;
			}
		}
		closescope_470182(c);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		NI L;
		L = sonslen_226387(n);
		openscope_470175(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semtemplbody_470170(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]));
		{
			NI i_472669;
			NI HEX3Atmp_473236;
			NI res_473239;
			i_472669 = 0;
			HEX3Atmp_473236 = 0;
			HEX3Atmp_473236 = (NI)(L - ((NI) 3));
			res_473239 = ((NI) 0);
			{
				while (1) {
					if (!(res_473239 <= HEX3Atmp_473236)) goto LA62;
					i_472669 = res_473239;
					addlocaldecl_470475(c, &(*n).kindU.S6.sons->data[i_472669], ((NU8) 21));
					res_473239 += ((NI) 1);
				} LA62: ;
			}
		}
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbody_470170(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
		closescope_470182(c);
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	case ((NU8) 129):
	{
		checksonslen_279260(n, ((NI) 2));
		openscope_470175(c);
		{
			Tsym223841* s;
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA66;
			s = newgensym_470443(((NU8) 22), (*n).kindU.S6.sons->data[((NI) 0)], c);
			addprelimdecl_284619((*c).c, s);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_225338(s, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
		}
		LA66: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semtemplbody_470170(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		closescope_470182(c);
	}
	break;
	case ((NU8) 106):
	{
		checkminsonslen_279270(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbodyscope_470189(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_472819;
			NI HEX3Atmp_473252;
			NI LOC70;
			NI res_473255;
			i_472819 = 0;
			HEX3Atmp_473252 = 0;
			LOC70 = 0;
			LOC70 = sonslen_226387(n);
			HEX3Atmp_473252 = (NI)(LOC70 - ((NI) 1));
			res_473255 = ((NI) 1);
			{
				while (1) {
					Tnode223809* a;
					NI L;
					if (!(res_473255 <= HEX3Atmp_473252)) goto LA72;
					i_472819 = res_473255;
					a = (*n).kindU.S6.sons->data[i_472819];
					checkminsonslen_279270(a, ((NI) 1));
					L = sonslen_226387(a);
					{
						NI j_472835;
						NI HEX3Atmp_473245;
						NI res_473248;
						j_472835 = 0;
						HEX3Atmp_473245 = 0;
						HEX3Atmp_473245 = (NI)(L - ((NI) 2));
						res_473248 = ((NI) 0);
						{
							while (1) {
								if (!(res_473248 <= HEX3Atmp_473245)) goto LA75;
								j_472835 = res_473248;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_472835]), semtemplbody_470170(c, (*a).kindU.S6.sons->data[j_472835]));
								res_473248 += ((NI) 1);
							} LA75: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbodyscope_470189(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					res_473255 += ((NI) 1);
				} LA72: ;
			}
		}
	}
	break;
	case ((NU8) 99):
	{
		semtemplsomedecl_471238(c, n, ((NU8) 8), ((NI) 0));
	}
	break;
	case ((NU8) 100):
	{
		semtemplsomedecl_471238(c, n, ((NU8) 9), ((NI) 0));
	}
	break;
	case ((NU8) 76):
	{
		checkminsonslen_279270(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbody_470170(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		semtemplsomedecl_471238(c, n, ((NU8) 3), ((NI) 1));
	}
	break;
	case ((NU8) 101):
	{
		{
			NI i_472854;
			NI HEX3Atmp_473261;
			NI LOC81;
			NI res_473264;
			i_472854 = 0;
			HEX3Atmp_473261 = 0;
			LOC81 = 0;
			LOC81 = sonslen_226387(n);
			HEX3Atmp_473261 = (NI)(LOC81 - ((NI) 1));
			res_473264 = ((NI) 0);
			{
				while (1) {
					if (!(res_473264 <= HEX3Atmp_473261)) goto LA83;
					i_472854 = res_473264;
					{
						Tnode223809* a;
						a = (*n).kindU.S6.sons->data[i_472854];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA87;
							goto LA84;
						}
						LA87: ;
						{
							if (!!(((*a).kind == ((NU8) 102)))) goto LA91;
							illformedast_279240(a);
						}
						LA91: ;
						checksonslen_279260(a, ((NI) 3));
						addlocaldecl_470475(c, &(*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 10));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semtemplbody_470170(c, (*a).kindU.S6.sons->data[((NI) 1)]));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_470170(c, (*a).kindU.S6.sons->data[((NI) 2)]));
					} LA84: ;
					res_473264 += ((NI) 1);
				} LA83: ;
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		{
			NI i_472893;
			NI HEX3Atmp_473270;
			NI LOC95;
			NI res_473273;
			i_472893 = 0;
			HEX3Atmp_473270 = 0;
			LOC95 = 0;
			LOC95 = sonslen_226387(n);
			HEX3Atmp_473270 = (NI)(LOC95 - ((NI) 1));
			res_473273 = ((NI) 0);
			{
				while (1) {
					if (!(res_473273 <= HEX3Atmp_473270)) goto LA97;
					i_472893 = res_473273;
					{
						Tnode223809* a;
						a = (*n).kindU.S6.sons->data[i_472893];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA101;
							goto LA98;
						}
						LA101: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA105;
							illformedast_279240(a);
						}
						LA105: ;
						checksonslen_279260(a, ((NI) 3));
						addlocaldecl_470475(c, &(*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 7));
					} LA98: ;
					res_473273 += ((NI) 1);
				} LA97: ;
			}
		}
		{
			NI i_472928;
			NI HEX3Atmp_473279;
			NI LOC108;
			NI res_473282;
			i_472928 = 0;
			HEX3Atmp_473279 = 0;
			LOC108 = 0;
			LOC108 = sonslen_226387(n);
			HEX3Atmp_473279 = (NI)(LOC108 - ((NI) 1));
			res_473282 = ((NI) 0);
			{
				while (1) {
					if (!(res_473282 <= HEX3Atmp_473279)) goto LA110;
					i_472928 = res_473282;
					{
						Tnode223809* a;
						a = (*n).kindU.S6.sons->data[i_472928];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA114;
							goto LA111;
						}
						LA114: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA118;
							illformedast_279240(a);
						}
						LA118: ;
						checksonslen_279260(a, ((NI) 3));
						{
							if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA122;
							openscope_470175(c);
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semtemplbody_470170(c, (*a).kindU.S6.sons->data[((NI) 1)]));
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_470170(c, (*a).kindU.S6.sons->data[((NI) 2)]));
							closescope_470182(c);
						}
						goto LA120;
						LA122: ;
						{
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_470170(c, (*a).kindU.S6.sons->data[((NI) 2)]));
						}
						LA120: ;
					} LA111: ;
					res_473282 += ((NI) 1);
				} LA110: ;
			}
		}
	}
	break;
	case ((NU8) 79):
	case ((NU8) 51):
	case ((NU8) 52):
	{
		result = semroutineintemplbody_471036(c, n, ((NU8) 12));
	}
	break;
	case ((NU8) 80):
	{
		result = semroutineintemplbody_471036(c, n, ((NU8) 13));
	}
	break;
	case ((NU8) 84):
	{
		NU8 kind;
		{
			Tnode223809* LOC130;
			NIM_BOOL LOC131;
			LOC130 = 0;
			LOC130 = HEX5BHEX5D_224244(n, ((NI) 4));
			LOC131 = 0;
			LOC131 = haspragma_298952(LOC130, ((NU16) 139));
			if (!LOC131) goto LA132;
			kind = ((NU8) 15);
		}
		goto LA128;
		LA132: ;
		{
			kind = ((NU8) 14);
		}
		LA128: ;
		result = semroutineintemplbody_471036(c, n, kind);
	}
	break;
	case ((NU8) 83):
	{
		result = semroutineintemplbody_471036(c, n, ((NU8) 18));
	}
	break;
	case ((NU8) 82):
	{
		result = semroutineintemplbody_471036(c, n, ((NU8) 17));
	}
	break;
	case ((NU8) 81):
	{
		result = semroutineintemplbody_471036(c, n, ((NU8) 16));
	}
	break;
	case ((NU8) 43):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), semtemplbody_470170(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	break;
	case ((NU8) 31):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semtemplbody_470170(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	}
	break;
	case ((NU8) 90):
	{
		result = onlyreplaceparams_470198(c, n);
	}
	break;
	case ((NU8) 42):
	{
		Tident196021* LOC142;
		Tnode223809* LOC143;
		Tnode223809* n0;
		Tnode223809* old_473003;
		result = newnodei_225351(((NU8) 27), (*n).info);
		LOC142 = 0;
		LOC142 = getident_196463(((NimStringDesc*) &TMP3117));
		LOC143 = 0;
		LOC143 = newidentnode_225313(LOC142, (*n).info);
		add_224165(result, LOC143);
		{
			NI i_472998;
			Slice90369 HEX3Atmp_473287;
			NI LOC145;
			i_472998 = 0;
			memset((void*)(&HEX3Atmp_473287), 0, sizeof(HEX3Atmp_473287));
			LOC145 = 0;
			LOC145 = len_224098(n);
			HEX3Atmp_473287 = HEX2EHEX2E_105290(((NI) 0), (LOC145 - 1));
			{
				NI x_473291;
				NI HEX3Atmp_473293;
				NI HEX3Atmp_473295;
				NI res_473297;
				x_473291 = 0;
				HEX3Atmp_473293 = 0;
				HEX3Atmp_473295 = 0;
				HEX3Atmp_473293 = HEX3Atmp_473287.a;
				HEX3Atmp_473295 = HEX3Atmp_473287.b;
				res_473297 = HEX3Atmp_473293;
				{
					while (1) {
						Tnode223809* LOC149;
						if (!(res_473297 <= HEX3Atmp_473295)) goto LA148;
						x_473291 = res_473297;
						i_472998 = x_473291;
						LOC149 = 0;
						LOC149 = HEX5BHEX5D_224244(n, i_472998);
						add_224165(result, LOC149);
						res_473297 += ((NI) 1);
					} LA148: ;
				}
			}
		}
		n0 = semtemplbody_470170(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		old_473003 = (*c).bracketexpr;
		unsureAsgnRef((void**) (&(*c).bracketexpr), n0);
		result = semtemplbodysons_471352(c, result);
		unsureAsgnRef((void**) (&(*c).bracketexpr), old_473003);
	}
	break;
	case ((NU8) 40):
	{
		Tident196021* LOC151;
		Tnode223809* LOC152;
		result = newnodei_225351(((NU8) 27), (*n).info);
		LOC151 = 0;
		LOC151 = getident_196463(((NimStringDesc*) &TMP3139));
		LOC152 = 0;
		LOC152 = newidentnode_225313(LOC151, (*n).info);
		add_224165(result, LOC152);
		{
			NI i_473032;
			Slice90369 HEX3Atmp_473302;
			NI LOC154;
			i_473032 = 0;
			memset((void*)(&HEX3Atmp_473302), 0, sizeof(HEX3Atmp_473302));
			LOC154 = 0;
			LOC154 = len_224098(n);
			HEX3Atmp_473302 = HEX2EHEX2E_105290(((NI) 0), (LOC154 - 1));
			{
				NI x_473306;
				NI HEX3Atmp_473308;
				NI HEX3Atmp_473310;
				NI res_473312;
				x_473306 = 0;
				HEX3Atmp_473308 = 0;
				HEX3Atmp_473310 = 0;
				HEX3Atmp_473308 = HEX3Atmp_473302.a;
				HEX3Atmp_473310 = HEX3Atmp_473302.b;
				res_473312 = HEX3Atmp_473308;
				{
					while (1) {
						Tnode223809* LOC158;
						if (!(res_473312 <= HEX3Atmp_473310)) goto LA157;
						x_473306 = res_473312;
						i_473032 = x_473306;
						LOC158 = 0;
						LOC158 = HEX5BHEX5D_224244(n, i_473032);
						add_224165(result, LOC158);
						res_473312 += ((NI) 1);
					} LA157: ;
				}
			}
		}
		result = semtemplbodysons_471352(c, result);
	}
	break;
	case ((NU8) 73):
	case ((NU8) 74):
	{
		Tnode223809* a;
		Tnode223809* b;
		NU8 k;
		checksonslen_279260(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):
		{
			Tident196021* LOC161;
			Tnode223809* LOC162;
			Tnode223809* a0;
			Tnode223809* old_473073;
			result = newnodei_225351(((NU8) 27), (*n).info);
			LOC161 = 0;
			LOC161 = getident_196463(((NimStringDesc*) &TMP3141));
			LOC162 = 0;
			LOC162 = newidentnode_225313(LOC161, (*n).info);
			add_224165(result, LOC162);
			{
				NI i_473067;
				Slice90369 HEX3Atmp_473317;
				NI LOC164;
				i_473067 = 0;
				memset((void*)(&HEX3Atmp_473317), 0, sizeof(HEX3Atmp_473317));
				LOC164 = 0;
				LOC164 = len_224098(a);
				HEX3Atmp_473317 = HEX2EHEX2E_105290(((NI) 0), (LOC164 - 1));
				{
					NI x_473321;
					NI HEX3Atmp_473323;
					NI HEX3Atmp_473325;
					NI res_473327;
					x_473321 = 0;
					HEX3Atmp_473323 = 0;
					HEX3Atmp_473325 = 0;
					HEX3Atmp_473323 = HEX3Atmp_473317.a;
					HEX3Atmp_473325 = HEX3Atmp_473317.b;
					res_473327 = HEX3Atmp_473323;
					{
						while (1) {
							Tnode223809* LOC168;
							if (!(res_473327 <= HEX3Atmp_473325)) goto LA167;
							x_473321 = res_473327;
							i_473067 = x_473321;
							LOC168 = 0;
							LOC168 = HEX5BHEX5D_224244(a, i_473067);
							add_224165(result, LOC168);
							res_473327 += ((NI) 1);
						} LA167: ;
					}
				}
			}
			add_224165(result, b);
			a0 = semtemplbody_470170(c, (*a).kindU.S6.sons->data[((NI) 0)]);
			old_473073 = (*c).bracketexpr;
			unsureAsgnRef((void**) (&(*c).bracketexpr), a0);
			result = semtemplbodysons_471352(c, result);
			unsureAsgnRef((void**) (&(*c).bracketexpr), old_473073);
		}
		break;
		case ((NU8) 40):
		{
			Tident196021* LOC170;
			Tnode223809* LOC171;
			result = newnodei_225351(((NU8) 27), (*n).info);
			LOC170 = 0;
			LOC170 = getident_196463(((NimStringDesc*) &TMP3140));
			LOC171 = 0;
			LOC171 = newidentnode_225313(LOC170, (*n).info);
			add_224165(result, LOC171);
			{
				NI i_473102;
				Slice90369 HEX3Atmp_473332;
				NI LOC173;
				i_473102 = 0;
				memset((void*)(&HEX3Atmp_473332), 0, sizeof(HEX3Atmp_473332));
				LOC173 = 0;
				LOC173 = len_224098(a);
				HEX3Atmp_473332 = HEX2EHEX2E_105290(((NI) 0), (LOC173 - 1));
				{
					NI x_473336;
					NI HEX3Atmp_473338;
					NI HEX3Atmp_473340;
					NI res_473342;
					x_473336 = 0;
					HEX3Atmp_473338 = 0;
					HEX3Atmp_473340 = 0;
					HEX3Atmp_473338 = HEX3Atmp_473332.a;
					HEX3Atmp_473340 = HEX3Atmp_473332.b;
					res_473342 = HEX3Atmp_473338;
					{
						while (1) {
							Tnode223809* LOC177;
							if (!(res_473342 <= HEX3Atmp_473340)) goto LA176;
							x_473336 = res_473342;
							i_473102 = x_473336;
							LOC177 = 0;
							LOC177 = HEX5BHEX5D_224244(a, i_473102);
							add_224165(result, LOC177);
							res_473342 += ((NI) 1);
						} LA176: ;
					}
				}
			}
			add_224165(result, b);
			result = semtemplbodysons_471352(c, result);
		}
		break;
		default:
		{
			result = semtemplbodysons_471352(c, n);
		}
		break;
		}
	}
	break;
	case ((NU8) 26) ... ((NU8) 30):
	case ((NU8) 32):
	{
		result = semtemplbodysons_471352(c, n);
		{
			NIM_BOOL LOC182;
			NIM_BOOL LOC183;
			NI LOC185;
			LOC182 = 0;
			LOC183 = 0;
			LOC183 = !(((*c).bracketexpr == NIM_NIL));
			if (!(LOC183)) goto LA184;
			LOC185 = 0;
			LOC185 = len_224098(n);
			LOC183 = (LOC185 == ((NI) 2));
			LA184: ;
			LOC182 = LOC183;
			if (!(LOC182)) goto LA186;
			LOC182 = oprisroof_471639((*n).kindU.S6.sons->data[((NI) 0)]);
			LA186: ;
			if (!LOC182) goto LA187;
			add_224165(result, (*c).bracketexpr);
		}
		LA187: ;
	}
	break;
	case ((NU8) 45):
	case ((NU8) 53):
	{
		Tsym223841* s;
		s = qualifiedlookup_284864((*c).c, n, 0);
		{
			if (!!((s == NIM_NIL))) goto LA192;
			{
				NIM_BOOL LOC196;
				NIM_BOOL LOC197;
				NIM_BOOL LOC198;
				NI LOC202;
				LOC196 = 0;
				LOC197 = 0;
				LOC198 = 0;
				LOC198 = ((*s).owner == (*c).owner);
				if (!(LOC198)) goto LA199;
				LOC198 = ((*s).kind == ((NU8) 3));
				LA199: ;
				LOC197 = LOC198;
				if (!(LOC197)) goto LA200;
				LOC197 = ((*n).kind == ((NU8) 53));
				LA200: ;
				LOC196 = LOC197;
				if (!(LOC196)) goto LA201;
				LOC202 = 0;
				LOC202 = len_224098(n);
				LOC196 = (LOC202 == ((NI) 1));
				LA201: ;
				if (!LOC196) goto LA203;
				(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				result = newsymnode_225338(s, (*n).info);
				goto BeforeRet;
			}
			goto LA194;
			LA203: ;
			{
				NIM_BOOL LOC206;
				LOC206 = 0;
				LOC206 = contains_220829((*c).tobind, (*s).Sup.id);
				if (!LOC206) goto LA207;
				result = symchoice_469790((*c).c, n, s, ((NU8) 0));
				goto BeforeRet;
			}
			goto LA194;
			LA207: ;
			{
				NIM_BOOL LOC210;
				LOC210 = 0;
				LOC210 = contains_220829((*c).tomixin, (*(*s).name).Sup.id);
				if (!LOC210) goto LA211;
				result = symchoice_469790((*c).c, n, s, ((NU8) 2));
				goto BeforeRet;
			}
			goto LA194;
			LA211: ;
			{
				result = symchoice_469790((*c).c, n, s, ((NU8) 1));
				goto BeforeRet;
			}
			LA194: ;
		}
		LA192: ;
		result = semtemplbodysons_471352(c, n);
	}
	break;
	default:
	{
		result = semtemplbodysons_471352(c, n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semtemplatedef_473709)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tsym223841* s;
	Tscope223835* LOC7;
	Tnode223809* gp;
	Templctx470056 ctx;
	Tsym223841* proto;
	result = 0;
	s = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_279280(c);
		if (!LOC3) goto LA4;
		s = semidentvis_455962(c, ((NU8) 18), (*n).kindU.S6.sons->data[((NI) 0)], 2);
		(*s).flags |= ((NU32)1)<<((((NU8) 3))%(sizeof(NU32)*8));
	}
	goto LA1;
	LA4: ;
	{
		s = semidentvis_455962(c, ((NU8) 18), (*n).kindU.S6.sons->data[((NI) 0)], 0);
	}
	LA1: ;
	pushowner_278263(s);
	LOC7 = 0;
	LOC7 = openscope_284091(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_225338(s, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA10;
		pragma_295082(c, s, (*n).kindU.S6.sons->data[((NI) 4)], TMP3563);
	}
	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_469425(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA12;
	LA14: ;
	{
		gp = newnodei_225351(((NU8) 75), (*n).info);
	}
	LA12: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA19;
		semparamlist_455284(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NI i_473851;
			NI HEX3Atmp_474050;
			NI LOC22;
			NI res_474053;
			i_473851 = 0;
			HEX3Atmp_474050 = 0;
			LOC22 = 0;
			LOC22 = len_224098((*(*s).typ).n);
			HEX3Atmp_474050 = (NI)(LOC22 - ((NI) 1));
			res_474053 = ((NI) 1);
			{
				while (1) {
					if (!(res_474053 <= HEX3Atmp_474050)) goto LA24;
					i_473851 = res_474053;
					(*(*(*(*(*s).typ).n).kindU.S6.sons->data[i_473851]).kindU.S4.sym).flags &= ~(((NU32)1) << ((((NU8) 31)) % (sizeof(NU32)*8)));
					res_474053 += ((NI) 1);
				} LA24: ;
			}
		}
		{
			NI LOC27;
			LOC27 = 0;
			LOC27 = sonslen_226387(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_278221(((NU8) 7), c));
			asgnRefNoCycle((void**) (&(*(*(*s).typ).n).kindU.S6.sons->data[((NI) 0)]), newnodeit_225807(((NU8) 4), (*n).info, (*(*s).typ).sons->data[((NI) 0)]));
		}
		LA36: ;
	}
	goto LA17;
	LA19: ;
	{
		Ttype223847* LOC39;
		Tnode223809* LOC40;
		asgnRefNoCycle((void**) (&(*s).typ), newtypes_278221(((NU8) 25), c));
		asgnRefNoCycle((void**) (&(*(*s).typ).n), newnodei_225351(((NU8) 76), (*n).info));
		LOC39 = 0;
		LOC39 = newtypes_278221(((NU8) 7), c);
		rawaddson_227498((*s).typ, LOC39);
		LOC40 = 0;
		LOC40 = newnodeit_225807(((NU8) 4), (*n).info, (*(*s).typ).sons->data[((NI) 0)]);
		addson_225819((*(*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_471348(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	}
	LA43: ;
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_220927((&ctx.tobind));
	initintset_220927((&ctx.tomixin));
	initintset_220927((&ctx.toinject));
	ctx.c = c;
	ctx.owner = s;
	{
		if (!(((*s).flags &(1<<((((NU8) 9))&31)))!=0)) goto LA47;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semtemplbodydirty_473496((&ctx), (*n).kindU.S6.sons->data[((NI) 6)]));
	}
	goto LA45;
	LA47: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semtemplbody_470170((&ctx), (*n).kindU.S6.sons->data[((NI) 6)]));
	}
	LA45: ;
	closescope_284111(c);
	popowner_278269();
	asgnRefNoCycle((void**) (&(*s).ast), n);
	result = n;
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1))) goto LA52;
		localerror_194128((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA52: ;
	proto = searchforproc_294278(c, (*c).currentscope, s);
	{
		if (!(proto == NIM_NIL)) goto LA56;
		addinterfaceoverloadablesymat_284746(c, (*c).currentscope, s);
	}
	goto LA54;
	LA56: ;
	{
		symtabreplace_235415((&(*(*c).currentscope).symbols), proto, s);
	}
	LA54: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA61;
		(*c).patterns = (Tsymseq223811*) incrSeqV2(&((*c).patterns)->Sup, sizeof(Tsym223841*));
		asgnRefNoCycle((void**) (&(*c).patterns->data[(*c).patterns->Sup.len]), s);
		++(*c).patterns->Sup.len;
	}
	LA61: ;
	return result;
}

N_NIMCALL(Tsym223841*, getmagicsym_497328)(NU8 magic) {
	Tsym223841* result;
	Tident196021* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_196463(reprEnum(magic, (&NTI223534)));
	result = newsym_224656(((NU8) 12), LOC1, systemmodule_272019, gcodegenlineinfo_189361);
	(*result).magic = magic;
	return result;
}

N_NIMCALL(Tnode223809*, semquoteast_455334)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* doblk;
	NI LOC10;
	NimStringDesc* op;
	Tnodeseq223803* quotes;
	Tnodeseq223803* ids;
	Tsym223841* LOC28;
	Tsym223841* LOC29;
	Tnode223809* tmpl;
	Tnodeseq223803* LOC41;
	TY279106 LOC42;
	Tsym223841* LOC43;
	result = 0;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NI LOC6;
		NimStringDesc* LOC9;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = len_224098(n);
		LOC3 = (LOC4 == ((NI) 2));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = len_224098(n);
		LOC3 = (LOC6 == ((NI) 3));
		LA5: ;
		if (!!(LOC3)) goto LA7;
		LOC9 = 0;
		LOC9 = HEX24_194279(TMP3558);
		internalerror_194191(LOC9);
	}
	LA7: ;
	LOC10 = 0;
	{
		if (!NIM_FALSE) goto LA13;
		LOC10 = ((NI) -1);
	}
	goto LA11;
	LA13: ;
	{
		NI LOC16;
		LOC16 = 0;
		LOC16 = len_224098(n);
		LOC10 = (NI)(LOC16 + ((NI) -1));
	}
	LA11: ;
	doblk = HEX5BHEX5D_224244(n, LOC10);
	{
		NI LOC19;
		Tnode223809* LOC22;
		LOC19 = 0;
		LOC19 = len_224098(n);
		if (!(LOC19 == ((NI) 3))) goto LA20;
		LOC22 = 0;
		LOC22 = HEX5BHEX5D_224244(n, ((NI) 1));
		op = expectstring_497308(c, LOC22);
	}
	goto LA17;
	LA20: ;
	{
		op = copyString(((NimStringDesc*) &TMP3559));
	}
	LA17: ;
	quotes = newseq_497862(((NI) 1));
	ids = newseq_497862(((NI) 0));
	{
		if (!!(((*doblk).kind == ((NU8) 52)))) goto LA26;
		localerror_194128((*n).info, ((NU16) 193), ((NimStringDesc*) &TMP3560));
	}
	LA26: ;
	processquotations_497682(&(*doblk).kindU.S6.sons->data[((NI) 6)], op, (&quotes), (&ids));
	LOC28 = 0;
	LOC28 = getcurrowner_278258();
	LOC29 = 0;
	LOC29 = newanonsym_497343(((NU8) 18), (*n).info, LOC28);
	asgnRefNoCycle((void**) (&(*doblk).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325(LOC29));
	{
		Tnode223809* LOC34;
		Tsym223841* LOC35;
		Tnode223809* LOC36;
		Tsym223841* LOC37;
		Tnode223809* LOC38;
		Tnode223809* LOC39;
		Tnode223809* LOC40;
		if (!(((NI) 0) < (ids ? ids->Sup.len : 0))) goto LA32;
		asgnRefNoCycle((void**) (&(*doblk).kindU.S6.sons->data[((NI) 3)]), newnodei_225351(((NU8) 76), (*n).info));
		LOC34 = 0;
		LOC34 = HEX5BHEX5D_224244(doblk, ((NI) 3));
		LOC35 = 0;
		LOC35 = getsyssym_272077(((NimStringDesc*) &TMP3561));
		LOC36 = 0;
		LOC36 = newsymnode_225325(LOC35);
		add_224165(LOC34, LOC36);
		LOC37 = 0;
		LOC37 = getsyssym_272077(((NimStringDesc*) &TMP3562));
		LOC38 = 0;
		LOC38 = newsymnode_225325(LOC37);
		ids = (Tnodeseq223803*) incrSeqV2(&(ids)->Sup, sizeof(Tnode223809*));
		asgnRefNoCycle((void**) (&ids->data[ids->Sup.len]), LOC38);
		++ids->Sup.len;
		ids = (Tnodeseq223803*) incrSeqV2(&(ids)->Sup, sizeof(Tnode223809*));
		asgnRefNoCycle((void**) (&ids->data[ids->Sup.len]), emptynode_224807);
		++ids->Sup.len;
		LOC39 = 0;
		LOC39 = HEX5BHEX5D_224244(doblk, ((NI) 3));
		LOC40 = 0;
		LOC40 = newnode_225607(((NU8) 35), (*n).info, ids, NIM_NIL);
		add_224165(LOC39, LOC40);
	}
	LA32: ;
	tmpl = semtemplatedef_473709(c, doblk);
	asgnRefNoCycle((void**) (&quotes->data[((NI) 0)]), HEX5BHEX5D_224244(tmpl, ((NI) 0)));
	LOC41 = 0;
	LOC41 = (Tnodeseq223803*) newSeq((&NTI223803), 2);
	memset((void*)LOC42, 0, sizeof(LOC42));
	LOC43 = 0;
	LOC43 = getmagicsym_497328(((NU8) 23));
	LOC42[0] = newsymnode_225325(LOC43);
	LOC42[1] = newnode_225607(((NU8) 27), (*n).info, quotes, NIM_NIL);
	asgnRefNoCycle((void**) (&LOC41->data[0]), LOC42[0]);
	asgnRefNoCycle((void**) (&LOC41->data[1]), LOC42[1]);
	result = newnode_225607(((NU8) 27), (*n).info, LOC41, NIM_NIL);
	result = semexpandtoast_497430(c, result);
	return result;
}

N_NIMCALL(Ttype223847*, createflowvar_498119)(Tcontext278023* c, Ttype223847* t, Tlineinfo188352 info) {
	Ttype223847* result;
	Tsym223841* LOC1;
	result = 0;
	result = newtype_226140(((NU8) 9), (*c).module);
	LOC1 = 0;
	LOC1 = getcompilerproc_272809(((NimStringDesc*) &TMP3567));
	addsonskipintlit_272729(result, (*LOC1).typ);
	addsonskipintlit_272729(result, t);
	result = instgenericcontainer_458151(c, info, result, NIM_FALSE);
	return result;
}

N_NIMCALL(Tsym223841*, instantiatecreateflowvarcall_498129)(Tcontext278023* c, Ttype223847* t, Tlineinfo188352 info) {
	Tsym223841* result;
	Tsym223841* sym;
	Tidtable223859 bindings;
	Tnode223809* LOC5;
	Tidobj196015* LOC6;
	TNimObject* LOC7;
	result = 0;
	sym = getcompilerproc_272809(((NimStringDesc*) &TMP3568));
	{
		if (!(sym == NIM_NIL)) goto LA3;
		localerror_194128(info, ((NU16) 68), ((NimStringDesc*) &TMP3568));
	}
	LA3: ;
	memset((void*)(&bindings), 0, sizeof(bindings));
	initidtable_227057((&bindings));
	LOC5 = 0;
	LOC5 = HEX5BHEX5D_224244((*sym).ast, ((NI) 2));
	LOC6 = 0;
	LOC6 = &(*(*LOC5).kindU.S6.sons->data[((NI) 0)]).typ->Sup;
	LOC7 = 0;
	LOC7 = &t->Sup.Sup;
	idtableput_231196((&bindings), LOC6, LOC7);
	result = (*c).semgenerateinstance.ClEnv? (*c).semgenerateinstance.ClPrc(c, sym, bindings, info, (*c).semgenerateinstance.ClEnv):((TMP3569)((*c).semgenerateinstance.ClPrc))(c, sym, bindings, info);
	{
		if (!(((*result).flags &(1<<((((NU8) 16))&31)))!=0)) goto LA10;
		(*result).flags = ((*result).flags & ~ 65632);
		asgnRefNoCycle((void**) (&(*result).loc.r), NIM_NIL);
	}
	LA10: ;
	return result;
}

N_NIMCALL(Tnode223809*, semmagic_498194)(Tcontext278023* c, Tnode223809* n, Tsym223841* s, NU16 flags) {
	Tnode223809* result;
	result = 0;
	result = n;
	switch ((*s).magic) {
	case ((NU8) 13):
	{
		checksonslen_279260(n, ((NI) 2));
		result = semaddr_493250(c, (*n).kindU.S6.sons->data[((NI) 1)], eqStrings((*(*s).name).s, ((NimStringDesc*) &TMP3338)));
	}
	break;
	case ((NU8) 14):
	{
		checksonslen_279260(n, ((NI) 2));
		result = semtypeof_493293(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 1):
	{
		Tnode223809* LOC4;
		LOC4 = 0;
		LOC4 = setms_498184(n, s);
		result = semdefined_497236(c, LOC4, NIM_FALSE);
	}
	break;
	case ((NU8) 2):
	{
		Tnode223809* LOC6;
		LOC6 = 0;
		LOC6 = setms_498184(n, s);
		result = semdefined_497236(c, LOC6, NIM_TRUE);
	}
	break;
	case ((NU8) 3):
	{
		Tnode223809* LOC8;
		LOC8 = 0;
		LOC8 = setms_498184(n, s);
		result = semcompiles_498079(c, LOC8, flags);
	}
	break;
	case ((NU8) 7):
	{
		Tnode223809* LOC10;
		LOC10 = 0;
		LOC10 = setms_498184(n, s);
		result = semlowhigh_491837(c, LOC10, ((NU8) 7));
	}
	break;
	case ((NU8) 8):
	{
		Tnode223809* LOC12;
		LOC12 = 0;
		LOC12 = setms_498184(n, s);
		result = semlowhigh_491837(c, LOC12, ((NU8) 8));
	}
	break;
	case ((NU8) 9):
	{
		Tnode223809* LOC14;
		LOC14 = 0;
		LOC14 = setms_498184(n, s);
		result = semsizeof_491884(c, LOC14);
	}
	break;
	case ((NU8) 11):
	{
		Tnode223809* LOC16;
		LOC16 = 0;
		LOC16 = setms_498184(n, s);
		result = semis_492107(c, LOC16);
	}
	break;
	case ((NU8) 12):
	{
		Tnode223809* LOC18;
		LOC18 = 0;
		LOC18 = setms_498184(n, s);
		result = semof_491895(c, LOC18);
	}
	break;
	case ((NU8) 18):
	{
		result = semshallowcopy_493661(c, n, flags);
	}
	break;
	case ((NU8) 23):
	{
		result = semexpandtoast_497669(c, n, s, flags);
	}
	break;
	case ((NU8) 24):
	{
		result = semquoteast_455334(c, n);
	}
	break;
	case ((NU8) 153):
	{
		Tnode223809* LOC23;
		NimStringDesc* LOC24;
		checksonslen_279260(n, ((NI) 2));
		LOC23 = 0;
		LOC23 = HEX5BHEX5D_224244(n, ((NI) 1));
		LOC24 = 0;
		LOC24 = rendertree_245059(LOC23, 4);
		result = newstrnodet_291042(LOC24, n);
		asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 28)));
	}
	break;
	case ((NU8) 154):
	{
		Tnode223809* x;
		{
			NIM_BOOL LOC28;
			LOC28 = 0;
			LOC28 = experimentalmode_279290(c);
			if (!!(LOC28)) goto LA29;
			localerror_194139((*n).info, ((NimStringDesc*) &TMP3564));
		}
		LA29: ;
		result = setms_498184(n, s);
		x = lastson_226406(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_455277(c, x));
		(*c).inparallelstmt -= ((NI) 1);
	}
	break;
	case ((NU8) 201):
	{
		Ttype223847* typ;
		NI LOC40;
		Tnode223809* LOC41;
		result = setms_498184(n, s);
		{
			NI i_498256;
			NI HEX3Atmp_498276;
			NI LOC37;
			NI res_498279;
			i_498256 = 0;
			HEX3Atmp_498276 = 0;
			LOC37 = 0;
			LOC37 = len_224098(n);
			HEX3Atmp_498276 = (LOC37 - 1);
			res_498279 = ((NI) 1);
			{
				while (1) {
					if (!(res_498279 <= HEX3Atmp_498276)) goto LA39;
					i_498256 = res_498279;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_498256]), semexpr_455201(c, (*n).kindU.S6.sons->data[i_498256], 0));
					res_498279 += ((NI) 1);
				} LA39: ;
			}
		}
		LOC40 = 0;
		LOC40 = len_224098(result);
		LOC41 = 0;
		LOC41 = HEX5BHEX5D_224244(result, (NI)(LOC40 - ((NI) 1)));
		typ = (*LOC41).typ;
		{
			NIM_BOOL LOC44;
			Tsym223841* LOC53;
			Tnode223809* LOC54;
			LOC44 = 0;
			LOC44 = isemptytype_228932(typ);
			if (!!(LOC44)) goto LA45;
			{
				NU8 LOC49;
				LOC49 = 0;
				LOC49 = spawnresult_402208(typ, (((NI) 0) < (*c).inparallelstmt));
				if (!(LOC49 == ((NU8) 1))) goto LA50;
				asgnRefNoCycle((void**) (&(*result).typ), createflowvar_498119(c, typ, (*n).info));
			}
			goto LA47;
			LA50: ;
			{
				asgnRefNoCycle((void**) (&(*result).typ), typ);
			}
			LA47: ;
			LOC53 = 0;
			LOC53 = instantiatecreateflowvarcall_498129(c, typ, (*n).info);
			LOC54 = 0;
			LOC54 = newsymnode_225325(LOC53);
			add_224165(result, LOC54);
		}
		goto LA42;
		LA45: ;
		{
			add_224165(result, emptynode_224807);
		}
		LA42: ;
	}
	break;
	case ((NU8) 206):
	{
		Tnode223809* LOC57;
		result = setms_498184(n, s);
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semexpr_455201(c, (*n).kindU.S6.sons->data[((NI) 1)], 0));
		LOC57 = 0;
		LOC57 = HEX5BHEX5D_224244(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*result).typ), (*LOC57).typ);
	}
	break;
	default:
	{
		result = semdirectop_456039(c, n, flags);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, semopaux_492150)(Tcontext278023* c, Tnode223809* n) {
	{
		NI i_492169;
		NI HEX3Atmp_492190;
		NI LOC2;
		NI res_492193;
		i_492169 = 0;
		HEX3Atmp_492190 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_492190 = (NI)(LOC2 - ((NI) 1));
		res_492193 = ((NI) 1);
		{
			while (1) {
				Tnode223809* a;
				if (!(res_492193 <= HEX3Atmp_492190)) goto LA4;
				i_492169 = res_492193;
				a = (*n).kindU.S6.sons->data[i_492169];
				{
					NIM_BOOL LOC7;
					NI LOC9;
					Tlineinfo188352 info;
					Tident196021* LOC12;
					LOC7 = 0;
					LOC7 = ((*a).kind == ((NU8) 33));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = sonslen_226387(a);
					LOC7 = (LOC9 == ((NI) 2));
					LA8: ;
					if (!LOC7) goto LA10;
					info = (*(*a).kindU.S6.sons->data[((NI) 0)]).info;
					LOC12 = 0;
					LOC12 = considerquotedident_284010((*a).kindU.S6.sons->data[((NI) 0)]);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newidentnode_225313(LOC12, info));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_455211(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_492169]), semexprwithtype_455211(c, a, 32));
				}
				LA5: ;
				res_492193 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, resolveindirectcall_494438)(Tcontext278023* c, Tnode223809* n, Tnode223809* norig, Ttype223847* t, Tcandidate386209* Result) {
	initcandidate_386278(c, Result, t);
	matches_392720(c, n, norig, Result);
	{
		if (!!(((*Result).state == ((NU8) 1)))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = experimentalmode_279290(c);
			if (!(LOC7)) goto LA8;
			LOC7 = canderef_461930(n);
			LA8: ;
			if (!LOC7) goto LA9;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), tryderef_461963((*n).kindU.S6.sons->data[((NI) 1)]));
			initcandidate_386278(c, Result, t);
			matches_392720(c, n, norig, Result);
		}
		LA9: ;
	}
	LA3: ;
}

N_NIMCALL(Tnode223809*, overloadedcallopr_492209)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tident196021* par;
	result = 0;
	par = getident_196463(((NimStringDesc*) &TMP3246));
	{
		Tsym223841* LOC3;
		LOC3 = 0;
		LOC3 = searchinscopes_284205(c, par);
		if (!(LOC3 == NIM_NIL)) goto LA4;
		result = NIM_NIL;
	}
	goto LA1;
	LA4: ;
	{
		Tnode223809* LOC7;
		result = newnodei_225351(((NU8) 27), (*n).info);
		LOC7 = 0;
		LOC7 = newidentnode_225313(par, (*n).info);
		addson_225819(result, LOC7);
		{
			NI i_492239;
			NI HEX3Atmp_492242;
			NI LOC9;
			NI res_492245;
			i_492239 = 0;
			HEX3Atmp_492242 = 0;
			LOC9 = 0;
			LOC9 = sonslen_226387(n);
			HEX3Atmp_492242 = (NI)(LOC9 - ((NI) 1));
			res_492245 = ((NI) 0);
			{
				while (1) {
					if (!(res_492245 <= HEX3Atmp_492242)) goto LA11;
					i_492239 = res_492245;
					addson_225819(result, (*n).kindU.S6.sons->data[i_492239]);
					res_492245 += ((NI) 1);
				} LA11: ;
			}
		}
		result = semexpr_455201(c, result, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, semindirectop_494464)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Tnode223809* prc;
	Tnode223809* norig;
	Ttype223847* t;
{	result = 0;
	result = NIM_NIL;
	checkminsonslen_279270(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_279260((*n).kindU.S6.sons->data[((NI) 0)], ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semfieldaccess_490014(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_494518;
				NI HEX3Atmp_494747;
				NI LOC10;
				NI res_494750;
				i_494518 = 0;
				HEX3Atmp_494747 = 0;
				LOC10 = 0;
				LOC10 = sonslen_226387(n);
				HEX3Atmp_494747 = (NI)(LOC10 - ((NI) 1));
				res_494750 = ((NI) 1);
				{
					while (1) {
						if (!(res_494750 <= HEX3Atmp_494747)) goto LA12;
						i_494518 = res_494750;
						addson_225819(result, (*n).kindU.S6.sons->data[i_494518]);
						res_494750 += ((NI) 1);
					} LA12: ;
				}
			}
			result = semexpr_455201(c, result, flags);
			goto BeforeRet;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		Ttype223847* t;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexpr_455201(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_400024((*n).kindU.S6.sons->data[((NI) 0)]));
		}
		LA18: ;
	}
	LA1: ;
	norig = copytree_228028(n);
	semopaux_492150(c, n);
	t = NIM_NIL;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).typ == NIM_NIL))) goto LA22;
		t = skiptypes_227167((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576000));
	}
	LA22: ;
	{
		NIM_BOOL LOC26;
		Tcandidate386209 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_494438(c, n, norig, t, (&m));
		{
			if (!!((m.state == ((NU8) 1)))) goto LA32;
			{
				if (!(((NI) 0) < (*c).compilescontextid)) goto LA36;
				globalerror_194107((*n).info, ((NU16) 133), ((NimStringDesc*) &TMP3115));
				result = emptynode_224807;
				goto BeforeRet;
			}
			goto LA34;
			LA36: ;
			{
				NIM_BOOL haserrortype;
				NimStringDesc* msg;
				haserrortype = NIM_FALSE;
				msg = msgkindtostring_190406(((NU16) 133));
				{
					NI i_494622;
					NI HEX3Atmp_494756;
					NI LOC40;
					NI res_494759;
					i_494622 = 0;
					HEX3Atmp_494756 = 0;
					LOC40 = 0;
					LOC40 = sonslen_226387(n);
					HEX3Atmp_494756 = (NI)(LOC40 - ((NI) 1));
					res_494759 = ((NI) 1);
					{
						while (1) {
							Ttype223847* nt;
							NimStringDesc* LOC47;
							if (!(res_494759 <= HEX3Atmp_494756)) goto LA42;
							i_494622 = res_494759;
							{
								if (!(((NI) 1) < i_494622)) goto LA45;
								msg = resizeString(msg, 2);
appendString(msg, ((NimStringDesc*) &TMP3508));
							}
							LA45: ;
							nt = (*(*n).kindU.S6.sons->data[i_494622]).typ;
							LOC47 = 0;
							LOC47 = typetostring_253032(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_494759 += ((NI) 1);
						} LA42: ;
					}
				} LA39: ;
				{
					NimStringDesc* LOC56;
					NimStringDesc* LOC57;
					NimStringDesc* LOC58;
					if (!!(haserrortype)) goto LA54;
					LOC56 = 0;
					LOC57 = 0;
					LOC57 = msgkindtostring_190406(((NU16) 134));
					LOC58 = 0;
					LOC58 = typetostring_253032((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, ((NU8) 0));
					LOC56 = rawNewString(LOC57->Sup.len + LOC58->Sup.len + 3);
appendString(LOC56, ((NimStringDesc*) &TMP3570));
appendString(LOC56, LOC57);
appendString(LOC56, ((NimStringDesc*) &TMP3511));
appendString(LOC56, LOC58);
					msg = resizeString(msg, LOC56->Sup.len + 0);
appendString(msg, LOC56);
					localerror_194128((*n).info, ((NU16) 4), msg);
				}
				LA54: ;
				result = errornode_279171(c, n);
				goto BeforeRet;
			}
			LA34: ;
			result = NIM_NIL;
		}
		goto LA30;
		LA32: ;
		{
			result = m.call;
			instgenericconverterssons_461312(c, result, (&m));
		}
		LA30: ;
		{
			if (!!((((*t).flags &(1<<((((NU8) 1))&31)))!=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_224098(n);
			if (!(LOC71 == ((NI) 1))) goto LA72;
			result = semobjconstr_494433(c, n, flags);
			goto BeforeRet;
		}
		LA72: ;
		result = semconv_491710(c, n);
		goto BeforeRet;
	}
	goto LA24;
	LA67: ;
	{
		result = overloadedcallopr_492209(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_494293(c, n, norig, flags);
			{
				if (!(result == NIM_NIL)) goto LA81;
				result = errornode_279171(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_492616(c, result);
	analyseifaddresstakenincall_493052(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_493738(c, result, flags);
	}
	LA90: ;
	result = evalatcompiletime_493821(c, result);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, shouldbebracketexpr_499837)(Tnode223809* n) {
	NIM_BOOL result;
	Tnode223809* a;
{	result = 0;
	a = (*n).kindU.S6.sons->data[((NI) 0)];
	{
		Tnode223809* 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_224244(a, ((NI) 0));
		{
			if (!((*b).kind == ((NU8) 56) || (*b).kind == ((NU8) 57))) goto LA7;
			{
				NI i_500051;
				Slice90369 HEX3Atmp_500110;
				NI LOC10;
				i_500051 = 0;
				memset((void*)(&HEX3Atmp_500110), 0, sizeof(HEX3Atmp_500110));
				LOC10 = 0;
				LOC10 = len_224098(b);
				HEX3Atmp_500110 = HEX2EHEX2E_105290(((NI) 0), (LOC10 - 1));
				{
					NI x_500114;
					NI HEX3Atmp_500116;
					NI HEX3Atmp_500118;
					NI res_500120;
					x_500114 = 0;
					HEX3Atmp_500116 = 0;
					HEX3Atmp_500118 = 0;
					HEX3Atmp_500116 = HEX3Atmp_500110.a;
					HEX3Atmp_500118 = HEX3Atmp_500110.b;
					res_500120 = HEX3Atmp_500116;
					{
						while (1) {
							if (!(res_500120 <= HEX3Atmp_500118)) goto LA13;
							x_500114 = res_500120;
							i_500051 = x_500114;
							{
								Tnode223809* LOC16;
								Tnode223809* be;
								LOC16 = 0;
								LOC16 = HEX5BHEX5D_224244(b, i_500051);
								if (!((*(*LOC16).kindU.S4.sym).magic == ((NU8) 4))) goto LA17;
								be = newnodei_225351(((NU8) 42), (*n).info);
								{
									NI i_500091;
									Slice90369 HEX3Atmp_500096;
									NI LOC20;
									i_500091 = 0;
									memset((void*)(&HEX3Atmp_500096), 0, sizeof(HEX3Atmp_500096));
									LOC20 = 0;
									LOC20 = len_224098(a);
									HEX3Atmp_500096 = HEX2EHEX2E_105290(((NI) 1), (LOC20 - 1));
									{
										NI x_500100;
										NI HEX3Atmp_500102;
										NI HEX3Atmp_500104;
										NI res_500106;
										x_500100 = 0;
										HEX3Atmp_500102 = 0;
										HEX3Atmp_500104 = 0;
										HEX3Atmp_500102 = HEX3Atmp_500096.a;
										HEX3Atmp_500104 = HEX3Atmp_500096.b;
										res_500106 = HEX3Atmp_500102;
										{
											while (1) {
												Tnode223809* LOC24;
												if (!(res_500106 <= HEX3Atmp_500104)) goto LA23;
												x_500100 = res_500106;
												i_500091 = x_500100;
												LOC24 = 0;
												LOC24 = HEX5BHEX5D_224244(a, i_500091);
												add_224165(be, LOC24);
												res_500106 += ((NI) 1);
											} LA23: ;
										}
									}
								}
								asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), be);
								result = NIM_TRUE;
								goto BeforeRet;
							}
							LA17: ;
							res_500120 += ((NI) 1);
						} LA13: ;
					}
				}
			}
		}
		LA7: ;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, setgenericparams_500151)(Tcontext278023* c, Tnode223809* n) {
	{
		NI i_500174;
		NI HEX3Atmp_500176;
		NI LOC2;
		NI res_500179;
		i_500174 = 0;
		HEX3Atmp_500176 = 0;
		LOC2 = 0;
		LOC2 = len_224098(n);
		HEX3Atmp_500176 = (LOC2 - 1);
		res_500179 = ((NI) 1);
		{
			while (1) {
				Tnode223809* LOC5;
				Tnode223809* LOC6;
				if (!(res_500179 <= HEX3Atmp_500176)) goto LA4;
				i_500174 = res_500179;
				LOC5 = 0;
				LOC5 = HEX5BHEX5D_224244(n, i_500174);
				LOC6 = 0;
				LOC6 = HEX5BHEX5D_224244(n, i_500174);
				asgnRefNoCycle((void**) (&(*LOC5).typ), semtypenode_455269(c, LOC6, NIM_NIL));
				res_500179 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode223809*, semarrayaccess_496382)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Tnode223809* oldbracketexpr;
	result = 0;
	oldbracketexpr = (*(*c).p).bracketexpr;
	result = semsubscript_493315(c, n, flags);
	{
		Tident196021* LOC5;
		Tnode223809* LOC6;
		if (!(result == NIM_NIL)) goto LA3;
		LOC5 = 0;
		LOC5 = getident_196463(((NimStringDesc*) &TMP3571));
		LOC6 = 0;
		LOC6 = buildoverloadedsubscripts_496122(n, LOC5);
		result = semexpr_455201(c, LOC6, 0);
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
	return result;
}

N_NIMCALL(NU8, checkpar_498735)(Tnode223809* n) {
	NU8 result;
	NI length;
{	result = 0;
	length = sonslen_226387(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_498772;
			NI HEX3Atmp_498818;
			NI res_498821;
			i_498772 = 0;
			HEX3Atmp_498818 = 0;
			HEX3Atmp_498818 = (NI)(length - ((NI) 1));
			res_498821 = ((NI) 0);
			{
				while (1) {
					if (!(res_498821 <= HEX3Atmp_498818)) goto LA21;
					i_498772 = res_498821;
					{
						if (!(result == ((NU8) 2))) goto LA24;
						{
							NIM_BOOL LOC28;
							LOC28 = 0;
							LOC28 = !(((*(*n).kindU.S6.sons->data[i_498772]).kind == ((NU8) 34)));
							if (LOC28) goto LA29;
							LOC28 = !(((*(*(*n).kindU.S6.sons->data[i_498772]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3) || (*(*(*n).kindU.S6.sons->data[i_498772]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2)));
							LA29: ;
							if (!LOC28) goto LA30;
							localerror_194128((*(*n).kindU.S6.sons->data[i_498772]).info, ((NU16) 174), ((NimStringDesc*) &TMP3115));
							result = ((NU8) 0);
							goto BeforeRet;
						}
						LA30: ;
					}
					goto LA22;
					LA24: ;
					{
						{
							if (!((*(*n).kindU.S6.sons->data[i_498772]).kind == ((NU8) 34))) goto LA35;
							localerror_194128((*(*n).kindU.S6.sons->data[i_498772]).info, ((NU16) 175), ((NimStringDesc*) &TMP3115));
							result = ((NU8) 0);
							goto BeforeRet;
						}
						LA35: ;
					}
					LA22: ;
					res_498821 += ((NI) 1);
				} LA21: ;
			}
		}
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semtuplepositionsconstr_498949)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Ttype223847* typ;
	result = 0;
	result = n;
	typ = newtypes_278221(((NU8) 18), c);
	{
		NI i_498968;
		NI HEX3Atmp_498986;
		NI LOC2;
		NI res_498989;
		i_498968 = 0;
		HEX3Atmp_498986 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_498986 = (NI)(LOC2 - ((NI) 1));
		res_498989 = ((NI) 0);
		{
			while (1) {
				if (!(res_498989 <= HEX3Atmp_498986)) goto LA4;
				i_498968 = res_498989;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_498968]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[i_498968], (flags & 64)));
				addsonskipintlit_272729(typ, (*(*n).kindU.S6.sons->data[i_498968]).typ);
				res_498989 += ((NI) 1);
			} LA4: ;
		}
	}
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_NIMCALL(NIM_BOOL, istupletype_499005)(Tnode223809* n) {
	NIM_BOOL result;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_224098(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA4: ;
	{
		NI i_499023;
		NI HEX3Atmp_499046;
		NI LOC7;
		NI res_499049;
		i_499023 = 0;
		HEX3Atmp_499046 = 0;
		LOC7 = 0;
		LOC7 = len_224098(n);
		HEX3Atmp_499046 = (NI)(LOC7 - ((NI) 1));
		res_499049 = ((NI) 0);
		{
			while (1) {
				if (!(res_499049 <= HEX3Atmp_499046)) goto LA9;
				i_499023 = res_499049;
				{
					NIM_BOOL LOC12;
					Tnode223809* LOC13;
					Tnode223809* LOC15;
					LOC12 = 0;
					LOC13 = 0;
					LOC13 = HEX5BHEX5D_224244(n, i_499023);
					LOC12 = ((*LOC13).typ == NIM_NIL);
					if (LOC12) goto LA14;
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_224244(n, i_499023);
					LOC12 = !(((*(*LOC15).typ).kind == ((NU8) 8)));
					LA14: ;
					if (!LOC12) goto LA16;
					result = NIM_FALSE;
					goto BeforeRet;
				}
				LA16: ;
				res_499049 += ((NI) 1);
			} LA9: ;
		}
	}
	result = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semtuplefieldsconstr_498837)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Ttype223847* typ;
	Intset220056 ids;
	result = 0;
	result = newnodei_225351(((NU8) 37), (*n).info);
	typ = newtypes_278221(((NU8) 18), c);
	asgnRefNoCycle((void**) (&(*typ).n), newnodei_225351(((NU8) 138), (*n).info));
	memset((void*)(&ids), 0, sizeof(ids));
	chckNil((void*)(&ids));
	memset((void*)(&ids), 0, sizeof(ids));
	initintset_220927((&ids));
	{
		NI i_498857;
		NI HEX3Atmp_498930;
		NI LOC2;
		NI res_498933;
		i_498857 = 0;
		HEX3Atmp_498930 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_498930 = (NI)(LOC2 - ((NI) 1));
		res_498933 = ((NI) 0);
		{
			while (1) {
				Tident196021* id;
				Tsym223841* f;
				Tnode223809* LOC24;
				if (!(res_498933 <= HEX3Atmp_498930)) goto LA4;
				i_498857 = res_498933;
				{
					NIM_BOOL LOC7;
					Tnode223809* LOC8;
					Tnode223809* LOC10;
					Tnode223809* LOC11;
					LOC7 = 0;
					LOC8 = 0;
					LOC8 = HEX5BHEX5D_224244(n, i_498857);
					LOC7 = !(((*LOC8).kind == ((NU8) 34)));
					if (LOC7) goto LA9;
					LOC10 = 0;
					LOC10 = HEX5BHEX5D_224244(n, i_498857);
					LOC11 = 0;
					LOC11 = HEX5BHEX5D_224244(LOC10, ((NI) 0));
					LOC7 = !(((*LOC11).kind == ((NU8) 3) || (*LOC11).kind == ((NU8) 2)));
					LA9: ;
					if (!LOC7) goto LA12;
					illformedast_279240((*n).kindU.S6.sons->data[i_498857]);
				}
				LA12: ;
				id = 0;
				{
					if (!((*(*(*n).kindU.S6.sons->data[i_498857]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2))) goto LA16;
					id = (*(*(*n).kindU.S6.sons->data[i_498857]).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident;
				}
				goto LA14;
				LA16: ;
				{
					id = (*(*(*(*n).kindU.S6.sons->data[i_498857]).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name;
				}
				LA14: ;
				{
					NIM_BOOL LOC21;
					LOC21 = 0;
					LOC21 = containsorincl_220898((&ids), (*id).Sup.id);
					if (!LOC21) goto LA22;
					localerror_194128((*(*n).kindU.S6.sons->data[i_498857]).info, ((NU16) 90), (*id).s);
				}
				LA22: ;
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_498857]).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_455211(c, (*(*n).kindU.S6.sons->data[i_498857]).kindU.S6.sons->data[((NI) 1)], (flags & 64)));
				f = newsyms_455904(((NU8) 19), (*(*n).kindU.S6.sons->data[i_498857]).kindU.S6.sons->data[((NI) 0)], c);
				asgnRefNoCycle((void**) (&(*f).typ), skipintlit_272696((*(*(*n).kindU.S6.sons->data[i_498857]).kindU.S6.sons->data[((NI) 1)]).typ));
				(*f).position = i_498857;
				rawaddson_227498(typ, (*f).typ);
				LOC24 = 0;
				LOC24 = newsymnode_225325(f);
				addson_225819((*typ).n, LOC24);
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_498857]).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325(f));
				addson_225819(result, (*n).kindU.S6.sons->data[i_498857]);
				res_498933 += ((NI) 1);
			} LA4: ;
		}
	}
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_NIMCALL(Tnode223809*, semsetconstr_498479)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = newnodei_225351(((NU8) 39), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), newtypes_278221(((NU8) 19), c));
	{
		NI LOC3;
		Ttype223847* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		LOC6 = 0;
		LOC6 = newtypes_278221(((NU8) 3), c);
		rawaddson_227498((*result).typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		Ttype223847* typ;
		typ = NIM_NIL;
		{
			NI i_498497;
			NI HEX3Atmp_498603;
			NI LOC9;
			NI res_498606;
			i_498497 = 0;
			HEX3Atmp_498603 = 0;
			LOC9 = 0;
			LOC9 = sonslen_226387(n);
			HEX3Atmp_498603 = (NI)(LOC9 - ((NI) 1));
			res_498606 = ((NI) 0);
			{
				while (1) {
					if (!(res_498606 <= HEX3Atmp_498603)) goto LA11;
					i_498497 = res_498606;
					{
						NIM_BOOL LOC14;
						LOC14 = 0;
						LOC14 = isrange_252626((*n).kindU.S6.sons->data[i_498497]);
						if (!LOC14) goto LA15;
						checksonslen_279260((*n).kindU.S6.sons->data[i_498497], ((NI) 3));
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_498497]).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_455211(c, (*(*n).kindU.S6.sons->data[i_498497]).kindU.S6.sons->data[((NI) 1)], 0));
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_498497]).kindU.S6.sons->data[((NI) 2)]), semexprwithtype_455211(c, (*(*n).kindU.S6.sons->data[i_498497]).kindU.S6.sons->data[((NI) 2)], 0));
						{
							if (!(typ == NIM_NIL)) goto LA19;
							typ = skiptypes_227167((*(*(*n).kindU.S6.sons->data[i_498497]).kindU.S6.sons->data[((NI) 1)]).typ, 8423424);
						}
						LA19: ;
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_498497]).typ), (*(*(*n).kindU.S6.sons->data[i_498497]).kindU.S6.sons->data[((NI) 2)]).typ);
					}
					goto LA12;
					LA15: ;
					{
						if (!((*(*n).kindU.S6.sons->data[i_498497]).kind == ((NU8) 44))) goto LA22;
						{
							if (!(typ == NIM_NIL)) goto LA26;
							typ = skiptypes_227167((*(*(*n).kindU.S6.sons->data[i_498497]).kindU.S6.sons->data[((NI) 0)]).typ, 8423424);
						}
						LA26: ;
					}
					goto LA12;
					LA22: ;
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_498497]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[i_498497], 0));
						{
							if (!(typ == NIM_NIL)) goto LA31;
							typ = skiptypes_227167((*(*n).kindU.S6.sons->data[i_498497]).typ, 8423424);
						}
						LA31: ;
					}
					LA12: ;
					res_498606 += ((NI) 1);
				} LA11: ;
			}
		}
		{
			NIM_BOOL LOC35;
			Ttype223847* LOC38;
			LOC35 = 0;
			LOC35 = isordinaltype_253093(typ);
			if (!!(LOC35)) goto LA36;
			localerror_194128((*n).info, ((NU16) 78), ((NimStringDesc*) &TMP3115));
			LOC38 = 0;
			LOC38 = getsystype_272190(((NU8) 31));
			typ = makerangetype_279193(c, IL64(0), IL64(65535), (*n).info, LOC38);
		}
		goto LA33;
		LA36: ;
		{
			NI64 LOC40;
			Ttype223847* LOC43;
			LOC40 = 0;
			LOC40 = lengthord_253016(typ);
			if (!(IL64(65536) < LOC40)) goto LA41;
			LOC43 = 0;
			LOC43 = getsystype_272190(((NU8) 31));
			typ = makerangetype_279193(c, IL64(0), IL64(65535), (*n).info, LOC43);
		}
		goto LA33;
		LA41: ;
		LA33: ;
		addsonskipintlit_272729((*result).typ, typ);
		{
			NI i_498581;
			NI HEX3Atmp_498612;
			NI LOC45;
			NI res_498615;
			i_498581 = 0;
			HEX3Atmp_498612 = 0;
			LOC45 = 0;
			LOC45 = sonslen_226387(n);
			HEX3Atmp_498612 = (NI)(LOC45 - ((NI) 1));
			res_498615 = ((NI) 0);
			{
				while (1) {
					Tnode223809* m;
					if (!(res_498615 <= HEX3Atmp_498612)) goto LA47;
					i_498581 = res_498615;
					m = 0;
					{
						NIM_BOOL LOC50;
						Tnode223809* LOC53;
						Tnode223809* LOC54;
						LOC50 = 0;
						LOC50 = isrange_252626((*n).kindU.S6.sons->data[i_498581]);
						if (!LOC50) goto LA51;
						m = newnodei_225351(((NU8) 44), (*(*n).kindU.S6.sons->data[i_498581]).info);
						LOC53 = 0;
						LOC53 = fitnode_455245(c, typ, (*(*n).kindU.S6.sons->data[i_498581]).kindU.S6.sons->data[((NI) 1)]);
						addson_225819(m, LOC53);
						LOC54 = 0;
						LOC54 = fitnode_455245(c, typ, (*(*n).kindU.S6.sons->data[i_498581]).kindU.S6.sons->data[((NI) 2)]);
						addson_225819(m, LOC54);
					}
					goto LA48;
					LA51: ;
					{
						if (!((*(*n).kindU.S6.sons->data[i_498581]).kind == ((NU8) 44))) goto LA56;
						m = (*n).kindU.S6.sons->data[i_498581];
					}
					goto LA48;
					LA56: ;
					{
						m = fitnode_455245(c, typ, (*n).kindU.S6.sons->data[i_498581]);
					}
					LA48: ;
					addson_225819(result, m);
					res_498615 += ((NI) 1);
				} LA47: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype223847*, commontype_455477)(Ttype223847* x, Ttype223847* y) {
	Ttype223847* result;
	Ttype223847* a;
	Ttype223847* 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_227167(x, 2048);
	b = skiptypes_227167(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_262739((*a).sons, NIM_NIL);
			if (!LOC27) goto LA28;
			result = a;
		}
		goto LA25;
		LA28: ;
		{
			Ttype223847* LOC31;
			result = newtype_226140(((NU8) 8), (*a).owner);
			LOC31 = 0;
			LOC31 = newtype_226140(((NU8) 0), (*a).owner);
			rawaddson_227498(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;
		Ttype223847* 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_226369(a);
		LOC47 = 0;
		LOC47 = len_226369(b);
		LOC42 = (LOC46 == LOC47);
		LA45: ;
		if (!LOC42) goto LA48;
		nt = 0;
		{
			NI i_455657;
			NI HEX3Atmp_455882;
			NI LOC51;
			NI res_455885;
			i_455657 = 0;
			HEX3Atmp_455882 = 0;
			LOC51 = 0;
			LOC51 = len_226369(a);
			HEX3Atmp_455882 = (LOC51 - 1);
			res_455885 = ((NI) 0);
			{
				while (1) {
					NIM_BOOL aempty;
					NIM_BOOL bempty;
					if (!(res_455885 <= HEX3Atmp_455882)) goto LA53;
					i_455657 = res_455885;
					aempty = isemptycontainer_262978((*a).sons->data[i_455657]);
					bempty = isemptycontainer_262978((*b).sons->data[i_455657]);
					{
						if (!!((aempty == bempty))) goto LA56;
						{
							if (!nt == 0) goto LA60;
							nt = copytype_226542(a, (*a).owner, NIM_FALSE);
						}
						LA60: ;
						{
							if (!aempty) goto LA64;
							asgnRefNoCycle((void**) (&(*nt).sons->data[i_455657]), (*b).sons->data[i_455657]);
						}
						goto LA62;
						LA64: ;
						{
							asgnRefNoCycle((void**) (&(*nt).sons->data[i_455657]), (*a).sons->data[i_455657]);
						}
						LA62: ;
					}
					LA56: ;
					res_455885 += ((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;
			Ttype223847* LOC81;
			LOC78 = 0;
			LOC78 = sametype_258092(a, b, 0);
			if (!!(LOC78)) goto LA79;
			LOC81 = 0;
			LOC81 = skiptypes_227167(a, 1048576);
			result = skipintlit_272696(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_226426(a);
			b = lastson_226426(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_260468(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: ;
			{
				Ttype223847* r;
				if (!!((k == ((NU8) 0)))) goto LA109;
				r = result;
				result = newtype_226140(k, (*r).owner);
				addsonskipintlit_272729(result, r);
			}
			LA109: ;
		}
		LA95: ;
	}
	LA9: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semarrayconstr_492482)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	NI LOC35;
	Ttype223847* LOC36;
	result = 0;
	result = newnodei_225351(((NU8) 41), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), newtypes_278221(((NU8) 4), c));
	rawaddson_227498((*result).typ, NIM_NIL);
	{
		NI LOC3;
		Ttype223847* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		LOC6 = 0;
		LOC6 = newtypes_278221(((NU8) 3), c);
		rawaddson_227498((*result).typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		Tnode223809* x;
		NI64 lastindex;
		Ttype223847* indextype;
		Tnode223809* yy;
		Ttype223847* typ;
		x = (*n).kindU.S6.sons->data[((NI) 0)];
		lastindex = IL64(0);
		indextype = getsystype_272190(((NU8) 31));
		{
			NIM_BOOL LOC10;
			NI LOC12;
			Tnode223809* idx;
			LOC10 = 0;
			LOC10 = ((*x).kind == ((NU8) 34));
			if (!(LOC10)) goto LA11;
			LOC12 = 0;
			LOC12 = sonslen_226387(x);
			LOC10 = (LOC12 == ((NI) 2));
			LA11: ;
			if (!LOC10) goto LA13;
			idx = semconstexpr_456485(c, (*x).kindU.S6.sons->data[((NI) 0)]);
			lastindex = getordvalue_253178(idx);
			indextype = (*idx).typ;
			x = (*x).kindU.S6.sons->data[((NI) 1)];
		}
		LA13: ;
		yy = semexprwithtype_455211(c, x, 0);
		typ = (*yy).typ;
		addson_225819(result, yy);
		{
			NI i_492518;
			NI HEX3Atmp_492580;
			NI LOC16;
			NI res_492583;
			i_492518 = 0;
			HEX3Atmp_492580 = 0;
			LOC16 = 0;
			LOC16 = sonslen_226387(n);
			HEX3Atmp_492580 = (NI)(LOC16 - ((NI) 1));
			res_492583 = ((NI) 1);
			{
				while (1) {
					Tnode223809* xx;
					if (!(res_492583 <= HEX3Atmp_492580)) goto LA18;
					i_492518 = res_492583;
					x = (*n).kindU.S6.sons->data[i_492518];
					{
						NIM_BOOL LOC21;
						NI LOC23;
						Tnode223809* idx;
						LOC21 = 0;
						LOC21 = ((*x).kind == ((NU8) 34));
						if (!(LOC21)) goto LA22;
						LOC23 = 0;
						LOC23 = sonslen_226387(x);
						LOC21 = (LOC23 == ((NI) 2));
						LA22: ;
						if (!LOC21) goto LA24;
						idx = semconstexpr_456485(c, (*x).kindU.S6.sons->data[((NI) 0)]);
						idx = fitnode_455245(c, indextype, idx);
						{
							NI64 LOC28;
							LOC28 = 0;
							LOC28 = getordvalue_253178(idx);
							if (!!(((NI64)(lastindex + IL64(1)) == LOC28))) goto LA29;
							localerror_194128((*x).info, ((NU16) 148), ((NimStringDesc*) &TMP3115));
						}
						LA29: ;
						x = (*x).kindU.S6.sons->data[((NI) 1)];
					}
					LA24: ;
					xx = semexprwithtype_455211(c, x, (flags & 64));
					add_224165(result, xx);
					typ = commontype_455477(typ, (*xx).typ);
					lastindex += ((NI) 1);
					res_492583 += ((NI) 1);
				} LA18: ;
			}
		}
		addsonskipintlit_272729((*result).typ, typ);
		{
			NI i_492575;
			NI HEX3Atmp_492588;
			NI LOC32;
			NI res_492591;
			i_492575 = 0;
			HEX3Atmp_492588 = 0;
			LOC32 = 0;
			LOC32 = len_224098(result);
			HEX3Atmp_492588 = (LOC32 - 1);
			res_492591 = ((NI) 0);
			{
				while (1) {
					if (!(res_492591 <= HEX3Atmp_492588)) goto LA34;
					i_492575 = res_492591;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_492575]), fitnode_455245(c, typ, (*result).kindU.S6.sons->data[i_492575]));
					res_492591 += ((NI) 1);
				} LA34: ;
			}
		}
	}
	LA1: ;
	LOC35 = 0;
	LOC35 = sonslen_226387(result);
	LOC36 = 0;
	LOC36 = getsystype_272190(((NU8) 31));
	asgnRefNoCycle((void**) (&(*(*result).typ).sons->data[((NI) 0)]), makerangetype_279193(c, IL64(0), ((NI64) ((NI)(LOC35 - ((NI) 1)))), (*n).info, LOC36));
	return result;
}

N_NIMCALL(Tnode223809*, semlambda_455261)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	Tsym223841* s;
	Tscope223835* LOC13;
	Tnode223809* gp;
{	result = 0;
	result = semprocannotation_486960(c, n, TMP3574);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = n;
	checksonslen_279260(n, ((NI) 7));
	s = 0;
	{
		Tnode223809* LOC7;
		Tsym223841* LOC10;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_224244(n, ((NI) 0));
		if (!!(((*LOC7).kind == ((NU8) 3)))) goto LA8;
		LOC10 = 0;
		LOC10 = getcurrowner_278258();
		s = newsym_224656(((NU8) 12), idanon_196495, LOC10, (*n).info);
		asgnRefNoCycle((void**) (&(*s).ast), n);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325(s));
	}
	goto LA5;
	LA8: ;
	{
		Tnode223809* LOC12;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_224244(n, ((NI) 0));
		s = (*LOC12).kindU.S4.sym;
	}
	LA5: ;
	pushowner_278263(s);
	LOC13 = 0;
	LOC13 = openscope_284091(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_469425(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA14;
	LA16: ;
	{
		gp = newnodei_225351(((NU8) 75), (*n).info);
	}
	LA14: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA21;
		semparamlist_455284(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NIM_BOOL LOC25;
			NI LOC26;
			LOC25 = 0;
			LOC26 = 0;
			LOC26 = sonslen_226387(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_467542(c, (*n).info, NIM_NIL));
	}
	LA19: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA33;
		pragma_295082(c, s, (*n).kindU.S6.sons->data[((NI) 4)], TMP3574);
	}
	LA33: ;
	(*s).options = goptions_165130;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1)))) goto LA37;
		{
			if (!(((*s).flags &(1<<((((NU8) 5))&31)))!=0)) goto LA41;
			localerror_194128((*(*n).kindU.S6.sons->data[((NI) 6)]).info, ((NU16) 141), (*(*s).name).s);
		}
		LA41: ;
		{
			NIM_BOOL LOC45;
			NI LOC46;
			NIM_BOOL LOC48;
			NI LOC49;
			Tnode223809* LOC51;
			Tnode223809* sembody;
			Tnode223809* LOC54;
			LOC45 = 0;
			LOC46 = 0;
			LOC46 = len_224098(gp);
			LOC45 = (LOC46 == ((NI) 0));
			if (LOC45) goto LA47;
			LOC48 = 0;
			LOC49 = 0;
			LOC49 = len_224098(gp);
			LOC48 = (LOC49 == ((NI) 1));
			if (!(LOC48)) goto LA50;
			LOC51 = 0;
			LOC51 = HEX5BHEX5D_224244(gp, ((NI) 0));
			LOC48 = (((*(*LOC51).typ).flags &(1<<((((NU8) 10))&31)))!=0);
			LA50: ;
			LOC45 = LOC48;
			LA47: ;
			if (!LOC45) goto LA52;
			pushproccon_278361(c, s);
			addresult_486830(c, (*(*s).typ).sons->data[((NI) 0)], (*n).info, ((NU8) 12));
			addresultnode_486864(c, n);
			LOC54 = 0;
			LOC54 = semprocbody_455238(c, (*n).kindU.S6.sons->data[((NI) 6)]);
			sembody = hlobody_457161(c, LOC54);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_415225((*c).module, sembody, s));
			popproccon_278393(c);
		}
		goto LA43;
		LA52: ;
		{
			if (!!(((flags &(1<<((((NU8) 8))&15)))!=0))) goto LA56;
			localerror_194128((*n).info, ((NU16) 232), ((NimStringDesc*) &TMP3115));
		}
		goto LA43;
		LA56: ;
		LA43: ;
		sideeffectscheck_458116(c, s);
	}
	goto LA35;
	LA37: ;
	{
		localerror_194128((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA35: ;
	closescope_284111(c);
	popowner_278269();
	asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semdo_487263)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode223809* LOC4;
		Tnode223809* LOC6;
		Tnode223809* LOC9;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_224244(n, ((NI) 2));
		LOC3 = ((*LOC4).kind == ((NU8) 1));
		if (!(LOC3)) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_224244(n, ((NI) 3));
		LOC3 = ((*LOC6).kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_224244(n, ((NI) 6));
		result = semstmt_455277(c, LOC9);
	}
	goto LA1;
	LA7: ;
	{
		result = semlambda_455261(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, iscastable_491583)(Ttype223847* dst, Ttype223847* src) {
	NIM_BOOL result;
	NI64 dstsize;
	NI64 srcsize;
{	result = 0;
	{
		Ttype223847* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_227167(dst, IL64(211106232576256));
		if (!((*LOC3).kind == ((NU8) 27))) goto LA4;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA4: ;
	dstsize = 0;
	srcsize = 0;
	dstsize = computesize_253184(dst);
	srcsize = computesize_253184(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: ;
	{
		Ttype223847* LOC14;
		LOC14 = 0;
		LOC14 = typeallowed_261654(dst, ((NU8) 3));
		if (!!((LOC14 == NIM_NIL))) goto LA15;
		result = NIM_FALSE;
	}
	goto LA6;
	LA15: ;
	{
		NIM_BOOL LOC18;
		NIM_BOOL LOC19;
		Ttype223847* LOC21;
		Ttype223847* LOC23;
		LOC18 = 0;
		LOC19 = 0;
		LOC19 = (srcsize <= dstsize);
		if (LOC19) goto LA20;
		LOC21 = 0;
		LOC21 = skiptypes_227167(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_227167(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_172653)));
	}
	LA28: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semcast_491825)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* LOC1;
	Tnode223809* LOC2;
	result = 0;
	checksonslen_279260(n, ((NI) 2));
	result = newnodei_225351(((NU8) 61), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), semtypenode_455269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL));
	LOC1 = 0;
	LOC1 = copytree_228028((*n).kindU.S6.sons->data[((NI) 0)]);
	addson_225819(result, LOC1);
	LOC2 = 0;
	LOC2 = semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	addson_225819(result, LOC2);
	{
		NIM_BOOL LOC5;
		NimStringDesc* LOC8;
		LOC5 = 0;
		LOC5 = iscastable_491583((*result).typ, (*(*result).kindU.S6.sons->data[((NI) 1)]).typ);
		if (!!(LOC5)) goto LA6;
		LOC8 = 0;
		LOC8 = typetostring_253032((*result).typ, ((NU8) 0));
		localerror_194128((*result).info, ((NU16) 96), LOC8);
	}
	LA6: ;
	return result;
}

static N_INLINE(void, semdestructorcheck_480851)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((flags &(1<<((((NU8) 6))&15)))!=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;
		{
			Ttype223847* LOC9;
			LOC9 = 0;
			LOC9 = instantiatedestructor_479822(c, (*n).typ);
			if (!!((LOC9 == NIM_NIL))) goto LA10;
			localerror_194128((*n).info, ((NU16) 264), ((NimStringDesc*) &TMP3115));
		}
		LA10: ;
	}
	LA5: ;
}

N_NIMCALL(Tnode223809*, semexprbranch_481004)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = semexpr_455201(c, n, 0);
	{
		if (!!(((*result).typ == NIM_NIL))) goto LA3;
		semprocvarcheck_479766(c, result);
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA7;
			result = newderef_400024(result);
		}
		LA7: ;
		semdestructorcheck_480851(c, result, 0);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode223809*, semexprbranchscope_481035)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tscope223835* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	result = semexprbranch_481004(c, n);
	closescope_284111(c);
	return result;
}

N_NIMCALL(Tnode223809*, semif_481260)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Ttype223847* typ;
	NIM_BOOL haselse;
	result = 0;
	result = n;
	typ = commontypebegin_455472;
	haselse = NIM_FALSE;
	{
		NI i_481279;
		NI HEX3Atmp_481636;
		NI LOC2;
		NI res_481639;
		i_481279 = 0;
		HEX3Atmp_481636 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_481636 = (NI)(LOC2 - ((NI) 1));
		res_481639 = ((NI) 0);
		{
			while (1) {
				Tnode223809* it;
				if (!(res_481639 <= HEX3Atmp_481636)) goto LA4;
				i_481279 = res_481639;
				it = (*n).kindU.S6.sons->data[i_481279];
				{
					NI LOC7;
					Tscope223835* LOC10;
					Tnode223809* LOC11;
					LOC7 = 0;
					LOC7 = len_224098(it);
					if (!(LOC7 == ((NI) 2))) goto LA8;
					LOC10 = 0;
					LOC10 = openscope_284091(c);
					LOC11 = 0;
					LOC11 = semexprwithtype_455211(c, (*it).kindU.S6.sons->data[((NI) 0)], 0);
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), forcebool_462829(c, LOC11));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), semexprbranch_481004(c, (*it).kindU.S6.sons->data[((NI) 1)]));
					typ = commontype_455477(typ, (*(*it).kindU.S6.sons->data[((NI) 1)]).typ);
					closescope_284111(c);
				}
				goto LA5;
				LA8: ;
				{
					NI LOC13;
					LOC13 = 0;
					LOC13 = len_224098(it);
					if (!(LOC13 == ((NI) 1))) goto LA14;
					haselse = NIM_TRUE;
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_481035(c, (*it).kindU.S6.sons->data[((NI) 0)]));
					typ = commontype_455477(typ, (*(*it).kindU.S6.sons->data[((NI) 0)]).typ);
				}
				goto LA5;
				LA14: ;
				{
					illformedast_279240(it);
				}
				LA5: ;
				res_481639 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NIM_BOOL LOC19;
		NIM_BOOL LOC20;
		LOC19 = 0;
		LOC20 = 0;
		LOC20 = isemptytype_228932(typ);
		if (LOC20) goto LA21;
		LOC20 = ((*typ).kind == ((NU8) 5));
		LA21: ;
		LOC19 = LOC20;
		if (LOC19) goto LA22;
		LOC19 = !(haselse);
		LA22: ;
		if (!LOC19) goto LA23;
		{
			Tnode223809* it_481617;
			it_481617 = 0;
			{
				NI i_481647;
				NI HEX3Atmp_481649;
				NI LOC27;
				NI res_481651;
				i_481647 = 0;
				HEX3Atmp_481649 = 0;
				LOC27 = 0;
				LOC27 = len_224098(n);
				HEX3Atmp_481649 = (LOC27 - 1);
				res_481651 = ((NI) 0);
				{
					while (1) {
						Tnode223809* LOC30;
						if (!(res_481651 <= HEX3Atmp_481649)) goto LA29;
						i_481647 = res_481651;
						it_481617 = (*n).kindU.S6.sons->data[i_481647];
						LOC30 = 0;
						LOC30 = lastson_226406(it_481617);
						discardcheck_481156(c, LOC30);
						res_481651 += ((NI) 1);
					} LA29: ;
				}
			}
		}
		(*result).kind = ((NU8) 92);
		{
			if (!(typ == enforcevoidcontext_479405)) goto LA33;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_479405);
		}
		LA33: ;
	}
	goto LA17;
	LA23: ;
	{
		{
			Tnode223809* it_481630;
			it_481630 = 0;
			{
				NI i_481658;
				NI HEX3Atmp_481660;
				NI LOC38;
				NI res_481662;
				i_481658 = 0;
				HEX3Atmp_481660 = 0;
				LOC38 = 0;
				LOC38 = len_224098(n);
				HEX3Atmp_481660 = (LOC38 - 1);
				res_481662 = ((NI) 0);
				{
					while (1) {
						NI j;
						NI LOC41;
						if (!(res_481662 <= HEX3Atmp_481660)) goto LA40;
						i_481658 = res_481662;
						it_481630 = (*n).kindU.S6.sons->data[i_481658];
						LOC41 = 0;
						LOC41 = len_224098(it_481630);
						j = (NI)(LOC41 - ((NI) 1));
						asgnRefNoCycle((void**) (&(*it_481630).kindU.S6.sons->data[j]), fitnode_455245(c, typ, (*it_481630).kindU.S6.sons->data[j]));
						res_481662 += ((NI) 1);
					} LA40: ;
				}
			}
		}
		(*result).kind = ((NU8) 48);
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA17: ;
	return result;
}

N_NIMCALL(Tnode223809*, semtableconstr_498640)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	NI lastkey;
	result = 0;
	result = newnodei_225351(((NU8) 41), (*n).info);
	lastkey = ((NI) 0);
	{
		NI i_498657;
		NI HEX3Atmp_498701;
		NI LOC2;
		NI res_498704;
		i_498657 = 0;
		HEX3Atmp_498701 = 0;
		LOC2 = 0;
		LOC2 = len_224098(n);
		HEX3Atmp_498701 = (NI)(LOC2 - ((NI) 1));
		res_498704 = ((NI) 0);
		{
			while (1) {
				Tnode223809* x;
				if (!(res_498704 <= HEX3Atmp_498701)) goto LA4;
				i_498657 = res_498704;
				x = (*n).kindU.S6.sons->data[i_498657];
				{
					NIM_BOOL LOC7;
					NI LOC9;
					Tnode223809* pair;
					Tnode223809* LOC16;
					Tnode223809* LOC17;
					LOC7 = 0;
					LOC7 = ((*x).kind == ((NU8) 34));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = sonslen_226387(x);
					LOC7 = (LOC9 == ((NI) 2));
					LA8: ;
					if (!LOC7) goto LA10;
					{
						NI j_498681;
						NI HEX3Atmp_498694;
						NI res_498697;
						j_498681 = 0;
						HEX3Atmp_498694 = 0;
						HEX3Atmp_498694 = (NI)(i_498657 - ((NI) 1));
						res_498697 = lastkey;
						{
							while (1) {
								Tnode223809* pair;
								Tnode223809* LOC15;
								if (!(res_498697 <= HEX3Atmp_498694)) goto LA14;
								j_498681 = res_498697;
								pair = newnodei_225351(((NU8) 37), (*x).info);
								add_224165(pair, (*n).kindU.S6.sons->data[j_498681]);
								LOC15 = 0;
								LOC15 = HEX5BHEX5D_224244(x, ((NI) 1));
								add_224165(pair, LOC15);
								add_224165(result, pair);
								res_498697 += ((NI) 1);
							} LA14: ;
						}
					}
					pair = newnodei_225351(((NU8) 37), (*x).info);
					LOC16 = 0;
					LOC16 = HEX5BHEX5D_224244(x, ((NI) 0));
					add_224165(pair, LOC16);
					LOC17 = 0;
					LOC17 = HEX5BHEX5D_224244(x, ((NI) 1));
					add_224165(pair, LOC17);
					add_224165(result, pair);
					lastkey = (NI)(i_498657 + ((NI) 1));
				}
				LA10: ;
				res_498704 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NI LOC20;
		LOC20 = 0;
		LOC20 = len_224098(n);
		if (!!((lastkey == LOC20))) goto LA21;
		illformedast_279240(n);
	}
	LA21: ;
	result = semexpr_455201(c, result, 0);
	return result;
}

N_NIMCALL(Tnode223809*, semstaticexpr_494274)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* a;
	result = 0;
	a = semexpr_455201(c, (*n).kindU.S6.sons->data[((NI) 0)], 0);
	result = evalstaticexpr_444232((*c).module, a, (*(*c).p).owner);
	{
		NimStringDesc* LOC5;
		if (!result == 0) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_245059(n, 0);
		localerror_194128((*n).info, ((NU16) 213), LOC5);
		result = emptynode_224807;
	}
	goto LA1;
	LA3: ;
	{
		result = fixuptypeaftereval_456201(c, result, a);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, semblock_499450)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tscope223835* LOC1;
	result = 0;
	result = n;
	(*(*c).p).nestedblockcounter += ((NI) 1);
	checksonslen_279260(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	{
		Tsym223841* labl;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA4;
		labl = newsymg_455916(((NU8) 22), (*n).kindU.S6.sons->data[((NI) 0)], c);
		{
			if (!!((((*labl).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA8;
			adddecl_284607(c, labl);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_225338(labl, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
		}
		LA8: ;
		suggestsym_396733((*(*n).kindU.S6.sons->data[((NI) 0)]).info, labl);
	}
	LA4: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexpr_455201(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_228932((*n).typ);
		if (!LOC12) goto LA13;
		(*n).kind = ((NU8) 112);
	}
	goto LA10;
	LA13: ;
	{
		(*n).kind = ((NU8) 127);
	}
	LA10: ;
	closescope_284111(c);
	(*(*c).p).nestedblockcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Tnode223809*, semtry_482115)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Ttype223847* typ_482129;
	Intset220056 check;
	NI last;
	NI LOC1;
	result = 0;
	result = n;
	(*(*c).p).intrystmt += ((NI) 1);
	checkminsonslen_279270(n, ((NI) 2));
	typ_482129 = commontypebegin_455472;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_481035(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	typ_482129 = commontype_455477(typ_482129, (*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_220927((&check));
	LOC1 = 0;
	LOC1 = sonslen_226387(n);
	last = (NI)(LOC1 - ((NI) 1));
	{
		NI i_482147;
		NI res_482355;
		i_482147 = 0;
		res_482355 = ((NI) 1);
		{
			while (1) {
				Tnode223809* a;
				NI length;
				if (!(res_482355 <= last)) goto LA4;
				i_482147 = res_482355;
				a = (*n).kindU.S6.sons->data[i_482147];
				checkminsonslen_279270(a, ((NI) 1));
				length = sonslen_226387(a);
				{
					if (!((*a).kind == ((NU8) 87))) goto LA7;
					{
						NIM_BOOL LOC11;
						Slice90369 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_105290(((NI) 0), ((NI) 0));
						HEX5BHEX5DHEX3D_414817((&(*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_226387(a);
					}
					LA13: ;
					{
						NI j_482212;
						NI HEX3Atmp_482346;
						NI res_482349;
						j_482212 = 0;
						HEX3Atmp_482346 = 0;
						HEX3Atmp_482346 = (NI)(length - ((NI) 2));
						res_482349 = ((NI) 0);
						{
							while (1) {
								Ttype223847* typ;
								if (!(res_482349 <= HEX3Atmp_482346)) goto LA18;
								j_482212 = res_482349;
								typ = semtypenode_455269(c, (*a).kindU.S6.sons->data[j_482212], NIM_NIL);
								{
									if (!((*typ).kind == ((NU8) 22))) goto LA21;
									typ = (*typ).sons->data[((NI) 0)];
								}
								LA21: ;
								{
									if (!!(((*typ).kind == ((NU8) 17)))) goto LA25;
									localerror_194128((*(*a).kindU.S6.sons->data[j_482212]).info, ((NU16) 116), ((NimStringDesc*) &TMP3115));
								}
								LA25: ;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_482212]), newnodei_225351(((NU8) 4), (*(*a).kindU.S6.sons->data[j_482212]).info));
								asgnRefNoCycle((void**) (&(*(*a).kindU.S6.sons->data[j_482212]).typ), typ);
								{
									NIM_BOOL LOC29;
									LOC29 = 0;
									LOC29 = containsorincl_220898((&check), (*typ).Sup.id);
									if (!LOC29) goto LA30;
									localerror_194128((*(*a).kindU.S6.sons->data[j_482212]).info, ((NU16) 36), ((NimStringDesc*) &TMP3115));
								}
								LA30: ;
								res_482349 += ((NI) 1);
							} LA18: ;
						}
					}
				}
				goto LA5;
				LA7: ;
				{
					if (!!(((*a).kind == ((NU8) 107)))) goto LA33;
					illformedast_279240(n);
				}
				goto LA5;
				LA33: ;
				LA5: ;
				asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]), semexprbranchscope_481035(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]));
				{
					if (!!(((*a).kind == ((NU8) 107)))) goto LA37;
					typ_482129 = commontype_455477(typ_482129, (*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).typ);
				}
				goto LA35;
				LA37: ;
				{
					last -= ((NI) 1);
				}
				LA35: ;
				res_482355 += ((NI) 1);
			} LA4: ;
		}
	}
	(*(*c).p).intrystmt -= ((NI) 1);
	{
		NIM_BOOL LOC42;
		LOC42 = 0;
		LOC42 = isemptytype_228932(typ_482129);
		if (LOC42) goto LA43;
		LOC42 = ((*typ_482129).kind == ((NU8) 5));
		LA43: ;
		if (!LOC42) goto LA44;
		discardcheck_481156(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_482299;
			NI HEX3Atmp_482360;
			NI LOC47;
			NI res_482363;
			i_482299 = 0;
			HEX3Atmp_482360 = 0;
			LOC47 = 0;
			LOC47 = len_224098(n);
			HEX3Atmp_482360 = (NI)(LOC47 - ((NI) 1));
			res_482363 = ((NI) 1);
			{
				while (1) {
					Tnode223809* LOC50;
					if (!(res_482363 <= HEX3Atmp_482360)) goto LA49;
					i_482299 = res_482363;
					LOC50 = 0;
					LOC50 = lastson_226406((*n).kindU.S6.sons->data[i_482299]);
					discardcheck_481156(c, LOC50);
					res_482363 += ((NI) 1);
				} LA49: ;
			}
		}
		{
			if (!(typ_482129 == enforcevoidcontext_479405)) goto LA53;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_479405);
		}
		LA53: ;
	}
	goto LA40;
	LA44: ;
	{
		{
			Tnode223809* LOC58;
			Tnode223809* LOC61;
			Tnode223809* LOC62;
			LOC58 = 0;
			LOC58 = lastson_226406(n);
			if (!((*LOC58).kind == ((NU8) 107))) goto LA59;
			LOC61 = 0;
			LOC61 = lastson_226406(n);
			LOC62 = 0;
			LOC62 = lastson_226406(LOC61);
			discardcheck_481156(c, LOC62);
		}
		LA59: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), fitnode_455245(c, typ_482129, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_482337;
			NI res_482370;
			i_482337 = 0;
			res_482370 = ((NI) 1);
			{
				while (1) {
					Tnode223809* it;
					NI j;
					NI LOC66;
					if (!(res_482370 <= last)) goto LA65;
					i_482337 = res_482370;
					it = (*n).kindU.S6.sons->data[i_482337];
					LOC66 = 0;
					LOC66 = len_224098(it);
					j = (NI)(LOC66 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[j]), fitnode_455245(c, typ_482129, (*it).kindU.S6.sons->data[j]));
					res_482370 += ((NI) 1);
				} LA65: ;
			}
		}
		asgnRefNoCycle((void**) (&(*result).typ), typ_482129);
	}
	LA40: ;
	return result;
}

N_NIMCALL(Tnode223809*, semstmtlist_489286)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	NI length;
	NIM_BOOL voidcontext;
	NI last;
{	result = 0;
	result = n;
	(*result).kind = ((NU8) 115);
	length = sonslen_226387(n);
	voidcontext = NIM_FALSE;
	last = (NI)(length - ((NI) 1));
	{
		NI i_489309;
		NI HEX3Atmp_489813;
		NI res_489816;
		i_489309 = 0;
		HEX3Atmp_489813 = 0;
		HEX3Atmp_489813 = (NI)(length - ((NI) 1));
		res_489816 = ((NI) 0);
		{
			while (1) {
				if (!(res_489816 <= HEX3Atmp_489813)) goto LA3;
				i_489309 = res_489816;
				{
					NU8 k;
					k = (*(*n).kindU.S6.sons->data[i_489309]).kind;
					switch (k) {
					case ((NU8) 107):
					case ((NU8) 87):
					{
						Tnode223809* deferpart;
						Tnode223809* trystmt;
						Tnode223809* body;
						deferpart = 0;
						{
							if (!(k == ((NU8) 105))) goto LA8;
							deferpart = newnodei_225351(((NU8) 107), (*(*n).kindU.S6.sons->data[i_489309]).info);
							add_224165(deferpart, (*(*n).kindU.S6.sons->data[i_489309]).kindU.S6.sons->data[((NI) 0)]);
						}
						goto LA6;
						LA8: ;
						{
							if (!(k == ((NU8) 107))) goto LA11;
							message_194161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3575));
							deferpart = (*n).kindU.S6.sons->data[i_489309];
						}
						goto LA6;
						LA11: ;
						{
							message_194161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3576));
							deferpart = (*n).kindU.S6.sons->data[i_489309];
						}
						LA6: ;
						trystmt = newnodei_225351(((NU8) 106), (*(*n).kindU.S6.sons->data[i_489309]).info);
						body = newnodei_225351(((NU8) 115), (*(*n).kindU.S6.sons->data[i_489309]).info);
						{
							NI LOC16;
							NI LOC19;
							Slice90369 LOC20;
							LOC16 = 0;
							LOC16 = sonslen_226387(n);
							if (!(i_489309 < (NI)(LOC16 - ((NI) 1)))) goto LA17;
							LOC19 = 0;
							LOC19 = len_224098(n);
							LOC20 = HEX2EHEX2E_105290((NI)(i_489309 + ((NI) 1)), (NI)(LOC19 - ((NI) 1)));
							asgnRefNoCycle((void**) (&(*body).kindU.S6.sons), HEX5BHEX5D_414753((*n).kindU.S6.sons, LOC20));
						}
						LA17: ;
						addson_225819(trystmt, body);
						addson_225819(trystmt, deferpart);
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_489309]), semtry_482115(c, trystmt));
						(*n).kindU.S6.sons = (Tnodeseq223803*) setLengthSeq(&((*n).kindU.S6.sons)->Sup, sizeof(Tnode223809*), ((NI) ((NI)(i_489309 + ((NI) 1)))));
						asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[i_489309]).typ);
						goto BeforeRet;
					}
					break;
					default:
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_489309]), semexpr_455201(c, (*n).kindU.S6.sons->data[i_489309], 0));
						{
							NIM_BOOL LOC24;
							Tnode223809* LOC26;
							Tnode223809* LOC29;
							LOC24 = 0;
							LOC24 = (((NI) 0) < (*c).intypeclass);
							if (!(LOC24)) goto LA25;
							LOC26 = 0;
							LOC26 = HEX5BHEX5D_224244(n, i_489309);
							LOC24 = !(((*LOC26).typ == NIM_NIL));
							LA25: ;
							if (!LOC24) goto LA27;
							LOC29 = 0;
							LOC29 = HEX5BHEX5D_224244(n, i_489309);
							switch ((*(*LOC29).typ).kind) {
							case ((NU8) 1):
							{
								Tnode223809* verdict;
								Tnode223809* LOC31;
								LOC31 = 0;
								LOC31 = HEX5BHEX5D_224244(n, i_489309);
								verdict = semconstexpr_456485(c, LOC31);
								{
									if (!((*verdict).kindU.S1.intval == IL64(0))) goto LA34;
									localerror_194139((*result).info, ((NimStringDesc*) &TMP3577));
								}
								LA34: ;
							}
							break;
							case ((NU8) 60):
							{
								goto LA4;
							}
							break;
							default:
							{
							}
							break;
							}
						}
						LA27: ;
						{
							if (!((*(*n).kindU.S6.sons->data[i_489309]).typ == enforcevoidcontext_479405)) goto LA40;
							voidcontext = NIM_TRUE;
							asgnRefNoCycle((void**) (&(*n).typ), enforcevoidcontext_479405);
						}
						LA40: ;
						{
							NIM_BOOL LOC44;
							NIM_BOOL LOC46;
							LOC44 = 0;
							LOC44 = (i_489309 == last);
							if (!(LOC44)) goto LA45;
							LOC46 = 0;
							LOC46 = (length == ((NI) 1));
							if (LOC46) goto LA47;
							LOC46 = ((flags &(1<<((((NU8) 7))&15)))!=0);
							LA47: ;
							LOC44 = LOC46;
							LA45: ;
							if (!LOC44) goto LA48;
							asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[i_489309]).typ);
							{
								NIM_BOOL LOC52;
								LOC52 = 0;
								LOC52 = isemptytype_228932((*n).typ);
								if (!!(LOC52)) goto LA53;
								(*n).kind = ((NU8) 126);
							}
							LA53: ;
						}
						goto LA42;
						LA48: ;
						{
							NIM_BOOL LOC56;
							LOC56 = 0;
							LOC56 = !((i_489309 == last));
							if (LOC56) goto LA57;
							LOC56 = voidcontext;
							LA57: ;
							if (!LOC56) goto LA58;
							discardcheck_481156(c, (*n).kindU.S6.sons->data[i_489309]);
						}
						goto LA42;
						LA58: ;
						{
							asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[i_489309]).typ);
							{
								NIM_BOOL LOC63;
								LOC63 = 0;
								LOC63 = isemptytype_228932((*n).typ);
								if (!!(LOC63)) goto LA64;
								(*n).kind = ((NU8) 126);
							}
							LA64: ;
						}
						LA42: ;
						switch ((*(*n).kindU.S6.sons->data[i_489309]).kind) {
						case ((NU8) 108):
						case ((NU8) 109):
						case ((NU8) 110):
						case ((NU8) 111):
						{
							{
								NI j_489436;
								NI HEX3Atmp_489805;
								NI HEX3Atmp_489806;
								NI res_489809;
								j_489436 = 0;
								HEX3Atmp_489805 = 0;
								HEX3Atmp_489806 = 0;
								HEX3Atmp_489805 = (NI)(i_489309 + ((NI) 1));
								HEX3Atmp_489806 = (NI)(length - ((NI) 1));
								res_489809 = HEX3Atmp_489805;
								{
									while (1) {
										if (!(res_489809 <= HEX3Atmp_489806)) goto LA69;
										j_489436 = res_489809;
										switch ((*(*n).kindU.S6.sons->data[j_489436]).kind) {
										case ((NU8) 90):
										case ((NU8) 125):
										case ((NU8) 23):
										case ((NU8) 1):
										{
										}
										break;
										default:
										{
											localerror_194128((*(*n).kindU.S6.sons->data[j_489436]).info, ((NU16) 42), ((NimStringDesc*) &TMP3115));
										}
										break;
										}
										res_489809 += ((NI) 1);
									} LA69: ;
								}
							}
						}
						break;
						default:
						{
						}
						break;
						}
					}
					break;
					}
				} LA4: ;
				res_489816 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NIM_BOOL LOC75;
		NI LOC76;
		LOC75 = 0;
		LOC76 = 0;
		LOC76 = len_224098(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(Tnode223809*, semraise_485501)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = n;
	checksonslen_279260(n, ((NI) 1));
	{
		Ttype223847* typ;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_455211(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_194128((*n).info, ((NU16) 116), ((NimStringDesc*) &TMP3115));
		}
		LA9: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, addtovarsection_483706)(Tcontext278023* c, Tnode223809** result, Tnode223809* orig, Tnode223809* identdefs) {
	NI L;
	Tnode223809* value;
	L = len_224098(identdefs);
	value = HEX5BHEX5D_224244(identdefs, (NI)(L - ((NI) 1)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*value).typ == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = (((*(*value).typ).flags &(1<<((((NU8) 26))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		asgnRefNoCycle((void**) (&(*identdefs).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), emptynode_224807);
		{
			Tnode223809* oldresult;
			if (!!(((*(*result)).kind == ((NU8) 115)))) goto LA9;
			oldresult = (*result);
			add_224165(oldresult, identdefs);
			unsureAsgnRef((void**) (&(*result)), newnodei_225351(((NU8) 115), (*(*result)).info));
			add_224165((*result), oldresult);
		}
		goto LA7;
		LA9: ;
		{
			Tnode223809* o;
			o = copynode_227660(orig);
			add_224165(o, identdefs);
			add_224165((*result), o);
		}
		LA7: ;
		{
			NI i_483764;
			NI HEX3Atmp_483780;
			NI res_483783;
			i_483764 = 0;
			HEX3Atmp_483780 = 0;
			HEX3Atmp_483780 = (NI)(L - ((NI) 3));
			res_483783 = ((NI) 0);
			{
				while (1) {
					Tnode223809* LOC15;
					Tnode223809* LOC16;
					if (!(res_483783 <= HEX3Atmp_483780)) goto LA14;
					i_483764 = res_483783;
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_224244(identdefs, i_483764);
					LOC16 = 0;
					LOC16 = overloadedasgn_483696(c, LOC15, value);
					add_224165((*result), LOC16);
					res_483783 += ((NI) 1);
				} LA14: ;
			}
		}
	}
	goto LA1;
	LA5: ;
	{
		Tnode223809* o;
		if (!((*(*result)).kind == ((NU8) 115))) goto LA18;
		o = copynode_227660(orig);
		add_224165(o, identdefs);
		add_224165((*result), o);
	}
	goto LA1;
	LA18: ;
	{
		add_224165((*result), identdefs);
	}
	LA1: ;
}

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

N_NIMCALL(Tsym223841*, findshadowedvar_482435)(Tcontext278023* c, Tsym223841* v) {
	Tsym223841* result;
{	result = 0;
	{
		Tscope223835* scope_482440;
		Tscope223835* HEX3Atmp_482477;
		Tscope223835* current_482480;
		scope_482440 = 0;
		HEX3Atmp_482477 = 0;
		HEX3Atmp_482477 = (*(*c).currentscope).parent;
		current_482480 = HEX3Atmp_482477;
		{
			while (1) {
				Tsym223841* shadowed;
				if (!!((current_482480 == NIM_NIL))) goto LA3;
				scope_482440 = current_482480;
				{
					if (!(scope_482440 == (*c).toplevelscope)) goto LA6;
					goto LA1;
				}
				LA6: ;
				shadowed = strtableget_231111((*scope_482440).symbols, (*v).name);
				{
					NIM_BOOL LOC10;
					LOC10 = 0;
					LOC10 = !((shadowed == NIM_NIL));
					if (!(LOC10)) goto LA11;
					LOC10 = ((2099976 &(1<<(((*shadowed).kind)&31)))!=0);
					LA11: ;
					if (!LOC10) goto LA12;
					result = shadowed;
					goto BeforeRet;
				}
				LA12: ;
				current_482480 = (*current_482480).parent;
			} LA3: ;
		}
	} LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, identwithin_482493)(Tnode223809* n, Tident196021* s) {
	NIM_BOOL result;
	NIM_BOOL LOC10;
{	result = 0;
	{
		NI i_482509;
		NI HEX3Atmp_482523;
		NI LOC2;
		NI res_482526;
		i_482509 = 0;
		HEX3Atmp_482523 = 0;
		LOC2 = 0;
		LOC2 = safelen_224126(n);
		HEX3Atmp_482523 = (NI)(LOC2 - ((NI) 1));
		res_482526 = ((NI) 0);
		{
			while (1) {
				if (!(res_482526 <= HEX3Atmp_482523)) goto LA4;
				i_482509 = res_482526;
				{
					NIM_BOOL LOC7;
					LOC7 = 0;
					LOC7 = identwithin_482493((*n).kindU.S6.sons->data[i_482509], s);
					if (!LOC7) goto LA8;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA8: ;
				res_482526 += ((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(Tnode223809*, createdestructorcall_480601)(Tcontext278023* c, Tsym223841* s) {
	Tnode223809* result;
	Ttype223847* vartyp;
	Ttype223847* destructablet;
{	result = 0;
	vartyp = (*s).typ;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (vartyp == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = (((*s).flags &(1<<((((NU8) 3))&31)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	destructablet = instantiatedestructor_479822(c, vartyp);
	{
		Tnode223809* call;
		Tnodeseq223803* LOC11;
		TY279106 LOC12;
		Tnode223809* LOC13;
		Tnodeseq223803* LOC14;
		TY241880 LOC15;
		if (!!((destructablet == NIM_NIL))) goto LA9;
		LOC11 = 0;
		LOC11 = (Tnodeseq223803*) newSeq((&NTI223803), 2);
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = usesym_396850((*destructablet).destructor);
		LOC12[1] = usesym_396850(s);
		asgnRefNoCycle((void**) (&LOC11->data[0]), LOC12[0]);
		asgnRefNoCycle((void**) (&LOC11->data[1]), LOC12[1]);
		LOC13 = 0;
		LOC13 = newnode_225607(((NU8) 27), (*s).info, LOC11, NIM_NIL);
		call = semstmt_455277(c, LOC13);
		LOC14 = 0;
		LOC14 = (Tnodeseq223803*) newSeq((&NTI223803), 1);
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = call;
		asgnRefNoCycle((void**) (&LOC14->data[0]), LOC15[0]);
		result = newnode_225607(((NU8) 105), (*s).info, LOC14, NIM_NIL);
	}
	LA9: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, adddefer_483799)(Tcontext278023* c, Tnode223809** result, Tsym223841* s) {
	Tnode223809* deferdestructorcall;
	deferdestructorcall = createdestructorcall_480601(c, s);
	{
		if (!!((deferdestructorcall == NIM_NIL))) goto LA3;
		{
			Tnode223809* oldresult;
			if (!!(((*(*result)).kind == ((NU8) 115)))) goto LA7;
			oldresult = (*result);
			unsureAsgnRef((void**) (&(*result)), newnodei_225351(((NU8) 115), (*(*result)).info));
			add_224165((*result), oldresult);
		}
		LA7: ;
		add_224165((*result), deferdestructorcall);
	}
	LA3: ;
}

N_NIMCALL(void, checknilable_482604)(Tsym223841* v) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*v).flags &(1<<((((NU8) 3))&31)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = !(((196608 & (*(*v).typ).flags) == 0));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!(*v).ast == 0) goto LA9;
			message_194161((*v).info, ((NU16) 257), (*(*v).name).s);
		}
		goto LA7;
		LA9: ;
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = (((*(*v).typ).flags &(1<<((((NU8) 16))&31)))!=0);
			if (!(LOC12)) goto LA13;
			LOC12 = !((((*(*(*v).ast).typ).flags &(1<<((((NU8) 16))&31)))!=0));
			LA13: ;
			if (!LOC12) goto LA14;
			message_194161((*v).info, ((NU16) 257), (*(*v).name).s);
		}
		goto LA7;
		LA14: ;
		LA7: ;
	}
	LA5: ;
}

N_NIMCALL(Tnode223809*, semvarorlet_483852)(Tcontext278023* c, Tnode223809* n, NU8 symkind) {
	Tnode223809* result;
	Tnode223809* b;
	NIM_BOOL hascompiletime;
	result = 0;
	b = 0;
	result = copynode_227660(n);
	hascompiletime = NIM_FALSE;
	{
		NI i_483872;
		NI HEX3Atmp_484352;
		NI LOC2;
		NI res_484355;
		i_483872 = 0;
		HEX3Atmp_484352 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_484352 = (NI)(LOC2 - ((NI) 1));
		res_484355 = ((NI) 0);
		{
			while (1) {
				if (!(res_484355 <= HEX3Atmp_484352)) goto LA4;
				i_483872 = res_484355;
				{
					Tnode223809* a;
					NI length;
					Ttype223847* typ;
					Tnode223809* def;
					Ttype223847* tup;
					a = (*n).kindU.S6.sons->data[i_483872];
					{
						if (!(gcmd_165134 == ((NU8) 14))) goto LA8;
						suggeststmt_397098(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_279240(a);
					}
					LA16: ;
					checkminsonslen_279270(a, ((NI) 3));
					length = sonslen_226387(a);
					typ = 0;
					{
						if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1)))) goto LA20;
						typ = semtypenode_455269(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_455211(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) 17)));
							LA30: ;
							if (!LOC29) goto LA31;
							localerror_194139((*def).info, ((NimStringDesc*) &TMP3578));
							asgnRefNoCycle((void**) (&(*def).typ), errortype_279161(c));
						}
						LA31: ;
						{
							if (!!((typ == NIM_NIL))) goto LA35;
							{
								NIM_BOOL LOC39;
								LOC39 = 0;
								LOC39 = ismetatype_224821(typ);
								if (!LOC39) goto LA40;
								def = inferwithmetatype_455463(c, typ, def, NIM_FALSE);
								typ = (*def).typ;
							}
							goto LA37;
							LA40: ;
							{
								def = fitnode_455245(c, typ, def);
							}
							LA37: ;
						}
						goto LA33;
						LA35: ;
						{
							typ = skipintlit_272696((*def).typ);
							{
								NIM_BOOL LOC46;
								Ttype223847* 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_226426(typ);
								LOC46 = ((*LOC48).kind == ((NU8) 3));
								LA47: ;
								if (!LOC46) goto LA49;
								LOC51 = 0;
								LOC51 = copyStr(reprEnum((*typ).kind, (&NTI223262)), ((NI) 2));
								LOC52 = 0;
								LOC52 = nsuToLowerStr(LOC51);
								localerror_194128((*def).info, ((NU16) 230), LOC52);
							}
							LA49: ;
						}
						LA33: ;
					}
					goto LA23;
					LA25: ;
					{
						def = emptynode_224807;
						{
							if (!(symkind == ((NU8) 9))) goto LA56;
							localerror_194128((*a).info, ((NU16) 224), ((NimStringDesc*) &TMP3115));
						}
						LA56: ;
					}
					LA23: ;
					{
						if (!(typ == NIM_NIL)) goto LA60;
						goto LA5;
					}
					LA60: ;
					typeallowedcheck_455987((*a).info, typ, symkind);
					tup = skiptypes_227167(typ, 2048);
					{
						if (!((*a).kind == ((NU8) 36))) goto LA64;
						{
							if (!!(((*tup).kind == ((NU8) 18)))) goto LA68;
							localerror_194128((*a).info, ((NU16) 193), ((NimStringDesc*) &TMP3579));
						}
						goto LA66;
						LA68: ;
						{
							NI LOC71;
							LOC71 = 0;
							LOC71 = sonslen_226351(tup);
							if (!!(((NI)(length - ((NI) 2)) == LOC71))) goto LA72;
							localerror_194128((*a).info, ((NU16) 115), ((NimStringDesc*) &TMP3115));
						}
						goto LA66;
						LA72: ;
						{
							b = newnodei_225351(((NU8) 36), (*a).info);
							newsons_226272(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_483706(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_224098(a);
						LOC76 = (((NI) 3) < LOC82);
						LA81: ;
						if (!LOC76) goto LA83;
						message_194161((*a).info, ((NU16) 255), ((NimStringDesc*) &TMP3115));
					}
					goto LA62;
					LA83: ;
					LA62: ;
					{
						NI j_484072;
						NI HEX3Atmp_484345;
						NI res_484348;
						j_484072 = 0;
						HEX3Atmp_484345 = 0;
						HEX3Atmp_484345 = (NI)(length - ((NI) 3));
						res_484348 = ((NI) 0);
						{
							while (1) {
								Tsym223841* v;
								if (!(res_484348 <= HEX3Atmp_484345)) goto LA87;
								j_484072 = res_484348;
								v = semidentdef_482542(c, (*a).kindU.S6.sons->data[j_484072], symkind);
								{
									NIM_BOOL LOC90;
									NIM_BOOL LOC92;
									LOC90 = 0;
									LOC90 = !((((*v).flags &(1<<((((NU8) 31))&31)))!=0));
									if (!(LOC90)) goto LA91;
									LOC92 = 0;
									LOC92 = isdiscardunderscore_483833(v);
									LOC90 = !(LOC92);
									LA91: ;
									if (!LOC90) goto LA93;
									addinterfacedecl_284736(c, v);
								}
								LA93: ;
								{
									if (!(((NI) 0) < (*c).inunrolledcontext)) goto LA97;
									(*v).flags |= ((NU32)1)<<((((NU8) 21))%(sizeof(NU32)*8));
								}
								goto LA95;
								LA97: ;
								{
									Tsym223841* shadowed;
									shadowed = findshadowedvar_482435(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 &(1<<((((NU8) 31))&31)))!=0));
											LA107: ;
											if (!LOC106) goto LA108;
											message_194161((*a).info, ((NU16) 266), ((NimStringDesc*) &TMP3115));
										}
										LA108: ;
										{
											NIM_BOOL LOC112;
											NIM_BOOL LOC114;
											LOC112 = 0;
											LOC112 = ((gnotes_189398 &(IL64(1)<<(((((NU16) 256)- 237))&IL64(63))))!=0);
											if (!(LOC112)) goto LA113;
											LOC114 = 0;
											LOC114 = identwithin_482493(def, (*v).name);
											LOC112 = !(LOC114);
											LA113: ;
											if (!LOC112) goto LA115;
											message_194161((*a).info, ((NU16) 256), (*(*v).name).s);
										}
										LA115: ;
									}
									LA102: ;
								}
								LA95: ;
								{
									Tnode223809* LOC137;
									Tnode223809* 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 &(1<<((((NU8) 22))&31)))!=0)) goto LA129;
											localerror_194128((*def).info, ((NU16) 225), ((NimStringDesc*) &TMP3115));
										}
										LA129: ;
									}
									LA125: ;
									asgnRefNoCycle((void**) (&(*v).typ), typ);
									b = newnodei_225351(((NU8) 35), (*a).info);
									{
										NIM_BOOL LOC133;
										NimStringDesc* LOC136;
										LOC133 = 0;
										LOC133 = importantcomments_165168();
										if (!LOC133) goto LA134;
										LOC136 = 0;
										LOC136 = (*b).comment; (*b).comment = copyStringRC1((*a).comment);
										if (LOC136) nimGCunrefNoCycle(LOC136);
									}
									LA134: ;
									LOC137 = 0;
									LOC137 = newsymnode_225325(v);
									addson_225819(b, LOC137);
									addson_225819(b, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]);
									LOC138 = 0;
									LOC138 = copytree_228028(def);
									addson_225819(b, LOC138);
									addtovarsection_483706(c, &result, n, b);
								}
								goto LA117;
								LA119: ;
								{
									{
										if (!((*def).kind == ((NU8) 37))) goto LA142;
										asgnRefNoCycle((void**) (&(*v).ast), HEX5BHEX5D_224244(def, j_484072));
									}
									LA142: ;
									asgnRefNoCycle((void**) (&(*v).typ), (*tup).sons->data[j_484072]);
									asgnRefNoCycle((void**) (&(*b).kindU.S6.sons->data[j_484072]), newsymnode_225325(v));
								}
								LA117: ;
								adddefer_483799(c, &result, v);
								checknilable_482604(v);
								{
									if (!(((*v).flags &(1<<((((NU8) 23))&31)))!=0)) goto LA146;
									hascompiletime = NIM_TRUE;
								}
								LA146: ;
								res_484348 += ((NI) 1);
							} LA87: ;
						}
					}
				} LA5: ;
				res_484355 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		if (!hascompiletime) goto LA150;
		setupcompiletimevar_444255((*c).module, result);
	}
	LA150: ;
	return result;
}

N_NIMCALL(Tnode223809*, fitremovehiddenconv_482413)(Tcontext278023* c, Ttype223847* typ, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = fitnode_455245(c, typ, n);
	{
		if (!((*result).kind == ((NU8) 58) || (*result).kind == ((NU8) 59))) goto LA3;
		changetype_455253((*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_258092((*result).typ, typ, 0);
		if (!!(LOC6)) goto LA7;
		changetype_455253(result, typ, NIM_FALSE);
	}
	goto LA1;
	LA7: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, semconst_484383)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = copynode_227660(n);
	{
		NI i_484400;
		NI HEX3Atmp_484525;
		NI LOC2;
		NI res_484528;
		i_484400 = 0;
		HEX3Atmp_484525 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_484525 = (NI)(LOC2 - ((NI) 1));
		res_484528 = ((NI) 0);
		{
			while (1) {
				if (!(res_484528 <= HEX3Atmp_484525)) goto LA4;
				i_484400 = res_484528;
				{
					Tnode223809* a;
					Tsym223841* v;
					Ttype223847* typ;
					Tnode223809* def;
					Tnode223809* b;
					Tnode223809* LOC53;
					Tnode223809* LOC54;
					a = (*n).kindU.S6.sons->data[i_484400];
					{
						if (!(gcmd_165134 == ((NU8) 14))) goto LA8;
						suggeststmt_397098(c, a);
					}
					LA8: ;
					{
						if (!((*a).kind == ((NU8) 125))) goto LA12;
						goto LA5;
					}
					LA12: ;
					{
						if (!!(((*a).kind == ((NU8) 102)))) goto LA16;
						illformedast_279240(a);
					}
					LA16: ;
					checksonslen_279260(a, ((NI) 3));
					v = semidentdef_482542(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_455269(c, (*a).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
					}
					LA20: ;
					def = semconstexpr_456485(c, (*a).kindU.S6.sons->data[((NI) 2)]);
					{
						if (!(def == NIM_NIL)) goto LA24;
						localerror_194128((*(*a).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 108), ((NimStringDesc*) &TMP3115));
						goto LA5;
					}
					LA24: ;
					{
						if (!!((typ == NIM_NIL))) goto LA28;
						def = fitremovehiddenconv_482413(c, typ, def);
					}
					goto LA26;
					LA28: ;
					{
						typ = (*def).typ;
					}
					LA26: ;
					{
						if (!(typ == NIM_NIL)) goto LA33;
						localerror_194128((*(*a).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 108), ((NimStringDesc*) &TMP3115));
						goto LA5;
					}
					LA33: ;
					{
						NIM_BOOL LOC37;
						Ttype223847* LOC38;
						NimStringDesc* LOC42;
						LOC37 = 0;
						LOC38 = 0;
						LOC38 = typeallowed_261654(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_253032(typ, ((NU8) 0));
						localerror_194128((*a).info, ((NU16) 169), LOC42);
						goto LA5;
					}
					LA40: ;
					asgnRefNoCycle((void**) (&(*v).typ), typ);
					asgnRefNoCycle((void**) (&(*v).ast), def);
					{
						if (!!((((*v).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA45;
						addinterfacedecl_284736(c, v);
					}
					LA45: ;
					b = newnodei_225351(((NU8) 102), (*a).info);
					{
						NIM_BOOL LOC49;
						NimStringDesc* LOC52;
						LOC49 = 0;
						LOC49 = importantcomments_165168();
						if (!LOC49) goto LA50;
						LOC52 = 0;
						LOC52 = (*b).comment; (*b).comment = copyStringRC1((*a).comment);
						if (LOC52) nimGCunrefNoCycle(LOC52);
					}
					LA50: ;
					LOC53 = 0;
					LOC53 = newsymnode_225325(v);
					addson_225819(b, LOC53);
					addson_225819(b, (*a).kindU.S6.sons->data[((NI) 1)]);
					LOC54 = 0;
					LOC54 = copytree_228028(def);
					addson_225819(b, LOC54);
					addson_225819(result, b);
				} LA5: ;
				res_484528 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(void, typesectionleftsidepass_485599)(Tcontext278023* c, Tnode223809* n) {
	{
		NI i_485615;
		NI HEX3Atmp_485675;
		NI LOC2;
		NI res_485678;
		i_485615 = 0;
		HEX3Atmp_485675 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_485675 = (NI)(LOC2 - ((NI) 1));
		res_485678 = ((NI) 0);
		{
			while (1) {
				if (!(res_485678 <= HEX3Atmp_485675)) goto LA4;
				i_485615 = res_485678;
				{
					Tnode223809* a;
					Tsym223841* s;
					a = (*n).kindU.S6.sons->data[i_485615];
					{
						if (!(gcmd_165134 == ((NU8) 14))) goto LA8;
						suggeststmt_397098(c, a);
					}
					LA8: ;
					{
						if (!((*a).kind == ((NU8) 125))) goto LA12;
						goto LA5;
					}
					LA12: ;
					{
						if (!!(((*a).kind == ((NU8) 103)))) goto LA16;
						illformedast_279240(a);
					}
					LA16: ;
					checksonslen_279260(a, ((NI) 3));
					s = semidentdef_482542(c, (*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 7));
					asgnRefNoCycle((void**) (&(*s).typ), newtypes_278221(((NU8) 30), c));
					asgnRefNoCycle((void**) (&(*(*s).typ).sym), s);
					{
						if (!((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 43))) goto LA20;
						pragma_295082(c, s, (*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)], TMP3535);
					}
					LA20: ;
					{
						if (!!((((*s).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA24;
						addinterfacedecl_284736(c, s);
					}
					LA24: ;
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newsymnode_225325(s));
				} LA5: ;
				res_485678 += ((NI) 1);
			} LA4: ;
		}
	}
}

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

N_NIMCALL(void, processmagictype_469315)(Tcontext278023* c, Tsym223841* m) {
	switch ((*m).magic) {
	case ((NU8) 171):
	{
		setmagictype_469304(m, ((NU8) 31), intsize_172651);
	}
	break;
	case ((NU8) 172):
	{
		setmagictype_469304(m, ((NU8) 32), ((NI) 1));
	}
	break;
	case ((NU8) 173):
	{
		setmagictype_469304(m, ((NU8) 33), ((NI) 2));
	}
	break;
	case ((NU8) 174):
	{
		setmagictype_469304(m, ((NU8) 34), ((NI) 4));
	}
	break;
	case ((NU8) 175):
	{
		setmagictype_469304(m, ((NU8) 35), ((NI) 8));
	}
	break;
	case ((NU8) 176):
	{
		setmagictype_469304(m, ((NU8) 40), intsize_172651);
	}
	break;
	case ((NU8) 177):
	{
		setmagictype_469304(m, ((NU8) 41), ((NI) 1));
	}
	break;
	case ((NU8) 178):
	{
		setmagictype_469304(m, ((NU8) 42), ((NI) 2));
	}
	break;
	case ((NU8) 179):
	{
		setmagictype_469304(m, ((NU8) 43), ((NI) 4));
	}
	break;
	case ((NU8) 180):
	{
		setmagictype_469304(m, ((NU8) 44), ((NI) 8));
	}
	break;
	case ((NU8) 181):
	{
		setmagictype_469304(m, ((NU8) 36), floatsize_172652);
	}
	break;
	case ((NU8) 182):
	{
		setmagictype_469304(m, ((NU8) 37), ((NI) 4));
	}
	break;
	case ((NU8) 183):
	{
		setmagictype_469304(m, ((NU8) 38), ((NI) 8));
	}
	break;
	case ((NU8) 184):
	{
		setmagictype_469304(m, ((NU8) 39), ((NI) 16));
	}
	break;
	case ((NU8) 185):
	{
		setmagictype_469304(m, ((NU8) 1), ((NI) 1));
	}
	break;
	case ((NU8) 186):
	{
		setmagictype_469304(m, ((NU8) 2), ((NI) 1));
	}
	break;
	case ((NU8) 187):
	{
		Ttype223847* LOC18;
		setmagictype_469304(m, ((NU8) 28), ptrsize_172653);
		LOC18 = 0;
		LOC18 = getsystype_272190(((NU8) 2));
		rawaddson_227498((*m).typ, LOC18);
	}
	break;
	case ((NU8) 188):
	{
		Ttype223847* LOC20;
		setmagictype_469304(m, ((NU8) 29), ptrsize_172653);
		LOC20 = 0;
		LOC20 = getsystype_272190(((NU8) 2));
		rawaddson_227498((*m).typ, LOC20);
	}
	break;
	case ((NU8) 189):
	{
		setmagictype_469304(m, ((NU8) 26), ptrsize_172653);
	}
	break;
	case ((NU8) 190):
	{
		Ttype223847* LOC23;
		setmagictype_469304(m, ((NU8) 19), ((NI) 1));
		LOC23 = 0;
		LOC23 = newtypes_278221(((NU8) 3), c);
		rawaddson_227498((*m).typ, LOC23);
	}
	break;
	case ((NU8) 191):
	{
		setmagictype_469304(m, ((NU8) 20), intsize_172651);
	}
	break;
	case ((NU8) 192):
	{
		setmagictype_469304(m, ((NU8) 5), ptrsize_172653);
	}
	break;
	case ((NU8) 193):
	{
		{
			if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TMP3581))) goto LA29;
			setmagictype_469304(m, ((NU8) 58), ((NI) 0));
		}
		goto LA27;
		LA29: ;
		{
			setmagictype_469304(m, ((NU8) 6), ((NI) 0));
			{
				if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TMP3562))) goto LA34;
				(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
			}
			LA34: ;
		}
		LA27: ;
	}
	break;
	case ((NU8) 194):
	{
		setmagictype_469304(m, ((NU8) 7), ((NI) 0));
		{
			if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TMP3561))) goto LA39;
			(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
		}
		LA39: ;
	}
	break;
	case ((NU8) 195):
	{
		Ttype223847* LOC42;
		setmagictype_469304(m, ((NU8) 8), ((NI) 0));
		LOC42 = 0;
		LOC42 = newtypes_278221(((NU8) 0), c);
		rawaddson_227498((*m).typ, LOC42);
	}
	break;
	case ((NU8) 196):
	{
		setmagictype_469304(m, ((NU8) 3), ((NI) 0));
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 164):
	{
		setmagictype_469304(m, ((NU8) 16), ((NI) 0));
	}
	break;
	case ((NU8) 165):
	{
		setmagictype_469304(m, ((NU8) 27), ((NI) 0));
	}
	break;
	case ((NU8) 169):
	{
		setmagictype_469304(m, ((NU8) 48), ((NI) 0));
	}
	break;
	case ((NU8) 166):
	{
		Ttype223847* LOC48;
		setmagictype_469304(m, ((NU8) 20), ((NI) 0));
		LOC48 = 0;
		LOC48 = newtypes_278221(((NU8) 0), c);
		rawaddson_227498((*m).typ, LOC48);
	}
	break;
	case ((NU8) 167):
	{
		setmagictype_469304(m, ((NU8) 19), ((NI) 0));
	}
	break;
	case ((NU8) 168):
	{
		setmagictype_469304(m, ((NU8) 24), ((NI) 0));
	}
	break;
	case ((NU8) 170):
	{
		Ttype223847* LOC52;
		setmagictype_469304(m, ((NU8) 15), ((NI) 0));
		LOC52 = 0;
		LOC52 = newtypes_278221(((NU8) 0), c);
		rawaddson_227498((*m).typ, LOC52);
	}
	break;
	case ((NU8) 197):
	{
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 28))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 198):
	{
		setmagictype_469304(m, ((NU8) 17), ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*m).typ).n), newnodei_225351(((NU8) 138), (*m).info));
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 199):
	{
		Ttype223847* LOC56;
		setmagictype_469304(m, ((NU8) 17), ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*m).typ).n), newnodei_225351(((NU8) 138), (*m).info));
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
		LOC56 = 0;
		LOC56 = systypefromname_272179(((NimStringDesc*) &TMP3582));
		rawaddson_227498((*m).typ, LOC56);
	}
	break;
	default:
	{
		localerror_194128((*m).info, ((NU16) 67), ((NimStringDesc*) &TMP3115));
	}
	break;
	}
}

N_NIMCALL(void, typesectionrightsidepass_485697)(Tcontext278023* c, Tnode223809* n) {
	{
		NI i_485713;
		NI HEX3Atmp_485958;
		NI LOC2;
		NI res_485961;
		i_485713 = 0;
		HEX3Atmp_485958 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_485958 = (NI)(LOC2 - ((NI) 1));
		res_485961 = ((NI) 0);
		{
			while (1) {
				if (!(res_485961 <= HEX3Atmp_485958)) goto LA4;
				i_485713 = res_485961;
				{
					Tnode223809* a;
					Tsym223841* s;
					Tnode223809* aa;
					a = (*n).kindU.S6.sons->data[i_485713];
					{
						if (!((*a).kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!!(((*a).kind == ((NU8) 103)))) goto LA12;
						illformedast_279240(a);
					}
					LA12: ;
					checksonslen_279260(a, ((NI) 3));
					{
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA16;
						illformedast_279240(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_194128((*a).info, ((NU16) 142), (*(*s).name).s);
					}
					LA22: ;
					{
						if (!!(((*s).magic == ((NU8) 0)))) goto LA26;
						processmagictype_469315(c, s);
					}
					LA26: ;
					{
						Tscope223835* LOC32;
						Ttype223847* LOC37;
						Ttype223847* body;
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA30;
						LOC32 = 0;
						LOC32 = openscope_284091(c);
						pushowner_278263(s);
						{
							if (!((*s).magic == ((NU8) 0))) goto LA35;
							(*(*s).typ).kind = ((NU8) 10);
						}
						LA35: ;
						asgnRefNoCycle((void**) (&(*(*s).typ).n), semgenericparamlist_469425(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_278221(((NU8) 0), c);
						rawaddson_227498((*s).typ, LOC37);
						asgnRefNoCycle((void**) (&(*s).ast), a);
						(*c).ingenericcontext += ((NI) 1);
						body = semtypenode_455269(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_226351((*s).typ);
							asgnRefNoCycle((void**) (&(*(*s).typ).sons->data[(NI)(LOC42 - ((NI) 1))]), body);
						}
						LA40: ;
						popowner_278269();
						closescope_284111(c);
					}
					goto LA28;
					LA30: ;
					{
						Ttype223847* t;
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA44;
						pushowner_278263(s);
						t = semtypenode_455269(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_226445((*s).typ, t);
						}
						goto LA46;
						LA51: ;
						LA46: ;
						asgnRefNoCycle((void**) (&(*s).ast), a);
						popowner_278269();
					}
					goto LA28;
					LA44: ;
					LA28: ;
					aa = (*a).kindU.S6.sons->data[((NI) 2)];
					{
						NIM_BOOL LOC55;
						NIM_BOOL LOC56;
						NI LOC58;
						Ttype223847* st;
						Ttype223847* LOC77;
						NimStringDesc* LOC78;
						Tident196021* LOC79;
						Tsym223841* LOC80;
						LOC55 = 0;
						LOC56 = 0;
						LOC56 = ((*aa).kind == ((NU8) 141) || (*aa).kind == ((NU8) 142));
						if (!(LOC56)) goto LA57;
						LOC58 = 0;
						LOC58 = len_224098(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_226426(st);
						}
						LA64: ;
						{
							NimStringDesc* LOC70;
							if (!!(((*st).kind == ((NU8) 21) || (*st).kind == ((NU8) 22)))) goto LA68;
							LOC70 = 0;
							LOC70 = HEX24_194279(TMP3583);
							internalerror_194191(LOC70);
						}
						LA68: ;
						{
							Ttype223847* LOC73;
							NimStringDesc* LOC76;
							LOC73 = 0;
							LOC73 = lastson_226426(st);
							if (!!(((*LOC73).sym == NIM_NIL))) goto LA74;
							LOC76 = 0;
							LOC76 = HEX24_194279(TMP3585);
							internalerror_194191(LOC76);
						}
						LA74: ;
						LOC77 = 0;
						LOC77 = lastson_226426(st);
						LOC78 = 0;
						LOC78 = rawNewString((*(*s).name).s->Sup.len + 11);
appendString(LOC78, (*(*s).name).s);
appendString(LOC78, ((NimStringDesc*) &TMP3586));
						LOC79 = 0;
						LOC79 = getident_196463(LOC78);
						LOC80 = 0;
						LOC80 = getcurrowner_278258();
						asgnRefNoCycle((void**) (&(*LOC77).sym), newsym_224656(((NU8) 7), LOC79, LOC80, (*s).info));
					}
					LA60: ;
				} LA5: ;
				res_485961 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, checkformetafields_485980)(Tnode223809* n) {
{	{
		if (!n == 0) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 138):
	case ((NU8) 139):
	{
		{
			Tnode223809* s_486000;
			s_486000 = 0;
			{
				NI i_486107;
				NI HEX3Atmp_486109;
				NI LOC8;
				NI res_486111;
				i_486107 = 0;
				HEX3Atmp_486109 = 0;
				LOC8 = 0;
				LOC8 = len_224098(n);
				HEX3Atmp_486109 = (LOC8 - 1);
				res_486111 = ((NI) 0);
				{
					while (1) {
						if (!(res_486111 <= HEX3Atmp_486109)) goto LA10;
						i_486107 = res_486111;
						s_486000 = (*n).kindU.S6.sons->data[i_486107];
						checkformetafields_485980(s_486000);
						res_486111 += ((NI) 1);
					} LA10: ;
				}
			}
		}
	}
	break;
	case ((NU8) 85):
	case ((NU8) 88):
	{
		Tnode223809* LOC12;
		LOC12 = 0;
		LOC12 = lastson_226406(n);
		checkformetafields_485980(LOC12);
	}
	break;
	case ((NU8) 3):
	{
		Ttype223847* 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_486051;
				NI HEX3Atmp_486115;
				NI res_486118;
				i_486051 = 0;
				HEX3Atmp_486115 = 0;
				HEX3Atmp_486115 = (((*t).sons ? (*t).sons->Sup.len : 0) - 1);
				res_486118 = ((NI) (start));
				{
					while (1) {
						if (!(res_486118 <= HEX3Atmp_486115)) goto LA17;
						i_486051 = res_486118;
						{
							NIM_BOOL LOC20;
							NIM_BOOL LOC21;
							NimStringDesc* LOC26;
							LOC20 = 0;
							LOC21 = 0;
							LOC21 = !(((*t).sons->data[i_486051] == NIM_NIL));
							if (!(LOC21)) goto LA22;
							LOC21 = ismetatype_224821((*t).sons->data[i_486051]);
							LA22: ;
							LOC20 = LOC21;
							if (!(LOC20)) goto LA23;
							LOC20 = !((((*(*t).sons->data[i_486051]).flags &(1<<((((NU8) 23))&31)))!=0));
							LA23: ;
							if (!LOC20) goto LA24;
							LOC26 = 0;
							LOC26 = typetostring_253032((*t).sons->data[i_486051], ((NU8) 0));
							localerror_194128((*n).info, ((NU16) 194), LOC26);
						}
						LA24: ;
						res_486118 += ((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_224821(t);
				LA32: ;
				LOC30 = LOC31;
				if (!(LOC30)) goto LA33;
				LOC30 = !((((*t).flags &(1<<((((NU8) 23))&31)))!=0));
				LA33: ;
				if (!LOC30) goto LA34;
				LOC36 = 0;
				LOC36 = typetostring_253032(t, ((NU8) 0));
				localerror_194128((*n).info, ((NU16) 194), LOC36);
			}
			LA34: ;
		}
		break;
		}
	}
	break;
	default:
	{
		{
			NimStringDesc* LOC42;
			if (!NIM_TRUE) goto LA40;
			LOC42 = 0;
			LOC42 = HEX24_194279(TMP3587);
			internalerror_194191(LOC42);
		}
		LA40: ;
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(void, typesectionfinalpass_486146)(Tcontext278023* c, Tnode223809* n) {
	{
		NI i_486162;
		NI HEX3Atmp_486251;
		NI LOC2;
		NI res_486254;
		i_486162 = 0;
		HEX3Atmp_486251 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_486251 = (NI)(LOC2 - ((NI) 1));
		res_486254 = ((NI) 0);
		{
			while (1) {
				if (!(res_486254 <= HEX3Atmp_486251)) goto LA4;
				i_486162 = res_486254;
				{
					Tnode223809* a;
					Tsym223841* s;
					a = (*n).kindU.S6.sons->data[i_486162];
					{
						if (!((*a).kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA12;
						illformedast_279240(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;
						{
							Ttype223847* 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_455269(c, (*a).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
							{
								if (!((*t).kind == ((NU8) 17) || (*t).kind == ((NU8) 14))) goto LA24;
								assigntype_226445((*s).typ, t);
								(*(*s).typ).Sup.id = (*t).Sup.id;
							}
							LA24: ;
						}
						LA20: ;
						checkconstructedtype_300110((*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_485980((*(*s).typ).n);
						}
						LA30: ;
					}
					LA16: ;
				} LA5: ;
				res_486254 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode223809*, semtypesection_486685)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !((((*(*c).module).flags &(1<<((((NU8) 8))&31)))!=0));
		if (LOC3) goto LA4;
		LOC3 = !((((*n).flags &(1<<((((NU8) 7))&15)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		typesectionleftsidepass_485599(c, n);
		typesectionrightsidepass_485697(c, n);
		typesectionfinalpass_486146(c, n);
	}
	LA5: ;
	result = n;
	return result;
}

N_NIMCALL(Tnode223809*, semdiscard_479406)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = n;
	checksonslen_279260(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_455211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = isemptytype_228932((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			if (!LOC7) goto LA8;
			localerror_194128((*n).info, ((NU16) 145), ((NimStringDesc*) &TMP3115));
		}
		LA8: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode223809*, semwhile_479617)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tscope223835* LOC1;
	Tnode223809* LOC2;
	result = 0;
	result = n;
	checksonslen_279260(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	LOC2 = 0;
	LOC2 = semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), forcebool_462829(c, LOC2));
	(*(*c).p).nestedloopcounter += ((NI) 1);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semstmt_455277(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	closescope_284111(c);
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 1)]).typ == enforcevoidcontext_479405)) goto LA5;
		asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_479405);
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode223809*, sembreakorcontinue_479427)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = n;
	checksonslen_279260(n, ((NI) 1));
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA3;
		{
			Tsym223841* s;
			if (!!(((*n).kind == ((NU8) 111)))) goto LA7;
			s = 0;
			switch ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind) {
			case ((NU8) 2):
			{
				s = lookup_284804(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_279240(n);
			}
			break;
			}
			{
				NIM_BOOL LOC14;
				Tnode223809* x;
				LOC14 = 0;
				LOC14 = ((*s).kind == ((NU8) 22));
				if (!(LOC14)) goto LA15;
				LOC14 = ((*(*s).owner).Sup.id == (*(*(*c).p).owner).Sup.id);
				LA15: ;
				if (!LOC14) goto LA16;
				x = newsymnode_225325(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_396733((*x).info, s);
			}
			goto LA12;
			LA16: ;
			{
				localerror_194128((*n).info, ((NU16) 168), (*(*s).name).s);
			}
			LA12: ;
		}
		goto LA5;
		LA7: ;
		{
			localerror_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3588));
		}
		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_245059(n, 4);
		localerror_194128((*n).info, ((NU16) 168), LOC25);
	}
	goto LA1;
	LA23: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, semexprnoderef_455228)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	result = 0;
	result = semexpr_455201(c, n, flags);
	{
		if (!((*result).kind == ((NU8) 1))) goto LA3;
		result = errornode_279171(c, n);
	}
	LA3: ;
	{
		NimStringDesc* LOC9;
		if (!((*result).typ == NIM_NIL)) goto LA7;
		LOC9 = 0;
		LOC9 = rendertree_245059(result, 4);
		localerror_194128((*n).info, ((NU16) 94), LOC9);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_279161(c));
	}
	goto LA5;
	LA7: ;
	{
		semprocvarcheck_479766(c, result);
		semdestructorcheck_480851(c, result, flags);
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tsym223841*, symforvar_485108)(Tcontext278023* c, Tnode223809* n) {
	Tsym223841* result;
	Tnode223809* 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_455916(((NU8) 21), m, c);
	return result;
}

N_NIMCALL(void, addforvardecl_485076)(Tcontext278023* c, Tsym223841* v) {
	{
		Tsym223841* shadowed;
		if (!((gnotes_189398 &(IL64(1)<<(((((NU16) 256)- 237))&IL64(63))))!=0)) goto LA3;
		shadowed = findshadowedvar_482435(c, v);
		{
			if (!!((shadowed == NIM_NIL))) goto LA7;
			message_194161((*v).info, ((NU16) 256), (*(*v).name).s);
		}
		LA7: ;
	}
	LA3: ;
	adddecl_284607(c, v);
}

N_NIMCALL(Tnode223809*, semforvars_485204)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	NI length;
	Ttype223847* iterbase;
	Ttype223847* iter;
	result = 0;
	result = n;
	length = sonslen_226387(n);
	iterbase = skiptypes_227167((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).typ, IL64(562949953421312));
	iter = skiptypes_227167(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;
		{
			Tsym223841* v;
			if (!(length == ((NI) 3))) goto LA9;
			v = symforvar_485108(c, (*n).kindU.S6.sons->data[((NI) 0)]);
			{
				Tsym223841* LOC13;
				LOC13 = 0;
				LOC13 = getcurrowner_278258();
				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_225325(v));
			{
				if (!!((((*v).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA18;
				addforvardecl_485076(c, v);
			}
			LA18: ;
		}
		goto LA7;
		LA9: ;
		{
			localerror_194128((*n).info, ((NU16) 115), ((NimStringDesc*) &TMP3115));
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		NI LOC22;
		LOC22 = 0;
		LOC22 = sonslen_226351(iter);
		if (!!(((NI)(length - ((NI) 2)) == LOC22))) goto LA23;
		localerror_194128((*n).info, ((NU16) 115), ((NimStringDesc*) &TMP3115));
	}
	goto LA1;
	LA23: ;
	{
		{
			NI i_485271;
			NI HEX3Atmp_485328;
			NI res_485331;
			i_485271 = 0;
			HEX3Atmp_485328 = 0;
			HEX3Atmp_485328 = (NI)(length - ((NI) 3));
			res_485331 = ((NI) 0);
			{
				while (1) {
					Tsym223841* v;
					if (!(res_485331 <= HEX3Atmp_485328)) goto LA28;
					i_485271 = res_485331;
					v = symforvar_485108(c, (*n).kindU.S6.sons->data[i_485271]);
					{
						Tsym223841* LOC31;
						LOC31 = 0;
						LOC31 = getcurrowner_278258();
						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_485271]);
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_485271]), newsymnode_225325(v));
					{
						NIM_BOOL LOC36;
						NIM_BOOL LOC38;
						LOC36 = 0;
						LOC36 = !((((*v).flags &(1<<((((NU8) 31))&31)))!=0));
						if (!(LOC36)) goto LA37;
						LOC38 = 0;
						LOC38 = isdiscardunderscore_483833(v);
						LOC36 = !(LOC38);
						LA37: ;
						if (!LOC36) goto LA39;
						addforvardecl_485076(c, v);
					}
					LA39: ;
					res_485331 += ((NI) 1);
				} LA28: ;
			}
		}
	}
	LA1: ;
	(*(*c).p).nestedloopcounter += ((NI) 1);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]), semstmt_455277(c, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]));
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Tnode223809*, instfieldloopbody_484553)(Tfieldinstctx484548 c, Tnode223809* n, Tnode223809* forloop) {
	Tnode223809* 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):
	{
		Tident196021* ident;
		NI L;
		result = n;
		ident = considerquotedident_284010(n);
		L = sonslen_226387(forloop);
		{
			if (!c.replacebyfieldname) goto LA5;
			{
				Tnode223809* LOC9;
				Tident196021* LOC10;
				NimStringDesc* fieldname;
				LOC9 = 0;
				LOC9 = HEX5BHEX5D_224244(forloop, ((NI) 0));
				LOC10 = 0;
				LOC10 = considerquotedident_284010(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*) &TMP3592));
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_224644(((NU8) 20), fieldname);
				goto BeforeRet;
			}
			LA11: ;
		}
		LA5: ;
		{
			NI i_484621;
			NI HEX3Atmp_484672;
			NI HEX3Atmp_484673;
			NI res_484676;
			i_484621 = 0;
			HEX3Atmp_484672 = 0;
			HEX3Atmp_484673 = 0;
			HEX3Atmp_484672 = c.replacebyfieldname;
			HEX3Atmp_484673 = (NI)(L - ((NI) 3));
			res_484676 = ((NI) (HEX3Atmp_484672));
			{
				while (1) {
					if (!(res_484676 <= HEX3Atmp_484673)) goto LA25;
					i_484621 = res_484676;
					{
						Tnode223809* LOC28;
						Tident196021* LOC29;
						Tnode223809* call;
						Tnode223809* tupl;
						LOC28 = 0;
						LOC28 = HEX5BHEX5D_224244(forloop, i_484621);
						LOC29 = 0;
						LOC29 = considerquotedident_284010(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_484621 + ((NI) 1)) - ((NI) (c.replacebyfieldname)))];
						{
							Tnode223809* LOC36;
							if (!c.field == 0) goto LA34;
							result = newnodei_225351(((NU8) 42), (*n).info);
							add_224165(result, tupl);
							LOC36 = 0;
							LOC36 = newintnode_224608(((NU8) 6), ((NI64) (c.tupleindex)));
							add_224165(result, LOC36);
						}
						goto LA32;
						LA34: ;
						{
							Tnode223809* LOC38;
							result = newnodei_225351(((NU8) 45), (*n).info);
							add_224165(result, tupl);
							LOC38 = 0;
							LOC38 = newsymnode_225338(c.field, (*n).info);
							add_224165(result, LOC38);
						}
						LA32: ;
						goto LA23;
					}
					LA30: ;
					res_484676 += ((NI) 1);
				} LA25: ;
			}
		} LA23: ;
	}
	break;
	default:
	{
		NI LOC44;
		{
			if (!((*n).kind == ((NU8) 111))) goto LA42;
			localerror_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3593));
		}
		LA42: ;
		result = copynode_227660(n);
		LOC44 = 0;
		LOC44 = sonslen_226387(n);
		newsons_226272(result, LOC44);
		{
			NI i_484668;
			NI HEX3Atmp_484681;
			NI LOC46;
			NI res_484684;
			i_484668 = 0;
			HEX3Atmp_484681 = 0;
			LOC46 = 0;
			LOC46 = sonslen_226387(n);
			HEX3Atmp_484681 = (NI)(LOC46 - ((NI) 1));
			res_484684 = ((NI) 0);
			{
				while (1) {
					if (!(res_484684 <= HEX3Atmp_484681)) goto LA48;
					i_484668 = res_484684;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_484668]), instfieldloopbody_484553(c, (*n).kindU.S6.sons->data[i_484668], forloop));
					res_484684 += ((NI) 1);
				} LA48: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, semforobjectfields_484713)(Tfieldsctx484710 c, Tnode223809* typ, Tnode223809* forloop, Tnode223809* father) {
{	switch ((*typ).kind) {
	case ((NU8) 3):
	{
		Tfieldinstctx484548 fc;
		Tscope223835* LOC2;
		Tnode223809* body;
		Tnode223809* LOC3;
		Tnode223809* LOC4;
		memset((void*)(&fc), 0, sizeof(fc));
		fc.field = (*typ).kindU.S4.sym;
		fc.replacebyfieldname = (c.m == ((NU8) 141));
		LOC2 = 0;
		LOC2 = openscope_284091(c.c);
		(*c.c).inunrolledcontext += ((NI) 1);
		LOC3 = 0;
		LOC3 = lastson_226406(forloop);
		body = instfieldloopbody_484553(fc, LOC3, forloop);
		LOC4 = 0;
		LOC4 = semstmt_455277(c.c, body);
		add_224165(father, LOC4);
		(*c.c).inunrolledcontext -= ((NI) 1);
		closescope_284111(c.c);
	}
	break;
	case ((NU8) 23):
	{
	}
	break;
	case ((NU8) 139):
	{
		NI L_484751;
		Tnode223809* call;
		Tnode223809* LOC12;
		Tnode223809* casestmt;
		Tnode223809* access;
		Tnode223809* LOC13;
		L_484751 = len_224098(forloop);
		call = (*forloop).kindU.S6.sons->data[(NI)(L_484751 - ((NI) 2))];
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_224098(call);
			if (!(((NI) 2) < LOC9)) goto LA10;
			localerror_194128((*forloop).info, ((NU16) 4), ((NimStringDesc*) &TMP3594));
			goto BeforeRet;
		}
		LA10: ;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_224244(typ, ((NI) 0));
		semforobjectfields_484713(c, LOC12, forloop, father);
		casestmt = newnodei_225351(((NU8) 97), (*forloop).info);
		access = newnodei_225407(((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_225338((*(*typ).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym, (*forloop).info));
		LOC13 = 0;
		LOC13 = semexprwithtype_455211(c.c, access, 0);
		add_224165(casestmt, LOC13);
		{
			NI i_484782;
			NI HEX3Atmp_484793;
			NI LOC15;
			NI res_484796;
			i_484782 = 0;
			HEX3Atmp_484793 = 0;
			LOC15 = 0;
			LOC15 = len_224098(typ);
			HEX3Atmp_484793 = (LOC15 - 1);
			res_484796 = ((NI) 1);
			{
				while (1) {
					Tnode223809* branch;
					Tnode223809* LOC18;
					NI L;
					Tnode223809* LOC19;
					Tnode223809* LOC20;
					Tnode223809* LOC21;
					if (!(res_484796 <= HEX3Atmp_484793)) goto LA17;
					i_484782 = res_484796;
					LOC18 = 0;
					LOC18 = HEX5BHEX5D_224244(typ, i_484782);
					branch = copytree_228028(LOC18);
					L = len_224098(branch);
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), newnodei_225351(((NU8) 115), (*forloop).info));
					LOC19 = 0;
					LOC19 = HEX5BHEX5D_224244(typ, i_484782);
					LOC20 = 0;
					LOC20 = lastson_226406(LOC19);
					LOC21 = 0;
					LOC21 = HEX5BHEX5D_224244(branch, (NI)(L - ((NI) 1)));
					semforobjectfields_484713(c, LOC20, forloop, LOC21);
					add_224165(casestmt, branch);
					res_484796 += ((NI) 1);
				} LA17: ;
			}
		}
		add_224165(father, casestmt);
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode223809* t_484790;
			t_484790 = 0;
			{
				NI i_484804;
				NI HEX3Atmp_484806;
				NI LOC25;
				NI res_484808;
				i_484804 = 0;
				HEX3Atmp_484806 = 0;
				LOC25 = 0;
				LOC25 = len_224098(typ);
				HEX3Atmp_484806 = (LOC25 - 1);
				res_484808 = ((NI) 0);
				{
					while (1) {
						if (!(res_484808 <= HEX3Atmp_484806)) goto LA27;
						i_484804 = res_484808;
						t_484790 = (*typ).kindU.S6.sons->data[i_484804];
						semforobjectfields_484713(c, t_484790, forloop, father);
						res_484808 += ((NI) 1);
					} LA27: ;
				}
			}
		}
	}
	break;
	default:
	{
		illformedastlocal_279250(typ);
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode223809*, semforfields_484835)(Tcontext278023* c, Tnode223809* n, NU8 m) {
	Tnode223809* result;
	Tsym223841* truesymbol;
	Tident196021* LOC1;
	Tnode223809* stmts;
	NI length;
	Tnode223809* call;
	Ttype223847* tupletypea;
{	result = 0;
	result = newnodei_225407(((NU8) 96), (*n).info, ((NI) 2));
	LOC1 = 0;
	LOC1 = getident_196463(((NimStringDesc*) &TMP3589));
	truesymbol = strtableget_231111((*systemmodule_272019).kindU.S3.tab, LOC1);
	{
		Tident196021* LOC6;
		Tsym223841* LOC7;
		if (!(truesymbol == NIM_NIL)) goto LA4;
		localerror_194128((*n).info, ((NU16) 68), ((NimStringDesc*) &TMP3590));
		LOC6 = 0;
		LOC6 = getident_196463(((NimStringDesc*) &TMP3589));
		LOC7 = 0;
		LOC7 = getcurrowner_278258();
		truesymbol = newsym_224656(((NU8) 0), LOC6, LOC7, (*n).info);
		asgnRefNoCycle((void**) (&(*truesymbol).typ), getsystype_272190(((NU8) 1)));
	}
	LA4: ;
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_225338(truesymbol, (*n).info));
	stmts = newnodei_225351(((NU8) 115), (*n).info);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), stmts);
	length = sonslen_226387(n);
	call = (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))];
	{
		NI LOC10;
		LOC10 = 0;
		LOC10 = sonslen_226387(call);
		if (!!(((NI)(length - ((NI) 2)) == (NI)((NI)(LOC10 - ((NI) 1)) + ((NI) ((m == ((NU8) 141)))))))) goto LA11;
		localerror_194128((*n).info, ((NU16) 115), ((NimStringDesc*) &TMP3115));
		goto BeforeRet;
	}
	LA11: ;
	tupletypea = skiptypes_227167((*(*call).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106240964608));
	{
		if (!!(((*tupletypea).kind == ((NU8) 18) || (*tupletypea).kind == ((NU8) 17)))) goto LA15;
		localerror_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3591));
		goto BeforeRet;
	}
	LA15: ;
	{
		NI i_484916;
		NI HEX3Atmp_485031;
		NI LOC18;
		NI res_485034;
		i_484916 = 0;
		HEX3Atmp_485031 = 0;
		LOC18 = 0;
		LOC18 = len_224098(call);
		HEX3Atmp_485031 = (NI)(LOC18 - ((NI) 1));
		res_485034 = ((NI) 1);
		{
			while (1) {
				Ttype223847* tupletypeb;
				if (!(res_485034 <= HEX3Atmp_485031)) goto LA20;
				i_484916 = res_485034;
				tupletypeb = skiptypes_227167((*(*call).kindU.S6.sons->data[i_484916]).typ, IL64(211106240964608));
				{
					NIM_BOOL LOC23;
					LOC23 = 0;
					LOC23 = sametype_258092(tupletypea, tupletypeb, 0);
					if (!!(LOC23)) goto LA24;
					typemismatch_455379((*call).kindU.S6.sons->data[i_484916], tupletypea, tupletypeb);
				}
				LA24: ;
				res_485034 += ((NI) 1);
			} LA20: ;
		}
	}
	(*(*c).p).nestedloopcounter += ((NI) 1);
	{
		Tnode223809* loopbody;
		if (!((*tupletypea).kind == ((NU8) 18))) goto LA28;
		loopbody = (*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))];
		{
			NI i_484963;
			NI HEX3Atmp_485040;
			NI LOC31;
			NI res_485043;
			i_484963 = 0;
			HEX3Atmp_485040 = 0;
			LOC31 = 0;
			LOC31 = sonslen_226351(tupletypea);
			HEX3Atmp_485040 = (NI)(LOC31 - ((NI) 1));
			res_485043 = ((NI) 0);
			{
				while (1) {
					Tscope223835* LOC34;
					Tfieldinstctx484548 fc;
					Tnode223809* body;
					Tnode223809* LOC35;
					if (!(res_485043 <= HEX3Atmp_485040)) goto LA33;
					i_484963 = res_485043;
					LOC34 = 0;
					LOC34 = openscope_284091(c);
					memset((void*)(&fc), 0, sizeof(fc));
					fc.tupletype = tupletypea;
					fc.tupleindex = i_484963;
					fc.replacebyfieldname = (m == ((NU8) 141));
					body = instfieldloopbody_484553(fc, loopbody, n);
					(*c).inunrolledcontext += ((NI) 1);
					LOC35 = 0;
					LOC35 = semstmt_455277(c, body);
					add_224165(stmts, LOC35);
					(*c).inunrolledcontext -= ((NI) 1);
					closescope_284111(c);
					res_485043 += ((NI) 1);
				} LA33: ;
			}
		}
	}
	goto LA26;
	LA28: ;
	{
		Tfieldsctx484710 fc;
		Ttype223847* 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_484713(fc, (*t).n, n, stmts);
				{
					if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA41;
					goto LA37;
				}
				LA41: ;
				t = skiptypes_227167((*t).sons->data[((NI) 0)], IL64(211106247256320));
			} LA38: ;
		} LA37: ;
	}
	LA26: ;
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	{
		NIM_BOOL LOC45;
		Tnode223809* b;
		LOC45 = 0;
		LOC45 = containsnode_228365(stmts, TMP3595);
		if (!LOC45) goto LA46;
		b = newnodei_225351(((NU8) 110), (*n).info);
		add_224165(b, emptynode_224807);
		add_224165(stmts, b);
	}
	goto LA43;
	LA46: ;
	{
		result = stmts;
	}
	LA43: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, implicititerator_485347)(Tcontext278023* c, NimStringDesc* it, Tnode223809* arg) {
	Tnode223809* result;
	Tident196021* LOC1;
	Tnode223809* LOC2;
	result = 0;
	result = newnodei_225351(((NU8) 27), (*arg).info);
	LOC1 = 0;
	LOC1 = getident_196463(it);
	LOC2 = 0;
	LOC2 = newidentnode_225313(LOC1, (*arg).info);
	add_224165(result, LOC2);
	{
		NIM_BOOL LOC5;
		Tnode223809* 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_400024(arg);
		add_224165(result, LOC9);
	}
	goto LA3;
	LA7: ;
	{
		add_224165(result, arg);
	}
	LA3: ;
	result = semexprnoderef_455228(c, result, 2);
	return result;
}

N_NIMCALL(Tnode223809*, semfor_485381)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	NI length;
	Tscope223835* LOC1;
	Tnode223809* call;
	NIM_BOOL iscallexpr;
	result = 0;
	result = n;
	checkminsonslen_279270(n, ((NI) 3));
	length = sonslen_226387(n);
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]), semexprnoderef_455228(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;
		Tnode223809* LOC7;
		Tnode223809* LOC9;
		LOC4 = 0;
		LOC5 = 0;
		LOC5 = iscallexpr;
		if (!(LOC5)) goto LA6;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_224244(call, ((NI) 0));
		LOC5 = ((*LOC7).kind == ((NU8) 3));
		LA6: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA8;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_224244(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_485204(c, n);
			(*result).kind = ((NU8) 95);
		}
		goto LA12;
		LA14: ;
		{
			result = semforfields_484835(c, n, (*(*(*call).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic);
		}
		LA12: ;
	}
	goto LA2;
	LA10: ;
	{
		NIM_BOOL LOC18;
		NIM_BOOL LOC19;
		LOC18 = 0;
		LOC19 = 0;
		LOC19 = iscallexpr;
		if (!(LOC19)) goto LA20;
		LOC19 = ((*(*(*call).kindU.S6.sons->data[((NI) 0)]).typ).callconv == ((NU8) 8));
		LA20: ;
		LOC18 = LOC19;
		if (LOC18) goto LA21;
		LOC18 = ((*(*call).typ).kind == ((NU8) 49));
		LA21: ;
		if (!LOC18) goto LA22;
		result = semforvars_485204(c, n);
	}
	goto LA2;
	LA22: ;
	{
		NIM_BOOL LOC25;
		NIM_BOOL LOC26;
		LOC25 = 0;
		LOC26 = 0;
		LOC26 = !(iscallexpr);
		if (LOC26) goto LA27;
		LOC26 = !(((*(*call).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)));
		LA27: ;
		LOC25 = LOC26;
		if (LOC25) goto LA28;
		LOC25 = !(((49152 &(1<<(((*(*(*call).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).kind)&31)))!=0));
		LA28: ;
		if (!LOC25) goto LA29;
		{
			if (!(length == ((NI) 3))) goto LA33;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]), implicititerator_485347(c, ((NimStringDesc*) &TMP3596), (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]));
		}
		goto LA31;
		LA33: ;
		{
			if (!(length == ((NI) 4))) goto LA36;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]), implicititerator_485347(c, ((NimStringDesc*) &TMP3597), (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]));
		}
		goto LA31;
		LA36: ;
		{
			localerror_194128((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).info, ((NU16) 223), ((NimStringDesc*) &TMP3115));
		}
		LA31: ;
		result = semforvars_485204(c, n);
	}
	goto LA2;
	LA29: ;
	{
		result = semforvars_485204(c, n);
	}
	LA2: ;
	{
		if (!((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).typ == enforcevoidcontext_479405)) goto LA42;
		asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_479405);
	}
	LA42: ;
	closescope_284111(c);
	return result;
}

N_NIMCALL(NI64, tocover_479659)(Ttype223847* t) {
	NI64 result;
	Ttype223847* t2;
	result = 0;
	t2 = skiptypes_227167(t, IL64(211106242013184));
	{
		NIM_BOOL LOC3;
		NI LOC7;
		LOC3 = 0;
		LOC3 = ((*t2).kind == ((NU8) 14));
		if (!(LOC3)) goto LA4;
		LOC3 = enumhasholes_253099(t2);
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		LOC7 = sonslen_226387((*t2).n);
		result = ((NI64) (LOC7));
	}
	goto LA1;
	LA5: ;
	{
		Ttype223847* LOC9;
		LOC9 = 0;
		LOC9 = skiptypes_227167(t, IL64(211106240964608));
		result = lengthord_253016(LOC9);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, semcase_481701)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tscope223835* LOC1;
	NIM_BOOL chckcovered;
	NI64 covered;
	Ttype223847* typ;
	NIM_BOOL haselse;
	NIM_BOOL notordinal;
	Ttype223847* LOC2;
{	result = 0;
	result = n;
	checkminsonslen_279270(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_284091(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
	chckcovered = NIM_FALSE;
	covered = IL64(0);
	typ = commontypebegin_455472;
	haselse = NIM_FALSE;
	notordinal = NIM_FALSE;
	LOC2 = 0;
	LOC2 = skiptypes_227167((*(*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_194128((*n).info, ((NU16) 111), ((NimStringDesc*) &TMP3115));
		goto BeforeRet;
	}
	break;
	}
	{
		NI i_481739;
		NI HEX3Atmp_482062;
		NI LOC7;
		NI res_482065;
		i_481739 = 0;
		HEX3Atmp_482062 = 0;
		LOC7 = 0;
		LOC7 = sonslen_226387(n);
		HEX3Atmp_482062 = (NI)(LOC7 - ((NI) 1));
		res_482065 = ((NI) 1);
		{
			while (1) {
				Tnode223809* x;
				if (!(res_482065 <= HEX3Atmp_482062)) goto LA9;
				i_481739 = res_482065;
				x = (*n).kindU.S6.sons->data[i_481739];
				switch ((*x).kind) {
				case ((NU8) 85):
				{
					NI last;
					NI LOC11;
					checkminsonslen_279270(x, ((NI) 2));
					semcasebranch_465147(c, n, x, i_481739, (&covered));
					LOC11 = 0;
					LOC11 = sonslen_226387(x);
					last = (NI)(LOC11 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[last]), semexprbranchscope_481035(c, (*x).kindU.S6.sons->data[last]));
					typ = commontype_455477(typ, (*(*x).kindU.S6.sons->data[last]).typ);
				}
				break;
				case ((NU8) 86):
				{
					Tscope223835* LOC13;
					Tnode223809* LOC14;
					chckcovered = NIM_FALSE;
					checksonslen_279260(x, ((NI) 2));
					LOC13 = 0;
					LOC13 = openscope_284091(c);
					LOC14 = 0;
					LOC14 = semexprwithtype_455211(c, (*x).kindU.S6.sons->data[((NI) 0)], 0);
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 0)]), forcebool_462829(c, LOC14));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 1)]), semexprbranch_481004(c, (*x).kindU.S6.sons->data[((NI) 1)]));
					typ = commontype_455477(typ, (*(*x).kindU.S6.sons->data[((NI) 1)]).typ);
					closescope_284111(c);
				}
				break;
				case ((NU8) 88):
				{
					chckcovered = NIM_FALSE;
					checksonslen_279260(x, ((NI) 1));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_481035(c, (*x).kindU.S6.sons->data[((NI) 0)]));
					typ = commontype_455477(typ, (*(*x).kindU.S6.sons->data[((NI) 0)]).typ);
					haselse = NIM_TRUE;
				}
				break;
				default:
				{
					illformedast_279240(x);
				}
				break;
				}
				res_482065 += ((NI) 1);
			} LA9: ;
		}
	}
	{
		NIM_BOOL LOC19;
		LOC19 = 0;
		LOC19 = notordinal;
		if (!(LOC19)) goto LA20;
		LOC19 = !(haselse);
		LA20: ;
		if (!LOC19) goto LA21;
		message_194161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3598));
	}
	LA21: ;
	{
		if (!chckcovered) goto LA25;
		{
			NI64 LOC29;
			LOC29 = 0;
			LOC29 = tocover_479659((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			if (!(covered == LOC29)) goto LA30;
			haselse = NIM_TRUE;
		}
		goto LA27;
		LA30: ;
		{
			localerror_194128((*n).info, ((NU16) 155), ((NimStringDesc*) &TMP3115));
		}
		LA27: ;
	}
	LA25: ;
	closescope_284111(c);
	{
		NIM_BOOL LOC35;
		NIM_BOOL LOC36;
		LOC35 = 0;
		LOC36 = 0;
		LOC36 = isemptytype_228932(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_482028;
			NI HEX3Atmp_482070;
			NI LOC42;
			NI res_482073;
			i_482028 = 0;
			HEX3Atmp_482070 = 0;
			LOC42 = 0;
			LOC42 = len_224098(n);
			HEX3Atmp_482070 = (NI)(LOC42 - ((NI) 1));
			res_482073 = ((NI) 1);
			{
				while (1) {
					Tnode223809* LOC45;
					if (!(res_482073 <= HEX3Atmp_482070)) goto LA44;
					i_482028 = res_482073;
					LOC45 = 0;
					LOC45 = lastson_226406((*n).kindU.S6.sons->data[i_482028]);
					discardcheck_481156(c, LOC45);
					res_482073 += ((NI) 1);
				} LA44: ;
			}
		}
		{
			if (!(typ == enforcevoidcontext_479405)) goto LA48;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_479405);
		}
		LA48: ;
	}
	goto LA33;
	LA39: ;
	{
		{
			NI i_482053;
			NI HEX3Atmp_482078;
			NI LOC52;
			NI res_482081;
			i_482053 = 0;
			HEX3Atmp_482078 = 0;
			LOC52 = 0;
			LOC52 = len_224098(n);
			HEX3Atmp_482078 = (NI)(LOC52 - ((NI) 1));
			res_482081 = ((NI) 1);
			{
				while (1) {
					Tnode223809* it;
					NI j;
					NI LOC55;
					if (!(res_482081 <= HEX3Atmp_482078)) goto LA54;
					i_482053 = res_482081;
					it = (*n).kindU.S6.sons->data[i_482053];
					LOC55 = 0;
					LOC55 = len_224098(it);
					j = (NI)(LOC55 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[j]), fitnode_455245(c, typ, (*it).kindU.S6.sons->data[j]));
					res_482081 += ((NI) 1);
				} LA54: ;
			}
		}
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA33: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semreturn_496777)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = n;
	checksonslen_279260(n, ((NI) 1));
	{
		if (!((241664 &(1<<(((*(*(*c).p).owner).kind)&31)))!=0)) goto LA3;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA7;
			{
				Tnode223809* a;
				Tnode223809* LOC13;
				if (!!(((*(*c).p).resultsym == NIM_NIL))) goto LA11;
				a = newnodei_225351(((NU8) 73), (*(*n).kindU.S6.sons->data[((NI) 0)]).info);
				LOC13 = 0;
				LOC13 = newsymnode_225325((*(*c).p).resultsym);
				addson_225819(a, LOC13);
				addson_225819(a, (*n).kindU.S6.sons->data[((NI) 0)]);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semasgn_493310(c, a, ((NU8) 0)));
				{
					NIM_BOOL LOC16;
					Tnode223809* LOC17;
					Tnode223809* LOC18;
					Tnode223809* LOC20;
					Tnode223809* LOC21;
					LOC16 = 0;
					LOC17 = 0;
					LOC17 = HEX5BHEX5D_224244(n, ((NI) 0));
					LOC18 = 0;
					LOC18 = HEX5BHEX5D_224244(LOC17, ((NI) 1));
					LOC16 = ((*LOC18).kind == ((NU8) 3));
					if (!(LOC16)) goto LA19;
					LOC20 = 0;
					LOC20 = HEX5BHEX5D_224244(n, ((NI) 0));
					LOC21 = 0;
					LOC21 = HEX5BHEX5D_224244(LOC20, ((NI) 1));
					LOC16 = ((*LOC21).kindU.S4.sym == (*(*c).p).resultsym);
					LA19: ;
					if (!LOC16) goto LA22;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), emptynode_224807);
				}
				LA22: ;
			}
			goto LA9;
			LA11: ;
			{
				localerror_194128((*n).info, ((NU16) 183), ((NimStringDesc*) &TMP3115));
			}
			LA9: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		localerror_194128((*n).info, ((NU16) 167), ((NimStringDesc*) &TMP3599));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, semusing_497354)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = newnodei_225351(((NU8) 1), (*n).info);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = experimentalmode_279290(c);
		if (!!(LOC3)) goto LA4;
		localerror_194139((*n).info, ((NimStringDesc*) &TMP3600));
	}
	LA4: ;
	{
		Tnode223809* e_497369;
		Tnodeseq223803* HEX3Atmp_497409;
		NI i_497412;
		NI L_497414;
		e_497369 = 0;
		HEX3Atmp_497409 = 0;
		HEX3Atmp_497409 = (*n).kindU.S6.sons;
		i_497412 = ((NI) 0);
		L_497414 = (HEX3Atmp_497409 ? HEX3Atmp_497409->Sup.len : 0);
		{
			while (1) {
				if (!(i_497412 < L_497414)) goto LA8;
				e_497369 = HEX3Atmp_497409->data[i_497412];
				{
					Tnode223809* usedsym;
					NimStringDesc* LOC17;
					usedsym = semexpr_455201(c, e_497369, 0);
					{
						if (!((*usedsym).kind == ((NU8) 3))) goto LA12;
						switch ((*(*usedsym).kindU.S4.sym).kind) {
						case ((NU8) 3):
						case ((NU8) 8) ... ((NU8) 11):
						case ((NU8) 21):
						{
							safeadd_459504((&(*(*c).currentscope).usingsyms), usedsym);
							goto LA9;
						}
						break;
						case ((NU8) 12):
						case ((NU8) 18):
						case ((NU8) 17):
						case ((NU8) 14):
						case ((NU8) 15):
						case ((NU8) 13):
						case ((NU8) 16):
						{
							adddeclat_284629((*c).currentscope, (*usedsym).kindU.S4.sym);
							goto LA9;
						}
						break;
						default:
						{
						}
						break;
						}
					}
					LA12: ;
					LOC17 = 0;
					LOC17 = rendertree_245059(e_497369, 0);
					localerror_194128((*e_497369).info, ((NU16) 205), LOC17);
				} LA9: ;
				i_497412 += ((NI) 1);
			} LA8: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode223809*, semasm_479607)(Tcontext278023* con, Tnode223809* n) {
	Tnode223809* result;
	NIM_CHAR marker;
	result = 0;
	checksonslen_279260(n, ((NI) 2));
	marker = pragmaasm_295101(con, (*n).kindU.S6.sons->data[((NI) 0)]);
	{
		if (!((NU8)(marker) == (NU8)(0))) goto LA3;
		marker = 96;
	}
	LA3: ;
	result = semasmoremit_296737(con, n, marker);
	return result;
}

N_NIMCALL(void, semyieldvarresult_496942)(Tcontext278023* c, Tnode223809* n, Ttype223847* restype) {
	Ttype223847* t;
	t = skiptypes_227167(restype, 2048);
	switch ((*t).kind) {
	case ((NU8) 23):
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), takeimplicitaddr_496470(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	break;
	case ((NU8) 18):
	{
		{
			NI i_496969;
			NI HEX3Atmp_497025;
			NI LOC4;
			NI res_497028;
			i_496969 = 0;
			HEX3Atmp_497025 = 0;
			LOC4 = 0;
			LOC4 = sonslen_226351(t);
			HEX3Atmp_497025 = (LOC4 - 1);
			res_497028 = ((NI) 0);
			{
				while (1) {
					Ttype223847* e;
					if (!(res_497028 <= HEX3Atmp_497025)) goto LA6;
					i_496969 = res_497028;
					e = skiptypes_227167((*t).sons->data[i_496969], 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_496969]), takeimplicitaddr_496470(c, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[i_496969]));
						}
						goto LA11;
						LA13: ;
						{
							NIM_BOOL LOC16;
							Tnode223809* 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_496969]), takeimplicitaddr_496470(c, (*a).kindU.S6.sons->data[i_496969]));
						}
						goto LA11;
						LA18: ;
						{
							localerror_194128((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 193), ((NimStringDesc*) &TMP3602));
						}
						LA11: ;
					}
					LA9: ;
					res_497028 += ((NI) 1);
				} LA6: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
}

N_NIMCALL(Tnode223809*, semyield_497044)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = n;
	checksonslen_279260(n, ((NI) 1));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*(*c).p).owner == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = !(((49152 &(1<<(((*(*(*c).p).owner).kind)&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		localerror_194128((*n).info, ((NU16) 37), ((NimStringDesc*) &TMP3115));
	}
	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_194128((*n).info, ((NU16) 38), ((NimStringDesc*) &TMP3115));
	}
	goto LA1;
	LA10: ;
	{
		Ttype223847* itertype;
		Ttype223847* restype;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA13;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_455211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		itertype = (*(*(*c).p).owner).typ;
		restype = (*itertype).sons->data[((NI) 0)];
		{
			Ttype223847* adjustedres;
			if (!!((restype == NIM_NIL))) goto LA17;
			{
				if (!((*restype).kind == ((NU8) 49))) goto LA21;
				adjustedres = base_253039(restype);
			}
			goto LA19;
			LA21: ;
			{
				adjustedres = restype;
			}
			LA19: ;
			{
				if (!!(((*adjustedres).kind == ((NU8) 6)))) goto LA26;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), fitnode_455245(c, adjustedres, (*n).kindU.S6.sons->data[((NI) 0)]));
			}
			LA26: ;
			{
				if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).typ == NIM_NIL)) goto LA30;
				internalerror_194172((*n).info, ((NimStringDesc*) &TMP3601));
			}
			LA30: ;
			{
				NIM_BOOL LOC34;
				Ttype223847* inferred;
				LOC34 = 0;
				LOC34 = ismetatype_224821(adjustedres);
				if (!(LOC34)) goto LA35;
				LOC34 = !(((*adjustedres).kind == ((NU8) 8)));
				LA35: ;
				if (!LOC34) goto LA36;
				inferred = (*(*n).kindU.S6.sons->data[((NI) 0)]).typ;
				{
					if (!((*restype).kind == ((NU8) 49))) goto LA40;
					asgnRefNoCycle((void**) (&(*restype).sons->data[((NI) 0)]), inferred);
				}
				goto LA38;
				LA40: ;
				{
					asgnRefNoCycle((void**) (&(*itertype).sons->data[((NI) 0)]), inferred);
				}
				LA38: ;
			}
			LA36: ;
			semyieldvarresult_496942(c, n, adjustedres);
		}
		goto LA15;
		LA17: ;
		{
			localerror_194128((*n).info, ((NU16) 40), ((NimStringDesc*) &TMP3115));
		}
		LA15: ;
	}
	goto LA1;
	LA13: ;
	{
		if (!!(((*(*(*(*c).p).owner).typ).sons->data[((NI) 0)] == NIM_NIL))) goto LA45;
		localerror_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3603));
	}
	goto LA1;
	LA45: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, semiterator_488709)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	NU8 kind;
	Tsym223841* s;
	Ttype223847* t;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode223809* LOC4;
		Tnode223809* LOC6;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_224244(n, ((NI) 4));
		LOC3 = haspragma_298952(LOC4, ((NU16) 139));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_224244(n, ((NI) 0));
		LOC3 = ((*LOC6).kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		kind = ((NU8) 15);
	}
	goto LA1;
	LA7: ;
	{
		kind = ((NU8) 14);
	}
	LA1: ;
	{
		Tnode223809* LOC12;
		Tnode223809* LOC15;
		Tnode223809* LOC16;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_224244(n, ((NI) 0));
		if (!((*LOC12).kind == ((NU8) 3))) goto LA13;
		LOC15 = 0;
		LOC15 = HEX5BHEX5D_224244(n, ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*LOC15).kindU.S4.sym).owner), getcurrowner_278258());
		LOC16 = 0;
		LOC16 = HEX5BHEX5D_224244(n, ((NI) 0));
		(*(*LOC16).kindU.S4.sym).kind = kind;
	}
	LA13: ;
	result = semprocaux_487900(c, n, kind, TMP3605, ((NU8) 0));
	s = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	t = (*s).typ;
	{
		NIM_BOOL LOC19;
		LOC19 = 0;
		LOC19 = ((*t).sons->data[((NI) 0)] == NIM_NIL);
		if (!(LOC19)) goto LA20;
		LOC19 = !(((*(*s).typ).callconv == ((NU8) 8)));
		LA20: ;
		if (!LOC19) goto LA21;
		localerror_194128((*n).info, ((NU16) 182), ((NimStringDesc*) &TMP3606));
	}
	LA21: ;
	{
		if (!((*(*s).typ).callconv == ((NU8) 8))) goto LA25;
		(*(*s).typ).flags |= ((NU32)1)<<((((NU8) 11))%(sizeof(NU32)*8));
	}
	goto LA23;
	LA25: ;
	{
		(*(*s).typ).callconv = ((NU8) 5);
	}
	LA23: ;
	{
		NIM_BOOL LOC30;
		LOC30 = 0;
		LOC30 = ((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1));
		if (!(LOC30)) goto LA31;
		LOC30 = ((*s).magic == ((NU8) 0));
		LA31: ;
		if (!LOC30) goto LA32;
		localerror_194128((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA32: ;
	return result;
}

N_NIMCALL(Tnode223809*, semmethod_488888)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tsym223841* s;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_279280(c);
		if (!!(LOC3)) goto LA4;
		localerror_194128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3607));
	}
	LA4: ;
	result = semprocaux_487900(c, n, ((NU8) 13), TMP3608, ((NU8) 0));
	s = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = isgenericroutine_228650(s);
		if (!!(LOC8)) goto LA9;
		{
			NIM_BOOL LOC13;
			LOC13 = 0;
			LOC13 = hasobjparam_488833(s);
			if (!LOC13) goto LA14;
			methoddef_398634(s, NIM_FALSE);
		}
		goto LA11;
		LA14: ;
		{
			localerror_194128((*n).info, ((NU16) 187), ((NimStringDesc*) &TMP3607));
		}
		LA11: ;
	}
	LA9: ;
	return result;
}

N_NIMCALL(Tnode223809*, semconverterdef_488899)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tsym223841* s;
	Ttype223847* t;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_279280(c);
		if (!!(LOC3)) goto LA4;
		localerror_194128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3609));
	}
	LA4: ;
	checksonslen_279260(n, ((NI) 7));
	result = semprocaux_487900(c, n, ((NU8) 16), TMP3306, ((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_194128((*n).info, ((NU16) 182), ((NimStringDesc*) &TMP3609));
	}
	LA8: ;
	{
		NI LOC12;
		LOC12 = 0;
		LOC12 = sonslen_226351(t);
		if (!!((LOC12 == ((NI) 2)))) goto LA13;
		localerror_194128((*n).info, ((NU16) 218), ((NimStringDesc*) &TMP3609));
	}
	LA13: ;
	addconverter_278564(c, s);
	return result;
}

N_NIMCALL(Tnode223809*, semmacrodef_488924)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tsym223841* s;
	Ttype223847* t;
	result = 0;
	checksonslen_279260(n, ((NI) 7));
	result = semprocaux_487900(c, n, ((NU8) 17), TMP3610, ((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_194128((*n).info, ((NU16) 182), ((NimStringDesc*) &TMP3611));
	}
	LA3: ;
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1))) goto LA7;
		localerror_194128((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode223809*, evalinclude_488960)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = newnodei_225351(((NU8) 115), (*n).info);
	addson_225819(result, n);
	{
		NI i_488977;
		NI HEX3Atmp_488983;
		NI LOC2;
		NI res_488986;
		i_488977 = 0;
		HEX3Atmp_488983 = 0;
		LOC2 = 0;
		LOC2 = sonslen_226387(n);
		HEX3Atmp_488983 = (NI)(LOC2 - ((NI) 1));
		res_488986 = ((NI) 0);
		{
			while (1) {
				NI32 f;
				if (!(res_488986 <= HEX3Atmp_488983)) goto LA4;
				i_488977 = res_488986;
				f = checkmodulename_286064((*n).kindU.S6.sons->data[i_488977]);
				{
					if (!!((f == ((NI32) -1)))) goto LA7;
					{
						NIM_BOOL LOC11;
						NimStringDesc* LOC14;
						LOC11 = 0;
						LOC11 = containsorincl_220898((&(*c).includedfiles), ((NI) (f)));
						if (!LOC11) goto LA12;
						LOC14 = 0;
						LOC14 = tofilename_189655(f);
						localerror_194128((*n).info, ((NU16) 26), LOC14);
					}
					goto LA9;
					LA12: ;
					{
						Tnode223809* LOC16;
						Tnode223809* LOC17;
						LOC16 = 0;
						LOC16 = gincludefile_275073((*c).module, f);
						LOC17 = 0;
						LOC17 = semstmt_455277(c, LOC16);
						addson_225819(result, LOC17);
						excl_220871((&(*c).includedfiles), ((NI) (f)));
					}
					LA9: ;
				}
				LA7: ;
				res_488986 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode223809*, semexport_499616)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* x;
	result = 0;
	x = newnodei_225351((*n).kind, (*n).info);
	{
		NI i_499641;
		NI HEX3Atmp_499806;
		NI LOC2;
		NI res_499809;
		i_499641 = 0;
		HEX3Atmp_499806 = 0;
		LOC2 = 0;
		LOC2 = len_224098(n);
		HEX3Atmp_499806 = (LOC2 - 1);
		res_499809 = ((NI) 0);
		{
			while (1) {
				Tnode223809* a;
				Toverloaditer284431 o;
				Tsym223841* s;
				if (!(res_499809 <= HEX3Atmp_499806)) goto LA4;
				i_499641 = res_499809;
				a = (*n).kindU.S6.sons->data[i_499641];
				memset((void*)(&o), 0, sizeof(o));
				s = initoverloaditer_285108((&o), c, a);
				{
					NimStringDesc* LOC9;
					NimStringDesc* LOC10;
					if (!(s == NIM_NIL)) goto LA7;
					LOC9 = 0;
					LOC10 = 0;
					LOC10 = rendertree_245059(a, 0);
					LOC9 = rawNewString(LOC10->Sup.len + 15);
appendString(LOC9, ((NimStringDesc*) &TMP3628));
appendString(LOC9, LOC10);
					localerror_194128((*a).info, ((NU16) 4), LOC9);
				}
				goto LA5;
				LA7: ;
				{
					Tnode223809* LOC14;
					Ttabiter231119 ti;
					Tsym223841* it;
					if (!((*s).kind == ((NU8) 6))) goto LA12;
					strtableadd_231103((&(*(*c).module).kindU.S3.tab), s);
					LOC14 = 0;
					LOC14 = newsymnode_225338(s, (*a).info);
					add_224165(x, LOC14);
					memset((void*)(&ti), 0, sizeof(ti));
					it = inittabiter_231124((&ti), (*s).kindU.S3.tab);
					{
						while (1) {
							if (!!((it == NIM_NIL))) goto LA16;
							{
								if (!((43513792 &(1<<(((*it).kind)&31)))!=0)) goto LA19;
								strtableadd_231103((&(*(*c).module).kindU.S3.tab), it);
							}
							LA19: ;
							it = nextiter_231132((&ti), (*s).kindU.S3.tab);
						} LA16: ;
					}
				}
				goto LA5;
				LA12: ;
				{
					{
						while (1) {
							if (!!((s == NIM_NIL))) goto LA23;
							{
								Tnode223809* LOC28;
								if (!((43513792 &(1<<(((*s).kind)&31)))!=0)) goto LA26;
								LOC28 = 0;
								LOC28 = newsymnode_225338(s, (*a).info);
								add_224165(x, LOC28);
								strtableadd_231103((&(*(*c).module).kindU.S3.tab), s);
							}
							LA26: ;
							s = nextoverloaditer_285277((&o), c, a);
						} LA23: ;
					}
				}
				LA5: ;
				res_499809 += ((NI) 1);
			} LA4: ;
		}
	}
	result = n;
	return result;
}

N_NIMCALL(void, setline_489002)(Tnode223809* n, Tlineinfo188352 info) {
	{
		NI i_489024;
		NI HEX3Atmp_489027;
		NI LOC2;
		NI res_489030;
		i_489024 = 0;
		HEX3Atmp_489027 = 0;
		LOC2 = 0;
		LOC2 = safelen_224126(n);
		HEX3Atmp_489027 = (LOC2 - 1);
		res_489030 = ((NI) 0);
		{
			while (1) {
				if (!(res_489030 <= HEX3Atmp_489027)) goto LA4;
				i_489024 = res_489030;
				setline_489002((*n).kindU.S6.sons->data[i_489024], info);
				res_489030 += ((NI) 1);
			} LA4: ;
		}
	}
	(*n).info = info;
}

N_NIMCALL(Tnode223809*, sempragmablock_489046)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* pragmalist;
	result = 0;
	pragmalist = (*n).kindU.S6.sons->data[((NI) 0)];
	pragma_295082(c, NIM_NIL, pragmalist, TMP3629);
	result = semexpr_455201(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), result);
	{
		NI i_489074;
		NI HEX3Atmp_489089;
		NI LOC2;
		NI res_489092;
		i_489074 = 0;
		HEX3Atmp_489089 = 0;
		LOC2 = 0;
		LOC2 = len_224098(pragmalist);
		HEX3Atmp_489089 = (LOC2 - 1);
		res_489092 = ((NI) 0);
		{
			while (1) {
				NU16 LOC5;
				if (!(res_489092 <= HEX3Atmp_489089)) goto LA4;
				i_489074 = res_489092;
				LOC5 = 0;
				LOC5 = whichpragma_252687((*pragmalist).kindU.S6.sons->data[i_489074]);
				switch (LOC5) {
				case ((NU16) 115):
				{
					setline_489002(result, (*(*pragmalist).kindU.S6.sons->data[i_489074]).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_489092 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode223809*, semstaticstmt_489108)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* a;
	result = 0;
	a = semstmt_455277(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), a);
	evalstaticstmt_444244((*c).module, a, (*(*c).p).owner);
	result = newnodei_225407(((NU8) 114), (*n).info, ((NI) 1));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), emptynode_224807);
	return result;
}

N_NIMCALL(Tnode223809*, semexpr_455201)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
{	result = 0;
	result = n;
	{
		if (!(gcmd_165134 == ((NU8) 14))) goto LA3;
		suggestexpr_396865(c, n);
	}
	LA3: ;
	{
		if (!(((*n).flags &(1<<((((NU8) 7))&15)))!=0)) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	switch ((*n).kind) {
	case ((NU8) 2):
	case ((NU8) 53):
	{
		Tsym223841* s;
		s = lookup_284804(c, n);
		{
			if (!((*c).intypeclass == ((NI) 0))) goto LA12;
			semcapturesym_405834(s, (*(*c).p).owner);
		}
		LA12: ;
		result = semsym_490258(c, n, s, flags);
		{
			if (!((126976 &(1<<(((*s).kind)&31)))!=0)) goto LA16;
			result = symchoice_469790(c, n, s, ((NU8) 0));
			{
				if (!((*result).kind == ((NU8) 3))) goto LA20;
				markindirect_279208(c, (*result).kindU.S4.sym);
			}
			LA20: ;
		}
		LA16: ;
	}
	break;
	case ((NU8) 3):
	{
		result = semsym_490258(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_272190(((NU8) 5)));
		}
		LA27: ;
	}
	break;
	case ((NU8) 6):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA32;
			setintlittype_272774(result);
		}
		LA32: ;
	}
	break;
	case ((NU8) 7):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA37;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 32)));
		}
		LA37: ;
	}
	break;
	case ((NU8) 8):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA42;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 33)));
		}
		LA42: ;
	}
	break;
	case ((NU8) 9):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA47;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 34)));
		}
		LA47: ;
	}
	break;
	case ((NU8) 10):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA52;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 35)));
		}
		LA52: ;
	}
	break;
	case ((NU8) 11):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA57;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 40)));
		}
		LA57: ;
	}
	break;
	case ((NU8) 12):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA62;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 41)));
		}
		LA62: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA67;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 42)));
		}
		LA67: ;
	}
	break;
	case ((NU8) 14):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA72;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 43)));
		}
		LA72: ;
	}
	break;
	case ((NU8) 15):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA77;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 44)));
		}
		LA77: ;
	}
	break;
	case ((NU8) 16):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA82;
			asgnRefNoCycle((void**) (&(*result).typ), getfloatlittype_272686(result));
		}
		LA82: ;
	}
	break;
	case ((NU8) 17):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA87;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 37)));
		}
		LA87: ;
	}
	break;
	case ((NU8) 18):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA92;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 38)));
		}
		LA92: ;
	}
	break;
	case ((NU8) 19):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA97;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 39)));
		}
		LA97: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA102;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 28)));
		}
		LA102: ;
	}
	break;
	case ((NU8) 5):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA107;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_272190(((NU8) 2)));
		}
		LA107: ;
	}
	break;
	case ((NU8) 45):
	{
		result = semfieldaccess_490014(c, n, flags);
		{
			if (!((*result).kind == ((NU8) 25))) goto LA112;
			(*result).kind = ((NU8) 27);
			result = semexpr_455201(c, result, flags);
		}
		LA112: ;
	}
	break;
	case ((NU8) 55):
	{
		message_194161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3544));
		result = semexpr_455201(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):
	{
		Ttype223847* typ;
		Ttype223847* LOC116;
		LOC116 = 0;
		LOC116 = semtypenode_455269(c, n, NIM_NIL);
		typ = skiptypes_227167(LOC116, IL64(562949953421568));
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_278684(c, typ));
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		NU8 mode;
		Tsym223841* s;
		checkminsonslen_279270(n, ((NI) 1));
		{
			if (!(((*n).flags &(1<<((((NU8) 9))&15)))!=0)) goto LA120;
			mode = 0;
		}
		goto LA118;
		LA120: ;
		{
			mode = 2;
		}
		LA118: ;
		s = qualifiedlookup_284864(c, (*n).kindU.S6.sons->data[((NI) 0)], mode);
		{
			if (!!((s == NIM_NIL))) goto LA125;
			switch ((*s).kind) {
			case ((NU8) 17):
			{
				{
					if (!!((((*s).flags &(1<<((((NU8) 25))&31)))!=0))) goto LA130;
					result = semdirectop_456039(c, n, flags);
				}
				goto LA128;
				LA130: ;
				{
					result = semmacroexpr_456073(c, n, n, s, flags);
				}
				LA128: ;
			}
			break;
			case ((NU8) 18):
			{
				{
					if (!!((((*s).flags &(1<<((((NU8) 25))&31)))!=0))) goto LA136;
					result = semdirectop_456039(c, n, flags);
				}
				goto LA134;
				LA136: ;
				{
					result = semtemplateexpr_456062(c, n, s, flags);
				}
				LA134: ;
			}
			break;
			case ((NU8) 7):
			{
				{
					NI LOC142;
					LOC142 = 0;
					LOC142 = len_224098(n);
					if (!(LOC142 == ((NI) 2))) goto LA143;
					result = semconv_491710(c, n);
				}
				goto LA140;
				LA143: ;
				{
					NI LOC146;
					LOC146 = 0;
					LOC146 = len_224098(n);
					if (!(LOC146 == ((NI) 1))) goto LA147;
					result = semobjconstr_494433(c, n, flags);
				}
				goto LA140;
				LA147: ;
				{
					NIM_BOOL LOC150;
					LOC150 = 0;
					LOC150 = contains_220829((*c).ambiguoussymbols, (*s).Sup.id);
					if (!LOC150) goto LA151;
					localerror_194128((*n).info, ((NU16) 66), (*(*s).name).s);
				}
				goto LA140;
				LA151: ;
				{
					if (!((*s).magic == ((NU8) 0))) goto LA154;
					result = semdirectop_456039(c, n, flags);
				}
				goto LA140;
				LA154: ;
				{
					result = semmagic_498194(c, n, s, flags);
				}
				LA140: ;
			}
			break;
			case ((NU8) 12):
			case ((NU8) 13):
			case ((NU8) 16):
			case ((NU8) 14):
			case ((NU8) 15):
			{
				{
					if (!((*s).magic == ((NU8) 0))) goto LA160;
					result = semdirectop_456039(c, n, flags);
				}
				goto LA158;
				LA160: ;
				{
					result = semmagic_498194(c, n, s, flags);
				}
				LA158: ;
			}
			break;
			default:
			{
				result = semindirectop_494464(c, n, flags);
			}
			break;
			}
		}
		goto LA123;
		LA125: ;
		{
			NIM_BOOL LOC165;
			NIM_BOOL LOC166;
			Tnode223809* LOC167;
			Tnode223809* LOC170;
			Tnode223809* LOC171;
			LOC165 = 0;
			LOC166 = 0;
			LOC167 = 0;
			LOC167 = HEX5BHEX5D_224244(n, ((NI) 0));
			LOC166 = ((*LOC167).kind == ((NU8) 42));
			if (LOC166) goto LA168;
			LOC166 = shouldbebracketexpr_499837(n);
			LA168: ;
			LOC165 = LOC166;
			if (!(LOC165)) goto LA169;
			LOC170 = 0;
			LOC170 = HEX5BHEX5D_224244(n, ((NI) 0));
			LOC171 = 0;
			LOC171 = HEX5BHEX5D_224244(LOC170, ((NI) 0));
			LOC165 = issymchoice_491671(LOC171);
			LA169: ;
			if (!LOC165) goto LA172;
			setgenericparams_500151(c, (*n).kindU.S6.sons->data[((NI) 0)]);
			result = semdirectop_456039(c, n, flags);
		}
		goto LA123;
		LA172: ;
		{
			NIM_BOOL LOC175;
			LOC175 = 0;
			LOC175 = issymchoice_491671((*n).kindU.S6.sons->data[((NI) 0)]);
			if (LOC175) goto LA176;
			LOC175 = (((*n).flags &(1<<((((NU8) 9))&15)))!=0);
			LA176: ;
			if (!LOC175) goto LA177;
			result = semdirectop_456039(c, n, flags);
		}
		goto LA123;
		LA177: ;
		{
			result = semindirectop_494464(c, n, flags);
		}
		LA123: ;
	}
	break;
	case ((NU8) 93):
	{
		{
			if (!((flags &(1<<((((NU8) 3))&15)))!=0)) goto LA183;
			result = semwhen_456047(c, n, NIM_TRUE);
		}
		goto LA181;
		LA183: ;
		{
			result = semwhen_456047(c, n, NIM_FALSE);
			{
				if (!(result == n)) goto LA188;
				result = semwhen_456047(c, n, NIM_TRUE);
			}
			goto LA186;
			LA188: ;
			{
				result = semexpr_455201(c, result, flags);
			}
			LA186: ;
		}
		LA181: ;
	}
	break;
	case ((NU8) 42):
	{
		checkminsonslen_279270(n, ((NI) 1));
		result = semarrayaccess_496382(c, n, flags);
	}
	break;
	case ((NU8) 40):
	{
		Tident196021* LOC193;
		Tnode223809* LOC194;
		LOC193 = 0;
		LOC193 = getident_196463(((NimStringDesc*) &TMP3572));
		LOC194 = 0;
		LOC194 = buildoverloadedsubscripts_496122(n, LOC193);
		result = semexpr_455201(c, LOC194, flags);
	}
	break;
	case ((NU8) 43):
	{
		internalerror_194172((*n).info, ((NimStringDesc*) &TMP3573));
	}
	break;
	case ((NU8) 37):
	{
		NU8 LOC197;
		LOC197 = 0;
		LOC197 = checkpar_498735(n);
		switch (LOC197) {
		case ((NU8) 0):
		{
			result = errornode_279171(c, n);
		}
		break;
		case ((NU8) 3):
		{
			Tnode223809* tupexp;
			tupexp = semtuplepositionsconstr_498949(c, n, flags);
			{
				NIM_BOOL LOC202;
				Ttype223847* typ;
				Ttype223847* LOC205;
				LOC202 = 0;
				LOC202 = istupletype_499005(tupexp);
				if (!LOC202) goto LA203;
				LOC205 = 0;
				LOC205 = semtypenode_455269(c, n, NIM_NIL);
				typ = skiptypes_227167(LOC205, IL64(562949953421568));
				asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_278684(c, typ));
			}
			goto LA200;
			LA203: ;
			{
				result = tupexp;
			}
			LA200: ;
		}
		break;
		case ((NU8) 2):
		{
			result = semtuplefieldsconstr_498837(c, n, flags);
		}
		break;
		case ((NU8) 1):
		{
			result = semexpr_455201(c, (*n).kindU.S6.sons->data[((NI) 0)], flags);
		}
		break;
		}
	}
	break;
	case ((NU8) 39):
	{
		result = semsetconstr_498479(c, n);
	}
	break;
	case ((NU8) 41):
	{
		result = semarrayconstr_492482(c, n, flags);
	}
	break;
	case ((NU8) 38):
	{
		result = semobjconstr_494433(c, n, flags);
	}
	break;
	case ((NU8) 51):
	{
		result = semlambda_455261(c, n, flags);
	}
	break;
	case ((NU8) 52):
	{
		result = semdo_487263(c, n, flags);
	}
	break;
	case ((NU8) 47):
	{
		result = semderef_496161(c, n);
	}
	break;
	case ((NU8) 63):
	{
		result = n;
		checksonslen_279260(n, ((NI) 1));
		result = semaddr_493250(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_FALSE);
	}
	break;
	case ((NU8) 64):
	case ((NU8) 65):
	{
		checksonslen_279260(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexpr_455201(c, (*n).kindU.S6.sons->data[((NI) 0)], flags));
	}
	break;
	case ((NU8) 61):
	{
		result = semcast_491825(c, n);
	}
	break;
	case ((NU8) 48):
	case ((NU8) 92):
	{
		result = semif_481260(c, n);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	case ((NU8) 32):
	{
		checksonslen_279260(n, ((NI) 2));
	}
	break;
	case ((NU8) 71):
	case ((NU8) 72):
	case ((NU8) 66):
	case ((NU8) 67):
	{
		checksonslen_279260(n, ((NI) 1));
	}
	break;
	case ((NU8) 68):
	case ((NU8) 69):
	case ((NU8) 70):
	{
		checksonslen_279260(n, ((NI) 3));
	}
	break;
	case ((NU8) 46):
	{
		checkminsonslen_279270(n, ((NI) 2));
	}
	break;
	case ((NU8) 54):
	{
		result = semtableconstr_498640(c, n);
	}
	break;
	case ((NU8) 56):
	case ((NU8) 57):
	{
	}
	break;
	case ((NU8) 62):
	{
		result = semstaticexpr_494274(c, n);
	}
	break;
	case ((NU8) 73):
	{
		result = semasgn_493310(c, n, ((NU8) 0));
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	{
		result = semblock_499450(c, n);
	}
	break;
	case ((NU8) 115):
	case ((NU8) 126):
	{
		result = semstmtlist_489286(c, n, flags);
	}
	break;
	case ((NU8) 108):
	{
		result = semraise_485501(c, n);
	}
	break;
	case ((NU8) 99):
	{
		result = semvarorlet_483852(c, n, ((NU8) 8));
	}
	break;
	case ((NU8) 100):
	{
		result = semvarorlet_483852(c, n, ((NU8) 9));
	}
	break;
	case ((NU8) 101):
	{
		result = semconst_484383(c, n);
	}
	break;
	case ((NU8) 98):
	{
		result = semtypesection_486685(c, n);
	}
	break;
	case ((NU8) 114):
	{
		result = semdiscard_479406(c, n);
	}
	break;
	case ((NU8) 96):
	{
		result = semwhile_479617(c, n);
	}
	break;
	case ((NU8) 106):
	{
		result = semtry_482115(c, n);
	}
	break;
	case ((NU8) 110):
	case ((NU8) 111):
	{
		result = sembreakorcontinue_479427(c, n);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		result = semfor_485381(c, n);
	}
	break;
	case ((NU8) 97):
	{
		result = semcase_481701(c, n);
	}
	break;
	case ((NU8) 109):
	{
		result = semreturn_496777(c, n);
	}
	break;
	case ((NU8) 124):
	{
		result = semusing_497354(c, n);
	}
	break;
	case ((NU8) 89):
	{
		result = semasm_479607(c, n);
	}
	break;
	case ((NU8) 104):
	{
		result = semyield_497044(c, n);
	}
	break;
	case ((NU8) 90):
	{
		pragma_295082(c, (*(*c).p).owner, n, TMP3604);
	}
	break;
	case ((NU8) 84):
	{
		result = semiterator_488709(c, n);
	}
	break;
	case ((NU8) 79):
	{
		result = semproc_479797(c, n);
	}
	break;
	case ((NU8) 80):
	{
		result = semmethod_488888(c, n);
	}
	break;
	case ((NU8) 81):
	{
		result = semconverterdef_488899(c, n);
	}
	break;
	case ((NU8) 82):
	{
		result = semmacrodef_488924(c, n);
	}
	break;
	case ((NU8) 83):
	{
		result = semtemplatedef_473709(c, n);
	}
	break;
	case ((NU8) 116):
	{
		{
			NIM_BOOL LOC254;
			LOC254 = 0;
			LOC254 = istoplevel_279280(c);
			if (!!(LOC254)) goto LA255;
			localerror_194128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3612));
		}
		LA255: ;
		result = evalimport_286004(c, n);
	}
	break;
	case ((NU8) 117):
	{
		{
			NIM_BOOL LOC260;
			LOC260 = 0;
			LOC260 = istoplevel_279280(c);
			if (!!(LOC260)) goto LA261;
			localerror_194128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3612));
		}
		LA261: ;
		result = evalimportexcept_286857(c, n);
	}
	break;
	case ((NU8) 120):
	{
		{
			NIM_BOOL LOC266;
			LOC266 = 0;
			LOC266 = istoplevel_279280(c);
			if (!!(LOC266)) goto LA267;
			localerror_194128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3623));
		}
		LA267: ;
		result = evalfrom_286011(c, n);
	}
	break;
	case ((NU8) 121):
	{
		{
			NIM_BOOL LOC272;
			LOC272 = 0;
			LOC272 = istoplevel_279280(c);
			if (!!(LOC272)) goto LA273;
			localerror_194128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3626));
		}
		LA273: ;
		result = evalinclude_488960(c, n);
	}
	break;
	case ((NU8) 118):
	case ((NU8) 119):
	{
		{
			NIM_BOOL LOC278;
			LOC278 = 0;
			LOC278 = istoplevel_279280(c);
			if (!!(LOC278)) goto LA279;
			localerror_194128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3627));
		}
		LA279: ;
		result = semexport_499616(c, n);
	}
	break;
	case ((NU8) 91):
	{
		result = sempragmablock_489046(c, n);
	}
	break;
	case ((NU8) 113):
	{
		result = semstaticstmt_489108(c, n);
	}
	break;
	case ((NU8) 105):
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexpr_455201(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		{
			NIM_BOOL LOC286;
			NIM_BOOL LOC287;
			NIM_BOOL LOC289;
			LOC286 = 0;
			LOC287 = 0;
			LOC287 = isemptytype_228932((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			LOC286 = !(LOC287);
			if (!(LOC286)) goto LA288;
			LOC289 = 0;
			LOC289 = implicitlydiscardable_481045((*n).kindU.S6.sons->data[((NI) 0)]);
			LOC286 = !(LOC289);
			LA288: ;
			if (!LOC286) goto LA290;
			localerror_194128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3630));
		}
		LA290: ;
	}
	break;
	default:
	{
		NimStringDesc* LOC293;
		LOC293 = 0;
		LOC293 = rendertree_245059(n, 4);
		localerror_194128((*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(Tnode223809*, semexprwithtype_455211)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	result = 0;
	result = semexpr_455201(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_279171(c, n);
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		NimStringDesc* LOC13;
		LOC9 = 0;
		LOC9 = ((*result).typ == NIM_NIL);
		if (LOC9) goto LA10;
		LOC9 = ((*result).typ == enforcevoidcontext_479405);
		LA10: ;
		if (!LOC9) goto LA11;
		LOC13 = 0;
		LOC13 = rendertree_245059(result, 4);
		localerror_194128((*n).info, ((NU16) 94), LOC13);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_279161(c));
	}
	goto LA7;
	LA11: ;
	{
		{
			if (!!(((flags &(1<<((((NU8) 10))&15)))!=0))) goto LA17;
			semprocvarcheck_479766(c, result);
		}
		LA17: ;
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA21;
			result = newderef_400024(result);
		}
		LA21: ;
		semdestructorcheck_480851(c, result, flags);
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode223809*, semconstexpr_456485)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tnode223809* e;
{	result = 0;
	e = semexprwithtype_455211(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3;
		localerror_194128((*n).info, ((NU16) 108), ((NimStringDesc*) &TMP3115));
		result = n;
		goto BeforeRet;
	}
	LA3: ;
	result = getconstexpr_291004((*c).module, e);
	{
		if (!(result == NIM_NIL)) goto LA7;
		result = evalconstexpr_444221((*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_191255((*e).info, (*n).info);
				if (!!(LOC17)) goto LA18;
				pushinfocontext_189581((*n).info);
				localerror_194128((*e).info, ((NU16) 108), ((NimStringDesc*) &TMP3115));
				popinfocontext_189600();
			}
			goto LA15;
			LA18: ;
			{
				localerror_194128((*e).info, ((NU16) 108), ((NimStringDesc*) &TMP3115));
			}
			LA15: ;
			result = e;
		}
		goto LA9;
		LA13: ;
		{
			result = fixuptypeaftereval_456201(c, result, e);
		}
		LA9: ;
	}
	LA7: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, tryconstexpr_456420)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* volatile result;
	Tnode223809* e;
	NI olderrorcount;
	NI olderrormax;
	NU8 olderroroutputs;
	TSafePoint TMP3631;
{	result = 0;
	e = semexprwithtype_455211(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = getconstexpr_291004((*c).module, e);
	{
		if (!!((result == NIM_NIL))) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	olderrorcount = gerrorcounter_189399;
	olderrormax = gerrormax_189402;
	olderroroutputs = erroroutputs_189440;
	erroroutputs_189440 = 0;
	gerrormax_189402 = ((NI) 2147483647);
	pushSafePoint(&TMP3631);
	TMP3631.status = setjmp(TMP3631.context);
	if (TMP3631.status == 0) {
		result = evalconstexpr_444221((*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_456201(c, result, e);
		}
		LA10: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI188358))) {
			TMP3631.status = 0;
			result = NIM_NIL;
			popCurrentException();
		}
	}
	if (TMP3631.status != 0) reraiseException();
	gerrorcounter_189399 = olderrorcount;
	gerrormax_189402 = olderrormax;
	erroroutputs_189440 = olderroroutputs;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, semoperand_490021)(Tcontext278023* c, Tnode223809* n, NU16 flags) {
	Tnode223809* result;
	result = 0;
	result = semexpr_455201(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_279171(c, n);
	}
	LA5: ;
	{
		if (!!(((*result).typ == NIM_NIL))) goto LA9;
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA13;
			result = newderef_400024(result);
		}
		LA13: ;
	}
	goto LA7;
	LA9: ;
	{
		if (!!(((24 & flags) == 0))) goto LA16;
		asgnRefNoCycle((void**) (&(*result).typ), newtypes_278221(((NU8) 3), c));
		(*(*result).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	goto LA7;
	LA16: ;
	{
		NimStringDesc* LOC19;
		LOC19 = 0;
		LOC19 = rendertree_245059(result, 4);
		localerror_194128((*n).info, ((NU16) 94), LOC19);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_279161(c));
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode223809*, seminferredlambda_487290)(Tcontext278023* c, Tidtable223859 pt, Tnode223809* n_487294) {
	Tnode223809* result;
	Tnode223809* n;
	Tsym223841* original;
	Tsym223841* s;
	Tnode223809* params;
	Tscope223835* LOC14;
	Tnode223809* sembody;
	Tnode223809* LOC15;
	result = 0;
	n = n_487294;
	original = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	s = copysym_226607(original, NIM_FALSE);
	(*s).flags |= ((NU32)1)<<((((NU8) 2))%(sizeof(NU32)*8));
	n = replacetypesinbody_302862(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_224807);
	params = (*(*n).typ).n;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 3)]), params);
	asgnRefNoCycle((void**) (&(*s).typ), (*n).typ);
	{
		NI i_487346;
		Slice90369 HEX3Atmp_487376;
		NI LOC2;
		i_487346 = 0;
		memset((void*)(&HEX3Atmp_487376), 0, sizeof(HEX3Atmp_487376));
		LOC2 = 0;
		LOC2 = len_224098(params);
		HEX3Atmp_487376 = HEX2EHEX2E_105290(((NI) 1), (LOC2 - 1));
		{
			NI x_487380;
			NI HEX3Atmp_487382;
			NI HEX3Atmp_487384;
			NI res_487386;
			x_487380 = 0;
			HEX3Atmp_487382 = 0;
			HEX3Atmp_487384 = 0;
			HEX3Atmp_487382 = HEX3Atmp_487376.a;
			HEX3Atmp_487384 = HEX3Atmp_487376.b;
			res_487386 = HEX3Atmp_487382;
			{
				while (1) {
					if (!(res_487386 <= HEX3Atmp_487384)) goto LA5;
					x_487380 = res_487386;
					i_487346 = x_487380;
					{
						Tnode223809* LOC8;
						Tnode223809* LOC11;
						NimStringDesc* LOC12;
						Tnode223809* LOC13;
						LOC8 = 0;
						LOC8 = HEX5BHEX5D_224244(params, i_487346);
						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_224244(params, i_487346);
						LOC12 = 0;
						LOC13 = 0;
						LOC13 = HEX5BHEX5D_224244(params, i_487346);
						LOC12 = rawNewString((*(*(*LOC13).kindU.S4.sym).name).s->Sup.len + 32);
appendString(LOC12, ((NimStringDesc*) &TMP3632));
appendString(LOC12, (*(*(*LOC13).kindU.S4.sym).name).s);
						localerror_194139((*LOC11).info, LOC12);
					}
					LA9: ;
					res_487386 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	LOC14 = 0;
	LOC14 = openscope_284091(c);
	pushowner_278263(s);
	addparams_455293(c, params, ((NU8) 12));
	pushproccon_278361(c, s);
	addresult_486830(c, (*(*n).typ).sons->data[((NI) 0)], (*n).info, ((NU8) 12));
	addresultnode_486864(c, n);
	LOC15 = 0;
	LOC15 = semprocbody_455238(c, (*n).kindU.S6.sons->data[((NI) 6)]);
	sembody = hlobody_457161(c, LOC15);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_415225((*c).module, sembody, s));
	popproccon_278393(c);
	popowner_278269();
	closescope_284111(c);
	return result;
}

N_NIMCALL(Tpasscontext275005*, myopen_500741)(Tsym223841* module) {
	Tpasscontext275005* result;
	Tcontext278023* c;
	TY278126 LOC5;
	TY278132 LOC6;
	result = 0;
	c = newcontext_278184(module);
	{
		if (!!(((*c).p == NIM_NIL))) goto LA3;
		internalerror_194172((*module).info, ((NimStringDesc*) &TMP2060));
	}
	LA3: ;
	(*c).semconstexpr = semconstexpr_456485;
	(*c).semexpr = semexpr_455201;
	(*c).semtryexpr = tryexpr_455317;
	(*c).semtryconstexpr = tryconstexpr_456420;
	(*c).semoperand = semoperand_490021;
	(*c).semconstboolexpr = semconstboolexpr_462852;
	(*c).semoverloadedcall = semoverloadedcall_461971;
	memset((void*)(&LOC5), 0, sizeof(LOC5));
	LOC5.ClPrc = ((TMP3633) (seminferredlambda_487290)); LOC5.ClEnv = NIM_NIL;
	asgnRef((void**) (&(*c).seminferredlambda.ClEnv), LOC5.ClEnv);
	(*c).seminferredlambda.ClPrc = LOC5.ClPrc;
	memset((void*)(&LOC6), 0, sizeof(LOC6));
	LOC6.ClPrc = ((TMP3634) (generateinstance_458450)); LOC6.ClEnv = NIM_NIL;
	asgnRef((void**) (&(*c).semgenerateinstance.ClEnv), LOC6.ClEnv);
	(*c).semgenerateinstance.ClPrc = LOC6.ClPrc;
	(*c).semtypenode = semtypenode_455269;
	(*c).insttypeboundop = insttypeboundop_392846;
	pushproccon_278361(c, module);
	pushowner_278263((*c).module);
	asgnRef((void**) (&(*c).importtable), openscope_284091(c));
	strtableadd_231103((&(*(*c).importtable).symbols), module);
	{
		if (!(((*module).flags &(1<<((((NU8) 13))&31)))!=0)) goto LA9;
		asgnRefNoCycle((void**) (&systemmodule_272019), module);
	}
	goto LA7;
	LA9: ;
	{
		strtableadd_231103((&(*(*c).importtable).symbols), systemmodule_272019);
		importallsymbols_286389(c, systemmodule_272019);
	}
	LA7: ;
	asgnRef((void**) (&(*c).toplevelscope), openscope_284091(c));
	result = &c->Sup;
	return result;
}

N_NIMCALL(Tpasscontext275005*, myopencached_500778)(Tsym223841* module, Trodreader266030* rd) {
	Tpasscontext275005* result;
	result = 0;
	result = myopen_500741(module);
	{
		Tsym223841* m_500792;
		Tsymseq223811* HEX3Atmp_500794;
		NI i_500797;
		NI L_500799;
		m_500792 = 0;
		HEX3Atmp_500794 = 0;
		HEX3Atmp_500794 = (*rd).methods;
		i_500797 = ((NI) 0);
		L_500799 = (HEX3Atmp_500794 ? HEX3Atmp_500794->Sup.len : 0);
		{
			while (1) {
				if (!(i_500797 < L_500799)) goto LA3;
				m_500792 = HEX3Atmp_500794->data[i_500797];
				methoddef_398634(m_500792, NIM_TRUE);
				i_500797 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(void, gatherstmts_486278)(Tcontext278023* c, Tnode223809* n, Tnode223809* result) {
	switch ((*n).kind) {
	case ((NU8) 121):
	{
		{
			NI i_486310;
			Slice90369 HEX3Atmp_486358;
			NI LOC3;
			i_486310 = 0;
			memset((void*)(&HEX3Atmp_486358), 0, sizeof(HEX3Atmp_486358));
			LOC3 = 0;
			LOC3 = len_224098(n);
			HEX3Atmp_486358 = HEX2EHEX2E_105290(((NI) 0), (LOC3 - 1));
			{
				NI x_486362;
				NI HEX3Atmp_486364;
				NI HEX3Atmp_486366;
				NI res_486368;
				x_486362 = 0;
				HEX3Atmp_486364 = 0;
				HEX3Atmp_486366 = 0;
				HEX3Atmp_486364 = HEX3Atmp_486358.a;
				HEX3Atmp_486366 = HEX3Atmp_486358.b;
				res_486368 = HEX3Atmp_486364;
				{
					while (1) {
						NI32 f;
						if (!(res_486368 <= HEX3Atmp_486366)) goto LA6;
						x_486362 = res_486368;
						i_486310 = x_486362;
						f = checkmodulename_286064((*n).kindU.S6.sons->data[i_486310]);
						{
							if (!!((f == ((NI32) -1)))) goto LA9;
							{
								NIM_BOOL LOC13;
								NimStringDesc* LOC16;
								LOC13 = 0;
								LOC13 = containsorincl_220898((&(*c).includedfiles), ((NI) (f)));
								if (!LOC13) goto LA14;
								LOC16 = 0;
								LOC16 = tofilename_189655(f);
								localerror_194128((*n).info, ((NU16) 26), LOC16);
							}
							goto LA11;
							LA14: ;
							{
								Tnode223809* code;
								code = gincludefile_275073((*c).module, f);
								gatherstmts_486278(c, code, result);
								excl_220871((&(*c).includedfiles), ((NI) (f)));
							}
							LA11: ;
						}
						LA9: ;
						res_486368 += ((NI) 1);
					} LA6: ;
				}
			}
		}
	}
	break;
	case ((NU8) 115):
	{
		{
			NI i_486343;
			Slice90369 HEX3Atmp_486373;
			NI LOC20;
			i_486343 = 0;
			memset((void*)(&HEX3Atmp_486373), 0, sizeof(HEX3Atmp_486373));
			LOC20 = 0;
			LOC20 = len_224098(n);
			HEX3Atmp_486373 = HEX2EHEX2E_105290(((NI) 0), (LOC20 - 1));
			{
				NI x_486377;
				NI HEX3Atmp_486379;
				NI HEX3Atmp_486381;
				NI res_486383;
				x_486377 = 0;
				HEX3Atmp_486379 = 0;
				HEX3Atmp_486381 = 0;
				HEX3Atmp_486379 = HEX3Atmp_486373.a;
				HEX3Atmp_486381 = HEX3Atmp_486373.b;
				res_486383 = HEX3Atmp_486379;
				{
					while (1) {
						if (!(res_486383 <= HEX3Atmp_486381)) goto LA23;
						x_486377 = res_486383;
						i_486343 = x_486377;
						gatherstmts_486278(c, (*n).kindU.S6.sons->data[i_486343], result);
						res_486383 += ((NI) 1);
					} LA23: ;
				}
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		(*n).flags |= ((NU16)1)<<((((NU8) 7))%(sizeof(NU16)*8));
		typesectionleftsidepass_485599(c, n);
		add_224165(result, n);
	}
	break;
	default:
	{
		add_224165(result, n);
	}
	break;
	}
}

N_NIMCALL(Tnode223809*, semalltypesections_486273)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = newnodei_225351(((NU8) 115), (*n).info);
	gatherstmts_486278(c, n, result);
	{
		NI i_486398;
		Slice90369 HEX3Atmp_486602;
		NI LOC2;
		i_486398 = 0;
		memset((void*)(&HEX3Atmp_486602), 0, sizeof(HEX3Atmp_486602));
		LOC2 = 0;
		LOC2 = len_224098(result);
		HEX3Atmp_486602 = HEX2EHEX2E_105290(((NI) 0), (LOC2 - 1));
		{
			NI x_486606;
			NI HEX3Atmp_486608;
			NI HEX3Atmp_486610;
			NI res_486612;
			x_486606 = 0;
			HEX3Atmp_486608 = 0;
			HEX3Atmp_486610 = 0;
			HEX3Atmp_486608 = HEX3Atmp_486602.a;
			HEX3Atmp_486610 = HEX3Atmp_486602.b;
			res_486612 = HEX3Atmp_486608;
			{
				while (1) {
					if (!(res_486612 <= HEX3Atmp_486610)) goto LA5;
					x_486606 = res_486612;
					i_486398 = x_486606;
					{
						Tnode223809* LOC8;
						Tnode223809* LOC11;
						LOC8 = 0;
						LOC8 = HEX5BHEX5D_224244(result, i_486398);
						if (!((*LOC8).kind == ((NU8) 98))) goto LA9;
						LOC11 = 0;
						LOC11 = HEX5BHEX5D_224244(result, i_486398);
						typesectionrightsidepass_485697(c, LOC11);
					}
					LA9: ;
					res_486612 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	{
		NI i_486436;
		Slice90369 HEX3Atmp_486617;
		NI LOC13;
		i_486436 = 0;
		memset((void*)(&HEX3Atmp_486617), 0, sizeof(HEX3Atmp_486617));
		LOC13 = 0;
		LOC13 = len_224098(result);
		HEX3Atmp_486617 = HEX2EHEX2E_105290(((NI) 0), (LOC13 - 1));
		{
			NI x_486621;
			NI HEX3Atmp_486623;
			NI HEX3Atmp_486625;
			NI res_486627;
			x_486621 = 0;
			HEX3Atmp_486623 = 0;
			HEX3Atmp_486625 = 0;
			HEX3Atmp_486623 = HEX3Atmp_486617.a;
			HEX3Atmp_486625 = HEX3Atmp_486617.b;
			res_486627 = HEX3Atmp_486623;
			{
				while (1) {
					if (!(res_486627 <= HEX3Atmp_486625)) goto LA16;
					x_486621 = res_486627;
					i_486436 = x_486621;
					{
						Tnode223809* LOC19;
						Tnode223809* LOC22;
						LOC19 = 0;
						LOC19 = HEX5BHEX5D_224244(result, i_486436);
						if (!((*LOC19).kind == ((NU8) 98))) goto LA20;
						LOC22 = 0;
						LOC22 = HEX5BHEX5D_224244(result, i_486436);
						typesectionfinalpass_486146(c, LOC22);
					}
					LA20: ;
					res_486627 += ((NI) 1);
				} LA16: ;
			}
		}
	}
	return result;
}

N_NIMCALL(void, addcodeforgenerics_500632)(Tcontext278023* c, Tnode223809* n) {
	{
		NI i_500656;
		NI HEX3Atmp_500718;
		NI HEX3Atmp_500719;
		NI res_500722;
		i_500656 = 0;
		HEX3Atmp_500718 = 0;
		HEX3Atmp_500719 = 0;
		HEX3Atmp_500718 = (*c).lastgenericidx;
		HEX3Atmp_500719 = (NI)(((*c).generics ? (*c).generics->Sup.len : 0) - ((NI) 1));
		res_500722 = HEX3Atmp_500718;
		{
			while (1) {
				Tsym223841* prc;
				if (!(res_500722 <= HEX3Atmp_500719)) goto LA3;
				i_500656 = res_500722;
				prc = (*(*c).generics->data[i_500656].inst).sym;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = ((77824 &(1<<(((*prc).kind)&31)))!=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*) &TMP3637));
appendString(LOC16, (*(*prc).name).s);
						internalerror_194172((*prc).info, LOC16);
					}
					goto LA10;
					LA14: ;
					{
						addson_225819(n, (*prc).ast);
					}
					LA10: ;
				}
				LA8: ;
				res_500722 += ((NI) 1);
			} LA3: ;
		}
	}
	(*c).lastgenericidx = ((*c).generics ? (*c).generics->Sup.len : 0);
}

N_NIMCALL(Tnode223809*, hlostmt_457187)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*c).patterns ? (*c).patterns->Sup.len : 0) == ((NI) 0));
		if (LOC3) goto LA4;
		LOC3 = !(((goptions_165130 &(1<<((((NU8) 21))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
		goto BeforeRet;
	}
	LA5: ;
	(*c).hloloopdetector = ((NI) 0);
	result = hlo_456542(c, n);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, buildechostmt_494830)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	Tsym223841* e;
	Tident196021* LOC1;
	result = 0;
	result = newnodei_225351(((NU8) 27), (*n).info);
	LOC1 = 0;
	LOC1 = getident_196463(((NimStringDesc*) &TMP3638));
	e = strtableget_231111((*systemmodule_272019).kindU.S3.tab, LOC1);
	{
		Tnode223809* LOC6;
		if (!!((e == NIM_NIL))) goto LA4;
		LOC6 = 0;
		LOC6 = newsymnode_225325(e);
		add_224165(result, LOC6);
	}
	goto LA2;
	LA4: ;
	{
		Tnode223809* LOC8;
		localerror_194128((*n).info, ((NU16) 68), ((NimStringDesc*) &TMP3639));
		LOC8 = 0;
		LOC8 = errornode_279171(c, n);
		add_224165(result, LOC8);
	}
	LA2: ;
	add_224165(result, n);
	result = semexpr_455201(c, result, 0);
	return result;
}

N_NIMCALL(Tnode223809*, semstmtandgenerategenerics_500815)(Tcontext278023* c, Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	{
		if (!(((*(*c).module).flags &(1<<((((NU8) 8))&31)))!=0)) goto LA3;
		result = semalltypesections_486273(c, n);
	}
	goto LA1;
	LA3: ;
	{
		result = n;
	}
	LA1: ;
	result = semstmt_455277(c, result);
	{
		Tnode223809* a;
		if (!((*c).lastgenericidx < ((*c).generics ? (*c).generics->Sup.len : 0))) goto LA8;
		a = newnodei_225351(((NU8) 115), (*n).info);
		addcodeforgenerics_500632(c, a);
		{
			NI LOC12;
			LOC12 = 0;
			LOC12 = sonslen_226387(a);
			if (!(((NI) 0) < LOC12)) goto LA13;
			{
				if (!!(((*result).kind == ((NU8) 1)))) goto LA17;
				addson_225819(a, result);
			}
			LA17: ;
			result = a;
		}
		LA13: ;
	}
	LA8: ;
	result = hlostmt_457187(c, result);
	{
		NIM_BOOL LOC21;
		NIM_BOOL LOC23;
		LOC21 = 0;
		LOC21 = (gcmd_165134 == ((NU8) 18));
		if (!(LOC21)) goto LA22;
		LOC23 = 0;
		LOC23 = isemptytype_228932((*result).typ);
		LOC21 = !(LOC23);
		LA22: ;
		if (!LOC21) goto LA24;
		result = buildechostmt_494830(c, result);
	}
	LA24: ;
	result = transformstmt_415407((*c).module, result);
	return result;
}

N_NIMCALL(void, recovercontext_500864)(Tcontext278023* c) {
	asgnRef((void**) (&(*c).currentscope), (*c).toplevelscope);
	{
		while (1) {
			Tsym223841* LOC3;
			LOC3 = 0;
			LOC3 = getcurrowner_278258();
			if (!!(((*LOC3).kind == ((NU8) 6)))) goto LA2;
			popowner_278269();
		} 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_25161(obj, subclass, cache);
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode223809*, myprocess_500917)(Tpasscontext275005* context, Tnode223809* n) {
	Tnode223809* volatile result;
	Tcontext278023* c;
	result = 0;
	c = ((Tcontext278023*) (context));
	{
		if (!(gerrormax_189402 <= ((NI) 1))) goto LA3;
		result = semstmtandgenerategenerics_500815(c, n);
	}
	goto LA1;
	LA3: ;
	{
		NI oldcontextlen;
		NI oldingenericinst;
		TSafePoint TMP3640;
		oldcontextlen = getinfocontextlen_189545();
		oldingenericinst = (*c).ingenericinst;
		pushSafePoint(&TMP3640);
		TMP3640.status = setjmp(TMP3640.context);
		if (TMP3640.status == 0) {
			result = semstmtandgenerategenerics_500815(c, n);
			popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(getCurrentException()->Sup.m_type, (&NTI188358))||isObj(getCurrentException()->Sup.m_type, (&NTI188360))) {
				TMP3640.status = 0;
				recovercontext_500864(c);
				(*c).ingenericinst = oldingenericinst;
				setinfocontextlen_189562(oldcontextlen);
				{
					Exception* LOC11;
					LOC11 = 0;
					LOC11 = getCurrentException();
					if (!((LOC11) && (isObjWithCache((*LOC11).Sup.m_type, (&NTI188360), Nim_OfCheck_CACHE1)))) goto LA12;
					result = NIM_NIL;
				}
				goto LA9;
				LA12: ;
				{
					result = emptynode_224807;
				}
				LA9: ;
				popCurrentException();
			}
		}
		if (TMP3640.status != 0) reraiseException();
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, myclose_500933)(Tpasscontext275005* context, Tnode223809* n) {
	Tnode223809* result;
	Tcontext278023* c;
	result = 0;
	c = ((Tcontext278023*) (context));
	closescope_284111(c);
	rawclosescope_284102(c);
	result = newnode_224401(((NU8) 115));
	{
		if (!!((n == NIM_NIL))) goto LA3;
		internalerror_194172((*n).info, ((NimStringDesc*) &TMP3641));
	}
	LA3: ;
	addcodeforgenerics_500632(c, result);
	{
		if (!!(((*(*c).module).ast == NIM_NIL))) goto LA7;
		add_224165(result, (*(*c).module).ast);
	}
	LA7: ;
	popowner_278269();
	popproccon_278393(c);
	return result;
}
NIM_EXTERNC N_NOINLINE(void, compiler_semInit000)(void) {
	Ttype223847* LOC1;
	Ttype223847* LOC2;
	Tident196021* LOC3;
	Tlineinfo188352 LOC4;
	LOC1 = 0;
	LOC1 = (Ttype223847*) newObj((&NTI223805), sizeof(Ttype223847));
	(*LOC1).Sup.Sup.m_type = (&NTI223847);
	(*LOC1).kind = ((NU8) 6);
	asgnRefNoCycle((void**) (&commontypebegin_455472), LOC1);
	asgnRefNoCycle((void**) (&typedescid_466473), getident_196463(((NimStringDesc*) &TMP1113)));
	LOC2 = 0;
	LOC2 = (Ttype223847*) newObj((&NTI223805), sizeof(Ttype223847));
	(*LOC2).Sup.Sup.m_type = (&NTI223847);
	(*LOC2).kind = ((NU8) 7);
	asgnRefNoCycle((void**) (&enforcevoidcontext_479405), LOC2);
	if (analyzingdestructor_479801) nimGCunrefNoCycle(analyzingdestructor_479801);
	analyzingdestructor_479801 = (Tsym223841*) newObjRC1((&NTI223807), sizeof(Tsym223841));
	(*analyzingdestructor_479801).Sup.Sup.m_type = (&NTI223841);
	if (destructoristrivial_479802) nimGCunrefNoCycle(destructoristrivial_479802);
	destructoristrivial_479802 = (Tsym223841*) newObjRC1((&NTI223807), sizeof(Tsym223841));
	(*destructoristrivial_479802).Sup.Sup.m_type = (&NTI223841);
	asgnRefNoCycle((void**) (&destructorname_479819), getident_196463(((NimStringDesc*) &TMP1114)));
	asgnRefNoCycle((void**) (&destructorparam_479820), getident_196463(((NimStringDesc*) &TMP1115)));
	LOC3 = 0;
	LOC3 = getident_196463(((NimStringDesc*) &TMP1116));
	LOC4 = unknownlineinfo_189411();
	asgnRefNoCycle((void**) (&destructorpragma_479821), newidentnode_225313(LOC3, LOC4));
}

NIM_EXTERNC N_NOINLINE(void, compiler_semDatInit000)(void) {
static TNimNode* TMP3244[2];
static TNimNode* TMP3272[5];
static TNimNode TMP941[9];
NTI458963.size = sizeof(TY458963);
NTI458963.kind = 18;
NTI458963.base = 0;
NTI458963.flags = 2;
TMP3244[0] = &TMP941[1];
TMP941[1].kind = 1;
TMP941[1].offset = offsetof(TY458963, Field0);
TMP941[1].typ = (&NTI223807);
TMP941[1].name = "Field0";
TMP3244[1] = &TMP941[2];
TMP941[2].kind = 1;
TMP941[2].offset = offsetof(TY458963, Field1);
TMP941[2].typ = (&NTI108);
TMP941[2].name = "Field1";
TMP941[0].len = 2; TMP941[0].kind = 2; TMP941[0].sons = &TMP3244[0];
NTI458963.node = &TMP941[0];
NTI458962.size = sizeof(TY458962*);
NTI458962.kind = 24;
NTI458962.base = (&NTI458963);
NTI458962.flags = 2;
NTI458962.marker = TMP3245;
NTI467453.size = sizeof(TY467453);
NTI467453.kind = 18;
NTI467453.base = 0;
TMP3272[0] = &TMP941[4];
TMP941[4].kind = 1;
TMP941[4].offset = offsetof(TY467453, HEX3Astate);
TMP941[4].typ = (&NTI344033);
TMP941[4].name = ":state";
TMP3272[1] = &TMP941[5];
TMP941[5].kind = 1;
TMP941[5].offset = offsetof(TY467453, genericparams466483);
TMP941[5].typ = (&NTI223801);
TMP941[5].name = "genericParams466483";
TMP3272[2] = &TMP941[6];
TMP941[6].kind = 1;
TMP941[6].offset = offsetof(TY467453, paramname466485);
TMP941[6].typ = (&NTI149);
TMP941[6].name = "paramName466485";
TMP3272[3] = &TMP941[7];
TMP941[7].kind = 1;
TMP941[7].offset = offsetof(TY467453, info466486);
TMP941[7].typ = (&NTI188352);
TMP941[7].name = "info466486";
TMP3272[4] = &TMP941[8];
TMP941[8].kind = 1;
TMP941[8].offset = offsetof(TY467453, c466481);
TMP941[8].typ = (&NTI278021);
TMP941[8].name = "c466481";
TMP941[3].len = 5; TMP941[3].kind = 2; TMP941[3].sons = &TMP3272[0];
NTI467453.node = &TMP941[3];
NTI467511.size = sizeof(TY467453*);
NTI467511.kind = 22;
NTI467511.base = (&NTI467453);
NTI467511.marker = TMP3273;
}

