/* 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 Ttype225847 Ttype225847;
typedef struct Tidobj198015 Tidobj198015;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Ttypeseq225843 Ttypeseq225843;
typedef struct Tnode225809 Tnode225809;
typedef struct Tsym225841 Tsym225841;
typedef struct Tloc225823 Tloc225823;
typedef struct Ropeobj176009 Ropeobj176009;
typedef struct Cell48946 Cell48946;
typedef struct Cellseq48962 Cellseq48962;
typedef struct Gcheap51018 Gcheap51018;
typedef struct Gcstack51016 Gcstack51016;
typedef struct Cellset48958 Cellset48958;
typedef struct Pagedesc48954 Pagedesc48954;
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 Tident198021 Tident198021;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tscope225835 Tscope225835;
typedef struct TY225944 TY225944;
typedef struct Tstrtable225813 Tstrtable225813;
typedef struct Tsymseq225811 Tsymseq225811;
typedef struct Tlineinfo190352 Tlineinfo190352;
typedef struct Tlib225827 Tlib225827;
typedef struct Tpasscontext277005 Tpasscontext277005;
typedef struct Tcontext280023 Tcontext280023;
typedef struct Tproccon280011 Tproccon280011;
typedef struct Intset222056 Intset222056;
typedef struct Trunk222052 Trunk222052;
typedef struct Trunkseq222054 Trunkseq222054;
typedef struct Tlinkedlist140028 Tlinkedlist140028;
typedef struct Tlistentry140022 Tlistentry140022;
typedef struct Tidtable225859 Tidtable225859;
typedef struct Tidpairseq225857 Tidpairseq225857;
typedef struct Tctx279048 Tctx279048;
typedef struct TY280143 TY280143;
typedef struct Tnodeseq225803 Tnodeseq225803;
typedef struct Slice90370 Slice90370;
typedef struct Toverloaditer286431 Toverloaditer286431;
typedef struct Tidentiter233141 Tidentiter233141;
typedef struct TY90959 TY90959;
typedef struct Tcandidate388209 Tcandidate388209;
typedef struct Trepltypevars302577 Trepltypevars302577;
typedef struct Genericctx476888 Genericctx476888;
typedef struct Tinstantiation225831 Tinstantiation225831;
typedef struct TY225932 TY225932;
typedef struct Tinstantiationpair280013 Tinstantiationpair280013;
typedef struct TY460962 TY460962;
typedef struct TY460963 TY460963;
typedef struct Suggest395010 Suggest395010;
typedef struct TY130408 TY130408;
typedef struct Toptionentry280005 Toptionentry280005;
typedef struct TY469453 TY469453;
typedef struct Templctx472056 Templctx472056;
typedef struct Tliftctx484686 Tliftctx484686;
typedef struct Exception Exception;
typedef struct TSafePoint TSafePoint;
typedef struct Tfieldinstctx486548 Tfieldinstctx486548;
typedef struct Tfieldsctx486710 Tfieldsctx486710;
typedef struct Ttabiter233119 Ttabiter233119;
typedef struct Trodreader268030 Trodreader268030;
typedef struct Tindex268028 Tindex268028;
typedef struct Tiitable233274 Tiitable233274;
typedef struct Tiipairseq233272 Tiipairseq233272;
typedef struct Table268063 Table268063;
typedef struct Keyvaluepairseq268066 Keyvaluepairseq268066;
typedef struct Memfile266208 Memfile266208;
typedef struct Basechunk30840 Basechunk30840;
typedef struct Freecell30832 Freecell30832;
typedef struct Tidpair225855 Tidpair225855;
typedef struct TY279254 TY279254;
typedef struct TY191420 TY191420;
typedef struct PprocHEX3Aobjecttype279233 PprocHEX3Aobjecttype279233;
typedef struct TY279273 TY279273;
typedef struct Tiipair233270 Tiipair233270;
typedef struct Keyvaluepair268069 Keyvaluepair268069;
typedef struct TY279234 TY279234;
typedef struct TY279239 TY279239;
typedef struct TY279274 TY279274;
typedef struct Vmargs279042 Vmargs279042;
typedef struct Tblock279030 Tblock279030;
typedef struct TY279214 TY279214;
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  Tidobj198015  {
  TNimObject Sup;
NI id;
};
struct  Tloc225823  {
NU8 k;
NU8 s;
NU16 flags;
Ttype225847* t;
Ropeobj176009* r;
Ropeobj176009* heaproot;
};
struct  Ttype225847  {
  Tidobj198015 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq225843* sons;
Tnode225809* n;
Tsym225841* owner;
Tsym225841* sym;
Tsym225841* destructor;
Tsym225841* deepcopy;
Tsym225841* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc225823 loc;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  Cell48946  {
NI refcount;
TNimType* typ;
};
struct  Cellseq48962  {
NI len;
NI cap;
Cell48946** d;
};
struct  Cellset48958  {
NI counter;
NI max;
Pagedesc48954* head;
Pagedesc48954** 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;
Cellseq48962 zct;
Cellseq48962 decstack;
Cellset48958 cycleroots;
Cellseq48962 tempstack;
NI recgclock;
Memregion30890 region;
Gcstat51014 stat;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tstrtable225813  {
NI counter;
Tsymseq225811* data;
};
struct  Tlineinfo190352  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tsym225841  {
  Tidobj198015 Sup;
NU8 kind;
union{
struct {Ttypeseq225843* typeinstcache;
Tscope225835* typscope;
} S1;
struct {TY225944* procinstcache;
Tsym225841* gcunsafetyreason;
} S2;
struct {TY225944* usedgenerics;
Tstrtable225813 tab;
} S3;
struct {Tsym225841* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype225847* typ;
Tident198021* name;
Tlineinfo190352 info;
Tsym225841* owner;
NU32 flags;
Tnode225809* ast;
NU32 options;
NI position;
NI offset;
Tloc225823 loc;
Tlib225827* annex;
Tnode225809* constraint;
};
struct  Tpasscontext277005  {
  TNimObject Sup;
NIM_BOOL fromcache;
};
struct  Intset222056  {
NI counter;
NI max;
Trunk222052* head;
Trunkseq222054* data;
};
struct  Tlinkedlist140028  {
Tlistentry140022* head;
Tlistentry140022* tail;
NI counter;
};
struct  Tidtable225859  {
NI counter;
Tidpairseq225857* data;
};
typedef N_NIMCALL_PTR(Tnode225809*, TY280074) (Tcontext280023* c, Tnode225809* n);
typedef N_NIMCALL_PTR(Tnode225809*, TY280079) (Tcontext280023* c, Tnode225809* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode225809*, TY280087) (Tcontext280023* c, Tnode225809* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode225809*, TY280095) (Tcontext280023* c, Tnode225809* n);
typedef N_NIMCALL_PTR(Tnode225809*, TY280100) (Tcontext280023* c, Tnode225809* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode225809*, TY280108) (Tcontext280023* c, Tnode225809* n);
typedef N_NIMCALL_PTR(Tnode225809*, TY280113) (Tcontext280023* c, Tnode225809* n, Tnode225809* norig, NU32 filter);
typedef N_NIMCALL_PTR(Ttype225847*, TY280120) (Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
typedef struct {
N_NIMCALL_PTR(Tnode225809*, ClPrc) (Tcontext280023* c, Tidtable225859 pt, Tnode225809* n, void* ClEnv);
void* ClEnv;
} TY280126;
typedef struct {
N_NIMCALL_PTR(Tsym225841*, ClPrc) (Tcontext280023* c, Tsym225841* fn, Tidtable225859 pt, Tlineinfo190352 info, void* ClEnv);
void* ClEnv;
} TY280132;
typedef N_NIMCALL_PTR(Tsym225841*, TY280148) (Tcontext280023* c, Tsym225841* dc, Ttype225847* t, Tlineinfo190352 info, NU8 op);
struct  Tcontext280023  {
  Tpasscontext277005 Sup;
Tsym225841* module;
Tscope225835* currentscope;
Tscope225835* importtable;
Tscope225835* toplevelscope;
Tproccon280011* p;
Tsymseq225811* friendmodules;
NI instcounter;
Intset222056 ambiguoussymbols;
NI intypeclass;
NI ingenericcontext;
NI inunrolledcontext;
NI compilescontextid;
NI compilescontextidgenerator;
NI ingenericinst;
Tsymseq225811* converters;
Tsymseq225811* patterns;
Tlinkedlist140028 optionstack;
Tidtable225859 symmapping;
Tlinkedlist140028 libs;
TY280074 semconstexpr;
TY280079 semexpr;
TY280087 semtryexpr;
TY280095 semtryconstexpr;
TY280100 semoperand;
TY280108 semconstboolexpr;
TY280113 semoverloadedcall;
TY280120 semtypenode;
TY280126 seminferredlambda;
TY280132 semgenerateinstance;
Intset222056 includedfiles;
Tstrtable225813 userpragmas;
Tctx279048* evalcontext;
Intset222056 unknownidents;
TY280143* generics;
NI lastgenericidx;
NI hloloopdetector;
NI inparallelstmt;
TY280148 insttypeboundop;
};
struct  Tnode225809  {
Ttype225847* typ;
Tlineinfo190352 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym225841* sym;
} S4;
struct {Tident198021* ident;
} S5;
struct {Tnodeseq225803* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
struct  Tproccon280011  {
Tsym225841* owner;
Tsym225841* resultsym;
NI nestedloopcounter;
NI nestedblockcounter;
NI intrystmt;
Tproccon280011* next;
NIM_BOOL wasforwarded;
Tnode225809* bracketexpr;
};
struct  Tident198021  {
  Tidobj198015 Sup;
NimStringDesc* s;
Tident198021* next;
NI h;
};
typedef NU8 TY483044[20];
struct  Slice90370  {
NI a;
NI b;
};
typedef Tnode225809* TY465620[2];
typedef Ttype225847* TY465625[2];
struct  Tidentiter233141  {
NI h;
Tident198021* name;
};
struct  Toverloaditer286431  {
Tidentiter233141 it;
Tsym225841* m;
NU8 mode;
NI symchoiceindex;
Tscope225835* scope;
Intset222056 insymchoice;
};
typedef NimStringDesc* TY193306[2];
struct TY90959 {
NimStringDesc* Field0;
NI Field1;
};
struct  Tcandidate388209  {
Tcontext280023* c;
NI exactmatches;
NI genericmatches;
NI subtypematches;
NI intconvmatches;
NI convmatches;
NU8 state;
Ttype225847* callee;
Tsym225841* calleesym;
NI calleescope;
Tnode225809* call;
Tidtable225859 bindings;
NIM_BOOL basetypematch;
NU8 fauxmatch;
NIM_BOOL genericconverter;
NIM_BOOL coercedistincts;
NIM_BOOL typedescmatched;
NIM_BOOL isnocall;
NI inheritancepenalty;
Tsymseq225811* errors;
};
struct  Trepltypevars302577  {
Tcontext280023* c;
Tidtable225859 typemap;
Tidtable225859 symmap;
Tidtable225859 localcache;
Tlineinfo190352 info;
NIM_BOOL allowmetatypes;
NIM_BOOL skiptypedesc;
Tsym225841* owner;
NI recursionlimit;
};
struct  Genericctx476888  {
Intset222056 tomixin;
NIM_BOOL cursorinbody;
Tnode225809* bracketexpr;
};
struct  Tscope225835  {
NI depthlevel;
Tstrtable225813 symbols;
Tnodeseq225803* usingsyms;
Tscope225835* parent;
};
struct  Tinstantiation225831  {
Tsym225841* sym;
Ttypeseq225843* concretetypes;
TY225932* usedby;
NI compilesid;
};
struct  Tinstantiationpair280013  {
Tsym225841* genericsym;
Tinstantiation225831* inst;
};
typedef NU8 Tspecialwords206012[33];
typedef Ttype225847* TY280864[2];
typedef Tnode225809* TY498414[3];
struct TY460963 {
Tsym225841* Field0;
NI Field1;
};
struct  Suggest395010  {
NU8 section;
TY130408* qualifiedpath;
NimStringDesc* filepath;
NI line;
NI column;
NimStringDesc* doc;
NU8 symkind;
NimStringDesc* forth;
};
typedef Ttype225847* TY393275[1];
struct  Tlistentry140022  {
  TNimObject Sup;
Tlistentry140022* prev;
Tlistentry140022* next;
};
struct  Toptionentry280005  {
  Tlistentry140022 Sup;
NU32 options;
NU8 defaultcc;
Tlib225827* dynlib;
NU64 notes;
Tnode225809* otherpragmas;
};
struct  TY469453  {
NI HEX3Astate;
Tnode225809* genericparams468483;
NimStringDesc* paramname468485;
Tlineinfo190352 info468486;
Tcontext280023* c468481;
};
typedef struct {
N_NIMCALL_PTR(Ttype225847*, ClPrc) (Ttype225847* typeclass, Tident198021* typid, void* ClEnv);
void* ClEnv;
} TY468502;
typedef N_CLOSURE_PTR(Ttype225847*, TMP3277) (Ttype225847* typeclass, Tident198021* typid);
typedef N_CLOSURE_PTR(Ttype225847*, TMP3278) (Ttype225847* typeclass, Tident198021* typid);
typedef N_CLOSURE_PTR(Ttype225847*, TMP3279) (Ttype225847* typeclass, Tident198021* typid);
typedef N_CLOSURE_PTR(Ttype225847*, TMP3280) (Ttype225847* typeclass, Tident198021* typid);
typedef N_CLOSURE_PTR(Ttype225847*, TMP3281) (Ttype225847* typeclass, Tident198021* typid);
typedef N_CLOSURE_PTR(Ttype225847*, TMP3282) (Ttype225847* typeclass, Tident198021* typid);
typedef N_CLOSURE_PTR(Ttype225847*, TMP3283) (Ttype225847* typeclass, Tident198021* typid);
typedef N_CLOSURE_PTR(Ttype225847*, TMP3284) (Ttype225847* typeclass, Tident198021* typid);
typedef N_CLOSURE_PTR(Ttype225847*, TMP3286) (Ttype225847* typeclass, Tident198021* typid);
typedef N_CLOSURE_PTR(Ttype225847*, TMP3287) (Ttype225847* typeclass, Tident198021* typid);
struct  Templctx472056  {
Tcontext280023* c;
Intset222056 tobind;
Intset222056 tomixin;
Intset222056 toinject;
Tsym225841* owner;
NIM_BOOL cursorinbody;
Tnode225809* bracketexpr;
};
typedef Tsym225841* TY482397[2];
typedef Tnode225809* TY281106[2];
typedef Tnode225809* TY228071[7];
typedef Tnode225809* TY243880[1];
typedef NU8 TY495057[32];
typedef NimStringDesc* TY493845[2];
typedef N_NIMCALL_PTR(Tnode225809*, Transformation454013) (Tcontext280023* c, Tnode225809* n);
typedef NimStringDesc* TY193293[3];
typedef NimStringDesc* TY192421[1];
struct  Tliftctx484686  {
Tcontext280023* c;
Tlineinfo190352 info;
NU8 kind;
Tsym225841* fn;
Ttype225847* 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(Tsym225841*, TMP3571) (Tcontext280023* c, Tsym225841* fn, Tidtable225859 pt, Tlineinfo190352 info);
struct  Tfieldinstctx486548  {
Ttype225847* tupletype;
NI tupleindex;
Tsym225841* field;
NIM_BOOL replacebyfieldname;
};
struct  Tfieldsctx486710  {
Tcontext280023* c;
NU8 m;
};
typedef N_NIMCALL_PTR(Tnode225809*, TY277069) (Tsym225841* m, NI32 fileidx);
struct  Ttabiter233119  {
NI h;
};
typedef N_CLOSURE_PTR(Tnode225809*, TMP3635) (Tcontext280023* c, Tidtable225859 pt, Tnode225809* n, void* ClEnv);
typedef N_CLOSURE_PTR(Tsym225841*, TMP3636) (Tcontext280023* c, Tsym225841* fn, Tidtable225859 pt, Tlineinfo190352 info, void* ClEnv);
struct  Tiitable233274  {
NI counter;
Tiipairseq233272* data;
};
struct  Tindex268028  {
NI lastidxkey;
NI lastidxval;
Tiitable233274 tab;
NimStringDesc* r;
NI offset;
};
struct  Table268063  {
Keyvaluepairseq268066* data;
NI counter;
};
struct  Memfile266208  {
void* mem;
NI size;
int handle;
};
struct  Trodreader268030  {
  TNimObject Sup;
NI pos;
NCSTRING s;
NU32 options;
NU8 reason;
TY225932* moddeps;
TY225932* files;
NI dataidx;
NI convertersidx;
NI initidx;
NI interfidx;
NI compilerprocsidx;
NI methodsidx;
NimStringDesc* filename;
Tindex268028 index;
Tindex268028 imports;
NI readerindex;
NI line;
NI moduleid;
Table268063 syms;
Memfile266208 memfile;
Tsymseq225811* methods;
NimStringDesc* origfile;
NIM_BOOL inviewmode;
};
struct  Ropeobj176009  {
  TNimObject Sup;
Ropeobj176009* left;
Ropeobj176009* right;
NI length;
NimStringDesc* data;
};
struct  Gcstack51016  {
Gcstack51016* prev;
Gcstack51016* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY30821[16];
struct  Pagedesc48954  {
Pagedesc48954* 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  Tlib225827  {
  Tlistentry140022 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj176009* name;
Tnode225809* path;
};
struct  Trunk222052  {
Trunk222052* next;
NI key;
TY30821 bits;
};
struct  Tidpair225855  {
Tidobj198015* key;
TNimObject* val;
};
struct  Tctx279048  {
  Tpasscontext277005 Sup;
TY279254* code;
TY191420* debug;
Tnode225809* globals;
Tnode225809* constants;
Ttypeseq225843* types;
Tnode225809* currentexceptiona;
Tnode225809* currentexceptionb;
NI exceptioninstr;
PprocHEX3Aobjecttype279233* prc;
Tsym225841* module;
Tnode225809* callsite;
NU8 mode;
NU8 features;
NIM_BOOL traceactive;
NI loopiterations;
Tlineinfo190352 comesfromheuristic;
TY279273* callbacks;
NimStringDesc* errorflag;
};
struct  Tiipair233270  {
NI key;
NI val;
};
struct Keyvaluepair268069 {
NI Field0;
NI Field1;
Tsym225841* Field2;
};
struct  Freecell30832  {
Freecell30832* next;
NI zerofield;
};
struct TY279239 {
NIM_BOOL Field0;
NU8 Field1;
};
typedef TY279239 TY279242[256];
struct  PprocHEX3Aobjecttype279233  {
TY279234* blocks;
Tsym225841* sym;
TY279242 slots;
NI maxslots;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (Vmargs279042* args, void* ClEnv);
void* ClEnv;
} Vmcallback279044;
struct TY279274 {
NimStringDesc* Field0;
Vmcallback279044 Field1;
};
struct  Tblock279030  {
Tsym225841* label;
TY279214* fixups;
};
struct  Vmargs279042  {
NI ra;
NI rb;
NI rc;
void* slots;
Tnode225809* currentexception;
};
struct Tsymseq225811 {
  TGenericSeq Sup;
  Tsym225841* data[SEQ_DECL_SIZE];
};
struct Ttypeseq225843 {
  TGenericSeq Sup;
  Ttype225847* data[SEQ_DECL_SIZE];
};
struct TY225944 {
  TGenericSeq Sup;
  Tinstantiation225831* data[SEQ_DECL_SIZE];
};
struct TY280143 {
  TGenericSeq Sup;
  Tinstantiationpair280013 data[SEQ_DECL_SIZE];
};
struct Tnodeseq225803 {
  TGenericSeq Sup;
  Tnode225809* data[SEQ_DECL_SIZE];
};
struct TY460962 {
  TGenericSeq Sup;
  TY460963 data[SEQ_DECL_SIZE];
};
struct Trunkseq222054 {
  TGenericSeq Sup;
  Trunk222052* data[SEQ_DECL_SIZE];
};
struct Tidpairseq225857 {
  TGenericSeq Sup;
  Tidpair225855 data[SEQ_DECL_SIZE];
};
struct TY225932 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct TY130408 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct Tiipairseq233272 {
  TGenericSeq Sup;
  Tiipair233270 data[SEQ_DECL_SIZE];
};
struct Keyvaluepairseq268066 {
  TGenericSeq Sup;
  Keyvaluepair268069 data[SEQ_DECL_SIZE];
};
struct TY279254 {
  TGenericSeq Sup;
  NU32 data[SEQ_DECL_SIZE];
};
struct TY191420 {
  TGenericSeq Sup;
  Tlineinfo190352 data[SEQ_DECL_SIZE];
};
struct TY279273 {
  TGenericSeq Sup;
  TY279274 data[SEQ_DECL_SIZE];
};
struct TY279234 {
  TGenericSeq Sup;
  Tblock279030 data[SEQ_DECL_SIZE];
};
struct TY279214 {
  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(Cell48946*, usrtocell_52646)(void* usr);
static N_INLINE(void, rtladdzct_54204)(Cell48946* c);
N_NOINLINE(void, addzct_52617)(Cellseq48962* s, Cell48946* c);
N_NIMCALL(Tident198021*, getident_198463)(NimStringDesc* identifier);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newObjRC1)(TNimType* typ, NI size);
N_NIMCALL(Tnode225809*, newidentnode_227313)(Tident198021* ident, Tlineinfo190352 info);
N_NIMCALL(Tlineinfo190352, unknownlineinfo_191411)(void);
N_NIMCALL(Tcontext280023*, newcontext_280184)(Tsym225841* module);
N_NIMCALL(void, internalerror_196172)(Tlineinfo190352 info, NimStringDesc* errmsg);
N_NIMCALL(Tnode225809*, semconstexpr_458485)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semexprwithtype_457211)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, semexpr_457201)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(void, suggestexpr_398865)(Tcontext280023* c, Tnode225809* node);
N_NIMCALL(Tsym225841*, lookup_286804)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, semcapturesym_407834)(Tsym225841* s, Tsym225841* owner);
N_NIMCALL(Tnode225809*, semsym_492258)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, NU16 flags);
N_NIMCALL(void, markused_388253)(Tlineinfo190352 info, Tsym225841* s);
N_NIMCALL(Ttype225847*, skiptypes_229167)(Ttype225847* t, NU64 kinds);
static N_INLINE(Tnode225809*, inlineconst_492248)(Tnode225809* n, Tsym225841* s);
N_NIMCALL(Tnode225809*, copytree_230028)(Tnode225809* src);
N_NIMCALL(Tnode225809*, newsymnode_227338)(Tsym225841* sym, Tlineinfo190352 info);
static N_INLINE(NI, len_226098)(Tnode225809* n);
N_NIMCALL(Tnode225809*, semmacroexpr_458073)(Tcontext280023* c, Tnode225809* n, Tnode225809* norig, Tsym225841* sym, NU16 flags);
N_NIMCALL(void, pushinfocontext_191581)(Tlineinfo190352 info);
N_NIMCALL(void, globalerror_196107)(Tlineinfo190352 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(Tnode225809*, evalmacrocall_446308)(Tsym225841* module, Tnode225809* n, Tnode225809* norig, Tsym225841* sym);
N_NIMCALL(Tnode225809*, semaftermacrocall_464631)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, NU16 flags);
N_NIMCALL(Tsym225841*, getmodule_233243)(Tsym225841* s);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(Tnode225809*, semstmt_457277)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semexprnotype_457221)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, discardcheck_483156)(Tcontext280023* c, Tnode225809* result);
N_NIMCALL(void, message_196161)(Tlineinfo190352 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NIM_BOOL, implicitlydiscardable_483045)(Tnode225809* n_483047);
N_NIMCALL(Tnode225809*, lastson_228406)(Tnode225809* n);
N_NIMCALL(NIM_BOOL, iscallexpr_226072)(Tnode225809* n);
N_NIMCALL(void, fixniltype_483094)(Tnode225809* n);
static N_INLINE(NIM_BOOL, isatom_230904)(Tnode225809* n);
N_NIMCALL(void, localerror_196128)(Tlineinfo190352 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, typetostring_255032)(Ttype225847* typ, NU8 prefer);
N_NIMCALL(Ttype225847*, semtypenode_457269)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(void, checksonslen_281260)(Tnode225809* n, NI length);
N_NIMCALL(NI, sonslen_228387)(Tnode225809* n);
N_NIMCALL(Ttype225847*, semanontuple_466614)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(Ttype225847*, neworprevtype_464895)(NU8 kind, Ttype225847* prev, Tcontext280023* c);
N_NIMCALL(Ttype225847*, newtypes_280221)(NU8 kind, Tcontext280023* c);
N_NIMCALL(void, addsonskipintlit_274729)(Ttype225847* father, Ttype225847* son);
static N_INLINE(Tnode225809*, HEX5BHEX5D_226244)(Tnode225809* n, NI i);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(Tnode225809*, newnodei_227351)(NU8 kind, Tlineinfo190352 info);
static N_INLINE(Slice90370, HEX2EHEX2E_105290)(NI a, NI b);
N_NIMCALL(void, add_226165)(Tnode225809* father, Tnode225809* son);
N_NIMCALL(Ttype225847*, semrangeaux_465427)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
static N_INLINE(Ttype225847*, skipintlit_274696)(Ttype225847* t);
N_NIMCALL(Ttype225847*, getsystype_274190)(NU8 kind);
N_NIMCALL(NIM_BOOL, sametype_260092)(Ttype225847* a, Ttype225847* b, NU8 flags);
N_NIMCALL(NIM_BOOL, isordinaltype_255093)(Ttype225847* t);
N_NIMCALL(NIM_BOOL, enumhasholes_255099)(Ttype225847* t);
N_NIMCALL(NIM_BOOL, hasgenericarguments_302965)(Tnode225809* n);
N_NIMCALL(void, addson_227819)(Tnode225809* father, Tnode225809* son);
N_NIMCALL(Tnode225809*, makestaticexpr_280820)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NU8, weaklevalue_233424)(Tnode225809* a, Tnode225809* b);
N_NIMCALL(Ttype225847*, semtypeexpr_470381)(Tcontext280023* c, Tnode225809* n_470384);
N_NIMCALL(Ttype225847*, base_255039)(Ttype225847* t);
N_NIMCALL(NimStringDesc*, rendertree_247059)(Tnode225809* n, NU8 renderflags);
N_NIMCALL(Ttype225847*, errortype_281161)(Tcontext280023* c);
N_NIMCALL(Tident198021*, considerquotedident_286010)(Tnode225809* n);
N_NIMCALL(Ttype225847*, makeandtype_280858)(Tcontext280023* c, Ttype225847* t1, Ttype225847* t2);
N_NIMCALL(Ttype225847*, makeortype_280931)(Tcontext280023* c, Ttype225847* t1, Ttype225847* t2);
static N_INLINE(Ttype225847*, freshtype_470401)(Ttype225847* res, Ttype225847* prev);
N_NIMCALL(Ttype225847*, copytype_228542)(Ttype225847* t, Tsym225841* owner, NIM_BOOL keepid);
N_NIMCALL(Ttype225847*, makenottype_281004)(Tcontext280023* c, Ttype225847* t1);
N_NIMCALL(Ttype225847*, semanyref_465311)(Tcontext280023* c, Tnode225809* n_465314, NU8 kind, Ttype225847* prev);
N_NIMCALL(Ttype225847*, newconstraint_464925)(Tcontext280023* c, NU8 k);
N_NIMCALL(void, checkminsonslen_281270)(Tnode225809* n, NI length);
N_NIMCALL(Tnode225809*, semwhen_458047)(Tcontext280023* c, Tnode225809* n, NIM_BOOL semcheck);
N_NIMCALL(void, illformedast_281240)(Tnode225809* n);
N_NIMCALL(void, idsynchronizationpoint_224453)(NI idrange);
N_NIMCALL(Tsym225841*, semtypeident_465976)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tsym225841*, qualifiedlookup_286864)(Tcontext280023* c, Tnode225809* n, NU8 flags);
N_NIMCALL(Tsym225841*, errorsym_286372)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tsym225841*, copysym_228607)(Tsym225841* s, NIM_BOOL keepid);
N_NIMCALL(NI, len_228369)(Ttype225847* n);
N_NIMCALL(Tsym225841*, initoverloaditer_287108)(Toverloaditer286431* o, Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tsym225841*, nextoverloaditer_287277)(Toverloaditer286431* o, Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_NIMCALL(Ttype225847*, semarray_465918)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(Ttype225847*, semarrayindex_465808)(Tcontext280023* c, Tnode225809* n);
static N_INLINE(NIM_BOOL, isrange_254626)(Tnode225809* n);
N_NIMCALL(Ttype225847*, makerangewithstaticexpr_281087)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Ttype225847*, makerangetype_281193)(Tcontext280023* c, NI64 first, NI64 last, Tlineinfo190352 info, Ttype225847* inttype);
N_NIMCALL(Ttype225847*, lastson_228426)(Ttype225847* n);
N_NIMCALL(Ttype225847*, semcontainer_465285)(Tcontext280023* c, Tnode225809* n, NU8 kind, NimStringDesc* kindstr, Ttype225847* prev);
N_NIMCALL(Ttype225847*, semrange_465701)(Tcontext280023* c, Tnode225809* n_465704, Ttype225847* prev);
N_NIMCALL(Ttype225847*, semset_465256)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(NI64, lengthord_255016)(Ttype225847* t);
N_NIMCALL(Ttype225847*, semordinal_465955)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(Ttype225847*, semvarargs_465298)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(Ttype225847*, maketypedesc_280684)(Tcontext280023* c, Ttype225847* typ);
N_NIMCALL(Tsym225841*, getcurrowner_280258)(void);
N_NIMCALL(void, rawaddson_229498)(Ttype225847* father, Ttype225847* son);
N_NIMCALL(Ttype225847*, semgeneric_470132)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, Ttype225847* prev);
N_NIMCALL(void, localerror_196139)(Tlineinfo190352 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(Ttype225847*, semgenericparamininvocation_470124)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, internalerror_196191)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_196279)(TY90959 x);
N_NIMCALL(void, newcandidate_388480)(Tcontext280023* ctx, Ttype225847* callee, Tcandidate388209* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, matches_394720)(Tcontext280023* c, Tnode225809* n, Tnode225809* norig, Tcandidate388209* m);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, describeargs_388974)(Tcontext280023* c, Tnode225809* n, NI startidx, NU8 prefer);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NIM_BOOL, containsgenerictype_264310)(Ttype225847* t);
N_NIMCALL(Ttype225847*, instgenericcontainer_460151)(Tcontext280023* c, Tlineinfo190352 info, Ttype225847* header, NIM_BOOL allowmetatypes);
N_NIMCALL(void, initidtable_229057)(Tidtable225859* x);
N_NIMCALL(Ttype225847*, replacetypevarst_302627)(Trepltypevars302577* cl, Ttype225847* t);
N_NIMCALL(NIM_BOOL, ismetatype_226821)(Ttype225847* t);
N_NIMCALL(Tnode225809*, semgenericstmt_464888)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, initintset_222927)(Intset222056* Result);
N_NIMCALL(Tnode225809*, semgenericstmt_476899)(Tcontext280023* c, Tnode225809* n, NU8 flags_476903, Genericctx476888* ctx);
N_NIMCALL(Tnode225809*, lookup_478204)(Tcontext280023* c, Tnode225809* n, NU8 flags, Genericctx476888* ctx);
N_NIMCALL(Tsym225841*, skipalias_286150)(Tsym225841* s, Tnode225809* n);
N_NIMCALL(Tsym225841*, searchinscopes_286205)(Tcontext280023* c, Tident198021* s);
N_NIMCALL(NIM_BOOL, contains_222829)(Intset222056 s, NI key);
N_NIMCALL(Tnode225809*, symchoice_471790)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, NU8 r);
N_NIMCALL(Tnode225809*, newnodeit_227807)(NU8 kind, Tlineinfo190352 info, Ttype225847* typ);
N_NIMCALL(Tnode225809*, semgenericstmtsymbol_476924)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, Genericctx476888* ctx);
N_NIMCALL(Tnode225809*, semtemplateexpr_458062)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, NU16 flags);
N_NIMCALL(Tnode225809*, evaltemplate_431400)(Tnode225809* n, Tsym225841* tmpl, Tsym225841* gensymowner);
N_NIMCALL(void, popinfocontext_191600)(void);
N_NIMCALL(Tnode225809*, newsymnodetypedesc_294736)(Tsym225841* s, Tlineinfo190352 info);
N_NIMCALL(Tnode225809*, fuzzylookup_478262)(Tcontext280023* c, Tnode225809* n_478265, NU8 flags, Genericctx476888* ctx, NIM_BOOL* ismacro);
N_NIMCALL(Tnode225809*, newdot_478251)(Tnode225809* n, Tnode225809* b);
N_NIMCALL(Tnode225809*, semmixinstmt_471995)(Tcontext280023* c, Tnode225809* n, Intset222056* tomixin);
N_NIMCALL(void, incl_222856)(Intset222056* s, NI key);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(Tnode225809*, semgenericstmtscope_476906)(Tcontext280023* c, Tnode225809* n, NU8 flags, Genericctx476888* ctx);
N_NIMCALL(Tscope225835*, openscope_286091)(Tcontext280023* c);
N_NIMCALL(void, closescope_286111)(Tcontext280023* c);
N_NIMCALL(void, addtempdecl_478692)(Tcontext280023* c, Tnode225809* n, NU8 kind);
N_NIMCALL(Tsym225841*, newsyms_457904)(NU8 kind, Tnode225809* n, Tcontext280023* c);
N_NIMCALL(Tsym225841*, newsym_226656)(NU8 symkind, Tident198021* name, Tsym225841* owner, Tlineinfo190352 info);
N_NIMCALL(Tnode225809*, getidentnode_476878)(Tnode225809* n);
N_NIMCALL(void, addprelimdecl_286619)(Tcontext280023* c, Tsym225841* sym);
N_NIMCALL(void, adddecl_286607)(Tcontext280023* c, Tsym225841* sym);
N_NIMCALL(Tnode225809*, getbody_271062)(Tsym225841* s);
N_NIMCALL(Ttype225847*, maketypefromexpr_280729)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, assigntype_228445)(Ttype225847* dest, Ttype225847* src);
N_NIMCALL(Ttype225847*, semobjectnode_468216)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(Ttype225847*, skiptypesornil_229195)(Ttype225847* t, NU64 kinds);
static N_INLINE(Ttype225847*, skipgenericinvocation_467964)(Ttype225847* t);
N_NIMCALL(void, addinheritedfields_467998)(Tcontext280023* c, Intset222056* check, NI* pos, Ttype225847* obj);
N_NIMCALL(NI, sonslen_228351)(Ttype225847* n);
N_NIMCALL(void, addinheritedfieldsaux_467868)(Tcontext280023* c, Intset222056* check, NI* pos, Tnode225809* n);
N_NIMCALL(void, semrecordnodeaux_467288)(Tcontext280023* c, Tnode225809* n, Intset222056* check, NI* pos, Tnode225809* father, Ttype225847* rectype);
N_NIMCALL(Tnode225809*, semconstboolexpr_464852)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, fitnode_457245)(Tcontext280023* c, Ttype225847* formal, Tnode225809* arg);
N_NIMCALL(Tnode225809*, copynode_229660)(Tnode225809* src);
N_NIMCALL(Tnode225809*, indextypesmatch_457348)(Tcontext280023* c, Ttype225847* f, Ttype225847* a, Tnode225809* arg);
N_NIMCALL(void, initcandidate_388278)(Tcontext280023* ctx, Tcandidate388209* c, Ttype225847* callee);
N_NIMCALL(Tnode225809*, paramtypesmatch_393733)(Tcandidate388209* m, Ttype225847* f, Ttype225847* a, Tnode225809* arg, Tnode225809* argorig);
N_NIMCALL(void, instgenericconvertersarg_463276)(Tcontext280023* c, Tnode225809* a, Tcandidate388209* x);
N_NIMCALL(NIM_BOOL, isgenericroutine_230650)(Tsym225841* s);
N_NIMCALL(Tsym225841*, generateinstance_460450)(Tcontext280023* c, Tsym225841* fn, Tidtable225859 pt, Tlineinfo190352 info);
static N_INLINE(NIM_BOOL, istoplevel_281280)(Tcontext280023* c);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_55022)(Cell48946* c);
static N_INLINE(NIM_BOOL, canbecycleroot_52667)(Cell48946* c);
static N_INLINE(void, rtladdcycleroot_53423)(Cell48946* c);
N_NOINLINE(void, incl_49665)(Cellset48958* s, Cell48946* cell);
static N_INLINE(void, decref_54604)(Cell48946* c);
N_NIMCALL(void, pushowner_280263)(Tsym225841* owner);
N_NIMCALL(Tnode225809*, newsymnode_227325)(Tsym225841* sym);
N_NIMCALL(Tinstantiation225831*, new_460534)(void);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(TNimObject*, idtableget_233182)(Tidtable225859 t, Tidobj198015* key);
N_NIMCALL(Ttype225847*, generatetypeinstance_304894)(Tcontext280023* p, Tidtable225859 pt, Tlineinfo190352 info, Ttype225847* t);
static N_INLINE(void, pushproccon_280361)(Tcontext280023* c, Tsym225841* owner);
N_NIMCALL(void, instantiateproctype_460176)(Tcontext280023* c, Tidtable225859 pt, Tsym225841* prc, Tlineinfo190352 info);
N_NIMCALL(void, inittypevars_304846)(Tcontext280023* p, Tidtable225859 pt, Tlineinfo190352 info, Tsym225841* owner, Trepltypevars302577* Result);
N_NIMCALL(Ttype225847*, instcopytype_303694)(Trepltypevars302577* cl, Ttype225847* t);
N_NIMCALL(Tnode225809*, shallowcopy_229817)(Tnode225809* src);
N_NIMCALL(void, resetidtable_229077)(Tidtable225859* x);
N_NIMCALL(void, propagatetoowner_229274)(Ttype225847* owner, Ttype225847* elem);
N_NIMCALL(void, erasevoidparams_304182)(Ttype225847* t);
N_NIMCALL(void, skipintliteralparams_304336)(Ttype225847* t);
N_NIMCALL(void, maybeaddresult_457301)(Tcontext280023* c, Tsym225841* s, Tnode225809* n);
N_NIMCALL(void, addresult_488830)(Tcontext280023* c, Ttype225847* t, Tlineinfo190352 info, NU8 owner);
N_NIMCALL(void, addparamorresult_459885)(Tcontext280023* c, Tsym225841* param, NU8 kind);
N_NIMCALL(Ttype225847*, findenforcedstatictype_468339)(Ttype225847* t_468341);
N_NIMCALL(Tsym225841*, getcompilerproc_274809)(NimStringDesc* name);
N_NIMCALL(Tsym225841*, getsyssym_274077)(NimStringDesc* name);
N_NIMCALL(void, addresultnode_488864)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tsym225841*, genericcacheget_459449)(Tsym225841* genericsym, Tinstantiation225831 entry, NI id);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_228870)(TY225944* x, TY225944* y);
N_NIMCALL(NIM_BOOL, sameinstantiation_459396)(Tinstantiation225831 a, Tinstantiation225831 b);
N_NIMCALL(NIM_BOOL, comparetypes_262047)(Ttype225847* x, Ttype225847* y, NU8 cmp, NU8 flags);
N_NIMCALL(void, safeadd_460699)(TY225944** x, Tinstantiation225831* y);
N_NIMCALL(void, makeinstpair_280159)(Tsym225841* s, Tinstantiation225831* inst, Tinstantiationpair280013* Result);
N_NIMCALL(void, pragma_297082)(Tcontext280023* c, Tsym225841* sym, Tnode225809* n, Tspecialwords206012 validpragmas);
N_NIMCALL(void, instantiatebody_459941)(Tcontext280023* c, Tnode225809* n, Tnode225809* params, Tsym225841* result);
N_NIMCALL(void, idtableput_233196)(Tidtable225859* t, Tidobj198015* key, TNimObject* val);
N_NIMCALL(void, freshgensyms_459801)(Tnode225809* n, Tsym225841* owner, Tidtable225859* symmap);
static N_INLINE(NI, safelen_226126)(Tnode225809* n);
N_NIMCALL(Tnode225809*, semprocbody_457238)(Tcontext280023* c, Tnode225809* n);
static N_INLINE(NIM_BOOL, isemptytype_230932)(Ttype225847* t);
N_NIMCALL(Tnode225809*, newnodei_227407)(NU8 kind, Tlineinfo190352 info, NI children);
N_NIMCALL(Tnode225809*, semasgn_495310)(Tcontext280023* c, Tnode225809* n, NU8 mode);
N_NIMCALL(Tnode225809*, builtinfieldaccess_497358)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(NIM_BOOL, istypeexpr_496861)(Tnode225809* n);
N_NIMCALL(Tsym225841*, getsymfromlist_233228)(Tnode225809* list, Tident198021* ident, NI start);
N_NIMCALL(Tnode225809*, readtypeparameter_497277)(Tcontext280023* c, Ttype225847* typ, Tident198021* paramname, Tlineinfo190352 info);
N_NIMCALL(Ttype225847*, skipgenericalias_261119)(Ttype225847* t);
N_NIMCALL(Tsym225841*, linkto_226884)(Tsym225841* s, Ttype225847* t);
N_NIMCALL(Ttype225847*, newtypewithsons_280807)(Tcontext280023* c, NU8 kind, Ttypeseq225843* sons);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(Tsym225841*, lookupinrecordandbuildcheck_497004)(Tcontext280023* c, Tnode225809* n, Tnode225809* r, Tident198021* field, Tnode225809** check);
N_NIMCALL(Ttype225847*, createsettype_496878)(Tcontext280023* c, Ttype225847* basetype);
static N_INLINE(NIM_BOOL, fieldvisible_395471)(Tcontext280023* c, Tsym225841* f);
N_NIMCALL(Tnode225809*, makederef_497233)(Tnode225809* n);
N_NIMCALL(Tnode225809*, propertywriteaccess_498404)(Tcontext280023* c, Tnode225809* n, Tnode225809* norig, Tnode225809* a);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(Tnode225809*, newnode_227607)(NU8 kind, Tlineinfo190352 info, Tnodeseq225803* sons, Ttype225847* typ);
N_NIMCALL(Tnode225809*, semoverloadedcallanalyseeffects_496293)(Tcontext280023* c, Tnode225809* n, Tnode225809* norig, NU16 flags);
N_NIMCALL(Tnode225809*, semoverloadedcall_463971)(Tcontext280023* c, Tnode225809* n, Tnode225809* norig, NU32 filter);
N_NIMCALL(void, resolveoverloads_461584)(Tcontext280023* c, Tnode225809* n, Tnode225809* orig, NU32 filter, Tsymseq225811** errors, Tcandidate388209* Result);
N_NIMCALL(void, gatherusedsyms_461474)(Tcontext280023* c, Tnodeseq225803** usedsyms);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_300972)(Tnodeseq225803* x, Tnodeseq225803* y);
N_NIMCALL(void, safeadd_461504)(Tnodeseq225803** x, Tnode225809* y);
N_NIMCALL(void, insert_461637)(Tnodeseq225803** x, Tnode225809* item, NI i);
N_NIMCALL(void, pickbestcandidate_460945)(Tcontext280023* c, Tnode225809* headsymbol, Tnode225809* n, Tnode225809* orig, Tnode225809* initialbinding, NU32 filter, Tcandidate388209* best, Tcandidate388209* alt, Tsymseq225811** errors);
N_NIMCALL(NI, lastoverloadscope_287259)(Toverloaditer286431* o);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP3247)(void* p, NI op);
N_NIMCALL(void, initcandidate_388303)(Tcontext280023* ctx, Tcandidate388209* c, Tsym225841* callee, Tnode225809* binding, NI calleescope);
N_NIMCALL(void, determinetype_460941)(Tcontext280023* c, Tsym225841* s);
N_NIMCALL(Tnode225809*, semprocaux_489900)(Tcontext280023* c, Tnode225809* n, NU8 kind, Tspecialwords206012 validpragmas, NU8 phase);
N_NIMCALL(Tnode225809*, semprocannotation_488960)(Tcontext280023* c, Tnode225809* prc, Tspecialwords206012 validpragmas);
N_NIMCALL(Tsym225841*, lookupmacro_488930)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tsym225841*, searchinscopes_286323)(Tcontext280023* c, Tident198021* s, NU32 filter);
N_NIMCALL(Tnode225809*, copyexcept_488883)(Tnode225809* n, NI i);
N_NIMCALL(Tsym225841*, semidentdef_484542)(Tcontext280023* c, Tnode225809* n, NU8 kind);
N_NIMCALL(Tsym225841*, semidentwithpragma_457971)(Tcontext280023* c, NU8 kind, Tnode225809* n, NU32 allowed);
N_NIMCALL(Tsym225841*, semidentvis_457962)(Tcontext280023* c, NU8 kind, Tnode225809* n, NU32 allowed);
N_NIMCALL(Tsym225841*, newsymg_457916)(NU8 kind, Tnode225809* n, Tcontext280023* c);
N_NIMCALL(NimStringDesc*, HEX24_457922)(NU8 kind);
static N_INLINE(void, suggestsym_398733)(Tlineinfo190352 info, Tsym225841* s);
N_NIMCALL(void, findusages_398665)(Tlineinfo190352 info, Tsym225841* s);
N_NIMCALL(void, finddefinition_398696)(Tlineinfo190352 info, Tsym225841* s);
N_NIMCALL(NIM_BOOL, istracked_398569)(Tlineinfo190352 current, NI tokenlen);
N_NIMCALL(void, suggestresult_395414)(Suggest395010* s);
N_NIMCALL(void, symtosuggest_395404)(Tsym225841* s, NIM_BOOL islocal, NimStringDesc* section, Suggest395010* Result);
N_NIMCALL(NimStringDesc*, HEX24_168755)(NU8 c);
N_NIMCALL(Tnode225809*, semgenericparamlist_471425)(Tcontext280023* c, Tnode225809* n, Ttype225847* father);
N_NIMCALL(Ttype225847*, semgenericconstraints_471404)(Tcontext280023* c, Ttype225847* x);
N_NIMCALL(void, semparamlist_457284)(Tcontext280023* c, Tnode225809* n, Tnode225809* genericparams, Tsym225841* s);
N_NIMCALL(Ttype225847*, semproctypenode_469551)(Tcontext280023* c, Tnode225809* n, Tnode225809* genericparams, Ttype225847* prev, NU8 kind, NIM_BOOL istype);
N_NIMCALL(Ttype225847*, newproctype_469542)(Tcontext280023* c, Tlineinfo190352 info, Ttype225847* prev);
N_NIMCALL(Toptionentry280005*, lastoptionentry_280190)(Tcontext280023* c);
N_NIMCALL(Ttype225847*, semparamtype_469522)(Tcontext280023* c, Tnode225809* n, Tnode225809** constraint);
N_NIMCALL(Tnode225809*, semnodekindconstraints_305679)(Tnode225809* p);
N_NIMCALL(Ttype225847*, liftparamtype_468479)(Tcontext280023* c, NU8 prockind, Tnode225809* genericparams, Ttype225847* paramtype, NimStringDesc* paramname, Tlineinfo190352 info, NIM_BOOL anon);
N_NIMCALL(void, TMP3275)(void* p, NI op);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_CLOSURE(Ttype225847*, addimplicitgenericimpl_468501)(Ttype225847* typeclass, Tident198021* typid, void* ClEnv);
N_NIMCALL(NIM_BOOL, containsorincl_222898)(Intset222056* s, NI key);
N_NIMCALL(NIM_BOOL, isinlineiterator_393087)(Ttype225847* t);
N_NIMCALL(Tnode225809*, sempattern_473348)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, flattenstmts_254773)(Tnode225809* n);
N_NIMCALL(Tnode225809*, sempatternbody_476070)(Templctx472056* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, handlesym_476401)(Templctx472056* c, Tnode225809* n, Tsym225841* s);
N_NIMCALL(Tnode225809*, newparam_476084)(Templctx472056* c, Tnode225809* n, Tsym225841* s);
N_NIMCALL(Tnode225809*, sembindstmt_471895)(Tcontext280023* c, Tnode225809* n, Intset222056* tobind);
N_NIMCALL(Tnode225809*, expectparam_476464)(Templctx472056* c, Tnode225809* n);
N_NIMCALL(NIM_BOOL, stupidstmtlistexpr_476506)(Tnode225809* n);
N_NIMCALL(Tsym225841*, searchforproc_296278)(Tcontext280023* c, Tscope225835* scope, Tsym225841* fn);
N_NIMCALL(void, addinterfaceoverloadablesymat_286746)(Tcontext280023* c, Tscope225835* scope, Tsym225841* sym);
N_NIMCALL(void, addinterfacedeclat_286677)(Tcontext280023* c, Tscope225835* scope, Tsym225841* sym);
N_NIMCALL(void, implicitpragmas_300759)(Tcontext280023* c, Tsym225841* sym, Tnode225809* n, Tspecialwords206012 validpragmas);
N_NIMCALL(void, wrongredefinition_286588)(Tlineinfo190352 info, NimStringDesc* s);
N_NIMCALL(void, addgenericparamlisttoscope_487541)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, addparams_457293)(Tcontext280023* c, Tnode225809* n, NU8 kind);
static N_INLINE(NIM_BOOL, importantcomments_167168)(void);
N_NIMCALL(void, popowner_280269)(void);
N_NIMCALL(void, semoverride_489632)(Tcontext280023* c, Tsym225841* s, Tnode225809* n);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(void, dodestructorstuff_481826)(Tcontext280023* c, Tsym225841* s, Tnode225809* n);
N_NIMCALL(Ttype225847*, instantiatedestructor_481822)(Tcontext280023* c, Ttype225847* typ);
static N_INLINE(NIM_BOOL, contains_482401)(Tsym225841** a, NI aLen0, Tsym225841* item);
static N_INLINE(NI, find_482411)(Tsym225841** a, NI aLen0, Tsym225841* item);
N_NIMCALL(Tnode225809*, generatedestructor_482318)(Tcontext280023* c, Ttype225847* t);
N_NIMCALL(Tnode225809*, destroyfieldorfields_481995)(Tcontext280023* c, Tnode225809* field, Tnode225809* holder);
N_NIMCALL(Tnode225809*, destroycase_482051)(Tcontext280023* c, Tnode225809* n, Tnode225809* holder);
N_NIMCALL(Tnodeseq225803*, HEX5BHEX5D_416753)(Tnodeseq225803* s, Slice90370 x);
N_NIMCALL(Tnode225809*, newnode_226401)(NU8 kind);
N_NIMCALL(Tnode225809*, destroysym_482000)(Tcontext280023* c, Tsym225841* field, Tnode225809* holder);
N_NIMCALL(Tnode225809*, usesym_398850)(Tsym225841* sym);
N_NIMCALL(Tnode225809*, symnodefromtype_458120)(Tcontext280023* c, Ttype225847* t, Tlineinfo190352 info);
N_NIMCALL(Tsym225841*, symfromtype_458085)(Ttype225847* t, Tlineinfo190352 info);
N_NIMCALL(Ttype225847*, makevartype_280645)(Tcontext280023* c, Ttype225847* basetype);
N_NIMCALL(Tnode225809*, semproc_481797)(Tcontext280023* c, Tnode225809* n);
static N_INLINE(NIM_BOOL, experimentalmode_281290)(Tcontext280023* c);
static N_INLINE(void, paramstypecheck_458022)(Tcontext280023* c, Ttype225847* typ);
N_NIMCALL(void, typeallowedcheck_457987)(Tlineinfo190352 info, Ttype225847* typ, NU8 kind);
N_NIMCALL(Ttype225847*, typeallowed_263654)(Ttype225847* t, NU8 kind);
N_NIMCALL(Tnode225809*, hlobody_459161)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, hlo_458542)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, applypatterns_458630)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, applyrule_449303)(Tcontext280023* c, Tsym225841* s, Tnode225809* n);
N_NIMCALL(Tnode225809*, evalpattern_458546)(Tcontext280023* c, Tnode225809* n, Tnode225809* orig);
N_NIMCALL(Tnode225809*, semdirectop_458039)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, aftercallactions_496784)(Tcontext280023* c, Tnode225809* n, Tnode225809* orig, NU16 flags);
N_NIMCALL(void, semfinishoperands_394656)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, activate_457327)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, fixabstracttype_494616)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, changetype_457253)(Tnode225809* n, Ttype225847* newtype, NIM_BOOL check);
N_NIMCALL(Ttype225847*, elemtype_255522)(Ttype225847* t);
N_NIMCALL(void, globalerror_196118)(Tlineinfo190352 info, NimStringDesc* arg);
N_NIMCALL(NI64, firstord_255004)(Ttype225847* t);
N_NIMCALL(NI64, lastord_255010)(Ttype225847* t);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(void, analyseifaddresstakenincall_495052)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NU8, isassignable_494842)(Tcontext280023* c, Tnode225809* n, NIM_BOOL isunsafeaddr);
N_NIMCALL(NU8, isassignable_306056)(Tsym225841* owner, Tnode225809* n, NIM_BOOL isunsafeaddr);
N_NIMCALL(void, semprocvarcheck_481766)(Tcontext280023* c, Tnode225809* n_481769);
N_NIMCALL(Tnode225809*, skipconv_264935)(Tnode225809* n);
N_NIMCALL(void, performprocvarcheck_481702)(Tcontext280023* c, Tnode225809* n, Tsym225841* s);
N_NIMCALL(Tnode225809*, analyseifaddresstaken_494900)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, newhiddenaddrtaken_494851)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, magicsafteroverloadresolution_495738)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, semaddr_495250)(Tcontext280023* c, Tnode225809* n, NIM_BOOL isunsafeaddr);
N_NIMCALL(Ttype225847*, makeptrtype_280214)(Tcontext280023* c, Ttype225847* basetype);
N_NIMCALL(Tnode225809*, semtypeof_495293)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semarrget_495337)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, semsubscript_495315)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, semderef_498161)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NI64, getordvalue_255178)(Tnode225809* n);
N_NIMCALL(Tnode225809*, semsymgenericinstantiation_492239)(Tcontext280023* c, Tnode225809* n, Tsym225841* s);
N_NIMCALL(Tnode225809*, explicitgenericinstantiation_464205)(Tcontext280023* c, Tnode225809* n, Tsym225841* s_464209);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(Tnode225809*, explicitgenericsym_464018)(Tcontext280023* c, Tnode225809* n, Tsym225841* s);
N_NIMCALL(Tnode225809*, explicitgenericinsterror_464011)(Tnode225809* n);
N_NIMCALL(NimStringDesc*, HEX24_247090)(Tnode225809* n);
N_NIMCALL(Tnode225809*, semarrput_495412)(Tcontext280023* c, Tnode225809* n, NU16 flags);
static N_INLINE(Tnode225809*, skipaddr_495320)(Tnode225809* n);
N_NIMCALL(Tnode225809*, semasgnopr_495457)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semispartof_495467)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(NU8, ispartof_447375)(Tnode225809* a, Tnode225809* b);
N_NIMCALL(Tnode225809*, newintnodet_293028)(NI64 intval, Tnode225809* n);
N_NIMCALL(Tnode225809*, semtypetraits_495551)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, evaltypetrait_495514)(Tnode225809* trait, Ttype225847* operand, Tsym225841* context);
N_NIMCALL(Tnode225809*, newstrnode_226644)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(Ttype225847*, newtype_228140)(NU8 kind, Tsym225841* owner);
N_NIMCALL(Tnode225809*, newintnode_226608)(NU8 kind, NI64 intval);
N_NIMCALL(Tnode225809*, newstrnodet_293042)(NimStringDesc* strval, Tnode225809* n);
N_NIMCALL(Tnode225809*, seminstantiationinfo_495495)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NI, expectintlit_495485)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tlineinfo190352, getinfocontext_191626)(NI index);
N_NIMCALL(NimStringDesc*, tofullpath_191665)(NI32 fileidx);
N_NIMCALL(NimStringDesc*, tofilename_191655)(NI32 fileidx);
static N_INLINE(NI, tolinenumber_191839)(Tlineinfo190352 info);
N_NIMCALL(Tnode225809*, semord_495589)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semlowhigh_493837)(Tcontext280023* c, Tnode225809* n, NU8 m);
N_NIMCALL(Tnode225809*, semshallowcopy_495661)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, sembindsym_495599)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, errornode_281171)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NIM_BOOL, isnegative_495683)(Tnode225809* n_495685);
N_NIMCALL(NU8, checkforsideeffects_305869)(Tnode225809* n);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(NIM_BOOL, isstrangearray_495666)(Ttype225847* t_495668);
N_NIMCALL(Tsym225841*, createmagic_231047)(NimStringDesc* name, NU8 m);
N_NIMCALL(Transformation454013, getplugin_454094)(Tsym225841* fn);
N_NIMCALL(Tnode225809*, evalatcompiletime_495821)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, getconstexpr_293004)(Tsym225841* m, Tnode225809* n);
N_NIMCALL(Ttype225847*, getintervaltype_293364)(NU8 m, Tnode225809* n);
N_NIMCALL(Tnode225809*, evalstaticexpr_446232)(Tsym225841* module, Tnode225809* e, Tsym225841* prc);
N_NIMCALL(Tnode225809*, fixuptypeaftereval_458201)(Tcontext280023* c, Tnode225809* evaluated, Tnode225809* eorig);
N_NIMCALL(void, annotatetype_450134)(Tnode225809* n, Ttype225847* t);
N_NIMCALL(Tnode225809*, evalconstexpr_446221)(Tsym225841* module, Tnode225809* e);
N_NIMCALL(Tnode225809*, commonoptimizations_415597)(Tsym225841* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, transformbody_417225)(Tsym225841* module, Tnode225809* n, Tsym225841* prc);
static N_INLINE(void, popproccon_280393)(Tcontext280023* c);
N_NIMCALL(void, fixupinstantiatedsymbols_460063)(Tcontext280023* c, Tsym225841* s);
N_NIMCALL(void, semborrow_488808)(Tcontext280023* c, Tnode225809* n, Tsym225841* s);
N_NIMCALL(Tsym225841*, searchforborrowproc_464522)(Tcontext280023* c, Tscope225835* startscope, Tsym225841* fn);
N_NIMCALL(Ttype225847*, baseofdistinct_264320)(Ttype225847* t);
N_NIMCALL(void, sideeffectscheck_460116)(Tcontext280023* c, Tsym225841* s);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_461058)(Tsymseq225811* x, Tsymseq225811* y);
N_NIMCALL(void, safeadd_461171)(Tsymseq225811** x, Tsym225841* y);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(NI, cmpcandidates_388824)(Tcandidate388209* a, Tcandidate388209* b);
N_NIMCALL(void, delete_462246)(Tnodeseq225803** x, NI i);
N_NIMCALL(Tnode225809*, withinfo_227302)(Tnode225809* n, Tlineinfo190352 info);
N_NIMCALL(void, HEX5BHEX5DHEX3D_416817)(Tnodeseq225803** s, Slice90370 x, Tnode225809** b, NI bLen0);
static N_INLINE(NimStringDesc*, HEX5BHEX5D_90363)(NimStringDesc* s, Slice90370 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_460880)(Tsym225841* a, Tsym225841* b);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, msgkindtostring_192406)(NU16 kind);
N_NIMCALL(NimStringDesc*, getprocheader_255447)(Tsym225841* sym, NU8 prefer);
N_NIMCALL(Tnode225809*, semresolvedcall_463507)(Tcontext280023* c, Tnode225809* n, Tcandidate388209* x);
N_NIMCALL(void, instgenericconverterssons_463312)(Tcontext280023* c, Tnode225809* n, Tcandidate388209* x);
static N_INLINE(NIM_BOOL, canderef_463930)(Tnode225809* n);
N_NIMCALL(Tnode225809*, tryderef_463963)(Tnode225809* n);
N_NIMCALL(void, notfounderror_461326)(Tcontext280023* c, Tnode225809* n_461329, Tsymseq225811* errors);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(Tnode225809*, dottransformation_498079)(Tcontext280023* c, Tnode225809* n);
static N_INLINE(NIM_BOOL, issymchoice_493671)(Tnode225809* n);
N_NIMCALL(Tnode225809*, buildoverloadedsubscripts_498122)(Tnode225809* n, Tident198021* ident);
N_NIMCALL(Tnode225809*, lowertupleunpackingforasgn_402283)(Tnode225809* n, Tsym225841* owner);
N_NIMCALL(NU8, cmptypes_392796)(Tcontext280023* c, Ttype225847* f, Ttype225847* a);
N_NIMCALL(void, typemismatch_457379)(Tnode225809* n, Ttype225847* formal, Ttype225847* actual);
N_NIMCALL(Tnode225809*, overloadedasgn_485696)(Tcontext280023* c, Tnode225809* dest, Tnode225809* src);
N_NIMCALL(Tsym225841*, getasgnorliftbody_485676)(Tcontext280023* c, Ttype225847* typ, Tlineinfo190352 info);
N_NIMCALL(Tsym225841*, liftbody_484701)(Tcontext280023* c, Ttype225847* typ, Tlineinfo190352 info);
N_NIMCALL(Ttype225847*, newproctype_485594)(Tlineinfo190352 info, Tsym225841* owner);
N_NIMCALL(void, addparam_485602)(Ttype225847* proctype, Tsym225841* param);
N_NIMCALL(void, liftbodyaux_484693)(Tliftctx484686* c, Ttype225847* t, Tnode225809* body, Tnode225809* x, Tnode225809* y);
N_NIMCALL(void, defaultop_485406)(Tliftctx484686* c, Ttype225847* t, Tnode225809* body, Tnode225809* x, Tnode225809* y);
N_NIMCALL(Tnode225809*, newasgnstmt_484910)(Tnode225809* le, Tnode225809* ri);
N_NIMCALL(Tnode225809*, newseqcall_485501)(Tcontext280023* c, Tnode225809* x, Tnode225809* y);
N_NIMCALL(Tnode225809*, genbuiltin_485465)(NU8 magic, NimStringDesc* name, Tnode225809* i);
N_NIMCALL(Tnode225809*, declarecounter_485439)(Tliftctx484686* c, Tnode225809* body, NI64 first);
N_NIMCALL(void, addvar_485427)(Tnode225809* father, Tnode225809* v, Tnode225809* value);
N_NIMCALL(Tnode225809*, newintlit_404681)(NI64 value);
N_NIMCALL(Tnode225809*, genwhileloop_485477)(Tliftctx484686* c, Tnode225809* i, Tnode225809* dest);
N_NIMCALL(Tnode225809*, genhigh_404691)(Tnode225809* n);
N_NIMCALL(Tnode225809*, at_484706)(Tnode225809* a, Tnode225809* i, Ttype225847* elemtype);
N_NIMCALL(void, addincstmt_485491)(Tnode225809* body, Tnode225809* i);
N_NIMCALL(NIM_BOOL, consideroverloadedop_484940)(Tliftctx484686* c, Ttype225847* t, Tnode225809* body, Tnode225809* x, Tnode225809* y);
N_NIMCALL(Tnode225809*, newdestructorcall_484920)(Tsym225841* op, Tnode225809* x);
N_NIMCALL(Tnode225809*, newasgncall_484885)(Tcontext280023* c, Tsym225841* op, Tnode225809* x, Tnode225809* y);
N_NIMCALL(Tnode225809*, genaddr_484867)(Tcontext280023* c, Tnode225809* x);
N_NIMCALL(Tnode225809*, newdeepcopycall_484931)(Tsym225841* op, Tnode225809* x, Tnode225809* y);
N_NIMCALL(void, liftbodyobj_484778)(Tliftctx484686* c, Tnode225809* n, Tnode225809* body, Tnode225809* x, Tnode225809* y);
N_NIMCALL(Tnode225809*, dotfield_484767)(Tnode225809* x, Tsym225841* f);
N_NIMCALL(void, illformedastlocal_281250)(Tnode225809* n);
N_NIMCALL(void, liftbodytup_484717)(Tliftctx484686* c, Ttype225847* t, Tnode225809* body, Tnode225809* x, Tnode225809* y);
static N_INLINE(Tnode225809*, newderef_402024)(Tnode225809* n);
static N_INLINE(void, asgntoresultvar_498501)(Tcontext280023* c, Tnode225809* n, Tnode225809* le, Tnode225809* ri);
N_NIMCALL(Tnode225809*, takeimplicitaddr_498470)(Tcontext280023* c, Tnode225809* n);
static N_INLINE(Tsym225841*, pop_413918)(Tsymseq225811** s);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, finishmethod_457341)(Tcontext280023* c, Tsym225841* s);
N_NIMCALL(NIM_BOOL, hasobjparam_490833)(Tsym225841* s);
N_NIMCALL(void, methoddef_400634)(Tsym225841* s, NIM_BOOL fromcache);
N_NIMCALL(Tnode225809*, skiphiddensubconv_265078)(Tnode225809* n);
N_NIMCALL(Tnode225809*, forcebool_464829)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, assign_222964)(Intset222056* dest, Intset222056 src);
N_NIMCALL(void, semrecordcase_467298)(Tcontext280023* c, Tnode225809* n, Intset222056* check, NI* pos, Tnode225809* father, Ttype225847* rectype);
N_NIMCALL(void, semcasebranch_467147)(Tcontext280023* c, Tnode225809* t, Tnode225809* branch, NI branchindex, NI64* covered);
N_NIMCALL(Tnode225809*, semcasebranchrange_467100)(Tcontext280023* c, Tnode225809* t, Tnode225809* b, NI64* covered);
N_NIMCALL(Tnode225809*, sembranchrange_467078)(Tcontext280023* c, Tnode225809* t, Tnode225809* a, Tnode225809* b, NI64* covered);
N_NIMCALL(Tnode225809*, skipconvtaketype_264967)(Tnode225809* n);
N_NIMCALL(NIM_BOOL, emptyrange_276034)(Tnode225809* a, Tnode225809* b);
N_NIMCALL(void, delson_229597)(Tnode225809* father, NI idx);
N_NIMCALL(Tnode225809*, semcasebranchsetelem_467113)(Tcontext280023* c, Tnode225809* t, Tnode225809* b, NI64* covered);
N_NIMCALL(void, checkforoverlap_467004)(Tcontext280023* c, Tnode225809* t, NI currentex, NI branchindex);
N_NIMCALL(NIM_BOOL, overlap_276012)(Tnode225809* a, Tnode225809* b);
N_NIMCALL(Ropeobj176009*, rope_176322)(NimStringDesc* s);
N_NIMCALL(Ttype225847*, semtuple_466654)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(Ttype225847*, semtypeclass_470417)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(void, safeadd_302522)(Ttypeseq225843** x, Ttype225847* y);
N_NIMCALL(Ttype225847*, semvartype_465395)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(Ttype225847*, semdistinct_465415)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(Ttype225847*, semproctypewithscope_470486)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev, NU8 kind);
N_NIMCALL(void, seteffectsforproctype_370612)(Ttype225847* t, Tnode225809* n);
N_NIMCALL(NIM_BOOL, haspragma_300952)(Tnode225809* n, NU16 pragma);
N_NIMCALL(Ttype225847*, semenum_464933)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(void, strtableadd_233103)(Tstrtable225813* t, Tsym225841* n);
N_NIMCALL(Ttype225847*, semstmtlisttype_470038)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
N_NIMCALL(Ttype225847*, semblocktype_470082)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev);
static N_INLINE(void, markindirect_281208)(Tcontext280023* c, Tsym225841* s);
N_NIMCALL(void, setintlittype_274774)(Tnode225809* result);
N_NIMCALL(Ttype225847*, getfloatlittype_274686)(Tnode225809* literal);
N_NIMCALL(Tnode225809*, semfieldaccess_492014)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, semconv_493710)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, maybelifttype_493688)(Ttype225847** t, Tcontext280023* c, Tlineinfo190352 info);
N_NIMCALL(Tnode225809*, inferwithmetatype_457463)(Tcontext280023* c, Ttype225847* formal, Tnode225809* arg, NIM_BOOL coercedistincts);
N_NIMCALL(NU8, checkconvertible_493423)(Tcontext280023* c, Ttype225847* castdest, Ttype225847* src);
N_NIMCALL(NU8, checkconversionbetweenobjects_493409)(Ttype225847* castdest, Ttype225847* src);
N_NIMCALL(NI, inheritancediff_262091)(Ttype225847* a, Ttype225847* b);
N_NIMCALL(Tnode225809*, semobjconstr_496433)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(void, checkinitialized_501065)(Tnode225809* n, Intset222056 ids, Tlineinfo190352 info);
N_NIMCALL(Tnode225809*, semmagic_500194)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, NU16 flags);
N_NIMCALL(Tnode225809*, semdefined_499236)(Tcontext280023* c, Tnode225809* n, NIM_BOOL onlycurrentscope);
N_NIMCALL(NIM_BOOL, isdefined_199167)(Tident198021* symbol);
N_NIMCALL(Tsym225841*, lookupfordefined_499187)(Tcontext280023* c, Tnode225809* n, NIM_BOOL onlycurrentscope);
N_NIMCALL(Tsym225841*, lookupfordefined_499178)(Tcontext280023* c, Tident198021* i, NIM_BOOL onlycurrentscope);
N_NIMCALL(Tsym225841*, localsearchinscope_286194)(Tcontext280023* c, Tident198021* s);
N_NIMCALL(Tsym225841*, strtableget_233111)(Tstrtable225813 t, Tident198021* name);
N_NIMCALL(Tnode225809*, setms_500184)(Tnode225809* n, Tsym225841* s);
N_NIMCALL(Tnode225809*, semcompiles_500079)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, tryexpr_457317)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(NI, getinfocontextlen_191545)(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_191562)(NI L);
N_NIMCALL(Tnode225809*, semsizeof_493884)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semis_494107)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, maketypesymnode_280714)(Tcontext280023* c, Ttype225847* typ, Tlineinfo190352 info);
N_NIMCALL(Tnode225809*, isopimpl_458055)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NU8, typerel_389064)(Tcandidate388209* c, Ttype225847* f, Ttype225847* aorig, NIM_BOOL dobind);
N_NIMCALL(Tnode225809*, semof_493895)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semexpandtoast_499669)(Tcontext280023* c, Tnode225809* n, Tsym225841* magicsym, NU16 flags);
N_NIMCALL(Tnode225809*, semexpandtoast_499430)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tsym225841*, expectmacroortemplatecall_458032)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Ttype225847*, systypefromname_274179)(NimStringDesc* name);
N_NIMCALL(Tnode225809*, semquoteast_457334)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NimStringDesc*, expectstring_499308)(Tcontext280023* c, Tnode225809* n_499311);
N_NIMCALL(Tnodeseq225803*, newseq_499862)(NI len);
N_NIMCALL(void, processquotations_499682)(Tnode225809** n, NimStringDesc* op, Tnodeseq225803** quotes, Tnodeseq225803** ids);
N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s, NimStringDesc* prefix);
N_NIMCALL(Tsym225841*, newanonsym_499343)(NU8 kind, Tlineinfo190352 info, Tsym225841* owner);
N_NIMCALL(Tnode225809*, semtemplatedef_475709)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semtemplbodydirty_475496)(Templctx472056* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semtemplbody_472170)(Templctx472056* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semtemplsymbol_472811)(Tcontext280023* c, Tnode225809* n, Tsym225841* s);
N_NIMCALL(void, openscope_472175)(Templctx472056* c);
N_NIMCALL(void, closescope_472182)(Templctx472056* c);
N_NIMCALL(Tnode225809*, semtemplbodyscope_472189)(Templctx472056* c, Tnode225809* n);
N_NIMCALL(void, addlocaldecl_472475)(Templctx472056* c, Tnode225809** n, NU8 k);
N_NIMCALL(NU8, symbinding_471725)(Tnode225809* n);
N_NIMCALL(NU16, whichkeyword_206390)(Tident198021* id);
N_NIMCALL(Tnode225809*, onlyreplaceparams_472198)(Templctx472056* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, getidentnode_472071)(Templctx472056* c, Tnode225809* n);
static N_INLINE(NIM_BOOL, istemplparam_472118)(Templctx472056* c, Tnode225809* n);
N_NIMCALL(void, replaceidentbysym_472043)(Tnode225809** n, Tnode225809* s);
N_NIMCALL(Tsym225841*, newgensym_472443)(NU8 kind, Tnode225809* n, Templctx472056* c);
N_NIMCALL(void, semtemplsomedecl_473238)(Templctx472056* c, Tnode225809* n, NU8 symkind, NI start);
N_NIMCALL(Tnode225809*, semroutineintemplbody_473036)(Templctx472056* c, Tnode225809* n, NU8 k);
N_NIMCALL(Tnode225809*, semroutineintemplname_472854)(Templctx472056* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semtemplbodysons_473352)(Templctx472056* c, Tnode225809* n);
N_NIMCALL(NIM_BOOL, oprisroof_473639)(Tnode225809* n);
N_NIMCALL(void, symtabreplace_237415)(Tstrtable225813* t, Tsym225841* prevsym, Tsym225841* newsym);
N_NIMCALL(Tsym225841*, getmagicsym_499328)(NU8 magic);
N_NIMCALL(NU8, spawnresult_404208)(Ttype225847* t, NIM_BOOL inparallel);
N_NIMCALL(Ttype225847*, createflowvar_500119)(Tcontext280023* c, Ttype225847* t, Tlineinfo190352 info);
N_NIMCALL(Tsym225841*, instantiatecreateflowvarcall_500129)(Tcontext280023* c, Ttype225847* t, Tlineinfo190352 info);
N_NIMCALL(Tnode225809*, semindirectop_496464)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(void, semopaux_494150)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, resolveindirectcall_496438)(Tcontext280023* c, Tnode225809* n, Tnode225809* norig, Ttype225847* t, Tcandidate388209* Result);
N_NIMCALL(Tnode225809*, overloadedcallopr_494209)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NIM_BOOL, shouldbebracketexpr_501837)(Tnode225809* n);
N_NIMCALL(void, setgenericparams_502151)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semarrayaccess_498382)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(NU8, checkpar_500735)(Tnode225809* n);
N_NIMCALL(Tnode225809*, semtuplepositionsconstr_500949)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(NIM_BOOL, istupletype_501005)(Tnode225809* n);
N_NIMCALL(Tnode225809*, semtuplefieldsconstr_500837)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, semsetconstr_500479)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semarrayconstr_494482)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Ttype225847*, commontype_457477)(Ttype225847* x, Ttype225847* y);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_264739)(Ttypeseq225843* x, Ttypeseq225843* y);
N_NIMCALL(NIM_BOOL, isemptycontainer_264978)(Ttype225847* t);
N_NIMCALL(Ttype225847*, commonsuperclass_262468)(Ttype225847* a, Ttype225847* b);
N_NIMCALL(Tnode225809*, semlambda_457261)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, semdo_489263)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, semcast_493825)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NIM_BOOL, iscastable_493583)(Ttype225847* dst, Ttype225847* src);
N_NIMCALL(NI64, computesize_255184)(Ttype225847* typ);
N_NIMCALL(Tnode225809*, semif_483260)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semexprbranch_483004)(Tcontext280023* c, Tnode225809* n);
static N_INLINE(void, semdestructorcheck_482851)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, semexprbranchscope_483035)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semtableconstr_500640)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semstaticexpr_496274)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semblock_501450)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semstmtlist_491286)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, semtry_484115)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semraise_487501)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semvarorlet_485852)(Tcontext280023* c, Tnode225809* n, NU8 symkind);
N_NIMCALL(void, suggeststmt_399098)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, newsons_228272)(Tnode225809* father, NI length);
N_NIMCALL(void, addtovarsection_485706)(Tcontext280023* c, Tnode225809** result, Tnode225809* orig, Tnode225809* identdefs);
N_NIMCALL(NIM_BOOL, isdiscardunderscore_485833)(Tsym225841* v);
N_NIMCALL(void, addinterfacedecl_286736)(Tcontext280023* c, Tsym225841* sym);
N_NIMCALL(Tsym225841*, findshadowedvar_484435)(Tcontext280023* c, Tsym225841* v);
N_NIMCALL(NIM_BOOL, identwithin_484493)(Tnode225809* n, Tident198021* s);
N_NIMCALL(void, adddefer_485799)(Tcontext280023* c, Tnode225809** result, Tsym225841* s);
N_NIMCALL(Tnode225809*, createdestructorcall_482601)(Tcontext280023* c, Tsym225841* s);
N_NIMCALL(void, checknilable_484604)(Tsym225841* v);
N_NIMCALL(void, setupcompiletimevar_446255)(Tsym225841* module, Tnode225809* n);
N_NIMCALL(Tnode225809*, semconst_486383)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, fitremovehiddenconv_484413)(Tcontext280023* c, Ttype225847* typ, Tnode225809* n);
N_NIMCALL(Tnode225809*, semtypesection_488685)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, typesectionleftsidepass_487599)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, typesectionrightsidepass_487697)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, processmagictype_471315)(Tcontext280023* c, Tsym225841* m);
N_NIMCALL(void, setmagictype_471304)(Tsym225841* m, NU8 kind, NI size);
N_NIMCALL(void, typesectionfinalpass_488146)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, checkconstructedtype_302110)(Tlineinfo190352 info, Ttype225847* typ);
N_NIMCALL(void, checkformetafields_487980)(Tnode225809* n);
N_NIMCALL(Tnode225809*, semdiscard_481406)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semwhile_481617)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, sembreakorcontinue_481427)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semfor_487381)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semexprnoderef_457228)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, semforvars_487204)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tsym225841*, symforvar_487108)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, addforvardecl_487076)(Tcontext280023* c, Tsym225841* v);
N_NIMCALL(Tnode225809*, semforfields_486835)(Tcontext280023* c, Tnode225809* n, NU8 m);
N_NIMCALL(Tnode225809*, instfieldloopbody_486553)(Tfieldinstctx486548 c, Tnode225809* n, Tnode225809* forloop);
N_NIMCALL(void, semforobjectfields_486713)(Tfieldsctx486710 c, Tnode225809* typ, Tnode225809* forloop, Tnode225809* father);
N_NIMCALL(NIM_BOOL, containsnode_230365)(Tnode225809* n, TY483044 kinds);
N_NIMCALL(Tnode225809*, implicititerator_487347)(Tcontext280023* c, NimStringDesc* it, Tnode225809* arg);
N_NIMCALL(Tnode225809*, semcase_483701)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NI64, tocover_481659)(Ttype225847* t);
N_NIMCALL(Tnode225809*, semreturn_498777)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semusing_499354)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, adddeclat_286629)(Tscope225835* scope, Tsym225841* sym);
N_NIMCALL(Tnode225809*, semasm_481607)(Tcontext280023* con, Tnode225809* n);
N_NIMCALL(NIM_CHAR, pragmaasm_297101)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semasmoremit_298737)(Tcontext280023* con, Tnode225809* n, NIM_CHAR marker);
N_NIMCALL(Tnode225809*, semyield_499044)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, semyieldvarresult_498942)(Tcontext280023* c, Tnode225809* n, Ttype225847* restype);
N_NIMCALL(Tnode225809*, semiterator_490709)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semmethod_490888)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semconverterdef_490899)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, addconverter_280564)(Tcontext280023* c, Tsym225841* conv);
N_NIMCALL(Tnode225809*, semmacrodef_490924)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, evalimport_288004)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, evalimportexcept_288857)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, evalfrom_288011)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, evalinclude_490960)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NI32, checkmodulename_288064)(Tnode225809* n);
N_NIMCALL(void, excl_222871)(Intset222056* s, NI key);
N_NIMCALL(Tnode225809*, semexport_501616)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tsym225841*, inittabiter_233124)(Ttabiter233119* ti, Tstrtable225813 tab);
N_NIMCALL(Tsym225841*, nextiter_233132)(Ttabiter233119* ti, Tstrtable225813 tab);
N_NIMCALL(Tnode225809*, sempragmablock_491046)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(NU16, whichpragma_254687)(Tnode225809* n);
N_NIMCALL(void, setline_491002)(Tnode225809* n, Tlineinfo190352 info);
N_NIMCALL(Tnode225809*, semstaticstmt_491108)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, evalstaticstmt_446244)(Tsym225841* module, Tnode225809* e, Tsym225841* prc);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_193255)(Tlineinfo190352 a, Tlineinfo190352 b);
N_NIMCALL(Tnode225809*, tryconstexpr_458420)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semoperand_492021)(Tcontext280023* c, Tnode225809* n, NU16 flags);
N_NIMCALL(Tnode225809*, seminferredlambda_489290)(Tcontext280023* c, Tidtable225859 pt, Tnode225809* n_489294);
N_NIMCALL(Tnode225809*, replacetypesinbody_304862)(Tcontext280023* p, Tidtable225859 pt, Tnode225809* n, Tsym225841* owner);
N_NIMCALL(Tsym225841*, insttypeboundop_394846)(Tcontext280023* c, Tsym225841* dc, Ttype225847* t, Tlineinfo190352 info, NU8 op);
N_NIMCALL(void, importallsymbols_288389)(Tcontext280023* c, Tsym225841* frommod);
N_NIMCALL(Tpasscontext277005*, myopen_502741)(Tsym225841* module);
N_NIMCALL(Tnode225809*, semstmtandgenerategenerics_502815)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, semalltypesections_488273)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(void, gatherstmts_488278)(Tcontext280023* c, Tnode225809* n, Tnode225809* result);
N_NIMCALL(void, addcodeforgenerics_502632)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, hlostmt_459187)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, buildechostmt_496830)(Tcontext280023* c, Tnode225809* n);
N_NIMCALL(Tnode225809*, transformstmt_417407)(Tsym225841* module, Tnode225809* n);
N_NIMCALL(void, recovercontext_502864)(Tcontext280023* 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_286102)(Tcontext280023* c);
STRING_LITERAL(TMP1115, "typedesc", 8);
STRING_LITERAL(TMP1116, "destroy_", 8);
STRING_LITERAL(TMP1117, "this_", 5);
STRING_LITERAL(TMP1118, "destructor", 10);
STRING_LITERAL(TMP2062, "sem.myOpen", 10);
STRING_LITERAL(TMP3117, "", 0);
static NIM_CONST TY483044 TMP3118 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0xE0, 0x11, 0x02, 0x0C, 0x01, 0xC0,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3119, "[]", 2);
STRING_LITERAL(TMP3120, "|", 1);
STRING_LITERAL(TMP3121, "invalid type", 12);
STRING_LITERAL(TMP3122, "region needs to be an object type", 33);
STRING_LITERAL(TMP3124, "openarray", 9);
STRING_LITERAL(TMP3125, "range", 5);
STRING_LITERAL(TMP3126, "set", 3);
STRING_LITERAL(TMP3127, "ordinal", 7);
STRING_LITERAL(TMP3128, "seq", 3);
STRING_LITERAL(TMP3129, "varargs", 7);
STRING_LITERAL(TMP3130, "cannot instantiate the \'$1\' $2", 30);
STRING_LITERAL(TMP3132, "compiler/semtypes.nim", 21);
NIM_CONST TY90959 TMP3131 = {((NimStringDesc*) &TMP3132),
((NI) 1051)}
;
STRING_LITERAL(TMP3133, "cannot instantiate ", 19);
STRING_LITERAL(TMP3134, "\012got: (", 7);
STRING_LITERAL(TMP3138, ")\012but expected: (", 17);
STRING_LITERAL(TMP3139, ")", 1);
STRING_LITERAL(TMP3140, "^", 1);
STRING_LITERAL(TMP3141, "{}", 2);
STRING_LITERAL(TMP3142, "{}=", 3);
STRING_LITERAL(TMP3143, "[]=", 3);
STRING_LITERAL(TMP3144, "result", 6);
NIM_CONST TY90959 TMP3145 = {((NimStringDesc*) &TMP3132),
((NI) 1254)}
;
STRING_LITERAL(TMP3146, "object", 6);
STRING_LITERAL(TMP3147, "addInheritedFieldsAux", 21);
STRING_LITERAL(TMP3148, "addInheritedFieldsAux(record case branch)", 41);
STRING_LITERAL(TMP3149, "addInheritedFieldsAux()", 23);
STRING_LITERAL(TMP3150, "semObjectNode", 13);
STRING_LITERAL(TMP3152, "compiler/seminst.nim", 20);
NIM_CONST TY90959 TMP3151 = {((NimStringDesc*) &TMP3152),
((NI) 216)}
;
STRING_LITERAL(TMP3153, "nesting too deep", 16);
NIM_CONST TY90959 TMP3154 = {((NimStringDesc*) &TMP3152),
((NI) 237)}
;
NIM_CONST TY90959 TMP3155 = {((NimStringDesc*) &TMP3152),
((NI) 14)}
;
NIM_CONST TY90959 TMP3156 = {((NimStringDesc*) &TMP3152),
((NI) 16)}
;
STRING_LITERAL(TMP3157, "owner is nil", 12);
NIM_CONST TY90959 TMP3158 = {((NimStringDesc*) &TMP3152),
((NI) 180)}
;
STRING_LITERAL(TMP3159, "result", 6);
STRING_LITERAL(TMP3160, "NimNode", 7);
STRING_LITERAL(TMP3161, "NimNode", 7);
STRING_LITERAL(TMP3162, "PNimrodNode", 11);
static NIM_CONST Tspecialwords206012 TMP3243 = {
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(TMP3245, "compiler/semexprs.nim", 21);
NIM_CONST TY90959 TMP3244 = {((NimStringDesc*) &TMP3245),
((NI) 1003)}
;
STRING_LITERAL(TMP3248, "()", 2);
STRING_LITERAL(TMP3249, "cannot use symbol of kind \'", 27);
STRING_LITERAL(TMP3250, "\' as a \'", 8);
STRING_LITERAL(TMP3251, "\'", 1);
static NIM_CONST Tspecialwords206012 TMP3252 = {
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 Tspecialwords206012 TMP3253 = {
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 Tspecialwords206012 TMP3254 = {
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(TMP3273, "\':\' expected", 12);
STRING_LITERAL(TMP3276, ":type", 5);
NIM_CONST TY90959 TMP3285 = {((NimStringDesc*) &TMP3132),
((NI) 712)}
;
STRING_LITERAL(TMP3288, "implicit return type for \'iterator\'", 35);
STRING_LITERAL(TMP3289, "invalid return type: \'stmt\'", 27);
STRING_LITERAL(TMP3290, "*", 1);
STRING_LITERAL(TMP3291, "**", 2);
STRING_LITERAL(TMP3292, "~", 1);
STRING_LITERAL(TMP3295, "semProcAux", 10);
STRING_LITERAL(TMP3297, "destroy", 7);
STRING_LITERAL(TMP3298, "=destroy", 8);
STRING_LITERAL(TMP3299, "deepcopy", 8);
STRING_LITERAL(TMP3300, "=deepcopy", 9);
STRING_LITERAL(TMP3301, "=", 1);
STRING_LITERAL(TMP3302, "nimDestroyRange", 15);
STRING_LITERAL(TMP3304, "compiler/semdestruct.nim", 24);
NIM_CONST TY90959 TMP3303 = {((NimStringDesc*) &TMP3304),
((NI) 114)}
;
NIM_CONST TY90959 TMP3305 = {((NimStringDesc*) &TMP3304),
((NI) 105)}
;
NIM_CONST TY90959 TMP3306 = {((NimStringDesc*) &TMP3304),
((NI) 151)}
;
STRING_LITERAL(TMP3307, "AnonType", 8);
static NIM_CONST Tspecialwords206012 TMP3308 = {
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(TMP3309, "use the {.experimental.} pragma to enable destructors", 53);
STRING_LITERAL(TMP3310, "cannot bind another \'deepCopy\' to: ", 35);
STRING_LITERAL(TMP3311, "cannot bind \'deepCopy\' to: ", 27);
STRING_LITERAL(TMP3312, "signature for \'deepCopy\' must be proc[T: ptr|ref](x: T): T", 58);
STRING_LITERAL(TMP3313, "cannot bind another \'=\' to: ", 28);
STRING_LITERAL(TMP3314, "signature for \'=\' must be proc[T: object](x: var T; y: T)", 57);
STRING_LITERAL(TMP3315, "\'destroy\' or \'deepCopy\' expected for \'override\'", 47);
STRING_LITERAL(TMP3316, "invalid type: \'", 15);
STRING_LITERAL(TMP3317, "\' in this context: \'", 20);
STRING_LITERAL(TMP3331, "compiler/hlo.nim", 16);
NIM_CONST TY90959 TMP3330 = {((NimStringDesc*) &TMP3331),
((NI) 15)}
;
STRING_LITERAL(TMP3332, "no tuple type for constructor", 29);
STRING_LITERAL(TMP3333, "invalid tuple constructor", 25);
STRING_LITERAL(TMP3334, "unknown identifier: ", 20);
STRING_LITERAL(TMP3335, "cannot convert ", 15);
STRING_LITERAL(TMP3336, " to ", 4);
static NIM_CONST TY495057 TMP3337 = {
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(TMP3338, "analyseIfAddressTaken", 21);
STRING_LITERAL(TMP3340, "unsafeAddr", 10);
STRING_LITERAL(TMP3341, "cannot instantiate: ", 20);
STRING_LITERAL(TMP3342, "; got ", 6);
STRING_LITERAL(TMP3343, " type(s) but expected ", 22);
STRING_LITERAL(TMP3344, "could not resolve: ", 19);
STRING_LITERAL(TMP3346, "compiler/semmagic.nim", 21);
NIM_CONST TY90959 TMP3345 = {((NimStringDesc*) &TMP3346),
((NI) 103)}
;
STRING_LITERAL(TMP3347, "name", 4);
STRING_LITERAL(TMP3348, "arity", 5);
NIM_CONST TY90959 TMP3349 = {((NimStringDesc*) &TMP3346),
((NI) 98)}
;
STRING_LITERAL(TMP3350, "low", 3);
STRING_LITERAL(TMP3351, "high", 4);
NIM_CONST TY493845 optostr_493843 = {((NimStringDesc*) &TMP3350),
((NimStringDesc*) &TMP3351)}
;
STRING_LITERAL(TMP3352, "use \'^\' instead of \'-\'; negative indexing is obsolete", 53);
STRING_LITERAL(TMP3353, "no surrounding array access context for \'^\'", 43);
STRING_LITERAL(TMP3354, "invalid context for \'^\' as \'$#\' has side effects", 48);
STRING_LITERAL(TMP3355, "invalid context for \'^\' as len!=high+1 for \'$#\'", 47);
STRING_LITERAL(TMP3356, "len", 3);
STRING_LITERAL(TMP3357, "\'$#\' has to be of an ordinal type for \'^\'", 41);
STRING_LITERAL(TMP3358, "-", 1);
STRING_LITERAL(TMP3359, "cannot find plugin ", 19);
static NIM_CONST TY495057 TMP3360 = {
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(TMP3446, " --> \'", 6);
STRING_LITERAL(TMP3499, "top level \'.closure\' calling convention", 39);
static NIM_CONST Tspecialwords206012 TMP3500 = {
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(TMP3502, "compiler/semcall.nim", 20);
NIM_CONST TY90959 TMP3501 = {((NimStringDesc*) &TMP3502),
((NI) 185)}
;
STRING_LITERAL(TMP3503, ".()", 3);
STRING_LITERAL(TMP3504, ".", 1);
NIM_CONST TY90959 TMP3505 = {((NimStringDesc*) &TMP3502),
((NI) 206)}
;
STRING_LITERAL(TMP3506, ".=", 2);
NIM_CONST TY90959 TMP3507 = {((NimStringDesc*) &TMP3502),
((NI) 238)}
;
STRING_LITERAL(TMP3508, "ambiguous call", 14);
STRING_LITERAL(TMP3509, "(", 1);
STRING_LITERAL(TMP3510, ", ", 2);
STRING_LITERAL(TMP3511, "calleeSym.ast is nil", 20);
NIM_CONST TY90959 TMP3512 = {((NimStringDesc*) &TMP3502),
((NI) 328)}
;
STRING_LITERAL(TMP3513, "\012", 1);
STRING_LITERAL(TMP3514, "semOverloadedCallAnalyseEffects", 31);
STRING_LITERAL(TMP3515, "[]=", 3);
STRING_LITERAL(TMP3516, "{}=", 3);
NIM_CONST TY90959 TMP3517 = {((NimStringDesc*) &TMP3245),
((NI) 1332)}
;
STRING_LITERAL(TMP3518, ") ", 2);
STRING_LITERAL(TMP3519, ":lifted=", 8);
STRING_LITERAL(TMP3520, "dest", 4);
STRING_LITERAL(TMP3521, "src", 3);
STRING_LITERAL(TMP3522, "newSeq", 6);
STRING_LITERAL(TMP3523, "len", 3);
STRING_LITERAL(TMP3524, ":tmp", 4);
STRING_LITERAL(TMP3525, "<=", 2);
STRING_LITERAL(TMP3527, "inc", 3);
STRING_LITERAL(TMP3528, "cannot lift assignment operator to \'case\' object", 48);
STRING_LITERAL(TMP3529, "deepCopy", 8);
STRING_LITERAL(TMP3530, "cannot copy openArray", 21);
STRING_LITERAL(TMP3531, "assignment requested for type: ", 31);
STRING_LITERAL(TMP3532, "semRecordNodeAux", 16);
STRING_LITERAL(TMP3533, "semRecordCase: discriminant is no symbol", 40);
STRING_LITERAL(TMP3534, "low(", 4);
STRING_LITERAL(TMP3535, ") must be 0 for discriminant", 28);
STRING_LITERAL(TMP3536, "dummy", 5);
static NIM_CONST Tspecialwords206012 TMP3537 = {
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(TMP3538, "use \'concept\' instead; \'generic\'", 32);
static NIM_CONST Tspecialwords206012 TMP3539 = {
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 TMP3542 = {((NimStringDesc*) &TMP3245),
((NI) 118)}
;
NIM_CONST TY90959 TMP3543 = {((NimStringDesc*) &TMP3245),
((NI) 123)}
;
STRING_LITERAL(TMP3544, "illegal context for \'nimvm\' magic", 33);
STRING_LITERAL(TMP3546, "bind", 4);
STRING_LITERAL(TMP3547, ":anon", 5);
STRING_LITERAL(TMP3548, "object constructor needs an object type", 39);
STRING_LITERAL(TMP3549, "checkInitialized", 16);
STRING_LITERAL(TMP3550, "field not initialized: ", 23);
STRING_LITERAL(TMP3551, "defined", 7);
STRING_LITERAL(TMP3552, "obsolete usage of \'defined\', use \'declared\' instead", 51);
STRING_LITERAL(TMP3554, "sizeof", 6);
STRING_LITERAL(TMP3555, "is", 2);
NIM_CONST TY90959 TMP3556 = {((NimStringDesc*) &TMP3245),
((NI) 375)}
;
STRING_LITERAL(TMP3557, "closure", 7);
STRING_LITERAL(TMP3558, "of", 2);
NIM_CONST TY90959 TMP3559 = {((NimStringDesc*) &TMP3245),
((NI) 1566)}
;
NIM_CONST TY90959 TMP3560 = {((NimStringDesc*) &TMP3245),
((NI) 1604)}
;
STRING_LITERAL(TMP3561, "``", 2);
STRING_LITERAL(TMP3562, "block", 5);
STRING_LITERAL(TMP3563, "stmt", 4);
STRING_LITERAL(TMP3564, "expr", 4);
static NIM_CONST Tspecialwords206012 TMP3565 = {
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(TMP3566, "use the {.experimental.} pragma to enable \'parallel\'", 52);
STRING_LITERAL(TMP3569, "FlowVar", 7);
STRING_LITERAL(TMP3570, "nimCreateFlowVar", 16);
STRING_LITERAL(TMP3572, ")\012", 2);
STRING_LITERAL(TMP3573, "[]", 2);
STRING_LITERAL(TMP3574, "{}", 2);
STRING_LITERAL(TMP3575, "semExpr() to implement", 22);
static NIM_CONST Tspecialwords206012 TMP3576 = {
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(TMP3577, "use \'defer\'; standalone \'finally\'", 33);
STRING_LITERAL(TMP3578, "use an explicit \'try\'; standalone \'except\'", 42);
STRING_LITERAL(TMP3579, "type class predicate failed", 27);
STRING_LITERAL(TMP3580, "\'typedesc\' metatype is not valid here; typed \'=\' instead of \':\'"
"?", 64);
STRING_LITERAL(TMP3581, "tuple", 5);
STRING_LITERAL(TMP3582, "_", 1);
STRING_LITERAL(TMP3583, "auto", 4);
STRING_LITERAL(TMP3584, "shared", 6);
STRING_LITERAL(TMP3586, "compiler/semstmts.nim", 21);
NIM_CONST TY90959 TMP3585 = {((NimStringDesc*) &TMP3586),
((NI) 709)}
;
NIM_CONST TY90959 TMP3587 = {((NimStringDesc*) &TMP3586),
((NI) 710)}
;
STRING_LITERAL(TMP3588, ":ObjectType", 11);
NIM_CONST TY90959 TMP3589 = {((NimStringDesc*) &TMP3586),
((NI) 736)}
;
STRING_LITERAL(TMP3590, "\'continue\' cannot have a label", 30);
STRING_LITERAL(TMP3591, "true", 4);
STRING_LITERAL(TMP3592, "true", 4);
STRING_LITERAL(TMP3593, "no object or tuple type", 23);
STRING_LITERAL(TMP3594, "Field", 5);
STRING_LITERAL(TMP3595, "\'continue\' not supported in a \'fields\' loop", 43);
STRING_LITERAL(TMP3596, "parallel \'fields\' iterator does not work for \'case\' objects", 59);
static NIM_CONST TY483044 TMP3597 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3598, "items", 5);
STRING_LITERAL(TMP3599, "pairs", 5);
STRING_LITERAL(TMP3600, "use \'else: discard\'; non-ordinal case without \'else\'", 52);
STRING_LITERAL(TMP3601, "\'return\'", 8);
STRING_LITERAL(TMP3602, "use the {.experimental.} pragma to enable \'using\'", 49);
STRING_LITERAL(TMP3603, "semYield", 8);
STRING_LITERAL(TMP3604, "tuple constructor", 17);
STRING_LITERAL(TMP3605, "yield statement must yield a value", 34);
static NIM_CONST Tspecialwords206012 TMP3606 = {
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 Tspecialwords206012 TMP3607 = {
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(TMP3608, "iterator", 8);
STRING_LITERAL(TMP3609, "method", 6);
static NIM_CONST Tspecialwords206012 TMP3610 = {
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(TMP3611, "converter", 9);
static NIM_CONST Tspecialwords206012 TMP3612 = {
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(TMP3613, "macro", 5);
STRING_LITERAL(TMP3614, "import", 6);
STRING_LITERAL(TMP3625, "from", 4);
STRING_LITERAL(TMP3628, "include", 7);
STRING_LITERAL(TMP3629, "export", 6);
STRING_LITERAL(TMP3630, "cannot export: ", 15);
static NIM_CONST Tspecialwords206012 TMP3631 = {
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(TMP3632, "\'defer\' takes a \'void\' expression", 33);
STRING_LITERAL(TMP3634, "cannot infer type of parameter: ", 32);
STRING_LITERAL(TMP3639, "no code for ", 12);
STRING_LITERAL(TMP3640, "echo", 4);
STRING_LITERAL(TMP3641, "echo", 4);
STRING_LITERAL(TMP3643, "n is not nil", 12);
Ttype225847* commontypebegin_457472;
extern TNimType NTI225805; /* PType */
extern TNimType NTI225847; /* TType */
extern Gcheap51018 gch_51059;
Tident198021* typedescid_468473;
Ttype225847* enforcevoidcontext_481405;
Tsym225841* analyzingdestructor_481801;
Tsym225841* destructoristrivial_481802;
extern TNimType NTI225807; /* PSym */
extern TNimType NTI225841; /* TSym */
Tident198021* destructorname_481819;
Tident198021* destructorparam_481820;
Tnode225809* destructorpragma_481821;
extern NU8 gcmd_167134;
extern NI evaltemplatecounter_431396;
extern TNimType NTI225809; /* TNode */
extern TNimType NTI225441; /* TSymKind */
extern TNimType NTI225843; /* TTypeSeq */
extern TNimType NTI280009; /* PProcCon */
extern Tnode225809* emptynode_226807;
extern Tsym225841* opcontains_231060;
extern Tsym225841* opnot_231059;
extern TNimType NTI225803; /* TNodeSeq */
TNimType NTI460963; /* tuple[a: PSym, b: int] */
extern TNimType NTI108; /* int */
TNimType NTI460962; /* seq[tuple[a: PSym, b: int]] */
extern Tident198021* iddelegator_198562;
extern Tident198021* idanon_198495;
extern NU8 gidecmd_167119;
TNimType NTI469453; /* object */
extern TNimType NTI346033; /* range -1..0(int) */
extern TNimType NTI225801; /* PNode */
extern TNimType NTI149; /* string */
extern TNimType NTI190352; /* TLineInfo */
extern TNimType NTI280021; /* PContext */
TNimType NTI469511; /* ref object */
extern NU32 goptions_167130;
extern NIM_BOOL gexperimentalmode_167149;
extern NU64 gnotes_191398;
extern TNimType NTI388209; /* TCandidate */
extern TNimType NTI225811; /* TSymSeq */
extern NI gerrorcounter_191399;
extern NU32 gglobaloptions_167132;
extern NI gerrormax_191402;
extern Tsymseq225811* gowners_280291;
extern NU8 erroroutputs_191440;
extern TNimType NTI280143; /* seq[TInstantiationPair] */
extern TSafePoint* exchandler_20843;
extern TNimType NTI190358; /* ERecoverableError */
extern Exception* currexception_20845;
extern TNimType NTI225534; /* TMagic */
extern Tsym225841* systemmodule_274019;
extern Tlineinfo190352 gcodegenlineinfo_191361;
extern NI ptrsize_174653;
extern TNimType NTI225262; /* TTypeKind */
extern NI intsize_174651;
extern NI floatsize_174652;
extern TY277069 gincludefile_277073;
extern TNimType NTI190360; /* ESuggestDone */
static TNimType* Nim_OfCheck_CACHE1[2];

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

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

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		Cell48946* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_52646(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell48946* 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) {
	Cell48946* 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(Tnode225809*, inlineconst_492248)(Tnode225809* n, Tsym225841* s) {
	Tnode225809* result;
	result = 0;
	result = copytree_230028((*s).ast);
	asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	(*result).info = (*n).info;
	return result;
}

static N_INLINE(NI, len_226098)(Tnode225809* 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_483045)(Tnode225809* n_483047) {
	NIM_BOOL result;
	Tnode225809* n;
	NIM_BOOL LOC3;
	NIM_BOOL LOC4;
	result = 0;
	n = n_483047;
	{
		while (1) {
			if (!((TMP3118[(*n).kind/8] &(1<<((*n).kind%8)))!=0)) goto LA2;
			n = lastson_228406(n);
		} LA2: ;
	}
	LOC3 = 0;
	LOC4 = 0;
	LOC4 = iscallexpr_226072(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_230904)(Tnode225809* 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_483094)(Tnode225809* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isatom_230904(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_255032((*n).typ, ((NU8) 0));
			localerror_196128((*n).info, ((NU16) 144), LOC12);
		}
		LA10: ;
	}
	goto LA1;
	LA4: ;
	{
		if (!((*n).kind == ((NU8) 115) || (*n).kind == ((NU8) 126))) goto LA14;
		(*n).kind = ((NU8) 115);
		{
			Tnode225809* it_483129;
			it_483129 = 0;
			{
				NI i_483134;
				NI HEX3Atmp_483136;
				NI LOC18;
				NI res_483138;
				i_483134 = 0;
				HEX3Atmp_483136 = 0;
				LOC18 = 0;
				LOC18 = len_226098(n);
				HEX3Atmp_483136 = (LOC18 - 1);
				res_483138 = ((NI) 0);
				{
					while (1) {
						if (!(res_483138 <= HEX3Atmp_483136)) goto LA20;
						i_483134 = res_483138;
						it_483129 = (*n).kindU.S6.sons->data[i_483134];
						fixniltype_483094(it_483129);
						res_483138 += ((NI) 1);
					} LA20: ;
				}
			}
		}
	}
	goto LA1;
	LA14: ;
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), NIM_NIL);
}

N_NIMCALL(void, discardcheck_483156)(Tcontext280023* c, Tnode225809* 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_196161((*result).info, ((NU16) 250), ((NimStringDesc*) &TMP3117));
		}
		goto LA11;
		LA13: ;
		{
			NIM_BOOL LOC16;
			Tnode225809* n;
			LOC16 = 0;
			LOC16 = implicitlydiscardable_483045(result);
			if (!LOC16) goto LA17;
			n = result;
			asgnRefNoCycle((void**) (&(*result).typ), NIM_NIL);
			{
				while (1) {
					if (!((TMP3118[(*n).kind/8] &(1<<((*n).kind%8)))!=0)) goto LA20;
					n = lastson_228406(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_167134 == ((NU8) 18)));
			LA23: ;
			if (!LOC22) goto LA24;
			{
				if (!((*(*result).typ).kind == ((NU8) 5))) goto LA28;
				fixniltype_483094(result);
				message_196161((*result).info, ((NU16) 250), ((NimStringDesc*) &TMP3117));
			}
			goto LA26;
			LA28: ;
			{
				Tnode225809* n;
				NimStringDesc* LOC33;
				n = result;
				{
					while (1) {
						if (!((TMP3118[(*n).kind/8] &(1<<((*n).kind%8)))!=0)) goto LA32;
						n = lastson_228406(n);
					} LA32: ;
				}
				LOC33 = 0;
				LOC33 = typetostring_255032((*result).typ, ((NU8) 0));
				localerror_196128((*n).info, ((NU16) 144), LOC33);
			}
			LA26: ;
		}
		goto LA11;
		LA24: ;
		LA11: ;
	}
	LA9: ;
	}BeforeRet: ;
}

N_NIMCALL(Tnode225809*, semexprnotype_457221)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = semexpr_457201(c, n, 8);
	discardcheck_483156(c, result);
	return result;
}

N_NIMCALL(Tnode225809*, semstmt_457277)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = semexprnotype_457221(c, n);
	return result;
}

N_NIMCALL(Ttype225847*, neworprevtype_464895)(NU8 kind, Ttype225847* prev, Tcontext280023* c) {
	Ttype225847* result;
	result = 0;
	{
		if (!(prev == NIM_NIL)) goto LA3;
		result = newtypes_280221(kind, c);
	}
	goto LA1;
	LA3: ;
	{
		result = prev;
		{
			if (!((*result).kind == ((NU8) 30))) goto LA8;
			(*result).kind = kind;
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype225847*, semanontuple_466614)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		localerror_196128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
	}
	LA4: ;
	result = neworprevtype_464895(((NU8) 18), prev, c);
	{
		NI i_466632;
		NI HEX3Atmp_466635;
		NI LOC7;
		NI res_466638;
		i_466632 = 0;
		HEX3Atmp_466635 = 0;
		LOC7 = 0;
		LOC7 = sonslen_228387(n);
		HEX3Atmp_466635 = (NI)(LOC7 - ((NI) 1));
		res_466638 = ((NI) 0);
		{
			while (1) {
				Ttype225847* LOC10;
				if (!(res_466638 <= HEX3Atmp_466635)) goto LA9;
				i_466632 = res_466638;
				LOC10 = 0;
				LOC10 = semtypenode_457269(c, (*n).kindU.S6.sons->data[i_466632], NIM_NIL);
				addsonskipintlit_274729(result, LOC10);
				res_466638 += ((NI) 1);
			} LA9: ;
		}
	}
	return result;
}

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

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

N_NIMCALL(Ttype225847*, semrangeaux_465427)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	TY465620 range;
	Tnode225809* LOC9;
	Tnode225809* LOC10;
	TY465625 ranget;
	result = 0;
	checksonslen_281260(n, ((NI) 3));
	result = neworprevtype_464895(((NU8) 20), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_227351(((NU8) 44), (*n).info));
	{
		NIM_BOOL LOC3;
		Tnode225809* LOC4;
		Tnode225809* LOC6;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_226244(n, ((NI) 1));
		LOC3 = ((*LOC4).kind == ((NU8) 1));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_226244(n, ((NI) 2));
		LOC3 = ((*LOC6).kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		localerror_196128((*n).info, ((NU16) 110), ((NimStringDesc*) &TMP3117));
	}
	LA7: ;
	memset((void*)range, 0, sizeof(range));
	LOC9 = 0;
	LOC9 = HEX5BHEX5D_226244(n, ((NI) 1));
	range[(((NI) 0))- 0] = semexprwithtype_457211(c, LOC9, 32);
	LOC10 = 0;
	LOC10 = HEX5BHEX5D_226244(n, ((NI) 2));
	range[(((NI) 1))- 0] = semexprwithtype_457211(c, LOC10, 32);
	memset((void*)ranget, 0, sizeof(ranget));
	{
		NI i_465637;
		NI res_465669;
		i_465637 = 0;
		res_465669 = ((NI) 0);
		{
			while (1) {
				Ttype225847* LOC14;
				if (!(res_465669 <= ((NI) 1))) goto LA13;
				i_465637 = res_465669;
				LOC14 = 0;
				LOC14 = skiptypes_229167((*range[(i_465637)- 0]).typ, IL64(576460752303423488));
				ranget[(i_465637)- 0] = skipintlit_274696(LOC14);
				res_465669 += ((NI) 1);
			} LA13: ;
		}
	}
	{
		Ttype225847* LOC17;
		Ttype225847* LOC18;
		NIM_BOOL LOC19;
		LOC17 = 0;
		LOC17 = skiptypes_229167(ranget[(((NI) 0))- 0], 1048576);
		LOC18 = 0;
		LOC18 = skiptypes_229167(ranget[(((NI) 1))- 0], 1048576);
		LOC19 = 0;
		LOC19 = sametype_260092(LOC17, LOC18, 0);
		if (!!(LOC19)) goto LA20;
		localerror_196128((*n).info, ((NU16) 132), ((NimStringDesc*) &TMP3117));
	}
	goto LA15;
	LA20: ;
	{
		NIM_BOOL LOC23;
		LOC23 = 0;
		LOC23 = isordinaltype_255093(ranget[(((NI) 0))- 0]);
		if (!!(LOC23)) goto LA24;
		localerror_196128((*n).info, ((NU16) 78), ((NimStringDesc*) &TMP3117));
	}
	goto LA15;
	LA24: ;
	{
		NIM_BOOL LOC27;
		LOC27 = 0;
		LOC27 = enumhasholes_255099(ranget[(((NI) 0))- 0]);
		if (!LOC27) goto LA28;
		localerror_196128((*n).info, ((NU16) 150), (*(*(*ranget[(((NI) 0))- 0]).sym).name).s);
	}
	goto LA15;
	LA28: ;
	LA15: ;
	{
		NI i_465652;
		NI res_465676;
		i_465652 = 0;
		res_465676 = ((NI) 0);
		{
			while (1) {
				if (!(res_465676 <= ((NI) 1))) goto LA32;
				i_465652 = res_465676;
				{
					NIM_BOOL LOC35;
					Tnode225809* LOC38;
					LOC35 = 0;
					LOC35 = hasgenericarguments_302965(range[(i_465652)- 0]);
					if (!LOC35) goto LA36;
					LOC38 = 0;
					LOC38 = makestaticexpr_280820(c, range[(i_465652)- 0]);
					addson_227819((*result).n, LOC38);
				}
				goto LA33;
				LA36: ;
				{
					Tnode225809* LOC40;
					LOC40 = 0;
					LOC40 = semconstexpr_458485(c, range[(i_465652)- 0]);
					addson_227819((*result).n, LOC40);
				}
				LA33: ;
				res_465676 += ((NI) 1);
			} LA32: ;
		}
	}
	{
		Tnode225809* LOC43;
		Tnode225809* LOC44;
		NU8 LOC45;
		LOC43 = 0;
		LOC43 = HEX5BHEX5D_226244((*result).n, ((NI) 0));
		LOC44 = 0;
		LOC44 = HEX5BHEX5D_226244((*result).n, ((NI) 1));
		LOC45 = 0;
		LOC45 = weaklevalue_233424(LOC43, LOC44);
		if (!(LOC45 == ((NU8) 1))) goto LA46;
		localerror_196128((*n).info, ((NU16) 110), ((NimStringDesc*) &TMP3117));
	}
	LA46: ;
	addsonskipintlit_274729(result, ranget[(((NI) 0))- 0]);
	return result;
}

N_NIMCALL(Ttype225847*, semtypeexpr_470381)(Tcontext280023* c, Tnode225809* n_470384) {
	Ttype225847* result;
	Tnode225809* n;
	result = 0;
	n = semexprwithtype_457211(c, n_470384, 32);
	{
		if (!((*(*n).typ).kind == ((NU8) 8))) goto LA3;
		result = base_255039((*n).typ);
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC6;
		LOC6 = 0;
		LOC6 = rendertree_247059(n, 0);
		localerror_196128((*n).info, ((NU16) 67), LOC6);
		result = errortype_281161(c);
	}
	LA1: ;
	return result;
}

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

N_NIMCALL(Ttype225847*, newconstraint_464925)(Tcontext280023* c, NU8 k) {
	Ttype225847* result;
	Ttype225847* LOC1;
	result = 0;
	result = newtypes_280221(((NU8) 51), c);
	LOC1 = 0;
	LOC1 = newtypes_280221(k, c);
	addsonskipintlit_274729(result, LOC1);
	return result;
}

N_NIMCALL(Ttype225847*, semanyref_465311)(Tcontext280023* c, Tnode225809* n_465314, NU8 kind, Ttype225847* prev) {
	Ttype225847* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_226098(n_465314);
		if (!(LOC3 < ((NI) 1))) goto LA4;
		result = newconstraint_464925(c, kind);
	}
	goto LA1;
	LA4: ;
	{
		NI iscall;
		Tnode225809* n;
		Ttype225847* base;
		Tnode225809* LOC13;
		iscall = ((*n_465314).kind == ((NU8) 27) || (*n_465314).kind == ((NU8) 29) || (*n_465314).kind == ((NU8) 30) || (*n_465314).kind == ((NU8) 31) || (*n_465314).kind == ((NU8) 26) || (*n_465314).kind == ((NU8) 28) || (*n_465314).kind == ((NU8) 32));
		{
			Tnode225809* LOC9;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_226244(n_465314, ((NI) 0));
			if (!((*LOC9).kind == ((NU8) 41))) goto LA10;
			n = HEX5BHEX5D_226244(n_465314, ((NI) 0));
		}
		goto LA7;
		LA10: ;
		{
			n = n_465314;
		}
		LA7: ;
		checkminsonslen_281270(n, ((NI) 1));
		LOC13 = 0;
		LOC13 = lastson_228406(n);
		base = semtypenode_457269(c, LOC13, NIM_NIL);
		result = neworprevtype_464895(kind, prev, c);
		{
			NI i_465361;
			NI HEX3Atmp_465376;
			NI LOC15;
			NI res_465379;
			i_465361 = 0;
			HEX3Atmp_465376 = 0;
			LOC15 = 0;
			LOC15 = len_226098(n);
			HEX3Atmp_465376 = (NI)(LOC15 - ((NI) 2));
			res_465379 = ((NI) (iscall));
			{
				while (1) {
					Ttype225847* region;
					Tnode225809* LOC18;
					if (!(res_465379 <= HEX3Atmp_465376)) goto LA17;
					i_465361 = res_465379;
					LOC18 = 0;
					LOC18 = HEX5BHEX5D_226244(n, i_465361);
					region = semtypenode_457269(c, LOC18, NIM_NIL);
					{
						Ttype225847* LOC21;
						Tnode225809* LOC24;
						LOC21 = 0;
						LOC21 = skiptypes_229167(region, 2048);
						if (!!(((*LOC21).kind == ((NU8) 50) || (*LOC21).kind == ((NU8) 17)))) goto LA22;
						LOC24 = 0;
						LOC24 = HEX5BHEX5D_226244(n, i_465361);
						message_196161((*LOC24).info, ((NU16) 4), ((NimStringDesc*) &TMP3122));
					}
					LA22: ;
					addsonskipintlit_274729(result, region);
					res_465379 += ((NI) 1);
				} LA17: ;
			}
		}
		addsonskipintlit_274729(result, base);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, semwhen_458047)(Tcontext280023* c, Tnode225809* n, NIM_BOOL semcheck) {
	Tnode225809* result;
	NIM_BOOL whennimvm;
	result = 0;
	result = NIM_NIL;
	whennimvm = NIM_FALSE;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		Tnode225809* 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)];
		{
			Tsym225841* LOC13;
			if (!((*exprnode).kind == ((NU8) 2))) goto LA11;
			LOC13 = 0;
			LOC13 = lookup_286804(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_500389;
		NI HEX3Atmp_500460;
		NI LOC18;
		NI res_500463;
		i_500389 = 0;
		HEX3Atmp_500460 = 0;
		LOC18 = 0;
		LOC18 = sonslen_228387(n);
		HEX3Atmp_500460 = (NI)(LOC18 - ((NI) 1));
		res_500463 = ((NI) 0);
		{
			while (1) {
				Tnode225809* it;
				if (!(res_500463 <= HEX3Atmp_500460)) goto LA20;
				i_500389 = res_500463;
				it = (*n).kindU.S6.sons->data[i_500389];
				switch ((*it).kind) {
				case ((NU8) 86):
				case ((NU8) 49):
				{
					checksonslen_281260(it, ((NI) 2));
					{
						if (!whennimvm) goto LA24;
						{
							if (!semcheck) goto LA28;
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), semstmt_457277(c, (*it).kindU.S6.sons->data[((NI) 1)]));
						}
						LA28: ;
						result = n;
					}
					goto LA22;
					LA24: ;
					{
						Tnode225809* e;
						e = semconstexpr_458485(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_457277(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_281260(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_457277(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_281240(n);
				}
				break;
				}
				res_500463 += ((NI) 1);
			} LA20: ;
		}
	}
	{
		if (!(result == NIM_NIL)) goto LA63;
		result = newnodei_227351(((NU8) 1), (*n).info);
	}
	LA63: ;
	idsynchronizationpoint_224453(((NI) 200));
	return result;
}

N_NIMCALL(Tsym225841*, semtypeident_465976)(Tcontext280023* c, Tnode225809* n) {
	Tsym225841* result;
{	result = 0;
	{
		if (!((*n).kind == ((NU8) 3))) goto LA3;
		result = (*n).kindU.S4.sym;
	}
	goto LA1;
	LA3: ;
	{
		result = qualifiedlookup_286864(c, n, 3);
		{
			if (!!((result == NIM_NIL))) goto LA8;
			markused_388253((*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;
				{
					Tsym225841* 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_196128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
					result = errorsym_286372(c, n);
					goto BeforeRet;
				}
				LA26: ;
				result = copysym_228607((*(*result).typ).sym, NIM_FALSE);
				asgnRefNoCycle((void**) (&(*result).typ), copytype_228542((*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_228369((*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_196128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
					result = errorsym_286372(c, n);
					goto BeforeRet;
				}
				LA32: ;
			}
			LA30: ;
			{
				Toverloaditer286431 ov;
				Tsym225841* amb;
				if (!!(((*result).kind == ((NU8) 7)))) goto LA44;
				memset((void*)(&ov), 0, sizeof(ov));
				amb = initoverloaditer_287108((&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_287277((&ov), c, n);
					} LA47: ;
				}
				{
					if (!!((amb == NIM_NIL))) goto LA52;
					result = amb;
				}
				goto LA50;
				LA52: ;
				{
					{
						if (!!(((*result).kind == ((NU8) 0)))) goto LA57;
						localerror_196128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
					}
					LA57: ;
					result = errorsym_286372(c, n);
					goto BeforeRet;
				}
				LA50: ;
			}
			LA44: ;
			{
				Tlineinfo190352 oldinfo;
				if (!!(((*(*result).typ).kind == ((NU8) 12)))) goto LA61;
				oldinfo = (*n).info;
				genericReset((void*)(&(*n)), (&NTI225809));
				(*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_196128((*n).info, ((NU16) 20), ((NimStringDesc*) &TMP3117));
			result = errorsym_286372(c, n);
		}
		LA6: ;
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, isrange_254626)(Tnode225809* 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;
			Tnode225809* LOC9;
			Tnode225809* LOC11;
			NIM_BOOL LOC13;
			Tnode225809* LOC14;
			Tnode225809* LOC16;
			Tnode225809* LOC17;
			LOC7 = 0;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_226244(n, ((NI) 0));
			LOC8 = ((*LOC9).kind == ((NU8) 2));
			if (!(LOC8)) goto LA10;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_226244(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_226244(n, ((NI) 0));
			LOC13 = ((*LOC14).kind == ((NU8) 56) || (*LOC14).kind == ((NU8) 57));
			if (!(LOC13)) goto LA15;
			LOC16 = 0;
			LOC16 = HEX5BHEX5D_226244(n, ((NI) 0));
			LOC17 = 0;
			LOC17 = HEX5BHEX5D_226244(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(Ttype225847*, semarrayindex_465808)(Tcontext280023* c, Tnode225809* n) {
	Ttype225847* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isrange_254626(n);
		if (!LOC3) goto LA4;
		result = semrangeaux_465427(c, n, NIM_NIL);
	}
	goto LA1;
	LA4: ;
	{
		Tnode225809* e;
		e = semexprwithtype_457211(c, n, 32);
		{
			if (!((*(*e).typ).kind == ((NU8) 60))) goto LA9;
			result = makerangewithstaticexpr_281087(c, (*(*e).typ).n);
		}
		goto LA7;
		LA9: ;
		{
			if (!((*e).kind >= ((NU8) 6) && (*e).kind <= ((NU8) 15))) goto LA12;
			result = makerangetype_281193(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_465808(c, (*(*e).kindU.S4.sym).ast);
				goto BeforeRet;
			}
			LA21: ;
			{
				Ttype225847* LOC25;
				NIM_BOOL LOC26;
				Tnode225809* LOC29;
				LOC25 = 0;
				LOC25 = lastson_228426((*e).typ);
				LOC26 = 0;
				LOC26 = isordinaltype_255093(LOC25);
				if (!!(LOC26)) goto LA27;
				LOC29 = 0;
				LOC29 = HEX5BHEX5D_226244(n, ((NI) 1));
				localerror_196128((*LOC29).info, ((NU16) 78), ((NimStringDesc*) &TMP3117));
			}
			LA27: ;
			result = makerangewithstaticexpr_281087(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_302965(e);
			LA36: ;
			if (!LOC35) goto LA37;
			{
				NIM_BOOL LOC41;
				Tnode225809* LOC44;
				LOC41 = 0;
				LOC41 = isordinaltype_255093((*e).typ);
				if (!!(LOC41)) goto LA42;
				LOC44 = 0;
				LOC44 = HEX5BHEX5D_226244(n, ((NI) 1));
				localerror_196128((*LOC44).info, ((NU16) 78), ((NimStringDesc*) &TMP3117));
			}
			LA42: ;
			result = makerangewithstaticexpr_281087(c, e);
		}
		goto LA7;
		LA37: ;
		{
			if (!((*e).kind == ((NU8) 2))) goto LA46;
			result = skiptypes_229167((*e).typ, 256);
		}
		goto LA7;
		LA46: ;
		{
			Tnode225809* x;
			x = semconstexpr_458485(c, e);
			{
				Ttype225847* LOC53;
				if (!((*x).kind >= ((NU8) 6) && (*x).kind <= ((NU8) 15))) goto LA51;
				LOC53 = 0;
				LOC53 = skiptypes_229167((*x).typ, 256);
				result = makerangetype_281193(c, IL64(0), (NI64)((*x).kindU.S1.intval - IL64(1)), (*n).info, LOC53);
			}
			goto LA49;
			LA51: ;
			{
				result = skiptypes_229167((*x).typ, 256);
			}
			LA49: ;
		}
		LA7: ;
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype225847*, semarray_465918)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	Ttype225847* base;
	result = 0;
	base = 0;
	{
		NI LOC3;
		Ttype225847* indx;
		Tnode225809* LOC6;
		Ttype225847* indxb;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_226244(n, ((NI) 1));
		indx = semarrayindex_465808(c, LOC6);
		indxb = indx;
		{
			if (!((*indxb).kind == ((NU8) 11))) goto LA9;
			indxb = lastson_228426(indxb);
		}
		LA9: ;
		{
			if (!!(((*indxb).kind == ((NU8) 12) || (*indxb).kind == ((NU8) 59) || (*indxb).kind == ((NU8) 60)))) goto LA13;
			{
				NIM_BOOL LOC17;
				LOC17 = 0;
				LOC17 = isordinaltype_255093(indxb);
				if (!!(LOC17)) goto LA18;
				localerror_196128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 78), ((NimStringDesc*) &TMP3117));
			}
			goto LA15;
			LA18: ;
			{
				NIM_BOOL LOC21;
				Ttype225847* LOC24;
				NimStringDesc* LOC25;
				LOC21 = 0;
				LOC21 = enumhasholes_255099(indxb);
				if (!LOC21) goto LA22;
				LOC24 = 0;
				LOC24 = skiptypes_229167(indxb, 1048576);
				LOC25 = 0;
				LOC25 = typetostring_255032(LOC24, ((NU8) 0));
				localerror_196128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 150), LOC25);
			}
			goto LA15;
			LA22: ;
			LA15: ;
		}
		LA13: ;
		base = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
		result = neworprevtype_464895(((NU8) 16), prev, c);
		addsonskipintlit_274729(result, indx);
		addsonskipintlit_274729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		localerror_196128((*n).info, ((NU16) 177), ((NimStringDesc*) &TMP3117));
		result = neworprevtype_464895(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype225847*, semcontainer_465285)(Tcontext280023* c, Tnode225809* n, NU8 kind, NimStringDesc* kindstr, Ttype225847* prev) {
	Ttype225847* result;
	result = 0;
	result = neworprevtype_464895(kind, prev, c);
	{
		NI LOC3;
		Ttype225847* base;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_274729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		Ttype225847* LOC7;
		localerror_196128((*n).info, ((NU16) 176), kindstr);
		LOC7 = 0;
		LOC7 = errortype_281161(c);
		addsonskipintlit_274729(result, LOC7);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype225847*, semrange_465701)(Tcontext280023* c, Tnode225809* n_465704, Ttype225847* prev) {
	Ttype225847* result;
	result = 0;
	result = NIM_NIL;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_228387(n_465704);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		{
			Tnode225809* LOC8;
			NIM_BOOL LOC9;
			Tnode225809* LOC12;
			Tnode225809* n;
			LOC8 = 0;
			LOC8 = HEX5BHEX5D_226244(n_465704, ((NI) 1));
			LOC9 = 0;
			LOC9 = isrange_254626(LOC8);
			if (!LOC9) goto LA10;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_226244(n_465704, ((NI) 1));
			result = semrangeaux_465427(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_196128((*(*n_465704).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 100), ((NimStringDesc*) &TMP3117));
			result = neworprevtype_464895(((NU8) 50), prev, c);
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		localerror_196128((*n_465704).info, ((NU16) 176), ((NimStringDesc*) &TMP3125));
		result = neworprevtype_464895(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype225847*, semset_465256)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	result = 0;
	result = neworprevtype_464895(((NU8) 19), prev, c);
	{
		NI LOC3;
		Ttype225847* base;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_274729(result, base);
		{
			if (!((*base).kind == ((NU8) 11))) goto LA8;
			base = lastson_228426(base);
		}
		LA8: ;
		{
			if (!!(((*base).kind == ((NU8) 12)))) goto LA12;
			{
				NIM_BOOL LOC16;
				LOC16 = 0;
				LOC16 = isordinaltype_255093(base);
				if (!!(LOC16)) goto LA17;
				localerror_196128((*n).info, ((NU16) 78), ((NimStringDesc*) &TMP3117));
			}
			goto LA14;
			LA17: ;
			{
				NI64 LOC20;
				LOC20 = 0;
				LOC20 = lengthord_255016(base);
				if (!(IL64(65536) < LOC20)) goto LA21;
				localerror_196128((*n).info, ((NU16) 123), ((NimStringDesc*) &TMP3117));
			}
			goto LA14;
			LA21: ;
			LA14: ;
		}
		LA12: ;
	}
	goto LA1;
	LA4: ;
	{
		Ttype225847* LOC24;
		localerror_196128((*n).info, ((NU16) 176), ((NimStringDesc*) &TMP3126));
		LOC24 = 0;
		LOC24 = errortype_281161(c);
		addsonskipintlit_274729(result, LOC24);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype225847*, semordinal_465955)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	result = 0;
	result = neworprevtype_464895(((NU8) 15), prev, c);
	{
		NI LOC3;
		Ttype225847* base;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		{
			if (!!(((*base).kind == ((NU8) 12)))) goto LA8;
			{
				NIM_BOOL LOC12;
				LOC12 = 0;
				LOC12 = isordinaltype_255093(base);
				if (!!(LOC12)) goto LA13;
				localerror_196128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 78), ((NimStringDesc*) &TMP3117));
			}
			LA13: ;
		}
		LA8: ;
		addsonskipintlit_274729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		localerror_196128((*n).info, ((NU16) 176), ((NimStringDesc*) &TMP3127));
		result = neworprevtype_464895(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype225847*, semvarargs_465298)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	result = 0;
	result = neworprevtype_464895(((NU8) 48), prev, c);
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NI LOC6;
		Ttype225847* base;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_228387(n);
		LOC3 = (LOC4 == ((NI) 2));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = sonslen_228387(n);
		LOC3 = (LOC6 == ((NI) 3));
		LA5: ;
		if (!LOC3) goto LA7;
		base = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_274729(result, base);
		{
			NI LOC11;
			Tident198021* LOC14;
			LOC11 = 0;
			LOC11 = sonslen_228387(n);
			if (!(LOC11 == ((NI) 3))) goto LA12;
			LOC14 = 0;
			LOC14 = considerquotedident_286010((*n).kindU.S6.sons->data[((NI) 2)]);
			asgnRefNoCycle((void**) (&(*result).n), newidentnode_227313(LOC14, (*(*n).kindU.S6.sons->data[((NI) 2)]).info));
		}
		LA12: ;
	}
	goto LA1;
	LA7: ;
	{
		Ttype225847* LOC16;
		localerror_196128((*n).info, ((NU16) 176), ((NimStringDesc*) &TMP3129));
		LOC16 = 0;
		LOC16 = errortype_281161(c);
		addsonskipintlit_274729(result, LOC16);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype225847*, semgenericparamininvocation_470124)(Tcontext280023* c, Tnode225809* n) {
	Ttype225847* result;
	result = 0;
	result = semtypenode_457269(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(Ttype225847*, instgenericcontainer_460151)(Tcontext280023* c, Tlineinfo190352 info, Ttype225847* header, NIM_BOOL allowmetatypes) {
	Ttype225847* result;
	Trepltypevars302577 cl;
	result = 0;
	memset((void*)(&cl), 0, sizeof(cl));
	initidtable_229057((&cl.symmap));
	initidtable_229057((&cl.typemap));
	initidtable_229057((&cl.localcache));
	cl.info = info;
	cl.c = c;
	cl.allowmetatypes = allowmetatypes;
	result = replacetypevarst_302627((&cl), header);
	return result;
}

N_NIMCALL(Ttype225847*, semgeneric_470132)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, Ttype225847* prev) {
	Ttype225847* result;
	Ttype225847* t;
{	result = 0;
	{
		TY193306 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, (&NTI225441)), ((NI) 2));
		LOC5[1] = nsuToLowerStr(LOC6);
		LOC7 = 0;
		LOC7 = nsuFormatOpenArray(((NimStringDesc*) &TMP3130), LOC5, 2);
		localerror_196139((*n).info, LOC7);
		result = neworprevtype_464895(((NU8) 50), prev, c);
		goto BeforeRet;
	}
	LA3: ;
	t = (*s).typ;
	{
		NIM_BOOL LOC10;
		Ttype225847* LOC12;
		LOC10 = 0;
		LOC10 = ((*t).kind == ((NU8) 54));
		if (!(LOC10)) goto LA11;
		LOC12 = 0;
		LOC12 = base_255039(t);
		LOC10 = ((*LOC12).kind == ((NU8) 10));
		LA11: ;
		if (!LOC10) goto LA13;
		t = base_255039(t);
	}
	LA13: ;
	result = neworprevtype_464895(((NU8) 9), prev, c);
	addsonskipintlit_274729(result, t);
	{
		if (!((*t).kind == ((NU8) 30))) goto LA17;
		{
			NI i_470209;
			NI HEX3Atmp_470345;
			NI LOC20;
			NI res_470348;
			i_470209 = 0;
			HEX3Atmp_470345 = 0;
			LOC20 = 0;
			LOC20 = sonslen_228387(n);
			HEX3Atmp_470345 = (NI)(LOC20 - ((NI) 1));
			res_470348 = ((NI) 1);
			{
				while (1) {
					Ttype225847* elem;
					if (!(res_470348 <= HEX3Atmp_470345)) goto LA22;
					i_470209 = res_470348;
					elem = semgenericparamininvocation_470124(c, (*n).kindU.S6.sons->data[i_470209]);
					{
						if (!elem == 0) goto LA25;
						{
							NimStringDesc* LOC31;
							if (!NIM_TRUE) goto LA29;
							LOC31 = 0;
							LOC31 = HEX24_196279(TMP3131);
							internalerror_196191(LOC31);
						}
						LA29: ;
						rawaddson_229498(result, elem);
					}
					goto LA23;
					LA25: ;
					{
						addsonskipintlit_274729(result, elem);
					}
					LA23: ;
					res_470348 += ((NI) 1);
				} LA22: ;
			}
		}
		goto BeforeRet;
	}
	goto LA15;
	LA17: ;
	{
		if (!!(((*t).kind == ((NU8) 10)))) goto LA34;
		localerror_196128((*n).info, ((NU16) 160), (*(*s).name).s);
		result = neworprevtype_464895(((NU8) 50), prev, c);
		goto BeforeRet;
	}
	goto LA15;
	LA34: ;
	{
		Tcandidate388209 m;
		Tnode225809* LOC37;
		NIM_BOOL isconcrete;
		memset((void*)(&m), 0, sizeof(m));
		chckNil((void*)(&m));
		memset((void*)(&m), 0, sizeof(m));
		newcandidate_388480(c, t, (&m));
		m.isnocall = NIM_TRUE;
		LOC37 = 0;
		LOC37 = copytree_230028(n);
		matches_394720(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_255032(t, ((NU8) 0));
			LOC46 = 0;
			LOC46 = describeargs_388974(c, n, ((NI) 1), ((NU8) 0));
			LOC47 = 0;
			LOC47 = describeargs_388974(c, (*t).n, ((NI) 0), ((NU8) 0));
			LOC44 = rawNewString(LOC45->Sup.len + LOC46->Sup.len + LOC47->Sup.len + 44);
appendString(LOC44, ((NimStringDesc*) &TMP3133));
appendString(LOC44, LOC45);
appendString(LOC44, ((NimStringDesc*) &TMP3134));
appendString(LOC44, LOC46);
appendString(LOC44, ((NimStringDesc*) &TMP3138));
appendString(LOC44, LOC47);
appendString(LOC44, ((NimStringDesc*) &TMP3139));
			err = LOC44;
			localerror_196128((*n).info, ((NU16) 4), err);
			result = neworprevtype_464895(((NU8) 50), prev, c);
			goto BeforeRet;
		}
		LA42: ;
		isconcrete = NIM_TRUE;
		{
			NI i_470269;
			NI HEX3Atmp_470353;
			NI LOC49;
			NI res_470356;
			i_470269 = 0;
			HEX3Atmp_470353 = 0;
			LOC49 = 0;
			LOC49 = len_226098(m.call);
			HEX3Atmp_470353 = (LOC49 - 1);
			res_470356 = ((NI) 1);
			{
				while (1) {
					Ttype225847* typ;
					Tnode225809* LOC52;
					if (!(res_470356 <= HEX3Atmp_470353)) goto LA51;
					i_470269 = res_470356;
					LOC52 = 0;
					LOC52 = HEX5BHEX5D_226244(m.call, i_470269);
					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_196279(TMP3131);
								internalerror_196191(LOC67);
							}
							LA65: ;
							rawaddson_229498(result, typ);
						}
						goto LA59;
						LA61: ;
						{
							addsonskipintlit_274729(result, typ);
						}
						LA59: ;
					}
					goto LA53;
					LA57: ;
					{
						typ = skiptypes_229167(typ, 256);
						{
							NIM_BOOL LOC72;
							LOC72 = 0;
							LOC72 = containsgenerictype_264310(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_196279(TMP3131);
								internalerror_196191(LOC83);
							}
							LA81: ;
							rawaddson_229498(result, typ);
						}
						goto LA75;
						LA77: ;
						{
							addsonskipintlit_274729(result, typ);
						}
						LA75: ;
					}
					LA53: ;
					res_470356 += ((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_196128((*n).info, ((NU16) 128), (*(*s).name).s);
				result = neworprevtype_464895(((NU8) 50), prev, c);
			}
			goto LA89;
			LA93: ;
			{
				result = instgenericcontainer_460151(c, (*n).info, result, NIM_FALSE);
			}
			LA89: ;
		}
		LA87: ;
	}
	LA15: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, symchoice_471790)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, NU8 r) {
	Tnode225809* result;
	Tsym225841* a;
	Toverloaditer286431 o;
	NI i;
	result = 0;
	a = 0;
	memset((void*)(&o), 0, sizeof(o));
	i = ((NI) 0);
	a = initoverloaditer_287108((&o), c, n);
	{
		while (1) {
			if (!!((a == NIM_NIL))) goto LA2;
			a = nextoverloaditer_287277((&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_227338(s, (*n).info);
		markused_388253((*n).info, s);
	}
	goto LA7;
	LA11: ;
	{
		NU8 kind;
		Ttype225847* 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_280221(((NU8) 0), c);
		result = newnodeit_227807(kind, (*n).info, LOC21);
		a = initoverloaditer_287108((&o), c, n);
		{
			while (1) {
				Tnode225809* LOC24;
				if (!!((a == NIM_NIL))) goto LA23;
				(*a).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				LOC24 = 0;
				LOC24 = newsymnode_227338(a, (*n).info);
				addson_227819(result, LOC24);
				a = nextoverloaditer_287277((&o), c, n);
			} LA23: ;
		}
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode225809*, semtemplateexpr_458062)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, NU16 flags) {
	Tnode225809* result;
	Tsym225841* LOC1;
	result = 0;
	markused_388253((*n).info, s);
	pushinfocontext_191581((*n).info);
	LOC1 = 0;
	LOC1 = getcurrowner_280258();
	result = evaltemplate_431400(n, s, LOC1);
	{
		if (!!(((flags &(1<<((((NU8) 9))&15)))!=0))) goto LA4;
		result = semaftermacrocall_464631(c, result, s, flags);
	}
	LA4: ;
	popinfocontext_191600();
	return result;
}

N_NIMCALL(Tnode225809*, semgenericstmtsymbol_476924)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, Genericctx476888* ctx) {
	Tnode225809* 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_471790(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_228369((*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_458062(c, n, s, 512);
			result = semgenericstmt_476899(c, result, 0, ctx);
		}
		goto LA4;
		LA11: ;
		{
			result = symchoice_471790(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_228369((*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_458073(c, n, n, s, 512);
			result = semgenericstmt_476899(c, result, 0, ctx);
		}
		goto LA15;
		LA22: ;
		{
			result = symchoice_471790(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_294736(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_294736(s, (*n).info);
		}
		goto LA40;
		LA44: ;
		{
			result = n;
		}
		LA40: ;
	}
	break;
	default:
	{
		result = newsymnode_227338(s, (*n).info);
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode225809*, lookup_478204)(Tcontext280023* c, Tnode225809* n, NU8 flags, Genericctx476888* ctx) {
	Tnode225809* result;
	Tident198021* ident;
	Tsym225841* s;
	Tsym225841* LOC1;
	result = 0;
	result = n;
	ident = considerquotedident_286010(n);
	LOC1 = 0;
	LOC1 = searchinscopes_286205(c, ident);
	s = skipalias_286150(LOC1, n);
	{
		if (!(s == NIM_NIL)) goto LA4;
		{
			NIM_BOOL LOC8;
			NIM_BOOL LOC9;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = contains_222829((*ctx).tomixin, (*ident).Sup.id);
			LOC8 = !(LOC9);
			if (!(LOC8)) goto LA10;
			LOC8 = !(((flags &(1<<((((NU8) 2))&7)))!=0));
			LA10: ;
			if (!LOC8) goto LA11;
			localerror_196128((*n).info, ((NU16) 63), (*ident).s);
		}
		LA11: ;
	}
	goto LA2;
	LA4: ;
	{
		{
			if (!((flags &(1<<((((NU8) 0))&7)))!=0)) goto LA16;
			result = symchoice_471790(c, n, s, ((NU8) 0));
		}
		goto LA14;
		LA16: ;
		{
			NIM_BOOL LOC19;
			LOC19 = 0;
			LOC19 = contains_222829((*ctx).tomixin, (*(*s).name).Sup.id);
			if (!LOC19) goto LA20;
			result = symchoice_471790(c, n, s, ((NU8) 2));
		}
		goto LA14;
		LA20: ;
		{
			result = semgenericstmtsymbol_476924(c, n, s, ctx);
		}
		LA14: ;
	}
	LA2: ;
	return result;
}

N_NIMCALL(Tnode225809*, newdot_478251)(Tnode225809* n, Tnode225809* b) {
	Tnode225809* result;
	result = 0;
	result = newnodei_227351(((NU8) 45), (*n).info);
	add_226165(result, (*n).kindU.S6.sons->data[((NI) 0)]);
	add_226165(result, b);
	return result;
}

N_NIMCALL(Tnode225809*, fuzzylookup_478262)(Tcontext280023* c, Tnode225809* n_478265, NU8 flags, Genericctx476888* ctx, NIM_BOOL* ismacro) {
	Tnode225809* result;
	NU8 luf;
	Tsym225841* s_478615;
	result = 0;
	{
		if (!!(((flags &(1<<((((NU8) 2))&7)))!=0))) goto LA3;
		luf = 2;
	}
	goto LA1;
	LA3: ;
	{
		luf = 0;
	}
	LA1: ;
	s_478615 = qualifiedlookup_286864(c, n_478265, luf);
	{
		if (!!((s_478615 == NIM_NIL))) goto LA8;
		result = semgenericstmtsymbol_476924(c, n_478265, s_478615, ctx);
	}
	goto LA6;
	LA8: ;
	{
		Tnode225809* n;
		Tident198021* ident;
		Tsym225841* s;
		Tsym225841* LOC11;
		asgnRefNoCycle((void**) (&(*n_478265).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_476899(c, (*n_478265).kindU.S6.sons->data[((NI) 0)], flags, ctx));
		result = n_478265;
		n = HEX5BHEX5D_226244(n_478265, ((NI) 1));
		ident = considerquotedident_286010(n);
		LOC11 = 0;
		LOC11 = searchinscopes_286205(c, ident);
		s = skipalias_286150(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);
			{
				Tnode225809* LOC22;
				if (!((flags &(1<<((((NU8) 0))&7)))!=0)) goto LA20;
				LOC22 = 0;
				LOC22 = symchoice_471790(c, n, s, ((NU8) 0));
				result = newdot_478251(result, LOC22);
			}
			goto LA18;
			LA20: ;
			{
				NIM_BOOL LOC24;
				Tnode225809* LOC27;
				LOC24 = 0;
				LOC24 = contains_222829((*ctx).tomixin, (*(*s).name).Sup.id);
				if (!LOC24) goto LA25;
				LOC27 = 0;
				LOC27 = symchoice_471790(c, n, s, ((NU8) 2));
				result = newdot_478251(result, LOC27);
			}
			goto LA18;
			LA25: ;
			{
				Tnode225809* syms;
				syms = semgenericstmtsymbol_476924(c, n, s, ctx);
				{
					Tnode225809* choice;
					if (!((*syms).kind == ((NU8) 3))) goto LA31;
					choice = symchoice_471790(c, n, s, ((NU8) 2));
					(*choice).kind = ((NU8) 56);
					result = newdot_478251(result, choice);
				}
				goto LA29;
				LA31: ;
				{
					result = newdot_478251(result, syms);
				}
				LA29: ;
			}
			LA18: ;
		}
		LA16: ;
	}
	LA6: ;
	return result;
}

N_NIMCALL(Tnode225809*, semmixinstmt_471995)(Tcontext280023* c, Tnode225809* n, Intset222056* tomixin) {
	Tnode225809* result;
	result = 0;
	{
		NI i_472021;
		NI HEX3Atmp_472024;
		NI LOC2;
		NI res_472027;
		i_472021 = 0;
		HEX3Atmp_472024 = 0;
		LOC2 = 0;
		LOC2 = len_226098(n);
		HEX3Atmp_472024 = (LOC2 - 1);
		res_472027 = ((NI) 0);
		{
			while (1) {
				Tident198021* LOC5;
				if (!(res_472027 <= HEX3Atmp_472024)) goto LA4;
				i_472021 = res_472027;
				LOC5 = 0;
				LOC5 = considerquotedident_286010((*n).kindU.S6.sons->data[i_472021]);
				incl_222856(tomixin, (*LOC5).Sup.id);
				res_472027 += ((NI) 1);
			} LA4: ;
		}
	}
	result = newnodei_227351(((NU8) 1), (*n).info);
	return result;
}

N_NIMCALL(Tnode225809*, semgenericstmtscope_476906)(Tcontext280023* c, Tnode225809* n, NU8 flags, Genericctx476888* ctx) {
	Tnode225809* result;
	Tscope225835* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	result = semgenericstmt_476899(c, n, flags, ctx);
	closescope_286111(c);
	return result;
}

N_NIMCALL(Tsym225841*, newsyms_457904)(NU8 kind, Tnode225809* n, Tcontext280023* c) {
	Tsym225841* result;
	Tident198021* LOC1;
	Tsym225841* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = considerquotedident_286010(n);
	LOC2 = 0;
	LOC2 = getcurrowner_280258();
	result = newsym_226656(kind, LOC1, LOC2, (*n).info);
	return result;
}

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

N_NIMCALL(void, addtempdecl_478692)(Tcontext280023* c, Tnode225809* n, NU8 kind) {
	Tsym225841* s;
	Tnode225809* LOC1;
	LOC1 = 0;
	LOC1 = getidentnode_476878(n);
	s = newsyms_457904(((NU8) 0), LOC1, c);
	addprelimdecl_286619(c, s);
}

N_NIMCALL(Tnode225809*, semgenericstmt_476899)(Tcontext280023* c, Tnode225809* n, NU8 flags_476903, Genericctx476888* ctx) {
	Tnode225809* result;
	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	case ((NU8) 53):
	{
		result = lookup_478204(c, n, flags_476903, ctx);
	}
	break;
	case ((NU8) 45):
	{
		NIM_BOOL dummy;
		dummy = 0;
		result = fuzzylookup_478262(c, n, flags_476903, ctx, (&dummy));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 55):
	{
		result = semgenericstmt_476899(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_476903 | 1), ctx);
	}
	break;
	case ((NU8) 123):
	{
		result = semmixinstmt_471995(c, n, (&(*ctx).tomixin));
	}
	break;
	case ((NU8) 27):
	case ((NU8) 32):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		Tnode225809* fn;
		Tsym225841* s;
		NI first;
		NIM_BOOL mixincontext;
		NU8 flags;
		checkminsonslen_281270(n, ((NI) 1));
		fn = (*n).kindU.S6.sons->data[((NI) 0)];
		s = qualifiedlookup_286864(c, fn, 0);
		{
			NIM_BOOL LOC9;
			NIM_BOOL LOC10;
			NIM_BOOL LOC11;
			Tident198021* LOC15;
			NIM_BOOL LOC16;
			NimStringDesc* LOC19;
			LOC9 = 0;
			LOC10 = 0;
			LOC11 = 0;
			LOC11 = (s == NIM_NIL);
			if (!(LOC11)) goto LA12;
			LOC11 = !(((flags_476903 &(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_286010(fn);
			LOC16 = 0;
			LOC16 = contains_222829((*ctx).tomixin, (*LOC15).Sup.id);
			LOC9 = !(LOC16);
			LA14: ;
			if (!LOC9) goto LA17;
			LOC19 = 0;
			LOC19 = rendertree_247059(fn, 0);
			localerror_196128((*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_222829((*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_228369((*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_458073(c, n, n, s, 512);
					result = semgenericstmt_476899(c, result, 0, ctx);
				}
				goto LA31;
				LA38: ;
				{
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), symchoice_471790(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_228369((*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_458062(c, n, s, 512);
					result = semgenericstmt_476899(c, result, 0, ctx);
				}
				goto LA42;
				LA49: ;
				{
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), symchoice_471790(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_471790(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_226098(n);
					LOC57 = (LOC59 == ((NI) 2));
					LA58: ;
					LOC56 = LOC57;
					if (!(LOC56)) goto LA60;
					LOC56 = eqStrings((*(*s).name).s, ((NimStringDesc*) &TMP3140));
					LA60: ;
					if (!LOC56) goto LA61;
					add_226165(result, (*ctx).bracketexpr);
				}
				LA61: ;
				first = ((NI) 1);
			}
			break;
			case ((NU8) 4):
			{
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnodetypedesc_294736(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_294736(s, (*fn).info));
					first = ((NI) 1);
				}
				LA69: ;
			}
			break;
			default:
			{
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_227338(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_478262(c, fn, flags_476903, ctx, (&mixincontext)));
			first = ((NI) 1);
		}
		goto LA20;
		LA73: ;
		LA20: ;
		{
			if (!mixincontext) goto LA77;
			flags = (flags_476903 | 4);
		}
		goto LA75;
		LA77: ;
		{
			flags = flags_476903;
		}
		LA75: ;
		{
			NI i_480038;
			NI HEX3Atmp_480848;
			NI LOC81;
			NI res_480851;
			i_480038 = 0;
			HEX3Atmp_480848 = 0;
			LOC81 = 0;
			LOC81 = sonslen_228387(result);
			HEX3Atmp_480848 = (NI)(LOC81 - ((NI) 1));
			res_480851 = first;
			{
				while (1) {
					if (!(res_480851 <= HEX3Atmp_480848)) goto LA83;
					i_480038 = res_480851;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_480038]), semgenericstmt_476899(c, (*result).kindU.S6.sons->data[i_480038], flags, ctx));
					res_480851 += ((NI) 1);
				} LA83: ;
			}
		}
	}
	break;
	case ((NU8) 40):
	{
		Tident198021* LOC85;
		Tnode225809* LOC86;
		result = newnodei_227351(((NU8) 27), (*n).info);
		LOC85 = 0;
		LOC85 = getident_198463(((NimStringDesc*) &TMP3141));
		LOC86 = 0;
		LOC86 = newidentnode_227313(LOC85, (*n).info);
		add_226165(result, LOC86);
		{
			NI i_480069;
			Slice90370 HEX3Atmp_480856;
			NI LOC88;
			i_480069 = 0;
			memset((void*)(&HEX3Atmp_480856), 0, sizeof(HEX3Atmp_480856));
			LOC88 = 0;
			LOC88 = len_226098(n);
			HEX3Atmp_480856 = HEX2EHEX2E_105290(((NI) 0), (LOC88 - 1));
			{
				NI x_480860;
				NI HEX3Atmp_480862;
				NI HEX3Atmp_480864;
				NI res_480866;
				x_480860 = 0;
				HEX3Atmp_480862 = 0;
				HEX3Atmp_480864 = 0;
				HEX3Atmp_480862 = HEX3Atmp_480856.a;
				HEX3Atmp_480864 = HEX3Atmp_480856.b;
				res_480866 = HEX3Atmp_480862;
				{
					while (1) {
						Tnode225809* LOC92;
						if (!(res_480866 <= HEX3Atmp_480864)) goto LA91;
						x_480860 = res_480866;
						i_480069 = x_480860;
						LOC92 = 0;
						LOC92 = HEX5BHEX5D_226244(n, i_480069);
						add_226165(result, LOC92);
						res_480866 += ((NI) 1);
					} LA91: ;
				}
			}
		}
		result = semgenericstmt_476899(c, result, flags_476903, ctx);
	}
	break;
	case ((NU8) 42):
	{
		Tident198021* LOC94;
		Tnode225809* LOC95;
		Tnode225809* old_480102;
		result = newnodei_227351(((NU8) 27), (*n).info);
		LOC94 = 0;
		LOC94 = getident_198463(((NimStringDesc*) &TMP3119));
		LOC95 = 0;
		LOC95 = newidentnode_227313(LOC94, (*n).info);
		add_226165(result, LOC95);
		{
			NI i_480099;
			Slice90370 HEX3Atmp_480871;
			NI LOC97;
			i_480099 = 0;
			memset((void*)(&HEX3Atmp_480871), 0, sizeof(HEX3Atmp_480871));
			LOC97 = 0;
			LOC97 = len_226098(n);
			HEX3Atmp_480871 = HEX2EHEX2E_105290(((NI) 0), (LOC97 - 1));
			{
				NI x_480875;
				NI HEX3Atmp_480877;
				NI HEX3Atmp_480879;
				NI res_480881;
				x_480875 = 0;
				HEX3Atmp_480877 = 0;
				HEX3Atmp_480879 = 0;
				HEX3Atmp_480877 = HEX3Atmp_480871.a;
				HEX3Atmp_480879 = HEX3Atmp_480871.b;
				res_480881 = HEX3Atmp_480877;
				{
					while (1) {
						Tnode225809* LOC101;
						if (!(res_480881 <= HEX3Atmp_480879)) goto LA100;
						x_480875 = res_480881;
						i_480099 = x_480875;
						LOC101 = 0;
						LOC101 = HEX5BHEX5D_226244(n, i_480099);
						add_226165(result, LOC101);
						res_480881 += ((NI) 1);
					} LA100: ;
				}
			}
		}
		old_480102 = (*ctx).bracketexpr;
		unsureAsgnRef((void**) (&(*ctx).bracketexpr), (*n).kindU.S6.sons->data[((NI) 0)]);
		result = semgenericstmt_476899(c, result, flags_476903, ctx);
		unsureAsgnRef((void**) (&(*ctx).bracketexpr), old_480102);
	}
	break;
	case ((NU8) 73):
	case ((NU8) 74):
	{
		Tnode225809* a;
		Tnode225809* b;
		NU8 k;
		checksonslen_281260(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):
		{
			Tident198021* LOC104;
			Tnode225809* LOC105;
			result = newnodei_227351(((NU8) 27), (*n).info);
			LOC104 = 0;
			LOC104 = getident_198463(((NimStringDesc*) &TMP3142));
			LOC105 = 0;
			LOC105 = newidentnode_227313(LOC104, (*n).info);
			add_226165(result, LOC105);
			{
				NI i_480137;
				Slice90370 HEX3Atmp_480886;
				NI LOC107;
				i_480137 = 0;
				memset((void*)(&HEX3Atmp_480886), 0, sizeof(HEX3Atmp_480886));
				LOC107 = 0;
				LOC107 = len_226098(a);
				HEX3Atmp_480886 = HEX2EHEX2E_105290(((NI) 0), (LOC107 - 1));
				{
					NI x_480890;
					NI HEX3Atmp_480892;
					NI HEX3Atmp_480894;
					NI res_480896;
					x_480890 = 0;
					HEX3Atmp_480892 = 0;
					HEX3Atmp_480894 = 0;
					HEX3Atmp_480892 = HEX3Atmp_480886.a;
					HEX3Atmp_480894 = HEX3Atmp_480886.b;
					res_480896 = HEX3Atmp_480892;
					{
						while (1) {
							Tnode225809* LOC111;
							if (!(res_480896 <= HEX3Atmp_480894)) goto LA110;
							x_480890 = res_480896;
							i_480137 = x_480890;
							LOC111 = 0;
							LOC111 = HEX5BHEX5D_226244(a, i_480137);
							add_226165(result, LOC111);
							res_480896 += ((NI) 1);
						} LA110: ;
					}
				}
			}
			add_226165(result, b);
			result = semgenericstmt_476899(c, result, flags_476903, ctx);
		}
		break;
		case ((NU8) 42):
		{
			Tident198021* LOC113;
			Tnode225809* LOC114;
			Tnode225809* old_480172;
			result = newnodei_227351(((NU8) 27), (*n).info);
			LOC113 = 0;
			LOC113 = getident_198463(((NimStringDesc*) &TMP3143));
			LOC114 = 0;
			LOC114 = newidentnode_227313(LOC113, (*n).info);
			add_226165(result, LOC114);
			{
				NI i_480168;
				Slice90370 HEX3Atmp_480901;
				NI LOC116;
				i_480168 = 0;
				memset((void*)(&HEX3Atmp_480901), 0, sizeof(HEX3Atmp_480901));
				LOC116 = 0;
				LOC116 = len_226098(a);
				HEX3Atmp_480901 = HEX2EHEX2E_105290(((NI) 0), (LOC116 - 1));
				{
					NI x_480905;
					NI HEX3Atmp_480907;
					NI HEX3Atmp_480909;
					NI res_480911;
					x_480905 = 0;
					HEX3Atmp_480907 = 0;
					HEX3Atmp_480909 = 0;
					HEX3Atmp_480907 = HEX3Atmp_480901.a;
					HEX3Atmp_480909 = HEX3Atmp_480901.b;
					res_480911 = HEX3Atmp_480907;
					{
						while (1) {
							Tnode225809* LOC120;
							if (!(res_480911 <= HEX3Atmp_480909)) goto LA119;
							x_480905 = res_480911;
							i_480168 = x_480905;
							LOC120 = 0;
							LOC120 = HEX5BHEX5D_226244(a, i_480168);
							add_226165(result, LOC120);
							res_480911 += ((NI) 1);
						} LA119: ;
					}
				}
			}
			add_226165(result, b);
			old_480172 = (*ctx).bracketexpr;
			unsureAsgnRef((void**) (&(*ctx).bracketexpr), (*a).kindU.S6.sons->data[((NI) 0)]);
			result = semgenericstmt_476899(c, result, flags_476903, ctx);
			unsureAsgnRef((void**) (&(*ctx).bracketexpr), old_480172);
		}
		break;
		default:
		{
			{
				NI i_480186;
				NI HEX3Atmp_480916;
				NI LOC123;
				NI res_480919;
				i_480186 = 0;
				HEX3Atmp_480916 = 0;
				LOC123 = 0;
				LOC123 = sonslen_228387(n);
				HEX3Atmp_480916 = (NI)(LOC123 - ((NI) 1));
				res_480919 = ((NI) 0);
				{
					while (1) {
						if (!(res_480919 <= HEX3Atmp_480916)) goto LA125;
						i_480186 = res_480919;
						asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_480186]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[i_480186], flags_476903, ctx));
						res_480919 += ((NI) 1);
					} LA125: ;
				}
			}
		}
		break;
		}
	}
	break;
	case ((NU8) 92):
	{
		{
			NI i_480201;
			NI HEX3Atmp_480924;
			NI LOC128;
			NI res_480927;
			i_480201 = 0;
			HEX3Atmp_480924 = 0;
			LOC128 = 0;
			LOC128 = sonslen_228387(n);
			HEX3Atmp_480924 = (NI)(LOC128 - ((NI) 1));
			res_480927 = ((NI) 0);
			{
				while (1) {
					if (!(res_480927 <= HEX3Atmp_480924)) goto LA130;
					i_480201 = res_480927;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_480201]), semgenericstmtscope_476906(c, (*n).kindU.S6.sons->data[i_480201], flags_476903, ctx));
					res_480927 += ((NI) 1);
				} LA130: ;
			}
		}
	}
	break;
	case ((NU8) 93):
	{
		{
			NI i_480216;
			NI HEX3Atmp_480932;
			NI LOC133;
			NI res_480935;
			i_480216 = 0;
			HEX3Atmp_480932 = 0;
			LOC133 = 0;
			LOC133 = sonslen_228387(n);
			HEX3Atmp_480932 = (NI)(LOC133 - ((NI) 1));
			res_480935 = ((NI) 0);
			{
				while (1) {
					if (!(res_480935 <= HEX3Atmp_480932)) goto LA135;
					i_480216 = res_480935;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_480216]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[i_480216], (flags_476903 | 4), ctx));
					res_480935 += ((NI) 1);
				} LA135: ;
			}
		}
	}
	break;
	case ((NU8) 96):
	{
		Tscope225835* LOC137;
		LOC137 = 0;
		LOC137 = openscope_286091(c);
		{
			NI i_480244;
			NI HEX3Atmp_480940;
			NI LOC139;
			NI res_480943;
			i_480244 = 0;
			HEX3Atmp_480940 = 0;
			LOC139 = 0;
			LOC139 = sonslen_228387(n);
			HEX3Atmp_480940 = (NI)(LOC139 - ((NI) 1));
			res_480943 = ((NI) 0);
			{
				while (1) {
					if (!(res_480943 <= HEX3Atmp_480940)) goto LA141;
					i_480244 = res_480943;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_480244]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[i_480244], flags_476903, ctx));
					res_480943 += ((NI) 1);
				} LA141: ;
			}
		}
		closescope_286111(c);
	}
	break;
	case ((NU8) 97):
	{
		Tscope225835* LOC143;
		LOC143 = 0;
		LOC143 = openscope_286091(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[((NI) 0)], flags_476903, ctx));
		{
			NI i_480261;
			NI HEX3Atmp_480956;
			NI LOC145;
			NI res_480959;
			i_480261 = 0;
			HEX3Atmp_480956 = 0;
			LOC145 = 0;
			LOC145 = sonslen_228387(n);
			HEX3Atmp_480956 = (NI)(LOC145 - ((NI) 1));
			res_480959 = ((NI) 1);
			{
				while (1) {
					Tnode225809* a;
					NI L;
					if (!(res_480959 <= HEX3Atmp_480956)) goto LA147;
					i_480261 = res_480959;
					a = (*n).kindU.S6.sons->data[i_480261];
					checkminsonslen_281270(a, ((NI) 1));
					L = sonslen_228387(a);
					{
						NI j_480277;
						NI HEX3Atmp_480949;
						NI res_480952;
						j_480277 = 0;
						HEX3Atmp_480949 = 0;
						HEX3Atmp_480949 = (NI)(L - ((NI) 2));
						res_480952 = ((NI) 0);
						{
							while (1) {
								if (!(res_480952 <= HEX3Atmp_480949)) goto LA150;
								j_480277 = res_480952;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_480277]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[j_480277], flags_476903, ctx));
								res_480952 += ((NI) 1);
							} LA150: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmtscope_476906(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_476903, ctx));
					res_480959 += ((NI) 1);
				} LA147: ;
			}
		}
		closescope_286111(c);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		NI L;
		Tscope225835* LOC152;
		L = sonslen_228387(n);
		LOC152 = 0;
		LOC152 = openscope_286091(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))], flags_476903, ctx));
		{
			NI i_480297;
			NI HEX3Atmp_480964;
			NI res_480967;
			i_480297 = 0;
			HEX3Atmp_480964 = 0;
			HEX3Atmp_480964 = (NI)(L - ((NI) 3));
			res_480967 = ((NI) 0);
			{
				while (1) {
					if (!(res_480967 <= HEX3Atmp_480964)) goto LA155;
					i_480297 = res_480967;
					addtempdecl_478692(c, (*n).kindU.S6.sons->data[i_480297], ((NU8) 21));
					res_480967 += ((NI) 1);
				} LA155: ;
			}
		}
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_476903, ctx));
		closescope_286111(c);
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	case ((NU8) 129):
	{
		Tscope225835* LOC157;
		checksonslen_281260(n, ((NI) 2));
		LOC157 = 0;
		LOC157 = openscope_286091(c);
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA160;
			addtempdecl_478692(c, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 22));
		}
		LA160: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[((NI) 1)], flags_476903, ctx));
		closescope_286111(c);
	}
	break;
	case ((NU8) 106):
	{
		checkminsonslen_281270(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmtscope_476906(c, (*n).kindU.S6.sons->data[((NI) 0)], flags_476903, ctx));
		{
			NI i_480328;
			NI HEX3Atmp_480980;
			NI LOC164;
			NI res_480983;
			i_480328 = 0;
			HEX3Atmp_480980 = 0;
			LOC164 = 0;
			LOC164 = sonslen_228387(n);
			HEX3Atmp_480980 = (NI)(LOC164 - ((NI) 1));
			res_480983 = ((NI) 1);
			{
				while (1) {
					Tnode225809* a;
					NI L;
					if (!(res_480983 <= HEX3Atmp_480980)) goto LA166;
					i_480328 = res_480983;
					a = (*n).kindU.S6.sons->data[i_480328];
					checkminsonslen_281270(a, ((NI) 1));
					L = sonslen_228387(a);
					{
						NI j_480344;
						NI HEX3Atmp_480973;
						NI res_480976;
						j_480344 = 0;
						HEX3Atmp_480973 = 0;
						HEX3Atmp_480973 = (NI)(L - ((NI) 2));
						res_480976 = ((NI) 0);
						{
							while (1) {
								if (!(res_480976 <= HEX3Atmp_480973)) goto LA169;
								j_480344 = res_480976;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_480344]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[j_480344], (flags_476903 | 2), ctx));
								res_480976 += ((NI) 1);
							} LA169: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmtscope_476906(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_476903, ctx));
					res_480983 += ((NI) 1);
				} LA166: ;
			}
		}
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		{
			NI i_480374;
			NI HEX3Atmp_480997;
			NI LOC172;
			NI res_481000;
			i_480374 = 0;
			HEX3Atmp_480997 = 0;
			LOC172 = 0;
			LOC172 = sonslen_228387(n);
			HEX3Atmp_480997 = (NI)(LOC172 - ((NI) 1));
			res_481000 = ((NI) 0);
			{
				while (1) {
					if (!(res_481000 <= HEX3Atmp_480997)) goto LA174;
					i_480374 = res_481000;
					{
						Tnode225809* a;
						NI L;
						a = (*n).kindU.S6.sons->data[i_480374];
						{
							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_281240(a);
						}
						LA184: ;
						checkminsonslen_281270(a, ((NI) 3));
						L = sonslen_228387(a);
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_476903 | 2), ctx));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_476903, ctx));
						{
							NI j_480434;
							NI HEX3Atmp_480990;
							NI res_480993;
							j_480434 = 0;
							HEX3Atmp_480990 = 0;
							HEX3Atmp_480990 = (NI)(L - ((NI) 3));
							res_480993 = ((NI) 0);
							{
								while (1) {
									Tnode225809* LOC189;
									if (!(res_480993 <= HEX3Atmp_480990)) goto LA188;
									j_480434 = res_480993;
									LOC189 = 0;
									LOC189 = getidentnode_476878((*a).kindU.S6.sons->data[j_480434]);
									addtempdecl_478692(c, LOC189, ((NU8) 8));
									res_480993 += ((NI) 1);
								} LA188: ;
							}
						}
					} LA175: ;
					res_481000 += ((NI) 1);
				} LA174: ;
			}
		}
	}
	break;
	case ((NU8) 75):
	{
		{
			NI i_480448;
			NI HEX3Atmp_481013;
			NI LOC192;
			NI res_481016;
			i_480448 = 0;
			HEX3Atmp_481013 = 0;
			LOC192 = 0;
			LOC192 = sonslen_228387(n);
			HEX3Atmp_481013 = (NI)(LOC192 - ((NI) 1));
			res_481016 = ((NI) 0);
			{
				while (1) {
					Tnode225809* a;
					NI L;
					if (!(res_481016 <= HEX3Atmp_481013)) goto LA194;
					i_480448 = res_481016;
					a = (*n).kindU.S6.sons->data[i_480448];
					{
						if (!!(((*a).kind == ((NU8) 35)))) goto LA197;
						illformedast_281240(a);
					}
					LA197: ;
					checkminsonslen_281270(a, ((NI) 3));
					L = sonslen_228387(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_476903 | 2), ctx));
					{
						NI j_480488;
						NI HEX3Atmp_481006;
						NI res_481009;
						j_480488 = 0;
						HEX3Atmp_481006 = 0;
						HEX3Atmp_481006 = (NI)(L - ((NI) 3));
						res_481009 = ((NI) 0);
						{
							while (1) {
								Tnode225809* LOC202;
								if (!(res_481009 <= HEX3Atmp_481006)) goto LA201;
								j_480488 = res_481009;
								LOC202 = 0;
								LOC202 = getidentnode_476878((*a).kindU.S6.sons->data[j_480488]);
								addtempdecl_478692(c, LOC202, ((NU8) 7));
								res_481009 += ((NI) 1);
							} LA201: ;
						}
					}
					res_481016 += ((NI) 1);
				} LA194: ;
			}
		}
	}
	break;
	case ((NU8) 101):
	{
		{
			NI i_480502;
			NI HEX3Atmp_481022;
			NI LOC205;
			NI res_481025;
			i_480502 = 0;
			HEX3Atmp_481022 = 0;
			LOC205 = 0;
			LOC205 = sonslen_228387(n);
			HEX3Atmp_481022 = (NI)(LOC205 - ((NI) 1));
			res_481025 = ((NI) 0);
			{
				while (1) {
					if (!(res_481025 <= HEX3Atmp_481022)) goto LA207;
					i_480502 = res_481025;
					{
						Tnode225809* a;
						Tnode225809* LOC217;
						a = (*n).kindU.S6.sons->data[i_480502];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA211;
							goto LA208;
						}
						LA211: ;
						{
							if (!!(((*a).kind == ((NU8) 102)))) goto LA215;
							illformedast_281240(a);
						}
						LA215: ;
						checksonslen_281260(a, ((NI) 3));
						LOC217 = 0;
						LOC217 = getidentnode_476878((*a).kindU.S6.sons->data[((NI) 0)]);
						addtempdecl_478692(c, LOC217, ((NU8) 10));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[((NI) 1)], (flags_476903 | 2), ctx));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[((NI) 2)], flags_476903, ctx));
					} LA208: ;
					res_481025 += ((NI) 1);
				} LA207: ;
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		{
			NI i_480553;
			NI HEX3Atmp_481031;
			NI LOC220;
			NI res_481034;
			i_480553 = 0;
			HEX3Atmp_481031 = 0;
			LOC220 = 0;
			LOC220 = sonslen_228387(n);
			HEX3Atmp_481031 = (NI)(LOC220 - ((NI) 1));
			res_481034 = ((NI) 0);
			{
				while (1) {
					if (!(res_481034 <= HEX3Atmp_481031)) goto LA222;
					i_480553 = res_481034;
					{
						Tnode225809* a;
						Tnode225809* LOC232;
						a = (*n).kindU.S6.sons->data[i_480553];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA226;
							goto LA223;
						}
						LA226: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA230;
							illformedast_281240(a);
						}
						LA230: ;
						checksonslen_281260(a, ((NI) 3));
						LOC232 = 0;
						LOC232 = getidentnode_476878((*a).kindU.S6.sons->data[((NI) 0)]);
						addtempdecl_478692(c, LOC232, ((NU8) 7));
					} LA223: ;
					res_481034 += ((NI) 1);
				} LA222: ;
			}
		}
		{
			NI i_480587;
			NI HEX3Atmp_481040;
			NI LOC234;
			NI res_481043;
			i_480587 = 0;
			HEX3Atmp_481040 = 0;
			LOC234 = 0;
			LOC234 = sonslen_228387(n);
			HEX3Atmp_481040 = (NI)(LOC234 - ((NI) 1));
			res_481043 = ((NI) 0);
			{
				while (1) {
					if (!(res_481043 <= HEX3Atmp_481040)) goto LA236;
					i_480587 = res_481043;
					{
						Tnode225809* a;
						a = (*n).kindU.S6.sons->data[i_480587];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA240;
							goto LA237;
						}
						LA240: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA244;
							illformedast_281240(a);
						}
						LA244: ;
						checksonslen_281260(a, ((NI) 3));
						{
							Tscope225835* LOC250;
							if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA248;
							LOC250 = 0;
							LOC250 = openscope_286091(c);
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[((NI) 1)], flags_476903, ctx));
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[((NI) 2)], (flags_476903 | 2), ctx));
							closescope_286111(c);
						}
						goto LA246;
						LA248: ;
						{
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[((NI) 2)], (flags_476903 | 2), ctx));
						}
						LA246: ;
					} LA237: ;
					res_481043 += ((NI) 1);
				} LA236: ;
			}
		}
	}
	break;
	case ((NU8) 150):
	{
		{
			NI LOC255;
			LOC255 = 0;
			LOC255 = sonslen_228387(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_476899(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_476903 | 2), ctx));
			}
			LA260: ;
			{
				NI i_480688;
				NI HEX3Atmp_481049;
				NI LOC263;
				NI res_481052;
				i_480688 = 0;
				HEX3Atmp_481049 = 0;
				LOC263 = 0;
				LOC263 = sonslen_228387(n);
				HEX3Atmp_481049 = (NI)(LOC263 - ((NI) 1));
				res_481052 = ((NI) 1);
				{
					while (1) {
						Tnode225809* a;
						Tnode225809* LOC269;
						Tsym225841* LOC270;
						if (!(res_481052 <= HEX3Atmp_481049)) goto LA265;
						i_480688 = res_481052;
						a = 0;
						switch ((*(*n).kindU.S6.sons->data[i_480688]).kind) {
						case ((NU8) 151):
						{
							a = (*(*n).kindU.S6.sons->data[i_480688]).kindU.S6.sons->data[((NI) 0)];
						}
						break;
						case ((NU8) 2):
						{
							a = (*n).kindU.S6.sons->data[i_480688];
						}
						break;
						default:
						{
							illformedast_281240(n);
						}
						break;
						}
						LOC269 = 0;
						LOC269 = getidentnode_476878(a);
						LOC270 = 0;
						LOC270 = newsyms_457904(((NU8) 0), LOC269, c);
						adddecl_286607(c, LOC270);
						res_481052 += ((NI) 1);
					} LA265: ;
				}
			}
		}
		LA256: ;
	}
	break;
	case ((NU8) 133):
	case ((NU8) 134):
	case ((NU8) 135):
	{
	}
	break;
	case ((NU8) 76):
	{
		checkminsonslen_281270(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_476899(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_476903 | 2), ctx));
		}
		LA275: ;
		{
			NI i_480731;
			NI HEX3Atmp_481065;
			NI LOC278;
			NI res_481068;
			i_480731 = 0;
			HEX3Atmp_481065 = 0;
			LOC278 = 0;
			LOC278 = sonslen_228387(n);
			HEX3Atmp_481065 = (NI)(LOC278 - ((NI) 1));
			res_481068 = ((NI) 1);
			{
				while (1) {
					Tnode225809* a;
					NI L;
					if (!(res_481068 <= HEX3Atmp_481065)) goto LA280;
					i_480731 = res_481068;
					a = (*n).kindU.S6.sons->data[i_480731];
					{
						if (!!(((*a).kind == ((NU8) 35)))) goto LA283;
						illformedast_281240(a);
					}
					LA283: ;
					checkminsonslen_281270(a, ((NI) 3));
					L = sonslen_228387(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_476903 | 2), ctx));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_476899(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_476903, ctx));
					{
						NI j_480773;
						NI HEX3Atmp_481058;
						NI res_481061;
						j_480773 = 0;
						HEX3Atmp_481058 = 0;
						HEX3Atmp_481058 = (NI)(L - ((NI) 3));
						res_481061 = ((NI) 0);
						{
							while (1) {
								Tnode225809* LOC288;
								if (!(res_481061 <= HEX3Atmp_481058)) goto LA287;
								j_480773 = res_481061;
								LOC288 = 0;
								LOC288 = getidentnode_476878((*a).kindU.S6.sons->data[j_480773]);
								addtempdecl_478692(c, LOC288, ((NU8) 3));
								res_481061 += ((NI) 1);
							} LA287: ;
						}
					}
					res_481068 += ((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):
	{
		Tscope225835* LOC295;
		Tnode225809* body;
		checksonslen_281260(n, ((NI) 7));
		{
			Tnode225809* LOC294;
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA292;
			LOC294 = 0;
			LOC294 = getidentnode_476878((*n).kindU.S6.sons->data[((NI) 0)]);
			addtempdecl_478692(c, LOC294, ((NU8) 12));
		}
		LA292: ;
		LOC295 = 0;
		LOC295 = openscope_286091(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[((NI) 2)], flags_476903, ctx));
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA298;
			{
				Tident198021* LOC304;
				Tsym225841* LOC305;
				if (!!(((*(*(*n).kindU.S6.sons->data[((NI) 3)]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA302;
				LOC304 = 0;
				LOC304 = getident_198463(((NimStringDesc*) &TMP3144));
				LOC305 = 0;
				LOC305 = newsym_226656(((NU8) 0), LOC304, NIM_NIL, (*n).info);
				addprelimdecl_286619(c, LOC305);
			}
			LA302: ;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 3)]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[((NI) 3)], flags_476903, ctx));
		}
		LA298: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 4)]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[((NI) 4)], flags_476903, ctx));
		body = 0;
		{
			if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3))) goto LA308;
			body = getbody_271062((*(*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_476906(c, body, flags_476903, ctx));
		closescope_286111(c);
	}
	break;
	case ((NU8) 90):
	case ((NU8) 43):
	{
	}
	break;
	case ((NU8) 34):
	case ((NU8) 33):
	{
		checkminsonslen_281270(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[((NI) 1)], flags_476903, ctx));
	}
	break;
	default:
	{
		{
			NI i_480843;
			NI HEX3Atmp_481074;
			NI LOC315;
			NI res_481077;
			i_480843 = 0;
			HEX3Atmp_481074 = 0;
			LOC315 = 0;
			LOC315 = sonslen_228387(n);
			HEX3Atmp_481074 = (NI)(LOC315 - ((NI) 1));
			res_481077 = ((NI) 0);
			{
				while (1) {
					if (!(res_481077 <= HEX3Atmp_481074)) goto LA317;
					i_480843 = res_481077;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_480843]), semgenericstmt_476899(c, (*n).kindU.S6.sons->data[i_480843], flags_476903, ctx));
					res_481077 += ((NI) 1);
				} LA317: ;
			}
		}
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode225809*, semgenericstmt_464888)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Genericctx476888 ctx;
	result = 0;
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_222927((&ctx.tomixin));
	result = semgenericstmt_476899(c, n, 0, (&ctx));
	return result;
}

static N_INLINE(Ttype225847*, skipgenericinvocation_467964)(Ttype225847* t) {
	Ttype225847* 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_228426(result);
		} LA6: ;
	}
	return result;
}

N_NIMCALL(void, addinheritedfieldsaux_467868)(Tcontext280023* c, Intset222056* check, NI* pos, Tnode225809* n) {
	switch ((*n).kind) {
	case ((NU8) 139):
	{
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA4;
			internalerror_196172((*n).info, ((NimStringDesc*) &TMP3147));
		}
		LA4: ;
		addinheritedfieldsaux_467868(c, check, pos, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_467899;
			NI HEX3Atmp_467928;
			NI LOC7;
			NI res_467931;
			i_467899 = 0;
			HEX3Atmp_467928 = 0;
			LOC7 = 0;
			LOC7 = sonslen_228387(n);
			HEX3Atmp_467928 = (NI)(LOC7 - ((NI) 1));
			res_467931 = ((NI) 1);
			{
				while (1) {
					if (!(res_467931 <= HEX3Atmp_467928)) goto LA9;
					i_467899 = res_467931;
					switch ((*(*n).kindU.S6.sons->data[i_467899]).kind) {
					case ((NU8) 85):
					case ((NU8) 88):
					{
						Tnode225809* LOC11;
						LOC11 = 0;
						LOC11 = lastson_228406((*n).kindU.S6.sons->data[i_467899]);
						addinheritedfieldsaux_467868(c, check, pos, LOC11);
					}
					break;
					default:
					{
						internalerror_196172((*n).info, ((NimStringDesc*) &TMP3148));
					}
					break;
					}
					res_467931 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	break;
	case ((NU8) 138):
	{
		{
			NI i_467914;
			NI HEX3Atmp_467936;
			NI LOC15;
			NI res_467939;
			i_467914 = 0;
			HEX3Atmp_467936 = 0;
			LOC15 = 0;
			LOC15 = sonslen_228387(n);
			HEX3Atmp_467936 = (NI)(LOC15 - ((NI) 1));
			res_467939 = ((NI) 0);
			{
				while (1) {
					if (!(res_467939 <= HEX3Atmp_467936)) goto LA17;
					i_467914 = res_467939;
					addinheritedfieldsaux_467868(c, check, pos, (*n).kindU.S6.sons->data[i_467914]);
					res_467939 += ((NI) 1);
				} LA17: ;
			}
		}
	}
	break;
	case ((NU8) 3):
	{
		incl_222856(check, (*(*(*n).kindU.S4.sym).name).Sup.id);
		(*pos) += ((NI) 1);
	}
	break;
	default:
	{
		internalerror_196172((*n).info, ((NimStringDesc*) &TMP3149));
	}
	break;
	}
}

N_NIMCALL(void, addinheritedfields_467998)(Tcontext280023* c, Intset222056* check, NI* pos, Ttype225847* obj) {
	{
		NIM_BOOL LOC3;
		NI LOC4;
		Ttype225847* LOC8;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_228351(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_467964((*obj).sons->data[((NI) 0)]);
		addinheritedfields_467998(c, check, pos, LOC8);
	}
	LA6: ;
	addinheritedfieldsaux_467868(c, check, pos, (*obj).n);
}

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

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

static N_INLINE(void, rtladdcycleroot_53423)(Cell48946* 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)(Cell48946* 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)(Cell48946* 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) {
	{
		Cell48946* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_52646(src);
		incref_55022(LOC5);
	}
	LA3: ;
	{
		Cell48946* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_52646((*dest));
		decref_54604(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

static N_INLINE(void, pushproccon_280361)(Tcontext280023* c, Tsym225841* owner) {
	Tproccon280011* x;
{	{
		if (!(owner == NIM_NIL)) goto LA3;
		internalerror_196191(((NimStringDesc*) &TMP3157));
		goto BeforeRet;
	}
	LA3: ;
	x = 0;
	x = (Tproccon280011*) newObj((&NTI280009), sizeof(Tproccon280011));
	asgnRefNoCycle((void**) (&(*x).owner), owner);
	asgnRef((void**) (&(*x).next), (*c).p);
	asgnRef((void**) (&(*c).p), x);
	}BeforeRet: ;
}

N_NIMCALL(Ttype225847*, findenforcedstatictype_468339)(Ttype225847* t_468341) {
	Ttype225847* result;
{	result = 0;
	{
		if (!((*t_468341).kind == ((NU8) 59))) goto LA3;
		result = t_468341;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*t_468341).kind == ((NU8) 55))) goto LA7;
		{
			Ttype225847* s_468370;
			Ttypeseq225843* HEX3Atmp_468385;
			NI i_468388;
			NI L_468390;
			s_468370 = 0;
			HEX3Atmp_468385 = 0;
			HEX3Atmp_468385 = (*t_468341).sons;
			i_468388 = ((NI) 0);
			L_468390 = (HEX3Atmp_468385 ? HEX3Atmp_468385->Sup.len : 0);
			{
				while (1) {
					Ttype225847* t;
					if (!(i_468388 < L_468390)) goto LA11;
					s_468370 = HEX3Atmp_468385->data[i_468388];
					t = findenforcedstatictype_468339(s_468370);
					{
						if (!!((t == NIM_NIL))) goto LA14;
						result = t;
						goto BeforeRet;
					}
					LA14: ;
					i_468388 += ((NI) 1);
				} LA11: ;
			}
		}
	}
	LA7: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, addparamorresult_459885)(Tcontext280023* c, Tsym225841* param, NU8 kind) {
	{
		Ttype225847* statictype;
		if (!(kind == ((NU8) 17))) goto LA3;
		statictype = findenforcedstatictype_468339((*param).typ);
		{
			Tsym225841* a;
			if (!!((statictype == NIM_NIL))) goto LA7;
			a = copysym_228607(param, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*a).typ), base_255039(statictype));
			adddecl_286607(c, a);
		}
		goto LA5;
		LA7: ;
		{
			if (!((*(*param).typ).kind == ((NU8) 8))) goto LA10;
			adddecl_286607(c, param);
		}
		goto LA5;
		LA10: ;
		{
			Tsym225841* nn;
			Tsym225841* a;
			{
				Tsym225841* LOC15;
				LOC15 = 0;
				LOC15 = getcompilerproc_274809(((NimStringDesc*) &TMP3160));
				if (!!((LOC15 == NIM_NIL))) goto LA16;
				nn = getsyssym_274077(((NimStringDesc*) &TMP3161));
			}
			goto LA13;
			LA16: ;
			{
				nn = getsyssym_274077(((NimStringDesc*) &TMP3162));
			}
			LA13: ;
			a = copysym_228607(param, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*a).typ), (*nn).typ);
			adddecl_286607(c, a);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!!((((*param).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA22;
			adddecl_286607(c, param);
		}
		LA22: ;
	}
	LA1: ;
}

N_NIMCALL(void, addresult_488830)(Tcontext280023* c, Ttype225847* t, Tlineinfo190352 info, NU8 owner) {
	{
		Tsym225841* s;
		Tident198021* LOC5;
		Tsym225841* LOC6;
		if (!!((t == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = getident_198463(((NimStringDesc*) &TMP3159));
		LOC6 = 0;
		LOC6 = getcurrowner_280258();
		s = newsym_226656(((NU8) 11), LOC5, LOC6, info);
		asgnRefNoCycle((void**) (&(*s).typ), t);
		(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
		addparamorresult_459885(c, s, owner);
		asgnRefNoCycle((void**) (&(*(*c).p).resultsym), s);
	}
	LA3: ;
}

N_NIMCALL(void, addresultnode_488864)(Tcontext280023* c, Tnode225809* n) {
	{
		Tnode225809* LOC5;
		if (!!(((*(*c).p).resultsym == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = newsymnode_227325((*(*c).p).resultsym);
		addson_227819(n, LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, maybeaddresult_457301)(Tcontext280023* c, Tsym225841* s, Tnode225809* 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_488830(c, (*(*s).typ).sons->data[((NI) 0)], (*n).info, (*s).kind);
		addresultnode_488864(c, n);
	}
	LA5: ;
}

N_NIMCALL(void, instantiateproctype_460176)(Tcontext280023* c, Tidtable225859 pt, Tsym225841* prc, Tlineinfo190352 info) {
	Trepltypevars302577 cl;
	Ttype225847* result;
	Tnode225809* originalparams;
	Tnode225809* LOC20;
	adddecl_286607(c, prc);
	pushinfocontext_191581(info);
	memset((void*)(&cl), 0, sizeof(cl));
	chckNil((void*)(&cl));
	memset((void*)(&cl), 0, sizeof(cl));
	inittypevars_304846(c, pt, info, NIM_NIL, (&cl));
	result = instcopytype_303694((&cl), (*prc).typ);
	originalparams = (*result).n;
	asgnRefNoCycle((void**) (&(*result).n), shallowcopy_229817(originalparams));
	{
		NI i_460206;
		NI HEX3Atmp_460431;
		NI LOC2;
		NI res_460434;
		i_460206 = 0;
		HEX3Atmp_460431 = 0;
		LOC2 = 0;
		LOC2 = len_228369(result);
		HEX3Atmp_460431 = (LOC2 - 1);
		res_460434 = ((NI) 1);
		{
			while (1) {
				Tsym225841* oldparam;
				Tnode225809* LOC15;
				Tsym225841* param;
				if (!(res_460434 <= HEX3Atmp_460431)) goto LA4;
				i_460206 = res_460434;
				{
					if (!(((NI) 1) < i_460206)) goto LA7;
					resetidtable_229077((&cl.symmap));
					resetidtable_229077((&cl.localcache));
				}
				LA7: ;
				asgnRefNoCycle((void**) (&(*result).sons->data[i_460206]), replacetypevarst_302627((&cl), (*result).sons->data[i_460206]));
				propagatetoowner_229274(result, (*result).sons->data[i_460206]);
				{
					Tnode225809* LOC11;
					NimStringDesc* LOC14;
					LOC11 = 0;
					LOC11 = HEX5BHEX5D_226244(originalparams, i_460206);
					if (!!(((*LOC11).kind == ((NU8) 3)))) goto LA12;
					LOC14 = 0;
					LOC14 = HEX24_196279(TMP3158);
					internalerror_196191(LOC14);
				}
				LA12: ;
				LOC15 = 0;
				LOC15 = HEX5BHEX5D_226244(originalparams, i_460206);
				oldparam = (*LOC15).kindU.S4.sym;
				param = copysym_228607(oldparam, NIM_FALSE);
				asgnRefNoCycle((void**) (&(*param).owner), prc);
				asgnRefNoCycle((void**) (&(*param).typ), (*result).sons->data[i_460206]);
				{
					if (!!(((*oldparam).ast == NIM_NIL))) goto LA18;
					asgnRefNoCycle((void**) (&(*param).ast), fitnode_457245(c, (*param).typ, (*oldparam).ast));
				}
				LA18: ;
				asgnRefNoCycle((void**) (&(*(*result).n).kindU.S6.sons->data[i_460206]), newsymnode_227325(param));
				adddecl_286607(c, param);
				res_460434 += ((NI) 1);
			} LA4: ;
		}
	}
	resetidtable_229077((&cl.symmap));
	resetidtable_229077((&cl.localcache));
	asgnRefNoCycle((void**) (&(*result).sons->data[((NI) 0)]), replacetypevarst_302627((&cl), (*result).sons->data[((NI) 0)]));
	LOC20 = 0;
	LOC20 = HEX5BHEX5D_226244(originalparams, ((NI) 0));
	asgnRefNoCycle((void**) (&(*(*result).n).kindU.S6.sons->data[((NI) 0)]), copytree_230028(LOC20));
	erasevoidparams_304182(result);
	skipintliteralparams_304336(result);
	asgnRefNoCycle((void**) (&(*prc).typ), result);
	maybeaddresult_457301(c, prc, (*prc).ast);
	popinfocontext_191600();
}

N_NIMCALL(NIM_BOOL, sameinstantiation_459396)(Tinstantiation225831 a, Tinstantiation225831 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_459427;
			NI HEX3Atmp_459430;
			NI res_459433;
			i_459427 = 0;
			HEX3Atmp_459430 = 0;
			HEX3Atmp_459430 = (a.concretetypes ? (a.concretetypes->Sup.len-1) : -1);
			res_459433 = ((NI) 0);
			{
				while (1) {
					if (!(res_459433 <= HEX3Atmp_459430)) goto LA7;
					i_459427 = res_459433;
					{
						NIM_BOOL LOC10;
						LOC10 = 0;
						LOC10 = comparetypes_262047(a.concretetypes->data[i_459427], b.concretetypes->data[i_459427], ((NU8) 0), 4);
						if (!!(LOC10)) goto LA11;
						goto BeforeRet;
					}
					LA11: ;
					res_459433 += ((NI) 1);
				} LA7: ;
			}
		}
		result = NIM_TRUE;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym225841*, genericcacheget_459449)(Tsym225841* genericsym, Tinstantiation225831 entry, NI id) {
	Tsym225841* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = HEX3DHEX3D_228870((*genericsym).kindU.S2.procinstcache, NIM_NIL);
		if (!!(LOC3)) goto LA4;
		{
			Tinstantiation225831* inst_459611;
			TY225944* HEX3Atmp_459613;
			NI i_459616;
			NI L_459618;
			inst_459611 = 0;
			HEX3Atmp_459613 = 0;
			HEX3Atmp_459613 = (*genericsym).kindU.S2.procinstcache;
			i_459616 = ((NI) 0);
			L_459618 = (HEX3Atmp_459613 ? HEX3Atmp_459613->Sup.len : 0);
			{
				while (1) {
					if (!(i_459616 < L_459618)) goto LA8;
					inst_459611 = HEX3Atmp_459613->data[i_459616];
					{
						NIM_BOOL LOC11;
						LOC11 = 0;
						LOC11 = ((*inst_459611).compilesid == id);
						if (!(LOC11)) goto LA12;
						LOC11 = sameinstantiation_459396(entry, (*inst_459611));
						LA12: ;
						if (!LOC11) goto LA13;
						result = (*inst_459611).sym;
						goto BeforeRet;
					}
					LA13: ;
					i_459616 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	LA4: ;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NI, safelen_226126)(Tnode225809* 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_459801)(Tnode225809* n, Tsym225841* owner, Tidtable225859* symmap) {
	{
		NIM_BOOL LOC3;
		Tsym225841* s;
		Tsym225841* x;
		Tidobj198015* 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_233182((*symmap), LOC7);
		x = ((Tsym225841*) (LOC8));
		{
			Tidobj198015* LOC13;
			TNimObject* LOC14;
			if (!(x == NIM_NIL)) goto LA11;
			x = copysym_228607(s, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*x).owner), owner);
			LOC13 = 0;
			LOC13 = &s->Sup;
			LOC14 = 0;
			LOC14 = &x->Sup.Sup;
			idtableput_233196(symmap, LOC13, LOC14);
		}
		LA11: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S4.sym), x);
	}
	goto LA1;
	LA5: ;
	{
		{
			NI i_459863;
			NI HEX3Atmp_459866;
			NI LOC17;
			NI res_459869;
			i_459863 = 0;
			HEX3Atmp_459866 = 0;
			LOC17 = 0;
			LOC17 = safelen_226126(n);
			HEX3Atmp_459866 = (LOC17 - 1);
			res_459869 = ((NI) 0);
			{
				while (1) {
					if (!(res_459869 <= HEX3Atmp_459866)) goto LA19;
					i_459863 = res_459869;
					freshgensyms_459801((*n).kindU.S6.sons->data[i_459863], owner, symmap);
					res_459869 += ((NI) 1);
				} LA19: ;
			}
		}
	}
	LA1: ;
}

static N_INLINE(NIM_BOOL, isemptytype_230932)(Ttype225847* 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_496861)(Tnode225809* 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(Tnode225809*, readtypeparameter_497277)(Tcontext280023* c, Ttype225847* typ, Tident198021* paramname, Tlineinfo190352 info) {
	Tnode225809* result;
	Ttype225847* ty;
	Ttype225847* tbody;
{	result = 0;
	{
		if (!((*typ).kind == ((NU8) 11))) goto LA3;
		ty = skipgenericalias_261119(typ);
	}
	goto LA1;
	LA3: ;
	{
		{
			NimStringDesc* LOC10;
			if (!!(((*typ).kind == ((NU8) 54)))) goto LA8;
			LOC10 = 0;
			LOC10 = HEX24_196279(TMP3244);
			internalerror_196191(LOC10);
		}
		LA8: ;
		ty = skipgenericalias_261119((*typ).sons->data[((NI) 1)]);
	}
	LA1: ;
	tbody = (*ty).sons->data[((NI) 0)];
	{
		NI s_497323;
		NI HEX3Atmp_497339;
		NI LOC12;
		NI res_497342;
		s_497323 = 0;
		HEX3Atmp_497339 = 0;
		LOC12 = 0;
		LOC12 = len_228369(tbody);
		HEX3Atmp_497339 = (NI)(LOC12 - ((NI) 2));
		res_497342 = ((NI) 0);
		{
			while (1) {
				Ttype225847* tparam;
				if (!(res_497342 <= HEX3Atmp_497339)) goto LA14;
				s_497323 = res_497342;
				tparam = (*tbody).sons->data[s_497323];
				{
					Ttype225847* rawtyp;
					if (!((*(*(*tparam).sym).name).Sup.id == (*paramname).Sup.id)) goto LA17;
					rawtyp = (*ty).sons->data[(NI)(s_497323 + ((NI) 1))];
					{
						if (!((*rawtyp).kind == ((NU8) 59))) goto LA21;
						result = (*rawtyp).n;
						goto BeforeRet;
					}
					goto LA19;
					LA21: ;
					{
						Ttype225847* foundtyp;
						Tsym225841* LOC24;
						Tsym225841* LOC25;
						foundtyp = maketypedesc_280684(c, rawtyp);
						LOC24 = 0;
						LOC24 = copysym_228607((*tparam).sym, NIM_FALSE);
						LOC25 = 0;
						LOC25 = linkto_226884(LOC24, foundtyp);
						result = newsymnode_227338(LOC25, info);
						goto BeforeRet;
					}
					LA19: ;
				}
				LA17: ;
				res_497342 += ((NI) 1);
			} LA14: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype225847*, createsettype_496878)(Tcontext280023* c, Ttype225847* basetype) {
	Ttype225847* result;
	result = 0;
	result = newtypes_280221(((NU8) 19), c);
	rawaddson_229498(result, basetype);
	return result;
}

N_NIMCALL(Tsym225841*, lookupinrecordandbuildcheck_497004)(Tcontext280023* c, Tnode225809* n, Tnode225809* r, Tident198021* field, Tnode225809** check) {
	Tsym225841* result;
{	result = 0;
	result = NIM_NIL;
	switch ((*r).kind) {
	case ((NU8) 138):
	{
		{
			NI i_497025;
			NI HEX3Atmp_497163;
			NI LOC3;
			NI res_497166;
			i_497025 = 0;
			HEX3Atmp_497163 = 0;
			LOC3 = 0;
			LOC3 = sonslen_228387(r);
			HEX3Atmp_497163 = (NI)(LOC3 - ((NI) 1));
			res_497166 = ((NI) 0);
			{
				while (1) {
					if (!(res_497166 <= HEX3Atmp_497163)) goto LA5;
					i_497025 = res_497166;
					result = lookupinrecordandbuildcheck_497004(c, n, (*r).kindU.S6.sons->data[i_497025], field, check);
					{
						if (!!((result == NIM_NIL))) goto LA8;
						goto BeforeRet;
					}
					LA8: ;
					res_497166 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 139):
	{
		Ttype225847* settype;
		Tnode225809* s;
		checkminsonslen_281270(r, ((NI) 2));
		{
			if (!!(((*(*r).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA13;
			illformedast_281240(r);
		}
		LA13: ;
		result = lookupinrecordandbuildcheck_497004(c, n, (*r).kindU.S6.sons->data[((NI) 0)], field, check);
		{
			if (!!((result == NIM_NIL))) goto LA17;
			goto BeforeRet;
		}
		LA17: ;
		settype = createsettype_496878(c, (*(*r).kindU.S6.sons->data[((NI) 0)]).typ);
		s = newnodeit_227807(((NU8) 39), (*r).info, settype);
		{
			NI i_497077;
			NI HEX3Atmp_497187;
			NI LOC20;
			NI res_497190;
			i_497077 = 0;
			HEX3Atmp_497187 = 0;
			LOC20 = 0;
			LOC20 = sonslen_228387(r);
			HEX3Atmp_497187 = (NI)(LOC20 - ((NI) 1));
			res_497190 = ((NI) 1);
			{
				while (1) {
					Tnode225809* it;
					if (!(res_497190 <= HEX3Atmp_497187)) goto LA22;
					i_497077 = res_497190;
					it = (*r).kindU.S6.sons->data[i_497077];
					switch ((*it).kind) {
					case ((NU8) 85):
					{
						Tnode225809* LOC24;
						LOC24 = 0;
						LOC24 = lastson_228406(it);
						result = lookupinrecordandbuildcheck_497004(c, n, LOC24, field, check);
						{
							if (!(result == NIM_NIL)) goto LA27;
							{
								NI j_497102;
								NI HEX3Atmp_497172;
								NI LOC30;
								NI res_497175;
								j_497102 = 0;
								HEX3Atmp_497172 = 0;
								LOC30 = 0;
								LOC30 = sonslen_228387(it);
								HEX3Atmp_497172 = (NI)(LOC30 - ((NI) 2));
								res_497175 = ((NI) 0);
								{
									while (1) {
										Tnode225809* LOC33;
										if (!(res_497175 <= HEX3Atmp_497172)) goto LA32;
										j_497102 = res_497175;
										LOC33 = 0;
										LOC33 = copytree_230028((*it).kindU.S6.sons->data[j_497102]);
										addson_227819(s, LOC33);
										res_497175 += ((NI) 1);
									} LA32: ;
								}
							}
						}
						goto LA25;
						LA27: ;
						{
							Tnode225809* inexpr;
							Ttype225847* LOC44;
							Tnode225809* LOC45;
							Tnode225809* LOC46;
							{
								if (!((*check) == NIM_NIL)) goto LA37;
								unsureAsgnRef((void**) (&(*check)), newnodei_227351(((NU8) 46), (*n).info));
								addson_227819((*check), emptynode_226807);
							}
							LA37: ;
							s = newnodeit_227807(((NU8) 39), (*n).info, settype);
							{
								NI j_497128;
								NI HEX3Atmp_497180;
								NI LOC40;
								NI res_497183;
								j_497128 = 0;
								HEX3Atmp_497180 = 0;
								LOC40 = 0;
								LOC40 = sonslen_228387(it);
								HEX3Atmp_497180 = (NI)(LOC40 - ((NI) 2));
								res_497183 = ((NI) 0);
								{
									while (1) {
										Tnode225809* LOC43;
										if (!(res_497183 <= HEX3Atmp_497180)) goto LA42;
										j_497128 = res_497183;
										LOC43 = 0;
										LOC43 = copytree_230028((*it).kindU.S6.sons->data[j_497128]);
										addson_227819(s, LOC43);
										res_497183 += ((NI) 1);
									} LA42: ;
								}
							}
							LOC44 = 0;
							LOC44 = getsystype_274190(((NU8) 1));
							inexpr = newnodeit_227807(((NU8) 27), (*n).info, LOC44);
							LOC45 = 0;
							LOC45 = newsymnode_227338(opcontains_231060, (*n).info);
							addson_227819(inexpr, LOC45);
							addson_227819(inexpr, s);
							LOC46 = 0;
							LOC46 = copytree_230028((*r).kindU.S6.sons->data[((NI) 0)]);
							addson_227819(inexpr, LOC46);
							addson_227819((*check), inexpr);
							goto BeforeRet;
						}
						LA25: ;
					}
					break;
					case ((NU8) 88):
					{
						Tnode225809* LOC48;
						LOC48 = 0;
						LOC48 = lastson_228406(it);
						result = lookupinrecordandbuildcheck_497004(c, n, LOC48, field, check);
						{
							Tnode225809* inexpr;
							Ttype225847* LOC57;
							Tnode225809* LOC58;
							Tnode225809* LOC59;
							Tnode225809* notexpr;
							Ttype225847* LOC60;
							Tnode225809* LOC61;
							if (!!((result == NIM_NIL))) goto LA51;
							{
								if (!((*check) == NIM_NIL)) goto LA55;
								unsureAsgnRef((void**) (&(*check)), newnodei_227351(((NU8) 46), (*n).info));
								addson_227819((*check), emptynode_226807);
							}
							LA55: ;
							LOC57 = 0;
							LOC57 = getsystype_274190(((NU8) 1));
							inexpr = newnodeit_227807(((NU8) 27), (*n).info, LOC57);
							LOC58 = 0;
							LOC58 = newsymnode_227338(opcontains_231060, (*n).info);
							addson_227819(inexpr, LOC58);
							addson_227819(inexpr, s);
							LOC59 = 0;
							LOC59 = copytree_230028((*r).kindU.S6.sons->data[((NI) 0)]);
							addson_227819(inexpr, LOC59);
							LOC60 = 0;
							LOC60 = getsystype_274190(((NU8) 1));
							notexpr = newnodeit_227807(((NU8) 27), (*n).info, LOC60);
							LOC61 = 0;
							LOC61 = newsymnode_227338(opnot_231059, (*n).info);
							addson_227819(notexpr, LOC61);
							addson_227819(notexpr, inexpr);
							addson_227819((*check), notexpr);
							goto BeforeRet;
						}
						LA51: ;
					}
					break;
					default:
					{
						illformedast_281240(it);
					}
					break;
					}
					res_497190 += ((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_281240(n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, fieldvisible_395471)(Tcontext280023* c, Tsym225841* f) {
	NIM_BOOL result;
	NI fmoduleid;
	Tsym225841* LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getmodule_233243(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;
	{
		Tsym225841* module_395611;
		Tsymseq225811* HEX3Atmp_395614;
		NI i_395617;
		NI L_395619;
		module_395611 = 0;
		HEX3Atmp_395614 = 0;
		HEX3Atmp_395614 = (*c).friendmodules;
		i_395617 = ((NI) 0);
		L_395619 = (HEX3Atmp_395614 ? HEX3Atmp_395614->Sup.len : 0);
		{
			while (1) {
				if (!(i_395617 < L_395619)) goto LA6;
				module_395611 = HEX3Atmp_395614->data[i_395617];
				{
					if (!(fmoduleid == (*module_395611).Sup.id)) goto LA9;
					result = NIM_TRUE;
					goto LA4;
				}
				LA9: ;
				i_395617 += ((NI) 1);
			} LA6: ;
		}
	} LA4: ;
	return result;
}

N_NIMCALL(Tnode225809*, makederef_497233)(Tnode225809* n) {
	Tnode225809* result;
	Ttype225847* t;
	result = 0;
	t = skiptypes_229167((*n).typ, 2048);
	result = n;
	{
		if (!((*t).kind == ((NU8) 23))) goto LA3;
		result = newnodeit_227807(((NU8) 65), (*n).info, (*t).sons->data[((NI) 0)]);
		addson_227819(result, n);
		t = skiptypes_229167((*t).sons->data[((NI) 0)], 2048);
	}
	LA3: ;
	{
		while (1) {
			Tnode225809* a;
			Ttype225847* basetyp;
			if (!((*t).kind == ((NU8) 21) || (*t).kind == ((NU8) 22))) goto LA6;
			a = result;
			basetyp = lastson_228426(t);
			result = newnodeit_227807(((NU8) 65), (*n).info, basetyp);
			addson_227819(result, a);
			t = skiptypes_229167(basetyp, 2048);
		} LA6: ;
	}
	return result;
}

N_NIMCALL(Tnode225809*, builtinfieldaccess_497358)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Tsym225841* s;
	Tident198021* i;
	Ttype225847* ty;
	Tsym225841* f;
	Tnode225809* check;
{	result = 0;
	checksonslen_281260(n, ((NI) 2));
	s = qualifiedlookup_286864(c, n, 3);
	{
		if (!!((s == NIM_NIL))) goto LA3;
		{
			if (!((520256 &(1<<(((*s).kind)&31)))!=0)) goto LA7;
			result = symchoice_471790(c, n, s, ((NU8) 0));
			{
				if (!((*result).kind == ((NU8) 3))) goto LA11;
				result = semsym_492258(c, n, s, flags);
			}
			LA11: ;
		}
		goto LA5;
		LA7: ;
		{
			markused_388253((*(*n).kindU.S6.sons->data[((NI) 1)]).info, s);
			result = semsym_492258(c, n, s, flags);
		}
		LA5: ;
		goto BeforeRet;
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags | 32)));
	i = considerquotedident_286010((*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;
		Ttype225847* LOC20;
		LOC16 = 0;
		LOC16 = istypeexpr_496861((*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_255039(ty);
		LOC18 = !(((*LOC20).kind == ((NU8) 0)));
		LA19: ;
		LOC16 = LOC18;
		LA17: ;
		if (!LOC16) goto LA21;
		{
			if (!((*ty).kind == ((NU8) 8))) goto LA25;
			ty = base_255039(ty);
		}
		LA25: ;
		ty = skiptypes_229167(ty, 14680064);
		switch ((*ty).kind) {
		case ((NU8) 14):
		{
			{
				while (1) {
					if (!!((ty == NIM_NIL))) goto LA29;
					f = getsymfromlist_233228((*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_227325(f);
				(*result).info = (*n).info;
				asgnRefNoCycle((void**) (&(*result).typ), ty);
				markused_388253((*n).info, f);
				goto BeforeRet;
			}
			LA36: ;
		}
		break;
		case ((NU8) 11):
		case ((NU8) 54):
		{
			result = readtypeparameter_497277(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;
				{
					Tnode225809* field_497622;
					Tnode225809* HEX3Atmp_498032;
					field_497622 = 0;
					HEX3Atmp_498032 = 0;
					HEX3Atmp_498032 = (*ty).n;
					{
						NI i_498036;
						NI HEX3Atmp_498038;
						NI LOC48;
						NI res_498040;
						i_498036 = 0;
						HEX3Atmp_498038 = 0;
						LOC48 = 0;
						LOC48 = len_226098(HEX3Atmp_498032);
						HEX3Atmp_498038 = (LOC48 - 1);
						res_498040 = ((NI) 0);
						{
							while (1) {
								if (!(res_498040 <= HEX3Atmp_498038)) goto LA50;
								i_498036 = res_498040;
								field_497622 = (*HEX3Atmp_498032).kindU.S6.sons->data[i_498036];
								{
									Ttypeseq225843* LOC55;
									TY280864 LOC56;
									if (!((*(*field_497622).kindU.S4.sym).name == i)) goto LA53;
									LOC55 = 0;
									LOC55 = (Ttypeseq225843*) newSeq((&NTI225843), 2);
									memset((void*)LOC56, 0, sizeof(LOC56));
									LOC56[0] = ty;
									LOC56[1] = (*(*field_497622).kindU.S4.sym).typ;
									asgnRefNoCycle((void**) (&LOC55->data[0]), LOC56[0]);
									asgnRefNoCycle((void**) (&LOC55->data[1]), LOC56[1]);
									asgnRefNoCycle((void**) (&(*n).typ), newtypewithsons_280807(c, ((NU8) 61), LOC55));
									asgnRefNoCycle((void**) (&(*(*n).typ).n), copytree_230028(n));
									result = n;
									goto BeforeRet;
								}
								LA53: ;
								res_498040 += ((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_229167(ty, 14682112);
	{
		while (1) {
			if (!(((*ty).flags &(1<<((((NU8) 27))&31)))!=0)) goto LA59;
			ty = skiptypes_229167(ty, 8192);
		} LA59: ;
	}
	check = NIM_NIL;
	{
		if (!((*ty).kind == ((NU8) 17))) goto LA62;
		{
			while (1) {
				check = NIM_NIL;
				f = lookupinrecordandbuildcheck_497004(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_229167((*ty).sons->data[((NI) 0)], 2048);
			}
		} LA64: ;
		{
			if (!!((f == NIM_NIL))) goto LA76;
			{
				NIM_BOOL LOC80;
				LOC80 = 0;
				LOC80 = fieldvisible_395471(c, f);
				if (!LOC80) goto LA81;
				markused_388253((*(*n).kindU.S6.sons->data[((NI) 1)]).info, f);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_497233((*n).kindU.S6.sons->data[((NI) 0)]));
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), newsymnode_227325(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_233228((*ty).n, i, ((NI) 0));
		{
			if (!!((f == NIM_NIL))) goto LA95;
			markused_388253((*(*n).kindU.S6.sons->data[((NI) 1)]).info, f);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_497233((*n).kindU.S6.sons->data[((NI) 0)]));
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), newsymnode_227325(f));
			asgnRefNoCycle((void**) (&(*n).typ), (*f).typ);
			result = n;
		}
		LA95: ;
	}
	goto LA60;
	LA91: ;
	LA60: ;
	{
		Ttype225847* t;
		if (!(result == NIM_NIL)) goto LA99;
		t = skiptypes_229167((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, 14680064);
		{
			if (!((*t).kind == ((NU8) 11) || (*t).kind == ((NU8) 54))) goto LA103;
			result = readtypeparameter_497277(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_461474)(Tcontext280023* c, Tnodeseq225803** usedsyms) {
	{
		Tscope225835* scope_461480;
		Tscope225835* HEX3Atmp_461559;
		Tscope225835* current_461562;
		scope_461480 = 0;
		HEX3Atmp_461559 = 0;
		HEX3Atmp_461559 = (*c).currentscope;
		current_461562 = HEX3Atmp_461559;
		{
			while (1) {
				if (!!((current_461562 == NIM_NIL))) goto LA3;
				scope_461480 = current_461562;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = HEX3DHEX3D_300972((*scope_461480).usingsyms, NIM_NIL);
					if (!!(LOC6)) goto LA7;
					{
						Tnode225809* s_461502;
						Tnodeseq225803* HEX3Atmp_461553;
						NI i_461556;
						NI L_461558;
						s_461502 = 0;
						HEX3Atmp_461553 = 0;
						HEX3Atmp_461553 = (*scope_461480).usingsyms;
						i_461556 = ((NI) 0);
						L_461558 = (HEX3Atmp_461553 ? HEX3Atmp_461553->Sup.len : 0);
						{
							while (1) {
								if (!(i_461556 < L_461558)) goto LA11;
								s_461502 = HEX3Atmp_461553->data[i_461556];
								safeadd_461504(usedsyms, s_461502);
								i_461556 += ((NI) 1);
							} LA11: ;
						}
					}
				}
				LA7: ;
				current_461562 = (*current_461562).parent;
			} LA3: ;
		}
	}
}
N_NIMCALL(void, TMP3247)(void* p, NI op) {
	TY460962* a;
	NI LOC1;
	a = (TY460962*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].Field0, op);
	}
}

N_NIMCALL(Tsym225841*, lookupmacro_488930)(Tcontext280023* c, Tnode225809* n) {
	Tsym225841* 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: ;
	{
		Tident198021* LOC10;
		LOC10 = 0;
		LOC10 = considerquotedident_286010(n);
		result = searchinscopes_286323(c, LOC10, 393216);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, copyexcept_488883)(Tnode225809* n, NI i) {
	Tnode225809* result;
	result = 0;
	result = copynode_229660(n);
	{
		NI j_488907;
		NI HEX3Atmp_488911;
		NI LOC2;
		NI res_488914;
		j_488907 = 0;
		HEX3Atmp_488911 = 0;
		LOC2 = 0;
		LOC2 = len_226098(n);
		HEX3Atmp_488911 = (LOC2 - 1);
		res_488914 = ((NI) 0);
		{
			while (1) {
				if (!(res_488914 <= HEX3Atmp_488911)) goto LA4;
				j_488907 = res_488914;
				{
					if (!!((j_488907 == i))) goto LA7;
					add_226165(result, (*n).kindU.S6.sons->data[j_488907]);
				}
				LA7: ;
				res_488914 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode225809*, semprocannotation_488960)(Tcontext280023* c, Tnode225809* prc, Tspecialwords206012 validpragmas) {
	Tnode225809* result;
	Tnode225809* 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_489010;
		NI HEX3Atmp_489105;
		NI LOC8;
		NI res_489108;
		i_489010 = 0;
		HEX3Atmp_489105 = 0;
		LOC8 = 0;
		LOC8 = len_226098(n);
		HEX3Atmp_489105 = (LOC8 - 1);
		res_489108 = ((NI) 0);
		{
			while (1) {
				if (!(res_489108 <= HEX3Atmp_489105)) goto LA10;
				i_489010 = res_489108;
				{
					Tnode225809* it;
					Tnode225809* key;
					Tsym225841* m;
					Tnode225809* x;
					Tnode225809* LOC33;
					it = (*n).kindU.S6.sons->data[i_489010];
					{
						if (!((*it).kind == ((NU8) 34))) goto LA14;
						key = (*it).kindU.S6.sons->data[((NI) 0)];
					}
					goto LA12;
					LA14: ;
					{
						key = it;
					}
					LA12: ;
					m = lookupmacro_488930(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;
							{
								Tident198021* LOC29;
								LOC29 = 0;
								LOC29 = considerquotedident_286010((*prc).kindU.S6.sons->data[((NI) 0)]);
								if (!eqStrings((*LOC29).s, ((NimStringDesc*) &TMP3248))) goto LA30;
								asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 0)]), newidentnode_227313(iddelegator_198562, (*prc).info));
								asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 4)]), copyexcept_488883(n, i_489010));
							}
							goto LA27;
							LA30: ;
							{
								localerror_196128((*prc).info, ((NU16) 204), ((NimStringDesc*) &TMP3117));
							}
							LA27: ;
						}
						LA25: ;
						goto LA11;
					}
					LA19: ;
					x = newnodei_227351(((NU8) 27), (*n).info);
					LOC33 = 0;
					LOC33 = newsymnode_227325(m);
					add_226165(x, LOC33);
					asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 4)]), copyexcept_488883(n, i_489010));
					{
						if (!((*it).kind == ((NU8) 34))) goto LA36;
						add_226165(x, (*it).kindU.S6.sons->data[((NI) 1)]);
					}
					LA36: ;
					add_226165(x, prc);
					result = semstmt_457277(c, x);
					{
						NIM_BOOL LOC40;
						NIM_BOOL LOC41;
						Tnode225809* LOC43;
						Tnode225809* LOC45;
						Tnode225809* LOC48;
						Tnode225809* 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_226244(result, ((NI) 0));
						LOC41 = ((*LOC43).kind == ((NU8) 3));
						LA42: ;
						LOC40 = LOC41;
						if (!(LOC40)) goto LA44;
						LOC45 = 0;
						LOC45 = HEX5BHEX5D_226244(result, ((NI) 4));
						LOC40 = !(((*LOC45).kind == ((NU8) 1)));
						LA44: ;
						if (!LOC40) goto LA46;
						LOC48 = 0;
						LOC48 = HEX5BHEX5D_226244(result, ((NI) 0));
						LOC49 = 0;
						LOC49 = HEX5BHEX5D_226244(result, ((NI) 4));
						pragma_297082(c, (*LOC48).kindU.S4.sym, LOC49, validpragmas);
					}
					LA46: ;
					goto BeforeRet;
				} LA11: ;
				res_489108 += ((NI) 1);
			} LA10: ;
		}
	}
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(Tsym225841*, newsymg_457916)(NU8 kind, Tnode225809* n, Tcontext280023* c) {
	Tsym225841* 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_457922((*result).kind);
			LOC11 = 0;
			LOC11 = HEX24_457922(kind);
			LOC9 = rawNewString(LOC10->Sup.len + LOC11->Sup.len + 36);
appendString(LOC9, ((NimStringDesc*) &TMP3249));
appendString(LOC9, LOC10);
appendString(LOC9, ((NimStringDesc*) &TMP3250));
appendString(LOC9, LOC11);
appendString(LOC9, ((NimStringDesc*) &TMP3251));
			localerror_196139((*n).info, LOC9);
		}
		LA7: ;
		asgnRefNoCycle((void**) (&(*result).owner), getcurrowner_280258());
	}
	goto LA1;
	LA3: ;
	{
		Tident198021* LOC13;
		Tsym225841* LOC14;
		LOC13 = 0;
		LOC13 = considerquotedident_286010(n);
		LOC14 = 0;
		LOC14 = getcurrowner_280258();
		result = newsym_226656(kind, LOC13, LOC14, (*n).info);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym225841*, semidentvis_457962)(Tcontext280023* c, NU8 kind, Tnode225809* n, NU32 allowed) {
	Tsym225841* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 31))) goto LA3;
		{
			NIM_BOOL LOC7;
			NI LOC8;
			Tident198021* v;
			LOC7 = 0;
			LOC8 = 0;
			LOC8 = sonslen_228387(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_457916(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_196128((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 178), (*v).s);
			}
			LA12: ;
		}
		goto LA5;
		LA10: ;
		{
			illformedast_281240(n);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		result = newsymg_457916(kind, n, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym225841*, semidentwithpragma_457971)(Tcontext280023* c, NU8 kind, Tnode225809* n, NU32 allowed) {
	Tsym225841* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 43))) goto LA3;
		checksonslen_281260(n, ((NI) 2));
		result = semidentvis_457962(c, kind, (*n).kindU.S6.sons->data[((NI) 0)], allowed);
		switch (kind) {
		case ((NU8) 7):
		{
		}
		break;
		case ((NU8) 19):
		{
			pragma_297082(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3252);
		}
		break;
		case ((NU8) 8):
		{
			pragma_297082(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3253);
		}
		break;
		case ((NU8) 9):
		{
			pragma_297082(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3253);
		}
		break;
		case ((NU8) 10):
		{
			pragma_297082(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3254);
		}
		break;
		default:
		{
		}
		break;
		}
	}
	goto LA1;
	LA3: ;
	{
		result = semidentvis_457962(c, kind, n, allowed);
	}
	LA1: ;
	{
		if (!(gcmd_167134 == ((NU8) 7))) goto LA14;
	}
	LA14: ;
	return result;
}

static N_INLINE(void, suggestsym_398733)(Tlineinfo190352 info, Tsym225841* s) {
	{
		if (!(gidecmd_167119 == ((NU8) 4))) goto LA3;
		findusages_398665(info, s);
	}
	goto LA1;
	LA3: ;
	{
		if (!(gidecmd_167119 == ((NU8) 3))) goto LA6;
		finddefinition_398696(info, s);
	}
	goto LA1;
	LA6: ;
	{
		NIM_BOOL LOC9;
		LOC9 = 0;
		LOC9 = (gidecmd_167119 == ((NU8) 5));
		if (!(LOC9)) goto LA10;
		LOC9 = !((s == NIM_NIL));
		LA10: ;
		if (!LOC9) goto LA11;
		{
			NIM_BOOL LOC15;
			NimStringDesc* LOC18;
			Suggest395010 LOC19;
			LOC15 = 0;
			LOC15 = istracked_398569(info, ((*(*s).name).s ? (*(*s).name).s->Sup.len : 0));
			if (!LOC15) goto LA16;
			LOC18 = 0;
			LOC18 = HEX24_168755(((NU8) 3));
			memset((void*)(&LOC19), 0, sizeof(LOC19));
			symtosuggest_395404(s, NIM_FALSE, LOC18, (&LOC19));
			suggestresult_395414((&LOC19));
		}
		LA16: ;
		findusages_398665(info, s);
	}
	goto LA1;
	LA11: ;
	LA1: ;
}

N_NIMCALL(Tsym225841*, semidentdef_484542)(Tcontext280023* c, Tnode225809* n, NU8 kind) {
	Tsym225841* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_281280(c);
		if (!LOC3) goto LA4;
		result = semidentwithpragma_457971(c, kind, n, 2);
		(*result).flags |= ((NU32)1)<<((((NU8) 3))%(sizeof(NU32)*8));
	}
	goto LA1;
	LA4: ;
	{
		result = semidentwithpragma_457971(c, kind, n, 0);
	}
	LA1: ;
	suggestsym_398733((*n).info, result);
	return result;
}

N_NIMCALL(Ttype225847*, semgenericconstraints_471404)(Tcontext280023* c, Ttype225847* x) {
	Ttype225847* result;
	Ttypeseq225843* LOC1;
	TY393275 LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = (Ttypeseq225843*) newSeq((&NTI225843), 1);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = x;
	asgnRefNoCycle((void**) (&LOC1->data[0]), LOC2[0]);
	result = newtypewithsons_280807(c, ((NU8) 12), LOC1);
	return result;
}

N_NIMCALL(Tnode225809*, semgenericparamlist_471425)(Tcontext280023* c, Tnode225809* n, Ttype225847* father) {
	Tnode225809* result;
{	result = 0;
	result = copynode_229660(n);
	{
		if (!!(((*n).kind == ((NU8) 75)))) goto LA3;
		illformedast_281240(n);
		goto BeforeRet;
	}
	LA3: ;
	{
		NI i_471452;
		NI HEX3Atmp_471692;
		NI LOC6;
		NI res_471695;
		i_471452 = 0;
		HEX3Atmp_471692 = 0;
		LOC6 = 0;
		LOC6 = sonslen_228387(n);
		HEX3Atmp_471692 = (NI)(LOC6 - ((NI) 1));
		res_471695 = ((NI) 0);
		{
			while (1) {
				Tnode225809* a;
				NI L;
				Tnode225809* def;
				NI LOC13;
				Tnode225809* constraint;
				NI LOC20;
				Ttype225847* typ;
				if (!(res_471695 <= HEX3Atmp_471692)) goto LA8;
				i_471452 = res_471695;
				a = (*n).kindU.S6.sons->data[i_471452];
				{
					if (!!(((*a).kind == ((NU8) 35)))) goto LA11;
					illformedast_281240(n);
				}
				LA11: ;
				L = len_226098(a);
				LOC13 = 0;
				{
					if (!NIM_FALSE) goto LA16;
					LOC13 = ((NI) -1);
				}
				goto LA14;
				LA16: ;
				{
					NI LOC19;
					LOC19 = 0;
					LOC19 = len_226098(a);
					LOC13 = (NI)(LOC19 + ((NI) -1));
				}
				LA14: ;
				def = HEX5BHEX5D_226244(a, LOC13);
				LOC20 = 0;
				{
					if (!NIM_FALSE) goto LA23;
					LOC20 = ((NI) -2);
				}
				goto LA21;
				LA23: ;
				{
					NI LOC26;
					LOC26 = 0;
					LOC26 = len_226098(a);
					LOC20 = (NI)(LOC26 + ((NI) -2));
				}
				LA21: ;
				constraint = HEX5BHEX5D_226244(a, LOC20);
				typ = 0;
				{
					if (!!(((*constraint).kind == ((NU8) 1)))) goto LA29;
					typ = semtypenode_457269(c, constraint, NIM_NIL);
					{
						NIM_BOOL LOC33;
						NI LOC35;
						LOC33 = 0;
						LOC33 = !(((*typ).kind == ((NU8) 59)));
						if (LOC33) goto LA34;
						LOC35 = 0;
						LOC35 = len_228369(typ);
						LOC33 = (LOC35 == ((NI) 0));
						LA34: ;
						if (!LOC33) goto LA36;
						{
							if (!((*typ).kind == ((NU8) 8))) goto LA40;
							{
								Ttypeseq225843* LOC46;
								TY393275 LOC47;
								if (!((*(*typ).sons->data[((NI) 0)]).kind == ((NU8) 0))) goto LA44;
								LOC46 = 0;
								LOC46 = (Ttypeseq225843*) newSeq((&NTI225843), 1);
								memset((void*)LOC47, 0, sizeof(LOC47));
								LOC47[0] = newtypes_280221(((NU8) 0), c);
								asgnRefNoCycle((void**) (&LOC46->data[0]), LOC47[0]);
								typ = newtypewithsons_280807(c, ((NU8) 8), LOC46);
							}
							LA44: ;
						}
						goto LA38;
						LA40: ;
						{
							typ = semgenericconstraints_471404(c, typ);
						}
						LA38: ;
					}
					LA36: ;
				}
				LA29: ;
				{
					if (!!(((*def).kind == ((NU8) 1)))) goto LA51;
					def = semconstexpr_458485(c, def);
					{
						if (!(typ == NIM_NIL)) goto LA55;
						{
							Ttypeseq225843* LOC61;
							TY393275 LOC62;
							if (!!(((*(*def).typ).kind == ((NU8) 8)))) goto LA59;
							LOC61 = 0;
							LOC61 = (Ttypeseq225843*) newSeq((&NTI225843), 1);
							memset((void*)LOC62, 0, sizeof(LOC62));
							LOC62[0] = (*def).typ;
							asgnRefNoCycle((void**) (&LOC61->data[0]), LOC62[0]);
							typ = newtypewithsons_280807(c, ((NU8) 59), LOC61);
						}
						LA59: ;
					}
					goto LA53;
					LA55: ;
					{
						asgnRefNoCycle((void**) (&(*def).typ), skiptypes_229167((*def).typ, 256));
						{
							NIM_BOOL LOC66;
							LOC66 = 0;
							LOC66 = containsgenerictype_264310((*def).typ);
							if (!!(LOC66)) goto LA67;
							def = fitnode_457245(c, typ, def);
						}
						LA67: ;
					}
					LA53: ;
				}
				LA51: ;
				{
					if (!(typ == NIM_NIL)) goto LA71;
					typ = newtypes_280221(((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_471620;
					NI HEX3Atmp_471685;
					NI res_471688;
					j_471620 = 0;
					HEX3Atmp_471685 = 0;
					HEX3Atmp_471685 = (NI)(L - ((NI) 3));
					res_471688 = ((NI) 0);
					{
						while (1) {
							Ttype225847* finaltype;
							Tsym225841* s;
							Tnode225809* LOC102;
							if (!(res_471688 <= HEX3Atmp_471685)) goto LA79;
							j_471620 = res_471688;
							{
								if (!(j_471620 == ((NI) 0))) goto LA82;
								finaltype = typ;
							}
							goto LA80;
							LA82: ;
							{
								finaltype = copytype_228542(typ, (*typ).owner, NIM_FALSE);
							}
							LA80: ;
							{
								NIM_BOOL LOC87;
								Tsym225841* 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_457916(((NU8) 4), (*a).kindU.S6.sons->data[j_471620], c);
								s = linkto_226884(LOC91, finaltype);
							}
							goto LA85;
							LA89: ;
							{
								Tsym225841* LOC93;
								LOC93 = 0;
								LOC93 = newsymg_457916(((NU8) 7), (*a).kindU.S6.sons->data[j_471620], c);
								s = linkto_226884(LOC93, finaltype);
							}
							LA85: ;
							{
								if (!!(((*def).kind == ((NU8) 1)))) goto LA96;
								asgnRefNoCycle((void**) (&(*s).ast), def);
							}
							LA96: ;
							{
								if (!!((father == NIM_NIL))) goto LA100;
								addsonskipintlit_274729(father, (*s).typ);
							}
							LA100: ;
							(*s).position = len_226098(result);
							LOC102 = 0;
							LOC102 = newsymnode_227325(s);
							addson_227819(result, LOC102);
							{
								if (!!((((*s).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA105;
								adddecl_286607(c, s);
							}
							LA105: ;
							res_471688 += ((NI) 1);
						} LA79: ;
					}
				}
				res_471695 += ((NI) 1);
			} LA8: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype225847*, newproctype_469542)(Tcontext280023* c, Tlineinfo190352 info, Ttype225847* prev) {
	Ttype225847* result;
	Toptionentry280005* LOC1;
	Tnode225809* LOC2;
	result = 0;
	result = neworprevtype_464895(((NU8) 25), prev, c);
	LOC1 = 0;
	LOC1 = lastoptionentry_280190(c);
	(*result).callconv = (*LOC1).defaultcc;
	asgnRefNoCycle((void**) (&(*result).n), newnodei_227351(((NU8) 76), info));
	rawaddson_229498(result, NIM_NIL);
	LOC2 = 0;
	LOC2 = newnodei_227351(((NU8) 152), info);
	addson_227819((*result).n, LOC2);
	return result;
}

N_NIMCALL(Ttype225847*, semparamtype_469522)(Tcontext280023* c, Tnode225809* n, Tnode225809** constraint) {
	Ttype225847* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 40))) goto LA3;
		result = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		unsureAsgnRef((void**) (&(*constraint)), semnodekindconstraints_305679(n));
	}
	goto LA1;
	LA3: ;
	{
		result = semtypenode_457269(c, n, NIM_NIL);
	}
	LA1: ;
	return result;
}
N_NIMCALL(void, TMP3275)(void* p, NI op) {
	TY469453* a;
	a = (TY469453*)p;
	nimGCvisit((void*)(*a).genericparams468483, op);
	nimGCvisit((void*)(*a).paramname468485, op);
	nimGCvisit((void*)(*a).c468481, op);
}

N_CLOSURE(Ttype225847*, addimplicitgenericimpl_468501)(Ttype225847* typeclass, Tident198021* typid, void* ClEnv) {
	Ttype225847* result;
	TY469453* HEX3Aenvp_469468;
	Tident198021* finaltypid;
	Tsym225841* owner;
	Tsym225841* s;
	Tsym225841* LOC28;
	Tnode225809* LOC29;
{	result = 0;
	HEX3Aenvp_469468 = (TY469453*) ClEnv;
	{
		if (!((*HEX3Aenvp_469468).genericparams468483 == 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_469468).paramname468485->Sup.len + 5);
appendString(LOC10, (*HEX3Aenvp_469468).paramname468485);
appendString(LOC10, ((NimStringDesc*) &TMP3276));
		finaltypid = getident_198463(LOC10);
	}
	LA5: ;
	{
		NI i_468544;
		NI HEX3Atmp_468601;
		NI LOC12;
		NI res_468604;
		i_468544 = 0;
		HEX3Atmp_468601 = 0;
		LOC12 = 0;
		LOC12 = len_226098((*HEX3Aenvp_469468).genericparams468483);
		HEX3Atmp_468601 = (NI)(LOC12 - ((NI) 1));
		res_468604 = ((NI) 0);
		{
			while (1) {
				if (!(res_468604 <= HEX3Atmp_468601)) goto LA14;
				i_468544 = res_468604;
				{
					if (!((*(*(*(*(*HEX3Aenvp_469468).genericparams468483).kindU.S6.sons->data[i_468544]).kindU.S4.sym).name).Sup.id == (*finaltypid).Sup.id)) goto LA17;
					result = (*(*(*HEX3Aenvp_469468).genericparams468483).kindU.S6.sons->data[i_468544]).typ;
					goto BeforeRet;
				}
				LA17: ;
				res_468604 += ((NI) 1);
			} LA14: ;
		}
	}
	{
		if (!!(((*typeclass).sym == NIM_NIL))) goto LA21;
		owner = (*typeclass).sym;
	}
	goto LA19;
	LA21: ;
	{
		owner = getcurrowner_280258();
	}
	LA19: ;
	s = newsym_226656(((NU8) 7), finaltypid, owner, (*HEX3Aenvp_469468).info468486);
	{
		if (!(typid == NIM_NIL)) goto LA26;
		(*s).flags |= ((NU32)1)<<((((NU8) 29))%(sizeof(NU32)*8));
	}
	LA26: ;
	LOC28 = 0;
	LOC28 = linkto_226884(s, typeclass);
	(*typeclass).flags |= ((NU32)1)<<((((NU8) 24))%(sizeof(NU32)*8));
	(*s).position = len_226098((*HEX3Aenvp_469468).genericparams468483);
	LOC29 = 0;
	LOC29 = newsymnode_227325(s);
	addson_227819((*HEX3Aenvp_469468).genericparams468483, LOC29);
	result = typeclass;
	adddecl_286607((*HEX3Aenvp_469468).c468481, s);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype225847*, liftparamtype_468479)(Tcontext280023* c, NU8 prockind, Tnode225809* genericparams, Ttype225847* paramtype, NimStringDesc* paramname, Tlineinfo190352 info, NIM_BOOL anon) {
	Ttype225847* result;
	TY469453* HEX3Aenv_469510;
	NimStringDesc* LOC1;
	Tident198021* paramtypid;
{	result = 0;
	HEX3Aenv_469510 = 0;
	HEX3Aenv_469510 = (TY469453*) newObj((&NTI469511), sizeof(TY469453));
	asgnRefNoCycle((void**) (&(*HEX3Aenv_469510).genericparams468483), genericparams);
	LOC1 = 0;
	LOC1 = (*HEX3Aenv_469510).paramname468485; (*HEX3Aenv_469510).paramname468485 = copyStringRC1(paramname);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	(*HEX3Aenv_469510).info468486 = info;
	asgnRef((void**) (&(*HEX3Aenv_469510).c468481), 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):
	{
		TY468502 LOC14;
		Ttype225847* LOC15;
		memset((void*)(&LOC14), 0, sizeof(LOC14));
		LOC14.ClPrc = addimplicitgenericimpl_468501; LOC14.ClEnv = HEX3Aenv_469510;
		LOC15 = 0;
		LOC15 = newtypes_280221(((NU8) 12), (*HEX3Aenv_469510).c468481);
		result = LOC14.ClEnv? LOC14.ClPrc(LOC15, NIM_NIL, LOC14.ClEnv):((TMP3277)(LOC14.ClPrc))(LOC15, NIM_NIL);
	}
	break;
	case ((NU8) 59):
	{
		Ttype225847* base;
		Ttype225847* lifted_468656;
		Ttype225847* LOC25;
		TY468502 LOC37;
		Ttypeseq225843* LOC38;
		TY393275 LOC39;
		Ttype225847* 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_255039(paramtype);
		lifted_468656 = liftparamtype_468479((*HEX3Aenv_469510).c468481, prockind, (*HEX3Aenv_469510).genericparams468483, LOC25, (*HEX3Aenv_469510).paramname468485, (*HEX3Aenv_469510).info468486, NIM_FALSE);
		{
			if (!!((lifted_468656 == NIM_NIL))) goto LA28;
			base = lifted_468656;
		}
		goto LA26;
		LA28: ;
		{
			base = base_255039(paramtype);
		}
		LA26: ;
		{
			NIM_BOOL LOC33;
			LOC33 = 0;
			LOC33 = ismetatype_226821(base);
			if (!(LOC33)) goto LA34;
			LOC33 = (prockind == ((NU8) 17));
			LA34: ;
			if (!LOC33) goto LA35;
			localerror_196128((*HEX3Aenv_469510).info468486, ((NU16) 206), (*HEX3Aenv_469510).paramname468485);
		}
		LA35: ;
		memset((void*)(&LOC37), 0, sizeof(LOC37));
		LOC37.ClPrc = addimplicitgenericimpl_468501; LOC37.ClEnv = HEX3Aenv_469510;
		LOC38 = 0;
		LOC38 = (Ttypeseq225843*) newSeq((&NTI225843), 1);
		memset((void*)LOC39, 0, sizeof(LOC39));
		LOC39[0] = base;
		asgnRefNoCycle((void**) (&LOC38->data[0]), LOC39[0]);
		LOC40 = 0;
		LOC40 = newtypewithsons_280807((*HEX3Aenv_469510).c468481, ((NU8) 59), LOC38);
		result = LOC37.ClEnv? LOC37.ClPrc(LOC40, paramtypid, LOC37.ClEnv):((TMP3278)(LOC37.ClPrc))(LOC40, paramtypid);
		(*result).flags = ((*result).flags | 4194816);
	}
	break;
	case ((NU8) 8):
	{
		{
			TY468502 LOC55;
			Ttypeseq225843* LOC56;
			TY393275 LOC57;
			Ttype225847* LOC58;
			if (!!((((*paramtype).flags &(1<<((((NU8) 9))&31)))!=0))) goto LA44;
			{
				NIM_BOOL LOC48;
				NIM_BOOL LOC49;
				Ttype225847* LOC50;
				LOC48 = 0;
				LOC49 = 0;
				LOC50 = 0;
				LOC50 = base_255039(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_468473).Sup.id);
				LA52: ;
				if (!LOC48) goto LA53;
				paramtypid = NIM_NIL;
			}
			LA53: ;
			memset((void*)(&LOC55), 0, sizeof(LOC55));
			LOC55.ClPrc = addimplicitgenericimpl_468501; LOC55.ClEnv = HEX3Aenv_469510;
			LOC56 = 0;
			LOC56 = (Ttypeseq225843*) newSeq((&NTI225843), 1);
			memset((void*)LOC57, 0, sizeof(LOC57));
			LOC57[0] = base_255039(paramtype);
			asgnRefNoCycle((void**) (&LOC56->data[0]), LOC57[0]);
			LOC58 = 0;
			LOC58 = newtypewithsons_280807((*HEX3Aenv_469510).c468481, ((NU8) 8), LOC56);
			result = LOC55.ClEnv? LOC55.ClPrc(LOC58, paramtypid, LOC55.ClEnv):((TMP3279)(LOC55.ClPrc))(LOC58, paramtypid);
		}
		LA44: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			NI LOC62;
			LOC62 = 0;
			LOC62 = sonslen_228351(paramtype);
			if (!(LOC62 == ((NI) 1))) goto LA63;
			result = liftparamtype_468479((*HEX3Aenv_469510).c468481, prockind, (*HEX3Aenv_469510).genericparams468483, (*paramtype).sons->data[((NI) 0)], (*HEX3Aenv_469510).paramname468485, (*HEX3Aenv_469510).info468486, 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;
			Ttype225847* LOC70;
			Ttype225847* typ;
			Ttypeseq225843* LOC73;
			TY393275 LOC74;
			TY468502 LOC75;
			LOC68 = 0;
			LOC68 = ((*paramtype).kind == ((NU8) 24));
			if (!(LOC68)) goto LA69;
			LOC70 = 0;
			LOC70 = lastson_228426(paramtype);
			LOC68 = ((*LOC70).kind == ((NU8) 0));
			LA69: ;
			if (!LOC68) goto LA71;
			LOC73 = 0;
			LOC73 = (Ttypeseq225843*) newSeq((&NTI225843), 1);
			memset((void*)LOC74, 0, sizeof(LOC74));
			LOC74[0] = newtypes_280221((*paramtype).kind, (*HEX3Aenv_469510).c468481);
			asgnRefNoCycle((void**) (&LOC73->data[0]), LOC74[0]);
			typ = newtypewithsons_280807((*HEX3Aenv_469510).c468481, ((NU8) 51), LOC73);
			memset((void*)(&LOC75), 0, sizeof(LOC75));
			LOC75.ClPrc = addimplicitgenericimpl_468501; LOC75.ClEnv = HEX3Aenv_469510;
			result = LOC75.ClEnv? LOC75.ClPrc(typ, paramtypid, LOC75.ClEnv):((TMP3280)(LOC75.ClPrc))(typ, paramtypid);
		}
		goto LA66;
		LA71: ;
		{
			{
				NI i_468800;
				NI HEX3Atmp_469422;
				NI LOC78;
				NI res_469425;
				i_468800 = 0;
				HEX3Atmp_469422 = 0;
				LOC78 = 0;
				LOC78 = len_228369(paramtype);
				HEX3Atmp_469422 = (LOC78 - 1);
				res_469425 = ((NI) 0);
				{
					while (1) {
						Ttype225847* lifted;
						if (!(res_469425 <= HEX3Atmp_469422)) goto LA80;
						i_468800 = res_469425;
						{
							NimStringDesc* LOC85;
							if (!((*paramtype).sons->data[i_468800] == paramtype)) goto LA83;
							LOC85 = 0;
							LOC85 = typetostring_255032(paramtype, ((NU8) 0));
							globalerror_196107((*HEX3Aenv_469510).info468486, ((NU16) 127), LOC85);
						}
						LA83: ;
						lifted = liftparamtype_468479((*HEX3Aenv_469510).c468481, prockind, (*HEX3Aenv_469510).genericparams468483, (*paramtype).sons->data[i_468800], (*HEX3Aenv_469510).paramname468485, (*HEX3Aenv_469510).info468486, NIM_FALSE);
						{
							if (!!((lifted == NIM_NIL))) goto LA88;
							asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_468800]), lifted);
							result = paramtype;
						}
						LA88: ;
						res_469425 += ((NI) 1);
					} LA80: ;
				}
			}
		}
		LA66: ;
	}
	break;
	case ((NU8) 10):
	{
		Ttypeseq225843* LOC109;
		TY280864 LOC110;
		TY468502 LOC111;
		result = newtypes_280221(((NU8) 9), (*HEX3Aenv_469510).c468481);
		rawaddson_229498(result, paramtype);
		{
			NI i_468835;
			NI HEX3Atmp_469430;
			NI LOC92;
			NI res_469433;
			i_468835 = 0;
			HEX3Atmp_469430 = 0;
			LOC92 = 0;
			LOC92 = sonslen_228351(paramtype);
			HEX3Atmp_469430 = (NI)(LOC92 - ((NI) 2));
			res_469433 = ((NI) 0);
			{
				while (1) {
					if (!(res_469433 <= HEX3Atmp_469430)) goto LA94;
					i_468835 = res_469433;
					{
						Tnode225809* x;
						Ttype225847* LOC99;
						if (!((*(*paramtype).sons->data[i_468835]).kind == ((NU8) 59))) goto LA97;
						x = copynode_229660(emptynode_226807);
						asgnRefNoCycle((void**) (&(*x).typ), (*paramtype).sons->data[i_468835]);
						LOC99 = 0;
						LOC99 = maketypefromexpr_280729((*HEX3Aenv_469510).c468481, x);
						rawaddson_229498(result, LOC99);
					}
					goto LA95;
					LA97: ;
					{
						Ttype225847* LOC101;
						LOC101 = 0;
						LOC101 = newtypes_280221(((NU8) 58), (*HEX3Aenv_469510).c468481);
						rawaddson_229498(result, LOC101);
					}
					LA95: ;
					res_469433 += ((NI) 1);
				} LA94: ;
			}
		}
		{
			Ttype225847* LOC104;
			Ttype225847* LOC107;
			TY468502 LOC108;
			LOC104 = 0;
			LOC104 = lastson_228426(paramtype);
			if (!((*LOC104).kind == ((NU8) 52))) goto LA105;
			(*result).kind = ((NU8) 53);
			LOC107 = 0;
			LOC107 = lastson_228426(paramtype);
			rawaddson_229498(result, LOC107);
			memset((void*)(&LOC108), 0, sizeof(LOC108));
			LOC108.ClPrc = addimplicitgenericimpl_468501; LOC108.ClEnv = HEX3Aenv_469510;
			result = LOC108.ClEnv? LOC108.ClPrc(result, paramtypid, LOC108.ClEnv):((TMP3281)(LOC108.ClPrc))(result, paramtypid);
			goto BeforeRet;
		}
		LA105: ;
		result = instgenericcontainer_460151((*HEX3Aenv_469510).c468481, (*(*paramtype).sym).info, result, NIM_TRUE);
		LOC109 = 0;
		LOC109 = (Ttypeseq225843*) newSeq((&NTI225843), 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_280807((*HEX3Aenv_469510).c468481, ((NU8) 54), LOC109);
		memset((void*)(&LOC111), 0, sizeof(LOC111));
		LOC111.ClPrc = addimplicitgenericimpl_468501; LOC111.ClEnv = HEX3Aenv_469510;
		result = LOC111.ClEnv? LOC111.ClPrc(result, paramtypid, LOC111.ClEnv):((TMP3282)(LOC111.ClPrc))(result, paramtypid);
	}
	break;
	case ((NU8) 49):
	{
		{
			TY468502 LOC131;
			if (!((*paramtype).callconv == ((NU8) 5))) goto LA115;
			{
				if (!!(((409600 &(1<<((prockind)&31)))!=0))) goto LA119;
				localerror_196128((*HEX3Aenv_469510).info468486, ((NU16) 208), ((NimStringDesc*) &TMP3117));
			}
			LA119: ;
			{
				NI LOC123;
				Ttype225847* lifted;
				Ttype225847* LOC126;
				LOC123 = 0;
				LOC123 = len_228369(paramtype);
				if (!(LOC123 == ((NI) 1))) goto LA124;
				LOC126 = 0;
				LOC126 = base_255039(paramtype);
				lifted = liftparamtype_468479((*HEX3Aenv_469510).c468481, prockind, (*HEX3Aenv_469510).genericparams468483, LOC126, (*HEX3Aenv_469510).paramname468485, (*HEX3Aenv_469510).info468486, 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_468501; LOC131.ClEnv = HEX3Aenv_469510;
			result = LOC131.ClEnv? LOC131.ClPrc(paramtype, paramtypid, LOC131.ClEnv):((TMP3283)(LOC131.ClPrc))(paramtype, paramtypid);
		}
		LA115: ;
	}
	break;
	case ((NU8) 11):
	{
		Ttype225847* liftbody;
		Ttype225847* LOC154;
		{
			Ttype225847* LOC135;
			Ttype225847* cp;
			Tsym225841* LOC138;
			TY468502 LOC139;
			LOC135 = 0;
			LOC135 = lastson_228426(paramtype);
			if (!((*LOC135).kind == ((NU8) 52))) goto LA136;
			LOC138 = 0;
			LOC138 = getcurrowner_280258();
			cp = copytype_228542(paramtype, LOC138, NIM_FALSE);
			(*cp).kind = ((NU8) 53);
			memset((void*)(&LOC139), 0, sizeof(LOC139));
			LOC139.ClPrc = addimplicitgenericimpl_468501; LOC139.ClEnv = HEX3Aenv_469510;
			result = LOC139.ClEnv? LOC139.ClPrc(cp, paramtypid, LOC139.ClEnv):((TMP3284)(LOC139.ClPrc))(cp, paramtypid);
			goto BeforeRet;
		}
		LA136: ;
		{
			NI i_468922;
			NI HEX3Atmp_469438;
			NI LOC141;
			NI res_469441;
			i_468922 = 0;
			HEX3Atmp_469438 = 0;
			LOC141 = 0;
			LOC141 = len_228369(paramtype);
			HEX3Atmp_469438 = (NI)(LOC141 - ((NI) 2));
			res_469441 = ((NI) 1);
			{
				while (1) {
					Ttype225847* lifted;
					if (!(res_469441 <= HEX3Atmp_469438)) goto LA143;
					i_468922 = res_469441;
					lifted = liftparamtype_468479((*HEX3Aenv_469510).c468481, prockind, (*HEX3Aenv_469510).genericparams468483, (*paramtype).sons->data[i_468922], (*HEX3Aenv_469510).paramname468485, (*HEX3Aenv_469510).info468486, NIM_FALSE);
					{
						if (!!((lifted == NIM_NIL))) goto LA146;
						asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_468922]), lifted);
						result = paramtype;
						{
							Ttype225847* LOC150;
							NimStringDesc* LOC153;
							LOC150 = 0;
							LOC150 = lastson_228426(result);
							if (!!((((*LOC150).flags &(1<<((((NU8) 19))&31)))!=0))) goto LA151;
							LOC153 = 0;
							LOC153 = HEX24_196279(TMP3285);
							internalerror_196191(LOC153);
						}
						LA151: ;
					}
					LA146: ;
					res_469441 += ((NI) 1);
				} LA143: ;
			}
		}
		LOC154 = 0;
		LOC154 = lastson_228426(paramtype);
		liftbody = liftparamtype_468479((*HEX3Aenv_469510).c468481, prockind, (*HEX3Aenv_469510).genericparams468483, LOC154, (*HEX3Aenv_469510).paramname468485, (*HEX3Aenv_469510).info468486, 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_196279(TMP3285);
				internalerror_196191(LOC163);
			}
			LA161: ;
		}
		LA157: ;
	}
	break;
	case ((NU8) 9):
	{
		{
			NI i_469001;
			NI HEX3Atmp_469446;
			NI LOC166;
			NI res_469449;
			i_469001 = 0;
			HEX3Atmp_469446 = 0;
			LOC166 = 0;
			LOC166 = len_228369(paramtype);
			HEX3Atmp_469446 = (LOC166 - 1);
			res_469449 = ((NI) 1);
			{
				while (1) {
					Ttype225847* lifted;
					if (!(res_469449 <= HEX3Atmp_469446)) goto LA168;
					i_469001 = res_469449;
					lifted = liftparamtype_468479((*HEX3Aenv_469510).c468481, prockind, (*HEX3Aenv_469510).genericparams468483, (*paramtype).sons->data[i_469001], (*HEX3Aenv_469510).paramname468485, (*HEX3Aenv_469510).info468486, NIM_FALSE);
					{
						if (!!((lifted == NIM_NIL))) goto LA171;
						asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_469001]), lifted);
					}
					LA171: ;
					res_469449 += ((NI) 1);
				} LA168: ;
			}
		}
	}
	break;
	case ((NU8) 52):
	case ((NU8) 51):
	case ((NU8) 55):
	case ((NU8) 56):
	case ((NU8) 57):
	{
		TY468502 LOC174;
		Tsym225841* LOC175;
		Ttype225847* LOC176;
		memset((void*)(&LOC174), 0, sizeof(LOC174));
		LOC174.ClPrc = addimplicitgenericimpl_468501; LOC174.ClEnv = HEX3Aenv_469510;
		LOC175 = 0;
		LOC175 = getcurrowner_280258();
		LOC176 = 0;
		LOC176 = copytype_228542(paramtype, LOC175, NIM_TRUE);
		result = LOC174.ClEnv? LOC174.ClPrc(LOC176, paramtypid, LOC174.ClEnv):((TMP3286)(LOC174.ClPrc))(LOC176, paramtypid);
	}
	break;
	case ((NU8) 6):
	{
		{
			TY468502 LOC182;
			Ttype225847* LOC183;
			if (!!(((393216 &(1<<((prockind)&31)))!=0))) goto LA180;
			memset((void*)(&LOC182), 0, sizeof(LOC182));
			LOC182.ClPrc = addimplicitgenericimpl_468501; LOC182.ClEnv = HEX3Aenv_469510;
			LOC183 = 0;
			LOC183 = newtypes_280221(((NU8) 58), (*HEX3Aenv_469510).c468481);
			result = LOC182.ClEnv? LOC182.ClPrc(LOC183, paramtypid, LOC182.ClEnv):((TMP3287)(LOC182.ClPrc))(LOC183, paramtypid);
		}
		LA180: ;
	}
	break;
	case ((NU8) 12):
	{
		markused_388253((*HEX3Aenv_469510).info468486, (*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(Ttype225847*, semproctypenode_469551)(Tcontext280023* c, Tnode225809* n, Tnode225809* genericparams, Ttype225847* prev, NU8 kind, NIM_BOOL istype) {
	Ttype225847* result;
	Intset222056 cl;
	Intset222056 check;
	NI counter;
	Ttype225847* r;
	result = 0;
	memset((void*)(&cl), 0, sizeof(cl));
	checkminsonslen_281270(n, ((NI) 1));
	result = newproctype_469542(c, (*n).info, prev);
	{
		NIM_BOOL LOC3;
		NI LOC5;
		LOC3 = 0;
		LOC3 = !((genericparams == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = sonslen_228387(genericparams);
		LOC3 = (LOC5 == ((NI) 0));
		LA4: ;
		if (!LOC3) goto LA6;
		chckNil((void*)(&cl));
		memset((void*)(&cl), 0, sizeof(cl));
		initintset_222927((&cl));
	}
	LA6: ;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_222927((&check));
	counter = ((NI) 0);
	{
		NI i_469588;
		NI HEX3Atmp_469983;
		NI LOC9;
		NI res_469986;
		i_469588 = 0;
		HEX3Atmp_469983 = 0;
		LOC9 = 0;
		LOC9 = len_226098(n);
		HEX3Atmp_469983 = (NI)(LOC9 - ((NI) 1));
		res_469986 = ((NI) 1);
		{
			while (1) {
				if (!(res_469986 <= HEX3Atmp_469983)) goto LA11;
				i_469588 = res_469986;
				{
					Tnode225809* a;
					Ttype225847* typ;
					Tnode225809* def;
					Tnode225809* constraint;
					NI length;
					NIM_BOOL hastype;
					NIM_BOOL hasdefault;
					a = (*n).kindU.S6.sons->data[i_469588];
					{
						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_281240(a);
					}
					LA15: ;
					checkminsonslen_281270(a, ((NI) 3));
					typ = NIM_NIL;
					def = NIM_NIL;
					constraint = NIM_NIL;
					length = sonslen_228387(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_469522(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))], &constraint);
					}
					LA25: ;
					{
						if (!hasdefault) goto LA29;
						def = semexprwithtype_457211(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_264310(typ);
								if (!!(LOC40)) goto LA41;
								def = fitnode_457245(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_196139((*a).info, ((NimStringDesc*) &TMP3273));
						}
						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_247059(n, 0);
							message_196161((*a).info, ((NU16) 251), LOC62);
						}
						LA60: ;
						typ = newtypes_280221(tdef, c);
					}
					LA47: ;
					{
						Ttype225847* LOC65;
						LOC65 = 0;
						LOC65 = skiptypes_229167(typ, 2048);
						if (!((*LOC65).kind == ((NU8) 3))) goto LA66;
						goto LA12;
					}
					LA66: ;
					{
						NI j_469717;
						NI HEX3Atmp_469976;
						NI res_469979;
						j_469717 = 0;
						HEX3Atmp_469976 = 0;
						HEX3Atmp_469976 = (NI)(length - ((NI) 3));
						res_469979 = ((NI) 0);
						{
							while (1) {
								Tsym225841* arg;
								Ttype225847* lifted;
								Ttype225847* finaltype;
								Tnode225809* LOC87;
								if (!(res_469979 <= HEX3Atmp_469976)) goto LA70;
								j_469717 = res_469979;
								arg = newsymg_457916(((NU8) 3), (*a).kindU.S6.sons->data[j_469717], c);
								lifted = liftparamtype_468479(c, kind, genericparams, typ, (*(*arg).name).s, (*arg).info, NIM_FALSE);
								{
									if (!!((lifted == NIM_NIL))) goto LA73;
									finaltype = lifted;
								}
								goto LA71;
								LA73: ;
								{
									finaltype = skipintlit_274696(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_230028(def));
								}
								LA80: ;
								{
									NIM_BOOL LOC84;
									LOC84 = 0;
									LOC84 = containsorincl_222898((&check), (*(*arg).name).Sup.id);
									if (!LOC84) goto LA85;
									localerror_196128((*(*a).kindU.S6.sons->data[j_469717]).info, ((NU16) 41), (*(*arg).name).s);
								}
								LA85: ;
								LOC87 = 0;
								LOC87 = newsymnode_227325(arg);
								addson_227819((*result).n, LOC87);
								rawaddson_229498(result, finaltype);
								addparamorresult_459885(c, arg, kind);
								{
									if (!(gcmd_167134 == ((NU8) 7))) goto LA90;
								}
								LA90: ;
								res_469979 += ((NI) 1);
							} LA70: ;
						}
					}
				} LA12: ;
				res_469986 += ((NI) 1);
			} LA11: ;
		}
	}
	r = 0;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA94;
		r = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	}
	goto LA92;
	LA94: ;
	{
		if (!(kind == ((NU8) 14))) goto LA97;
		r = newtypes_280221(((NU8) 6), c);
		message_196161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3288));
	}
	goto LA92;
	LA97: ;
	LA92: ;
	{
		if (!!((r == NIM_NIL))) goto LA101;
		{
			Ttype225847* LOC105;
			LOC105 = 0;
			LOC105 = skiptypes_229167(r, 2048);
			if (!!(((*LOC105).kind == ((NU8) 3)))) goto LA106;
			{
				if (!((*r).kind == ((NU8) 58))) goto LA110;
				r = newtypes_280221(((NU8) 6), c);
			}
			goto LA108;
			LA110: ;
			{
				if (!!(((*r).kind == ((NU8) 6)))) goto LA113;
				{
					NIM_BOOL LOC117;
					Ttype225847* 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_468479(c, kind, genericparams, r, ((NimStringDesc*) &TMP3144), (*(*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_274696(r);
				{
					if (!(kind == ((NU8) 14))) goto LA127;
					{
						NIM_BOOL LOC131;
						Ttypeseq225843* LOC134;
						TY393275 LOC135;
						LOC131 = 0;
						LOC131 = isinlineiterator_393087(r);
						if (!!(LOC131)) goto LA132;
						LOC134 = 0;
						LOC134 = (Ttypeseq225843*) newSeq((&NTI225843), 1);
						memset((void*)LOC135, 0, sizeof(LOC135));
						LOC135[0] = r;
						asgnRefNoCycle((void**) (&LOC134->data[0]), LOC135[0]);
						r = newtypewithsons_280807(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;
		{
			Tnode225809* n_469943;
			n_469943 = 0;
			{
				NI i_469995;
				NI HEX3Atmp_469997;
				NI LOC142;
				NI res_469999;
				i_469995 = 0;
				HEX3Atmp_469997 = 0;
				LOC142 = 0;
				LOC142 = len_226098(genericparams);
				HEX3Atmp_469997 = (LOC142 - 1);
				res_469999 = ((NI) 0);
				{
					while (1) {
						if (!(res_469999 <= HEX3Atmp_469997)) goto LA144;
						i_469995 = res_469999;
						n_469943 = (*genericparams).kindU.S6.sons->data[i_469995];
						{
							if (!(((*(*(*n_469943).kindU.S4.sym).typ).flags &(1<<((((NU8) 25))&31)))!=0)) goto LA147;
							(*(*n_469943).kindU.S4.sym).kind = ((NU8) 7);
							(*(*(*n_469943).kindU.S4.sym).typ).flags &= ~(((NU32)1) << ((((NU8) 25)) % (sizeof(NU32)*8)));
						}
						LA147: ;
						res_469999 += ((NI) 1);
					} LA144: ;
				}
			}
		}
	}
	LA138: ;
	return result;
}

N_NIMCALL(void, semparamlist_457284)(Tcontext280023* c, Tnode225809* n, Tnode225809* genericparams, Tsym225841* s) {
	asgnRefNoCycle((void**) (&(*s).typ), semproctypenode_469551(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_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3289));
		}
		LA9: ;
	}
	LA3: ;
}

N_NIMCALL(Tnode225809*, newparam_476084)(Templctx472056* c, Tnode225809* n, Tsym225841* s) {
	Tnode225809* result;
	Tsym225841* 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_227338(x, (*n).info);
	return result;
}

N_NIMCALL(Tnode225809*, handlesym_476401)(Templctx472056* c, Tnode225809* n, Tsym225841* s) {
	Tnode225809* 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_476084(c, n, s);
		}
		goto LA5;
		LA9: ;
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = contains_222829((*c).tobind, (*s).Sup.id);
			if (!LOC12) goto LA13;
			result = symchoice_471790((*c).c, n, s, ((NU8) 0));
		}
		goto LA5;
		LA13: ;
		{
			NIM_BOOL LOC16;
			NIM_BOOL LOC18;
			NI LOC19;
			Tnode225809* LOC23;
			LOC16 = 0;
			LOC16 = ((*s).kind == ((NU8) 18));
			if (!(LOC16)) goto LA17;
			LOC18 = 0;
			LOC19 = 0;
			LOC19 = len_228369((*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_458062((*c).c, n, s, 512);
			result = sempatternbody_476070(c, LOC23);
		}
		goto LA5;
		LA21: ;
		{
		}
		LA5: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode225809*, sembindstmt_471895)(Tcontext280023* c, Tnode225809* n, Intset222056* tobind) {
	Tnode225809* result;
	result = 0;
	{
		NI i_471921;
		NI HEX3Atmp_471964;
		NI LOC2;
		NI res_471967;
		i_471921 = 0;
		HEX3Atmp_471964 = 0;
		LOC2 = 0;
		LOC2 = len_226098(n);
		HEX3Atmp_471964 = (LOC2 - 1);
		res_471967 = ((NI) 0);
		{
			while (1) {
				Tnode225809* a;
				Tsym225841* s;
				if (!(res_471967 <= HEX3Atmp_471964)) goto LA4;
				i_471921 = res_471967;
				a = (*n).kindU.S6.sons->data[i_471921];
				s = qualifiedlookup_286864(c, a, 2);
				{
					Tnode225809* sc;
					if (!!((s == NIM_NIL))) goto LA7;
					sc = symchoice_471790(c, n, s, ((NU8) 0));
					{
						if (!((*sc).kind == ((NU8) 3))) goto LA11;
						incl_222856(tobind, (*(*sc).kindU.S4.sym).Sup.id);
					}
					goto LA9;
					LA11: ;
					{
						{
							Tnode225809* x_471949;
							x_471949 = 0;
							{
								NI i_471957;
								NI HEX3Atmp_471959;
								NI LOC16;
								NI res_471961;
								i_471957 = 0;
								HEX3Atmp_471959 = 0;
								LOC16 = 0;
								LOC16 = len_226098(sc);
								HEX3Atmp_471959 = (LOC16 - 1);
								res_471961 = ((NI) 0);
								{
									while (1) {
										if (!(res_471961 <= HEX3Atmp_471959)) goto LA18;
										i_471957 = res_471961;
										x_471949 = (*sc).kindU.S6.sons->data[i_471957];
										incl_222856(tobind, (*(*x_471949).kindU.S4.sym).Sup.id);
										res_471961 += ((NI) 1);
									} LA18: ;
								}
							}
						}
					}
					LA9: ;
				}
				goto LA5;
				LA7: ;
				{
					illformedast_281240(a);
				}
				LA5: ;
				res_471967 += ((NI) 1);
			} LA4: ;
		}
	}
	result = newnodei_227351(((NU8) 1), (*n).info);
	return result;
}

N_NIMCALL(Tnode225809*, expectparam_476464)(Templctx472056* c, Tnode225809* n) {
	Tnode225809* result;
	Tsym225841* s;
	result = 0;
	s = qualifiedlookup_286864((*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_476084(c, n, s);
	}
	goto LA1;
	LA7: ;
	{
		localerror_196128((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3117));
		result = n;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, stupidstmtlistexpr_476506)(Tnode225809* n) {
	NIM_BOOL result;
{	result = 0;
	{
		NI i_476521;
		NI HEX3Atmp_476534;
		NI LOC2;
		NI res_476537;
		i_476521 = 0;
		HEX3Atmp_476534 = 0;
		LOC2 = 0;
		LOC2 = len_226098(n);
		HEX3Atmp_476534 = (NI)(LOC2 - ((NI) 2));
		res_476537 = ((NI) 0);
		{
			while (1) {
				if (!(res_476537 <= HEX3Atmp_476534)) goto LA4;
				i_476521 = res_476537;
				{
					Tnode225809* LOC7;
					LOC7 = 0;
					LOC7 = HEX5BHEX5D_226244(n, i_476521);
					if (!!(((*LOC7).kind == ((NU8) 1) || (*LOC7).kind == ((NU8) 125)))) goto LA8;
					result = NIM_FALSE;
					goto BeforeRet;
				}
				LA8: ;
				res_476537 += ((NI) 1);
			} LA4: ;
		}
	}
	result = NIM_TRUE;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, sempatternbody_476070)(Templctx472056* c, Tnode225809* n) {
	Tnode225809* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym225841* s;
		s = qualifiedlookup_286864((*c).c, n, 0);
		result = handlesym_476401(c, n, s);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_471895((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 40):
	{
		{
			NI LOC7;
			LOC7 = 0;
			LOC7 = len_226098(n);
			if (!!((LOC7 == ((NI) 2)))) goto LA8;
			localerror_196128((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3117));
		}
		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_476070(c, (*n).kindU.S6.sons->data[((NI) 0)]));
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), expectparam_476464(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		}
		goto LA5;
		LA11: ;
		{
			NIM_BOOL LOC14;
			Tnode225809* 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*) &TMP3120))) goto LA20;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), sempatternbody_476070(c, (*n).kindU.S6.sons->data[((NI) 0)]));
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 1)]), expectparam_476464(c, (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 1)]));
			}
			goto LA18;
			LA20: ;
			{
				localerror_196128((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3117));
			}
			LA18: ;
		}
		goto LA5;
		LA16: ;
		{
			localerror_196128((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3117));
		}
		LA5: ;
	}
	break;
	case ((NU8) 115):
	case ((NU8) 126):
	{
		{
			NIM_BOOL LOC27;
			Tnode225809* LOC30;
			LOC27 = 0;
			LOC27 = stupidstmtlistexpr_476506(n);
			if (!LOC27) goto LA28;
			LOC30 = 0;
			LOC30 = lastson_228406(n);
			result = sempatternbody_476070(c, LOC30);
		}
		goto LA25;
		LA28: ;
		{
			{
				NI i_476604;
				NI HEX3Atmp_476779;
				NI LOC33;
				NI res_476782;
				i_476604 = 0;
				HEX3Atmp_476779 = 0;
				LOC33 = 0;
				LOC33 = sonslen_228387(n);
				HEX3Atmp_476779 = (NI)(LOC33 - ((NI) 1));
				res_476782 = ((NI) 0);
				{
					while (1) {
						if (!(res_476782 <= HEX3Atmp_476779)) goto LA35;
						i_476604 = res_476782;
						asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_476604]), sempatternbody_476070(c, (*n).kindU.S6.sons->data[i_476604]));
						res_476782 += ((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):
	{
		Tsym225841* s;
		s = qualifiedlookup_286864((*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_222829((*c).tobind, (*s).Sup.id);
				if (!LOC48) goto LA49;
			}
			goto LA41;
			LA49: ;
			{
				NIM_BOOL LOC52;
				NIM_BOOL LOC54;
				NI LOC55;
				Tnode225809* LOC59;
				LOC52 = 0;
				LOC52 = ((*s).kind == ((NU8) 18));
				if (!(LOC52)) goto LA53;
				LOC54 = 0;
				LOC55 = 0;
				LOC55 = len_228369((*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_458062((*c).c, n, s, 512);
				result = sempatternbody_476070(c, LOC59);
				goto BeforeRet;
			}
			goto LA41;
			LA57: ;
			LA41: ;
		}
		LA39: ;
		{
			NIM_BOOL LOC62;
			Tnode225809* 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*) &TMP3290));
				if (LOC68) goto LA69;
				LOC68 = eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3291));
				LA69: ;
				if (!LOC68) goto LA70;
				LOC72 = 0;
				LOC72 = len_226098(n);
				result = newnodei_227407(((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_476070(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), expectparam_476464(c, (*n).kindU.S6.sons->data[((NI) 2)]));
				goto BeforeRet;
			}
			goto LA66;
			LA70: ;
			{
				NI LOC76;
				if (!eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3120))) goto LA74;
				LOC76 = 0;
				LOC76 = len_226098(n);
				result = newnodei_227407(((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_476070(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), sempatternbody_476070(c, (*n).kindU.S6.sons->data[((NI) 2)]));
				goto BeforeRet;
			}
			goto LA66;
			LA74: ;
			LA66: ;
		}
		LA64: ;
		{
			NIM_BOOL LOC79;
			Tnode225809* 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*) &TMP3292))) goto LA85;
				LOC87 = 0;
				LOC87 = len_226098(n);
				result = newnodei_227407(((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_476070(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				goto BeforeRet;
			}
			LA85: ;
		}
		LA81: ;
		{
			NI i_476741;
			NI HEX3Atmp_476787;
			NI LOC89;
			NI res_476790;
			i_476741 = 0;
			HEX3Atmp_476787 = 0;
			LOC89 = 0;
			LOC89 = sonslen_228387(n);
			HEX3Atmp_476787 = (NI)(LOC89 - ((NI) 1));
			res_476790 = ((NI) 0);
			{
				while (1) {
					if (!(res_476790 <= HEX3Atmp_476787)) goto LA91;
					i_476741 = res_476790;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_476741]), sempatternbody_476070(c, (*n).kindU.S6.sons->data[i_476741]));
					res_476790 += ((NI) 1);
				} LA91: ;
			}
		}
	}
	break;
	default:
	{
		switch ((*n).kind) {
		case ((NU8) 45):
		case ((NU8) 53):
		{
			Tsym225841* s;
			s = qualifiedlookup_286864((*c).c, n, 0);
			{
				if (!!((s == NIM_NIL))) goto LA96;
				{
					NIM_BOOL LOC100;
					LOC100 = 0;
					LOC100 = contains_222829((*c).tobind, (*s).Sup.id);
					if (!LOC100) goto LA101;
					result = symchoice_471790((*c).c, n, s, ((NU8) 0));
					goto BeforeRet;
				}
				goto LA98;
				LA101: ;
				{
					result = newidentnode_227313((*s).name, (*n).info);
					goto BeforeRet;
				}
				LA98: ;
			}
			LA96: ;
		}
		break;
		case ((NU8) 37):
		{
			{
				NI LOC107;
				LOC107 = 0;
				LOC107 = len_226098(n);
				if (!(LOC107 == ((NI) 1))) goto LA108;
				result = sempatternbody_476070(c, (*n).kindU.S6.sons->data[((NI) 0)]);
				goto BeforeRet;
			}
			LA108: ;
		}
		break;
		default:
		{
		}
		break;
		}
		{
			NI i_476775;
			NI HEX3Atmp_476795;
			NI LOC112;
			NI res_476798;
			i_476775 = 0;
			HEX3Atmp_476795 = 0;
			LOC112 = 0;
			LOC112 = sonslen_228387(n);
			HEX3Atmp_476795 = (NI)(LOC112 - ((NI) 1));
			res_476798 = ((NI) 0);
			{
				while (1) {
					if (!(res_476798 <= HEX3Atmp_476795)) goto LA114;
					i_476775 = res_476798;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_476775]), sempatternbody_476070(c, (*n).kindU.S6.sons->data[i_476775]));
					res_476798 += ((NI) 1);
				} LA114: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, sempattern_473348)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tscope225835* LOC1;
	Templctx472056 ctx;
	Tnode225809* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_222927((&ctx.tobind));
	initintset_222927((&ctx.tomixin));
	initintset_222927((&ctx.toinject));
	ctx.c = c;
	ctx.owner = getcurrowner_280258();
	LOC2 = 0;
	LOC2 = sempatternbody_476070((&ctx), n);
	result = flattenstmts_254773(LOC2);
	{
		if (!((*result).kind == ((NU8) 115) || (*result).kind == ((NU8) 126))) goto LA5;
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_226098(result);
			if (!(LOC9 == ((NI) 1))) goto LA10;
			result = (*result).kindU.S6.sons->data[((NI) 0)];
		}
		goto LA7;
		LA10: ;
		{
			NI LOC13;
			LOC13 = 0;
			LOC13 = len_226098(result);
			if (!(LOC13 == ((NI) 0))) goto LA14;
			localerror_196128((*n).info, ((NU16) 171), ((NimStringDesc*) &TMP3117));
		}
		goto LA7;
		LA14: ;
		LA7: ;
	}
	LA5: ;
	closescope_286111(c);
	return result;
}

N_NIMCALL(void, addgenericparamlisttoscope_487541)(Tcontext280023* c, Tnode225809* n) {
	{
		if (!!(((*n).kind == ((NU8) 75)))) goto LA3;
		illformedast_281240(n);
	}
	LA3: ;
	{
		NI i_487566;
		NI HEX3Atmp_487580;
		NI LOC6;
		NI res_487583;
		i_487566 = 0;
		HEX3Atmp_487580 = 0;
		LOC6 = 0;
		LOC6 = sonslen_228387(n);
		HEX3Atmp_487580 = (NI)(LOC6 - ((NI) 1));
		res_487583 = ((NI) 0);
		{
			while (1) {
				Tnode225809* a;
				if (!(res_487583 <= HEX3Atmp_487580)) goto LA8;
				i_487566 = res_487583;
				a = (*n).kindU.S6.sons->data[i_487566];
				{
					if (!((*a).kind == ((NU8) 3))) goto LA11;
					adddecl_286607(c, (*a).kindU.S4.sym);
				}
				goto LA9;
				LA11: ;
				{
					illformedast_281240(a);
				}
				LA9: ;
				res_487583 += ((NI) 1);
			} LA8: ;
		}
	}
}

N_NIMCALL(void, addparams_457293)(Tcontext280023* c, Tnode225809* n, NU8 kind) {
	{
		NI i_488775;
		NI HEX3Atmp_488789;
		NI LOC2;
		NI res_488792;
		i_488775 = 0;
		HEX3Atmp_488789 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_488789 = (NI)(LOC2 - ((NI) 1));
		res_488792 = ((NI) 1);
		{
			while (1) {
				if (!(res_488792 <= HEX3Atmp_488789)) goto LA4;
				i_488775 = res_488792;
				{
					if (!((*(*n).kindU.S6.sons->data[i_488775]).kind == ((NU8) 3))) goto LA7;
					addparamorresult_459885(c, (*(*n).kindU.S6.sons->data[i_488775]).kindU.S4.sym, kind);
				}
				goto LA5;
				LA7: ;
				{
					illformedast_281240(n);
				}
				LA5: ;
				res_488792 += ((NI) 1);
			} LA4: ;
		}
	}
}

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

static N_INLINE(NI, find_482411)(Tsym225841** a, NI aLen0, Tsym225841* item) {
	NI result;
{	result = 0;
	{
		Tsym225841* i_482455;
		NI i_482479;
		i_482455 = 0;
		i_482479 = ((NI) 0);
		{
			while (1) {
				if (!(i_482479 < aLen0)) goto LA3;
				i_482455 = a[i_482479];
				{
					if (!(i_482455 == item)) goto LA6;
					goto BeforeRet;
				}
				LA6: ;
				result += ((NI) 1);
				i_482479 += ((NI) 1);
			} LA3: ;
		}
	}
	result = ((NI) -1);
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, contains_482401)(Tsym225841** a, NI aLen0, Tsym225841* item) {
	NIM_BOOL result;
	NI LOC1;
{	result = 0;
	LOC1 = 0;
	LOC1 = find_482411(a, aLen0, item);
	result = (((NI) 0) <= LOC1);
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, destroycase_482051)(Tcontext280023* c, Tnode225809* n, Tnode225809* holder) {
	Tnode225809* result;
	NI nontrivialfields;
	Tnodeseq225803* LOC1;
	Tnodeseq225803* LOC2;
	TY281106 LOC3;
	Tnode225809* LOC4;
	result = 0;
	nontrivialfields = ((NI) 0);
	LOC1 = 0;
	LOC1 = (Tnodeseq225803*) newSeq((&NTI225803), 0);
	result = newnode_227607(((NU8) 97), (*n).info, LOC1, NIM_NIL);
	LOC2 = 0;
	LOC2 = (Tnodeseq225803*) newSeq((&NTI225803), 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_227607(((NU8) 45), (*n).info, LOC2, NIM_NIL);
	addson_227819(result, LOC4);
	{
		NI i_482101;
		NI HEX3Atmp_482171;
		NI LOC6;
		NI res_482174;
		i_482101 = 0;
		HEX3Atmp_482171 = 0;
		LOC6 = 0;
		LOC6 = len_226098(n);
		HEX3Atmp_482171 = (NI)(LOC6 - ((NI) 1));
		res_482174 = ((NI) 1);
		{
			while (1) {
				Tnode225809* ni;
				Tnode225809* casebranch;
				NI LOC9;
				Slice90370 LOC10;
				Tnodeseq225803* LOC11;
				Tnode225809* stmt;
				Tnode225809* LOC12;
				if (!(res_482174 <= HEX3Atmp_482171)) goto LA8;
				i_482101 = res_482174;
				ni = HEX5BHEX5D_226244(n, i_482101);
				LOC9 = 0;
				LOC9 = len_226098(ni);
				LOC10 = HEX2EHEX2E_105290(((NI) 0), (NI)(LOC9 - ((NI) 2)));
				LOC11 = 0;
				LOC11 = HEX5BHEX5D_416753((*ni).kindU.S6.sons, LOC10);
				casebranch = newnode_227607((*ni).kind, (*ni).info, LOC11, NIM_NIL);
				LOC12 = 0;
				LOC12 = lastson_228406(ni);
				stmt = destroyfieldorfields_481995(c, LOC12, holder);
				{
					Tnodeseq225803* LOC17;
					Tnode225809* LOC18;
					if (!(stmt == NIM_NIL)) goto LA15;
					LOC17 = 0;
					LOC17 = (Tnodeseq225803*) newSeq((&NTI225803), 0);
					LOC18 = 0;
					LOC18 = newnode_227607(((NU8) 115), (*ni).info, LOC17, NIM_NIL);
					addson_227819(casebranch, LOC18);
				}
				goto LA13;
				LA15: ;
				{
					NI LOC20;
					addson_227819(casebranch, stmt);
					LOC20 = 0;
					LOC20 = len_226098(stmt);
					nontrivialfields += LOC20;
				}
				LA13: ;
				addson_227819(result, casebranch);
				res_482174 += ((NI) 1);
			} LA8: ;
		}
	}
	{
		if (!(nontrivialfields == ((NI) 0))) goto LA23;
		result = NIM_NIL;
	}
	LA23: ;
	return result;
}

N_NIMCALL(Tnode225809*, destroysym_482000)(Tcontext280023* c, Tsym225841* field, Tnode225809* holder) {
	Tnode225809* result;
	Ttype225847* destructablet;
	result = 0;
	destructablet = instantiatedestructor_481822(c, (*field).typ);
	{
		Tnodeseq225803* LOC5;
		TY281106 LOC6;
		Tnodeseq225803* LOC7;
		TY281106 LOC8;
		if (!!((destructablet == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = (Tnodeseq225803*) newSeq((&NTI225803), 2);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = usesym_398850((*destructablet).destructor);
		LOC7 = 0;
		LOC7 = (Tnodeseq225803*) newSeq((&NTI225803), 2);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = holder;
		LOC8[1] = usesym_398850(field);
		asgnRefNoCycle((void**) (&LOC7->data[0]), LOC8[0]);
		asgnRefNoCycle((void**) (&LOC7->data[1]), LOC8[1]);
		LOC6[1] = newnode_227607(((NU8) 45), (*field).info, LOC7, NIM_NIL);
		asgnRefNoCycle((void**) (&LOC5->data[0]), LOC6[0]);
		asgnRefNoCycle((void**) (&LOC5->data[1]), LOC6[1]);
		result = newnode_227607(((NU8) 27), (*field).info, LOC5, NIM_NIL);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode225809*, destroyfieldorfields_481995)(Tcontext280023* c, Tnode225809* field, Tnode225809* holder) {
	Tnode225809* result;
	result = 0;
	switch ((*field).kind) {
	case ((NU8) 139):
	{
		Tnode225809* stmt_482203;
		stmt_482203 = destroycase_482051(c, field, holder);
		{
			if (!!((stmt_482203 == NIM_NIL))) goto LA4;
			{
				if (!(result == NIM_NIL)) goto LA8;
				result = newnode_226401(((NU8) 115));
			}
			LA8: ;
			addson_227819(result, stmt_482203);
		}
		LA4: ;
	}
	break;
	case ((NU8) 3):
	{
		Tnode225809* stmt_482230;
		stmt_482230 = destroysym_482000(c, (*field).kindU.S4.sym, holder);
		{
			if (!!((stmt_482230 == NIM_NIL))) goto LA13;
			{
				if (!(result == NIM_NIL)) goto LA17;
				result = newnode_226401(((NU8) 115));
			}
			LA17: ;
			addson_227819(result, stmt_482230);
		}
		LA13: ;
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode225809* son_482257;
			son_482257 = 0;
			{
				NI i_482296;
				NI HEX3Atmp_482298;
				NI LOC22;
				NI res_482300;
				i_482296 = 0;
				HEX3Atmp_482298 = 0;
				LOC22 = 0;
				LOC22 = len_226098(field);
				HEX3Atmp_482298 = (LOC22 - 1);
				res_482300 = ((NI) 0);
				{
					while (1) {
						Tnode225809* stmt_482259;
						if (!(res_482300 <= HEX3Atmp_482298)) goto LA24;
						i_482296 = res_482300;
						son_482257 = (*field).kindU.S6.sons->data[i_482296];
						stmt_482259 = destroyfieldorfields_481995(c, son_482257, holder);
						{
							if (!!((stmt_482259 == NIM_NIL))) goto LA27;
							{
								if (!(result == NIM_NIL)) goto LA31;
								result = newnode_226401(((NU8) 115));
							}
							LA31: ;
							addson_227819(result, stmt_482259);
						}
						LA27: ;
						res_482300 += ((NI) 1);
					} LA24: ;
				}
			}
		}
	}
	break;
	default:
	{
		{
			NimStringDesc* LOC38;
			if (!NIM_TRUE) goto LA36;
			LOC38 = 0;
			LOC38 = HEX24_196279(TMP3305);
			internalerror_196191(LOC38);
		}
		LA36: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode225809*, generatedestructor_482318)(Tcontext280023* c, Ttype225847* t) {
	Tnode225809* result;
	Tnode225809* destructedobj;
	Tlineinfo190352 LOC12;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*t).n == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = HEX3DHEX3D_300972((*(*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_196279(TMP3303);
		internalerror_196191(LOC11);
	}
	LA9: ;
	LOC12 = unknownlineinfo_191411();
	destructedobj = newidentnode_227313(destructorparam_481820, LOC12);
	result = destroyfieldorfields_481995(c, (*t).n, destructedobj);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym225841*, symfromtype_458085)(Ttype225847* t, Tlineinfo190352 info) {
	Tsym225841* result;
	Tident198021* LOC5;
{	result = 0;
	{
		if (!!(((*t).sym == NIM_NIL))) goto LA3;
		result = (*t).sym;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getident_198463(((NimStringDesc*) &TMP3307));
	result = newsym_226656(((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(Tnode225809*, symnodefromtype_458120)(Tcontext280023* c, Ttype225847* t, Tlineinfo190352 info) {
	Tnode225809* result;
	Tsym225841* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = symfromtype_458085(t, info);
	result = newsymnode_227338(LOC1, info);
	asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_280684(c, t));
	return result;
}

N_NIMCALL(Tnode225809*, semproc_481797)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = semprocaux_489900(c, n, ((NU8) 12), TMP3308, ((NU8) 0));
	return result;
}

N_NIMCALL(Ttype225847*, instantiatedestructor_481822)(Tcontext280023* c, Ttype225847* typ) {
	Ttype225847* result;
	Ttype225847* t;
	Ttype225847* LOC1;
	Ttype225847* typeholdinguserdefinition;
{	result = 0;
	LOC1 = 0;
	LOC1 = skiptypes_229167(typ, IL64(211106232532992));
	t = skipgenericalias_261119(LOC1);
	{
		if (!((*t).kind == ((NU8) 11))) goto LA4;
		typeholdinguserdefinition = base_255039(t);
	}
	goto LA2;
	LA4: ;
	{
		typeholdinguserdefinition = t;
	}
	LA2: ;
	{
		if (!!(((*typeholdinguserdefinition).destructor == NIM_NIL))) goto LA9;
		{
			TY482397 LOC13;
			NIM_BOOL LOC14;
			memset((void*)LOC13, 0, sizeof(LOC13));
			LOC13[0] = analyzingdestructor_481801;
			LOC13[1] = destructoristrivial_481802;
			LOC14 = 0;
			LOC14 = contains_482401(LOC13, 2, (*typeholdinguserdefinition).destructor);
			if (!!(LOC14)) goto LA15;
			result = typeholdinguserdefinition;
			goto BeforeRet;
		}
		goto LA11;
		LA15: ;
		{
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA11: ;
	}
	LA9: ;
	t = skiptypes_229167(t, 2048);
	switch ((*t).kind) {
	case ((NU8) 24):
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			Ttype225847* LOC21;
			LOC21 = 0;
			LOC21 = instantiatedestructor_481822(c, (*t).sons->data[((NI) 0)]);
			if (!!((LOC21 == NIM_NIL))) goto LA22;
			asgnRefNoCycle((void**) (&(*t).destructor), getcompilerproc_274809(((NimStringDesc*) &TMP3302)));
			result = t;
			goto BeforeRet;
		}
		goto LA19;
		LA22: ;
		{
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA19: ;
	}
	break;
	case ((NU8) 18):
	case ((NU8) 17):
	{
		Tnode225809* generated;
		asgnRefNoCycle((void**) (&(*t).destructor), analyzingdestructor_481801);
		generated = generatedestructor_482318(c, t);
		{
			Tlineinfo190352 i;
			Tnode225809* fulldef;
			Tnodeseq225803* LOC35;
			TY228071 LOC36;
			Tnodeseq225803* LOC37;
			TY281106 LOC38;
			Tnodeseq225803* LOC39;
			TY498414 LOC40;
			Ttype225847* LOC41;
			Tnodeseq225803* LOC42;
			TY243880 LOC43;
			Tnode225809* semantizeddef;
			Tnode225809* LOC44;
			if (!!((generated == NIM_NIL))) goto LA28;
			{
				NimStringDesc* LOC34;
				if (!!(!(((*t).sym == NIM_NIL)))) goto LA32;
				LOC34 = 0;
				LOC34 = HEX24_196279(TMP3306);
				internalerror_196191(LOC34);
			}
			LA32: ;
			i = (*(*t).sym).info;
			LOC35 = 0;
			LOC35 = (Tnodeseq225803*) newSeq((&NTI225803), 7);
			memset((void*)LOC36, 0, sizeof(LOC36));
			LOC36[0] = newidentnode_227313(destructorname_481819, i);
			LOC36[1] = emptynode_226807;
			LOC36[2] = emptynode_226807;
			LOC37 = 0;
			LOC37 = (Tnodeseq225803*) newSeq((&NTI225803), 2);
			memset((void*)LOC38, 0, sizeof(LOC38));
			LOC38[0] = emptynode_226807;
			LOC39 = 0;
			LOC39 = (Tnodeseq225803*) newSeq((&NTI225803), 3);
			memset((void*)LOC40, 0, sizeof(LOC40));
			LOC40[0] = newidentnode_227313(destructorparam_481820, i);
			LOC41 = 0;
			LOC41 = makevartype_280645(c, t);
			LOC40[1] = symnodefromtype_458120(c, LOC41, (*(*t).sym).info);
			LOC40[2] = emptynode_226807;
			asgnRefNoCycle((void**) (&LOC39->data[0]), LOC40[0]);
			asgnRefNoCycle((void**) (&LOC39->data[1]), LOC40[1]);
			asgnRefNoCycle((void**) (&LOC39->data[2]), LOC40[2]);
			LOC38[1] = newnode_227607(((NU8) 35), i, LOC39, NIM_NIL);
			asgnRefNoCycle((void**) (&LOC37->data[0]), LOC38[0]);
			asgnRefNoCycle((void**) (&LOC37->data[1]), LOC38[1]);
			LOC36[3] = newnode_227607(((NU8) 76), i, LOC37, NIM_NIL);
			LOC42 = 0;
			LOC42 = (Tnodeseq225803*) newSeq((&NTI225803), 1);
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC43[0] = destructorpragma_481821;
			asgnRefNoCycle((void**) (&LOC42->data[0]), LOC43[0]);
			LOC36[4] = newnode_227607(((NU8) 90), i, LOC42, NIM_NIL);
			LOC36[5] = emptynode_226807;
			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_227607(((NU8) 79), i, LOC35, NIM_NIL);
			semantizeddef = semproc_481797(c, fulldef);
			LOC44 = 0;
			LOC44 = HEX5BHEX5D_226244(semantizeddef, ((NI) 0));
			asgnRefNoCycle((void**) (&(*t).destructor), (*LOC44).kindU.S4.sym);
			result = t;
			goto BeforeRet;
		}
		goto LA26;
		LA28: ;
		{
			asgnRefNoCycle((void**) (&(*t).destructor), destructoristrivial_481802);
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA26: ;
	}
	break;
	default:
	{
		result = NIM_NIL;
		goto BeforeRet;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, dodestructorstuff_481826)(Tcontext280023* c, Tsym225841* s, Tnode225809* n) {
	Ttype225847* t;
{	t = skiptypes_229167((*(*s).typ).sons->data[((NI) 1)], 8388608);
	{
		if (!((*t).kind == ((NU8) 9))) goto LA3;
		{
			NI i_481861;
			NI HEX3Atmp_481955;
			NI LOC6;
			NI res_481958;
			i_481861 = 0;
			HEX3Atmp_481955 = 0;
			LOC6 = 0;
			LOC6 = sonslen_228351(t);
			HEX3Atmp_481955 = (LOC6 - 1);
			res_481958 = ((NI) 1);
			{
				while (1) {
					if (!(res_481958 <= HEX3Atmp_481955)) goto LA8;
					i_481861 = res_481958;
					{
						if (!!(((*(*t).sons->data[i_481861]).kind == ((NU8) 12)))) goto LA11;
						localerror_196128((*n).info, ((NU16) 207), ((NimStringDesc*) &TMP3117));
						goto BeforeRet;
					}
					LA11: ;
					res_481958 += ((NI) 1);
				} LA8: ;
			}
		}
		t = base_255039(t);
	}
	goto LA1;
	LA3: ;
	{
		if (!((*t).kind == ((NU8) 54))) goto LA14;
		t = base_255039(t);
		{
			if (!!(((*t).kind == ((NU8) 10)))) goto LA18;
			localerror_196128((*n).info, ((NU16) 207), ((NimStringDesc*) &TMP3117));
			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_481911;
			NI HEX3Atmp_481964;
			NI LOC25;
			NI res_481967;
			i_481911 = 0;
			HEX3Atmp_481964 = 0;
			LOC25 = 0;
			LOC25 = sonslen_228351(t);
			HEX3Atmp_481964 = (NI)(LOC25 - ((NI) 1));
			res_481967 = ((NI) 0);
			{
				while (1) {
					if (!(res_481967 <= HEX3Atmp_481964)) goto LA27;
					i_481911 = res_481967;
					{
						Ttype225847* destructablet;
						{
							if (!((*t).sons->data[i_481911] == NIM_NIL)) goto LA31;
							goto LA28;
						}
						LA31: ;
						destructablet = instantiatedestructor_481822(c, (*t).sons->data[i_481911]);
						{
							Tnodeseq225803* LOC37;
							TY281106 LOC38;
							Tnode225809* LOC39;
							Tnode225809* LOC40;
							if (!!((destructablet == NIM_NIL))) goto LA35;
							LOC37 = 0;
							LOC37 = (Tnodeseq225803*) newSeq((&NTI225803), 2);
							memset((void*)LOC38, 0, sizeof(LOC38));
							LOC38[0] = usesym_398850((*destructablet).destructor);
							LOC39 = 0;
							LOC39 = HEX5BHEX5D_226244((*n).kindU.S6.sons->data[((NI) 3)], ((NI) 1));
							LOC38[1] = HEX5BHEX5D_226244(LOC39, ((NI) 0));
							asgnRefNoCycle((void**) (&LOC37->data[0]), LOC38[0]);
							asgnRefNoCycle((void**) (&LOC37->data[1]), LOC38[1]);
							LOC40 = 0;
							LOC40 = newnode_227607(((NU8) 27), (*(*t).sym).info, LOC37, NIM_NIL);
							addson_227819((*n).kindU.S6.sons->data[((NI) 6)], LOC40);
						}
						LA35: ;
					} LA28: ;
					res_481967 += ((NI) 1);
				} LA27: ;
			}
		}
	}
	LA22: ;
	}BeforeRet: ;
}

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

N_NIMCALL(void, semoverride_489632)(Tcontext280023* c, Tsym225841* s, Tnode225809* n) {
	NimStringDesc* LOC1;
{	LOC1 = 0;
	LOC1 = nsuNormalize((*(*s).name).s);
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3297))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3298))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3299))) goto LA3;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3300))) goto LA3;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3301))) goto LA4;
	goto LA5;
	LA2: ;
	{
		dodestructorstuff_481826(c, s, n);
		{
			NIM_BOOL LOC10;
			LOC10 = 0;
			LOC10 = experimentalmode_281290(c);
			if (!!(LOC10)) goto LA11;
			localerror_196139((*n).info, ((NimStringDesc*) &TMP3309));
		}
		LA11: ;
		(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	goto LA6;
	LA3: ;
	{
		{
			NIM_BOOL LOC16;
			NIM_BOOL LOC17;
			NI LOC18;
			Ttype225847* LOC20;
			Ttype225847* t;
			Ttype225847* LOC24;
			Ttype225847* LOC25;
			LOC16 = 0;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = len_228369((*s).typ);
			LOC17 = (LOC18 == ((NI) 2));
			if (!(LOC17)) goto LA19;
			LOC20 = 0;
			LOC20 = skiptypes_229167((*(*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_260092((*(*s).typ).sons->data[((NI) 1)], (*(*s).typ).sons->data[((NI) 0)], 0);
			LA21: ;
			if (!LOC16) goto LA22;
			LOC24 = 0;
			LOC24 = skiptypes_229167((*(*s).typ).sons->data[((NI) 1)], IL64(211106232576256));
			LOC25 = 0;
			LOC25 = lastson_228426(LOC24);
			t = skiptypes_229167(LOC25, IL64(211106232576256));
			{
				while (1) {
					{
						if (!((*t).kind == ((NU8) 10))) goto LA30;
						t = lastson_228426(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_255032(t, ((NU8) 0));
					LOC45 = rawNewString(LOC46->Sup.len + 35);
appendString(LOC45, ((NimStringDesc*) &TMP3310));
appendString(LOC45, LOC46);
					localerror_196128((*n).info, ((NU16) 4), LOC45);
				}
				LA40: ;
			}
			goto LA36;
			LA38: ;
			{
				NimStringDesc* LOC48;
				NimStringDesc* LOC49;
				LOC48 = 0;
				LOC49 = 0;
				LOC49 = typetostring_255032(t, ((NU8) 0));
				LOC48 = rawNewString(LOC49->Sup.len + 27);
appendString(LOC48, ((NimStringDesc*) &TMP3311));
appendString(LOC48, LOC49);
				localerror_196128((*n).info, ((NU16) 4), LOC48);
			}
			LA36: ;
		}
		goto LA14;
		LA22: ;
		{
			localerror_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3312));
		}
		LA14: ;
		(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	goto LA6;
	LA4: ;
	{
		Ttype225847* 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;
			Ttype225847* obj;
			Ttype225847* objb;
			LOC58 = 0;
			LOC59 = 0;
			LOC60 = 0;
			LOC60 = len_228369(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_228426(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_228426(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_260092(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_255032(obj, ((NU8) 0));
					LOC96 = rawNewString(LOC97->Sup.len + 28);
appendString(LOC96, ((NimStringDesc*) &TMP3313));
appendString(LOC96, LOC97);
					localerror_196128((*n).info, ((NU16) 4), LOC96);
				}
				LA91: ;
				goto BeforeRet;
			}
			LA89: ;
		}
		LA63: ;
		localerror_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3314));
	}
	goto LA6;
	LA5: ;
	{
		{
			if (!(((*s).flags &(1<<((((NU8) 30))&31)))!=0)) goto LA101;
			localerror_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3315));
		}
		LA101: ;
	}
	LA6: ;
	}BeforeRet: ;
}

N_NIMCALL(void, typeallowedcheck_457987)(Tlineinfo190352 info, Ttype225847* typ, NU8 kind) {
	Ttype225847* t;
	t = typeallowed_263654(typ, kind);
	{
		if (!!((t == NIM_NIL))) goto LA3;
		{
			NimStringDesc* LOC9;
			NimStringDesc* LOC10;
			if (!(t == typ)) goto LA7;
			LOC9 = 0;
			LOC10 = 0;
			LOC10 = typetostring_255032(typ, ((NU8) 0));
			LOC9 = rawNewString(LOC10->Sup.len + 16);
appendString(LOC9, ((NimStringDesc*) &TMP3316));
appendString(LOC9, LOC10);
appendString(LOC9, ((NimStringDesc*) &TMP3251));
			localerror_196139(info, LOC9);
		}
		goto LA5;
		LA7: ;
		{
			NimStringDesc* LOC12;
			NimStringDesc* LOC13;
			NimStringDesc* LOC14;
			LOC12 = 0;
			LOC13 = 0;
			LOC13 = typetostring_255032(t, ((NU8) 0));
			LOC14 = 0;
			LOC14 = typetostring_255032(typ, ((NU8) 0));
			LOC12 = rawNewString(LOC13->Sup.len + LOC14->Sup.len + 36);
appendString(LOC12, ((NimStringDesc*) &TMP3316));
appendString(LOC12, LOC13);
appendString(LOC12, ((NimStringDesc*) &TMP3317));
appendString(LOC12, LOC14);
appendString(LOC12, ((NimStringDesc*) &TMP3251));
			localerror_196139(info, LOC12);
		}
		LA5: ;
	}
	LA3: ;
}

static N_INLINE(void, paramstypecheck_458022)(Tcontext280023* c, Ttype225847* typ) {
	typeallowedcheck_457987((*(*typ).n).info, typ, ((NU8) 10));
}

N_NIMCALL(void, activate_457327)(Tcontext280023* c, Tnode225809* n) {
}

N_NIMCALL(void, changetype_457253)(Tnode225809* n, Ttype225847* newtype, NIM_BOOL check) {
{	switch ((*n).kind) {
	case ((NU8) 39):
	case ((NU8) 41):
	{
		{
			NI i_494278;
			NI HEX3Atmp_494413;
			NI LOC3;
			NI res_494416;
			i_494278 = 0;
			HEX3Atmp_494413 = 0;
			LOC3 = 0;
			LOC3 = sonslen_228387(n);
			HEX3Atmp_494413 = (NI)(LOC3 - ((NI) 1));
			res_494416 = ((NI) 0);
			{
				while (1) {
					Ttype225847* LOC6;
					if (!(res_494416 <= HEX3Atmp_494413)) goto LA5;
					i_494278 = res_494416;
					LOC6 = 0;
					LOC6 = elemtype_255522(newtype);
					changetype_457253((*n).kindU.S6.sons->data[i_494278], LOC6, check);
					res_494416 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 37):
	{
		Ttype225847* tup;
		tup = skiptypes_229167(newtype, 2048);
		{
			if (!!(((*tup).kind == ((NU8) 18)))) goto LA10;
			{
				if (!((*tup).kind == ((NU8) 17))) goto LA14;
				goto BeforeRet;
			}
			LA14: ;
			globalerror_196118((*n).info, ((NimStringDesc*) &TMP3332));
		}
		goto LA8;
		LA10: ;
		{
			NIM_BOOL LOC17;
			NI LOC18;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = sonslen_228387(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_494322;
				NI HEX3Atmp_494421;
				NI LOC23;
				NI res_494424;
				i_494322 = 0;
				HEX3Atmp_494421 = 0;
				LOC23 = 0;
				LOC23 = sonslen_228387(n);
				HEX3Atmp_494421 = (NI)(LOC23 - ((NI) 1));
				res_494424 = ((NI) 0);
				{
					while (1) {
						Tnode225809* m;
						if (!(res_494424 <= HEX3Atmp_494421)) goto LA25;
						i_494322 = res_494424;
						m = (*(*n).kindU.S6.sons->data[i_494322]).kindU.S6.sons->data[((NI) 0)];
						{
							if (!!(((*m).kind == ((NU8) 3)))) goto LA28;
							globalerror_196118((*m).info, ((NimStringDesc*) &TMP3333));
							goto BeforeRet;
						}
						LA28: ;
						{
							Tsym225841* f;
							if (!!(((*tup).n == NIM_NIL))) goto LA32;
							f = getsymfromlist_233228((*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*) &TMP3334));
appendString(LOC38, (*(*(*m).kindU.S4.sym).name).s);
								globalerror_196118((*m).info, LOC38);
								goto BeforeRet;
							}
							LA36: ;
							changetype_457253((*(*n).kindU.S6.sons->data[i_494322]).kindU.S6.sons->data[((NI) 1)], (*f).typ, check);
						}
						goto LA30;
						LA32: ;
						{
							changetype_457253((*(*n).kindU.S6.sons->data[i_494322]).kindU.S6.sons->data[((NI) 1)], (*tup).sons->data[i_494322], check);
						}
						LA30: ;
						res_494424 += ((NI) 1);
					} LA25: ;
				}
			}
		}
		goto LA8;
		LA20: ;
		{
			{
				NI i_494381;
				NI HEX3Atmp_494429;
				NI LOC42;
				NI res_494432;
				i_494381 = 0;
				HEX3Atmp_494429 = 0;
				LOC42 = 0;
				LOC42 = sonslen_228387(n);
				HEX3Atmp_494429 = (NI)(LOC42 - ((NI) 1));
				res_494432 = ((NI) 0);
				{
					while (1) {
						if (!(res_494432 <= HEX3Atmp_494429)) goto LA44;
						i_494381 = res_494432;
						changetype_457253((*n).kindU.S6.sons->data[i_494381], (*tup).sons->data[i_494381], check);
						res_494432 += ((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_255004(newtype);
				LOC54 = (value < LOC55);
				if (LOC54) goto LA56;
				LOC57 = 0;
				LOC57 = lastord_255010(newtype);
				LOC54 = (LOC57 < value);
				LA56: ;
				if (!LOC54) goto LA58;
				LOC60 = 0;
				LOC61 = 0;
				LOC61 = nimInt64ToStr(value);
				LOC62 = 0;
				LOC62 = typetostring_255032(newtype, ((NU8) 0));
				LOC60 = rawNewString(LOC61->Sup.len + LOC62->Sup.len + 19);
appendString(LOC60, ((NimStringDesc*) &TMP3335));
appendString(LOC60, LOC61);
appendString(LOC60, ((NimStringDesc*) &TMP3336));
appendString(LOC60, LOC62);
				localerror_196128((*n).info, ((NU16) 4), LOC60);
			}
			LA58: ;
		}
		LA50: ;
	}
	break;
	default:
	{
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).typ), newtype);
	}BeforeRet: ;
}

N_NIMCALL(void, fixabstracttype_494616)(Tcontext280023* c, Tnode225809* n) {
	{
		NI i_494639;
		NI HEX3Atmp_494802;
		NI LOC2;
		NI res_494805;
		i_494639 = 0;
		HEX3Atmp_494802 = 0;
		LOC2 = 0;
		LOC2 = len_226098(n);
		HEX3Atmp_494802 = (LOC2 - 1);
		res_494805 = ((NI) 1);
		{
			while (1) {
				Tnode225809* it;
				if (!(res_494805 <= HEX3Atmp_494802)) goto LA4;
				i_494639 = res_494805;
				it = (*n).kindU.S6.sons->data[i_494639];
				{
					NIM_BOOL LOC7;
					Ttype225847* LOC9;
					LOC7 = 0;
					LOC7 = ((*it).kind == ((NU8) 59));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = skiptypes_229167((*it).typ, IL64(211106240964864));
					LOC7 = !(((*LOC9).kind == ((NU8) 27) || (*LOC9).kind == ((NU8) 48)));
					LA8: ;
					if (!LOC7) goto LA10;
					{
						Ttype225847* LOC14;
						Ttype225847* s;
						LOC14 = 0;
						LOC14 = skiptypes_229167((*(*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_229167((*it).typ, IL64(211106240964864));
						{
							if (!!(((*s).kind == ((NU8) 6)))) goto LA19;
							changetype_457253((*it).kindU.S6.sons->data[((NI) 1)], s, NIM_TRUE);
						}
						LA19: ;
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_494639]), (*it).kindU.S6.sons->data[((NI) 1)]);
					}
					LA15: ;
				}
				LA10: ;
				res_494805 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(NU8, isassignable_494842)(Tcontext280023* c, Tnode225809* n, NIM_BOOL isunsafeaddr) {
	NU8 result;
	result = 0;
	result = isassignable_306056((*(*c).p).owner, n, isunsafeaddr);
	return result;
}

N_NIMCALL(void, performprocvarcheck_481702)(Tcontext280023* c, Tnode225809* n, Tsym225841* s) {
	NI smoduleid;
	Tsym225841* LOC1;
	LOC1 = 0;
	LOC1 = getmodule_233243(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;
		{
			{
				Tsym225841* module_481741;
				Tsymseq225811* HEX3Atmp_481745;
				NI i_481748;
				NI L_481750;
				module_481741 = 0;
				HEX3Atmp_481745 = 0;
				HEX3Atmp_481745 = (*c).friendmodules;
				i_481748 = ((NI) 0);
				L_481750 = (HEX3Atmp_481745 ? HEX3Atmp_481745->Sup.len : 0);
				{
					while (1) {
						if (!(i_481748 < L_481750)) goto LA13;
						module_481741 = HEX3Atmp_481745->data[i_481748];
						{
							if (!(smoduleid == (*module_481741).Sup.id)) goto LA16;
							goto LA10;
						}
						LA16: ;
						i_481748 += ((NI) 1);
					} LA13: ;
				}
			}
			localerror_196128((*n).info, ((NU16) 138), (*(*s).name).s);
		} LA10: ;
	}
	LA8: ;
}

N_NIMCALL(void, semprocvarcheck_481766)(Tcontext280023* c, Tnode225809* n_481769) {
	Tnode225809* n;
	n = skipconv_264935(n_481769);
	{
		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_481702(c, n, (*n).kindU.S4.sym);
	}
	LA5: ;
}

N_NIMCALL(Tnode225809*, newhiddenaddrtaken_494851)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 65));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = (gcmd_167134 == ((NU8) 2));
		if (LOC5) goto LA6;
		LOC5 = (((*(*c).module).flags &(1<<((((NU8) 27))&31)))!=0);
		LA6: ;
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA7;
		checksonslen_281260(n, ((NI) 1));
		result = (*n).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA7: ;
	{
		Ttype225847* LOC10;
		LOC10 = 0;
		LOC10 = makevartype_280645(c, (*n).typ);
		result = newnodeit_227807(((NU8) 64), (*n).info, LOC10);
		addson_227819(result, n);
		{
			NU8 LOC13;
			LOC13 = 0;
			LOC13 = isassignable_494842(c, n, NIM_FALSE);
			if (!!(((6 &(1<<((LOC13)&7)))!=0))) goto LA14;
			localerror_196128((*n).info, ((NU16) 131), ((NimStringDesc*) &TMP3117));
		}
		LA14: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, analyseifaddresstaken_494900)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC4;
			Ttype225847* LOC6;
			LOC4 = 0;
			LOC4 = !(((*(*n).kindU.S4.sym).typ == NIM_NIL));
			if (!(LOC4)) goto LA5;
			LOC6 = 0;
			LOC6 = skiptypes_229167((*(*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_494851(c, n);
		}
		LA7: ;
	}
	break;
	case ((NU8) 45):
	{
		checksonslen_281260(n, ((NI) 2));
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 3)))) goto LA12;
			internalerror_196172((*n).info, ((NimStringDesc*) &TMP3338));
			goto BeforeRet;
		}
		LA12: ;
		{
			Ttype225847* LOC16;
			LOC16 = 0;
			LOC16 = skiptypes_229167((*(*(*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_494851(c, n);
		}
		LA17: ;
	}
	break;
	case ((NU8) 42):
	{
		checkminsonslen_281270(n, ((NI) 1));
		{
			Ttype225847* LOC22;
			LOC22 = 0;
			LOC22 = skiptypes_229167((*(*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_494851(c, n);
		}
		LA23: ;
	}
	break;
	default:
	{
		result = newhiddenaddrtaken_494851(c, n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, analyseifaddresstakenincall_495052)(Tcontext280023* c, Tnode225809* n) {
	Ttype225847* t;
{	checkminsonslen_281270(n, ((NI) 1));
	t = skiptypes_229167((*(*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 = ((TMP3337[(*(*(*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_495096;
			NI HEX3Atmp_495214;
			NI LOC8;
			NI res_495217;
			i_495096 = 0;
			HEX3Atmp_495214 = 0;
			LOC8 = 0;
			LOC8 = sonslen_228387(n);
			HEX3Atmp_495214 = (NI)(LOC8 - ((NI) 1));
			res_495217 = ((NI) 1);
			{
				while (1) {
					if (!(res_495217 <= HEX3Atmp_495214)) goto LA10;
					i_495096 = res_495217;
					{
						NIM_BOOL LOC13;
						NIM_BOOL LOC14;
						NI LOC15;
						Ttype225847* LOC18;
						LOC13 = 0;
						LOC14 = 0;
						LOC15 = 0;
						LOC15 = sonslen_228351(t);
						LOC14 = (i_495096 < LOC15);
						if (!(LOC14)) goto LA16;
						LOC14 = !(((*t).sons->data[i_495096] == NIM_NIL));
						LA16: ;
						LOC13 = LOC14;
						if (!(LOC13)) goto LA17;
						LOC18 = 0;
						LOC18 = skiptypes_229167((*t).sons->data[i_495096], IL64(211106232576000));
						LOC13 = ((*LOC18).kind == ((NU8) 23));
						LA17: ;
						if (!LOC13) goto LA19;
						{
							NU8 LOC23;
							LOC23 = 0;
							LOC23 = isassignable_494842(c, (*n).kindU.S6.sons->data[i_495096], NIM_FALSE);
							if (!!(((6 &(1<<((LOC23)&7)))!=0))) goto LA24;
							{
								if (!!(((*(*n).kindU.S6.sons->data[i_495096]).kind == ((NU8) 64)))) goto LA28;
								localerror_196128((*(*n).kindU.S6.sons->data[i_495096]).info, ((NU16) 131), ((NimStringDesc*) &TMP3117));
							}
							LA28: ;
						}
						LA24: ;
					}
					LA19: ;
					res_495217 += ((NI) 1);
				} LA10: ;
			}
		}
		goto BeforeRet;
	}
	LA5: ;
	{
		NI i_495166;
		NI HEX3Atmp_495222;
		NI LOC31;
		NI res_495225;
		i_495166 = 0;
		HEX3Atmp_495222 = 0;
		LOC31 = 0;
		LOC31 = sonslen_228387(n);
		HEX3Atmp_495222 = (NI)(LOC31 - ((NI) 1));
		res_495225 = ((NI) 1);
		{
			while (1) {
				if (!(res_495225 <= HEX3Atmp_495222)) goto LA33;
				i_495166 = res_495225;
				{
					if (!((*(*n).kindU.S6.sons->data[i_495166]).kind == ((NU8) 32))) goto LA36;
					analyseifaddresstakenincall_495052(c, (*n).kindU.S6.sons->data[i_495166]);
				}
				LA36: ;
				semprocvarcheck_481766(c, (*n).kindU.S6.sons->data[i_495166]);
				{
					NIM_BOOL LOC40;
					NI LOC41;
					Ttype225847* LOC43;
					LOC40 = 0;
					LOC41 = 0;
					LOC41 = sonslen_228351(t);
					LOC40 = (i_495166 < LOC41);
					if (!(LOC40)) goto LA42;
					LOC43 = 0;
					LOC43 = skiptypes_229167((*t).sons->data[i_495166], IL64(211106232576000));
					LOC40 = ((*LOC43).kind == ((NU8) 23));
					LA42: ;
					if (!LOC40) goto LA44;
					{
						if (!!(((*(*n).kindU.S6.sons->data[i_495166]).kind == ((NU8) 64)))) goto LA48;
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_495166]), analyseifaddresstaken_494900(c, (*n).kindU.S6.sons->data[i_495166]));
					}
					LA48: ;
				}
				LA44: ;
				res_495225 += ((NI) 1);
			} LA33: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode225809*, semaddr_495250)(Tcontext280023* c, Tnode225809* n, NIM_BOOL isunsafeaddr) {
	Tnode225809* result;
	Tnode225809* x;
	result = 0;
	result = newnodei_227351(((NU8) 63), (*n).info);
	x = semexprwithtype_457211(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_494842(c, x, isunsafeaddr);
		if (!!(((6 &(1<<((LOC7)&7)))!=0))) goto LA8;
		localerror_196128((*n).info, ((NU16) 129), ((NimStringDesc*) &TMP3117));
	}
	LA8: ;
	add_226165(result, x);
	asgnRefNoCycle((void**) (&(*result).typ), makeptrtype_280214(c, (*x).typ));
	return result;
}

N_NIMCALL(Tnode225809*, semtypeof_495293)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* typexpr;
	Ttype225847* LOC1;
	result = 0;
	result = newnodei_227351(((NU8) 132), (*n).info);
	typexpr = semexprwithtype_457211(c, n, 4);
	add_226165(result, typexpr);
	LOC1 = 0;
	LOC1 = skiptypes_229167((*typexpr).typ, IL64(562949953421568));
	asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_280684(c, LOC1));
	return result;
}

N_NIMCALL(Tnode225809*, semderef_498161)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Ttype225847* t;
	result = 0;
	checksonslen_281260(n, ((NI) 1));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
	result = n;
	t = skiptypes_229167((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, 8390656);
	switch ((*t).kind) {
	case ((NU8) 22):
	case ((NU8) 21):
	{
		asgnRefNoCycle((void**) (&(*n).typ), lastson_228426(t));
	}
	break;
	default:
	{
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode225809*, semsymgenericinstantiation_492239)(Tcontext280023* c, Tnode225809* n, Tsym225841* s) {
	Tnode225809* result;
	result = 0;
	result = symchoice_471790(c, n, s, ((NU8) 0));
	return result;
}

N_NIMCALL(Tnode225809*, explicitgenericsym_464018)(Tcontext280023* c, Tnode225809* n, Tsym225841* s) {
	Tnode225809* result;
	Tcandidate388209 m;
	Tsym225841* newinst;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_388303(c, (&m), s, n, ((NI) -1));
	newinst = generateinstance_460450(c, s, m.bindings, (*n).info);
	markused_388253((*n).info, s);
	result = newsymnode_227338(newinst, (*n).info);
	return result;
}

N_NIMCALL(Tnode225809*, explicitgenericinsterror_464011)(Tnode225809* n) {
	Tnode225809* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = rendertree_247059(n, 0);
	localerror_196128((*n).info, ((NU16) 128), LOC1);
	result = n;
	return result;
}

N_NIMCALL(Tnode225809*, explicitgenericinstantiation_464205)(Tcontext280023* c, Tnode225809* n, Tsym225841* s_464209) {
	Tnode225809* result;
	Tsym225841* s;
	Tnode225809* a;
{	result = 0;
	{
		NI i_464411;
		NI HEX3Atmp_464486;
		NI LOC2;
		NI res_464489;
		i_464411 = 0;
		HEX3Atmp_464486 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_464486 = (NI)(LOC2 - ((NI) 1));
		res_464489 = ((NI) 1);
		{
			while (1) {
				if (!(res_464489 <= HEX3Atmp_464486)) goto LA4;
				i_464411 = res_464489;
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_464411]).typ), semtypenode_457269(c, (*n).kindU.S6.sons->data[i_464411], NIM_NIL));
				res_464489 += ((NI) 1);
			} LA4: ;
		}
	}
	s = s_464209;
	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_226126((*(*s).ast).kindU.S6.sons->data[((NI) 2)]);
			LOC12 = 0;
			LOC12 = len_226098(n);
			if (!!((LOC11 == (NI)(LOC12 - ((NI) 1))))) goto LA13;
			expected = safelen_226126((*(*s).ast).kindU.S6.sons->data[((NI) 2)]);
			LOC15 = 0;
			LOC16 = 0;
			LOC16 = rendertree_247059(n, 0);
			LOC17 = 0;
			LOC17 = len_226098(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*) &TMP3341));
appendString(LOC15, LOC16);
appendString(LOC15, ((NimStringDesc*) &TMP3342));
appendString(LOC15, LOC18);
appendString(LOC15, ((NimStringDesc*) &TMP3343));
appendString(LOC15, LOC19);
			localerror_196128((*n).info, ((NU16) 4), LOC15);
			result = n;
			goto BeforeRet;
		}
		LA13: ;
		result = explicitgenericsym_464018(c, n, s);
	}
	goto LA5;
	LA7: ;
	{
		if (!((*a).kind == ((NU8) 56) || (*a).kind == ((NU8) 57))) goto LA21;
		result = newnodei_227351((*a).kind, (*n).info);
		{
			NI i_464456;
			NI HEX3Atmp_464494;
			NI LOC24;
			NI res_464497;
			i_464456 = 0;
			HEX3Atmp_464494 = 0;
			LOC24 = 0;
			LOC24 = len_226098(a);
			HEX3Atmp_464494 = (NI)(LOC24 - ((NI) 1));
			res_464497 = ((NI) 0);
			{
				while (1) {
					Tsym225841* candidate;
					if (!(res_464497 <= HEX3Atmp_464494)) goto LA26;
					i_464456 = res_464497;
					candidate = (*(*a).kindU.S6.sons->data[i_464456]).kindU.S4.sym;
					{
						if (!((126976 &(1<<(((*candidate).kind)&31)))!=0)) goto LA29;
						{
							NI LOC33;
							NI LOC34;
							Tnode225809* LOC37;
							LOC33 = 0;
							LOC33 = safelen_226126((*(*candidate).ast).kindU.S6.sons->data[((NI) 2)]);
							LOC34 = 0;
							LOC34 = len_226098(n);
							if (!(LOC33 == (NI)(LOC34 - ((NI) 1)))) goto LA35;
							LOC37 = 0;
							LOC37 = explicitgenericsym_464018(c, n, candidate);
							add_226165(result, LOC37);
						}
						LA35: ;
					}
					LA29: ;
					res_464497 += ((NI) 1);
				} LA26: ;
			}
		}
		{
			NIM_BOOL LOC40;
			NI LOC41;
			LOC40 = 0;
			LOC41 = 0;
			LOC41 = len_226098(result);
			LOC40 = (LOC41 == ((NI) 1));
			if (!(LOC40)) goto LA42;
			LOC40 = ((*a).kind == ((NU8) 56));
			LA42: ;
			if (!LOC40) goto LA43;
			result = HEX5BHEX5D_226244(result, ((NI) 0));
		}
		LA43: ;
	}
	goto LA5;
	LA21: ;
	{
		result = explicitgenericinsterror_464011(n);
	}
	LA5: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semsubscript_495315)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Ttype225847* arr;
{	result = 0;
	{
		NI LOC3;
		Tnode225809* x;
		Tnode225809* LOC10;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 1))) goto LA4;
		x = semderef_498161(c, n);
		{
			if (!(x == NIM_NIL)) goto LA8;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA8: ;
		result = newnodeit_227807(((NU8) 47), (*x).info, (*x).typ);
		LOC10 = 0;
		LOC10 = HEX5BHEX5D_226244(x, ((NI) 0));
		add_226165(result, LOC10);
		goto BeforeRet;
	}
	LA4: ;
	checkminsonslen_281270(n, ((NI) 2));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 0)], 1024));
	arr = skiptypes_229167((*(*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):
	{
		Ttype225847* indextype;
		Tnode225809* arg;
		{
			NI LOC14;
			LOC14 = 0;
			LOC14 = len_226098(n);
			if (!!((LOC14 == ((NI) 2)))) goto LA15;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA15: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_497233((*n).kindU.S6.sons->data[((NI) 0)]));
		asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_498216;
			NI HEX3Atmp_498363;
			NI LOC18;
			NI res_498366;
			i_498216 = 0;
			HEX3Atmp_498363 = 0;
			LOC18 = 0;
			LOC18 = sonslen_228387(n);
			HEX3Atmp_498363 = (NI)(LOC18 - ((NI) 1));
			res_498366 = ((NI) 1);
			{
				while (1) {
					if (!(res_498366 <= HEX3Atmp_498363)) goto LA20;
					i_498216 = res_498366;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_498216]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[i_498216], (flags & 36)));
					res_498366 += ((NI) 1);
				} LA20: ;
			}
		}
		{
			if (!((*arr).kind == ((NU8) 16))) goto LA23;
			indextype = (*arr).sons->data[((NI) 0)];
		}
		goto LA21;
		LA23: ;
		{
			indextype = getsystype_274190(((NU8) 31));
		}
		LA21: ;
		arg = indextypesmatch_457348(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_255522(arr));
		}
		LA28: ;
	}
	break;
	case ((NU8) 8):
	{
		Ttype225847* LOC31;
		result = n;
		LOC31 = 0;
		LOC31 = semtypenode_457269(c, n, NIM_NIL);
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_280684(c, LOC31));
	}
	break;
	case ((NU8) 18):
	{
		checksonslen_281260(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_497233((*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_458485(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		{
			Ttype225847* LOC35;
			NI64 idx;
			LOC35 = 0;
			LOC35 = skiptypes_229167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, 1083392);
			if (!((*LOC35).kind >= ((NU8) 31) && (*LOC35).kind <= ((NU8) 35))) goto LA36;
			idx = getordvalue_255178((*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_228351(arr);
				LOC40 = (idx < ((NI64) (LOC42)));
				LA41: ;
				if (!LOC40) goto LA43;
				asgnRefNoCycle((void**) (&(*n).typ), (*arr).sons->data[idx]);
			}
			goto LA38;
			LA43: ;
			{
				localerror_196128((*n).info, ((NU16) 190), ((NimStringDesc*) &TMP3117));
			}
			LA38: ;
		}
		goto LA33;
		LA36: ;
		{
			localerror_196128((*n).info, ((NU16) 87), ((NimStringDesc*) &TMP3117));
		}
		LA33: ;
		result = n;
	}
	break;
	default:
	{
		Tsym225841* 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: ;
		{
			Tnode225809* LOC53;
			Tnode225809* LOC56;
			LOC53 = 0;
			LOC53 = HEX5BHEX5D_226244(n, ((NI) 0));
			if (!((*LOC53).kind == ((NU8) 56) || (*LOC53).kind == ((NU8) 57))) goto LA54;
			LOC56 = 0;
			LOC56 = HEX5BHEX5D_226244((*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_492239(c, (*n).kindU.S6.sons->data[((NI) 0)], s));
			result = explicitgenericinstantiation_464205(c, n, s);
		}
		goto LA58;
		LA62: ;
		{
			NIM_BOOL LOC65;
			Ttype225847* 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_457269(c, n, NIM_NIL);
			result = symnodefromtype_458120(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(Tnode225809*, semarrget_495337)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Tnode225809* oldbracketexpr;
	result = 0;
	result = newnodei_227351(((NU8) 42), (*n).info);
	{
		NI i_495370;
		Slice90370 HEX3Atmp_495383;
		NI LOC2;
		i_495370 = 0;
		memset((void*)(&HEX3Atmp_495383), 0, sizeof(HEX3Atmp_495383));
		LOC2 = 0;
		LOC2 = len_226098(n);
		HEX3Atmp_495383 = HEX2EHEX2E_105290(((NI) 1), (LOC2 - 1));
		{
			NI x_495387;
			NI HEX3Atmp_495389;
			NI HEX3Atmp_495391;
			NI res_495393;
			x_495387 = 0;
			HEX3Atmp_495389 = 0;
			HEX3Atmp_495391 = 0;
			HEX3Atmp_495389 = HEX3Atmp_495383.a;
			HEX3Atmp_495391 = HEX3Atmp_495383.b;
			res_495393 = HEX3Atmp_495389;
			{
				while (1) {
					Tnode225809* LOC6;
					if (!(res_495393 <= HEX3Atmp_495391)) goto LA5;
					x_495387 = res_495393;
					i_495370 = x_495387;
					LOC6 = 0;
					LOC6 = HEX5BHEX5D_226244(n, i_495370);
					add_226165(result, LOC6);
					res_495393 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	oldbracketexpr = (*(*c).p).bracketexpr;
	result = semsubscript_495315(c, result, flags);
	asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
	{
		NimStringDesc* LOC11;
		NimStringDesc* LOC12;
		if (!result == 0) goto LA9;
		LOC11 = 0;
		LOC12 = 0;
		LOC12 = HEX24_247090(n);
		LOC11 = rawNewString(LOC12->Sup.len + 19);
appendString(LOC11, ((NimStringDesc*) &TMP3344));
appendString(LOC11, LOC12);
		localerror_196139((*n).info, LOC11);
		result = n;
	}
	LA9: ;
	return result;
}

static N_INLINE(Tnode225809*, skipaddr_495320)(Tnode225809* n) {
	Tnode225809* 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(Tnode225809*, semarrput_495412)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Tnode225809* b;
	Tnode225809* LOC1;
	Tnode225809* LOC2;
	result = 0;
	b = newnodei_227351(((NU8) 42), (*n).info);
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_226244(n, ((NI) 1));
	LOC2 = 0;
	LOC2 = skipaddr_495320(LOC1);
	add_226165(b, LOC2);
	{
		NI i_495432;
		NI HEX3Atmp_495438;
		NI LOC4;
		NI res_495441;
		i_495432 = 0;
		HEX3Atmp_495438 = 0;
		LOC4 = 0;
		LOC4 = len_226098(n);
		HEX3Atmp_495438 = (NI)(LOC4 - ((NI) 2));
		res_495441 = ((NI) 2);
		{
			while (1) {
				Tnode225809* LOC7;
				if (!(res_495441 <= HEX3Atmp_495438)) goto LA6;
				i_495432 = res_495441;
				LOC7 = 0;
				LOC7 = HEX5BHEX5D_226244(n, i_495432);
				add_226165(b, LOC7);
				res_495441 += ((NI) 1);
			} LA6: ;
		}
	}
	result = newnodei_227407(((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_228406(n));
	result = semasgn_495310(c, result, ((NU8) 1));
	return result;
}

N_NIMCALL(Tnode225809*, semasgnopr_495457)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = newnodei_227407(((NU8) 73), (*n).info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), HEX5BHEX5D_226244(n, ((NI) 1)));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), HEX5BHEX5D_226244(n, ((NI) 2)));
	result = semasgn_495310(c, result, ((NU8) 2));
	return result;
}

N_NIMCALL(Tnode225809*, semispartof_495467)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	NU8 r;
	Tnode225809* LOC1;
	Tnode225809* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_226244(n, ((NI) 1));
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_226244(n, ((NI) 2));
	r = ispartof_447375(LOC1, LOC2);
	result = newintnodet_293028(((NI64) (r)), n);
	return result;
}

N_NIMCALL(Tnode225809*, evaltypetrait_495514)(Tnode225809* trait, Ttype225847* operand, Tsym225841* context) {
	Tnode225809* result;
	Ttype225847* typ;
	NimStringDesc* LOC1;
	result = 0;
	typ = skiptypes_229167(operand, 256);
	LOC1 = 0;
	LOC1 = nsuNormalize((*(*(*trait).kindU.S4.sym).name).s);
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3347))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3348))) goto LA3;
	goto LA4;
	LA2: ;
	{
		NimStringDesc* LOC7;
		LOC7 = 0;
		LOC7 = typetostring_255032(typ, ((NU8) 0));
		result = newstrnode_226644(((NU8) 20), LOC7);
		asgnRefNoCycle((void**) (&(*result).typ), newtype_228140(((NU8) 28), context));
		(*result).info = (*trait).info;
	}
	goto LA5;
	LA3: ;
	{
		NI LOC9;
		LOC9 = 0;
		LOC9 = len_228369(typ);
		result = newintnode_226608(((NU8) 6), ((NI64) ((NI)(LOC9 - ((NI) (((*typ).kind == ((NU8) 25))))))));
		asgnRefNoCycle((void**) (&(*result).typ), newtype_228140(((NU8) 31), context));
		(*result).info = (*trait).info;
	}
	goto LA5;
	LA4: ;
	{
		{
			NimStringDesc* LOC15;
			if (!NIM_TRUE) goto LA13;
			LOC15 = 0;
			LOC15 = HEX24_196279(TMP3349);
			internalerror_196191(LOC15);
		}
		LA13: ;
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode225809*, semtypetraits_495551)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Ttype225847* t;
	result = 0;
	checkminsonslen_281270(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_196279(TMP3345);
		internalerror_196191(LOC7);
	}
	LA5: ;
	{
		NI LOC10;
		Tnode225809* LOC13;
		Tsym225841* LOC14;
		LOC10 = 0;
		LOC10 = sonslen_228351(t);
		if (!(((NI) 0) < LOC10)) goto LA11;
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_226244(n, ((NI) 0));
		LOC14 = 0;
		LOC14 = getcurrowner_280258();
		result = evaltypetrait_495514(LOC13, t, LOC14);
	}
	goto LA8;
	LA11: ;
	{
		result = n;
	}
	LA8: ;
	return result;
}

N_NIMCALL(NI, expectintlit_495485)(Tcontext280023* c, Tnode225809* n) {
	NI result;
	Tnode225809* 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_196128((*n).info, ((NU16) 7), ((NimStringDesc*) &TMP3117));
	}
	break;
	}
	return result;
}

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

N_NIMCALL(Tnode225809*, seminstantiationinfo_495495)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	NI idx;
	NI usefullpaths;
	Tlineinfo190352 info;
	Tnode225809* filename;
	Ttype225847* LOC1;
	Tnode225809* line;
	Ttype225847* LOC7;
	NI LOC8;
	result = 0;
	result = newnodeit_227807(((NU8) 37), (*n).info, (*n).typ);
	idx = expectintlit_495485(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	usefullpaths = expectintlit_495485(c, (*n).kindU.S6.sons->data[((NI) 2)]);
	info = getinfocontext_191626(idx);
	LOC1 = 0;
	LOC1 = getsystype_274190(((NU8) 28));
	filename = newnodeit_227807(((NU8) 20), (*n).info, LOC1);
	{
		if (!!((usefullpaths == ((NI) 0)))) goto LA4;
		asgnRefNoCycle((void**) (&(*filename).kindU.S3.strval), tofullpath_191665(info.fileindex));
	}
	goto LA2;
	LA4: ;
	{
		asgnRefNoCycle((void**) (&(*filename).kindU.S3.strval), tofilename_191655(info.fileindex));
	}
	LA2: ;
	LOC7 = 0;
	LOC7 = getsystype_274190(((NU8) 31));
	line = newnodeit_227807(((NU8) 6), (*n).info, LOC7);
	LOC8 = 0;
	LOC8 = tolinenumber_191839(info);
	(*line).kindU.S1.intval = ((NI64) (LOC8));
	add_226165(result, filename);
	add_226165(result, line);
	return result;
}

N_NIMCALL(Tnode225809*, semord_495589)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	NI64 LOC1;
	NI64 LOC2;
	Ttype225847* LOC3;
	result = 0;
	result = n;
	LOC1 = 0;
	LOC1 = firstord_255004((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
	LOC2 = 0;
	LOC2 = lastord_255010((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
	LOC3 = 0;
	LOC3 = getsystype_274190(((NU8) 31));
	asgnRefNoCycle((void**) (&(*result).typ), makerangetype_281193(c, LOC1, LOC2, (*n).info, LOC3));
	return result;
}

N_NIMCALL(Tnode225809*, semlowhigh_493837)(Tcontext280023* c, Tnode225809* n, NU8 m) {
	Tnode225809* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_196128((*n).info, ((NU16) 73), optostr_493843[(m)- 7]);
	}
	goto LA1;
	LA4: ;
	{
		Ttype225847* typ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 1)], 32));
		typ = skiptypes_229167((*(*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_274190(((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_229167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(2306054115454658816)));
		}
		break;
		case ((NU8) 12):
		{
			Tnode225809* LOC11;
			LOC11 = 0;
			LOC11 = copytree_230028(n);
			asgnRefNoCycle((void**) (&(*n).typ), maketypefromexpr_280729(c, LOC11));
		}
		break;
		default:
		{
			localerror_196128((*n).info, ((NU16) 71), optostr_493843[(m)- 7]);
		}
		break;
		}
	}
	LA1: ;
	result = n;
	return result;
}

N_NIMCALL(Tnode225809*, semshallowcopy_495661)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	result = 0;
	{
		NI LOC3;
		Tnode225809* LOC6;
		Tnode225809* LOC7;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		result = newnodei_227351(((NU8) 74), (*n).info);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_226244(n, ((NI) 1));
		add_226165(result, LOC6);
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_226244(n, ((NI) 2));
		add_226165(result, LOC7);
		result = semasgn_495310(c, result, ((NU8) 0));
	}
	goto LA1;
	LA4: ;
	{
		result = semdirectop_458039(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, sembindsym_495599)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* sl;
	Tnode225809* ismixin;
	Tnode225809* id;
	Tident198021* LOC13;
	Tsym225841* s;
{	result = 0;
	result = copynode_229660(n);
	add_226165(result, (*n).kindU.S6.sons->data[((NI) 0)]);
	sl = semconstexpr_458485(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	{
		if (!!(((*sl).kind == ((NU8) 20) || (*sl).kind == ((NU8) 21) || (*sl).kind == ((NU8) 22)))) goto LA3;
		localerror_196128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 6), ((NimStringDesc*) &TMP3117));
		result = errornode_281171(c, n);
		goto BeforeRet;
	}
	LA3: ;
	ismixin = semconstexpr_458485(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_196128((*(*n).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 108), ((NimStringDesc*) &TMP3117));
		result = errornode_281171(c, n);
		goto BeforeRet;
	}
	LA11: ;
	LOC13 = 0;
	LOC13 = getident_198463((*sl).kindU.S3.strval);
	id = newidentnode_227313(LOC13, (*n).info);
	s = qualifiedlookup_286864(c, id, 2);
	{
		Tnode225809* sc;
		if (!!((s == NIM_NIL))) goto LA16;
		sc = symchoice_471790(c, id, s, ((NU8) ((*ismixin).kindU.S1.intval)));
		add_226165(result, sc);
	}
	goto LA14;
	LA16: ;
	{
		localerror_196128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 63), (*sl).kindU.S3.strval);
	}
	LA14: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isnegative_495683)(Tnode225809* n_495685) {
	NIM_BOOL result;
	Tnode225809* n;
	result = 0;
	n = skipconv_264935(n_495685);
	{
		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_495666)(Ttype225847* t_495668) {
	NIM_BOOL result;
	Ttype225847* t;
	NIM_BOOL LOC1;
	NI64 LOC3;
	result = 0;
	t = skiptypes_229167(t_495668, IL64(211106232576256));
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 16));
	if (!(LOC1)) goto LA2;
	LOC3 = 0;
	LOC3 = firstord_255004(t);
	LOC1 = !((LOC3 == IL64(0)));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Tnode225809*, magicsafteroverloadresolution_495738)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Tnode225809* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_226244(n, ((NI) 0));
	switch ((*(*LOC1).kindU.S4.sym).magic) {
	case ((NU8) 13):
	{
		Tnode225809* LOC3;
		checksonslen_281260(n, ((NI) 2));
		LOC3 = 0;
		LOC3 = HEX5BHEX5D_226244(n, ((NI) 0));
		result = semaddr_495250(c, (*n).kindU.S6.sons->data[((NI) 1)], eqStrings((*(*(*LOC3).kindU.S4.sym).name).s, ((NimStringDesc*) &TMP3340)));
	}
	break;
	case ((NU8) 14):
	{
		checksonslen_281260(n, ((NI) 2));
		result = semtypeof_495293(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 4):
	{
		result = semarrget_495337(c, n, flags);
	}
	break;
	case ((NU8) 5):
	{
		result = semarrput_495412(c, n, flags);
	}
	break;
	case ((NU8) 6):
	{
		result = semasgnopr_495457(c, n);
	}
	break;
	case ((NU8) 152):
	{
		result = semispartof_495467(c, n, flags);
	}
	break;
	case ((NU8) 10):
	{
		result = semtypetraits_495551(c, n);
	}
	break;
	case ((NU8) 153):
	{
		Tnode225809* LOC11;
		NimStringDesc* LOC12;
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_226244(n, ((NI) 1));
		LOC12 = 0;
		LOC12 = rendertree_247059(LOC11, 4);
		result = newstrnodet_293042(LOC12, n);
		asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 28)));
	}
	break;
	case ((NU8) 251):
	{
		result = seminstantiationinfo_495495(c, n);
	}
	break;
	case ((NU8) 28):
	{
		result = semord_495589(c, n);
	}
	break;
	case ((NU8) 8):
	case ((NU8) 7):
	{
		Tnode225809* LOC16;
		LOC16 = 0;
		LOC16 = HEX5BHEX5D_226244(n, ((NI) 0));
		result = semlowhigh_493837(c, n, (*(*LOC16).kindU.S4.sym).magic);
	}
	break;
	case ((NU8) 18):
	{
		result = semshallowcopy_495661(c, n, flags);
	}
	break;
	case ((NU8) 241):
	{
		result = sembindsym_495599(c, n);
	}
	break;
	case ((NU8) 206):
	{
		Tnode225809* LOC20;
		result = n;
		LOC20 = 0;
		LOC20 = HEX5BHEX5D_226244(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_495683((*n).kindU.S6.sons->data[((NI) 1)]);
				if (LOC28) goto LA29;
				LOC30 = 0;
				LOC31 = 0;
				LOC31 = len_226098(n);
				LOC30 = (((NI) 2) < LOC31);
				if (!(LOC30)) goto LA32;
				LOC30 = isnegative_495683((*n).kindU.S6.sons->data[((NI) 2)]);
				LA32: ;
				LOC28 = LOC30;
				LA29: ;
				if (!LOC28) goto LA33;
				localerror_196139((*n).info, ((NimStringDesc*) &TMP3352));
			}
			LA33: ;
		}
		LA24: ;
	}
	break;
	case ((NU8) 15):
	{
		Tnode225809* bracketexpr;
		{
			NI LOC38;
			LOC38 = 0;
			LOC38 = len_226098(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_196139((*n).info, ((NimStringDesc*) &TMP3353));
			result = (*n).kindU.S6.sons->data[((NI) 1)];
		}
		goto LA42;
		LA44: ;
		{
			NU8 LOC47;
			NimStringDesc* LOC50;
			NimStringDesc* LOC51;
			LOC47 = 0;
			LOC47 = checkforsideeffects_305869(bracketexpr);
			if (!!((LOC47 == ((NU8) 2)))) goto LA48;
			LOC50 = 0;
			LOC50 = rendertree_247059(bracketexpr, 0);
			LOC51 = 0;
			LOC51 = nsuFormatSingleElem(((NimStringDesc*) &TMP3354), LOC50);
			localerror_196139((*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_495666((*bracketexpr).typ);
			if (!LOC53) goto LA54;
			LOC56 = 0;
			LOC56 = rendertree_247059(bracketexpr, 0);
			LOC57 = 0;
			LOC57 = nsuFormatSingleElem(((NimStringDesc*) &TMP3355), LOC56);
			localerror_196139((*n).info, LOC57);
			result = (*n).kindU.S6.sons->data[((NI) 1)];
		}
		goto LA42;
		LA54: ;
		{
			Tnode225809* lenexpr;
			Tident198021* LOC59;
			Tnode225809* LOC60;
			Tnode225809* lenexprb;
			lenexpr = newnodei_227351(((NU8) 27), (*n).info);
			LOC59 = 0;
			LOC59 = getident_198463(((NimStringDesc*) &TMP3356));
			LOC60 = 0;
			LOC60 = newidentnode_227313(LOC59, (*n).info);
			add_226165(lenexpr, LOC60);
			add_226165(lenexpr, bracketexpr);
			lenexprb = semexprwithtype_457211(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_255093((*lenexprb).typ);
				LOC63 = !(LOC65);
				LA64: ;
				if (!LOC63) goto LA66;
				LOC68 = 0;
				LOC68 = rendertree_247059(lenexpr, 0);
				LOC69 = 0;
				LOC69 = nsuFormatSingleElem(((NimStringDesc*) &TMP3357), LOC68);
				localerror_196139((*n).info, LOC69);
				result = (*n).kindU.S6.sons->data[((NI) 1)];
			}
			goto LA61;
			LA66: ;
			{
				Ttype225847* LOC71;
				Tsym225841* LOC72;
				Tnode225809* LOC73;
				LOC71 = 0;
				LOC71 = getsystype_274190(((NU8) 31));
				result = newnodeit_227807(((NU8) 27), (*n).info, LOC71);
				LOC72 = 0;
				LOC72 = createmagic_231047(((NimStringDesc*) &TMP3358), ((NU8) 45));
				LOC73 = 0;
				LOC73 = newsymnode_227338(LOC72, (*n).info);
				add_226165(result, LOC73);
				add_226165(result, lenexprb);
				add_226165(result, (*n).kindU.S6.sons->data[((NI) 1)]);
			}
			LA61: ;
		}
		LA42: ;
	}
	break;
	case ((NU8) 16):
	{
		Transformation454013 plugin;
		Tnode225809* LOC75;
		LOC75 = 0;
		LOC75 = HEX5BHEX5D_226244(n, ((NI) 0));
		plugin = getplugin_454094((*LOC75).kindU.S4.sym);
		{
			NimStringDesc* LOC80;
			Tnode225809* LOC81;
			if (!plugin == 0) goto LA78;
			LOC80 = 0;
			LOC81 = 0;
			LOC81 = HEX5BHEX5D_226244(n, ((NI) 0));
			LOC80 = rawNewString((*(*(*LOC81).kindU.S4.sym).name).s->Sup.len + 19);
appendString(LOC80, ((NimStringDesc*) &TMP3359));
appendString(LOC80, (*(*(*LOC81).kindU.S4.sym).name).s);
			localerror_196139((*n).info, LOC80);
			result = n;
		}
		goto LA76;
		LA78: ;
		{
			result = plugin(c, n);
		}
		LA76: ;
	}
	break;
	default:
	{
		result = n;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode225809*, fixuptypeaftereval_458201)(Tcontext280023* c, Tnode225809* evaluated, Tnode225809* eorig) {
	Tnode225809* result;
	result = 0;
	{
		if (!((*(*eorig).typ).kind == ((NU8) 6) || (*(*eorig).typ).kind == ((NU8) 7) || (*(*eorig).typ).kind == ((NU8) 8))) goto LA3;
		result = semexprwithtype_457211(c, evaluated, 0);
	}
	goto LA1;
	LA3: ;
	{
		Ttype225847* expectedtype;
		result = evaluated;
		expectedtype = skiptypes_229167((*eorig).typ, IL64(576460752303423488));
		annotatetype_450134(result, expectedtype);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, evalatcompiletime_495821)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tsym225841* 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;
		Tnode225809* call;
		NIM_BOOL allconst;
		LOC9 = 0;
		LOC10 = 0;
		LOC10 = !(((*callee).magic == ((NU8) 0)));
		if (!(LOC10)) goto LA11;
		LOC10 = ((TMP3360[(*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_227807(((NU8) 27), (*n).info, (*n).typ);
		add_226165(call, (*n).kindU.S6.sons->data[((NI) 0)]);
		allconst = NIM_TRUE;
		{
			NI i_495905;
			NI HEX3Atmp_496218;
			NI LOC16;
			NI res_496221;
			i_495905 = 0;
			HEX3Atmp_496218 = 0;
			LOC16 = 0;
			LOC16 = len_226098(n);
			HEX3Atmp_496218 = (LOC16 - 1);
			res_496221 = ((NI) 1);
			{
				while (1) {
					Tnode225809* a;
					if (!(res_496221 <= HEX3Atmp_496218)) goto LA18;
					i_495905 = res_496221;
					a = getconstexpr_293004((*c).module, (*n).kindU.S6.sons->data[i_495905]);
					{
						if (!(a == NIM_NIL)) goto LA21;
						allconst = NIM_FALSE;
						a = (*n).kindU.S6.sons->data[i_495905];
						{
							if (!((*a).kind == ((NU8) 58))) goto LA25;
							a = (*a).kindU.S6.sons->data[((NI) 1)];
						}
						LA25: ;
					}
					LA21: ;
					add_226165(call, a);
					res_496221 += ((NI) 1);
				} LA18: ;
			}
		}
		{
			if (!allconst) goto LA29;
			result = getconstexpr_293004((*c).module, call);
			{
				if (!result == 0) goto LA33;
				result = n;
			}
			goto LA31;
			LA33: ;
			{
				goto BeforeRet;
			}
			LA31: ;
		}
		LA29: ;
		asgnRefNoCycle((void**) (&(*result).typ), getintervaltype_293364((*callee).magic, call));
	}
	LA13: ;
	{
		{
			NI LOC39;
			Ttypeseq225843* LOC57;
			TY393275 LOC58;
			LOC39 = 0;
			LOC39 = len_226098(n);
			if (!(((NI) 1) < LOC39)) goto LA40;
			{
				NI i_495963;
				NI HEX3Atmp_496226;
				NI LOC43;
				NI res_496229;
				i_495963 = 0;
				HEX3Atmp_496226 = 0;
				LOC43 = 0;
				LOC43 = len_226098(n);
				HEX3Atmp_496226 = (LOC43 - 1);
				res_496229 = ((NI) 1);
				{
					while (1) {
						if (!(res_496229 <= HEX3Atmp_496226)) goto LA45;
						i_495963 = res_496229;
						{
							NIM_BOOL LOC48;
							NIM_BOOL LOC49;
							Tnode225809* LOC50;
							Tnode225809* LOC52;
							Tnode225809* LOC54;
							LOC48 = 0;
							LOC49 = 0;
							LOC50 = 0;
							LOC50 = HEX5BHEX5D_226244(n, i_495963);
							LOC49 = (*LOC50).typ == 0;
							if (LOC49) goto LA51;
							LOC52 = 0;
							LOC52 = HEX5BHEX5D_226244(n, i_495963);
							LOC49 = !(((*(*LOC52).typ).kind == ((NU8) 59)));
							LA51: ;
							LOC48 = LOC49;
							if (LOC48) goto LA53;
							LOC54 = 0;
							LOC54 = HEX5BHEX5D_226244(n, i_495963);
							LOC48 = !((((*(*LOC54).typ).flags &(1<<((((NU8) 9))&31)))!=0));
							LA53: ;
							if (!LOC48) goto LA55;
							goto LA36;
						}
						LA55: ;
						res_496229 += ((NI) 1);
					} LA45: ;
				}
			}
			LOC57 = 0;
			LOC57 = (Ttypeseq225843*) newSeq((&NTI225843), 1);
			memset((void*)LOC58, 0, sizeof(LOC58));
			LOC58[0] = (*n).typ;
			asgnRefNoCycle((void**) (&LOC57->data[0]), LOC58[0]);
			asgnRefNoCycle((void**) (&(*n).typ), newtypewithsons_280807(c, ((NU8) 59), LOC57));
			(*(*n).typ).flags |= ((NU32)1)<<((((NU8) 9))%(sizeof(NU32)*8));
		}
		LA40: ;
	} LA36: ;
	{
		NIM_BOOL LOC61;
		NIM_BOOL LOC62;
		Tnode225809* 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_167130 &(1<<((((NU8) 20))&31)))!=0));
			LA70: ;
			if (!LOC69) goto LA71;
			goto BeforeRet;
		}
		LA71: ;
		{
			if (!!(((TMP3360[(*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_230650(callee);
			LA80: ;
			if (!LOC79) goto LA81;
			goto BeforeRet;
		}
		LA81: ;
		{
			NIM_BOOL LOC85;
			Ttype225847* LOC87;
			LOC85 = 0;
			LOC85 = !(((*n).typ == NIM_NIL));
			if (!(LOC85)) goto LA86;
			LOC87 = 0;
			LOC87 = typeallowed_263654((*n).typ, ((NU8) 10));
			LOC85 = !((LOC87 == NIM_NIL));
			LA86: ;
			if (!LOC85) goto LA88;
			goto BeforeRet;
		}
		LA88: ;
		call = newnodeit_227807(((NU8) 27), (*n).info, (*n).typ);
		add_226165(call, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_496172;
			NI HEX3Atmp_496234;
			NI LOC91;
			NI res_496237;
			i_496172 = 0;
			HEX3Atmp_496234 = 0;
			LOC91 = 0;
			LOC91 = len_226098(n);
			HEX3Atmp_496234 = (LOC91 - 1);
			res_496237 = ((NI) 1);
			{
				while (1) {
					Tnode225809* a;
					if (!(res_496237 <= HEX3Atmp_496234)) goto LA93;
					i_496172 = res_496237;
					a = getconstexpr_293004((*c).module, (*n).kindU.S6.sons->data[i_496172]);
					{
						if (!(a == NIM_NIL)) goto LA96;
						result = n;
						goto BeforeRet;
					}
					LA96: ;
					add_226165(call, a);
					res_496237 += ((NI) 1);
				} LA93: ;
			}
		}
		{
			if (!(((*callee).flags &(1<<((((NU8) 23))&31)))!=0)) goto LA100;
			result = evalstaticexpr_446232((*c).module, call, (*(*c).p).owner);
			{
				NimStringDesc* LOC106;
				if (!result == 0) goto LA104;
				LOC106 = 0;
				LOC106 = rendertree_247059(call, 0);
				localerror_196128((*n).info, ((NU16) 213), LOC106);
			}
			goto LA102;
			LA104: ;
			{
				result = fixuptypeaftereval_458201(c, result, n);
			}
			LA102: ;
		}
		goto LA98;
		LA100: ;
		{
			result = evalconstexpr_446221((*c).module, call);
			{
				if (!result == 0) goto LA111;
				result = n;
			}
			goto LA109;
			LA111: ;
			{
				result = fixuptypeaftereval_458201(c, result, n);
			}
			LA109: ;
		}
		LA98: ;
	}
	LA65: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, aftercallactions_496784)(Tcontext280023* c, Tnode225809* n, Tnode225809* orig, NU16 flags) {
	Tnode225809* result;
	Tsym225841* callee;
	result = 0;
	result = n;
	callee = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	switch ((*callee).kind) {
	case ((NU8) 17):
	{
		result = semmacroexpr_458073(c, result, orig, callee, flags);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_458062(c, result, callee, flags);
	}
	break;
	default:
	{
		semfinishoperands_394656(c, result);
		activate_457327(c, result);
		fixabstracttype_494616(c, result);
		analyseifaddresstakenincall_495052(c, result);
		{
			if (!!(((*callee).magic == ((NU8) 0)))) goto LA6;
			result = magicsafteroverloadresolution_495738(c, result, flags);
		}
		LA6: ;
	}
	break;
	}
	{
		if (!((*c).intypeclass == ((NI) 0))) goto LA10;
		result = evalatcompiletime_495821(c, result);
	}
	LA10: ;
	return result;
}

N_NIMCALL(Tnode225809*, semdirectop_458039)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Tnode225809* norig;
	result = 0;
	norig = copytree_230028(n);
	result = semoverloadedcallanalyseeffects_496293(c, n, norig, flags);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		result = aftercallactions_496784(c, result, norig, flags);
	}
	goto LA1;
	LA3: ;
	{
		result = errornode_281171(c, n);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, evalpattern_458546)(Tcontext280023* c, Tnode225809* n, Tnode225809* orig) {
	Tnode225809* result;
	NimStringDesc* rule;
	Tsym225841* 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_196279(TMP3330);
		internalerror_196191(LOC7);
	}
	LA5: ;
	rule = 0;
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = ((goptions_167130 &(1<<((((NU8) 12))&31)))!=0);
		if (!(LOC10)) goto LA11;
		LOC10 = ((gnotes_191398 &(IL64(1)<<(((((NU16) 283)- 237))&IL64(63))))!=0);
		LA11: ;
		if (!LOC10) goto LA12;
		rule = rendertree_247059(n, 4);
	}
	LA12: ;
	s = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	switch ((*s).kind) {
	case ((NU8) 17):
	{
		result = semmacroexpr_458073(c, n, orig, s, 0);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_458062(c, n, s, 0);
	}
	break;
	default:
	{
		result = semdirectop_458039(c, n, 0);
	}
	break;
	}
	{
		NIM_BOOL LOC19;
		NimStringDesc* LOC23;
		NimStringDesc* LOC24;
		LOC19 = 0;
		LOC19 = ((goptions_167130 &(1<<((((NU8) 12))&31)))!=0);
		if (!(LOC19)) goto LA20;
		LOC19 = ((gnotes_191398 &(IL64(1)<<(((((NU16) 283)- 237))&IL64(63))))!=0);
		LA20: ;
		if (!LOC19) goto LA21;
		LOC23 = 0;
		LOC24 = 0;
		LOC24 = rendertree_247059(result, 4);
		LOC23 = rawNewString(rule->Sup.len + LOC24->Sup.len + 7);
appendString(LOC23, rule);
appendString(LOC23, ((NimStringDesc*) &TMP3446));
appendString(LOC23, LOC24);
appendString(LOC23, ((NimStringDesc*) &TMP3251));
		message_196161((*orig).info, ((NU16) 283), LOC23);
	}
	LA21: ;
	return result;
}

N_NIMCALL(Tnode225809*, applypatterns_458630)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = n;
	{
		NI i_458662;
		NI HEX3Atmp_459013;
		NI res_459016;
		i_458662 = 0;
		HEX3Atmp_459013 = 0;
		HEX3Atmp_459013 = (((*c).patterns ? (*c).patterns->Sup.len : 0) - 1);
		res_459016 = HEX3Atmp_459013;
		{
			while (1) {
				Tsym225841* pattern;
				if (!(((NI) 0) <= res_459016)) goto LA3;
				i_458662 = res_459016;
				pattern = (*c).patterns->data[i_458662];
				{
					Tnode225809* x;
					if (!!(pattern == 0)) goto LA6;
					x = applyrule_449303(c, pattern, result);
					{
						if (!!(x == 0)) goto LA10;
						evaltemplatecounter_431396 += ((NI) 1);
						{
							if (!(((NI) 100) < evaltemplatecounter_431396)) goto LA14;
							globalerror_196107((*n).info, ((NU16) 188), ((NimStringDesc*) &TMP3117));
						}
						LA14: ;
						asgnRefNoCycle((void**) (&(*c).patterns->data[i_458662]), NIM_NIL);
						{
							if (!((*x).kind == ((NU8) 115))) goto LA18;
							asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 1)]), evalpattern_458546(c, (*x).kindU.S6.sons->data[((NI) 1)], result));
							result = flattenstmts_254773(x);
						}
						goto LA16;
						LA18: ;
						{
							result = evalpattern_458546(c, x, result);
						}
						LA16: ;
						evaltemplatecounter_431396 -= ((NI) 1);
						asgnRefNoCycle((void**) (&(*c).patterns->data[i_458662]), pattern);
					}
					LA10: ;
				}
				LA6: ;
				res_459016 -= ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode225809*, hlo_458542)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* 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_458630(c, n);
		{
			if (!(result == n)) goto LA17;
			{
				NI i_459125;
				NI HEX3Atmp_459142;
				NI LOC20;
				NI res_459145;
				i_459125 = 0;
				HEX3Atmp_459142 = 0;
				LOC20 = 0;
				LOC20 = safelen_226126(result);
				HEX3Atmp_459142 = (LOC20 - 1);
				res_459145 = ((NI) 0);
				{
					while (1) {
						Tnode225809* a;
						Tnode225809* h;
						if (!(res_459145 <= HEX3Atmp_459142)) goto LA22;
						i_459125 = res_459145;
						a = (*result).kindU.S6.sons->data[i_459125];
						h = hlo_458542(c, a);
						{
							if (!!((h == a))) goto LA25;
							asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_459125]), h);
						}
						LA25: ;
						res_459145 += ((NI) 1);
					} LA22: ;
				}
			}
		}
		goto LA15;
		LA17: ;
		{
			{
				NIM_BOOL LOC30;
				LOC30 = 0;
				LOC30 = isemptytype_230932((*n).typ);
				if (!(LOC30)) goto LA31;
				LOC30 = isemptytype_230932((*result).typ);
				LA31: ;
				if (!LOC30) goto LA32;
			}
			goto LA28;
			LA32: ;
			{
				result = fitnode_457245(c, (*n).typ, result);
			}
			LA28: ;
			result = commonoptimizations_415597((*c).module, result);
			result = hlo_458542(c, result);
			result = commonoptimizations_415597((*c).module, result);
		}
		LA15: ;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, hlobody_459161)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*c).patterns ? (*c).patterns->Sup.len : 0) == ((NI) 0));
		if (LOC3) goto LA4;
		LOC3 = !(((goptions_167130 &(1<<((((NU8) 21))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
		goto BeforeRet;
	}
	LA5: ;
	(*c).hloloopdetector = ((NI) 0);
	result = hlo_458542(c, n);
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(void, fixupinstantiatedsymbols_460063)(Tcontext280023* c, Tsym225841* s) {
	{
		NI i_460087;
		NI HEX3Atmp_460097;
		NI res_460100;
		i_460087 = 0;
		HEX3Atmp_460097 = 0;
		HEX3Atmp_460097 = (NI)(((*c).generics ? (*c).generics->Sup.len : 0) - ((NI) 1));
		res_460100 = ((NI) 0);
		{
			while (1) {
				if (!(res_460100 <= HEX3Atmp_460097)) goto LA3;
				i_460087 = res_460100;
				{
					Tsym225841* oldprc;
					Tscope225835* LOC8;
					Tnode225809* n;
					Tnode225809* LOC9;
					if (!((*(*c).generics->data[i_460087].genericsym).Sup.id == (*s).Sup.id)) goto LA6;
					oldprc = (*(*c).generics->data[i_460087].inst).sym;
					pushinfocontext_191581((*oldprc).info);
					LOC8 = 0;
					LOC8 = openscope_286091(c);
					n = (*oldprc).ast;
					LOC9 = 0;
					LOC9 = getbody_271062(s);
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), copytree_230028(LOC9));
					instantiatebody_459941(c, n, NIM_NIL, oldprc);
					closescope_286111(c);
					popinfocontext_191600();
				}
				LA6: ;
				res_460100 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(Tsym225841*, searchforborrowproc_464522)(Tcontext280023* c, Tscope225835* startscope, Tsym225841* fn) {
	Tsym225841* result;
	Tnode225809* call;
	NIM_BOOL hasdistinct;
	Tnode225809* LOC1;
	result = 0;
	call = newnodei_227351(((NU8) 27), (*fn).info);
	hasdistinct = NIM_FALSE;
	LOC1 = 0;
	LOC1 = newidentnode_227313((*fn).name, (*fn).info);
	add_226165(call, LOC1);
	{
		NI i_464554;
		NI HEX3Atmp_464609;
		NI LOC3;
		NI res_464612;
		i_464554 = 0;
		HEX3Atmp_464609 = 0;
		LOC3 = 0;
		LOC3 = len_226098((*(*fn).typ).n);
		HEX3Atmp_464609 = (LOC3 - 1);
		res_464612 = ((NI) 1);
		{
			while (1) {
				Tnode225809* param;
				Ttype225847* t;
				Ttype225847* LOC12;
				Tnode225809* LOC13;
				if (!(res_464612 <= HEX3Atmp_464609)) goto LA5;
				i_464554 = res_464612;
				param = (*(*(*fn).typ).n).kindU.S6.sons->data[i_464554];
				t = skiptypes_229167((*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_264320(t);
				LOC13 = 0;
				LOC13 = newnodeit_227807(((NU8) 1), (*fn).info, LOC12);
				add_226165(call, LOC13);
				res_464612 += ((NI) 1);
			} LA5: ;
		}
	}
	{
		Tnode225809* resolved;
		NU32 LOC18;
		if (!hasdistinct) goto LA16;
		LOC18 = 0;
		LOC18 |=((NU32)(1)<<(((*fn).kind)%(sizeof(NU32)*8)));
		resolved = semoverloadedcall_463971(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_488808)(Tcontext280023* c, Tnode225809* n, Tsym225841* s) {
	Tsym225841* b;
	b = searchforborrowproc_464522(c, (*(*c).currentscope).parent, s);
	{
		if (!!((b == NIM_NIL))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), newsymnode_227325(b));
	}
	goto LA1;
	LA3: ;
	{
		localerror_196128((*n).info, ((NU16) 143), ((NimStringDesc*) &TMP3117));
	}
	LA1: ;
}

N_NIMCALL(void, sideeffectscheck_460116)(Tcontext280023* c, Tsym225841* s) {
	{
		if (!((3072 & (*s).flags) == 3072)) goto LA3;
		localerror_196128((*s).info, ((NU16) 222), (*(*s).name).s);
	}
	LA3: ;
}

N_NIMCALL(Tnode225809*, semprocaux_489900)(Tcontext280023* c, Tnode225809* n, NU8 kind, Tspecialwords206012 validpragmas, NU8 phase) {
	Tnode225809* result;
	Tsym225841* s;
	NIM_BOOL typeisdetermined;
	NIM_BOOL isanon;
	Tscope225835* oldscope;
	Tscope225835* LOC19;
	Tnode225809* gp;
	Tsym225841* proto;
{	result = 0;
	result = semprocannotation_488960(c, n, validpragmas);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = n;
	checksonslen_281260(n, ((NI) 7));
	s = 0;
	typeisdetermined = NIM_FALSE;
	isanon = NIM_FALSE;
	{
		Tnode225809* LOC7;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_226244(n, ((NI) 0));
		if (!!(((*LOC7).kind == ((NU8) 3)))) goto LA8;
		{
			Tnode225809* LOC12;
			Tsym225841* LOC15;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_226244(n, ((NI) 0));
			if (!((*LOC12).kind == ((NU8) 1))) goto LA13;
			LOC15 = 0;
			LOC15 = getcurrowner_280258();
			s = newsym_226656(kind, idanon_198495, LOC15, (*n).info);
			isanon = NIM_TRUE;
		}
		goto LA10;
		LA13: ;
		{
			s = semidentdef_484542(c, (*n).kindU.S6.sons->data[((NI) 0)], kind);
		}
		LA10: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325(s));
		asgnRefNoCycle((void**) (&(*s).ast), n);
	}
	goto LA5;
	LA8: ;
	{
		Tnode225809* LOC18;
		LOC18 = 0;
		LOC18 = HEX5BHEX5D_226244(n, ((NI) 0));
		s = (*LOC18).kindU.S4.sym;
		asgnRefNoCycle((void**) (&(*s).owner), getcurrowner_280258());
		typeisdetermined = ((*s).typ == NIM_NIL);
		asgnRefNoCycle((void**) (&(*s).ast), n);
	}
	LA5: ;
	oldscope = (*c).currentscope;
	pushowner_280263(s);
	LOC19 = 0;
	LOC19 = openscope_286091(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_471425(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA20;
	LA22: ;
	{
		gp = newnodei_227351(((NU8) 75), (*n).info);
	}
	LA20: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA27;
		semparamlist_457284(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NI LOC31;
			LOC31 = 0;
			LOC31 = sonslen_228387(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_469542(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_473348(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_296278(c, oldscope, s);
	{
		if (!(proto == NIM_NIL)) goto LA53;
		{
			if (!((*s).kind == ((NU8) 15))) goto LA57;
			(*(*s).typ).callconv = ((NU8) 8);
		}
		goto LA55;
		LA57: ;
		{
			Toptionentry280005* LOC60;
			LOC60 = 0;
			LOC60 = lastoptionentry_280190(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_286746(c, oldscope, s);
			}
			LA70: ;
		}
		goto LA61;
		LA66: ;
		{
			{
				if (!!(typeisdetermined)) goto LA75;
				addinterfacedeclat_286677(c, oldscope, s);
			}
			LA75: ;
		}
		LA61: ;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA79;
			pragma_297082(c, s, (*n).kindU.S6.sons->data[((NI) 4)], validpragmas);
		}
		goto LA77;
		LA79: ;
		{
			implicitpragmas_300759(c, s, n, validpragmas);
		}
		LA77: ;
	}
	goto LA51;
	LA53: ;
	{
		Tscope225835* LOC91;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA85;
			localerror_196128((*(*n).kindU.S6.sons->data[((NI) 4)]).info, ((NU16) 140), ((NimStringDesc*) &TMP3117));
		}
		LA85: ;
		{
			if (!!((((*proto).flags &(1<<((((NU8) 4))&31)))!=0))) goto LA89;
			wrongredefinition_286588((*n).info, (*(*proto).name).s);
		}
		LA89: ;
		(*proto).flags &= ~(((NU32)1) << ((((NU8) 4)) % (sizeof(NU32)*8)));
		closescope_286111(c);
		LOC91 = 0;
		LOC91 = openscope_286091(c);
		{
			if (!!(((*(*(*proto).ast).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA94;
			addgenericparamlisttoscope_487541(c, (*(*proto).ast).kindU.S6.sons->data[((NI) 2)]);
		}
		LA94: ;
		addparams_457293(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_196172((*n).info, ((NimStringDesc*) &TMP3295));
		}
		LA98: ;
		asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym), proto);
		{
			NIM_BOOL LOC102;
			NimStringDesc* LOC106;
			LOC102 = 0;
			LOC102 = importantcomments_167168();
			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_280269();
		pushowner_280263(s);
	}
	LA51: ;
	(*s).options = goptions_167130;
	{
		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_489632(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_196128((*(*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_458022(c, (*s).typ);
			}
			LA129: ;
			pushproccon_280361(c, s);
			(*(*c).p).wasforwarded = !((proto == NIM_NIL));
			maybeaddresult_457301(c, s, n);
			{
				Tnode225809* sembody;
				Tnode225809* LOC135;
				if (!!((((*s).flags &(1<<((((NU8) 5))&31)))!=0))) goto LA133;
				LOC135 = 0;
				LOC135 = semprocbody_457238(c, (*n).kindU.S6.sons->data[((NI) 6)]);
				sembody = hlobody_459161(c, LOC135);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_417225((*c).module, sembody, s));
			}
			LA133: ;
			popproccon_280393(c);
		}
		goto LA121;
		LA125: ;
		{
			Tscope225835* LOC145;
			{
				NIM_BOOL LOC139;
				Tident198021* LOC143;
				Tsym225841* 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_198463(((NimStringDesc*) &TMP3159));
				LOC144 = 0;
				LOC144 = newsym_226656(((NU8) 0), LOC143, NIM_NIL, (*n).info);
				adddecl_286607(c, LOC144);
			}
			LA141: ;
			LOC145 = 0;
			LOC145 = openscope_286091(c);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semgenericstmt_464888(c, (*n).kindU.S6.sons->data[((NI) 6)]));
			closescope_286111(c);
			fixupinstantiatedsymbols_460063(c, s);
		}
		LA121: ;
		{
			if (!(((*s).flags &(1<<((((NU8) 5))&31)))!=0)) goto LA148;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), emptynode_226807);
		}
		LA148: ;
	}
	goto LA113;
	LA115: ;
	{
		{
			if (!!((proto == NIM_NIL))) goto LA153;
			localerror_196128((*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_488808(c, n, s);
		}
		goto LA155;
		LA162: ;
		LA155: ;
	}
	LA113: ;
	sideeffectscheck_460116(c, s);
	closescope_286111(c);
	popowner_280269();
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA166;
		(*c).patterns = (Tsymseq225811*) incrSeqV2(&((*c).patterns)->Sup, sizeof(Tsym225841*));
		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_281280(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_196161((*s).info, ((NU16) 241), ((NimStringDesc*) &TMP3499));
	}
	LA178: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, determinetype_460941)(Tcontext280023* c, Tsym225841* s) {
	Tnode225809* LOC5;
{	{
		if (!!(((*s).typ == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = semprocaux_489900(c, (*s).ast, (*s).kind, TMP3500, ((NU8) 1));
	}BeforeRet: ;
}

N_NIMCALL(void, pickbestcandidate_460945)(Tcontext280023* c, Tnode225809* headsymbol, Tnode225809* n, Tnode225809* orig, Tnode225809* initialbinding, NU32 filter, Tcandidate388209* best, Tcandidate388209* alt, Tsymseq225811** errors) {
	Toverloaditer286431 o;
	Tsym225841* symx;
	NI symscope;
	TY460962* syms;
	Tcandidate388209 z;
{	memset((void*)(&o), 0, sizeof(o));
	symx = initoverloaditer_287108((&o), c, headsymbol);
	symscope = lastoverloadscope_287259((&o));
	syms = (TY460962*) newSeq((&NTI460962), 0);
	{
		while (1) {
			if (!!((symx == NIM_NIL))) goto LA2;
			{
				TY460963 LOC7;
				if (!((filter &(1<<(((*symx).kind)&31)))!=0)) goto LA5;
				memset((void*)(&LOC7), 0, sizeof(LOC7));
				LOC7.Field0 = symx;
				LOC7.Field1 = lastoverloadscope_287259((&o));
				syms = (TY460962*) incrSeqV2(&(syms)->Sup, sizeof(TY460963));
				asgnRefNoCycle((void**) (&syms->data[syms->Sup.len].Field0), LOC7.Field0);
				syms->data[syms->Sup.len].Field1 = LOC7.Field1;
				++syms->Sup.len;
			}
			LA5: ;
			symx = nextoverloaditer_287277((&o), c, headsymbol);
		} LA2: ;
	}
	{
		if (!((syms ? syms->Sup.len : 0) == ((NI) 0))) goto LA10;
		goto BeforeRet;
	}
	LA10: ;
	memset((void*)(&z), 0, sizeof(z));
	initcandidate_388303(c, best, syms->data[((NI) 0)].Field0, initialbinding, symscope);
	initcandidate_388303(c, alt, syms->data[((NI) 0)].Field0, initialbinding, symscope);
	(*best).state = ((NU8) 2);
	{
		NI i_461052;
		NI HEX3Atmp_461292;
		NI res_461295;
		i_461052 = 0;
		HEX3Atmp_461292 = 0;
		HEX3Atmp_461292 = ((syms ? syms->Sup.len : 0) - 1);
		res_461295 = ((NI) 0);
		{
			while (1) {
				Tsym225841* sym;
				if (!(res_461295 <= HEX3Atmp_461292)) goto LA14;
				i_461052 = res_461295;
				sym = syms->data[i_461052].Field0;
				determinetype_460941(c, sym);
				initcandidate_388303(c, (&z), sym, initialbinding, syms->data[i_461052].Field1);
				z.calleesym = sym;
				matches_394720(c, n, orig, (&z));
				{
					NIM_BOOL LOC17;
					LOC17 = 0;
					LOC17 = HEX3DHEX3D_461058((*errors), NIM_NIL);
					if (!!(LOC17)) goto LA18;
					safeadd_461171(errors, sym);
					{
						NIM_BOOL LOC22;
						LOC22 = 0;
						LOC22 = HEX3DHEX3D_461058(z.errors, NIM_NIL);
						if (!!(LOC22)) goto LA23;
						{
							Tsym225841* err_461239;
							Tsymseq225811* HEX3Atmp_461286;
							NI i_461289;
							NI L_461291;
							err_461239 = 0;
							HEX3Atmp_461286 = 0;
							HEX3Atmp_461286 = z.errors;
							i_461289 = ((NI) 0);
							L_461291 = (HEX3Atmp_461286 ? HEX3Atmp_461286->Sup.len : 0);
							{
								while (1) {
									if (!(i_461289 < L_461291)) goto LA27;
									err_461239 = HEX3Atmp_461286->data[i_461289];
									(*errors) = (Tsymseq225811*) incrSeqV2(&((*errors))->Sup, sizeof(Tsym225841*));
									asgnRefNoCycle((void**) (&(*errors)->data[(*errors)->Sup.len]), err_461239);
									++(*errors)->Sup.len;
									i_461289 += ((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), (&NTI388209));
					}
					break;
					case ((NU8) 1):
					{
						NI cmp;
						cmp = cmpcandidates_388824((&(*best)), (&z));
						{
							if (!(cmp < ((NI) 0))) goto LA40;
							genericAssign((void*)(&(*best)), (void*)(&z), (&NTI388209));
						}
						goto LA38;
						LA40: ;
						{
							if (!(cmp == ((NI) 0))) goto LA43;
							genericAssign((void*)(&(*alt)), (void*)(&z), (&NTI388209));
						}
						goto LA38;
						LA43: ;
						{
						}
						LA38: ;
					}
					break;
					}
				}
				LA30: ;
				res_461295 += ((NI) 1);
			} LA14: ;
		}
	}
	}BeforeRet: ;
}

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

N_NIMCALL(NIM_BOOL, samemethoddispatcher_460880)(Tsym225841* a, Tsym225841* b) {
	NIM_BOOL result;
	result = 0;
	result = NIM_FALSE;
	{
		NIM_BOOL LOC3;
		Tnode225809* aa;
		Tnode225809* bb;
		LOC3 = 0;
		LOC3 = ((*a).kind == ((NU8) 13));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*b).kind == ((NU8) 13));
		LA4: ;
		if (!LOC3) goto LA5;
		aa = lastson_228406((*a).ast);
		bb = lastson_228406((*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_461584)(Tcontext280023* c, Tnode225809* n, Tnode225809* orig, NU32 filter, Tsymseq225811** errors, Tcandidate388209* Result) {
	Tnode225809* initialbinding;
	Tcandidate388209 alt;
	Tnode225809* f;
	Tnodeseq225803* 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_461474(c, (&usedsyms));
	{
		NIM_BOOL LOC8;
		Tnode225809* hiddenarg;
		LOC8 = 0;
		LOC8 = HEX3DHEX3D_300972(usedsyms, NIM_NIL);
		if (!!(LOC8)) goto LA9;
		{
			if (!(((NI) 1) < (usedsyms ? usedsyms->Sup.len : 0))) goto LA13;
			hiddenarg = newnode_227607(((NU8) 56), (*n).info, usedsyms, NIM_NIL);
		}
		goto LA11;
		LA13: ;
		{
			hiddenarg = usedsyms->data[((NI) 0)];
		}
		LA11: ;
		insert_461637((&(*n).kindU.S6.sons), hiddenarg, ((NI) 1));
		insert_461637((&(*orig).kindU.S6.sons), hiddenarg, ((NI) 1));
		pickbestcandidate_460945(c, f, n, orig, initialbinding, filter, Result, (&alt), errors);
		{
			if (!!(((*Result).state == ((NU8) 1)))) goto LA18;
			delete_462246((&(*n).kindU.S6.sons), ((NI) 1));
			delete_462246((&(*orig).kindU.S6.sons), ((NI) 1));
		}
		goto LA16;
		LA18: ;
		{
			goto BeforeRet;
		}
		LA16: ;
	}
	LA9: ;
	pickbestcandidate_460945(c, f, n, orig, initialbinding, filter, Result, (&alt), errors);
	overloadsstate = (*Result).state;
	{
		if (!!((overloadsstate == ((NU8) 1)))) goto LA23;
		{
			Tnode225809* calleename;
			Tnode225809* LOC37;
			Slice90370 LOC38;
			TY498414 LOC39;
			Slice90370 LOC40;
			TY498414 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_228387(n);
				LOC31 = (((NI) 2) <= LOC33);
				LA32: ;
				if (!!(LOC31)) goto LA34;
				LOC36 = 0;
				LOC36 = HEX24_196279(TMP3501);
				internalerror_196191(LOC36);
			}
			LA34: ;
			LOC37 = 0;
			LOC37 = newstrnode_226644(((NU8) 20), (*(*f).kindU.S5.ident).s);
			calleename = withinfo_227302(LOC37, (*n).info);
			LOC38 = HEX2EHEX2E_105290(((NI) 0), ((NI) 1));
			memset((void*)LOC39, 0, sizeof(LOC39));
			LOC39[0] = NIM_NIL;
			LOC39[1] = HEX5BHEX5D_226244(n, ((NI) 1));
			LOC39[2] = calleename;
			HEX5BHEX5DHEX3D_416817((&(*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_226244(orig, ((NI) 1));
			LOC41[2] = calleename;
			HEX5BHEX5DHEX3D_416817((&(*orig).kindU.S6.sons), LOC40, LOC41, 3);
			{
				Tnode225809* op_462971;
				Tident198021* LOC46;
				if (!(((*n).flags &(1<<((((NU8) 11))&15)))!=0)) goto LA44;
				LOC46 = 0;
				LOC46 = getident_198463(((NimStringDesc*) &TMP3503));
				op_462971 = newidentnode_227313(LOC46, (*n).info);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), op_462971);
				asgnRefNoCycle((void**) (&(*orig).kindU.S6.sons->data[((NI) 0)]), op_462971);
				pickbestcandidate_460945(c, op_462971, n, orig, initialbinding, filter, Result, (&alt), errors);
			}
			LA44: ;
			{
				Tnode225809* op_462988;
				Tident198021* LOC51;
				if (!((5 &(1<<(((*Result).state)&7)))!=0)) goto LA49;
				LOC51 = 0;
				LOC51 = getident_198463(((NimStringDesc*) &TMP3504));
				op_462988 = newidentnode_227313(LOC51, (*n).info);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), op_462988);
				asgnRefNoCycle((void**) (&(*orig).kindU.S6.sons->data[((NI) 0)]), op_462988);
				pickbestcandidate_460945(c, op_462988, n, orig, initialbinding, filter, Result, (&alt), errors);
			}
			LA49: ;
		}
		goto LA25;
		LA27: ;
		{
			Tnode225809* calleename;
			Slice90370 LOC63;
			NimStringDesc* LOC64;
			Tnode225809* LOC65;
			Tnode225809* callop;
			Tident198021* LOC66;
			Slice90370 LOC67;
			TY498414 LOC68;
			Slice90370 LOC69;
			TY498414 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_228387(n);
				LOC57 = (LOC59 == ((NI) 3));
				LA58: ;
				if (!!(LOC57)) goto LA60;
				LOC62 = 0;
				LOC62 = HEX24_196279(TMP3505);
				internalerror_196191(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_90363((*(*f).kindU.S5.ident).s, LOC63);
			LOC65 = 0;
			LOC65 = newstrnode_226644(((NU8) 20), LOC64);
			calleename = withinfo_227302(LOC65, (*n).info);
			LOC66 = 0;
			LOC66 = getident_198463(((NimStringDesc*) &TMP3506));
			callop = newidentnode_227313(LOC66, (*n).info);
			LOC67 = HEX2EHEX2E_105290(((NI) 0), ((NI) 1));
			memset((void*)LOC68, 0, sizeof(LOC68));
			LOC68[0] = callop;
			LOC68[1] = HEX5BHEX5D_226244(n, ((NI) 1));
			LOC68[2] = calleename;
			HEX5BHEX5DHEX3D_416817((&(*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_226244(orig, ((NI) 1));
			LOC70[2] = calleename;
			HEX5BHEX5DHEX3D_416817((&(*orig).kindU.S6.sons), LOC69, LOC70, 3);
			pickbestcandidate_460945(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;
				Tident198021* 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_286010(f);
				localerror_196128((*n).info, ((NU16) 64), (*LOC83).s);
			}
			goto LA77;
			LA81: ;
			{
				Tident198021* LOC85;
				LOC85 = 0;
				LOC85 = considerquotedident_286010(f);
				localerror_196128((*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_247059(n, 4);
				localerror_196128((*n).info, ((NU16) 92), LOC93);
			}
			goto LA89;
			LA91: ;
			{
				{
					if (!!(((1536 & (*n).flags) == 0))) goto LA97;
					delete_462246((&(*n).kindU.S6.sons), ((NI) 2));
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), f);
				}
				LA97: ;
				unsureAsgnRef((void**) (&(*errors)), (Tsymseq225811*) newSeq((&NTI225811), 0));
				pickbestcandidate_460945(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_388824(Result, (&alt));
		LOC102 = (LOC104 == ((NI) 0));
		LA103: ;
		LOC101 = LOC102;
		if (!(LOC101)) goto LA105;
		LOC106 = 0;
		LOC106 = samemethoddispatcher_460880((*Result).calleesym, alt.calleesym);
		LOC101 = !(LOC106);
		LA105: ;
		if (!LOC101) goto LA107;
		{
			NimStringDesc* LOC113;
			if (!!(((*Result).state == ((NU8) 1)))) goto LA111;
			LOC113 = 0;
			LOC113 = HEX24_196279(TMP3507);
			internalerror_196191(LOC113);
		}
		LA111: ;
		{
			if (!(((NI) 0) < (*c).compilescontextid)) goto LA116;
			globalerror_196107((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3508));
		}
		goto LA114;
		LA116: ;
		{
			NimStringDesc* args;
			NimStringDesc* LOC130;
			TY193293 LOC131;
			NimStringDesc* LOC132;
			if (!(gerrorcounter_191399 == ((NI) 0))) goto LA119;
			args = copyString(((NimStringDesc*) &TMP3509));
			{
				NI i_463249;
				NI HEX3Atmp_463257;
				NI LOC122;
				NI res_463260;
				i_463249 = 0;
				HEX3Atmp_463257 = 0;
				LOC122 = 0;
				LOC122 = sonslen_228387(n);
				HEX3Atmp_463257 = (NI)(LOC122 - ((NI) 1));
				res_463260 = ((NI) 1);
				{
					while (1) {
						NimStringDesc* LOC129;
						if (!(res_463260 <= HEX3Atmp_463257)) goto LA124;
						i_463249 = res_463260;
						{
							if (!(((NI) 1) < i_463249)) goto LA127;
							args = resizeString(args, 2);
appendString(args, ((NimStringDesc*) &TMP3510));
						}
						LA127: ;
						LOC129 = 0;
						LOC129 = typetostring_255032((*(*n).kindU.S6.sons->data[i_463249]).typ, ((NU8) 0));
						args = resizeString(args, LOC129->Sup.len + 0);
appendString(args, LOC129);
						res_463260 += ((NI) 1);
					} LA124: ;
				}
			}
			args = resizeString(args, 1);
appendString(args, ((NimStringDesc*) &TMP3139));
			LOC130 = 0;
			LOC130 = msgkindtostring_192406(((NU16) 136));
			memset((void*)LOC131, 0, sizeof(LOC131));
			LOC131[0] = getprocheader_255447((*Result).calleesym, ((NU8) 0));
			LOC131[1] = getprocheader_255447(alt.calleesym, ((NU8) 0));
			LOC131[2] = copyString(args);
			LOC132 = 0;
			LOC132 = nsuFormatOpenArray(LOC130, LOC131, 3);
			localerror_196128((*n).info, ((NU16) 4), LOC132);
		}
		goto LA114;
		LA119: ;
		LA114: ;
	}
	LA107: ;
	}BeforeRet: ;
}

N_NIMCALL(void, instgenericconverterssons_463312)(Tcontext280023* c, Tnode225809* n, Tcandidate388209* x) {
	{
		if (!(*x).genericconverter) goto LA3;
		{
			NI i_463420;
			NI HEX3Atmp_463423;
			NI LOC6;
			NI res_463426;
			i_463420 = 0;
			HEX3Atmp_463423 = 0;
			LOC6 = 0;
			LOC6 = len_226098(n);
			HEX3Atmp_463423 = (LOC6 - 1);
			res_463426 = ((NI) 1);
			{
				while (1) {
					if (!(res_463426 <= HEX3Atmp_463423)) goto LA8;
					i_463420 = res_463426;
					instgenericconvertersarg_463276(c, (*n).kindU.S6.sons->data[i_463420], x);
					res_463426 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	LA3: ;
}

N_NIMCALL(Tnode225809*, semresolvedcall_463507)(Tcontext280023* c, Tnode225809* n, Tcandidate388209* x) {
	Tnode225809* result;
	Tsym225841* finalcallee;
	Tnode225809* gp;
{	result = 0;
	finalcallee = (*x).calleesym;
	markused_388253((*(*n).kindU.S6.sons->data[((NI) 0)]).info, finalcallee);
	{
		if (!((*finalcallee).ast == NIM_NIL)) goto LA3;
		internalerror_196172((*n).info, ((NimStringDesc*) &TMP3511));
	}
	LA3: ;
	{
		if (!!(((*x).fauxmatch == ((NU8) 0)))) goto LA7;
		result = (*x).call;
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_227338(finalcallee, (*(*result).kindU.S6.sons->data[((NI) 0)]).info));
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = containsgenerictype_264310((*result).typ);
			if (LOC11) goto LA12;
			LOC11 = ((*x).fauxmatch == ((NU8) 60));
			LA12: ;
			if (!LOC11) goto LA13;
			asgnRefNoCycle((void**) (&(*result).typ), newtypes_280221((*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_460450(c, (*x).calleesym, (*x).bindings, (*n).info);
			}
			LA23: ;
		}
		goto LA19;
		LA21: ;
		{
			{
				Tsym225841* s_463869;
				Tidtable225859 HEX3Atmp_463884;
				s_463869 = 0;
				memset((void*)(&HEX3Atmp_463884), 0, sizeof(HEX3Atmp_463884));
				HEX3Atmp_463884.counter = (*x).bindings.counter;
				HEX3Atmp_463884.data = (*x).bindings.data;
				{
					NimStringDesc* LOC34;
					if (!!(((*gp).kind == ((NU8) 75)))) goto LA32;
					LOC34 = 0;
					LOC34 = HEX24_196279(TMP3155);
					internalerror_196191(LOC34);
				}
				LA32: ;
				{
					NI i_463890;
					Tnode225809* a_463892;
					i_463890 = 0;
					a_463892 = 0;
					{
						NI i_463894;
						NI HEX3Atmp_463896;
						NI LOC37;
						NI res_463898;
						i_463894 = 0;
						HEX3Atmp_463896 = 0;
						LOC37 = 0;
						LOC37 = len_226098(gp);
						HEX3Atmp_463896 = (LOC37 - 1);
						res_463898 = ((NI) 0);
						{
							while (1) {
								if (!(res_463898 <= HEX3Atmp_463896)) goto LA39;
								i_463894 = res_463898;
								i_463890 = i_463894;
								a_463892 = (*gp).kindU.S6.sons->data[i_463894];
								{
									Tsym225841* q_463902;
									NU8 symkind_463904;
									Tsym225841* s_463906;
									Tsym225841* LOC55;
									Ttype225847* t_463908;
									Tidobj198015* LOC56;
									TNimObject* LOC57;
									{
										NimStringDesc* LOC45;
										if (!!(((*a_463892).kind == ((NU8) 3)))) goto LA43;
										LOC45 = 0;
										LOC45 = HEX24_196279(TMP3156);
										internalerror_196191(LOC45);
									}
									LA43: ;
									q_463902 = (*a_463892).kindU.S4.sym;
									{
										if (!!(((*(*q_463902).typ).kind == ((NU8) 8) || (*(*q_463902).typ).kind == ((NU8) 12) || (*(*q_463902).typ).kind == ((NU8) 49) || (*(*q_463902).typ).kind >= ((NU8) 51) && (*(*q_463902).typ).kind <= ((NU8) 59)))) goto LA48;
										goto LA40;
									}
									LA48: ;
									{
										if (!((*(*q_463902).typ).kind == ((NU8) 59))) goto LA52;
										symkind_463904 = ((NU8) 10);
									}
									goto LA50;
									LA52: ;
									{
										symkind_463904 = ((NU8) 7);
									}
									LA50: ;
									LOC55 = 0;
									LOC55 = getcurrowner_280258();
									s_463906 = newsym_226656(symkind_463904, (*q_463902).name, LOC55, (*q_463902).info);
									(*s_463906).flags = ((*s_463906).flags | 5);
									LOC56 = 0;
									LOC56 = &(*q_463902).typ->Sup;
									LOC57 = 0;
									LOC57 = idtableget_233182(HEX3Atmp_463884, LOC56);
									t_463908 = ((Ttype225847*) (LOC57));
									{
										if (!(t_463908 == NIM_NIL)) goto LA60;
										{
											if (!(((*(*q_463902).typ).flags &(1<<((((NU8) 10))&31)))!=0)) goto LA64;
											t_463908 = (*q_463902).typ;
										}
										goto LA62;
										LA64: ;
										{
											localerror_196128((*a_463892).info, ((NU16) 128), (*(*s_463906).name).s);
											t_463908 = errortype_281161(c);
										}
										LA62: ;
									}
									goto LA58;
									LA60: ;
									{
										if (!((*t_463908).kind == ((NU8) 12))) goto LA68;
										localerror_196128((*a_463892).info, ((NU16) 128), (*(*q_463902).name).s);
										t_463908 = errortype_281161(c);
									}
									goto LA58;
									LA68: ;
									{
										if (!((*t_463908).kind == ((NU8) 9))) goto LA71;
										t_463908 = generatetypeinstance_304894(c, HEX3Atmp_463884, (*a_463892).info, t_463908);
									}
									goto LA58;
									LA71: ;
									LA58: ;
									asgnRefNoCycle((void**) (&(*s_463906).typ), t_463908);
									{
										if (!((*t_463908).kind == ((NU8) 59))) goto LA75;
										asgnRefNoCycle((void**) (&(*s_463906).ast), (*t_463908).n);
									}
									LA75: ;
									s_463869 = s_463906;
									switch ((*s_463869).kind) {
									case ((NU8) 10):
									{
										add_226165((*x).call, (*s_463869).ast);
									}
									break;
									case ((NU8) 7):
									{
										Tnode225809* LOC79;
										LOC79 = 0;
										LOC79 = newsymnode_227338(s_463869, (*n).info);
										add_226165((*x).call, LOC79);
									}
									break;
									default:
									{
										{
											NimStringDesc* LOC85;
											if (!NIM_TRUE) goto LA83;
											LOC85 = 0;
											LOC85 = HEX24_196279(TMP3512);
											internalerror_196191(LOC85);
										}
										LA83: ;
									}
									break;
									}
								} LA40: ;
								res_463898 += ((NI) 1);
							} LA39: ;
						}
					}
				}
			}
		}
		LA19: ;
	}
	LA17: ;
	result = (*x).call;
	instgenericconverterssons_463312(c, result, x);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_227338(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_463930)(Tnode225809* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NI LOC2;
	Ttype225847* t;
	Tnode225809* LOC4;
	NIM_BOOL LOC5;
	Ttype225847* LOC7;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = len_226098(n);
	LOC1 = (((NI) 2) <= LOC2);
	if (!(LOC1)) goto LA3;
	LOC4 = 0;
	LOC4 = HEX5BHEX5D_226244(n, ((NI) 1));
	t = (*LOC4).typ;
	LOC5 = 0;
	LOC5 = !((t == NIM_NIL));
	if (!(LOC5)) goto LA6;
	LOC7 = 0;
	LOC7 = skiptypes_229167(t, 2048);
	LOC5 = ((*LOC7).kind == ((NU8) 21) || (*LOC7).kind == ((NU8) 22));
	LA6: ;
	LOC1 = LOC5;
	LA3: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Tnode225809*, tryderef_463963)(Tnode225809* n) {
	Tnode225809* result;
	Ttype225847* LOC1;
	result = 0;
	result = newnodei_227351(((NU8) 65), (*n).info);
	LOC1 = 0;
	LOC1 = skiptypes_229167((*n).typ, IL64(211106232576256));
	asgnRefNoCycle((void**) (&(*result).typ), (*LOC1).sons->data[((NI) 0)]);
	addson_227819(result, n);
	return result;
}

N_NIMCALL(void, notfounderror_461326)(Tcontext280023* c, Tnode225809* n_461329, Tsymseq225811* 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_167132 &(1<<((((NU8) 6))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		globalerror_196107((*n_461329).info, ((NU16) 133), ((NimStringDesc*) &TMP3117));
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		Tnode225809* 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_226244(n_461329, ((NI) 0));
		LOC14 = 0;
		LOC14 = rendertree_247059(LOC13, 0);
		localerror_196128((*n_461329).info, ((NU16) 92), LOC14);
		goto BeforeRet;
	}
	LA11: ;
	proto = describeargs_388974(c, n_461329, ((NI) 1), ((NU8) 0));
	prefer = ((NU8) 0);
	{
		Tsym225841* err_461369;
		NI i_461435;
		NI L_461437;
		err_461369 = 0;
		i_461435 = ((NI) 0);
		L_461437 = (errors ? errors->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* errproto;
				Tnode225809* n;
				if (!(i_461435 < L_461437)) goto LA17;
				err_461369 = errors->data[i_461435];
				errproto = copyString(((NimStringDesc*) &TMP3117));
				n = (*(*err_461369).typ).n;
				{
					NI i_461386;
					NI HEX3Atmp_461426;
					NI LOC19;
					NI res_461429;
					i_461386 = 0;
					HEX3Atmp_461426 = 0;
					LOC19 = 0;
					LOC19 = len_226098(n);
					HEX3Atmp_461426 = (NI)(LOC19 - ((NI) 1));
					res_461429 = ((NI) 1);
					{
						while (1) {
							Tnode225809* p;
							if (!(res_461429 <= HEX3Atmp_461426)) goto LA21;
							i_461386 = res_461429;
							p = (*n).kindU.S6.sons->data[i_461386];
							{
								NimStringDesc* LOC26;
								if (!((*p).kind == ((NU8) 3))) goto LA24;
								LOC26 = 0;
								LOC26 = typetostring_255032((*(*p).kindU.S4.sym).typ, ((NU8) 0));
								errproto = resizeString(errproto, LOC26->Sup.len + 0);
appendString(errproto, LOC26);
								{
									NI LOC29;
									LOC29 = 0;
									LOC29 = len_226098(n);
									if (!!((i_461386 == (NI)(LOC29 - ((NI) 1))))) goto LA30;
									errproto = resizeString(errproto, 2);
appendString(errproto, ((NimStringDesc*) &TMP3510));
								}
								LA30: ;
							}
							LA24: ;
							res_461429 += ((NI) 1);
						} LA21: ;
					}
				}
				{
					if (!eqStrings(errproto, proto)) goto LA34;
					prefer = ((NU8) 3);
					goto LA15;
				}
				LA34: ;
				i_461435 += ((NI) 1);
			} LA17: ;
		}
	} LA15: ;
	result = msgkindtostring_192406(((NU16) 133));
	LOC36 = 0;
	LOC36 = describeargs_388974(c, n_461329, ((NI) 1), prefer);
	result = resizeString(result, LOC36->Sup.len + 0);
appendString(result, LOC36);
	result = addChar(result, 41);
	candidates = copyString(((NimStringDesc*) &TMP3117));
	{
		Tsym225841* err_461412;
		NI i_461441;
		NI L_461443;
		err_461412 = 0;
		i_461441 = ((NI) 0);
		L_461443 = (errors ? errors->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* LOC40;
				if (!(i_461441 < L_461443)) goto LA39;
				err_461412 = errors->data[i_461441];
				LOC40 = 0;
				LOC40 = getprocheader_255447(err_461412, prefer);
				candidates = resizeString(candidates, LOC40->Sup.len + 0);
appendString(candidates, LOC40);
				candidates = resizeString(candidates, 1);
appendString(candidates, ((NimStringDesc*) &TMP3513));
				i_461441 += ((NI) 1);
			} LA39: ;
		}
	}
	{
		NimStringDesc* LOC45;
		NimStringDesc* LOC46;
		if (!!(((candidates) && (candidates)->Sup.len == 0))) goto LA43;
		LOC45 = 0;
		LOC46 = 0;
		LOC46 = msgkindtostring_192406(((NU16) 134));
		LOC45 = rawNewString(LOC46->Sup.len + candidates->Sup.len + 2);
appendString(LOC45, ((NimStringDesc*) &TMP3513));
appendString(LOC45, LOC46);
appendString(LOC45, ((NimStringDesc*) &TMP3513));
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_167132 &(1<<((((NU8) 6))&31)))!=0);
		LA50: ;
		if (!LOC49) goto LA51;
		globalerror_196107((*n_461329).info, ((NU16) 4), result);
	}
	goto LA47;
	LA51: ;
	{
		localerror_196128((*n_461329).info, ((NU16) 4), result);
	}
	LA47: ;
	}BeforeRet: ;
}

N_NIMCALL(Tnode225809*, semoverloadedcall_463971)(Tcontext280023* c, Tnode225809* n, Tnode225809* norig, NU32 filter) {
	Tnode225809* result;
	Tsymseq225811* errors;
	Tcandidate388209 r_463980;
	result = 0;
	errors = 0;
	memset((void*)(&r_463980), 0, sizeof(r_463980));
	chckNil((void*)(&r_463980));
	memset((void*)(&r_463980), 0, sizeof(r_463980));
	resolveoverloads_461584(c, n, norig, filter, (&errors), (&r_463980));
	{
		if (!(r_463980.state == ((NU8) 1))) goto LA3;
		result = semresolvedcall_463507(c, n, (&r_463980));
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		Tcandidate388209 r;
		LOC6 = 0;
		LOC6 = experimentalmode_281290(c);
		if (!(LOC6)) goto LA7;
		LOC6 = canderef_463930(n);
		LA7: ;
		if (!LOC6) goto LA8;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), tryderef_463963((*n).kindU.S6.sons->data[((NI) 1)]));
		memset((void*)(&r), 0, sizeof(r));
		chckNil((void*)(&r));
		memset((void*)(&r), 0, sizeof(r));
		resolveoverloads_461584(c, n, norig, filter, (&errors), (&r));
		{
			if (!(r.state == ((NU8) 1))) goto LA12;
			result = semresolvedcall_463507(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_461326(c, n, errors);
		}
		LA10: ;
	}
	goto LA1;
	LA8: ;
	{
		notfounderror_461326(c, n, errors);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, semoverloadedcallanalyseeffects_496293)(Tcontext280023* c, Tnode225809* n, Tnode225809* norig, NU16 flags) {
	Tnode225809* result;
{	result = 0;
	{
		if (!!(((flags & 6) == 0))) goto LA3;
		result = semoverloadedcall_463971(c, n, norig, 520192);
	}
	goto LA1;
	LA3: ;
	{
		result = semoverloadedcall_463971(c, n, norig, 471040);
	}
	LA1: ;
	{
		Tsym225841* callee;
		if (!!((result == NIM_NIL))) goto LA8;
		{
			if (!!(((*(*result).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA12;
			internalerror_196191(((NimStringDesc*) &TMP3514));
			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;
				Tsym225841* 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_196128((*n).info, ((NU16) 26), (*(*callee).name).s);
				LOC22 = 0;
				LOC22 = errorsym_286372(c, n);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325(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(Tnode225809*, propertywriteaccess_498404)(Tcontext280023* c, Tnode225809* n, Tnode225809* norig, Tnode225809* a) {
	Tnode225809* result;
	Tident198021* id;
	Tnode225809* LOC1;
	Tnode225809* setterid;
	NimStringDesc* LOC2;
	Tident198021* LOC3;
	Tnode225809* aorig;
	Tnodeseq225803* LOC4;
	TY498414 LOC5;
	Tnode225809* LOC6;
	Tnode225809* orig;
	Tnodeseq225803* LOC7;
	TY498414 LOC8;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_226244(a, ((NI) 1));
	id = considerquotedident_286010(LOC1);
	LOC2 = 0;
	LOC2 = rawNewString((*id).s->Sup.len + 1);
appendString(LOC2, (*id).s);
appendChar(LOC2, 61);
	LOC3 = 0;
	LOC3 = getident_198463(LOC2);
	setterid = newidentnode_227313(LOC3, (*n).info);
	aorig = HEX5BHEX5D_226244(norig, ((NI) 0));
	LOC4 = 0;
	LOC4 = (Tnodeseq225803*) newSeq((&NTI225803), 3);
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = setterid;
	LOC5[1] = HEX5BHEX5D_226244(a, ((NI) 0));
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_226244(n, ((NI) 1));
	LOC5[2] = semexpr_457201(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_227607(((NU8) 27), (*n).info, LOC4, NIM_NIL);
	(*result).flags |= ((NU16)1)<<((((NU8) 10))%(sizeof(NU16)*8));
	LOC7 = 0;
	LOC7 = (Tnodeseq225803*) newSeq((&NTI225803), 3);
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = setterid;
	LOC8[1] = HEX5BHEX5D_226244(aorig, ((NI) 0));
	LOC8[2] = HEX5BHEX5D_226244(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_227607(((NU8) 27), (*n).info, LOC7, NIM_NIL);
	result = semoverloadedcallanalyseeffects_496293(c, result, orig, 0);
	{
		if (!!((result == NIM_NIL))) goto LA11;
		result = aftercallactions_496784(c, result, norig, 0);
	}
	LA11: ;
	return result;
}

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

N_NIMCALL(Tnode225809*, dottransformation_498079)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode225809* LOC6;
		Tnode225809* LOC7;
		LOC3 = 0;
		LOC3 = issymchoice_493671((*n).kindU.S6.sons->data[((NI) 1)]);
		if (!LOC3) goto LA4;
		result = newnodei_227351(((NU8) 25), (*n).info);
		addson_227819(result, (*n).kindU.S6.sons->data[((NI) 1)]);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_226244(n, ((NI) 0));
		LOC7 = 0;
		LOC7 = copytree_230028(LOC6);
		addson_227819(result, LOC7);
	}
	goto LA1;
	LA4: ;
	{
		Tident198021* i;
		Tnode225809* LOC9;
		Tnode225809* LOC10;
		Tnode225809* LOC11;
		Tnode225809* LOC12;
		i = considerquotedident_286010((*n).kindU.S6.sons->data[((NI) 1)]);
		result = newnodei_227351(((NU8) 25), (*n).info);
		(*result).flags |= ((NU16)1)<<((((NU8) 9))%(sizeof(NU16)*8));
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_226244(n, ((NI) 1));
		LOC10 = 0;
		LOC10 = newidentnode_227313(i, (*LOC9).info);
		addson_227819(result, LOC10);
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_226244(n, ((NI) 0));
		LOC12 = 0;
		LOC12 = copytree_230028(LOC11);
		addson_227819(result, LOC12);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, buildoverloadedsubscripts_498122)(Tnode225809* n, Tident198021* ident) {
	Tnode225809* result;
	Tnode225809* LOC1;
	result = 0;
	result = newnodei_227351(((NU8) 27), (*n).info);
	LOC1 = 0;
	LOC1 = newidentnode_227313(ident, (*n).info);
	add_226165(result, LOC1);
	{
		NI i_498139;
		NI HEX3Atmp_498142;
		NI LOC3;
		NI res_498145;
		i_498139 = 0;
		HEX3Atmp_498142 = 0;
		LOC3 = 0;
		LOC3 = len_226098(n);
		HEX3Atmp_498142 = (NI)(LOC3 - ((NI) 1));
		res_498145 = ((NI) 0);
		{
			while (1) {
				Tnode225809* LOC6;
				if (!(res_498145 <= HEX3Atmp_498142)) goto LA5;
				i_498139 = res_498145;
				LOC6 = 0;
				LOC6 = HEX5BHEX5D_226244(n, i_498139);
				add_226165(result, LOC6);
				res_498145 += ((NI) 1);
			} LA5: ;
		}
	}
	return result;
}

N_NIMCALL(void, typemismatch_457379)(Tnode225809* n, Ttype225847* formal, Ttype225847* actual) {
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		NimStringDesc* LOC8;
		NimStringDesc* LOC9;
		NimStringDesc* LOC10;
		TY192421 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_192406(((NU16) 133));
		LOC9 = 0;
		LOC9 = typetostring_255032(actual, ((NU8) 0));
		LOC10 = 0;
		LOC10 = msgkindtostring_192406(((NU16) 135));
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = typetostring_255032(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*) &TMP3518));
appendString(LOC7, LOC12);
		localerror_196128((*n).info, ((NU16) 4), LOC7);
	}
	LA5: ;
}

N_NIMCALL(Ttype225847*, newproctype_485594)(Tlineinfo190352 info, Tsym225841* owner) {
	Ttype225847* result;
	Tnode225809* LOC1;
	result = 0;
	result = newtype_228140(((NU8) 25), owner);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_227351(((NU8) 76), info));
	rawaddson_229498(result, NIM_NIL);
	LOC1 = 0;
	LOC1 = newnodei_227351(((NU8) 152), info);
	addson_227819((*result).n, LOC1);
	return result;
}

N_NIMCALL(void, addparam_485602)(Ttype225847* proctype, Tsym225841* param) {
	NI LOC1;
	Tnode225809* LOC2;
	LOC1 = 0;
	LOC1 = len_228369(proctype);
	(*param).position = (NI)(LOC1 - ((NI) 1));
	LOC2 = 0;
	LOC2 = newsymnode_227325(param);
	addson_227819((*proctype).n, LOC2);
	rawaddson_229498(proctype, (*param).typ);
}

N_NIMCALL(Tnode225809*, newasgnstmt_484910)(Tnode225809* le, Tnode225809* ri) {
	Tnode225809* result;
	result = 0;
	result = newnodei_227407(((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_485406)(Tliftctx484686* c, Ttype225847* t, Tnode225809* body, Tnode225809* x, Tnode225809* y) {
	{
		Tnode225809* LOC5;
		if (!!(((*c).kind == ((NU8) 2)))) goto LA3;
		LOC5 = 0;
		LOC5 = newasgnstmt_484910(x, y);
		add_226165(body, LOC5);
	}
	LA3: ;
}

N_NIMCALL(Tnode225809*, genbuiltin_485465)(NU8 magic, NimStringDesc* name, Tnode225809* i) {
	Tnode225809* result;
	Tsym225841* LOC1;
	Tnode225809* LOC2;
	result = 0;
	result = newnodei_227351(((NU8) 27), (*i).info);
	LOC1 = 0;
	LOC1 = createmagic_231047(name, magic);
	LOC2 = 0;
	LOC2 = newsymnode_227325(LOC1);
	add_226165(result, LOC2);
	add_226165(result, i);
	return result;
}

N_NIMCALL(Tnode225809*, newseqcall_485501)(Tcontext280023* c, Tnode225809* x, Tnode225809* y) {
	Tnode225809* result;
	Tnode225809* lencall;
	result = 0;
	result = genbuiltin_485465(((NU8) 31), ((NimStringDesc*) &TMP3522), x);
	lencall = genbuiltin_485465(((NU8) 35), ((NimStringDesc*) &TMP3523), y);
	asgnRefNoCycle((void**) (&(*lencall).typ), getsystype_274190(((NU8) 31)));
	add_226165(result, lencall);
	return result;
}

N_NIMCALL(void, addvar_485427)(Tnode225809* father, Tnode225809* v, Tnode225809* value) {
	Tnode225809* vpart;
	vpart = newnodei_227407(((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_226807);
	asgnRefNoCycle((void**) (&(*vpart).kindU.S6.sons->data[((NI) 2)]), value);
	addson_227819(father, vpart);
}

N_NIMCALL(Tnode225809*, declarecounter_485439)(Tliftctx484686* c, Tnode225809* body, NI64 first) {
	Tnode225809* result;
	Tsym225841* temp;
	Tident198021* LOC1;
	Tnode225809* v;
	Tnode225809* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_198463(((NimStringDesc*) &TMP3524));
	temp = newsym_226656(((NU8) 5), LOC1, (*c).fn, (*c).info);
	asgnRefNoCycle((void**) (&(*temp).typ), getsystype_274190(((NU8) 31)));
	(*temp).flags |= ((NU32)1)<<((((NU8) 2))%(sizeof(NU32)*8));
	v = newnodei_227351(((NU8) 99), (*c).info);
	result = newsymnode_227325(temp);
	LOC2 = 0;
	LOC2 = newintlit_404681(first);
	addvar_485427(v, result, LOC2);
	add_226165(body, v);
	return result;
}

N_NIMCALL(Tnode225809*, genwhileloop_485477)(Tliftctx484686* c, Tnode225809* i, Tnode225809* dest) {
	Tnode225809* result;
	Tnode225809* cmp;
	Tnode225809* LOC1;
	result = 0;
	result = newnodei_227407(((NU8) 96), (*c).info, ((NI) 2));
	cmp = genbuiltin_485465(((NU8) 70), ((NimStringDesc*) &TMP3525), i);
	LOC1 = 0;
	LOC1 = genhigh_404691(dest);
	add_226165(cmp, LOC1);
	asgnRefNoCycle((void**) (&(*cmp).typ), getsystype_274190(((NU8) 1)));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), cmp);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), newnodei_227351(((NU8) 115), (*c).info));
	return result;
}

N_NIMCALL(Tnode225809*, at_484706)(Tnode225809* a, Tnode225809* i, Ttype225847* elemtype) {
	Tnode225809* result;
	result = 0;
	result = newnodei_227407(((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_485491)(Tnode225809* body, Tnode225809* i) {
	Tnode225809* inccall;
	Tnode225809* LOC1;
	inccall = genbuiltin_485465(((NU8) 26), ((NimStringDesc*) &TMP3527), i);
	LOC1 = 0;
	LOC1 = newintlit_404681(IL64(1));
	add_226165(inccall, LOC1);
	add_226165(body, inccall);
}

N_NIMCALL(Tnode225809*, newdestructorcall_484920)(Tsym225841* op, Tnode225809* x) {
	Tnode225809* result;
	Tnode225809* LOC1;
	result = 0;
	result = newnodeit_227807(((NU8) 27), (*x).info, (*(*op).typ).sons->data[((NI) 0)]);
	LOC1 = 0;
	LOC1 = newsymnode_227325(op);
	add_226165(result, LOC1);
	add_226165(result, x);
	return result;
}

N_NIMCALL(Tnode225809*, genaddr_484867)(Tcontext280023* c, Tnode225809* x) {
	Tnode225809* result;
	result = 0;
	{
		if (!((*x).kind == ((NU8) 65))) goto LA3;
		checksonslen_281260(x, ((NI) 1));
		result = (*x).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA3: ;
	{
		Ttype225847* LOC6;
		LOC6 = 0;
		LOC6 = makevartype_280645(c, (*x).typ);
		result = newnodeit_227807(((NU8) 64), (*x).info, LOC6);
		addson_227819(result, x);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, newasgncall_484885)(Tcontext280023* c, Tsym225841* op, Tnode225809* x, Tnode225809* y) {
	Tnode225809* result;
	Tnode225809* LOC5;
	Tnode225809* LOC6;
	result = 0;
	{
		if (!(((*op).flags &(1<<((((NU8) 20))&31)))!=0)) goto LA3;
		localerror_196128((*x).info, ((NU16) 226), (*(*op).name).s);
	}
	LA3: ;
	result = newnodei_227351(((NU8) 27), (*x).info);
	LOC5 = 0;
	LOC5 = newsymnode_227325(op);
	add_226165(result, LOC5);
	LOC6 = 0;
	LOC6 = genaddr_484867(c, x);
	add_226165(result, LOC6);
	add_226165(result, y);
	return result;
}

N_NIMCALL(Tnode225809*, newdeepcopycall_484931)(Tsym225841* op, Tnode225809* x, Tnode225809* y) {
	Tnode225809* result;
	Tnode225809* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = newdestructorcall_484920(op, y);
	result = newasgnstmt_484910(x, LOC1);
	return result;
}

N_NIMCALL(NIM_BOOL, consideroverloadedop_484940)(Tliftctx484686* c, Ttype225847* t, Tnode225809* body, Tnode225809* x, Tnode225809* y) {
	NIM_BOOL result;
{	result = 0;
	switch ((*c).kind) {
	case ((NU8) 2):
	{
		Tsym225841* op;
		op = (*t).destructor;
		{
			Tnode225809* LOC6;
			if (!!((op == NIM_NIL))) goto LA4;
			markused_388253((*c).info, op);
			LOC6 = 0;
			LOC6 = newdestructorcall_484920(op, x);
			add_226165(body, LOC6);
			result = NIM_TRUE;
		}
		LA4: ;
	}
	break;
	case ((NU8) 0):
	{
		{
			Tsym225841* op;
			Tnode225809* LOC27;
			if (!(((*t).flags &(1<<((((NU8) 26))&31)))!=0)) goto LA10;
			op = 0;
			{
				NIM_BOOL LOC14;
				LOC14 = 0;
				LOC14 = sametype_260092(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_484701((*c).c, t, (*c).info);
				}
				LA25: ;
			}
			LA12: ;
			markused_388253((*c).info, op);
			LOC27 = 0;
			LOC27 = newasgncall_484885((*c).c, op, x, y);
			add_226165(body, LOC27);
			result = NIM_TRUE;
		}
		LA10: ;
	}
	break;
	case ((NU8) 1):
	{
		Tsym225841* op;
		op = (*t).deepcopy;
		{
			Tnode225809* LOC33;
			if (!!((op == NIM_NIL))) goto LA31;
			markused_388253((*c).info, op);
			LOC33 = 0;
			LOC33 = newdeepcopycall_484931(op, x, y);
			add_226165(body, LOC33);
			result = NIM_TRUE;
		}
		LA31: ;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, dotfield_484767)(Tnode225809* x, Tsym225841* f) {
	Tnode225809* result;
	result = 0;
	result = newnodei_227407(((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_227338(f, (*x).info));
	asgnRefNoCycle((void**) (&(*result).typ), (*f).typ);
	return result;
}

N_NIMCALL(void, liftbodyobj_484778)(Tliftctx484686* c, Tnode225809* n, Tnode225809* body, Tnode225809* x, Tnode225809* y) {
	switch ((*n).kind) {
	case ((NU8) 3):
	{
		Tsym225841* f;
		Tnode225809* LOC2;
		Tnode225809* LOC3;
		f = (*n).kindU.S4.sym;
		LOC2 = 0;
		LOC2 = dotfield_484767(x, f);
		LOC3 = 0;
		LOC3 = dotfield_484767(y, f);
		liftbodyaux_484693(c, (*f).typ, body, LOC2, LOC3);
	}
	break;
	case ((NU8) 23):
	{
	}
	break;
	case ((NU8) 139):
	{
		Tnode225809* LOC6;
		Tnode225809* casestmt;
		Tnode225809* access;
		Tnode225809* LOC7;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_226244(n, ((NI) 0));
		liftbodyobj_484778(c, LOC6, body, x, y);
		casestmt = newnodei_227351(((NU8) 97), (*c).info);
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_226244(n, ((NI) 0));
		access = dotfield_484767(x, (*LOC7).kindU.S4.sym);
		add_226165(casestmt, access);
		{
			NI i_484814;
			NI HEX3Atmp_484825;
			NI LOC9;
			NI res_484828;
			i_484814 = 0;
			HEX3Atmp_484825 = 0;
			LOC9 = 0;
			LOC9 = len_226098(n);
			HEX3Atmp_484825 = (LOC9 - 1);
			res_484828 = ((NI) 1);
			{
				while (1) {
					Tnode225809* branch;
					Tnode225809* LOC12;
					NI L;
					Tnode225809* LOC13;
					Tnode225809* LOC14;
					if (!(res_484828 <= HEX3Atmp_484825)) goto LA11;
					i_484814 = res_484828;
					LOC12 = 0;
					LOC12 = HEX5BHEX5D_226244(n, i_484814);
					branch = copytree_230028(LOC12);
					L = len_226098(branch);
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), newnodei_227351(((NU8) 115), (*c).info));
					LOC13 = 0;
					LOC13 = HEX5BHEX5D_226244(n, i_484814);
					LOC14 = 0;
					LOC14 = lastson_228406(LOC13);
					liftbodyobj_484778(c, LOC14, (*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))], x, y);
					add_226165(casestmt, branch);
					res_484828 += ((NI) 1);
				} LA11: ;
			}
		}
		add_226165(body, casestmt);
		localerror_196139((*c).info, ((NimStringDesc*) &TMP3528));
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode225809* t_484823;
			t_484823 = 0;
			{
				NI i_484836;
				NI HEX3Atmp_484838;
				NI LOC18;
				NI res_484840;
				i_484836 = 0;
				HEX3Atmp_484838 = 0;
				LOC18 = 0;
				LOC18 = len_226098(n);
				HEX3Atmp_484838 = (LOC18 - 1);
				res_484840 = ((NI) 0);
				{
					while (1) {
						if (!(res_484840 <= HEX3Atmp_484838)) goto LA20;
						i_484836 = res_484840;
						t_484823 = (*n).kindU.S6.sons->data[i_484836];
						liftbodyobj_484778(c, t_484823, body, x, y);
						res_484840 += ((NI) 1);
					} LA20: ;
				}
			}
		}
	}
	break;
	default:
	{
		illformedastlocal_281250(n);
	}
	break;
	}
}

N_NIMCALL(void, liftbodytup_484717)(Tliftctx484686* c, Ttype225847* t, Tnode225809* body, Tnode225809* x, Tnode225809* y) {
	{
		NI i_484743;
		NI HEX3Atmp_484748;
		NI LOC2;
		NI res_484751;
		i_484743 = 0;
		HEX3Atmp_484748 = 0;
		LOC2 = 0;
		LOC2 = len_228369(t);
		HEX3Atmp_484748 = (LOC2 - 1);
		res_484751 = ((NI) 0);
		{
			while (1) {
				Tnode225809* lit;
				Tnode225809* LOC5;
				Tnode225809* LOC6;
				if (!(res_484751 <= HEX3Atmp_484748)) goto LA4;
				i_484743 = res_484751;
				lit = newintlit_404681(((NI64) (i_484743)));
				LOC5 = 0;
				LOC5 = at_484706(x, lit, (*t).sons->data[i_484743]);
				LOC6 = 0;
				LOC6 = at_484706(y, lit, (*t).sons->data[i_484743]);
				liftbodyaux_484693(c, (*t).sons->data[i_484743], body, LOC5, LOC6);
				res_484751 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, liftbodyaux_484693)(Tliftctx484686* c, Ttype225847* t, Tnode225809* body, Tnode225809* x, Tnode225809* 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_485406(c, t, body, x, y);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	case ((NU8) 24):
	{
		{
			Tnode225809* i;
			NI64 LOC13;
			Tnode225809* whileloop;
			Ttype225847* elemtype;
			Tnode225809* LOC14;
			Tnode225809* LOC15;
			if (!(((*t).flags &(1<<((((NU8) 26))&31)))!=0)) goto LA6;
			{
				Tnode225809* LOC12;
				if (!((*t).kind == ((NU8) 24))) goto LA10;
				LOC12 = 0;
				LOC12 = newseqcall_485501((*c).c, x, y);
				add_226165(body, LOC12);
			}
			LA10: ;
			LOC13 = 0;
			LOC13 = firstord_255004(t);
			i = declarecounter_485439(c, body, LOC13);
			whileloop = genwhileloop_485477(c, i, x);
			elemtype = lastson_228426(t);
			LOC14 = 0;
			LOC14 = at_484706(x, i, elemtype);
			LOC15 = 0;
			LOC15 = at_484706(y, i, elemtype);
			liftbodyaux_484693(c, elemtype, (*whileloop).kindU.S6.sons->data[((NI) 1)], LOC14, LOC15);
			addincstmt_485491((*whileloop).kindU.S6.sons->data[((NI) 1)], i);
			add_226165(body, whileloop);
		}
		goto LA4;
		LA6: ;
		{
			defaultop_485406(c, t, body, x, y);
		}
		LA4: ;
	}
	break;
	case ((NU8) 17):
	case ((NU8) 13):
	{
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = consideroverloadedop_484940(c, t, body, x, y);
			if (!!(LOC20)) goto LA21;
			{
				if (!!(((*t).sons->data[((NI) 0)] == NIM_NIL))) goto LA25;
				liftbodyaux_484693(c, (*t).sons->data[((NI) 0)], body, x, y);
			}
			LA25: ;
			{
				if (!((*t).kind == ((NU8) 17))) goto LA29;
				liftbodyobj_484778(c, (*t).n, body, x, y);
			}
			LA29: ;
		}
		LA21: ;
	}
	break;
	case ((NU8) 18):
	{
		liftbodytup_484717(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_485406(c, t, body, x, y);
		}
		goto LA33;
		LA37: ;
		{
			Tnode225809* call;
			Tsym225841* LOC40;
			Tnode225809* LOC41;
			call = newnodei_227407(((NU8) 27), (*c).info, ((NI) 2));
			asgnRefNoCycle((void**) (&(*call).typ), t);
			LOC40 = 0;
			LOC40 = createmagic_231047(((NimStringDesc*) &TMP3529), ((NU8) 202));
			asgnRefNoCycle((void**) (&(*call).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325(LOC40));
			asgnRefNoCycle((void**) (&(*call).kindU.S6.sons->data[((NI) 1)]), y);
			LOC41 = 0;
			LOC41 = newasgnstmt_484910(x, call);
			add_226165(body, LOC41);
		}
		LA33: ;
	}
	break;
	case ((NU8) 48):
	case ((NU8) 27):
	{
		localerror_196128((*c).info, ((NU16) 4), ((NimStringDesc*) &TMP3530));
	}
	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_255032(t, ((NU8) 0));
		LOC44 = rawNewString(LOC45->Sup.len + 31);
appendString(LOC44, ((NimStringDesc*) &TMP3531));
appendString(LOC44, LOC45);
		internalerror_196172((*c).info, LOC44);
	}
	break;
	case ((NU8) 15):
	case ((NU8) 20):
	case ((NU8) 11):
	case ((NU8) 61):
	case ((NU8) 59):
	case ((NU8) 23):
	{
		Ttype225847* LOC47;
		LOC47 = 0;
		LOC47 = lastson_228426(t);
		liftbodyaux_484693(c, LOC47, body, x, y);
	}
	break;
	}
}

static N_INLINE(Tnode225809*, newderef_402024)(Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = newnodeit_227807(((NU8) 65), (*n).info, (*(*n).typ).sons->data[((NI) 0)]);
	addson_227819(result, n);
	return result;
}

N_NIMCALL(Tsym225841*, liftbody_484701)(Tcontext280023* c, Ttype225847* typ, Tlineinfo190352 info) {
	Tsym225841* result;
	Tliftctx484686 a;
	Tnode225809* body;
	Tident198021* LOC1;
	Tsym225841* dest;
	Tident198021* LOC2;
	Tsym225841* src;
	Tident198021* LOC3;
	Tnode225809* LOC4;
	Tnode225809* LOC5;
	Tnode225809* LOC6;
	Tnode225809* n;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	a.info = info;
	body = newnodei_227351(((NU8) 115), info);
	LOC1 = 0;
	LOC1 = getident_198463(((NimStringDesc*) &TMP3519));
	result = newsym_226656(((NU8) 12), LOC1, (*typ).owner, info);
	a.fn = result;
	a.asgnfortype = typ;
	LOC2 = 0;
	LOC2 = getident_198463(((NimStringDesc*) &TMP3520));
	dest = newsym_226656(((NU8) 3), LOC2, result, info);
	LOC3 = 0;
	LOC3 = getident_198463(((NimStringDesc*) &TMP3521));
	src = newsym_226656(((NU8) 3), LOC3, result, info);
	asgnRefNoCycle((void**) (&(*dest).typ), makevartype_280645(c, typ));
	asgnRefNoCycle((void**) (&(*src).typ), typ);
	asgnRefNoCycle((void**) (&(*result).typ), newproctype_485594(info, (*typ).owner));
	addparam_485602((*result).typ, dest);
	addparam_485602((*result).typ, src);
	LOC4 = 0;
	LOC4 = newsymnode_227325(dest);
	LOC5 = 0;
	LOC5 = newderef_402024(LOC4);
	LOC6 = 0;
	LOC6 = newsymnode_227325(src);
	liftbodyaux_484693((&a), typ, body, LOC5, LOC6);
	n = newnodei_227407(((NU8) 79), info, ((NI) 7));
	{
		NI i_485648;
		NI HEX3Atmp_485657;
		NI LOC8;
		NI res_485660;
		i_485648 = 0;
		HEX3Atmp_485657 = 0;
		LOC8 = 0;
		LOC8 = len_226098(n);
		HEX3Atmp_485657 = (LOC8 - 1);
		res_485660 = ((NI) 0);
		{
			while (1) {
				if (!(res_485660 <= HEX3Atmp_485657)) goto LA10;
				i_485648 = res_485660;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_485648]), emptynode_226807);
				res_485660 += ((NI) 1);
			} LA10: ;
		}
	}
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325(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(Tsym225841*, getasgnorliftbody_485676)(Tcontext280023* c, Ttype225847* typ, Tlineinfo190352 info) {
	Tsym225841* result;
	Ttype225847* t;
	result = 0;
	t = skiptypes_229167(typ, 8390656);
	result = (*t).assignment;
	{
		if (!result == 0) goto LA3;
		result = liftbody_484701(c, t, info);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode225809*, overloadedasgn_485696)(Tcontext280023* c, Tnode225809* dest, Tnode225809* src) {
	Tnode225809* result;
	Tsym225841* a;
	result = 0;
	a = getasgnorliftbody_485676(c, (*dest).typ, (*dest).info);
	result = newasgncall_484885(c, a, dest, src);
	return result;
}

N_NIMCALL(Tnode225809*, takeimplicitaddr_498470)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	NU8 valid;
	Ttype225847* 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_226098(n);
			if (!(LOC6 == ((NI) 1))) goto LA7;
			result = (*n).kindU.S6.sons->data[((NI) 0)];
			goto BeforeRet;
		}
		LA7: ;
	}
	break;
	default:
	{
	}
	break;
	}
	valid = isassignable_494842(c, n, NIM_FALSE);
	{
		if (!!((valid == ((NU8) 1)))) goto LA12;
		{
			NimStringDesc* LOC18;
			if (!(valid == ((NU8) 2))) goto LA16;
			LOC18 = 0;
			LOC18 = rendertree_247059(n, 4);
			localerror_196128((*n).info, ((NU16) 130), LOC18);
		}
		goto LA14;
		LA16: ;
		{
			localerror_196128((*n).info, ((NU16) 129), ((NimStringDesc*) &TMP3117));
		}
		LA14: ;
	}
	LA12: ;
	LOC20 = 0;
	LOC20 = makeptrtype_280214(c, (*n).typ);
	result = newnodeit_227807(((NU8) 64), (*n).info, LOC20);
	add_226165(result, n);
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(Tnode225809*, semasgn_495310)(Tcontext280023* c, Tnode225809* n, NU8 mode) {
	Tnode225809* result;
	Tnode225809* a;
	Ttype225847* le;
{	result = 0;
	checksonslen_281260(n, ((NI) 2));
	a = (*n).kindU.S6.sons->data[((NI) 0)];
	switch ((*a).kind) {
	case ((NU8) 45):
	{
		Tnode225809* norig;
		norig = copytree_230028(n);
		a = builtinfieldaccess_497358(c, a, 1);
		{
			Tnode225809* LOC6;
			Tnode225809* LOC11;
			if (!(a == NIM_NIL)) goto LA4;
			LOC6 = 0;
			LOC6 = HEX5BHEX5D_226244(n, ((NI) 0));
			a = propertywriteaccess_498404(c, n, norig, LOC6);
			{
				if (!!((a == NIM_NIL))) goto LA9;
				result = a;
				goto BeforeRet;
			}
			LA9: ;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_226244(n, ((NI) 0));
			a = dottransformation_498079(c, LOC11);
			{
				if (!((*a).kind == ((NU8) 25))) goto LA14;
				(*a).kind = ((NU8) 27);
				a = semexprwithtype_457211(c, a, 1);
			}
			LA14: ;
		}
		LA4: ;
	}
	break;
	case ((NU8) 42):
	{
		Tnode225809* oldbracketexpr;
		oldbracketexpr = (*(*c).p).bracketexpr;
		a = semsubscript_495315(c, a, 1);
		{
			NIM_BOOL LOC19;
			Tident198021* LOC23;
			Tnode225809* LOC24;
			LOC19 = 0;
			LOC19 = (a == NIM_NIL);
			if (!(LOC19)) goto LA20;
			LOC19 = !((mode == ((NU8) 1)));
			LA20: ;
			if (!LOC19) goto LA21;
			LOC23 = 0;
			LOC23 = getident_198463(((NimStringDesc*) &TMP3515));
			result = buildoverloadedsubscripts_498122((*n).kindU.S6.sons->data[((NI) 0)], LOC23);
			LOC24 = 0;
			LOC24 = HEX5BHEX5D_226244(n, ((NI) 1));
			add_226165(result, LOC24);
			result = semexprnotype_457221(c, result);
			asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
			goto BeforeRet;
		}
		goto LA17;
		LA21: ;
		{
			NimStringDesc* LOC28;
			Tnode225809* LOC29;
			NimStringDesc* LOC30;
			if (!(a == NIM_NIL)) goto LA26;
			LOC28 = 0;
			LOC29 = 0;
			LOC29 = HEX5BHEX5D_226244(n, ((NI) 0));
			LOC30 = 0;
			LOC30 = HEX24_247090(LOC29);
			LOC28 = rawNewString(LOC30->Sup.len + 19);
appendString(LOC28, ((NimStringDesc*) &TMP3344));
appendString(LOC28, LOC30);
			localerror_196139((*n).info, LOC28);
			result = n;
			goto BeforeRet;
		}
		goto LA17;
		LA26: ;
		LA17: ;
		asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
	}
	break;
	case ((NU8) 40):
	{
		Tident198021* LOC32;
		Tnode225809* LOC33;
		LOC32 = 0;
		LOC32 = getident_198463(((NimStringDesc*) &TMP3516));
		result = buildoverloadedsubscripts_498122((*n).kindU.S6.sons->data[((NI) 0)], LOC32);
		LOC33 = 0;
		LOC33 = HEX5BHEX5D_226244(n, ((NI) 1));
		add_226165(result, LOC33);
		result = semexprnotype_457221(c, result);
		goto BeforeRet;
	}
	break;
	case ((NU8) 37):
	{
		{
			NI LOC37;
			Tnode225809* LOC40;
			LOC37 = 0;
			LOC37 = len_226098(a);
			if (!(((NI) 2) <= LOC37)) goto LA38;
			LOC40 = 0;
			LOC40 = lowertupleunpackingforasgn_402283(n, (*(*c).p).owner);
			result = semstmt_457277(c, LOC40);
			goto BeforeRet;
		}
		goto LA35;
		LA38: ;
		{
			a = semexprwithtype_457211(c, a, 1);
		}
		LA35: ;
	}
	break;
	default:
	{
		a = semexprwithtype_457211(c, a, 1);
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), a);
	le = (*a).typ;
	{
		NIM_BOOL LOC45;
		Ttype225847* LOC46;
		NU8 LOC48;
		NimStringDesc* LOC51;
		LOC45 = 0;
		LOC46 = 0;
		LOC46 = skiptypes_229167(le, 2048);
		LOC45 = !(((*LOC46).kind == ((NU8) 23)));
		if (!(LOC45)) goto LA47;
		LOC48 = 0;
		LOC48 = isassignable_494842(c, a, NIM_FALSE);
		LOC45 = (LOC48 == ((NU8) 0));
		LA47: ;
		if (!LOC45) goto LA49;
		LOC51 = 0;
		LOC51 = rendertree_247059(a, 4);
		localerror_196128((*a).info, ((NU16) 180), LOC51);
	}
	goto LA43;
	LA49: ;
	{
		Tnode225809* lhs;
		NIM_BOOL lhsisresult;
		NIM_BOOL LOC53;
		Tnode225809* 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_457211(c, (*n).kindU.S6.sons->data[((NI) 1)], LOC55);
		{
			if (!lhsisresult) goto LA63;
			asgnRefNoCycle((void**) (&(*n).typ), enforcevoidcontext_481405);
			{
				NIM_BOOL LOC67;
				NIM_BOOL LOC69;
				LOC67 = 0;
				LOC67 = !(((*(*(*c).p).owner).kind == ((NU8) 17)));
				if (!(LOC67)) goto LA68;
				LOC69 = 0;
				LOC69 = ismetatype_226821((*(*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_392796(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_196279(TMP3517);
						internalerror_196191(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_457379(n, (*lhs).typ, (*rhs).typ);
				}
				LA73: ;
			}
			LA71: ;
		}
		LA63: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), fitnode_457245(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_485696(c, lhs, (*n).kindU.S6.sons->data[((NI) 1)]);
			goto BeforeRet;
		}
		LA90: ;
		fixabstracttype_494616(c, n);
		asgntoresultvar_498501(c, n, (*n).kindU.S6.sons->data[((NI) 0)], (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	LA43: ;
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semprocbody_457238)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tscope225835* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	result = semexpr_457201(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_230932((*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_483094(result);
		}
		goto LA9;
		LA21: ;
		{
			Tnode225809* a;
			a = newnodei_227407(((NU8) 73), (*n).info, ((NI) 2));
			asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325((*(*c).p).resultsym));
			asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), result);
			result = semasgn_495310(c, a, ((NU8) 0));
		}
		LA9: ;
	}
	goto LA2;
	LA7: ;
	{
		discardcheck_483156(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_226821((*(*(*c).p).resultsym).typ);
		LA30: ;
		if (!LOC27) goto LA31;
		{
			NIM_BOOL LOC35;
			LOC35 = 0;
			LOC35 = isemptytype_230932((*result).typ);
			if (!LOC35) goto LA36;
			asgnRefNoCycle((void**) (&(*(*(*c).p).resultsym).typ), errortype_281161(c));
			asgnRefNoCycle((void**) (&(*(*(*(*c).p).owner).typ).sons->data[((NI) 0)]), NIM_NIL);
		}
		goto LA33;
		LA36: ;
		{
			localerror_196128((*(*(*c).p).resultsym).info, ((NU16) 231), ((NimStringDesc*) &TMP3117));
		}
		LA33: ;
	}
	LA31: ;
	closescope_286111(c);
	return result;
}

N_NIMCALL(void, instantiatebody_459941)(Tcontext280023* c, Tnode225809* n, Tnode225809* params, Tsym225841* result) {
	{
		Tnode225809* b;
		Tidtable225859 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_229057((&symmap));
		{
			if (!!((params == NIM_NIL))) goto LA7;
			{
				NI i_460001;
				NI HEX3Atmp_460044;
				NI LOC10;
				NI res_460047;
				i_460001 = 0;
				HEX3Atmp_460044 = 0;
				LOC10 = 0;
				LOC10 = len_226098(params);
				HEX3Atmp_460044 = (LOC10 - 1);
				res_460047 = ((NI) 1);
				{
					while (1) {
						Tsym225841* param;
						Tnode225809* LOC13;
						if (!(res_460047 <= HEX3Atmp_460044)) goto LA12;
						i_460001 = res_460047;
						LOC13 = 0;
						LOC13 = HEX5BHEX5D_226244(params, i_460001);
						param = (*LOC13).kindU.S4.sym;
						{
							Tnode225809* LOC18;
							Tidobj198015* LOC19;
							Tnode225809* LOC20;
							TNimObject* LOC21;
							if (!(((*param).flags &(1<<((((NU8) 31))&31)))!=0)) goto LA16;
							LOC18 = 0;
							LOC18 = HEX5BHEX5D_226244(params, i_460001);
							LOC19 = 0;
							LOC19 = &(*LOC18).kindU.S4.sym->Sup;
							LOC20 = 0;
							LOC20 = HEX5BHEX5D_226244((*(*result).typ).n, (NI)((*param).position + ((NI) 1)));
							LOC21 = 0;
							LOC21 = &(*LOC20).kindU.S4.sym->Sup.Sup;
							idtableput_233196((&symmap), LOC19, LOC21);
						}
						LA16: ;
						res_460047 += ((NI) 1);
					} LA12: ;
				}
			}
		}
		LA7: ;
		freshgensyms_459801(b, result, (&symmap));
		b = semprocbody_457238(c, b);
		b = hlobody_459161(c, b);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_417225((*c).module, b, result));
		(*result).flags &= ~(((NU32)1) << ((((NU8) 4)) % (sizeof(NU32)*8)));
		(*c).ingenericinst -= ((NI) 1);
	}
	LA3: ;
}

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

N_NIMCALL(NIM_BOOL, hasobjparam_490833)(Tsym225841* s) {
	NIM_BOOL result;
	Ttype225847* t;
{	result = 0;
	t = (*s).typ;
	{
		NI col_490851;
		NI HEX3Atmp_490862;
		NI LOC2;
		NI res_490865;
		col_490851 = 0;
		HEX3Atmp_490862 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228351(t);
		HEX3Atmp_490862 = (NI)(LOC2 - ((NI) 1));
		res_490865 = ((NI) 1);
		{
			while (1) {
				if (!(res_490865 <= HEX3Atmp_490862)) goto LA4;
				col_490851 = res_490865;
				{
					Ttype225847* LOC7;
					LOC7 = 0;
					LOC7 = skiptypes_229167((*t).sons->data[col_490851], IL64(211106247215360));
					if (!((*LOC7).kind == ((NU8) 17))) goto LA8;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA8: ;
				res_490865 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, finishmethod_457341)(Tcontext280023* c, Tsym225841* s) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = hasobjparam_490833(s);
		if (!LOC3) goto LA4;
		methoddef_400634(s, NIM_FALSE);
	}
	LA4: ;
}

N_NIMCALL(Tsym225841*, generateinstance_460450)(Tcontext280023* c, Tsym225841* fn, Tidtable225859 pt, Tlineinfo190352 info) {
	Tsym225841* result;
	Tnode225809* n;
	Tsym225841* LOC10;
	NI oldintypeclass;
	Tscope225835* oldscope;
	Tscope225835* LOC14;
	Tnode225809* gp;
	Tinstantiation225831* entry;
	NI i;
	NI LOC20;
	NI LOC21;
	Tsym225841* oldprc;
	Tsym225841* LOC93;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!!(!(((393216 &(1<<(((*fn).kind)&31)))!=0)))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_196279(TMP3151);
		internalerror_196191(LOC5);
	}
	LA3: ;
	{
		if (!(((NI) 1000) < (*c).instcounter)) goto LA8;
		internalerror_196172((*(*fn).ast).info, ((NimStringDesc*) &TMP3153));
	}
	LA8: ;
	(*c).instcounter += ((NI) 1);
	n = copytree_230028((*fn).ast);
	LOC10 = 0;
	LOC10 = getmodule_233243(fn);
	(*c).friendmodules = (Tsymseq225811*) incrSeqV2(&((*c).friendmodules)->Sup, sizeof(Tsym225841*));
	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_281280(c);
			if (!!(LOC13)) goto LA12;
			asgnRef((void**) (&(*c).currentscope), (*(*c).currentscope).parent);
		} LA12: ;
	}
	result = copysym_228607(fn, NIM_FALSE);
	(*result).flags |= ((NU32)1)<<((((NU8) 2))%(sizeof(NU32)*8));
	asgnRefNoCycle((void**) (&(*result).owner), fn);
	asgnRefNoCycle((void**) (&(*result).ast), n);
	pushowner_280263(result);
	LOC14 = 0;
	LOC14 = openscope_286091(c);
	gp = (*n).kindU.S6.sons->data[((NI) 2)];
	{
		NimStringDesc* LOC19;
		if (!!(!(((*gp).kind == ((NU8) 1))))) goto LA17;
		LOC19 = 0;
		LOC19 = HEX24_196279(TMP3154);
		internalerror_196191(LOC19);
	}
	LA17: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325(result));
	pushinfocontext_191581(info);
	entry = new_460534();
	asgnRefNoCycle((void**) (&(*entry).sym), result);
	i = ((NI) 0);
	LOC20 = 0;
	LOC20 = len_228369((*fn).typ);
	LOC21 = 0;
	LOC21 = len_226098(gp);
	if ((*entry).concretetypes) nimGCunrefNoCycle((*entry).concretetypes);
	(*entry).concretetypes = (Ttypeseq225843*) newSeqRC1((&NTI225843), ((NI) ((NI)((NI)(LOC20 + LOC21) - ((NI) 1)))));
	{
		Tsym225841* s_460628;
		s_460628 = 0;
		{
			NimStringDesc* LOC27;
			if (!!(((*gp).kind == ((NU8) 75)))) goto LA25;
			LOC27 = 0;
			LOC27 = HEX24_196279(TMP3155);
			internalerror_196191(LOC27);
		}
		LA25: ;
		{
			NI i_460817;
			Tnode225809* a_460819;
			i_460817 = 0;
			a_460819 = 0;
			{
				NI i_460821;
				NI HEX3Atmp_460823;
				NI LOC30;
				NI res_460825;
				i_460821 = 0;
				HEX3Atmp_460823 = 0;
				LOC30 = 0;
				LOC30 = len_226098(gp);
				HEX3Atmp_460823 = (LOC30 - 1);
				res_460825 = ((NI) 0);
				{
					while (1) {
						if (!(res_460825 <= HEX3Atmp_460823)) goto LA32;
						i_460821 = res_460825;
						i_460817 = i_460821;
						a_460819 = (*gp).kindU.S6.sons->data[i_460821];
						{
							Tsym225841* q_460829;
							NU8 symkind_460831;
							Tsym225841* s_460833;
							Tsym225841* LOC48;
							Ttype225847* t_460835;
							Tidobj198015* LOC49;
							TNimObject* LOC50;
							{
								NimStringDesc* LOC38;
								if (!!(((*a_460819).kind == ((NU8) 3)))) goto LA36;
								LOC38 = 0;
								LOC38 = HEX24_196279(TMP3156);
								internalerror_196191(LOC38);
							}
							LA36: ;
							q_460829 = (*a_460819).kindU.S4.sym;
							{
								if (!!(((*(*q_460829).typ).kind == ((NU8) 8) || (*(*q_460829).typ).kind == ((NU8) 12) || (*(*q_460829).typ).kind == ((NU8) 49) || (*(*q_460829).typ).kind >= ((NU8) 51) && (*(*q_460829).typ).kind <= ((NU8) 59)))) goto LA41;
								goto LA33;
							}
							LA41: ;
							{
								if (!((*(*q_460829).typ).kind == ((NU8) 59))) goto LA45;
								symkind_460831 = ((NU8) 10);
							}
							goto LA43;
							LA45: ;
							{
								symkind_460831 = ((NU8) 7);
							}
							LA43: ;
							LOC48 = 0;
							LOC48 = getcurrowner_280258();
							s_460833 = newsym_226656(symkind_460831, (*q_460829).name, LOC48, (*q_460829).info);
							(*s_460833).flags = ((*s_460833).flags | 5);
							LOC49 = 0;
							LOC49 = &(*q_460829).typ->Sup;
							LOC50 = 0;
							LOC50 = idtableget_233182(pt, LOC49);
							t_460835 = ((Ttype225847*) (LOC50));
							{
								if (!(t_460835 == NIM_NIL)) goto LA53;
								{
									if (!(((*(*q_460829).typ).flags &(1<<((((NU8) 10))&31)))!=0)) goto LA57;
									t_460835 = (*q_460829).typ;
								}
								goto LA55;
								LA57: ;
								{
									localerror_196128((*a_460819).info, ((NU16) 128), (*(*s_460833).name).s);
									t_460835 = errortype_281161(c);
								}
								LA55: ;
							}
							goto LA51;
							LA53: ;
							{
								if (!((*t_460835).kind == ((NU8) 12))) goto LA61;
								localerror_196128((*a_460819).info, ((NU16) 128), (*(*q_460829).name).s);
								t_460835 = errortype_281161(c);
							}
							goto LA51;
							LA61: ;
							{
								if (!((*t_460835).kind == ((NU8) 9))) goto LA64;
								t_460835 = generatetypeinstance_304894(c, pt, (*a_460819).info, t_460835);
							}
							goto LA51;
							LA64: ;
							LA51: ;
							asgnRefNoCycle((void**) (&(*s_460833).typ), t_460835);
							{
								if (!((*t_460835).kind == ((NU8) 59))) goto LA68;
								asgnRefNoCycle((void**) (&(*s_460833).ast), (*t_460835).n);
							}
							LA68: ;
							s_460628 = s_460833;
							adddecl_286607(c, s_460628);
							asgnRefNoCycle((void**) (&(*entry).concretetypes->data[i]), (*s_460628).typ);
							i += ((NI) 1);
						} LA33: ;
						res_460825 += ((NI) 1);
					} LA32: ;
				}
			}
		}
	}
	pushproccon_280361(c, result);
	instantiateproctype_460176(c, pt, result, info);
	{
		NI j_460650;
		NI HEX3Atmp_460837;
		NI LOC71;
		NI res_460840;
		j_460650 = 0;
		HEX3Atmp_460837 = 0;
		LOC71 = 0;
		LOC71 = len_228369((*result).typ);
		HEX3Atmp_460837 = (NI)(LOC71 - ((NI) 1));
		res_460840 = ((NI) 1);
		{
			while (1) {
				if (!(res_460840 <= HEX3Atmp_460837)) goto LA73;
				j_460650 = res_460840;
				asgnRefNoCycle((void**) (&(*entry).concretetypes->data[i]), (*(*result).typ).sons->data[j_460650]);
				i += ((NI) 1);
				res_460840 += ((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_226807);
	oldprc = genericcacheget_459449(fn, (*entry), (*c).compilescontextid);
	{
		Tinstantiationpair280013 LOC82;
		if (!(oldprc == NIM_NIL)) goto LA80;
		(*entry).compilesid = (*c).compilescontextid;
		safeadd_460699((&(*fn).kindU.S2.procinstcache), entry);
		memset((void*)(&LOC82), 0, sizeof(LOC82));
		makeinstpair_280159(fn, entry, (&LOC82));
		(*c).generics = (TY280143*) incrSeqV2(&((*c).generics)->Sup, sizeof(Tinstantiationpair280013));
		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_297082(c, result, (*n).kindU.S6.sons->data[((NI) 4)], TMP3243);
		}
		LA85: ;
		{
			Tnode225809* LOC91;
			if (!(*n).kindU.S6.sons->data[((NI) 6)] == 0) goto LA89;
			LOC91 = 0;
			LOC91 = getbody_271062(fn);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), copytree_230028(LOC91));
		}
		LA89: ;
		instantiatebody_459941(c, n, (*(*fn).typ).n, result);
		sideeffectscheck_460116(c, result);
		paramstypecheck_458022(c, (*result).typ);
	}
	goto LA78;
	LA80: ;
	{
		result = oldprc;
	}
	LA78: ;
	popproccon_280393(c);
	popinfocontext_191600();
	closescope_286111(c);
	popowner_280269();
	asgnRef((void**) (&(*c).currentscope), oldscope);
	LOC93 = 0;
	LOC93 = pop_413918((&(*c).friendmodules));
	(*c).instcounter -= ((NI) 1);
	(*c).intypeclass = oldintypeclass;
	{
		if (!((*result).kind == ((NU8) 13))) goto LA96;
		finishmethod_457341(c, result);
	}
	LA96: ;
	return result;
}

N_NIMCALL(void, instgenericconvertersarg_463276)(Tcontext280023* c, Tnode225809* a, Tcandidate388209* x) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		Tsym225841* 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_230650((*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym);
		LA6: ;
		if (!LOC3) goto LA7;
		finalcallee = generateinstance_460450(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(Tnode225809*, indextypesmatch_457348)(Tcontext280023* c, Ttype225847* f, Ttype225847* a, Tnode225809* arg) {
	Tnode225809* result;
	Tcandidate388209 m;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_388278(c, (&m), f);
	result = paramtypesmatch_393733((&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_463276(c, result, (&m));
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode225809*, fitnode_457245)(Tcontext280023* c, Ttype225847* formal, Tnode225809* arg) {
	Tnode225809* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!(*arg).typ == 0) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_247059(arg, 4);
		localerror_196128((*arg).info, ((NU16) 94), LOC5);
		result = copynode_229660(arg);
		asgnRefNoCycle((void**) (&(*result).typ), formal);
	}
	goto LA1;
	LA3: ;
	{
		result = indextypesmatch_457348(c, formal, (*arg).typ, arg);
		{
			if (!(result == NIM_NIL)) goto LA9;
			typemismatch_457379(arg, formal, (*arg).typ);
			result = copytree_230028(arg);
			asgnRefNoCycle((void**) (&(*result).typ), formal);
		}
		goto LA7;
		LA9: ;
		{
			Tnode225809* x;
			x = skipconv_264935(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_457253(x, formal, NIM_TRUE);
			}
			goto LA12;
			LA16: ;
			{
				result = skiphiddensubconv_265078(result);
			}
			LA12: ;
		}
		LA7: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, semconstboolexpr_464852)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* nn;
	Ttype225847* LOC1;
{	result = 0;
	nn = semexprwithtype_457211(c, n, 0);
	LOC1 = 0;
	LOC1 = getsystype_274190(((NU8) 1));
	result = fitnode_457245(c, LOC1, nn);
	{
		if (!(result == NIM_NIL)) goto LA4;
		localerror_196128((*n).info, ((NU16) 108), ((NimStringDesc*) &TMP3117));
		result = nn;
		goto BeforeRet;
	}
	LA4: ;
	result = getconstexpr_293004((*c).module, result);
	{
		if (!(result == NIM_NIL)) goto LA8;
		localerror_196128((*n).info, ((NU16) 108), ((NimStringDesc*) &TMP3117));
		result = nn;
	}
	LA8: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, forcebool_464829)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Ttype225847* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getsystype_274190(((NU8) 1));
	result = fitnode_457245(c, LOC1, n);
	{
		if (!(result == NIM_NIL)) goto LA4;
		result = n;
	}
	LA4: ;
	return result;
}

N_NIMCALL(Tnode225809*, sembranchrange_467078)(Tcontext280023* c, Tnode225809* t, Tnode225809* a, Tnode225809* b, NI64* covered) {
	Tnode225809* result;
	Tnode225809* ac;
	Tnode225809* bc;
	Tnode225809* at;
	Tnode225809* LOC1;
	Tnode225809* bt;
	Tnode225809* LOC2;
	result = 0;
	checkminsonslen_281270(t, ((NI) 1));
	ac = semconstexpr_458485(c, a);
	bc = semconstexpr_458485(c, b);
	LOC1 = 0;
	LOC1 = fitnode_457245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, ac);
	at = skipconvtaketype_264967(LOC1);
	LOC2 = 0;
	LOC2 = fitnode_457245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, bc);
	bt = skipconvtaketype_264967(LOC2);
	result = newnodei_227351(((NU8) 44), (*a).info);
	add_226165(result, at);
	add_226165(result, bt);
	{
		NIM_BOOL LOC5;
		LOC5 = 0;
		LOC5 = emptyrange_276034(ac, bc);
		if (!LOC5) goto LA6;
		localerror_196128((*b).info, ((NU16) 110), ((NimStringDesc*) &TMP3117));
	}
	goto LA3;
	LA6: ;
	{
		NI64 LOC9;
		NI64 LOC10;
		LOC9 = 0;
		LOC9 = getordvalue_255178(bc);
		LOC10 = 0;
		LOC10 = getordvalue_255178(ac);
		(*covered) = (NI64)((NI64)((NI64)((*covered) + LOC9) - LOC10) + IL64(1));
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode225809*, semcasebranchrange_467100)(Tcontext280023* c, Tnode225809* t, Tnode225809* b, NI64* covered) {
	Tnode225809* result;
	result = 0;
	checksonslen_281260(b, ((NI) 3));
	result = sembranchrange_467078(c, t, (*b).kindU.S6.sons->data[((NI) 1)], (*b).kindU.S6.sons->data[((NI) 2)], covered);
	return result;
}

N_NIMCALL(Tnode225809*, semcasebranchsetelem_467113)(Tcontext280023* c, Tnode225809* t, Tnode225809* b, NI64* covered) {
	Tnode225809* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isrange_254626(b);
		if (!LOC3) goto LA4;
		checksonslen_281260(b, ((NI) 3));
		result = sembranchrange_467078(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_281260(b, ((NI) 2));
		result = sembranchrange_467078(c, t, (*b).kindU.S6.sons->data[((NI) 0)], (*b).kindU.S6.sons->data[((NI) 1)], covered);
	}
	goto LA1;
	LA7: ;
	{
		result = fitnode_457245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, b);
		(*covered) += ((NI) 1);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, checkforoverlap_467004)(Tcontext280023* c, Tnode225809* t, NI currentex, NI branchindex) {
	Tnode225809* ex;
	Tnode225809* LOC1;
	Tnode225809* LOC2;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_226244(t, branchindex);
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_226244(LOC1, currentex);
	ex = skipconv_264935(LOC2);
	{
		NI i_467024;
		NI res_467053;
		i_467024 = 0;
		res_467053 = ((NI) 1);
		{
			while (1) {
				if (!(res_467053 <= branchindex)) goto LA5;
				i_467024 = res_467053;
				{
					NI j_467038;
					NI HEX3Atmp_467044;
					NI LOC7;
					NI res_467047;
					j_467038 = 0;
					HEX3Atmp_467044 = 0;
					LOC7 = 0;
					LOC7 = sonslen_228387((*t).kindU.S6.sons->data[i_467024]);
					HEX3Atmp_467044 = (NI)(LOC7 - ((NI) 2));
					res_467047 = ((NI) 0);
					{
						while (1) {
							if (!(res_467047 <= HEX3Atmp_467044)) goto LA9;
							j_467038 = res_467047;
							{
								NIM_BOOL LOC12;
								LOC12 = 0;
								LOC12 = (i_467024 == branchindex);
								if (!(LOC12)) goto LA13;
								LOC12 = (j_467038 == currentex);
								LA13: ;
								if (!LOC12) goto LA14;
								goto LA6;
							}
							LA14: ;
							{
								Tnode225809* LOC18;
								NIM_BOOL LOC19;
								LOC18 = 0;
								LOC18 = skipconv_264935((*(*t).kindU.S6.sons->data[i_467024]).kindU.S6.sons->data[j_467038]);
								LOC19 = 0;
								LOC19 = overlap_276012(LOC18, ex);
								if (!LOC19) goto LA20;
								localerror_196128((*ex).info, ((NU16) 109), ((NimStringDesc*) &TMP3117));
							}
							LA20: ;
							res_467047 += ((NI) 1);
						} LA9: ;
					}
				} LA6: ;
				res_467053 += ((NI) 1);
			} LA5: ;
		}
	}
}

N_NIMCALL(void, semcasebranch_467147)(Tcontext280023* c, Tnode225809* t, Tnode225809* branch, NI branchindex, NI64* covered) {
{	{
		NI i_467167;
		NI HEX3Atmp_467260;
		NI LOC2;
		NI res_467263;
		i_467167 = 0;
		HEX3Atmp_467260 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(branch);
		HEX3Atmp_467260 = (NI)(LOC2 - ((NI) 2));
		res_467263 = ((NI) 0);
		{
			while (1) {
				Tnode225809* b;
				if (!(res_467263 <= HEX3Atmp_467260)) goto LA4;
				i_467167 = res_467263;
				b = (*branch).kindU.S6.sons->data[i_467167];
				{
					if (!((*b).kind == ((NU8) 44))) goto LA7;
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_467167]), b);
				}
				goto LA5;
				LA7: ;
				{
					NIM_BOOL LOC10;
					LOC10 = 0;
					LOC10 = isrange_254626(b);
					if (!LOC10) goto LA11;
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_467167]), semcasebranchrange_467100(c, t, b, covered));
				}
				goto LA5;
				LA11: ;
				{
					Tnode225809* r;
					r = semconstexpr_458485(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_226098(r);
						LOC17 = (LOC19 == ((NI) 0));
						LA18: ;
						LOC16 = LOC17;
						if (!(LOC16)) goto LA20;
						LOC21 = 0;
						LOC21 = sonslen_228387(branch);
						LOC16 = (LOC21 == ((NI) 2));
						LA20: ;
						if (!LOC16) goto LA22;
						delson_229597(branch, ((NI) 0));
						goto BeforeRet;
					}
					goto LA14;
					LA22: ;
					{
						NIM_BOOL LOC25;
						NI LOC27;
						Tnode225809* LOC30;
						LOC25 = 0;
						LOC25 = !(((*r).kind == ((NU8) 39) || (*r).kind == ((NU8) 41)));
						if (LOC25) goto LA26;
						LOC27 = 0;
						LOC27 = len_226098(r);
						LOC25 = (LOC27 == ((NI) 0));
						LA26: ;
						if (!LOC25) goto LA28;
						checkminsonslen_281270(t, ((NI) 1));
						LOC30 = 0;
						LOC30 = fitnode_457245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, r);
						asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_467167]), skipconv_264935(LOC30));
						(*covered) += ((NI) 1);
					}
					goto LA14;
					LA28: ;
					{
						Tnode225809* LOC32;
						LOC32 = 0;
						LOC32 = HEX5BHEX5D_226244(r, ((NI) 0));
						asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_467167]), semcasebranchsetelem_467113(c, t, LOC32, covered));
						{
							NI j_467235;
							NI HEX3Atmp_467253;
							NI LOC34;
							NI res_467256;
							j_467235 = 0;
							HEX3Atmp_467253 = 0;
							LOC34 = 0;
							LOC34 = len_226098(r);
							HEX3Atmp_467253 = (LOC34 - 1);
							res_467256 = ((NI) 1);
							{
								while (1) {
									Tnode225809* LOC37;
									Tnode225809* LOC38;
									NI L;
									Tnode225809* LOC39;
									if (!(res_467256 <= HEX3Atmp_467253)) goto LA36;
									j_467235 = res_467256;
									LOC37 = 0;
									LOC37 = HEX5BHEX5D_226244(r, j_467235);
									LOC38 = 0;
									LOC38 = semcasebranchsetelem_467113(c, t, LOC37, covered);
									add_226165(branch, LOC38);
									L = len_226098(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_467256 += ((NI) 1);
								} LA36: ;
							}
						}
					}
					LA14: ;
				}
				LA5: ;
				checkforoverlap_467004(c, t, i_467167, branchindex);
				res_467263 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(void, semrecordcase_467298)(Tcontext280023* c, Tnode225809* n, Intset222056* check, NI* pos, Tnode225809* father, Ttype225847* rectype) {
	Tnode225809* a;
	NI64 covered;
	Ttype225847* typ;
	NIM_BOOL chckcovered;
{	a = copynode_229660(n);
	checkminsonslen_281270(n, ((NI) 2));
	semrecordnodeaux_467288(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_196191(((NimStringDesc*) &TMP3533));
		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_229167((*(*a).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106240964608));
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = isordinaltype_255093(typ);
		if (!!(LOC7)) goto LA8;
		localerror_196128((*n).info, ((NU16) 112), ((NimStringDesc*) &TMP3117));
	}
	goto LA5;
	LA8: ;
	{
		NI64 LOC11;
		NimStringDesc* LOC14;
		LOC11 = 0;
		LOC11 = firstord_255004(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*) &TMP3534));
appendString(LOC14, (*(*(*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
appendString(LOC14, ((NimStringDesc*) &TMP3535));
		localerror_196128((*n).info, ((NU16) 4), LOC14);
	}
	goto LA5;
	LA12: ;
	{
		NI64 LOC16;
		LOC16 = 0;
		LOC16 = lengthord_255016(typ);
		if (!(IL64(32767) < LOC16)) goto LA17;
		localerror_196128((*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_467369;
		NI HEX3Atmp_467378;
		NI LOC20;
		NI res_467381;
		i_467369 = 0;
		HEX3Atmp_467378 = 0;
		LOC20 = 0;
		LOC20 = sonslen_228387(n);
		HEX3Atmp_467378 = (NI)(LOC20 - ((NI) 1));
		res_467381 = ((NI) 1);
		{
			while (1) {
				Tnode225809* b;
				NI LOC26;
				Tnode225809* LOC27;
				if (!(res_467381 <= HEX3Atmp_467378)) goto LA22;
				i_467369 = res_467381;
				b = copytree_230028((*n).kindU.S6.sons->data[i_467369]);
				addson_227819(a, b);
				switch ((*(*n).kindU.S6.sons->data[i_467369]).kind) {
				case ((NU8) 85):
				{
					checkminsonslen_281270(b, ((NI) 2));
					semcasebranch_467147(c, a, b, i_467369, (&covered));
				}
				break;
				case ((NU8) 88):
				{
					chckcovered = NIM_FALSE;
					checksonslen_281260(b, ((NI) 1));
				}
				break;
				default:
				{
					illformedast_281240(n);
				}
				break;
				}
				LOC26 = 0;
				LOC26 = sonslen_228387(b);
				delson_229597(b, (NI)(LOC26 - ((NI) 1)));
				LOC27 = 0;
				LOC27 = lastson_228406((*n).kindU.S6.sons->data[i_467369]);
				semrecordnodeaux_467288(c, LOC27, check, pos, b, rectype);
				res_467381 += ((NI) 1);
			} LA22: ;
		}
	}
	{
		NIM_BOOL LOC30;
		NI64 LOC32;
		LOC30 = 0;
		LOC30 = chckcovered;
		if (!(LOC30)) goto LA31;
		LOC32 = 0;
		LOC32 = lengthord_255016((*(*a).kindU.S6.sons->data[((NI) 0)]).typ);
		LOC30 = !((covered == LOC32));
		LA31: ;
		if (!LOC30) goto LA33;
		localerror_196128((*a).info, ((NU16) 155), ((NimStringDesc*) &TMP3117));
	}
	LA33: ;
	addson_227819(father, a);
	}BeforeRet: ;
}

N_NIMCALL(void, semrecordnodeaux_467288)(Tcontext280023* c, Tnode225809* n, Intset222056* check, NI* pos, Tnode225809* father, Ttype225847* rectype) {
{	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 140):
	{
		Tnode225809* branch;
		branch = NIM_NIL;
		{
			NI i_467432;
			NI HEX3Atmp_467813;
			NI LOC7;
			NI res_467816;
			i_467432 = 0;
			HEX3Atmp_467813 = 0;
			LOC7 = 0;
			LOC7 = sonslen_228387(n);
			HEX3Atmp_467813 = (NI)(LOC7 - ((NI) 1));
			res_467816 = ((NI) 0);
			{
				while (1) {
					Tnode225809* it;
					NI idx;
					if (!(res_467816 <= HEX3Atmp_467813)) goto LA9;
					i_467432 = res_467816;
					it = (*n).kindU.S6.sons->data[i_467432];
					{
						if (!(it == NIM_NIL)) goto LA12;
						illformedast_281240(n);
					}
					LA12: ;
					idx = ((NI) 1);
					switch ((*it).kind) {
					case ((NU8) 86):
					{
						checksonslen_281260(it, ((NI) 2));
						{
							Tnode225809* e;
							if (!((*c).ingenericcontext == ((NI) 0))) goto LA17;
							e = semconstboolexpr_464852(c, (*it).kindU.S6.sons->data[((NI) 0)]);
							{
								if (!!(((*e).kind == ((NU8) 6)))) goto LA21;
								internalerror_196172((*e).info, ((NimStringDesc*) &TMP3532));
							}
							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: ;
						{
							Tnode225809* LOC29;
							LOC29 = 0;
							LOC29 = semexprwithtype_457211(c, (*it).kindU.S6.sons->data[((NI) 0)], 0);
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), forcebool_464829(c, LOC29));
						}
						LA15: ;
					}
					break;
					case ((NU8) 88):
					{
						checksonslen_281260(it, ((NI) 1));
						{
							if (!(branch == NIM_NIL)) goto LA33;
							branch = (*it).kindU.S6.sons->data[((NI) 0)];
						}
						LA33: ;
						idx = ((NI) 0);
					}
					break;
					default:
					{
						illformedast_281240(n);
					}
					break;
					}
					{
						Intset222056 newcheck;
						NI newpos;
						Tnode225809* newf;
						if (!(((NI) 0) < (*c).ingenericcontext)) goto LA38;
						memset((void*)(&newcheck), 0, sizeof(newcheck));
						assign_222964((&newcheck), (*check));
						newpos = (*pos);
						newf = newnodei_227351(((NU8) 138), (*n).info);
						semrecordnodeaux_467288(c, (*it).kindU.S6.sons->data[idx], (&newcheck), (&newpos), newf, rectype);
						{
							NI LOC42;
							LOC42 = 0;
							LOC42 = len_226098(newf);
							if (!(LOC42 == ((NI) 1))) goto LA43;
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[idx]), HEX5BHEX5D_226244(newf, ((NI) 0)));
						}
						goto LA40;
						LA43: ;
						{
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[idx]), newf);
						}
						LA40: ;
					}
					LA38: ;
					res_467816 += ((NI) 1);
				} LA9: ;
			}
		}
		{
			if (!(((NI) 0) < (*c).ingenericcontext)) goto LA48;
			addson_227819(father, n);
		}
		goto LA46;
		LA48: ;
		{
			if (!!((branch == NIM_NIL))) goto LA51;
			semrecordnodeaux_467288(c, branch, check, pos, father, rectype);
		}
		goto LA46;
		LA51: ;
		LA46: ;
	}
	break;
	case ((NU8) 139):
	{
		semrecordcase_467298(c, n, check, pos, father, rectype);
	}
	break;
	case ((NU8) 23):
	{
		{
			Tnode225809* LOC59;
			if (!!(((*father).kind == ((NU8) 138)))) goto LA57;
			LOC59 = 0;
			LOC59 = newnodei_227351(((NU8) 138), (*n).info);
			addson_227819(father, LOC59);
		}
		LA57: ;
	}
	break;
	case ((NU8) 138):
	{
		Tnode225809* a;
		{
			if (!((*father).kind == ((NU8) 138))) goto LA63;
			a = father;
		}
		goto LA61;
		LA63: ;
		{
			a = copynode_229660(n);
		}
		LA61: ;
		{
			NI i_467540;
			NI HEX3Atmp_467821;
			NI LOC67;
			NI res_467824;
			i_467540 = 0;
			HEX3Atmp_467821 = 0;
			LOC67 = 0;
			LOC67 = sonslen_228387(n);
			HEX3Atmp_467821 = (NI)(LOC67 - ((NI) 1));
			res_467824 = ((NI) 0);
			{
				while (1) {
					if (!(res_467824 <= HEX3Atmp_467821)) goto LA69;
					i_467540 = res_467824;
					semrecordnodeaux_467288(c, (*n).kindU.S6.sons->data[i_467540], check, pos, a, rectype);
					res_467824 += ((NI) 1);
				} LA69: ;
			}
		}
		{
			if (!!((a == father))) goto LA72;
			addson_227819(father, a);
		}
		LA72: ;
	}
	break;
	case ((NU8) 35):
	{
		NI length;
		Tnode225809* a;
		Ttype225847* typ;
		Tsym225841* rec;
		checkminsonslen_281270(n, ((NI) 3));
		length = sonslen_228387(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_227351(((NU8) 138), (*n).info);
		}
		goto LA75;
		LA79: ;
		{
			a = emptynode_226807;
		}
		LA75: ;
		{
			if (!!(((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((NU8) 1)))) goto LA84;
			localerror_196128((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).info, ((NU16) 179), ((NimStringDesc*) &TMP3117));
		}
		LA84: ;
		typ = 0;
		{
			if (!((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1))) goto LA88;
			localerror_196128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
			typ = errortype_281161(c);
		}
		goto LA86;
		LA88: ;
		{
			typ = semtypenode_457269(c, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
			propagatetoowner_229274(rectype, typ);
		}
		LA86: ;
		rec = (*rectype).sym;
		{
			NI i_467600;
			NI HEX3Atmp_467831;
			NI LOC92;
			NI res_467834;
			i_467600 = 0;
			HEX3Atmp_467831 = 0;
			LOC92 = 0;
			LOC92 = sonslen_228387(n);
			HEX3Atmp_467831 = (NI)(LOC92 - ((NI) 3));
			res_467834 = ((NI) 0);
			{
				while (1) {
					Tsym225841* f;
					if (!(res_467834 <= HEX3Atmp_467831)) goto LA94;
					i_467600 = res_467834;
					f = semidentwithpragma_457971(c, ((NU8) 19), (*n).kindU.S6.sons->data[i_467600], 2);
					suggestsym_398733((*(*n).kindU.S6.sons->data[i_467600]).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_176322((*(*f).name).s));
						(*f).flags = ((*f).flags | (96 & (*rec).flags));
					}
					LA101: ;
					(*pos) += ((NI) 1);
					{
						NIM_BOOL LOC105;
						LOC105 = 0;
						LOC105 = containsorincl_222898(check, (*(*f).name).Sup.id);
						if (!LOC105) goto LA106;
						localerror_196128((*(*n).kindU.S6.sons->data[i_467600]).info, ((NU16) 41), (*(*f).name).s);
					}
					LA106: ;
					{
						Tnode225809* LOC112;
						if (!((*a).kind == ((NU8) 1))) goto LA110;
						LOC112 = 0;
						LOC112 = newsymnode_227325(f);
						addson_227819(father, LOC112);
					}
					goto LA108;
					LA110: ;
					{
						Tnode225809* LOC114;
						LOC114 = 0;
						LOC114 = newsymnode_227325(f);
						addson_227819(a, LOC114);
					}
					LA108: ;
					res_467834 += ((NI) 1);
				} LA94: ;
			}
		}
		{
			if (!!(((*a).kind == ((NU8) 1)))) goto LA117;
			addson_227819(father, a);
		}
		LA117: ;
	}
	break;
	case ((NU8) 1):
	{
	}
	break;
	default:
	{
		illformedast_281240(n);
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(Ttype225847*, semobjectnode_468216)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	Intset222056 check;
	NI pos;
	Ttype225847* base;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_464925(c, ((NU8) 17));
		goto BeforeRet;
	}
	LA4: ;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_222927((&check));
	pos = ((NI) 0);
	base = NIM_NIL;
	checksonslen_281260(n, ((NI) 3));
	{
		Ttype225847* LOC10;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA8;
		LOC10 = 0;
		LOC10 = semtypenode_457269(c, (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		base = skiptypesornil_229195(LOC10, IL64(211106247215360));
		{
			if (!base == 0) goto LA13;
			localerror_196128((*n).info, ((NU16) 127), ((NimStringDesc*) &TMP3146));
		}
		goto LA11;
		LA13: ;
		{
			Ttype225847* concretebase;
			concretebase = skipgenericinvocation_467964(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_467998(c, (&check), (&pos), concretebase);
			}
			goto LA16;
			LA20: ;
			{
				{
					if (!!(((*concretebase).kind == ((NU8) 50)))) goto LA25;
					localerror_196128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 125), ((NimStringDesc*) &TMP3117));
				}
				LA25: ;
				base = NIM_NIL;
			}
			LA16: ;
		}
		LA11: ;
	}
	LA8: ;
	{
		if (!!(((*n).kind == ((NU8) 133)))) goto LA29;
		internalerror_196172((*n).info, ((NimStringDesc*) &TMP3150));
	}
	LA29: ;
	result = neworprevtype_464895(((NU8) 17), prev, c);
	rawaddson_229498(result, base);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_227351(((NU8) 138), (*n).info));
	semrecordnodeaux_467288(c, (*n).kindU.S6.sons->data[((NI) 2)], (&check), (&pos), (*result).n, result);
	{
		Tsym225841* s;
		Tident198021* LOC35;
		Tnode225809* LOC36;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA33;
		LOC35 = 0;
		LOC35 = getident_198463(((NimStringDesc*) &TMP3536));
		LOC36 = 0;
		LOC36 = newidentnode_227313(LOC35, (*n).info);
		s = newsyms_457904(((NU8) 7), LOC36, c);
		asgnRefNoCycle((void**) (&(*s).typ), result);
		pragma_297082(c, s, (*n).kindU.S6.sons->data[((NI) 0)], TMP3537);
	}
	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(Ttype225847*, semtuple_466654)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	Ttype225847* typ;
	Intset222056 check;
	NI counter;
	result = 0;
	typ = 0;
	result = neworprevtype_464895(((NU8) 18), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_227351(((NU8) 138), (*n).info));
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_222927((&check));
	counter = ((NI) 0);
	{
		NI i_466675;
		NI HEX3Atmp_466811;
		NI LOC2;
		NI res_466814;
		i_466675 = 0;
		HEX3Atmp_466811 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_466811 = (NI)(LOC2 - ((NI) 1));
		res_466814 = ((NI) 0);
		{
			while (1) {
				Tnode225809* a;
				NI length;
				if (!(res_466814 <= HEX3Atmp_466811)) goto LA4;
				i_466675 = res_466814;
				a = (*n).kindU.S6.sons->data[i_466675];
				{
					if (!!(((*a).kind == ((NU8) 35)))) goto LA7;
					illformedast_281240(a);
				}
				LA7: ;
				checkminsonslen_281270(a, ((NI) 3));
				length = sonslen_228387(a);
				{
					if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1)))) goto LA11;
					typ = semtypenode_457269(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
				}
				goto LA9;
				LA11: ;
				{
					localerror_196128((*a).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
					typ = errortype_281161(c);
				}
				LA9: ;
				{
					if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((NU8) 1)))) goto LA16;
					localerror_196128((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).info, ((NU16) 179), ((NimStringDesc*) &TMP3117));
				}
				LA16: ;
				{
					NI j_466722;
					NI HEX3Atmp_466804;
					NI res_466807;
					j_466722 = 0;
					HEX3Atmp_466804 = 0;
					HEX3Atmp_466804 = (NI)(length - ((NI) 3));
					res_466807 = ((NI) 0);
					{
						while (1) {
							Tsym225841* field;
							if (!(res_466807 <= HEX3Atmp_466804)) goto LA20;
							j_466722 = res_466807;
							field = newsymg_457916(((NU8) 19), (*a).kindU.S6.sons->data[j_466722], c);
							asgnRefNoCycle((void**) (&(*field).typ), typ);
							(*field).position = counter;
							counter += ((NI) 1);
							{
								NIM_BOOL LOC23;
								LOC23 = 0;
								LOC23 = containsorincl_222898((&check), (*(*field).name).Sup.id);
								if (!LOC23) goto LA24;
								localerror_196128((*(*a).kindU.S6.sons->data[j_466722]).info, ((NU16) 41), (*(*field).name).s);
							}
							goto LA21;
							LA24: ;
							{
								Tnode225809* LOC27;
								LOC27 = 0;
								LOC27 = newsymnode_227325(field);
								addson_227819((*result).n, LOC27);
								addsonskipintlit_274729(result, typ);
							}
							LA21: ;
							{
								if (!(gcmd_167134 == ((NU8) 7))) goto LA30;
							}
							LA30: ;
							res_466807 += ((NI) 1);
						} LA20: ;
					}
				}
				res_466814 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Ttype225847*, semtypeclass_470417)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	Tnode225809* pragmas;
	Tnode225809* inherited;
	result = 0;
	{
		if (!(((*n).flags &(1<<((((NU8) 1))&15)))!=0)) goto LA3;
		message_196161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3538));
	}
	LA3: ;
	result = neworprevtype_464895(((NU8) 52), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), n);
	pragmas = HEX5BHEX5D_226244(n, ((NI) 1));
	inherited = HEX5BHEX5D_226244(n, ((NI) 2));
	{
		if (!!(((*inherited).kind == ((NU8) 1)))) goto LA7;
		{
			Tnode225809* n_470454;
			Tnodeseq225803* HEX3Atmp_470468;
			NI i_470471;
			NI L_470473;
			n_470454 = 0;
			HEX3Atmp_470468 = 0;
			HEX3Atmp_470468 = (*inherited).kindU.S6.sons;
			i_470471 = ((NI) 0);
			L_470473 = (HEX3Atmp_470468 ? HEX3Atmp_470468->Sup.len : 0);
			{
				while (1) {
					Ttype225847* typ;
					if (!(i_470471 < L_470473)) goto LA11;
					n_470454 = HEX3Atmp_470468->data[i_470471];
					typ = semtypenode_457269(c, n_470454, NIM_NIL);
					safeadd_302522((&(*result).sons), typ);
					i_470471 += ((NI) 1);
				} LA11: ;
			}
		}
	}
	LA7: ;
	return result;
}

N_NIMCALL(Ttype225847*, semvartype_465395)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	result = 0;
	{
		NI LOC3;
		Ttype225847* base;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 1))) goto LA4;
		result = neworprevtype_464895(((NU8) 23), prev, c);
		base = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		{
			if (!((*base).kind == ((NU8) 23))) goto LA8;
			localerror_196128((*n).info, ((NU16) 202), ((NimStringDesc*) &TMP3117));
			base = (*base).sons->data[((NI) 0)];
		}
		LA8: ;
		addsonskipintlit_274729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		result = newconstraint_464925(c, ((NU8) 23));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype225847*, semdistinct_465415)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	Ttype225847* LOC6;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_226098(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_464925(c, ((NU8) 13));
		goto BeforeRet;
	}
	LA4: ;
	result = neworprevtype_464895(((NU8) 13), prev, c);
	LOC6 = 0;
	LOC6 = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	addsonskipintlit_274729(result, LOC6);
	{
		NI LOC9;
		LOC9 = 0;
		LOC9 = len_226098(n);
		if (!(((NI) 1) < LOC9)) goto LA10;
		asgnRefNoCycle((void**) (&(*result).n), HEX5BHEX5D_226244(n, ((NI) 1)));
	}
	LA10: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype225847*, semproctypewithscope_470486)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev, NU8 kind) {
	Ttype225847* result;
	Tscope225835* LOC1;
	Tsym225841* s;
	Tident198021* LOC2;
	Tnode225809* LOC3;
	result = 0;
	checksonslen_281260(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	result = semproctypenode_469551(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL, prev, kind, NIM_TRUE);
	LOC2 = 0;
	LOC2 = getident_198463(((NimStringDesc*) &TMP3536));
	LOC3 = 0;
	LOC3 = newidentnode_227313(LOC2, (*n).info);
	s = newsyms_457904(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_226098((*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_297082(c, s, (*n).kindU.S6.sons->data[((NI) 1)], TMP3539);
		seteffectsforproctype_370612(result, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	LA4: ;
	closescope_286111(c);
	return result;
}

N_NIMCALL(Ttype225847*, semenum_464933)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	NI64 counter;
	NI64 x;
	Tsym225841* e;
	Ttype225847* base;
	NIM_BOOL ispure;
	NIM_BOOL LOC19;
	NIM_BOOL hasnull;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_464925(c, ((NU8) 14));
		goto BeforeRet;
	}
	goto LA1;
	LA4: ;
	{
		NI LOC7;
		LOC7 = 0;
		LOC7 = sonslen_228387(n);
		if (!(LOC7 == ((NI) 1))) goto LA8;
		result = errortype_281161(c);
		goto BeforeRet;
	}
	goto LA1;
	LA8: ;
	LA1: ;
	counter = 0;
	x = 0;
	e = 0;
	base = 0;
	counter = IL64(0);
	base = NIM_NIL;
	result = neworprevtype_464895(((NU8) 14), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_227351(((NU8) 150), (*n).info));
	checkminsonslen_281270(n, ((NI) 1));
	{
		NI64 LOC18;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA12;
		base = semtypenode_457269(c, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		{
			if (!!(((*base).kind == ((NU8) 14)))) goto LA16;
			localerror_196128((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 126), ((NimStringDesc*) &TMP3117));
		}
		LA16: ;
		LOC18 = 0;
		LOC18 = lastord_255010(base);
		counter = (NI64)(LOC18 + IL64(1));
	}
	LA12: ;
	rawaddson_229498(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_465004;
		NI HEX3Atmp_465237;
		NI LOC22;
		NI res_465240;
		i_465004 = 0;
		HEX3Atmp_465237 = 0;
		LOC22 = 0;
		LOC22 = sonslen_228387(n);
		HEX3Atmp_465237 = (NI)(LOC22 - ((NI) 1));
		res_465240 = ((NI) 1);
		{
			while (1) {
				Tnode225809* LOC72;
				if (!(res_465240 <= HEX3Atmp_465237)) goto LA24;
				i_465004 = res_465240;
				switch ((*(*n).kindU.S6.sons->data[i_465004]).kind) {
				case ((NU8) 151):
				{
					Tnode225809* v;
					Tnode225809* strval;
					Ttype225847* LOC26;
					e = newsyms_457904(((NU8) 20), (*(*n).kindU.S6.sons->data[i_465004]).kindU.S6.sons->data[((NI) 0)], c);
					v = semconstexpr_458485(c, (*(*n).kindU.S6.sons->data[i_465004]).kindU.S6.sons->data[((NI) 1)]);
					strval = NIM_NIL;
					LOC26 = 0;
					LOC26 = skiptypes_229167((*v).typ, IL64(211106232576000));
					switch ((*LOC26).kind) {
					case ((NU8) 18):
					{
						{
							NI LOC30;
							LOC30 = 0;
							LOC30 = sonslen_228387(v);
							if (!(LOC30 == ((NI) 2))) goto LA31;
							strval = (*v).kindU.S6.sons->data[((NI) 1)];
							{
								Ttype225847* LOC35;
								LOC35 = 0;
								LOC35 = skiptypes_229167((*strval).typ, IL64(211106232576256));
								if (!((*LOC35).kind == ((NU8) 28) || (*LOC35).kind == ((NU8) 29))) goto LA36;
								x = getordvalue_255178((*v).kindU.S6.sons->data[((NI) 0)]);
							}
							goto LA33;
							LA36: ;
							{
								localerror_196128((*strval).info, ((NU16) 6), ((NimStringDesc*) &TMP3117));
							}
							LA33: ;
						}
						goto LA28;
						LA31: ;
						{
							localerror_196128((*v).info, ((NU16) 115), ((NimStringDesc*) &TMP3117));
						}
						LA28: ;
					}
					break;
					case ((NU8) 28):
					case ((NU8) 29):
					{
						strval = v;
						x = counter;
					}
					break;
					default:
					{
						x = getordvalue_255178(v);
					}
					break;
					}
					{
						if (!!((i_465004 == ((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_196128((*(*n).kindU.S6.sons->data[i_465004]).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_465004]).kindU.S4.sym;
				}
				break;
				case ((NU8) 2):
				case ((NU8) 53):
				{
					e = newsyms_457904(((NU8) 20), (*n).kindU.S6.sons->data[i_465004], c);
				}
				break;
				default:
				{
					Tnode225809* LOC57;
					LOC57 = 0;
					LOC57 = HEX5BHEX5D_226244(n, i_465004);
					illformedast_281240(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_233103((&(*(*c).module).kindU.S3.tab), e);
					}
					LA70: ;
				}
				LA66: ;
				LOC72 = 0;
				LOC72 = newsymnode_227325(e);
				addson_227819((*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_286607(c, e);
				}
				LA77: ;
				counter += ((NI) 1);
				res_465240 += ((NI) 1);
			} LA24: ;
		}
	}
	{
		if (!!(hasnull)) goto LA81;
		(*result).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
	}
	LA81: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype225847*, semstmtlisttype_470038)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	NI length;
	result = 0;
	checkminsonslen_281270(n, ((NI) 1));
	length = sonslen_228387(n);
	{
		NI i_470057;
		NI HEX3Atmp_470063;
		NI res_470066;
		i_470057 = 0;
		HEX3Atmp_470063 = 0;
		HEX3Atmp_470063 = (NI)(length - ((NI) 2));
		res_470066 = ((NI) 0);
		{
			while (1) {
				if (!(res_470066 <= HEX3Atmp_470063)) goto LA3;
				i_470057 = res_470066;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_470057]), semstmt_457277(c, (*n).kindU.S6.sons->data[i_470057]));
				res_470066 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		if (!(((NI) 0) < length)) goto LA6;
		result = semtypenode_457269(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(Ttype225847*, semblocktype_470082)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	Tscope225835* LOC1;
	result = 0;
	(*(*c).p).nestedblockcounter += ((NI) 1);
	checksonslen_281260(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	{
		Tsym225841* 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_457904(((NU8) 22), (*n).kindU.S6.sons->data[((NI) 0)], c);
		adddecl_286607(c, LOC6);
	}
	LA4: ;
	result = semstmtlisttype_470038(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_286111(c);
	(*(*c).p).nestedblockcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Ttype225847*, semtypenode_457269)(Tcontext280023* c, Tnode225809* n, Ttype225847* prev) {
	Ttype225847* result;
	result = 0;
	result = NIM_NIL;
	{
		if (!(gcmd_167134 == ((NU8) 14))) goto LA3;
		suggestexpr_398865(c, n);
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 1):
	{
	}
	break;
	case ((NU8) 132):
	{
		Tnode225809* typexpr;
		checksonslen_281260(n, ((NI) 1));
		typexpr = semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 0)], 4);
		result = skiptypes_229167((*typexpr).typ, IL64(562949953421312));
	}
	break;
	case ((NU8) 37):
	{
		{
			NI LOC10;
			LOC10 = 0;
			LOC10 = sonslen_228387(n);
			if (!(LOC10 == ((NI) 1))) goto LA11;
			result = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 0)], prev);
		}
		goto LA8;
		LA11: ;
		{
			result = semanontuple_466614(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):
	{
		Tnode225809* x;
		Tident198021* ident;
		x = HEX5BHEX5D_226244(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):
		{
			Tnode225809* LOC18;
			LOC18 = 0;
			LOC18 = HEX5BHEX5D_226244(x, ((NI) 0));
			ident = (*(*LOC18).kindU.S4.sym).name;
		}
		break;
		default:
		{
			ident = NIM_NIL;
		}
		break;
		}
		{
			NIM_BOOL LOC22;
			Tnode225809* b;
			LOC22 = 0;
			LOC22 = !((ident == NIM_NIL));
			if (!(LOC22)) goto LA23;
			LOC22 = eqStrings((*ident).s, ((NimStringDesc*) &TMP3119));
			LA23: ;
			if (!LOC22) goto LA24;
			b = newnodei_227351(((NU8) 42), (*n).info);
			{
				NI i_470672;
				Slice90370 HEX3Atmp_471258;
				NI LOC27;
				i_470672 = 0;
				memset((void*)(&HEX3Atmp_471258), 0, sizeof(HEX3Atmp_471258));
				LOC27 = 0;
				LOC27 = len_226098(n);
				HEX3Atmp_471258 = HEX2EHEX2E_105290(((NI) 1), (LOC27 - 1));
				{
					NI x_471262;
					NI HEX3Atmp_471264;
					NI HEX3Atmp_471266;
					NI res_471268;
					x_471262 = 0;
					HEX3Atmp_471264 = 0;
					HEX3Atmp_471266 = 0;
					HEX3Atmp_471264 = HEX3Atmp_471258.a;
					HEX3Atmp_471266 = HEX3Atmp_471258.b;
					res_471268 = HEX3Atmp_471264;
					{
						while (1) {
							Tnode225809* LOC31;
							if (!(res_471268 <= HEX3Atmp_471266)) goto LA30;
							x_471262 = res_471268;
							i_470672 = x_471262;
							LOC31 = 0;
							LOC31 = HEX5BHEX5D_226244(n, i_470672);
							add_226165(b, LOC31);
							res_471268 += ((NI) 1);
						} LA30: ;
					}
				}
			}
			result = semtypenode_457269(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_465427(c, n, prev);
		}
		goto LA20;
		LA35: ;
		{
			Tnode225809* LOC38;
			LOC38 = 0;
			LOC38 = HEX5BHEX5D_226244(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_470381(c, n);
		}
		goto LA20;
		LA39: ;
		{
			Tident198021* op;
			op = considerquotedident_286010((*n).kindU.S6.sons->data[((NI) 0)]);
			{
				NIM_BOOL LOC44;
				Ttype225847* t1;
				Ttype225847* t2;
				LOC44 = 0;
				LOC44 = ((*op).Sup.id == ((NI) 2) || (*op).Sup.id == ((NI) 49));
				if (LOC44) goto LA45;
				LOC44 = eqStrings((*op).s, ((NimStringDesc*) &TMP3120));
				LA45: ;
				if (!LOC44) goto LA46;
				checksonslen_281260(n, ((NI) 3));
				t1 = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
				t2 = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
				{
					if (!(t1 == NIM_NIL)) goto LA50;
					localerror_196128((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
					result = neworprevtype_464895(((NU8) 50), prev, c);
				}
				goto LA48;
				LA50: ;
				{
					if (!(t2 == NIM_NIL)) goto LA53;
					localerror_196128((*(*n).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
					result = neworprevtype_464895(((NU8) 50), prev, c);
				}
				goto LA48;
				LA53: ;
				{
					{
						if (!((*op).Sup.id == ((NI) 2))) goto LA58;
						result = makeandtype_280858(c, t1, t2);
					}
					goto LA56;
					LA58: ;
					{
						result = makeortype_280931(c, t1, t2);
					}
					LA56: ;
				}
				LA48: ;
			}
			goto LA42;
			LA46: ;
			{
				NI LOC64;
				if (!((*op).Sup.id == ((NI) 45))) goto LA62;
				LOC64 = 0;
				LOC64 = len_226098(n);
				switch (LOC64) {
				case ((NI) 3):
				{
					result = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 1)], prev);
					{
						NIM_BOOL LOC68;
						Ttype225847* LOC69;
						LOC68 = 0;
						LOC69 = 0;
						LOC69 = skiptypes_229167(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_470401(result, prev);
						(*result).flags |= ((NU32)1)<<((((NU8) 16))%(sizeof(NU32)*8));
					}
					goto LA66;
					LA71: ;
					{
						localerror_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3121));
					}
					LA66: ;
				}
				break;
				case ((NI) 2):
				{
					Ttype225847* negated;
					negated = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 1)], prev);
					result = makenottype_281004(c, negated);
				}
				break;
				default:
				{
					localerror_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3121));
				}
				break;
				}
			}
			goto LA42;
			LA62: ;
			{
				if (!((*op).Sup.id == ((NI) 52))) goto LA77;
				result = semanyref_465311(c, n, ((NU8) 21), prev);
			}
			goto LA42;
			LA77: ;
			{
				if (!((*op).Sup.id == ((NI) 54))) goto LA80;
				result = semanyref_465311(c, n, ((NU8) 22), prev);
			}
			goto LA42;
			LA80: ;
			{
				Tnode225809* typexpr;
				if (!((*op).Sup.id == ((NI) 62))) goto LA83;
				checksonslen_281260(n, ((NI) 2));
				typexpr = semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 1)], 4);
				result = skiptypes_229167((*typexpr).typ, IL64(562949953421312));
			}
			goto LA42;
			LA83: ;
			{
				result = semtypeexpr_470381(c, n);
			}
			LA42: ;
		}
		LA20: ;
	}
	break;
	case ((NU8) 93):
	{
		Tnode225809* whenresult;
		whenresult = semwhen_458047(c, n, NIM_FALSE);
		{
			if (!((*whenresult).kind == ((NU8) 115))) goto LA89;
			(*whenresult).kind = ((NU8) 128);
		}
		LA89: ;
		result = semtypenode_457269(c, whenresult, prev);
	}
	break;
	case ((NU8) 42):
	{
		Tsym225841* s;
		checkminsonslen_281270(n, ((NI) 2));
		s = semtypeident_465976(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		switch ((*s).magic) {
		case ((NU8) 164):
		{
			result = semarray_465918(c, n, prev);
		}
		break;
		case ((NU8) 165):
		{
			result = semcontainer_465285(c, n, ((NU8) 27), ((NimStringDesc*) &TMP3124), prev);
		}
		break;
		case ((NU8) 166):
		{
			result = semrange_465701(c, n, prev);
		}
		break;
		case ((NU8) 167):
		{
			result = semset_465256(c, n, prev);
		}
		break;
		case ((NU8) 170):
		{
			result = semordinal_465955(c, n, prev);
		}
		break;
		case ((NU8) 168):
		{
			result = semcontainer_465285(c, n, ((NU8) 24), ((NimStringDesc*) &TMP3128), prev);
		}
		break;
		case ((NU8) 169):
		{
			result = semvarargs_465298(c, n, prev);
		}
		break;
		case ((NU8) 195):
		{
			Tnode225809* LOC100;
			Ttype225847* LOC101;
			LOC100 = 0;
			LOC100 = HEX5BHEX5D_226244(n, ((NI) 1));
			LOC101 = 0;
			LOC101 = semtypenode_457269(c, LOC100, NIM_NIL);
			result = maketypedesc_280684(c, LOC101);
		}
		break;
		case ((NU8) 193):
		{
			result = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
			{
				Tsym225841* LOC107;
				if (!!((result == NIM_NIL))) goto LA105;
				LOC107 = 0;
				LOC107 = getcurrowner_280258();
				result = copytype_228542(result, LOC107, NIM_FALSE);
				{
					NI i_470896;
					NI HEX3Atmp_471273;
					NI LOC109;
					NI res_471276;
					i_470896 = 0;
					HEX3Atmp_471273 = 0;
					LOC109 = 0;
					LOC109 = len_226098(n);
					HEX3Atmp_471273 = (NI)(LOC109 - ((NI) 1));
					res_471276 = ((NI) 1);
					{
						while (1) {
							Ttype225847* LOC112;
							if (!(res_471276 <= HEX3Atmp_471273)) goto LA111;
							i_470896 = res_471276;
							LOC112 = 0;
							LOC112 = semtypenode_457269(c, (*n).kindU.S6.sons->data[i_470896], NIM_NIL);
							rawaddson_229498(result, LOC112);
							res_471276 += ((NI) 1);
						} LA111: ;
					}
				}
			}
			LA105: ;
		}
		break;
		default:
		{
			result = semgeneric_470132(c, n, s, prev);
		}
		break;
		}
	}
	break;
	case ((NU8) 45):
	{
		Tnode225809* typeexpr;
		typeexpr = semexpr_457201(c, n, 0);
		{
			if (!!(((*(*typeexpr).typ).kind == ((NU8) 8)))) goto LA117;
			localerror_196128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
			result = errortype_281161(c);
		}
		goto LA115;
		LA117: ;
		{
			result = base_255039((*typeexpr).typ);
			{
				NIM_BOOL LOC122;
				Tnode225809* preprocessed;
				Tnode225809* LOC125;
				LOC122 = 0;
				LOC122 = ismetatype_226821(result);
				if (!LOC122) goto LA123;
				preprocessed = semgenericstmt_464888(c, n);
				LOC125 = 0;
				LOC125 = copytree_230028(preprocessed);
				result = maketypefromexpr_280729(c, LOC125);
			}
			LA123: ;
		}
		LA115: ;
	}
	break;
	case ((NU8) 2):
	case ((NU8) 53):
	{
		Tsym225841* s;
		s = semtypeident_465976(c, n);
		{
			if (!((*s).typ == NIM_NIL)) goto LA129;
			{
				if (!!(((*s).kind == ((NU8) 0)))) goto LA133;
				localerror_196128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
			}
			LA133: ;
			result = neworprevtype_464895(((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;
				Ttype225847* LOC143;
				NimStringDesc* LOC147;
				LOC142 = 0;
				LOC143 = 0;
				LOC143 = base_255039((*s).typ);
				LOC142 = !(((*LOC143).kind == ((NU8) 0)));
				if (!(LOC142)) goto LA144;
				LOC142 = (prev == NIM_NIL);
				LA144: ;
				if (!!(LOC142)) goto LA145;
				LOC147 = 0;
				LOC147 = HEX24_196279(TMP3145);
				internalerror_196191(LOC147);
			}
			LA145: ;
			result = base_255039((*s).typ);
		}
		goto LA127;
		LA138: ;
		{
			if (!(prev == NIM_NIL)) goto LA149;
			result = (*s).typ;
		}
		goto LA127;
		LA149: ;
		{
			assigntype_228445(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;
			Ttype225847* 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_228445(prev, t);
				result = prev;
			}
			LA163: ;
			markused_388253((*n).info, (*n).kindU.S4.sym);
		}
		goto LA157;
		LA161: ;
		{
			{
				if (!!(((*(*n).kindU.S4.sym).kind == ((NU8) 0)))) goto LA171;
				localerror_196128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
			}
			LA171: ;
			result = neworprevtype_464895(((NU8) 50), prev, c);
		}
		LA157: ;
	}
	break;
	case ((NU8) 133):
	{
		result = semobjectnode_468216(c, n, prev);
	}
	break;
	case ((NU8) 134):
	{
		result = semtuple_466654(c, n, prev);
	}
	break;
	case ((NU8) 135):
	{
		result = newconstraint_464925(c, ((NU8) 18));
	}
	break;
	case ((NU8) 136):
	{
		result = semtypeclass_470417(c, n, prev);
	}
	break;
	case ((NU8) 141):
	{
		result = semanyref_465311(c, n, ((NU8) 22), prev);
	}
	break;
	case ((NU8) 142):
	{
		result = semanyref_465311(c, n, ((NU8) 21), prev);
	}
	break;
	case ((NU8) 143):
	{
		result = semvartype_465395(c, n, prev);
	}
	break;
	case ((NU8) 146):
	{
		result = semdistinct_465415(c, n, prev);
	}
	break;
	case ((NU8) 137):
	{
		Ttype225847* base;
		result = neworprevtype_464895(((NU8) 59), prev, c);
		base = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		rawaddson_229498(result, base);
		(*result).flags |= ((NU32)1)<<((((NU8) 22))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 148):
	{
		{
			NI LOC185;
			LOC185 = 0;
			LOC185 = sonslen_228387(n);
			if (!(LOC185 == ((NI) 0))) goto LA186;
			result = newconstraint_464925(c, ((NU8) 49));
		}
		goto LA183;
		LA186: ;
		{
			result = semproctypewithscope_470486(c, n, prev, ((NU8) 15));
			{
				NIM_BOOL LOC191;
				Tnode225809* LOC192;
				Tnode225809* LOC194;
				LOC191 = 0;
				LOC192 = 0;
				LOC192 = lastson_228406(n);
				LOC191 = ((*LOC192).kind == ((NU8) 90));
				if (!(LOC191)) goto LA193;
				LOC194 = 0;
				LOC194 = lastson_228406(n);
				LOC191 = haspragma_300952(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_228387(n);
			if (!(LOC201 == ((NI) 0))) goto LA202;
			result = newconstraint_464925(c, ((NU8) 25));
		}
		goto LA199;
		LA202: ;
		{
			result = semproctypewithscope_470486(c, n, prev, ((NU8) 12));
		}
		LA199: ;
	}
	break;
	case ((NU8) 150):
	{
		result = semenum_464933(c, n, prev);
	}
	break;
	case ((NU8) 4):
	{
		result = (*n).typ;
	}
	break;
	case ((NU8) 128):
	{
		result = semstmtlisttype_470038(c, n, prev);
	}
	break;
	case ((NU8) 129):
	{
		result = semblocktype_470082(c, n, prev);
	}
	break;
	case ((NU8) 149):
	{
		checksonslen_281260(n, ((NI) 1));
		result = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 0)], prev);
		result = freshtype_470401(result, prev);
		(*result).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
	}
	break;
	default:
	{
		localerror_196128((*n).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
		result = neworprevtype_464895(((NU8) 50), prev, c);
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).typ), result);
	return result;
}

N_NIMCALL(Tnode225809*, semaftermacrocall_464631)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, NU16 flags) {
	Tnode225809* result;
	Tsym225841* LOC5;
	Tsym225841* LOC19;
	result = 0;
	evaltemplatecounter_431396 += ((NI) 1);
	{
		if (!(((NI) 100) < evaltemplatecounter_431396)) goto LA3;
		globalerror_196107((*s).info, ((NU16) 188), ((NimStringDesc*) &TMP3117));
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getmodule_233243((*s).owner);
	(*c).friendmodules = (Tsymseq225811*) incrSeqV2(&((*c).friendmodules)->Sup, sizeof(Tsym225841*));
	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_457277(c, result);
	}
	goto LA6;
	LA8: ;
	{
		switch ((*(*(*s).typ).sons->data[((NI) 0)]).kind) {
		case ((NU8) 6):
		{
			result = semexpr_457201(c, result, flags);
		}
		break;
		case ((NU8) 7):
		{
			result = semstmt_457277(c, result);
		}
		break;
		case ((NU8) 8):
		{
			Ttype225847* typ;
			{
				if (!((*n).kind == ((NU8) 115))) goto LA16;
				(*result).kind = ((NU8) 128);
			}
			LA16: ;
			typ = semtypenode_457269(c, result, NIM_NIL);
			asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_280684(c, typ));
		}
		break;
		default:
		{
			result = semexpr_457201(c, result, flags);
			result = fitnode_457245(c, (*(*s).typ).sons->data[((NI) 0)], result);
		}
		break;
		}
	}
	LA6: ;
	evaltemplatecounter_431396 -= ((NI) 1);
	LOC19 = 0;
	LOC19 = pop_413918((&(*c).friendmodules));
	return result;
}

N_NIMCALL(Tnode225809*, semmacroexpr_458073)(Tcontext280023* c, Tnode225809* n, Tnode225809* norig, Tsym225841* sym, NU16 flags) {
	Tnode225809* result;
	result = 0;
	pushinfocontext_191581((*norig).info);
	markused_388253((*n).info, sym);
	{
		if (!(sym == (*(*c).p).owner)) goto LA3;
		globalerror_196107((*n).info, ((NU16) 26), (*(*sym).name).s);
	}
	LA3: ;
	result = evalmacrocall_446308((*c).module, n, norig, sym);
	{
		if (!!(((flags &(1<<((((NU8) 9))&15)))!=0))) goto LA7;
		result = semaftermacrocall_464631(c, result, sym, flags);
	}
	LA7: ;
	popinfocontext_191600();
	return result;
}

N_NIMCALL(Tnode225809*, semsym_492258)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, NU16 flags) {
	Tnode225809* result;
{	result = 0;
	switch ((*s).kind) {
	case ((NU8) 10):
	{
		Ttype225847* LOC2;
		markused_388253((*n).info, s);
		LOC2 = 0;
		LOC2 = skiptypes_229167((*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_492248(n, s);
			}
			goto LA4;
			LA6: ;
			{
				result = newsymnode_227338(s, (*n).info);
			}
			LA4: ;
		}
		break;
		case ((NU8) 4):
		case ((NU8) 24):
		{
			{
				NI LOC12;
				LOC12 = 0;
				LOC12 = len_226098((*s).ast);
				if (!(LOC12 == ((NI) 0))) goto LA13;
				result = inlineconst_492248(n, s);
			}
			goto LA10;
			LA13: ;
			{
				result = newsymnode_227338(s, (*n).info);
			}
			LA10: ;
		}
		break;
		default:
		{
			result = newsymnode_227338(s, (*n).info);
		}
		break;
		}
	}
	break;
	case ((NU8) 17):
	{
		result = semmacroexpr_458073(c, n, n, s, flags);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_458062(c, n, s, flags);
	}
	break;
	case ((NU8) 3):
	{
		markused_388253((*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;
			{
				Tnode225809* realparam;
				Tnode225809* LOC40;
				if (!(*(*c).p).wasforwarded) goto LA31;
				realparam = HEX5BHEX5D_226244((*(*(*(*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_196279(TMP3542);
					internalerror_196191(LOC39);
				}
				LA37: ;
				LOC40 = 0;
				LOC40 = HEX5BHEX5D_226244((*(*(*(*c).p).owner).typ).n, (NI)((*s).position + ((NI) 1)));
				result = newsymnode_227338((*LOC40).kindU.S4.sym, (*n).info);
				goto BeforeRet;
			}
			goto LA29;
			LA31: ;
			{
				Tsym225841* u;
				if (!((*(*(*c).p).owner).kind == ((NU8) 17))) goto LA42;
				u = searchinscopes_286205(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_196279(TMP3543);
					internalerror_196191(LOC52);
				}
				LA50: ;
				result = newsymnode_227338(u, (*n).info);
				goto BeforeRet;
			}
			goto LA29;
			LA42: ;
			LA29: ;
		}
		goto LA20;
		LA27: ;
		LA20: ;
		result = newsymnode_227338(s, (*n).info);
	}
	break;
	case ((NU8) 8):
	case ((NU8) 9):
	case ((NU8) 11):
	case ((NU8) 21):
	{
		{
			if (!((*s).magic == ((NU8) 254))) goto LA56;
			localerror_196139((*n).info, ((NimStringDesc*) &TMP3544));
		}
		LA56: ;
		markused_388253((*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_227338(s, (*n).info);
	}
	break;
	case ((NU8) 4):
	{
		{
			if (!((*(*s).typ).kind == ((NU8) 59))) goto LA65;
			result = newsymnode_227338(s, (*n).info);
			asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
		}
		goto LA63;
		LA65: ;
		{
			if (!!(((*s).ast == NIM_NIL))) goto LA68;
			result = semexpr_457201(c, (*s).ast, 0);
		}
		goto LA63;
		LA68: ;
		{
			asgnRefNoCycle((void**) (&(*n).typ), (*s).typ);
			result = n;
			goto BeforeRet;
		}
		LA63: ;
	}
	break;
	case ((NU8) 7):
	{
		markused_388253((*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_227338(s, (*n).info);
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_280684(c, (*s).typ));
	}
	break;
	default:
	{
		markused_388253((*n).info, s);
		result = newsymnode_227338(s, (*n).info);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(Tnode225809*, semfieldaccess_492014)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	result = 0;
	result = builtinfieldaccess_497358(c, n, flags);
	{
		if (!(result == NIM_NIL)) goto LA3;
		result = dottransformation_498079(c, n);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, maybelifttype_493688)(Ttype225847** t, Tcontext280023* c, Tlineinfo190352 info) {
	Tscope225835* LOC1;
	Ttype225847* lifted;
	Tnode225809* LOC2;
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	LOC2 = 0;
	LOC2 = newnodei_227351(((NU8) 152), info);
	lifted = liftparamtype_468479(c, ((NU8) 7), LOC2, (*t), ((NimStringDesc*) &TMP3547), info, NIM_FALSE);
	closescope_286111(c);
	{
		if (!!((lifted == NIM_NIL))) goto LA5;
		unsureAsgnRef((void**) (&(*t)), lifted);
	}
	LA5: ;
}

N_NIMCALL(Tnode225809*, inferwithmetatype_457463)(Tcontext280023* c, Ttype225847* formal, Tnode225809* arg, NIM_BOOL coercedistincts) {
	Tnode225809* result;
	Tcandidate388209 m;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_388278(c, (&m), formal);
	m.coercedistincts = coercedistincts;
	result = paramtypesmatch_393733((&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_463276(c, result, (&m));
	}
	LA5: ;
	{
		Ttype225847* LOC11;
		if (!!((result == NIM_NIL))) goto LA9;
		LOC11 = 0;
		LOC11 = skiptypes_229167(formal, IL64(18014398509481984));
		asgnRefNoCycle((void**) (&(*result).typ), generatetypeinstance_304894(c, m.bindings, (*arg).info, LOC11));
	}
	goto LA7;
	LA9: ;
	{
		typemismatch_457379(arg, formal, (*arg).typ);
		result = copytree_230028(arg);
		asgnRefNoCycle((void**) (&(*result).typ), formal);
	}
	LA7: ;
	return result;
}

N_NIMCALL(NU8, checkconversionbetweenobjects_493409)(Ttype225847* castdest, Ttype225847* src) {
	NU8 result;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = inheritancediff_262091(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_493423)(Tcontext280023* c, Ttype225847* castdest, Ttype225847* src) {
	NU8 result;
	Ttype225847* d;
	Ttype225847* s;
{	result = 0;
	result = ((NU8) 0);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametype_260092(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_229167(castdest, IL64(211106240964864));
	s = skiptypes_229167(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_228426(d);
			s = lastson_228426(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_493409(d, s);
	}
	goto LA17;
	LA24: ;
	{
		NIM_BOOL LOC27;
		Ttype225847* LOC28;
		Ttype225847* LOC30;
		LOC27 = 0;
		LOC28 = 0;
		LOC28 = skiptypes_229167(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_229167(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_392796(c, d, s);
		switch (LOC34) {
		case ((NU8) 0):
		case ((NU8) 8):
		{
			{
				NIM_BOOL LOC38;
				LOC38 = 0;
				LOC38 = comparetypes_262047(castdest, src, ((NU8) 1), 0);
				if (!!(LOC38)) goto LA39;
				result = ((NU8) 2);
			}
			LA39: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA17: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semconv_493710)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Ttype225847* targettype;
	Ttype225847* LOC6;
	Tnode225809* LOC7;
	Tnode225809* LOC8;
	Tnode225809* op;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_196128((*n).info, ((NU16) 165), ((NimStringDesc*) &TMP3117));
		result = n;
		goto BeforeRet;
	}
	LA4: ;
	result = newnodei_227351(((NU8) 60), (*n).info);
	LOC6 = 0;
	LOC6 = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	targettype = skiptypes_229167(LOC6, 256);
	LOC7 = 0;
	LOC7 = HEX5BHEX5D_226244(n, ((NI) 0));
	maybelifttype_493688(&targettype, c, (*LOC7).info);
	LOC8 = 0;
	LOC8 = copytree_230028((*n).kindU.S6.sons->data[((NI) 0)]);
	addson_227819(result, LOC8);
	op = semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	{
		NIM_BOOL LOC11;
		Tnode225809* final;
		LOC11 = 0;
		LOC11 = ismetatype_226821(targettype);
		if (!LOC11) goto LA12;
		final = inferwithmetatype_457463(c, targettype, op, NIM_TRUE);
		addson_227819(result, final);
		asgnRefNoCycle((void**) (&(*result).typ), (*final).typ);
		goto BeforeRet;
	}
	LA12: ;
	asgnRefNoCycle((void**) (&(*result).typ), targettype);
	addson_227819(result, op);
	{
		NIM_BOOL LOC16;
		NU8 status;
		LOC16 = 0;
		LOC16 = issymchoice_493671(op);
		if (!!(LOC16)) goto LA17;
		status = checkconvertible_493423(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_230650((*op).kindU.S4.sym);
				LA23: ;
				if (!LOC22) goto LA24;
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), fitnode_457245(c, (*result).typ, (*result).kindU.S6.sons->data[((NI) 1)]));
			}
			LA24: ;
		}
		break;
		case ((NU8) 1):
		{
			NimStringDesc* LOC27;
			LOC27 = 0;
			LOC27 = typetostring_255032((*result).typ, ((NU8) 0));
			message_196161((*n).info, ((NU16) 273), LOC27);
		}
		break;
		case ((NU8) 2):
		{
			NimStringDesc* LOC29;
			TY193306 LOC30;
			NimStringDesc* LOC31;
			LOC29 = 0;
			LOC29 = msgkindtostring_192406(((NU16) 146));
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = typetostring_255032((*op).typ, ((NU8) 0));
			LOC30[1] = typetostring_255032((*result).typ, ((NU8) 0));
			LOC31 = 0;
			LOC31 = nsuFormatOpenArray(LOC29, LOC30, 2);
			localerror_196128((*n).info, ((NU16) 4), LOC31);
		}
		break;
		}
	}
	goto LA14;
	LA17: ;
	{
		{
			NI i_493753;
			NI HEX3Atmp_493806;
			NI LOC34;
			NI res_493809;
			i_493753 = 0;
			HEX3Atmp_493806 = 0;
			LOC34 = 0;
			LOC34 = sonslen_228387(op);
			HEX3Atmp_493806 = (NI)(LOC34 - ((NI) 1));
			res_493809 = ((NI) 0);
			{
				while (1) {
					Tnode225809* it;
					NU8 status;
					if (!(res_493809 <= HEX3Atmp_493806)) goto LA36;
					i_493753 = res_493809;
					it = (*op).kindU.S6.sons->data[i_493753];
					status = checkconvertible_493423(c, (*result).typ, (*it).typ);
					{
						if (!((3 &(1<<((status)&7)))!=0)) goto LA39;
						markused_388253((*n).info, (*it).kindU.S4.sym);
						markindirect_281208(c, (*it).kindU.S4.sym);
						result = it;
						goto BeforeRet;
					}
					LA39: ;
					res_493809 += ((NI) 1);
				} LA36: ;
			}
		}
		localerror_196128((*n).info, ((NU16) 66), (*(*(*(*op).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
	}
	LA14: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, checkinitialized_501065)(Tnode225809* n, Intset222056 ids, Tlineinfo190352 info) {
	switch ((*n).kind) {
	case ((NU8) 138):
	{
		{
			NI i_501082;
			NI HEX3Atmp_501235;
			NI LOC3;
			NI res_501238;
			i_501082 = 0;
			HEX3Atmp_501235 = 0;
			LOC3 = 0;
			LOC3 = sonslen_228387(n);
			HEX3Atmp_501235 = (NI)(LOC3 - ((NI) 1));
			res_501238 = ((NI) 0);
			{
				while (1) {
					if (!(res_501238 <= HEX3Atmp_501235)) goto LA5;
					i_501082 = res_501238;
					checkinitialized_501065((*n).kindU.S6.sons->data[i_501082], ids, info);
					res_501238 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 139):
	{
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA9;
			internalerror_196172(info, ((NimStringDesc*) &TMP3549));
		}
		LA9: ;
		checkinitialized_501065((*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_222829(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*) &TMP3550));
appendString(LOC19, (*(*(*n).kindU.S4.sym).name).s);
			message_196161(info, ((NU16) 4), LOC19);
		}
		LA17: ;
	}
	break;
	default:
	{
		internalerror_196172(info, ((NimStringDesc*) &TMP3549));
	}
	break;
	}
}

N_NIMCALL(Tnode225809*, semobjconstr_496433)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Ttype225847* t;
	Ttype225847* objtype;
	Intset222056 ids;
{	result = 0;
	t = semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	result = n;
	asgnRefNoCycle((void**) (&(*result).typ), t);
	(*result).kind = ((NU8) 38);
	t = skiptypes_229167(t, 2048);
	{
		if (!((*t).kind == ((NU8) 22))) goto LA3;
		t = skiptypes_229167((*t).sons->data[((NI) 0)], 2048);
	}
	LA3: ;
	{
		if (!!(((*t).kind == ((NU8) 17)))) goto LA7;
		localerror_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3548));
		goto BeforeRet;
	}
	LA7: ;
	objtype = t;
	memset((void*)(&ids), 0, sizeof(ids));
	chckNil((void*)(&ids));
	memset((void*)(&ids), 0, sizeof(ids));
	initintset_222927((&ids));
	{
		NI i_501303;
		NI HEX3Atmp_501418;
		NI LOC10;
		NI res_501421;
		i_501303 = 0;
		HEX3Atmp_501418 = 0;
		LOC10 = 0;
		LOC10 = len_226098(n);
		HEX3Atmp_501418 = (LOC10 - 1);
		res_501421 = ((NI) 1);
		{
			while (1) {
				Tnode225809* it;
				Tident198021* id;
				Tnode225809* e;
				Tnode225809* check;
				Tsym225841* f;
				if (!(res_501421 <= HEX3Atmp_501418)) goto LA12;
				i_501303 = res_501421;
				it = (*n).kindU.S6.sons->data[i_501303];
				{
					if (!!(((*it).kind == ((NU8) 34)))) goto LA15;
					localerror_196128((*n).info, ((NU16) 174), ((NimStringDesc*) &TMP3117));
					goto LA9;
				}
				LA15: ;
				id = considerquotedident_286010((*it).kindU.S6.sons->data[((NI) 0)]);
				{
					NIM_BOOL LOC19;
					LOC19 = 0;
					LOC19 = containsorincl_222898((&ids), (*id).Sup.id);
					if (!LOC19) goto LA20;
					localerror_196128((*it).info, ((NU16) 90), (*id).s);
				}
				LA20: ;
				e = semexprwithtype_457211(c, (*it).kindU.S6.sons->data[((NI) 1)], (flags & 64));
				check = NIM_NIL;
				f = 0;
				t = objtype;
				{
					while (1) {
						check = NIM_NIL;
						f = lookupinrecordandbuildcheck_497004(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_229167((*t).sons->data[((NI) 0)], 2048);
					}
				} LA22: ;
				{
					NIM_BOOL LOC34;
					LOC34 = 0;
					LOC34 = !((f == NIM_NIL));
					if (!(LOC34)) goto LA35;
					LOC34 = fieldvisible_395471(c, f);
					LA35: ;
					if (!LOC34) goto LA36;
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325(f));
					e = fitnode_457245(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_226165(it, check);
					}
					LA40: ;
				}
				goto LA32;
				LA36: ;
				{
					localerror_196128((*it).info, ((NU16) 84), (*id).s);
				}
				LA32: ;
				asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), e);
				res_501421 += ((NI) 1);
			} LA12: ;
		}
	} LA9: ;
	{
		if (!(((*objtype).flags &(1<<((((NU8) 17))&31)))!=0)) goto LA45;
		{
			while (1) {
				checkinitialized_501065((*objtype).n, ids, (*n).info);
				{
					if (!((*objtype).sons->data[((NI) 0)] == NIM_NIL)) goto LA51;
					goto LA47;
				}
				LA51: ;
				objtype = skiptypes_229167((*objtype).sons->data[((NI) 0)], 2048);
			}
		} LA47: ;
	}
	LA45: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym225841*, lookupfordefined_499178)(Tcontext280023* c, Tident198021* i, NIM_BOOL onlycurrentscope) {
	Tsym225841* result;
	result = 0;
	{
		if (!onlycurrentscope) goto LA3;
		result = localsearchinscope_286194(c, i);
	}
	goto LA1;
	LA3: ;
	{
		result = searchinscopes_286205(c, i);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym225841*, lookupfordefined_499187)(Tcontext280023* c, Tnode225809* n, NIM_BOOL onlycurrentscope) {
	Tsym225841* result;
{	result = 0;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		result = lookupfordefined_499178(c, (*n).kindU.S5.ident, onlycurrentscope);
	}
	break;
	case ((NU8) 45):
	{
		Tsym225841* m;
		result = NIM_NIL;
		{
			if (!onlycurrentscope) goto LA5;
			goto BeforeRet;
		}
		LA5: ;
		checksonslen_281260(n, ((NI) 2));
		m = lookupfordefined_499187(c, (*n).kindU.S6.sons->data[((NI) 0)], onlycurrentscope);
		{
			NIM_BOOL LOC9;
			Tident198021* ident;
			Tnode225809* 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_226244(n, ((NI) 1));
			ident = considerquotedident_286010(LOC13);
			{
				if (!(m == (*c).module)) goto LA16;
				result = strtableget_233111((*(*c).toplevelscope).symbols, ident);
			}
			goto LA14;
			LA16: ;
			{
				result = strtableget_233111((*m).kindU.S3.tab, ident);
			}
			LA14: ;
		}
		LA11: ;
	}
	break;
	case ((NU8) 53):
	{
		Tident198021* LOC20;
		LOC20 = 0;
		LOC20 = considerquotedident_286010(n);
		result = lookupfordefined_499178(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_247059(n, 0);
		localerror_196128((*n).info, ((NU16) 20), LOC24);
		result = NIM_NIL;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semdefined_499236)(Tcontext280023* c, Tnode225809* n, NIM_BOOL onlycurrentscope) {
	Tnode225809* result;
	result = 0;
	checksonslen_281260(n, ((NI) 2));
	result = newintnode_226608(((NU8) 6), IL64(0));
	{
		NIM_BOOL LOC3;
		Tnode225809* LOC5;
		Tident198021* LOC6;
		LOC3 = 0;
		LOC3 = !(onlycurrentscope);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = HEX5BHEX5D_226244(n, ((NI) 0));
		LOC6 = 0;
		LOC6 = considerquotedident_286010(LOC5);
		LOC3 = eqStrings((*LOC6).s, ((NimStringDesc*) &TMP3551));
		LA4: ;
		if (!LOC3) goto LA7;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2)))) goto LA11;
			localerror_196139((*n).info, ((NimStringDesc*) &TMP3552));
		}
		goto LA9;
		LA11: ;
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = isdefined_199167((*(*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: ;
	{
		Tsym225841* LOC18;
		LOC18 = 0;
		LOC18 = lookupfordefined_499187(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_274190(((NU8) 1)));
	return result;
}

N_NIMCALL(Tnode225809*, setms_500184)(Tnode225809* n, Tsym225841* s) {
	Tnode225809* result;
	result = 0;
	result = n;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325(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*) &TMP3117));
	}
	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(Tnode225809*, tryexpr_457317)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* volatile result;
	NI olderrorcount;
	NI olderrormax;
	NI oldcompilesid;
	Tscope225835* oldscope;
	Tscope225835* LOC1;
	NI oldownerlen;
	TY280143* oldgenerics;
	NU8 olderroroutputs;
	NI oldcontextlen;
	NI oldingenericcontext;
	NI oldinunrolledcontext;
	NI oldingenericinst;
	Tproccon280011* oldproccon;
	NimStringDesc* err;
	TSafePoint TMP3553;
	result = 0;
	olderrorcount = gerrorcounter_191399;
	olderrormax = gerrormax_191402;
	oldcompilesid = (*c).compilescontextid;
	(*c).compilescontextidgenerator += ((NI) 1);
	(*c).compilescontextid = (*c).compilescontextidgenerator;
	gerrormax_191402 = ((NI) 2147483647);
	oldscope = (*c).currentscope;
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	oldownerlen = (gowners_280291 ? gowners_280291->Sup.len : 0);
	oldgenerics = (*c).generics;
	olderroroutputs = erroroutputs_191440;
	erroroutputs_191440 = 0;
	oldcontextlen = getinfocontextlen_191545();
	oldingenericcontext = (*c).ingenericcontext;
	oldinunrolledcontext = (*c).inunrolledcontext;
	oldingenericinst = (*c).ingenericinst;
	oldproccon = (*c).p;
	if ((*c).generics) nimGCunrefNoCycle((*c).generics);
	(*c).generics = (TY280143*) newSeqRC1((&NTI280143), 0);
	err = 0;
	pushSafePoint(&TMP3553);
	TMP3553.status = setjmp(TMP3553.context);
	if (TMP3553.status == 0) {
		result = semexpr_457201(c, n, flags);
		{
			if (!!((gerrorcounter_191399 == olderrorcount))) goto LA5;
			result = NIM_NIL;
		}
		LA5: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI190358))) {
			TMP3553.status = 0;
			{
				if (!((gglobaloptions_167132 &(1<<((((NU8) 6))&31)))!=0)) goto LA11;
				err = getcurrentexceptionmsg_89208();
			}
			LA11: ;
			popCurrentException();
		}
	}
	if (TMP3553.status != 0) reraiseException();
	(*c).compilescontextid = oldcompilesid;
	genericSeqAssign((&(*c).generics), oldgenerics, (&NTI280143));
	(*c).ingenericcontext = oldingenericcontext;
	(*c).inunrolledcontext = oldinunrolledcontext;
	(*c).ingenericinst = oldingenericinst;
	asgnRef((void**) (&(*c).p), oldproccon);
	setinfocontextlen_191562(oldcontextlen);
	gowners_280291 = (Tsymseq225811*) setLengthSeq(&(gowners_280291)->Sup, sizeof(Tsym225841*), ((NI) (oldownerlen)));
	asgnRef((void**) (&(*c).currentscope), oldscope);
	erroroutputs_191440 = olderroroutputs;
	gerrorcounter_191399 = olderrorcount;
	gerrormax_191402 = olderrormax;
	{
		NIM_BOOL LOC15;
		LOC15 = 0;
		LOC15 = ((gglobaloptions_167132 &(1<<((((NU8) 6))&31)))!=0);
		if (!(LOC15)) goto LA16;
		LOC15 = !(err == 0);
		LA16: ;
		if (!LOC15) goto LA17;
		localerror_196139((*n).info, err);
	}
	LA17: ;
	return result;
}

N_NIMCALL(Tnode225809*, semcompiles_500079)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Tnode225809* LOC6;
	Tnode225809* LOC7;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		result = semdirectop_458039(c, n, flags);
		goto BeforeRet;
	}
	LA4: ;
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_226244(n, ((NI) 1));
	LOC7 = 0;
	LOC7 = tryexpr_457317(c, LOC6, flags);
	result = newintnode_226608(((NU8) 6), ((NI64) (!((LOC7 == NIM_NIL)))));
	(*result).info = (*n).info;
	asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 1)));
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semsizeof_493884)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_196128((*n).info, ((NU16) 73), ((NimStringDesc*) &TMP3554));
	}
	goto LA1;
	LA4: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 1)], 32));
	}
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_274190(((NU8) 31)));
	result = n;
	return result;
}

N_NIMCALL(Tnode225809*, isopimpl_458055)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Ttype225847* t1;
	Tnode225809* LOC16;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NI LOC6;
		Tnode225809* LOC8;
		Tnode225809* LOC10;
		Tnode225809* LOC12;
		NimStringDesc* LOC15;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = sonslen_228387(n);
		LOC5 = (LOC6 == ((NI) 3));
		if (!(LOC5)) goto LA7;
		LOC8 = 0;
		LOC8 = HEX5BHEX5D_226244(n, ((NI) 1));
		LOC5 = !(((*LOC8).typ == NIM_NIL));
		LA7: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA9;
		LOC10 = 0;
		LOC10 = HEX5BHEX5D_226244(n, ((NI) 1));
		LOC4 = ((*(*LOC10).typ).kind == ((NU8) 8));
		LA9: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA11;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_226244(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_196279(TMP3556);
		internalerror_196191(LOC15);
	}
	LA13: ;
	LOC16 = 0;
	LOC16 = HEX5BHEX5D_226244(n, ((NI) 1));
	t1 = skiptypes_229167((*LOC16).typ, IL64(2305843009213694208));
	{
		Tnode225809* LOC19;
		Tnode225809* LOC22;
		NimStringDesc* LOC23;
		LOC19 = 0;
		LOC19 = HEX5BHEX5D_226244(n, ((NI) 2));
		if (!((*LOC19).kind >= ((NU8) 20) && (*LOC19).kind <= ((NU8) 22))) goto LA20;
		LOC22 = 0;
		LOC22 = HEX5BHEX5D_226244(n, ((NI) 2));
		LOC23 = 0;
		LOC23 = nsuNormalize((*LOC22).kindU.S3.strval);
		if (eqStrings(LOC23, ((NimStringDesc*) &TMP3557))) goto LA24;
		goto LA25;
		LA24: ;
		{
			Ttype225847* t;
			NIM_BOOL LOC28;
			NIM_BOOL LOC29;
			t = skiptypes_229167(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_226608(((NU8) 6), ((NI64) (LOC28)));
		}
		goto LA26;
		LA25: ;
		{
		}
		LA26: ;
	}
	goto LA17;
	LA20: ;
	{
		Ttype225847* t2;
		Tnode225809* LOC34;
		Tcandidate388209 m;
		NIM_BOOL match;
		NU8 LOC35;
		LOC34 = 0;
		LOC34 = HEX5BHEX5D_226244(n, ((NI) 2));
		t2 = skiptypes_229167((*LOC34).typ, 256);
		maybelifttype_493688(&t2, c, (*n).info);
		memset((void*)(&m), 0, sizeof(m));
		initcandidate_388278(c, (&m), t2);
		LOC35 = 0;
		LOC35 = typerel_389064((&m), t2, t1, NIM_TRUE);
		match = (((NU8) 3) <= LOC35);
		result = newintnode_226608(((NU8) 6), ((NI64) (match)));
	}
	LA17: ;
	asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	return result;
}

N_NIMCALL(Tnode225809*, semis_494107)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* LOC6;
	Ttype225847* lhstype;
	Tnode225809* LOC14;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!!((LOC3 == ((NI) 3)))) goto LA4;
		localerror_196128((*n).info, ((NU16) 209), ((NimStringDesc*) &TMP3555));
	}
	LA4: ;
	result = n;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_274190(((NU8) 1)));
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_226244(n, ((NI) 1));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_457211(c, LOC6, 34));
	{
		Tnode225809* LOC9;
		Ttype225847* t2;
		Tnode225809* LOC12;
		Tnode225809* LOC13;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_226244(n, ((NI) 2));
		if (!!(((*LOC9).kind >= ((NU8) 20) && (*LOC9).kind <= ((NU8) 22)))) goto LA10;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_226244(n, ((NI) 2));
		t2 = semtypenode_457269(c, LOC12, NIM_NIL);
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_226244(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), newnodeit_227807(((NU8) 4), (*LOC13).info, t2));
	}
	LA10: ;
	LOC14 = 0;
	LOC14 = HEX5BHEX5D_226244(n, ((NI) 1));
	lhstype = (*LOC14).typ;
	{
		Tnode225809* LOC19;
		if (!!(((*lhstype).kind == ((NU8) 8)))) goto LA17;
		LOC19 = 0;
		LOC19 = HEX5BHEX5D_226244(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), maketypesymnode_280714(c, lhstype, (*LOC19).info));
	}
	goto LA15;
	LA17: ;
	{
		Ttype225847* LOC21;
		LOC21 = 0;
		LOC21 = base_255039(lhstype);
		if (!((*LOC21).kind == ((NU8) 0))) goto LA22;
		goto BeforeRet;
	}
	goto LA15;
	LA22: ;
	LA15: ;
	{
		Tnode225809* LOC26;
		Ttype225847* LOC27;
		NIM_BOOL LOC28;
		LOC26 = 0;
		LOC26 = HEX5BHEX5D_226244(n, ((NI) 1));
		LOC27 = 0;
		LOC27 = base_255039((*LOC26).typ);
		LOC28 = 0;
		LOC28 = containsgenerictype_264310(LOC27);
		if (!!(LOC28)) goto LA29;
		result = isopimpl_458055(c, n);
	}
	LA29: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semof_493895)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
{	result = 0;
	{
		NI LOC3;
		Ttype225847* a;
		Ttype225847* b;
		Ttype225847* x;
		Ttype225847* y;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 1)], 0));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 2)], 32));
		a = skiptypes_229167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106247256320));
		b = skiptypes_229167((*(*n).kindU.S6.sons->data[((NI) 2)]).typ, IL64(211106247256320));
		x = skiptypes_229167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106247256064));
		y = skiptypes_229167((*(*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_196128((*n).info, ((NU16) 210), ((NimStringDesc*) &TMP3558));
		}
		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_196128((*n).info, ((NU16) 210), ((NimStringDesc*) &TMP3558));
		}
		goto LA6;
		LA15: ;
		{
			NI diff;
			diff = inheritancediff_262091(a, b);
			{
				NimStringDesc* LOC22;
				if (!(diff <= ((NI) 0))) goto LA20;
				LOC22 = 0;
				LOC22 = rendertree_247059(n, 0);
				message_196161((*n).info, ((NU16) 281), LOC22);
				result = newintnode_226608(((NU8) 6), IL64(1));
				(*result).info = (*n).info;
				asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 1)));
				goto BeforeRet;
			}
			goto LA18;
			LA20: ;
			{
				NimStringDesc* LOC26;
				if (!(diff == ((NI) 2147483647))) goto LA24;
				LOC26 = 0;
				LOC26 = typetostring_255032(a, ((NU8) 0));
				localerror_196128((*n).info, ((NU16) 211), LOC26);
			}
			goto LA18;
			LA24: ;
			LA18: ;
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		localerror_196128((*n).info, ((NU16) 209), ((NimStringDesc*) &TMP3558));
	}
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_274190(((NU8) 1)));
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym225841*, expectmacroortemplatecall_458032)(Tcontext280023* c, Tnode225809* n) {
	Tsym225841* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		Tsym225841* expandedsym;
		Tnode225809* LOC6;
		LOC3 = 0;
		LOC3 = iscallexpr_226072(n);
		if (!LOC3) goto LA4;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_226244(n, ((NI) 0));
		expandedsym = qualifiedlookup_286864(c, LOC6, 2);
		{
			Tnode225809* LOC11;
			NimStringDesc* LOC12;
			Tnode225809* LOC13;
			if (!(expandedsym == NIM_NIL)) goto LA9;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_226244(n, ((NI) 0));
			LOC12 = 0;
			LOC12 = rendertree_247059(LOC11, 0);
			localerror_196128((*n).info, ((NU16) 63), LOC12);
			LOC13 = 0;
			LOC13 = HEX5BHEX5D_226244(n, ((NI) 0));
			result = errorsym_286372(c, LOC13);
			goto BeforeRet;
		}
		LA9: ;
		{
			Tnode225809* LOC18;
			if (!!(((393216 &(1<<(((*expandedsym).kind)&31)))!=0))) goto LA16;
			localerror_196128((*n).info, ((NU16) 221), (*(*expandedsym).name).s);
			LOC18 = 0;
			LOC18 = HEX5BHEX5D_226244(n, ((NI) 0));
			result = errorsym_286372(c, LOC18);
			goto BeforeRet;
		}
		LA16: ;
		result = expandedsym;
	}
	goto LA1;
	LA4: ;
	{
		NimStringDesc* LOC20;
		LOC20 = 0;
		LOC20 = rendertree_247059(n, 0);
		localerror_196128((*n).info, ((NU16) 221), LOC20);
		result = errorsym_286372(c, n);
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semexpandtoast_499430)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* macrocall;
	Tsym225841* expandedsym;
{	result = 0;
	macrocall = HEX5BHEX5D_226244(n, ((NI) 1));
	expandedsym = expectmacroortemplatecall_458032(c, macrocall);
	{
		if (!((*expandedsym).kind == ((NU8) 0))) goto LA3;
		result = n;
		goto BeforeRet;
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*macrocall).kindU.S6.sons->data[((NI) 0)]), newsymnode_227338(expandedsym, (*macrocall).info));
	markused_388253((*n).info, expandedsym);
	{
		NI i_499614;
		NI HEX3Atmp_499650;
		NI LOC6;
		NI res_499653;
		i_499614 = 0;
		HEX3Atmp_499650 = 0;
		LOC6 = 0;
		LOC6 = len_226098(macrocall);
		HEX3Atmp_499650 = (NI)(LOC6 - ((NI) 1));
		res_499653 = ((NI) 1);
		{
			while (1) {
				Tnode225809* LOC9;
				if (!(res_499653 <= HEX3Atmp_499650)) goto LA8;
				i_499614 = res_499653;
				LOC9 = 0;
				LOC9 = HEX5BHEX5D_226244(macrocall, i_499614);
				asgnRefNoCycle((void**) (&(*macrocall).kindU.S6.sons->data[i_499614]), semexprwithtype_457211(c, LOC9, 0));
				res_499653 += ((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_196279(TMP3559);
		internalerror_196191(LOC14);
	}
	LA12: ;
	{
		Tsym225841* LOC17;
		LOC17 = 0;
		LOC17 = getcompilerproc_274809(((NimStringDesc*) &TMP3160));
		if (!!((LOC17 == NIM_NIL))) goto LA18;
		asgnRefNoCycle((void**) (&(*n).typ), systypefromname_274179(((NimStringDesc*) &TMP3161)));
	}
	goto LA15;
	LA18: ;
	{
		asgnRefNoCycle((void**) (&(*n).typ), systypefromname_274179(((NimStringDesc*) &TMP3162)));
	}
	LA15: ;
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semexpandtoast_499669)(Tcontext280023* c, Tnode225809* n, Tsym225841* magicsym, NU16 flags) {
	Tnode225809* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_227338(magicsym, (*n).info));
		result = semexpandtoast_499430(c, n);
	}
	goto LA1;
	LA4: ;
	{
		result = semdirectop_458039(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NimStringDesc*, expectstring_499308)(Tcontext280023* c, Tnode225809* n_499311) {
	NimStringDesc* result;
	Tnode225809* n;
{	result = 0;
	n = semconstexpr_458485(c, n_499311);
	{
		if (!((*n).kind >= ((NU8) 20) && (*n).kind <= ((NU8) 22))) goto LA3;
		result = copyString((*n).kindU.S3.strval);
		goto BeforeRet;
	}
	goto LA1;
	LA3: ;
	{
		localerror_196128((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP3117));
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, processquotations_499682)(Tnode225809** n, NimStringDesc* op, Tnodeseq225803** quotes, Tnodeseq225803** ids) {
{	{
		if (!((*(*n)).kind == ((NU8) 30))) goto LA3;
		checksonslen_281260((*n), ((NI) 2));
		{
			Tnode225809* LOC7;
			NimStringDesc* examinedop;
			Tnode225809* LOC10;
			LOC7 = 0;
			LOC7 = HEX5BHEX5D_226244((*n), ((NI) 0));
			if (!((*LOC7).kind == ((NU8) 2))) goto LA8;
			LOC10 = 0;
			LOC10 = HEX5BHEX5D_226244((*n), ((NI) 0));
			examinedop = copyString((*(*LOC10).kindU.S5.ident).s);
			{
				Tnode225809* LOC15;
				NimStringDesc* LOC16;
				Tident198021* LOC17;
				if (!eqStrings(examinedop, op)) goto LA13;
				LOC15 = 0;
				LOC15 = HEX5BHEX5D_226244((*n), ((NI) 1));
				(*quotes) = (Tnodeseq225803*) incrSeqV2(&((*quotes))->Sup, sizeof(Tnode225809*));
				asgnRefNoCycle((void**) (&(*quotes)->data[(*quotes)->Sup.len]), LOC15);
				++(*quotes)->Sup.len;
				LOC16 = 0;
				LOC16 = nimIntToStr(((*quotes) ? (*quotes)->Sup.len : 0));
				LOC17 = 0;
				LOC17 = getident_198463(LOC16);
				unsureAsgnRef((void**) (&(*n)), newidentnode_227313(LOC17, (*(*n)).info));
				(*ids) = (Tnodeseq225803*) incrSeqV2(&((*ids))->Sup, sizeof(Tnode225809*));
				asgnRefNoCycle((void**) (&(*ids)->data[(*ids)->Sup.len]), (*n));
				++(*ids)->Sup.len;
				goto BeforeRet;
			}
			goto LA11;
			LA13: ;
			{
				NIM_BOOL LOC19;
				NimStringDesc* LOC22;
				Tident198021* 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_198463(LOC22);
				asgnRefNoCycle((void**) (&(*(*n)).kindU.S6.sons->data[((NI) 0)]), newidentnode_227313(LOC23, (*(*n)).info));
			}
			goto LA11;
			LA20: ;
			LA11: ;
		}
		LA8: ;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC25;
		Tnode225809* LOC29;
		NimStringDesc* LOC30;
		Tident198021* LOC31;
		LOC25 = 0;
		LOC25 = ((*(*n)).kind == ((NU8) 53));
		if (!(LOC25)) goto LA26;
		LOC25 = eqStrings(op, ((NimStringDesc*) &TMP3561));
		LA26: ;
		if (!LOC25) goto LA27;
		LOC29 = 0;
		LOC29 = HEX5BHEX5D_226244((*n), ((NI) 0));
		(*quotes) = (Tnodeseq225803*) incrSeqV2(&((*quotes))->Sup, sizeof(Tnode225809*));
		asgnRefNoCycle((void**) (&(*quotes)->data[(*quotes)->Sup.len]), LOC29);
		++(*quotes)->Sup.len;
		LOC30 = 0;
		LOC30 = nimIntToStr(((*quotes) ? (*quotes)->Sup.len : 0));
		LOC31 = 0;
		LOC31 = getident_198463(LOC30);
		unsureAsgnRef((void**) (&(*n)), newidentnode_227313(LOC31, (*(*n)).info));
		(*ids) = (Tnodeseq225803*) incrSeqV2(&((*ids))->Sup, sizeof(Tnode225809*));
		asgnRefNoCycle((void**) (&(*ids)->data[(*ids)->Sup.len]), (*n));
		++(*ids)->Sup.len;
		goto BeforeRet;
	}
	goto LA1;
	LA27: ;
	LA1: ;
	{
		NI i_499808;
		NI HEX3Atmp_499812;
		NI LOC33;
		NI res_499815;
		i_499808 = 0;
		HEX3Atmp_499812 = 0;
		LOC33 = 0;
		LOC33 = safelen_226126((*n));
		HEX3Atmp_499812 = (LOC33 - 1);
		res_499815 = ((NI) 0);
		{
			while (1) {
				if (!(res_499815 <= HEX3Atmp_499812)) goto LA35;
				i_499808 = res_499815;
				processquotations_499682(&(*(*n)).kindU.S6.sons->data[i_499808], op, quotes, ids);
				res_499815 += ((NI) 1);
			} LA35: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tsym225841*, newanonsym_499343)(NU8 kind, Tlineinfo190352 info, Tsym225841* owner) {
	Tsym225841* result;
	result = 0;
	result = newsym_226656(kind, idanon_198495, owner, info);
	(*result).flags = IL64(2147483648);
	return result;
}

N_NIMCALL(Tnode225809*, semtemplbodydirty_475496)(Templctx472056* c, Tnode225809* n) {
	Tnode225809* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym225841* s;
		s = qualifiedlookup_286864((*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_227338(s, (*n).info);
			}
			goto LA6;
			LA10: ;
			{
				NIM_BOOL LOC13;
				LOC13 = 0;
				LOC13 = contains_222829((*c).tobind, (*s).Sup.id);
				if (!LOC13) goto LA14;
				result = symchoice_471790((*c).c, n, s, ((NU8) 0));
			}
			goto LA6;
			LA14: ;
			LA6: ;
		}
		LA4: ;
	}
	break;
	case ((NU8) 55):
	{
		result = semtemplbodydirty_475496(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_471895((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC22;
			Tsym225841* s;
			LOC22 = 0;
			LOC22 = ((*n).kind == ((NU8) 45));
			if (LOC22) goto LA23;
			LOC22 = ((*n).kind == ((NU8) 53));
			LA23: ;
			if (!LOC22) goto LA24;
			s = qualifiedlookup_286864((*c).c, n, 0);
			{
				NIM_BOOL LOC28;
				LOC28 = 0;
				LOC28 = !((s == NIM_NIL));
				if (!(LOC28)) goto LA29;
				LOC28 = contains_222829((*c).tobind, (*s).Sup.id);
				LA29: ;
				if (!LOC28) goto LA30;
				result = symchoice_471790((*c).c, n, s, ((NU8) 0));
				goto BeforeRet;
			}
			LA30: ;
		}
		LA24: ;
		result = n;
		{
			NI i_475686;
			NI HEX3Atmp_475690;
			NI LOC33;
			NI res_475693;
			i_475686 = 0;
			HEX3Atmp_475690 = 0;
			LOC33 = 0;
			LOC33 = sonslen_228387(n);
			HEX3Atmp_475690 = (NI)(LOC33 - ((NI) 1));
			res_475693 = ((NI) 0);
			{
				while (1) {
					if (!(res_475693 <= HEX3Atmp_475690)) goto LA35;
					i_475686 = res_475693;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_475686]), semtemplbodydirty_475496(c, (*n).kindU.S6.sons->data[i_475686]));
					res_475693 += ((NI) 1);
				} LA35: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semtemplsymbol_472811)(Tcontext280023* c, Tnode225809* n, Tsym225841* s) {
	Tnode225809* 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_471790(c, n, s, ((NU8) 1));
	}
	break;
	case ((NU8) 4):
	{
		result = newsymnodetypedesc_294736(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_294736(s, (*n).info);
		}
		goto LA6;
		LA10: ;
		{
			result = n;
		}
		LA6: ;
	}
	break;
	default:
	{
		result = newsymnode_227338(s, (*n).info);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, openscope_472175)(Templctx472056* c) {
	Tscope225835* LOC1;
	LOC1 = 0;
	LOC1 = openscope_286091((*c).c);
}

N_NIMCALL(void, closescope_472182)(Templctx472056* c) {
	closescope_286111((*c).c);
}

N_NIMCALL(Tnode225809*, semtemplbodyscope_472189)(Templctx472056* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	openscope_472175(c);
	result = semtemplbody_472170(c, n);
	closescope_472182(c);
	return result;
}

N_NIMCALL(NU8, symbinding_471725)(Tnode225809* n) {
	NU8 result;
{	result = 0;
	{
		NI i_471741;
		NI HEX3Atmp_471766;
		NI LOC2;
		NI res_471769;
		i_471741 = 0;
		HEX3Atmp_471766 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_471766 = (NI)(LOC2 - ((NI) 1));
		res_471769 = ((NI) 0);
		{
			while (1) {
				Tnode225809* it;
				Tnode225809* key;
				if (!(res_471769 <= HEX3Atmp_471766)) goto LA4;
				i_471741 = res_471769;
				it = (*n).kindU.S6.sons->data[i_471741];
				{
					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_206390((*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_471769 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, onlyreplaceparams_472198)(Templctx472056* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = n;
	{
		Tsym225841* s;
		if (!((*n).kind == ((NU8) 2))) goto LA3;
		s = qualifiedlookup_286864((*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_227338(s, (*n).info);
			}
			LA13: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			NI i_472420;
			NI HEX3Atmp_472424;
			NI LOC17;
			NI res_472427;
			i_472420 = 0;
			HEX3Atmp_472424 = 0;
			LOC17 = 0;
			LOC17 = safelen_226126(n);
			HEX3Atmp_472424 = (LOC17 - 1);
			res_472427 = ((NI) 0);
			{
				while (1) {
					if (!(res_472427 <= HEX3Atmp_472424)) goto LA19;
					i_472420 = res_472427;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_472420]), onlyreplaceparams_472198(c, (*n).kindU.S6.sons->data[i_472420]));
					res_472427 += ((NI) 1);
				} LA19: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, getidentnode_472071)(Templctx472056* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	switch ((*n).kind) {
	case ((NU8) 31):
	{
		result = getidentnode_472071(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 43):
	{
		result = getidentnode_472071(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 2):
	{
		Tsym225841* s;
		result = n;
		s = qualifiedlookup_286864((*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_227338(s, (*n).info);
			}
			LA12: ;
		}
		LA6: ;
	}
	break;
	case ((NU8) 53):
	case ((NU8) 3):
	{
		result = n;
	}
	break;
	default:
	{
		illformedast_281240(n);
		result = n;
	}
	break;
	}
	return result;
}

static N_INLINE(NIM_BOOL, istemplparam_472118)(Templctx472056* c, Tnode225809* 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_472043)(Tnode225809** n, Tnode225809* s) {
	switch ((*(*n)).kind) {
	case ((NU8) 31):
	{
		replaceidentbysym_472043(&(*(*n)).kindU.S6.sons->data[((NI) 1)], s);
	}
	break;
	case ((NU8) 43):
	{
		replaceidentbysym_472043(&(*(*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_281240((*n));
	}
	break;
	}
}

N_NIMCALL(Tsym225841*, newgensym_472443)(NU8 kind, Tnode225809* n, Templctx472056* c) {
	Tsym225841* result;
	Tident198021* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = considerquotedident_286010(n);
	result = newsym_226656(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_472475)(Templctx472056* c, Tnode225809** n, NU8 k) {
{	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		Tnode225809* x;
		Tnode225809* ident;
		LOC3 = 0;
		LOC3 = ((*(*n)).kind == ((NU8) 43));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = symbinding_471725((*(*n)).kindU.S6.sons->data[((NI) 1)]);
		LOC3 = (LOC5 == ((NU8) 2));
		LA4: ;
		if (!LOC3) goto LA6;
		x = HEX5BHEX5D_226244((*n), ((NI) 0));
		{
			while (1) {
				switch ((*x).kind) {
				case ((NU8) 31):
				{
					x = HEX5BHEX5D_226244(x, ((NI) 1));
				}
				break;
				case ((NU8) 43):
				{
					x = HEX5BHEX5D_226244(x, ((NI) 0));
				}
				break;
				case ((NU8) 2):
				{
					goto LA8;
				}
				break;
				case ((NU8) 53):
				{
					unsureAsgnRef((void**) (&(*n)), onlyreplaceparams_472198(c, (*n)));
					goto BeforeRet;
				}
				break;
				default:
				{
					illformedast_281240(x);
				}
				break;
				}
			}
		} LA8: ;
		ident = getidentnode_472071(c, x);
		{
			NIM_BOOL LOC17;
			LOC17 = 0;
			LOC17 = istemplparam_472118((&(*c)), ident);
			if (!!(LOC17)) goto LA18;
			incl_222856((&(*c).toinject), (*(*x).kindU.S5.ident).Sup.id);
		}
		goto LA15;
		LA18: ;
		{
			replaceidentbysym_472043(n, ident);
		}
		LA15: ;
	}
	goto LA1;
	LA6: ;
	{
		Tnode225809* ident;
		ident = getidentnode_472071(c, (*n));
		{
			NIM_BOOL LOC24;
			Tsym225841* s;
			Tident198021* LOC27;
			LOC24 = 0;
			LOC24 = istemplparam_472118((&(*c)), ident);
			if (!!(LOC24)) goto LA25;
			LOC27 = 0;
			LOC27 = considerquotedident_286010(ident);
			s = localsearchinscope_286194((*c).c, LOC27);
			{
				NIM_BOOL LOC30;
				NIM_BOOL LOC31;
				Tnode225809* 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_227338(s, (*(*n)).info);
				replaceidentbysym_472043(n, LOC36);
			}
			goto LA28;
			LA34: ;
			{
				Tsym225841* local;
				Tnode225809* LOC38;
				local = newgensym_472443(k, ident, c);
				addprelimdecl_286619((*c).c, local);
				LOC38 = 0;
				LOC38 = newsymnode_227338(local, (*(*n)).info);
				replaceidentbysym_472043(n, LOC38);
			}
			LA28: ;
		}
		goto LA22;
		LA25: ;
		{
			replaceidentbysym_472043(n, ident);
		}
		LA22: ;
	}
	LA1: ;
	}BeforeRet: ;
}

N_NIMCALL(void, semtemplsomedecl_473238)(Templctx472056* c, Tnode225809* n, NU8 symkind, NI start) {
	{
		NI i_473257;
		NI HEX3Atmp_473317;
		NI LOC2;
		NI res_473320;
		i_473257 = 0;
		HEX3Atmp_473317 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_473317 = (NI)(LOC2 - ((NI) 1));
		res_473320 = start;
		{
			while (1) {
				if (!(res_473320 <= HEX3Atmp_473317)) goto LA4;
				i_473257 = res_473320;
				{
					Tnode225809* a;
					NI L;
					a = (*n).kindU.S6.sons->data[i_473257];
					{
						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_281240(a);
					}
					LA14: ;
					checkminsonslen_281270(a, ((NI) 3));
					L = sonslen_228387(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semtemplbody_472170(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbody_472170(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					{
						NI j_473304;
						NI HEX3Atmp_473310;
						NI res_473313;
						j_473304 = 0;
						HEX3Atmp_473310 = 0;
						HEX3Atmp_473310 = (NI)(L - ((NI) 3));
						res_473313 = ((NI) 0);
						{
							while (1) {
								if (!(res_473313 <= HEX3Atmp_473310)) goto LA18;
								j_473304 = res_473313;
								addlocaldecl_472475(c, &(*a).kindU.S6.sons->data[j_473304], symkind);
								res_473313 += ((NI) 1);
							} LA18: ;
						}
					}
				} LA5: ;
				res_473320 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode225809*, semroutineintemplname_472854)(Templctx472056* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = n;
	{
		Tsym225841* s;
		if (!((*n).kind == ((NU8) 2))) goto LA3;
		s = qualifiedlookup_286864((*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_227338(s, (*n).info);
			}
			LA15: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			NI i_473013;
			NI HEX3Atmp_473017;
			NI LOC19;
			NI res_473020;
			i_473013 = 0;
			HEX3Atmp_473017 = 0;
			LOC19 = 0;
			LOC19 = safelen_226126(n);
			HEX3Atmp_473017 = (NI)(LOC19 - ((NI) 1));
			res_473020 = ((NI) 0);
			{
				while (1) {
					if (!(res_473020 <= HEX3Atmp_473017)) goto LA21;
					i_473013 = res_473020;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_473013]), semroutineintemplname_472854(c, (*n).kindU.S6.sons->data[i_473013]));
					res_473020 += ((NI) 1);
				} LA21: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, semroutineintemplbody_473036)(Templctx472056* c, Tnode225809* n, NU8 k) {
	Tnode225809* result;
	result = 0;
	result = n;
	checksonslen_281260(n, ((NI) 7));
	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		Tnode225809* ident;
		LOC3 = 0;
		LOC3 = !(((*n).kind == ((NU8) 51) || (*n).kind == ((NU8) 52)));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = symbinding_471725((*n).kindU.S6.sons->data[((NI) 4)]);
		LOC3 = (LOC5 == ((NU8) 1));
		LA4: ;
		if (!LOC3) goto LA6;
		ident = getidentnode_472071(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NIM_BOOL LOC10;
			Tsym225841* s;
			LOC10 = 0;
			LOC10 = istemplparam_472118((&(*c)), ident);
			if (!!(LOC10)) goto LA11;
			s = newgensym_472443(k, ident, c);
			asgnRefNoCycle((void**) (&(*s).ast), n);
			addprelimdecl_286619((*c).c, s);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_227338(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_472854(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	LA1: ;
	openscope_472175(c);
	{
		NI i_473216;
		NI res_473222;
		i_473216 = 0;
		res_473222 = ((NI) 1);
		{
			while (1) {
				if (!(res_473222 <= ((NI) 6))) goto LA17;
				i_473216 = res_473222;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_473216]), semtemplbody_472170(c, (*n).kindU.S6.sons->data[i_473216]));
				res_473222 += ((NI) 1);
			} LA17: ;
		}
	}
	closescope_472182(c);
	return result;
}

N_NIMCALL(Tnode225809*, semtemplbodysons_473352)(Templctx472056* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = n;
	{
		NI i_473377;
		NI HEX3Atmp_473381;
		NI LOC2;
		NI res_473384;
		i_473377 = 0;
		HEX3Atmp_473381 = 0;
		LOC2 = 0;
		LOC2 = len_226098(n);
		HEX3Atmp_473381 = (LOC2 - 1);
		res_473384 = ((NI) 0);
		{
			while (1) {
				if (!(res_473384 <= HEX3Atmp_473381)) goto LA4;
				i_473377 = res_473384;
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_473377]), semtemplbody_472170(c, (*n).kindU.S6.sons->data[i_473377]));
				res_473384 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

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

N_NIMCALL(Tnode225809*, semtemplbody_472170)(Templctx472056* c, Tnode225809* n) {
	Tnode225809* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym225841* s;
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = contains_222829((*c).toinject, (*(*n).kindU.S5.ident).Sup.id);
			if (!LOC4) goto LA5;
			result = n;
			goto BeforeRet;
		}
		LA5: ;
		s = qualifiedlookup_286864((*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_227338(s, (*n).info);
			}
			goto LA11;
			LA15: ;
			{
				NIM_BOOL LOC18;
				LOC18 = 0;
				LOC18 = contains_222829((*c).tobind, (*s).Sup.id);
				if (!LOC18) goto LA19;
				result = symchoice_471790((*c).c, n, s, ((NU8) 0));
			}
			goto LA11;
			LA19: ;
			{
				NIM_BOOL LOC22;
				LOC22 = 0;
				LOC22 = contains_222829((*c).tomixin, (*(*s).name).Sup.id);
				if (!LOC22) goto LA23;
				result = symchoice_471790((*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_227338(s, (*n).info);
			}
			goto LA11;
			LA28: ;
			{
				result = semtemplsymbol_472811((*c).c, n, s);
			}
			LA11: ;
		}
		LA9: ;
	}
	break;
	case ((NU8) 55):
	{
		result = semtemplbody_472170(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_471895((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 123):
	{
		result = semmixinstmt_471995((*c).c, n, (&(*c).tomixin));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 92):
	{
		{
			NI i_474216;
			NI HEX3Atmp_475204;
			NI LOC37;
			NI res_475207;
			i_474216 = 0;
			HEX3Atmp_475204 = 0;
			LOC37 = 0;
			LOC37 = sonslen_228387(n);
			HEX3Atmp_475204 = (NI)(LOC37 - ((NI) 1));
			res_475207 = ((NI) 0);
			{
				while (1) {
					Tnode225809* it;
					if (!(res_475207 <= HEX3Atmp_475204)) goto LA39;
					i_474216 = res_475207;
					it = (*n).kindU.S6.sons->data[i_474216];
					{
						NI LOC42;
						LOC42 = 0;
						LOC42 = len_226098(it);
						if (!(LOC42 == ((NI) 2))) goto LA43;
						openscope_472175(c);
						asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), semtemplbody_472170(c, (*it).kindU.S6.sons->data[((NI) 0)]));
						asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), semtemplbody_472170(c, (*it).kindU.S6.sons->data[((NI) 1)]));
						closescope_472182(c);
					}
					goto LA40;
					LA43: ;
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_474216]), semtemplbodyscope_472189(c, it));
					}
					LA40: ;
					res_475207 += ((NI) 1);
				} LA39: ;
			}
		}
	}
	break;
	case ((NU8) 96):
	{
		openscope_472175(c);
		{
			NI i_474616;
			NI HEX3Atmp_475212;
			NI LOC48;
			NI res_475215;
			i_474616 = 0;
			HEX3Atmp_475212 = 0;
			LOC48 = 0;
			LOC48 = sonslen_228387(n);
			HEX3Atmp_475212 = (NI)(LOC48 - ((NI) 1));
			res_475215 = ((NI) 0);
			{
				while (1) {
					if (!(res_475215 <= HEX3Atmp_475212)) goto LA50;
					i_474616 = res_475215;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_474616]), semtemplbody_472170(c, (*n).kindU.S6.sons->data[i_474616]));
					res_475215 += ((NI) 1);
				} LA50: ;
			}
		}
		closescope_472182(c);
	}
	break;
	case ((NU8) 97):
	{
		openscope_472175(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbody_472170(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_474633;
			NI HEX3Atmp_475228;
			NI LOC53;
			NI res_475231;
			i_474633 = 0;
			HEX3Atmp_475228 = 0;
			LOC53 = 0;
			LOC53 = sonslen_228387(n);
			HEX3Atmp_475228 = (NI)(LOC53 - ((NI) 1));
			res_475231 = ((NI) 1);
			{
				while (1) {
					Tnode225809* a;
					NI L;
					if (!(res_475231 <= HEX3Atmp_475228)) goto LA55;
					i_474633 = res_475231;
					a = (*n).kindU.S6.sons->data[i_474633];
					checkminsonslen_281270(a, ((NI) 1));
					L = sonslen_228387(a);
					{
						NI j_474649;
						NI HEX3Atmp_475221;
						NI res_475224;
						j_474649 = 0;
						HEX3Atmp_475221 = 0;
						HEX3Atmp_475221 = (NI)(L - ((NI) 2));
						res_475224 = ((NI) 0);
						{
							while (1) {
								if (!(res_475224 <= HEX3Atmp_475221)) goto LA58;
								j_474649 = res_475224;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_474649]), semtemplbody_472170(c, (*a).kindU.S6.sons->data[j_474649]));
								res_475224 += ((NI) 1);
							} LA58: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbodyscope_472189(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					res_475231 += ((NI) 1);
				} LA55: ;
			}
		}
		closescope_472182(c);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		NI L;
		L = sonslen_228387(n);
		openscope_472175(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semtemplbody_472170(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]));
		{
			NI i_474669;
			NI HEX3Atmp_475236;
			NI res_475239;
			i_474669 = 0;
			HEX3Atmp_475236 = 0;
			HEX3Atmp_475236 = (NI)(L - ((NI) 3));
			res_475239 = ((NI) 0);
			{
				while (1) {
					if (!(res_475239 <= HEX3Atmp_475236)) goto LA62;
					i_474669 = res_475239;
					addlocaldecl_472475(c, &(*n).kindU.S6.sons->data[i_474669], ((NU8) 21));
					res_475239 += ((NI) 1);
				} LA62: ;
			}
		}
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbody_472170(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
		closescope_472182(c);
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	case ((NU8) 129):
	{
		checksonslen_281260(n, ((NI) 2));
		openscope_472175(c);
		{
			Tsym225841* s;
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA66;
			s = newgensym_472443(((NU8) 22), (*n).kindU.S6.sons->data[((NI) 0)], c);
			addprelimdecl_286619((*c).c, s);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_227338(s, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
		}
		LA66: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semtemplbody_472170(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		closescope_472182(c);
	}
	break;
	case ((NU8) 106):
	{
		checkminsonslen_281270(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbodyscope_472189(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_474819;
			NI HEX3Atmp_475252;
			NI LOC70;
			NI res_475255;
			i_474819 = 0;
			HEX3Atmp_475252 = 0;
			LOC70 = 0;
			LOC70 = sonslen_228387(n);
			HEX3Atmp_475252 = (NI)(LOC70 - ((NI) 1));
			res_475255 = ((NI) 1);
			{
				while (1) {
					Tnode225809* a;
					NI L;
					if (!(res_475255 <= HEX3Atmp_475252)) goto LA72;
					i_474819 = res_475255;
					a = (*n).kindU.S6.sons->data[i_474819];
					checkminsonslen_281270(a, ((NI) 1));
					L = sonslen_228387(a);
					{
						NI j_474835;
						NI HEX3Atmp_475245;
						NI res_475248;
						j_474835 = 0;
						HEX3Atmp_475245 = 0;
						HEX3Atmp_475245 = (NI)(L - ((NI) 2));
						res_475248 = ((NI) 0);
						{
							while (1) {
								if (!(res_475248 <= HEX3Atmp_475245)) goto LA75;
								j_474835 = res_475248;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_474835]), semtemplbody_472170(c, (*a).kindU.S6.sons->data[j_474835]));
								res_475248 += ((NI) 1);
							} LA75: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbodyscope_472189(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					res_475255 += ((NI) 1);
				} LA72: ;
			}
		}
	}
	break;
	case ((NU8) 99):
	{
		semtemplsomedecl_473238(c, n, ((NU8) 8), ((NI) 0));
	}
	break;
	case ((NU8) 100):
	{
		semtemplsomedecl_473238(c, n, ((NU8) 9), ((NI) 0));
	}
	break;
	case ((NU8) 76):
	{
		checkminsonslen_281270(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbody_472170(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		semtemplsomedecl_473238(c, n, ((NU8) 3), ((NI) 1));
	}
	break;
	case ((NU8) 101):
	{
		{
			NI i_474854;
			NI HEX3Atmp_475261;
			NI LOC81;
			NI res_475264;
			i_474854 = 0;
			HEX3Atmp_475261 = 0;
			LOC81 = 0;
			LOC81 = sonslen_228387(n);
			HEX3Atmp_475261 = (NI)(LOC81 - ((NI) 1));
			res_475264 = ((NI) 0);
			{
				while (1) {
					if (!(res_475264 <= HEX3Atmp_475261)) goto LA83;
					i_474854 = res_475264;
					{
						Tnode225809* a;
						a = (*n).kindU.S6.sons->data[i_474854];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA87;
							goto LA84;
						}
						LA87: ;
						{
							if (!!(((*a).kind == ((NU8) 102)))) goto LA91;
							illformedast_281240(a);
						}
						LA91: ;
						checksonslen_281260(a, ((NI) 3));
						addlocaldecl_472475(c, &(*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 10));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semtemplbody_472170(c, (*a).kindU.S6.sons->data[((NI) 1)]));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_472170(c, (*a).kindU.S6.sons->data[((NI) 2)]));
					} LA84: ;
					res_475264 += ((NI) 1);
				} LA83: ;
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		{
			NI i_474893;
			NI HEX3Atmp_475270;
			NI LOC95;
			NI res_475273;
			i_474893 = 0;
			HEX3Atmp_475270 = 0;
			LOC95 = 0;
			LOC95 = sonslen_228387(n);
			HEX3Atmp_475270 = (NI)(LOC95 - ((NI) 1));
			res_475273 = ((NI) 0);
			{
				while (1) {
					if (!(res_475273 <= HEX3Atmp_475270)) goto LA97;
					i_474893 = res_475273;
					{
						Tnode225809* a;
						a = (*n).kindU.S6.sons->data[i_474893];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA101;
							goto LA98;
						}
						LA101: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA105;
							illformedast_281240(a);
						}
						LA105: ;
						checksonslen_281260(a, ((NI) 3));
						addlocaldecl_472475(c, &(*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 7));
					} LA98: ;
					res_475273 += ((NI) 1);
				} LA97: ;
			}
		}
		{
			NI i_474928;
			NI HEX3Atmp_475279;
			NI LOC108;
			NI res_475282;
			i_474928 = 0;
			HEX3Atmp_475279 = 0;
			LOC108 = 0;
			LOC108 = sonslen_228387(n);
			HEX3Atmp_475279 = (NI)(LOC108 - ((NI) 1));
			res_475282 = ((NI) 0);
			{
				while (1) {
					if (!(res_475282 <= HEX3Atmp_475279)) goto LA110;
					i_474928 = res_475282;
					{
						Tnode225809* a;
						a = (*n).kindU.S6.sons->data[i_474928];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA114;
							goto LA111;
						}
						LA114: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA118;
							illformedast_281240(a);
						}
						LA118: ;
						checksonslen_281260(a, ((NI) 3));
						{
							if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA122;
							openscope_472175(c);
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semtemplbody_472170(c, (*a).kindU.S6.sons->data[((NI) 1)]));
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_472170(c, (*a).kindU.S6.sons->data[((NI) 2)]));
							closescope_472182(c);
						}
						goto LA120;
						LA122: ;
						{
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_472170(c, (*a).kindU.S6.sons->data[((NI) 2)]));
						}
						LA120: ;
					} LA111: ;
					res_475282 += ((NI) 1);
				} LA110: ;
			}
		}
	}
	break;
	case ((NU8) 79):
	case ((NU8) 51):
	case ((NU8) 52):
	{
		result = semroutineintemplbody_473036(c, n, ((NU8) 12));
	}
	break;
	case ((NU8) 80):
	{
		result = semroutineintemplbody_473036(c, n, ((NU8) 13));
	}
	break;
	case ((NU8) 84):
	{
		NU8 kind;
		{
			Tnode225809* LOC130;
			NIM_BOOL LOC131;
			LOC130 = 0;
			LOC130 = HEX5BHEX5D_226244(n, ((NI) 4));
			LOC131 = 0;
			LOC131 = haspragma_300952(LOC130, ((NU16) 139));
			if (!LOC131) goto LA132;
			kind = ((NU8) 15);
		}
		goto LA128;
		LA132: ;
		{
			kind = ((NU8) 14);
		}
		LA128: ;
		result = semroutineintemplbody_473036(c, n, kind);
	}
	break;
	case ((NU8) 83):
	{
		result = semroutineintemplbody_473036(c, n, ((NU8) 18));
	}
	break;
	case ((NU8) 82):
	{
		result = semroutineintemplbody_473036(c, n, ((NU8) 17));
	}
	break;
	case ((NU8) 81):
	{
		result = semroutineintemplbody_473036(c, n, ((NU8) 16));
	}
	break;
	case ((NU8) 43):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), semtemplbody_472170(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	break;
	case ((NU8) 31):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semtemplbody_472170(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	}
	break;
	case ((NU8) 90):
	{
		result = onlyreplaceparams_472198(c, n);
	}
	break;
	case ((NU8) 42):
	{
		Tident198021* LOC142;
		Tnode225809* LOC143;
		Tnode225809* n0;
		Tnode225809* old_475003;
		result = newnodei_227351(((NU8) 27), (*n).info);
		LOC142 = 0;
		LOC142 = getident_198463(((NimStringDesc*) &TMP3119));
		LOC143 = 0;
		LOC143 = newidentnode_227313(LOC142, (*n).info);
		add_226165(result, LOC143);
		{
			NI i_474998;
			Slice90370 HEX3Atmp_475287;
			NI LOC145;
			i_474998 = 0;
			memset((void*)(&HEX3Atmp_475287), 0, sizeof(HEX3Atmp_475287));
			LOC145 = 0;
			LOC145 = len_226098(n);
			HEX3Atmp_475287 = HEX2EHEX2E_105290(((NI) 0), (LOC145 - 1));
			{
				NI x_475291;
				NI HEX3Atmp_475293;
				NI HEX3Atmp_475295;
				NI res_475297;
				x_475291 = 0;
				HEX3Atmp_475293 = 0;
				HEX3Atmp_475295 = 0;
				HEX3Atmp_475293 = HEX3Atmp_475287.a;
				HEX3Atmp_475295 = HEX3Atmp_475287.b;
				res_475297 = HEX3Atmp_475293;
				{
					while (1) {
						Tnode225809* LOC149;
						if (!(res_475297 <= HEX3Atmp_475295)) goto LA148;
						x_475291 = res_475297;
						i_474998 = x_475291;
						LOC149 = 0;
						LOC149 = HEX5BHEX5D_226244(n, i_474998);
						add_226165(result, LOC149);
						res_475297 += ((NI) 1);
					} LA148: ;
				}
			}
		}
		n0 = semtemplbody_472170(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		old_475003 = (*c).bracketexpr;
		unsureAsgnRef((void**) (&(*c).bracketexpr), n0);
		result = semtemplbodysons_473352(c, result);
		unsureAsgnRef((void**) (&(*c).bracketexpr), old_475003);
	}
	break;
	case ((NU8) 40):
	{
		Tident198021* LOC151;
		Tnode225809* LOC152;
		result = newnodei_227351(((NU8) 27), (*n).info);
		LOC151 = 0;
		LOC151 = getident_198463(((NimStringDesc*) &TMP3141));
		LOC152 = 0;
		LOC152 = newidentnode_227313(LOC151, (*n).info);
		add_226165(result, LOC152);
		{
			NI i_475032;
			Slice90370 HEX3Atmp_475302;
			NI LOC154;
			i_475032 = 0;
			memset((void*)(&HEX3Atmp_475302), 0, sizeof(HEX3Atmp_475302));
			LOC154 = 0;
			LOC154 = len_226098(n);
			HEX3Atmp_475302 = HEX2EHEX2E_105290(((NI) 0), (LOC154 - 1));
			{
				NI x_475306;
				NI HEX3Atmp_475308;
				NI HEX3Atmp_475310;
				NI res_475312;
				x_475306 = 0;
				HEX3Atmp_475308 = 0;
				HEX3Atmp_475310 = 0;
				HEX3Atmp_475308 = HEX3Atmp_475302.a;
				HEX3Atmp_475310 = HEX3Atmp_475302.b;
				res_475312 = HEX3Atmp_475308;
				{
					while (1) {
						Tnode225809* LOC158;
						if (!(res_475312 <= HEX3Atmp_475310)) goto LA157;
						x_475306 = res_475312;
						i_475032 = x_475306;
						LOC158 = 0;
						LOC158 = HEX5BHEX5D_226244(n, i_475032);
						add_226165(result, LOC158);
						res_475312 += ((NI) 1);
					} LA157: ;
				}
			}
		}
		result = semtemplbodysons_473352(c, result);
	}
	break;
	case ((NU8) 73):
	case ((NU8) 74):
	{
		Tnode225809* a;
		Tnode225809* b;
		NU8 k;
		checksonslen_281260(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):
		{
			Tident198021* LOC161;
			Tnode225809* LOC162;
			Tnode225809* a0;
			Tnode225809* old_475073;
			result = newnodei_227351(((NU8) 27), (*n).info);
			LOC161 = 0;
			LOC161 = getident_198463(((NimStringDesc*) &TMP3143));
			LOC162 = 0;
			LOC162 = newidentnode_227313(LOC161, (*n).info);
			add_226165(result, LOC162);
			{
				NI i_475067;
				Slice90370 HEX3Atmp_475317;
				NI LOC164;
				i_475067 = 0;
				memset((void*)(&HEX3Atmp_475317), 0, sizeof(HEX3Atmp_475317));
				LOC164 = 0;
				LOC164 = len_226098(a);
				HEX3Atmp_475317 = HEX2EHEX2E_105290(((NI) 0), (LOC164 - 1));
				{
					NI x_475321;
					NI HEX3Atmp_475323;
					NI HEX3Atmp_475325;
					NI res_475327;
					x_475321 = 0;
					HEX3Atmp_475323 = 0;
					HEX3Atmp_475325 = 0;
					HEX3Atmp_475323 = HEX3Atmp_475317.a;
					HEX3Atmp_475325 = HEX3Atmp_475317.b;
					res_475327 = HEX3Atmp_475323;
					{
						while (1) {
							Tnode225809* LOC168;
							if (!(res_475327 <= HEX3Atmp_475325)) goto LA167;
							x_475321 = res_475327;
							i_475067 = x_475321;
							LOC168 = 0;
							LOC168 = HEX5BHEX5D_226244(a, i_475067);
							add_226165(result, LOC168);
							res_475327 += ((NI) 1);
						} LA167: ;
					}
				}
			}
			add_226165(result, b);
			a0 = semtemplbody_472170(c, (*a).kindU.S6.sons->data[((NI) 0)]);
			old_475073 = (*c).bracketexpr;
			unsureAsgnRef((void**) (&(*c).bracketexpr), a0);
			result = semtemplbodysons_473352(c, result);
			unsureAsgnRef((void**) (&(*c).bracketexpr), old_475073);
		}
		break;
		case ((NU8) 40):
		{
			Tident198021* LOC170;
			Tnode225809* LOC171;
			result = newnodei_227351(((NU8) 27), (*n).info);
			LOC170 = 0;
			LOC170 = getident_198463(((NimStringDesc*) &TMP3142));
			LOC171 = 0;
			LOC171 = newidentnode_227313(LOC170, (*n).info);
			add_226165(result, LOC171);
			{
				NI i_475102;
				Slice90370 HEX3Atmp_475332;
				NI LOC173;
				i_475102 = 0;
				memset((void*)(&HEX3Atmp_475332), 0, sizeof(HEX3Atmp_475332));
				LOC173 = 0;
				LOC173 = len_226098(a);
				HEX3Atmp_475332 = HEX2EHEX2E_105290(((NI) 0), (LOC173 - 1));
				{
					NI x_475336;
					NI HEX3Atmp_475338;
					NI HEX3Atmp_475340;
					NI res_475342;
					x_475336 = 0;
					HEX3Atmp_475338 = 0;
					HEX3Atmp_475340 = 0;
					HEX3Atmp_475338 = HEX3Atmp_475332.a;
					HEX3Atmp_475340 = HEX3Atmp_475332.b;
					res_475342 = HEX3Atmp_475338;
					{
						while (1) {
							Tnode225809* LOC177;
							if (!(res_475342 <= HEX3Atmp_475340)) goto LA176;
							x_475336 = res_475342;
							i_475102 = x_475336;
							LOC177 = 0;
							LOC177 = HEX5BHEX5D_226244(a, i_475102);
							add_226165(result, LOC177);
							res_475342 += ((NI) 1);
						} LA176: ;
					}
				}
			}
			add_226165(result, b);
			result = semtemplbodysons_473352(c, result);
		}
		break;
		default:
		{
			result = semtemplbodysons_473352(c, n);
		}
		break;
		}
	}
	break;
	case ((NU8) 26) ... ((NU8) 30):
	case ((NU8) 32):
	{
		result = semtemplbodysons_473352(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_226098(n);
			LOC183 = (LOC185 == ((NI) 2));
			LA184: ;
			LOC182 = LOC183;
			if (!(LOC182)) goto LA186;
			LOC182 = oprisroof_473639((*n).kindU.S6.sons->data[((NI) 0)]);
			LA186: ;
			if (!LOC182) goto LA187;
			add_226165(result, (*c).bracketexpr);
		}
		LA187: ;
	}
	break;
	case ((NU8) 45):
	case ((NU8) 53):
	{
		Tsym225841* s;
		s = qualifiedlookup_286864((*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_226098(n);
				LOC196 = (LOC202 == ((NI) 1));
				LA201: ;
				if (!LOC196) goto LA203;
				(*s).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
				result = newsymnode_227338(s, (*n).info);
				goto BeforeRet;
			}
			goto LA194;
			LA203: ;
			{
				NIM_BOOL LOC206;
				LOC206 = 0;
				LOC206 = contains_222829((*c).tobind, (*s).Sup.id);
				if (!LOC206) goto LA207;
				result = symchoice_471790((*c).c, n, s, ((NU8) 0));
				goto BeforeRet;
			}
			goto LA194;
			LA207: ;
			{
				NIM_BOOL LOC210;
				LOC210 = 0;
				LOC210 = contains_222829((*c).tomixin, (*(*s).name).Sup.id);
				if (!LOC210) goto LA211;
				result = symchoice_471790((*c).c, n, s, ((NU8) 2));
				goto BeforeRet;
			}
			goto LA194;
			LA211: ;
			{
				result = symchoice_471790((*c).c, n, s, ((NU8) 1));
				goto BeforeRet;
			}
			LA194: ;
		}
		LA192: ;
		result = semtemplbodysons_473352(c, n);
	}
	break;
	default:
	{
		result = semtemplbodysons_473352(c, n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semtemplatedef_475709)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tsym225841* s;
	Tscope225835* LOC7;
	Tnode225809* gp;
	Templctx472056 ctx;
	Tsym225841* proto;
	result = 0;
	s = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_281280(c);
		if (!LOC3) goto LA4;
		s = semidentvis_457962(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_457962(c, ((NU8) 18), (*n).kindU.S6.sons->data[((NI) 0)], 0);
	}
	LA1: ;
	pushowner_280263(s);
	LOC7 = 0;
	LOC7 = openscope_286091(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_227338(s, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA10;
		pragma_297082(c, s, (*n).kindU.S6.sons->data[((NI) 4)], TMP3565);
	}
	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_471425(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA12;
	LA14: ;
	{
		gp = newnodei_227351(((NU8) 75), (*n).info);
	}
	LA12: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA19;
		semparamlist_457284(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NI i_475851;
			NI HEX3Atmp_476050;
			NI LOC22;
			NI res_476053;
			i_475851 = 0;
			HEX3Atmp_476050 = 0;
			LOC22 = 0;
			LOC22 = len_226098((*(*s).typ).n);
			HEX3Atmp_476050 = (NI)(LOC22 - ((NI) 1));
			res_476053 = ((NI) 1);
			{
				while (1) {
					if (!(res_476053 <= HEX3Atmp_476050)) goto LA24;
					i_475851 = res_476053;
					(*(*(*(*(*s).typ).n).kindU.S6.sons->data[i_475851]).kindU.S4.sym).flags &= ~(((NU32)1) << ((((NU8) 31)) % (sizeof(NU32)*8)));
					res_476053 += ((NI) 1);
				} LA24: ;
			}
		}
		{
			NI LOC27;
			LOC27 = 0;
			LOC27 = sonslen_228387(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_280221(((NU8) 7), c));
			asgnRefNoCycle((void**) (&(*(*(*s).typ).n).kindU.S6.sons->data[((NI) 0)]), newnodeit_227807(((NU8) 4), (*n).info, (*(*s).typ).sons->data[((NI) 0)]));
		}
		LA36: ;
	}
	goto LA17;
	LA19: ;
	{
		Ttype225847* LOC39;
		Tnode225809* LOC40;
		asgnRefNoCycle((void**) (&(*s).typ), newtypes_280221(((NU8) 25), c));
		asgnRefNoCycle((void**) (&(*(*s).typ).n), newnodei_227351(((NU8) 76), (*n).info));
		LOC39 = 0;
		LOC39 = newtypes_280221(((NU8) 7), c);
		rawaddson_229498((*s).typ, LOC39);
		LOC40 = 0;
		LOC40 = newnodeit_227807(((NU8) 4), (*n).info, (*(*s).typ).sons->data[((NI) 0)]);
		addson_227819((*(*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_473348(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	}
	LA43: ;
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_222927((&ctx.tobind));
	initintset_222927((&ctx.tomixin));
	initintset_222927((&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_475496((&ctx), (*n).kindU.S6.sons->data[((NI) 6)]));
	}
	goto LA45;
	LA47: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semtemplbody_472170((&ctx), (*n).kindU.S6.sons->data[((NI) 6)]));
	}
	LA45: ;
	closescope_286111(c);
	popowner_280269();
	asgnRefNoCycle((void**) (&(*s).ast), n);
	result = n;
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1))) goto LA52;
		localerror_196128((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA52: ;
	proto = searchforproc_296278(c, (*c).currentscope, s);
	{
		if (!(proto == NIM_NIL)) goto LA56;
		addinterfaceoverloadablesymat_286746(c, (*c).currentscope, s);
	}
	goto LA54;
	LA56: ;
	{
		symtabreplace_237415((&(*(*c).currentscope).symbols), proto, s);
	}
	LA54: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA61;
		(*c).patterns = (Tsymseq225811*) incrSeqV2(&((*c).patterns)->Sup, sizeof(Tsym225841*));
		asgnRefNoCycle((void**) (&(*c).patterns->data[(*c).patterns->Sup.len]), s);
		++(*c).patterns->Sup.len;
	}
	LA61: ;
	return result;
}

N_NIMCALL(Tsym225841*, getmagicsym_499328)(NU8 magic) {
	Tsym225841* result;
	Tident198021* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_198463(reprEnum(magic, (&NTI225534)));
	result = newsym_226656(((NU8) 12), LOC1, systemmodule_274019, gcodegenlineinfo_191361);
	(*result).magic = magic;
	return result;
}

N_NIMCALL(Tnode225809*, semquoteast_457334)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* doblk;
	NI LOC10;
	NimStringDesc* op;
	Tnodeseq225803* quotes;
	Tnodeseq225803* ids;
	Tsym225841* LOC28;
	Tsym225841* LOC29;
	Tnode225809* tmpl;
	Tnodeseq225803* LOC41;
	TY281106 LOC42;
	Tsym225841* LOC43;
	result = 0;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NI LOC6;
		NimStringDesc* LOC9;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = len_226098(n);
		LOC3 = (LOC4 == ((NI) 2));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = len_226098(n);
		LOC3 = (LOC6 == ((NI) 3));
		LA5: ;
		if (!!(LOC3)) goto LA7;
		LOC9 = 0;
		LOC9 = HEX24_196279(TMP3560);
		internalerror_196191(LOC9);
	}
	LA7: ;
	LOC10 = 0;
	{
		if (!NIM_FALSE) goto LA13;
		LOC10 = ((NI) -1);
	}
	goto LA11;
	LA13: ;
	{
		NI LOC16;
		LOC16 = 0;
		LOC16 = len_226098(n);
		LOC10 = (NI)(LOC16 + ((NI) -1));
	}
	LA11: ;
	doblk = HEX5BHEX5D_226244(n, LOC10);
	{
		NI LOC19;
		Tnode225809* LOC22;
		LOC19 = 0;
		LOC19 = len_226098(n);
		if (!(LOC19 == ((NI) 3))) goto LA20;
		LOC22 = 0;
		LOC22 = HEX5BHEX5D_226244(n, ((NI) 1));
		op = expectstring_499308(c, LOC22);
	}
	goto LA17;
	LA20: ;
	{
		op = copyString(((NimStringDesc*) &TMP3561));
	}
	LA17: ;
	quotes = newseq_499862(((NI) 1));
	ids = newseq_499862(((NI) 0));
	{
		if (!!(((*doblk).kind == ((NU8) 52)))) goto LA26;
		localerror_196128((*n).info, ((NU16) 193), ((NimStringDesc*) &TMP3562));
	}
	LA26: ;
	processquotations_499682(&(*doblk).kindU.S6.sons->data[((NI) 6)], op, (&quotes), (&ids));
	LOC28 = 0;
	LOC28 = getcurrowner_280258();
	LOC29 = 0;
	LOC29 = newanonsym_499343(((NU8) 18), (*n).info, LOC28);
	asgnRefNoCycle((void**) (&(*doblk).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325(LOC29));
	{
		Tnode225809* LOC34;
		Tsym225841* LOC35;
		Tnode225809* LOC36;
		Tsym225841* LOC37;
		Tnode225809* LOC38;
		Tnode225809* LOC39;
		Tnode225809* LOC40;
		if (!(((NI) 0) < (ids ? ids->Sup.len : 0))) goto LA32;
		asgnRefNoCycle((void**) (&(*doblk).kindU.S6.sons->data[((NI) 3)]), newnodei_227351(((NU8) 76), (*n).info));
		LOC34 = 0;
		LOC34 = HEX5BHEX5D_226244(doblk, ((NI) 3));
		LOC35 = 0;
		LOC35 = getsyssym_274077(((NimStringDesc*) &TMP3563));
		LOC36 = 0;
		LOC36 = newsymnode_227325(LOC35);
		add_226165(LOC34, LOC36);
		LOC37 = 0;
		LOC37 = getsyssym_274077(((NimStringDesc*) &TMP3564));
		LOC38 = 0;
		LOC38 = newsymnode_227325(LOC37);
		ids = (Tnodeseq225803*) incrSeqV2(&(ids)->Sup, sizeof(Tnode225809*));
		asgnRefNoCycle((void**) (&ids->data[ids->Sup.len]), LOC38);
		++ids->Sup.len;
		ids = (Tnodeseq225803*) incrSeqV2(&(ids)->Sup, sizeof(Tnode225809*));
		asgnRefNoCycle((void**) (&ids->data[ids->Sup.len]), emptynode_226807);
		++ids->Sup.len;
		LOC39 = 0;
		LOC39 = HEX5BHEX5D_226244(doblk, ((NI) 3));
		LOC40 = 0;
		LOC40 = newnode_227607(((NU8) 35), (*n).info, ids, NIM_NIL);
		add_226165(LOC39, LOC40);
	}
	LA32: ;
	tmpl = semtemplatedef_475709(c, doblk);
	asgnRefNoCycle((void**) (&quotes->data[((NI) 0)]), HEX5BHEX5D_226244(tmpl, ((NI) 0)));
	LOC41 = 0;
	LOC41 = (Tnodeseq225803*) newSeq((&NTI225803), 2);
	memset((void*)LOC42, 0, sizeof(LOC42));
	LOC43 = 0;
	LOC43 = getmagicsym_499328(((NU8) 23));
	LOC42[0] = newsymnode_227325(LOC43);
	LOC42[1] = newnode_227607(((NU8) 27), (*n).info, quotes, NIM_NIL);
	asgnRefNoCycle((void**) (&LOC41->data[0]), LOC42[0]);
	asgnRefNoCycle((void**) (&LOC41->data[1]), LOC42[1]);
	result = newnode_227607(((NU8) 27), (*n).info, LOC41, NIM_NIL);
	result = semexpandtoast_499430(c, result);
	return result;
}

N_NIMCALL(Ttype225847*, createflowvar_500119)(Tcontext280023* c, Ttype225847* t, Tlineinfo190352 info) {
	Ttype225847* result;
	Tsym225841* LOC1;
	result = 0;
	result = newtype_228140(((NU8) 9), (*c).module);
	LOC1 = 0;
	LOC1 = getcompilerproc_274809(((NimStringDesc*) &TMP3569));
	addsonskipintlit_274729(result, (*LOC1).typ);
	addsonskipintlit_274729(result, t);
	result = instgenericcontainer_460151(c, info, result, NIM_FALSE);
	return result;
}

N_NIMCALL(Tsym225841*, instantiatecreateflowvarcall_500129)(Tcontext280023* c, Ttype225847* t, Tlineinfo190352 info) {
	Tsym225841* result;
	Tsym225841* sym;
	Tidtable225859 bindings;
	Tnode225809* LOC5;
	Tidobj198015* LOC6;
	TNimObject* LOC7;
	result = 0;
	sym = getcompilerproc_274809(((NimStringDesc*) &TMP3570));
	{
		if (!(sym == NIM_NIL)) goto LA3;
		localerror_196128(info, ((NU16) 68), ((NimStringDesc*) &TMP3570));
	}
	LA3: ;
	memset((void*)(&bindings), 0, sizeof(bindings));
	initidtable_229057((&bindings));
	LOC5 = 0;
	LOC5 = HEX5BHEX5D_226244((*sym).ast, ((NI) 2));
	LOC6 = 0;
	LOC6 = &(*(*LOC5).kindU.S6.sons->data[((NI) 0)]).typ->Sup;
	LOC7 = 0;
	LOC7 = &t->Sup.Sup;
	idtableput_233196((&bindings), LOC6, LOC7);
	result = (*c).semgenerateinstance.ClEnv? (*c).semgenerateinstance.ClPrc(c, sym, bindings, info, (*c).semgenerateinstance.ClEnv):((TMP3571)((*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(Tnode225809*, semmagic_500194)(Tcontext280023* c, Tnode225809* n, Tsym225841* s, NU16 flags) {
	Tnode225809* result;
	result = 0;
	result = n;
	switch ((*s).magic) {
	case ((NU8) 13):
	{
		checksonslen_281260(n, ((NI) 2));
		result = semaddr_495250(c, (*n).kindU.S6.sons->data[((NI) 1)], eqStrings((*(*s).name).s, ((NimStringDesc*) &TMP3340)));
	}
	break;
	case ((NU8) 14):
	{
		checksonslen_281260(n, ((NI) 2));
		result = semtypeof_495293(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 1):
	{
		Tnode225809* LOC4;
		LOC4 = 0;
		LOC4 = setms_500184(n, s);
		result = semdefined_499236(c, LOC4, NIM_FALSE);
	}
	break;
	case ((NU8) 2):
	{
		Tnode225809* LOC6;
		LOC6 = 0;
		LOC6 = setms_500184(n, s);
		result = semdefined_499236(c, LOC6, NIM_TRUE);
	}
	break;
	case ((NU8) 3):
	{
		Tnode225809* LOC8;
		LOC8 = 0;
		LOC8 = setms_500184(n, s);
		result = semcompiles_500079(c, LOC8, flags);
	}
	break;
	case ((NU8) 7):
	{
		Tnode225809* LOC10;
		LOC10 = 0;
		LOC10 = setms_500184(n, s);
		result = semlowhigh_493837(c, LOC10, ((NU8) 7));
	}
	break;
	case ((NU8) 8):
	{
		Tnode225809* LOC12;
		LOC12 = 0;
		LOC12 = setms_500184(n, s);
		result = semlowhigh_493837(c, LOC12, ((NU8) 8));
	}
	break;
	case ((NU8) 9):
	{
		Tnode225809* LOC14;
		LOC14 = 0;
		LOC14 = setms_500184(n, s);
		result = semsizeof_493884(c, LOC14);
	}
	break;
	case ((NU8) 11):
	{
		Tnode225809* LOC16;
		LOC16 = 0;
		LOC16 = setms_500184(n, s);
		result = semis_494107(c, LOC16);
	}
	break;
	case ((NU8) 12):
	{
		Tnode225809* LOC18;
		LOC18 = 0;
		LOC18 = setms_500184(n, s);
		result = semof_493895(c, LOC18);
	}
	break;
	case ((NU8) 18):
	{
		result = semshallowcopy_495661(c, n, flags);
	}
	break;
	case ((NU8) 23):
	{
		result = semexpandtoast_499669(c, n, s, flags);
	}
	break;
	case ((NU8) 24):
	{
		result = semquoteast_457334(c, n);
	}
	break;
	case ((NU8) 153):
	{
		Tnode225809* LOC23;
		NimStringDesc* LOC24;
		checksonslen_281260(n, ((NI) 2));
		LOC23 = 0;
		LOC23 = HEX5BHEX5D_226244(n, ((NI) 1));
		LOC24 = 0;
		LOC24 = rendertree_247059(LOC23, 4);
		result = newstrnodet_293042(LOC24, n);
		asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 28)));
	}
	break;
	case ((NU8) 154):
	{
		Tnode225809* x;
		{
			NIM_BOOL LOC28;
			LOC28 = 0;
			LOC28 = experimentalmode_281290(c);
			if (!!(LOC28)) goto LA29;
			localerror_196139((*n).info, ((NimStringDesc*) &TMP3566));
		}
		LA29: ;
		result = setms_500184(n, s);
		x = lastson_228406(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_457277(c, x));
		(*c).inparallelstmt -= ((NI) 1);
	}
	break;
	case ((NU8) 201):
	{
		Ttype225847* typ;
		NI LOC40;
		Tnode225809* LOC41;
		result = setms_500184(n, s);
		{
			NI i_500256;
			NI HEX3Atmp_500276;
			NI LOC37;
			NI res_500279;
			i_500256 = 0;
			HEX3Atmp_500276 = 0;
			LOC37 = 0;
			LOC37 = len_226098(n);
			HEX3Atmp_500276 = (LOC37 - 1);
			res_500279 = ((NI) 1);
			{
				while (1) {
					if (!(res_500279 <= HEX3Atmp_500276)) goto LA39;
					i_500256 = res_500279;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_500256]), semexpr_457201(c, (*n).kindU.S6.sons->data[i_500256], 0));
					res_500279 += ((NI) 1);
				} LA39: ;
			}
		}
		LOC40 = 0;
		LOC40 = len_226098(result);
		LOC41 = 0;
		LOC41 = HEX5BHEX5D_226244(result, (NI)(LOC40 - ((NI) 1)));
		typ = (*LOC41).typ;
		{
			NIM_BOOL LOC44;
			Tsym225841* LOC53;
			Tnode225809* LOC54;
			LOC44 = 0;
			LOC44 = isemptytype_230932(typ);
			if (!!(LOC44)) goto LA45;
			{
				NU8 LOC49;
				LOC49 = 0;
				LOC49 = spawnresult_404208(typ, (((NI) 0) < (*c).inparallelstmt));
				if (!(LOC49 == ((NU8) 1))) goto LA50;
				asgnRefNoCycle((void**) (&(*result).typ), createflowvar_500119(c, typ, (*n).info));
			}
			goto LA47;
			LA50: ;
			{
				asgnRefNoCycle((void**) (&(*result).typ), typ);
			}
			LA47: ;
			LOC53 = 0;
			LOC53 = instantiatecreateflowvarcall_500129(c, typ, (*n).info);
			LOC54 = 0;
			LOC54 = newsymnode_227325(LOC53);
			add_226165(result, LOC54);
		}
		goto LA42;
		LA45: ;
		{
			add_226165(result, emptynode_226807);
		}
		LA42: ;
	}
	break;
	case ((NU8) 206):
	{
		Tnode225809* LOC57;
		result = setms_500184(n, s);
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semexpr_457201(c, (*n).kindU.S6.sons->data[((NI) 1)], 0));
		LOC57 = 0;
		LOC57 = HEX5BHEX5D_226244(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*result).typ), (*LOC57).typ);
	}
	break;
	default:
	{
		result = semdirectop_458039(c, n, flags);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, semopaux_494150)(Tcontext280023* c, Tnode225809* n) {
	{
		NI i_494169;
		NI HEX3Atmp_494190;
		NI LOC2;
		NI res_494193;
		i_494169 = 0;
		HEX3Atmp_494190 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_494190 = (NI)(LOC2 - ((NI) 1));
		res_494193 = ((NI) 1);
		{
			while (1) {
				Tnode225809* a;
				if (!(res_494193 <= HEX3Atmp_494190)) goto LA4;
				i_494169 = res_494193;
				a = (*n).kindU.S6.sons->data[i_494169];
				{
					NIM_BOOL LOC7;
					NI LOC9;
					Tlineinfo190352 info;
					Tident198021* LOC12;
					LOC7 = 0;
					LOC7 = ((*a).kind == ((NU8) 33));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = sonslen_228387(a);
					LOC7 = (LOC9 == ((NI) 2));
					LA8: ;
					if (!LOC7) goto LA10;
					info = (*(*a).kindU.S6.sons->data[((NI) 0)]).info;
					LOC12 = 0;
					LOC12 = considerquotedident_286010((*a).kindU.S6.sons->data[((NI) 0)]);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newidentnode_227313(LOC12, info));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_457211(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_494169]), semexprwithtype_457211(c, a, 32));
				}
				LA5: ;
				res_494193 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, resolveindirectcall_496438)(Tcontext280023* c, Tnode225809* n, Tnode225809* norig, Ttype225847* t, Tcandidate388209* Result) {
	initcandidate_388278(c, Result, t);
	matches_394720(c, n, norig, Result);
	{
		if (!!(((*Result).state == ((NU8) 1)))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = experimentalmode_281290(c);
			if (!(LOC7)) goto LA8;
			LOC7 = canderef_463930(n);
			LA8: ;
			if (!LOC7) goto LA9;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), tryderef_463963((*n).kindU.S6.sons->data[((NI) 1)]));
			initcandidate_388278(c, Result, t);
			matches_394720(c, n, norig, Result);
		}
		LA9: ;
	}
	LA3: ;
}

N_NIMCALL(Tnode225809*, overloadedcallopr_494209)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tident198021* par;
	result = 0;
	par = getident_198463(((NimStringDesc*) &TMP3248));
	{
		Tsym225841* LOC3;
		LOC3 = 0;
		LOC3 = searchinscopes_286205(c, par);
		if (!(LOC3 == NIM_NIL)) goto LA4;
		result = NIM_NIL;
	}
	goto LA1;
	LA4: ;
	{
		Tnode225809* LOC7;
		result = newnodei_227351(((NU8) 27), (*n).info);
		LOC7 = 0;
		LOC7 = newidentnode_227313(par, (*n).info);
		addson_227819(result, LOC7);
		{
			NI i_494239;
			NI HEX3Atmp_494242;
			NI LOC9;
			NI res_494245;
			i_494239 = 0;
			HEX3Atmp_494242 = 0;
			LOC9 = 0;
			LOC9 = sonslen_228387(n);
			HEX3Atmp_494242 = (NI)(LOC9 - ((NI) 1));
			res_494245 = ((NI) 0);
			{
				while (1) {
					if (!(res_494245 <= HEX3Atmp_494242)) goto LA11;
					i_494239 = res_494245;
					addson_227819(result, (*n).kindU.S6.sons->data[i_494239]);
					res_494245 += ((NI) 1);
				} LA11: ;
			}
		}
		result = semexpr_457201(c, result, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, semindirectop_496464)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Tnode225809* prc;
	Tnode225809* norig;
	Ttype225847* t;
{	result = 0;
	result = NIM_NIL;
	checkminsonslen_281270(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_281260((*n).kindU.S6.sons->data[((NI) 0)], ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semfieldaccess_492014(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_496518;
				NI HEX3Atmp_496747;
				NI LOC10;
				NI res_496750;
				i_496518 = 0;
				HEX3Atmp_496747 = 0;
				LOC10 = 0;
				LOC10 = sonslen_228387(n);
				HEX3Atmp_496747 = (NI)(LOC10 - ((NI) 1));
				res_496750 = ((NI) 1);
				{
					while (1) {
						if (!(res_496750 <= HEX3Atmp_496747)) goto LA12;
						i_496518 = res_496750;
						addson_227819(result, (*n).kindU.S6.sons->data[i_496518]);
						res_496750 += ((NI) 1);
					} LA12: ;
				}
			}
			result = semexpr_457201(c, result, flags);
			goto BeforeRet;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		Ttype225847* t;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexpr_457201(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_402024((*n).kindU.S6.sons->data[((NI) 0)]));
		}
		LA18: ;
	}
	LA1: ;
	norig = copytree_230028(n);
	semopaux_494150(c, n);
	t = NIM_NIL;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).typ == NIM_NIL))) goto LA22;
		t = skiptypes_229167((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576000));
	}
	LA22: ;
	{
		NIM_BOOL LOC26;
		Tcandidate388209 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_496438(c, n, norig, t, (&m));
		{
			if (!!((m.state == ((NU8) 1)))) goto LA32;
			{
				if (!(((NI) 0) < (*c).compilescontextid)) goto LA36;
				globalerror_196107((*n).info, ((NU16) 133), ((NimStringDesc*) &TMP3117));
				result = emptynode_226807;
				goto BeforeRet;
			}
			goto LA34;
			LA36: ;
			{
				NIM_BOOL haserrortype;
				NimStringDesc* msg;
				haserrortype = NIM_FALSE;
				msg = msgkindtostring_192406(((NU16) 133));
				{
					NI i_496622;
					NI HEX3Atmp_496756;
					NI LOC40;
					NI res_496759;
					i_496622 = 0;
					HEX3Atmp_496756 = 0;
					LOC40 = 0;
					LOC40 = sonslen_228387(n);
					HEX3Atmp_496756 = (NI)(LOC40 - ((NI) 1));
					res_496759 = ((NI) 1);
					{
						while (1) {
							Ttype225847* nt;
							NimStringDesc* LOC47;
							if (!(res_496759 <= HEX3Atmp_496756)) goto LA42;
							i_496622 = res_496759;
							{
								if (!(((NI) 1) < i_496622)) goto LA45;
								msg = resizeString(msg, 2);
appendString(msg, ((NimStringDesc*) &TMP3510));
							}
							LA45: ;
							nt = (*(*n).kindU.S6.sons->data[i_496622]).typ;
							LOC47 = 0;
							LOC47 = typetostring_255032(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_496759 += ((NI) 1);
						} LA42: ;
					}
				} LA39: ;
				{
					NimStringDesc* LOC56;
					NimStringDesc* LOC57;
					NimStringDesc* LOC58;
					if (!!(haserrortype)) goto LA54;
					LOC56 = 0;
					LOC57 = 0;
					LOC57 = msgkindtostring_192406(((NU16) 134));
					LOC58 = 0;
					LOC58 = typetostring_255032((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, ((NU8) 0));
					LOC56 = rawNewString(LOC57->Sup.len + LOC58->Sup.len + 3);
appendString(LOC56, ((NimStringDesc*) &TMP3572));
appendString(LOC56, LOC57);
appendString(LOC56, ((NimStringDesc*) &TMP3513));
appendString(LOC56, LOC58);
					msg = resizeString(msg, LOC56->Sup.len + 0);
appendString(msg, LOC56);
					localerror_196128((*n).info, ((NU16) 4), msg);
				}
				LA54: ;
				result = errornode_281171(c, n);
				goto BeforeRet;
			}
			LA34: ;
			result = NIM_NIL;
		}
		goto LA30;
		LA32: ;
		{
			result = m.call;
			instgenericconverterssons_463312(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_226098(n);
			if (!(LOC71 == ((NI) 1))) goto LA72;
			result = semobjconstr_496433(c, n, flags);
			goto BeforeRet;
		}
		LA72: ;
		result = semconv_493710(c, n);
		goto BeforeRet;
	}
	goto LA24;
	LA67: ;
	{
		result = overloadedcallopr_494209(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_496293(c, n, norig, flags);
			{
				if (!(result == NIM_NIL)) goto LA81;
				result = errornode_281171(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_494616(c, result);
	analyseifaddresstakenincall_495052(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_495738(c, result, flags);
	}
	LA90: ;
	result = evalatcompiletime_495821(c, result);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, shouldbebracketexpr_501837)(Tnode225809* n) {
	NIM_BOOL result;
	Tnode225809* a;
{	result = 0;
	a = (*n).kindU.S6.sons->data[((NI) 0)];
	{
		Tnode225809* 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_226244(a, ((NI) 0));
		{
			if (!((*b).kind == ((NU8) 56) || (*b).kind == ((NU8) 57))) goto LA7;
			{
				NI i_502051;
				Slice90370 HEX3Atmp_502110;
				NI LOC10;
				i_502051 = 0;
				memset((void*)(&HEX3Atmp_502110), 0, sizeof(HEX3Atmp_502110));
				LOC10 = 0;
				LOC10 = len_226098(b);
				HEX3Atmp_502110 = HEX2EHEX2E_105290(((NI) 0), (LOC10 - 1));
				{
					NI x_502114;
					NI HEX3Atmp_502116;
					NI HEX3Atmp_502118;
					NI res_502120;
					x_502114 = 0;
					HEX3Atmp_502116 = 0;
					HEX3Atmp_502118 = 0;
					HEX3Atmp_502116 = HEX3Atmp_502110.a;
					HEX3Atmp_502118 = HEX3Atmp_502110.b;
					res_502120 = HEX3Atmp_502116;
					{
						while (1) {
							if (!(res_502120 <= HEX3Atmp_502118)) goto LA13;
							x_502114 = res_502120;
							i_502051 = x_502114;
							{
								Tnode225809* LOC16;
								Tnode225809* be;
								LOC16 = 0;
								LOC16 = HEX5BHEX5D_226244(b, i_502051);
								if (!((*(*LOC16).kindU.S4.sym).magic == ((NU8) 4))) goto LA17;
								be = newnodei_227351(((NU8) 42), (*n).info);
								{
									NI i_502091;
									Slice90370 HEX3Atmp_502096;
									NI LOC20;
									i_502091 = 0;
									memset((void*)(&HEX3Atmp_502096), 0, sizeof(HEX3Atmp_502096));
									LOC20 = 0;
									LOC20 = len_226098(a);
									HEX3Atmp_502096 = HEX2EHEX2E_105290(((NI) 1), (LOC20 - 1));
									{
										NI x_502100;
										NI HEX3Atmp_502102;
										NI HEX3Atmp_502104;
										NI res_502106;
										x_502100 = 0;
										HEX3Atmp_502102 = 0;
										HEX3Atmp_502104 = 0;
										HEX3Atmp_502102 = HEX3Atmp_502096.a;
										HEX3Atmp_502104 = HEX3Atmp_502096.b;
										res_502106 = HEX3Atmp_502102;
										{
											while (1) {
												Tnode225809* LOC24;
												if (!(res_502106 <= HEX3Atmp_502104)) goto LA23;
												x_502100 = res_502106;
												i_502091 = x_502100;
												LOC24 = 0;
												LOC24 = HEX5BHEX5D_226244(a, i_502091);
												add_226165(be, LOC24);
												res_502106 += ((NI) 1);
											} LA23: ;
										}
									}
								}
								asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), be);
								result = NIM_TRUE;
								goto BeforeRet;
							}
							LA17: ;
							res_502120 += ((NI) 1);
						} LA13: ;
					}
				}
			}
		}
		LA7: ;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, setgenericparams_502151)(Tcontext280023* c, Tnode225809* n) {
	{
		NI i_502174;
		NI HEX3Atmp_502176;
		NI LOC2;
		NI res_502179;
		i_502174 = 0;
		HEX3Atmp_502176 = 0;
		LOC2 = 0;
		LOC2 = len_226098(n);
		HEX3Atmp_502176 = (LOC2 - 1);
		res_502179 = ((NI) 1);
		{
			while (1) {
				Tnode225809* LOC5;
				Tnode225809* LOC6;
				if (!(res_502179 <= HEX3Atmp_502176)) goto LA4;
				i_502174 = res_502179;
				LOC5 = 0;
				LOC5 = HEX5BHEX5D_226244(n, i_502174);
				LOC6 = 0;
				LOC6 = HEX5BHEX5D_226244(n, i_502174);
				asgnRefNoCycle((void**) (&(*LOC5).typ), semtypenode_457269(c, LOC6, NIM_NIL));
				res_502179 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode225809*, semarrayaccess_498382)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Tnode225809* oldbracketexpr;
	result = 0;
	oldbracketexpr = (*(*c).p).bracketexpr;
	result = semsubscript_495315(c, n, flags);
	{
		Tident198021* LOC5;
		Tnode225809* LOC6;
		if (!(result == NIM_NIL)) goto LA3;
		LOC5 = 0;
		LOC5 = getident_198463(((NimStringDesc*) &TMP3573));
		LOC6 = 0;
		LOC6 = buildoverloadedsubscripts_498122(n, LOC5);
		result = semexpr_457201(c, LOC6, 0);
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
	return result;
}

N_NIMCALL(NU8, checkpar_500735)(Tnode225809* n) {
	NU8 result;
	NI length;
{	result = 0;
	length = sonslen_228387(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_500772;
			NI HEX3Atmp_500818;
			NI res_500821;
			i_500772 = 0;
			HEX3Atmp_500818 = 0;
			HEX3Atmp_500818 = (NI)(length - ((NI) 1));
			res_500821 = ((NI) 0);
			{
				while (1) {
					if (!(res_500821 <= HEX3Atmp_500818)) goto LA21;
					i_500772 = res_500821;
					{
						if (!(result == ((NU8) 2))) goto LA24;
						{
							NIM_BOOL LOC28;
							LOC28 = 0;
							LOC28 = !(((*(*n).kindU.S6.sons->data[i_500772]).kind == ((NU8) 34)));
							if (LOC28) goto LA29;
							LOC28 = !(((*(*(*n).kindU.S6.sons->data[i_500772]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3) || (*(*(*n).kindU.S6.sons->data[i_500772]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2)));
							LA29: ;
							if (!LOC28) goto LA30;
							localerror_196128((*(*n).kindU.S6.sons->data[i_500772]).info, ((NU16) 174), ((NimStringDesc*) &TMP3117));
							result = ((NU8) 0);
							goto BeforeRet;
						}
						LA30: ;
					}
					goto LA22;
					LA24: ;
					{
						{
							if (!((*(*n).kindU.S6.sons->data[i_500772]).kind == ((NU8) 34))) goto LA35;
							localerror_196128((*(*n).kindU.S6.sons->data[i_500772]).info, ((NU16) 175), ((NimStringDesc*) &TMP3117));
							result = ((NU8) 0);
							goto BeforeRet;
						}
						LA35: ;
					}
					LA22: ;
					res_500821 += ((NI) 1);
				} LA21: ;
			}
		}
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semtuplepositionsconstr_500949)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Ttype225847* typ;
	result = 0;
	result = n;
	typ = newtypes_280221(((NU8) 18), c);
	{
		NI i_500968;
		NI HEX3Atmp_500986;
		NI LOC2;
		NI res_500989;
		i_500968 = 0;
		HEX3Atmp_500986 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_500986 = (NI)(LOC2 - ((NI) 1));
		res_500989 = ((NI) 0);
		{
			while (1) {
				if (!(res_500989 <= HEX3Atmp_500986)) goto LA4;
				i_500968 = res_500989;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_500968]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[i_500968], (flags & 64)));
				addsonskipintlit_274729(typ, (*(*n).kindU.S6.sons->data[i_500968]).typ);
				res_500989 += ((NI) 1);
			} LA4: ;
		}
	}
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_NIMCALL(NIM_BOOL, istupletype_501005)(Tnode225809* n) {
	NIM_BOOL result;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_226098(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA4: ;
	{
		NI i_501023;
		NI HEX3Atmp_501046;
		NI LOC7;
		NI res_501049;
		i_501023 = 0;
		HEX3Atmp_501046 = 0;
		LOC7 = 0;
		LOC7 = len_226098(n);
		HEX3Atmp_501046 = (NI)(LOC7 - ((NI) 1));
		res_501049 = ((NI) 0);
		{
			while (1) {
				if (!(res_501049 <= HEX3Atmp_501046)) goto LA9;
				i_501023 = res_501049;
				{
					NIM_BOOL LOC12;
					Tnode225809* LOC13;
					Tnode225809* LOC15;
					LOC12 = 0;
					LOC13 = 0;
					LOC13 = HEX5BHEX5D_226244(n, i_501023);
					LOC12 = ((*LOC13).typ == NIM_NIL);
					if (LOC12) goto LA14;
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_226244(n, i_501023);
					LOC12 = !(((*(*LOC15).typ).kind == ((NU8) 8)));
					LA14: ;
					if (!LOC12) goto LA16;
					result = NIM_FALSE;
					goto BeforeRet;
				}
				LA16: ;
				res_501049 += ((NI) 1);
			} LA9: ;
		}
	}
	result = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semtuplefieldsconstr_500837)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Ttype225847* typ;
	Intset222056 ids;
	result = 0;
	result = newnodei_227351(((NU8) 37), (*n).info);
	typ = newtypes_280221(((NU8) 18), c);
	asgnRefNoCycle((void**) (&(*typ).n), newnodei_227351(((NU8) 138), (*n).info));
	memset((void*)(&ids), 0, sizeof(ids));
	chckNil((void*)(&ids));
	memset((void*)(&ids), 0, sizeof(ids));
	initintset_222927((&ids));
	{
		NI i_500857;
		NI HEX3Atmp_500930;
		NI LOC2;
		NI res_500933;
		i_500857 = 0;
		HEX3Atmp_500930 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_500930 = (NI)(LOC2 - ((NI) 1));
		res_500933 = ((NI) 0);
		{
			while (1) {
				Tident198021* id;
				Tsym225841* f;
				Tnode225809* LOC24;
				if (!(res_500933 <= HEX3Atmp_500930)) goto LA4;
				i_500857 = res_500933;
				{
					NIM_BOOL LOC7;
					Tnode225809* LOC8;
					Tnode225809* LOC10;
					Tnode225809* LOC11;
					LOC7 = 0;
					LOC8 = 0;
					LOC8 = HEX5BHEX5D_226244(n, i_500857);
					LOC7 = !(((*LOC8).kind == ((NU8) 34)));
					if (LOC7) goto LA9;
					LOC10 = 0;
					LOC10 = HEX5BHEX5D_226244(n, i_500857);
					LOC11 = 0;
					LOC11 = HEX5BHEX5D_226244(LOC10, ((NI) 0));
					LOC7 = !(((*LOC11).kind == ((NU8) 3) || (*LOC11).kind == ((NU8) 2)));
					LA9: ;
					if (!LOC7) goto LA12;
					illformedast_281240((*n).kindU.S6.sons->data[i_500857]);
				}
				LA12: ;
				id = 0;
				{
					if (!((*(*(*n).kindU.S6.sons->data[i_500857]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2))) goto LA16;
					id = (*(*(*n).kindU.S6.sons->data[i_500857]).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident;
				}
				goto LA14;
				LA16: ;
				{
					id = (*(*(*(*n).kindU.S6.sons->data[i_500857]).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name;
				}
				LA14: ;
				{
					NIM_BOOL LOC21;
					LOC21 = 0;
					LOC21 = containsorincl_222898((&ids), (*id).Sup.id);
					if (!LOC21) goto LA22;
					localerror_196128((*(*n).kindU.S6.sons->data[i_500857]).info, ((NU16) 90), (*id).s);
				}
				LA22: ;
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_500857]).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_457211(c, (*(*n).kindU.S6.sons->data[i_500857]).kindU.S6.sons->data[((NI) 1)], (flags & 64)));
				f = newsyms_457904(((NU8) 19), (*(*n).kindU.S6.sons->data[i_500857]).kindU.S6.sons->data[((NI) 0)], c);
				asgnRefNoCycle((void**) (&(*f).typ), skipintlit_274696((*(*(*n).kindU.S6.sons->data[i_500857]).kindU.S6.sons->data[((NI) 1)]).typ));
				(*f).position = i_500857;
				rawaddson_229498(typ, (*f).typ);
				LOC24 = 0;
				LOC24 = newsymnode_227325(f);
				addson_227819((*typ).n, LOC24);
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_500857]).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325(f));
				addson_227819(result, (*n).kindU.S6.sons->data[i_500857]);
				res_500933 += ((NI) 1);
			} LA4: ;
		}
	}
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_NIMCALL(Tnode225809*, semsetconstr_500479)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = newnodei_227351(((NU8) 39), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), newtypes_280221(((NU8) 19), c));
	{
		NI LOC3;
		Ttype225847* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		LOC6 = 0;
		LOC6 = newtypes_280221(((NU8) 3), c);
		rawaddson_229498((*result).typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		Ttype225847* typ;
		typ = NIM_NIL;
		{
			NI i_500497;
			NI HEX3Atmp_500603;
			NI LOC9;
			NI res_500606;
			i_500497 = 0;
			HEX3Atmp_500603 = 0;
			LOC9 = 0;
			LOC9 = sonslen_228387(n);
			HEX3Atmp_500603 = (NI)(LOC9 - ((NI) 1));
			res_500606 = ((NI) 0);
			{
				while (1) {
					if (!(res_500606 <= HEX3Atmp_500603)) goto LA11;
					i_500497 = res_500606;
					{
						NIM_BOOL LOC14;
						LOC14 = 0;
						LOC14 = isrange_254626((*n).kindU.S6.sons->data[i_500497]);
						if (!LOC14) goto LA15;
						checksonslen_281260((*n).kindU.S6.sons->data[i_500497], ((NI) 3));
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_500497]).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_457211(c, (*(*n).kindU.S6.sons->data[i_500497]).kindU.S6.sons->data[((NI) 1)], 0));
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_500497]).kindU.S6.sons->data[((NI) 2)]), semexprwithtype_457211(c, (*(*n).kindU.S6.sons->data[i_500497]).kindU.S6.sons->data[((NI) 2)], 0));
						{
							if (!(typ == NIM_NIL)) goto LA19;
							typ = skiptypes_229167((*(*(*n).kindU.S6.sons->data[i_500497]).kindU.S6.sons->data[((NI) 1)]).typ, 8423424);
						}
						LA19: ;
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_500497]).typ), (*(*(*n).kindU.S6.sons->data[i_500497]).kindU.S6.sons->data[((NI) 2)]).typ);
					}
					goto LA12;
					LA15: ;
					{
						if (!((*(*n).kindU.S6.sons->data[i_500497]).kind == ((NU8) 44))) goto LA22;
						{
							if (!(typ == NIM_NIL)) goto LA26;
							typ = skiptypes_229167((*(*(*n).kindU.S6.sons->data[i_500497]).kindU.S6.sons->data[((NI) 0)]).typ, 8423424);
						}
						LA26: ;
					}
					goto LA12;
					LA22: ;
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_500497]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[i_500497], 0));
						{
							if (!(typ == NIM_NIL)) goto LA31;
							typ = skiptypes_229167((*(*n).kindU.S6.sons->data[i_500497]).typ, 8423424);
						}
						LA31: ;
					}
					LA12: ;
					res_500606 += ((NI) 1);
				} LA11: ;
			}
		}
		{
			NIM_BOOL LOC35;
			Ttype225847* LOC38;
			LOC35 = 0;
			LOC35 = isordinaltype_255093(typ);
			if (!!(LOC35)) goto LA36;
			localerror_196128((*n).info, ((NU16) 78), ((NimStringDesc*) &TMP3117));
			LOC38 = 0;
			LOC38 = getsystype_274190(((NU8) 31));
			typ = makerangetype_281193(c, IL64(0), IL64(65535), (*n).info, LOC38);
		}
		goto LA33;
		LA36: ;
		{
			NI64 LOC40;
			Ttype225847* LOC43;
			LOC40 = 0;
			LOC40 = lengthord_255016(typ);
			if (!(IL64(65536) < LOC40)) goto LA41;
			LOC43 = 0;
			LOC43 = getsystype_274190(((NU8) 31));
			typ = makerangetype_281193(c, IL64(0), IL64(65535), (*n).info, LOC43);
		}
		goto LA33;
		LA41: ;
		LA33: ;
		addsonskipintlit_274729((*result).typ, typ);
		{
			NI i_500581;
			NI HEX3Atmp_500612;
			NI LOC45;
			NI res_500615;
			i_500581 = 0;
			HEX3Atmp_500612 = 0;
			LOC45 = 0;
			LOC45 = sonslen_228387(n);
			HEX3Atmp_500612 = (NI)(LOC45 - ((NI) 1));
			res_500615 = ((NI) 0);
			{
				while (1) {
					Tnode225809* m;
					if (!(res_500615 <= HEX3Atmp_500612)) goto LA47;
					i_500581 = res_500615;
					m = 0;
					{
						NIM_BOOL LOC50;
						Tnode225809* LOC53;
						Tnode225809* LOC54;
						LOC50 = 0;
						LOC50 = isrange_254626((*n).kindU.S6.sons->data[i_500581]);
						if (!LOC50) goto LA51;
						m = newnodei_227351(((NU8) 44), (*(*n).kindU.S6.sons->data[i_500581]).info);
						LOC53 = 0;
						LOC53 = fitnode_457245(c, typ, (*(*n).kindU.S6.sons->data[i_500581]).kindU.S6.sons->data[((NI) 1)]);
						addson_227819(m, LOC53);
						LOC54 = 0;
						LOC54 = fitnode_457245(c, typ, (*(*n).kindU.S6.sons->data[i_500581]).kindU.S6.sons->data[((NI) 2)]);
						addson_227819(m, LOC54);
					}
					goto LA48;
					LA51: ;
					{
						if (!((*(*n).kindU.S6.sons->data[i_500581]).kind == ((NU8) 44))) goto LA56;
						m = (*n).kindU.S6.sons->data[i_500581];
					}
					goto LA48;
					LA56: ;
					{
						m = fitnode_457245(c, typ, (*n).kindU.S6.sons->data[i_500581]);
					}
					LA48: ;
					addson_227819(result, m);
					res_500615 += ((NI) 1);
				} LA47: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype225847*, commontype_457477)(Ttype225847* x, Ttype225847* y) {
	Ttype225847* result;
	Ttype225847* a;
	Ttype225847* 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_229167(x, 2048);
	b = skiptypes_229167(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_264739((*a).sons, NIM_NIL);
			if (!LOC27) goto LA28;
			result = a;
		}
		goto LA25;
		LA28: ;
		{
			Ttype225847* LOC31;
			result = newtype_228140(((NU8) 8), (*a).owner);
			LOC31 = 0;
			LOC31 = newtype_228140(((NU8) 0), (*a).owner);
			rawaddson_229498(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;
		Ttype225847* 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_228369(a);
		LOC47 = 0;
		LOC47 = len_228369(b);
		LOC42 = (LOC46 == LOC47);
		LA45: ;
		if (!LOC42) goto LA48;
		nt = 0;
		{
			NI i_457657;
			NI HEX3Atmp_457882;
			NI LOC51;
			NI res_457885;
			i_457657 = 0;
			HEX3Atmp_457882 = 0;
			LOC51 = 0;
			LOC51 = len_228369(a);
			HEX3Atmp_457882 = (LOC51 - 1);
			res_457885 = ((NI) 0);
			{
				while (1) {
					NIM_BOOL aempty;
					NIM_BOOL bempty;
					if (!(res_457885 <= HEX3Atmp_457882)) goto LA53;
					i_457657 = res_457885;
					aempty = isemptycontainer_264978((*a).sons->data[i_457657]);
					bempty = isemptycontainer_264978((*b).sons->data[i_457657]);
					{
						if (!!((aempty == bempty))) goto LA56;
						{
							if (!nt == 0) goto LA60;
							nt = copytype_228542(a, (*a).owner, NIM_FALSE);
						}
						LA60: ;
						{
							if (!aempty) goto LA64;
							asgnRefNoCycle((void**) (&(*nt).sons->data[i_457657]), (*b).sons->data[i_457657]);
						}
						goto LA62;
						LA64: ;
						{
							asgnRefNoCycle((void**) (&(*nt).sons->data[i_457657]), (*a).sons->data[i_457657]);
						}
						LA62: ;
					}
					LA56: ;
					res_457885 += ((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;
			Ttype225847* LOC81;
			LOC78 = 0;
			LOC78 = sametype_260092(a, b, 0);
			if (!!(LOC78)) goto LA79;
			LOC81 = 0;
			LOC81 = skiptypes_229167(a, 1048576);
			result = skipintlit_274696(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_228426(a);
			b = lastson_228426(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_262468(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: ;
			{
				Ttype225847* r;
				if (!!((k == ((NU8) 0)))) goto LA109;
				r = result;
				result = newtype_228140(k, (*r).owner);
				addsonskipintlit_274729(result, r);
			}
			LA109: ;
		}
		LA95: ;
	}
	LA9: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semarrayconstr_494482)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	NI LOC35;
	Ttype225847* LOC36;
	result = 0;
	result = newnodei_227351(((NU8) 41), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), newtypes_280221(((NU8) 4), c));
	rawaddson_229498((*result).typ, NIM_NIL);
	{
		NI LOC3;
		Ttype225847* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_228387(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		LOC6 = 0;
		LOC6 = newtypes_280221(((NU8) 3), c);
		rawaddson_229498((*result).typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		Tnode225809* x;
		NI64 lastindex;
		Ttype225847* indextype;
		Tnode225809* yy;
		Ttype225847* typ;
		x = (*n).kindU.S6.sons->data[((NI) 0)];
		lastindex = IL64(0);
		indextype = getsystype_274190(((NU8) 31));
		{
			NIM_BOOL LOC10;
			NI LOC12;
			Tnode225809* idx;
			LOC10 = 0;
			LOC10 = ((*x).kind == ((NU8) 34));
			if (!(LOC10)) goto LA11;
			LOC12 = 0;
			LOC12 = sonslen_228387(x);
			LOC10 = (LOC12 == ((NI) 2));
			LA11: ;
			if (!LOC10) goto LA13;
			idx = semconstexpr_458485(c, (*x).kindU.S6.sons->data[((NI) 0)]);
			lastindex = getordvalue_255178(idx);
			indextype = (*idx).typ;
			x = (*x).kindU.S6.sons->data[((NI) 1)];
		}
		LA13: ;
		yy = semexprwithtype_457211(c, x, 0);
		typ = (*yy).typ;
		addson_227819(result, yy);
		{
			NI i_494518;
			NI HEX3Atmp_494580;
			NI LOC16;
			NI res_494583;
			i_494518 = 0;
			HEX3Atmp_494580 = 0;
			LOC16 = 0;
			LOC16 = sonslen_228387(n);
			HEX3Atmp_494580 = (NI)(LOC16 - ((NI) 1));
			res_494583 = ((NI) 1);
			{
				while (1) {
					Tnode225809* xx;
					if (!(res_494583 <= HEX3Atmp_494580)) goto LA18;
					i_494518 = res_494583;
					x = (*n).kindU.S6.sons->data[i_494518];
					{
						NIM_BOOL LOC21;
						NI LOC23;
						Tnode225809* idx;
						LOC21 = 0;
						LOC21 = ((*x).kind == ((NU8) 34));
						if (!(LOC21)) goto LA22;
						LOC23 = 0;
						LOC23 = sonslen_228387(x);
						LOC21 = (LOC23 == ((NI) 2));
						LA22: ;
						if (!LOC21) goto LA24;
						idx = semconstexpr_458485(c, (*x).kindU.S6.sons->data[((NI) 0)]);
						idx = fitnode_457245(c, indextype, idx);
						{
							NI64 LOC28;
							LOC28 = 0;
							LOC28 = getordvalue_255178(idx);
							if (!!(((NI64)(lastindex + IL64(1)) == LOC28))) goto LA29;
							localerror_196128((*x).info, ((NU16) 148), ((NimStringDesc*) &TMP3117));
						}
						LA29: ;
						x = (*x).kindU.S6.sons->data[((NI) 1)];
					}
					LA24: ;
					xx = semexprwithtype_457211(c, x, (flags & 64));
					add_226165(result, xx);
					typ = commontype_457477(typ, (*xx).typ);
					lastindex += ((NI) 1);
					res_494583 += ((NI) 1);
				} LA18: ;
			}
		}
		addsonskipintlit_274729((*result).typ, typ);
		{
			NI i_494575;
			NI HEX3Atmp_494588;
			NI LOC32;
			NI res_494591;
			i_494575 = 0;
			HEX3Atmp_494588 = 0;
			LOC32 = 0;
			LOC32 = len_226098(result);
			HEX3Atmp_494588 = (LOC32 - 1);
			res_494591 = ((NI) 0);
			{
				while (1) {
					if (!(res_494591 <= HEX3Atmp_494588)) goto LA34;
					i_494575 = res_494591;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_494575]), fitnode_457245(c, typ, (*result).kindU.S6.sons->data[i_494575]));
					res_494591 += ((NI) 1);
				} LA34: ;
			}
		}
	}
	LA1: ;
	LOC35 = 0;
	LOC35 = sonslen_228387(result);
	LOC36 = 0;
	LOC36 = getsystype_274190(((NU8) 31));
	asgnRefNoCycle((void**) (&(*(*result).typ).sons->data[((NI) 0)]), makerangetype_281193(c, IL64(0), ((NI64) ((NI)(LOC35 - ((NI) 1)))), (*n).info, LOC36));
	return result;
}

N_NIMCALL(Tnode225809*, semlambda_457261)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	Tsym225841* s;
	Tscope225835* LOC13;
	Tnode225809* gp;
{	result = 0;
	result = semprocannotation_488960(c, n, TMP3576);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = n;
	checksonslen_281260(n, ((NI) 7));
	s = 0;
	{
		Tnode225809* LOC7;
		Tsym225841* LOC10;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_226244(n, ((NI) 0));
		if (!!(((*LOC7).kind == ((NU8) 3)))) goto LA8;
		LOC10 = 0;
		LOC10 = getcurrowner_280258();
		s = newsym_226656(((NU8) 12), idanon_198495, LOC10, (*n).info);
		asgnRefNoCycle((void**) (&(*s).ast), n);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325(s));
	}
	goto LA5;
	LA8: ;
	{
		Tnode225809* LOC12;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_226244(n, ((NI) 0));
		s = (*LOC12).kindU.S4.sym;
	}
	LA5: ;
	pushowner_280263(s);
	LOC13 = 0;
	LOC13 = openscope_286091(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_471425(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA14;
	LA16: ;
	{
		gp = newnodei_227351(((NU8) 75), (*n).info);
	}
	LA14: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA21;
		semparamlist_457284(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NIM_BOOL LOC25;
			NI LOC26;
			LOC25 = 0;
			LOC26 = 0;
			LOC26 = sonslen_228387(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_469542(c, (*n).info, NIM_NIL));
	}
	LA19: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA33;
		pragma_297082(c, s, (*n).kindU.S6.sons->data[((NI) 4)], TMP3576);
	}
	LA33: ;
	(*s).options = goptions_167130;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1)))) goto LA37;
		{
			if (!(((*s).flags &(1<<((((NU8) 5))&31)))!=0)) goto LA41;
			localerror_196128((*(*n).kindU.S6.sons->data[((NI) 6)]).info, ((NU16) 141), (*(*s).name).s);
		}
		LA41: ;
		{
			NIM_BOOL LOC45;
			NI LOC46;
			NIM_BOOL LOC48;
			NI LOC49;
			Tnode225809* LOC51;
			Tnode225809* sembody;
			Tnode225809* LOC54;
			LOC45 = 0;
			LOC46 = 0;
			LOC46 = len_226098(gp);
			LOC45 = (LOC46 == ((NI) 0));
			if (LOC45) goto LA47;
			LOC48 = 0;
			LOC49 = 0;
			LOC49 = len_226098(gp);
			LOC48 = (LOC49 == ((NI) 1));
			if (!(LOC48)) goto LA50;
			LOC51 = 0;
			LOC51 = HEX5BHEX5D_226244(gp, ((NI) 0));
			LOC48 = (((*(*LOC51).typ).flags &(1<<((((NU8) 10))&31)))!=0);
			LA50: ;
			LOC45 = LOC48;
			LA47: ;
			if (!LOC45) goto LA52;
			pushproccon_280361(c, s);
			addresult_488830(c, (*(*s).typ).sons->data[((NI) 0)], (*n).info, ((NU8) 12));
			addresultnode_488864(c, n);
			LOC54 = 0;
			LOC54 = semprocbody_457238(c, (*n).kindU.S6.sons->data[((NI) 6)]);
			sembody = hlobody_459161(c, LOC54);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_417225((*c).module, sembody, s));
			popproccon_280393(c);
		}
		goto LA43;
		LA52: ;
		{
			if (!!(((flags &(1<<((((NU8) 8))&15)))!=0))) goto LA56;
			localerror_196128((*n).info, ((NU16) 232), ((NimStringDesc*) &TMP3117));
		}
		goto LA43;
		LA56: ;
		LA43: ;
		sideeffectscheck_460116(c, s);
	}
	goto LA35;
	LA37: ;
	{
		localerror_196128((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA35: ;
	closescope_286111(c);
	popowner_280269();
	asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semdo_489263)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode225809* LOC4;
		Tnode225809* LOC6;
		Tnode225809* LOC9;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_226244(n, ((NI) 2));
		LOC3 = ((*LOC4).kind == ((NU8) 1));
		if (!(LOC3)) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_226244(n, ((NI) 3));
		LOC3 = ((*LOC6).kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_226244(n, ((NI) 6));
		result = semstmt_457277(c, LOC9);
	}
	goto LA1;
	LA7: ;
	{
		result = semlambda_457261(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, iscastable_493583)(Ttype225847* dst, Ttype225847* src) {
	NIM_BOOL result;
	NI64 dstsize;
	NI64 srcsize;
{	result = 0;
	{
		Ttype225847* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_229167(dst, IL64(211106232576256));
		if (!((*LOC3).kind == ((NU8) 27))) goto LA4;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA4: ;
	dstsize = 0;
	srcsize = 0;
	dstsize = computesize_255184(dst);
	srcsize = computesize_255184(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: ;
	{
		Ttype225847* LOC14;
		LOC14 = 0;
		LOC14 = typeallowed_263654(dst, ((NU8) 3));
		if (!!((LOC14 == NIM_NIL))) goto LA15;
		result = NIM_FALSE;
	}
	goto LA6;
	LA15: ;
	{
		NIM_BOOL LOC18;
		NIM_BOOL LOC19;
		Ttype225847* LOC21;
		Ttype225847* LOC23;
		LOC18 = 0;
		LOC19 = 0;
		LOC19 = (srcsize <= dstsize);
		if (LOC19) goto LA20;
		LOC21 = 0;
		LOC21 = skiptypes_229167(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_229167(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_174653)));
	}
	LA28: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semcast_493825)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* LOC1;
	Tnode225809* LOC2;
	result = 0;
	checksonslen_281260(n, ((NI) 2));
	result = newnodei_227351(((NU8) 61), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), semtypenode_457269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL));
	LOC1 = 0;
	LOC1 = copytree_230028((*n).kindU.S6.sons->data[((NI) 0)]);
	addson_227819(result, LOC1);
	LOC2 = 0;
	LOC2 = semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	addson_227819(result, LOC2);
	{
		NIM_BOOL LOC5;
		NimStringDesc* LOC8;
		LOC5 = 0;
		LOC5 = iscastable_493583((*result).typ, (*(*result).kindU.S6.sons->data[((NI) 1)]).typ);
		if (!!(LOC5)) goto LA6;
		LOC8 = 0;
		LOC8 = typetostring_255032((*result).typ, ((NU8) 0));
		localerror_196128((*result).info, ((NU16) 96), LOC8);
	}
	LA6: ;
	return result;
}

static N_INLINE(void, semdestructorcheck_482851)(Tcontext280023* c, Tnode225809* 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;
		{
			Ttype225847* LOC9;
			LOC9 = 0;
			LOC9 = instantiatedestructor_481822(c, (*n).typ);
			if (!!((LOC9 == NIM_NIL))) goto LA10;
			localerror_196128((*n).info, ((NU16) 264), ((NimStringDesc*) &TMP3117));
		}
		LA10: ;
	}
	LA5: ;
}

N_NIMCALL(Tnode225809*, semexprbranch_483004)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = semexpr_457201(c, n, 0);
	{
		if (!!(((*result).typ == NIM_NIL))) goto LA3;
		semprocvarcheck_481766(c, result);
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA7;
			result = newderef_402024(result);
		}
		LA7: ;
		semdestructorcheck_482851(c, result, 0);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode225809*, semexprbranchscope_483035)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tscope225835* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	result = semexprbranch_483004(c, n);
	closescope_286111(c);
	return result;
}

N_NIMCALL(Tnode225809*, semif_483260)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Ttype225847* typ;
	NIM_BOOL haselse;
	result = 0;
	result = n;
	typ = commontypebegin_457472;
	haselse = NIM_FALSE;
	{
		NI i_483279;
		NI HEX3Atmp_483636;
		NI LOC2;
		NI res_483639;
		i_483279 = 0;
		HEX3Atmp_483636 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_483636 = (NI)(LOC2 - ((NI) 1));
		res_483639 = ((NI) 0);
		{
			while (1) {
				Tnode225809* it;
				if (!(res_483639 <= HEX3Atmp_483636)) goto LA4;
				i_483279 = res_483639;
				it = (*n).kindU.S6.sons->data[i_483279];
				{
					NI LOC7;
					Tscope225835* LOC10;
					Tnode225809* LOC11;
					LOC7 = 0;
					LOC7 = len_226098(it);
					if (!(LOC7 == ((NI) 2))) goto LA8;
					LOC10 = 0;
					LOC10 = openscope_286091(c);
					LOC11 = 0;
					LOC11 = semexprwithtype_457211(c, (*it).kindU.S6.sons->data[((NI) 0)], 0);
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), forcebool_464829(c, LOC11));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), semexprbranch_483004(c, (*it).kindU.S6.sons->data[((NI) 1)]));
					typ = commontype_457477(typ, (*(*it).kindU.S6.sons->data[((NI) 1)]).typ);
					closescope_286111(c);
				}
				goto LA5;
				LA8: ;
				{
					NI LOC13;
					LOC13 = 0;
					LOC13 = len_226098(it);
					if (!(LOC13 == ((NI) 1))) goto LA14;
					haselse = NIM_TRUE;
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_483035(c, (*it).kindU.S6.sons->data[((NI) 0)]));
					typ = commontype_457477(typ, (*(*it).kindU.S6.sons->data[((NI) 0)]).typ);
				}
				goto LA5;
				LA14: ;
				{
					illformedast_281240(it);
				}
				LA5: ;
				res_483639 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NIM_BOOL LOC19;
		NIM_BOOL LOC20;
		LOC19 = 0;
		LOC20 = 0;
		LOC20 = isemptytype_230932(typ);
		if (LOC20) goto LA21;
		LOC20 = ((*typ).kind == ((NU8) 5));
		LA21: ;
		LOC19 = LOC20;
		if (LOC19) goto LA22;
		LOC19 = !(haselse);
		LA22: ;
		if (!LOC19) goto LA23;
		{
			Tnode225809* it_483617;
			it_483617 = 0;
			{
				NI i_483647;
				NI HEX3Atmp_483649;
				NI LOC27;
				NI res_483651;
				i_483647 = 0;
				HEX3Atmp_483649 = 0;
				LOC27 = 0;
				LOC27 = len_226098(n);
				HEX3Atmp_483649 = (LOC27 - 1);
				res_483651 = ((NI) 0);
				{
					while (1) {
						Tnode225809* LOC30;
						if (!(res_483651 <= HEX3Atmp_483649)) goto LA29;
						i_483647 = res_483651;
						it_483617 = (*n).kindU.S6.sons->data[i_483647];
						LOC30 = 0;
						LOC30 = lastson_228406(it_483617);
						discardcheck_483156(c, LOC30);
						res_483651 += ((NI) 1);
					} LA29: ;
				}
			}
		}
		(*result).kind = ((NU8) 92);
		{
			if (!(typ == enforcevoidcontext_481405)) goto LA33;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_481405);
		}
		LA33: ;
	}
	goto LA17;
	LA23: ;
	{
		{
			Tnode225809* it_483630;
			it_483630 = 0;
			{
				NI i_483658;
				NI HEX3Atmp_483660;
				NI LOC38;
				NI res_483662;
				i_483658 = 0;
				HEX3Atmp_483660 = 0;
				LOC38 = 0;
				LOC38 = len_226098(n);
				HEX3Atmp_483660 = (LOC38 - 1);
				res_483662 = ((NI) 0);
				{
					while (1) {
						NI j;
						NI LOC41;
						if (!(res_483662 <= HEX3Atmp_483660)) goto LA40;
						i_483658 = res_483662;
						it_483630 = (*n).kindU.S6.sons->data[i_483658];
						LOC41 = 0;
						LOC41 = len_226098(it_483630);
						j = (NI)(LOC41 - ((NI) 1));
						asgnRefNoCycle((void**) (&(*it_483630).kindU.S6.sons->data[j]), fitnode_457245(c, typ, (*it_483630).kindU.S6.sons->data[j]));
						res_483662 += ((NI) 1);
					} LA40: ;
				}
			}
		}
		(*result).kind = ((NU8) 48);
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA17: ;
	return result;
}

N_NIMCALL(Tnode225809*, semtableconstr_500640)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	NI lastkey;
	result = 0;
	result = newnodei_227351(((NU8) 41), (*n).info);
	lastkey = ((NI) 0);
	{
		NI i_500657;
		NI HEX3Atmp_500701;
		NI LOC2;
		NI res_500704;
		i_500657 = 0;
		HEX3Atmp_500701 = 0;
		LOC2 = 0;
		LOC2 = len_226098(n);
		HEX3Atmp_500701 = (NI)(LOC2 - ((NI) 1));
		res_500704 = ((NI) 0);
		{
			while (1) {
				Tnode225809* x;
				if (!(res_500704 <= HEX3Atmp_500701)) goto LA4;
				i_500657 = res_500704;
				x = (*n).kindU.S6.sons->data[i_500657];
				{
					NIM_BOOL LOC7;
					NI LOC9;
					Tnode225809* pair;
					Tnode225809* LOC16;
					Tnode225809* LOC17;
					LOC7 = 0;
					LOC7 = ((*x).kind == ((NU8) 34));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = sonslen_228387(x);
					LOC7 = (LOC9 == ((NI) 2));
					LA8: ;
					if (!LOC7) goto LA10;
					{
						NI j_500681;
						NI HEX3Atmp_500694;
						NI res_500697;
						j_500681 = 0;
						HEX3Atmp_500694 = 0;
						HEX3Atmp_500694 = (NI)(i_500657 - ((NI) 1));
						res_500697 = lastkey;
						{
							while (1) {
								Tnode225809* pair;
								Tnode225809* LOC15;
								if (!(res_500697 <= HEX3Atmp_500694)) goto LA14;
								j_500681 = res_500697;
								pair = newnodei_227351(((NU8) 37), (*x).info);
								add_226165(pair, (*n).kindU.S6.sons->data[j_500681]);
								LOC15 = 0;
								LOC15 = HEX5BHEX5D_226244(x, ((NI) 1));
								add_226165(pair, LOC15);
								add_226165(result, pair);
								res_500697 += ((NI) 1);
							} LA14: ;
						}
					}
					pair = newnodei_227351(((NU8) 37), (*x).info);
					LOC16 = 0;
					LOC16 = HEX5BHEX5D_226244(x, ((NI) 0));
					add_226165(pair, LOC16);
					LOC17 = 0;
					LOC17 = HEX5BHEX5D_226244(x, ((NI) 1));
					add_226165(pair, LOC17);
					add_226165(result, pair);
					lastkey = (NI)(i_500657 + ((NI) 1));
				}
				LA10: ;
				res_500704 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NI LOC20;
		LOC20 = 0;
		LOC20 = len_226098(n);
		if (!!((lastkey == LOC20))) goto LA21;
		illformedast_281240(n);
	}
	LA21: ;
	result = semexpr_457201(c, result, 0);
	return result;
}

N_NIMCALL(Tnode225809*, semstaticexpr_496274)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* a;
	result = 0;
	a = semexpr_457201(c, (*n).kindU.S6.sons->data[((NI) 0)], 0);
	result = evalstaticexpr_446232((*c).module, a, (*(*c).p).owner);
	{
		NimStringDesc* LOC5;
		if (!result == 0) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_247059(n, 0);
		localerror_196128((*n).info, ((NU16) 213), LOC5);
		result = emptynode_226807;
	}
	goto LA1;
	LA3: ;
	{
		result = fixuptypeaftereval_458201(c, result, a);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, semblock_501450)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tscope225835* LOC1;
	result = 0;
	result = n;
	(*(*c).p).nestedblockcounter += ((NI) 1);
	checksonslen_281260(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	{
		Tsym225841* labl;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA4;
		labl = newsymg_457916(((NU8) 22), (*n).kindU.S6.sons->data[((NI) 0)], c);
		{
			if (!!((((*labl).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA8;
			adddecl_286607(c, labl);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_227338(labl, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
		}
		LA8: ;
		suggestsym_398733((*(*n).kindU.S6.sons->data[((NI) 0)]).info, labl);
	}
	LA4: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexpr_457201(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_230932((*n).typ);
		if (!LOC12) goto LA13;
		(*n).kind = ((NU8) 112);
	}
	goto LA10;
	LA13: ;
	{
		(*n).kind = ((NU8) 127);
	}
	LA10: ;
	closescope_286111(c);
	(*(*c).p).nestedblockcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Tnode225809*, semtry_484115)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Ttype225847* typ_484129;
	Intset222056 check;
	NI last;
	NI LOC1;
	result = 0;
	result = n;
	(*(*c).p).intrystmt += ((NI) 1);
	checkminsonslen_281270(n, ((NI) 2));
	typ_484129 = commontypebegin_457472;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_483035(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	typ_484129 = commontype_457477(typ_484129, (*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_222927((&check));
	LOC1 = 0;
	LOC1 = sonslen_228387(n);
	last = (NI)(LOC1 - ((NI) 1));
	{
		NI i_484147;
		NI res_484355;
		i_484147 = 0;
		res_484355 = ((NI) 1);
		{
			while (1) {
				Tnode225809* a;
				NI length;
				if (!(res_484355 <= last)) goto LA4;
				i_484147 = res_484355;
				a = (*n).kindU.S6.sons->data[i_484147];
				checkminsonslen_281270(a, ((NI) 1));
				length = sonslen_228387(a);
				{
					if (!((*a).kind == ((NU8) 87))) goto LA7;
					{
						NIM_BOOL LOC11;
						Slice90370 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_416817((&(*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_228387(a);
					}
					LA13: ;
					{
						NI j_484212;
						NI HEX3Atmp_484346;
						NI res_484349;
						j_484212 = 0;
						HEX3Atmp_484346 = 0;
						HEX3Atmp_484346 = (NI)(length - ((NI) 2));
						res_484349 = ((NI) 0);
						{
							while (1) {
								Ttype225847* typ;
								if (!(res_484349 <= HEX3Atmp_484346)) goto LA18;
								j_484212 = res_484349;
								typ = semtypenode_457269(c, (*a).kindU.S6.sons->data[j_484212], NIM_NIL);
								{
									if (!((*typ).kind == ((NU8) 22))) goto LA21;
									typ = (*typ).sons->data[((NI) 0)];
								}
								LA21: ;
								{
									if (!!(((*typ).kind == ((NU8) 17)))) goto LA25;
									localerror_196128((*(*a).kindU.S6.sons->data[j_484212]).info, ((NU16) 116), ((NimStringDesc*) &TMP3117));
								}
								LA25: ;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_484212]), newnodei_227351(((NU8) 4), (*(*a).kindU.S6.sons->data[j_484212]).info));
								asgnRefNoCycle((void**) (&(*(*a).kindU.S6.sons->data[j_484212]).typ), typ);
								{
									NIM_BOOL LOC29;
									LOC29 = 0;
									LOC29 = containsorincl_222898((&check), (*typ).Sup.id);
									if (!LOC29) goto LA30;
									localerror_196128((*(*a).kindU.S6.sons->data[j_484212]).info, ((NU16) 36), ((NimStringDesc*) &TMP3117));
								}
								LA30: ;
								res_484349 += ((NI) 1);
							} LA18: ;
						}
					}
				}
				goto LA5;
				LA7: ;
				{
					if (!!(((*a).kind == ((NU8) 107)))) goto LA33;
					illformedast_281240(n);
				}
				goto LA5;
				LA33: ;
				LA5: ;
				asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]), semexprbranchscope_483035(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]));
				{
					if (!!(((*a).kind == ((NU8) 107)))) goto LA37;
					typ_484129 = commontype_457477(typ_484129, (*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).typ);
				}
				goto LA35;
				LA37: ;
				{
					last -= ((NI) 1);
				}
				LA35: ;
				res_484355 += ((NI) 1);
			} LA4: ;
		}
	}
	(*(*c).p).intrystmt -= ((NI) 1);
	{
		NIM_BOOL LOC42;
		LOC42 = 0;
		LOC42 = isemptytype_230932(typ_484129);
		if (LOC42) goto LA43;
		LOC42 = ((*typ_484129).kind == ((NU8) 5));
		LA43: ;
		if (!LOC42) goto LA44;
		discardcheck_483156(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_484299;
			NI HEX3Atmp_484360;
			NI LOC47;
			NI res_484363;
			i_484299 = 0;
			HEX3Atmp_484360 = 0;
			LOC47 = 0;
			LOC47 = len_226098(n);
			HEX3Atmp_484360 = (NI)(LOC47 - ((NI) 1));
			res_484363 = ((NI) 1);
			{
				while (1) {
					Tnode225809* LOC50;
					if (!(res_484363 <= HEX3Atmp_484360)) goto LA49;
					i_484299 = res_484363;
					LOC50 = 0;
					LOC50 = lastson_228406((*n).kindU.S6.sons->data[i_484299]);
					discardcheck_483156(c, LOC50);
					res_484363 += ((NI) 1);
				} LA49: ;
			}
		}
		{
			if (!(typ_484129 == enforcevoidcontext_481405)) goto LA53;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_481405);
		}
		LA53: ;
	}
	goto LA40;
	LA44: ;
	{
		{
			Tnode225809* LOC58;
			Tnode225809* LOC61;
			Tnode225809* LOC62;
			LOC58 = 0;
			LOC58 = lastson_228406(n);
			if (!((*LOC58).kind == ((NU8) 107))) goto LA59;
			LOC61 = 0;
			LOC61 = lastson_228406(n);
			LOC62 = 0;
			LOC62 = lastson_228406(LOC61);
			discardcheck_483156(c, LOC62);
		}
		LA59: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), fitnode_457245(c, typ_484129, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_484337;
			NI res_484370;
			i_484337 = 0;
			res_484370 = ((NI) 1);
			{
				while (1) {
					Tnode225809* it;
					NI j;
					NI LOC66;
					if (!(res_484370 <= last)) goto LA65;
					i_484337 = res_484370;
					it = (*n).kindU.S6.sons->data[i_484337];
					LOC66 = 0;
					LOC66 = len_226098(it);
					j = (NI)(LOC66 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[j]), fitnode_457245(c, typ_484129, (*it).kindU.S6.sons->data[j]));
					res_484370 += ((NI) 1);
				} LA65: ;
			}
		}
		asgnRefNoCycle((void**) (&(*result).typ), typ_484129);
	}
	LA40: ;
	return result;
}

N_NIMCALL(Tnode225809*, semstmtlist_491286)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	NI length;
	NIM_BOOL voidcontext;
	NI last;
{	result = 0;
	result = n;
	(*result).kind = ((NU8) 115);
	length = sonslen_228387(n);
	voidcontext = NIM_FALSE;
	last = (NI)(length - ((NI) 1));
	{
		NI i_491309;
		NI HEX3Atmp_491813;
		NI res_491816;
		i_491309 = 0;
		HEX3Atmp_491813 = 0;
		HEX3Atmp_491813 = (NI)(length - ((NI) 1));
		res_491816 = ((NI) 0);
		{
			while (1) {
				if (!(res_491816 <= HEX3Atmp_491813)) goto LA3;
				i_491309 = res_491816;
				{
					NU8 k;
					k = (*(*n).kindU.S6.sons->data[i_491309]).kind;
					switch (k) {
					case ((NU8) 107):
					case ((NU8) 87):
					{
						Tnode225809* deferpart;
						Tnode225809* trystmt;
						Tnode225809* body;
						deferpart = 0;
						{
							if (!(k == ((NU8) 105))) goto LA8;
							deferpart = newnodei_227351(((NU8) 107), (*(*n).kindU.S6.sons->data[i_491309]).info);
							add_226165(deferpart, (*(*n).kindU.S6.sons->data[i_491309]).kindU.S6.sons->data[((NI) 0)]);
						}
						goto LA6;
						LA8: ;
						{
							if (!(k == ((NU8) 107))) goto LA11;
							message_196161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3577));
							deferpart = (*n).kindU.S6.sons->data[i_491309];
						}
						goto LA6;
						LA11: ;
						{
							message_196161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3578));
							deferpart = (*n).kindU.S6.sons->data[i_491309];
						}
						LA6: ;
						trystmt = newnodei_227351(((NU8) 106), (*(*n).kindU.S6.sons->data[i_491309]).info);
						body = newnodei_227351(((NU8) 115), (*(*n).kindU.S6.sons->data[i_491309]).info);
						{
							NI LOC16;
							NI LOC19;
							Slice90370 LOC20;
							LOC16 = 0;
							LOC16 = sonslen_228387(n);
							if (!(i_491309 < (NI)(LOC16 - ((NI) 1)))) goto LA17;
							LOC19 = 0;
							LOC19 = len_226098(n);
							LOC20 = HEX2EHEX2E_105290((NI)(i_491309 + ((NI) 1)), (NI)(LOC19 - ((NI) 1)));
							asgnRefNoCycle((void**) (&(*body).kindU.S6.sons), HEX5BHEX5D_416753((*n).kindU.S6.sons, LOC20));
						}
						LA17: ;
						addson_227819(trystmt, body);
						addson_227819(trystmt, deferpart);
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_491309]), semtry_484115(c, trystmt));
						(*n).kindU.S6.sons = (Tnodeseq225803*) setLengthSeq(&((*n).kindU.S6.sons)->Sup, sizeof(Tnode225809*), ((NI) ((NI)(i_491309 + ((NI) 1)))));
						asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[i_491309]).typ);
						goto BeforeRet;
					}
					break;
					default:
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_491309]), semexpr_457201(c, (*n).kindU.S6.sons->data[i_491309], 0));
						{
							NIM_BOOL LOC24;
							Tnode225809* LOC26;
							Tnode225809* LOC29;
							LOC24 = 0;
							LOC24 = (((NI) 0) < (*c).intypeclass);
							if (!(LOC24)) goto LA25;
							LOC26 = 0;
							LOC26 = HEX5BHEX5D_226244(n, i_491309);
							LOC24 = !(((*LOC26).typ == NIM_NIL));
							LA25: ;
							if (!LOC24) goto LA27;
							LOC29 = 0;
							LOC29 = HEX5BHEX5D_226244(n, i_491309);
							switch ((*(*LOC29).typ).kind) {
							case ((NU8) 1):
							{
								Tnode225809* verdict;
								Tnode225809* LOC31;
								LOC31 = 0;
								LOC31 = HEX5BHEX5D_226244(n, i_491309);
								verdict = semconstexpr_458485(c, LOC31);
								{
									if (!((*verdict).kindU.S1.intval == IL64(0))) goto LA34;
									localerror_196139((*result).info, ((NimStringDesc*) &TMP3579));
								}
								LA34: ;
							}
							break;
							case ((NU8) 60):
							{
								goto LA4;
							}
							break;
							default:
							{
							}
							break;
							}
						}
						LA27: ;
						{
							if (!((*(*n).kindU.S6.sons->data[i_491309]).typ == enforcevoidcontext_481405)) goto LA40;
							voidcontext = NIM_TRUE;
							asgnRefNoCycle((void**) (&(*n).typ), enforcevoidcontext_481405);
						}
						LA40: ;
						{
							NIM_BOOL LOC44;
							NIM_BOOL LOC46;
							LOC44 = 0;
							LOC44 = (i_491309 == 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_491309]).typ);
							{
								NIM_BOOL LOC52;
								LOC52 = 0;
								LOC52 = isemptytype_230932((*n).typ);
								if (!!(LOC52)) goto LA53;
								(*n).kind = ((NU8) 126);
							}
							LA53: ;
						}
						goto LA42;
						LA48: ;
						{
							NIM_BOOL LOC56;
							LOC56 = 0;
							LOC56 = !((i_491309 == last));
							if (LOC56) goto LA57;
							LOC56 = voidcontext;
							LA57: ;
							if (!LOC56) goto LA58;
							discardcheck_483156(c, (*n).kindU.S6.sons->data[i_491309]);
						}
						goto LA42;
						LA58: ;
						{
							asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[i_491309]).typ);
							{
								NIM_BOOL LOC63;
								LOC63 = 0;
								LOC63 = isemptytype_230932((*n).typ);
								if (!!(LOC63)) goto LA64;
								(*n).kind = ((NU8) 126);
							}
							LA64: ;
						}
						LA42: ;
						switch ((*(*n).kindU.S6.sons->data[i_491309]).kind) {
						case ((NU8) 108):
						case ((NU8) 109):
						case ((NU8) 110):
						case ((NU8) 111):
						{
							{
								NI j_491436;
								NI HEX3Atmp_491805;
								NI HEX3Atmp_491806;
								NI res_491809;
								j_491436 = 0;
								HEX3Atmp_491805 = 0;
								HEX3Atmp_491806 = 0;
								HEX3Atmp_491805 = (NI)(i_491309 + ((NI) 1));
								HEX3Atmp_491806 = (NI)(length - ((NI) 1));
								res_491809 = HEX3Atmp_491805;
								{
									while (1) {
										if (!(res_491809 <= HEX3Atmp_491806)) goto LA69;
										j_491436 = res_491809;
										switch ((*(*n).kindU.S6.sons->data[j_491436]).kind) {
										case ((NU8) 90):
										case ((NU8) 125):
										case ((NU8) 23):
										case ((NU8) 1):
										{
										}
										break;
										default:
										{
											localerror_196128((*(*n).kindU.S6.sons->data[j_491436]).info, ((NU16) 42), ((NimStringDesc*) &TMP3117));
										}
										break;
										}
										res_491809 += ((NI) 1);
									} LA69: ;
								}
							}
						}
						break;
						default:
						{
						}
						break;
						}
					}
					break;
					}
				} LA4: ;
				res_491816 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NIM_BOOL LOC75;
		NI LOC76;
		LOC75 = 0;
		LOC76 = 0;
		LOC76 = len_226098(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(Tnode225809*, semraise_487501)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = n;
	checksonslen_281260(n, ((NI) 1));
	{
		Ttype225847* typ;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_457211(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_196128((*n).info, ((NU16) 116), ((NimStringDesc*) &TMP3117));
		}
		LA9: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, addtovarsection_485706)(Tcontext280023* c, Tnode225809** result, Tnode225809* orig, Tnode225809* identdefs) {
	NI L;
	Tnode225809* value;
	L = len_226098(identdefs);
	value = HEX5BHEX5D_226244(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_226807);
		{
			Tnode225809* oldresult;
			if (!!(((*(*result)).kind == ((NU8) 115)))) goto LA9;
			oldresult = (*result);
			add_226165(oldresult, identdefs);
			unsureAsgnRef((void**) (&(*result)), newnodei_227351(((NU8) 115), (*(*result)).info));
			add_226165((*result), oldresult);
		}
		goto LA7;
		LA9: ;
		{
			Tnode225809* o;
			o = copynode_229660(orig);
			add_226165(o, identdefs);
			add_226165((*result), o);
		}
		LA7: ;
		{
			NI i_485764;
			NI HEX3Atmp_485780;
			NI res_485783;
			i_485764 = 0;
			HEX3Atmp_485780 = 0;
			HEX3Atmp_485780 = (NI)(L - ((NI) 3));
			res_485783 = ((NI) 0);
			{
				while (1) {
					Tnode225809* LOC15;
					Tnode225809* LOC16;
					if (!(res_485783 <= HEX3Atmp_485780)) goto LA14;
					i_485764 = res_485783;
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_226244(identdefs, i_485764);
					LOC16 = 0;
					LOC16 = overloadedasgn_485696(c, LOC15, value);
					add_226165((*result), LOC16);
					res_485783 += ((NI) 1);
				} LA14: ;
			}
		}
	}
	goto LA1;
	LA5: ;
	{
		Tnode225809* o;
		if (!((*(*result)).kind == ((NU8) 115))) goto LA18;
		o = copynode_229660(orig);
		add_226165(o, identdefs);
		add_226165((*result), o);
	}
	goto LA1;
	LA18: ;
	{
		add_226165((*result), identdefs);
	}
	LA1: ;
}

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

N_NIMCALL(Tsym225841*, findshadowedvar_484435)(Tcontext280023* c, Tsym225841* v) {
	Tsym225841* result;
{	result = 0;
	{
		Tscope225835* scope_484440;
		Tscope225835* HEX3Atmp_484477;
		Tscope225835* current_484480;
		scope_484440 = 0;
		HEX3Atmp_484477 = 0;
		HEX3Atmp_484477 = (*(*c).currentscope).parent;
		current_484480 = HEX3Atmp_484477;
		{
			while (1) {
				Tsym225841* shadowed;
				if (!!((current_484480 == NIM_NIL))) goto LA3;
				scope_484440 = current_484480;
				{
					if (!(scope_484440 == (*c).toplevelscope)) goto LA6;
					goto LA1;
				}
				LA6: ;
				shadowed = strtableget_233111((*scope_484440).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_484480 = (*current_484480).parent;
			} LA3: ;
		}
	} LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, identwithin_484493)(Tnode225809* n, Tident198021* s) {
	NIM_BOOL result;
	NIM_BOOL LOC10;
{	result = 0;
	{
		NI i_484509;
		NI HEX3Atmp_484523;
		NI LOC2;
		NI res_484526;
		i_484509 = 0;
		HEX3Atmp_484523 = 0;
		LOC2 = 0;
		LOC2 = safelen_226126(n);
		HEX3Atmp_484523 = (NI)(LOC2 - ((NI) 1));
		res_484526 = ((NI) 0);
		{
			while (1) {
				if (!(res_484526 <= HEX3Atmp_484523)) goto LA4;
				i_484509 = res_484526;
				{
					NIM_BOOL LOC7;
					LOC7 = 0;
					LOC7 = identwithin_484493((*n).kindU.S6.sons->data[i_484509], s);
					if (!LOC7) goto LA8;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA8: ;
				res_484526 += ((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(Tnode225809*, createdestructorcall_482601)(Tcontext280023* c, Tsym225841* s) {
	Tnode225809* result;
	Ttype225847* vartyp;
	Ttype225847* 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_481822(c, vartyp);
	{
		Tnode225809* call;
		Tnodeseq225803* LOC11;
		TY281106 LOC12;
		Tnode225809* LOC13;
		Tnodeseq225803* LOC14;
		TY243880 LOC15;
		if (!!((destructablet == NIM_NIL))) goto LA9;
		LOC11 = 0;
		LOC11 = (Tnodeseq225803*) newSeq((&NTI225803), 2);
		memset((void*)LOC12, 0, sizeof(LOC12));
		LOC12[0] = usesym_398850((*destructablet).destructor);
		LOC12[1] = usesym_398850(s);
		asgnRefNoCycle((void**) (&LOC11->data[0]), LOC12[0]);
		asgnRefNoCycle((void**) (&LOC11->data[1]), LOC12[1]);
		LOC13 = 0;
		LOC13 = newnode_227607(((NU8) 27), (*s).info, LOC11, NIM_NIL);
		call = semstmt_457277(c, LOC13);
		LOC14 = 0;
		LOC14 = (Tnodeseq225803*) newSeq((&NTI225803), 1);
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = call;
		asgnRefNoCycle((void**) (&LOC14->data[0]), LOC15[0]);
		result = newnode_227607(((NU8) 105), (*s).info, LOC14, NIM_NIL);
	}
	LA9: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, adddefer_485799)(Tcontext280023* c, Tnode225809** result, Tsym225841* s) {
	Tnode225809* deferdestructorcall;
	deferdestructorcall = createdestructorcall_482601(c, s);
	{
		if (!!((deferdestructorcall == NIM_NIL))) goto LA3;
		{
			Tnode225809* oldresult;
			if (!!(((*(*result)).kind == ((NU8) 115)))) goto LA7;
			oldresult = (*result);
			unsureAsgnRef((void**) (&(*result)), newnodei_227351(((NU8) 115), (*(*result)).info));
			add_226165((*result), oldresult);
		}
		LA7: ;
		add_226165((*result), deferdestructorcall);
	}
	LA3: ;
}

N_NIMCALL(void, checknilable_484604)(Tsym225841* 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_196161((*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_196161((*v).info, ((NU16) 257), (*(*v).name).s);
		}
		goto LA7;
		LA14: ;
		LA7: ;
	}
	LA5: ;
}

N_NIMCALL(Tnode225809*, semvarorlet_485852)(Tcontext280023* c, Tnode225809* n, NU8 symkind) {
	Tnode225809* result;
	Tnode225809* b;
	NIM_BOOL hascompiletime;
	result = 0;
	b = 0;
	result = copynode_229660(n);
	hascompiletime = NIM_FALSE;
	{
		NI i_485872;
		NI HEX3Atmp_486352;
		NI LOC2;
		NI res_486355;
		i_485872 = 0;
		HEX3Atmp_486352 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_486352 = (NI)(LOC2 - ((NI) 1));
		res_486355 = ((NI) 0);
		{
			while (1) {
				if (!(res_486355 <= HEX3Atmp_486352)) goto LA4;
				i_485872 = res_486355;
				{
					Tnode225809* a;
					NI length;
					Ttype225847* typ;
					Tnode225809* def;
					Ttype225847* tup;
					a = (*n).kindU.S6.sons->data[i_485872];
					{
						if (!(gcmd_167134 == ((NU8) 14))) goto LA8;
						suggeststmt_399098(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_281240(a);
					}
					LA16: ;
					checkminsonslen_281270(a, ((NI) 3));
					length = sonslen_228387(a);
					typ = 0;
					{
						if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1)))) goto LA20;
						typ = semtypenode_457269(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_457211(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_196139((*def).info, ((NimStringDesc*) &TMP3580));
							asgnRefNoCycle((void**) (&(*def).typ), errortype_281161(c));
						}
						LA31: ;
						{
							if (!!((typ == NIM_NIL))) goto LA35;
							{
								NIM_BOOL LOC39;
								LOC39 = 0;
								LOC39 = ismetatype_226821(typ);
								if (!LOC39) goto LA40;
								def = inferwithmetatype_457463(c, typ, def, NIM_FALSE);
								typ = (*def).typ;
							}
							goto LA37;
							LA40: ;
							{
								def = fitnode_457245(c, typ, def);
							}
							LA37: ;
						}
						goto LA33;
						LA35: ;
						{
							typ = skipintlit_274696((*def).typ);
							{
								NIM_BOOL LOC46;
								Ttype225847* 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_228426(typ);
								LOC46 = ((*LOC48).kind == ((NU8) 3));
								LA47: ;
								if (!LOC46) goto LA49;
								LOC51 = 0;
								LOC51 = copyStr(reprEnum((*typ).kind, (&NTI225262)), ((NI) 2));
								LOC52 = 0;
								LOC52 = nsuToLowerStr(LOC51);
								localerror_196128((*def).info, ((NU16) 230), LOC52);
							}
							LA49: ;
						}
						LA33: ;
					}
					goto LA23;
					LA25: ;
					{
						def = emptynode_226807;
						{
							if (!(symkind == ((NU8) 9))) goto LA56;
							localerror_196128((*a).info, ((NU16) 224), ((NimStringDesc*) &TMP3117));
						}
						LA56: ;
					}
					LA23: ;
					{
						if (!(typ == NIM_NIL)) goto LA60;
						goto LA5;
					}
					LA60: ;
					typeallowedcheck_457987((*a).info, typ, symkind);
					tup = skiptypes_229167(typ, 2048);
					{
						if (!((*a).kind == ((NU8) 36))) goto LA64;
						{
							if (!!(((*tup).kind == ((NU8) 18)))) goto LA68;
							localerror_196128((*a).info, ((NU16) 193), ((NimStringDesc*) &TMP3581));
						}
						goto LA66;
						LA68: ;
						{
							NI LOC71;
							LOC71 = 0;
							LOC71 = sonslen_228351(tup);
							if (!!(((NI)(length - ((NI) 2)) == LOC71))) goto LA72;
							localerror_196128((*a).info, ((NU16) 115), ((NimStringDesc*) &TMP3117));
						}
						goto LA66;
						LA72: ;
						{
							b = newnodei_227351(((NU8) 36), (*a).info);
							newsons_228272(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_485706(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_226098(a);
						LOC76 = (((NI) 3) < LOC82);
						LA81: ;
						if (!LOC76) goto LA83;
						message_196161((*a).info, ((NU16) 255), ((NimStringDesc*) &TMP3117));
					}
					goto LA62;
					LA83: ;
					LA62: ;
					{
						NI j_486072;
						NI HEX3Atmp_486345;
						NI res_486348;
						j_486072 = 0;
						HEX3Atmp_486345 = 0;
						HEX3Atmp_486345 = (NI)(length - ((NI) 3));
						res_486348 = ((NI) 0);
						{
							while (1) {
								Tsym225841* v;
								if (!(res_486348 <= HEX3Atmp_486345)) goto LA87;
								j_486072 = res_486348;
								v = semidentdef_484542(c, (*a).kindU.S6.sons->data[j_486072], 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_485833(v);
									LOC90 = !(LOC92);
									LA91: ;
									if (!LOC90) goto LA93;
									addinterfacedecl_286736(c, v);
								}
								LA93: ;
								{
									if (!(((NI) 0) < (*c).inunrolledcontext)) goto LA97;
									(*v).flags |= ((NU32)1)<<((((NU8) 21))%(sizeof(NU32)*8));
								}
								goto LA95;
								LA97: ;
								{
									Tsym225841* shadowed;
									shadowed = findshadowedvar_484435(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_196161((*a).info, ((NU16) 266), ((NimStringDesc*) &TMP3117));
										}
										LA108: ;
										{
											NIM_BOOL LOC112;
											NIM_BOOL LOC114;
											LOC112 = 0;
											LOC112 = ((gnotes_191398 &(IL64(1)<<(((((NU16) 256)- 237))&IL64(63))))!=0);
											if (!(LOC112)) goto LA113;
											LOC114 = 0;
											LOC114 = identwithin_484493(def, (*v).name);
											LOC112 = !(LOC114);
											LA113: ;
											if (!LOC112) goto LA115;
											message_196161((*a).info, ((NU16) 256), (*(*v).name).s);
										}
										LA115: ;
									}
									LA102: ;
								}
								LA95: ;
								{
									Tnode225809* LOC137;
									Tnode225809* 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_196128((*def).info, ((NU16) 225), ((NimStringDesc*) &TMP3117));
										}
										LA129: ;
									}
									LA125: ;
									asgnRefNoCycle((void**) (&(*v).typ), typ);
									b = newnodei_227351(((NU8) 35), (*a).info);
									{
										NIM_BOOL LOC133;
										NimStringDesc* LOC136;
										LOC133 = 0;
										LOC133 = importantcomments_167168();
										if (!LOC133) goto LA134;
										LOC136 = 0;
										LOC136 = (*b).comment; (*b).comment = copyStringRC1((*a).comment);
										if (LOC136) nimGCunrefNoCycle(LOC136);
									}
									LA134: ;
									LOC137 = 0;
									LOC137 = newsymnode_227325(v);
									addson_227819(b, LOC137);
									addson_227819(b, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]);
									LOC138 = 0;
									LOC138 = copytree_230028(def);
									addson_227819(b, LOC138);
									addtovarsection_485706(c, &result, n, b);
								}
								goto LA117;
								LA119: ;
								{
									{
										if (!((*def).kind == ((NU8) 37))) goto LA142;
										asgnRefNoCycle((void**) (&(*v).ast), HEX5BHEX5D_226244(def, j_486072));
									}
									LA142: ;
									asgnRefNoCycle((void**) (&(*v).typ), (*tup).sons->data[j_486072]);
									asgnRefNoCycle((void**) (&(*b).kindU.S6.sons->data[j_486072]), newsymnode_227325(v));
								}
								LA117: ;
								adddefer_485799(c, &result, v);
								checknilable_484604(v);
								{
									if (!(((*v).flags &(1<<((((NU8) 23))&31)))!=0)) goto LA146;
									hascompiletime = NIM_TRUE;
								}
								LA146: ;
								res_486348 += ((NI) 1);
							} LA87: ;
						}
					}
				} LA5: ;
				res_486355 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		if (!hascompiletime) goto LA150;
		setupcompiletimevar_446255((*c).module, result);
	}
	LA150: ;
	return result;
}

N_NIMCALL(Tnode225809*, fitremovehiddenconv_484413)(Tcontext280023* c, Ttype225847* typ, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = fitnode_457245(c, typ, n);
	{
		if (!((*result).kind == ((NU8) 58) || (*result).kind == ((NU8) 59))) goto LA3;
		changetype_457253((*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_260092((*result).typ, typ, 0);
		if (!!(LOC6)) goto LA7;
		changetype_457253(result, typ, NIM_FALSE);
	}
	goto LA1;
	LA7: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, semconst_486383)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = copynode_229660(n);
	{
		NI i_486400;
		NI HEX3Atmp_486525;
		NI LOC2;
		NI res_486528;
		i_486400 = 0;
		HEX3Atmp_486525 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_486525 = (NI)(LOC2 - ((NI) 1));
		res_486528 = ((NI) 0);
		{
			while (1) {
				if (!(res_486528 <= HEX3Atmp_486525)) goto LA4;
				i_486400 = res_486528;
				{
					Tnode225809* a;
					Tsym225841* v;
					Ttype225847* typ;
					Tnode225809* def;
					Tnode225809* b;
					Tnode225809* LOC53;
					Tnode225809* LOC54;
					a = (*n).kindU.S6.sons->data[i_486400];
					{
						if (!(gcmd_167134 == ((NU8) 14))) goto LA8;
						suggeststmt_399098(c, a);
					}
					LA8: ;
					{
						if (!((*a).kind == ((NU8) 125))) goto LA12;
						goto LA5;
					}
					LA12: ;
					{
						if (!!(((*a).kind == ((NU8) 102)))) goto LA16;
						illformedast_281240(a);
					}
					LA16: ;
					checksonslen_281260(a, ((NI) 3));
					v = semidentdef_484542(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_457269(c, (*a).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
					}
					LA20: ;
					def = semconstexpr_458485(c, (*a).kindU.S6.sons->data[((NI) 2)]);
					{
						if (!(def == NIM_NIL)) goto LA24;
						localerror_196128((*(*a).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 108), ((NimStringDesc*) &TMP3117));
						goto LA5;
					}
					LA24: ;
					{
						if (!!((typ == NIM_NIL))) goto LA28;
						def = fitremovehiddenconv_484413(c, typ, def);
					}
					goto LA26;
					LA28: ;
					{
						typ = (*def).typ;
					}
					LA26: ;
					{
						if (!(typ == NIM_NIL)) goto LA33;
						localerror_196128((*(*a).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 108), ((NimStringDesc*) &TMP3117));
						goto LA5;
					}
					LA33: ;
					{
						NIM_BOOL LOC37;
						Ttype225847* LOC38;
						NimStringDesc* LOC42;
						LOC37 = 0;
						LOC38 = 0;
						LOC38 = typeallowed_263654(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_255032(typ, ((NU8) 0));
						localerror_196128((*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_286736(c, v);
					}
					LA45: ;
					b = newnodei_227351(((NU8) 102), (*a).info);
					{
						NIM_BOOL LOC49;
						NimStringDesc* LOC52;
						LOC49 = 0;
						LOC49 = importantcomments_167168();
						if (!LOC49) goto LA50;
						LOC52 = 0;
						LOC52 = (*b).comment; (*b).comment = copyStringRC1((*a).comment);
						if (LOC52) nimGCunrefNoCycle(LOC52);
					}
					LA50: ;
					LOC53 = 0;
					LOC53 = newsymnode_227325(v);
					addson_227819(b, LOC53);
					addson_227819(b, (*a).kindU.S6.sons->data[((NI) 1)]);
					LOC54 = 0;
					LOC54 = copytree_230028(def);
					addson_227819(b, LOC54);
					addson_227819(result, b);
				} LA5: ;
				res_486528 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(void, typesectionleftsidepass_487599)(Tcontext280023* c, Tnode225809* n) {
	{
		NI i_487615;
		NI HEX3Atmp_487675;
		NI LOC2;
		NI res_487678;
		i_487615 = 0;
		HEX3Atmp_487675 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_487675 = (NI)(LOC2 - ((NI) 1));
		res_487678 = ((NI) 0);
		{
			while (1) {
				if (!(res_487678 <= HEX3Atmp_487675)) goto LA4;
				i_487615 = res_487678;
				{
					Tnode225809* a;
					Tsym225841* s;
					a = (*n).kindU.S6.sons->data[i_487615];
					{
						if (!(gcmd_167134 == ((NU8) 14))) goto LA8;
						suggeststmt_399098(c, a);
					}
					LA8: ;
					{
						if (!((*a).kind == ((NU8) 125))) goto LA12;
						goto LA5;
					}
					LA12: ;
					{
						if (!!(((*a).kind == ((NU8) 103)))) goto LA16;
						illformedast_281240(a);
					}
					LA16: ;
					checksonslen_281260(a, ((NI) 3));
					s = semidentdef_484542(c, (*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 7));
					asgnRefNoCycle((void**) (&(*s).typ), newtypes_280221(((NU8) 30), c));
					asgnRefNoCycle((void**) (&(*(*s).typ).sym), s);
					{
						if (!((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 43))) goto LA20;
						pragma_297082(c, s, (*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)], TMP3537);
					}
					LA20: ;
					{
						if (!!((((*s).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA24;
						addinterfacedecl_286736(c, s);
					}
					LA24: ;
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newsymnode_227325(s));
				} LA5: ;
				res_487678 += ((NI) 1);
			} LA4: ;
		}
	}
}

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

N_NIMCALL(void, processmagictype_471315)(Tcontext280023* c, Tsym225841* m) {
	switch ((*m).magic) {
	case ((NU8) 171):
	{
		setmagictype_471304(m, ((NU8) 31), intsize_174651);
	}
	break;
	case ((NU8) 172):
	{
		setmagictype_471304(m, ((NU8) 32), ((NI) 1));
	}
	break;
	case ((NU8) 173):
	{
		setmagictype_471304(m, ((NU8) 33), ((NI) 2));
	}
	break;
	case ((NU8) 174):
	{
		setmagictype_471304(m, ((NU8) 34), ((NI) 4));
	}
	break;
	case ((NU8) 175):
	{
		setmagictype_471304(m, ((NU8) 35), ((NI) 8));
	}
	break;
	case ((NU8) 176):
	{
		setmagictype_471304(m, ((NU8) 40), intsize_174651);
	}
	break;
	case ((NU8) 177):
	{
		setmagictype_471304(m, ((NU8) 41), ((NI) 1));
	}
	break;
	case ((NU8) 178):
	{
		setmagictype_471304(m, ((NU8) 42), ((NI) 2));
	}
	break;
	case ((NU8) 179):
	{
		setmagictype_471304(m, ((NU8) 43), ((NI) 4));
	}
	break;
	case ((NU8) 180):
	{
		setmagictype_471304(m, ((NU8) 44), ((NI) 8));
	}
	break;
	case ((NU8) 181):
	{
		setmagictype_471304(m, ((NU8) 36), floatsize_174652);
	}
	break;
	case ((NU8) 182):
	{
		setmagictype_471304(m, ((NU8) 37), ((NI) 4));
	}
	break;
	case ((NU8) 183):
	{
		setmagictype_471304(m, ((NU8) 38), ((NI) 8));
	}
	break;
	case ((NU8) 184):
	{
		setmagictype_471304(m, ((NU8) 39), ((NI) 16));
	}
	break;
	case ((NU8) 185):
	{
		setmagictype_471304(m, ((NU8) 1), ((NI) 1));
	}
	break;
	case ((NU8) 186):
	{
		setmagictype_471304(m, ((NU8) 2), ((NI) 1));
	}
	break;
	case ((NU8) 187):
	{
		Ttype225847* LOC18;
		setmagictype_471304(m, ((NU8) 28), ptrsize_174653);
		LOC18 = 0;
		LOC18 = getsystype_274190(((NU8) 2));
		rawaddson_229498((*m).typ, LOC18);
	}
	break;
	case ((NU8) 188):
	{
		Ttype225847* LOC20;
		setmagictype_471304(m, ((NU8) 29), ptrsize_174653);
		LOC20 = 0;
		LOC20 = getsystype_274190(((NU8) 2));
		rawaddson_229498((*m).typ, LOC20);
	}
	break;
	case ((NU8) 189):
	{
		setmagictype_471304(m, ((NU8) 26), ptrsize_174653);
	}
	break;
	case ((NU8) 190):
	{
		Ttype225847* LOC23;
		setmagictype_471304(m, ((NU8) 19), ((NI) 1));
		LOC23 = 0;
		LOC23 = newtypes_280221(((NU8) 3), c);
		rawaddson_229498((*m).typ, LOC23);
	}
	break;
	case ((NU8) 191):
	{
		setmagictype_471304(m, ((NU8) 20), intsize_174651);
	}
	break;
	case ((NU8) 192):
	{
		setmagictype_471304(m, ((NU8) 5), ptrsize_174653);
	}
	break;
	case ((NU8) 193):
	{
		{
			if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TMP3583))) goto LA29;
			setmagictype_471304(m, ((NU8) 58), ((NI) 0));
		}
		goto LA27;
		LA29: ;
		{
			setmagictype_471304(m, ((NU8) 6), ((NI) 0));
			{
				if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TMP3564))) goto LA34;
				(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
			}
			LA34: ;
		}
		LA27: ;
	}
	break;
	case ((NU8) 194):
	{
		setmagictype_471304(m, ((NU8) 7), ((NI) 0));
		{
			if (!eqStrings((*(*m).name).s, ((NimStringDesc*) &TMP3563))) goto LA39;
			(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
		}
		LA39: ;
	}
	break;
	case ((NU8) 195):
	{
		Ttype225847* LOC42;
		setmagictype_471304(m, ((NU8) 8), ((NI) 0));
		LOC42 = 0;
		LOC42 = newtypes_280221(((NU8) 0), c);
		rawaddson_229498((*m).typ, LOC42);
	}
	break;
	case ((NU8) 196):
	{
		setmagictype_471304(m, ((NU8) 3), ((NI) 0));
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 164):
	{
		setmagictype_471304(m, ((NU8) 16), ((NI) 0));
	}
	break;
	case ((NU8) 165):
	{
		setmagictype_471304(m, ((NU8) 27), ((NI) 0));
	}
	break;
	case ((NU8) 169):
	{
		setmagictype_471304(m, ((NU8) 48), ((NI) 0));
	}
	break;
	case ((NU8) 166):
	{
		Ttype225847* LOC48;
		setmagictype_471304(m, ((NU8) 20), ((NI) 0));
		LOC48 = 0;
		LOC48 = newtypes_280221(((NU8) 0), c);
		rawaddson_229498((*m).typ, LOC48);
	}
	break;
	case ((NU8) 167):
	{
		setmagictype_471304(m, ((NU8) 19), ((NI) 0));
	}
	break;
	case ((NU8) 168):
	{
		setmagictype_471304(m, ((NU8) 24), ((NI) 0));
	}
	break;
	case ((NU8) 170):
	{
		Ttype225847* LOC52;
		setmagictype_471304(m, ((NU8) 15), ((NI) 0));
		LOC52 = 0;
		LOC52 = newtypes_280221(((NU8) 0), c);
		rawaddson_229498((*m).typ, LOC52);
	}
	break;
	case ((NU8) 197):
	{
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 28))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 198):
	{
		setmagictype_471304(m, ((NU8) 17), ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*m).typ).n), newnodei_227351(((NU8) 138), (*m).info));
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
	}
	break;
	case ((NU8) 199):
	{
		Ttype225847* LOC56;
		setmagictype_471304(m, ((NU8) 17), ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*m).typ).n), newnodei_227351(((NU8) 138), (*m).info));
		(*(*m).typ).flags |= ((NU32)1)<<((((NU8) 15))%(sizeof(NU32)*8));
		LOC56 = 0;
		LOC56 = systypefromname_274179(((NimStringDesc*) &TMP3584));
		rawaddson_229498((*m).typ, LOC56);
	}
	break;
	default:
	{
		localerror_196128((*m).info, ((NU16) 67), ((NimStringDesc*) &TMP3117));
	}
	break;
	}
}

N_NIMCALL(void, typesectionrightsidepass_487697)(Tcontext280023* c, Tnode225809* n) {
	{
		NI i_487713;
		NI HEX3Atmp_487958;
		NI LOC2;
		NI res_487961;
		i_487713 = 0;
		HEX3Atmp_487958 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_487958 = (NI)(LOC2 - ((NI) 1));
		res_487961 = ((NI) 0);
		{
			while (1) {
				if (!(res_487961 <= HEX3Atmp_487958)) goto LA4;
				i_487713 = res_487961;
				{
					Tnode225809* a;
					Tsym225841* s;
					Tnode225809* aa;
					a = (*n).kindU.S6.sons->data[i_487713];
					{
						if (!((*a).kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!!(((*a).kind == ((NU8) 103)))) goto LA12;
						illformedast_281240(a);
					}
					LA12: ;
					checksonslen_281260(a, ((NI) 3));
					{
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA16;
						illformedast_281240(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_196128((*a).info, ((NU16) 142), (*(*s).name).s);
					}
					LA22: ;
					{
						if (!!(((*s).magic == ((NU8) 0)))) goto LA26;
						processmagictype_471315(c, s);
					}
					LA26: ;
					{
						Tscope225835* LOC32;
						Ttype225847* LOC37;
						Ttype225847* body;
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA30;
						LOC32 = 0;
						LOC32 = openscope_286091(c);
						pushowner_280263(s);
						{
							if (!((*s).magic == ((NU8) 0))) goto LA35;
							(*(*s).typ).kind = ((NU8) 10);
						}
						LA35: ;
						asgnRefNoCycle((void**) (&(*(*s).typ).n), semgenericparamlist_471425(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_280221(((NU8) 0), c);
						rawaddson_229498((*s).typ, LOC37);
						asgnRefNoCycle((void**) (&(*s).ast), a);
						(*c).ingenericcontext += ((NI) 1);
						body = semtypenode_457269(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_228351((*s).typ);
							asgnRefNoCycle((void**) (&(*(*s).typ).sons->data[(NI)(LOC42 - ((NI) 1))]), body);
						}
						LA40: ;
						popowner_280269();
						closescope_286111(c);
					}
					goto LA28;
					LA30: ;
					{
						Ttype225847* t;
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA44;
						pushowner_280263(s);
						t = semtypenode_457269(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_228445((*s).typ, t);
						}
						goto LA46;
						LA51: ;
						LA46: ;
						asgnRefNoCycle((void**) (&(*s).ast), a);
						popowner_280269();
					}
					goto LA28;
					LA44: ;
					LA28: ;
					aa = (*a).kindU.S6.sons->data[((NI) 2)];
					{
						NIM_BOOL LOC55;
						NIM_BOOL LOC56;
						NI LOC58;
						Ttype225847* st;
						Ttype225847* LOC77;
						NimStringDesc* LOC78;
						Tident198021* LOC79;
						Tsym225841* LOC80;
						LOC55 = 0;
						LOC56 = 0;
						LOC56 = ((*aa).kind == ((NU8) 141) || (*aa).kind == ((NU8) 142));
						if (!(LOC56)) goto LA57;
						LOC58 = 0;
						LOC58 = len_226098(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_228426(st);
						}
						LA64: ;
						{
							NimStringDesc* LOC70;
							if (!!(((*st).kind == ((NU8) 21) || (*st).kind == ((NU8) 22)))) goto LA68;
							LOC70 = 0;
							LOC70 = HEX24_196279(TMP3585);
							internalerror_196191(LOC70);
						}
						LA68: ;
						{
							Ttype225847* LOC73;
							NimStringDesc* LOC76;
							LOC73 = 0;
							LOC73 = lastson_228426(st);
							if (!!(((*LOC73).sym == NIM_NIL))) goto LA74;
							LOC76 = 0;
							LOC76 = HEX24_196279(TMP3587);
							internalerror_196191(LOC76);
						}
						LA74: ;
						LOC77 = 0;
						LOC77 = lastson_228426(st);
						LOC78 = 0;
						LOC78 = rawNewString((*(*s).name).s->Sup.len + 11);
appendString(LOC78, (*(*s).name).s);
appendString(LOC78, ((NimStringDesc*) &TMP3588));
						LOC79 = 0;
						LOC79 = getident_198463(LOC78);
						LOC80 = 0;
						LOC80 = getcurrowner_280258();
						asgnRefNoCycle((void**) (&(*LOC77).sym), newsym_226656(((NU8) 7), LOC79, LOC80, (*s).info));
					}
					LA60: ;
				} LA5: ;
				res_487961 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, checkformetafields_487980)(Tnode225809* n) {
{	{
		if (!n == 0) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 138):
	case ((NU8) 139):
	{
		{
			Tnode225809* s_488000;
			s_488000 = 0;
			{
				NI i_488107;
				NI HEX3Atmp_488109;
				NI LOC8;
				NI res_488111;
				i_488107 = 0;
				HEX3Atmp_488109 = 0;
				LOC8 = 0;
				LOC8 = len_226098(n);
				HEX3Atmp_488109 = (LOC8 - 1);
				res_488111 = ((NI) 0);
				{
					while (1) {
						if (!(res_488111 <= HEX3Atmp_488109)) goto LA10;
						i_488107 = res_488111;
						s_488000 = (*n).kindU.S6.sons->data[i_488107];
						checkformetafields_487980(s_488000);
						res_488111 += ((NI) 1);
					} LA10: ;
				}
			}
		}
	}
	break;
	case ((NU8) 85):
	case ((NU8) 88):
	{
		Tnode225809* LOC12;
		LOC12 = 0;
		LOC12 = lastson_228406(n);
		checkformetafields_487980(LOC12);
	}
	break;
	case ((NU8) 3):
	{
		Ttype225847* 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_488051;
				NI HEX3Atmp_488115;
				NI res_488118;
				i_488051 = 0;
				HEX3Atmp_488115 = 0;
				HEX3Atmp_488115 = (((*t).sons ? (*t).sons->Sup.len : 0) - 1);
				res_488118 = ((NI) (start));
				{
					while (1) {
						if (!(res_488118 <= HEX3Atmp_488115)) goto LA17;
						i_488051 = res_488118;
						{
							NIM_BOOL LOC20;
							NIM_BOOL LOC21;
							NimStringDesc* LOC26;
							LOC20 = 0;
							LOC21 = 0;
							LOC21 = !(((*t).sons->data[i_488051] == NIM_NIL));
							if (!(LOC21)) goto LA22;
							LOC21 = ismetatype_226821((*t).sons->data[i_488051]);
							LA22: ;
							LOC20 = LOC21;
							if (!(LOC20)) goto LA23;
							LOC20 = !((((*(*t).sons->data[i_488051]).flags &(1<<((((NU8) 23))&31)))!=0));
							LA23: ;
							if (!LOC20) goto LA24;
							LOC26 = 0;
							LOC26 = typetostring_255032((*t).sons->data[i_488051], ((NU8) 0));
							localerror_196128((*n).info, ((NU16) 194), LOC26);
						}
						LA24: ;
						res_488118 += ((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_226821(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_255032(t, ((NU8) 0));
				localerror_196128((*n).info, ((NU16) 194), LOC36);
			}
			LA34: ;
		}
		break;
		}
	}
	break;
	default:
	{
		{
			NimStringDesc* LOC42;
			if (!NIM_TRUE) goto LA40;
			LOC42 = 0;
			LOC42 = HEX24_196279(TMP3589);
			internalerror_196191(LOC42);
		}
		LA40: ;
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(void, typesectionfinalpass_488146)(Tcontext280023* c, Tnode225809* n) {
	{
		NI i_488162;
		NI HEX3Atmp_488251;
		NI LOC2;
		NI res_488254;
		i_488162 = 0;
		HEX3Atmp_488251 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_488251 = (NI)(LOC2 - ((NI) 1));
		res_488254 = ((NI) 0);
		{
			while (1) {
				if (!(res_488254 <= HEX3Atmp_488251)) goto LA4;
				i_488162 = res_488254;
				{
					Tnode225809* a;
					Tsym225841* s;
					a = (*n).kindU.S6.sons->data[i_488162];
					{
						if (!((*a).kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA12;
						illformedast_281240(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;
						{
							Ttype225847* 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_457269(c, (*a).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
							{
								if (!((*t).kind == ((NU8) 17) || (*t).kind == ((NU8) 14))) goto LA24;
								assigntype_228445((*s).typ, t);
								(*(*s).typ).Sup.id = (*t).Sup.id;
							}
							LA24: ;
						}
						LA20: ;
						checkconstructedtype_302110((*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_487980((*(*s).typ).n);
						}
						LA30: ;
					}
					LA16: ;
				} LA5: ;
				res_488254 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode225809*, semtypesection_488685)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* 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_487599(c, n);
		typesectionrightsidepass_487697(c, n);
		typesectionfinalpass_488146(c, n);
	}
	LA5: ;
	result = n;
	return result;
}

N_NIMCALL(Tnode225809*, semdiscard_481406)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = n;
	checksonslen_281260(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_457211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = isemptytype_230932((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			if (!LOC7) goto LA8;
			localerror_196128((*n).info, ((NU16) 145), ((NimStringDesc*) &TMP3117));
		}
		LA8: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode225809*, semwhile_481617)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tscope225835* LOC1;
	Tnode225809* LOC2;
	result = 0;
	result = n;
	checksonslen_281260(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	LOC2 = 0;
	LOC2 = semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), forcebool_464829(c, LOC2));
	(*(*c).p).nestedloopcounter += ((NI) 1);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semstmt_457277(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	closescope_286111(c);
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 1)]).typ == enforcevoidcontext_481405)) goto LA5;
		asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_481405);
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode225809*, sembreakorcontinue_481427)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = n;
	checksonslen_281260(n, ((NI) 1));
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA3;
		{
			Tsym225841* s;
			if (!!(((*n).kind == ((NU8) 111)))) goto LA7;
			s = 0;
			switch ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind) {
			case ((NU8) 2):
			{
				s = lookup_286804(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_281240(n);
			}
			break;
			}
			{
				NIM_BOOL LOC14;
				Tnode225809* 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_227325(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_398733((*x).info, s);
			}
			goto LA12;
			LA16: ;
			{
				localerror_196128((*n).info, ((NU16) 168), (*(*s).name).s);
			}
			LA12: ;
		}
		goto LA5;
		LA7: ;
		{
			localerror_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3590));
		}
		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_247059(n, 4);
		localerror_196128((*n).info, ((NU16) 168), LOC25);
	}
	goto LA1;
	LA23: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, semexprnoderef_457228)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	result = 0;
	result = semexpr_457201(c, n, flags);
	{
		if (!((*result).kind == ((NU8) 1))) goto LA3;
		result = errornode_281171(c, n);
	}
	LA3: ;
	{
		NimStringDesc* LOC9;
		if (!((*result).typ == NIM_NIL)) goto LA7;
		LOC9 = 0;
		LOC9 = rendertree_247059(result, 4);
		localerror_196128((*n).info, ((NU16) 94), LOC9);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_281161(c));
	}
	goto LA5;
	LA7: ;
	{
		semprocvarcheck_481766(c, result);
		semdestructorcheck_482851(c, result, flags);
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tsym225841*, symforvar_487108)(Tcontext280023* c, Tnode225809* n) {
	Tsym225841* result;
	Tnode225809* 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_457916(((NU8) 21), m, c);
	return result;
}

N_NIMCALL(void, addforvardecl_487076)(Tcontext280023* c, Tsym225841* v) {
	{
		Tsym225841* shadowed;
		if (!((gnotes_191398 &(IL64(1)<<(((((NU16) 256)- 237))&IL64(63))))!=0)) goto LA3;
		shadowed = findshadowedvar_484435(c, v);
		{
			if (!!((shadowed == NIM_NIL))) goto LA7;
			message_196161((*v).info, ((NU16) 256), (*(*v).name).s);
		}
		LA7: ;
	}
	LA3: ;
	adddecl_286607(c, v);
}

N_NIMCALL(Tnode225809*, semforvars_487204)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	NI length;
	Ttype225847* iterbase;
	Ttype225847* iter;
	result = 0;
	result = n;
	length = sonslen_228387(n);
	iterbase = skiptypes_229167((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).typ, IL64(562949953421312));
	iter = skiptypes_229167(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;
		{
			Tsym225841* v;
			if (!(length == ((NI) 3))) goto LA9;
			v = symforvar_487108(c, (*n).kindU.S6.sons->data[((NI) 0)]);
			{
				Tsym225841* LOC13;
				LOC13 = 0;
				LOC13 = getcurrowner_280258();
				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_227325(v));
			{
				if (!!((((*v).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA18;
				addforvardecl_487076(c, v);
			}
			LA18: ;
		}
		goto LA7;
		LA9: ;
		{
			localerror_196128((*n).info, ((NU16) 115), ((NimStringDesc*) &TMP3117));
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		NI LOC22;
		LOC22 = 0;
		LOC22 = sonslen_228351(iter);
		if (!!(((NI)(length - ((NI) 2)) == LOC22))) goto LA23;
		localerror_196128((*n).info, ((NU16) 115), ((NimStringDesc*) &TMP3117));
	}
	goto LA1;
	LA23: ;
	{
		{
			NI i_487271;
			NI HEX3Atmp_487328;
			NI res_487331;
			i_487271 = 0;
			HEX3Atmp_487328 = 0;
			HEX3Atmp_487328 = (NI)(length - ((NI) 3));
			res_487331 = ((NI) 0);
			{
				while (1) {
					Tsym225841* v;
					if (!(res_487331 <= HEX3Atmp_487328)) goto LA28;
					i_487271 = res_487331;
					v = symforvar_487108(c, (*n).kindU.S6.sons->data[i_487271]);
					{
						Tsym225841* LOC31;
						LOC31 = 0;
						LOC31 = getcurrowner_280258();
						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_487271]);
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_487271]), newsymnode_227325(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_485833(v);
						LOC36 = !(LOC38);
						LA37: ;
						if (!LOC36) goto LA39;
						addforvardecl_487076(c, v);
					}
					LA39: ;
					res_487331 += ((NI) 1);
				} LA28: ;
			}
		}
	}
	LA1: ;
	(*(*c).p).nestedloopcounter += ((NI) 1);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]), semstmt_457277(c, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]));
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Tnode225809*, instfieldloopbody_486553)(Tfieldinstctx486548 c, Tnode225809* n, Tnode225809* forloop) {
	Tnode225809* 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):
	{
		Tident198021* ident;
		NI L;
		result = n;
		ident = considerquotedident_286010(n);
		L = sonslen_228387(forloop);
		{
			if (!c.replacebyfieldname) goto LA5;
			{
				Tnode225809* LOC9;
				Tident198021* LOC10;
				NimStringDesc* fieldname;
				LOC9 = 0;
				LOC9 = HEX5BHEX5D_226244(forloop, ((NI) 0));
				LOC10 = 0;
				LOC10 = considerquotedident_286010(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*) &TMP3594));
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_226644(((NU8) 20), fieldname);
				goto BeforeRet;
			}
			LA11: ;
		}
		LA5: ;
		{
			NI i_486621;
			NI HEX3Atmp_486672;
			NI HEX3Atmp_486673;
			NI res_486676;
			i_486621 = 0;
			HEX3Atmp_486672 = 0;
			HEX3Atmp_486673 = 0;
			HEX3Atmp_486672 = c.replacebyfieldname;
			HEX3Atmp_486673 = (NI)(L - ((NI) 3));
			res_486676 = ((NI) (HEX3Atmp_486672));
			{
				while (1) {
					if (!(res_486676 <= HEX3Atmp_486673)) goto LA25;
					i_486621 = res_486676;
					{
						Tnode225809* LOC28;
						Tident198021* LOC29;
						Tnode225809* call;
						Tnode225809* tupl;
						LOC28 = 0;
						LOC28 = HEX5BHEX5D_226244(forloop, i_486621);
						LOC29 = 0;
						LOC29 = considerquotedident_286010(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_486621 + ((NI) 1)) - ((NI) (c.replacebyfieldname)))];
						{
							Tnode225809* LOC36;
							if (!c.field == 0) goto LA34;
							result = newnodei_227351(((NU8) 42), (*n).info);
							add_226165(result, tupl);
							LOC36 = 0;
							LOC36 = newintnode_226608(((NU8) 6), ((NI64) (c.tupleindex)));
							add_226165(result, LOC36);
						}
						goto LA32;
						LA34: ;
						{
							Tnode225809* LOC38;
							result = newnodei_227351(((NU8) 45), (*n).info);
							add_226165(result, tupl);
							LOC38 = 0;
							LOC38 = newsymnode_227338(c.field, (*n).info);
							add_226165(result, LOC38);
						}
						LA32: ;
						goto LA23;
					}
					LA30: ;
					res_486676 += ((NI) 1);
				} LA25: ;
			}
		} LA23: ;
	}
	break;
	default:
	{
		NI LOC44;
		{
			if (!((*n).kind == ((NU8) 111))) goto LA42;
			localerror_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3595));
		}
		LA42: ;
		result = copynode_229660(n);
		LOC44 = 0;
		LOC44 = sonslen_228387(n);
		newsons_228272(result, LOC44);
		{
			NI i_486668;
			NI HEX3Atmp_486681;
			NI LOC46;
			NI res_486684;
			i_486668 = 0;
			HEX3Atmp_486681 = 0;
			LOC46 = 0;
			LOC46 = sonslen_228387(n);
			HEX3Atmp_486681 = (NI)(LOC46 - ((NI) 1));
			res_486684 = ((NI) 0);
			{
				while (1) {
					if (!(res_486684 <= HEX3Atmp_486681)) goto LA48;
					i_486668 = res_486684;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_486668]), instfieldloopbody_486553(c, (*n).kindU.S6.sons->data[i_486668], forloop));
					res_486684 += ((NI) 1);
				} LA48: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, semforobjectfields_486713)(Tfieldsctx486710 c, Tnode225809* typ, Tnode225809* forloop, Tnode225809* father) {
{	switch ((*typ).kind) {
	case ((NU8) 3):
	{
		Tfieldinstctx486548 fc;
		Tscope225835* LOC2;
		Tnode225809* body;
		Tnode225809* LOC3;
		Tnode225809* LOC4;
		memset((void*)(&fc), 0, sizeof(fc));
		fc.field = (*typ).kindU.S4.sym;
		fc.replacebyfieldname = (c.m == ((NU8) 141));
		LOC2 = 0;
		LOC2 = openscope_286091(c.c);
		(*c.c).inunrolledcontext += ((NI) 1);
		LOC3 = 0;
		LOC3 = lastson_228406(forloop);
		body = instfieldloopbody_486553(fc, LOC3, forloop);
		LOC4 = 0;
		LOC4 = semstmt_457277(c.c, body);
		add_226165(father, LOC4);
		(*c.c).inunrolledcontext -= ((NI) 1);
		closescope_286111(c.c);
	}
	break;
	case ((NU8) 23):
	{
	}
	break;
	case ((NU8) 139):
	{
		NI L_486751;
		Tnode225809* call;
		Tnode225809* LOC12;
		Tnode225809* casestmt;
		Tnode225809* access;
		Tnode225809* LOC13;
		L_486751 = len_226098(forloop);
		call = (*forloop).kindU.S6.sons->data[(NI)(L_486751 - ((NI) 2))];
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_226098(call);
			if (!(((NI) 2) < LOC9)) goto LA10;
			localerror_196128((*forloop).info, ((NU16) 4), ((NimStringDesc*) &TMP3596));
			goto BeforeRet;
		}
		LA10: ;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_226244(typ, ((NI) 0));
		semforobjectfields_486713(c, LOC12, forloop, father);
		casestmt = newnodei_227351(((NU8) 97), (*forloop).info);
		access = newnodei_227407(((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_227338((*(*typ).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym, (*forloop).info));
		LOC13 = 0;
		LOC13 = semexprwithtype_457211(c.c, access, 0);
		add_226165(casestmt, LOC13);
		{
			NI i_486782;
			NI HEX3Atmp_486793;
			NI LOC15;
			NI res_486796;
			i_486782 = 0;
			HEX3Atmp_486793 = 0;
			LOC15 = 0;
			LOC15 = len_226098(typ);
			HEX3Atmp_486793 = (LOC15 - 1);
			res_486796 = ((NI) 1);
			{
				while (1) {
					Tnode225809* branch;
					Tnode225809* LOC18;
					NI L;
					Tnode225809* LOC19;
					Tnode225809* LOC20;
					Tnode225809* LOC21;
					if (!(res_486796 <= HEX3Atmp_486793)) goto LA17;
					i_486782 = res_486796;
					LOC18 = 0;
					LOC18 = HEX5BHEX5D_226244(typ, i_486782);
					branch = copytree_230028(LOC18);
					L = len_226098(branch);
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), newnodei_227351(((NU8) 115), (*forloop).info));
					LOC19 = 0;
					LOC19 = HEX5BHEX5D_226244(typ, i_486782);
					LOC20 = 0;
					LOC20 = lastson_228406(LOC19);
					LOC21 = 0;
					LOC21 = HEX5BHEX5D_226244(branch, (NI)(L - ((NI) 1)));
					semforobjectfields_486713(c, LOC20, forloop, LOC21);
					add_226165(casestmt, branch);
					res_486796 += ((NI) 1);
				} LA17: ;
			}
		}
		add_226165(father, casestmt);
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode225809* t_486790;
			t_486790 = 0;
			{
				NI i_486804;
				NI HEX3Atmp_486806;
				NI LOC25;
				NI res_486808;
				i_486804 = 0;
				HEX3Atmp_486806 = 0;
				LOC25 = 0;
				LOC25 = len_226098(typ);
				HEX3Atmp_486806 = (LOC25 - 1);
				res_486808 = ((NI) 0);
				{
					while (1) {
						if (!(res_486808 <= HEX3Atmp_486806)) goto LA27;
						i_486804 = res_486808;
						t_486790 = (*typ).kindU.S6.sons->data[i_486804];
						semforobjectfields_486713(c, t_486790, forloop, father);
						res_486808 += ((NI) 1);
					} LA27: ;
				}
			}
		}
	}
	break;
	default:
	{
		illformedastlocal_281250(typ);
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode225809*, semforfields_486835)(Tcontext280023* c, Tnode225809* n, NU8 m) {
	Tnode225809* result;
	Tsym225841* truesymbol;
	Tident198021* LOC1;
	Tnode225809* stmts;
	NI length;
	Tnode225809* call;
	Ttype225847* tupletypea;
{	result = 0;
	result = newnodei_227407(((NU8) 96), (*n).info, ((NI) 2));
	LOC1 = 0;
	LOC1 = getident_198463(((NimStringDesc*) &TMP3591));
	truesymbol = strtableget_233111((*systemmodule_274019).kindU.S3.tab, LOC1);
	{
		Tident198021* LOC6;
		Tsym225841* LOC7;
		if (!(truesymbol == NIM_NIL)) goto LA4;
		localerror_196128((*n).info, ((NU16) 68), ((NimStringDesc*) &TMP3592));
		LOC6 = 0;
		LOC6 = getident_198463(((NimStringDesc*) &TMP3591));
		LOC7 = 0;
		LOC7 = getcurrowner_280258();
		truesymbol = newsym_226656(((NU8) 0), LOC6, LOC7, (*n).info);
		asgnRefNoCycle((void**) (&(*truesymbol).typ), getsystype_274190(((NU8) 1)));
	}
	LA4: ;
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_227338(truesymbol, (*n).info));
	stmts = newnodei_227351(((NU8) 115), (*n).info);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), stmts);
	length = sonslen_228387(n);
	call = (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))];
	{
		NI LOC10;
		LOC10 = 0;
		LOC10 = sonslen_228387(call);
		if (!!(((NI)(length - ((NI) 2)) == (NI)((NI)(LOC10 - ((NI) 1)) + ((NI) ((m == ((NU8) 141)))))))) goto LA11;
		localerror_196128((*n).info, ((NU16) 115), ((NimStringDesc*) &TMP3117));
		goto BeforeRet;
	}
	LA11: ;
	tupletypea = skiptypes_229167((*(*call).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106240964608));
	{
		if (!!(((*tupletypea).kind == ((NU8) 18) || (*tupletypea).kind == ((NU8) 17)))) goto LA15;
		localerror_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3593));
		goto BeforeRet;
	}
	LA15: ;
	{
		NI i_486916;
		NI HEX3Atmp_487031;
		NI LOC18;
		NI res_487034;
		i_486916 = 0;
		HEX3Atmp_487031 = 0;
		LOC18 = 0;
		LOC18 = len_226098(call);
		HEX3Atmp_487031 = (NI)(LOC18 - ((NI) 1));
		res_487034 = ((NI) 1);
		{
			while (1) {
				Ttype225847* tupletypeb;
				if (!(res_487034 <= HEX3Atmp_487031)) goto LA20;
				i_486916 = res_487034;
				tupletypeb = skiptypes_229167((*(*call).kindU.S6.sons->data[i_486916]).typ, IL64(211106240964608));
				{
					NIM_BOOL LOC23;
					LOC23 = 0;
					LOC23 = sametype_260092(tupletypea, tupletypeb, 0);
					if (!!(LOC23)) goto LA24;
					typemismatch_457379((*call).kindU.S6.sons->data[i_486916], tupletypea, tupletypeb);
				}
				LA24: ;
				res_487034 += ((NI) 1);
			} LA20: ;
		}
	}
	(*(*c).p).nestedloopcounter += ((NI) 1);
	{
		Tnode225809* loopbody;
		if (!((*tupletypea).kind == ((NU8) 18))) goto LA28;
		loopbody = (*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))];
		{
			NI i_486963;
			NI HEX3Atmp_487040;
			NI LOC31;
			NI res_487043;
			i_486963 = 0;
			HEX3Atmp_487040 = 0;
			LOC31 = 0;
			LOC31 = sonslen_228351(tupletypea);
			HEX3Atmp_487040 = (NI)(LOC31 - ((NI) 1));
			res_487043 = ((NI) 0);
			{
				while (1) {
					Tscope225835* LOC34;
					Tfieldinstctx486548 fc;
					Tnode225809* body;
					Tnode225809* LOC35;
					if (!(res_487043 <= HEX3Atmp_487040)) goto LA33;
					i_486963 = res_487043;
					LOC34 = 0;
					LOC34 = openscope_286091(c);
					memset((void*)(&fc), 0, sizeof(fc));
					fc.tupletype = tupletypea;
					fc.tupleindex = i_486963;
					fc.replacebyfieldname = (m == ((NU8) 141));
					body = instfieldloopbody_486553(fc, loopbody, n);
					(*c).inunrolledcontext += ((NI) 1);
					LOC35 = 0;
					LOC35 = semstmt_457277(c, body);
					add_226165(stmts, LOC35);
					(*c).inunrolledcontext -= ((NI) 1);
					closescope_286111(c);
					res_487043 += ((NI) 1);
				} LA33: ;
			}
		}
	}
	goto LA26;
	LA28: ;
	{
		Tfieldsctx486710 fc;
		Ttype225847* 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_486713(fc, (*t).n, n, stmts);
				{
					if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA41;
					goto LA37;
				}
				LA41: ;
				t = skiptypes_229167((*t).sons->data[((NI) 0)], IL64(211106247256320));
			} LA38: ;
		} LA37: ;
	}
	LA26: ;
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	{
		NIM_BOOL LOC45;
		Tnode225809* b;
		LOC45 = 0;
		LOC45 = containsnode_230365(stmts, TMP3597);
		if (!LOC45) goto LA46;
		b = newnodei_227351(((NU8) 110), (*n).info);
		add_226165(b, emptynode_226807);
		add_226165(stmts, b);
	}
	goto LA43;
	LA46: ;
	{
		result = stmts;
	}
	LA43: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, implicititerator_487347)(Tcontext280023* c, NimStringDesc* it, Tnode225809* arg) {
	Tnode225809* result;
	Tident198021* LOC1;
	Tnode225809* LOC2;
	result = 0;
	result = newnodei_227351(((NU8) 27), (*arg).info);
	LOC1 = 0;
	LOC1 = getident_198463(it);
	LOC2 = 0;
	LOC2 = newidentnode_227313(LOC1, (*arg).info);
	add_226165(result, LOC2);
	{
		NIM_BOOL LOC5;
		Tnode225809* 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_402024(arg);
		add_226165(result, LOC9);
	}
	goto LA3;
	LA7: ;
	{
		add_226165(result, arg);
	}
	LA3: ;
	result = semexprnoderef_457228(c, result, 2);
	return result;
}

N_NIMCALL(Tnode225809*, semfor_487381)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	NI length;
	Tscope225835* LOC1;
	Tnode225809* call;
	NIM_BOOL iscallexpr;
	result = 0;
	result = n;
	checkminsonslen_281270(n, ((NI) 3));
	length = sonslen_228387(n);
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]), semexprnoderef_457228(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;
		Tnode225809* LOC7;
		Tnode225809* LOC9;
		LOC4 = 0;
		LOC5 = 0;
		LOC5 = iscallexpr;
		if (!(LOC5)) goto LA6;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_226244(call, ((NI) 0));
		LOC5 = ((*LOC7).kind == ((NU8) 3));
		LA6: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA8;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_226244(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_487204(c, n);
			(*result).kind = ((NU8) 95);
		}
		goto LA12;
		LA14: ;
		{
			result = semforfields_486835(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_487204(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_487347(c, ((NimStringDesc*) &TMP3598), (*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_487347(c, ((NimStringDesc*) &TMP3599), (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]));
		}
		goto LA31;
		LA36: ;
		{
			localerror_196128((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).info, ((NU16) 223), ((NimStringDesc*) &TMP3117));
		}
		LA31: ;
		result = semforvars_487204(c, n);
	}
	goto LA2;
	LA29: ;
	{
		result = semforvars_487204(c, n);
	}
	LA2: ;
	{
		if (!((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).typ == enforcevoidcontext_481405)) goto LA42;
		asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_481405);
	}
	LA42: ;
	closescope_286111(c);
	return result;
}

N_NIMCALL(NI64, tocover_481659)(Ttype225847* t) {
	NI64 result;
	Ttype225847* t2;
	result = 0;
	t2 = skiptypes_229167(t, IL64(211106242013184));
	{
		NIM_BOOL LOC3;
		NI LOC7;
		LOC3 = 0;
		LOC3 = ((*t2).kind == ((NU8) 14));
		if (!(LOC3)) goto LA4;
		LOC3 = enumhasholes_255099(t2);
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		LOC7 = sonslen_228387((*t2).n);
		result = ((NI64) (LOC7));
	}
	goto LA1;
	LA5: ;
	{
		Ttype225847* LOC9;
		LOC9 = 0;
		LOC9 = skiptypes_229167(t, IL64(211106240964608));
		result = lengthord_255016(LOC9);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, semcase_483701)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tscope225835* LOC1;
	NIM_BOOL chckcovered;
	NI64 covered;
	Ttype225847* typ;
	NIM_BOOL haselse;
	NIM_BOOL notordinal;
	Ttype225847* LOC2;
{	result = 0;
	result = n;
	checkminsonslen_281270(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_286091(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
	chckcovered = NIM_FALSE;
	covered = IL64(0);
	typ = commontypebegin_457472;
	haselse = NIM_FALSE;
	notordinal = NIM_FALSE;
	LOC2 = 0;
	LOC2 = skiptypes_229167((*(*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_196128((*n).info, ((NU16) 111), ((NimStringDesc*) &TMP3117));
		goto BeforeRet;
	}
	break;
	}
	{
		NI i_483739;
		NI HEX3Atmp_484062;
		NI LOC7;
		NI res_484065;
		i_483739 = 0;
		HEX3Atmp_484062 = 0;
		LOC7 = 0;
		LOC7 = sonslen_228387(n);
		HEX3Atmp_484062 = (NI)(LOC7 - ((NI) 1));
		res_484065 = ((NI) 1);
		{
			while (1) {
				Tnode225809* x;
				if (!(res_484065 <= HEX3Atmp_484062)) goto LA9;
				i_483739 = res_484065;
				x = (*n).kindU.S6.sons->data[i_483739];
				switch ((*x).kind) {
				case ((NU8) 85):
				{
					NI last;
					NI LOC11;
					checkminsonslen_281270(x, ((NI) 2));
					semcasebranch_467147(c, n, x, i_483739, (&covered));
					LOC11 = 0;
					LOC11 = sonslen_228387(x);
					last = (NI)(LOC11 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[last]), semexprbranchscope_483035(c, (*x).kindU.S6.sons->data[last]));
					typ = commontype_457477(typ, (*(*x).kindU.S6.sons->data[last]).typ);
				}
				break;
				case ((NU8) 86):
				{
					Tscope225835* LOC13;
					Tnode225809* LOC14;
					chckcovered = NIM_FALSE;
					checksonslen_281260(x, ((NI) 2));
					LOC13 = 0;
					LOC13 = openscope_286091(c);
					LOC14 = 0;
					LOC14 = semexprwithtype_457211(c, (*x).kindU.S6.sons->data[((NI) 0)], 0);
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 0)]), forcebool_464829(c, LOC14));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 1)]), semexprbranch_483004(c, (*x).kindU.S6.sons->data[((NI) 1)]));
					typ = commontype_457477(typ, (*(*x).kindU.S6.sons->data[((NI) 1)]).typ);
					closescope_286111(c);
				}
				break;
				case ((NU8) 88):
				{
					chckcovered = NIM_FALSE;
					checksonslen_281260(x, ((NI) 1));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_483035(c, (*x).kindU.S6.sons->data[((NI) 0)]));
					typ = commontype_457477(typ, (*(*x).kindU.S6.sons->data[((NI) 0)]).typ);
					haselse = NIM_TRUE;
				}
				break;
				default:
				{
					illformedast_281240(x);
				}
				break;
				}
				res_484065 += ((NI) 1);
			} LA9: ;
		}
	}
	{
		NIM_BOOL LOC19;
		LOC19 = 0;
		LOC19 = notordinal;
		if (!(LOC19)) goto LA20;
		LOC19 = !(haselse);
		LA20: ;
		if (!LOC19) goto LA21;
		message_196161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3600));
	}
	LA21: ;
	{
		if (!chckcovered) goto LA25;
		{
			NI64 LOC29;
			LOC29 = 0;
			LOC29 = tocover_481659((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			if (!(covered == LOC29)) goto LA30;
			haselse = NIM_TRUE;
		}
		goto LA27;
		LA30: ;
		{
			localerror_196128((*n).info, ((NU16) 155), ((NimStringDesc*) &TMP3117));
		}
		LA27: ;
	}
	LA25: ;
	closescope_286111(c);
	{
		NIM_BOOL LOC35;
		NIM_BOOL LOC36;
		LOC35 = 0;
		LOC36 = 0;
		LOC36 = isemptytype_230932(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_484028;
			NI HEX3Atmp_484070;
			NI LOC42;
			NI res_484073;
			i_484028 = 0;
			HEX3Atmp_484070 = 0;
			LOC42 = 0;
			LOC42 = len_226098(n);
			HEX3Atmp_484070 = (NI)(LOC42 - ((NI) 1));
			res_484073 = ((NI) 1);
			{
				while (1) {
					Tnode225809* LOC45;
					if (!(res_484073 <= HEX3Atmp_484070)) goto LA44;
					i_484028 = res_484073;
					LOC45 = 0;
					LOC45 = lastson_228406((*n).kindU.S6.sons->data[i_484028]);
					discardcheck_483156(c, LOC45);
					res_484073 += ((NI) 1);
				} LA44: ;
			}
		}
		{
			if (!(typ == enforcevoidcontext_481405)) goto LA48;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_481405);
		}
		LA48: ;
	}
	goto LA33;
	LA39: ;
	{
		{
			NI i_484053;
			NI HEX3Atmp_484078;
			NI LOC52;
			NI res_484081;
			i_484053 = 0;
			HEX3Atmp_484078 = 0;
			LOC52 = 0;
			LOC52 = len_226098(n);
			HEX3Atmp_484078 = (NI)(LOC52 - ((NI) 1));
			res_484081 = ((NI) 1);
			{
				while (1) {
					Tnode225809* it;
					NI j;
					NI LOC55;
					if (!(res_484081 <= HEX3Atmp_484078)) goto LA54;
					i_484053 = res_484081;
					it = (*n).kindU.S6.sons->data[i_484053];
					LOC55 = 0;
					LOC55 = len_226098(it);
					j = (NI)(LOC55 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[j]), fitnode_457245(c, typ, (*it).kindU.S6.sons->data[j]));
					res_484081 += ((NI) 1);
				} LA54: ;
			}
		}
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA33: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semreturn_498777)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = n;
	checksonslen_281260(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;
			{
				Tnode225809* a;
				Tnode225809* LOC13;
				if (!!(((*(*c).p).resultsym == NIM_NIL))) goto LA11;
				a = newnodei_227351(((NU8) 73), (*(*n).kindU.S6.sons->data[((NI) 0)]).info);
				LOC13 = 0;
				LOC13 = newsymnode_227325((*(*c).p).resultsym);
				addson_227819(a, LOC13);
				addson_227819(a, (*n).kindU.S6.sons->data[((NI) 0)]);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semasgn_495310(c, a, ((NU8) 0)));
				{
					NIM_BOOL LOC16;
					Tnode225809* LOC17;
					Tnode225809* LOC18;
					Tnode225809* LOC20;
					Tnode225809* LOC21;
					LOC16 = 0;
					LOC17 = 0;
					LOC17 = HEX5BHEX5D_226244(n, ((NI) 0));
					LOC18 = 0;
					LOC18 = HEX5BHEX5D_226244(LOC17, ((NI) 1));
					LOC16 = ((*LOC18).kind == ((NU8) 3));
					if (!(LOC16)) goto LA19;
					LOC20 = 0;
					LOC20 = HEX5BHEX5D_226244(n, ((NI) 0));
					LOC21 = 0;
					LOC21 = HEX5BHEX5D_226244(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_226807);
				}
				LA22: ;
			}
			goto LA9;
			LA11: ;
			{
				localerror_196128((*n).info, ((NU16) 183), ((NimStringDesc*) &TMP3117));
			}
			LA9: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		localerror_196128((*n).info, ((NU16) 167), ((NimStringDesc*) &TMP3601));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, semusing_499354)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = newnodei_227351(((NU8) 1), (*n).info);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = experimentalmode_281290(c);
		if (!!(LOC3)) goto LA4;
		localerror_196139((*n).info, ((NimStringDesc*) &TMP3602));
	}
	LA4: ;
	{
		Tnode225809* e_499369;
		Tnodeseq225803* HEX3Atmp_499409;
		NI i_499412;
		NI L_499414;
		e_499369 = 0;
		HEX3Atmp_499409 = 0;
		HEX3Atmp_499409 = (*n).kindU.S6.sons;
		i_499412 = ((NI) 0);
		L_499414 = (HEX3Atmp_499409 ? HEX3Atmp_499409->Sup.len : 0);
		{
			while (1) {
				if (!(i_499412 < L_499414)) goto LA8;
				e_499369 = HEX3Atmp_499409->data[i_499412];
				{
					Tnode225809* usedsym;
					NimStringDesc* LOC17;
					usedsym = semexpr_457201(c, e_499369, 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_461504((&(*(*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_286629((*c).currentscope, (*usedsym).kindU.S4.sym);
							goto LA9;
						}
						break;
						default:
						{
						}
						break;
						}
					}
					LA12: ;
					LOC17 = 0;
					LOC17 = rendertree_247059(e_499369, 0);
					localerror_196128((*e_499369).info, ((NU16) 205), LOC17);
				} LA9: ;
				i_499412 += ((NI) 1);
			} LA8: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode225809*, semasm_481607)(Tcontext280023* con, Tnode225809* n) {
	Tnode225809* result;
	NIM_CHAR marker;
	result = 0;
	checksonslen_281260(n, ((NI) 2));
	marker = pragmaasm_297101(con, (*n).kindU.S6.sons->data[((NI) 0)]);
	{
		if (!((NU8)(marker) == (NU8)(0))) goto LA3;
		marker = 96;
	}
	LA3: ;
	result = semasmoremit_298737(con, n, marker);
	return result;
}

N_NIMCALL(void, semyieldvarresult_498942)(Tcontext280023* c, Tnode225809* n, Ttype225847* restype) {
	Ttype225847* t;
	t = skiptypes_229167(restype, 2048);
	switch ((*t).kind) {
	case ((NU8) 23):
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), takeimplicitaddr_498470(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	break;
	case ((NU8) 18):
	{
		{
			NI i_498969;
			NI HEX3Atmp_499025;
			NI LOC4;
			NI res_499028;
			i_498969 = 0;
			HEX3Atmp_499025 = 0;
			LOC4 = 0;
			LOC4 = sonslen_228351(t);
			HEX3Atmp_499025 = (LOC4 - 1);
			res_499028 = ((NI) 0);
			{
				while (1) {
					Ttype225847* e;
					if (!(res_499028 <= HEX3Atmp_499025)) goto LA6;
					i_498969 = res_499028;
					e = skiptypes_229167((*t).sons->data[i_498969], 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_498969]), takeimplicitaddr_498470(c, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[i_498969]));
						}
						goto LA11;
						LA13: ;
						{
							NIM_BOOL LOC16;
							Tnode225809* 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_498969]), takeimplicitaddr_498470(c, (*a).kindU.S6.sons->data[i_498969]));
						}
						goto LA11;
						LA18: ;
						{
							localerror_196128((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 193), ((NimStringDesc*) &TMP3604));
						}
						LA11: ;
					}
					LA9: ;
					res_499028 += ((NI) 1);
				} LA6: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
}

N_NIMCALL(Tnode225809*, semyield_499044)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = n;
	checksonslen_281260(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_196128((*n).info, ((NU16) 37), ((NimStringDesc*) &TMP3117));
	}
	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_196128((*n).info, ((NU16) 38), ((NimStringDesc*) &TMP3117));
	}
	goto LA1;
	LA10: ;
	{
		Ttype225847* itertype;
		Ttype225847* restype;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA13;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_457211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		itertype = (*(*(*c).p).owner).typ;
		restype = (*itertype).sons->data[((NI) 0)];
		{
			Ttype225847* adjustedres;
			if (!!((restype == NIM_NIL))) goto LA17;
			{
				if (!((*restype).kind == ((NU8) 49))) goto LA21;
				adjustedres = base_255039(restype);
			}
			goto LA19;
			LA21: ;
			{
				adjustedres = restype;
			}
			LA19: ;
			{
				if (!!(((*adjustedres).kind == ((NU8) 6)))) goto LA26;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), fitnode_457245(c, adjustedres, (*n).kindU.S6.sons->data[((NI) 0)]));
			}
			LA26: ;
			{
				if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).typ == NIM_NIL)) goto LA30;
				internalerror_196172((*n).info, ((NimStringDesc*) &TMP3603));
			}
			LA30: ;
			{
				NIM_BOOL LOC34;
				Ttype225847* inferred;
				LOC34 = 0;
				LOC34 = ismetatype_226821(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_498942(c, n, adjustedres);
		}
		goto LA15;
		LA17: ;
		{
			localerror_196128((*n).info, ((NU16) 40), ((NimStringDesc*) &TMP3117));
		}
		LA15: ;
	}
	goto LA1;
	LA13: ;
	{
		if (!!(((*(*(*(*c).p).owner).typ).sons->data[((NI) 0)] == NIM_NIL))) goto LA45;
		localerror_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3605));
	}
	goto LA1;
	LA45: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, semiterator_490709)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	NU8 kind;
	Tsym225841* s;
	Ttype225847* t;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode225809* LOC4;
		Tnode225809* LOC6;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_226244(n, ((NI) 4));
		LOC3 = haspragma_300952(LOC4, ((NU16) 139));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_226244(n, ((NI) 0));
		LOC3 = ((*LOC6).kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		kind = ((NU8) 15);
	}
	goto LA1;
	LA7: ;
	{
		kind = ((NU8) 14);
	}
	LA1: ;
	{
		Tnode225809* LOC12;
		Tnode225809* LOC15;
		Tnode225809* LOC16;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_226244(n, ((NI) 0));
		if (!((*LOC12).kind == ((NU8) 3))) goto LA13;
		LOC15 = 0;
		LOC15 = HEX5BHEX5D_226244(n, ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*LOC15).kindU.S4.sym).owner), getcurrowner_280258());
		LOC16 = 0;
		LOC16 = HEX5BHEX5D_226244(n, ((NI) 0));
		(*(*LOC16).kindU.S4.sym).kind = kind;
	}
	LA13: ;
	result = semprocaux_489900(c, n, kind, TMP3607, ((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_196128((*n).info, ((NU16) 182), ((NimStringDesc*) &TMP3608));
	}
	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_196128((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA32: ;
	return result;
}

N_NIMCALL(Tnode225809*, semmethod_490888)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tsym225841* s;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_281280(c);
		if (!!(LOC3)) goto LA4;
		localerror_196128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3609));
	}
	LA4: ;
	result = semprocaux_489900(c, n, ((NU8) 13), TMP3610, ((NU8) 0));
	s = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = isgenericroutine_230650(s);
		if (!!(LOC8)) goto LA9;
		{
			NIM_BOOL LOC13;
			LOC13 = 0;
			LOC13 = hasobjparam_490833(s);
			if (!LOC13) goto LA14;
			methoddef_400634(s, NIM_FALSE);
		}
		goto LA11;
		LA14: ;
		{
			localerror_196128((*n).info, ((NU16) 187), ((NimStringDesc*) &TMP3609));
		}
		LA11: ;
	}
	LA9: ;
	return result;
}

N_NIMCALL(Tnode225809*, semconverterdef_490899)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tsym225841* s;
	Ttype225847* t;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_281280(c);
		if (!!(LOC3)) goto LA4;
		localerror_196128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3611));
	}
	LA4: ;
	checksonslen_281260(n, ((NI) 7));
	result = semprocaux_489900(c, n, ((NU8) 16), TMP3308, ((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_196128((*n).info, ((NU16) 182), ((NimStringDesc*) &TMP3611));
	}
	LA8: ;
	{
		NI LOC12;
		LOC12 = 0;
		LOC12 = sonslen_228351(t);
		if (!!((LOC12 == ((NI) 2)))) goto LA13;
		localerror_196128((*n).info, ((NU16) 218), ((NimStringDesc*) &TMP3611));
	}
	LA13: ;
	addconverter_280564(c, s);
	return result;
}

N_NIMCALL(Tnode225809*, semmacrodef_490924)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tsym225841* s;
	Ttype225847* t;
	result = 0;
	checksonslen_281260(n, ((NI) 7));
	result = semprocaux_489900(c, n, ((NU8) 17), TMP3612, ((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_196128((*n).info, ((NU16) 182), ((NimStringDesc*) &TMP3613));
	}
	LA3: ;
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1))) goto LA7;
		localerror_196128((*n).info, ((NU16) 142), (*(*s).name).s);
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode225809*, evalinclude_490960)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = newnodei_227351(((NU8) 115), (*n).info);
	addson_227819(result, n);
	{
		NI i_490977;
		NI HEX3Atmp_490983;
		NI LOC2;
		NI res_490986;
		i_490977 = 0;
		HEX3Atmp_490983 = 0;
		LOC2 = 0;
		LOC2 = sonslen_228387(n);
		HEX3Atmp_490983 = (NI)(LOC2 - ((NI) 1));
		res_490986 = ((NI) 0);
		{
			while (1) {
				NI32 f;
				if (!(res_490986 <= HEX3Atmp_490983)) goto LA4;
				i_490977 = res_490986;
				f = checkmodulename_288064((*n).kindU.S6.sons->data[i_490977]);
				{
					if (!!((f == ((NI32) -1)))) goto LA7;
					{
						NIM_BOOL LOC11;
						NimStringDesc* LOC14;
						LOC11 = 0;
						LOC11 = containsorincl_222898((&(*c).includedfiles), ((NI) (f)));
						if (!LOC11) goto LA12;
						LOC14 = 0;
						LOC14 = tofilename_191655(f);
						localerror_196128((*n).info, ((NU16) 26), LOC14);
					}
					goto LA9;
					LA12: ;
					{
						Tnode225809* LOC16;
						Tnode225809* LOC17;
						LOC16 = 0;
						LOC16 = gincludefile_277073((*c).module, f);
						LOC17 = 0;
						LOC17 = semstmt_457277(c, LOC16);
						addson_227819(result, LOC17);
						excl_222871((&(*c).includedfiles), ((NI) (f)));
					}
					LA9: ;
				}
				LA7: ;
				res_490986 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode225809*, semexport_501616)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* x;
	result = 0;
	x = newnodei_227351((*n).kind, (*n).info);
	{
		NI i_501641;
		NI HEX3Atmp_501806;
		NI LOC2;
		NI res_501809;
		i_501641 = 0;
		HEX3Atmp_501806 = 0;
		LOC2 = 0;
		LOC2 = len_226098(n);
		HEX3Atmp_501806 = (LOC2 - 1);
		res_501809 = ((NI) 0);
		{
			while (1) {
				Tnode225809* a;
				Toverloaditer286431 o;
				Tsym225841* s;
				if (!(res_501809 <= HEX3Atmp_501806)) goto LA4;
				i_501641 = res_501809;
				a = (*n).kindU.S6.sons->data[i_501641];
				memset((void*)(&o), 0, sizeof(o));
				s = initoverloaditer_287108((&o), c, a);
				{
					NimStringDesc* LOC9;
					NimStringDesc* LOC10;
					if (!(s == NIM_NIL)) goto LA7;
					LOC9 = 0;
					LOC10 = 0;
					LOC10 = rendertree_247059(a, 0);
					LOC9 = rawNewString(LOC10->Sup.len + 15);
appendString(LOC9, ((NimStringDesc*) &TMP3630));
appendString(LOC9, LOC10);
					localerror_196128((*a).info, ((NU16) 4), LOC9);
				}
				goto LA5;
				LA7: ;
				{
					Tnode225809* LOC14;
					Ttabiter233119 ti;
					Tsym225841* it;
					if (!((*s).kind == ((NU8) 6))) goto LA12;
					strtableadd_233103((&(*(*c).module).kindU.S3.tab), s);
					LOC14 = 0;
					LOC14 = newsymnode_227338(s, (*a).info);
					add_226165(x, LOC14);
					memset((void*)(&ti), 0, sizeof(ti));
					it = inittabiter_233124((&ti), (*s).kindU.S3.tab);
					{
						while (1) {
							if (!!((it == NIM_NIL))) goto LA16;
							{
								if (!((43513792 &(1<<(((*it).kind)&31)))!=0)) goto LA19;
								strtableadd_233103((&(*(*c).module).kindU.S3.tab), it);
							}
							LA19: ;
							it = nextiter_233132((&ti), (*s).kindU.S3.tab);
						} LA16: ;
					}
				}
				goto LA5;
				LA12: ;
				{
					{
						while (1) {
							if (!!((s == NIM_NIL))) goto LA23;
							{
								Tnode225809* LOC28;
								if (!((43513792 &(1<<(((*s).kind)&31)))!=0)) goto LA26;
								LOC28 = 0;
								LOC28 = newsymnode_227338(s, (*a).info);
								add_226165(x, LOC28);
								strtableadd_233103((&(*(*c).module).kindU.S3.tab), s);
							}
							LA26: ;
							s = nextoverloaditer_287277((&o), c, a);
						} LA23: ;
					}
				}
				LA5: ;
				res_501809 += ((NI) 1);
			} LA4: ;
		}
	}
	result = n;
	return result;
}

N_NIMCALL(void, setline_491002)(Tnode225809* n, Tlineinfo190352 info) {
	{
		NI i_491024;
		NI HEX3Atmp_491027;
		NI LOC2;
		NI res_491030;
		i_491024 = 0;
		HEX3Atmp_491027 = 0;
		LOC2 = 0;
		LOC2 = safelen_226126(n);
		HEX3Atmp_491027 = (LOC2 - 1);
		res_491030 = ((NI) 0);
		{
			while (1) {
				if (!(res_491030 <= HEX3Atmp_491027)) goto LA4;
				i_491024 = res_491030;
				setline_491002((*n).kindU.S6.sons->data[i_491024], info);
				res_491030 += ((NI) 1);
			} LA4: ;
		}
	}
	(*n).info = info;
}

N_NIMCALL(Tnode225809*, sempragmablock_491046)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* pragmalist;
	result = 0;
	pragmalist = (*n).kindU.S6.sons->data[((NI) 0)];
	pragma_297082(c, NIM_NIL, pragmalist, TMP3631);
	result = semexpr_457201(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), result);
	{
		NI i_491074;
		NI HEX3Atmp_491089;
		NI LOC2;
		NI res_491092;
		i_491074 = 0;
		HEX3Atmp_491089 = 0;
		LOC2 = 0;
		LOC2 = len_226098(pragmalist);
		HEX3Atmp_491089 = (LOC2 - 1);
		res_491092 = ((NI) 0);
		{
			while (1) {
				NU16 LOC5;
				if (!(res_491092 <= HEX3Atmp_491089)) goto LA4;
				i_491074 = res_491092;
				LOC5 = 0;
				LOC5 = whichpragma_254687((*pragmalist).kindU.S6.sons->data[i_491074]);
				switch (LOC5) {
				case ((NU16) 115):
				{
					setline_491002(result, (*(*pragmalist).kindU.S6.sons->data[i_491074]).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_491092 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode225809*, semstaticstmt_491108)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* a;
	result = 0;
	a = semstmt_457277(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), a);
	evalstaticstmt_446244((*c).module, a, (*(*c).p).owner);
	result = newnodei_227407(((NU8) 114), (*n).info, ((NI) 1));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), emptynode_226807);
	return result;
}

N_NIMCALL(Tnode225809*, semexpr_457201)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
{	result = 0;
	result = n;
	{
		if (!(gcmd_167134 == ((NU8) 14))) goto LA3;
		suggestexpr_398865(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):
	{
		Tsym225841* s;
		s = lookup_286804(c, n);
		{
			if (!((*c).intypeclass == ((NI) 0))) goto LA12;
			semcapturesym_407834(s, (*(*c).p).owner);
		}
		LA12: ;
		result = semsym_492258(c, n, s, flags);
		{
			if (!((126976 &(1<<(((*s).kind)&31)))!=0)) goto LA16;
			result = symchoice_471790(c, n, s, ((NU8) 0));
			{
				if (!((*result).kind == ((NU8) 3))) goto LA20;
				markindirect_281208(c, (*result).kindU.S4.sym);
			}
			LA20: ;
		}
		LA16: ;
	}
	break;
	case ((NU8) 3):
	{
		result = semsym_492258(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_274190(((NU8) 5)));
		}
		LA27: ;
	}
	break;
	case ((NU8) 6):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA32;
			setintlittype_274774(result);
		}
		LA32: ;
	}
	break;
	case ((NU8) 7):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA37;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 32)));
		}
		LA37: ;
	}
	break;
	case ((NU8) 8):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA42;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 33)));
		}
		LA42: ;
	}
	break;
	case ((NU8) 9):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA47;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 34)));
		}
		LA47: ;
	}
	break;
	case ((NU8) 10):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA52;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 35)));
		}
		LA52: ;
	}
	break;
	case ((NU8) 11):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA57;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 40)));
		}
		LA57: ;
	}
	break;
	case ((NU8) 12):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA62;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 41)));
		}
		LA62: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA67;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 42)));
		}
		LA67: ;
	}
	break;
	case ((NU8) 14):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA72;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 43)));
		}
		LA72: ;
	}
	break;
	case ((NU8) 15):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA77;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 44)));
		}
		LA77: ;
	}
	break;
	case ((NU8) 16):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA82;
			asgnRefNoCycle((void**) (&(*result).typ), getfloatlittype_274686(result));
		}
		LA82: ;
	}
	break;
	case ((NU8) 17):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA87;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 37)));
		}
		LA87: ;
	}
	break;
	case ((NU8) 18):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA92;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 38)));
		}
		LA92: ;
	}
	break;
	case ((NU8) 19):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA97;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 39)));
		}
		LA97: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA102;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 28)));
		}
		LA102: ;
	}
	break;
	case ((NU8) 5):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA107;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_274190(((NU8) 2)));
		}
		LA107: ;
	}
	break;
	case ((NU8) 45):
	{
		result = semfieldaccess_492014(c, n, flags);
		{
			if (!((*result).kind == ((NU8) 25))) goto LA112;
			(*result).kind = ((NU8) 27);
			result = semexpr_457201(c, result, flags);
		}
		LA112: ;
	}
	break;
	case ((NU8) 55):
	{
		message_196161((*n).info, ((NU16) 241), ((NimStringDesc*) &TMP3546));
		result = semexpr_457201(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):
	{
		Ttype225847* typ;
		Ttype225847* LOC116;
		LOC116 = 0;
		LOC116 = semtypenode_457269(c, n, NIM_NIL);
		typ = skiptypes_229167(LOC116, IL64(562949953421568));
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_280684(c, typ));
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		NU8 mode;
		Tsym225841* s;
		checkminsonslen_281270(n, ((NI) 1));
		{
			if (!(((*n).flags &(1<<((((NU8) 9))&15)))!=0)) goto LA120;
			mode = 0;
		}
		goto LA118;
		LA120: ;
		{
			mode = 2;
		}
		LA118: ;
		s = qualifiedlookup_286864(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_458039(c, n, flags);
				}
				goto LA128;
				LA130: ;
				{
					result = semmacroexpr_458073(c, n, n, s, flags);
				}
				LA128: ;
			}
			break;
			case ((NU8) 18):
			{
				{
					if (!!((((*s).flags &(1<<((((NU8) 25))&31)))!=0))) goto LA136;
					result = semdirectop_458039(c, n, flags);
				}
				goto LA134;
				LA136: ;
				{
					result = semtemplateexpr_458062(c, n, s, flags);
				}
				LA134: ;
			}
			break;
			case ((NU8) 7):
			{
				{
					NI LOC142;
					LOC142 = 0;
					LOC142 = len_226098(n);
					if (!(LOC142 == ((NI) 2))) goto LA143;
					result = semconv_493710(c, n);
				}
				goto LA140;
				LA143: ;
				{
					NI LOC146;
					LOC146 = 0;
					LOC146 = len_226098(n);
					if (!(LOC146 == ((NI) 1))) goto LA147;
					result = semobjconstr_496433(c, n, flags);
				}
				goto LA140;
				LA147: ;
				{
					NIM_BOOL LOC150;
					LOC150 = 0;
					LOC150 = contains_222829((*c).ambiguoussymbols, (*s).Sup.id);
					if (!LOC150) goto LA151;
					localerror_196128((*n).info, ((NU16) 66), (*(*s).name).s);
				}
				goto LA140;
				LA151: ;
				{
					if (!((*s).magic == ((NU8) 0))) goto LA154;
					result = semdirectop_458039(c, n, flags);
				}
				goto LA140;
				LA154: ;
				{
					result = semmagic_500194(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_458039(c, n, flags);
				}
				goto LA158;
				LA160: ;
				{
					result = semmagic_500194(c, n, s, flags);
				}
				LA158: ;
			}
			break;
			default:
			{
				result = semindirectop_496464(c, n, flags);
			}
			break;
			}
		}
		goto LA123;
		LA125: ;
		{
			NIM_BOOL LOC165;
			NIM_BOOL LOC166;
			Tnode225809* LOC167;
			Tnode225809* LOC170;
			Tnode225809* LOC171;
			LOC165 = 0;
			LOC166 = 0;
			LOC167 = 0;
			LOC167 = HEX5BHEX5D_226244(n, ((NI) 0));
			LOC166 = ((*LOC167).kind == ((NU8) 42));
			if (LOC166) goto LA168;
			LOC166 = shouldbebracketexpr_501837(n);
			LA168: ;
			LOC165 = LOC166;
			if (!(LOC165)) goto LA169;
			LOC170 = 0;
			LOC170 = HEX5BHEX5D_226244(n, ((NI) 0));
			LOC171 = 0;
			LOC171 = HEX5BHEX5D_226244(LOC170, ((NI) 0));
			LOC165 = issymchoice_493671(LOC171);
			LA169: ;
			if (!LOC165) goto LA172;
			setgenericparams_502151(c, (*n).kindU.S6.sons->data[((NI) 0)]);
			result = semdirectop_458039(c, n, flags);
		}
		goto LA123;
		LA172: ;
		{
			NIM_BOOL LOC175;
			LOC175 = 0;
			LOC175 = issymchoice_493671((*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_458039(c, n, flags);
		}
		goto LA123;
		LA177: ;
		{
			result = semindirectop_496464(c, n, flags);
		}
		LA123: ;
	}
	break;
	case ((NU8) 93):
	{
		{
			if (!((flags &(1<<((((NU8) 3))&15)))!=0)) goto LA183;
			result = semwhen_458047(c, n, NIM_TRUE);
		}
		goto LA181;
		LA183: ;
		{
			result = semwhen_458047(c, n, NIM_FALSE);
			{
				if (!(result == n)) goto LA188;
				result = semwhen_458047(c, n, NIM_TRUE);
			}
			goto LA186;
			LA188: ;
			{
				result = semexpr_457201(c, result, flags);
			}
			LA186: ;
		}
		LA181: ;
	}
	break;
	case ((NU8) 42):
	{
		checkminsonslen_281270(n, ((NI) 1));
		result = semarrayaccess_498382(c, n, flags);
	}
	break;
	case ((NU8) 40):
	{
		Tident198021* LOC193;
		Tnode225809* LOC194;
		LOC193 = 0;
		LOC193 = getident_198463(((NimStringDesc*) &TMP3574));
		LOC194 = 0;
		LOC194 = buildoverloadedsubscripts_498122(n, LOC193);
		result = semexpr_457201(c, LOC194, flags);
	}
	break;
	case ((NU8) 43):
	{
		internalerror_196172((*n).info, ((NimStringDesc*) &TMP3575));
	}
	break;
	case ((NU8) 37):
	{
		NU8 LOC197;
		LOC197 = 0;
		LOC197 = checkpar_500735(n);
		switch (LOC197) {
		case ((NU8) 0):
		{
			result = errornode_281171(c, n);
		}
		break;
		case ((NU8) 3):
		{
			Tnode225809* tupexp;
			tupexp = semtuplepositionsconstr_500949(c, n, flags);
			{
				NIM_BOOL LOC202;
				Ttype225847* typ;
				Ttype225847* LOC205;
				LOC202 = 0;
				LOC202 = istupletype_501005(tupexp);
				if (!LOC202) goto LA203;
				LOC205 = 0;
				LOC205 = semtypenode_457269(c, n, NIM_NIL);
				typ = skiptypes_229167(LOC205, IL64(562949953421568));
				asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_280684(c, typ));
			}
			goto LA200;
			LA203: ;
			{
				result = tupexp;
			}
			LA200: ;
		}
		break;
		case ((NU8) 2):
		{
			result = semtuplefieldsconstr_500837(c, n, flags);
		}
		break;
		case ((NU8) 1):
		{
			result = semexpr_457201(c, (*n).kindU.S6.sons->data[((NI) 0)], flags);
		}
		break;
		}
	}
	break;
	case ((NU8) 39):
	{
		result = semsetconstr_500479(c, n);
	}
	break;
	case ((NU8) 41):
	{
		result = semarrayconstr_494482(c, n, flags);
	}
	break;
	case ((NU8) 38):
	{
		result = semobjconstr_496433(c, n, flags);
	}
	break;
	case ((NU8) 51):
	{
		result = semlambda_457261(c, n, flags);
	}
	break;
	case ((NU8) 52):
	{
		result = semdo_489263(c, n, flags);
	}
	break;
	case ((NU8) 47):
	{
		result = semderef_498161(c, n);
	}
	break;
	case ((NU8) 63):
	{
		result = n;
		checksonslen_281260(n, ((NI) 1));
		result = semaddr_495250(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_FALSE);
	}
	break;
	case ((NU8) 64):
	case ((NU8) 65):
	{
		checksonslen_281260(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexpr_457201(c, (*n).kindU.S6.sons->data[((NI) 0)], flags));
	}
	break;
	case ((NU8) 61):
	{
		result = semcast_493825(c, n);
	}
	break;
	case ((NU8) 48):
	case ((NU8) 92):
	{
		result = semif_483260(c, n);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	case ((NU8) 32):
	{
		checksonslen_281260(n, ((NI) 2));
	}
	break;
	case ((NU8) 71):
	case ((NU8) 72):
	case ((NU8) 66):
	case ((NU8) 67):
	{
		checksonslen_281260(n, ((NI) 1));
	}
	break;
	case ((NU8) 68):
	case ((NU8) 69):
	case ((NU8) 70):
	{
		checksonslen_281260(n, ((NI) 3));
	}
	break;
	case ((NU8) 46):
	{
		checkminsonslen_281270(n, ((NI) 2));
	}
	break;
	case ((NU8) 54):
	{
		result = semtableconstr_500640(c, n);
	}
	break;
	case ((NU8) 56):
	case ((NU8) 57):
	{
	}
	break;
	case ((NU8) 62):
	{
		result = semstaticexpr_496274(c, n);
	}
	break;
	case ((NU8) 73):
	{
		result = semasgn_495310(c, n, ((NU8) 0));
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	{
		result = semblock_501450(c, n);
	}
	break;
	case ((NU8) 115):
	case ((NU8) 126):
	{
		result = semstmtlist_491286(c, n, flags);
	}
	break;
	case ((NU8) 108):
	{
		result = semraise_487501(c, n);
	}
	break;
	case ((NU8) 99):
	{
		result = semvarorlet_485852(c, n, ((NU8) 8));
	}
	break;
	case ((NU8) 100):
	{
		result = semvarorlet_485852(c, n, ((NU8) 9));
	}
	break;
	case ((NU8) 101):
	{
		result = semconst_486383(c, n);
	}
	break;
	case ((NU8) 98):
	{
		result = semtypesection_488685(c, n);
	}
	break;
	case ((NU8) 114):
	{
		result = semdiscard_481406(c, n);
	}
	break;
	case ((NU8) 96):
	{
		result = semwhile_481617(c, n);
	}
	break;
	case ((NU8) 106):
	{
		result = semtry_484115(c, n);
	}
	break;
	case ((NU8) 110):
	case ((NU8) 111):
	{
		result = sembreakorcontinue_481427(c, n);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		result = semfor_487381(c, n);
	}
	break;
	case ((NU8) 97):
	{
		result = semcase_483701(c, n);
	}
	break;
	case ((NU8) 109):
	{
		result = semreturn_498777(c, n);
	}
	break;
	case ((NU8) 124):
	{
		result = semusing_499354(c, n);
	}
	break;
	case ((NU8) 89):
	{
		result = semasm_481607(c, n);
	}
	break;
	case ((NU8) 104):
	{
		result = semyield_499044(c, n);
	}
	break;
	case ((NU8) 90):
	{
		pragma_297082(c, (*(*c).p).owner, n, TMP3606);
	}
	break;
	case ((NU8) 84):
	{
		result = semiterator_490709(c, n);
	}
	break;
	case ((NU8) 79):
	{
		result = semproc_481797(c, n);
	}
	break;
	case ((NU8) 80):
	{
		result = semmethod_490888(c, n);
	}
	break;
	case ((NU8) 81):
	{
		result = semconverterdef_490899(c, n);
	}
	break;
	case ((NU8) 82):
	{
		result = semmacrodef_490924(c, n);
	}
	break;
	case ((NU8) 83):
	{
		result = semtemplatedef_475709(c, n);
	}
	break;
	case ((NU8) 116):
	{
		{
			NIM_BOOL LOC254;
			LOC254 = 0;
			LOC254 = istoplevel_281280(c);
			if (!!(LOC254)) goto LA255;
			localerror_196128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3614));
		}
		LA255: ;
		result = evalimport_288004(c, n);
	}
	break;
	case ((NU8) 117):
	{
		{
			NIM_BOOL LOC260;
			LOC260 = 0;
			LOC260 = istoplevel_281280(c);
			if (!!(LOC260)) goto LA261;
			localerror_196128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3614));
		}
		LA261: ;
		result = evalimportexcept_288857(c, n);
	}
	break;
	case ((NU8) 120):
	{
		{
			NIM_BOOL LOC266;
			LOC266 = 0;
			LOC266 = istoplevel_281280(c);
			if (!!(LOC266)) goto LA267;
			localerror_196128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3625));
		}
		LA267: ;
		result = evalfrom_288011(c, n);
	}
	break;
	case ((NU8) 121):
	{
		{
			NIM_BOOL LOC272;
			LOC272 = 0;
			LOC272 = istoplevel_281280(c);
			if (!!(LOC272)) goto LA273;
			localerror_196128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3628));
		}
		LA273: ;
		result = evalinclude_490960(c, n);
	}
	break;
	case ((NU8) 118):
	case ((NU8) 119):
	{
		{
			NIM_BOOL LOC278;
			LOC278 = 0;
			LOC278 = istoplevel_281280(c);
			if (!!(LOC278)) goto LA279;
			localerror_196128((*n).info, ((NU16) 186), ((NimStringDesc*) &TMP3629));
		}
		LA279: ;
		result = semexport_501616(c, n);
	}
	break;
	case ((NU8) 91):
	{
		result = sempragmablock_491046(c, n);
	}
	break;
	case ((NU8) 113):
	{
		result = semstaticstmt_491108(c, n);
	}
	break;
	case ((NU8) 105):
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexpr_457201(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		{
			NIM_BOOL LOC286;
			NIM_BOOL LOC287;
			NIM_BOOL LOC289;
			LOC286 = 0;
			LOC287 = 0;
			LOC287 = isemptytype_230932((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			LOC286 = !(LOC287);
			if (!(LOC286)) goto LA288;
			LOC289 = 0;
			LOC289 = implicitlydiscardable_483045((*n).kindU.S6.sons->data[((NI) 0)]);
			LOC286 = !(LOC289);
			LA288: ;
			if (!LOC286) goto LA290;
			localerror_196128((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3632));
		}
		LA290: ;
	}
	break;
	default:
	{
		NimStringDesc* LOC293;
		LOC293 = 0;
		LOC293 = rendertree_247059(n, 4);
		localerror_196128((*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(Tnode225809*, semexprwithtype_457211)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	result = 0;
	result = semexpr_457201(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_281171(c, n);
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		NimStringDesc* LOC13;
		LOC9 = 0;
		LOC9 = ((*result).typ == NIM_NIL);
		if (LOC9) goto LA10;
		LOC9 = ((*result).typ == enforcevoidcontext_481405);
		LA10: ;
		if (!LOC9) goto LA11;
		LOC13 = 0;
		LOC13 = rendertree_247059(result, 4);
		localerror_196128((*n).info, ((NU16) 94), LOC13);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_281161(c));
	}
	goto LA7;
	LA11: ;
	{
		{
			if (!!(((flags &(1<<((((NU8) 10))&15)))!=0))) goto LA17;
			semprocvarcheck_481766(c, result);
		}
		LA17: ;
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA21;
			result = newderef_402024(result);
		}
		LA21: ;
		semdestructorcheck_482851(c, result, flags);
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode225809*, semconstexpr_458485)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tnode225809* e;
{	result = 0;
	e = semexprwithtype_457211(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3;
		localerror_196128((*n).info, ((NU16) 108), ((NimStringDesc*) &TMP3117));
		result = n;
		goto BeforeRet;
	}
	LA3: ;
	result = getconstexpr_293004((*c).module, e);
	{
		if (!(result == NIM_NIL)) goto LA7;
		result = evalconstexpr_446221((*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_193255((*e).info, (*n).info);
				if (!!(LOC17)) goto LA18;
				pushinfocontext_191581((*n).info);
				localerror_196128((*e).info, ((NU16) 108), ((NimStringDesc*) &TMP3117));
				popinfocontext_191600();
			}
			goto LA15;
			LA18: ;
			{
				localerror_196128((*e).info, ((NU16) 108), ((NimStringDesc*) &TMP3117));
			}
			LA15: ;
			result = e;
		}
		goto LA9;
		LA13: ;
		{
			result = fixuptypeaftereval_458201(c, result, e);
		}
		LA9: ;
	}
	LA7: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, tryconstexpr_458420)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* volatile result;
	Tnode225809* e;
	NI olderrorcount;
	NI olderrormax;
	NU8 olderroroutputs;
	TSafePoint TMP3633;
{	result = 0;
	e = semexprwithtype_457211(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = getconstexpr_293004((*c).module, e);
	{
		if (!!((result == NIM_NIL))) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	olderrorcount = gerrorcounter_191399;
	olderrormax = gerrormax_191402;
	olderroroutputs = erroroutputs_191440;
	erroroutputs_191440 = 0;
	gerrormax_191402 = ((NI) 2147483647);
	pushSafePoint(&TMP3633);
	TMP3633.status = setjmp(TMP3633.context);
	if (TMP3633.status == 0) {
		result = evalconstexpr_446221((*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_458201(c, result, e);
		}
		LA10: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI190358))) {
			TMP3633.status = 0;
			result = NIM_NIL;
			popCurrentException();
		}
	}
	if (TMP3633.status != 0) reraiseException();
	gerrorcounter_191399 = olderrorcount;
	gerrormax_191402 = olderrormax;
	erroroutputs_191440 = olderroroutputs;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, semoperand_492021)(Tcontext280023* c, Tnode225809* n, NU16 flags) {
	Tnode225809* result;
	result = 0;
	result = semexpr_457201(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_281171(c, n);
	}
	LA5: ;
	{
		if (!!(((*result).typ == NIM_NIL))) goto LA9;
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA13;
			result = newderef_402024(result);
		}
		LA13: ;
	}
	goto LA7;
	LA9: ;
	{
		if (!!(((24 & flags) == 0))) goto LA16;
		asgnRefNoCycle((void**) (&(*result).typ), newtypes_280221(((NU8) 3), c));
		(*(*result).typ).flags |= ((NU32)1)<<((((NU8) 0))%(sizeof(NU32)*8));
	}
	goto LA7;
	LA16: ;
	{
		NimStringDesc* LOC19;
		LOC19 = 0;
		LOC19 = rendertree_247059(result, 4);
		localerror_196128((*n).info, ((NU16) 94), LOC19);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_281161(c));
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode225809*, seminferredlambda_489290)(Tcontext280023* c, Tidtable225859 pt, Tnode225809* n_489294) {
	Tnode225809* result;
	Tnode225809* n;
	Tsym225841* original;
	Tsym225841* s;
	Tnode225809* params;
	Tscope225835* LOC14;
	Tnode225809* sembody;
	Tnode225809* LOC15;
	result = 0;
	n = n_489294;
	original = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	s = copysym_228607(original, NIM_FALSE);
	(*s).flags |= ((NU32)1)<<((((NU8) 2))%(sizeof(NU32)*8));
	n = replacetypesinbody_304862(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_226807);
	params = (*(*n).typ).n;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 3)]), params);
	asgnRefNoCycle((void**) (&(*s).typ), (*n).typ);
	{
		NI i_489346;
		Slice90370 HEX3Atmp_489376;
		NI LOC2;
		i_489346 = 0;
		memset((void*)(&HEX3Atmp_489376), 0, sizeof(HEX3Atmp_489376));
		LOC2 = 0;
		LOC2 = len_226098(params);
		HEX3Atmp_489376 = HEX2EHEX2E_105290(((NI) 1), (LOC2 - 1));
		{
			NI x_489380;
			NI HEX3Atmp_489382;
			NI HEX3Atmp_489384;
			NI res_489386;
			x_489380 = 0;
			HEX3Atmp_489382 = 0;
			HEX3Atmp_489384 = 0;
			HEX3Atmp_489382 = HEX3Atmp_489376.a;
			HEX3Atmp_489384 = HEX3Atmp_489376.b;
			res_489386 = HEX3Atmp_489382;
			{
				while (1) {
					if (!(res_489386 <= HEX3Atmp_489384)) goto LA5;
					x_489380 = res_489386;
					i_489346 = x_489380;
					{
						Tnode225809* LOC8;
						Tnode225809* LOC11;
						NimStringDesc* LOC12;
						Tnode225809* LOC13;
						LOC8 = 0;
						LOC8 = HEX5BHEX5D_226244(params, i_489346);
						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_226244(params, i_489346);
						LOC12 = 0;
						LOC13 = 0;
						LOC13 = HEX5BHEX5D_226244(params, i_489346);
						LOC12 = rawNewString((*(*(*LOC13).kindU.S4.sym).name).s->Sup.len + 32);
appendString(LOC12, ((NimStringDesc*) &TMP3634));
appendString(LOC12, (*(*(*LOC13).kindU.S4.sym).name).s);
						localerror_196139((*LOC11).info, LOC12);
					}
					LA9: ;
					res_489386 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	LOC14 = 0;
	LOC14 = openscope_286091(c);
	pushowner_280263(s);
	addparams_457293(c, params, ((NU8) 12));
	pushproccon_280361(c, s);
	addresult_488830(c, (*(*n).typ).sons->data[((NI) 0)], (*n).info, ((NU8) 12));
	addresultnode_488864(c, n);
	LOC15 = 0;
	LOC15 = semprocbody_457238(c, (*n).kindU.S6.sons->data[((NI) 6)]);
	sembody = hlobody_459161(c, LOC15);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_417225((*c).module, sembody, s));
	popproccon_280393(c);
	popowner_280269();
	closescope_286111(c);
	return result;
}

N_NIMCALL(Tpasscontext277005*, myopen_502741)(Tsym225841* module) {
	Tpasscontext277005* result;
	Tcontext280023* c;
	TY280126 LOC5;
	TY280132 LOC6;
	result = 0;
	c = newcontext_280184(module);
	{
		if (!!(((*c).p == NIM_NIL))) goto LA3;
		internalerror_196172((*module).info, ((NimStringDesc*) &TMP2062));
	}
	LA3: ;
	(*c).semconstexpr = semconstexpr_458485;
	(*c).semexpr = semexpr_457201;
	(*c).semtryexpr = tryexpr_457317;
	(*c).semtryconstexpr = tryconstexpr_458420;
	(*c).semoperand = semoperand_492021;
	(*c).semconstboolexpr = semconstboolexpr_464852;
	(*c).semoverloadedcall = semoverloadedcall_463971;
	memset((void*)(&LOC5), 0, sizeof(LOC5));
	LOC5.ClPrc = ((TMP3635) (seminferredlambda_489290)); LOC5.ClEnv = NIM_NIL;
	asgnRef((void**) (&(*c).seminferredlambda.ClEnv), LOC5.ClEnv);
	(*c).seminferredlambda.ClPrc = LOC5.ClPrc;
	memset((void*)(&LOC6), 0, sizeof(LOC6));
	LOC6.ClPrc = ((TMP3636) (generateinstance_460450)); LOC6.ClEnv = NIM_NIL;
	asgnRef((void**) (&(*c).semgenerateinstance.ClEnv), LOC6.ClEnv);
	(*c).semgenerateinstance.ClPrc = LOC6.ClPrc;
	(*c).semtypenode = semtypenode_457269;
	(*c).insttypeboundop = insttypeboundop_394846;
	pushproccon_280361(c, module);
	pushowner_280263((*c).module);
	asgnRef((void**) (&(*c).importtable), openscope_286091(c));
	strtableadd_233103((&(*(*c).importtable).symbols), module);
	{
		if (!(((*module).flags &(1<<((((NU8) 13))&31)))!=0)) goto LA9;
		asgnRefNoCycle((void**) (&systemmodule_274019), module);
	}
	goto LA7;
	LA9: ;
	{
		strtableadd_233103((&(*(*c).importtable).symbols), systemmodule_274019);
		importallsymbols_288389(c, systemmodule_274019);
	}
	LA7: ;
	asgnRef((void**) (&(*c).toplevelscope), openscope_286091(c));
	result = &c->Sup;
	return result;
}

N_NIMCALL(Tpasscontext277005*, myopencached_502778)(Tsym225841* module, Trodreader268030* rd) {
	Tpasscontext277005* result;
	result = 0;
	result = myopen_502741(module);
	{
		Tsym225841* m_502792;
		Tsymseq225811* HEX3Atmp_502794;
		NI i_502797;
		NI L_502799;
		m_502792 = 0;
		HEX3Atmp_502794 = 0;
		HEX3Atmp_502794 = (*rd).methods;
		i_502797 = ((NI) 0);
		L_502799 = (HEX3Atmp_502794 ? HEX3Atmp_502794->Sup.len : 0);
		{
			while (1) {
				if (!(i_502797 < L_502799)) goto LA3;
				m_502792 = HEX3Atmp_502794->data[i_502797];
				methoddef_400634(m_502792, NIM_TRUE);
				i_502797 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(void, gatherstmts_488278)(Tcontext280023* c, Tnode225809* n, Tnode225809* result) {
	switch ((*n).kind) {
	case ((NU8) 121):
	{
		{
			NI i_488310;
			Slice90370 HEX3Atmp_488358;
			NI LOC3;
			i_488310 = 0;
			memset((void*)(&HEX3Atmp_488358), 0, sizeof(HEX3Atmp_488358));
			LOC3 = 0;
			LOC3 = len_226098(n);
			HEX3Atmp_488358 = HEX2EHEX2E_105290(((NI) 0), (LOC3 - 1));
			{
				NI x_488362;
				NI HEX3Atmp_488364;
				NI HEX3Atmp_488366;
				NI res_488368;
				x_488362 = 0;
				HEX3Atmp_488364 = 0;
				HEX3Atmp_488366 = 0;
				HEX3Atmp_488364 = HEX3Atmp_488358.a;
				HEX3Atmp_488366 = HEX3Atmp_488358.b;
				res_488368 = HEX3Atmp_488364;
				{
					while (1) {
						NI32 f;
						if (!(res_488368 <= HEX3Atmp_488366)) goto LA6;
						x_488362 = res_488368;
						i_488310 = x_488362;
						f = checkmodulename_288064((*n).kindU.S6.sons->data[i_488310]);
						{
							if (!!((f == ((NI32) -1)))) goto LA9;
							{
								NIM_BOOL LOC13;
								NimStringDesc* LOC16;
								LOC13 = 0;
								LOC13 = containsorincl_222898((&(*c).includedfiles), ((NI) (f)));
								if (!LOC13) goto LA14;
								LOC16 = 0;
								LOC16 = tofilename_191655(f);
								localerror_196128((*n).info, ((NU16) 26), LOC16);
							}
							goto LA11;
							LA14: ;
							{
								Tnode225809* code;
								code = gincludefile_277073((*c).module, f);
								gatherstmts_488278(c, code, result);
								excl_222871((&(*c).includedfiles), ((NI) (f)));
							}
							LA11: ;
						}
						LA9: ;
						res_488368 += ((NI) 1);
					} LA6: ;
				}
			}
		}
	}
	break;
	case ((NU8) 115):
	{
		{
			NI i_488343;
			Slice90370 HEX3Atmp_488373;
			NI LOC20;
			i_488343 = 0;
			memset((void*)(&HEX3Atmp_488373), 0, sizeof(HEX3Atmp_488373));
			LOC20 = 0;
			LOC20 = len_226098(n);
			HEX3Atmp_488373 = HEX2EHEX2E_105290(((NI) 0), (LOC20 - 1));
			{
				NI x_488377;
				NI HEX3Atmp_488379;
				NI HEX3Atmp_488381;
				NI res_488383;
				x_488377 = 0;
				HEX3Atmp_488379 = 0;
				HEX3Atmp_488381 = 0;
				HEX3Atmp_488379 = HEX3Atmp_488373.a;
				HEX3Atmp_488381 = HEX3Atmp_488373.b;
				res_488383 = HEX3Atmp_488379;
				{
					while (1) {
						if (!(res_488383 <= HEX3Atmp_488381)) goto LA23;
						x_488377 = res_488383;
						i_488343 = x_488377;
						gatherstmts_488278(c, (*n).kindU.S6.sons->data[i_488343], result);
						res_488383 += ((NI) 1);
					} LA23: ;
				}
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		(*n).flags |= ((NU16)1)<<((((NU8) 7))%(sizeof(NU16)*8));
		typesectionleftsidepass_487599(c, n);
		add_226165(result, n);
	}
	break;
	default:
	{
		add_226165(result, n);
	}
	break;
	}
}

N_NIMCALL(Tnode225809*, semalltypesections_488273)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	result = newnodei_227351(((NU8) 115), (*n).info);
	gatherstmts_488278(c, n, result);
	{
		NI i_488398;
		Slice90370 HEX3Atmp_488602;
		NI LOC2;
		i_488398 = 0;
		memset((void*)(&HEX3Atmp_488602), 0, sizeof(HEX3Atmp_488602));
		LOC2 = 0;
		LOC2 = len_226098(result);
		HEX3Atmp_488602 = HEX2EHEX2E_105290(((NI) 0), (LOC2 - 1));
		{
			NI x_488606;
			NI HEX3Atmp_488608;
			NI HEX3Atmp_488610;
			NI res_488612;
			x_488606 = 0;
			HEX3Atmp_488608 = 0;
			HEX3Atmp_488610 = 0;
			HEX3Atmp_488608 = HEX3Atmp_488602.a;
			HEX3Atmp_488610 = HEX3Atmp_488602.b;
			res_488612 = HEX3Atmp_488608;
			{
				while (1) {
					if (!(res_488612 <= HEX3Atmp_488610)) goto LA5;
					x_488606 = res_488612;
					i_488398 = x_488606;
					{
						Tnode225809* LOC8;
						Tnode225809* LOC11;
						LOC8 = 0;
						LOC8 = HEX5BHEX5D_226244(result, i_488398);
						if (!((*LOC8).kind == ((NU8) 98))) goto LA9;
						LOC11 = 0;
						LOC11 = HEX5BHEX5D_226244(result, i_488398);
						typesectionrightsidepass_487697(c, LOC11);
					}
					LA9: ;
					res_488612 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	{
		NI i_488436;
		Slice90370 HEX3Atmp_488617;
		NI LOC13;
		i_488436 = 0;
		memset((void*)(&HEX3Atmp_488617), 0, sizeof(HEX3Atmp_488617));
		LOC13 = 0;
		LOC13 = len_226098(result);
		HEX3Atmp_488617 = HEX2EHEX2E_105290(((NI) 0), (LOC13 - 1));
		{
			NI x_488621;
			NI HEX3Atmp_488623;
			NI HEX3Atmp_488625;
			NI res_488627;
			x_488621 = 0;
			HEX3Atmp_488623 = 0;
			HEX3Atmp_488625 = 0;
			HEX3Atmp_488623 = HEX3Atmp_488617.a;
			HEX3Atmp_488625 = HEX3Atmp_488617.b;
			res_488627 = HEX3Atmp_488623;
			{
				while (1) {
					if (!(res_488627 <= HEX3Atmp_488625)) goto LA16;
					x_488621 = res_488627;
					i_488436 = x_488621;
					{
						Tnode225809* LOC19;
						Tnode225809* LOC22;
						LOC19 = 0;
						LOC19 = HEX5BHEX5D_226244(result, i_488436);
						if (!((*LOC19).kind == ((NU8) 98))) goto LA20;
						LOC22 = 0;
						LOC22 = HEX5BHEX5D_226244(result, i_488436);
						typesectionfinalpass_488146(c, LOC22);
					}
					LA20: ;
					res_488627 += ((NI) 1);
				} LA16: ;
			}
		}
	}
	return result;
}

N_NIMCALL(void, addcodeforgenerics_502632)(Tcontext280023* c, Tnode225809* n) {
	{
		NI i_502656;
		NI HEX3Atmp_502718;
		NI HEX3Atmp_502719;
		NI res_502722;
		i_502656 = 0;
		HEX3Atmp_502718 = 0;
		HEX3Atmp_502719 = 0;
		HEX3Atmp_502718 = (*c).lastgenericidx;
		HEX3Atmp_502719 = (NI)(((*c).generics ? (*c).generics->Sup.len : 0) - ((NI) 1));
		res_502722 = HEX3Atmp_502718;
		{
			while (1) {
				Tsym225841* prc;
				if (!(res_502722 <= HEX3Atmp_502719)) goto LA3;
				i_502656 = res_502722;
				prc = (*(*c).generics->data[i_502656].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*) &TMP3639));
appendString(LOC16, (*(*prc).name).s);
						internalerror_196172((*prc).info, LOC16);
					}
					goto LA10;
					LA14: ;
					{
						addson_227819(n, (*prc).ast);
					}
					LA10: ;
				}
				LA8: ;
				res_502722 += ((NI) 1);
			} LA3: ;
		}
	}
	(*c).lastgenericidx = ((*c).generics ? (*c).generics->Sup.len : 0);
}

N_NIMCALL(Tnode225809*, hlostmt_459187)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*c).patterns ? (*c).patterns->Sup.len : 0) == ((NI) 0));
		if (LOC3) goto LA4;
		LOC3 = !(((goptions_167130 &(1<<((((NU8) 21))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
		goto BeforeRet;
	}
	LA5: ;
	(*c).hloloopdetector = ((NI) 0);
	result = hlo_458542(c, n);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode225809*, buildechostmt_496830)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	Tsym225841* e;
	Tident198021* LOC1;
	result = 0;
	result = newnodei_227351(((NU8) 27), (*n).info);
	LOC1 = 0;
	LOC1 = getident_198463(((NimStringDesc*) &TMP3640));
	e = strtableget_233111((*systemmodule_274019).kindU.S3.tab, LOC1);
	{
		Tnode225809* LOC6;
		if (!!((e == NIM_NIL))) goto LA4;
		LOC6 = 0;
		LOC6 = newsymnode_227325(e);
		add_226165(result, LOC6);
	}
	goto LA2;
	LA4: ;
	{
		Tnode225809* LOC8;
		localerror_196128((*n).info, ((NU16) 68), ((NimStringDesc*) &TMP3641));
		LOC8 = 0;
		LOC8 = errornode_281171(c, n);
		add_226165(result, LOC8);
	}
	LA2: ;
	add_226165(result, n);
	result = semexpr_457201(c, result, 0);
	return result;
}

N_NIMCALL(Tnode225809*, semstmtandgenerategenerics_502815)(Tcontext280023* c, Tnode225809* n) {
	Tnode225809* result;
	result = 0;
	{
		if (!(((*(*c).module).flags &(1<<((((NU8) 8))&31)))!=0)) goto LA3;
		result = semalltypesections_488273(c, n);
	}
	goto LA1;
	LA3: ;
	{
		result = n;
	}
	LA1: ;
	result = semstmt_457277(c, result);
	{
		Tnode225809* a;
		if (!((*c).lastgenericidx < ((*c).generics ? (*c).generics->Sup.len : 0))) goto LA8;
		a = newnodei_227351(((NU8) 115), (*n).info);
		addcodeforgenerics_502632(c, a);
		{
			NI LOC12;
			LOC12 = 0;
			LOC12 = sonslen_228387(a);
			if (!(((NI) 0) < LOC12)) goto LA13;
			{
				if (!!(((*result).kind == ((NU8) 1)))) goto LA17;
				addson_227819(a, result);
			}
			LA17: ;
			result = a;
		}
		LA13: ;
	}
	LA8: ;
	result = hlostmt_459187(c, result);
	{
		NIM_BOOL LOC21;
		NIM_BOOL LOC23;
		LOC21 = 0;
		LOC21 = (gcmd_167134 == ((NU8) 18));
		if (!(LOC21)) goto LA22;
		LOC23 = 0;
		LOC23 = isemptytype_230932((*result).typ);
		LOC21 = !(LOC23);
		LA22: ;
		if (!LOC21) goto LA24;
		result = buildechostmt_496830(c, result);
	}
	LA24: ;
	result = transformstmt_417407((*c).module, result);
	return result;
}

N_NIMCALL(void, recovercontext_502864)(Tcontext280023* c) {
	asgnRef((void**) (&(*c).currentscope), (*c).toplevelscope);
	{
		while (1) {
			Tsym225841* LOC3;
			LOC3 = 0;
			LOC3 = getcurrowner_280258();
			if (!!(((*LOC3).kind == ((NU8) 6)))) goto LA2;
			popowner_280269();
		} 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(Tnode225809*, myprocess_502917)(Tpasscontext277005* context, Tnode225809* n) {
	Tnode225809* volatile result;
	Tcontext280023* c;
	result = 0;
	c = ((Tcontext280023*) (context));
	{
		if (!(gerrormax_191402 <= ((NI) 1))) goto LA3;
		result = semstmtandgenerategenerics_502815(c, n);
	}
	goto LA1;
	LA3: ;
	{
		NI oldcontextlen;
		NI oldingenericinst;
		TSafePoint TMP3642;
		oldcontextlen = getinfocontextlen_191545();
		oldingenericinst = (*c).ingenericinst;
		pushSafePoint(&TMP3642);
		TMP3642.status = setjmp(TMP3642.context);
		if (TMP3642.status == 0) {
			result = semstmtandgenerategenerics_502815(c, n);
			popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(getCurrentException()->Sup.m_type, (&NTI190358))||isObj(getCurrentException()->Sup.m_type, (&NTI190360))) {
				TMP3642.status = 0;
				recovercontext_502864(c);
				(*c).ingenericinst = oldingenericinst;
				setinfocontextlen_191562(oldcontextlen);
				{
					Exception* LOC11;
					LOC11 = 0;
					LOC11 = getCurrentException();
					if (!((LOC11) && (isObjWithCache((*LOC11).Sup.m_type, (&NTI190360), Nim_OfCheck_CACHE1)))) goto LA12;
					result = NIM_NIL;
				}
				goto LA9;
				LA12: ;
				{
					result = emptynode_226807;
				}
				LA9: ;
				popCurrentException();
			}
		}
		if (TMP3642.status != 0) reraiseException();
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode225809*, myclose_502933)(Tpasscontext277005* context, Tnode225809* n) {
	Tnode225809* result;
	Tcontext280023* c;
	result = 0;
	c = ((Tcontext280023*) (context));
	closescope_286111(c);
	rawclosescope_286102(c);
	result = newnode_226401(((NU8) 115));
	{
		if (!!((n == NIM_NIL))) goto LA3;
		internalerror_196172((*n).info, ((NimStringDesc*) &TMP3643));
	}
	LA3: ;
	addcodeforgenerics_502632(c, result);
	{
		if (!!(((*(*c).module).ast == NIM_NIL))) goto LA7;
		add_226165(result, (*(*c).module).ast);
	}
	LA7: ;
	popowner_280269();
	popproccon_280393(c);
	return result;
}
NIM_EXTERNC N_NOINLINE(void, compiler_semInit000)(void) {
	Ttype225847* LOC1;
	Ttype225847* LOC2;
	Tident198021* LOC3;
	Tlineinfo190352 LOC4;
	LOC1 = 0;
	LOC1 = (Ttype225847*) newObj((&NTI225805), sizeof(Ttype225847));
	(*LOC1).Sup.Sup.m_type = (&NTI225847);
	(*LOC1).kind = ((NU8) 6);
	asgnRefNoCycle((void**) (&commontypebegin_457472), LOC1);
	asgnRefNoCycle((void**) (&typedescid_468473), getident_198463(((NimStringDesc*) &TMP1115)));
	LOC2 = 0;
	LOC2 = (Ttype225847*) newObj((&NTI225805), sizeof(Ttype225847));
	(*LOC2).Sup.Sup.m_type = (&NTI225847);
	(*LOC2).kind = ((NU8) 7);
	asgnRefNoCycle((void**) (&enforcevoidcontext_481405), LOC2);
	if (analyzingdestructor_481801) nimGCunrefNoCycle(analyzingdestructor_481801);
	analyzingdestructor_481801 = (Tsym225841*) newObjRC1((&NTI225807), sizeof(Tsym225841));
	(*analyzingdestructor_481801).Sup.Sup.m_type = (&NTI225841);
	if (destructoristrivial_481802) nimGCunrefNoCycle(destructoristrivial_481802);
	destructoristrivial_481802 = (Tsym225841*) newObjRC1((&NTI225807), sizeof(Tsym225841));
	(*destructoristrivial_481802).Sup.Sup.m_type = (&NTI225841);
	asgnRefNoCycle((void**) (&destructorname_481819), getident_198463(((NimStringDesc*) &TMP1116)));
	asgnRefNoCycle((void**) (&destructorparam_481820), getident_198463(((NimStringDesc*) &TMP1117)));
	LOC3 = 0;
	LOC3 = getident_198463(((NimStringDesc*) &TMP1118));
	LOC4 = unknownlineinfo_191411();
	asgnRefNoCycle((void**) (&destructorpragma_481821), newidentnode_227313(LOC3, LOC4));
}

NIM_EXTERNC N_NOINLINE(void, compiler_semDatInit000)(void) {
static TNimNode* TMP3246[2];
static TNimNode* TMP3274[5];
static TNimNode TMP943[9];
NTI460963.size = sizeof(TY460963);
NTI460963.kind = 18;
NTI460963.base = 0;
NTI460963.flags = 2;
TMP3246[0] = &TMP943[1];
TMP943[1].kind = 1;
TMP943[1].offset = offsetof(TY460963, Field0);
TMP943[1].typ = (&NTI225807);
TMP943[1].name = "Field0";
TMP3246[1] = &TMP943[2];
TMP943[2].kind = 1;
TMP943[2].offset = offsetof(TY460963, Field1);
TMP943[2].typ = (&NTI108);
TMP943[2].name = "Field1";
TMP943[0].len = 2; TMP943[0].kind = 2; TMP943[0].sons = &TMP3246[0];
NTI460963.node = &TMP943[0];
NTI460962.size = sizeof(TY460962*);
NTI460962.kind = 24;
NTI460962.base = (&NTI460963);
NTI460962.flags = 2;
NTI460962.marker = TMP3247;
NTI469453.size = sizeof(TY469453);
NTI469453.kind = 18;
NTI469453.base = 0;
TMP3274[0] = &TMP943[4];
TMP943[4].kind = 1;
TMP943[4].offset = offsetof(TY469453, HEX3Astate);
TMP943[4].typ = (&NTI346033);
TMP943[4].name = ":state";
TMP3274[1] = &TMP943[5];
TMP943[5].kind = 1;
TMP943[5].offset = offsetof(TY469453, genericparams468483);
TMP943[5].typ = (&NTI225801);
TMP943[5].name = "genericParams468483";
TMP3274[2] = &TMP943[6];
TMP943[6].kind = 1;
TMP943[6].offset = offsetof(TY469453, paramname468485);
TMP943[6].typ = (&NTI149);
TMP943[6].name = "paramName468485";
TMP3274[3] = &TMP943[7];
TMP943[7].kind = 1;
TMP943[7].offset = offsetof(TY469453, info468486);
TMP943[7].typ = (&NTI190352);
TMP943[7].name = "info468486";
TMP3274[4] = &TMP943[8];
TMP943[8].kind = 1;
TMP943[8].offset = offsetof(TY469453, c468481);
TMP943[8].typ = (&NTI280021);
TMP943[8].name = "c468481";
TMP943[3].len = 5; TMP943[3].kind = 2; TMP943[3].sons = &TMP3274[0];
NTI469453.node = &TMP943[3];
NTI469511.size = sizeof(TY469453*);
NTI469511.kind = 22;
NTI469511.base = (&NTI469453);
NTI469511.marker = TMP3275;
}

