/* Generated by Nim Compiler v0.11.2 */
/*   (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 Ttype190849 Ttype190849;
typedef struct Tidobj167015 Tidobj167015;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Ttypeseq190845 Ttypeseq190845;
typedef struct Tnode190813 Tnode190813;
typedef struct Tsym190843 Tsym190843;
typedef struct Tloc190827 Tloc190827;
typedef struct Ropeobj161009 Ropeobj161009;
typedef struct Tcell46347 Tcell46347;
typedef struct Tcellseq46363 Tcellseq46363;
typedef struct Tgcheap48216 Tgcheap48216;
typedef struct Tcellset46359 Tcellset46359;
typedef struct Tpagedesc46355 Tpagedesc46355;
typedef struct Tmemregion28210 Tmemregion28210;
typedef struct Tsmallchunk27440 Tsmallchunk27440;
typedef struct Tllchunk28204 Tllchunk28204;
typedef struct Tbigchunk27442 Tbigchunk27442;
typedef struct Tintset27417 Tintset27417;
typedef struct Ttrunk27413 Ttrunk27413;
typedef struct Tavlnode28208 Tavlnode28208;
typedef struct Tgcstat48214 Tgcstat48214;
typedef struct Tident167021 Tident167021;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tscope190837 Tscope190837;
typedef struct TY190944 TY190944;
typedef struct Tstrtable190817 Tstrtable190817;
typedef struct Tsymseq190815 Tsymseq190815;
typedef struct Tlineinfo163338 Tlineinfo163338;
typedef struct Tlib190831 Tlib190831;
typedef struct Tpasscontext241005 Tpasscontext241005;
typedef struct Tcontext244023 Tcontext244023;
typedef struct Tproccon244011 Tproccon244011;
typedef struct Intset187056 Intset187056;
typedef struct Ttrunk187052 Ttrunk187052;
typedef struct Ttrunkseq187054 Ttrunkseq187054;
typedef struct Tlinkedlist130028 Tlinkedlist130028;
typedef struct Tlistentry130022 Tlistentry130022;
typedef struct Tidtable190861 Tidtable190861;
typedef struct Tidpairseq190859 Tidpairseq190859;
typedef struct Tctx243048 Tctx243048;
typedef struct TY244141 TY244141;
typedef struct Tnodeseq190807 Tnodeseq190807;
typedef struct Toverloaditer249431 Toverloaditer249431;
typedef struct Tidentiter198141 Tidentiter198141;
typedef struct TY86345 TY86345;
typedef struct Tcandidate344209 Tcandidate344209;
typedef struct Trepltypevars265544 Trepltypevars265544;
typedef struct Genericctx426608 Genericctx426608;
typedef struct Tinstantiation190833 Tinstantiation190833;
typedef struct TY190933 TY190933;
typedef struct Tinstantiationpair244013 Tinstantiationpair244013;
typedef struct TY412757 TY412757;
typedef struct TY412758 TY412758;
typedef struct Toptionentry244005 Toptionentry244005;
typedef struct TY420253 TY420253;
typedef struct Templctx422582 Templctx422582;
typedef struct Slice85768 Slice85768;
typedef struct Tliftctx434286 Tliftctx434286;
typedef struct Exception Exception;
typedef struct TSafePoint TSafePoint;
typedef struct TY432269 TY432269;
typedef struct Tfieldinstctx436147 Tfieldinstctx436147;
typedef struct Tfieldsctx436309 Tfieldsctx436309;
typedef struct Ttabiter198119 Ttabiter198119;
typedef struct Trodreader233030 Trodreader233030;
typedef struct Tindex233028 Tindex233028;
typedef struct Tiitable198274 Tiitable198274;
typedef struct Tiipairseq198272 Tiipairseq198272;
typedef struct Memfile231208 Memfile231208;
typedef struct Tbasechunk27438 Tbasechunk27438;
typedef struct Tfreecell27430 Tfreecell27430;
typedef struct Tidpair190857 Tidpair190857;
typedef struct TY243253 TY243253;
typedef struct TY164036 TY164036;
typedef struct PprocHEX3Aobjecttype243232 PprocHEX3Aobjecttype243232;
typedef struct TY243272 TY243272;
typedef struct Tiipair198270 Tiipair198270;
typedef struct TY243233 TY243233;
typedef struct TY243239 TY243239;
typedef struct TY243273 TY243273;
typedef struct Vmargs243042 Vmargs243042;
typedef struct Tblock243030 Tblock243030;
typedef struct TY243213 TY243213;
typedef N_NIMCALL_PTR(void, TY3289) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3294) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3289 marker;
TY3294 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj167015  {
  TNimObject Sup;
NI id;
};
struct  Tloc190827  {
NU8 k;
NU8 s;
NU16 flags;
Ttype190849* t;
Ropeobj161009* r;
Ropeobj161009* heaproot;
};
struct  Ttype190849  {
  Tidobj167015 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq190845* sons;
Tnode190813* n;
Tsym190843* owner;
Tsym190843* sym;
Tsym190843* destructor;
Tsym190843* deepcopy;
Tsym190843* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc190827 loc;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  Tcell46347  {
NI refcount;
TNimType* typ;
};
struct  Tcellseq46363  {
NI len;
NI cap;
Tcell46347** d;
};
struct  Tcellset46359  {
NI counter;
NI max;
Tpagedesc46355* head;
Tpagedesc46355** data;
};
typedef Tsmallchunk27440* TY28222[512];
typedef Ttrunk27413* Ttrunkbuckets27415[256];
struct  Tintset27417  {
Ttrunkbuckets27415 data;
};
struct  Tmemregion28210  {
NI minlargeobj;
NI maxlargeobj;
TY28222 freesmallchunks;
Tllchunk28204* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Tbigchunk27442* freechunkslist;
Tintset27417 chunkstarts;
Tavlnode28208* root;
Tavlnode28208* deleted;
Tavlnode28208* last;
Tavlnode28208* freeavlnodes;
};
struct  Tgcstat48214  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Tgcheap48216  {
void* stackbottom;
NI cyclethreshold;
Tcellseq46363 zct;
Tcellseq46363 decstack;
Tcellset46359 cycleroots;
Tcellseq46363 tempstack;
NI recgclock;
Tmemregion28210 region;
Tgcstat48214 stat;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tstrtable190817  {
NI counter;
Tsymseq190815* data;
};
struct  Tlineinfo163338  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tsym190843  {
  Tidobj167015 Sup;
NU8 kind;
union{
struct {Ttypeseq190845* typeinstcache;
Tscope190837* typscope;
} S1;
struct {TY190944* procinstcache;
Tsym190843* gcunsafetyreason;
} S2;
struct {TY190944* usedgenerics;
Tstrtable190817 tab;
} S3;
struct {Tsym190843* guard;
} S4;
} kindU;
NU16 magic;
Ttype190849* typ;
Tident167021* name;
Tlineinfo163338 info;
Tsym190843* owner;
NU32 flags;
Tnode190813* ast;
NU32 options;
NI position;
NI offset;
Tloc190827 loc;
Tlib190831* annex;
Tnode190813* constraint;
};
struct  Tpasscontext241005  {
  TNimObject Sup;
NIM_BOOL fromcache;
};
struct  Intset187056  {
NI counter;
NI max;
Ttrunk187052* head;
Ttrunkseq187054* data;
};
struct  Tlinkedlist130028  {
Tlistentry130022* head;
Tlistentry130022* tail;
NI counter;
};
struct  Tidtable190861  {
NI counter;
Tidpairseq190859* data;
};
typedef N_NIMCALL_PTR(Tnode190813*, TY244072) (Tcontext244023* c, Tnode190813* n);
typedef N_NIMCALL_PTR(Tnode190813*, TY244077) (Tcontext244023* c, Tnode190813* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode190813*, TY244085) (Tcontext244023* c, Tnode190813* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode190813*, TY244093) (Tcontext244023* c, Tnode190813* n);
typedef N_NIMCALL_PTR(Tnode190813*, TY244098) (Tcontext244023* c, Tnode190813* n, NU16 flags);
typedef N_NIMCALL_PTR(Tnode190813*, TY244106) (Tcontext244023* c, Tnode190813* n);
typedef N_NIMCALL_PTR(Tnode190813*, TY244111) (Tcontext244023* c, Tnode190813* n, Tnode190813* norig, NU32 filter);
typedef N_NIMCALL_PTR(Ttype190849*, TY244118) (Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
typedef struct {
N_NIMCALL_PTR(Tnode190813*, ClPrc) (Tcontext244023* c, Tidtable190861 pt, Tnode190813* n, void* ClEnv);
void* ClEnv;
} TY244124;
typedef struct {
N_NIMCALL_PTR(Tsym190843*, ClPrc) (Tcontext244023* c, Tsym190843* fn, Tidtable190861 pt, Tlineinfo163338 info, void* ClEnv);
void* ClEnv;
} TY244130;
typedef N_NIMCALL_PTR(Tsym190843*, TY244146) (Tcontext244023* c, Tsym190843* dc, Ttype190849* t, Tlineinfo163338 info, NU8 op);
struct  Tcontext244023  {
  Tpasscontext241005 Sup;
Tsym190843* module;
Tscope190837* currentscope;
Tscope190837* importtable;
Tscope190837* toplevelscope;
Tproccon244011* p;
Tsymseq190815* friendmodules;
NI instcounter;
Intset187056 ambiguoussymbols;
NI intypeclass;
NI ingenericcontext;
NI inunrolledcontext;
NI incompilescontext;
NI ingenericinst;
Tsymseq190815* converters;
Tsymseq190815* patterns;
Tlinkedlist130028 optionstack;
Tidtable190861 symmapping;
Tlinkedlist130028 libs;
TY244072 semconstexpr;
TY244077 semexpr;
TY244085 semtryexpr;
TY244093 semtryconstexpr;
TY244098 semoperand;
TY244106 semconstboolexpr;
TY244111 semoverloadedcall;
TY244118 semtypenode;
TY244124 seminferredlambda;
TY244130 semgenerateinstance;
Intset187056 includedfiles;
Tstrtable190817 userpragmas;
Tctx243048* evalcontext;
Intset187056 unknownidents;
TY244141* generics;
NI lastgenericidx;
NI hloloopdetector;
NI inparallelstmt;
TY244146 insttypeboundop;
};
struct  Tnode190813  {
Ttype190849* typ;
Tlineinfo163338 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym190843* sym;
} S4;
struct {Tident167021* ident;
} S5;
struct {Tnodeseq190807* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
struct  Tproccon244011  {
Tsym190843* owner;
Tsym190843* resultsym;
NI nestedloopcounter;
NI nestedblockcounter;
NI intrystmt;
Tproccon244011* next;
NIM_BOOL wasforwarded;
Tnode190813* bracketexpr;
};
struct  Tident167021  {
  Tidobj167015 Sup;
NimStringDesc* s;
Tident167021* next;
NI h;
};
typedef NU8 TY432644[20];
typedef Tnode190813* TY416419[2];
typedef Ttype190849* TY416424[2];
struct  Tidentiter198141  {
NI h;
Tident167021* name;
};
struct  Toverloaditer249431  {
Tidentiter198141 it;
Tsym190843* m;
NU8 mode;
NI symchoiceindex;
Tscope190837* scope;
Intset187056 insymchoice;
};
typedef NimStringDesc* TY154965[2];
struct TY86345 {
NimStringDesc* Field0;
NI Field1;
};
struct  Tcandidate344209  {
Tcontext244023* c;
NI exactmatches;
NI genericmatches;
NI subtypematches;
NI intconvmatches;
NI convmatches;
NU8 state;
Ttype190849* callee;
Tsym190843* calleesym;
NI calleescope;
Tnode190813* call;
Tidtable190861 bindings;
NIM_BOOL basetypematch;
NU8 fauxmatch;
NIM_BOOL genericconverter;
NIM_BOOL coercedistincts;
NIM_BOOL typedescmatched;
NI inheritancepenalty;
Tsymseq190815* errors;
};
struct  Trepltypevars265544  {
Tcontext244023* c;
Tidtable190861 typemap;
Tidtable190861 symmap;
Tidtable190861 localcache;
Tlineinfo163338 info;
NIM_BOOL allowmetatypes;
NIM_BOOL skiptypedesc;
};
struct  Genericctx426608  {
Intset187056 tomixin;
NIM_BOOL cursorinbody;
};
struct  Tinstantiation190833  {
Tsym190843* sym;
Ttypeseq190845* concretetypes;
TY190933* usedby;
};
struct  Tinstantiationpair244013  {
Tsym190843* genericsym;
Tinstantiation190833* inst;
};
typedef NU8 Tspecialwords172012[33];
typedef Ttype190849* TY244864[2];
typedef Tnode190813* TY446930[3];
struct  Tscope190837  {
NI depthlevel;
Tstrtable190817 symbols;
Tnodeseq190807* usingsyms;
Tscope190837* parent;
};
struct TY412758 {
Tsym190843* Field0;
NI Field1;
};
typedef Ttype190849* TY349187[1];
struct  Tlistentry130022  {
  TNimObject Sup;
Tlistentry130022* prev;
Tlistentry130022* next;
};
struct  Toptionentry244005  {
  Tlistentry130022 Sup;
NU32 options;
NU8 defaultcc;
Tlib190831* dynlib;
NU64 notes;
Tnode190813* otherpragmas;
};
struct  TY420253  {
NI HEX3Astate;
NimStringDesc* paramname419285;
Tnode190813* genericparams419283;
Tlineinfo163338 info419286;
Tcontext244023* c419281;
};
typedef struct {
N_NIMCALL_PTR(Ttype190849*, ClPrc) (Ttype190849* typeclass, Tident167021* typid, void* ClEnv);
void* ClEnv;
} TY419302;
typedef N_CLOSURE_PTR(Ttype190849*, TMP3133) (Ttype190849* typeclass, Tident167021* typid);
typedef N_CLOSURE_PTR(Ttype190849*, TMP3134) (Ttype190849* typeclass, Tident167021* typid);
typedef N_CLOSURE_PTR(Ttype190849*, TMP3135) (Ttype190849* typeclass, Tident167021* typid);
typedef N_CLOSURE_PTR(Ttype190849*, TMP3136) (Ttype190849* typeclass, Tident167021* typid);
typedef N_CLOSURE_PTR(Ttype190849*, TMP3137) (Ttype190849* typeclass, Tident167021* typid);
typedef N_CLOSURE_PTR(Ttype190849*, TMP3138) (Ttype190849* typeclass, Tident167021* typid);
typedef N_CLOSURE_PTR(Ttype190849*, TMP3139) (Ttype190849* typeclass, Tident167021* typid);
typedef N_CLOSURE_PTR(Ttype190849*, TMP3140) (Ttype190849* typeclass, Tident167021* typid);
typedef N_CLOSURE_PTR(Ttype190849*, TMP3142) (Ttype190849* typeclass, Tident167021* typid);
typedef N_CLOSURE_PTR(Ttype190849*, TMP3143) (Ttype190849* typeclass, Tident167021* typid);
struct  Templctx422582  {
Tcontext244023* c;
Intset187056 tobind;
Intset187056 tomixin;
Intset187056 toinject;
Tsym190843* owner;
NIM_BOOL cursorinbody;
};
typedef Tsym190843* TY432049[2];
typedef Tnode190813* TY245103[2];
struct  Slice85768  {
NI a;
NI b;
};
typedef Tnode190813* TY193071[7];
typedef Tnode190813* TY208680[1];
typedef NU8 TY443856[33];
typedef NimStringDesc* TY442654[2];
typedef N_NIMCALL_PTR(Tnode190813*, Transformation406013) (Tcontext244023* c, Tnode190813* n);
typedef NimStringDesc* TY176061[3];
typedef NimStringDesc* TY164566[1];
struct  Tliftctx434286  {
Tcontext244023* c;
Tlineinfo163338 info;
NU8 kind;
Tsym190843* fn;
Ttype190849* 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;
} TY15609;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY15609 raiseAction;
};
typedef N_CLOSURE_PTR(Tsym190843*, TMP3413) (Tcontext244023* c, Tsym190843* fn, Tidtable190861 pt, Tlineinfo163338 info);
struct TY432269 {
Tnode190813* Field0;
Tnode190813* Field1;
};
struct  Tfieldinstctx436147  {
Ttype190849* tupletype;
NI tupleindex;
Tsym190843* field;
NIM_BOOL replacebyfieldname;
};
struct  Tfieldsctx436309  {
Tcontext244023* c;
NU16 m;
};
typedef N_NIMCALL_PTR(Tnode190813*, TY241069) (Tsym190843* m, NI32 fileidx);
struct  Ttabiter198119  {
NI h;
};
typedef N_CLOSURE_PTR(Tnode190813*, TMP3477) (Tcontext244023* c, Tidtable190861 pt, Tnode190813* n, void* ClEnv);
typedef N_CLOSURE_PTR(Tsym190843*, TMP3478) (Tcontext244023* c, Tsym190843* fn, Tidtable190861 pt, Tlineinfo163338 info, void* ClEnv);
struct  Tiitable198274  {
NI counter;
Tiipairseq198272* data;
};
struct  Tindex233028  {
NI lastidxkey;
NI lastidxval;
Tiitable198274 tab;
NimStringDesc* r;
NI offset;
};
struct  Memfile231208  {
void* mem;
NI size;
int handle;
};
struct  Trodreader233030  {
  TNimObject Sup;
NI pos;
NCSTRING s;
NU32 options;
NU8 reason;
TY190933* moddeps;
TY190933* files;
NI dataidx;
NI convertersidx;
NI initidx;
NI interfidx;
NI compilerprocsidx;
NI methodsidx;
NimStringDesc* filename;
Tindex233028 index;
Tindex233028 imports;
NI readerindex;
NI line;
NI moduleid;
Tidtable190861 syms;
Memfile231208 memfile;
Tsymseq190815* methods;
NimStringDesc* origfile;
NIM_BOOL inviewmode;
};
struct  Ropeobj161009  {
  TNimObject Sup;
Ropeobj161009* left;
Ropeobj161009* right;
NI length;
NimStringDesc* data;
};
typedef NI TY27420[16];
struct  Tpagedesc46355  {
Tpagedesc46355* next;
NI key;
TY27420 bits;
};
struct  Tbasechunk27438  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Tsmallchunk27440  {
  Tbasechunk27438 Sup;
Tsmallchunk27440* next;
Tsmallchunk27440* prev;
Tfreecell27430* freelist;
NI free;
NI acc;
NF data;
};
struct  Tllchunk28204  {
NI size;
NI acc;
Tllchunk28204* next;
};
struct  Tbigchunk27442  {
  Tbasechunk27438 Sup;
Tbigchunk27442* next;
Tbigchunk27442* prev;
NI align;
NF data;
};
struct  Ttrunk27413  {
Ttrunk27413* next;
NI key;
TY27420 bits;
};
typedef Tavlnode28208* TY28214[2];
struct  Tavlnode28208  {
TY28214 link;
NI key;
NI upperbound;
NI level;
};
struct  Tlib190831  {
  Tlistentry130022 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj161009* name;
Tnode190813* path;
};
struct  Ttrunk187052  {
Ttrunk187052* next;
NI key;
TY27420 bits;
};
struct  Tidpair190857  {
Tidobj167015* key;
TNimObject* val;
};
struct  Tctx243048  {
  Tpasscontext241005 Sup;
TY243253* code;
TY164036* debug;
Tnode190813* globals;
Tnode190813* constants;
Ttypeseq190845* types;
Tnode190813* currentexceptiona;
Tnode190813* currentexceptionb;
NI exceptioninstr;
PprocHEX3Aobjecttype243232* prc;
Tsym190843* module;
Tnode190813* callsite;
NU8 mode;
NU8 features;
NIM_BOOL traceactive;
NI loopiterations;
Tlineinfo163338 comesfromheuristic;
TY243272* callbacks;
NimStringDesc* errorflag;
};
struct  Tiipair198270  {
NI key;
NI val;
};
struct  Tfreecell27430  {
Tfreecell27430* next;
NI zerofield;
};
struct TY243239 {
NIM_BOOL Field0;
NU8 Field1;
};
typedef TY243239 TY243236[256];
struct  PprocHEX3Aobjecttype243232  {
TY243233* blocks;
Tsym190843* sym;
TY243236 slots;
NI maxslots;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (Vmargs243042* args, void* ClEnv);
void* ClEnv;
} Vmcallback243044;
struct TY243273 {
NimStringDesc* Field0;
Vmcallback243044 Field1;
};
struct  Tblock243030  {
Tsym190843* label;
TY243213* fixups;
};
struct  Vmargs243042  {
NI ra;
NI rb;
NI rc;
void* slots;
Tnode190813* currentexception;
};
struct Tsymseq190815 {
  TGenericSeq Sup;
  Tsym190843* data[SEQ_DECL_SIZE];
};
struct Ttypeseq190845 {
  TGenericSeq Sup;
  Ttype190849* data[SEQ_DECL_SIZE];
};
struct TY190944 {
  TGenericSeq Sup;
  Tinstantiation190833* data[SEQ_DECL_SIZE];
};
struct TY244141 {
  TGenericSeq Sup;
  Tinstantiationpair244013 data[SEQ_DECL_SIZE];
};
struct Tnodeseq190807 {
  TGenericSeq Sup;
  Tnode190813* data[SEQ_DECL_SIZE];
};
struct TY412757 {
  TGenericSeq Sup;
  TY412758 data[SEQ_DECL_SIZE];
};
struct Ttrunkseq187054 {
  TGenericSeq Sup;
  Ttrunk187052* data[SEQ_DECL_SIZE];
};
struct Tidpairseq190859 {
  TGenericSeq Sup;
  Tidpair190857 data[SEQ_DECL_SIZE];
};
struct TY190933 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct Tiipairseq198272 {
  TGenericSeq Sup;
  Tiipair198270 data[SEQ_DECL_SIZE];
};
struct TY243253 {
  TGenericSeq Sup;
  NU32 data[SEQ_DECL_SIZE];
};
struct TY164036 {
  TGenericSeq Sup;
  Tlineinfo163338 data[SEQ_DECL_SIZE];
};
struct TY243272 {
  TGenericSeq Sup;
  TY243273 data[SEQ_DECL_SIZE];
};
struct TY243233 {
  TGenericSeq Sup;
  Tblock243030 data[SEQ_DECL_SIZE];
};
struct TY243213 {
  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(Tcell46347*, usrtocell_49846)(void* usr);
static N_INLINE(void, rtladdzct_51404)(Tcell46347* c);
N_NOINLINE(void, addzct_49817)(Tcellseq46363* s, Tcell46347* c);
N_NIMCALL(Tident167021*, getident_167463)(NimStringDesc* identifier);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newObjRC1)(TNimType* typ, NI size);
N_NIMCALL(Tnode190813*, newidentnode_192313)(Tident167021* ident, Tlineinfo163338 info);
N_NIMCALL(Tlineinfo163338, unknownlineinfo_164027)(void);
N_NIMCALL(Tcontext244023*, newcontext_244182)(Tsym190843* module);
N_NIMCALL(void, internalerror_165199)(Tlineinfo163338 info, NimStringDesc* errmsg);
N_NIMCALL(Tnode190813*, semconstexpr_410485)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semexprwithtype_409211)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, semexpr_409201)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(void, suggestexpr_354070)(Tcontext244023* c, Tnode190813* node);
N_NIMCALL(Tsym190843*, lookup_249804)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, semcapturesym_361834)(Tsym190843* s, Tsym190843* owner);
N_NIMCALL(Tnode190813*, semsym_441038)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, NU16 flags);
N_NIMCALL(void, markused_344251)(Tlineinfo163338 info, Tsym190843* s);
N_NIMCALL(Ttype190849*, skiptypes_194167)(Ttype190849* t, NU64 kinds);
static N_INLINE(Tnode190813*, inlineconst_441028)(Tnode190813* n, Tsym190843* s);
N_NIMCALL(Tnode190813*, copytree_195028)(Tnode190813* src);
N_NIMCALL(Tnode190813*, newsymnode_192338)(Tsym190843* sym, Tlineinfo163338 info);
static N_INLINE(NI, len_191097)(Tnode190813* n);
N_NIMCALL(Tnode190813*, semmacroexpr_410066)(Tcontext244023* c, Tnode190813* n, Tnode190813* norig, Tsym190843* sym, NU16 flags);
N_NIMCALL(void, pushinfocontext_164192)(Tlineinfo163338 info);
N_NIMCALL(void, globalerror_165134)(Tlineinfo163338 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(Tnode190813*, evalmacrocall_397902)(Tsym190843* module, Tnode190813* n, Tnode190813* norig, Tsym190843* sym);
N_NIMCALL(Tnode190813*, semaftermacrocall_415431)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, NU16 flags);
N_NIMCALL(Tsym190843*, getmodule_198243)(Tsym190843* s);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(Tnode190813*, semstmt_409277)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semexprnotype_409221)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, discardcheck_432756)(Tcontext244023* c, Tnode190813* result);
N_NIMCALL(void, message_165188)(Tlineinfo163338 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NIM_BOOL, implicitlydiscardable_432645)(Tnode190813* n_432647);
N_NIMCALL(Tnode190813*, lastson_193431)(Tnode190813* n);
N_NIMCALL(NIM_BOOL, iscallexpr_191071)(Tnode190813* n);
N_NIMCALL(void, fixniltype_432694)(Tnode190813* n);
static N_INLINE(NIM_BOOL, isatom_195905)(Tnode190813* n);
N_NIMCALL(void, localerror_165155)(Tlineinfo163338 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, typetostring_220032)(Ttype190849* typ, NU8 prefer);
N_NIMCALL(Ttype190849*, semtypenode_409269)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(void, checksonslen_245249)(Tnode190813* n, NI length);
N_NIMCALL(NI, sonslen_193403)(Tnode190813* n);
N_NIMCALL(Ttype190849*, semanontuple_417414)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(Ttype190849*, neworprevtype_415695)(NU8 kind, Ttype190849* prev, Tcontext244023* c);
N_NIMCALL(Ttype190849*, newtypes_244219)(NU8 kind, Tcontext244023* c);
N_NIMCALL(void, addsonskipintlit_238729)(Ttype190849* father, Ttype190849* son);
static N_INLINE(NIM_BOOL, isrange_219612)(Tnode190813* n);
static N_INLINE(Tnode190813*, HEX5BHEX5D_191244)(Tnode190813* n, NI i);
N_NIMCALL(Ttype190849*, semrangeaux_416292)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(Tnode190813*, newnodei_192351)(NU8 kind, Tlineinfo163338 info);
static N_INLINE(Ttype190849*, skipintlit_238696)(Ttype190849* t);
N_NIMCALL(Ttype190849*, getsystype_238030)(NU8 kind);
N_NIMCALL(NIM_BOOL, sametype_225092)(Ttype190849* a, Ttype190849* b, NU8 flags);
N_NIMCALL(NIM_BOOL, isordinaltype_220093)(Ttype190849* t);
N_NIMCALL(NIM_BOOL, enumhasholes_220099)(Ttype190849* t);
N_NIMCALL(NIM_BOOL, hasgenericarguments_265765)(Tnode190813* n);
N_NIMCALL(void, addson_192819)(Tnode190813* father, Tnode190813* son);
N_NIMCALL(Tnode190813*, makestaticexpr_244820)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NU8, weaklevalue_198424)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(Ttype190849*, semtypeexpr_421172)(Tcontext244023* c, Tnode190813* n_421175);
N_NIMCALL(Ttype190849*, base_220039)(Ttype190849* t);
N_NIMCALL(NimStringDesc*, rendertree_212058)(Tnode190813* n, NU8 renderflags);
N_NIMCALL(Tident167021*, considerquotedident_249010)(Tnode190813* n);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(Ttype190849*, makeandtype_244858)(Tcontext244023* c, Ttype190849* t1, Ttype190849* t2);
N_NIMCALL(Ttype190849*, makeortype_244930)(Tcontext244023* c, Ttype190849* t1, Ttype190849* t2);
static N_INLINE(Ttype190849*, freshtype_421192)(Ttype190849* res, Ttype190849* prev);
N_NIMCALL(Ttype190849*, copytype_193549)(Ttype190849* t, Tsym190843* owner, NIM_BOOL keepid);
N_NIMCALL(Ttype190849*, makenottype_245002)(Tcontext244023* c, Ttype190849* t1);
N_NIMCALL(Ttype190849*, semanyref_416111)(Tcontext244023* c, Tnode190813* n_416114, NU8 kind, Ttype190849* prev);
N_NIMCALL(Ttype190849*, newconstraint_415725)(Tcontext244023* c, NU8 k);
N_NIMCALL(void, checkminsonslen_245259)(Tnode190813* n, NI length);
N_NIMCALL(Tnode190813*, semwhen_410040)(Tcontext244023* c, Tnode190813* n, NIM_BOOL semcheck);
N_NIMCALL(void, illformedast_245229)(Tnode190813* n);
N_NIMCALL(void, idsynchronizationpoint_189453)(NI idrange);
N_NIMCALL(Tsym190843*, semtypeident_416777)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tsym190843*, qualifiedlookup_249864)(Tcontext244023* c, Tnode190813* n, NU8 flags);
N_NIMCALL(Tsym190843*, errorsym_249372)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tsym190843*, copysym_193607)(Tsym190843* s, NIM_BOOL keepid);
N_NIMCALL(NI, len_193377)(Ttype190849* n);
N_NIMCALL(Tsym190843*, initoverloaditer_250108)(Toverloaditer249431* o, Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tsym190843*, nextoverloaditer_250277)(Toverloaditer249431* o, Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_NIMCALL(Ttype190849*, semarray_416720)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(Ttype190849*, semarrayindex_416610)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Ttype190849*, makerangewithstaticexpr_245084)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Ttype190849*, makerangetype_245182)(Tcontext244023* c, NI64 first, NI64 last, Tlineinfo163338 info, Ttype190849* inttype);
N_NIMCALL(Ttype190849*, lastson_193442)(Ttype190849* n);
N_NIMCALL(Ttype190849*, semcontainer_416085)(Tcontext244023* c, Tnode190813* n, NU8 kind, NimStringDesc* kindstr, Ttype190849* prev);
N_NIMCALL(Ttype190849*, errortype_245150)(Tcontext244023* c);
N_NIMCALL(Ttype190849*, semrange_416501)(Tcontext244023* c, Tnode190813* n_416504, Ttype190849* prev);
N_NIMCALL(Ttype190849*, semset_416056)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(NI64, lengthord_220016)(Ttype190849* t);
N_NIMCALL(Ttype190849*, semordinal_416756)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(Ttype190849*, semvarargs_416098)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(Ttype190849*, maketypedesc_244682)(Tcontext244023* c, Ttype190849* typ);
N_NIMCALL(Tsym190843*, getcurrowner_244256)(void);
N_NIMCALL(void, rawaddson_194478)(Ttype190849* father, Ttype190849* son);
N_NIMCALL(Ttype190849*, semgeneric_420923)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, Ttype190849* prev);
N_NIMCALL(void, localerror_165166)(Tlineinfo163338 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_82529, TNimType* typ);
N_NIMCALL(Ttype190849*, semgenericparamininvocation_420915)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, internalerror_165218)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_165306)(TY86345 x);
N_NIMCALL(void, newcandidate_344478)(Tcontext244023* ctx, Ttype190849* callee, Tcandidate344209* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, matches_350449)(Tcontext244023* c, Tnode190813* n, Tnode190813* norig, Tcandidate344209* m);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, describeargs_344974)(Tcontext244023* c, Tnode190813* n, NI startidx, NU8 prefer);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NIM_BOOL, containsgenerictype_229310)(Ttype190849* t);
N_NIMCALL(Ttype190849*, instgenericcontainer_412151)(Tcontext244023* c, Tlineinfo163338 info, Ttype190849* header, NIM_BOOL allowmetatypes);
N_NIMCALL(void, initidtable_194057)(Tidtable190861* x);
N_NIMCALL(Ttype190849*, replacetypevarst_265592)(Trepltypevars265544* cl, Ttype190849* t);
N_NIMCALL(NIM_BOOL, ismetatype_191821)(Ttype190849* t);
N_NIMCALL(Tnode190813*, semgenericstmt_415688)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, initintset_187927)(Intset187056* Result);
N_NIMCALL(Tnode190813*, semgenericstmt_426618)(Tcontext244023* c, Tnode190813* n, NU8 flags_426622, Genericctx426608* ctx);
N_NIMCALL(Tnode190813*, lookup_428004)(Tcontext244023* c, Tnode190813* n, NU8 flags, Genericctx426608* ctx);
N_NIMCALL(Tsym190843*, skipalias_249150)(Tsym190843* s, Tnode190813* n);
N_NIMCALL(Tsym190843*, searchinscopes_249205)(Tcontext244023* c, Tident167021* s);
N_NIMCALL(NIM_BOOL, contains_187829)(Intset187056 s, NI key);
N_NIMCALL(Tnode190813*, symchoice_422316)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, NU8 r);
N_NIMCALL(Tnode190813*, newnodeit_192807)(NU8 kind, Tlineinfo163338 info, Ttype190849* typ);
N_NIMCALL(Tnode190813*, semgenericstmtsymbol_426643)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, Genericctx426608* ctx);
N_NIMCALL(Tnode190813*, semtemplateexpr_410055)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, NU16 flags);
N_NIMCALL(Tnode190813*, evaltemplate_383260)(Tnode190813* n, Tsym190843* tmpl, Tsym190843* gensymowner);
N_NIMCALL(void, popinfocontext_164211)(void);
N_NIMCALL(Tnode190813*, newsymnodetypedesc_257736)(Tsym190843* s, Tlineinfo163338 info);
N_NIMCALL(Tnode190813*, fuzzylookup_428062)(Tcontext244023* c, Tnode190813* n_428065, NU8 flags, Genericctx426608* ctx, NIM_BOOL* ismacro);
N_NIMCALL(Tnode190813*, newdot_428051)(Tnode190813* n, Tnode190813* b);
N_NIMCALL(void, add_191164)(Tnode190813* father, Tnode190813* son);
N_NIMCALL(Tnode190813*, semmixinstmt_422521)(Tcontext244023* c, Tnode190813* n, Intset187056* tomixin);
N_NIMCALL(void, incl_187856)(Intset187056* s, NI key);
N_NIMCALL(Tnode190813*, semgenericstmtscope_426625)(Tcontext244023* c, Tnode190813* n, NU8 flags, Genericctx426608* ctx);
N_NIMCALL(Tscope190837*, openscope_249091)(Tcontext244023* c);
N_NIMCALL(void, closescope_249111)(Tcontext244023* c);
N_NIMCALL(void, addtempdecl_428491)(Tcontext244023* c, Tnode190813* n, NU8 kind);
N_NIMCALL(Tsym190843*, newsyms_409904)(NU8 kind, Tnode190813* n, Tcontext244023* c);
N_NIMCALL(Tsym190843*, newsym_191656)(NU8 symkind, Tident167021* name, Tsym190843* owner, Tlineinfo163338 info);
N_NIMCALL(Tnode190813*, getidentnode_426598)(Tnode190813* n);
N_NIMCALL(void, addprelimdecl_249619)(Tcontext244023* c, Tsym190843* sym);
N_NIMCALL(void, adddecl_249607)(Tcontext244023* c, Tsym190843* sym);
N_NIMCALL(Tnode190813*, getbody_235648)(Tsym190843* s);
N_NIMCALL(Ttype190849*, maketypefromexpr_244727)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, assigntype_193452)(Ttype190849* dest, Ttype190849* src);
N_NIMCALL(Ttype190849*, semobjectnode_419016)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(Ttype190849*, skiptypesornil_194195)(Ttype190849* t, NU64 kinds);
static N_INLINE(Ttype190849*, skipgenericinvocation_418764)(Ttype190849* t);
N_NIMCALL(void, addinheritedfields_418798)(Tcontext244023* c, Intset187056* check, NI* pos, Ttype190849* obj);
N_NIMCALL(NI, sonslen_193351)(Ttype190849* n);
N_NIMCALL(void, addinheritedfieldsaux_418668)(Tcontext244023* c, Intset187056* check, NI* pos, Tnode190813* n);
N_NIMCALL(void, semrecordnodeaux_418088)(Tcontext244023* c, Tnode190813* n, Intset187056* check, NI* pos, Tnode190813* father, Ttype190849* rectype);
N_NIMCALL(Tnode190813*, semconstboolexpr_415652)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, fitnode_409245)(Tcontext244023* c, Ttype190849* formal, Tnode190813* arg);
N_NIMCALL(Tnode190813*, copynode_194640)(Tnode190813* src);
N_NIMCALL(Tnode190813*, indextypesmatch_409348)(Tcontext244023* c, Ttype190849* f, Ttype190849* a, Tnode190813* arg);
N_NIMCALL(void, initcandidate_344276)(Tcontext244023* ctx, Tcandidate344209* c, Ttype190849* callee);
N_NIMCALL(Tnode190813*, paramtypesmatch_349556)(Tcandidate344209* m, Ttype190849* f, Ttype190849* a, Tnode190813* arg, Tnode190813* argorig);
N_NIMCALL(void, instgenericconvertersarg_414176)(Tcontext244023* c, Tnode190813* a, Tcandidate344209* x);
N_NIMCALL(NIM_BOOL, isgenericroutine_195651)(Tsym190843* s);
N_NIMCALL(Tsym190843*, generateinstance_412450)(Tcontext244023* c, Tsym190843* fn, Tidtable190861 pt, Tlineinfo163338 info);
N_NIMCALL(void, pushowner_244261)(Tsym190843* owner);
N_NIMCALL(Tnode190813*, newsymnode_192325)(Tsym190843* sym);
N_NIMCALL(Tinstantiation190833*, new_412524)(void);
N_NIMCALL(void, instantiategenericparamlist_411213)(Tcontext244023* c, Tnode190813* n, Tidtable190861 pt, Tinstantiation190833* entry);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(TNimObject*, idtableget_198182)(Tidtable190861 t, Tidobj167015* key);
N_NIMCALL(Ttype190849*, generatetypeinstance_267631)(Tcontext244023* p, Tidtable190861 pt, Tlineinfo163338 info, Ttype190849* t);
static N_INLINE(void, pushproccon_244359)(Tcontext244023* c, Tsym190843* owner);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_52222)(Tcell46347* c);
static N_INLINE(NIM_BOOL, canbecycleroot_49867)(Tcell46347* c);
static N_INLINE(void, rtladdcycleroot_50623)(Tcell46347* c);
N_NOINLINE(void, incl_47065)(Tcellset46359* s, Tcell46347* cell);
static N_INLINE(void, decref_51804)(Tcell46347* c);
N_NIMCALL(void, instantiateproctype_412176)(Tcontext244023* c, Tidtable190861 pt, Tsym190843* prc, Tlineinfo163338 info);
N_NIMCALL(void, inittypevars_267602)(Tcontext244023* p, Tidtable190861 pt, Tlineinfo163338 info, Trepltypevars265544* Result);
N_NIMCALL(Ttype190849*, instcopytype_266470)(Trepltypevars265544* cl, Ttype190849* t);
N_NIMCALL(Tnode190813*, shallowcopy_194817)(Tnode190813* src);
N_NIMCALL(void, resetidtable_194077)(Tidtable190861* x);
N_NIMCALL(void, propagatetoowner_194274)(Ttype190849* owner, Ttype190849* elem);
N_NIMCALL(void, erasevoidparams_266982)(Ttype190849* t);
N_NIMCALL(void, skipintliteralparams_267136)(Ttype190849* t);
N_NIMCALL(void, maybeaddresult_409301)(Tcontext244023* c, Tsym190843* s, Tnode190813* n);
N_NIMCALL(void, addresult_437997)(Tcontext244023* c, Ttype190849* t, Tlineinfo163338 info, NU8 owner);
N_NIMCALL(void, addparamorresult_411885)(Tcontext244023* c, Tsym190843* param, NU8 kind);
N_NIMCALL(Ttype190849*, findenforcedstatictype_419139)(Ttype190849* t_419141);
N_NIMCALL(Tsym190843*, getcompilerproc_238036)(NimStringDesc* name);
N_NIMCALL(Tsym190843*, getsyssym_238054)(NimStringDesc* name);
N_NIMCALL(void, addresultnode_438031)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tsym190843*, genericcacheget_411447)(Tsym190843* genericsym, Tinstantiation190833 entry);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_193870)(TY190944* x, TY190944* y);
N_NIMCALL(NIM_BOOL, sameinstantiation_411394)(Tinstantiation190833 a, Tinstantiation190833 b);
N_NIMCALL(NIM_BOOL, comparetypes_227047)(Ttype190849* x, Ttype190849* y, NU8 cmp, NU8 flags);
N_NIMCALL(void, safeadd_412561)(TY190944** x, Tinstantiation190833* y);
N_NIMCALL(void, makeinstpair_244157)(Tsym190843* s, Tinstantiation190833* inst, Tinstantiationpair244013* Result);
N_NIMCALL(void, pragma_260069)(Tcontext244023* c, Tsym190843* sym, Tnode190813* n, Tspecialwords172012 validpragmas);
N_NIMCALL(void, instantiatebody_411941)(Tcontext244023* c, Tnode190813* n, Tnode190813* params, Tsym190843* result);
N_NIMCALL(void, idtableput_198196)(Tidtable190861* t, Tidobj167015* key, TNimObject* val);
N_NIMCALL(void, freshgensyms_411801)(Tnode190813* n, Tsym190843* owner, Tidtable190861* symmap);
static N_INLINE(NI, safelen_191125)(Tnode190813* n);
N_NIMCALL(Tnode190813*, semprocbody_409238)(Tcontext244023* c, Tnode190813* n);
static N_INLINE(NIM_BOOL, isemptytype_195933)(Ttype190849* t);
N_NIMCALL(Tnode190813*, newnodei_192407)(NU8 kind, Tlineinfo163338 info, NI children);
N_NIMCALL(Tnode190813*, semasgn_447081)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, builtinfieldaccess_445958)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(NIM_BOOL, istypeexpr_445443)(Tnode190813* n);
N_NIMCALL(Tsym190843*, getsymfromlist_198228)(Tnode190813* list, Tident167021* ident, NI start);
N_NIMCALL(Tnode190813*, readtypeparameter_445877)(Tcontext244023* c, Ttype190849* typ, Tident167021* paramname, Tlineinfo163338 info);
N_NIMCALL(Ttype190849*, skipgenericalias_226119)(Ttype190849* t);
N_NIMCALL(Tsym190843*, linkto_191884)(Tsym190843* s, Ttype190849* t);
N_NIMCALL(Ttype190849*, newtypewithsons_244807)(Tcontext244023* c, NU8 kind, Ttypeseq190845* sons);
N_NIMCALL(Tsym190843*, lookupinrecordandbuildcheck_445604)(Tcontext244023* c, Tnode190813* n, Tnode190813* r, Tident167021* field, Tnode190813** check);
N_NIMCALL(Ttype190849*, createsettype_445460)(Tcontext244023* c, Ttype190849* basetype);
static N_INLINE(NIM_BOOL, fieldvisible_351059)(Tcontext244023* c, Tsym190843* f);
N_NIMCALL(Tnode190813*, makederef_445833)(Tnode190813* n);
N_NIMCALL(Tnode190813*, propertywriteaccess_446920)(Tcontext244023* c, Tnode190813* n, Tnode190813* norig, Tnode190813* a);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(Tnode190813*, newnode_192607)(NU8 kind, Tlineinfo163338 info, Tnodeseq190807* sons, Ttype190849* typ);
N_NIMCALL(Tnode190813*, semoverloadedcallanalyseeffects_444900)(Tcontext244023* c, Tnode190813* n, Tnode190813* norig, NU16 flags);
N_NIMCALL(Tnode190813*, semoverloadedcall_414892)(Tcontext244023* c, Tnode190813* n, Tnode190813* norig, NU32 filter);
N_NIMCALL(void, resolveoverloads_413359)(Tcontext244023* c, Tnode190813* n, Tnode190813* orig, NU32 filter, Tsymseq190815** errors, Tcandidate344209* Result);
N_NIMCALL(void, gatherusedsyms_413249)(Tcontext244023* c, Tnodeseq190807** usedsyms);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_263718)(Tnodeseq190807* x, Tnodeseq190807* y);
N_NIMCALL(void, safeadd_413279)(Tnodeseq190807** x, Tnode190813* y);
N_NIMCALL(void, insert_413412)(Tnodeseq190807** x, Tnode190813* item, NI i);
N_NIMCALL(void, pickbestcandidate_412740)(Tcontext244023* c, Tnode190813* headsymbol, Tnode190813* n, Tnode190813* orig, Tnode190813* initialbinding, NU32 filter, Tcandidate344209* best, Tcandidate344209* alt, Tsymseq190815** errors);
N_NIMCALL(NI, lastoverloadscope_250259)(Toverloaditer249431* o);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP3103)(void* p, NI op);
N_NIMCALL(void, initcandidate_344301)(Tcontext244023* ctx, Tcandidate344209* c, Tsym190843* callee, Tnode190813* binding, NI calleescope);
N_NIMCALL(void, determinetype_412736)(Tcontext244023* c, Tsym190843* s);
N_NIMCALL(Tnode190813*, semprocaux_438890)(Tcontext244023* c, Tnode190813* n, NU8 kind, Tspecialwords172012 validpragmas, NU8 phase);
N_NIMCALL(Tnode190813*, semprocannotation_438127)(Tcontext244023* c, Tnode190813* prc, Tspecialwords172012 validpragmas);
N_NIMCALL(Tsym190843*, lookupmacro_438097)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tsym190843*, searchinscopes_249323)(Tcontext244023* c, Tident167021* s, NU32 filter);
N_NIMCALL(Tnode190813*, copyexcept_438050)(Tnode190813* n, NI i);
N_NIMCALL(Tsym190843*, semidentdef_434142)(Tcontext244023* c, Tnode190813* n, NU8 kind);
static N_INLINE(NIM_BOOL, istoplevel_245269)(Tcontext244023* c);
N_NIMCALL(Tsym190843*, semidentwithpragma_409964)(Tcontext244023* c, NU8 kind, Tnode190813* n, NU32 allowed);
N_NIMCALL(Tsym190843*, semidentvis_409955)(Tcontext244023* c, NU8 kind, Tnode190813* n, NU32 allowed);
N_NIMCALL(Tsym190843*, newsymg_409916)(NU8 kind, Tnode190813* n, Tcontext244023* c);
static N_INLINE(void, suggestsym_353960)(Tlineinfo163338 info, Tsym190843* s);
N_NIMCALL(void, findusages_353892)(Tlineinfo163338 info, Tsym190843* s);
N_NIMCALL(void, finddefinition_353923)(Tlineinfo163338 info, Tsym190843* s);
N_NIMCALL(void, addinterfaceoverloadablesymat_249746)(Tcontext244023* c, Tscope190837* scope, Tsym190843* sym);
N_NIMCALL(Tnode190813*, semgenericparamlist_421951)(Tcontext244023* c, Tnode190813* n, Ttype190849* father);
N_NIMCALL(Ttype190849*, semgenericconstraints_421930)(Tcontext244023* c, Ttype190849* x);
N_NIMCALL(void, semparamlist_409284)(Tcontext244023* c, Tnode190813* n, Tnode190813* genericparams, Tsym190843* s);
N_NIMCALL(Ttype190849*, semproctypenode_420351)(Tcontext244023* c, Tnode190813* n, Tnode190813* genericparams, Ttype190849* prev, NU8 kind, NIM_BOOL istype);
N_NIMCALL(Ttype190849*, newproctype_420342)(Tcontext244023* c, Tlineinfo163338 info, Ttype190849* prev);
N_NIMCALL(Toptionentry244005*, lastoptionentry_244188)(Tcontext244023* c);
N_NIMCALL(Ttype190849*, semparamtype_420322)(Tcontext244023* c, Tnode190813* n, Tnode190813** constraint);
N_NIMCALL(Tnode190813*, semnodekindconstraints_268679)(Tnode190813* p);
N_NIMCALL(Ttype190849*, liftparamtype_419279)(Tcontext244023* c, NU8 prockind, Tnode190813* genericparams, Ttype190849* paramtype, NimStringDesc* paramname, Tlineinfo163338 info, NIM_BOOL anon);
N_NIMCALL(void, TMP3131)(void* p, NI op);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_CLOSURE(Ttype190849*, addimplicitgenericimpl_419301)(Ttype190849* typeclass, Tident167021* typid, void* ClEnv);
N_NIMCALL(NIM_BOOL, containsorincl_187898)(Intset187056* s, NI key);
N_NIMCALL(NIM_BOOL, isinlineiterator_348999)(Ttype190849* t);
N_NIMCALL(Tnode190813*, sempattern_423548)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, flattenstmts_219759)(Tnode190813* n);
N_NIMCALL(Tnode190813*, sempatternbody_425870)(Templctx422582* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, handlesym_426201)(Templctx422582* c, Tnode190813* n, Tsym190843* s);
N_NIMCALL(Tnode190813*, newparam_425884)(Templctx422582* c, Tnode190813* n, Tsym190843* s);
N_NIMCALL(Tnode190813*, sembindstmt_422421)(Tcontext244023* c, Tnode190813* n, Intset187056* tobind);
N_NIMCALL(Tnode190813*, expectparam_426264)(Templctx422582* c, Tnode190813* n);
N_NIMCALL(Tsym190843*, searchforproc_259278)(Tcontext244023* c, Tscope190837* scope, Tsym190843* fn);
N_NIMCALL(void, addinterfacedeclat_249677)(Tcontext244023* c, Tscope190837* scope, Tsym190843* sym);
N_NIMCALL(void, implicitpragmas_263505)(Tcontext244023* c, Tsym190843* sym, Tnode190813* n, Tspecialwords172012 validpragmas);
N_NIMCALL(void, wrongredefinition_249588)(Tlineinfo163338 info, NimStringDesc* s);
N_NIMCALL(void, addgenericparamlisttoscope_437141)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, addparams_409293)(Tcontext244023* c, Tnode190813* n, NU8 kind);
static N_INLINE(NIM_BOOL, importantcomments_154164)(void);
N_NIMCALL(void, popowner_244267)(void);
N_NIMCALL(void, semoverride_438632)(Tcontext244023* c, Tsym190843* s, Tnode190813* n);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(void, dodestructorstuff_431427)(Tcontext244023* c, Tsym190843* s, Tnode190813* n);
N_NIMCALL(Ttype190849*, instantiatedestructor_431423)(Tcontext244023* c, Ttype190849* typ);
static N_INLINE(NIM_BOOL, contains_432053)(Tsym190843** a, NI aLen0, Tsym190843* item);
static N_INLINE(NI, find_432063)(Tsym190843** a, NI aLen0, Tsym190843* item);
N_NIMCALL(Tnode190813*, generatedestructor_431970)(Tcontext244023* c, Ttype190849* t);
N_NIMCALL(Tnode190813*, destroyfieldorfields_431596)(Tcontext244023* c, Tnode190813* field, Tnode190813* holder);
N_NIMCALL(Tnode190813*, destroycase_431652)(Tcontext244023* c, Tnode190813* n, Tnode190813* holder);
N_NIMCALL(Tnodeseq190807*, HEX5BHEX5D_431717)(Tnodeseq190807* s, Slice85768 x);
static N_INLINE(Slice85768, HEX2EHEX2E_105273)(NI a, NI b);
N_NIMCALL(Tnode190813*, newnode_191401)(NU8 kind);
N_NIMCALL(Tnode190813*, destroysym_431601)(Tcontext244023* c, Tsym190843* field, Tnode190813* holder);
N_NIMCALL(Tnode190813*, usesym_354055)(Tsym190843* sym);
N_NIMCALL(Tnode190813*, symnodefromtype_410113)(Tcontext244023* c, Ttype190849* t, Tlineinfo163338 info);
N_NIMCALL(Tsym190843*, symfromtype_410078)(Ttype190849* t, Tlineinfo163338 info);
N_NIMCALL(Ttype190849*, makevartype_244643)(Tcontext244023* c, Ttype190849* basetype);
N_NIMCALL(Tnode190813*, semproc_431397)(Tcontext244023* c, Tnode190813* n);
static N_INLINE(NIM_BOOL, experimentalmode_245279)(Tcontext244023* c);
static N_INLINE(void, paramstypecheck_410015)(Tcontext244023* c, Ttype190849* typ);
N_NIMCALL(void, typeallowedcheck_409980)(Tlineinfo163338 info, Ttype190849* typ, NU8 kind);
N_NIMCALL(Ttype190849*, typeallowed_228654)(Ttype190849* t, NU8 kind);
N_NIMCALL(Tnode190813*, hlobody_411161)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, hlo_410542)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, applypatterns_410630)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, applyrule_401303)(Tcontext244023* c, Tsym190843* s, Tnode190813* n);
N_NIMCALL(Tnode190813*, evalpattern_410546)(Tcontext244023* c, Tnode190813* n, Tnode190813* orig);
N_NIMCALL(Tnode190813*, semdirectop_410032)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, aftercallactions_445366)(Tcontext244023* c, Tnode190813* n, Tnode190813* orig, NU16 flags);
N_NIMCALL(void, semfinishoperands_350385)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, activate_409327)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, fixabstracttype_443407)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, changetype_409253)(Tnode190813* n, Ttype190849* newtype, NIM_BOOL check);
N_NIMCALL(Ttype190849*, elemtype_220522)(Ttype190849* t);
N_NIMCALL(NI64, firstord_220004)(Ttype190849* t);
N_NIMCALL(NI64, lastord_220010)(Ttype190849* t);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(void, analyseifaddresstakenincall_443851)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NU8, isassignable_443642)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NU8, isassignable_269056)(Tsym190843* owner, Tnode190813* n);
N_NIMCALL(void, semprocvarcheck_431366)(Tcontext244023* c, Tnode190813* n_431369);
N_NIMCALL(Tnode190813*, skipconv_229935)(Tnode190813* n);
N_NIMCALL(void, performprocvarcheck_431302)(Tcontext244023* c, Tnode190813* n, Tsym190843* s);
N_NIMCALL(Tnode190813*, analyseifaddresstaken_443699)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, newhiddenaddrtaken_443650)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, magicsafteroverloadresolution_444353)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, semaddr_444049)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Ttype190849*, makeptrtype_244212)(Tcontext244023* c, Ttype190849* basetype);
N_NIMCALL(Tnode190813*, semtypeof_444070)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semispartof_444082)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(NU8, ispartof_399375)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(Tnode190813*, newintnodet_256028)(NI64 intval, Tnode190813* n);
N_NIMCALL(Tnode190813*, semtypetraits_444166)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, evaltypetrait_444129)(Tnode190813* trait, Ttype190849* operand, Tsym190843* context);
N_NIMCALL(Tnode190813*, newstrnode_191644)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(Ttype190849*, newtype_193140)(NU8 kind, Tsym190843* owner);
N_NIMCALL(Tnode190813*, newintnode_191608)(NU8 kind, NI64 intval);
N_NIMCALL(Tnode190813*, newstrnodet_256042)(NimStringDesc* strval, Tnode190813* n);
N_NIMCALL(Tnode190813*, seminstantiationinfo_444110)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NI, expectintlit_444100)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tlineinfo163338, getinfocontext_164237)(NI index);
N_NIMCALL(NimStringDesc*, tofullpath_164276)(NI32 fileidx);
N_NIMCALL(NimStringDesc*, tofilename_164266)(NI32 fileidx);
static N_INLINE(NI, tolinenumber_164439)(Tlineinfo163338 info);
N_NIMCALL(Tnode190813*, semord_444204)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semlowhigh_442647)(Tcontext244023* c, Tnode190813* n, NU16 m);
N_NIMCALL(Tnode190813*, semshallowcopy_444276)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, sembindsym_444214)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, errornode_245160)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NIM_BOOL, isnegative_444298)(Tnode190813* n_444300);
N_NIMCALL(NU8, checkforsideeffects_268869)(Tnode190813* n);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(NIM_BOOL, isstrangearray_444281)(Ttype190849* t_444283);
N_NIMCALL(Tsym190843*, createmagic_195986)(NimStringDesc* name, NU16 m);
N_NIMCALL(Transformation406013, getplugin_406094)(Tsym190843* fn);
N_NIMCALL(Tnode190813*, evalatcompiletime_444428)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, getconstexpr_256004)(Tsym190843* m, Tnode190813* n);
N_NIMCALL(Ttype190849*, getintervaltype_256364)(NU16 m, Tnode190813* n);
N_NIMCALL(Tnode190813*, evalstaticexpr_397832)(Tsym190843* module, Tnode190813* e, Tsym190843* prc);
N_NIMCALL(Tnode190813*, fixuptypeaftereval_410201)(Tcontext244023* c, Tnode190813* evaluated, Tnode190813* eorig);
N_NIMCALL(void, annotatetype_402134)(Tnode190813* n, Ttype190849* t);
N_NIMCALL(Tnode190813*, evalconstexpr_397821)(Tsym190843* module, Tnode190813* e);
N_NIMCALL(Tnode190813*, commonoptimizations_369597)(Tsym190843* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, transformbody_370118)(Tsym190843* module, Tnode190813* n, Tsym190843* prc);
static N_INLINE(void, popproccon_244391)(Tcontext244023* c);
N_NIMCALL(void, fixupinstantiatedsymbols_412063)(Tcontext244023* c, Tsym190843* s);
N_NIMCALL(void, semborrow_437975)(Tcontext244023* c, Tnode190813* n, Tsym190843* s);
N_NIMCALL(Tsym190843*, searchforborrowproc_415322)(Tcontext244023* c, Tscope190837* startscope, Tsym190843* fn);
N_NIMCALL(Ttype190849*, baseofdistinct_229320)(Ttype190849* t);
N_NIMCALL(void, sideeffectscheck_412116)(Tcontext244023* c, Tsym190843* s);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_412853)(Tsymseq190815* x, Tsymseq190815* y);
N_NIMCALL(void, safeadd_412966)(Tsymseq190815** x, Tsym190843* y);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(NI, cmpcandidates_344824)(Tcandidate344209* a, Tcandidate344209* b);
N_NIMCALL(void, delete_413490)(Tnodeseq190807** x, NI i);
N_NIMCALL(Tnode190813*, withinfo_192302)(Tnode190813* n, Tlineinfo163338 info);
N_NIMCALL(void, HEX5BHEX5DHEX3D_413619)(Tnodeseq190807** s, Slice85768 x, Tnode190813** b, NI bLen0);
static N_INLINE(NimStringDesc*, HEX5BHEX5D_85761)(NimStringDesc* s, Slice85768 x);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_76243, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(NIM_BOOL, samemethoddispatcher_412675)(Tsym190843* a, Tsym190843* b);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, msgkindtostring_164616)(NU16 kind);
N_NIMCALL(NimStringDesc*, getprocheader_220447)(Tsym190843* sym, NU8 prefer);
N_NIMCALL(Tnode190813*, semresolvedcall_414507)(Tcontext244023* c, Tnode190813* n, Tcandidate344209* x);
N_NIMCALL(void, instgenericconverterssons_414212)(Tcontext244023* c, Tnode190813* n, Tcandidate344209* x);
static N_INLINE(NIM_BOOL, canderef_414851)(Tnode190813* n);
N_NIMCALL(Tnode190813*, tryderef_414884)(Tnode190813* n);
N_NIMCALL(void, notfounderror_413121)(Tcontext244023* c, Tnode190813* n_413124, Tsymseq190815* errors);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(Tnode190813*, dottransformation_446679)(Tcontext244023* c, Tnode190813* n);
static N_INLINE(NIM_BOOL, issymchoice_442471)(Tnode190813* n);
N_NIMCALL(Tnode190813*, semsubscript_446774)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, semderef_446761)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NI64, getordvalue_220178)(Tnode190813* n);
N_NIMCALL(Tnode190813*, buildoverloadedsubscripts_446722)(Tnode190813* n, Tident167021* ident);
N_NIMCALL(NU8, cmptypes_348708)(Tcontext244023* c, Ttype190849* f, Ttype190849* a);
N_NIMCALL(void, typemismatch_409379)(Tnode190813* n, Ttype190849* formal, Ttype190849* actual);
N_NIMCALL(Tnode190813*, overloadedasgn_435296)(Tcontext244023* c, Tnode190813* dest, Tnode190813* src);
N_NIMCALL(Tsym190843*, getasgnorliftbody_435276)(Tcontext244023* c, Ttype190849* typ, Tlineinfo163338 info);
N_NIMCALL(Tsym190843*, liftbody_434301)(Tcontext244023* c, Ttype190849* typ, Tlineinfo163338 info);
N_NIMCALL(Ttype190849*, newproctype_435194)(Tlineinfo163338 info, Tsym190843* owner);
N_NIMCALL(void, addparam_435202)(Ttype190849* proctype, Tsym190843* param);
N_NIMCALL(void, liftbodyaux_434293)(Tliftctx434286* c, Ttype190849* t, Tnode190813* body, Tnode190813* x, Tnode190813* y);
N_NIMCALL(void, defaultop_435006)(Tliftctx434286* c, Ttype190849* t, Tnode190813* body, Tnode190813* x, Tnode190813* y);
N_NIMCALL(Tnode190813*, newasgnstmt_434510)(Tnode190813* le, Tnode190813* ri);
N_NIMCALL(Tnode190813*, newseqcall_435101)(Tcontext244023* c, Tnode190813* x, Tnode190813* y);
N_NIMCALL(Tnode190813*, genbuiltin_435065)(NU16 magic, NimStringDesc* name, Tnode190813* i);
N_NIMCALL(Tnode190813*, declarecounter_435039)(Tliftctx434286* c, Tnode190813* body, NI64 first);
N_NIMCALL(void, addvar_435027)(Tnode190813* father, Tnode190813* v, Tnode190813* value);
N_NIMCALL(Tnode190813*, newintlit_359438)(NI64 value);
N_NIMCALL(Tnode190813*, genwhileloop_435077)(Tliftctx434286* c, Tnode190813* i, Tnode190813* dest);
N_NIMCALL(Tnode190813*, genhigh_359448)(Tnode190813* n);
N_NIMCALL(Tnode190813*, at_434306)(Tnode190813* a, Tnode190813* i, Ttype190849* elemtype);
N_NIMCALL(void, addincstmt_435091)(Tnode190813* body, Tnode190813* i);
N_NIMCALL(NIM_BOOL, consideroverloadedop_434540)(Tliftctx434286* c, Ttype190849* t, Tnode190813* body, Tnode190813* x, Tnode190813* y);
N_NIMCALL(Tnode190813*, newdestructorcall_434520)(Tsym190843* op, Tnode190813* x);
N_NIMCALL(Tnode190813*, newasgncall_434485)(Tcontext244023* c, Tsym190843* op, Tnode190813* x, Tnode190813* y);
N_NIMCALL(Tnode190813*, genaddr_434467)(Tcontext244023* c, Tnode190813* x);
N_NIMCALL(Tnode190813*, newdeepcopycall_434531)(Tsym190843* op, Tnode190813* x, Tnode190813* y);
N_NIMCALL(void, liftbodyobj_434378)(Tliftctx434286* c, Tnode190813* n, Tnode190813* body, Tnode190813* x, Tnode190813* y);
N_NIMCALL(Tnode190813*, dotfield_434367)(Tnode190813* x, Tsym190843* f);
N_NIMCALL(void, illformedastlocal_245239)(Tnode190813* n);
N_NIMCALL(void, liftbodytup_434317)(Tliftctx434286* c, Ttype190849* t, Tnode190813* body, Tnode190813* x, Tnode190813* y);
static N_INLINE(Tnode190813*, newderef_357024)(Tnode190813* n);
static N_INLINE(void, asgntoresultvar_447017)(Tcontext244023* c, Tnode190813* n, Tnode190813* le, Tnode190813* ri);
N_NIMCALL(Tnode190813*, takeimplicitaddr_446986)(Tcontext244023* c, Tnode190813* n);
static N_INLINE(Tsym190843*, pop_367918)(Tsymseq190815** s);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, finishmethod_409341)(Tcontext244023* c, Tsym190843* s);
N_NIMCALL(NIM_BOOL, hasobjparam_439633)(Tsym190843* s);
N_NIMCALL(void, methoddef_355634)(Tsym190843* s, NIM_BOOL fromcache);
N_NIMCALL(Tnode190813*, skiphiddensubconv_230078)(Tnode190813* n);
N_NIMCALL(Tnode190813*, forcebool_415629)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, assign_187946)(Intset187056* dest, Intset187056 src);
N_NIMCALL(void, semrecordcase_418098)(Tcontext244023* c, Tnode190813* n, Intset187056* check, NI* pos, Tnode190813* father, Ttype190849* rectype);
N_NIMCALL(void, semcasebranch_417947)(Tcontext244023* c, Tnode190813* t, Tnode190813* branch, NI branchindex, NI64* covered);
N_NIMCALL(Tnode190813*, semcasebranchrange_417900)(Tcontext244023* c, Tnode190813* t, Tnode190813* b, NI64* covered);
N_NIMCALL(Tnode190813*, sembranchrange_417878)(Tcontext244023* c, Tnode190813* t, Tnode190813* a, Tnode190813* b, NI64* covered);
N_NIMCALL(Tnode190813*, skipconvtaketype_229967)(Tnode190813* n);
N_NIMCALL(NIM_BOOL, emptyrange_240034)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(void, delson_194577)(Tnode190813* father, NI idx);
N_NIMCALL(Tnode190813*, semcasebranchsetelem_417913)(Tcontext244023* c, Tnode190813* t, Tnode190813* b, NI64* covered);
N_NIMCALL(void, checkforoverlap_417804)(Tcontext244023* c, Tnode190813* t, NI currentex, NI branchindex);
N_NIMCALL(NIM_BOOL, overlap_240012)(Tnode190813* a, Tnode190813* b);
N_NIMCALL(Ropeobj161009*, rope_161320)(NimStringDesc* s);
N_NIMCALL(Ttype190849*, semtuple_417454)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(Ttype190849*, semtypeclass_421208)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(void, safeadd_265489)(Ttypeseq190845** x, Ttype190849* y);
N_NIMCALL(Ttype190849*, semvartype_416260)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(Ttype190849*, semdistinct_416280)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(Ttype190849*, semproctypewithscope_421277)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev, NU8 kind);
N_NIMCALL(void, seteffectsforproctype_329412)(Ttype190849* t, Tnode190813* n);
N_NIMCALL(NIM_BOOL, haspragma_263698)(Tnode190813* n, NU16 pragma);
N_NIMCALL(Ttype190849*, semenum_415733)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(void, strtableadd_198103)(Tstrtable190817* t, Tsym190843* n);
N_NIMCALL(Ttype190849*, semstmtlisttype_420829)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
N_NIMCALL(Ttype190849*, semblocktype_420873)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev);
static N_INLINE(void, markindirect_245197)(Tcontext244023* c, Tsym190843* s);
N_NIMCALL(void, setintlittype_238774)(Tnode190813* result);
N_NIMCALL(Ttype190849*, getfloatlittype_238686)(Tnode190813* literal);
N_NIMCALL(Tnode190813*, semfieldaccess_440814)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, semconv_442510)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, maybelifttype_442488)(Ttype190849** t, Tcontext244023* c, Tlineinfo163338 info);
N_NIMCALL(Tnode190813*, inferwithmetatype_409463)(Tcontext244023* c, Ttype190849* formal, Tnode190813* arg, NIM_BOOL coercedistincts);
N_NIMCALL(NU8, checkconvertible_442223)(Tcontext244023* c, Ttype190849* castdest, Ttype190849* src);
N_NIMCALL(NU8, checkconversionbetweenobjects_442209)(Ttype190849* castdest, Ttype190849* src);
N_NIMCALL(NI, inheritancediff_227064)(Ttype190849* a, Ttype190849* b);
N_NIMCALL(Tnode190813*, semobjconstr_445040)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(void, checkinitialized_449320)(Tnode190813* n, Intset187056 ids, Tlineinfo163338 info);
N_NIMCALL(Tnode190813*, semmagic_448578)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, NU16 flags);
N_NIMCALL(Tnode190813*, semdefined_447719)(Tcontext244023* c, Tnode190813* n, NIM_BOOL onlycurrentscope);
N_NIMCALL(NIM_BOOL, isdefined_168167)(Tident167021* symbol);
N_NIMCALL(Tsym190843*, lookupfordefined_447670)(Tcontext244023* c, Tnode190813* n, NIM_BOOL onlycurrentscope);
N_NIMCALL(Tsym190843*, lookupfordefined_447661)(Tcontext244023* c, Tident167021* i, NIM_BOOL onlycurrentscope);
N_NIMCALL(Tsym190843*, localsearchinscope_249194)(Tcontext244023* c, Tident167021* s);
N_NIMCALL(Tsym190843*, strtableget_198111)(Tstrtable190817 t, Tident167021* name);
N_NIMCALL(Tnode190813*, setms_448568)(Tnode190813* n, Tsym190843* s);
N_NIMCALL(Tnode190813*, semcompiles_448463)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, tryexpr_409317)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(NI, getinfocontextlen_164156)(void);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
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(void, popCurrentException)(void);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src_81204, TNimType* mt);
N_NIMCALL(void, setinfocontextlen_164173)(NI L);
N_NIMCALL(Tnode190813*, semsizeof_442694)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semis_442917)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, maketypesymnode_244712)(Tcontext244023* c, Ttype190849* typ, Tlineinfo163338 info);
N_NIMCALL(Tnode190813*, isopimpl_410048)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NU8, typerel_345064)(Tcandidate344209* c, Ttype190849* f, Ttype190849* aorig, NIM_BOOL dobind);
N_NIMCALL(Tnode190813*, semof_442705)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semexpandtoast_448069)(Tcontext244023* c, Tnode190813* n, Tsym190843* magicsym, NU16 flags);
N_NIMCALL(Tnode190813*, semexpandtoast_447913)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tsym190843*, expectmacroortemplatecall_410025)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Ttype190849*, systypefromname_238213)(NimStringDesc* name);
N_NIMCALL(Tnode190813*, semquoteast_409334)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NimStringDesc*, expectstring_447791)(Tcontext244023* c, Tnode190813* n_447794);
N_NIMCALL(Tnodeseq190807*, newseq_448261)(NI len);
N_NIMCALL(void, processquotations_448082)(Tnode190813** n, NimStringDesc* op, Tnodeseq190807** quotes, Tnodeseq190807** ids);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s, NimStringDesc* prefix);
N_NIMCALL(Tsym190843*, newanonsym_447826)(NU8 kind, Tlineinfo163338 info, Tsym190843* owner);
N_NIMCALL(Tnode190813*, semtemplatedef_425550)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semtemplbodydirty_425220)(Templctx422582* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semtemplbody_422688)(Templctx422582* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semtemplsymbol_423011)(Tcontext244023* c, Tnode190813* n, Tsym190843* s);
N_NIMCALL(void, openscope_422693)(Templctx422582* c);
N_NIMCALL(void, closescope_422700)(Templctx422582* c);
N_NIMCALL(Tnode190813*, semtemplbodyscope_422707)(Templctx422582* c, Tnode190813* n);
N_NIMCALL(void, addlocaldecl_422875)(Templctx422582* c, Tnode190813** n, NU8 k);
N_NIMCALL(NU8, symbinding_422251)(Tnode190813* n);
N_NIMCALL(NU16, whichkeyword_172386)(Tident167021* id);
N_NIMCALL(Tnode190813*, onlyreplaceparams_422716)(Templctx422582* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, getidentnode_422589)(Templctx422582* c, Tnode190813* n);
static N_INLINE(NIM_BOOL, istemplparam_422636)(Templctx422582* c, Tnode190813* n);
N_NIMCALL(void, replaceidentbysym_422569)(Tnode190813** n, Tnode190813* s);
N_NIMCALL(Tsym190843*, newgensym_422843)(NU8 kind, Tnode190813* n, Templctx422582* c);
N_NIMCALL(void, semtemplsomedecl_423438)(Templctx422582* c, Tnode190813* n, NU8 symkind, NI start);
N_NIMCALL(Tnode190813*, semroutineintemplbody_423236)(Templctx422582* c, Tnode190813* n, NU8 k);
N_NIMCALL(Tnode190813*, semroutineintemplname_423054)(Templctx422582* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, transformtoexpr_425509)(Tnode190813* n);
N_NIMCALL(void, symtabreplace_202415)(Tstrtable190817* t, Tsym190843* prevsym, Tsym190843* newsym);
N_NIMCALL(Tsym190843*, getmagicsym_447811)(NU16 magic);
N_NIMCALL(NU8, spawnresult_358965)(Ttype190849* t, NIM_BOOL inparallel);
N_NIMCALL(Ttype190849*, createflowvar_448503)(Tcontext244023* c, Ttype190849* t, Tlineinfo163338 info);
N_NIMCALL(Tsym190843*, instantiatecreateflowvarcall_448513)(Tcontext244023* c, Ttype190849* t, Tlineinfo163338 info);
N_NIMCALL(Tnode190813*, semindirectop_445071)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(void, semopaux_442960)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, resolveindirectcall_445045)(Tcontext244023* c, Tnode190813* n, Tnode190813* norig, Ttype190849* t, Tcandidate344209* Result);
N_NIMCALL(Tnode190813*, overloadedcallopr_443019)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, setgenericparams_450037)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semsymgenericinstantiation_441019)(Tcontext244023* c, Tnode190813* n, Tsym190843* s);
N_NIMCALL(Tnode190813*, explicitgenericinstantiation_415005)(Tcontext244023* c, Tnode190813* n, Tsym190843* s_415009);
N_NIMCALL(Tnode190813*, explicitgenericsym_414939)(Tcontext244023* c, Tnode190813* n, Tsym190843* s);
N_NIMCALL(Tnode190813*, explicitgenericinsterror_414932)(Tnode190813* n);
N_NIMCALL(Tnode190813*, semarrayaccess_446898)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(NU8, checkpar_448990)(Tnode190813* n);
N_NIMCALL(Tnode190813*, semtuplepositionsconstr_449204)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(NIM_BOOL, istupletype_449260)(Tnode190813* n);
N_NIMCALL(Tnode190813*, semtuplefieldsconstr_449092)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, semsetconstr_448734)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semarrayconstr_443273)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Ttype190849*, commontype_409477)(Ttype190849* x, Ttype190849* y);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_229739)(Ttypeseq190845* x, Ttypeseq190845* y);
N_NIMCALL(NIM_BOOL, isemptycontainer_229978)(Ttype190849* t);
N_NIMCALL(Ttype190849*, commonsuperclass_227468)(Ttype190849* a, Ttype190849* b);
N_NIMCALL(Tnode190813*, semlambda_409261)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, semdo_438430)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, semcast_442625)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NIM_BOOL, iscastable_442383)(Ttype190849* dst, Ttype190849* src);
N_NIMCALL(NI64, computesize_220184)(Ttype190849* typ);
N_NIMCALL(Tnode190813*, semif_432860)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semexprbranch_432604)(Tcontext244023* c, Tnode190813* n);
static N_INLINE(void, semdestructorcheck_432440)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, semexprbranchscope_432635)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semtableconstr_448895)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semstaticexpr_444881)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semblock_449650)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semstmtlist_440086)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, semtry_433715)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NIM_BOOL, usesresult_440004)(Tnode190813* n);
N_NIMCALL(void, insertdestructors_432265)(Tcontext244023* c, Tnode190813* varsection, TY432269* Result);
N_NIMCALL(Tnode190813*, semraise_437101)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semvarorlet_435418)(Tcontext244023* c, Tnode190813* n, NU8 symkind);
N_NIMCALL(void, suggeststmt_354301)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, newsons_193272)(Tnode190813* father, NI length);
N_NIMCALL(void, addtovarsection_435306)(Tcontext244023* c, Tnode190813** result, Tnode190813* orig, Tnode190813* identdefs);
N_NIMCALL(NIM_BOOL, isdiscardunderscore_435399)(Tsym190843* v);
N_NIMCALL(void, addinterfacedecl_249736)(Tcontext244023* c, Tsym190843* sym);
N_NIMCALL(Tsym190843*, findshadowedvar_434035)(Tcontext244023* c, Tsym190843* v);
N_NIMCALL(NIM_BOOL, identwithin_434093)(Tnode190813* n, Tident167021* s);
N_NIMCALL(void, checknilable_434204)(Tsym190843* v);
N_NIMCALL(void, setupcompiletimevar_397855)(Tsym190843* module, Tnode190813* n);
N_NIMCALL(Tnode190813*, semconst_435982)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, fitremovehiddenconv_434013)(Tcontext244023* c, Ttype190849* typ, Tnode190813* n);
N_NIMCALL(Tnode190813*, semtypesection_437873)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, typesectionleftsidepass_437199)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, typesectionrightsidepass_437297)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, processmagictype_421888)(Tcontext244023* c, Tsym190843* m);
N_NIMCALL(void, setmagictype_421877)(Tsym190843* m, NU8 kind, NI size);
N_NIMCALL(void, typesectionfinalpass_437746)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, checkconstructedtype_265110)(Tlineinfo163338 info, Ttype190849* typ);
N_NIMCALL(void, checkformetafields_437580)(Tnode190813* n);
N_NIMCALL(Tnode190813*, semdiscard_431006)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semwhile_431217)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, sembreakorcontinue_431027)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semfor_436981)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semexprnoderef_409228)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, semforvars_436804)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tsym190843*, symforvar_436707)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, addforvardecl_436675)(Tcontext244023* c, Tsym190843* v);
N_NIMCALL(Tnode190813*, semforfields_436434)(Tcontext244023* c, Tnode190813* n, NU16 m);
N_NIMCALL(Tnode190813*, instfieldloopbody_436152)(Tfieldinstctx436147 c, Tnode190813* n, Tnode190813* forloop);
N_NIMCALL(void, semforobjectfields_436312)(Tfieldsctx436309 c, Tnode190813* typ, Tnode190813* forloop, Tnode190813* father);
N_NIMCALL(NIM_BOOL, containsnode_195365)(Tnode190813* n, TY432644 kinds);
N_NIMCALL(Tnode190813*, implicititerator_436947)(Tcontext244023* c, NimStringDesc* it, Tnode190813* arg);
N_NIMCALL(Tnode190813*, semcase_433301)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NI64, tocover_431259)(Ttype190849* t);
N_NIMCALL(Tnode190813*, semreturn_447260)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semusing_447837)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, adddeclat_249629)(Tscope190837* scope, Tsym190843* sym);
N_NIMCALL(Tnode190813*, semasm_431207)(Tcontext244023* con, Tnode190813* n);
N_NIMCALL(NIM_CHAR, pragmaasm_260088)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semasmoremit_261547)(Tcontext244023* con, Tnode190813* n, NIM_CHAR marker);
N_NIMCALL(Tnode190813*, semyield_447527)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, semyieldvarresult_447425)(Tcontext244023* c, Tnode190813* n, Ttype190849* restype);
N_NIMCALL(Tnode190813*, semiterator_439512)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semmethod_439688)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semconverterdef_439699)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, addconverter_244562)(Tcontext244023* c, Tsym190843* conv);
N_NIMCALL(Tnode190813*, semmacrodef_439724)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, evalimport_251004)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, evalimportexcept_251857)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, evalfrom_251011)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, evalinclude_439760)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NI32, checkmodulename_251064)(Tnode190813* n);
N_NIMCALL(void, excl_187871)(Intset187056* s, NI key);
N_NIMCALL(Tnode190813*, semexport_449816)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tsym190843*, inittabiter_198124)(Ttabiter198119* ti, Tstrtable190817 tab);
N_NIMCALL(Tsym190843*, nextiter_198132)(Ttabiter198119* ti, Tstrtable190817 tab);
N_NIMCALL(Tnode190813*, sempragmablock_439846)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(NU16, whichpragma_219673)(Tnode190813* n);
N_NIMCALL(void, setline_439802)(Tnode190813* n, Tlineinfo163338 info);
N_NIMCALL(Tnode190813*, semstaticstmt_439898)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, evalstaticstmt_397844)(Tsym190843* module, Tnode190813* e, Tsym190843* prc);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_164789)(Tlineinfo163338 a, Tlineinfo163338 b);
N_NIMCALL(Tnode190813*, tryconstexpr_410420)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, semoperand_440821)(Tcontext244023* c, Tnode190813* n, NU16 flags);
N_NIMCALL(Tnode190813*, seminferredlambda_438457)(Tcontext244023* c, Tidtable190861 pt, Tnode190813* n_438461);
N_NIMCALL(Tnode190813*, replacetypesinbody_267617)(Tcontext244023* p, Tidtable190861 pt, Tnode190813* n);
N_NIMCALL(Tsym190843*, insttypeboundop_350551)(Tcontext244023* c, Tsym190843* dc, Ttype190849* t, Tlineinfo163338 info, NU8 op);
N_NIMCALL(void, importallsymbols_251389)(Tcontext244023* c, Tsym190843* frommod);
N_NIMCALL(Tpasscontext241005*, myopen_450686)(Tsym190843* module);
N_NIMCALL(Tnode190813*, semstmtandgenerategenerics_450760)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(void, addcodeforgenerics_450577)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, hlostmt_411187)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, buildechostmt_445412)(Tcontext244023* c, Tnode190813* n);
N_NIMCALL(Tnode190813*, transformstmt_370207)(Tsym190843* module, Tnode190813* n);
N_NIMCALL(void, recovercontext_450798)(Tcontext244023* c);
static N_INLINE(NIM_BOOL, isObjWithCache)(TNimType* obj, TNimType* subclass, TNimType** cache);
N_NOINLINE(NIM_BOOL, isobjslowpath_22817)(TNimType* obj, TNimType* subclass, TNimType** cache);
N_NIMCALL(void, rawclosescope_249102)(Tcontext244023* c);
STRING_LITERAL(TMP1033, "typedesc", 8);
STRING_LITERAL(TMP1034, "destroy_", 8);
STRING_LITERAL(TMP1035, "this_", 5);
STRING_LITERAL(TMP1036, "destructor", 10);
STRING_LITERAL(TMP1961, "sem.myOpen", 10);
STRING_LITERAL(TMP2989, "", 0);
static NIM_CONST TY432644 TMP2990 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0xE0, 0x11, 0x02, 0x0C, 0x01, 0xC0,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP2991, "|", 1);
STRING_LITERAL(TMP2992, "invalid type", 12);
STRING_LITERAL(TMP2993, "region needs to be an object type", 33);
STRING_LITERAL(TMP2995, "openarray", 9);
STRING_LITERAL(TMP2996, "range", 5);
STRING_LITERAL(TMP2997, "set", 3);
STRING_LITERAL(TMP2998, "ordinal", 7);
STRING_LITERAL(TMP2999, "seq", 3);
STRING_LITERAL(TMP3000, "varargs", 7);
STRING_LITERAL(TMP3001, "cannot instantiate the \'$1\' $2", 30);
STRING_LITERAL(TMP3003, "semtypes.nim", 12);
NIM_CONST TY86345 TMP3002 = {((NimStringDesc*) &TMP3003),
((NI) 1036)}
;
STRING_LITERAL(TMP3004, "cannot instantiate ", 19);
STRING_LITERAL(TMP3005, "\012got: (", 7);
STRING_LITERAL(TMP3009, ")\012but expected: (", 17);
STRING_LITERAL(TMP3010, ")", 1);
STRING_LITERAL(TMP3011, "result", 6);
NIM_CONST TY86345 TMP3012 = {((NimStringDesc*) &TMP3003),
((NI) 1227)}
;
STRING_LITERAL(TMP3013, "object", 6);
STRING_LITERAL(TMP3014, "addInheritedFieldsAux", 21);
STRING_LITERAL(TMP3015, "addInheritedFieldsAux(record case branch)", 41);
STRING_LITERAL(TMP3016, "addInheritedFieldsAux()", 23);
STRING_LITERAL(TMP3017, "semObjectNode", 13);
STRING_LITERAL(TMP3018, "nesting too deep", 16);
STRING_LITERAL(TMP3020, "seminst.nim", 11);
NIM_CONST TY86345 TMP3019 = {((NimStringDesc*) &TMP3020),
((NI) 237)}
;
STRING_LITERAL(TMP3021, "instantiateGenericParamList; no generic params", 46);
STRING_LITERAL(TMP3022, "instantiateGenericParamList; no symbol", 38);
STRING_LITERAL(TMP3023, "owner is nil", 12);
NIM_CONST TY86345 TMP3024 = {((NimStringDesc*) &TMP3020),
((NI) 184)}
;
STRING_LITERAL(TMP3025, "result", 6);
STRING_LITERAL(TMP3026, "NimNode", 7);
STRING_LITERAL(TMP3027, "NimNode", 7);
STRING_LITERAL(TMP3028, "PNimrodNode", 11);
static NIM_CONST Tspecialwords172012 TMP3099 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xE0, 0x3F, 0xFA, 0x5D, 0x00, 0x30,
0xFE, 0x07, 0x00, 0x84, 0x30, 0x03, 0x60, 0x48,
0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3101, "semexprs.nim", 12);
NIM_CONST TY86345 TMP3100 = {((NimStringDesc*) &TMP3101),
((NI) 998)}
;
STRING_LITERAL(TMP3104, "()", 2);
STRING_LITERAL(TMP3106, "sem.nim", 7);
NIM_CONST TY86345 TMP3105 = {((NimStringDesc*) &TMP3106),
((NI) 178)}
;
static NIM_CONST Tspecialwords172012 TMP3107 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x36, 0x00, 0x40, 0x00, 0x10,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
static NIM_CONST Tspecialwords172012 TMP3108 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x00, 0x36, 0x12, 0x4C, 0x00, 0x10,
0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x60, 0x62,
0x01, 0x20, 0x02, 0x08, 0x00, 0x40, 0x00, 0x00,
0x00}
;
static NIM_CONST Tspecialwords172012 TMP3109 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x00, 0x36, 0x12, 0x40, 0x00, 0x10,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3129, "\':\' expected", 12);
STRING_LITERAL(TMP3132, ":type", 5);
NIM_CONST TY86345 TMP3141 = {((NimStringDesc*) &TMP3003),
((NI) 706)}
;
STRING_LITERAL(TMP3144, "invalid return type: \'stmt\'", 27);
STRING_LITERAL(TMP3145, "*", 1);
STRING_LITERAL(TMP3146, "**", 2);
STRING_LITERAL(TMP3147, "~", 1);
STRING_LITERAL(TMP3152, "semProcAux", 10);
STRING_LITERAL(TMP3154, "destroy", 7);
STRING_LITERAL(TMP3155, "=destroy", 8);
STRING_LITERAL(TMP3156, "deepcopy", 8);
STRING_LITERAL(TMP3157, "=deepcopy", 9);
STRING_LITERAL(TMP3158, "=", 1);
STRING_LITERAL(TMP3159, "nimDestroyRange", 15);
STRING_LITERAL(TMP3161, "semdestruct.nim", 15);
NIM_CONST TY86345 TMP3160 = {((NimStringDesc*) &TMP3161),
((NI) 115)}
;
NIM_CONST TY86345 TMP3162 = {((NimStringDesc*) &TMP3161),
((NI) 106)}
;
NIM_CONST TY86345 TMP3163 = {((NimStringDesc*) &TMP3161),
((NI) 154)}
;
STRING_LITERAL(TMP3164, "AnonType", 8);
static NIM_CONST Tspecialwords172012 TMP3165 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xE0, 0x3F, 0xFA, 0x5D, 0x00, 0x30,
0xFE, 0x07, 0x00, 0x84, 0x30, 0x03, 0x60, 0x48,
0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3166, "use the {.experimental.} pragma to enable destructors", 53);
STRING_LITERAL(TMP3167, "cannot bind another \'deepCopy\' to: ", 35);
STRING_LITERAL(TMP3168, "cannot bind \'deepCopy\' to: ", 27);
STRING_LITERAL(TMP3169, "signature for \'deepCopy\' must be proc[T: ptr|ref](x: T): T", 58);
STRING_LITERAL(TMP3170, "cannot bind another \'=\' to: ", 28);
STRING_LITERAL(TMP3171, "signature for \'=\' must be proc[T: object](x: var T; y: T)", 57);
STRING_LITERAL(TMP3172, "\'destroy\' or \'deepCopy\' expected for \'override\'", 47);
STRING_LITERAL(TMP3173, "invalid type: \'", 15);
STRING_LITERAL(TMP3174, "\'", 1);
STRING_LITERAL(TMP3175, "\' in this context: \'", 20);
STRING_LITERAL(TMP3189, "hlo.nim", 7);
NIM_CONST TY86345 TMP3188 = {((NimStringDesc*) &TMP3189),
((NI) 15)}
;
STRING_LITERAL(TMP3190, "changeType: no tuple type for constructor", 41);
STRING_LITERAL(TMP3191, "changeType(): invalid tuple constr", 34);
STRING_LITERAL(TMP3192, "changeType(): invalid identifier", 32);
STRING_LITERAL(TMP3193, "cannot convert ", 15);
STRING_LITERAL(TMP3194, " to ", 4);
static NIM_CONST TY443856 TMP3195 = {
0x00, 0x80, 0x80, 0x1D, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x8C, 0x80, 0x00, 0x00,
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3196, "analyseIfAddressTaken", 21);
STRING_LITERAL(TMP3199, "semmagic.nim", 12);
NIM_CONST TY86345 TMP3198 = {((NimStringDesc*) &TMP3199),
((NI) 66)}
;
STRING_LITERAL(TMP3200, "name", 4);
STRING_LITERAL(TMP3201, "arity", 5);
NIM_CONST TY86345 TMP3202 = {((NimStringDesc*) &TMP3199),
((NI) 61)}
;
STRING_LITERAL(TMP3203, "low", 3);
STRING_LITERAL(TMP3204, "high", 4);
NIM_CONST TY442654 optostr_442653 = {((NimStringDesc*) &TMP3203),
((NimStringDesc*) &TMP3204)}
;
STRING_LITERAL(TMP3205, "use \'^\' instead of \'-\'; negative indexing is obsolete", 53);
STRING_LITERAL(TMP3206, "no surrounding array access context for \'^\'", 43);
STRING_LITERAL(TMP3207, "invalid context for \'^\' as \'$#\' has side effects", 48);
STRING_LITERAL(TMP3208, "invalid context for \'^\' as len!=high+1 for \'$#\'", 47);
STRING_LITERAL(TMP3209, "len", 3);
STRING_LITERAL(TMP3210, "\'$#\' has to be of an ordinal type for \'^\'", 41);
STRING_LITERAL(TMP3211, "-", 1);
STRING_LITERAL(TMP3212, "cannot find plugin ", 19);
static NIM_CONST TY443856 TMP3213 = {
0x01, 0x00, 0xC0, 0xE3, 0x7F, 0xFE, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x3F, 0xF8, 0x01, 0x0C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3294, " --> \'", 6);
static NIM_CONST Tspecialwords172012 TMP3347 = {
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(TMP3349, "semcall.nim", 11);
NIM_CONST TY86345 TMP3348 = {((NimStringDesc*) &TMP3349),
((NI) 182)}
;
STRING_LITERAL(TMP3350, ".()", 3);
STRING_LITERAL(TMP3351, ".", 1);
NIM_CONST TY86345 TMP3352 = {((NimStringDesc*) &TMP3349),
((NI) 203)}
;
STRING_LITERAL(TMP3353, ".=", 2);
NIM_CONST TY86345 TMP3354 = {((NimStringDesc*) &TMP3349),
((NI) 232)}
;
STRING_LITERAL(TMP3355, "ambiguous call", 14);
STRING_LITERAL(TMP3356, "(", 1);
STRING_LITERAL(TMP3357, ", ", 2);
STRING_LITERAL(TMP3358, "calleeSym.ast is nil", 20);
STRING_LITERAL(TMP3359, "\012", 1);
STRING_LITERAL(TMP3360, "semOverloadedCallAnalyseEffects", 31);
STRING_LITERAL(TMP3361, "[]=", 3);
STRING_LITERAL(TMP3362, "{}=", 3);
NIM_CONST TY86345 TMP3363 = {((NimStringDesc*) &TMP3101),
((NI) 1306)}
;
STRING_LITERAL(TMP3364, ") ", 2);
STRING_LITERAL(TMP3365, ":lifted=", 8);
STRING_LITERAL(TMP3366, "dest", 4);
STRING_LITERAL(TMP3367, "src", 3);
STRING_LITERAL(TMP3368, "newSeq", 6);
STRING_LITERAL(TMP3369, "len", 3);
STRING_LITERAL(TMP3370, ":tmp", 4);
STRING_LITERAL(TMP3371, "<=", 2);
STRING_LITERAL(TMP3373, "inc", 3);
STRING_LITERAL(TMP3374, "cannot lift assignment operator to \'case\' object", 48);
STRING_LITERAL(TMP3375, "deepCopy", 8);
STRING_LITERAL(TMP3376, "cannot copy openArray", 21);
STRING_LITERAL(TMP3377, "assignment requested for type: ", 31);
STRING_LITERAL(TMP3378, "semRecordNodeAux", 16);
STRING_LITERAL(TMP3379, "semRecordCase: discriminant is no symbol", 40);
STRING_LITERAL(TMP3380, "dummy", 5);
static NIM_CONST Tspecialwords172012 TMP3381 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x01, 0xF6, 0x56, 0x48, 0x00, 0x10,
0x00, 0x00, 0x00, 0x20, 0x00, 0x61, 0x60, 0x81,
0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x00, 0xC0,
0x00}
;
STRING_LITERAL(TMP3382, "use \'concept\' instead; \'generic\'", 32);
static NIM_CONST Tspecialwords172012 TMP3383 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x20,
0xFE, 0x07, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
NIM_CONST TY86345 TMP3386 = {((NimStringDesc*) &TMP3101),
((NI) 117)}
;
NIM_CONST TY86345 TMP3387 = {((NimStringDesc*) &TMP3101),
((NI) 122)}
;
STRING_LITERAL(TMP3389, "bind", 4);
STRING_LITERAL(TMP3390, ":anon", 5);
STRING_LITERAL(TMP3391, "object constructor needs an object type", 39);
STRING_LITERAL(TMP3392, "checkInitialized", 16);
STRING_LITERAL(TMP3393, "field not initialized: ", 23);
STRING_LITERAL(TMP3394, "defined", 7);
STRING_LITERAL(TMP3395, "obsolete usage of \'defined\', use \'declared\' instead", 51);
STRING_LITERAL(TMP3397, "sizeof", 6);
STRING_LITERAL(TMP3398, "is", 2);
NIM_CONST TY86345 TMP3399 = {((NimStringDesc*) &TMP3101),
((NI) 373)}
;
STRING_LITERAL(TMP3400, "closure", 7);
STRING_LITERAL(TMP3401, "of", 2);
NIM_CONST TY86345 TMP3402 = {((NimStringDesc*) &TMP3101),
((NI) 1539)}
;
NIM_CONST TY86345 TMP3403 = {((NimStringDesc*) &TMP3101),
((NI) 1577)}
;
STRING_LITERAL(TMP3404, "``", 2);
STRING_LITERAL(TMP3405, "block", 5);
STRING_LITERAL(TMP3406, "stmt", 4);
STRING_LITERAL(TMP3407, "expr", 4);
static NIM_CONST Tspecialwords172012 TMP3408 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x90, 0x00, 0x00, 0x40, 0x00, 0x10,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3411, "FlowVar", 7);
STRING_LITERAL(TMP3412, "nimCreateFlowVar", 16);
STRING_LITERAL(TMP3414, ")\012", 2);
STRING_LITERAL(TMP3415, "cannot instantiate: ", 20);
STRING_LITERAL(TMP3416, "; got ", 6);
STRING_LITERAL(TMP3417, " type(s) but expected ", 22);
STRING_LITERAL(TMP3418, "[]", 2);
STRING_LITERAL(TMP3419, "{}", 2);
STRING_LITERAL(TMP3420, "semExpr() to implement", 22);
static NIM_CONST Tspecialwords172012 TMP3421 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0x00, 0x36, 0xFA, 0x04, 0x00, 0x10,
0xFE, 0x07, 0x00, 0x84, 0x00, 0x00, 0x00, 0x08,
0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3422, "use \'defer\'; standalone \'finally\'", 33);
STRING_LITERAL(TMP3423, "use an explicit \'try\'; standalone \'except\'", 42);
STRING_LITERAL(TMP3424, "type class predicate failed", 27);
STRING_LITERAL(TMP3425, "\'typedesc\' metatype is not valid here; typed \'=\' instead of \':\'"
"?", 64);
STRING_LITERAL(TMP3426, "tuple", 5);
STRING_LITERAL(TMP3427, "_", 1);
STRING_LITERAL(TMP3428, "shared", 6);
STRING_LITERAL(TMP3430, "semstmts.nim", 12);
NIM_CONST TY86345 TMP3429 = {((NimStringDesc*) &TMP3430),
((NI) 699)}
;
NIM_CONST TY86345 TMP3431 = {((NimStringDesc*) &TMP3430),
((NI) 700)}
;
STRING_LITERAL(TMP3432, ":ObjectType", 11);
NIM_CONST TY86345 TMP3433 = {((NimStringDesc*) &TMP3430),
((NI) 726)}
;
STRING_LITERAL(TMP3434, "\'continue\' cannot have a label", 30);
STRING_LITERAL(TMP3435, "true", 4);
STRING_LITERAL(TMP3436, "true", 4);
STRING_LITERAL(TMP3437, "no object or tuple type", 23);
STRING_LITERAL(TMP3438, "Field", 5);
STRING_LITERAL(TMP3439, "\'continue\' not supported in a \'fields\' loop", 43);
STRING_LITERAL(TMP3440, "parallel \'fields\' iterator does not work for \'case\' objects", 59);
static NIM_CONST TY432644 TMP3441 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3442, "items", 5);
STRING_LITERAL(TMP3443, "pairs", 5);
STRING_LITERAL(TMP3444, "use \'else: discard\'; non-ordinal case without \'else\'", 52);
STRING_LITERAL(TMP3445, "\'return\'", 8);
STRING_LITERAL(TMP3446, "use the {.experimental.} pragma to enable \'using\'", 49);
STRING_LITERAL(TMP3447, "semYield", 8);
STRING_LITERAL(TMP3448, "tuple constructor", 17);
STRING_LITERAL(TMP3449, "yield statement must yield a value", 34);
static NIM_CONST Tspecialwords172012 TMP3450 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x04, 0x00, 0x04, 0xE0, 0xFD, 0x9F,
0x00, 0xE0, 0xFF, 0x43, 0xCD, 0x8C, 0x0F, 0x04,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
static NIM_CONST Tspecialwords172012 TMP3451 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x00, 0x36, 0x6A, 0x40, 0x00, 0x10,
0xFE, 0x07, 0x00, 0x84, 0x00, 0x03, 0x60, 0x00,
0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3452, "iterator", 8);
STRING_LITERAL(TMP3453, "method", 6);
STRING_LITERAL(TMP3454, "converter", 9);
static NIM_CONST Tspecialwords172012 TMP3455 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x90, 0x36, 0x22, 0x48, 0x00, 0x10,
0xFE, 0x07, 0x00, 0x00, 0x00, 0x02, 0x60, 0x00,
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3456, "macro", 5);
STRING_LITERAL(TMP3457, "import", 6);
STRING_LITERAL(TMP3468, "from", 4);
STRING_LITERAL(TMP3471, "include", 7);
STRING_LITERAL(TMP3472, "export", 6);
STRING_LITERAL(TMP3473, "cannot export: ", 15);
static NIM_CONST Tspecialwords172012 TMP3474 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00}
;
STRING_LITERAL(TMP3475, "\'defer\' not allowed in this context", 35);
STRING_LITERAL(TMP3481, "no code for ", 12);
STRING_LITERAL(TMP3482, "echo", 4);
STRING_LITERAL(TMP3483, "echo", 4);
STRING_LITERAL(TMP3485, "n is not nil", 12);
Ttype190849* commontypebegin_409472;
extern TNimType NTI190809; /* PType */
extern TNimType NTI190849; /* TType */
extern Tgcheap48216 gch_48244;
Tident167021* typedescid_419273;
Ttype190849* enforcevoidcontext_431005;
Tsym190843* analyzingdestructor_431401;
Tsym190843* destructoristrivial_431402;
extern TNimType NTI190811; /* PSym */
extern TNimType NTI190843; /* TSym */
Tident167021* destructorname_431419;
Tident167021* destructorparam_431420;
Tnode190813* destructorpragma_431421;
Tsym190843* rangedestructorproc_431422;
extern NU8 gcmd_154130;
extern NI evaltemplatecounter_383256;
extern TNimType NTI190813; /* TNode */
extern TNimType NTI190441; /* TSymKind */
extern TNimType NTI190845; /* TTypeSeq */
extern TNimType NTI244009; /* PProcCon */
extern Tnode190813* emptynode_191807;
extern Tsym190843* opcontains_195999;
extern Tsym190843* opnot_195998;
extern TNimType NTI190807; /* TNodeSeq */
TNimType NTI412758; /* tuple[a: PSym, b: int] */
extern TNimType NTI108; /* int */
TNimType NTI412757; /* seq[tuple[a: PSym, b: int]] */
extern Tident167021* iddelegator_167550;
extern Tident167021* idanon_167495;
extern NU8 gidecmd_154115;
TNimType NTI420253; /* object */
extern TNimType NTI310033; /* range -1..0(int) */
extern TNimType NTI149; /* string */
extern TNimType NTI190805; /* PNode */
extern TNimType NTI163338; /* TLineInfo */
extern TNimType NTI244021; /* PContext */
TNimType NTI420311; /* ref object */
extern NU32 goptions_154126;
extern NIM_BOOL gexperimentalmode_154145;
extern NU64 gnotes_164014;
extern TNimType NTI344209; /* TCandidate */
extern TNimType NTI190815; /* TSymSeq */
extern NI gerrorcounter_164015;
extern NI gerrormax_164018;
extern Tsymseq190815* gowners_244289;
extern NU8 erroroutputs_164056;
extern TNimType NTI244141; /* seq[TInstantiationPair] */
extern TSafePoint* exchandler_17043;
extern TNimType NTI163344; /* ERecoverableError */
extern Exception* currexception_17045;
extern TNimType NTI190529; /* TMagic */
extern Tsym190843* systemmodule_238019;
extern Tlineinfo163338 gcodegenlineinfo_163961;
extern NU32 gglobaloptions_154128;
extern NI ptrsize_159625;
extern TNimType NTI190260; /* TTypeKind */
extern NI intsize_159623;
extern NI floatsize_159624;
extern TY241069 gincludefile_241073;
extern TNimType NTI163346; /* ESuggestDone */
static TNimType* Nim_OfCheck_CACHE1[2];
TNimType NTI432269; /* tuple[outer: PNode, inner: PNode] */

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

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

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

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

static N_INLINE(Tnode190813*, inlineconst_441028)(Tnode190813* n, Tsym190843* s) {
	Tnode190813* result;
	result = 0;
	result = copytree_195028((*s).ast);
	asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	(*result).info = (*n).info;
	return result;
}

static N_INLINE(NI, len_191097)(Tnode190813* n) {
	NI result;
	result = 0;
	{
		if (!(*n).kindU.S6.sons == 0) goto LA3;
		result = ((NI) 0);
	}
	goto LA1;
	LA3: ;
	{
		result = ((*n).kindU.S6.sons ? (*n).kindU.S6.sons->Sup.len : 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, implicitlydiscardable_432645)(Tnode190813* n_432647) {
	NIM_BOOL result;
	Tnode190813* n;
	NIM_BOOL LOC3;
	NIM_BOOL LOC4;
	result = 0;
	n = n_432647;
	{
		while (1) {
			if (!((TMP2990[(*n).kind/8] &(1<<((*n).kind%8)))!=0)) goto LA2;
			n = lastson_193431(n);
		} LA2: ;
	}
	LOC3 = 0;
	LOC4 = 0;
	LOC4 = iscallexpr_191071(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_195905)(Tnode190813* 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_432694)(Tnode190813* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isatom_195905(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_220032((*n).typ, ((NU8) 0));
			localerror_165155((*n).info, ((NU16) 140), LOC12);
		}
		LA10: ;
	}
	goto LA1;
	LA4: ;
	{
		if (!((*n).kind == ((NU8) 115) || (*n).kind == ((NU8) 126))) goto LA14;
		(*n).kind = ((NU8) 115);
		{
			Tnode190813* it_432729;
			it_432729 = 0;
			{
				NI i_432734;
				NI HEX3Atmp_432736;
				NI LOC18;
				NI res_432738;
				i_432734 = 0;
				HEX3Atmp_432736 = 0;
				LOC18 = 0;
				LOC18 = len_191097(n);
				HEX3Atmp_432736 = (LOC18 - 1);
				res_432738 = ((NI) 0);
				{
					while (1) {
						if (!(res_432738 <= HEX3Atmp_432736)) goto LA20;
						i_432734 = res_432738;
						it_432729 = (*n).kindU.S6.sons->data[i_432734];
						fixniltype_432694(it_432729);
						res_432738 += ((NI) 1);
					} LA20: ;
				}
			}
		}
	}
	goto LA1;
	LA14: ;
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), NIM_NIL);
}

N_NIMCALL(void, discardcheck_432756)(Tcontext244023* c, Tnode190813* 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_165188((*result).info, ((NU16) 243), ((NimStringDesc*) &TMP2989));
		}
		goto LA11;
		LA13: ;
		{
			NIM_BOOL LOC16;
			Tnode190813* n;
			LOC16 = 0;
			LOC16 = implicitlydiscardable_432645(result);
			if (!LOC16) goto LA17;
			n = result;
			asgnRefNoCycle((void**) (&(*result).typ), NIM_NIL);
			{
				while (1) {
					if (!((TMP2990[(*n).kind/8] &(1<<((*n).kind%8)))!=0)) goto LA20;
					n = lastson_193431(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_154130 == ((NU8) 18)));
			LA23: ;
			if (!LOC22) goto LA24;
			{
				if (!((*(*result).typ).kind == ((NU8) 5))) goto LA28;
				fixniltype_432694(result);
				message_165188((*result).info, ((NU16) 243), ((NimStringDesc*) &TMP2989));
			}
			goto LA26;
			LA28: ;
			{
				Tnode190813* n;
				NimStringDesc* LOC33;
				n = result;
				{
					while (1) {
						if (!((TMP2990[(*n).kind/8] &(1<<((*n).kind%8)))!=0)) goto LA32;
						n = lastson_193431(n);
					} LA32: ;
				}
				LOC33 = 0;
				LOC33 = typetostring_220032((*result).typ, ((NU8) 0));
				localerror_165155((*n).info, ((NU16) 140), LOC33);
			}
			LA26: ;
		}
		goto LA11;
		LA24: ;
		LA11: ;
	}
	LA9: ;
	}BeforeRet: ;
}

N_NIMCALL(Tnode190813*, semexprnotype_409221)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = semexpr_409201(c, n, 8);
	discardcheck_432756(c, result);
	return result;
}

N_NIMCALL(Tnode190813*, semstmt_409277)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = semexprnotype_409221(c, n);
	return result;
}

N_NIMCALL(Ttype190849*, neworprevtype_415695)(NU8 kind, Ttype190849* prev, Tcontext244023* c) {
	Ttype190849* result;
	result = 0;
	{
		if (!(prev == NIM_NIL)) goto LA3;
		result = newtypes_244219(kind, c);
	}
	goto LA1;
	LA3: ;
	{
		result = prev;
		{
			if (!((*result).kind == ((NU8) 30))) goto LA8;
			(*result).kind = kind;
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, semanontuple_417414)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		localerror_165155((*n).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
	}
	LA4: ;
	result = neworprevtype_415695(((NU8) 18), prev, c);
	{
		NI i_417432;
		NI HEX3Atmp_417435;
		NI LOC7;
		NI res_417438;
		i_417432 = 0;
		HEX3Atmp_417435 = 0;
		LOC7 = 0;
		LOC7 = sonslen_193403(n);
		HEX3Atmp_417435 = (NI)(LOC7 - ((NI) 1));
		res_417438 = ((NI) 0);
		{
			while (1) {
				Ttype190849* LOC10;
				if (!(res_417438 <= HEX3Atmp_417435)) goto LA9;
				i_417432 = res_417438;
				LOC10 = 0;
				LOC10 = semtypenode_409269(c, (*n).kindU.S6.sons->data[i_417432], NIM_NIL);
				addsonskipintlit_238729(result, LOC10);
				res_417438 += ((NI) 1);
			} LA9: ;
		}
	}
	return result;
}

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

static N_INLINE(NIM_BOOL, isrange_219612)(Tnode190813* 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;
			Tnode190813* LOC9;
			Tnode190813* LOC11;
			NIM_BOOL LOC13;
			Tnode190813* LOC14;
			Tnode190813* LOC16;
			Tnode190813* LOC17;
			LOC7 = 0;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_191244(n, ((NI) 0));
			LOC8 = ((*LOC9).kind == ((NU8) 2));
			if (!(LOC8)) goto LA10;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_191244(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_191244(n, ((NI) 0));
			LOC13 = ((*LOC14).kind == ((NU8) 56) || (*LOC14).kind == ((NU8) 57));
			if (!(LOC13)) goto LA15;
			LOC16 = 0;
			LOC16 = HEX5BHEX5D_191244(n, ((NI) 0));
			LOC17 = 0;
			LOC17 = HEX5BHEX5D_191244(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;
}

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

N_NIMCALL(Ttype190849*, semrangeaux_416292)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	TY416419 range;
	Tnode190813* LOC9;
	Tnode190813* LOC10;
	TY416424 ranget;
	result = 0;
	checksonslen_245249(n, ((NI) 3));
	result = neworprevtype_415695(((NU8) 20), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_192351(((NU8) 44), (*n).info));
	{
		NIM_BOOL LOC3;
		Tnode190813* LOC4;
		Tnode190813* LOC6;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_191244(n, ((NI) 1));
		LOC3 = ((*LOC4).kind == ((NU8) 1));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_191244(n, ((NI) 2));
		LOC3 = ((*LOC6).kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		localerror_165155((*n).info, ((NU16) 106), ((NimStringDesc*) &TMP2989));
	}
	LA7: ;
	memset((void*)range, 0, sizeof(range));
	LOC9 = 0;
	LOC9 = HEX5BHEX5D_191244(n, ((NI) 1));
	range[(((NI) 0))- 0] = semexprwithtype_409211(c, LOC9, 32);
	LOC10 = 0;
	LOC10 = HEX5BHEX5D_191244(n, ((NI) 2));
	range[(((NI) 1))- 0] = semexprwithtype_409211(c, LOC10, 32);
	memset((void*)ranget, 0, sizeof(ranget));
	{
		NI i_416437;
		NI res_416469;
		i_416437 = 0;
		res_416469 = ((NI) 0);
		{
			while (1) {
				Ttype190849* LOC14;
				if (!(res_416469 <= ((NI) 1))) goto LA13;
				i_416437 = res_416469;
				LOC14 = 0;
				LOC14 = skiptypes_194167((*range[(i_416437)- 0]).typ, IL64(576460752303423488));
				ranget[(i_416437)- 0] = skipintlit_238696(LOC14);
				res_416469 += ((NI) 1);
			} LA13: ;
		}
	}
	{
		Ttype190849* LOC17;
		Ttype190849* LOC18;
		NIM_BOOL LOC19;
		LOC17 = 0;
		LOC17 = skiptypes_194167(ranget[(((NI) 0))- 0], 1048576);
		LOC18 = 0;
		LOC18 = skiptypes_194167(ranget[(((NI) 1))- 0], 1048576);
		LOC19 = 0;
		LOC19 = sametype_225092(LOC17, LOC18, 0);
		if (!!(LOC19)) goto LA20;
		localerror_165155((*n).info, ((NU16) 128), ((NimStringDesc*) &TMP2989));
	}
	goto LA15;
	LA20: ;
	{
		NIM_BOOL LOC23;
		LOC23 = 0;
		LOC23 = isordinaltype_220093(ranget[(((NI) 0))- 0]);
		if (!!(LOC23)) goto LA24;
		localerror_165155((*n).info, ((NU16) 74), ((NimStringDesc*) &TMP2989));
	}
	goto LA15;
	LA24: ;
	{
		NIM_BOOL LOC27;
		LOC27 = 0;
		LOC27 = enumhasholes_220099(ranget[(((NI) 0))- 0]);
		if (!LOC27) goto LA28;
		localerror_165155((*n).info, ((NU16) 146), (*(*(*ranget[(((NI) 0))- 0]).sym).name).s);
	}
	goto LA15;
	LA28: ;
	LA15: ;
	{
		NI i_416452;
		NI res_416476;
		i_416452 = 0;
		res_416476 = ((NI) 0);
		{
			while (1) {
				if (!(res_416476 <= ((NI) 1))) goto LA32;
				i_416452 = res_416476;
				{
					NIM_BOOL LOC35;
					Tnode190813* LOC38;
					LOC35 = 0;
					LOC35 = hasgenericarguments_265765(range[(i_416452)- 0]);
					if (!LOC35) goto LA36;
					LOC38 = 0;
					LOC38 = makestaticexpr_244820(c, range[(i_416452)- 0]);
					addson_192819((*result).n, LOC38);
				}
				goto LA33;
				LA36: ;
				{
					Tnode190813* LOC40;
					LOC40 = 0;
					LOC40 = semconstexpr_410485(c, range[(i_416452)- 0]);
					addson_192819((*result).n, LOC40);
				}
				LA33: ;
				res_416476 += ((NI) 1);
			} LA32: ;
		}
	}
	{
		Tnode190813* LOC43;
		Tnode190813* LOC44;
		NU8 LOC45;
		LOC43 = 0;
		LOC43 = HEX5BHEX5D_191244((*result).n, ((NI) 0));
		LOC44 = 0;
		LOC44 = HEX5BHEX5D_191244((*result).n, ((NI) 1));
		LOC45 = 0;
		LOC45 = weaklevalue_198424(LOC43, LOC44);
		if (!(LOC45 == ((NU8) 1))) goto LA46;
		localerror_165155((*n).info, ((NU16) 106), ((NimStringDesc*) &TMP2989));
	}
	LA46: ;
	addsonskipintlit_238729(result, ranget[(((NI) 0))- 0]);
	return result;
}

N_NIMCALL(Ttype190849*, semtypeexpr_421172)(Tcontext244023* c, Tnode190813* n_421175) {
	Ttype190849* result;
	Tnode190813* n;
	result = 0;
	n = semexprwithtype_409211(c, n_421175, 32);
	{
		if (!((*(*n).typ).kind == ((NU8) 8))) goto LA3;
		result = base_220039((*n).typ);
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC6;
		LOC6 = 0;
		LOC6 = rendertree_212058(n, 0);
		localerror_165155((*n).info, ((NU16) 63), LOC6);
	}
	LA1: ;
	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(Ttype190849*, freshtype_421192)(Ttype190849* res, Ttype190849* prev) {
	Ttype190849* result;
	result = 0;
	{
		if (!prev == 0) goto LA3;
		result = copytype_193549(res, (*res).owner, NIM_FALSE);
	}
	goto LA1;
	LA3: ;
	{
		result = res;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, newconstraint_415725)(Tcontext244023* c, NU8 k) {
	Ttype190849* result;
	Ttype190849* LOC1;
	result = 0;
	result = newtypes_244219(((NU8) 51), c);
	LOC1 = 0;
	LOC1 = newtypes_244219(k, c);
	addsonskipintlit_238729(result, LOC1);
	return result;
}

N_NIMCALL(Ttype190849*, semanyref_416111)(Tcontext244023* c, Tnode190813* n_416114, NU8 kind, Ttype190849* prev) {
	Ttype190849* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_191097(n_416114);
		if (!(LOC3 < ((NI) 1))) goto LA4;
		result = newconstraint_415725(c, kind);
	}
	goto LA1;
	LA4: ;
	{
		NI iscall;
		Tnode190813* n;
		Ttype190849* base;
		Tnode190813* LOC24;
		iscall = ((*n_416114).kind == ((NU8) 27) || (*n_416114).kind == ((NU8) 29) || (*n_416114).kind == ((NU8) 30) || (*n_416114).kind == ((NU8) 31) || (*n_416114).kind == ((NU8) 26) || (*n_416114).kind == ((NU8) 28) || (*n_416114).kind == ((NU8) 32));
		{
			Tnode190813* LOC9;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_191244(n_416114, ((NI) 0));
			if (!((*LOC9).kind == ((NU8) 41))) goto LA10;
			n = HEX5BHEX5D_191244(n_416114, ((NI) 0));
		}
		goto LA7;
		LA10: ;
		{
			n = n_416114;
		}
		LA7: ;
		checkminsonslen_245259(n, ((NI) 1));
		result = neworprevtype_415695(kind, prev, c);
		{
			NI i_416224;
			NI HEX3Atmp_416241;
			NI LOC14;
			NI res_416244;
			i_416224 = 0;
			HEX3Atmp_416241 = 0;
			LOC14 = 0;
			LOC14 = len_191097(n);
			HEX3Atmp_416241 = (NI)(LOC14 - ((NI) 2));
			res_416244 = ((NI) (iscall));
			{
				while (1) {
					Ttype190849* region;
					Tnode190813* LOC17;
					if (!(res_416244 <= HEX3Atmp_416241)) goto LA16;
					i_416224 = res_416244;
					LOC17 = 0;
					LOC17 = HEX5BHEX5D_191244(n, i_416224);
					region = semtypenode_409269(c, LOC17, NIM_NIL);
					{
						Ttype190849* LOC20;
						Tnode190813* LOC23;
						LOC20 = 0;
						LOC20 = skiptypes_194167(region, 2048);
						if (!!(((*LOC20).kind == ((NU8) 50) || (*LOC20).kind == ((NU8) 17)))) goto LA21;
						LOC23 = 0;
						LOC23 = HEX5BHEX5D_191244(n, i_416224);
						message_165188((*LOC23).info, ((NU16) 4), ((NimStringDesc*) &TMP2993));
					}
					LA21: ;
					addsonskipintlit_238729(result, region);
					res_416244 += ((NI) 1);
				} LA16: ;
			}
		}
		LOC24 = 0;
		LOC24 = lastson_193431(n);
		base = semtypenode_409269(c, LOC24, NIM_NIL);
		addsonskipintlit_238729(result, base);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semwhen_410040)(Tcontext244023* c, Tnode190813* n, NIM_BOOL semcheck) {
	Tnode190813* result;
	result = 0;
	result = NIM_NIL;
	{
		NI i_448660;
		NI HEX3Atmp_448715;
		NI LOC2;
		NI res_448718;
		i_448660 = 0;
		HEX3Atmp_448715 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_448715 = (NI)(LOC2 - ((NI) 1));
		res_448718 = ((NI) 0);
		{
			while (1) {
				Tnode190813* it;
				if (!(res_448718 <= HEX3Atmp_448715)) goto LA4;
				i_448660 = res_448718;
				it = (*n).kindU.S6.sons->data[i_448660];
				switch ((*it).kind) {
				case ((NU8) 86):
				case ((NU8) 49):
				{
					Tnode190813* e;
					checksonslen_245249(it, ((NI) 2));
					e = semconstexpr_410485(c, (*it).kindU.S6.sons->data[((NI) 0)]);
					{
						if (!!(((*e).kind == ((NU8) 6)))) goto LA8;
					}
					goto LA6;
					LA8: ;
					{
						NIM_BOOL LOC11;
						LOC11 = 0;
						LOC11 = !(((*e).kindU.S1.intval == IL64(0)));
						if (!(LOC11)) goto LA12;
						LOC11 = (result == NIM_NIL);
						LA12: ;
						if (!LOC11) goto LA13;
						{
							if (!semcheck) goto LA17;
							result = semstmt_409277(c, (*it).kindU.S6.sons->data[((NI) 1)]);
						}
						goto LA15;
						LA17: ;
						{
							result = (*it).kindU.S6.sons->data[((NI) 1)];
						}
						LA15: ;
					}
					goto LA6;
					LA13: ;
					LA6: ;
				}
				break;
				case ((NU8) 88):
				case ((NU8) 50):
				{
					checksonslen_245249(it, ((NI) 1));
					{
						if (!(result == NIM_NIL)) goto LA23;
						{
							if (!semcheck) goto LA27;
							result = semstmt_409277(c, (*it).kindU.S6.sons->data[((NI) 0)]);
						}
						goto LA25;
						LA27: ;
						{
							result = (*it).kindU.S6.sons->data[((NI) 0)];
						}
						LA25: ;
					}
					LA23: ;
				}
				break;
				default:
				{
					illformedast_245229(n);
				}
				break;
				}
				res_448718 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		if (!(result == NIM_NIL)) goto LA33;
		result = newnodei_192351(((NU8) 1), (*n).info);
	}
	LA33: ;
	idsynchronizationpoint_189453(((NI) 200));
	return result;
}

N_NIMCALL(Tsym190843*, semtypeident_416777)(Tcontext244023* c, Tnode190813* n) {
	Tsym190843* result;
{	result = 0;
	{
		if (!((*n).kind == ((NU8) 3))) goto LA3;
		result = (*n).kindU.S4.sym;
	}
	goto LA1;
	LA3: ;
	{
		result = qualifiedlookup_249864(c, n, 3);
		{
			if (!!((result == NIM_NIL))) goto LA8;
			markused_344251((*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;
				{
					Tsym190843* 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_165155((*n).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
					result = errorsym_249372(c, n);
					goto BeforeRet;
				}
				LA26: ;
				result = copysym_193607((*(*result).typ).sym, NIM_FALSE);
				asgnRefNoCycle((void**) (&(*result).typ), copytype_193549((*result).typ, (*(*result).typ).owner, NIM_TRUE));
				(*(*result).typ).flags |= ((NI32)1)<<((((NU8) 9))%(sizeof(NI32)*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_193377((*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 &= ~(((NI32)1) << ((((NU8) 25)) % (sizeof(NI32)*8)));
					goto BeforeRet;
				}
				goto LA32;
				LA39: ;
				{
					localerror_165155((*n).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
					result = errorsym_249372(c, n);
					goto BeforeRet;
				}
				LA32: ;
			}
			LA30: ;
			{
				Toverloaditer249431 ov;
				Tsym190843* amb;
				if (!!(((*result).kind == ((NU8) 7)))) goto LA44;
				memset((void*)(&ov), 0, sizeof(ov));
				amb = initoverloaditer_250108((&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_250277((&ov), c, n);
					} LA47: ;
				}
				{
					if (!!((amb == NIM_NIL))) goto LA52;
					result = amb;
				}
				goto LA50;
				LA52: ;
				{
					{
						if (!!(((*result).kind == ((NU8) 0)))) goto LA57;
						localerror_165155((*n).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
					}
					LA57: ;
					result = errorsym_249372(c, n);
					goto BeforeRet;
				}
				LA50: ;
			}
			LA44: ;
			{
				Tlineinfo163338 oldinfo;
				if (!!(((*(*result).typ).kind == ((NU8) 12)))) goto LA61;
				oldinfo = (*n).info;
				genericReset((void*)(&(*n)), (&NTI190813));
				(*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_165155((*n).info, ((NU16) 19), ((NimStringDesc*) &TMP2989));
			result = errorsym_249372(c, n);
		}
		LA6: ;
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype190849*, semarrayindex_416610)(Tcontext244023* c, Tnode190813* n) {
	Ttype190849* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isrange_219612(n);
		if (!LOC3) goto LA4;
		result = semrangeaux_416292(c, n, NIM_NIL);
	}
	goto LA1;
	LA4: ;
	{
		Tnode190813* e;
		e = semexprwithtype_409211(c, n, 32);
		{
			if (!((*(*e).typ).kind == ((NU8) 60))) goto LA9;
			result = makerangewithstaticexpr_245084(c, (*(*e).typ).n);
		}
		goto LA7;
		LA9: ;
		{
			if (!((*e).kind >= ((NU8) 6) && (*e).kind <= ((NU8) 15))) goto LA12;
			result = makerangetype_245182(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_416610(c, (*(*e).kindU.S4.sym).ast);
				goto BeforeRet;
			}
			LA21: ;
			{
				Ttype190849* LOC25;
				NIM_BOOL LOC26;
				Tnode190813* LOC29;
				LOC25 = 0;
				LOC25 = lastson_193442((*e).typ);
				LOC26 = 0;
				LOC26 = isordinaltype_220093(LOC25);
				if (!!(LOC26)) goto LA27;
				LOC29 = 0;
				LOC29 = HEX5BHEX5D_191244(n, ((NI) 1));
				localerror_165155((*LOC29).info, ((NU16) 74), ((NimStringDesc*) &TMP2989));
			}
			LA27: ;
			result = makerangewithstaticexpr_245084(c, e);
			{
				if (!(((NI) 0) < (*c).ingenericcontext)) goto LA32;
				(*result).flags |= ((NI32)1)<<((((NU8) 9))%(sizeof(NI32)*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_265765(e);
			LA36: ;
			if (!LOC35) goto LA37;
			{
				NIM_BOOL LOC41;
				Tnode190813* LOC44;
				LOC41 = 0;
				LOC41 = isordinaltype_220093((*e).typ);
				if (!!(LOC41)) goto LA42;
				LOC44 = 0;
				LOC44 = HEX5BHEX5D_191244(n, ((NI) 1));
				localerror_165155((*LOC44).info, ((NU16) 74), ((NimStringDesc*) &TMP2989));
			}
			LA42: ;
			result = makerangewithstaticexpr_245084(c, e);
		}
		goto LA7;
		LA37: ;
		{
			if (!((*e).kind == ((NU8) 2))) goto LA46;
			result = skiptypes_194167((*e).typ, 256);
		}
		goto LA7;
		LA46: ;
		{
			Tnode190813* x;
			x = semconstexpr_410485(c, e);
			{
				Ttype190849* LOC53;
				if (!((*x).kind >= ((NU8) 6) && (*x).kind <= ((NU8) 15))) goto LA51;
				LOC53 = 0;
				LOC53 = skiptypes_194167((*x).typ, 256);
				result = makerangetype_245182(c, IL64(0), (NI64)((*x).kindU.S1.intval - IL64(1)), (*n).info, LOC53);
			}
			goto LA49;
			LA51: ;
			{
				result = skiptypes_194167((*x).typ, 256);
			}
			LA49: ;
		}
		LA7: ;
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype190849*, semarray_416720)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	Ttype190849* base;
	result = 0;
	base = 0;
	result = neworprevtype_415695(((NU8) 16), prev, c);
	{
		NI LOC3;
		Ttype190849* indx;
		Tnode190813* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_191244(n, ((NI) 1));
		indx = semarrayindex_416610(c, LOC6);
		addsonskipintlit_238729(result, indx);
		{
			if (!((*indx).kind == ((NU8) 11))) goto LA9;
			indx = lastson_193442(indx);
		}
		LA9: ;
		{
			if (!!(((*indx).kind == ((NU8) 12) || (*indx).kind == ((NU8) 59) || (*indx).kind == ((NU8) 60)))) goto LA13;
			{
				NIM_BOOL LOC17;
				LOC17 = 0;
				LOC17 = isordinaltype_220093(indx);
				if (!!(LOC17)) goto LA18;
				localerror_165155((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 74), ((NimStringDesc*) &TMP2989));
			}
			goto LA15;
			LA18: ;
			{
				NIM_BOOL LOC21;
				Ttype190849* LOC24;
				NimStringDesc* LOC25;
				LOC21 = 0;
				LOC21 = enumhasholes_220099(indx);
				if (!LOC21) goto LA22;
				LOC24 = 0;
				LOC24 = skiptypes_194167(indx, 1048576);
				LOC25 = 0;
				LOC25 = typetostring_220032(LOC24, ((NU8) 0));
				localerror_165155((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 146), LOC25);
			}
			goto LA15;
			LA22: ;
			LA15: ;
		}
		LA13: ;
		base = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
		addsonskipintlit_238729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		localerror_165155((*n).info, ((NU16) 173), ((NimStringDesc*) &TMP2989));
		result = neworprevtype_415695(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, semcontainer_416085)(Tcontext244023* c, Tnode190813* n, NU8 kind, NimStringDesc* kindstr, Ttype190849* prev) {
	Ttype190849* result;
	result = 0;
	result = neworprevtype_415695(kind, prev, c);
	{
		NI LOC3;
		Ttype190849* base;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_238729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		Ttype190849* LOC7;
		localerror_165155((*n).info, ((NU16) 172), kindstr);
		LOC7 = 0;
		LOC7 = errortype_245150(c);
		addsonskipintlit_238729(result, LOC7);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, semrange_416501)(Tcontext244023* c, Tnode190813* n_416504, Ttype190849* prev) {
	Ttype190849* result;
	result = 0;
	result = NIM_NIL;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_193403(n_416504);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		{
			Tnode190813* LOC8;
			NIM_BOOL LOC9;
			Tnode190813* LOC12;
			Tnode190813* n;
			LOC8 = 0;
			LOC8 = HEX5BHEX5D_191244(n_416504, ((NI) 1));
			LOC9 = 0;
			LOC9 = isrange_219612(LOC8);
			if (!LOC9) goto LA10;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_191244(n_416504, ((NI) 1));
			result = semrangeaux_416292(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 |= ((NI32)1)<<((((NU8) 17))%(sizeof(NI32)*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 |= ((NI32)1)<<((((NU8) 17))%(sizeof(NI32)*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 |= ((NI32)1)<<((((NU8) 17))%(sizeof(NI32)*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 |= ((NI32)1)<<((((NU8) 17))%(sizeof(NI32)*8));
			}
			goto LA13;
			LA32: ;
			LA13: ;
		}
		goto LA6;
		LA10: ;
		{
			localerror_165155((*(*n_416504).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 96), ((NimStringDesc*) &TMP2989));
			result = neworprevtype_415695(((NU8) 50), prev, c);
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		localerror_165155((*n_416504).info, ((NU16) 172), ((NimStringDesc*) &TMP2996));
		result = neworprevtype_415695(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, semset_416056)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	result = 0;
	result = neworprevtype_415695(((NU8) 19), prev, c);
	{
		NI LOC3;
		Ttype190849* base;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_238729(result, base);
		{
			if (!((*base).kind == ((NU8) 11))) goto LA8;
			base = lastson_193442(base);
		}
		LA8: ;
		{
			if (!!(((*base).kind == ((NU8) 12)))) goto LA12;
			{
				NIM_BOOL LOC16;
				LOC16 = 0;
				LOC16 = isordinaltype_220093(base);
				if (!!(LOC16)) goto LA17;
				localerror_165155((*n).info, ((NU16) 74), ((NimStringDesc*) &TMP2989));
			}
			goto LA14;
			LA17: ;
			{
				NI64 LOC20;
				LOC20 = 0;
				LOC20 = lengthord_220016(base);
				if (!(IL64(65536) < LOC20)) goto LA21;
				localerror_165155((*n).info, ((NU16) 119), ((NimStringDesc*) &TMP2989));
			}
			goto LA14;
			LA21: ;
			LA14: ;
		}
		LA12: ;
	}
	goto LA1;
	LA4: ;
	{
		Ttype190849* LOC24;
		localerror_165155((*n).info, ((NU16) 172), ((NimStringDesc*) &TMP2997));
		LOC24 = 0;
		LOC24 = errortype_245150(c);
		addsonskipintlit_238729(result, LOC24);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, semordinal_416756)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	result = 0;
	result = neworprevtype_415695(((NU8) 15), prev, c);
	{
		NI LOC3;
		Ttype190849* base;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		base = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		{
			if (!!(((*base).kind == ((NU8) 12)))) goto LA8;
			{
				NIM_BOOL LOC12;
				LOC12 = 0;
				LOC12 = isordinaltype_220093(base);
				if (!!(LOC12)) goto LA13;
				localerror_165155((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 74), ((NimStringDesc*) &TMP2989));
			}
			LA13: ;
		}
		LA8: ;
		addsonskipintlit_238729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		localerror_165155((*n).info, ((NU16) 172), ((NimStringDesc*) &TMP2998));
		result = neworprevtype_415695(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, semvarargs_416098)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	result = 0;
	result = neworprevtype_415695(((NU8) 48), prev, c);
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NI LOC6;
		Ttype190849* base;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_193403(n);
		LOC3 = (LOC4 == ((NI) 2));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = sonslen_193403(n);
		LOC3 = (LOC6 == ((NI) 3));
		LA5: ;
		if (!LOC3) goto LA7;
		base = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
		addsonskipintlit_238729(result, base);
		{
			NI LOC11;
			Tident167021* LOC14;
			LOC11 = 0;
			LOC11 = sonslen_193403(n);
			if (!(LOC11 == ((NI) 3))) goto LA12;
			LOC14 = 0;
			LOC14 = considerquotedident_249010((*n).kindU.S6.sons->data[((NI) 2)]);
			asgnRefNoCycle((void**) (&(*result).n), newidentnode_192313(LOC14, (*(*n).kindU.S6.sons->data[((NI) 2)]).info));
		}
		LA12: ;
	}
	goto LA1;
	LA7: ;
	{
		Ttype190849* LOC16;
		localerror_165155((*n).info, ((NU16) 172), ((NimStringDesc*) &TMP3000));
		LOC16 = 0;
		LOC16 = errortype_245150(c);
		addsonskipintlit_238729(result, LOC16);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, semgenericparamininvocation_420915)(Tcontext244023* c, Tnode190813* n) {
	Ttype190849* result;
	result = 0;
	result = semtypenode_409269(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(Ttype190849*, instgenericcontainer_412151)(Tcontext244023* c, Tlineinfo163338 info, Ttype190849* header, NIM_BOOL allowmetatypes) {
	Ttype190849* result;
	Trepltypevars265544 cl;
	result = 0;
	memset((void*)(&cl), 0, sizeof(cl));
	initidtable_194057((&cl.symmap));
	initidtable_194057((&cl.typemap));
	initidtable_194057((&cl.localcache));
	cl.info = info;
	cl.c = c;
	cl.allowmetatypes = allowmetatypes;
	result = replacetypevarst_265592((&cl), header);
	return result;
}

N_NIMCALL(Ttype190849*, semgeneric_420923)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, Ttype190849* prev) {
	Ttype190849* result;
	Ttype190849* t;
{	result = 0;
	{
		TY154965 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, (&NTI190441)), ((NI) 2));
		LOC5[1] = nsuToLowerStr(LOC6);
		LOC7 = 0;
		LOC7 = nsuFormatOpenArray(((NimStringDesc*) &TMP3001), LOC5, 2);
		localerror_165166((*n).info, LOC7);
		result = neworprevtype_415695(((NU8) 50), prev, c);
		goto BeforeRet;
	}
	LA3: ;
	t = (*s).typ;
	{
		NIM_BOOL LOC10;
		Ttype190849* LOC12;
		LOC10 = 0;
		LOC10 = ((*t).kind == ((NU8) 54));
		if (!(LOC10)) goto LA11;
		LOC12 = 0;
		LOC12 = base_220039(t);
		LOC10 = ((*LOC12).kind == ((NU8) 10));
		LA11: ;
		if (!LOC10) goto LA13;
		t = base_220039(t);
	}
	LA13: ;
	result = neworprevtype_415695(((NU8) 9), prev, c);
	addsonskipintlit_238729(result, t);
	{
		if (!((*t).kind == ((NU8) 30))) goto LA17;
		{
			NI i_421000;
			NI HEX3Atmp_421136;
			NI LOC20;
			NI res_421139;
			i_421000 = 0;
			HEX3Atmp_421136 = 0;
			LOC20 = 0;
			LOC20 = sonslen_193403(n);
			HEX3Atmp_421136 = (NI)(LOC20 - ((NI) 1));
			res_421139 = ((NI) 1);
			{
				while (1) {
					Ttype190849* elem;
					if (!(res_421139 <= HEX3Atmp_421136)) goto LA22;
					i_421000 = res_421139;
					elem = semgenericparamininvocation_420915(c, (*n).kindU.S6.sons->data[i_421000]);
					{
						if (!elem == 0) goto LA25;
						{
							NimStringDesc* LOC31;
							if (!NIM_TRUE) goto LA29;
							LOC31 = 0;
							LOC31 = HEX24_165306(TMP3002);
							internalerror_165218(LOC31);
						}
						LA29: ;
						rawaddson_194478(result, elem);
					}
					goto LA23;
					LA25: ;
					{
						addsonskipintlit_238729(result, elem);
					}
					LA23: ;
					res_421139 += ((NI) 1);
				} LA22: ;
			}
		}
		goto BeforeRet;
	}
	goto LA15;
	LA17: ;
	{
		if (!!(((*t).kind == ((NU8) 10)))) goto LA34;
		localerror_165155((*n).info, ((NU16) 156), (*(*s).name).s);
		result = neworprevtype_415695(((NU8) 50), prev, c);
		goto BeforeRet;
	}
	goto LA15;
	LA34: ;
	{
		Tcandidate344209 m;
		Tnode190813* LOC37;
		NIM_BOOL isconcrete;
		memset((void*)(&m), 0, sizeof(m));
		chckNil((void*)(&m));
		memset((void*)(&m), 0, sizeof(m));
		newcandidate_344478(c, t, (&m));
		LOC37 = 0;
		LOC37 = copytree_195028(n);
		matches_350449(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_220032(t, ((NU8) 0));
			LOC46 = 0;
			LOC46 = describeargs_344974(c, n, ((NI) 1), ((NU8) 0));
			LOC47 = 0;
			LOC47 = describeargs_344974(c, (*t).n, ((NI) 0), ((NU8) 0));
			LOC44 = rawNewString(LOC45->Sup.len + LOC46->Sup.len + LOC47->Sup.len + 44);
appendString(LOC44, ((NimStringDesc*) &TMP3004));
appendString(LOC44, LOC45);
appendString(LOC44, ((NimStringDesc*) &TMP3005));
appendString(LOC44, LOC46);
appendString(LOC44, ((NimStringDesc*) &TMP3009));
appendString(LOC44, LOC47);
appendString(LOC44, ((NimStringDesc*) &TMP3010));
			err = LOC44;
			localerror_165155((*n).info, ((NU16) 4), err);
			result = neworprevtype_415695(((NU8) 50), prev, c);
			goto BeforeRet;
		}
		LA42: ;
		isconcrete = NIM_TRUE;
		{
			NI i_421060;
			NI HEX3Atmp_421144;
			NI LOC49;
			NI res_421147;
			i_421060 = 0;
			HEX3Atmp_421144 = 0;
			LOC49 = 0;
			LOC49 = len_191097(m.call);
			HEX3Atmp_421144 = (LOC49 - 1);
			res_421147 = ((NI) 1);
			{
				while (1) {
					Ttype190849* typ;
					Tnode190813* LOC52;
					if (!(res_421147 <= HEX3Atmp_421144)) goto LA51;
					i_421060 = res_421147;
					LOC52 = 0;
					LOC52 = HEX5BHEX5D_191244(m.call, i_421060);
					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_165306(TMP3002);
								internalerror_165218(LOC67);
							}
							LA65: ;
							rawaddson_194478(result, typ);
						}
						goto LA59;
						LA61: ;
						{
							addsonskipintlit_238729(result, typ);
						}
						LA59: ;
					}
					goto LA53;
					LA57: ;
					{
						typ = skiptypes_194167(typ, 256);
						{
							NIM_BOOL LOC72;
							LOC72 = 0;
							LOC72 = containsgenerictype_229310(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_165306(TMP3002);
								internalerror_165218(LOC83);
							}
							LA81: ;
							rawaddson_194478(result, typ);
						}
						goto LA75;
						LA77: ;
						{
							addsonskipintlit_238729(result, typ);
						}
						LA75: ;
					}
					LA53: ;
					res_421147 += ((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_165155((*n).info, ((NU16) 124), (*(*s).name).s);
				result = neworprevtype_415695(((NU8) 50), prev, c);
			}
			goto LA89;
			LA93: ;
			{
				result = instgenericcontainer_412151(c, (*n).info, result, NIM_FALSE);
			}
			LA89: ;
		}
		LA87: ;
	}
	LA15: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, symchoice_422316)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, NU8 r) {
	Tnode190813* result;
	Tsym190843* a;
	Toverloaditer249431 o;
	NI i;
	result = 0;
	a = 0;
	memset((void*)(&o), 0, sizeof(o));
	i = ((NI) 0);
	a = initoverloaditer_250108((&o), c, n);
	{
		while (1) {
			if (!!((a == NIM_NIL))) goto LA2;
			a = nextoverloaditer_250277((&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_192338(s, (*n).info);
		markused_344251((*n).info, s);
	}
	goto LA7;
	LA11: ;
	{
		NU8 kind;
		Ttype190849* 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_244219(((NU8) 0), c);
		result = newnodeit_192807(kind, (*n).info, LOC21);
		a = initoverloaditer_250108((&o), c, n);
		{
			while (1) {
				Tnode190813* LOC24;
				if (!!((a == NIM_NIL))) goto LA23;
				(*a).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
				LOC24 = 0;
				LOC24 = newsymnode_192338(a, (*n).info);
				addson_192819(result, LOC24);
				a = nextoverloaditer_250277((&o), c, n);
			} LA23: ;
		}
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode190813*, semtemplateexpr_410055)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, NU16 flags) {
	Tnode190813* result;
	Tsym190843* LOC1;
	result = 0;
	markused_344251((*n).info, s);
	pushinfocontext_164192((*n).info);
	LOC1 = 0;
	LOC1 = getcurrowner_244256();
	result = evaltemplate_383260(n, s, LOC1);
	{
		if (!!(((flags &(1<<((((NU8) 9))&15)))!=0))) goto LA4;
		result = semaftermacrocall_415431(c, result, s, flags);
	}
	LA4: ;
	popinfocontext_164211();
	return result;
}

N_NIMCALL(Tnode190813*, semgenericstmtsymbol_426643)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, Genericctx426608* ctx) {
	Tnode190813* result;
	result = 0;
	(*s).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
	switch ((*s).kind) {
	case ((NU8) 0):
	{
		result = n;
	}
	break;
	case ((NU8) 12):
	case ((NU8) 13):
	case ((NU8) 14):
	case ((NU8) 16):
	case ((NU8) 15):
	{
		result = symchoice_422316(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_193377((*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_410055(c, n, s, 512);
			result = semgenericstmt_426618(c, result, 0, ctx);
		}
		goto LA4;
		LA11: ;
		{
			result = symchoice_422316(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_193377((*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_410066(c, n, n, s, 512);
			result = semgenericstmt_426618(c, result, 0, ctx);
		}
		goto LA15;
		LA22: ;
		{
			result = symchoice_422316(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_257736(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_257736(s, (*n).info);
		}
		goto LA40;
		LA44: ;
		{
			result = n;
		}
		LA40: ;
	}
	break;
	default:
	{
		result = newsymnode_192338(s, (*n).info);
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode190813*, lookup_428004)(Tcontext244023* c, Tnode190813* n, NU8 flags, Genericctx426608* ctx) {
	Tnode190813* result;
	Tident167021* ident;
	Tsym190843* s;
	Tsym190843* LOC1;
	result = 0;
	result = n;
	ident = considerquotedident_249010(n);
	LOC1 = 0;
	LOC1 = searchinscopes_249205(c, ident);
	s = skipalias_249150(LOC1, n);
	{
		if (!(s == NIM_NIL)) goto LA4;
		{
			NIM_BOOL LOC8;
			NIM_BOOL LOC9;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = contains_187829((*ctx).tomixin, (*ident).Sup.id);
			LOC8 = !(LOC9);
			if (!(LOC8)) goto LA10;
			LOC8 = !(((flags &(1<<((((NU8) 2))&7)))!=0));
			LA10: ;
			if (!LOC8) goto LA11;
			localerror_165155((*n).info, ((NU16) 61), (*ident).s);
		}
		LA11: ;
	}
	goto LA2;
	LA4: ;
	{
		{
			if (!((flags &(1<<((((NU8) 0))&7)))!=0)) goto LA16;
			result = symchoice_422316(c, n, s, ((NU8) 0));
		}
		goto LA14;
		LA16: ;
		{
			NIM_BOOL LOC19;
			LOC19 = 0;
			LOC19 = contains_187829((*ctx).tomixin, (*(*s).name).Sup.id);
			if (!LOC19) goto LA20;
			result = symchoice_422316(c, n, s, ((NU8) 2));
		}
		goto LA14;
		LA20: ;
		{
			result = semgenericstmtsymbol_426643(c, n, s, ctx);
		}
		LA14: ;
	}
	LA2: ;
	return result;
}

N_NIMCALL(Tnode190813*, newdot_428051)(Tnode190813* n, Tnode190813* b) {
	Tnode190813* result;
	result = 0;
	result = newnodei_192351(((NU8) 45), (*n).info);
	add_191164(result, (*n).kindU.S6.sons->data[((NI) 0)]);
	add_191164(result, b);
	return result;
}

N_NIMCALL(Tnode190813*, fuzzylookup_428062)(Tcontext244023* c, Tnode190813* n_428065, NU8 flags, Genericctx426608* ctx, NIM_BOOL* ismacro) {
	Tnode190813* result;
	NU8 luf;
	Tsym190843* s_428415;
	result = 0;
	{
		if (!!(((flags &(1<<((((NU8) 2))&7)))!=0))) goto LA3;
		luf = 2;
	}
	goto LA1;
	LA3: ;
	{
		luf = 0;
	}
	LA1: ;
	s_428415 = qualifiedlookup_249864(c, n_428065, luf);
	{
		if (!!((s_428415 == NIM_NIL))) goto LA8;
		result = semgenericstmtsymbol_426643(c, n_428065, s_428415, ctx);
	}
	goto LA6;
	LA8: ;
	{
		Tnode190813* n;
		Tident167021* ident;
		Tsym190843* s;
		Tsym190843* LOC11;
		asgnRefNoCycle((void**) (&(*n_428065).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_426618(c, (*n_428065).kindU.S6.sons->data[((NI) 0)], flags, ctx));
		result = n_428065;
		n = HEX5BHEX5D_191244(n_428065, ((NI) 1));
		ident = considerquotedident_249010(n);
		LOC11 = 0;
		LOC11 = searchinscopes_249205(c, ident);
		s = skipalias_249150(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);
			{
				Tnode190813* LOC22;
				if (!((flags &(1<<((((NU8) 0))&7)))!=0)) goto LA20;
				LOC22 = 0;
				LOC22 = symchoice_422316(c, n, s, ((NU8) 0));
				result = newdot_428051(result, LOC22);
			}
			goto LA18;
			LA20: ;
			{
				NIM_BOOL LOC24;
				Tnode190813* LOC27;
				LOC24 = 0;
				LOC24 = contains_187829((*ctx).tomixin, (*(*s).name).Sup.id);
				if (!LOC24) goto LA25;
				LOC27 = 0;
				LOC27 = symchoice_422316(c, n, s, ((NU8) 2));
				result = newdot_428051(result, LOC27);
			}
			goto LA18;
			LA25: ;
			{
				Tnode190813* sym;
				sym = semgenericstmtsymbol_426643(c, n, s, ctx);
				{
					Tnode190813* LOC33;
					if (!((*sym).kind == ((NU8) 3))) goto LA31;
					LOC33 = 0;
					LOC33 = symchoice_422316(c, n, s, ((NU8) 2));
					result = newdot_428051(result, LOC33);
				}
				goto LA29;
				LA31: ;
				{
					result = newdot_428051(result, sym);
				}
				LA29: ;
			}
			LA18: ;
		}
		LA16: ;
	}
	LA6: ;
	return result;
}

N_NIMCALL(Tnode190813*, semmixinstmt_422521)(Tcontext244023* c, Tnode190813* n, Intset187056* tomixin) {
	Tnode190813* result;
	result = 0;
	{
		NI i_422547;
		NI HEX3Atmp_422550;
		NI LOC2;
		NI res_422553;
		i_422547 = 0;
		HEX3Atmp_422550 = 0;
		LOC2 = 0;
		LOC2 = len_191097(n);
		HEX3Atmp_422550 = (LOC2 - 1);
		res_422553 = ((NI) 0);
		{
			while (1) {
				Tident167021* LOC5;
				if (!(res_422553 <= HEX3Atmp_422550)) goto LA4;
				i_422547 = res_422553;
				LOC5 = 0;
				LOC5 = considerquotedident_249010((*n).kindU.S6.sons->data[i_422547]);
				incl_187856(tomixin, (*LOC5).Sup.id);
				res_422553 += ((NI) 1);
			} LA4: ;
		}
	}
	result = newnodei_192351(((NU8) 1), (*n).info);
	return result;
}

N_NIMCALL(Tnode190813*, semgenericstmtscope_426625)(Tcontext244023* c, Tnode190813* n, NU8 flags, Genericctx426608* ctx) {
	Tnode190813* result;
	Tscope190837* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	result = semgenericstmt_426618(c, n, flags, ctx);
	closescope_249111(c);
	return result;
}

N_NIMCALL(Tsym190843*, newsyms_409904)(NU8 kind, Tnode190813* n, Tcontext244023* c) {
	Tsym190843* result;
	Tident167021* LOC1;
	Tsym190843* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = considerquotedident_249010(n);
	LOC2 = 0;
	LOC2 = getcurrowner_244256();
	result = newsym_191656(kind, LOC1, LOC2, (*n).info);
	return result;
}

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

N_NIMCALL(void, addtempdecl_428491)(Tcontext244023* c, Tnode190813* n, NU8 kind) {
	Tsym190843* s;
	Tnode190813* LOC1;
	LOC1 = 0;
	LOC1 = getidentnode_426598(n);
	s = newsyms_409904(((NU8) 0), LOC1, c);
	addprelimdecl_249619(c, s);
}

N_NIMCALL(Tnode190813*, semgenericstmt_426618)(Tcontext244023* c, Tnode190813* n, NU8 flags_426622, Genericctx426608* ctx) {
	Tnode190813* result;
	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	case ((NU8) 53):
	{
		result = lookup_428004(c, n, flags_426622, ctx);
	}
	break;
	case ((NU8) 45):
	{
		NIM_BOOL dummy;
		dummy = 0;
		result = fuzzylookup_428062(c, n, flags_426622, ctx, (&dummy));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 55):
	{
		result = semgenericstmt_426618(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_426622 | 1), ctx);
	}
	break;
	case ((NU8) 123):
	{
		result = semmixinstmt_422521(c, n, (&(*ctx).tomixin));
	}
	break;
	case ((NU8) 27):
	case ((NU8) 32):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		Tnode190813* fn;
		Tsym190843* s;
		NI first;
		NIM_BOOL mixincontext;
		NU8 flags;
		checkminsonslen_245259(n, ((NI) 1));
		fn = (*n).kindU.S6.sons->data[((NI) 0)];
		s = qualifiedlookup_249864(c, fn, 0);
		{
			NIM_BOOL LOC9;
			NIM_BOOL LOC10;
			NIM_BOOL LOC11;
			Tident167021* LOC15;
			NIM_BOOL LOC16;
			NimStringDesc* LOC19;
			LOC9 = 0;
			LOC10 = 0;
			LOC11 = 0;
			LOC11 = (s == NIM_NIL);
			if (!(LOC11)) goto LA12;
			LOC11 = !(((flags_426622 &(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_249010(fn);
			LOC16 = 0;
			LOC16 = contains_187829((*ctx).tomixin, (*LOC15).Sup.id);
			LOC9 = !(LOC16);
			LA14: ;
			if (!LOC9) goto LA17;
			LOC19 = 0;
			LOC19 = rendertree_212058(fn, 0);
			localerror_165155((*n).info, ((NU16) 61), LOC19);
		}
		LA17: ;
		first = ((NI) 0);
		mixincontext = NIM_FALSE;
		{
			NU8 scoption;
			if (!!((s == NIM_NIL))) goto LA22;
			(*s).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
			mixincontext = ((*s).magic == ((NU16) 1) || (*s).magic == ((NU16) 2) || (*s).magic == ((NU16) 3));
			{
				NIM_BOOL LOC26;
				LOC26 = 0;
				LOC26 = contains_187829((*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_193377((*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_410066(c, n, n, s, 512);
					result = semgenericstmt_426618(c, result, 0, ctx);
				}
				goto LA31;
				LA38: ;
				{
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), symchoice_422316(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_193377((*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_410055(c, n, s, 512);
					result = semgenericstmt_426618(c, result, 0, ctx);
				}
				goto LA42;
				LA49: ;
				{
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), symchoice_422316(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) 15):
			{
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), symchoice_422316(c, fn, s, scoption));
				first = ((NI) 1);
			}
			break;
			case ((NU8) 4):
			{
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnodetypedesc_257736(s, (*fn).info));
				first = ((NI) 1);
			}
			break;
			case ((NU8) 7):
			{
				{
					NIM_BOOL LOC58;
					LOC58 = 0;
					LOC58 = !(((*s).typ == NIM_NIL));
					if (!(LOC58)) goto LA59;
					LOC58 = !(((*(*s).typ).kind == ((NU8) 12)));
					LA59: ;
					if (!LOC58) goto LA60;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnodetypedesc_257736(s, (*fn).info));
					first = ((NI) 1);
				}
				LA60: ;
			}
			break;
			default:
			{
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192338(s, (*fn).info));
				first = ((NI) 1);
			}
			break;
			}
		}
		goto LA20;
		LA22: ;
		{
			if (!((*fn).kind == ((NU8) 45))) goto LA64;
			asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), fuzzylookup_428062(c, fn, flags_426622, ctx, (&mixincontext)));
			first = ((NI) 1);
		}
		goto LA20;
		LA64: ;
		LA20: ;
		{
			if (!mixincontext) goto LA68;
			flags = (flags_426622 | 4);
		}
		goto LA66;
		LA68: ;
		{
			flags = flags_426622;
		}
		LA66: ;
		{
			NI i_429838;
			NI HEX3Atmp_430501;
			NI LOC72;
			NI res_430504;
			i_429838 = 0;
			HEX3Atmp_430501 = 0;
			LOC72 = 0;
			LOC72 = sonslen_193403(result);
			HEX3Atmp_430501 = (NI)(LOC72 - ((NI) 1));
			res_430504 = first;
			{
				while (1) {
					if (!(res_430504 <= HEX3Atmp_430501)) goto LA74;
					i_429838 = res_430504;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_429838]), semgenericstmt_426618(c, (*result).kindU.S6.sons->data[i_429838], flags, ctx));
					res_430504 += ((NI) 1);
				} LA74: ;
			}
		}
	}
	break;
	case ((NU8) 92):
	{
		{
			NI i_429853;
			NI HEX3Atmp_430509;
			NI LOC77;
			NI res_430512;
			i_429853 = 0;
			HEX3Atmp_430509 = 0;
			LOC77 = 0;
			LOC77 = sonslen_193403(n);
			HEX3Atmp_430509 = (NI)(LOC77 - ((NI) 1));
			res_430512 = ((NI) 0);
			{
				while (1) {
					if (!(res_430512 <= HEX3Atmp_430509)) goto LA79;
					i_429853 = res_430512;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_429853]), semgenericstmtscope_426625(c, (*n).kindU.S6.sons->data[i_429853], flags_426622, ctx));
					res_430512 += ((NI) 1);
				} LA79: ;
			}
		}
	}
	break;
	case ((NU8) 93):
	{
		{
			NI i_429868;
			NI HEX3Atmp_430517;
			NI LOC82;
			NI res_430520;
			i_429868 = 0;
			HEX3Atmp_430517 = 0;
			LOC82 = 0;
			LOC82 = sonslen_193403(n);
			HEX3Atmp_430517 = (NI)(LOC82 - ((NI) 1));
			res_430520 = ((NI) 0);
			{
				while (1) {
					if (!(res_430520 <= HEX3Atmp_430517)) goto LA84;
					i_429868 = res_430520;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_429868]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[i_429868], (flags_426622 | 4), ctx));
					res_430520 += ((NI) 1);
				} LA84: ;
			}
		}
	}
	break;
	case ((NU8) 96):
	{
		Tscope190837* LOC86;
		LOC86 = 0;
		LOC86 = openscope_249091(c);
		{
			NI i_429896;
			NI HEX3Atmp_430525;
			NI LOC88;
			NI res_430528;
			i_429896 = 0;
			HEX3Atmp_430525 = 0;
			LOC88 = 0;
			LOC88 = sonslen_193403(n);
			HEX3Atmp_430525 = (NI)(LOC88 - ((NI) 1));
			res_430528 = ((NI) 0);
			{
				while (1) {
					if (!(res_430528 <= HEX3Atmp_430525)) goto LA90;
					i_429896 = res_430528;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_429896]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[i_429896], flags_426622, ctx));
					res_430528 += ((NI) 1);
				} LA90: ;
			}
		}
		closescope_249111(c);
	}
	break;
	case ((NU8) 97):
	{
		Tscope190837* LOC92;
		LOC92 = 0;
		LOC92 = openscope_249091(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[((NI) 0)], flags_426622, ctx));
		{
			NI i_429913;
			NI HEX3Atmp_430541;
			NI LOC94;
			NI res_430544;
			i_429913 = 0;
			HEX3Atmp_430541 = 0;
			LOC94 = 0;
			LOC94 = sonslen_193403(n);
			HEX3Atmp_430541 = (NI)(LOC94 - ((NI) 1));
			res_430544 = ((NI) 1);
			{
				while (1) {
					Tnode190813* a;
					NI L;
					if (!(res_430544 <= HEX3Atmp_430541)) goto LA96;
					i_429913 = res_430544;
					a = (*n).kindU.S6.sons->data[i_429913];
					checkminsonslen_245259(a, ((NI) 1));
					L = sonslen_193403(a);
					{
						NI j_429929;
						NI HEX3Atmp_430534;
						NI res_430537;
						j_429929 = 0;
						HEX3Atmp_430534 = 0;
						HEX3Atmp_430534 = (NI)(L - ((NI) 2));
						res_430537 = ((NI) 0);
						{
							while (1) {
								if (!(res_430537 <= HEX3Atmp_430534)) goto LA99;
								j_429929 = res_430537;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_429929]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[j_429929], flags_426622, ctx));
								res_430537 += ((NI) 1);
							} LA99: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmtscope_426625(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_426622, ctx));
					res_430544 += ((NI) 1);
				} LA96: ;
			}
		}
		closescope_249111(c);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		NI L;
		Tscope190837* LOC101;
		L = sonslen_193403(n);
		LOC101 = 0;
		LOC101 = openscope_249091(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))], flags_426622, ctx));
		{
			NI i_429949;
			NI HEX3Atmp_430549;
			NI res_430552;
			i_429949 = 0;
			HEX3Atmp_430549 = 0;
			HEX3Atmp_430549 = (NI)(L - ((NI) 3));
			res_430552 = ((NI) 0);
			{
				while (1) {
					if (!(res_430552 <= HEX3Atmp_430549)) goto LA104;
					i_429949 = res_430552;
					addtempdecl_428491(c, (*n).kindU.S6.sons->data[i_429949], ((NU8) 21));
					res_430552 += ((NI) 1);
				} LA104: ;
			}
		}
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_426622, ctx));
		closescope_249111(c);
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	case ((NU8) 129):
	{
		Tscope190837* LOC106;
		checksonslen_245249(n, ((NI) 2));
		LOC106 = 0;
		LOC106 = openscope_249091(c);
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA109;
			addtempdecl_428491(c, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 22));
		}
		LA109: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[((NI) 1)], flags_426622, ctx));
		closescope_249111(c);
	}
	break;
	case ((NU8) 106):
	{
		checkminsonslen_245259(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmtscope_426625(c, (*n).kindU.S6.sons->data[((NI) 0)], flags_426622, ctx));
		{
			NI i_429980;
			NI HEX3Atmp_430565;
			NI LOC113;
			NI res_430568;
			i_429980 = 0;
			HEX3Atmp_430565 = 0;
			LOC113 = 0;
			LOC113 = sonslen_193403(n);
			HEX3Atmp_430565 = (NI)(LOC113 - ((NI) 1));
			res_430568 = ((NI) 1);
			{
				while (1) {
					Tnode190813* a;
					NI L;
					if (!(res_430568 <= HEX3Atmp_430565)) goto LA115;
					i_429980 = res_430568;
					a = (*n).kindU.S6.sons->data[i_429980];
					checkminsonslen_245259(a, ((NI) 1));
					L = sonslen_193403(a);
					{
						NI j_429996;
						NI HEX3Atmp_430558;
						NI res_430561;
						j_429996 = 0;
						HEX3Atmp_430558 = 0;
						HEX3Atmp_430558 = (NI)(L - ((NI) 2));
						res_430561 = ((NI) 0);
						{
							while (1) {
								if (!(res_430561 <= HEX3Atmp_430558)) goto LA118;
								j_429996 = res_430561;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_429996]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[j_429996], (flags_426622 | 2), ctx));
								res_430561 += ((NI) 1);
							} LA118: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmtscope_426625(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_426622, ctx));
					res_430568 += ((NI) 1);
				} LA115: ;
			}
		}
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		{
			NI i_430026;
			NI HEX3Atmp_430582;
			NI LOC121;
			NI res_430585;
			i_430026 = 0;
			HEX3Atmp_430582 = 0;
			LOC121 = 0;
			LOC121 = sonslen_193403(n);
			HEX3Atmp_430582 = (NI)(LOC121 - ((NI) 1));
			res_430585 = ((NI) 0);
			{
				while (1) {
					if (!(res_430585 <= HEX3Atmp_430582)) goto LA123;
					i_430026 = res_430585;
					{
						Tnode190813* a;
						NI L;
						a = (*n).kindU.S6.sons->data[i_430026];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA127;
							goto LA124;
						}
						LA127: ;
						{
							NIM_BOOL LOC131;
							LOC131 = 0;
							LOC131 = !(((*a).kind == ((NU8) 35)));
							if (!(LOC131)) goto LA132;
							LOC131 = !(((*a).kind == ((NU8) 36)));
							LA132: ;
							if (!LOC131) goto LA133;
							illformedast_245229(a);
						}
						LA133: ;
						checkminsonslen_245259(a, ((NI) 3));
						L = sonslen_193403(a);
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_426622 | 2), ctx));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_426622, ctx));
						{
							NI j_430086;
							NI HEX3Atmp_430575;
							NI res_430578;
							j_430086 = 0;
							HEX3Atmp_430575 = 0;
							HEX3Atmp_430575 = (NI)(L - ((NI) 3));
							res_430578 = ((NI) 0);
							{
								while (1) {
									Tnode190813* LOC138;
									if (!(res_430578 <= HEX3Atmp_430575)) goto LA137;
									j_430086 = res_430578;
									LOC138 = 0;
									LOC138 = getidentnode_426598((*a).kindU.S6.sons->data[j_430086]);
									addtempdecl_428491(c, LOC138, ((NU8) 8));
									res_430578 += ((NI) 1);
								} LA137: ;
							}
						}
					} LA124: ;
					res_430585 += ((NI) 1);
				} LA123: ;
			}
		}
	}
	break;
	case ((NU8) 75):
	{
		{
			NI i_430100;
			NI HEX3Atmp_430598;
			NI LOC141;
			NI res_430601;
			i_430100 = 0;
			HEX3Atmp_430598 = 0;
			LOC141 = 0;
			LOC141 = sonslen_193403(n);
			HEX3Atmp_430598 = (NI)(LOC141 - ((NI) 1));
			res_430601 = ((NI) 0);
			{
				while (1) {
					Tnode190813* a;
					NI L;
					if (!(res_430601 <= HEX3Atmp_430598)) goto LA143;
					i_430100 = res_430601;
					a = (*n).kindU.S6.sons->data[i_430100];
					{
						if (!!(((*a).kind == ((NU8) 35)))) goto LA146;
						illformedast_245229(a);
					}
					LA146: ;
					checkminsonslen_245259(a, ((NI) 3));
					L = sonslen_193403(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_426622 | 2), ctx));
					{
						NI j_430140;
						NI HEX3Atmp_430591;
						NI res_430594;
						j_430140 = 0;
						HEX3Atmp_430591 = 0;
						HEX3Atmp_430591 = (NI)(L - ((NI) 3));
						res_430594 = ((NI) 0);
						{
							while (1) {
								Tnode190813* LOC151;
								if (!(res_430594 <= HEX3Atmp_430591)) goto LA150;
								j_430140 = res_430594;
								LOC151 = 0;
								LOC151 = getidentnode_426598((*a).kindU.S6.sons->data[j_430140]);
								addtempdecl_428491(c, LOC151, ((NU8) 7));
								res_430594 += ((NI) 1);
							} LA150: ;
						}
					}
					res_430601 += ((NI) 1);
				} LA143: ;
			}
		}
	}
	break;
	case ((NU8) 101):
	{
		{
			NI i_430154;
			NI HEX3Atmp_430607;
			NI LOC154;
			NI res_430610;
			i_430154 = 0;
			HEX3Atmp_430607 = 0;
			LOC154 = 0;
			LOC154 = sonslen_193403(n);
			HEX3Atmp_430607 = (NI)(LOC154 - ((NI) 1));
			res_430610 = ((NI) 0);
			{
				while (1) {
					if (!(res_430610 <= HEX3Atmp_430607)) goto LA156;
					i_430154 = res_430610;
					{
						Tnode190813* a;
						Tnode190813* LOC166;
						a = (*n).kindU.S6.sons->data[i_430154];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA160;
							goto LA157;
						}
						LA160: ;
						{
							if (!!(((*a).kind == ((NU8) 102)))) goto LA164;
							illformedast_245229(a);
						}
						LA164: ;
						checksonslen_245249(a, ((NI) 3));
						LOC166 = 0;
						LOC166 = getidentnode_426598((*a).kindU.S6.sons->data[((NI) 0)]);
						addtempdecl_428491(c, LOC166, ((NU8) 10));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[((NI) 1)], (flags_426622 | 2), ctx));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[((NI) 2)], flags_426622, ctx));
					} LA157: ;
					res_430610 += ((NI) 1);
				} LA156: ;
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		{
			NI i_430205;
			NI HEX3Atmp_430616;
			NI LOC169;
			NI res_430619;
			i_430205 = 0;
			HEX3Atmp_430616 = 0;
			LOC169 = 0;
			LOC169 = sonslen_193403(n);
			HEX3Atmp_430616 = (NI)(LOC169 - ((NI) 1));
			res_430619 = ((NI) 0);
			{
				while (1) {
					if (!(res_430619 <= HEX3Atmp_430616)) goto LA171;
					i_430205 = res_430619;
					{
						Tnode190813* a;
						Tnode190813* LOC181;
						a = (*n).kindU.S6.sons->data[i_430205];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA175;
							goto LA172;
						}
						LA175: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA179;
							illformedast_245229(a);
						}
						LA179: ;
						checksonslen_245249(a, ((NI) 3));
						LOC181 = 0;
						LOC181 = getidentnode_426598((*a).kindU.S6.sons->data[((NI) 0)]);
						addtempdecl_428491(c, LOC181, ((NU8) 7));
					} LA172: ;
					res_430619 += ((NI) 1);
				} LA171: ;
			}
		}
		{
			NI i_430239;
			NI HEX3Atmp_430625;
			NI LOC183;
			NI res_430628;
			i_430239 = 0;
			HEX3Atmp_430625 = 0;
			LOC183 = 0;
			LOC183 = sonslen_193403(n);
			HEX3Atmp_430625 = (NI)(LOC183 - ((NI) 1));
			res_430628 = ((NI) 0);
			{
				while (1) {
					if (!(res_430628 <= HEX3Atmp_430625)) goto LA185;
					i_430239 = res_430628;
					{
						Tnode190813* a;
						a = (*n).kindU.S6.sons->data[i_430239];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA189;
							goto LA186;
						}
						LA189: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA193;
							illformedast_245229(a);
						}
						LA193: ;
						checksonslen_245249(a, ((NI) 3));
						{
							Tscope190837* LOC199;
							if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA197;
							LOC199 = 0;
							LOC199 = openscope_249091(c);
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[((NI) 1)], flags_426622, ctx));
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[((NI) 2)], (flags_426622 | 2), ctx));
							closescope_249111(c);
						}
						goto LA195;
						LA197: ;
						{
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[((NI) 2)], (flags_426622 | 2), ctx));
						}
						LA195: ;
					} LA186: ;
					res_430628 += ((NI) 1);
				} LA185: ;
			}
		}
	}
	break;
	case ((NU8) 150):
	{
		{
			NI LOC204;
			LOC204 = 0;
			LOC204 = sonslen_193403(n);
			if (!(((NI) 0) < LOC204)) goto LA205;
			{
				if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA209;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_426622 | 2), ctx));
			}
			LA209: ;
			{
				NI i_430340;
				NI HEX3Atmp_430634;
				NI LOC212;
				NI res_430637;
				i_430340 = 0;
				HEX3Atmp_430634 = 0;
				LOC212 = 0;
				LOC212 = sonslen_193403(n);
				HEX3Atmp_430634 = (NI)(LOC212 - ((NI) 1));
				res_430637 = ((NI) 1);
				{
					while (1) {
						Tnode190813* a;
						Tnode190813* LOC218;
						Tsym190843* LOC219;
						if (!(res_430637 <= HEX3Atmp_430634)) goto LA214;
						i_430340 = res_430637;
						a = 0;
						switch ((*(*n).kindU.S6.sons->data[i_430340]).kind) {
						case ((NU8) 151):
						{
							a = (*(*n).kindU.S6.sons->data[i_430340]).kindU.S6.sons->data[((NI) 0)];
						}
						break;
						case ((NU8) 2):
						{
							a = (*n).kindU.S6.sons->data[i_430340];
						}
						break;
						default:
						{
							illformedast_245229(n);
						}
						break;
						}
						LOC218 = 0;
						LOC218 = getidentnode_426598((*a).kindU.S6.sons->data[i_430340]);
						LOC219 = 0;
						LOC219 = newsyms_409904(((NU8) 0), LOC218, c);
						adddecl_249607(c, LOC219);
						res_430637 += ((NI) 1);
					} LA214: ;
				}
			}
		}
		LA205: ;
	}
	break;
	case ((NU8) 133):
	case ((NU8) 134):
	case ((NU8) 135):
	{
	}
	break;
	case ((NU8) 76):
	{
		checkminsonslen_245259(n, ((NI) 1));
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA224;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags_426622 | 2), ctx));
		}
		LA224: ;
		{
			NI i_430384;
			NI HEX3Atmp_430650;
			NI LOC227;
			NI res_430653;
			i_430384 = 0;
			HEX3Atmp_430650 = 0;
			LOC227 = 0;
			LOC227 = sonslen_193403(n);
			HEX3Atmp_430650 = (NI)(LOC227 - ((NI) 1));
			res_430653 = ((NI) 1);
			{
				while (1) {
					Tnode190813* a;
					NI L;
					if (!(res_430653 <= HEX3Atmp_430650)) goto LA229;
					i_430384 = res_430653;
					a = (*n).kindU.S6.sons->data[i_430384];
					{
						if (!!(((*a).kind == ((NU8) 35)))) goto LA232;
						illformedast_245229(a);
					}
					LA232: ;
					checkminsonslen_245259(a, ((NI) 3));
					L = sonslen_193403(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))], (flags_426622 | 2), ctx));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semgenericstmt_426618(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))], flags_426622, ctx));
					{
						NI j_430426;
						NI HEX3Atmp_430643;
						NI res_430646;
						j_430426 = 0;
						HEX3Atmp_430643 = 0;
						HEX3Atmp_430643 = (NI)(L - ((NI) 3));
						res_430646 = ((NI) 0);
						{
							while (1) {
								Tnode190813* LOC237;
								if (!(res_430646 <= HEX3Atmp_430643)) goto LA236;
								j_430426 = res_430646;
								LOC237 = 0;
								LOC237 = getidentnode_426598((*a).kindU.S6.sons->data[j_430426]);
								addtempdecl_428491(c, LOC237, ((NU8) 3));
								res_430646 += ((NI) 1);
							} LA236: ;
						}
					}
					res_430653 += ((NI) 1);
				} LA229: ;
			}
		}
	}
	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):
	{
		Tscope190837* LOC244;
		Tnode190813* body;
		checksonslen_245249(n, ((NI) 7));
		{
			Tnode190813* LOC243;
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA241;
			LOC243 = 0;
			LOC243 = getidentnode_426598((*n).kindU.S6.sons->data[((NI) 0)]);
			addtempdecl_428491(c, LOC243, ((NU8) 12));
		}
		LA241: ;
		LOC244 = 0;
		LOC244 = openscope_249091(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[((NI) 2)], flags_426622, ctx));
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA247;
			{
				Tident167021* LOC253;
				Tsym190843* LOC254;
				if (!!(((*(*(*n).kindU.S6.sons->data[((NI) 3)]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA251;
				LOC253 = 0;
				LOC253 = getident_167463(((NimStringDesc*) &TMP3011));
				LOC254 = 0;
				LOC254 = newsym_191656(((NU8) 0), LOC253, NIM_NIL, (*n).info);
				addprelimdecl_249619(c, LOC254);
			}
			LA251: ;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 3)]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[((NI) 3)], flags_426622, ctx));
		}
		LA247: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 4)]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[((NI) 4)], flags_426622, ctx));
		body = 0;
		{
			if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3))) goto LA257;
			body = getbody_235648((*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym);
		}
		goto LA255;
		LA257: ;
		{
			body = (*n).kindU.S6.sons->data[((NI) 6)];
		}
		LA255: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semgenericstmtscope_426625(c, body, flags_426622, ctx));
		closescope_249111(c);
	}
	break;
	case ((NU8) 90):
	case ((NU8) 43):
	{
	}
	break;
	case ((NU8) 34):
	case ((NU8) 33):
	{
		checkminsonslen_245259(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[((NI) 1)], flags_426622, ctx));
	}
	break;
	default:
	{
		{
			NI i_430496;
			NI HEX3Atmp_430659;
			NI LOC264;
			NI res_430662;
			i_430496 = 0;
			HEX3Atmp_430659 = 0;
			LOC264 = 0;
			LOC264 = sonslen_193403(n);
			HEX3Atmp_430659 = (NI)(LOC264 - ((NI) 1));
			res_430662 = ((NI) 0);
			{
				while (1) {
					if (!(res_430662 <= HEX3Atmp_430659)) goto LA266;
					i_430496 = res_430662;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_430496]), semgenericstmt_426618(c, (*n).kindU.S6.sons->data[i_430496], flags_426622, ctx));
					res_430662 += ((NI) 1);
				} LA266: ;
			}
		}
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode190813*, semgenericstmt_415688)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Genericctx426608 ctx;
	result = 0;
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_187927((&ctx.tomixin));
	result = semgenericstmt_426618(c, n, 0, (&ctx));
	return result;
}

static N_INLINE(Ttype190849*, skipgenericinvocation_418764)(Ttype190849* t) {
	Ttype190849* 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))) goto LA6;
			result = lastson_193442(result);
		} LA6: ;
	}
	return result;
}

N_NIMCALL(void, addinheritedfieldsaux_418668)(Tcontext244023* c, Intset187056* check, NI* pos, Tnode190813* n) {
	switch ((*n).kind) {
	case ((NU8) 139):
	{
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA4;
			internalerror_165199((*n).info, ((NimStringDesc*) &TMP3014));
		}
		LA4: ;
		addinheritedfieldsaux_418668(c, check, pos, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_418699;
			NI HEX3Atmp_418728;
			NI LOC7;
			NI res_418731;
			i_418699 = 0;
			HEX3Atmp_418728 = 0;
			LOC7 = 0;
			LOC7 = sonslen_193403(n);
			HEX3Atmp_418728 = (NI)(LOC7 - ((NI) 1));
			res_418731 = ((NI) 1);
			{
				while (1) {
					if (!(res_418731 <= HEX3Atmp_418728)) goto LA9;
					i_418699 = res_418731;
					switch ((*(*n).kindU.S6.sons->data[i_418699]).kind) {
					case ((NU8) 85):
					case ((NU8) 88):
					{
						Tnode190813* LOC11;
						LOC11 = 0;
						LOC11 = lastson_193431((*n).kindU.S6.sons->data[i_418699]);
						addinheritedfieldsaux_418668(c, check, pos, LOC11);
					}
					break;
					default:
					{
						internalerror_165199((*n).info, ((NimStringDesc*) &TMP3015));
					}
					break;
					}
					res_418731 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	break;
	case ((NU8) 138):
	{
		{
			NI i_418714;
			NI HEX3Atmp_418736;
			NI LOC15;
			NI res_418739;
			i_418714 = 0;
			HEX3Atmp_418736 = 0;
			LOC15 = 0;
			LOC15 = sonslen_193403(n);
			HEX3Atmp_418736 = (NI)(LOC15 - ((NI) 1));
			res_418739 = ((NI) 0);
			{
				while (1) {
					if (!(res_418739 <= HEX3Atmp_418736)) goto LA17;
					i_418714 = res_418739;
					addinheritedfieldsaux_418668(c, check, pos, (*n).kindU.S6.sons->data[i_418714]);
					res_418739 += ((NI) 1);
				} LA17: ;
			}
		}
	}
	break;
	case ((NU8) 3):
	{
		incl_187856(check, (*(*(*n).kindU.S4.sym).name).Sup.id);
		(*pos) += ((NI) 1);
	}
	break;
	default:
	{
		internalerror_165199((*n).info, ((NimStringDesc*) &TMP3016));
	}
	break;
	}
}

N_NIMCALL(void, addinheritedfields_418798)(Tcontext244023* c, Intset187056* check, NI* pos, Ttype190849* obj) {
	{
		NIM_BOOL LOC3;
		NI LOC4;
		Ttype190849* LOC8;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_193351(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_418764((*obj).sons->data[((NI) 0)]);
		addinheritedfields_418798(c, check, pos, LOC8);
	}
	LA6: ;
	addinheritedfieldsaux_418668(c, check, pos, (*obj).n);
}

N_NIMCALL(void, instantiategenericparamlist_411213)(Tcontext244023* c, Tnode190813* n, Tidtable190861 pt, Tinstantiation190833* entry) {
	NI LOC5;
	{
		if (!!(((*n).kind == ((NU8) 75)))) goto LA3;
		internalerror_165199((*n).info, ((NimStringDesc*) &TMP3021));
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = len_191097(n);
	unsureAsgnRef((void**) (&(*entry).concretetypes), (Ttypeseq190845*) newSeq((&NTI190845), ((NI) (LOC5))));
	{
		NI i_411241;
		Tnode190813* a_411242;
		i_411241 = 0;
		a_411242 = 0;
		{
			NI i_411369;
			NI HEX3Atmp_411371;
			NI LOC8;
			NI res_411373;
			i_411369 = 0;
			HEX3Atmp_411371 = 0;
			LOC8 = 0;
			LOC8 = len_191097(n);
			HEX3Atmp_411371 = (LOC8 - 1);
			res_411373 = ((NI) 0);
			{
				while (1) {
					if (!(res_411373 <= HEX3Atmp_411371)) goto LA10;
					i_411369 = res_411373;
					i_411241 = i_411369;
					a_411242 = (*n).kindU.S6.sons->data[i_411369];
					{
						Tsym190843* q;
						NU8 symkind;
						Tsym190843* s;
						Tsym190843* LOC25;
						Ttype190849* t;
						Tidobj167015* LOC26;
						TNimObject* LOC27;
						{
							if (!!(((*a_411242).kind == ((NU8) 3)))) goto LA14;
							internalerror_165199((*a_411242).info, ((NimStringDesc*) &TMP3022));
						}
						LA14: ;
						q = (*a_411242).kindU.S4.sym;
						{
							if (!!(((*(*q).typ).kind == ((NU8) 8) || (*(*q).typ).kind == ((NU8) 12) || (*(*q).typ).kind == ((NU8) 49) || (*(*q).typ).kind >= ((NU8) 51) && (*(*q).typ).kind <= ((NU8) 59)))) goto LA18;
							goto LA11;
						}
						LA18: ;
						{
							if (!((*(*q).typ).kind == ((NU8) 59))) goto LA22;
							symkind = ((NU8) 10);
						}
						goto LA20;
						LA22: ;
						{
							symkind = ((NU8) 7);
						}
						LA20: ;
						LOC25 = 0;
						LOC25 = getcurrowner_244256();
						s = newsym_191656(symkind, (*q).name, LOC25, (*q).info);
						(*s).flags = ((*s).flags | 5);
						LOC26 = 0;
						LOC26 = &(*q).typ->Sup;
						LOC27 = 0;
						LOC27 = idtableget_198182(pt, LOC26);
						t = ((Ttype190849*) (LOC27));
						{
							if (!(t == NIM_NIL)) goto LA30;
							{
								if (!(((*(*q).typ).flags &(1<<((((NU8) 10))&31)))!=0)) goto LA34;
								t = (*q).typ;
							}
							goto LA32;
							LA34: ;
							{
								localerror_165155((*a_411242).info, ((NU16) 124), (*(*s).name).s);
								t = errortype_245150(c);
							}
							LA32: ;
						}
						goto LA28;
						LA30: ;
						{
							if (!((*t).kind == ((NU8) 12))) goto LA38;
							localerror_165155((*a_411242).info, ((NU16) 124), (*(*q).name).s);
							t = errortype_245150(c);
						}
						goto LA28;
						LA38: ;
						{
							if (!((*t).kind == ((NU8) 9))) goto LA41;
							t = generatetypeinstance_267631(c, pt, (*a_411242).info, t);
						}
						goto LA28;
						LA41: ;
						LA28: ;
						asgnRefNoCycle((void**) (&(*s).typ), t);
						{
							if (!((*t).kind == ((NU8) 59))) goto LA45;
							asgnRefNoCycle((void**) (&(*s).ast), (*t).n);
						}
						LA45: ;
						adddecl_249607(c, s);
						asgnRefNoCycle((void**) (&(*entry).concretetypes->data[i_411241]), t);
					} LA11: ;
					res_411373 += ((NI) 1);
				} LA10: ;
			}
		}
	}
}

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

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

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

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

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

static N_INLINE(void, pushproccon_244359)(Tcontext244023* c, Tsym190843* owner) {
	Tproccon244011* x;
{	{
		if (!(owner == NIM_NIL)) goto LA3;
		internalerror_165218(((NimStringDesc*) &TMP3023));
		goto BeforeRet;
	}
	LA3: ;
	x = 0;
	x = (Tproccon244011*) newObj((&NTI244009), sizeof(Tproccon244011));
	asgnRefNoCycle((void**) (&(*x).owner), owner);
	asgnRef((void**) (&(*x).next), (*c).p);
	asgnRef((void**) (&(*c).p), x);
	}BeforeRet: ;
}

N_NIMCALL(Ttype190849*, findenforcedstatictype_419139)(Ttype190849* t_419141) {
	Ttype190849* result;
{	result = 0;
	{
		if (!((*t_419141).kind == ((NU8) 59))) goto LA3;
		result = t_419141;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*t_419141).kind == ((NU8) 55))) goto LA7;
		{
			Ttype190849* s_419170;
			Ttypeseq190845* HEX3Atmp_419185;
			NI i_419188;
			NI L_419190;
			s_419170 = 0;
			HEX3Atmp_419185 = 0;
			HEX3Atmp_419185 = (*t_419141).sons;
			i_419188 = ((NI) 0);
			L_419190 = (HEX3Atmp_419185 ? HEX3Atmp_419185->Sup.len : 0);
			{
				while (1) {
					Ttype190849* t;
					if (!(i_419188 < L_419190)) goto LA11;
					s_419170 = HEX3Atmp_419185->data[i_419188];
					t = findenforcedstatictype_419139(s_419170);
					{
						if (!!((t == NIM_NIL))) goto LA14;
						result = t;
						goto BeforeRet;
					}
					LA14: ;
					i_419188 += ((NI) 1);
				} LA11: ;
			}
		}
	}
	LA7: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, addparamorresult_411885)(Tcontext244023* c, Tsym190843* param, NU8 kind) {
	{
		Ttype190849* statictype;
		if (!(kind == ((NU8) 17))) goto LA3;
		statictype = findenforcedstatictype_419139((*param).typ);
		{
			Tsym190843* a;
			if (!!((statictype == NIM_NIL))) goto LA7;
			a = copysym_193607(param, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*a).typ), base_220039(statictype));
			adddecl_249607(c, a);
		}
		goto LA5;
		LA7: ;
		{
			if (!((*(*param).typ).kind == ((NU8) 8))) goto LA10;
			adddecl_249607(c, param);
		}
		goto LA5;
		LA10: ;
		{
			Tsym190843* nn;
			Tsym190843* a;
			{
				Tsym190843* LOC15;
				LOC15 = 0;
				LOC15 = getcompilerproc_238036(((NimStringDesc*) &TMP3026));
				if (!!((LOC15 == NIM_NIL))) goto LA16;
				nn = getsyssym_238054(((NimStringDesc*) &TMP3027));
			}
			goto LA13;
			LA16: ;
			{
				nn = getsyssym_238054(((NimStringDesc*) &TMP3028));
			}
			LA13: ;
			a = copysym_193607(param, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*a).typ), (*nn).typ);
			adddecl_249607(c, a);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!!((((*param).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA22;
			adddecl_249607(c, param);
		}
		LA22: ;
	}
	LA1: ;
}

N_NIMCALL(void, addresult_437997)(Tcontext244023* c, Ttype190849* t, Tlineinfo163338 info, NU8 owner) {
	{
		Tsym190843* s;
		Tident167021* LOC5;
		Tsym190843* LOC6;
		if (!!((t == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = getident_167463(((NimStringDesc*) &TMP3025));
		LOC6 = 0;
		LOC6 = getcurrowner_244256();
		s = newsym_191656(((NU8) 11), LOC5, LOC6, info);
		asgnRefNoCycle((void**) (&(*s).typ), t);
		(*s).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
		addparamorresult_411885(c, s, owner);
		asgnRefNoCycle((void**) (&(*(*c).p).resultsym), s);
	}
	LA3: ;
}

N_NIMCALL(void, addresultnode_438031)(Tcontext244023* c, Tnode190813* n) {
	{
		Tnode190813* LOC5;
		if (!!(((*(*c).p).resultsym == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = newsymnode_192325((*(*c).p).resultsym);
		addson_192819(n, LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, maybeaddresult_409301)(Tcontext244023* c, Tsym190843* s, Tnode190813* 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_437997(c, (*(*s).typ).sons->data[((NI) 0)], (*n).info, (*s).kind);
		addresultnode_438031(c, n);
	}
	LA5: ;
}

N_NIMCALL(void, instantiateproctype_412176)(Tcontext244023* c, Tidtable190861 pt, Tsym190843* prc, Tlineinfo163338 info) {
	Trepltypevars265544 cl;
	Ttype190849* result;
	Tnode190813* originalparams;
	Tnode190813* LOC20;
	adddecl_249607(c, prc);
	pushinfocontext_164192(info);
	memset((void*)(&cl), 0, sizeof(cl));
	chckNil((void*)(&cl));
	memset((void*)(&cl), 0, sizeof(cl));
	inittypevars_267602(c, pt, info, (&cl));
	result = instcopytype_266470((&cl), (*prc).typ);
	originalparams = (*result).n;
	asgnRefNoCycle((void**) (&(*result).n), shallowcopy_194817(originalparams));
	{
		NI i_412206;
		NI HEX3Atmp_412431;
		NI LOC2;
		NI res_412434;
		i_412206 = 0;
		HEX3Atmp_412431 = 0;
		LOC2 = 0;
		LOC2 = len_193377(result);
		HEX3Atmp_412431 = (LOC2 - 1);
		res_412434 = ((NI) 1);
		{
			while (1) {
				Tsym190843* oldparam;
				Tnode190813* LOC15;
				Tsym190843* param;
				if (!(res_412434 <= HEX3Atmp_412431)) goto LA4;
				i_412206 = res_412434;
				{
					if (!(((NI) 1) < i_412206)) goto LA7;
					resetidtable_194077((&cl.symmap));
					resetidtable_194077((&cl.localcache));
				}
				LA7: ;
				asgnRefNoCycle((void**) (&(*result).sons->data[i_412206]), replacetypevarst_265592((&cl), (*result).sons->data[i_412206]));
				propagatetoowner_194274(result, (*result).sons->data[i_412206]);
				{
					Tnode190813* LOC11;
					NimStringDesc* LOC14;
					LOC11 = 0;
					LOC11 = HEX5BHEX5D_191244(originalparams, i_412206);
					if (!!(((*LOC11).kind == ((NU8) 3)))) goto LA12;
					LOC14 = 0;
					LOC14 = HEX24_165306(TMP3024);
					internalerror_165218(LOC14);
				}
				LA12: ;
				LOC15 = 0;
				LOC15 = HEX5BHEX5D_191244(originalparams, i_412206);
				oldparam = (*LOC15).kindU.S4.sym;
				param = copysym_193607(oldparam, NIM_FALSE);
				asgnRefNoCycle((void**) (&(*param).owner), prc);
				asgnRefNoCycle((void**) (&(*param).typ), (*result).sons->data[i_412206]);
				{
					if (!!(((*oldparam).ast == NIM_NIL))) goto LA18;
					asgnRefNoCycle((void**) (&(*param).ast), fitnode_409245(c, (*param).typ, (*oldparam).ast));
				}
				LA18: ;
				asgnRefNoCycle((void**) (&(*(*result).n).kindU.S6.sons->data[i_412206]), newsymnode_192325(param));
				adddecl_249607(c, param);
				res_412434 += ((NI) 1);
			} LA4: ;
		}
	}
	resetidtable_194077((&cl.symmap));
	resetidtable_194077((&cl.localcache));
	asgnRefNoCycle((void**) (&(*result).sons->data[((NI) 0)]), replacetypevarst_265592((&cl), (*result).sons->data[((NI) 0)]));
	LOC20 = 0;
	LOC20 = HEX5BHEX5D_191244(originalparams, ((NI) 0));
	asgnRefNoCycle((void**) (&(*(*result).n).kindU.S6.sons->data[((NI) 0)]), copytree_195028(LOC20));
	erasevoidparams_266982(result);
	skipintliteralparams_267136(result);
	asgnRefNoCycle((void**) (&(*prc).typ), result);
	maybeaddresult_409301(c, prc, (*prc).ast);
	popinfocontext_164211();
}

N_NIMCALL(NIM_BOOL, sameinstantiation_411394)(Tinstantiation190833 a, Tinstantiation190833 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_411425;
			NI HEX3Atmp_411428;
			NI res_411431;
			i_411425 = 0;
			HEX3Atmp_411428 = 0;
			HEX3Atmp_411428 = (a.concretetypes ? (a.concretetypes->Sup.len-1) : -1);
			res_411431 = ((NI) 0);
			{
				while (1) {
					if (!(res_411431 <= HEX3Atmp_411428)) goto LA7;
					i_411425 = res_411431;
					{
						NIM_BOOL LOC10;
						LOC10 = 0;
						LOC10 = comparetypes_227047(a.concretetypes->data[i_411425], b.concretetypes->data[i_411425], ((NU8) 0), 4);
						if (!!(LOC10)) goto LA11;
						goto BeforeRet;
					}
					LA11: ;
					res_411431 += ((NI) 1);
				} LA7: ;
			}
		}
		result = NIM_TRUE;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym190843*, genericcacheget_411447)(Tsym190843* genericsym, Tinstantiation190833 entry) {
	Tsym190843* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = HEX3DHEX3D_193870((*genericsym).kindU.S2.procinstcache, NIM_NIL);
		if (!!(LOC3)) goto LA4;
		{
			Tinstantiation190833* inst_411611;
			TY190944* HEX3Atmp_411613;
			NI i_411616;
			NI L_411618;
			inst_411611 = 0;
			HEX3Atmp_411613 = 0;
			HEX3Atmp_411613 = (*genericsym).kindU.S2.procinstcache;
			i_411616 = ((NI) 0);
			L_411618 = (HEX3Atmp_411613 ? HEX3Atmp_411613->Sup.len : 0);
			{
				while (1) {
					if (!(i_411616 < L_411618)) goto LA8;
					inst_411611 = HEX3Atmp_411613->data[i_411616];
					{
						NIM_BOOL LOC11;
						LOC11 = 0;
						LOC11 = sameinstantiation_411394(entry, (*inst_411611));
						if (!LOC11) goto LA12;
						result = (*inst_411611).sym;
						goto BeforeRet;
					}
					LA12: ;
					i_411616 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	LA4: ;
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(void, freshgensyms_411801)(Tnode190813* n, Tsym190843* owner, Tidtable190861* symmap) {
	{
		NIM_BOOL LOC3;
		Tsym190843* s;
		Tsym190843* x;
		Tidobj167015* 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_198182((*symmap), LOC7);
		x = ((Tsym190843*) (LOC8));
		{
			Tidobj167015* LOC13;
			TNimObject* LOC14;
			if (!(x == NIM_NIL)) goto LA11;
			x = copysym_193607(s, NIM_FALSE);
			asgnRefNoCycle((void**) (&(*x).owner), owner);
			LOC13 = 0;
			LOC13 = &s->Sup;
			LOC14 = 0;
			LOC14 = &x->Sup.Sup;
			idtableput_198196(symmap, LOC13, LOC14);
		}
		LA11: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S4.sym), x);
	}
	goto LA1;
	LA5: ;
	{
		{
			NI i_411863;
			NI HEX3Atmp_411866;
			NI LOC17;
			NI res_411869;
			i_411863 = 0;
			HEX3Atmp_411866 = 0;
			LOC17 = 0;
			LOC17 = safelen_191125(n);
			HEX3Atmp_411866 = (LOC17 - 1);
			res_411869 = ((NI) 0);
			{
				while (1) {
					if (!(res_411869 <= HEX3Atmp_411866)) goto LA19;
					i_411863 = res_411869;
					freshgensyms_411801((*n).kindU.S6.sons->data[i_411863], owner, symmap);
					res_411869 += ((NI) 1);
				} LA19: ;
			}
		}
	}
	LA1: ;
}

static N_INLINE(NIM_BOOL, isemptytype_195933)(Ttype190849* 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_445443)(Tnode190813* 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(Tnode190813*, readtypeparameter_445877)(Tcontext244023* c, Ttype190849* typ, Tident167021* paramname, Tlineinfo163338 info) {
	Tnode190813* result;
	Ttype190849* ty;
	Ttype190849* tbody;
{	result = 0;
	{
		if (!((*typ).kind == ((NU8) 11))) goto LA3;
		ty = skipgenericalias_226119(typ);
	}
	goto LA1;
	LA3: ;
	{
		{
			NimStringDesc* LOC10;
			if (!!(((*typ).kind == ((NU8) 54)))) goto LA8;
			LOC10 = 0;
			LOC10 = HEX24_165306(TMP3100);
			internalerror_165218(LOC10);
		}
		LA8: ;
		ty = skipgenericalias_226119((*typ).sons->data[((NI) 1)]);
	}
	LA1: ;
	tbody = (*ty).sons->data[((NI) 0)];
	{
		NI s_445923;
		NI HEX3Atmp_445939;
		NI LOC12;
		NI res_445942;
		s_445923 = 0;
		HEX3Atmp_445939 = 0;
		LOC12 = 0;
		LOC12 = len_193377(tbody);
		HEX3Atmp_445939 = (NI)(LOC12 - ((NI) 2));
		res_445942 = ((NI) 0);
		{
			while (1) {
				Ttype190849* tparam;
				if (!(res_445942 <= HEX3Atmp_445939)) goto LA14;
				s_445923 = res_445942;
				tparam = (*tbody).sons->data[s_445923];
				{
					Ttype190849* rawtyp;
					if (!((*(*(*tparam).sym).name).Sup.id == (*paramname).Sup.id)) goto LA17;
					rawtyp = (*ty).sons->data[(NI)(s_445923 + ((NI) 1))];
					{
						if (!((*rawtyp).kind == ((NU8) 59))) goto LA21;
						result = (*rawtyp).n;
						goto BeforeRet;
					}
					goto LA19;
					LA21: ;
					{
						Ttype190849* foundtyp;
						Tsym190843* LOC24;
						Tsym190843* LOC25;
						foundtyp = maketypedesc_244682(c, rawtyp);
						LOC24 = 0;
						LOC24 = copysym_193607((*tparam).sym, NIM_FALSE);
						LOC25 = 0;
						LOC25 = linkto_191884(LOC24, foundtyp);
						result = newsymnode_192338(LOC25, info);
						goto BeforeRet;
					}
					LA19: ;
				}
				LA17: ;
				res_445942 += ((NI) 1);
			} LA14: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype190849*, createsettype_445460)(Tcontext244023* c, Ttype190849* basetype) {
	Ttype190849* result;
	result = 0;
	result = newtypes_244219(((NU8) 19), c);
	rawaddson_194478(result, basetype);
	return result;
}

N_NIMCALL(Tsym190843*, lookupinrecordandbuildcheck_445604)(Tcontext244023* c, Tnode190813* n, Tnode190813* r, Tident167021* field, Tnode190813** check) {
	Tsym190843* result;
{	result = 0;
	result = NIM_NIL;
	switch ((*r).kind) {
	case ((NU8) 138):
	{
		{
			NI i_445625;
			NI HEX3Atmp_445763;
			NI LOC3;
			NI res_445766;
			i_445625 = 0;
			HEX3Atmp_445763 = 0;
			LOC3 = 0;
			LOC3 = sonslen_193403(r);
			HEX3Atmp_445763 = (NI)(LOC3 - ((NI) 1));
			res_445766 = ((NI) 0);
			{
				while (1) {
					if (!(res_445766 <= HEX3Atmp_445763)) goto LA5;
					i_445625 = res_445766;
					result = lookupinrecordandbuildcheck_445604(c, n, (*r).kindU.S6.sons->data[i_445625], field, check);
					{
						if (!!((result == NIM_NIL))) goto LA8;
						goto BeforeRet;
					}
					LA8: ;
					res_445766 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 139):
	{
		Ttype190849* settype;
		Tnode190813* s;
		checkminsonslen_245259(r, ((NI) 2));
		{
			if (!!(((*(*r).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA13;
			illformedast_245229(r);
		}
		LA13: ;
		result = lookupinrecordandbuildcheck_445604(c, n, (*r).kindU.S6.sons->data[((NI) 0)], field, check);
		{
			if (!!((result == NIM_NIL))) goto LA17;
			goto BeforeRet;
		}
		LA17: ;
		settype = createsettype_445460(c, (*(*r).kindU.S6.sons->data[((NI) 0)]).typ);
		s = newnodeit_192807(((NU8) 39), (*r).info, settype);
		{
			NI i_445677;
			NI HEX3Atmp_445787;
			NI LOC20;
			NI res_445790;
			i_445677 = 0;
			HEX3Atmp_445787 = 0;
			LOC20 = 0;
			LOC20 = sonslen_193403(r);
			HEX3Atmp_445787 = (NI)(LOC20 - ((NI) 1));
			res_445790 = ((NI) 1);
			{
				while (1) {
					Tnode190813* it;
					if (!(res_445790 <= HEX3Atmp_445787)) goto LA22;
					i_445677 = res_445790;
					it = (*r).kindU.S6.sons->data[i_445677];
					switch ((*it).kind) {
					case ((NU8) 85):
					{
						Tnode190813* LOC24;
						LOC24 = 0;
						LOC24 = lastson_193431(it);
						result = lookupinrecordandbuildcheck_445604(c, n, LOC24, field, check);
						{
							if (!(result == NIM_NIL)) goto LA27;
							{
								NI j_445702;
								NI HEX3Atmp_445772;
								NI LOC30;
								NI res_445775;
								j_445702 = 0;
								HEX3Atmp_445772 = 0;
								LOC30 = 0;
								LOC30 = sonslen_193403(it);
								HEX3Atmp_445772 = (NI)(LOC30 - ((NI) 2));
								res_445775 = ((NI) 0);
								{
									while (1) {
										Tnode190813* LOC33;
										if (!(res_445775 <= HEX3Atmp_445772)) goto LA32;
										j_445702 = res_445775;
										LOC33 = 0;
										LOC33 = copytree_195028((*it).kindU.S6.sons->data[j_445702]);
										addson_192819(s, LOC33);
										res_445775 += ((NI) 1);
									} LA32: ;
								}
							}
						}
						goto LA25;
						LA27: ;
						{
							Tnode190813* inexpr;
							Ttype190849* LOC44;
							Tnode190813* LOC45;
							Tnode190813* LOC46;
							{
								if (!((*check) == NIM_NIL)) goto LA37;
								unsureAsgnRef((void**) (&(*check)), newnodei_192351(((NU8) 46), (*n).info));
								addson_192819((*check), emptynode_191807);
							}
							LA37: ;
							s = newnodeit_192807(((NU8) 39), (*n).info, settype);
							{
								NI j_445728;
								NI HEX3Atmp_445780;
								NI LOC40;
								NI res_445783;
								j_445728 = 0;
								HEX3Atmp_445780 = 0;
								LOC40 = 0;
								LOC40 = sonslen_193403(it);
								HEX3Atmp_445780 = (NI)(LOC40 - ((NI) 2));
								res_445783 = ((NI) 0);
								{
									while (1) {
										Tnode190813* LOC43;
										if (!(res_445783 <= HEX3Atmp_445780)) goto LA42;
										j_445728 = res_445783;
										LOC43 = 0;
										LOC43 = copytree_195028((*it).kindU.S6.sons->data[j_445728]);
										addson_192819(s, LOC43);
										res_445783 += ((NI) 1);
									} LA42: ;
								}
							}
							LOC44 = 0;
							LOC44 = getsystype_238030(((NU8) 1));
							inexpr = newnodeit_192807(((NU8) 27), (*n).info, LOC44);
							LOC45 = 0;
							LOC45 = newsymnode_192338(opcontains_195999, (*n).info);
							addson_192819(inexpr, LOC45);
							addson_192819(inexpr, s);
							LOC46 = 0;
							LOC46 = copytree_195028((*r).kindU.S6.sons->data[((NI) 0)]);
							addson_192819(inexpr, LOC46);
							addson_192819((*check), inexpr);
							goto BeforeRet;
						}
						LA25: ;
					}
					break;
					case ((NU8) 88):
					{
						Tnode190813* LOC48;
						LOC48 = 0;
						LOC48 = lastson_193431(it);
						result = lookupinrecordandbuildcheck_445604(c, n, LOC48, field, check);
						{
							Tnode190813* inexpr;
							Ttype190849* LOC57;
							Tnode190813* LOC58;
							Tnode190813* LOC59;
							Tnode190813* notexpr;
							Ttype190849* LOC60;
							Tnode190813* LOC61;
							if (!!((result == NIM_NIL))) goto LA51;
							{
								if (!((*check) == NIM_NIL)) goto LA55;
								unsureAsgnRef((void**) (&(*check)), newnodei_192351(((NU8) 46), (*n).info));
								addson_192819((*check), emptynode_191807);
							}
							LA55: ;
							LOC57 = 0;
							LOC57 = getsystype_238030(((NU8) 1));
							inexpr = newnodeit_192807(((NU8) 27), (*n).info, LOC57);
							LOC58 = 0;
							LOC58 = newsymnode_192338(opcontains_195999, (*n).info);
							addson_192819(inexpr, LOC58);
							addson_192819(inexpr, s);
							LOC59 = 0;
							LOC59 = copytree_195028((*r).kindU.S6.sons->data[((NI) 0)]);
							addson_192819(inexpr, LOC59);
							LOC60 = 0;
							LOC60 = getsystype_238030(((NU8) 1));
							notexpr = newnodeit_192807(((NU8) 27), (*n).info, LOC60);
							LOC61 = 0;
							LOC61 = newsymnode_192338(opnot_195998, (*n).info);
							addson_192819(notexpr, LOC61);
							addson_192819(notexpr, inexpr);
							addson_192819((*check), notexpr);
							goto BeforeRet;
						}
						LA51: ;
					}
					break;
					default:
					{
						illformedast_245229(it);
					}
					break;
					}
					res_445790 += ((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_245229(n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, fieldvisible_351059)(Tcontext244023* c, Tsym190843* f) {
	NIM_BOOL result;
	NI fmoduleid;
	Tsym190843* LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getmodule_198243(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;
	{
		Tsym190843* module_351211;
		Tsymseq190815* HEX3Atmp_351214;
		NI i_351217;
		NI L_351219;
		module_351211 = 0;
		HEX3Atmp_351214 = 0;
		HEX3Atmp_351214 = (*c).friendmodules;
		i_351217 = ((NI) 0);
		L_351219 = (HEX3Atmp_351214 ? HEX3Atmp_351214->Sup.len : 0);
		{
			while (1) {
				if (!(i_351217 < L_351219)) goto LA6;
				module_351211 = HEX3Atmp_351214->data[i_351217];
				{
					if (!(fmoduleid == (*module_351211).Sup.id)) goto LA9;
					result = NIM_TRUE;
					goto LA4;
				}
				LA9: ;
				i_351217 += ((NI) 1);
			} LA6: ;
		}
	} LA4: ;
	return result;
}

N_NIMCALL(Tnode190813*, makederef_445833)(Tnode190813* n) {
	Tnode190813* result;
	Ttype190849* t;
	result = 0;
	t = skiptypes_194167((*n).typ, 2048);
	result = n;
	{
		if (!((*t).kind == ((NU8) 23))) goto LA3;
		result = newnodeit_192807(((NU8) 65), (*n).info, (*t).sons->data[((NI) 0)]);
		addson_192819(result, n);
		t = skiptypes_194167((*t).sons->data[((NI) 0)], 2048);
	}
	LA3: ;
	{
		while (1) {
			Tnode190813* a;
			Ttype190849* basetyp;
			if (!((*t).kind == ((NU8) 21) || (*t).kind == ((NU8) 22))) goto LA6;
			a = result;
			basetyp = lastson_193442(t);
			result = newnodeit_192807(((NU8) 65), (*n).info, basetyp);
			addson_192819(result, a);
			t = skiptypes_194167(basetyp, 2048);
		} LA6: ;
	}
	return result;
}

N_NIMCALL(Tnode190813*, builtinfieldaccess_445958)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	Tsym190843* s;
	Tident167021* i;
	Ttype190849* ty;
	Tsym190843* f;
	Tnode190813* check;
{	result = 0;
	checksonslen_245249(n, ((NI) 2));
	s = qualifiedlookup_249864(c, n, 3);
	{
		if (!!((s == NIM_NIL))) goto LA3;
		{
			if (!((520256 &(1<<(((*s).kind)&31)))!=0)) goto LA7;
			result = symchoice_422316(c, n, s, ((NU8) 0));
			{
				if (!((*result).kind == ((NU8) 3))) goto LA11;
				result = semsym_441038(c, n, s, flags);
			}
			LA11: ;
		}
		goto LA5;
		LA7: ;
		{
			markused_344251((*(*n).kindU.S6.sons->data[((NI) 1)]).info, s);
			result = semsym_441038(c, n, s, flags);
		}
		LA5: ;
		goto BeforeRet;
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 0)], (flags | 32)));
	i = considerquotedident_249010((*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;
		Ttype190849* LOC20;
		LOC16 = 0;
		LOC16 = istypeexpr_445443((*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_220039(ty);
		LOC18 = !(((*LOC20).kind == ((NU8) 0)));
		LA19: ;
		LOC16 = LOC18;
		LA17: ;
		if (!LOC16) goto LA21;
		{
			if (!((*ty).kind == ((NU8) 8))) goto LA25;
			ty = base_220039(ty);
		}
		LA25: ;
		ty = skiptypes_194167(ty, 14680064);
		switch ((*ty).kind) {
		case ((NU8) 14):
		{
			{
				while (1) {
					if (!!((ty == NIM_NIL))) goto LA29;
					f = getsymfromlist_198228((*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_192325(f);
				(*result).info = (*n).info;
				asgnRefNoCycle((void**) (&(*result).typ), ty);
				markused_344251((*n).info, f);
				goto BeforeRet;
			}
			LA36: ;
		}
		break;
		case ((NU8) 11):
		case ((NU8) 54):
		{
			result = readtypeparameter_445877(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;
				{
					Tnode190813* field_446222;
					Tnode190813* HEX3Atmp_446632;
					field_446222 = 0;
					HEX3Atmp_446632 = 0;
					HEX3Atmp_446632 = (*ty).n;
					{
						NI i_446636;
						NI HEX3Atmp_446638;
						NI LOC48;
						NI res_446640;
						i_446636 = 0;
						HEX3Atmp_446638 = 0;
						LOC48 = 0;
						LOC48 = len_191097(HEX3Atmp_446632);
						HEX3Atmp_446638 = (LOC48 - 1);
						res_446640 = ((NI) 0);
						{
							while (1) {
								if (!(res_446640 <= HEX3Atmp_446638)) goto LA50;
								i_446636 = res_446640;
								field_446222 = (*HEX3Atmp_446632).kindU.S6.sons->data[i_446636];
								{
									Ttypeseq190845* LOC55;
									TY244864 LOC56;
									if (!((*(*field_446222).kindU.S4.sym).name == i)) goto LA53;
									LOC55 = 0;
									LOC55 = (Ttypeseq190845*) newSeq((&NTI190845), 2);
									memset((void*)LOC56, 0, sizeof(LOC56));
									LOC56[0] = ty;
									LOC56[1] = (*(*field_446222).kindU.S4.sym).typ;
									asgnRefNoCycle((void**) (&LOC55->data[0]), LOC56[0]);
									asgnRefNoCycle((void**) (&LOC55->data[1]), LOC56[1]);
									asgnRefNoCycle((void**) (&(*n).typ), newtypewithsons_244807(c, ((NU8) 61), LOC55));
									asgnRefNoCycle((void**) (&(*(*n).typ).n), copytree_195028(n));
									result = n;
									goto BeforeRet;
								}
								LA53: ;
								res_446640 += ((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_194167(ty, 14682112);
	{
		while (1) {
			if (!(((*ty).flags &(1<<((((NU8) 27))&31)))!=0)) goto LA59;
			ty = skiptypes_194167(ty, 8192);
		} LA59: ;
	}
	check = NIM_NIL;
	{
		if (!((*ty).kind == ((NU8) 17))) goto LA62;
		{
			while (1) {
				check = NIM_NIL;
				f = lookupinrecordandbuildcheck_445604(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_194167((*ty).sons->data[((NI) 0)], 2048);
			}
		} LA64: ;
		{
			if (!!((f == NIM_NIL))) goto LA76;
			{
				NIM_BOOL LOC80;
				LOC80 = 0;
				LOC80 = fieldvisible_351059(c, f);
				if (!LOC80) goto LA81;
				markused_344251((*(*n).kindU.S6.sons->data[((NI) 1)]).info, f);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_445833((*n).kindU.S6.sons->data[((NI) 0)]));
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), newsymnode_192325(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_198228((*ty).n, i, ((NI) 0));
		{
			if (!!((f == NIM_NIL))) goto LA95;
			markused_344251((*(*n).kindU.S6.sons->data[((NI) 1)]).info, f);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_445833((*n).kindU.S6.sons->data[((NI) 0)]));
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), newsymnode_192325(f));
			asgnRefNoCycle((void**) (&(*n).typ), (*f).typ);
			result = n;
		}
		LA95: ;
	}
	goto LA60;
	LA91: ;
	LA60: ;
	{
		Ttype190849* t;
		if (!(result == NIM_NIL)) goto LA99;
		t = skiptypes_194167((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, 14680064);
		{
			if (!((*t).kind == ((NU8) 11) || (*t).kind == ((NU8) 54))) goto LA103;
			result = readtypeparameter_445877(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_413249)(Tcontext244023* c, Tnodeseq190807** usedsyms) {
	{
		Tscope190837* scope_413255;
		Tscope190837* HEX3Atmp_413334;
		Tscope190837* current_413337;
		scope_413255 = 0;
		HEX3Atmp_413334 = 0;
		HEX3Atmp_413334 = (*c).currentscope;
		current_413337 = HEX3Atmp_413334;
		{
			while (1) {
				if (!!((current_413337 == NIM_NIL))) goto LA3;
				scope_413255 = current_413337;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = HEX3DHEX3D_263718((*scope_413255).usingsyms, NIM_NIL);
					if (!!(LOC6)) goto LA7;
					{
						Tnode190813* s_413277;
						Tnodeseq190807* HEX3Atmp_413328;
						NI i_413331;
						NI L_413333;
						s_413277 = 0;
						HEX3Atmp_413328 = 0;
						HEX3Atmp_413328 = (*scope_413255).usingsyms;
						i_413331 = ((NI) 0);
						L_413333 = (HEX3Atmp_413328 ? HEX3Atmp_413328->Sup.len : 0);
						{
							while (1) {
								if (!(i_413331 < L_413333)) goto LA11;
								s_413277 = HEX3Atmp_413328->data[i_413331];
								safeadd_413279(usedsyms, s_413277);
								i_413331 += ((NI) 1);
							} LA11: ;
						}
					}
				}
				LA7: ;
				current_413337 = (*current_413337).parent;
			} LA3: ;
		}
	}
}
N_NIMCALL(void, TMP3103)(void* p, NI op) {
	TY412757* a;
	NI LOC1;
	a = (TY412757*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].Field0, op);
	}
}

N_NIMCALL(Tsym190843*, lookupmacro_438097)(Tcontext244023* c, Tnode190813* n) {
	Tsym190843* 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: ;
	{
		Tident167021* LOC10;
		LOC10 = 0;
		LOC10 = considerquotedident_249010(n);
		result = searchinscopes_249323(c, LOC10, 393216);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, copyexcept_438050)(Tnode190813* n, NI i) {
	Tnode190813* result;
	result = 0;
	result = copynode_194640(n);
	{
		NI j_438074;
		NI HEX3Atmp_438078;
		NI LOC2;
		NI res_438081;
		j_438074 = 0;
		HEX3Atmp_438078 = 0;
		LOC2 = 0;
		LOC2 = len_191097(n);
		HEX3Atmp_438078 = (LOC2 - 1);
		res_438081 = ((NI) 0);
		{
			while (1) {
				if (!(res_438081 <= HEX3Atmp_438078)) goto LA4;
				j_438074 = res_438081;
				{
					if (!!((j_438074 == i))) goto LA7;
					add_191164(result, (*n).kindU.S6.sons->data[j_438074]);
				}
				LA7: ;
				res_438081 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode190813*, semprocannotation_438127)(Tcontext244023* c, Tnode190813* prc, Tspecialwords172012 validpragmas) {
	Tnode190813* result;
	Tnode190813* 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_438177;
		NI HEX3Atmp_438272;
		NI LOC8;
		NI res_438275;
		i_438177 = 0;
		HEX3Atmp_438272 = 0;
		LOC8 = 0;
		LOC8 = len_191097(n);
		HEX3Atmp_438272 = (LOC8 - 1);
		res_438275 = ((NI) 0);
		{
			while (1) {
				if (!(res_438275 <= HEX3Atmp_438272)) goto LA10;
				i_438177 = res_438275;
				{
					Tnode190813* it;
					Tnode190813* key;
					Tsym190843* m;
					Tnode190813* x;
					Tnode190813* LOC33;
					it = (*n).kindU.S6.sons->data[i_438177];
					{
						if (!((*it).kind == ((NU8) 34))) goto LA14;
						key = (*it).kindU.S6.sons->data[((NI) 0)];
					}
					goto LA12;
					LA14: ;
					{
						key = it;
					}
					LA12: ;
					m = lookupmacro_438097(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;
							{
								Tident167021* LOC29;
								LOC29 = 0;
								LOC29 = considerquotedident_249010((*prc).kindU.S6.sons->data[((NI) 0)]);
								if (!eqStrings((*LOC29).s, ((NimStringDesc*) &TMP3104))) goto LA30;
								asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 0)]), newidentnode_192313(iddelegator_167550, (*prc).info));
								asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 4)]), copyexcept_438050(n, i_438177));
							}
							goto LA27;
							LA30: ;
							{
								localerror_165155((*prc).info, ((NU16) 199), ((NimStringDesc*) &TMP2989));
							}
							LA27: ;
						}
						LA25: ;
						goto LA11;
					}
					LA19: ;
					x = newnodei_192351(((NU8) 27), (*n).info);
					LOC33 = 0;
					LOC33 = newsymnode_192325(m);
					add_191164(x, LOC33);
					asgnRefNoCycle((void**) (&(*prc).kindU.S6.sons->data[((NI) 4)]), copyexcept_438050(n, i_438177));
					{
						if (!((*it).kind == ((NU8) 34))) goto LA36;
						add_191164(x, (*it).kindU.S6.sons->data[((NI) 1)]);
					}
					LA36: ;
					add_191164(x, prc);
					result = semstmt_409277(c, x);
					{
						NIM_BOOL LOC40;
						NIM_BOOL LOC41;
						Tnode190813* LOC43;
						Tnode190813* LOC45;
						Tnode190813* LOC48;
						Tnode190813* 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_191244(result, ((NI) 0));
						LOC41 = ((*LOC43).kind == ((NU8) 3));
						LA42: ;
						LOC40 = LOC41;
						if (!(LOC40)) goto LA44;
						LOC45 = 0;
						LOC45 = HEX5BHEX5D_191244(result, ((NI) 4));
						LOC40 = !(((*LOC45).kind == ((NU8) 1)));
						LA44: ;
						if (!LOC40) goto LA46;
						LOC48 = 0;
						LOC48 = HEX5BHEX5D_191244(result, ((NI) 0));
						LOC49 = 0;
						LOC49 = HEX5BHEX5D_191244(result, ((NI) 4));
						pragma_260069(c, (*LOC48).kindU.S4.sym, LOC49, validpragmas);
					}
					LA46: ;
					goto BeforeRet;
				} LA11: ;
				res_438275 += ((NI) 1);
			} LA10: ;
		}
	}
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(Tsym190843*, newsymg_409916)(NU8 kind, Tnode190813* n, Tcontext244023* c) {
	Tsym190843* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 3))) goto LA3;
		result = (*n).kindU.S4.sym;
		{
			NimStringDesc* LOC9;
			if (!!(((*result).kind == kind))) goto LA7;
			LOC9 = 0;
			LOC9 = HEX24_165306(TMP3105);
			internalerror_165218(LOC9);
		}
		LA7: ;
		asgnRefNoCycle((void**) (&(*result).owner), getcurrowner_244256());
	}
	goto LA1;
	LA3: ;
	{
		Tident167021* LOC11;
		Tsym190843* LOC12;
		LOC11 = 0;
		LOC11 = considerquotedident_249010(n);
		LOC12 = 0;
		LOC12 = getcurrowner_244256();
		result = newsym_191656(kind, LOC11, LOC12, (*n).info);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym190843*, semidentvis_409955)(Tcontext244023* c, NU8 kind, Tnode190813* n, NU32 allowed) {
	Tsym190843* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 31))) goto LA3;
		{
			NIM_BOOL LOC7;
			NI LOC8;
			Tident167021* v;
			LOC7 = 0;
			LOC8 = 0;
			LOC8 = sonslen_193403(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_409916(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 |= ((NI32)1)<<((((NU8) 1))%(sizeof(NI32)*8));
			}
			goto LA12;
			LA16: ;
			{
				localerror_165155((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 174), (*v).s);
			}
			LA12: ;
		}
		goto LA5;
		LA10: ;
		{
			illformedast_245229(n);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		result = newsymg_409916(kind, n, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym190843*, semidentwithpragma_409964)(Tcontext244023* c, NU8 kind, Tnode190813* n, NU32 allowed) {
	Tsym190843* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 43))) goto LA3;
		checksonslen_245249(n, ((NI) 2));
		result = semidentvis_409955(c, kind, (*n).kindU.S6.sons->data[((NI) 0)], allowed);
		switch (kind) {
		case ((NU8) 7):
		{
		}
		break;
		case ((NU8) 19):
		{
			pragma_260069(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3107);
		}
		break;
		case ((NU8) 8):
		{
			pragma_260069(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3108);
		}
		break;
		case ((NU8) 9):
		{
			pragma_260069(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3108);
		}
		break;
		case ((NU8) 10):
		{
			pragma_260069(c, result, (*n).kindU.S6.sons->data[((NI) 1)], TMP3109);
		}
		break;
		default:
		{
		}
		break;
		}
	}
	goto LA1;
	LA3: ;
	{
		result = semidentvis_409955(c, kind, n, allowed);
	}
	LA1: ;
	{
		if (!(gcmd_154130 == ((NU8) 7))) goto LA14;
	}
	LA14: ;
	return result;
}

static N_INLINE(void, suggestsym_353960)(Tlineinfo163338 info, Tsym190843* s) {
	{
		if (!(gidecmd_154115 == ((NU8) 4))) goto LA3;
		findusages_353892(info, s);
	}
	goto LA1;
	LA3: ;
	{
		if (!(gidecmd_154115 == ((NU8) 3))) goto LA6;
		finddefinition_353923(info, s);
	}
	goto LA1;
	LA6: ;
	LA1: ;
}

N_NIMCALL(Tsym190843*, semidentdef_434142)(Tcontext244023* c, Tnode190813* n, NU8 kind) {
	Tsym190843* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_245269(c);
		if (!LOC3) goto LA4;
		result = semidentwithpragma_409964(c, kind, n, 2);
		(*result).flags |= ((NI32)1)<<((((NU8) 3))%(sizeof(NI32)*8));
	}
	goto LA1;
	LA4: ;
	{
		result = semidentwithpragma_409964(c, kind, n, 0);
	}
	LA1: ;
	suggestsym_353960((*n).info, result);
	return result;
}

N_NIMCALL(Ttype190849*, semgenericconstraints_421930)(Tcontext244023* c, Ttype190849* x) {
	Ttype190849* result;
	Ttypeseq190845* LOC1;
	TY349187 LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = (Ttypeseq190845*) newSeq((&NTI190845), 1);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = x;
	asgnRefNoCycle((void**) (&LOC1->data[0]), LOC2[0]);
	result = newtypewithsons_244807(c, ((NU8) 12), LOC1);
	return result;
}

N_NIMCALL(Tnode190813*, semgenericparamlist_421951)(Tcontext244023* c, Tnode190813* n, Ttype190849* father) {
	Tnode190813* result;
{	result = 0;
	result = copynode_194640(n);
	{
		if (!!(((*n).kind == ((NU8) 75)))) goto LA3;
		illformedast_245229(n);
		goto BeforeRet;
	}
	LA3: ;
	{
		NI i_421978;
		NI HEX3Atmp_422218;
		NI LOC6;
		NI res_422221;
		i_421978 = 0;
		HEX3Atmp_422218 = 0;
		LOC6 = 0;
		LOC6 = sonslen_193403(n);
		HEX3Atmp_422218 = (NI)(LOC6 - ((NI) 1));
		res_422221 = ((NI) 0);
		{
			while (1) {
				Tnode190813* a;
				NI L;
				Tnode190813* def;
				NI LOC13;
				Tnode190813* constraint;
				NI LOC20;
				Ttype190849* typ;
				if (!(res_422221 <= HEX3Atmp_422218)) goto LA8;
				i_421978 = res_422221;
				a = (*n).kindU.S6.sons->data[i_421978];
				{
					if (!!(((*a).kind == ((NU8) 35)))) goto LA11;
					illformedast_245229(n);
				}
				LA11: ;
				L = len_191097(a);
				LOC13 = 0;
				{
					if (!NIM_FALSE) goto LA16;
					LOC13 = ((NI) -1);
				}
				goto LA14;
				LA16: ;
				{
					NI LOC19;
					LOC19 = 0;
					LOC19 = len_191097(a);
					LOC13 = (NI)(LOC19 + ((NI) -1));
				}
				LA14: ;
				def = HEX5BHEX5D_191244(a, LOC13);
				LOC20 = 0;
				{
					if (!NIM_FALSE) goto LA23;
					LOC20 = ((NI) -2);
				}
				goto LA21;
				LA23: ;
				{
					NI LOC26;
					LOC26 = 0;
					LOC26 = len_191097(a);
					LOC20 = (NI)(LOC26 + ((NI) -2));
				}
				LA21: ;
				constraint = HEX5BHEX5D_191244(a, LOC20);
				typ = 0;
				{
					if (!!(((*constraint).kind == ((NU8) 1)))) goto LA29;
					typ = semtypenode_409269(c, constraint, NIM_NIL);
					{
						NIM_BOOL LOC33;
						NI LOC35;
						LOC33 = 0;
						LOC33 = !(((*typ).kind == ((NU8) 59)));
						if (LOC33) goto LA34;
						LOC35 = 0;
						LOC35 = len_193377(typ);
						LOC33 = (LOC35 == ((NI) 0));
						LA34: ;
						if (!LOC33) goto LA36;
						{
							if (!((*typ).kind == ((NU8) 8))) goto LA40;
							{
								Ttypeseq190845* LOC46;
								TY349187 LOC47;
								if (!((*(*typ).sons->data[((NI) 0)]).kind == ((NU8) 0))) goto LA44;
								LOC46 = 0;
								LOC46 = (Ttypeseq190845*) newSeq((&NTI190845), 1);
								memset((void*)LOC47, 0, sizeof(LOC47));
								LOC47[0] = newtypes_244219(((NU8) 0), c);
								asgnRefNoCycle((void**) (&LOC46->data[0]), LOC47[0]);
								typ = newtypewithsons_244807(c, ((NU8) 8), LOC46);
							}
							LA44: ;
						}
						goto LA38;
						LA40: ;
						{
							typ = semgenericconstraints_421930(c, typ);
						}
						LA38: ;
					}
					LA36: ;
				}
				LA29: ;
				{
					if (!!(((*def).kind == ((NU8) 1)))) goto LA51;
					def = semconstexpr_410485(c, def);
					{
						if (!(typ == NIM_NIL)) goto LA55;
						{
							Ttypeseq190845* LOC61;
							TY349187 LOC62;
							if (!!(((*(*def).typ).kind == ((NU8) 8)))) goto LA59;
							LOC61 = 0;
							LOC61 = (Ttypeseq190845*) newSeq((&NTI190845), 1);
							memset((void*)LOC62, 0, sizeof(LOC62));
							LOC62[0] = (*def).typ;
							asgnRefNoCycle((void**) (&LOC61->data[0]), LOC62[0]);
							typ = newtypewithsons_244807(c, ((NU8) 59), LOC61);
						}
						LA59: ;
					}
					goto LA53;
					LA55: ;
					{
						asgnRefNoCycle((void**) (&(*def).typ), skiptypes_194167((*def).typ, 256));
						{
							NIM_BOOL LOC66;
							LOC66 = 0;
							LOC66 = containsgenerictype_229310((*def).typ);
							if (!!(LOC66)) goto LA67;
							def = fitnode_409245(c, typ, def);
						}
						LA67: ;
					}
					LA53: ;
				}
				LA51: ;
				{
					if (!(typ == NIM_NIL)) goto LA71;
					typ = newtypes_244219(((NU8) 12), c);
					{
						if (!(father == NIM_NIL)) goto LA75;
						(*typ).flags |= ((NI32)1)<<((((NU8) 25))%(sizeof(NI32)*8));
					}
					LA75: ;
				}
				LA71: ;
				(*typ).flags |= ((NI32)1)<<((((NU8) 23))%(sizeof(NI32)*8));
				{
					NI j_422146;
					NI HEX3Atmp_422211;
					NI res_422214;
					j_422146 = 0;
					HEX3Atmp_422211 = 0;
					HEX3Atmp_422211 = (NI)(L - ((NI) 3));
					res_422214 = ((NI) 0);
					{
						while (1) {
							Ttype190849* finaltype;
							Tsym190843* s;
							Tnode190813* LOC102;
							if (!(res_422214 <= HEX3Atmp_422211)) goto LA79;
							j_422146 = res_422214;
							{
								if (!(j_422146 == ((NI) 0))) goto LA82;
								finaltype = typ;
							}
							goto LA80;
							LA82: ;
							{
								finaltype = copytype_193549(typ, (*typ).owner, NIM_FALSE);
							}
							LA80: ;
							{
								NIM_BOOL LOC87;
								Tsym190843* 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_409916(((NU8) 4), (*a).kindU.S6.sons->data[j_422146], c);
								s = linkto_191884(LOC91, finaltype);
							}
							goto LA85;
							LA89: ;
							{
								Tsym190843* LOC93;
								LOC93 = 0;
								LOC93 = newsymg_409916(((NU8) 7), (*a).kindU.S6.sons->data[j_422146], c);
								s = linkto_191884(LOC93, finaltype);
							}
							LA85: ;
							{
								if (!!(((*def).kind == ((NU8) 1)))) goto LA96;
								asgnRefNoCycle((void**) (&(*s).ast), def);
							}
							LA96: ;
							{
								if (!!((father == NIM_NIL))) goto LA100;
								addsonskipintlit_238729(father, (*s).typ);
							}
							LA100: ;
							(*s).position = len_191097(result);
							LOC102 = 0;
							LOC102 = newsymnode_192325(s);
							addson_192819(result, LOC102);
							{
								if (!!((((*s).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA105;
								adddecl_249607(c, s);
							}
							LA105: ;
							res_422214 += ((NI) 1);
						} LA79: ;
					}
				}
				res_422221 += ((NI) 1);
			} LA8: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype190849*, newproctype_420342)(Tcontext244023* c, Tlineinfo163338 info, Ttype190849* prev) {
	Ttype190849* result;
	Toptionentry244005* LOC1;
	Tnode190813* LOC2;
	result = 0;
	result = neworprevtype_415695(((NU8) 25), prev, c);
	LOC1 = 0;
	LOC1 = lastoptionentry_244188(c);
	(*result).callconv = (*LOC1).defaultcc;
	asgnRefNoCycle((void**) (&(*result).n), newnodei_192351(((NU8) 76), info));
	rawaddson_194478(result, NIM_NIL);
	LOC2 = 0;
	LOC2 = newnodei_192351(((NU8) 152), info);
	addson_192819((*result).n, LOC2);
	return result;
}

N_NIMCALL(Ttype190849*, semparamtype_420322)(Tcontext244023* c, Tnode190813* n, Tnode190813** constraint) {
	Ttype190849* result;
	result = 0;
	{
		if (!((*n).kind == ((NU8) 40))) goto LA3;
		result = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		unsureAsgnRef((void**) (&(*constraint)), semnodekindconstraints_268679(n));
	}
	goto LA1;
	LA3: ;
	{
		result = semtypenode_409269(c, n, NIM_NIL);
	}
	LA1: ;
	return result;
}
N_NIMCALL(void, TMP3131)(void* p, NI op) {
	TY420253* a;
	a = (TY420253*)p;
	nimGCvisit((void*)(*a).paramname419285, op);
	nimGCvisit((void*)(*a).genericparams419283, op);
	nimGCvisit((void*)(*a).c419281, op);
}

N_CLOSURE(Ttype190849*, addimplicitgenericimpl_419301)(Ttype190849* typeclass, Tident167021* typid, void* ClEnv) {
	Ttype190849* result;
	TY420253* HEX3Aenvp_420268;
	Tident167021* finaltypid;
	Tsym190843* owner;
	Tsym190843* s;
	Tsym190843* LOC28;
	Tnode190813* LOC29;
{	result = 0;
	HEX3Aenvp_420268 = (TY420253*) ClEnv;
	{
		if (!!((typid == NIM_NIL))) goto LA3;
		finaltypid = typid;
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC6;
		LOC6 = 0;
		LOC6 = rawNewString((*HEX3Aenvp_420268).paramname419285->Sup.len + 5);
appendString(LOC6, (*HEX3Aenvp_420268).paramname419285);
appendString(LOC6, ((NimStringDesc*) &TMP3132));
		finaltypid = getident_167463(LOC6);
	}
	LA1: ;
	{
		if (!((*HEX3Aenvp_420268).genericparams419283 == NIM_NIL)) goto LA9;
		goto BeforeRet;
	}
	LA9: ;
	{
		NI i_419344;
		NI HEX3Atmp_419401;
		NI LOC12;
		NI res_419404;
		i_419344 = 0;
		HEX3Atmp_419401 = 0;
		LOC12 = 0;
		LOC12 = len_191097((*HEX3Aenvp_420268).genericparams419283);
		HEX3Atmp_419401 = (NI)(LOC12 - ((NI) 1));
		res_419404 = ((NI) 0);
		{
			while (1) {
				if (!(res_419404 <= HEX3Atmp_419401)) goto LA14;
				i_419344 = res_419404;
				{
					if (!((*(*(*(*(*HEX3Aenvp_420268).genericparams419283).kindU.S6.sons->data[i_419344]).kindU.S4.sym).name).Sup.id == (*finaltypid).Sup.id)) goto LA17;
					result = (*(*(*HEX3Aenvp_420268).genericparams419283).kindU.S6.sons->data[i_419344]).typ;
					goto BeforeRet;
				}
				LA17: ;
				res_419404 += ((NI) 1);
			} LA14: ;
		}
	}
	{
		if (!!(((*typeclass).sym == NIM_NIL))) goto LA21;
		owner = (*typeclass).sym;
	}
	goto LA19;
	LA21: ;
	{
		owner = getcurrowner_244256();
	}
	LA19: ;
	s = newsym_191656(((NU8) 7), finaltypid, owner, (*HEX3Aenvp_420268).info419286);
	{
		if (!(typid == NIM_NIL)) goto LA26;
		(*s).flags |= ((NI32)1)<<((((NU8) 29))%(sizeof(NI32)*8));
	}
	LA26: ;
	LOC28 = 0;
	LOC28 = linkto_191884(s, typeclass);
	(*typeclass).flags |= ((NI32)1)<<((((NU8) 24))%(sizeof(NI32)*8));
	(*s).position = len_191097((*HEX3Aenvp_420268).genericparams419283);
	LOC29 = 0;
	LOC29 = newsymnode_192325(s);
	addson_192819((*HEX3Aenvp_420268).genericparams419283, LOC29);
	result = typeclass;
	adddecl_249607((*HEX3Aenvp_420268).c419281, s);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype190849*, liftparamtype_419279)(Tcontext244023* c, NU8 prockind, Tnode190813* genericparams, Ttype190849* paramtype, NimStringDesc* paramname, Tlineinfo163338 info, NIM_BOOL anon) {
	Ttype190849* result;
	TY420253* HEX3Aenv_420310;
	NimStringDesc* LOC1;
	Tident167021* paramtypid;
{	result = 0;
	HEX3Aenv_420310 = 0;
	HEX3Aenv_420310 = (TY420253*) newObj((&NTI420311), sizeof(TY420253));
	LOC1 = 0;
	LOC1 = (*HEX3Aenv_420310).paramname419285; (*HEX3Aenv_420310).paramname419285 = copyStringRC1(paramname);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	asgnRefNoCycle((void**) (&(*HEX3Aenv_420310).genericparams419283), genericparams);
	(*HEX3Aenv_420310).info419286 = info;
	asgnRef((void**) (&(*HEX3Aenv_420310).c419281), 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):
	{
		TY419302 LOC14;
		Ttype190849* LOC15;
		memset((void*)(&LOC14), 0, sizeof(LOC14));
		LOC14.ClPrc = addimplicitgenericimpl_419301; LOC14.ClEnv = HEX3Aenv_420310;
		LOC15 = 0;
		LOC15 = newtypes_244219(((NU8) 12), (*HEX3Aenv_420310).c419281);
		result = LOC14.ClEnv? LOC14.ClPrc(LOC15, paramtypid, LOC14.ClEnv):((TMP3133)(LOC14.ClPrc))(LOC15, paramtypid);
	}
	break;
	case ((NU8) 59):
	{
		Ttype190849* base;
		Ttype190849* lifted_419456;
		Ttype190849* LOC25;
		TY419302 LOC37;
		Ttypeseq190845* LOC38;
		TY349187 LOC39;
		Ttype190849* 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_220039(paramtype);
		lifted_419456 = liftparamtype_419279((*HEX3Aenv_420310).c419281, prockind, (*HEX3Aenv_420310).genericparams419283, LOC25, (*HEX3Aenv_420310).paramname419285, (*HEX3Aenv_420310).info419286, NIM_FALSE);
		{
			if (!!((lifted_419456 == NIM_NIL))) goto LA28;
			base = lifted_419456;
		}
		goto LA26;
		LA28: ;
		{
			base = base_220039(paramtype);
		}
		LA26: ;
		{
			NIM_BOOL LOC33;
			LOC33 = 0;
			LOC33 = ismetatype_191821(base);
			if (!(LOC33)) goto LA34;
			LOC33 = (prockind == ((NU8) 17));
			LA34: ;
			if (!LOC33) goto LA35;
			localerror_165155((*HEX3Aenv_420310).info419286, ((NU16) 201), (*HEX3Aenv_420310).paramname419285);
		}
		LA35: ;
		memset((void*)(&LOC37), 0, sizeof(LOC37));
		LOC37.ClPrc = addimplicitgenericimpl_419301; LOC37.ClEnv = HEX3Aenv_420310;
		LOC38 = 0;
		LOC38 = (Ttypeseq190845*) newSeq((&NTI190845), 1);
		memset((void*)LOC39, 0, sizeof(LOC39));
		LOC39[0] = base;
		asgnRefNoCycle((void**) (&LOC38->data[0]), LOC39[0]);
		LOC40 = 0;
		LOC40 = newtypewithsons_244807((*HEX3Aenv_420310).c419281, ((NU8) 59), LOC38);
		result = LOC37.ClEnv? LOC37.ClPrc(LOC40, paramtypid, LOC37.ClEnv):((TMP3134)(LOC37.ClPrc))(LOC40, paramtypid);
		(*result).flags = ((*result).flags | 4194816);
	}
	break;
	case ((NU8) 8):
	{
		{
			TY419302 LOC55;
			Ttypeseq190845* LOC56;
			TY349187 LOC57;
			Ttype190849* LOC58;
			if (!!((((*paramtype).flags &(1<<((((NU8) 9))&31)))!=0))) goto LA44;
			{
				NIM_BOOL LOC48;
				NIM_BOOL LOC49;
				Ttype190849* LOC50;
				LOC48 = 0;
				LOC49 = 0;
				LOC50 = 0;
				LOC50 = base_220039(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_419273).Sup.id);
				LA52: ;
				if (!LOC48) goto LA53;
				paramtypid = NIM_NIL;
			}
			LA53: ;
			memset((void*)(&LOC55), 0, sizeof(LOC55));
			LOC55.ClPrc = addimplicitgenericimpl_419301; LOC55.ClEnv = HEX3Aenv_420310;
			LOC56 = 0;
			LOC56 = (Ttypeseq190845*) newSeq((&NTI190845), 1);
			memset((void*)LOC57, 0, sizeof(LOC57));
			LOC57[0] = base_220039(paramtype);
			asgnRefNoCycle((void**) (&LOC56->data[0]), LOC57[0]);
			LOC58 = 0;
			LOC58 = newtypewithsons_244807((*HEX3Aenv_420310).c419281, ((NU8) 8), LOC56);
			result = LOC55.ClEnv? LOC55.ClPrc(LOC58, paramtypid, LOC55.ClEnv):((TMP3135)(LOC55.ClPrc))(LOC58, paramtypid);
		}
		LA44: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			NI LOC62;
			LOC62 = 0;
			LOC62 = sonslen_193351(paramtype);
			if (!(LOC62 == ((NI) 1))) goto LA63;
			result = liftparamtype_419279((*HEX3Aenv_420310).c419281, prockind, (*HEX3Aenv_420310).genericparams419283, (*paramtype).sons->data[((NI) 0)], (*HEX3Aenv_420310).paramname419285, (*HEX3Aenv_420310).info419286, 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;
			Ttype190849* LOC70;
			Ttype190849* typ;
			Ttypeseq190845* LOC73;
			TY349187 LOC74;
			TY419302 LOC75;
			LOC68 = 0;
			LOC68 = ((*paramtype).kind == ((NU8) 24));
			if (!(LOC68)) goto LA69;
			LOC70 = 0;
			LOC70 = lastson_193442(paramtype);
			LOC68 = ((*LOC70).kind == ((NU8) 0));
			LA69: ;
			if (!LOC68) goto LA71;
			LOC73 = 0;
			LOC73 = (Ttypeseq190845*) newSeq((&NTI190845), 1);
			memset((void*)LOC74, 0, sizeof(LOC74));
			LOC74[0] = newtypes_244219((*paramtype).kind, (*HEX3Aenv_420310).c419281);
			asgnRefNoCycle((void**) (&LOC73->data[0]), LOC74[0]);
			typ = newtypewithsons_244807((*HEX3Aenv_420310).c419281, ((NU8) 51), LOC73);
			memset((void*)(&LOC75), 0, sizeof(LOC75));
			LOC75.ClPrc = addimplicitgenericimpl_419301; LOC75.ClEnv = HEX3Aenv_420310;
			result = LOC75.ClEnv? LOC75.ClPrc(typ, paramtypid, LOC75.ClEnv):((TMP3136)(LOC75.ClPrc))(typ, paramtypid);
		}
		goto LA66;
		LA71: ;
		{
			{
				NI i_419599;
				NI HEX3Atmp_420222;
				NI LOC78;
				NI res_420225;
				i_419599 = 0;
				HEX3Atmp_420222 = 0;
				LOC78 = 0;
				LOC78 = len_193377(paramtype);
				HEX3Atmp_420222 = (LOC78 - 1);
				res_420225 = ((NI) 0);
				{
					while (1) {
						Ttype190849* lifted;
						if (!(res_420225 <= HEX3Atmp_420222)) goto LA80;
						i_419599 = res_420225;
						{
							NimStringDesc* LOC85;
							if (!((*paramtype).sons->data[i_419599] == paramtype)) goto LA83;
							LOC85 = 0;
							LOC85 = typetostring_220032(paramtype, ((NU8) 0));
							globalerror_165134((*HEX3Aenv_420310).info419286, ((NU16) 123), LOC85);
						}
						LA83: ;
						lifted = liftparamtype_419279((*HEX3Aenv_420310).c419281, prockind, (*HEX3Aenv_420310).genericparams419283, (*paramtype).sons->data[i_419599], (*HEX3Aenv_420310).paramname419285, (*HEX3Aenv_420310).info419286, NIM_FALSE);
						{
							if (!!((lifted == NIM_NIL))) goto LA88;
							asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_419599]), lifted);
							result = paramtype;
						}
						LA88: ;
						res_420225 += ((NI) 1);
					} LA80: ;
				}
			}
		}
		LA66: ;
	}
	break;
	case ((NU8) 10):
	{
		Ttypeseq190845* LOC109;
		TY244864 LOC110;
		TY419302 LOC111;
		result = newtypes_244219(((NU8) 9), (*HEX3Aenv_420310).c419281);
		rawaddson_194478(result, paramtype);
		{
			NI i_419634;
			NI HEX3Atmp_420230;
			NI LOC92;
			NI res_420233;
			i_419634 = 0;
			HEX3Atmp_420230 = 0;
			LOC92 = 0;
			LOC92 = sonslen_193351(paramtype);
			HEX3Atmp_420230 = (NI)(LOC92 - ((NI) 2));
			res_420233 = ((NI) 0);
			{
				while (1) {
					if (!(res_420233 <= HEX3Atmp_420230)) goto LA94;
					i_419634 = res_420233;
					{
						Tnode190813* x;
						Ttype190849* LOC99;
						if (!((*(*paramtype).sons->data[i_419634]).kind == ((NU8) 59))) goto LA97;
						x = copynode_194640(emptynode_191807);
						asgnRefNoCycle((void**) (&(*x).typ), (*paramtype).sons->data[i_419634]);
						LOC99 = 0;
						LOC99 = maketypefromexpr_244727((*HEX3Aenv_420310).c419281, x);
						rawaddson_194478(result, LOC99);
					}
					goto LA95;
					LA97: ;
					{
						Ttype190849* LOC101;
						LOC101 = 0;
						LOC101 = newtypes_244219(((NU8) 58), (*HEX3Aenv_420310).c419281);
						rawaddson_194478(result, LOC101);
					}
					LA95: ;
					res_420233 += ((NI) 1);
				} LA94: ;
			}
		}
		{
			Ttype190849* LOC104;
			Ttype190849* LOC107;
			TY419302 LOC108;
			LOC104 = 0;
			LOC104 = lastson_193442(paramtype);
			if (!((*LOC104).kind == ((NU8) 52))) goto LA105;
			(*result).kind = ((NU8) 53);
			LOC107 = 0;
			LOC107 = lastson_193442(paramtype);
			rawaddson_194478(result, LOC107);
			memset((void*)(&LOC108), 0, sizeof(LOC108));
			LOC108.ClPrc = addimplicitgenericimpl_419301; LOC108.ClEnv = HEX3Aenv_420310;
			result = LOC108.ClEnv? LOC108.ClPrc(result, paramtypid, LOC108.ClEnv):((TMP3137)(LOC108.ClPrc))(result, paramtypid);
			goto BeforeRet;
		}
		LA105: ;
		result = instgenericcontainer_412151((*HEX3Aenv_420310).c419281, (*(*paramtype).sym).info, result, NIM_TRUE);
		LOC109 = 0;
		LOC109 = (Ttypeseq190845*) newSeq((&NTI190845), 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_244807((*HEX3Aenv_420310).c419281, ((NU8) 54), LOC109);
		memset((void*)(&LOC111), 0, sizeof(LOC111));
		LOC111.ClPrc = addimplicitgenericimpl_419301; LOC111.ClEnv = HEX3Aenv_420310;
		result = LOC111.ClEnv? LOC111.ClPrc(result, paramtypid, LOC111.ClEnv):((TMP3138)(LOC111.ClPrc))(result, paramtypid);
	}
	break;
	case ((NU8) 49):
	{
		{
			TY419302 LOC131;
			if (!((*paramtype).callconv == ((NU8) 5))) goto LA115;
			{
				if (!!(((409600 &(1<<((prockind)&31)))!=0))) goto LA119;
				localerror_165155((*HEX3Aenv_420310).info419286, ((NU16) 203), ((NimStringDesc*) &TMP2989));
			}
			LA119: ;
			{
				NI LOC123;
				Ttype190849* lifted;
				Ttype190849* LOC126;
				LOC123 = 0;
				LOC123 = len_193377(paramtype);
				if (!(LOC123 == ((NI) 1))) goto LA124;
				LOC126 = 0;
				LOC126 = base_220039(paramtype);
				lifted = liftparamtype_419279((*HEX3Aenv_420310).c419281, prockind, (*HEX3Aenv_420310).genericparams419283, LOC126, (*HEX3Aenv_420310).paramname419285, (*HEX3Aenv_420310).info419286, 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_419301; LOC131.ClEnv = HEX3Aenv_420310;
			result = LOC131.ClEnv? LOC131.ClPrc(paramtype, paramtypid, LOC131.ClEnv):((TMP3139)(LOC131.ClPrc))(paramtype, paramtypid);
		}
		LA115: ;
	}
	break;
	case ((NU8) 11):
	{
		Ttype190849* liftbody;
		Ttype190849* LOC154;
		{
			Ttype190849* LOC135;
			Ttype190849* cp;
			Tsym190843* LOC138;
			TY419302 LOC139;
			LOC135 = 0;
			LOC135 = lastson_193442(paramtype);
			if (!((*LOC135).kind == ((NU8) 52))) goto LA136;
			LOC138 = 0;
			LOC138 = getcurrowner_244256();
			cp = copytype_193549(paramtype, LOC138, NIM_FALSE);
			(*cp).kind = ((NU8) 53);
			memset((void*)(&LOC139), 0, sizeof(LOC139));
			LOC139.ClPrc = addimplicitgenericimpl_419301; LOC139.ClEnv = HEX3Aenv_420310;
			result = LOC139.ClEnv? LOC139.ClPrc(cp, paramtypid, LOC139.ClEnv):((TMP3140)(LOC139.ClPrc))(cp, paramtypid);
			goto BeforeRet;
		}
		LA136: ;
		{
			NI i_419721;
			NI HEX3Atmp_420238;
			NI LOC141;
			NI res_420241;
			i_419721 = 0;
			HEX3Atmp_420238 = 0;
			LOC141 = 0;
			LOC141 = len_193377(paramtype);
			HEX3Atmp_420238 = (NI)(LOC141 - ((NI) 2));
			res_420241 = ((NI) 1);
			{
				while (1) {
					Ttype190849* lifted;
					if (!(res_420241 <= HEX3Atmp_420238)) goto LA143;
					i_419721 = res_420241;
					lifted = liftparamtype_419279((*HEX3Aenv_420310).c419281, prockind, (*HEX3Aenv_420310).genericparams419283, (*paramtype).sons->data[i_419721], (*HEX3Aenv_420310).paramname419285, (*HEX3Aenv_420310).info419286, NIM_FALSE);
					{
						if (!!((lifted == NIM_NIL))) goto LA146;
						asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_419721]), lifted);
						result = paramtype;
						{
							Ttype190849* LOC150;
							NimStringDesc* LOC153;
							LOC150 = 0;
							LOC150 = lastson_193442(result);
							if (!!((((*LOC150).flags &(1<<((((NU8) 19))&31)))!=0))) goto LA151;
							LOC153 = 0;
							LOC153 = HEX24_165306(TMP3141);
							internalerror_165218(LOC153);
						}
						LA151: ;
					}
					LA146: ;
					res_420241 += ((NI) 1);
				} LA143: ;
			}
		}
		LOC154 = 0;
		LOC154 = lastson_193442(paramtype);
		liftbody = liftparamtype_419279((*HEX3Aenv_420310).c419281, prockind, (*HEX3Aenv_420310).genericparams419283, LOC154, (*HEX3Aenv_420310).paramname419285, (*HEX3Aenv_420310).info419286, 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_165306(TMP3141);
				internalerror_165218(LOC163);
			}
			LA161: ;
		}
		LA157: ;
	}
	break;
	case ((NU8) 9):
	{
		{
			NI i_419800;
			NI HEX3Atmp_420246;
			NI LOC166;
			NI res_420249;
			i_419800 = 0;
			HEX3Atmp_420246 = 0;
			LOC166 = 0;
			LOC166 = len_193377(paramtype);
			HEX3Atmp_420246 = (LOC166 - 1);
			res_420249 = ((NI) 1);
			{
				while (1) {
					Ttype190849* lifted;
					if (!(res_420249 <= HEX3Atmp_420246)) goto LA168;
					i_419800 = res_420249;
					lifted = liftparamtype_419279((*HEX3Aenv_420310).c419281, prockind, (*HEX3Aenv_420310).genericparams419283, (*paramtype).sons->data[i_419800], (*HEX3Aenv_420310).paramname419285, (*HEX3Aenv_420310).info419286, NIM_FALSE);
					{
						if (!!((lifted == NIM_NIL))) goto LA171;
						asgnRefNoCycle((void**) (&(*paramtype).sons->data[i_419800]), lifted);
					}
					LA171: ;
					res_420249 += ((NI) 1);
				} LA168: ;
			}
		}
	}
	break;
	case ((NU8) 52):
	case ((NU8) 51):
	case ((NU8) 55):
	case ((NU8) 56):
	case ((NU8) 57):
	{
		TY419302 LOC174;
		Tsym190843* LOC175;
		Ttype190849* LOC176;
		memset((void*)(&LOC174), 0, sizeof(LOC174));
		LOC174.ClPrc = addimplicitgenericimpl_419301; LOC174.ClEnv = HEX3Aenv_420310;
		LOC175 = 0;
		LOC175 = getcurrowner_244256();
		LOC176 = 0;
		LOC176 = copytype_193549(paramtype, LOC175, NIM_TRUE);
		result = LOC174.ClEnv? LOC174.ClPrc(LOC176, paramtypid, LOC174.ClEnv):((TMP3142)(LOC174.ClPrc))(LOC176, paramtypid);
	}
	break;
	case ((NU8) 6):
	{
		{
			TY419302 LOC182;
			Ttype190849* LOC183;
			if (!!(((393216 &(1<<((prockind)&31)))!=0))) goto LA180;
			memset((void*)(&LOC182), 0, sizeof(LOC182));
			LOC182.ClPrc = addimplicitgenericimpl_419301; LOC182.ClEnv = HEX3Aenv_420310;
			LOC183 = 0;
			LOC183 = newtypes_244219(((NU8) 58), (*HEX3Aenv_420310).c419281);
			result = LOC182.ClEnv? LOC182.ClPrc(LOC183, paramtypid, LOC182.ClEnv):((TMP3143)(LOC182.ClPrc))(LOC183, paramtypid);
		}
		LA180: ;
	}
	break;
	case ((NU8) 12):
	{
		markused_344251((*HEX3Aenv_420310).info419286, (*paramtype).sym);
		{
			if (!(((*paramtype).flags &(1<<((((NU8) 25))&31)))!=0)) goto LA187;
			(*paramtype).flags &= ~(((NI32)1) << ((((NU8) 25)) % (sizeof(NI32)*8)));
			(*(*paramtype).sym).kind = ((NU8) 7);
		}
		LA187: ;
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype190849*, semproctypenode_420351)(Tcontext244023* c, Tnode190813* n, Tnode190813* genericparams, Ttype190849* prev, NU8 kind, NIM_BOOL istype) {
	Ttype190849* result;
	Intset187056 cl;
	Intset187056 check;
	NI counter;
	Ttype190849* r;
	result = 0;
	memset((void*)(&cl), 0, sizeof(cl));
	checkminsonslen_245259(n, ((NI) 1));
	result = newproctype_420342(c, (*n).info, prev);
	{
		NIM_BOOL LOC3;
		NI LOC5;
		LOC3 = 0;
		LOC3 = !((genericparams == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = sonslen_193403(genericparams);
		LOC3 = (LOC5 == ((NI) 0));
		LA4: ;
		if (!LOC3) goto LA6;
		chckNil((void*)(&cl));
		memset((void*)(&cl), 0, sizeof(cl));
		initintset_187927((&cl));
	}
	LA6: ;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_187927((&check));
	counter = ((NI) 0);
	{
		NI i_420388;
		NI HEX3Atmp_420774;
		NI LOC9;
		NI res_420777;
		i_420388 = 0;
		HEX3Atmp_420774 = 0;
		LOC9 = 0;
		LOC9 = len_191097(n);
		HEX3Atmp_420774 = (NI)(LOC9 - ((NI) 1));
		res_420777 = ((NI) 1);
		{
			while (1) {
				if (!(res_420777 <= HEX3Atmp_420774)) goto LA11;
				i_420388 = res_420777;
				{
					Tnode190813* a;
					Ttype190849* typ;
					Tnode190813* def;
					Tnode190813* constraint;
					NI length;
					NIM_BOOL hastype;
					NIM_BOOL hasdefault;
					a = (*n).kindU.S6.sons->data[i_420388];
					{
						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_245229(a);
					}
					LA15: ;
					checkminsonslen_245259(a, ((NI) 3));
					typ = NIM_NIL;
					def = NIM_NIL;
					constraint = NIM_NIL;
					length = sonslen_193403(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_420322(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))], &constraint);
					}
					LA25: ;
					{
						if (!hasdefault) goto LA29;
						def = semexprwithtype_409211(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_229310(typ);
								if (!!(LOC40)) goto LA41;
								def = fitnode_409245(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_165166((*a).info, ((NimStringDesc*) &TMP3129));
						}
						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_212058(n, 0);
							message_165188((*a).info, ((NU16) 244), LOC62);
						}
						LA60: ;
						typ = newtypes_244219(tdef, c);
					}
					LA47: ;
					{
						Ttype190849* LOC65;
						LOC65 = 0;
						LOC65 = skiptypes_194167(typ, 2048);
						if (!((*LOC65).kind == ((NU8) 3))) goto LA66;
						goto LA12;
					}
					LA66: ;
					{
						NI j_420517;
						NI HEX3Atmp_420767;
						NI res_420770;
						j_420517 = 0;
						HEX3Atmp_420767 = 0;
						HEX3Atmp_420767 = (NI)(length - ((NI) 3));
						res_420770 = ((NI) 0);
						{
							while (1) {
								Tsym190843* arg;
								Ttype190849* lifted;
								Ttype190849* finaltype;
								Tnode190813* LOC87;
								if (!(res_420770 <= HEX3Atmp_420767)) goto LA70;
								j_420517 = res_420770;
								arg = newsymg_409916(((NU8) 3), (*a).kindU.S6.sons->data[j_420517], c);
								lifted = liftparamtype_419279(c, kind, genericparams, typ, (*(*arg).name).s, (*arg).info, NIM_FALSE);
								{
									if (!!((lifted == NIM_NIL))) goto LA73;
									finaltype = lifted;
								}
								goto LA71;
								LA73: ;
								{
									finaltype = skipintlit_238696(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_195028(def));
								}
								LA80: ;
								{
									NIM_BOOL LOC84;
									LOC84 = 0;
									LOC84 = containsorincl_187898((&check), (*(*arg).name).Sup.id);
									if (!LOC84) goto LA85;
									localerror_165155((*(*a).kindU.S6.sons->data[j_420517]).info, ((NU16) 40), (*(*arg).name).s);
								}
								LA85: ;
								LOC87 = 0;
								LOC87 = newsymnode_192325(arg);
								addson_192819((*result).n, LOC87);
								rawaddson_194478(result, finaltype);
								addparamorresult_411885(c, arg, kind);
								{
									if (!(gcmd_154130 == ((NU8) 7))) goto LA90;
								}
								LA90: ;
								res_420770 += ((NI) 1);
							} LA70: ;
						}
					}
				} LA12: ;
				res_420777 += ((NI) 1);
			} LA11: ;
		}
	}
	r = 0;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA94;
		r = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	}
	goto LA92;
	LA94: ;
	{
		if (!(kind == ((NU8) 14))) goto LA97;
		r = newtypes_244219(((NU8) 6), c);
	}
	goto LA92;
	LA97: ;
	LA92: ;
	{
		if (!!((r == NIM_NIL))) goto LA101;
		{
			Ttype190849* LOC105;
			LOC105 = 0;
			LOC105 = skiptypes_194167(r, 2048);
			if (!!(((*LOC105).kind == ((NU8) 3)))) goto LA106;
			{
				if (!!(((*r).kind == ((NU8) 6)))) goto LA110;
				{
					NIM_BOOL LOC114;
					Ttype190849* lifted;
					LOC114 = 0;
					LOC114 = ((*r).sym == NIM_NIL);
					if (LOC114) goto LA115;
					LOC114 = !((((*(*r).sym).flags &(1<<((((NU8) 29))&31)))!=0));
					LA115: ;
					if (!LOC114) goto LA116;
					lifted = liftparamtype_419279(c, kind, genericparams, r, ((NimStringDesc*) &TMP3011), (*(*n).kindU.S6.sons->data[((NI) 0)]).info, NIM_FALSE);
					{
						if (!!((lifted == NIM_NIL))) goto LA120;
						r = lifted;
					}
					LA120: ;
					(*r).flags |= ((NI32)1)<<((((NU8) 10))%(sizeof(NI32)*8));
				}
				LA116: ;
				r = skipintlit_238696(r);
				{
					if (!(kind == ((NU8) 14))) goto LA124;
					{
						NIM_BOOL LOC128;
						Ttypeseq190845* LOC131;
						TY349187 LOC132;
						LOC128 = 0;
						LOC128 = isinlineiterator_348999(r);
						if (!!(LOC128)) goto LA129;
						LOC131 = 0;
						LOC131 = (Ttypeseq190845*) newSeq((&NTI190845), 1);
						memset((void*)LOC132, 0, sizeof(LOC132));
						LOC132[0] = r;
						asgnRefNoCycle((void**) (&LOC131->data[0]), LOC132[0]);
						r = newtypewithsons_244807(c, ((NU8) 49), LOC131);
					}
					LA129: ;
				}
				LA124: ;
			}
			LA110: ;
			asgnRefNoCycle((void**) (&(*result).sons->data[((NI) 0)]), r);
			asgnRefNoCycle((void**) (&(*(*result).n).typ), r);
		}
		LA106: ;
	}
	LA101: ;
	{
		if (!!((genericparams == NIM_NIL))) goto LA135;
		{
			Tnode190813* n_420734;
			n_420734 = 0;
			{
				NI i_420786;
				NI HEX3Atmp_420788;
				NI LOC139;
				NI res_420790;
				i_420786 = 0;
				HEX3Atmp_420788 = 0;
				LOC139 = 0;
				LOC139 = len_191097(genericparams);
				HEX3Atmp_420788 = (LOC139 - 1);
				res_420790 = ((NI) 0);
				{
					while (1) {
						if (!(res_420790 <= HEX3Atmp_420788)) goto LA141;
						i_420786 = res_420790;
						n_420734 = (*genericparams).kindU.S6.sons->data[i_420786];
						{
							if (!(((*(*(*n_420734).kindU.S4.sym).typ).flags &(1<<((((NU8) 25))&31)))!=0)) goto LA144;
							(*(*n_420734).kindU.S4.sym).kind = ((NU8) 7);
							(*(*(*n_420734).kindU.S4.sym).typ).flags &= ~(((NI32)1) << ((((NU8) 25)) % (sizeof(NI32)*8)));
						}
						LA144: ;
						res_420790 += ((NI) 1);
					} LA141: ;
				}
			}
		}
	}
	LA135: ;
	return result;
}

N_NIMCALL(void, semparamlist_409284)(Tcontext244023* c, Tnode190813* n, Tnode190813* genericparams, Tsym190843* s) {
	asgnRefNoCycle((void**) (&(*s).typ), semproctypenode_420351(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_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3144));
		}
		LA9: ;
	}
	LA3: ;
}

N_NIMCALL(Tnode190813*, newparam_425884)(Templctx422582* c, Tnode190813* n, Tsym190843* s) {
	Tnode190813* result;
	Tsym190843* x;
	result = 0;
	(*s).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
	x = (*(*(*(*(*c).owner).typ).n).kindU.S6.sons->data[(NI)((*s).position + ((NI) 1))]).kindU.S4.sym;
	result = newsymnode_192338(x, (*n).info);
	return result;
}

N_NIMCALL(Tnode190813*, handlesym_426201)(Templctx422582* c, Tnode190813* n, Tsym190843* s) {
	Tnode190813* 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_425884(c, n, s);
		}
		goto LA5;
		LA9: ;
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = contains_187829((*c).tobind, (*s).Sup.id);
			if (!LOC12) goto LA13;
			result = symchoice_422316((*c).c, n, s, ((NU8) 0));
		}
		goto LA5;
		LA13: ;
		{
			NIM_BOOL LOC16;
			NIM_BOOL LOC18;
			NI LOC19;
			Tnode190813* LOC23;
			LOC16 = 0;
			LOC16 = ((*s).kind == ((NU8) 18));
			if (!(LOC16)) goto LA17;
			LOC18 = 0;
			LOC19 = 0;
			LOC19 = len_193377((*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_410055((*c).c, n, s, 512);
			result = sempatternbody_425870(c, LOC23);
		}
		goto LA5;
		LA21: ;
		{
		}
		LA5: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode190813*, sembindstmt_422421)(Tcontext244023* c, Tnode190813* n, Intset187056* tobind) {
	Tnode190813* result;
	result = 0;
	{
		NI i_422447;
		NI HEX3Atmp_422490;
		NI LOC2;
		NI res_422493;
		i_422447 = 0;
		HEX3Atmp_422490 = 0;
		LOC2 = 0;
		LOC2 = len_191097(n);
		HEX3Atmp_422490 = (LOC2 - 1);
		res_422493 = ((NI) 0);
		{
			while (1) {
				Tnode190813* a;
				Tsym190843* s;
				if (!(res_422493 <= HEX3Atmp_422490)) goto LA4;
				i_422447 = res_422493;
				a = (*n).kindU.S6.sons->data[i_422447];
				s = qualifiedlookup_249864(c, a, 2);
				{
					Tnode190813* sc;
					if (!!((s == NIM_NIL))) goto LA7;
					sc = symchoice_422316(c, n, s, ((NU8) 0));
					{
						if (!((*sc).kind == ((NU8) 3))) goto LA11;
						incl_187856(tobind, (*(*sc).kindU.S4.sym).Sup.id);
					}
					goto LA9;
					LA11: ;
					{
						{
							Tnode190813* x_422475;
							x_422475 = 0;
							{
								NI i_422483;
								NI HEX3Atmp_422485;
								NI LOC16;
								NI res_422487;
								i_422483 = 0;
								HEX3Atmp_422485 = 0;
								LOC16 = 0;
								LOC16 = len_191097(sc);
								HEX3Atmp_422485 = (LOC16 - 1);
								res_422487 = ((NI) 0);
								{
									while (1) {
										if (!(res_422487 <= HEX3Atmp_422485)) goto LA18;
										i_422483 = res_422487;
										x_422475 = (*sc).kindU.S6.sons->data[i_422483];
										incl_187856(tobind, (*(*x_422475).kindU.S4.sym).Sup.id);
										res_422487 += ((NI) 1);
									} LA18: ;
								}
							}
						}
					}
					LA9: ;
				}
				goto LA5;
				LA7: ;
				{
					illformedast_245229(a);
				}
				LA5: ;
				res_422493 += ((NI) 1);
			} LA4: ;
		}
	}
	result = newnodei_192351(((NU8) 1), (*n).info);
	return result;
}

N_NIMCALL(Tnode190813*, expectparam_426264)(Templctx422582* c, Tnode190813* n) {
	Tnode190813* result;
	Tsym190843* s;
	result = 0;
	s = qualifiedlookup_249864((*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_425884(c, n, s);
	}
	goto LA1;
	LA7: ;
	{
		localerror_165155((*n).info, ((NU16) 167), ((NimStringDesc*) &TMP2989));
		result = n;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, sempatternbody_425870)(Templctx422582* c, Tnode190813* n) {
	Tnode190813* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym190843* s;
		s = qualifiedlookup_249864((*c).c, n, 0);
		result = handlesym_426201(c, n, s);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_422421((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 40):
	{
		{
			NI LOC7;
			LOC7 = 0;
			LOC7 = len_191097(n);
			if (!!((LOC7 == ((NI) 2)))) goto LA8;
			localerror_165155((*n).info, ((NU16) 167), ((NimStringDesc*) &TMP2989));
		}
		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_425870(c, (*n).kindU.S6.sons->data[((NI) 0)]));
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), expectparam_426264(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		}
		goto LA5;
		LA11: ;
		{
			NIM_BOOL LOC14;
			Tnode190813* 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*) &TMP2991))) goto LA20;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), sempatternbody_425870(c, (*n).kindU.S6.sons->data[((NI) 0)]));
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 1)]), expectparam_426264(c, (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 1)]));
			}
			goto LA18;
			LA20: ;
			{
				localerror_165155((*n).info, ((NU16) 167), ((NimStringDesc*) &TMP2989));
			}
			LA18: ;
		}
		goto LA5;
		LA16: ;
		{
			localerror_165155((*n).info, ((NU16) 167), ((NimStringDesc*) &TMP2989));
		}
		LA5: ;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	case ((NU8) 32):
	{
		Tsym190843* s;
		s = qualifiedlookup_249864((*c).c, (*n).kindU.S6.sons->data[((NI) 0)], 0);
		{
			if (!!((s == NIM_NIL))) goto LA27;
			{
				NIM_BOOL LOC31;
				LOC31 = 0;
				LOC31 = ((*s).owner == (*c).owner);
				if (!(LOC31)) goto LA32;
				LOC31 = ((*s).kind == ((NU8) 3));
				LA32: ;
				if (!LOC31) goto LA33;
			}
			goto LA29;
			LA33: ;
			{
				NIM_BOOL LOC36;
				LOC36 = 0;
				LOC36 = contains_187829((*c).tobind, (*s).Sup.id);
				if (!LOC36) goto LA37;
			}
			goto LA29;
			LA37: ;
			{
				NIM_BOOL LOC40;
				NIM_BOOL LOC42;
				NI LOC43;
				Tnode190813* LOC47;
				LOC40 = 0;
				LOC40 = ((*s).kind == ((NU8) 18));
				if (!(LOC40)) goto LA41;
				LOC42 = 0;
				LOC43 = 0;
				LOC43 = len_193377((*s).typ);
				LOC42 = (LOC43 == ((NI) 1));
				if (LOC42) goto LA44;
				LOC42 = (((*s).flags &(1<<((((NU8) 25))&31)))!=0);
				LA44: ;
				LOC40 = LOC42;
				LA41: ;
				if (!LOC40) goto LA45;
				LOC47 = 0;
				LOC47 = semtemplateexpr_410055((*c).c, n, s, 512);
				result = sempatternbody_425870(c, LOC47);
				goto BeforeRet;
			}
			goto LA29;
			LA45: ;
			LA29: ;
		}
		LA27: ;
		{
			NIM_BOOL LOC50;
			Tnode190813* opr;
			LOC50 = 0;
			LOC50 = ((*n).kind == ((NU8) 29));
			if (!(LOC50)) goto LA51;
			LOC50 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2));
			LA51: ;
			if (!LOC50) goto LA52;
			opr = (*n).kindU.S6.sons->data[((NI) 0)];
			{
				NIM_BOOL LOC56;
				NI LOC60;
				LOC56 = 0;
				LOC56 = eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3145));
				if (LOC56) goto LA57;
				LOC56 = eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3146));
				LA57: ;
				if (!LOC56) goto LA58;
				LOC60 = 0;
				LOC60 = len_191097(n);
				result = newnodei_192407(((NU8) 153), (*n).info, LOC60);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), opr);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), sempatternbody_425870(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), expectparam_426264(c, (*n).kindU.S6.sons->data[((NI) 2)]));
				goto BeforeRet;
			}
			goto LA54;
			LA58: ;
			{
				NI LOC64;
				if (!eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP2991))) goto LA62;
				LOC64 = 0;
				LOC64 = len_191097(n);
				result = newnodei_192407(((NU8) 153), (*n).info, LOC64);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), opr);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), sempatternbody_425870(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 2)]), sempatternbody_425870(c, (*n).kindU.S6.sons->data[((NI) 2)]));
				goto BeforeRet;
			}
			goto LA54;
			LA62: ;
			LA54: ;
		}
		LA52: ;
		{
			NIM_BOOL LOC67;
			Tnode190813* opr;
			LOC67 = 0;
			LOC67 = ((*n).kind == ((NU8) 30));
			if (!(LOC67)) goto LA68;
			LOC67 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2));
			LA68: ;
			if (!LOC67) goto LA69;
			opr = (*n).kindU.S6.sons->data[((NI) 0)];
			{
				NI LOC75;
				if (!eqStrings((*(*opr).kindU.S5.ident).s, ((NimStringDesc*) &TMP3147))) goto LA73;
				LOC75 = 0;
				LOC75 = len_191097(n);
				result = newnodei_192407(((NU8) 153), (*n).info, LOC75);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), opr);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), sempatternbody_425870(c, (*n).kindU.S6.sons->data[((NI) 1)]));
				goto BeforeRet;
			}
			LA73: ;
		}
		LA69: ;
		{
			NI i_426490;
			NI HEX3Atmp_426528;
			NI LOC77;
			NI res_426531;
			i_426490 = 0;
			HEX3Atmp_426528 = 0;
			LOC77 = 0;
			LOC77 = sonslen_193403(n);
			HEX3Atmp_426528 = (NI)(LOC77 - ((NI) 1));
			res_426531 = ((NI) 0);
			{
				while (1) {
					if (!(res_426531 <= HEX3Atmp_426528)) goto LA79;
					i_426490 = res_426531;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_426490]), sempatternbody_425870(c, (*n).kindU.S6.sons->data[i_426490]));
					res_426531 += ((NI) 1);
				} LA79: ;
			}
		}
	}
	break;
	default:
	{
		switch ((*n).kind) {
		case ((NU8) 45):
		case ((NU8) 53):
		{
			Tsym190843* s;
			s = qualifiedlookup_249864((*c).c, n, 0);
			{
				if (!!((s == NIM_NIL))) goto LA84;
				{
					NIM_BOOL LOC88;
					LOC88 = 0;
					LOC88 = contains_187829((*c).tobind, (*s).Sup.id);
					if (!LOC88) goto LA89;
					result = symchoice_422316((*c).c, n, s, ((NU8) 0));
					goto BeforeRet;
				}
				goto LA86;
				LA89: ;
				{
					result = newidentnode_192313((*s).name, (*n).info);
					goto BeforeRet;
				}
				LA86: ;
			}
			LA84: ;
		}
		break;
		case ((NU8) 37):
		{
			{
				NI LOC95;
				LOC95 = 0;
				LOC95 = len_191097(n);
				if (!(LOC95 == ((NI) 1))) goto LA96;
				result = sempatternbody_425870(c, (*n).kindU.S6.sons->data[((NI) 0)]);
				goto BeforeRet;
			}
			LA96: ;
		}
		break;
		default:
		{
		}
		break;
		}
		{
			NI i_426524;
			NI HEX3Atmp_426536;
			NI LOC100;
			NI res_426539;
			i_426524 = 0;
			HEX3Atmp_426536 = 0;
			LOC100 = 0;
			LOC100 = sonslen_193403(n);
			HEX3Atmp_426536 = (NI)(LOC100 - ((NI) 1));
			res_426539 = ((NI) 0);
			{
				while (1) {
					if (!(res_426539 <= HEX3Atmp_426536)) goto LA102;
					i_426524 = res_426539;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_426524]), sempatternbody_425870(c, (*n).kindU.S6.sons->data[i_426524]));
					res_426539 += ((NI) 1);
				} LA102: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, sempattern_423548)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tscope190837* LOC1;
	Templctx422582 ctx;
	Tnode190813* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_187927((&ctx.tobind));
	initintset_187927((&ctx.tomixin));
	initintset_187927((&ctx.toinject));
	ctx.c = c;
	ctx.owner = getcurrowner_244256();
	LOC2 = 0;
	LOC2 = sempatternbody_425870((&ctx), n);
	result = flattenstmts_219759(LOC2);
	{
		if (!((*result).kind == ((NU8) 115) || (*result).kind == ((NU8) 126))) goto LA5;
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_191097(result);
			if (!(LOC9 == ((NI) 1))) goto LA10;
			result = (*result).kindU.S6.sons->data[((NI) 0)];
		}
		goto LA7;
		LA10: ;
		{
			NI LOC13;
			LOC13 = 0;
			LOC13 = len_191097(result);
			if (!(LOC13 == ((NI) 0))) goto LA14;
			localerror_165155((*n).info, ((NU16) 167), ((NimStringDesc*) &TMP2989));
		}
		goto LA7;
		LA14: ;
		LA7: ;
	}
	LA5: ;
	closescope_249111(c);
	return result;
}

N_NIMCALL(void, addgenericparamlisttoscope_437141)(Tcontext244023* c, Tnode190813* n) {
	{
		if (!!(((*n).kind == ((NU8) 75)))) goto LA3;
		illformedast_245229(n);
	}
	LA3: ;
	{
		NI i_437166;
		NI HEX3Atmp_437180;
		NI LOC6;
		NI res_437183;
		i_437166 = 0;
		HEX3Atmp_437180 = 0;
		LOC6 = 0;
		LOC6 = sonslen_193403(n);
		HEX3Atmp_437180 = (NI)(LOC6 - ((NI) 1));
		res_437183 = ((NI) 0);
		{
			while (1) {
				Tnode190813* a;
				if (!(res_437183 <= HEX3Atmp_437180)) goto LA8;
				i_437166 = res_437183;
				a = (*n).kindU.S6.sons->data[i_437166];
				{
					if (!((*a).kind == ((NU8) 3))) goto LA11;
					adddecl_249607(c, (*a).kindU.S4.sym);
				}
				goto LA9;
				LA11: ;
				{
					illformedast_245229(a);
				}
				LA9: ;
				res_437183 += ((NI) 1);
			} LA8: ;
		}
	}
}

N_NIMCALL(void, addparams_409293)(Tcontext244023* c, Tnode190813* n, NU8 kind) {
	{
		NI i_437942;
		NI HEX3Atmp_437956;
		NI LOC2;
		NI res_437959;
		i_437942 = 0;
		HEX3Atmp_437956 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_437956 = (NI)(LOC2 - ((NI) 1));
		res_437959 = ((NI) 1);
		{
			while (1) {
				if (!(res_437959 <= HEX3Atmp_437956)) goto LA4;
				i_437942 = res_437959;
				{
					if (!((*(*n).kindU.S6.sons->data[i_437942]).kind == ((NU8) 3))) goto LA7;
					addparamorresult_411885(c, (*(*n).kindU.S6.sons->data[i_437942]).kindU.S4.sym, kind);
				}
				goto LA5;
				LA7: ;
				{
					illformedast_245229(n);
				}
				LA5: ;
				res_437959 += ((NI) 1);
			} LA4: ;
		}
	}
}

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

static N_INLINE(NI, find_432063)(Tsym190843** a, NI aLen0, Tsym190843* item) {
	NI result;
{	result = 0;
	{
		Tsym190843* i_432107;
		NI i_432131;
		i_432107 = 0;
		i_432131 = ((NI) 0);
		{
			while (1) {
				if (!(i_432131 < aLen0)) goto LA3;
				i_432107 = a[i_432131];
				{
					if (!(i_432107 == item)) goto LA6;
					goto BeforeRet;
				}
				LA6: ;
				result += ((NI) 1);
				i_432131 += ((NI) 1);
			} LA3: ;
		}
	}
	result = ((NI) -1);
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, contains_432053)(Tsym190843** a, NI aLen0, Tsym190843* item) {
	NIM_BOOL result;
	NI LOC1;
{	result = 0;
	LOC1 = 0;
	LOC1 = find_432063(a, aLen0, item);
	result = (((NI) 0) <= LOC1);
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

static N_INLINE(Slice85768, HEX2EHEX2E_105273)(NI a, NI b) {
	Slice85768 result;
	memset((void*)(&result), 0, sizeof(result));
	result.a = a;
	result.b = b;
	return result;
}

N_NIMCALL(Tnode190813*, destroycase_431652)(Tcontext244023* c, Tnode190813* n, Tnode190813* holder) {
	Tnode190813* result;
	NI nontrivialfields;
	Tnodeseq190807* LOC1;
	Tnodeseq190807* LOC2;
	TY245103 LOC3;
	Tnode190813* LOC4;
	result = 0;
	nontrivialfields = ((NI) 0);
	LOC1 = 0;
	LOC1 = (Tnodeseq190807*) newSeq((&NTI190807), 0);
	result = newnode_192607(((NU8) 97), (*n).info, LOC1, NIM_NIL);
	LOC2 = 0;
	LOC2 = (Tnodeseq190807*) newSeq((&NTI190807), 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_192607(((NU8) 45), (*n).info, LOC2, NIM_NIL);
	addson_192819(result, LOC4);
	{
		NI i_431702;
		NI HEX3Atmp_431823;
		NI LOC6;
		NI res_431826;
		i_431702 = 0;
		HEX3Atmp_431823 = 0;
		LOC6 = 0;
		LOC6 = len_191097(n);
		HEX3Atmp_431823 = (NI)(LOC6 - ((NI) 1));
		res_431826 = ((NI) 1);
		{
			while (1) {
				Tnode190813* ni;
				Tnode190813* casebranch;
				NI LOC9;
				Slice85768 LOC10;
				Tnodeseq190807* LOC11;
				Tnode190813* stmt;
				Tnode190813* LOC12;
				if (!(res_431826 <= HEX3Atmp_431823)) goto LA8;
				i_431702 = res_431826;
				ni = HEX5BHEX5D_191244(n, i_431702);
				LOC9 = 0;
				LOC9 = len_191097(ni);
				LOC10 = HEX2EHEX2E_105273(((NI) 0), (NI)(LOC9 - ((NI) 2)));
				LOC11 = 0;
				LOC11 = HEX5BHEX5D_431717((*ni).kindU.S6.sons, LOC10);
				casebranch = newnode_192607((*ni).kind, (*ni).info, LOC11, NIM_NIL);
				LOC12 = 0;
				LOC12 = lastson_193431(ni);
				stmt = destroyfieldorfields_431596(c, LOC12, holder);
				{
					Tnodeseq190807* LOC17;
					Tnode190813* LOC18;
					if (!(stmt == NIM_NIL)) goto LA15;
					LOC17 = 0;
					LOC17 = (Tnodeseq190807*) newSeq((&NTI190807), 0);
					LOC18 = 0;
					LOC18 = newnode_192607(((NU8) 115), (*ni).info, LOC17, NIM_NIL);
					addson_192819(casebranch, LOC18);
				}
				goto LA13;
				LA15: ;
				{
					NI LOC20;
					addson_192819(casebranch, stmt);
					LOC20 = 0;
					LOC20 = len_191097(stmt);
					nontrivialfields += LOC20;
				}
				LA13: ;
				addson_192819(result, casebranch);
				res_431826 += ((NI) 1);
			} LA8: ;
		}
	}
	{
		if (!(nontrivialfields == ((NI) 0))) goto LA23;
		result = NIM_NIL;
	}
	LA23: ;
	return result;
}

N_NIMCALL(Tnode190813*, destroysym_431601)(Tcontext244023* c, Tsym190843* field, Tnode190813* holder) {
	Tnode190813* result;
	Ttype190849* destructablet;
	result = 0;
	destructablet = instantiatedestructor_431423(c, (*field).typ);
	{
		Tnodeseq190807* LOC5;
		TY245103 LOC6;
		Tnodeseq190807* LOC7;
		TY245103 LOC8;
		if (!!((destructablet == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = (Tnodeseq190807*) newSeq((&NTI190807), 2);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = usesym_354055((*destructablet).destructor);
		LOC7 = 0;
		LOC7 = (Tnodeseq190807*) newSeq((&NTI190807), 2);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = holder;
		LOC8[1] = usesym_354055(field);
		asgnRefNoCycle((void**) (&LOC7->data[0]), LOC8[0]);
		asgnRefNoCycle((void**) (&LOC7->data[1]), LOC8[1]);
		LOC6[1] = newnode_192607(((NU8) 45), (*field).info, LOC7, NIM_NIL);
		asgnRefNoCycle((void**) (&LOC5->data[0]), LOC6[0]);
		asgnRefNoCycle((void**) (&LOC5->data[1]), LOC6[1]);
		result = newnode_192607(((NU8) 27), (*field).info, LOC5, NIM_NIL);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode190813*, destroyfieldorfields_431596)(Tcontext244023* c, Tnode190813* field, Tnode190813* holder) {
	Tnode190813* result;
	result = 0;
	switch ((*field).kind) {
	case ((NU8) 139):
	{
		Tnode190813* stmt_431855;
		stmt_431855 = destroycase_431652(c, field, holder);
		{
			if (!!((stmt_431855 == NIM_NIL))) goto LA4;
			{
				if (!(result == NIM_NIL)) goto LA8;
				result = newnode_191401(((NU8) 115));
			}
			LA8: ;
			addson_192819(result, stmt_431855);
		}
		LA4: ;
	}
	break;
	case ((NU8) 3):
	{
		Tnode190813* stmt_431882;
		stmt_431882 = destroysym_431601(c, (*field).kindU.S4.sym, holder);
		{
			if (!!((stmt_431882 == NIM_NIL))) goto LA13;
			{
				if (!(result == NIM_NIL)) goto LA17;
				result = newnode_191401(((NU8) 115));
			}
			LA17: ;
			addson_192819(result, stmt_431882);
		}
		LA13: ;
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode190813* son_431909;
			son_431909 = 0;
			{
				NI i_431948;
				NI HEX3Atmp_431950;
				NI LOC22;
				NI res_431952;
				i_431948 = 0;
				HEX3Atmp_431950 = 0;
				LOC22 = 0;
				LOC22 = len_191097(field);
				HEX3Atmp_431950 = (LOC22 - 1);
				res_431952 = ((NI) 0);
				{
					while (1) {
						Tnode190813* stmt_431911;
						if (!(res_431952 <= HEX3Atmp_431950)) goto LA24;
						i_431948 = res_431952;
						son_431909 = (*field).kindU.S6.sons->data[i_431948];
						stmt_431911 = destroyfieldorfields_431596(c, son_431909, holder);
						{
							if (!!((stmt_431911 == NIM_NIL))) goto LA27;
							{
								if (!(result == NIM_NIL)) goto LA31;
								result = newnode_191401(((NU8) 115));
							}
							LA31: ;
							addson_192819(result, stmt_431911);
						}
						LA27: ;
						res_431952 += ((NI) 1);
					} LA24: ;
				}
			}
		}
	}
	break;
	default:
	{
		{
			NimStringDesc* LOC38;
			if (!NIM_TRUE) goto LA36;
			LOC38 = 0;
			LOC38 = HEX24_165306(TMP3162);
			internalerror_165218(LOC38);
		}
		LA36: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode190813*, generatedestructor_431970)(Tcontext244023* c, Ttype190849* t) {
	Tnode190813* result;
	Tnode190813* destructedobj;
	Tlineinfo163338 LOC12;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*t).n == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = HEX3DHEX3D_263718((*(*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_165306(TMP3160);
		internalerror_165218(LOC11);
	}
	LA9: ;
	LOC12 = unknownlineinfo_164027();
	destructedobj = newidentnode_192313(destructorparam_431420, LOC12);
	result = destroyfieldorfields_431596(c, (*t).n, destructedobj);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym190843*, symfromtype_410078)(Ttype190849* t, Tlineinfo163338 info) {
	Tsym190843* result;
	Tident167021* LOC5;
{	result = 0;
	{
		if (!!(((*t).sym == NIM_NIL))) goto LA3;
		result = (*t).sym;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getident_167463(((NimStringDesc*) &TMP3164));
	result = newsym_191656(((NU8) 7), LOC5, (*t).owner, info);
	(*result).flags |= ((NI32)1)<<((((NU8) 29))%(sizeof(NI32)*8));
	asgnRefNoCycle((void**) (&(*result).typ), t);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, symnodefromtype_410113)(Tcontext244023* c, Ttype190849* t, Tlineinfo163338 info) {
	Tnode190813* result;
	Tsym190843* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = symfromtype_410078(t, info);
	result = newsymnode_192338(LOC1, info);
	asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_244682(c, t));
	return result;
}

N_NIMCALL(Tnode190813*, semproc_431397)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = semprocaux_438890(c, n, ((NU8) 12), TMP3165, ((NU8) 0));
	return result;
}

N_NIMCALL(Ttype190849*, instantiatedestructor_431423)(Tcontext244023* c, Ttype190849* typ) {
	Ttype190849* result;
	Ttype190849* t;
	Ttype190849* LOC1;
	Ttype190849* typeholdinguserdefinition;
{	result = 0;
	LOC1 = 0;
	LOC1 = skiptypes_194167(typ, IL64(211106232532992));
	t = skipgenericalias_226119(LOC1);
	{
		if (!((*t).kind == ((NU8) 11))) goto LA4;
		typeholdinguserdefinition = base_220039(t);
	}
	goto LA2;
	LA4: ;
	{
		typeholdinguserdefinition = t;
	}
	LA2: ;
	{
		if (!!(((*typeholdinguserdefinition).destructor == NIM_NIL))) goto LA9;
		{
			TY432049 LOC13;
			NIM_BOOL LOC14;
			memset((void*)LOC13, 0, sizeof(LOC13));
			LOC13[0] = analyzingdestructor_431401;
			LOC13[1] = destructoristrivial_431402;
			LOC14 = 0;
			LOC14 = contains_432053(LOC13, 2, (*typeholdinguserdefinition).destructor);
			if (!!(LOC14)) goto LA15;
			result = typeholdinguserdefinition;
			goto BeforeRet;
		}
		goto LA11;
		LA15: ;
		{
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA11: ;
	}
	LA9: ;
	t = skiptypes_194167(t, 2048);
	switch ((*t).kind) {
	case ((NU8) 24):
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			Ttype190849* LOC21;
			LOC21 = 0;
			LOC21 = instantiatedestructor_431423(c, (*t).sons->data[((NI) 0)]);
			if (!!((LOC21 == NIM_NIL))) goto LA22;
			{
				Tident167021* LOC28;
				if (!(rangedestructorproc_431422 == NIM_NIL)) goto LA26;
				LOC28 = 0;
				LOC28 = getident_167463(((NimStringDesc*) &TMP3159));
				asgnRefNoCycle((void**) (&rangedestructorproc_431422), searchinscopes_249205(c, LOC28));
			}
			LA26: ;
			asgnRefNoCycle((void**) (&(*t).destructor), rangedestructorproc_431422);
			result = t;
			goto BeforeRet;
		}
		goto LA19;
		LA22: ;
		{
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA19: ;
	}
	break;
	case ((NU8) 18):
	case ((NU8) 17):
	{
		Tnode190813* generated;
		asgnRefNoCycle((void**) (&(*t).destructor), analyzingdestructor_431401);
		generated = generatedestructor_431970(c, t);
		{
			Tlineinfo163338 i;
			Tnode190813* fulldef;
			Tnodeseq190807* LOC40;
			TY193071 LOC41;
			Tnodeseq190807* LOC42;
			TY245103 LOC43;
			Tnodeseq190807* LOC44;
			TY446930 LOC45;
			Ttype190849* LOC46;
			Tnodeseq190807* LOC47;
			TY208680 LOC48;
			Tnode190813* semantizeddef;
			Tnode190813* LOC49;
			if (!!((generated == NIM_NIL))) goto LA33;
			{
				NimStringDesc* LOC39;
				if (!!(!(((*t).sym == NIM_NIL)))) goto LA37;
				LOC39 = 0;
				LOC39 = HEX24_165306(TMP3163);
				internalerror_165218(LOC39);
			}
			LA37: ;
			i = (*(*t).sym).info;
			LOC40 = 0;
			LOC40 = (Tnodeseq190807*) newSeq((&NTI190807), 7);
			memset((void*)LOC41, 0, sizeof(LOC41));
			LOC41[0] = newidentnode_192313(destructorname_431419, i);
			LOC41[1] = emptynode_191807;
			LOC41[2] = emptynode_191807;
			LOC42 = 0;
			LOC42 = (Tnodeseq190807*) newSeq((&NTI190807), 2);
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC43[0] = emptynode_191807;
			LOC44 = 0;
			LOC44 = (Tnodeseq190807*) newSeq((&NTI190807), 3);
			memset((void*)LOC45, 0, sizeof(LOC45));
			LOC45[0] = newidentnode_192313(destructorparam_431420, i);
			LOC46 = 0;
			LOC46 = makevartype_244643(c, t);
			LOC45[1] = symnodefromtype_410113(c, LOC46, (*(*t).sym).info);
			LOC45[2] = emptynode_191807;
			asgnRefNoCycle((void**) (&LOC44->data[0]), LOC45[0]);
			asgnRefNoCycle((void**) (&LOC44->data[1]), LOC45[1]);
			asgnRefNoCycle((void**) (&LOC44->data[2]), LOC45[2]);
			LOC43[1] = newnode_192607(((NU8) 35), i, LOC44, NIM_NIL);
			asgnRefNoCycle((void**) (&LOC42->data[0]), LOC43[0]);
			asgnRefNoCycle((void**) (&LOC42->data[1]), LOC43[1]);
			LOC41[3] = newnode_192607(((NU8) 76), i, LOC42, NIM_NIL);
			LOC47 = 0;
			LOC47 = (Tnodeseq190807*) newSeq((&NTI190807), 1);
			memset((void*)LOC48, 0, sizeof(LOC48));
			LOC48[0] = destructorpragma_431421;
			asgnRefNoCycle((void**) (&LOC47->data[0]), LOC48[0]);
			LOC41[4] = newnode_192607(((NU8) 90), i, LOC47, NIM_NIL);
			LOC41[5] = emptynode_191807;
			LOC41[6] = generated;
			asgnRefNoCycle((void**) (&LOC40->data[0]), LOC41[0]);
			asgnRefNoCycle((void**) (&LOC40->data[1]), LOC41[1]);
			asgnRefNoCycle((void**) (&LOC40->data[2]), LOC41[2]);
			asgnRefNoCycle((void**) (&LOC40->data[3]), LOC41[3]);
			asgnRefNoCycle((void**) (&LOC40->data[4]), LOC41[4]);
			asgnRefNoCycle((void**) (&LOC40->data[5]), LOC41[5]);
			asgnRefNoCycle((void**) (&LOC40->data[6]), LOC41[6]);
			fulldef = newnode_192607(((NU8) 79), i, LOC40, NIM_NIL);
			semantizeddef = semproc_431397(c, fulldef);
			LOC49 = 0;
			LOC49 = HEX5BHEX5D_191244(semantizeddef, ((NI) 0));
			asgnRefNoCycle((void**) (&(*t).destructor), (*LOC49).kindU.S4.sym);
			result = t;
			goto BeforeRet;
		}
		goto LA31;
		LA33: ;
		{
			asgnRefNoCycle((void**) (&(*t).destructor), destructoristrivial_431402);
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA31: ;
	}
	break;
	default:
	{
		result = NIM_NIL;
		goto BeforeRet;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, dodestructorstuff_431427)(Tcontext244023* c, Tsym190843* s, Tnode190813* n) {
	Ttype190849* t;
{	t = skiptypes_194167((*(*s).typ).sons->data[((NI) 1)], 8388608);
	{
		if (!((*t).kind == ((NU8) 9))) goto LA3;
		{
			NI i_431462;
			NI HEX3Atmp_431556;
			NI LOC6;
			NI res_431559;
			i_431462 = 0;
			HEX3Atmp_431556 = 0;
			LOC6 = 0;
			LOC6 = sonslen_193351(t);
			HEX3Atmp_431556 = (LOC6 - 1);
			res_431559 = ((NI) 1);
			{
				while (1) {
					if (!(res_431559 <= HEX3Atmp_431556)) goto LA8;
					i_431462 = res_431559;
					{
						if (!!(((*(*t).sons->data[i_431462]).kind == ((NU8) 12)))) goto LA11;
						localerror_165155((*n).info, ((NU16) 202), ((NimStringDesc*) &TMP2989));
						goto BeforeRet;
					}
					LA11: ;
					res_431559 += ((NI) 1);
				} LA8: ;
			}
		}
		t = base_220039(t);
	}
	goto LA1;
	LA3: ;
	{
		if (!((*t).kind == ((NU8) 54))) goto LA14;
		t = base_220039(t);
		{
			if (!!(((*t).kind == ((NU8) 10)))) goto LA18;
			localerror_165155((*n).info, ((NU16) 202), ((NimStringDesc*) &TMP2989));
			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_431512;
			NI HEX3Atmp_431565;
			NI LOC25;
			NI res_431568;
			i_431512 = 0;
			HEX3Atmp_431565 = 0;
			LOC25 = 0;
			LOC25 = sonslen_193351(t);
			HEX3Atmp_431565 = (NI)(LOC25 - ((NI) 1));
			res_431568 = ((NI) 0);
			{
				while (1) {
					if (!(res_431568 <= HEX3Atmp_431565)) goto LA27;
					i_431512 = res_431568;
					{
						Ttype190849* destructablet;
						{
							if (!((*t).sons->data[i_431512] == NIM_NIL)) goto LA31;
							goto LA28;
						}
						LA31: ;
						destructablet = instantiatedestructor_431423(c, (*t).sons->data[i_431512]);
						{
							Tnodeseq190807* LOC37;
							TY245103 LOC38;
							Tnode190813* LOC39;
							Tnode190813* LOC40;
							if (!!((destructablet == NIM_NIL))) goto LA35;
							LOC37 = 0;
							LOC37 = (Tnodeseq190807*) newSeq((&NTI190807), 2);
							memset((void*)LOC38, 0, sizeof(LOC38));
							LOC38[0] = usesym_354055((*destructablet).destructor);
							LOC39 = 0;
							LOC39 = HEX5BHEX5D_191244((*n).kindU.S6.sons->data[((NI) 3)], ((NI) 1));
							LOC38[1] = HEX5BHEX5D_191244(LOC39, ((NI) 0));
							asgnRefNoCycle((void**) (&LOC37->data[0]), LOC38[0]);
							asgnRefNoCycle((void**) (&LOC37->data[1]), LOC38[1]);
							LOC40 = 0;
							LOC40 = newnode_192607(((NU8) 27), (*(*t).sym).info, LOC37, NIM_NIL);
							addson_192819((*n).kindU.S6.sons->data[((NI) 6)], LOC40);
						}
						LA35: ;
					} LA28: ;
					res_431568 += ((NI) 1);
				} LA27: ;
			}
		}
	}
	LA22: ;
	}BeforeRet: ;
}

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

N_NIMCALL(void, semoverride_438632)(Tcontext244023* c, Tsym190843* s, Tnode190813* n) {
	NimStringDesc* LOC1;
{	LOC1 = 0;
	LOC1 = nsuNormalize((*(*s).name).s);
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3154))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3155))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3156))) goto LA3;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3157))) goto LA3;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3158))) goto LA4;
	goto LA5;
	LA2: ;
	{
		dodestructorstuff_431427(c, s, n);
		{
			NIM_BOOL LOC10;
			LOC10 = 0;
			LOC10 = experimentalmode_245279(c);
			if (!!(LOC10)) goto LA11;
			localerror_165166((*n).info, ((NimStringDesc*) &TMP3166));
		}
		LA11: ;
		(*s).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
	}
	goto LA6;
	LA3: ;
	{
		{
			NIM_BOOL LOC16;
			NIM_BOOL LOC17;
			NI LOC18;
			Ttype190849* LOC20;
			Ttype190849* t;
			Ttype190849* LOC24;
			Ttype190849* LOC25;
			LOC16 = 0;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = len_193377((*s).typ);
			LOC17 = (LOC18 == ((NI) 2));
			if (!(LOC17)) goto LA19;
			LOC20 = 0;
			LOC20 = skiptypes_194167((*(*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_225092((*(*s).typ).sons->data[((NI) 1)], (*(*s).typ).sons->data[((NI) 0)], 0);
			LA21: ;
			if (!LOC16) goto LA22;
			LOC24 = 0;
			LOC24 = skiptypes_194167((*(*s).typ).sons->data[((NI) 1)], IL64(211106232576256));
			LOC25 = 0;
			LOC25 = lastson_193442(LOC24);
			t = skiptypes_194167(LOC25, IL64(211106232576256));
			{
				while (1) {
					{
						if (!((*t).kind == ((NU8) 10))) goto LA30;
						t = lastson_193442(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_220032(t, ((NU8) 0));
					LOC45 = rawNewString(LOC46->Sup.len + 35);
appendString(LOC45, ((NimStringDesc*) &TMP3167));
appendString(LOC45, LOC46);
					localerror_165155((*n).info, ((NU16) 4), LOC45);
				}
				LA40: ;
			}
			goto LA36;
			LA38: ;
			{
				NimStringDesc* LOC48;
				NimStringDesc* LOC49;
				LOC48 = 0;
				LOC49 = 0;
				LOC49 = typetostring_220032(t, ((NU8) 0));
				LOC48 = rawNewString(LOC49->Sup.len + 27);
appendString(LOC48, ((NimStringDesc*) &TMP3168));
appendString(LOC48, LOC49);
				localerror_165155((*n).info, ((NU16) 4), LOC48);
			}
			LA36: ;
		}
		goto LA14;
		LA22: ;
		{
			localerror_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3169));
		}
		LA14: ;
		(*s).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
	}
	goto LA6;
	LA4: ;
	{
		Ttype190849* t;
		(*s).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
		t = (*s).typ;
		{
			NIM_BOOL LOC54;
			NIM_BOOL LOC55;
			NI LOC56;
			Ttype190849* obj;
			Ttype190849* objb;
			LOC54 = 0;
			LOC55 = 0;
			LOC56 = 0;
			LOC56 = len_193377(t);
			LOC55 = (LOC56 == ((NI) 3));
			if (!(LOC55)) goto LA57;
			LOC55 = ((*t).sons->data[((NI) 0)] == NIM_NIL);
			LA57: ;
			LOC54 = LOC55;
			if (!(LOC54)) goto LA58;
			LOC54 = ((*(*t).sons->data[((NI) 1)]).kind == ((NU8) 23));
			LA58: ;
			if (!LOC54) goto LA59;
			obj = (*(*t).sons->data[((NI) 1)]).sons->data[((NI) 0)];
			{
				while (1) {
					(*obj).flags |= ((NI32)1)<<((((NU8) 26))%(sizeof(NI32)*8));
					{
						if (!((*obj).kind == ((NU8) 10))) goto LA65;
						obj = lastson_193442(obj);
					}
					goto LA63;
					LA65: ;
					{
						if (!((*obj).kind == ((NU8) 9))) goto LA68;
						obj = (*obj).sons->data[((NI) 0)];
					}
					goto LA63;
					LA68: ;
					{
						goto LA61;
					}
					LA63: ;
				}
			} LA61: ;
			objb = (*t).sons->data[((NI) 2)];
			{
				while (1) {
					{
						if (!((*objb).kind == ((NU8) 10))) goto LA75;
						objb = lastson_193442(objb);
					}
					goto LA73;
					LA75: ;
					{
						if (!((*objb).kind == ((NU8) 9))) goto LA78;
						objb = (*objb).sons->data[((NI) 0)];
					}
					goto LA73;
					LA78: ;
					{
						goto LA71;
					}
					LA73: ;
				}
			} LA71: ;
			{
				NIM_BOOL LOC83;
				LOC83 = 0;
				LOC83 = ((*obj).kind == ((NU8) 17) || (*obj).kind == ((NU8) 13));
				if (!(LOC83)) goto LA84;
				LOC83 = sametype_225092(obj, objb, 0);
				LA84: ;
				if (!LOC83) goto LA85;
				{
					if (!(*obj).assignment == 0) goto LA89;
					asgnRefNoCycle((void**) (&(*obj).assignment), s);
				}
				goto LA87;
				LA89: ;
				{
					NimStringDesc* LOC92;
					NimStringDesc* LOC93;
					LOC92 = 0;
					LOC93 = 0;
					LOC93 = typetostring_220032(obj, ((NU8) 0));
					LOC92 = rawNewString(LOC93->Sup.len + 28);
appendString(LOC92, ((NimStringDesc*) &TMP3170));
appendString(LOC92, LOC93);
					localerror_165155((*n).info, ((NU16) 4), LOC92);
				}
				LA87: ;
				goto BeforeRet;
			}
			LA85: ;
		}
		LA59: ;
		localerror_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3171));
	}
	goto LA6;
	LA5: ;
	{
		{
			if (!(((*s).flags &(1<<((((NU8) 30))&31)))!=0)) goto LA97;
			localerror_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3172));
		}
		LA97: ;
	}
	LA6: ;
	}BeforeRet: ;
}

N_NIMCALL(void, typeallowedcheck_409980)(Tlineinfo163338 info, Ttype190849* typ, NU8 kind) {
	Ttype190849* t;
	t = typeallowed_228654(typ, kind);
	{
		if (!!((t == NIM_NIL))) goto LA3;
		{
			NimStringDesc* LOC9;
			NimStringDesc* LOC10;
			if (!(t == typ)) goto LA7;
			LOC9 = 0;
			LOC10 = 0;
			LOC10 = typetostring_220032(typ, ((NU8) 0));
			LOC9 = rawNewString(LOC10->Sup.len + 16);
appendString(LOC9, ((NimStringDesc*) &TMP3173));
appendString(LOC9, LOC10);
appendString(LOC9, ((NimStringDesc*) &TMP3174));
			localerror_165166(info, LOC9);
		}
		goto LA5;
		LA7: ;
		{
			NimStringDesc* LOC12;
			NimStringDesc* LOC13;
			NimStringDesc* LOC14;
			LOC12 = 0;
			LOC13 = 0;
			LOC13 = typetostring_220032(t, ((NU8) 0));
			LOC14 = 0;
			LOC14 = typetostring_220032(typ, ((NU8) 0));
			LOC12 = rawNewString(LOC13->Sup.len + LOC14->Sup.len + 36);
appendString(LOC12, ((NimStringDesc*) &TMP3173));
appendString(LOC12, LOC13);
appendString(LOC12, ((NimStringDesc*) &TMP3175));
appendString(LOC12, LOC14);
appendString(LOC12, ((NimStringDesc*) &TMP3174));
			localerror_165166(info, LOC12);
		}
		LA5: ;
	}
	LA3: ;
}

static N_INLINE(void, paramstypecheck_410015)(Tcontext244023* c, Ttype190849* typ) {
	typeallowedcheck_409980((*(*typ).n).info, typ, ((NU8) 10));
}

N_NIMCALL(void, activate_409327)(Tcontext244023* c, Tnode190813* n) {
}

N_NIMCALL(void, changetype_409253)(Tnode190813* n, Ttype190849* newtype, NIM_BOOL check) {
{	switch ((*n).kind) {
	case ((NU8) 39):
	case ((NU8) 41):
	{
		{
			NI i_443088;
			NI HEX3Atmp_443204;
			NI LOC3;
			NI res_443207;
			i_443088 = 0;
			HEX3Atmp_443204 = 0;
			LOC3 = 0;
			LOC3 = sonslen_193403(n);
			HEX3Atmp_443204 = (NI)(LOC3 - ((NI) 1));
			res_443207 = ((NI) 0);
			{
				while (1) {
					Ttype190849* LOC6;
					if (!(res_443207 <= HEX3Atmp_443204)) goto LA5;
					i_443088 = res_443207;
					LOC6 = 0;
					LOC6 = elemtype_220522(newtype);
					changetype_409253((*n).kindU.S6.sons->data[i_443088], LOC6, check);
					res_443207 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 37):
	{
		Ttype190849* tup;
		tup = skiptypes_194167(newtype, 2048);
		{
			if (!!(((*tup).kind == ((NU8) 18)))) goto LA10;
			{
				if (!((*tup).kind == ((NU8) 17))) goto LA14;
				goto BeforeRet;
			}
			LA14: ;
			internalerror_165199((*n).info, ((NimStringDesc*) &TMP3190));
		}
		goto LA8;
		LA10: ;
		{
			NIM_BOOL LOC17;
			NI LOC18;
			LOC17 = 0;
			LOC18 = 0;
			LOC18 = sonslen_193403(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_443132;
				NI HEX3Atmp_443212;
				NI LOC23;
				NI res_443215;
				i_443132 = 0;
				HEX3Atmp_443212 = 0;
				LOC23 = 0;
				LOC23 = sonslen_193403(n);
				HEX3Atmp_443212 = (NI)(LOC23 - ((NI) 1));
				res_443215 = ((NI) 0);
				{
					while (1) {
						Tnode190813* m;
						if (!(res_443215 <= HEX3Atmp_443212)) goto LA25;
						i_443132 = res_443215;
						m = (*(*n).kindU.S6.sons->data[i_443132]).kindU.S6.sons->data[((NI) 0)];
						{
							if (!!(((*m).kind == ((NU8) 3)))) goto LA28;
							internalerror_165199((*m).info, ((NimStringDesc*) &TMP3191));
							goto BeforeRet;
						}
						LA28: ;
						{
							Tsym190843* f;
							if (!!(((*tup).n == NIM_NIL))) goto LA32;
							f = getsymfromlist_198228((*tup).n, (*(*m).kindU.S4.sym).name, ((NI) 0));
							{
								if (!(f == NIM_NIL)) goto LA36;
								internalerror_165199((*m).info, ((NimStringDesc*) &TMP3192));
								goto BeforeRet;
							}
							LA36: ;
							changetype_409253((*(*n).kindU.S6.sons->data[i_443132]).kindU.S6.sons->data[((NI) 1)], (*f).typ, check);
						}
						goto LA30;
						LA32: ;
						{
							changetype_409253((*(*n).kindU.S6.sons->data[i_443132]).kindU.S6.sons->data[((NI) 1)], (*tup).sons->data[i_443132], check);
						}
						LA30: ;
						res_443215 += ((NI) 1);
					} LA25: ;
				}
			}
		}
		goto LA8;
		LA20: ;
		{
			{
				NI i_443189;
				NI HEX3Atmp_443220;
				NI LOC41;
				NI res_443223;
				i_443189 = 0;
				HEX3Atmp_443220 = 0;
				LOC41 = 0;
				LOC41 = sonslen_193403(n);
				HEX3Atmp_443220 = (NI)(LOC41 - ((NI) 1));
				res_443223 = ((NI) 0);
				{
					while (1) {
						if (!(res_443223 <= HEX3Atmp_443220)) goto LA43;
						i_443189 = res_443223;
						changetype_409253((*n).kindU.S6.sons->data[i_443189], (*tup).sons->data[i_443189], check);
						res_443223 += ((NI) 1);
					} LA43: ;
				}
			}
		}
		LA8: ;
	}
	break;
	case ((NU8) 5) ... ((NU8) 15):
	{
		{
			NI64 value;
			if (!check) goto LA47;
			value = (*n).kindU.S1.intval;
			{
				NIM_BOOL LOC51;
				NI64 LOC52;
				NI64 LOC54;
				NimStringDesc* LOC57;
				NimStringDesc* LOC58;
				NimStringDesc* LOC59;
				LOC51 = 0;
				LOC52 = 0;
				LOC52 = firstord_220004(newtype);
				LOC51 = (value < LOC52);
				if (LOC51) goto LA53;
				LOC54 = 0;
				LOC54 = lastord_220010(newtype);
				LOC51 = (LOC54 < value);
				LA53: ;
				if (!LOC51) goto LA55;
				LOC57 = 0;
				LOC58 = 0;
				LOC58 = nimInt64ToStr(value);
				LOC59 = 0;
				LOC59 = typetostring_220032(newtype, ((NU8) 0));
				LOC57 = rawNewString(LOC58->Sup.len + LOC59->Sup.len + 19);
appendString(LOC57, ((NimStringDesc*) &TMP3193));
appendString(LOC57, LOC58);
appendString(LOC57, ((NimStringDesc*) &TMP3194));
appendString(LOC57, LOC59);
				localerror_165155((*n).info, ((NU16) 4), LOC57);
			}
			LA55: ;
		}
		LA47: ;
	}
	break;
	default:
	{
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).typ), newtype);
	}BeforeRet: ;
}

N_NIMCALL(void, fixabstracttype_443407)(Tcontext244023* c, Tnode190813* n) {
	{
		NI i_443430;
		NI HEX3Atmp_443602;
		NI LOC2;
		NI res_443605;
		i_443430 = 0;
		HEX3Atmp_443602 = 0;
		LOC2 = 0;
		LOC2 = len_191097(n);
		HEX3Atmp_443602 = (LOC2 - 1);
		res_443605 = ((NI) 1);
		{
			while (1) {
				Tnode190813* it;
				if (!(res_443605 <= HEX3Atmp_443602)) goto LA4;
				i_443430 = res_443605;
				it = (*n).kindU.S6.sons->data[i_443430];
				{
					NIM_BOOL LOC7;
					Ttype190849* LOC9;
					LOC7 = 0;
					LOC7 = ((*it).kind == ((NU8) 59));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = skiptypes_194167((*it).typ, IL64(211106240964864));
					LOC7 = !(((*LOC9).kind == ((NU8) 27) || (*LOC9).kind == ((NU8) 48)));
					LA8: ;
					if (!LOC7) goto LA10;
					{
						Ttype190849* LOC14;
						Ttype190849* s;
						LOC14 = 0;
						LOC14 = skiptypes_194167((*(*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_194167((*it).typ, IL64(211106240964864));
						{
							if (!!(((*s).kind == ((NU8) 6)))) goto LA19;
							changetype_409253((*it).kindU.S6.sons->data[((NI) 1)], s, NIM_TRUE);
						}
						LA19: ;
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_443430]), (*it).kindU.S6.sons->data[((NI) 1)]);
					}
					LA15: ;
				}
				LA10: ;
				res_443605 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(NU8, isassignable_443642)(Tcontext244023* c, Tnode190813* n) {
	NU8 result;
	result = 0;
	result = isassignable_269056((*(*c).p).owner, n);
	return result;
}

N_NIMCALL(void, performprocvarcheck_431302)(Tcontext244023* c, Tnode190813* n, Tsym190843* s) {
	NI smoduleid;
	Tsym190843* LOC1;
	LOC1 = 0;
	LOC1 = getmodule_198243(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;
		{
			{
				Tsym190843* module_431341;
				Tsymseq190815* HEX3Atmp_431345;
				NI i_431348;
				NI L_431350;
				module_431341 = 0;
				HEX3Atmp_431345 = 0;
				HEX3Atmp_431345 = (*c).friendmodules;
				i_431348 = ((NI) 0);
				L_431350 = (HEX3Atmp_431345 ? HEX3Atmp_431345->Sup.len : 0);
				{
					while (1) {
						if (!(i_431348 < L_431350)) goto LA13;
						module_431341 = HEX3Atmp_431345->data[i_431348];
						{
							if (!(smoduleid == (*module_431341).Sup.id)) goto LA16;
							goto LA10;
						}
						LA16: ;
						i_431348 += ((NI) 1);
					} LA13: ;
				}
			}
			localerror_165155((*n).info, ((NU16) 134), (*(*s).name).s);
		} LA10: ;
	}
	LA8: ;
}

N_NIMCALL(void, semprocvarcheck_431366)(Tcontext244023* c, Tnode190813* n_431369) {
	Tnode190813* n;
	n = skipconv_229935(n_431369);
	{
		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_431302(c, n, (*n).kindU.S4.sym);
	}
	LA5: ;
}

N_NIMCALL(Tnode190813*, newhiddenaddrtaken_443650)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC5;
		LOC3 = 0;
		LOC3 = ((*n).kind == ((NU8) 65));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = (gcmd_154130 == ((NU8) 2));
		if (LOC5) goto LA6;
		LOC5 = (((*(*c).module).flags &(1<<((((NU8) 27))&31)))!=0);
		LA6: ;
		LOC3 = !(LOC5);
		LA4: ;
		if (!LOC3) goto LA7;
		checksonslen_245249(n, ((NI) 1));
		result = (*n).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA7: ;
	{
		Ttype190849* LOC10;
		LOC10 = 0;
		LOC10 = makevartype_244643(c, (*n).typ);
		result = newnodeit_192807(((NU8) 64), (*n).info, LOC10);
		addson_192819(result, n);
		{
			NU8 LOC13;
			LOC13 = 0;
			LOC13 = isassignable_443642(c, n);
			if (!!(((6 &(1<<((LOC13)&7)))!=0))) goto LA14;
			localerror_165155((*n).info, ((NU16) 127), ((NimStringDesc*) &TMP2989));
		}
		LA14: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, analyseifaddresstaken_443699)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC4;
			Ttype190849* LOC6;
			LOC4 = 0;
			LOC4 = !(((*(*n).kindU.S4.sym).typ == NIM_NIL));
			if (!(LOC4)) goto LA5;
			LOC6 = 0;
			LOC6 = skiptypes_194167((*(*n).kindU.S4.sym).typ, IL64(211106232576000));
			LOC4 = !(((*LOC6).kind == ((NU8) 23)));
			LA5: ;
			if (!LOC4) goto LA7;
			(*(*n).kindU.S4.sym).flags |= ((NI32)1)<<((((NU8) 15))%(sizeof(NI32)*8));
			result = newhiddenaddrtaken_443650(c, n);
		}
		LA7: ;
	}
	break;
	case ((NU8) 45):
	{
		checksonslen_245249(n, ((NI) 2));
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 3)))) goto LA12;
			internalerror_165199((*n).info, ((NimStringDesc*) &TMP3196));
			goto BeforeRet;
		}
		LA12: ;
		{
			Ttype190849* LOC16;
			LOC16 = 0;
			LOC16 = skiptypes_194167((*(*(*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 |= ((NI32)1)<<((((NU8) 15))%(sizeof(NI32)*8));
			result = newhiddenaddrtaken_443650(c, n);
		}
		LA17: ;
	}
	break;
	case ((NU8) 42):
	{
		checkminsonslen_245259(n, ((NI) 1));
		{
			Ttype190849* LOC22;
			LOC22 = 0;
			LOC22 = skiptypes_194167((*(*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 |= ((NI32)1)<<((((NU8) 15))%(sizeof(NI32)*8));
			}
			LA27: ;
			result = newhiddenaddrtaken_443650(c, n);
		}
		LA23: ;
	}
	break;
	default:
	{
		result = newhiddenaddrtaken_443650(c, n);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, analyseifaddresstakenincall_443851)(Tcontext244023* c, Tnode190813* n) {
	Ttype190849* t;
{	checkminsonslen_245259(n, ((NI) 1));
	t = skiptypes_194167((*(*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 = ((TMP3195[(*(*(*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_443895;
			NI HEX3Atmp_444013;
			NI LOC8;
			NI res_444016;
			i_443895 = 0;
			HEX3Atmp_444013 = 0;
			LOC8 = 0;
			LOC8 = sonslen_193403(n);
			HEX3Atmp_444013 = (NI)(LOC8 - ((NI) 1));
			res_444016 = ((NI) 1);
			{
				while (1) {
					if (!(res_444016 <= HEX3Atmp_444013)) goto LA10;
					i_443895 = res_444016;
					{
						NIM_BOOL LOC13;
						NIM_BOOL LOC14;
						NI LOC15;
						Ttype190849* LOC18;
						LOC13 = 0;
						LOC14 = 0;
						LOC15 = 0;
						LOC15 = sonslen_193351(t);
						LOC14 = (i_443895 < LOC15);
						if (!(LOC14)) goto LA16;
						LOC14 = !(((*t).sons->data[i_443895] == NIM_NIL));
						LA16: ;
						LOC13 = LOC14;
						if (!(LOC13)) goto LA17;
						LOC18 = 0;
						LOC18 = skiptypes_194167((*t).sons->data[i_443895], IL64(211106232576000));
						LOC13 = ((*LOC18).kind == ((NU8) 23));
						LA17: ;
						if (!LOC13) goto LA19;
						{
							NU8 LOC23;
							LOC23 = 0;
							LOC23 = isassignable_443642(c, (*n).kindU.S6.sons->data[i_443895]);
							if (!!(((6 &(1<<((LOC23)&7)))!=0))) goto LA24;
							{
								if (!!(((*(*n).kindU.S6.sons->data[i_443895]).kind == ((NU8) 64)))) goto LA28;
								localerror_165155((*(*n).kindU.S6.sons->data[i_443895]).info, ((NU16) 127), ((NimStringDesc*) &TMP2989));
							}
							LA28: ;
						}
						LA24: ;
					}
					LA19: ;
					res_444016 += ((NI) 1);
				} LA10: ;
			}
		}
		goto BeforeRet;
	}
	LA5: ;
	{
		NI i_443965;
		NI HEX3Atmp_444021;
		NI LOC31;
		NI res_444024;
		i_443965 = 0;
		HEX3Atmp_444021 = 0;
		LOC31 = 0;
		LOC31 = sonslen_193403(n);
		HEX3Atmp_444021 = (NI)(LOC31 - ((NI) 1));
		res_444024 = ((NI) 1);
		{
			while (1) {
				if (!(res_444024 <= HEX3Atmp_444021)) goto LA33;
				i_443965 = res_444024;
				{
					if (!((*(*n).kindU.S6.sons->data[i_443965]).kind == ((NU8) 32))) goto LA36;
					analyseifaddresstakenincall_443851(c, (*n).kindU.S6.sons->data[i_443965]);
				}
				LA36: ;
				semprocvarcheck_431366(c, (*n).kindU.S6.sons->data[i_443965]);
				{
					NIM_BOOL LOC40;
					NI LOC41;
					Ttype190849* LOC43;
					LOC40 = 0;
					LOC41 = 0;
					LOC41 = sonslen_193351(t);
					LOC40 = (i_443965 < LOC41);
					if (!(LOC40)) goto LA42;
					LOC43 = 0;
					LOC43 = skiptypes_194167((*t).sons->data[i_443965], IL64(211106232576000));
					LOC40 = ((*LOC43).kind == ((NU8) 23));
					LA42: ;
					if (!LOC40) goto LA44;
					{
						if (!!(((*(*n).kindU.S6.sons->data[i_443965]).kind == ((NU8) 64)))) goto LA48;
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_443965]), analyseifaddresstaken_443699(c, (*n).kindU.S6.sons->data[i_443965]));
					}
					LA48: ;
				}
				LA44: ;
				res_444024 += ((NI) 1);
			} LA33: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode190813*, semaddr_444049)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* x;
	result = 0;
	result = newnodei_192351(((NU8) 63), (*n).info);
	x = semexprwithtype_409211(c, n, 0);
	{
		NU8 LOC3;
		LOC3 = 0;
		LOC3 = isassignable_443642(c, x);
		if (!!(((6 &(1<<((LOC3)&7)))!=0))) goto LA4;
		localerror_165155((*n).info, ((NU16) 125), ((NimStringDesc*) &TMP2989));
	}
	LA4: ;
	add_191164(result, x);
	asgnRefNoCycle((void**) (&(*result).typ), makeptrtype_244212(c, (*x).typ));
	return result;
}

N_NIMCALL(Tnode190813*, semtypeof_444070)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* typexpr;
	Ttype190849* LOC1;
	result = 0;
	result = newnodei_192351(((NU8) 132), (*n).info);
	typexpr = semexprwithtype_409211(c, n, 4);
	add_191164(result, typexpr);
	LOC1 = 0;
	LOC1 = skiptypes_194167((*typexpr).typ, IL64(562949953421568));
	asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_244682(c, LOC1));
	return result;
}

N_NIMCALL(Tnode190813*, semispartof_444082)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	NU8 r;
	Tnode190813* LOC1;
	Tnode190813* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_191244(n, ((NI) 1));
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_191244(n, ((NI) 2));
	r = ispartof_399375(LOC1, LOC2);
	result = newintnodet_256028(((NI64) (r)), n);
	return result;
}

N_NIMCALL(Tnode190813*, evaltypetrait_444129)(Tnode190813* trait, Ttype190849* operand, Tsym190843* context) {
	Tnode190813* result;
	Ttype190849* typ;
	NimStringDesc* LOC1;
	result = 0;
	typ = skiptypes_194167(operand, 256);
	LOC1 = 0;
	LOC1 = nsuNormalize((*(*(*trait).kindU.S4.sym).name).s);
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3200))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP3201))) goto LA3;
	goto LA4;
	LA2: ;
	{
		NimStringDesc* LOC7;
		LOC7 = 0;
		LOC7 = typetostring_220032(typ, ((NU8) 0));
		result = newstrnode_191644(((NU8) 20), LOC7);
		asgnRefNoCycle((void**) (&(*result).typ), newtype_193140(((NU8) 28), context));
		(*result).info = (*trait).info;
	}
	goto LA5;
	LA3: ;
	{
		NI LOC9;
		LOC9 = 0;
		LOC9 = len_193377(typ);
		result = newintnode_191608(((NU8) 6), ((NI64) ((NI)(LOC9 - ((NI) (((*typ).kind == ((NU8) 25))))))));
		asgnRefNoCycle((void**) (&(*result).typ), newtype_193140(((NU8) 31), context));
		(*result).info = (*trait).info;
	}
	goto LA5;
	LA4: ;
	{
		{
			NimStringDesc* LOC15;
			if (!NIM_TRUE) goto LA13;
			LOC15 = 0;
			LOC15 = HEX24_165306(TMP3202);
			internalerror_165218(LOC15);
		}
		LA13: ;
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode190813*, semtypetraits_444166)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Ttype190849* t;
	result = 0;
	checkminsonslen_245259(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_165306(TMP3198);
		internalerror_165218(LOC7);
	}
	LA5: ;
	{
		NI LOC10;
		Tnode190813* LOC13;
		Tsym190843* LOC14;
		LOC10 = 0;
		LOC10 = sonslen_193351(t);
		if (!(((NI) 0) < LOC10)) goto LA11;
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_191244(n, ((NI) 0));
		LOC14 = 0;
		LOC14 = getcurrowner_244256();
		result = evaltypetrait_444129(LOC13, t, LOC14);
	}
	goto LA8;
	LA11: ;
	{
		result = n;
	}
	LA8: ;
	return result;
}

N_NIMCALL(NI, expectintlit_444100)(Tcontext244023* c, Tnode190813* n) {
	NI result;
	Tnode190813* 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_165155((*n).info, ((NU16) 7), ((NimStringDesc*) &TMP2989));
	}
	break;
	}
	return result;
}

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

N_NIMCALL(Tnode190813*, seminstantiationinfo_444110)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	NI idx;
	NI usefullpaths;
	Tlineinfo163338 info;
	Tnode190813* filename;
	Ttype190849* LOC1;
	Tnode190813* line;
	Ttype190849* LOC7;
	NI LOC8;
	result = 0;
	result = newnodeit_192807(((NU8) 37), (*n).info, (*n).typ);
	idx = expectintlit_444100(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	usefullpaths = expectintlit_444100(c, (*n).kindU.S6.sons->data[((NI) 2)]);
	info = getinfocontext_164237(idx);
	LOC1 = 0;
	LOC1 = getsystype_238030(((NU8) 28));
	filename = newnodeit_192807(((NU8) 20), (*n).info, LOC1);
	{
		if (!!((usefullpaths == ((NI) 0)))) goto LA4;
		asgnRefNoCycle((void**) (&(*filename).kindU.S3.strval), tofullpath_164276(info.fileindex));
	}
	goto LA2;
	LA4: ;
	{
		asgnRefNoCycle((void**) (&(*filename).kindU.S3.strval), tofilename_164266(info.fileindex));
	}
	LA2: ;
	LOC7 = 0;
	LOC7 = getsystype_238030(((NU8) 31));
	line = newnodeit_192807(((NU8) 6), (*n).info, LOC7);
	LOC8 = 0;
	LOC8 = tolinenumber_164439(info);
	(*line).kindU.S1.intval = ((NI64) (LOC8));
	add_191164(result, filename);
	add_191164(result, line);
	return result;
}

N_NIMCALL(Tnode190813*, semord_444204)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	NI64 LOC1;
	NI64 LOC2;
	Ttype190849* LOC3;
	result = 0;
	result = n;
	LOC1 = 0;
	LOC1 = firstord_220004((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
	LOC2 = 0;
	LOC2 = lastord_220010((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
	LOC3 = 0;
	LOC3 = getsystype_238030(((NU8) 31));
	asgnRefNoCycle((void**) (&(*result).typ), makerangetype_245182(c, LOC1, LOC2, (*n).info, LOC3));
	return result;
}

N_NIMCALL(Tnode190813*, semlowhigh_442647)(Tcontext244023* c, Tnode190813* n, NU16 m) {
	Tnode190813* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_165155((*n).info, ((NU16) 69), optostr_442653[(m)- 4]);
	}
	goto LA1;
	LA4: ;
	{
		Ttype190849* typ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 1)], 32));
		typ = skiptypes_194167((*(*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_238030(((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_194167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(2306054115454658816)));
		}
		break;
		case ((NU8) 12):
		{
			Tnode190813* LOC11;
			LOC11 = 0;
			LOC11 = copytree_195028(n);
			asgnRefNoCycle((void**) (&(*n).typ), maketypefromexpr_244727(c, LOC11));
		}
		break;
		default:
		{
			localerror_165155((*n).info, ((NU16) 67), optostr_442653[(m)- 4]);
		}
		break;
		}
	}
	LA1: ;
	result = n;
	return result;
}

N_NIMCALL(Tnode190813*, semshallowcopy_444276)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	result = 0;
	{
		NI LOC3;
		Tnode190813* LOC6;
		Tnode190813* LOC7;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		result = newnodei_192351(((NU8) 74), (*n).info);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_191244(n, ((NI) 1));
		add_191164(result, LOC6);
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_191244(n, ((NI) 2));
		add_191164(result, LOC7);
		result = semasgn_447081(c, result);
	}
	goto LA1;
	LA4: ;
	{
		result = semdirectop_410032(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, sembindsym_444214)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* sl;
	Tnode190813* ismixin;
	Tnode190813* id;
	Tident167021* LOC13;
	Tsym190843* s;
{	result = 0;
	result = copynode_194640(n);
	add_191164(result, (*n).kindU.S6.sons->data[((NI) 0)]);
	sl = semconstexpr_410485(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	{
		if (!!(((*sl).kind == ((NU8) 20) || (*sl).kind == ((NU8) 21) || (*sl).kind == ((NU8) 22)))) goto LA3;
		localerror_165155((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 6), ((NimStringDesc*) &TMP2989));
		result = errornode_245160(c, n);
		goto BeforeRet;
	}
	LA3: ;
	ismixin = semconstexpr_410485(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_165155((*(*n).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 104), ((NimStringDesc*) &TMP2989));
		result = errornode_245160(c, n);
		goto BeforeRet;
	}
	LA11: ;
	LOC13 = 0;
	LOC13 = getident_167463((*sl).kindU.S3.strval);
	id = newidentnode_192313(LOC13, (*n).info);
	s = qualifiedlookup_249864(c, id, 2);
	{
		Tnode190813* sc;
		if (!!((s == NIM_NIL))) goto LA16;
		sc = symchoice_422316(c, id, s, ((NU8) ((*ismixin).kindU.S1.intval)));
		add_191164(result, sc);
	}
	goto LA14;
	LA16: ;
	{
		localerror_165155((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 61), (*sl).kindU.S3.strval);
	}
	LA14: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isnegative_444298)(Tnode190813* n_444300) {
	NIM_BOOL result;
	Tnode190813* n;
	result = 0;
	n = skipconv_229935(n_444300);
	{
		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 == ((NU16) 105) || (*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic == ((NU16) 106));
	}
	goto LA1;
	LA8: ;
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isstrangearray_444281)(Ttype190849* t_444283) {
	NIM_BOOL result;
	Ttype190849* t;
	NIM_BOOL LOC1;
	NI64 LOC3;
	result = 0;
	t = skiptypes_194167(t_444283, IL64(211106232576256));
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 16));
	if (!(LOC1)) goto LA2;
	LOC3 = 0;
	LOC3 = firstord_220004(t);
	LOC1 = !((LOC3 == IL64(0)));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Tnode190813*, magicsafteroverloadresolution_444353)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	Tnode190813* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_191244(n, ((NI) 0));
	switch ((*(*LOC1).kindU.S4.sym).magic) {
	case ((NU16) 10):
	{
		checksonslen_245249(n, ((NI) 2));
		result = semaddr_444049(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU16) 11):
	{
		checksonslen_245249(n, ((NI) 2));
		result = semtypeof_444070(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU16) 164):
	{
		result = semispartof_444082(c, n, flags);
	}
	break;
	case ((NU16) 7):
	{
		result = semtypetraits_444166(c, n);
	}
	break;
	case ((NU16) 165):
	{
		Tnode190813* LOC7;
		NimStringDesc* LOC8;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_191244(n, ((NI) 1));
		LOC8 = 0;
		LOC8 = rendertree_212058(LOC7, 4);
		result = newstrnodet_256042(LOC8, n);
		asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 28)));
	}
	break;
	case ((NU16) 261):
	{
		result = seminstantiationinfo_444110(c, n);
	}
	break;
	case ((NU16) 25):
	{
		result = semord_444204(c, n);
	}
	break;
	case ((NU16) 5):
	case ((NU16) 4):
	{
		Tnode190813* LOC12;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_191244(n, ((NI) 0));
		result = semlowhigh_442647(c, n, (*(*LOC12).kindU.S4.sym).magic);
	}
	break;
	case ((NU16) 15):
	{
		result = semshallowcopy_444276(c, n, flags);
	}
	break;
	case ((NU16) 253):
	{
		result = sembindsym_444214(c, n);
	}
	break;
	case ((NU16) 218):
	{
		Tnode190813* LOC16;
		result = n;
		LOC16 = 0;
		LOC16 = HEX5BHEX5D_191244(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*result).typ), (*LOC16).typ);
	}
	break;
	case ((NU16) 151):
	{
		result = n;
		{
			if (!!((*(*c).p).bracketexpr == 0)) goto LA20;
			{
				NIM_BOOL LOC24;
				NIM_BOOL LOC26;
				NI LOC27;
				LOC24 = 0;
				LOC24 = isnegative_444298((*n).kindU.S6.sons->data[((NI) 1)]);
				if (LOC24) goto LA25;
				LOC26 = 0;
				LOC27 = 0;
				LOC27 = len_191097(n);
				LOC26 = (((NI) 2) < LOC27);
				if (!(LOC26)) goto LA28;
				LOC26 = isnegative_444298((*n).kindU.S6.sons->data[((NI) 2)]);
				LA28: ;
				LOC24 = LOC26;
				LA25: ;
				if (!LOC24) goto LA29;
				localerror_165166((*n).info, ((NimStringDesc*) &TMP3205));
			}
			LA29: ;
		}
		LA20: ;
	}
	break;
	case ((NU16) 12):
	{
		result = (*n).kindU.S6.sons->data[((NI) 1)];
		{
			if (!(*(*c).p).bracketexpr == 0) goto LA34;
			localerror_165166((*n).info, ((NimStringDesc*) &TMP3206));
		}
		goto LA32;
		LA34: ;
		{
			NU8 LOC37;
			NimStringDesc* LOC40;
			NimStringDesc* LOC41;
			LOC37 = 0;
			LOC37 = checkforsideeffects_268869((*(*c).p).bracketexpr);
			if (!!((LOC37 == ((NU8) 2)))) goto LA38;
			LOC40 = 0;
			LOC40 = rendertree_212058((*(*c).p).bracketexpr, 0);
			LOC41 = 0;
			LOC41 = nsuFormatSingleElem(((NimStringDesc*) &TMP3207), LOC40);
			localerror_165166((*n).info, LOC41);
		}
		goto LA32;
		LA38: ;
		{
			NIM_BOOL LOC43;
			NimStringDesc* LOC46;
			NimStringDesc* LOC47;
			LOC43 = 0;
			LOC43 = isstrangearray_444281((*(*(*c).p).bracketexpr).typ);
			if (!LOC43) goto LA44;
			LOC46 = 0;
			LOC46 = rendertree_212058((*(*c).p).bracketexpr, 0);
			LOC47 = 0;
			LOC47 = nsuFormatSingleElem(((NimStringDesc*) &TMP3208), LOC46);
			localerror_165166((*n).info, LOC47);
		}
		goto LA32;
		LA44: ;
		{
			Tnode190813* lenexpr;
			Tident167021* LOC49;
			Tnode190813* LOC50;
			Tnode190813* lenexprb;
			lenexpr = newnodei_192351(((NU8) 27), (*n).info);
			LOC49 = 0;
			LOC49 = getident_167463(((NimStringDesc*) &TMP3209));
			LOC50 = 0;
			LOC50 = newidentnode_192313(LOC49, (*n).info);
			add_191164(lenexpr, LOC50);
			add_191164(lenexpr, (*(*c).p).bracketexpr);
			lenexprb = semexprwithtype_409211(c, lenexpr, 0);
			{
				NIM_BOOL LOC53;
				NIM_BOOL LOC55;
				NimStringDesc* LOC58;
				NimStringDesc* LOC59;
				LOC53 = 0;
				LOC53 = (*lenexprb).typ == 0;
				if (LOC53) goto LA54;
				LOC55 = 0;
				LOC55 = isordinaltype_220093((*lenexprb).typ);
				LOC53 = !(LOC55);
				LA54: ;
				if (!LOC53) goto LA56;
				LOC58 = 0;
				LOC58 = rendertree_212058(lenexpr, 0);
				LOC59 = 0;
				LOC59 = nsuFormatSingleElem(((NimStringDesc*) &TMP3210), LOC58);
				localerror_165166((*n).info, LOC59);
			}
			goto LA51;
			LA56: ;
			{
				Ttype190849* LOC61;
				Tsym190843* LOC62;
				Tnode190813* LOC63;
				LOC61 = 0;
				LOC61 = getsystype_238030(((NU8) 31));
				result = newnodeit_192807(((NU8) 27), (*n).info, LOC61);
				LOC62 = 0;
				LOC62 = createmagic_195986(((NimStringDesc*) &TMP3211), ((NU16) 42));
				LOC63 = 0;
				LOC63 = newsymnode_192338(LOC62, (*n).info);
				add_191164(result, LOC63);
				add_191164(result, lenexprb);
				add_191164(result, (*n).kindU.S6.sons->data[((NI) 1)]);
			}
			LA51: ;
		}
		LA32: ;
	}
	break;
	case ((NU16) 13):
	{
		Transformation406013 plugin;
		Tnode190813* LOC65;
		LOC65 = 0;
		LOC65 = HEX5BHEX5D_191244(n, ((NI) 0));
		plugin = getplugin_406094((*LOC65).kindU.S4.sym);
		{
			NimStringDesc* LOC70;
			Tnode190813* LOC71;
			if (!plugin == 0) goto LA68;
			LOC70 = 0;
			LOC71 = 0;
			LOC71 = HEX5BHEX5D_191244(n, ((NI) 0));
			LOC70 = rawNewString((*(*(*LOC71).kindU.S4.sym).name).s->Sup.len + 19);
appendString(LOC70, ((NimStringDesc*) &TMP3212));
appendString(LOC70, (*(*(*LOC71).kindU.S4.sym).name).s);
			localerror_165166((*n).info, LOC70);
			result = n;
		}
		goto LA66;
		LA68: ;
		{
			result = plugin(c, n);
		}
		LA66: ;
	}
	break;
	default:
	{
		result = n;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode190813*, fixuptypeaftereval_410201)(Tcontext244023* c, Tnode190813* evaluated, Tnode190813* eorig) {
	Tnode190813* result;
	result = 0;
	{
		if (!((*(*eorig).typ).kind == ((NU8) 6) || (*(*eorig).typ).kind == ((NU8) 7) || (*(*eorig).typ).kind == ((NU8) 8))) goto LA3;
		result = semexprwithtype_409211(c, evaluated, 0);
	}
	goto LA1;
	LA3: ;
	{
		Ttype190849* expectedtype;
		result = evaluated;
		expectedtype = skiptypes_194167((*eorig).typ, IL64(576460752303423488));
		annotatetype_402134(result, expectedtype);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, evalatcompiletime_444428)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tsym190843* 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;
		Tnode190813* call;
		NIM_BOOL allconst;
		LOC9 = 0;
		LOC10 = 0;
		LOC10 = !(((*callee).magic == ((NU16) 0)));
		if (!(LOC10)) goto LA11;
		LOC10 = ((TMP3213[(*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_192807(((NU8) 27), (*n).info, (*n).typ);
		add_191164(call, (*n).kindU.S6.sons->data[((NI) 0)]);
		allconst = NIM_TRUE;
		{
			NI i_444512;
			NI HEX3Atmp_444825;
			NI LOC16;
			NI res_444828;
			i_444512 = 0;
			HEX3Atmp_444825 = 0;
			LOC16 = 0;
			LOC16 = len_191097(n);
			HEX3Atmp_444825 = (LOC16 - 1);
			res_444828 = ((NI) 1);
			{
				while (1) {
					Tnode190813* a;
					if (!(res_444828 <= HEX3Atmp_444825)) goto LA18;
					i_444512 = res_444828;
					a = getconstexpr_256004((*c).module, (*n).kindU.S6.sons->data[i_444512]);
					{
						if (!(a == NIM_NIL)) goto LA21;
						allconst = NIM_FALSE;
						a = (*n).kindU.S6.sons->data[i_444512];
						{
							if (!((*a).kind == ((NU8) 58))) goto LA25;
							a = (*a).kindU.S6.sons->data[((NI) 1)];
						}
						LA25: ;
					}
					LA21: ;
					add_191164(call, a);
					res_444828 += ((NI) 1);
				} LA18: ;
			}
		}
		{
			if (!allconst) goto LA29;
			result = getconstexpr_256004((*c).module, call);
			{
				if (!result == 0) goto LA33;
				result = n;
			}
			goto LA31;
			LA33: ;
			{
				goto BeforeRet;
			}
			LA31: ;
		}
		LA29: ;
		asgnRefNoCycle((void**) (&(*result).typ), getintervaltype_256364((*callee).magic, call));
	}
	LA13: ;
	{
		{
			NI LOC39;
			Ttypeseq190845* LOC57;
			TY349187 LOC58;
			LOC39 = 0;
			LOC39 = len_191097(n);
			if (!(((NI) 1) < LOC39)) goto LA40;
			{
				NI i_444570;
				NI HEX3Atmp_444833;
				NI LOC43;
				NI res_444836;
				i_444570 = 0;
				HEX3Atmp_444833 = 0;
				LOC43 = 0;
				LOC43 = len_191097(n);
				HEX3Atmp_444833 = (LOC43 - 1);
				res_444836 = ((NI) 1);
				{
					while (1) {
						if (!(res_444836 <= HEX3Atmp_444833)) goto LA45;
						i_444570 = res_444836;
						{
							NIM_BOOL LOC48;
							NIM_BOOL LOC49;
							Tnode190813* LOC50;
							Tnode190813* LOC52;
							Tnode190813* LOC54;
							LOC48 = 0;
							LOC49 = 0;
							LOC50 = 0;
							LOC50 = HEX5BHEX5D_191244(n, i_444570);
							LOC49 = (*LOC50).typ == 0;
							if (LOC49) goto LA51;
							LOC52 = 0;
							LOC52 = HEX5BHEX5D_191244(n, i_444570);
							LOC49 = !(((*(*LOC52).typ).kind == ((NU8) 59)));
							LA51: ;
							LOC48 = LOC49;
							if (LOC48) goto LA53;
							LOC54 = 0;
							LOC54 = HEX5BHEX5D_191244(n, i_444570);
							LOC48 = !((((*(*LOC54).typ).flags &(1<<((((NU8) 9))&31)))!=0));
							LA53: ;
							if (!LOC48) goto LA55;
							goto LA36;
						}
						LA55: ;
						res_444836 += ((NI) 1);
					} LA45: ;
				}
			}
			LOC57 = 0;
			LOC57 = (Ttypeseq190845*) newSeq((&NTI190845), 1);
			memset((void*)LOC58, 0, sizeof(LOC58));
			LOC58[0] = (*n).typ;
			asgnRefNoCycle((void**) (&LOC57->data[0]), LOC58[0]);
			asgnRefNoCycle((void**) (&(*n).typ), newtypewithsons_244807(c, ((NU8) 59), LOC57));
			(*(*n).typ).flags |= ((NI32)1)<<((((NU8) 9))%(sizeof(NI32)*8));
		}
		LA40: ;
	} LA36: ;
	{
		NIM_BOOL LOC61;
		NIM_BOOL LOC62;
		Tnode190813* 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_154126 &(1<<((((NU8) 20))&31)))!=0));
			LA70: ;
			if (!LOC69) goto LA71;
			goto BeforeRet;
		}
		LA71: ;
		{
			if (!!(((TMP3213[(*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_195651(callee);
			LA80: ;
			if (!LOC79) goto LA81;
			goto BeforeRet;
		}
		LA81: ;
		{
			NIM_BOOL LOC85;
			Ttype190849* LOC87;
			LOC85 = 0;
			LOC85 = !(((*n).typ == NIM_NIL));
			if (!(LOC85)) goto LA86;
			LOC87 = 0;
			LOC87 = typeallowed_228654((*n).typ, ((NU8) 10));
			LOC85 = !((LOC87 == NIM_NIL));
			LA86: ;
			if (!LOC85) goto LA88;
			goto BeforeRet;
		}
		LA88: ;
		call = newnodeit_192807(((NU8) 27), (*n).info, (*n).typ);
		add_191164(call, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_444779;
			NI HEX3Atmp_444841;
			NI LOC91;
			NI res_444844;
			i_444779 = 0;
			HEX3Atmp_444841 = 0;
			LOC91 = 0;
			LOC91 = len_191097(n);
			HEX3Atmp_444841 = (LOC91 - 1);
			res_444844 = ((NI) 1);
			{
				while (1) {
					Tnode190813* a;
					if (!(res_444844 <= HEX3Atmp_444841)) goto LA93;
					i_444779 = res_444844;
					a = getconstexpr_256004((*c).module, (*n).kindU.S6.sons->data[i_444779]);
					{
						if (!(a == NIM_NIL)) goto LA96;
						result = n;
						goto BeforeRet;
					}
					LA96: ;
					add_191164(call, a);
					res_444844 += ((NI) 1);
				} LA93: ;
			}
		}
		{
			if (!(((*callee).flags &(1<<((((NU8) 23))&31)))!=0)) goto LA100;
			result = evalstaticexpr_397832((*c).module, call, (*(*c).p).owner);
			{
				NimStringDesc* LOC106;
				if (!result == 0) goto LA104;
				LOC106 = 0;
				LOC106 = rendertree_212058(call, 0);
				localerror_165155((*n).info, ((NU16) 208), LOC106);
			}
			goto LA102;
			LA104: ;
			{
				result = fixuptypeaftereval_410201(c, result, n);
			}
			LA102: ;
		}
		goto LA98;
		LA100: ;
		{
			result = evalconstexpr_397821((*c).module, call);
			{
				if (!result == 0) goto LA111;
				result = n;
			}
			goto LA109;
			LA111: ;
			{
				result = fixuptypeaftereval_410201(c, result, n);
			}
			LA109: ;
		}
		LA98: ;
	}
	LA65: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, aftercallactions_445366)(Tcontext244023* c, Tnode190813* n, Tnode190813* orig, NU16 flags) {
	Tnode190813* result;
	Tsym190843* callee;
	result = 0;
	result = n;
	callee = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	switch ((*callee).kind) {
	case ((NU8) 17):
	{
		result = semmacroexpr_410066(c, result, orig, callee, flags);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_410055(c, result, callee, flags);
	}
	break;
	default:
	{
		semfinishoperands_350385(c, result);
		activate_409327(c, result);
		fixabstracttype_443407(c, result);
		analyseifaddresstakenincall_443851(c, result);
		{
			if (!!(((*callee).magic == ((NU16) 0)))) goto LA6;
			result = magicsafteroverloadresolution_444353(c, result, flags);
		}
		LA6: ;
	}
	break;
	}
	{
		if (!((*c).intypeclass == ((NI) 0))) goto LA10;
		result = evalatcompiletime_444428(c, result);
	}
	LA10: ;
	return result;
}

N_NIMCALL(Tnode190813*, semdirectop_410032)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	Tnode190813* norig;
	result = 0;
	norig = copytree_195028(n);
	result = semoverloadedcallanalyseeffects_444900(c, n, norig, flags);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		result = aftercallactions_445366(c, result, norig, flags);
	}
	goto LA1;
	LA3: ;
	{
		result = errornode_245160(c, n);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, evalpattern_410546)(Tcontext244023* c, Tnode190813* n, Tnode190813* orig) {
	Tnode190813* result;
	NimStringDesc* rule;
	Tsym190843* 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_165306(TMP3188);
		internalerror_165218(LOC7);
	}
	LA5: ;
	rule = 0;
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = ((goptions_154126 &(1<<((((NU8) 12))&31)))!=0);
		if (!(LOC10)) goto LA11;
		LOC10 = ((gnotes_164014 &(IL64(1)<<(((((NU16) 276)- 230))&IL64(63))))!=0);
		LA11: ;
		if (!LOC10) goto LA12;
		rule = rendertree_212058(n, 4);
	}
	LA12: ;
	s = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	switch ((*s).kind) {
	case ((NU8) 17):
	{
		result = semmacroexpr_410066(c, n, orig, s, 0);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_410055(c, n, s, 0);
	}
	break;
	default:
	{
		result = semdirectop_410032(c, n, 0);
	}
	break;
	}
	{
		NIM_BOOL LOC19;
		NimStringDesc* LOC23;
		NimStringDesc* LOC24;
		LOC19 = 0;
		LOC19 = ((goptions_154126 &(1<<((((NU8) 12))&31)))!=0);
		if (!(LOC19)) goto LA20;
		LOC19 = ((gnotes_164014 &(IL64(1)<<(((((NU16) 276)- 230))&IL64(63))))!=0);
		LA20: ;
		if (!LOC19) goto LA21;
		LOC23 = 0;
		LOC24 = 0;
		LOC24 = rendertree_212058(result, 4);
		LOC23 = rawNewString(rule->Sup.len + LOC24->Sup.len + 7);
appendString(LOC23, rule);
appendString(LOC23, ((NimStringDesc*) &TMP3294));
appendString(LOC23, LOC24);
appendString(LOC23, ((NimStringDesc*) &TMP3174));
		message_165188((*orig).info, ((NU16) 276), LOC23);
	}
	LA21: ;
	return result;
}

N_NIMCALL(Tnode190813*, applypatterns_410630)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = n;
	{
		NI i_410662;
		NI HEX3Atmp_411013;
		NI res_411016;
		i_410662 = 0;
		HEX3Atmp_411013 = 0;
		HEX3Atmp_411013 = (((*c).patterns ? (*c).patterns->Sup.len : 0) - 1);
		res_411016 = HEX3Atmp_411013;
		{
			while (1) {
				Tsym190843* pattern;
				if (!(((NI) 0) <= res_411016)) goto LA3;
				i_410662 = res_411016;
				pattern = (*c).patterns->data[i_410662];
				{
					Tnode190813* x;
					if (!!(pattern == 0)) goto LA6;
					x = applyrule_401303(c, pattern, result);
					{
						if (!!(x == 0)) goto LA10;
						evaltemplatecounter_383256 += ((NI) 1);
						{
							if (!(((NI) 100) < evaltemplatecounter_383256)) goto LA14;
							globalerror_165134((*n).info, ((NU16) 183), ((NimStringDesc*) &TMP2989));
						}
						LA14: ;
						asgnRefNoCycle((void**) (&(*c).patterns->data[i_410662]), NIM_NIL);
						{
							if (!((*x).kind == ((NU8) 115))) goto LA18;
							asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 1)]), evalpattern_410546(c, (*x).kindU.S6.sons->data[((NI) 1)], result));
							result = flattenstmts_219759(x);
						}
						goto LA16;
						LA18: ;
						{
							result = evalpattern_410546(c, x, result);
						}
						LA16: ;
						evaltemplatecounter_383256 -= ((NI) 1);
						asgnRefNoCycle((void**) (&(*c).patterns->data[i_410662]), pattern);
					}
					LA10: ;
				}
				LA6: ;
				res_411016 -= ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode190813*, hlo_410542)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* 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_410630(c, n);
		{
			if (!(result == n)) goto LA17;
			{
				NI i_411125;
				NI HEX3Atmp_411142;
				NI LOC20;
				NI res_411145;
				i_411125 = 0;
				HEX3Atmp_411142 = 0;
				LOC20 = 0;
				LOC20 = safelen_191125(result);
				HEX3Atmp_411142 = (LOC20 - 1);
				res_411145 = ((NI) 0);
				{
					while (1) {
						Tnode190813* a;
						Tnode190813* h;
						if (!(res_411145 <= HEX3Atmp_411142)) goto LA22;
						i_411125 = res_411145;
						a = (*result).kindU.S6.sons->data[i_411125];
						h = hlo_410542(c, a);
						{
							if (!!((h == a))) goto LA25;
							asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_411125]), h);
						}
						LA25: ;
						res_411145 += ((NI) 1);
					} LA22: ;
				}
			}
		}
		goto LA15;
		LA17: ;
		{
			{
				NIM_BOOL LOC30;
				LOC30 = 0;
				LOC30 = isemptytype_195933((*n).typ);
				if (!(LOC30)) goto LA31;
				LOC30 = isemptytype_195933((*result).typ);
				LA31: ;
				if (!LOC30) goto LA32;
			}
			goto LA28;
			LA32: ;
			{
				result = fitnode_409245(c, (*n).typ, result);
			}
			LA28: ;
			result = commonoptimizations_369597((*c).module, result);
			result = hlo_410542(c, result);
			result = commonoptimizations_369597((*c).module, result);
		}
		LA15: ;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, hlobody_411161)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*c).patterns ? (*c).patterns->Sup.len : 0) == ((NI) 0));
		if (LOC3) goto LA4;
		LOC3 = !(((goptions_154126 &(1<<((((NU8) 21))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
		goto BeforeRet;
	}
	LA5: ;
	(*c).hloloopdetector = ((NI) 0);
	result = hlo_410542(c, n);
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(void, fixupinstantiatedsymbols_412063)(Tcontext244023* c, Tsym190843* s) {
	{
		NI i_412087;
		NI HEX3Atmp_412097;
		NI res_412100;
		i_412087 = 0;
		HEX3Atmp_412097 = 0;
		HEX3Atmp_412097 = (NI)(((*c).generics ? (*c).generics->Sup.len : 0) - ((NI) 1));
		res_412100 = ((NI) 0);
		{
			while (1) {
				if (!(res_412100 <= HEX3Atmp_412097)) goto LA3;
				i_412087 = res_412100;
				{
					Tsym190843* oldprc;
					Tscope190837* LOC8;
					Tnode190813* n;
					Tnode190813* LOC9;
					if (!((*(*c).generics->data[i_412087].genericsym).Sup.id == (*s).Sup.id)) goto LA6;
					oldprc = (*(*c).generics->data[i_412087].inst).sym;
					pushinfocontext_164192((*oldprc).info);
					LOC8 = 0;
					LOC8 = openscope_249091(c);
					n = (*oldprc).ast;
					LOC9 = 0;
					LOC9 = getbody_235648(s);
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), copytree_195028(LOC9));
					instantiatebody_411941(c, n, NIM_NIL, oldprc);
					closescope_249111(c);
					popinfocontext_164211();
				}
				LA6: ;
				res_412100 += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(Tsym190843*, searchforborrowproc_415322)(Tcontext244023* c, Tscope190837* startscope, Tsym190843* fn) {
	Tsym190843* result;
	Tnode190813* call;
	NIM_BOOL hasdistinct;
	Tnode190813* LOC1;
	result = 0;
	call = newnodei_192351(((NU8) 27), (*fn).info);
	hasdistinct = NIM_FALSE;
	LOC1 = 0;
	LOC1 = newidentnode_192313((*fn).name, (*fn).info);
	add_191164(call, LOC1);
	{
		NI i_415354;
		NI HEX3Atmp_415409;
		NI LOC3;
		NI res_415412;
		i_415354 = 0;
		HEX3Atmp_415409 = 0;
		LOC3 = 0;
		LOC3 = len_191097((*(*fn).typ).n);
		HEX3Atmp_415409 = (LOC3 - 1);
		res_415412 = ((NI) 1);
		{
			while (1) {
				Tnode190813* param;
				Ttype190849* t;
				Ttype190849* LOC12;
				Tnode190813* LOC13;
				if (!(res_415412 <= HEX3Atmp_415409)) goto LA5;
				i_415354 = res_415412;
				param = (*(*(*fn).typ).n).kindU.S6.sons->data[i_415354];
				t = skiptypes_194167((*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_229320(t);
				LOC13 = 0;
				LOC13 = newnodeit_192807(((NU8) 1), (*fn).info, LOC12);
				add_191164(call, LOC13);
				res_415412 += ((NI) 1);
			} LA5: ;
		}
	}
	{
		Tnode190813* resolved;
		NU32 LOC18;
		if (!hasdistinct) goto LA16;
		LOC18 = 0;
		LOC18 |=(1<<((NI32)((*fn).kind)%(sizeof(NI32)*8)));
		resolved = semoverloadedcall_414892(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_437975)(Tcontext244023* c, Tnode190813* n, Tsym190843* s) {
	Tsym190843* b;
	b = searchforborrowproc_415322(c, (*(*c).currentscope).parent, s);
	{
		if (!!((b == NIM_NIL))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), newsymnode_192325(b));
	}
	goto LA1;
	LA3: ;
	{
		localerror_165155((*n).info, ((NU16) 139), ((NimStringDesc*) &TMP2989));
	}
	LA1: ;
}

N_NIMCALL(void, sideeffectscheck_412116)(Tcontext244023* c, Tsym190843* s) {
	{
		if (!((3072 & (*s).flags) == 3072)) goto LA3;
		localerror_165155((*s).info, ((NU16) 217), (*(*s).name).s);
	}
	LA3: ;
}

N_NIMCALL(Tnode190813*, semprocaux_438890)(Tcontext244023* c, Tnode190813* n, NU8 kind, Tspecialwords172012 validpragmas, NU8 phase) {
	Tnode190813* result;
	Tsym190843* s;
	NIM_BOOL typeisdetermined;
	NIM_BOOL isanon;
	Tscope190837* oldscope;
	Tscope190837* LOC25;
	Tnode190813* gp;
	Tsym190843* proto;
{	result = 0;
	result = semprocannotation_438127(c, n, validpragmas);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = n;
	checksonslen_245249(n, ((NI) 7));
	s = 0;
	typeisdetermined = NIM_FALSE;
	isanon = NIM_FALSE;
	{
		Tnode190813* LOC7;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_191244(n, ((NI) 0));
		if (!!(((*LOC7).kind == ((NU8) 3)))) goto LA8;
		{
			Tnode190813* LOC12;
			Tsym190843* LOC15;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_191244(n, ((NI) 0));
			if (!((*LOC12).kind == ((NU8) 1))) goto LA13;
			LOC15 = 0;
			LOC15 = getcurrowner_244256();
			s = newsym_191656(kind, idanon_167495, LOC15, (*n).info);
			isanon = NIM_TRUE;
		}
		goto LA10;
		LA13: ;
		{
			s = semidentdef_434142(c, (*n).kindU.S6.sons->data[((NI) 0)], kind);
		}
		LA10: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(s));
		asgnRefNoCycle((void**) (&(*s).ast), n);
		{
			NIM_BOOL LOC19;
			LOC19 = 0;
			LOC19 = (((*(*c).module).flags &(1<<((((NU8) 8))&31)))!=0);
			if (!(LOC19)) goto LA20;
			LOC19 = !((((*(*c).module).flags &(1<<((((NU8) 13))&31)))!=0));
			LA20: ;
			if (!LOC19) goto LA21;
			addinterfaceoverloadablesymat_249746(c, (*c).currentscope, s);
			(*s).flags |= ((NI32)1)<<((((NU8) 4))%(sizeof(NI32)*8));
			goto BeforeRet;
		}
		LA21: ;
	}
	goto LA5;
	LA8: ;
	{
		Tnode190813* LOC24;
		LOC24 = 0;
		LOC24 = HEX5BHEX5D_191244(n, ((NI) 0));
		s = (*LOC24).kindU.S4.sym;
		asgnRefNoCycle((void**) (&(*s).owner), getcurrowner_244256());
		typeisdetermined = ((*s).typ == NIM_NIL);
		asgnRefNoCycle((void**) (&(*s).ast), n);
	}
	LA5: ;
	oldscope = (*c).currentscope;
	pushowner_244261(s);
	LOC25 = 0;
	LOC25 = openscope_249091(c);
	gp = 0;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA28;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semgenericparamlist_421951(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA26;
	LA28: ;
	{
		gp = newnodei_192351(((NU8) 75), (*n).info);
	}
	LA26: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA33;
		semparamlist_409284(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NI LOC37;
			LOC37 = 0;
			LOC37 = sonslen_193403(gp);
			if (!(((NI) 0) < LOC37)) goto LA38;
			{
				if (!((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1))) goto LA42;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), gp);
			}
			LA42: ;
		}
		LA38: ;
	}
	goto LA31;
	LA33: ;
	{
		asgnRefNoCycle((void**) (&(*s).typ), newproctype_420342(c, (*n).info, NIM_NIL));
	}
	LA31: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA47;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), sempattern_423548(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	}
	LA47: ;
	{
		if (!((49152 &(1<<(((*s).kind)&31)))!=0)) goto LA51;
		(*(*s).typ).flags |= ((NI32)1)<<((((NU8) 14))%(sizeof(NI32)*8));
	}
	LA51: ;
	proto = searchforproc_259278(c, oldscope, s);
	{
		if (!(proto == NIM_NIL)) goto LA55;
		{
			if (!((*s).kind == ((NU8) 15))) goto LA59;
			(*(*s).typ).callconv = ((NU8) 8);
		}
		goto LA57;
		LA59: ;
		{
			Toptionentry244005* LOC62;
			LOC62 = 0;
			LOC62 = lastoptionentry_244188(c);
			(*(*s).typ).callconv = (*LOC62).defaultcc;
		}
		LA57: ;
		{
			if (!(((*s).flags &(1<<((((NU8) 31))&31)))!=0)) goto LA65;
		}
		goto LA63;
		LA65: ;
		{
			if (!((520256 &(1<<((kind)&31)))!=0)) goto LA68;
			{
				if (!!(typeisdetermined)) goto LA72;
				addinterfaceoverloadablesymat_249746(c, oldscope, s);
			}
			LA72: ;
		}
		goto LA63;
		LA68: ;
		{
			{
				if (!!(typeisdetermined)) goto LA77;
				addinterfacedeclat_249677(c, oldscope, s);
			}
			LA77: ;
		}
		LA63: ;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA81;
			pragma_260069(c, s, (*n).kindU.S6.sons->data[((NI) 4)], validpragmas);
		}
		goto LA79;
		LA81: ;
		{
			implicitpragmas_263505(c, s, n, validpragmas);
		}
		LA79: ;
	}
	goto LA53;
	LA55: ;
	{
		Tscope190837* LOC93;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA87;
			localerror_165155((*(*n).kindU.S6.sons->data[((NI) 4)]).info, ((NU16) 136), ((NimStringDesc*) &TMP2989));
		}
		LA87: ;
		{
			if (!!((((*proto).flags &(1<<((((NU8) 4))&31)))!=0))) goto LA91;
			wrongredefinition_249588((*n).info, (*(*proto).name).s);
		}
		LA91: ;
		(*proto).flags &= ~(((NI32)1) << ((((NU8) 4)) % (sizeof(NI32)*8)));
		closescope_249111(c);
		LOC93 = 0;
		LOC93 = openscope_249091(c);
		{
			if (!!(((*(*(*proto).ast).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA96;
			addgenericparamlisttoscope_437141(c, (*(*proto).ast).kindU.S6.sons->data[((NI) 2)]);
		}
		LA96: ;
		addparams_409293(c, (*(*proto).typ).n, (*proto).kind);
		(*proto).info = (*s).info;
		asgnRefNoCycle((void**) (&(*s).typ), (*proto).typ);
		s = proto;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), (*(*proto).ast).kindU.S6.sons->data[((NI) 2)]);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 3)]), (*(*proto).ast).kindU.S6.sons->data[((NI) 3)]);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 4)]), (*(*proto).ast).kindU.S6.sons->data[((NI) 4)]);
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA100;
			internalerror_165199((*n).info, ((NimStringDesc*) &TMP3152));
		}
		LA100: ;
		asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym), proto);
		{
			NIM_BOOL LOC104;
			NimStringDesc* LOC108;
			LOC104 = 0;
			LOC104 = importantcomments_154164();
			if (!(LOC104)) goto LA105;
			LOC104 = !((*(*proto).ast).comment == 0);
			LA105: ;
			if (!LOC104) goto LA106;
			LOC108 = 0;
			LOC108 = (*n).comment; (*n).comment = copyStringRC1((*(*proto).ast).comment);
			if (LOC108) nimGCunrefNoCycle(LOC108);
		}
		LA106: ;
		asgnRefNoCycle((void**) (&(*proto).ast), n);
		popowner_244267();
		pushowner_244261(s);
	}
	LA53: ;
	(*s).options = goptions_154126;
	{
		NIM_BOOL LOC111;
		LOC111 = 0;
		LOC111 = (((*s).flags &(1<<((((NU8) 30))&31)))!=0);
		if (LOC111) goto LA112;
		LOC111 = ((NU8)((*(*s).name).s->data[((NI) 0)]) == (NU8)(61));
		LA112: ;
		if (!LOC111) goto LA113;
		semoverride_438632(c, s, n);
	}
	LA113: ;
	{
		NIM_BOOL usepseudogenerics;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1)))) goto LA117;
		{
			if (!(((*s).flags &(1<<((((NU8) 26))&31)))!=0)) goto LA121;
			localerror_165155((*(*n).kindU.S6.sons->data[((NI) 6)]).info, ((NU16) 137), (*(*s).name).s);
		}
		LA121: ;
		usepseudogenerics = ((393216 &(1<<((kind)&31)))!=0);
		{
			NIM_BOOL LOC125;
			LOC125 = 0;
			LOC125 = ((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1));
			if (LOC125) goto LA126;
			LOC125 = usepseudogenerics;
			LA126: ;
			if (!LOC125) goto LA127;
			{
				if (!!(usepseudogenerics)) goto LA131;
				paramstypecheck_410015(c, (*s).typ);
			}
			LA131: ;
			pushproccon_244359(c, s);
			(*(*c).p).wasforwarded = !((proto == NIM_NIL));
			maybeaddresult_409301(c, s, n);
			{
				Tnode190813* sembody;
				Tnode190813* LOC137;
				if (!!((((*s).flags &(1<<((((NU8) 5))&31)))!=0))) goto LA135;
				LOC137 = 0;
				LOC137 = semprocbody_409238(c, (*n).kindU.S6.sons->data[((NI) 6)]);
				sembody = hlobody_411161(c, LOC137);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_370118((*c).module, sembody, s));
			}
			LA135: ;
			popproccon_244391(c);
		}
		goto LA123;
		LA127: ;
		{
			Tscope190837* LOC147;
			{
				NIM_BOOL LOC141;
				Tident167021* LOC145;
				Tsym190843* LOC146;
				LOC141 = 0;
				LOC141 = !(((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL));
				if (!(LOC141)) goto LA142;
				LOC141 = !(((49152 &(1<<((kind)&31)))!=0));
				LA142: ;
				if (!LOC141) goto LA143;
				LOC145 = 0;
				LOC145 = getident_167463(((NimStringDesc*) &TMP3025));
				LOC146 = 0;
				LOC146 = newsym_191656(((NU8) 0), LOC145, NIM_NIL, (*n).info);
				adddecl_249607(c, LOC146);
			}
			LA143: ;
			LOC147 = 0;
			LOC147 = openscope_249091(c);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semgenericstmt_415688(c, (*n).kindU.S6.sons->data[((NI) 6)]));
			closescope_249111(c);
			fixupinstantiatedsymbols_412063(c, s);
		}
		LA123: ;
		{
			if (!(((*s).flags &(1<<((((NU8) 5))&31)))!=0)) goto LA150;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), emptynode_191807);
		}
		LA150: ;
	}
	goto LA115;
	LA117: ;
	{
		{
			if (!!((proto == NIM_NIL))) goto LA155;
			localerror_165155((*n).info, ((NU16) 138), (*(*proto).name).s);
		}
		LA155: ;
		{
			NIM_BOOL LOC159;
			LOC159 = 0;
			LOC159 = ((67108896 & (*s).flags) == 0);
			if (!(LOC159)) goto LA160;
			LOC159 = ((*s).magic == ((NU16) 0));
			LA160: ;
			if (!LOC159) goto LA161;
			(*s).flags |= ((NI32)1)<<((((NU8) 4))%(sizeof(NI32)*8));
		}
		goto LA157;
		LA161: ;
		{
			if (!(((*s).flags &(1<<((((NU8) 26))&31)))!=0)) goto LA164;
			semborrow_437975(c, n, s);
		}
		goto LA157;
		LA164: ;
		LA157: ;
	}
	LA115: ;
	sideeffectscheck_412116(c, s);
	closescope_249111(c);
	popowner_244267();
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA168;
		(*c).patterns = (Tsymseq190815*) incrSeq(&((*c).patterns)->Sup, sizeof(Tsym190843*));
		asgnRefNoCycle((void**) (&(*c).patterns->data[(*c).patterns->Sup.len-1]), s);
	}
	LA168: ;
	{
		if (!isanon) goto LA172;
		asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	}
	LA172: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, determinetype_412736)(Tcontext244023* c, Tsym190843* s) {
	Tnode190813* LOC5;
{	{
		if (!!(((*s).typ == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = semprocaux_438890(c, (*s).ast, (*s).kind, TMP3347, ((NU8) 1));
	}BeforeRet: ;
}

N_NIMCALL(void, pickbestcandidate_412740)(Tcontext244023* c, Tnode190813* headsymbol, Tnode190813* n, Tnode190813* orig, Tnode190813* initialbinding, NU32 filter, Tcandidate344209* best, Tcandidate344209* alt, Tsymseq190815** errors) {
	Toverloaditer249431 o;
	Tsym190843* symx;
	NI symscope;
	TY412757* syms;
	Tcandidate344209 z;
{	memset((void*)(&o), 0, sizeof(o));
	symx = initoverloaditer_250108((&o), c, headsymbol);
	symscope = lastoverloadscope_250259((&o));
	syms = (TY412757*) newSeq((&NTI412757), 0);
	{
		while (1) {
			if (!!((symx == NIM_NIL))) goto LA2;
			{
				TY412758 LOC7;
				if (!((filter &(1<<(((*symx).kind)&31)))!=0)) goto LA5;
				memset((void*)(&LOC7), 0, sizeof(LOC7));
				LOC7.Field0 = symx;
				LOC7.Field1 = lastoverloadscope_250259((&o));
				syms = (TY412757*) incrSeq(&(syms)->Sup, sizeof(TY412758));
				asgnRefNoCycle((void**) (&syms->data[syms->Sup.len-1].Field0), LOC7.Field0);
				syms->data[syms->Sup.len-1].Field1 = LOC7.Field1;
			}
			LA5: ;
			symx = nextoverloaditer_250277((&o), c, headsymbol);
		} LA2: ;
	}
	{
		if (!((syms ? syms->Sup.len : 0) == ((NI) 0))) goto LA10;
		goto BeforeRet;
	}
	LA10: ;
	memset((void*)(&z), 0, sizeof(z));
	initcandidate_344301(c, best, syms->data[((NI) 0)].Field0, initialbinding, symscope);
	initcandidate_344301(c, alt, syms->data[((NI) 0)].Field0, initialbinding, symscope);
	(*best).state = ((NU8) 2);
	{
		NI i_412847;
		NI HEX3Atmp_413087;
		NI res_413090;
		i_412847 = 0;
		HEX3Atmp_413087 = 0;
		HEX3Atmp_413087 = ((syms ? syms->Sup.len : 0) - 1);
		res_413090 = ((NI) 0);
		{
			while (1) {
				Tsym190843* sym;
				if (!(res_413090 <= HEX3Atmp_413087)) goto LA14;
				i_412847 = res_413090;
				sym = syms->data[i_412847].Field0;
				determinetype_412736(c, sym);
				initcandidate_344301(c, (&z), sym, initialbinding, syms->data[i_412847].Field1);
				z.calleesym = sym;
				matches_350449(c, n, orig, (&z));
				{
					NIM_BOOL LOC17;
					LOC17 = 0;
					LOC17 = HEX3DHEX3D_412853((*errors), NIM_NIL);
					if (!!(LOC17)) goto LA18;
					safeadd_412966(errors, sym);
					{
						NIM_BOOL LOC22;
						LOC22 = 0;
						LOC22 = HEX3DHEX3D_412853(z.errors, NIM_NIL);
						if (!!(LOC22)) goto LA23;
						{
							Tsym190843* err_413034;
							Tsymseq190815* HEX3Atmp_413081;
							NI i_413084;
							NI L_413086;
							err_413034 = 0;
							HEX3Atmp_413081 = 0;
							HEX3Atmp_413081 = z.errors;
							i_413084 = ((NI) 0);
							L_413086 = (HEX3Atmp_413081 ? HEX3Atmp_413081->Sup.len : 0);
							{
								while (1) {
									if (!(i_413084 < L_413086)) goto LA27;
									err_413034 = HEX3Atmp_413081->data[i_413084];
									(*errors) = (Tsymseq190815*) incrSeq(&((*errors))->Sup, sizeof(Tsym190843*));
									asgnRefNoCycle((void**) (&(*errors)->data[(*errors)->Sup.len-1]), err_413034);
									i_413084 += ((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), (&NTI344209));
					}
					break;
					case ((NU8) 1):
					{
						NI cmp;
						cmp = cmpcandidates_344824((&(*best)), (&z));
						{
							if (!(cmp < ((NI) 0))) goto LA40;
							genericAssign((void*)(&(*best)), (void*)(&z), (&NTI344209));
						}
						goto LA38;
						LA40: ;
						{
							if (!(cmp == ((NI) 0))) goto LA43;
							genericAssign((void*)(&(*alt)), (void*)(&z), (&NTI344209));
						}
						goto LA38;
						LA43: ;
						{
						}
						LA38: ;
					}
					break;
					}
				}
				LA30: ;
				res_413090 += ((NI) 1);
			} LA14: ;
		}
	}
	}BeforeRet: ;
}

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

N_NIMCALL(NIM_BOOL, samemethoddispatcher_412675)(Tsym190843* a, Tsym190843* b) {
	NIM_BOOL result;
	result = 0;
	result = NIM_FALSE;
	{
		NIM_BOOL LOC3;
		Tnode190813* aa;
		Tnode190813* bb;
		LOC3 = 0;
		LOC3 = ((*a).kind == ((NU8) 13));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*b).kind == ((NU8) 13));
		LA4: ;
		if (!LOC3) goto LA5;
		aa = lastson_193431((*a).ast);
		bb = lastson_193431((*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_413359)(Tcontext244023* c, Tnode190813* n, Tnode190813* orig, NU32 filter, Tsymseq190815** errors, Tcandidate344209* Result) {
	Tnode190813* initialbinding;
	Tcandidate344209 alt;
	Tnode190813* f;
	Tnodeseq190807* 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_413249(c, (&usedsyms));
	{
		NIM_BOOL LOC8;
		Tnode190813* hiddenarg;
		LOC8 = 0;
		LOC8 = HEX3DHEX3D_263718(usedsyms, NIM_NIL);
		if (!!(LOC8)) goto LA9;
		{
			if (!(((NI) 1) < (usedsyms ? usedsyms->Sup.len : 0))) goto LA13;
			hiddenarg = newnode_192607(((NU8) 56), (*n).info, usedsyms, NIM_NIL);
		}
		goto LA11;
		LA13: ;
		{
			hiddenarg = usedsyms->data[((NI) 0)];
		}
		LA11: ;
		insert_413412((&(*n).kindU.S6.sons), hiddenarg, ((NI) 1));
		insert_413412((&(*orig).kindU.S6.sons), hiddenarg, ((NI) 1));
		pickbestcandidate_412740(c, f, n, orig, initialbinding, filter, Result, (&alt), errors);
		{
			if (!!(((*Result).state == ((NU8) 1)))) goto LA18;
			delete_413490((&(*n).kindU.S6.sons), ((NI) 1));
			delete_413490((&(*orig).kindU.S6.sons), ((NI) 1));
		}
		goto LA16;
		LA18: ;
		{
			goto BeforeRet;
		}
		LA16: ;
	}
	LA9: ;
	pickbestcandidate_412740(c, f, n, orig, initialbinding, filter, Result, (&alt), errors);
	overloadsstate = (*Result).state;
	{
		if (!!((overloadsstate == ((NU8) 1)))) goto LA23;
		{
			Tnode190813* calleename;
			Tnode190813* LOC37;
			Slice85768 LOC38;
			TY446930 LOC39;
			Slice85768 LOC40;
			TY446930 LOC41;
			if (!(((*n).flags &(1<<((((NU8) 8))&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_193403(n);
				LOC31 = (((NI) 2) <= LOC33);
				LA32: ;
				if (!!(LOC31)) goto LA34;
				LOC36 = 0;
				LOC36 = HEX24_165306(TMP3348);
				internalerror_165218(LOC36);
			}
			LA34: ;
			LOC37 = 0;
			LOC37 = newstrnode_191644(((NU8) 20), (*(*f).kindU.S5.ident).s);
			calleename = withinfo_192302(LOC37, (*n).info);
			LOC38 = HEX2EHEX2E_105273(((NI) 0), ((NI) 1));
			memset((void*)LOC39, 0, sizeof(LOC39));
			LOC39[0] = NIM_NIL;
			LOC39[1] = HEX5BHEX5D_191244(n, ((NI) 1));
			LOC39[2] = calleename;
			HEX5BHEX5DHEX3D_413619((&(*n).kindU.S6.sons), LOC38, LOC39, 3);
			LOC40 = HEX2EHEX2E_105273(((NI) 0), ((NI) 1));
			memset((void*)LOC41, 0, sizeof(LOC41));
			LOC41[0] = NIM_NIL;
			LOC41[1] = HEX5BHEX5D_191244(orig, ((NI) 1));
			LOC41[2] = calleename;
			HEX5BHEX5DHEX3D_413619((&(*orig).kindU.S6.sons), LOC40, LOC41, 3);
			{
				Tnode190813* op_413891;
				Tident167021* LOC46;
				if (!(((*n).flags &(1<<((((NU8) 10))&15)))!=0)) goto LA44;
				LOC46 = 0;
				LOC46 = getident_167463(((NimStringDesc*) &TMP3350));
				op_413891 = newidentnode_192313(LOC46, (*n).info);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), op_413891);
				asgnRefNoCycle((void**) (&(*orig).kindU.S6.sons->data[((NI) 0)]), op_413891);
				pickbestcandidate_412740(c, op_413891, n, orig, initialbinding, filter, Result, (&alt), errors);
			}
			LA44: ;
			{
				Tnode190813* op_413908;
				Tident167021* LOC51;
				if (!((5 &(1<<(((*Result).state)&7)))!=0)) goto LA49;
				LOC51 = 0;
				LOC51 = getident_167463(((NimStringDesc*) &TMP3351));
				op_413908 = newidentnode_192313(LOC51, (*n).info);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), op_413908);
				asgnRefNoCycle((void**) (&(*orig).kindU.S6.sons->data[((NI) 0)]), op_413908);
				pickbestcandidate_412740(c, op_413908, n, orig, initialbinding, filter, Result, (&alt), errors);
			}
			LA49: ;
		}
		goto LA25;
		LA27: ;
		{
			Tnode190813* calleename;
			Slice85768 LOC63;
			NimStringDesc* LOC64;
			Tnode190813* LOC65;
			Tnode190813* callop;
			Tident167021* LOC66;
			Slice85768 LOC67;
			TY446930 LOC68;
			Slice85768 LOC69;
			TY446930 LOC70;
			if (!(((*n).flags &(1<<((((NU8) 9))&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_193403(n);
				LOC57 = (LOC59 == ((NI) 3));
				LA58: ;
				if (!!(LOC57)) goto LA60;
				LOC62 = 0;
				LOC62 = HEX24_165306(TMP3352);
				internalerror_165218(LOC62);
			}
			LA60: ;
			LOC63 = HEX2EHEX2E_105273(((NI) 0), (NI)(((*(*f).kindU.S5.ident).s ? (*(*f).kindU.S5.ident).s->Sup.len : 0) - ((NI) 2)));
			LOC64 = 0;
			LOC64 = HEX5BHEX5D_85761((*(*f).kindU.S5.ident).s, LOC63);
			LOC65 = 0;
			LOC65 = newstrnode_191644(((NU8) 20), LOC64);
			calleename = withinfo_192302(LOC65, (*n).info);
			LOC66 = 0;
			LOC66 = getident_167463(((NimStringDesc*) &TMP3353));
			callop = newidentnode_192313(LOC66, (*n).info);
			LOC67 = HEX2EHEX2E_105273(((NI) 0), ((NI) 1));
			memset((void*)LOC68, 0, sizeof(LOC68));
			LOC68[0] = callop;
			LOC68[1] = HEX5BHEX5D_191244(n, ((NI) 1));
			LOC68[2] = calleename;
			HEX5BHEX5DHEX3D_413619((&(*n).kindU.S6.sons), LOC67, LOC68, 3);
			LOC69 = HEX2EHEX2E_105273(((NI) 0), ((NI) 1));
			memset((void*)LOC70, 0, sizeof(LOC70));
			LOC70[0] = callop;
			LOC70[1] = HEX5BHEX5D_191244(orig, ((NI) 1));
			LOC70[2] = calleename;
			HEX5BHEX5DHEX3D_413619((&(*orig).kindU.S6.sons), LOC69, LOC70, 3);
			pickbestcandidate_412740(c, callop, n, orig, initialbinding, filter, Result, (&alt), errors);
		}
		goto LA25;
		LA53: ;
		LA25: ;
		{
			NIM_BOOL LOC73;
			Tident167021* LOC77;
			LOC73 = 0;
			LOC73 = (overloadsstate == ((NU8) 0));
			if (!(LOC73)) goto LA74;
			LOC73 = ((*Result).state == ((NU8) 0));
			LA74: ;
			if (!LOC73) goto LA75;
			LOC77 = 0;
			LOC77 = considerquotedident_249010(f);
			localerror_165155((*n).info, ((NU16) 61), (*LOC77).s);
			goto BeforeRet;
		}
		goto LA71;
		LA75: ;
		{
			if (!!(((*Result).state == ((NU8) 1)))) goto LA79;
			{
				NimStringDesc* LOC85;
				if (!(((*n).flags &(1<<((((NU8) 11))&15)))!=0)) goto LA83;
				LOC85 = 0;
				LOC85 = rendertree_212058(n, 4);
				localerror_165155((*n).info, ((NU16) 88), LOC85);
			}
			goto LA81;
			LA83: ;
			{
				{
					if (!!(((768 & (*n).flags) == 0))) goto LA89;
					delete_413490((&(*n).kindU.S6.sons), ((NI) 2));
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), f);
				}
				LA89: ;
				unsureAsgnRef((void**) (&(*errors)), (Tsymseq190815*) newSeq((&NTI190815), 0));
				pickbestcandidate_412740(c, f, n, orig, initialbinding, filter, Result, (&alt), errors);
			}
			LA81: ;
			goto BeforeRet;
		}
		goto LA71;
		LA79: ;
		LA71: ;
	}
	LA23: ;
	{
		NIM_BOOL LOC93;
		NIM_BOOL LOC94;
		NI LOC96;
		NIM_BOOL LOC98;
		LOC93 = 0;
		LOC94 = 0;
		LOC94 = (alt.state == ((NU8) 1));
		if (!(LOC94)) goto LA95;
		LOC96 = 0;
		LOC96 = cmpcandidates_344824(Result, (&alt));
		LOC94 = (LOC96 == ((NI) 0));
		LA95: ;
		LOC93 = LOC94;
		if (!(LOC93)) goto LA97;
		LOC98 = 0;
		LOC98 = samemethoddispatcher_412675((*Result).calleesym, alt.calleesym);
		LOC93 = !(LOC98);
		LA97: ;
		if (!LOC93) goto LA99;
		{
			NimStringDesc* LOC105;
			if (!!(((*Result).state == ((NU8) 1)))) goto LA103;
			LOC105 = 0;
			LOC105 = HEX24_165306(TMP3354);
			internalerror_165218(LOC105);
		}
		LA103: ;
		{
			if (!(((NI) 0) < (*c).incompilescontext)) goto LA108;
			globalerror_165134((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3355));
		}
		goto LA106;
		LA108: ;
		{
			NimStringDesc* args;
			NimStringDesc* LOC122;
			TY176061 LOC123;
			NimStringDesc* LOC124;
			if (!(gerrorcounter_164015 == ((NI) 0))) goto LA111;
			args = copyString(((NimStringDesc*) &TMP3356));
			{
				NI i_414149;
				NI HEX3Atmp_414157;
				NI LOC114;
				NI res_414160;
				i_414149 = 0;
				HEX3Atmp_414157 = 0;
				LOC114 = 0;
				LOC114 = sonslen_193403(n);
				HEX3Atmp_414157 = (NI)(LOC114 - ((NI) 1));
				res_414160 = ((NI) 1);
				{
					while (1) {
						NimStringDesc* LOC121;
						if (!(res_414160 <= HEX3Atmp_414157)) goto LA116;
						i_414149 = res_414160;
						{
							if (!(((NI) 1) < i_414149)) goto LA119;
							args = resizeString(args, 2);
appendString(args, ((NimStringDesc*) &TMP3357));
						}
						LA119: ;
						LOC121 = 0;
						LOC121 = typetostring_220032((*(*n).kindU.S6.sons->data[i_414149]).typ, ((NU8) 0));
						args = resizeString(args, LOC121->Sup.len + 0);
appendString(args, LOC121);
						res_414160 += ((NI) 1);
					} LA116: ;
				}
			}
			args = resizeString(args, 1);
appendString(args, ((NimStringDesc*) &TMP3010));
			LOC122 = 0;
			LOC122 = msgkindtostring_164616(((NU16) 132));
			memset((void*)LOC123, 0, sizeof(LOC123));
			LOC123[0] = getprocheader_220447((*Result).calleesym, ((NU8) 0));
			LOC123[1] = getprocheader_220447(alt.calleesym, ((NU8) 0));
			LOC123[2] = copyString(args);
			LOC124 = 0;
			LOC124 = nsuFormatOpenArray(LOC122, LOC123, 3);
			localerror_165155((*n).info, ((NU16) 4), LOC124);
		}
		goto LA106;
		LA111: ;
		LA106: ;
	}
	LA99: ;
	}BeforeRet: ;
}

N_NIMCALL(void, instgenericconverterssons_414212)(Tcontext244023* c, Tnode190813* n, Tcandidate344209* x) {
	{
		if (!(*x).genericconverter) goto LA3;
		{
			NI i_414420;
			NI HEX3Atmp_414423;
			NI LOC6;
			NI res_414426;
			i_414420 = 0;
			HEX3Atmp_414423 = 0;
			LOC6 = 0;
			LOC6 = len_191097(n);
			HEX3Atmp_414423 = (LOC6 - 1);
			res_414426 = ((NI) 1);
			{
				while (1) {
					if (!(res_414426 <= HEX3Atmp_414423)) goto LA8;
					i_414420 = res_414426;
					instgenericconvertersarg_414176(c, (*n).kindU.S6.sons->data[i_414420], x);
					res_414426 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	LA3: ;
}

N_NIMCALL(Tnode190813*, semresolvedcall_414507)(Tcontext244023* c, Tnode190813* n, Tcandidate344209* x) {
	Tnode190813* result;
	Tsym190843* finalcallee;
{	result = 0;
	finalcallee = (*x).calleesym;
	markused_344251((*(*n).kindU.S6.sons->data[((NI) 0)]).info, finalcallee);
	{
		if (!((*finalcallee).ast == NIM_NIL)) goto LA3;
		internalerror_165199((*n).info, ((NimStringDesc*) &TMP3358));
	}
	LA3: ;
	{
		if (!!(((*x).fauxmatch == ((NU8) 0)))) goto LA7;
		result = (*x).call;
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192338(finalcallee, (*(*result).kindU.S6.sons->data[((NI) 0)]).info));
		{
			NIM_BOOL LOC11;
			LOC11 = 0;
			LOC11 = containsgenerictype_229310((*result).typ);
			if (LOC11) goto LA12;
			LOC11 = ((*x).fauxmatch == ((NU8) 60));
			LA12: ;
			if (!LOC11) goto LA13;
			asgnRefNoCycle((void**) (&(*result).typ), newtypes_244219((*x).fauxmatch, c));
		}
		LA13: ;
		goto BeforeRet;
	}
	LA7: ;
	{
		if (!!(((*(*(*finalcallee).ast).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA17;
		finalcallee = generateinstance_412450(c, (*x).calleesym, (*x).bindings, (*n).info);
	}
	LA17: ;
	result = (*x).call;
	instgenericconverterssons_414212(c, result, x);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192338(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_414851)(Tnode190813* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NI LOC2;
	Ttype190849* t;
	Tnode190813* LOC4;
	NIM_BOOL LOC5;
	Ttype190849* LOC7;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = len_191097(n);
	LOC1 = (((NI) 2) <= LOC2);
	if (!(LOC1)) goto LA3;
	LOC4 = 0;
	LOC4 = HEX5BHEX5D_191244(n, ((NI) 1));
	t = (*LOC4).typ;
	LOC5 = 0;
	LOC5 = !((t == NIM_NIL));
	if (!(LOC5)) goto LA6;
	LOC7 = 0;
	LOC7 = skiptypes_194167(t, 2048);
	LOC5 = ((*LOC7).kind == ((NU8) 21) || (*LOC7).kind == ((NU8) 22));
	LA6: ;
	LOC1 = LOC5;
	LA3: ;
	result = LOC1;
	return result;
}

N_NIMCALL(Tnode190813*, tryderef_414884)(Tnode190813* n) {
	Tnode190813* result;
	Ttype190849* LOC1;
	result = 0;
	result = newnodei_192351(((NU8) 65), (*n).info);
	LOC1 = 0;
	LOC1 = skiptypes_194167((*n).typ, IL64(211106232576256));
	asgnRefNoCycle((void**) (&(*result).typ), (*LOC1).sons->data[((NI) 0)]);
	addson_192819(result, n);
	return result;
}

N_NIMCALL(void, notfounderror_413121)(Tcontext244023* c, Tnode190813* n_413124, Tsymseq190815* errors) {
	NimStringDesc* proto;
	NU8 prefer;
	NimStringDesc* result;
	NimStringDesc* LOC34;
	NimStringDesc* candidates;
{	{
		if (!(((NI) 0) < (*c).incompilescontext)) goto LA3;
		globalerror_165134((*n_413124).info, ((NU16) 129), ((NimStringDesc*) &TMP2989));
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		Tnode190813* LOC11;
		NimStringDesc* LOC12;
		LOC7 = 0;
		LOC7 = errors == 0;
		if (LOC7) goto LA8;
		LOC7 = ((errors ? errors->Sup.len : 0) == ((NI) 0));
		LA8: ;
		if (!LOC7) goto LA9;
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_191244(n_413124, ((NI) 0));
		LOC12 = 0;
		LOC12 = rendertree_212058(LOC11, 0);
		localerror_165155((*n_413124).info, ((NU16) 88), LOC12);
		goto BeforeRet;
	}
	LA9: ;
	proto = describeargs_344974(c, n_413124, ((NI) 1), ((NU8) 0));
	prefer = ((NU8) 0);
	{
		Tsym190843* err_413154;
		NI i_413210;
		NI L_413212;
		err_413154 = 0;
		i_413210 = ((NI) 0);
		L_413212 = (errors ? errors->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* errproto;
				Tnode190813* n;
				if (!(i_413210 < L_413212)) goto LA15;
				err_413154 = errors->data[i_413210];
				errproto = copyString(((NimStringDesc*) &TMP2989));
				n = (*(*err_413154).typ).n;
				{
					NI i_413171;
					NI HEX3Atmp_413201;
					NI LOC17;
					NI res_413204;
					i_413171 = 0;
					HEX3Atmp_413201 = 0;
					LOC17 = 0;
					LOC17 = len_191097(n);
					HEX3Atmp_413201 = (NI)(LOC17 - ((NI) 1));
					res_413204 = ((NI) 1);
					{
						while (1) {
							Tnode190813* p;
							if (!(res_413204 <= HEX3Atmp_413201)) goto LA19;
							i_413171 = res_413204;
							p = (*n).kindU.S6.sons->data[i_413171];
							{
								NimStringDesc* LOC24;
								if (!((*p).kind == ((NU8) 3))) goto LA22;
								LOC24 = 0;
								LOC24 = typetostring_220032((*(*p).kindU.S4.sym).typ, ((NU8) 0));
								errproto = resizeString(errproto, LOC24->Sup.len + 0);
appendString(errproto, LOC24);
								{
									NI LOC27;
									LOC27 = 0;
									LOC27 = len_191097(n);
									if (!!((i_413171 == (NI)(LOC27 - ((NI) 1))))) goto LA28;
									errproto = resizeString(errproto, 2);
appendString(errproto, ((NimStringDesc*) &TMP3357));
								}
								LA28: ;
							}
							LA22: ;
							res_413204 += ((NI) 1);
						} LA19: ;
					}
				}
				{
					if (!eqStrings(errproto, proto)) goto LA32;
					prefer = ((NU8) 3);
					goto LA13;
				}
				LA32: ;
				i_413210 += ((NI) 1);
			} LA15: ;
		}
	} LA13: ;
	result = msgkindtostring_164616(((NU16) 129));
	LOC34 = 0;
	LOC34 = describeargs_344974(c, n_413124, ((NI) 1), prefer);
	result = resizeString(result, LOC34->Sup.len + 0);
appendString(result, LOC34);
	result = addChar(result, 41);
	candidates = copyString(((NimStringDesc*) &TMP2989));
	{
		Tsym190843* err_413197;
		NI i_413216;
		NI L_413218;
		err_413197 = 0;
		i_413216 = ((NI) 0);
		L_413218 = (errors ? errors->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* LOC38;
				if (!(i_413216 < L_413218)) goto LA37;
				err_413197 = errors->data[i_413216];
				LOC38 = 0;
				LOC38 = getprocheader_220447(err_413197, prefer);
				candidates = resizeString(candidates, LOC38->Sup.len + 0);
appendString(candidates, LOC38);
				candidates = resizeString(candidates, 1);
appendString(candidates, ((NimStringDesc*) &TMP3359));
				i_413216 += ((NI) 1);
			} LA37: ;
		}
	}
	{
		NimStringDesc* LOC43;
		NimStringDesc* LOC44;
		if (!!(((candidates) && (candidates)->Sup.len == 0))) goto LA41;
		LOC43 = 0;
		LOC44 = 0;
		LOC44 = msgkindtostring_164616(((NU16) 130));
		LOC43 = rawNewString(LOC44->Sup.len + candidates->Sup.len + 2);
appendString(LOC43, ((NimStringDesc*) &TMP3359));
appendString(LOC43, LOC44);
appendString(LOC43, ((NimStringDesc*) &TMP3359));
appendString(LOC43, candidates);
		result = resizeString(result, LOC43->Sup.len + 0);
appendString(result, LOC43);
	}
	LA41: ;
	localerror_165155((*n_413124).info, ((NU16) 4), result);
	}BeforeRet: ;
}

N_NIMCALL(Tnode190813*, semoverloadedcall_414892)(Tcontext244023* c, Tnode190813* n, Tnode190813* norig, NU32 filter) {
	Tnode190813* result;
	Tsymseq190815* errors;
	Tcandidate344209 r_414901;
	result = 0;
	errors = 0;
	memset((void*)(&r_414901), 0, sizeof(r_414901));
	chckNil((void*)(&r_414901));
	memset((void*)(&r_414901), 0, sizeof(r_414901));
	resolveoverloads_413359(c, n, norig, filter, (&errors), (&r_414901));
	{
		if (!(r_414901.state == ((NU8) 1))) goto LA3;
		result = semresolvedcall_414507(c, n, (&r_414901));
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		Tcandidate344209 r;
		LOC6 = 0;
		LOC6 = experimentalmode_245279(c);
		if (!(LOC6)) goto LA7;
		LOC6 = canderef_414851(n);
		LA7: ;
		if (!LOC6) goto LA8;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), tryderef_414884((*n).kindU.S6.sons->data[((NI) 1)]));
		memset((void*)(&r), 0, sizeof(r));
		chckNil((void*)(&r));
		memset((void*)(&r), 0, sizeof(r));
		resolveoverloads_413359(c, n, norig, filter, (&errors), (&r));
		{
			if (!(r.state == ((NU8) 1))) goto LA12;
			result = semresolvedcall_414507(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_413121(c, n, errors);
		}
		LA10: ;
	}
	goto LA1;
	LA8: ;
	{
		notfounderror_413121(c, n, errors);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semoverloadedcallanalyseeffects_444900)(Tcontext244023* c, Tnode190813* n, Tnode190813* norig, NU16 flags) {
	Tnode190813* result;
{	result = 0;
	{
		if (!!(((flags & 6) == 0))) goto LA3;
		result = semoverloadedcall_414892(c, n, norig, 520192);
	}
	goto LA1;
	LA3: ;
	{
		result = semoverloadedcall_414892(c, n, norig, 471040);
	}
	LA1: ;
	{
		Tsym190843* callee;
		if (!!((result == NIM_NIL))) goto LA8;
		{
			if (!!(((*(*result).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA12;
			internalerror_165218(((NimStringDesc*) &TMP3360));
			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;
				Tsym190843* 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_165155((*n).info, ((NU16) 25), (*(*callee).name).s);
				LOC22 = 0;
				LOC22 = errorsym_249372(c, n);
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(LOC22));
			}
			LA20: ;
			{
				if (!!((((*callee).flags &(1<<((((NU8) 10))&31)))!=0))) goto LA25;
				{
					if (!!(((2080 & (*callee).flags) == 0))) goto LA29;
					(*(*(*c).p).owner).flags |= ((NI32)1)<<((((NU8) 11))%(sizeof(NI32)*8));
				}
				LA29: ;
			}
			LA25: ;
		}
		break;
		}
	}
	LA8: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, propertywriteaccess_446920)(Tcontext244023* c, Tnode190813* n, Tnode190813* norig, Tnode190813* a) {
	Tnode190813* result;
	Tident167021* id;
	Tnode190813* LOC1;
	Tnode190813* setterid;
	NimStringDesc* LOC2;
	Tident167021* LOC3;
	Tnode190813* aorig;
	Tnodeseq190807* LOC4;
	TY446930 LOC5;
	Tnode190813* LOC6;
	Tnode190813* orig;
	Tnodeseq190807* LOC7;
	TY446930 LOC8;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_191244(a, ((NI) 1));
	id = considerquotedident_249010(LOC1);
	LOC2 = 0;
	LOC2 = rawNewString((*id).s->Sup.len + 1);
appendString(LOC2, (*id).s);
appendChar(LOC2, 61);
	LOC3 = 0;
	LOC3 = getident_167463(LOC2);
	setterid = newidentnode_192313(LOC3, (*n).info);
	aorig = HEX5BHEX5D_191244(norig, ((NI) 0));
	LOC4 = 0;
	LOC4 = (Tnodeseq190807*) newSeq((&NTI190807), 3);
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = setterid;
	LOC5[1] = HEX5BHEX5D_191244(a, ((NI) 0));
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_191244(n, ((NI) 1));
	LOC5[2] = semexpr_409201(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_192607(((NU8) 27), (*n).info, LOC4, NIM_NIL);
	(*result).flags |= ((NI16)1)<<((((NU8) 9))%(sizeof(NI16)*8));
	LOC7 = 0;
	LOC7 = (Tnodeseq190807*) newSeq((&NTI190807), 3);
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = setterid;
	LOC8[1] = HEX5BHEX5D_191244(aorig, ((NI) 0));
	LOC8[2] = HEX5BHEX5D_191244(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_192607(((NU8) 27), (*n).info, LOC7, NIM_NIL);
	result = semoverloadedcallanalyseeffects_444900(c, result, orig, 0);
	{
		if (!!((result == NIM_NIL))) goto LA11;
		result = aftercallactions_445366(c, result, norig, 0);
	}
	LA11: ;
	return result;
}

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

N_NIMCALL(Tnode190813*, dottransformation_446679)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode190813* LOC6;
		Tnode190813* LOC7;
		LOC3 = 0;
		LOC3 = issymchoice_442471((*n).kindU.S6.sons->data[((NI) 1)]);
		if (!LOC3) goto LA4;
		result = newnodei_192351(((NU8) 25), (*n).info);
		addson_192819(result, (*n).kindU.S6.sons->data[((NI) 1)]);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_191244(n, ((NI) 0));
		LOC7 = 0;
		LOC7 = copytree_195028(LOC6);
		addson_192819(result, LOC7);
	}
	goto LA1;
	LA4: ;
	{
		Tident167021* i;
		Tnode190813* LOC9;
		Tnode190813* LOC10;
		Tnode190813* LOC11;
		Tnode190813* LOC12;
		i = considerquotedident_249010((*n).kindU.S6.sons->data[((NI) 1)]);
		result = newnodei_192351(((NU8) 25), (*n).info);
		(*result).flags |= ((NI16)1)<<((((NU8) 8))%(sizeof(NI16)*8));
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_191244(n, ((NI) 1));
		LOC10 = 0;
		LOC10 = newidentnode_192313(i, (*LOC9).info);
		addson_192819(result, LOC10);
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_191244(n, ((NI) 0));
		LOC12 = 0;
		LOC12 = copytree_195028(LOC11);
		addson_192819(result, LOC12);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semderef_446761)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Ttype190849* t;
	result = 0;
	checksonslen_245249(n, ((NI) 1));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
	result = n;
	t = skiptypes_194167((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, 8390656);
	switch ((*t).kind) {
	case ((NU8) 22):
	case ((NU8) 21):
	{
		asgnRefNoCycle((void**) (&(*n).typ), lastson_193442(t));
	}
	break;
	default:
	{
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode190813*, semsubscript_446774)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	Ttype190849* arr;
{	result = 0;
	{
		NI LOC3;
		Tnode190813* x;
		Tnode190813* LOC10;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 1))) goto LA4;
		x = semderef_446761(c, n);
		{
			if (!(x == NIM_NIL)) goto LA8;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA8: ;
		result = newnodeit_192807(((NU8) 47), (*x).info, (*x).typ);
		LOC10 = 0;
		LOC10 = HEX5BHEX5D_191244(x, ((NI) 0));
		add_191164(result, LOC10);
		goto BeforeRet;
	}
	LA4: ;
	checkminsonslen_245259(n, ((NI) 2));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
	arr = skiptypes_194167((*(*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):
	{
		Ttype190849* indextype;
		Tnode190813* arg;
		{
			NI LOC14;
			LOC14 = 0;
			LOC14 = len_191097(n);
			if (!!((LOC14 == ((NI) 2)))) goto LA15;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA15: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_445833((*n).kindU.S6.sons->data[((NI) 0)]));
		asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_446815;
			NI HEX3Atmp_446879;
			NI LOC18;
			NI res_446882;
			i_446815 = 0;
			HEX3Atmp_446879 = 0;
			LOC18 = 0;
			LOC18 = sonslen_193403(n);
			HEX3Atmp_446879 = (NI)(LOC18 - ((NI) 1));
			res_446882 = ((NI) 1);
			{
				while (1) {
					if (!(res_446882 <= HEX3Atmp_446879)) goto LA20;
					i_446815 = res_446882;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_446815]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[i_446815], (flags & 36)));
					res_446882 += ((NI) 1);
				} LA20: ;
			}
		}
		{
			if (!((*arr).kind == ((NU8) 16))) goto LA23;
			indextype = (*arr).sons->data[((NI) 0)];
		}
		goto LA21;
		LA23: ;
		{
			indextype = getsystype_238030(((NU8) 31));
		}
		LA21: ;
		arg = indextypesmatch_409348(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_220522(arr));
		}
		LA28: ;
	}
	break;
	case ((NU8) 8):
	{
		Ttype190849* LOC31;
		result = n;
		LOC31 = 0;
		LOC31 = semtypenode_409269(c, n, NIM_NIL);
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_244682(c, LOC31));
	}
	break;
	case ((NU8) 18):
	{
		checksonslen_245249(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), makederef_445833((*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_410485(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		{
			Ttype190849* LOC35;
			NI64 idx;
			LOC35 = 0;
			LOC35 = skiptypes_194167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, 1083392);
			if (!((*LOC35).kind >= ((NU8) 31) && (*LOC35).kind <= ((NU8) 35))) goto LA36;
			idx = getordvalue_220178((*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_193351(arr);
				LOC40 = (idx < ((NI64) (LOC42)));
				LA41: ;
				if (!LOC40) goto LA43;
				asgnRefNoCycle((void**) (&(*n).typ), (*arr).sons->data[idx]);
			}
			goto LA38;
			LA43: ;
			{
				localerror_165155((*n).info, ((NU16) 185), ((NimStringDesc*) &TMP2989));
			}
			LA38: ;
		}
		goto LA33;
		LA36: ;
		{
			localerror_165155((*n).info, ((NU16) 83), ((NimStringDesc*) &TMP2989));
		}
		LA33: ;
		result = n;
	}
	break;
	default:
	{
		asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, buildoverloadedsubscripts_446722)(Tnode190813* n, Tident167021* ident) {
	Tnode190813* result;
	Tnode190813* LOC1;
	result = 0;
	result = newnodei_192351(((NU8) 27), (*n).info);
	LOC1 = 0;
	LOC1 = newidentnode_192313(ident, (*n).info);
	add_191164(result, LOC1);
	{
		NI i_446739;
		NI HEX3Atmp_446742;
		NI LOC3;
		NI res_446745;
		i_446739 = 0;
		HEX3Atmp_446742 = 0;
		LOC3 = 0;
		LOC3 = len_191097(n);
		HEX3Atmp_446742 = (NI)(LOC3 - ((NI) 1));
		res_446745 = ((NI) 0);
		{
			while (1) {
				Tnode190813* LOC6;
				if (!(res_446745 <= HEX3Atmp_446742)) goto LA5;
				i_446739 = res_446745;
				LOC6 = 0;
				LOC6 = HEX5BHEX5D_191244(n, i_446739);
				add_191164(result, LOC6);
				res_446745 += ((NI) 1);
			} LA5: ;
		}
	}
	return result;
}

N_NIMCALL(void, typemismatch_409379)(Tnode190813* n, Ttype190849* formal, Ttype190849* actual) {
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		NimStringDesc* LOC8;
		NimStringDesc* LOC9;
		NimStringDesc* LOC10;
		TY164566 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_164616(((NU16) 129));
		LOC9 = 0;
		LOC9 = typetostring_220032(actual, ((NU8) 0));
		LOC10 = 0;
		LOC10 = msgkindtostring_164616(((NU16) 131));
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = typetostring_220032(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*) &TMP3364));
appendString(LOC7, LOC12);
		localerror_165155((*n).info, ((NU16) 4), LOC7);
	}
	LA5: ;
}

N_NIMCALL(Ttype190849*, newproctype_435194)(Tlineinfo163338 info, Tsym190843* owner) {
	Ttype190849* result;
	Tnode190813* LOC1;
	result = 0;
	result = newtype_193140(((NU8) 25), owner);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_192351(((NU8) 76), info));
	rawaddson_194478(result, NIM_NIL);
	LOC1 = 0;
	LOC1 = newnodei_192351(((NU8) 152), info);
	addson_192819((*result).n, LOC1);
	return result;
}

N_NIMCALL(void, addparam_435202)(Ttype190849* proctype, Tsym190843* param) {
	NI LOC1;
	Tnode190813* LOC2;
	LOC1 = 0;
	LOC1 = len_193377(proctype);
	(*param).position = (NI)(LOC1 - ((NI) 1));
	LOC2 = 0;
	LOC2 = newsymnode_192325(param);
	addson_192819((*proctype).n, LOC2);
	rawaddson_194478(proctype, (*param).typ);
}

N_NIMCALL(Tnode190813*, newasgnstmt_434510)(Tnode190813* le, Tnode190813* ri) {
	Tnode190813* result;
	result = 0;
	result = newnodei_192407(((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_435006)(Tliftctx434286* c, Ttype190849* t, Tnode190813* body, Tnode190813* x, Tnode190813* y) {
	{
		Tnode190813* LOC5;
		if (!!(((*c).kind == ((NU8) 2)))) goto LA3;
		LOC5 = 0;
		LOC5 = newasgnstmt_434510(x, y);
		add_191164(body, LOC5);
	}
	LA3: ;
}

N_NIMCALL(Tnode190813*, genbuiltin_435065)(NU16 magic, NimStringDesc* name, Tnode190813* i) {
	Tnode190813* result;
	Tsym190843* LOC1;
	Tnode190813* LOC2;
	result = 0;
	result = newnodei_192351(((NU8) 27), (*i).info);
	LOC1 = 0;
	LOC1 = createmagic_195986(name, magic);
	LOC2 = 0;
	LOC2 = newsymnode_192325(LOC1);
	add_191164(result, LOC2);
	add_191164(result, i);
	return result;
}

N_NIMCALL(Tnode190813*, newseqcall_435101)(Tcontext244023* c, Tnode190813* x, Tnode190813* y) {
	Tnode190813* result;
	Tnode190813* lencall;
	result = 0;
	result = genbuiltin_435065(((NU16) 28), ((NimStringDesc*) &TMP3368), x);
	lencall = genbuiltin_435065(((NU16) 32), ((NimStringDesc*) &TMP3369), y);
	asgnRefNoCycle((void**) (&(*lencall).typ), getsystype_238030(((NU8) 31)));
	add_191164(result, lencall);
	return result;
}

N_NIMCALL(void, addvar_435027)(Tnode190813* father, Tnode190813* v, Tnode190813* value) {
	Tnode190813* vpart;
	vpart = newnodei_192407(((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_191807);
	asgnRefNoCycle((void**) (&(*vpart).kindU.S6.sons->data[((NI) 2)]), value);
	addson_192819(father, vpart);
}

N_NIMCALL(Tnode190813*, declarecounter_435039)(Tliftctx434286* c, Tnode190813* body, NI64 first) {
	Tnode190813* result;
	Tsym190843* temp;
	Tident167021* LOC1;
	Tnode190813* v;
	Tnode190813* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_167463(((NimStringDesc*) &TMP3370));
	temp = newsym_191656(((NU8) 5), LOC1, (*c).fn, (*c).info);
	asgnRefNoCycle((void**) (&(*temp).typ), getsystype_238030(((NU8) 31)));
	(*temp).flags |= ((NI32)1)<<((((NU8) 2))%(sizeof(NI32)*8));
	v = newnodei_192351(((NU8) 99), (*c).info);
	result = newsymnode_192325(temp);
	LOC2 = 0;
	LOC2 = newintlit_359438(first);
	addvar_435027(v, result, LOC2);
	add_191164(body, v);
	return result;
}

N_NIMCALL(Tnode190813*, genwhileloop_435077)(Tliftctx434286* c, Tnode190813* i, Tnode190813* dest) {
	Tnode190813* result;
	Tnode190813* cmp;
	Tnode190813* LOC1;
	result = 0;
	result = newnodei_192407(((NU8) 96), (*c).info, ((NI) 2));
	cmp = genbuiltin_435065(((NU16) 77), ((NimStringDesc*) &TMP3371), i);
	LOC1 = 0;
	LOC1 = genhigh_359448(dest);
	add_191164(cmp, LOC1);
	asgnRefNoCycle((void**) (&(*cmp).typ), getsystype_238030(((NU8) 1)));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), cmp);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), newnodei_192351(((NU8) 115), (*c).info));
	return result;
}

N_NIMCALL(Tnode190813*, at_434306)(Tnode190813* a, Tnode190813* i, Ttype190849* elemtype) {
	Tnode190813* result;
	result = 0;
	result = newnodei_192407(((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_435091)(Tnode190813* body, Tnode190813* i) {
	Tnode190813* inccall;
	Tnode190813* LOC1;
	inccall = genbuiltin_435065(((NU16) 23), ((NimStringDesc*) &TMP3373), i);
	LOC1 = 0;
	LOC1 = newintlit_359438(IL64(1));
	add_191164(inccall, LOC1);
	add_191164(body, inccall);
}

N_NIMCALL(Tnode190813*, newdestructorcall_434520)(Tsym190843* op, Tnode190813* x) {
	Tnode190813* result;
	Tnode190813* LOC1;
	result = 0;
	result = newnodeit_192807(((NU8) 27), (*x).info, (*(*op).typ).sons->data[((NI) 0)]);
	LOC1 = 0;
	LOC1 = newsymnode_192325(op);
	add_191164(result, LOC1);
	add_191164(result, x);
	return result;
}

N_NIMCALL(Tnode190813*, genaddr_434467)(Tcontext244023* c, Tnode190813* x) {
	Tnode190813* result;
	result = 0;
	{
		if (!((*x).kind == ((NU8) 65))) goto LA3;
		checksonslen_245249(x, ((NI) 1));
		result = (*x).kindU.S6.sons->data[((NI) 0)];
	}
	goto LA1;
	LA3: ;
	{
		Ttype190849* LOC6;
		LOC6 = 0;
		LOC6 = makevartype_244643(c, (*x).typ);
		result = newnodeit_192807(((NU8) 64), (*x).info, LOC6);
		addson_192819(result, x);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, newasgncall_434485)(Tcontext244023* c, Tsym190843* op, Tnode190813* x, Tnode190813* y) {
	Tnode190813* result;
	Tnode190813* LOC5;
	Tnode190813* LOC6;
	result = 0;
	{
		if (!(((*op).flags &(1<<((((NU8) 20))&31)))!=0)) goto LA3;
		localerror_165155((*x).info, ((NU16) 221), (*(*op).name).s);
	}
	LA3: ;
	result = newnodei_192351(((NU8) 27), (*x).info);
	LOC5 = 0;
	LOC5 = newsymnode_192325(op);
	add_191164(result, LOC5);
	LOC6 = 0;
	LOC6 = genaddr_434467(c, x);
	add_191164(result, LOC6);
	add_191164(result, y);
	return result;
}

N_NIMCALL(Tnode190813*, newdeepcopycall_434531)(Tsym190843* op, Tnode190813* x, Tnode190813* y) {
	Tnode190813* result;
	Tnode190813* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = newdestructorcall_434520(op, y);
	result = newasgnstmt_434510(x, LOC1);
	return result;
}

N_NIMCALL(NIM_BOOL, consideroverloadedop_434540)(Tliftctx434286* c, Ttype190849* t, Tnode190813* body, Tnode190813* x, Tnode190813* y) {
	NIM_BOOL result;
{	result = 0;
	switch ((*c).kind) {
	case ((NU8) 2):
	{
		Tsym190843* op;
		op = (*t).destructor;
		{
			Tnode190813* LOC6;
			if (!!((op == NIM_NIL))) goto LA4;
			markused_344251((*c).info, op);
			LOC6 = 0;
			LOC6 = newdestructorcall_434520(op, x);
			add_191164(body, LOC6);
			result = NIM_TRUE;
		}
		LA4: ;
	}
	break;
	case ((NU8) 0):
	{
		{
			Tsym190843* op;
			Tnode190813* LOC27;
			if (!(((*t).flags &(1<<((((NU8) 26))&31)))!=0)) goto LA10;
			op = 0;
			{
				NIM_BOOL LOC14;
				LOC14 = 0;
				LOC14 = sametype_225092(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_434301((*c).c, t, (*c).info);
				}
				LA25: ;
			}
			LA12: ;
			markused_344251((*c).info, op);
			LOC27 = 0;
			LOC27 = newasgncall_434485((*c).c, op, x, y);
			add_191164(body, LOC27);
			result = NIM_TRUE;
		}
		LA10: ;
	}
	break;
	case ((NU8) 1):
	{
		Tsym190843* op;
		op = (*t).deepcopy;
		{
			Tnode190813* LOC33;
			if (!!((op == NIM_NIL))) goto LA31;
			markused_344251((*c).info, op);
			LOC33 = 0;
			LOC33 = newdeepcopycall_434531(op, x, y);
			add_191164(body, LOC33);
			result = NIM_TRUE;
		}
		LA31: ;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, dotfield_434367)(Tnode190813* x, Tsym190843* f) {
	Tnode190813* result;
	result = 0;
	result = newnodei_192407(((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_192338(f, (*x).info));
	asgnRefNoCycle((void**) (&(*result).typ), (*f).typ);
	return result;
}

N_NIMCALL(void, liftbodyobj_434378)(Tliftctx434286* c, Tnode190813* n, Tnode190813* body, Tnode190813* x, Tnode190813* y) {
	switch ((*n).kind) {
	case ((NU8) 3):
	{
		Tsym190843* f;
		Tnode190813* LOC2;
		Tnode190813* LOC3;
		f = (*n).kindU.S4.sym;
		LOC2 = 0;
		LOC2 = dotfield_434367(x, f);
		LOC3 = 0;
		LOC3 = dotfield_434367(y, f);
		liftbodyaux_434293(c, (*f).typ, body, LOC2, LOC3);
	}
	break;
	case ((NU8) 23):
	{
	}
	break;
	case ((NU8) 139):
	{
		Tnode190813* LOC6;
		Tnode190813* casestmt;
		Tnode190813* access;
		Tnode190813* LOC7;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_191244(n, ((NI) 0));
		liftbodyobj_434378(c, LOC6, body, x, y);
		casestmt = newnodei_192351(((NU8) 97), (*c).info);
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_191244(n, ((NI) 0));
		access = dotfield_434367(x, (*LOC7).kindU.S4.sym);
		add_191164(casestmt, access);
		{
			NI i_434414;
			NI HEX3Atmp_434425;
			NI LOC9;
			NI res_434428;
			i_434414 = 0;
			HEX3Atmp_434425 = 0;
			LOC9 = 0;
			LOC9 = len_191097(n);
			HEX3Atmp_434425 = (LOC9 - 1);
			res_434428 = ((NI) 1);
			{
				while (1) {
					Tnode190813* branch;
					Tnode190813* LOC12;
					NI L;
					Tnode190813* LOC13;
					Tnode190813* LOC14;
					if (!(res_434428 <= HEX3Atmp_434425)) goto LA11;
					i_434414 = res_434428;
					LOC12 = 0;
					LOC12 = HEX5BHEX5D_191244(n, i_434414);
					branch = copytree_195028(LOC12);
					L = len_191097(branch);
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), newnodei_192351(((NU8) 115), (*c).info));
					LOC13 = 0;
					LOC13 = HEX5BHEX5D_191244(n, i_434414);
					LOC14 = 0;
					LOC14 = lastson_193431(LOC13);
					liftbodyobj_434378(c, LOC14, (*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))], x, y);
					add_191164(casestmt, branch);
					res_434428 += ((NI) 1);
				} LA11: ;
			}
		}
		add_191164(body, casestmt);
		localerror_165166((*c).info, ((NimStringDesc*) &TMP3374));
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode190813* t_434423;
			t_434423 = 0;
			{
				NI i_434436;
				NI HEX3Atmp_434438;
				NI LOC18;
				NI res_434440;
				i_434436 = 0;
				HEX3Atmp_434438 = 0;
				LOC18 = 0;
				LOC18 = len_191097(n);
				HEX3Atmp_434438 = (LOC18 - 1);
				res_434440 = ((NI) 0);
				{
					while (1) {
						if (!(res_434440 <= HEX3Atmp_434438)) goto LA20;
						i_434436 = res_434440;
						t_434423 = (*n).kindU.S6.sons->data[i_434436];
						liftbodyobj_434378(c, t_434423, body, x, y);
						res_434440 += ((NI) 1);
					} LA20: ;
				}
			}
		}
	}
	break;
	default:
	{
		illformedastlocal_245239(n);
	}
	break;
	}
}

N_NIMCALL(void, liftbodytup_434317)(Tliftctx434286* c, Ttype190849* t, Tnode190813* body, Tnode190813* x, Tnode190813* y) {
	{
		NI i_434343;
		NI HEX3Atmp_434348;
		NI LOC2;
		NI res_434351;
		i_434343 = 0;
		HEX3Atmp_434348 = 0;
		LOC2 = 0;
		LOC2 = len_193377(t);
		HEX3Atmp_434348 = (LOC2 - 1);
		res_434351 = ((NI) 0);
		{
			while (1) {
				Tnode190813* lit;
				Tnode190813* LOC5;
				Tnode190813* LOC6;
				if (!(res_434351 <= HEX3Atmp_434348)) goto LA4;
				i_434343 = res_434351;
				lit = newintlit_359438(((NI64) (i_434343)));
				LOC5 = 0;
				LOC5 = at_434306(x, lit, (*t).sons->data[i_434343]);
				LOC6 = 0;
				LOC6 = at_434306(y, lit, (*t).sons->data[i_434343]);
				liftbodyaux_434293(c, (*t).sons->data[i_434343], body, LOC5, LOC6);
				res_434351 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, liftbodyaux_434293)(Tliftctx434286* c, Ttype190849* t, Tnode190813* body, Tnode190813* x, Tnode190813* 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_435006(c, t, body, x, y);
	}
	break;
	case ((NU8) 4):
	case ((NU8) 16):
	case ((NU8) 24):
	{
		{
			Tnode190813* i;
			NI64 LOC13;
			Tnode190813* whileloop;
			Ttype190849* elemtype;
			Tnode190813* LOC14;
			Tnode190813* LOC15;
			if (!(((*t).flags &(1<<((((NU8) 26))&31)))!=0)) goto LA6;
			{
				Tnode190813* LOC12;
				if (!((*t).kind == ((NU8) 24))) goto LA10;
				LOC12 = 0;
				LOC12 = newseqcall_435101((*c).c, x, y);
				add_191164(body, LOC12);
			}
			LA10: ;
			LOC13 = 0;
			LOC13 = firstord_220004(t);
			i = declarecounter_435039(c, body, LOC13);
			whileloop = genwhileloop_435077(c, i, x);
			elemtype = lastson_193442(t);
			LOC14 = 0;
			LOC14 = at_434306(x, i, elemtype);
			LOC15 = 0;
			LOC15 = at_434306(y, i, elemtype);
			liftbodyaux_434293(c, elemtype, (*whileloop).kindU.S6.sons->data[((NI) 1)], LOC14, LOC15);
			addincstmt_435091((*whileloop).kindU.S6.sons->data[((NI) 1)], i);
			add_191164(body, whileloop);
		}
		goto LA4;
		LA6: ;
		{
			defaultop_435006(c, t, body, x, y);
		}
		LA4: ;
	}
	break;
	case ((NU8) 17):
	case ((NU8) 13):
	{
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = consideroverloadedop_434540(c, t, body, x, y);
			if (!!(LOC20)) goto LA21;
			{
				if (!!(((*t).sons->data[((NI) 0)] == NIM_NIL))) goto LA25;
				liftbodyaux_434293(c, (*t).sons->data[((NI) 0)], body, x, y);
			}
			LA25: ;
			{
				if (!((*t).kind == ((NU8) 17))) goto LA29;
				liftbodyobj_434378(c, (*t).n, body, x, y);
			}
			LA29: ;
		}
		LA21: ;
	}
	break;
	case ((NU8) 18):
	{
		liftbodytup_434317(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_435006(c, t, body, x, y);
		}
		goto LA33;
		LA37: ;
		{
			Tnode190813* call;
			Tsym190843* LOC40;
			Tnode190813* LOC41;
			call = newnodei_192407(((NU8) 27), (*c).info, ((NI) 2));
			asgnRefNoCycle((void**) (&(*call).typ), t);
			LOC40 = 0;
			LOC40 = createmagic_195986(((NimStringDesc*) &TMP3375), ((NU16) 214));
			asgnRefNoCycle((void**) (&(*call).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(LOC40));
			asgnRefNoCycle((void**) (&(*call).kindU.S6.sons->data[((NI) 1)]), y);
			LOC41 = 0;
			LOC41 = newasgnstmt_434510(x, call);
			add_191164(body, LOC41);
		}
		LA33: ;
	}
	break;
	case ((NU8) 48):
	case ((NU8) 27):
	{
		localerror_165155((*c).info, ((NU16) 4), ((NimStringDesc*) &TMP3376));
	}
	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_220032(t, ((NU8) 0));
		LOC44 = rawNewString(LOC45->Sup.len + 31);
appendString(LOC44, ((NimStringDesc*) &TMP3377));
appendString(LOC44, LOC45);
		internalerror_165199((*c).info, LOC44);
	}
	break;
	case ((NU8) 15):
	case ((NU8) 20):
	case ((NU8) 11):
	case ((NU8) 61):
	case ((NU8) 59):
	case ((NU8) 23):
	{
		Ttype190849* LOC47;
		LOC47 = 0;
		LOC47 = lastson_193442(t);
		liftbodyaux_434293(c, LOC47, body, x, y);
	}
	break;
	}
}

static N_INLINE(Tnode190813*, newderef_357024)(Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = newnodeit_192807(((NU8) 65), (*n).info, (*(*n).typ).sons->data[((NI) 0)]);
	addson_192819(result, n);
	return result;
}

N_NIMCALL(Tsym190843*, liftbody_434301)(Tcontext244023* c, Ttype190849* typ, Tlineinfo163338 info) {
	Tsym190843* result;
	Tliftctx434286 a;
	Tnode190813* body;
	Tident167021* LOC1;
	Tsym190843* dest;
	Tident167021* LOC2;
	Tsym190843* src;
	Tident167021* LOC3;
	Tnode190813* LOC4;
	Tnode190813* LOC5;
	Tnode190813* LOC6;
	Tnode190813* n;
	result = 0;
	memset((void*)(&a), 0, sizeof(a));
	a.info = info;
	body = newnodei_192351(((NU8) 115), info);
	LOC1 = 0;
	LOC1 = getident_167463(((NimStringDesc*) &TMP3365));
	result = newsym_191656(((NU8) 12), LOC1, (*typ).owner, info);
	a.fn = result;
	a.asgnfortype = typ;
	LOC2 = 0;
	LOC2 = getident_167463(((NimStringDesc*) &TMP3366));
	dest = newsym_191656(((NU8) 3), LOC2, result, info);
	LOC3 = 0;
	LOC3 = getident_167463(((NimStringDesc*) &TMP3367));
	src = newsym_191656(((NU8) 3), LOC3, result, info);
	asgnRefNoCycle((void**) (&(*dest).typ), makevartype_244643(c, typ));
	asgnRefNoCycle((void**) (&(*src).typ), typ);
	asgnRefNoCycle((void**) (&(*result).typ), newproctype_435194(info, (*typ).owner));
	addparam_435202((*result).typ, dest);
	addparam_435202((*result).typ, src);
	LOC4 = 0;
	LOC4 = newsymnode_192325(dest);
	LOC5 = 0;
	LOC5 = newderef_357024(LOC4);
	LOC6 = 0;
	LOC6 = newsymnode_192325(src);
	liftbodyaux_434293((&a), typ, body, LOC5, LOC6);
	n = newnodei_192407(((NU8) 79), info, ((NI) 7));
	{
		NI i_435248;
		NI HEX3Atmp_435257;
		NI LOC8;
		NI res_435260;
		i_435248 = 0;
		HEX3Atmp_435257 = 0;
		LOC8 = 0;
		LOC8 = len_191097(n);
		HEX3Atmp_435257 = (LOC8 - 1);
		res_435260 = ((NI) 0);
		{
			while (1) {
				if (!(res_435260 <= HEX3Atmp_435257)) goto LA10;
				i_435248 = res_435260;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_435248]), emptynode_191807);
				res_435260 += ((NI) 1);
			} LA10: ;
		}
	}
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(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(Tsym190843*, getasgnorliftbody_435276)(Tcontext244023* c, Ttype190849* typ, Tlineinfo163338 info) {
	Tsym190843* result;
	Ttype190849* t;
	result = 0;
	t = skiptypes_194167(typ, 8390656);
	result = (*t).assignment;
	{
		if (!result == 0) goto LA3;
		result = liftbody_434301(c, t, info);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode190813*, overloadedasgn_435296)(Tcontext244023* c, Tnode190813* dest, Tnode190813* src) {
	Tnode190813* result;
	Tsym190843* a;
	result = 0;
	a = getasgnorliftbody_435276(c, (*dest).typ, (*dest).info);
	result = newasgncall_434485(c, a, dest, src);
	return result;
}

N_NIMCALL(Tnode190813*, takeimplicitaddr_446986)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	NU8 valid;
	Ttype190849* 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_191097(n);
			if (!(LOC6 == ((NI) 1))) goto LA7;
			result = (*n).kindU.S6.sons->data[((NI) 0)];
			goto BeforeRet;
		}
		LA7: ;
	}
	break;
	default:
	{
	}
	break;
	}
	valid = isassignable_443642(c, n);
	{
		if (!!((valid == ((NU8) 1)))) goto LA12;
		{
			NimStringDesc* LOC18;
			if (!(valid == ((NU8) 2))) goto LA16;
			LOC18 = 0;
			LOC18 = rendertree_212058(n, 4);
			localerror_165155((*n).info, ((NU16) 126), LOC18);
		}
		goto LA14;
		LA16: ;
		{
			localerror_165155((*n).info, ((NU16) 125), ((NimStringDesc*) &TMP2989));
		}
		LA14: ;
	}
	LA12: ;
	LOC20 = 0;
	LOC20 = makeptrtype_244212(c, (*n).typ);
	result = newnodeit_192807(((NU8) 64), (*n).info, LOC20);
	add_191164(result, n);
	}BeforeRet: ;
	return result;
}

static N_INLINE(void, asgntoresultvar_447017)(Tcontext244023* c, Tnode190813* n, Tnode190813* le, Tnode190813* ri) {
	{
		Tnode190813* 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_446986(c, ri));
			(*(*x).typ).flags |= ((NI32)1)<<((((NU8) 18))%(sizeof(NI32)*8));
		}
		LA11: ;
	}
	LA3: ;
}

N_NIMCALL(Tnode190813*, semasgn_447081)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* a;
	Ttype190849* le;
{	result = 0;
	checksonslen_245249(n, ((NI) 2));
	a = (*n).kindU.S6.sons->data[((NI) 0)];
	switch ((*a).kind) {
	case ((NU8) 45):
	{
		Tnode190813* norig;
		norig = copytree_195028(n);
		a = builtinfieldaccess_445958(c, a, 1);
		{
			Tnode190813* LOC6;
			Tnode190813* LOC11;
			if (!(a == NIM_NIL)) goto LA4;
			LOC6 = 0;
			LOC6 = HEX5BHEX5D_191244(n, ((NI) 0));
			a = propertywriteaccess_446920(c, n, norig, LOC6);
			{
				if (!!((a == NIM_NIL))) goto LA9;
				result = a;
				goto BeforeRet;
			}
			LA9: ;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_191244(n, ((NI) 0));
			a = dottransformation_446679(c, LOC11);
			{
				if (!((*a).kind == ((NU8) 25))) goto LA14;
				(*a).kind = ((NU8) 27);
				a = semexprwithtype_409211(c, a, 1);
			}
			LA14: ;
		}
		LA4: ;
	}
	break;
	case ((NU8) 42):
	{
		Tnode190813* oldbracketexpr;
		oldbracketexpr = (*(*c).p).bracketexpr;
		a = semsubscript_446774(c, a, 1);
		{
			Tident167021* LOC21;
			Tnode190813* LOC22;
			if (!(a == NIM_NIL)) goto LA19;
			LOC21 = 0;
			LOC21 = getident_167463(((NimStringDesc*) &TMP3361));
			result = buildoverloadedsubscripts_446722((*n).kindU.S6.sons->data[((NI) 0)], LOC21);
			LOC22 = 0;
			LOC22 = HEX5BHEX5D_191244(n, ((NI) 1));
			add_191164(result, LOC22);
			result = semexprnotype_409221(c, result);
			asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
			goto BeforeRet;
		}
		LA19: ;
		asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
	}
	break;
	case ((NU8) 40):
	{
		Tident167021* LOC24;
		Tnode190813* LOC25;
		LOC24 = 0;
		LOC24 = getident_167463(((NimStringDesc*) &TMP3362));
		result = buildoverloadedsubscripts_446722((*n).kindU.S6.sons->data[((NI) 0)], LOC24);
		LOC25 = 0;
		LOC25 = HEX5BHEX5D_191244(n, ((NI) 1));
		add_191164(result, LOC25);
		result = semexprnotype_409221(c, result);
		goto BeforeRet;
	}
	break;
	default:
	{
		a = semexprwithtype_409211(c, a, 1);
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), a);
	le = (*a).typ;
	{
		NIM_BOOL LOC29;
		Ttype190849* LOC30;
		NU8 LOC32;
		NimStringDesc* LOC35;
		LOC29 = 0;
		LOC30 = 0;
		LOC30 = skiptypes_194167(le, 2048);
		LOC29 = !(((*LOC30).kind == ((NU8) 23)));
		if (!(LOC29)) goto LA31;
		LOC32 = 0;
		LOC32 = isassignable_443642(c, a);
		LOC29 = (LOC32 == ((NU8) 0));
		LA31: ;
		if (!LOC29) goto LA33;
		LOC35 = 0;
		LOC35 = rendertree_212058(a, 4);
		localerror_165155((*a).info, ((NU16) 176), LOC35);
	}
	goto LA27;
	LA33: ;
	{
		Tnode190813* lhs;
		NIM_BOOL lhsisresult;
		NIM_BOOL LOC37;
		Tnode190813* rhs;
		NU16 LOC39;
		lhs = (*n).kindU.S6.sons->data[((NI) 0)];
		LOC37 = 0;
		LOC37 = ((*lhs).kind == ((NU8) 3));
		if (!(LOC37)) goto LA38;
		LOC37 = ((*(*lhs).kindU.S4.sym).kind == ((NU8) 11));
		LA38: ;
		lhsisresult = LOC37;
		{
			if (!lhsisresult) goto LA42;
			LOC39 = 64;
		}
		goto LA40;
		LA42: ;
		{
			LOC39 = 0;
		}
		LA40: ;
		rhs = semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 1)], LOC39);
		{
			if (!lhsisresult) goto LA47;
			asgnRefNoCycle((void**) (&(*n).typ), enforcevoidcontext_431005);
			{
				NIM_BOOL LOC51;
				NIM_BOOL LOC53;
				LOC51 = 0;
				LOC51 = !(((*(*(*c).p).owner).kind == ((NU8) 17)));
				if (!(LOC51)) goto LA52;
				LOC53 = 0;
				LOC53 = ismetatype_191821((*(*lhs).kindU.S4.sym).typ);
				if (!(LOC53)) goto LA54;
				LOC53 = !(((*(*(*lhs).kindU.S4.sym).typ).kind == ((NU8) 8)));
				LA54: ;
				LOC51 = LOC53;
				LA52: ;
				if (!LOC51) goto LA55;
				{
					NU8 LOC59;
					LOC59 = 0;
					LOC59 = cmptypes_348708(c, (*lhs).typ, (*rhs).typ);
					if (!(LOC59 == ((NU8) 7))) goto LA60;
					{
						NimStringDesc* LOC66;
						if (!!(!(((*(*c).p).resultsym == NIM_NIL)))) goto LA64;
						LOC66 = 0;
						LOC66 = HEX24_165306(TMP3363);
						internalerror_165218(LOC66);
					}
					LA64: ;
					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 LA57;
				LA60: ;
				{
					typemismatch_409379(n, (*lhs).typ, (*rhs).typ);
				}
				LA57: ;
			}
			LA55: ;
		}
		LA47: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), fitnode_409245(c, le, rhs));
		{
			NIM_BOOL LOC70;
			LOC70 = 0;
			LOC70 = (((*(*lhs).typ).flags &(1<<((((NU8) 26))&31)))!=0);
			if (!(LOC70)) goto LA71;
			LOC70 = !(lhsisresult);
			LA71: ;
			if (!LOC70) goto LA72;
			result = overloadedasgn_435296(c, lhs, (*n).kindU.S6.sons->data[((NI) 1)]);
			goto BeforeRet;
		}
		LA72: ;
		fixabstracttype_443407(c, n);
		asgntoresultvar_447017(c, n, (*n).kindU.S6.sons->data[((NI) 0)], (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	LA27: ;
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semprocbody_409238)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tscope190837* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	result = semexpr_409201(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_195933((*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_432694(result);
		}
		goto LA9;
		LA21: ;
		{
			Tnode190813* a;
			a = newnodei_192407(((NU8) 73), (*n).info, ((NI) 2));
			asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325((*(*c).p).resultsym));
			asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), result);
			result = semasgn_447081(c, a);
		}
		LA9: ;
	}
	goto LA2;
	LA7: ;
	{
		discardcheck_432756(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_191821((*(*(*c).p).resultsym).typ);
		LA30: ;
		if (!LOC27) goto LA31;
		{
			NIM_BOOL LOC35;
			LOC35 = 0;
			LOC35 = isemptytype_195933((*result).typ);
			if (!LOC35) goto LA36;
			asgnRefNoCycle((void**) (&(*(*(*c).p).resultsym).typ), NIM_NIL);
			asgnRefNoCycle((void**) (&(*(*(*(*c).p).owner).typ).sons->data[((NI) 0)]), NIM_NIL);
		}
		goto LA33;
		LA36: ;
		{
			localerror_165155((*(*(*c).p).resultsym).info, ((NU16) 226), ((NimStringDesc*) &TMP2989));
		}
		LA33: ;
	}
	LA31: ;
	closescope_249111(c);
	return result;
}

N_NIMCALL(void, instantiatebody_411941)(Tcontext244023* c, Tnode190813* n, Tnode190813* params, Tsym190843* result) {
	{
		Tnode190813* b;
		Tidtable190861 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_194057((&symmap));
		{
			if (!!((params == NIM_NIL))) goto LA7;
			{
				NI i_412001;
				NI HEX3Atmp_412044;
				NI LOC10;
				NI res_412047;
				i_412001 = 0;
				HEX3Atmp_412044 = 0;
				LOC10 = 0;
				LOC10 = len_191097(params);
				HEX3Atmp_412044 = (LOC10 - 1);
				res_412047 = ((NI) 1);
				{
					while (1) {
						Tsym190843* param;
						Tnode190813* LOC13;
						if (!(res_412047 <= HEX3Atmp_412044)) goto LA12;
						i_412001 = res_412047;
						LOC13 = 0;
						LOC13 = HEX5BHEX5D_191244(params, i_412001);
						param = (*LOC13).kindU.S4.sym;
						{
							Tnode190813* LOC18;
							Tidobj167015* LOC19;
							Tnode190813* LOC20;
							TNimObject* LOC21;
							if (!(((*param).flags &(1<<((((NU8) 31))&31)))!=0)) goto LA16;
							LOC18 = 0;
							LOC18 = HEX5BHEX5D_191244(params, i_412001);
							LOC19 = 0;
							LOC19 = &(*LOC18).kindU.S4.sym->Sup;
							LOC20 = 0;
							LOC20 = HEX5BHEX5D_191244((*(*result).typ).n, (NI)((*param).position + ((NI) 1)));
							LOC21 = 0;
							LOC21 = &(*LOC20).kindU.S4.sym->Sup.Sup;
							idtableput_198196((&symmap), LOC19, LOC21);
						}
						LA16: ;
						res_412047 += ((NI) 1);
					} LA12: ;
				}
			}
		}
		LA7: ;
		freshgensyms_411801(b, result, (&symmap));
		b = semprocbody_409238(c, b);
		b = hlobody_411161(c, b);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_370118((*c).module, b, result));
		(*result).flags &= ~(((NI32)1) << ((((NU8) 4)) % (sizeof(NI32)*8)));
		(*c).ingenericinst -= ((NI) 1);
	}
	LA3: ;
}

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

N_NIMCALL(NIM_BOOL, hasobjparam_439633)(Tsym190843* s) {
	NIM_BOOL result;
	Ttype190849* t;
{	result = 0;
	t = (*s).typ;
	{
		NI col_439651;
		NI HEX3Atmp_439662;
		NI LOC2;
		NI res_439665;
		col_439651 = 0;
		HEX3Atmp_439662 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193351(t);
		HEX3Atmp_439662 = (NI)(LOC2 - ((NI) 1));
		res_439665 = ((NI) 1);
		{
			while (1) {
				if (!(res_439665 <= HEX3Atmp_439662)) goto LA4;
				col_439651 = res_439665;
				{
					Ttype190849* LOC7;
					LOC7 = 0;
					LOC7 = skiptypes_194167((*t).sons->data[col_439651], IL64(211106247215360));
					if (!((*LOC7).kind == ((NU8) 17))) goto LA8;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA8: ;
				res_439665 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, finishmethod_409341)(Tcontext244023* c, Tsym190843* s) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = hasobjparam_439633(s);
		if (!LOC3) goto LA4;
		methoddef_355634(s, NIM_FALSE);
	}
	LA4: ;
}

N_NIMCALL(Tsym190843*, generateinstance_412450)(Tcontext244023* c, Tsym190843* fn, Tidtable190861 pt, Tlineinfo163338 info) {
	Tsym190843* result;
	Tnode190813* n;
	Tsym190843* LOC9;
	Tscope190837* LOC10;
	Tinstantiation190833* entry;
	Tsym190843* oldprc;
	Tsym190843* LOC35;
{	result = 0;
	{
		if (!((393216 &(1<<(((*fn).kind)&31)))!=0)) goto LA3;
		result = fn;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(((NI) 1000) < (*c).instcounter)) goto LA7;
		internalerror_165199((*(*fn).ast).info, ((NimStringDesc*) &TMP3018));
	}
	LA7: ;
	(*c).instcounter += ((NI) 1);
	n = copytree_195028((*fn).ast);
	LOC9 = 0;
	LOC9 = getmodule_198243(fn);
	(*c).friendmodules = (Tsymseq190815*) incrSeq(&((*c).friendmodules)->Sup, sizeof(Tsym190843*));
	asgnRefNoCycle((void**) (&(*c).friendmodules->data[(*c).friendmodules->Sup.len-1]), LOC9);
	result = copysym_193607(fn, NIM_FALSE);
	(*result).flags |= ((NI32)1)<<((((NU8) 2))%(sizeof(NI32)*8));
	asgnRefNoCycle((void**) (&(*result).owner), fn);
	asgnRefNoCycle((void**) (&(*result).ast), n);
	pushowner_244261(result);
	LOC10 = 0;
	LOC10 = openscope_249091(c);
	{
		NimStringDesc* LOC15;
		if (!!(!(((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1))))) goto LA13;
		LOC15 = 0;
		LOC15 = HEX24_165306(TMP3019);
		internalerror_165218(LOC15);
	}
	LA13: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(result));
	pushinfocontext_164192(info);
	entry = new_412524();
	asgnRefNoCycle((void**) (&(*entry).sym), result);
	instantiategenericparamlist_411213(c, (*n).kindU.S6.sons->data[((NI) 2)], pt, entry);
	pushproccon_244359(c, result);
	instantiateproctype_412176(c, pt, result, info);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), emptynode_191807);
	oldprc = genericcacheget_411447(fn, (*entry));
	{
		Tinstantiationpair244013 LOC24;
		if (!(oldprc == NIM_NIL)) goto LA18;
		{
			if (!((*c).incompilescontext == ((NI) 0))) goto LA22;
			safeadd_412561((&(*fn).kindU.S2.procinstcache), entry);
		}
		LA22: ;
		memset((void*)(&LOC24), 0, sizeof(LOC24));
		makeinstpair_244157(fn, entry, (&LOC24));
		(*c).generics = (TY244141*) incrSeq(&((*c).generics)->Sup, sizeof(Tinstantiationpair244013));
		asgnRefNoCycle((void**) (&(*c).generics->data[(*c).generics->Sup.len-1].genericsym), LOC24.genericsym);
		asgnRefNoCycle((void**) (&(*c).generics->data[(*c).generics->Sup.len-1].inst), LOC24.inst);
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA27;
			pragma_260069(c, result, (*n).kindU.S6.sons->data[((NI) 4)], TMP3099);
		}
		LA27: ;
		{
			Tnode190813* LOC33;
			if (!(*n).kindU.S6.sons->data[((NI) 6)] == 0) goto LA31;
			LOC33 = 0;
			LOC33 = getbody_235648(fn);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), copytree_195028(LOC33));
		}
		LA31: ;
		instantiatebody_411941(c, n, (*(*fn).typ).n, result);
		sideeffectscheck_412116(c, result);
		paramstypecheck_410015(c, (*result).typ);
	}
	goto LA16;
	LA18: ;
	{
		result = oldprc;
	}
	LA16: ;
	popproccon_244391(c);
	popinfocontext_164211();
	closescope_249111(c);
	popowner_244267();
	LOC35 = 0;
	LOC35 = pop_367918((&(*c).friendmodules));
	(*c).instcounter -= ((NI) 1);
	{
		if (!((*result).kind == ((NU8) 13))) goto LA38;
		finishmethod_409341(c, result);
	}
	LA38: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, instgenericconvertersarg_414176)(Tcontext244023* c, Tnode190813* a, Tcandidate344209* x) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		Tsym190843* 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_195651((*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym);
		LA6: ;
		if (!LOC3) goto LA7;
		finalcallee = generateinstance_412450(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(Tnode190813*, indextypesmatch_409348)(Tcontext244023* c, Ttype190849* f, Ttype190849* a, Tnode190813* arg) {
	Tnode190813* result;
	Tcandidate344209 m;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_344276(c, (&m), f);
	result = paramtypesmatch_349556((&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_414176(c, result, (&m));
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode190813*, fitnode_409245)(Tcontext244023* c, Ttype190849* formal, Tnode190813* arg) {
	Tnode190813* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!(*arg).typ == 0) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_212058(arg, 4);
		localerror_165155((*arg).info, ((NU16) 90), LOC5);
		result = copynode_194640(arg);
		asgnRefNoCycle((void**) (&(*result).typ), formal);
	}
	goto LA1;
	LA3: ;
	{
		result = indextypesmatch_409348(c, formal, (*arg).typ, arg);
		{
			if (!(result == NIM_NIL)) goto LA9;
			typemismatch_409379(arg, formal, (*arg).typ);
			result = copytree_195028(arg);
			asgnRefNoCycle((void**) (&(*result).typ), formal);
		}
		goto LA7;
		LA9: ;
		{
			Tnode190813* x;
			x = skipconv_229935(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_409253(x, formal, NIM_TRUE);
			}
			goto LA12;
			LA16: ;
			{
				result = skiphiddensubconv_230078(result);
			}
			LA12: ;
		}
		LA7: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semconstboolexpr_415652)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* nn;
	Ttype190849* LOC1;
{	result = 0;
	nn = semexprwithtype_409211(c, n, 0);
	LOC1 = 0;
	LOC1 = getsystype_238030(((NU8) 1));
	result = fitnode_409245(c, LOC1, nn);
	{
		if (!(result == NIM_NIL)) goto LA4;
		localerror_165155((*n).info, ((NU16) 104), ((NimStringDesc*) &TMP2989));
		result = nn;
		goto BeforeRet;
	}
	LA4: ;
	result = getconstexpr_256004((*c).module, result);
	{
		if (!(result == NIM_NIL)) goto LA8;
		localerror_165155((*n).info, ((NU16) 104), ((NimStringDesc*) &TMP2989));
		result = nn;
	}
	LA8: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, forcebool_415629)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Ttype190849* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getsystype_238030(((NU8) 1));
	result = fitnode_409245(c, LOC1, n);
	{
		if (!(result == NIM_NIL)) goto LA4;
		result = n;
	}
	LA4: ;
	return result;
}

N_NIMCALL(Tnode190813*, sembranchrange_417878)(Tcontext244023* c, Tnode190813* t, Tnode190813* a, Tnode190813* b, NI64* covered) {
	Tnode190813* result;
	Tnode190813* ac;
	Tnode190813* bc;
	Tnode190813* at;
	Tnode190813* LOC1;
	Tnode190813* bt;
	Tnode190813* LOC2;
	result = 0;
	checkminsonslen_245259(t, ((NI) 1));
	ac = semconstexpr_410485(c, a);
	bc = semconstexpr_410485(c, b);
	LOC1 = 0;
	LOC1 = fitnode_409245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, ac);
	at = skipconvtaketype_229967(LOC1);
	LOC2 = 0;
	LOC2 = fitnode_409245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, bc);
	bt = skipconvtaketype_229967(LOC2);
	result = newnodei_192351(((NU8) 44), (*a).info);
	add_191164(result, at);
	add_191164(result, bt);
	{
		NIM_BOOL LOC5;
		LOC5 = 0;
		LOC5 = emptyrange_240034(ac, bc);
		if (!LOC5) goto LA6;
		localerror_165155((*b).info, ((NU16) 106), ((NimStringDesc*) &TMP2989));
	}
	goto LA3;
	LA6: ;
	{
		NI64 LOC9;
		NI64 LOC10;
		LOC9 = 0;
		LOC9 = getordvalue_220178(bc);
		LOC10 = 0;
		LOC10 = getordvalue_220178(ac);
		(*covered) = (NI64)((NI64)((NI64)((*covered) + LOC9) - LOC10) + IL64(1));
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode190813*, semcasebranchrange_417900)(Tcontext244023* c, Tnode190813* t, Tnode190813* b, NI64* covered) {
	Tnode190813* result;
	result = 0;
	checksonslen_245249(b, ((NI) 3));
	result = sembranchrange_417878(c, t, (*b).kindU.S6.sons->data[((NI) 1)], (*b).kindU.S6.sons->data[((NI) 2)], covered);
	return result;
}

N_NIMCALL(Tnode190813*, semcasebranchsetelem_417913)(Tcontext244023* c, Tnode190813* t, Tnode190813* b, NI64* covered) {
	Tnode190813* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isrange_219612(b);
		if (!LOC3) goto LA4;
		checksonslen_245249(b, ((NI) 3));
		result = sembranchrange_417878(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_245249(b, ((NI) 2));
		result = sembranchrange_417878(c, t, (*b).kindU.S6.sons->data[((NI) 0)], (*b).kindU.S6.sons->data[((NI) 1)], covered);
	}
	goto LA1;
	LA7: ;
	{
		result = fitnode_409245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, b);
		(*covered) += ((NI) 1);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, checkforoverlap_417804)(Tcontext244023* c, Tnode190813* t, NI currentex, NI branchindex) {
	Tnode190813* ex;
	Tnode190813* LOC1;
	Tnode190813* LOC2;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_191244(t, branchindex);
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_191244(LOC1, currentex);
	ex = skipconv_229935(LOC2);
	{
		NI i_417824;
		NI res_417853;
		i_417824 = 0;
		res_417853 = ((NI) 1);
		{
			while (1) {
				if (!(res_417853 <= branchindex)) goto LA5;
				i_417824 = res_417853;
				{
					NI j_417838;
					NI HEX3Atmp_417844;
					NI LOC7;
					NI res_417847;
					j_417838 = 0;
					HEX3Atmp_417844 = 0;
					LOC7 = 0;
					LOC7 = sonslen_193403((*t).kindU.S6.sons->data[i_417824]);
					HEX3Atmp_417844 = (NI)(LOC7 - ((NI) 2));
					res_417847 = ((NI) 0);
					{
						while (1) {
							if (!(res_417847 <= HEX3Atmp_417844)) goto LA9;
							j_417838 = res_417847;
							{
								NIM_BOOL LOC12;
								LOC12 = 0;
								LOC12 = (i_417824 == branchindex);
								if (!(LOC12)) goto LA13;
								LOC12 = (j_417838 == currentex);
								LA13: ;
								if (!LOC12) goto LA14;
								goto LA6;
							}
							LA14: ;
							{
								Tnode190813* LOC18;
								NIM_BOOL LOC19;
								LOC18 = 0;
								LOC18 = skipconv_229935((*(*t).kindU.S6.sons->data[i_417824]).kindU.S6.sons->data[j_417838]);
								LOC19 = 0;
								LOC19 = overlap_240012(LOC18, ex);
								if (!LOC19) goto LA20;
								localerror_165155((*ex).info, ((NU16) 105), ((NimStringDesc*) &TMP2989));
							}
							LA20: ;
							res_417847 += ((NI) 1);
						} LA9: ;
					}
				} LA6: ;
				res_417853 += ((NI) 1);
			} LA5: ;
		}
	}
}

N_NIMCALL(void, semcasebranch_417947)(Tcontext244023* c, Tnode190813* t, Tnode190813* branch, NI branchindex, NI64* covered) {
{	{
		NI i_417967;
		NI HEX3Atmp_418060;
		NI LOC2;
		NI res_418063;
		i_417967 = 0;
		HEX3Atmp_418060 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(branch);
		HEX3Atmp_418060 = (NI)(LOC2 - ((NI) 2));
		res_418063 = ((NI) 0);
		{
			while (1) {
				Tnode190813* b;
				if (!(res_418063 <= HEX3Atmp_418060)) goto LA4;
				i_417967 = res_418063;
				b = (*branch).kindU.S6.sons->data[i_417967];
				{
					if (!((*b).kind == ((NU8) 44))) goto LA7;
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_417967]), b);
				}
				goto LA5;
				LA7: ;
				{
					NIM_BOOL LOC10;
					LOC10 = 0;
					LOC10 = isrange_219612(b);
					if (!LOC10) goto LA11;
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_417967]), semcasebranchrange_417900(c, t, b, covered));
				}
				goto LA5;
				LA11: ;
				{
					Tnode190813* r;
					r = semconstexpr_410485(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_191097(r);
						LOC17 = (LOC19 == ((NI) 0));
						LA18: ;
						LOC16 = LOC17;
						if (!(LOC16)) goto LA20;
						LOC21 = 0;
						LOC21 = sonslen_193403(branch);
						LOC16 = (LOC21 == ((NI) 2));
						LA20: ;
						if (!LOC16) goto LA22;
						delson_194577(branch, ((NI) 0));
						goto BeforeRet;
					}
					goto LA14;
					LA22: ;
					{
						NIM_BOOL LOC25;
						NI LOC27;
						Tnode190813* LOC30;
						LOC25 = 0;
						LOC25 = !(((*r).kind == ((NU8) 39) || (*r).kind == ((NU8) 41)));
						if (LOC25) goto LA26;
						LOC27 = 0;
						LOC27 = len_191097(r);
						LOC25 = (LOC27 == ((NI) 0));
						LA26: ;
						if (!LOC25) goto LA28;
						checkminsonslen_245259(t, ((NI) 1));
						LOC30 = 0;
						LOC30 = fitnode_409245(c, (*(*t).kindU.S6.sons->data[((NI) 0)]).typ, r);
						asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_417967]), skipconv_229935(LOC30));
						(*covered) += ((NI) 1);
					}
					goto LA14;
					LA28: ;
					{
						Tnode190813* LOC32;
						LOC32 = 0;
						LOC32 = HEX5BHEX5D_191244(r, ((NI) 0));
						asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[i_417967]), semcasebranchsetelem_417913(c, t, LOC32, covered));
						{
							NI j_418035;
							NI HEX3Atmp_418053;
							NI LOC34;
							NI res_418056;
							j_418035 = 0;
							HEX3Atmp_418053 = 0;
							LOC34 = 0;
							LOC34 = len_191097(r);
							HEX3Atmp_418053 = (LOC34 - 1);
							res_418056 = ((NI) 1);
							{
								while (1) {
									Tnode190813* LOC37;
									Tnode190813* LOC38;
									NI L;
									Tnode190813* LOC39;
									if (!(res_418056 <= HEX3Atmp_418053)) goto LA36;
									j_418035 = res_418056;
									LOC37 = 0;
									LOC37 = HEX5BHEX5D_191244(r, j_418035);
									LOC38 = 0;
									LOC38 = semcasebranchsetelem_417913(c, t, LOC37, covered);
									add_191164(branch, LOC38);
									L = len_191097(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_418056 += ((NI) 1);
								} LA36: ;
							}
						}
					}
					LA14: ;
				}
				LA5: ;
				checkforoverlap_417804(c, t, i_417967, branchindex);
				res_418063 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(void, semrecordcase_418098)(Tcontext244023* c, Tnode190813* n, Intset187056* check, NI* pos, Tnode190813* father, Ttype190849* rectype) {
	Tnode190813* a;
	NI64 covered;
	Ttype190849* typ;
	NIM_BOOL chckcovered;
{	a = copynode_194640(n);
	checkminsonslen_245259(n, ((NI) 2));
	semrecordnodeaux_418088(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_165218(((NimStringDesc*) &TMP3379));
		goto BeforeRet;
	}
	LA3: ;
	(*(*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).flags |= ((NI32)1)<<((((NU8) 18))%(sizeof(NI32)*8));
	covered = IL64(0);
	typ = skiptypes_194167((*(*a).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106240964608));
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = isordinaltype_220093(typ);
		if (!!(LOC7)) goto LA8;
		localerror_165155((*n).info, ((NU16) 108), ((NimStringDesc*) &TMP2989));
	}
	goto LA5;
	LA8: ;
	{
		NI64 LOC11;
		LOC11 = 0;
		LOC11 = firstord_220004(typ);
		if (!(LOC11 < IL64(0))) goto LA12;
		localerror_165155((*n).info, ((NU16) 109), (*(*(*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
	}
	goto LA5;
	LA12: ;
	{
		NI64 LOC15;
		LOC15 = 0;
		LOC15 = lengthord_220016(typ);
		if (!(IL64(32767) < LOC15)) goto LA16;
		localerror_165155((*n).info, ((NU16) 110), (*(*(*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
	}
	goto LA5;
	LA16: ;
	LA5: ;
	chckcovered = NIM_TRUE;
	{
		NI i_418169;
		NI HEX3Atmp_418178;
		NI LOC19;
		NI res_418181;
		i_418169 = 0;
		HEX3Atmp_418178 = 0;
		LOC19 = 0;
		LOC19 = sonslen_193403(n);
		HEX3Atmp_418178 = (NI)(LOC19 - ((NI) 1));
		res_418181 = ((NI) 1);
		{
			while (1) {
				Tnode190813* b;
				NI LOC25;
				Tnode190813* LOC26;
				if (!(res_418181 <= HEX3Atmp_418178)) goto LA21;
				i_418169 = res_418181;
				b = copytree_195028((*n).kindU.S6.sons->data[i_418169]);
				addson_192819(a, b);
				switch ((*(*n).kindU.S6.sons->data[i_418169]).kind) {
				case ((NU8) 85):
				{
					checkminsonslen_245259(b, ((NI) 2));
					semcasebranch_417947(c, a, b, i_418169, (&covered));
				}
				break;
				case ((NU8) 88):
				{
					chckcovered = NIM_FALSE;
					checksonslen_245249(b, ((NI) 1));
				}
				break;
				default:
				{
					illformedast_245229(n);
				}
				break;
				}
				LOC25 = 0;
				LOC25 = sonslen_193403(b);
				delson_194577(b, (NI)(LOC25 - ((NI) 1)));
				LOC26 = 0;
				LOC26 = lastson_193431((*n).kindU.S6.sons->data[i_418169]);
				semrecordnodeaux_418088(c, LOC26, check, pos, b, rectype);
				res_418181 += ((NI) 1);
			} LA21: ;
		}
	}
	{
		NIM_BOOL LOC29;
		NI64 LOC31;
		LOC29 = 0;
		LOC29 = chckcovered;
		if (!(LOC29)) goto LA30;
		LOC31 = 0;
		LOC31 = lengthord_220016((*(*a).kindU.S6.sons->data[((NI) 0)]).typ);
		LOC29 = !((covered == LOC31));
		LA30: ;
		if (!LOC29) goto LA32;
		localerror_165155((*a).info, ((NU16) 151), ((NimStringDesc*) &TMP2989));
	}
	LA32: ;
	addson_192819(father, a);
	}BeforeRet: ;
}

N_NIMCALL(void, semrecordnodeaux_418088)(Tcontext244023* c, Tnode190813* n, Intset187056* check, NI* pos, Tnode190813* father, Ttype190849* rectype) {
{	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 140):
	{
		Tnode190813* branch;
		branch = NIM_NIL;
		{
			NI i_418232;
			NI HEX3Atmp_418613;
			NI LOC7;
			NI res_418616;
			i_418232 = 0;
			HEX3Atmp_418613 = 0;
			LOC7 = 0;
			LOC7 = sonslen_193403(n);
			HEX3Atmp_418613 = (NI)(LOC7 - ((NI) 1));
			res_418616 = ((NI) 0);
			{
				while (1) {
					Tnode190813* it;
					NI idx;
					if (!(res_418616 <= HEX3Atmp_418613)) goto LA9;
					i_418232 = res_418616;
					it = (*n).kindU.S6.sons->data[i_418232];
					{
						if (!(it == NIM_NIL)) goto LA12;
						illformedast_245229(n);
					}
					LA12: ;
					idx = ((NI) 1);
					switch ((*it).kind) {
					case ((NU8) 86):
					{
						checksonslen_245249(it, ((NI) 2));
						{
							Tnode190813* e;
							if (!((*c).ingenericcontext == ((NI) 0))) goto LA17;
							e = semconstboolexpr_415652(c, (*it).kindU.S6.sons->data[((NI) 0)]);
							{
								if (!!(((*e).kind == ((NU8) 6)))) goto LA21;
								internalerror_165199((*e).info, ((NimStringDesc*) &TMP3378));
							}
							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: ;
						{
							Tnode190813* LOC29;
							LOC29 = 0;
							LOC29 = semexprwithtype_409211(c, (*it).kindU.S6.sons->data[((NI) 0)], 0);
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), forcebool_415629(c, LOC29));
						}
						LA15: ;
					}
					break;
					case ((NU8) 88):
					{
						checksonslen_245249(it, ((NI) 1));
						{
							if (!(branch == NIM_NIL)) goto LA33;
							branch = (*it).kindU.S6.sons->data[((NI) 0)];
						}
						LA33: ;
						idx = ((NI) 0);
					}
					break;
					default:
					{
						illformedast_245229(n);
					}
					break;
					}
					{
						Intset187056 newcheck;
						NI newpos;
						Tnode190813* newf;
						if (!(((NI) 0) < (*c).ingenericcontext)) goto LA38;
						memset((void*)(&newcheck), 0, sizeof(newcheck));
						assign_187946((&newcheck), (*check));
						newpos = (*pos);
						newf = newnodei_192351(((NU8) 138), (*n).info);
						semrecordnodeaux_418088(c, (*it).kindU.S6.sons->data[idx], (&newcheck), (&newpos), newf, rectype);
						{
							NI LOC42;
							LOC42 = 0;
							LOC42 = len_191097(newf);
							if (!(LOC42 == ((NI) 1))) goto LA43;
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[idx]), HEX5BHEX5D_191244(newf, ((NI) 0)));
						}
						goto LA40;
						LA43: ;
						{
							asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[idx]), newf);
						}
						LA40: ;
					}
					LA38: ;
					res_418616 += ((NI) 1);
				} LA9: ;
			}
		}
		{
			if (!(((NI) 0) < (*c).ingenericcontext)) goto LA48;
			addson_192819(father, n);
		}
		goto LA46;
		LA48: ;
		{
			if (!!((branch == NIM_NIL))) goto LA51;
			semrecordnodeaux_418088(c, branch, check, pos, father, rectype);
		}
		goto LA46;
		LA51: ;
		LA46: ;
	}
	break;
	case ((NU8) 139):
	{
		semrecordcase_418098(c, n, check, pos, father, rectype);
	}
	break;
	case ((NU8) 23):
	{
		{
			Tnode190813* LOC59;
			if (!!(((*father).kind == ((NU8) 138)))) goto LA57;
			LOC59 = 0;
			LOC59 = newnodei_192351(((NU8) 138), (*n).info);
			addson_192819(father, LOC59);
		}
		LA57: ;
	}
	break;
	case ((NU8) 138):
	{
		Tnode190813* a;
		{
			if (!((*father).kind == ((NU8) 138))) goto LA63;
			a = father;
		}
		goto LA61;
		LA63: ;
		{
			a = copynode_194640(n);
		}
		LA61: ;
		{
			NI i_418340;
			NI HEX3Atmp_418621;
			NI LOC67;
			NI res_418624;
			i_418340 = 0;
			HEX3Atmp_418621 = 0;
			LOC67 = 0;
			LOC67 = sonslen_193403(n);
			HEX3Atmp_418621 = (NI)(LOC67 - ((NI) 1));
			res_418624 = ((NI) 0);
			{
				while (1) {
					if (!(res_418624 <= HEX3Atmp_418621)) goto LA69;
					i_418340 = res_418624;
					semrecordnodeaux_418088(c, (*n).kindU.S6.sons->data[i_418340], check, pos, a, rectype);
					res_418624 += ((NI) 1);
				} LA69: ;
			}
		}
		{
			if (!!((a == father))) goto LA72;
			addson_192819(father, a);
		}
		LA72: ;
	}
	break;
	case ((NU8) 35):
	{
		NI length;
		Tnode190813* a;
		Ttype190849* typ;
		Tsym190843* rec;
		checkminsonslen_245259(n, ((NI) 3));
		length = sonslen_193403(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_192351(((NU8) 138), (*n).info);
		}
		goto LA75;
		LA79: ;
		{
			a = emptynode_191807;
		}
		LA75: ;
		{
			if (!!(((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((NU8) 1)))) goto LA84;
			localerror_165155((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).info, ((NU16) 175), ((NimStringDesc*) &TMP2989));
		}
		LA84: ;
		typ = 0;
		{
			if (!((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1))) goto LA88;
			localerror_165155((*n).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
			typ = errortype_245150(c);
		}
		goto LA86;
		LA88: ;
		{
			typ = semtypenode_409269(c, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
			propagatetoowner_194274(rectype, typ);
		}
		LA86: ;
		rec = (*rectype).sym;
		{
			NI i_418400;
			NI HEX3Atmp_418631;
			NI LOC92;
			NI res_418634;
			i_418400 = 0;
			HEX3Atmp_418631 = 0;
			LOC92 = 0;
			LOC92 = sonslen_193403(n);
			HEX3Atmp_418631 = (NI)(LOC92 - ((NI) 3));
			res_418634 = ((NI) 0);
			{
				while (1) {
					Tsym190843* f;
					if (!(res_418634 <= HEX3Atmp_418631)) goto LA94;
					i_418400 = res_418634;
					f = semidentwithpragma_409964(c, ((NU8) 19), (*n).kindU.S6.sons->data[i_418400], 2);
					suggestsym_353960((*(*n).kindU.S6.sons->data[i_418400]).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_161320((*(*f).name).s));
						(*f).flags = ((*f).flags | (96 & (*rec).flags));
					}
					LA101: ;
					(*pos) += ((NI) 1);
					{
						NIM_BOOL LOC105;
						LOC105 = 0;
						LOC105 = containsorincl_187898(check, (*(*f).name).Sup.id);
						if (!LOC105) goto LA106;
						localerror_165155((*(*n).kindU.S6.sons->data[i_418400]).info, ((NU16) 40), (*(*f).name).s);
					}
					LA106: ;
					{
						Tnode190813* LOC112;
						if (!((*a).kind == ((NU8) 1))) goto LA110;
						LOC112 = 0;
						LOC112 = newsymnode_192325(f);
						addson_192819(father, LOC112);
					}
					goto LA108;
					LA110: ;
					{
						Tnode190813* LOC114;
						LOC114 = 0;
						LOC114 = newsymnode_192325(f);
						addson_192819(a, LOC114);
					}
					LA108: ;
					res_418634 += ((NI) 1);
				} LA94: ;
			}
		}
		{
			if (!!(((*a).kind == ((NU8) 1)))) goto LA117;
			addson_192819(father, a);
		}
		LA117: ;
	}
	break;
	case ((NU8) 1):
	{
	}
	break;
	default:
	{
		illformedast_245229(n);
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(Ttype190849*, semobjectnode_419016)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	Intset187056 check;
	NI pos;
	Ttype190849* base;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_415725(c, ((NU8) 17));
		goto BeforeRet;
	}
	LA4: ;
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_187927((&check));
	pos = ((NI) 0);
	base = NIM_NIL;
	checksonslen_245249(n, ((NI) 3));
	{
		Ttype190849* LOC10;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA8;
		LOC10 = 0;
		LOC10 = semtypenode_409269(c, (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		base = skiptypesornil_194195(LOC10, IL64(211106247215360));
		{
			if (!base == 0) goto LA13;
			localerror_165155((*n).info, ((NU16) 123), ((NimStringDesc*) &TMP3013));
		}
		goto LA11;
		LA13: ;
		{
			Ttype190849* concretebase;
			Ttype190849* LOC16;
			LOC16 = 0;
			LOC16 = skipgenericinvocation_418764(base);
			concretebase = skiptypes_194167(LOC16, IL64(211106247215360));
			{
				NIM_BOOL LOC19;
				LOC19 = 0;
				LOC19 = ((*concretebase).kind == ((NU8) 17));
				if (!(LOC19)) goto LA20;
				LOC19 = !((((*concretebase).flags &(1<<((((NU8) 2))&31)))!=0));
				LA20: ;
				if (!LOC19) goto LA21;
				addinheritedfields_418798(c, (&check), (&pos), concretebase);
			}
			goto LA17;
			LA21: ;
			{
				{
					if (!!(((*concretebase).kind == ((NU8) 50)))) goto LA26;
					localerror_165155((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 121), ((NimStringDesc*) &TMP2989));
				}
				LA26: ;
				base = NIM_NIL;
			}
			LA17: ;
		}
		LA11: ;
	}
	LA8: ;
	{
		if (!!(((*n).kind == ((NU8) 133)))) goto LA30;
		internalerror_165199((*n).info, ((NimStringDesc*) &TMP3017));
	}
	LA30: ;
	result = neworprevtype_415695(((NU8) 17), prev, c);
	rawaddson_194478(result, base);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_192351(((NU8) 138), (*n).info));
	semrecordnodeaux_418088(c, (*n).kindU.S6.sons->data[((NI) 2)], (&check), (&pos), (*result).n, result);
	{
		Tsym190843* s;
		Tident167021* LOC36;
		Tnode190813* LOC37;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA34;
		LOC36 = 0;
		LOC36 = getident_167463(((NimStringDesc*) &TMP3380));
		LOC37 = 0;
		LOC37 = newidentnode_192313(LOC36, (*n).info);
		s = newsyms_409904(((NU8) 7), LOC37, c);
		asgnRefNoCycle((void**) (&(*s).typ), result);
		pragma_260069(c, s, (*n).kindU.S6.sons->data[((NI) 0)], TMP3381);
	}
	LA34: ;
	{
		NIM_BOOL LOC40;
		LOC40 = 0;
		LOC40 = (base == NIM_NIL);
		if (!(LOC40)) goto LA41;
		LOC40 = !((((*result).flags &(1<<((((NU8) 3))&31)))!=0));
		LA41: ;
		if (!LOC40) goto LA42;
		(*result).flags |= ((NI32)1)<<((((NU8) 2))%(sizeof(NI32)*8));
	}
	LA42: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype190849*, semtuple_417454)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	Ttype190849* typ;
	Intset187056 check;
	NI counter;
	result = 0;
	typ = 0;
	result = neworprevtype_415695(((NU8) 18), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_192351(((NU8) 138), (*n).info));
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_187927((&check));
	counter = ((NI) 0);
	{
		NI i_417475;
		NI HEX3Atmp_417611;
		NI LOC2;
		NI res_417614;
		i_417475 = 0;
		HEX3Atmp_417611 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_417611 = (NI)(LOC2 - ((NI) 1));
		res_417614 = ((NI) 0);
		{
			while (1) {
				Tnode190813* a;
				NI length;
				if (!(res_417614 <= HEX3Atmp_417611)) goto LA4;
				i_417475 = res_417614;
				a = (*n).kindU.S6.sons->data[i_417475];
				{
					if (!!(((*a).kind == ((NU8) 35)))) goto LA7;
					illformedast_245229(a);
				}
				LA7: ;
				checkminsonslen_245259(a, ((NI) 3));
				length = sonslen_193403(a);
				{
					if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1)))) goto LA11;
					typ = semtypenode_409269(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))], NIM_NIL);
				}
				goto LA9;
				LA11: ;
				{
					localerror_165155((*a).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
					typ = errortype_245150(c);
				}
				LA9: ;
				{
					if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).kind == ((NU8) 1)))) goto LA16;
					localerror_165155((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).info, ((NU16) 175), ((NimStringDesc*) &TMP2989));
				}
				LA16: ;
				{
					NI j_417522;
					NI HEX3Atmp_417604;
					NI res_417607;
					j_417522 = 0;
					HEX3Atmp_417604 = 0;
					HEX3Atmp_417604 = (NI)(length - ((NI) 3));
					res_417607 = ((NI) 0);
					{
						while (1) {
							Tsym190843* field;
							if (!(res_417607 <= HEX3Atmp_417604)) goto LA20;
							j_417522 = res_417607;
							field = newsymg_409916(((NU8) 19), (*a).kindU.S6.sons->data[j_417522], c);
							asgnRefNoCycle((void**) (&(*field).typ), typ);
							(*field).position = counter;
							counter += ((NI) 1);
							{
								NIM_BOOL LOC23;
								LOC23 = 0;
								LOC23 = containsorincl_187898((&check), (*(*field).name).Sup.id);
								if (!LOC23) goto LA24;
								localerror_165155((*(*a).kindU.S6.sons->data[j_417522]).info, ((NU16) 40), (*(*field).name).s);
							}
							goto LA21;
							LA24: ;
							{
								Tnode190813* LOC27;
								LOC27 = 0;
								LOC27 = newsymnode_192325(field);
								addson_192819((*result).n, LOC27);
								addsonskipintlit_238729(result, typ);
							}
							LA21: ;
							{
								if (!(gcmd_154130 == ((NU8) 7))) goto LA30;
							}
							LA30: ;
							res_417607 += ((NI) 1);
						} LA20: ;
					}
				}
				res_417614 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Ttype190849*, semtypeclass_421208)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	Tnode190813* pragmas;
	Tnode190813* inherited;
	result = 0;
	{
		if (!(((*n).flags &(1<<((((NU8) 1))&15)))!=0)) goto LA3;
		message_165188((*n).info, ((NU16) 234), ((NimStringDesc*) &TMP3382));
	}
	LA3: ;
	result = neworprevtype_415695(((NU8) 52), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), n);
	pragmas = HEX5BHEX5D_191244(n, ((NI) 1));
	inherited = HEX5BHEX5D_191244(n, ((NI) 2));
	{
		if (!!(((*inherited).kind == ((NU8) 1)))) goto LA7;
		{
			Tnode190813* n_421245;
			Tnodeseq190807* HEX3Atmp_421259;
			NI i_421262;
			NI L_421264;
			n_421245 = 0;
			HEX3Atmp_421259 = 0;
			HEX3Atmp_421259 = (*inherited).kindU.S6.sons;
			i_421262 = ((NI) 0);
			L_421264 = (HEX3Atmp_421259 ? HEX3Atmp_421259->Sup.len : 0);
			{
				while (1) {
					Ttype190849* typ;
					if (!(i_421262 < L_421264)) goto LA11;
					n_421245 = HEX3Atmp_421259->data[i_421262];
					typ = semtypenode_409269(c, n_421245, NIM_NIL);
					safeadd_265489((&(*result).sons), typ);
					i_421262 += ((NI) 1);
				} LA11: ;
			}
		}
	}
	LA7: ;
	return result;
}

N_NIMCALL(Ttype190849*, semvartype_416260)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	result = 0;
	{
		NI LOC3;
		Ttype190849* base;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 1))) goto LA4;
		result = neworprevtype_415695(((NU8) 23), prev, c);
		base = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		{
			if (!((*base).kind == ((NU8) 23))) goto LA8;
			localerror_165155((*n).info, ((NU16) 197), ((NimStringDesc*) &TMP2989));
			base = (*base).sons->data[((NI) 0)];
		}
		LA8: ;
		addsonskipintlit_238729(result, base);
	}
	goto LA1;
	LA4: ;
	{
		result = newconstraint_415725(c, ((NU8) 23));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, semdistinct_416280)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	Ttype190849* LOC6;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_191097(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_415725(c, ((NU8) 13));
		goto BeforeRet;
	}
	LA4: ;
	result = neworprevtype_415695(((NU8) 13), prev, c);
	LOC6 = 0;
	LOC6 = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	addsonskipintlit_238729(result, LOC6);
	{
		NI LOC9;
		LOC9 = 0;
		LOC9 = len_191097(n);
		if (!(((NI) 1) < LOC9)) goto LA10;
		asgnRefNoCycle((void**) (&(*result).n), HEX5BHEX5D_191244(n, ((NI) 1)));
	}
	LA10: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype190849*, semproctypewithscope_421277)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev, NU8 kind) {
	Ttype190849* result;
	Tscope190837* LOC1;
	Tsym190843* s;
	Tident167021* LOC2;
	Tnode190813* LOC3;
	result = 0;
	checksonslen_245249(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	result = semproctypenode_420351(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL, prev, kind, NIM_TRUE);
	LOC2 = 0;
	LOC2 = getident_167463(((NimStringDesc*) &TMP3380));
	LOC3 = 0;
	LOC3 = newidentnode_192313(LOC2, (*n).info);
	s = newsyms_409904(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_191097((*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_260069(c, s, (*n).kindU.S6.sons->data[((NI) 1)], TMP3383);
		seteffectsforproctype_329412(result, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	LA4: ;
	closescope_249111(c);
	return result;
}

N_NIMCALL(Ttype190849*, semenum_415733)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	NI64 counter;
	NI64 x;
	Tsym190843* e;
	Ttype190849* base;
	NIM_BOOL ispure;
	NIM_BOOL LOC15;
	NIM_BOOL hasnull;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = newconstraint_415725(c, ((NU8) 14));
		goto BeforeRet;
	}
	LA4: ;
	counter = 0;
	x = 0;
	e = 0;
	base = 0;
	counter = IL64(0);
	base = NIM_NIL;
	result = neworprevtype_415695(((NU8) 14), prev, c);
	asgnRefNoCycle((void**) (&(*result).n), newnodei_192351(((NU8) 150), (*n).info));
	checkminsonslen_245259(n, ((NI) 1));
	{
		NI64 LOC14;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA8;
		base = semtypenode_409269(c, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		{
			if (!!(((*base).kind == ((NU8) 14)))) goto LA12;
			localerror_165155((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 122), ((NimStringDesc*) &TMP2989));
		}
		LA12: ;
		LOC14 = 0;
		LOC14 = lastord_220010(base);
		counter = (NI64)(LOC14 + IL64(1));
	}
	LA8: ;
	rawaddson_194478(result, base);
	LOC15 = 0;
	LOC15 = !(((*result).sym == NIM_NIL));
	if (!(LOC15)) goto LA16;
	LOC15 = (((*(*result).sym).flags &(1<<((((NU8) 9))&31)))!=0);
	LA16: ;
	ispure = LOC15;
	hasnull = NIM_FALSE;
	{
		NI i_415803;
		NI HEX3Atmp_416037;
		NI LOC18;
		NI res_416040;
		i_415803 = 0;
		HEX3Atmp_416037 = 0;
		LOC18 = 0;
		LOC18 = sonslen_193403(n);
		HEX3Atmp_416037 = (NI)(LOC18 - ((NI) 1));
		res_416040 = ((NI) 1);
		{
			while (1) {
				Tnode190813* LOC68;
				if (!(res_416040 <= HEX3Atmp_416037)) goto LA20;
				i_415803 = res_416040;
				switch ((*(*n).kindU.S6.sons->data[i_415803]).kind) {
				case ((NU8) 151):
				{
					Tnode190813* v;
					Tnode190813* strval;
					Ttype190849* LOC22;
					e = newsyms_409904(((NU8) 20), (*(*n).kindU.S6.sons->data[i_415803]).kindU.S6.sons->data[((NI) 0)], c);
					v = semconstexpr_410485(c, (*(*n).kindU.S6.sons->data[i_415803]).kindU.S6.sons->data[((NI) 1)]);
					strval = NIM_NIL;
					LOC22 = 0;
					LOC22 = skiptypes_194167((*v).typ, IL64(211106232576000));
					switch ((*LOC22).kind) {
					case ((NU8) 18):
					{
						{
							NI LOC26;
							LOC26 = 0;
							LOC26 = sonslen_193403(v);
							if (!(LOC26 == ((NI) 2))) goto LA27;
							strval = (*v).kindU.S6.sons->data[((NI) 1)];
							{
								Ttype190849* LOC31;
								LOC31 = 0;
								LOC31 = skiptypes_194167((*strval).typ, IL64(211106232576256));
								if (!((*LOC31).kind == ((NU8) 28) || (*LOC31).kind == ((NU8) 29))) goto LA32;
								x = getordvalue_220178((*v).kindU.S6.sons->data[((NI) 0)]);
							}
							goto LA29;
							LA32: ;
							{
								localerror_165155((*strval).info, ((NU16) 6), ((NimStringDesc*) &TMP2989));
							}
							LA29: ;
						}
						goto LA24;
						LA27: ;
						{
							localerror_165155((*v).info, ((NU16) 111), ((NimStringDesc*) &TMP2989));
						}
						LA24: ;
					}
					break;
					case ((NU8) 28):
					case ((NU8) 29):
					{
						strval = v;
						x = counter;
					}
					break;
					default:
					{
						x = getordvalue_220178(v);
					}
					break;
					}
					{
						if (!!((i_415803 == ((NI) 1)))) goto LA40;
						{
							if (!!((x == counter))) goto LA44;
							(*result).flags |= ((NI32)1)<<((((NU8) 5))%(sizeof(NI32)*8));
						}
						LA44: ;
						{
							if (!(x < counter)) goto LA48;
							localerror_165155((*(*n).kindU.S6.sons->data[i_415803]).info, ((NU16) 145), (*(*e).name).s);
							x = counter;
						}
						LA48: ;
					}
					LA40: ;
					asgnRefNoCycle((void**) (&(*e).ast), strval);
					counter = x;
				}
				break;
				case ((NU8) 3):
				{
					e = (*(*n).kindU.S6.sons->data[i_415803]).kindU.S4.sym;
				}
				break;
				case ((NU8) 2):
				case ((NU8) 53):
				{
					e = newsyms_409904(((NU8) 20), (*n).kindU.S6.sons->data[i_415803], c);
				}
				break;
				default:
				{
					Tnode190813* LOC53;
					LOC53 = 0;
					LOC53 = HEX5BHEX5D_191244(n, i_415803);
					illformedast_245229(LOC53);
				}
				break;
				}
				asgnRefNoCycle((void**) (&(*e).typ), result);
				(*e).position = ((NI) (counter));
				{
					if (!((*e).position == ((NI) 0))) goto LA56;
					hasnull = NIM_TRUE;
				}
				LA56: ;
				{
					NIM_BOOL LOC60;
					LOC60 = 0;
					LOC60 = !(((*result).sym == NIM_NIL));
					if (!(LOC60)) goto LA61;
					LOC60 = (((*(*result).sym).flags &(1<<((((NU8) 1))&31)))!=0);
					LA61: ;
					if (!LOC60) goto LA62;
					(*e).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
					(*e).flags |= ((NI32)1)<<((((NU8) 1))%(sizeof(NI32)*8));
					{
						if (!!(ispure)) goto LA66;
						strtableadd_198103((&(*(*c).module).kindU.S3.tab), e);
					}
					LA66: ;
				}
				LA62: ;
				LOC68 = 0;
				LOC68 = newsymnode_192325(e);
				addson_192819((*result).n, LOC68);
				{
					NIM_BOOL LOC71;
					LOC71 = 0;
					LOC71 = !((((*e).flags &(1<<((((NU8) 31))&31)))!=0));
					if (!(LOC71)) goto LA72;
					LOC71 = !(ispure);
					LA72: ;
					if (!LOC71) goto LA73;
					adddecl_249607(c, e);
				}
				LA73: ;
				counter += ((NI) 1);
				res_416040 += ((NI) 1);
			} LA20: ;
		}
	}
	{
		if (!!(hasnull)) goto LA77;
		(*result).flags |= ((NI32)1)<<((((NU8) 17))%(sizeof(NI32)*8));
	}
	LA77: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype190849*, semstmtlisttype_420829)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	NI length;
	result = 0;
	checkminsonslen_245259(n, ((NI) 1));
	length = sonslen_193403(n);
	{
		NI i_420848;
		NI HEX3Atmp_420854;
		NI res_420857;
		i_420848 = 0;
		HEX3Atmp_420854 = 0;
		HEX3Atmp_420854 = (NI)(length - ((NI) 2));
		res_420857 = ((NI) 0);
		{
			while (1) {
				if (!(res_420857 <= HEX3Atmp_420854)) goto LA3;
				i_420848 = res_420857;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_420848]), semstmt_409277(c, (*n).kindU.S6.sons->data[i_420848]));
				res_420857 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		if (!(((NI) 0) < length)) goto LA6;
		result = semtypenode_409269(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(Ttype190849*, semblocktype_420873)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	Tscope190837* LOC1;
	result = 0;
	(*(*c).p).nestedblockcounter += ((NI) 1);
	checksonslen_245249(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	{
		Tsym190843* 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_409904(((NU8) 22), (*n).kindU.S6.sons->data[((NI) 0)], c);
		adddecl_249607(c, LOC6);
	}
	LA4: ;
	result = semstmtlisttype_420829(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_249111(c);
	(*(*c).p).nestedblockcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Ttype190849*, semtypenode_409269)(Tcontext244023* c, Tnode190813* n, Ttype190849* prev) {
	Ttype190849* result;
	result = 0;
	result = NIM_NIL;
	{
		if (!(gcmd_154130 == ((NU8) 14))) goto LA3;
		suggestexpr_354070(c, n);
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 1):
	{
	}
	break;
	case ((NU8) 132):
	{
		Tnode190813* typexpr;
		checksonslen_245249(n, ((NI) 1));
		typexpr = semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 0)], 4);
		result = skiptypes_194167((*typexpr).typ, IL64(562949953421312));
	}
	break;
	case ((NU8) 37):
	{
		{
			NI LOC10;
			LOC10 = 0;
			LOC10 = sonslen_193403(n);
			if (!(LOC10 == ((NI) 1))) goto LA11;
			result = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 0)], prev);
		}
		goto LA8;
		LA11: ;
		{
			result = semanontuple_417414(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):
	{
		{
			NIM_BOOL LOC17;
			LOC17 = 0;
			LOC17 = isrange_219612(n);
			if (!LOC17) goto LA18;
			result = semrangeaux_416292(c, n, prev);
		}
		goto LA15;
		LA18: ;
		{
			Tnode190813* LOC21;
			LOC21 = 0;
			LOC21 = HEX5BHEX5D_191244(n, ((NI) 0));
			if (!!(((*LOC21).kind == ((NU8) 2) || (*LOC21).kind == ((NU8) 3) || (*LOC21).kind == ((NU8) 53) || (*LOC21).kind == ((NU8) 57) || (*LOC21).kind == ((NU8) 56)))) goto LA22;
			result = semtypeexpr_421172(c, n);
		}
		goto LA15;
		LA22: ;
		{
			Tident167021* op;
			op = considerquotedident_249010((*n).kindU.S6.sons->data[((NI) 0)]);
			{
				NIM_BOOL LOC27;
				Ttype190849* t1;
				Ttype190849* t2;
				LOC27 = 0;
				LOC27 = ((*op).Sup.id == ((NI) 2) || (*op).Sup.id == ((NI) 49));
				if (LOC27) goto LA28;
				LOC27 = eqStrings((*op).s, ((NimStringDesc*) &TMP2991));
				LA28: ;
				if (!LOC27) goto LA29;
				checksonslen_245249(n, ((NI) 3));
				t1 = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
				t2 = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
				{
					if (!(t1 == NIM_NIL)) goto LA33;
					localerror_165155((*(*n).kindU.S6.sons->data[((NI) 1)]).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
					result = neworprevtype_415695(((NU8) 50), prev, c);
				}
				goto LA31;
				LA33: ;
				{
					if (!(t2 == NIM_NIL)) goto LA36;
					localerror_165155((*(*n).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
					result = neworprevtype_415695(((NU8) 50), prev, c);
				}
				goto LA31;
				LA36: ;
				{
					{
						if (!((*op).Sup.id == ((NI) 2))) goto LA41;
						result = makeandtype_244858(c, t1, t2);
					}
					goto LA39;
					LA41: ;
					{
						result = makeortype_244930(c, t1, t2);
					}
					LA39: ;
				}
				LA31: ;
			}
			goto LA25;
			LA29: ;
			{
				NI LOC47;
				if (!((*op).Sup.id == ((NI) 45))) goto LA45;
				LOC47 = 0;
				LOC47 = len_191097(n);
				switch (LOC47) {
				case ((NI) 3):
				{
					result = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 1)], prev);
					{
						NIM_BOOL LOC51;
						Ttype190849* LOC52;
						LOC51 = 0;
						LOC52 = 0;
						LOC52 = skiptypes_194167(result, 2048);
						LOC51 = ((*LOC52).kind >= ((NU8) 9) && (*LOC52).kind <= ((NU8) 10) || (*LOC52).kind == ((NU8) 12) || (*LOC52).kind >= ((NU8) 21) && (*LOC52).kind <= ((NU8) 22) || (*LOC52).kind >= ((NU8) 24) && (*LOC52).kind <= ((NU8) 26) || (*LOC52).kind >= ((NU8) 28) && (*LOC52).kind <= ((NU8) 29) || (*LOC52).kind == ((NU8) 50));
						if (!(LOC51)) goto LA53;
						LOC51 = ((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 23));
						LA53: ;
						if (!LOC51) goto LA54;
						result = freshtype_421192(result, prev);
						(*result).flags |= ((NI32)1)<<((((NU8) 16))%(sizeof(NI32)*8));
					}
					goto LA49;
					LA54: ;
					{
						localerror_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP2992));
					}
					LA49: ;
				}
				break;
				case ((NI) 2):
				{
					Ttype190849* negated;
					negated = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 1)], prev);
					result = makenottype_245002(c, negated);
				}
				break;
				default:
				{
					localerror_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP2992));
				}
				break;
				}
			}
			goto LA25;
			LA45: ;
			{
				if (!((*op).Sup.id == ((NI) 52))) goto LA60;
				result = semanyref_416111(c, n, ((NU8) 21), prev);
			}
			goto LA25;
			LA60: ;
			{
				if (!((*op).Sup.id == ((NI) 54))) goto LA63;
				result = semanyref_416111(c, n, ((NU8) 22), prev);
			}
			goto LA25;
			LA63: ;
			{
				Tnode190813* typexpr;
				if (!((*op).Sup.id == ((NI) 62))) goto LA66;
				checksonslen_245249(n, ((NI) 2));
				typexpr = semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 1)], 4);
				result = skiptypes_194167((*typexpr).typ, IL64(562949953421312));
			}
			goto LA25;
			LA66: ;
			{
				result = semtypeexpr_421172(c, n);
			}
			LA25: ;
		}
		LA15: ;
	}
	break;
	case ((NU8) 93):
	{
		Tnode190813* whenresult;
		whenresult = semwhen_410040(c, n, NIM_FALSE);
		{
			if (!((*whenresult).kind == ((NU8) 115))) goto LA72;
			(*whenresult).kind = ((NU8) 128);
		}
		LA72: ;
		result = semtypenode_409269(c, whenresult, prev);
	}
	break;
	case ((NU8) 42):
	{
		Tsym190843* s;
		checkminsonslen_245259(n, ((NI) 2));
		s = semtypeident_416777(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		switch ((*s).magic) {
		case ((NU16) 176):
		{
			result = semarray_416720(c, n, prev);
		}
		break;
		case ((NU16) 177):
		{
			result = semcontainer_416085(c, n, ((NU8) 27), ((NimStringDesc*) &TMP2995), prev);
		}
		break;
		case ((NU16) 178):
		{
			result = semrange_416501(c, n, prev);
		}
		break;
		case ((NU16) 179):
		{
			result = semset_416056(c, n, prev);
		}
		break;
		case ((NU16) 182):
		{
			result = semordinal_416756(c, n, prev);
		}
		break;
		case ((NU16) 180):
		{
			result = semcontainer_416085(c, n, ((NU8) 24), ((NimStringDesc*) &TMP2999), prev);
		}
		break;
		case ((NU16) 181):
		{
			result = semvarargs_416098(c, n, prev);
		}
		break;
		case ((NU16) 207):
		{
			Tnode190813* LOC83;
			Ttype190849* LOC84;
			LOC83 = 0;
			LOC83 = HEX5BHEX5D_191244(n, ((NI) 1));
			LOC84 = 0;
			LOC84 = semtypenode_409269(c, LOC83, NIM_NIL);
			result = maketypedesc_244682(c, LOC84);
		}
		break;
		case ((NU16) 205):
		{
			result = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
			{
				Tsym190843* LOC90;
				if (!!((result == NIM_NIL))) goto LA88;
				LOC90 = 0;
				LOC90 = getcurrowner_244256();
				result = copytype_193549(result, LOC90, NIM_FALSE);
				{
					NI i_421626;
					NI HEX3Atmp_421858;
					NI LOC92;
					NI res_421861;
					i_421626 = 0;
					HEX3Atmp_421858 = 0;
					LOC92 = 0;
					LOC92 = len_191097(n);
					HEX3Atmp_421858 = (NI)(LOC92 - ((NI) 1));
					res_421861 = ((NI) 1);
					{
						while (1) {
							Ttype190849* LOC95;
							if (!(res_421861 <= HEX3Atmp_421858)) goto LA94;
							i_421626 = res_421861;
							LOC95 = 0;
							LOC95 = semtypenode_409269(c, (*n).kindU.S6.sons->data[i_421626], NIM_NIL);
							rawaddson_194478(result, LOC95);
							res_421861 += ((NI) 1);
						} LA94: ;
					}
				}
			}
			LA88: ;
		}
		break;
		default:
		{
			result = semgeneric_420923(c, n, s, prev);
		}
		break;
		}
	}
	break;
	case ((NU8) 45):
	{
		Tnode190813* typeexpr;
		typeexpr = semexpr_409201(c, n, 0);
		{
			if (!!(((*(*typeexpr).typ).kind == ((NU8) 8)))) goto LA100;
			localerror_165155((*n).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
			result = errortype_245150(c);
		}
		goto LA98;
		LA100: ;
		{
			result = base_220039((*typeexpr).typ);
			{
				NIM_BOOL LOC105;
				Tnode190813* preprocessed;
				Tnode190813* LOC108;
				LOC105 = 0;
				LOC105 = ismetatype_191821(result);
				if (!LOC105) goto LA106;
				preprocessed = semgenericstmt_415688(c, n);
				LOC108 = 0;
				LOC108 = copytree_195028(preprocessed);
				result = maketypefromexpr_244727(c, LOC108);
			}
			LA106: ;
		}
		LA98: ;
	}
	break;
	case ((NU8) 2):
	case ((NU8) 53):
	{
		Tsym190843* s;
		s = semtypeident_416777(c, n);
		{
			if (!((*s).typ == NIM_NIL)) goto LA112;
			{
				if (!!(((*s).kind == ((NU8) 0)))) goto LA116;
				localerror_165155((*n).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
			}
			LA116: ;
			result = neworprevtype_415695(((NU8) 50), prev, c);
		}
		goto LA110;
		LA112: ;
		{
			NIM_BOOL LOC119;
			LOC119 = 0;
			LOC119 = ((*s).kind == ((NU8) 3));
			if (!(LOC119)) goto LA120;
			LOC119 = ((*(*s).typ).kind == ((NU8) 8));
			LA120: ;
			if (!LOC119) goto LA121;
			{
				NIM_BOOL LOC125;
				Ttype190849* LOC126;
				NimStringDesc* LOC130;
				LOC125 = 0;
				LOC126 = 0;
				LOC126 = base_220039((*s).typ);
				LOC125 = !(((*LOC126).kind == ((NU8) 0)));
				if (!(LOC125)) goto LA127;
				LOC125 = (prev == NIM_NIL);
				LA127: ;
				if (!!(LOC125)) goto LA128;
				LOC130 = 0;
				LOC130 = HEX24_165306(TMP3012);
				internalerror_165218(LOC130);
			}
			LA128: ;
			result = base_220039((*s).typ);
		}
		goto LA110;
		LA121: ;
		{
			if (!(prev == NIM_NIL)) goto LA132;
			result = (*s).typ;
		}
		goto LA110;
		LA132: ;
		{
			assigntype_193452(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 LA137;
				(*prev).Sup.id = (*(*s).typ).Sup.id;
			}
			LA137: ;
			result = prev;
		}
		LA110: ;
	}
	break;
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC142;
			Ttype190849* t;
			LOC142 = 0;
			LOC142 = ((*(*n).kindU.S4.sym).kind == ((NU8) 7));
			if (!(LOC142)) goto LA143;
			LOC142 = !(((*(*n).kindU.S4.sym).typ == NIM_NIL));
			LA143: ;
			if (!LOC142) goto LA144;
			t = (*(*n).kindU.S4.sym).typ;
			{
				if (!(prev == NIM_NIL)) goto LA148;
				result = t;
			}
			goto LA146;
			LA148: ;
			{
				assigntype_193452(prev, t);
				result = prev;
			}
			LA146: ;
			markused_344251((*n).info, (*n).kindU.S4.sym);
		}
		goto LA140;
		LA144: ;
		{
			{
				if (!!(((*(*n).kindU.S4.sym).kind == ((NU8) 0)))) goto LA154;
				localerror_165155((*n).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
			}
			LA154: ;
			result = neworprevtype_415695(((NU8) 50), prev, c);
		}
		LA140: ;
	}
	break;
	case ((NU8) 133):
	{
		result = semobjectnode_419016(c, n, prev);
	}
	break;
	case ((NU8) 134):
	{
		result = semtuple_417454(c, n, prev);
	}
	break;
	case ((NU8) 135):
	{
		result = newconstraint_415725(c, ((NU8) 18));
	}
	break;
	case ((NU8) 136):
	{
		result = semtypeclass_421208(c, n, prev);
	}
	break;
	case ((NU8) 141):
	{
		result = semanyref_416111(c, n, ((NU8) 22), prev);
	}
	break;
	case ((NU8) 142):
	{
		result = semanyref_416111(c, n, ((NU8) 21), prev);
	}
	break;
	case ((NU8) 143):
	{
		result = semvartype_416260(c, n, prev);
	}
	break;
	case ((NU8) 146):
	{
		result = semdistinct_416280(c, n, prev);
	}
	break;
	case ((NU8) 137):
	{
		Ttype190849* base;
		result = neworprevtype_415695(((NU8) 59), prev, c);
		base = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
		rawaddson_194478(result, base);
		(*result).flags |= ((NI32)1)<<((((NU8) 22))%(sizeof(NI32)*8));
	}
	break;
	case ((NU8) 148):
	{
		{
			NI LOC168;
			LOC168 = 0;
			LOC168 = sonslen_193403(n);
			if (!(LOC168 == ((NI) 0))) goto LA169;
			result = newconstraint_415725(c, ((NU8) 49));
		}
		goto LA166;
		LA169: ;
		{
			result = semproctypewithscope_421277(c, n, prev, ((NU8) 15));
			{
				NIM_BOOL LOC174;
				Tnode190813* LOC175;
				Tnode190813* LOC177;
				LOC174 = 0;
				LOC175 = 0;
				LOC175 = lastson_193431(n);
				LOC174 = ((*LOC175).kind == ((NU8) 90));
				if (!(LOC174)) goto LA176;
				LOC177 = 0;
				LOC177 = lastson_193431(n);
				LOC174 = haspragma_263698(LOC177, ((NU16) 134));
				LA176: ;
				if (!LOC174) goto LA178;
				(*result).kind = ((NU8) 49);
				(*result).callconv = ((NU8) 5);
			}
			goto LA172;
			LA178: ;
			{
				(*result).flags |= ((NI32)1)<<((((NU8) 14))%(sizeof(NI32)*8));
				(*result).callconv = ((NU8) 8);
			}
			LA172: ;
		}
		LA166: ;
	}
	break;
	case ((NU8) 147):
	{
		{
			NI LOC184;
			LOC184 = 0;
			LOC184 = sonslen_193403(n);
			if (!(LOC184 == ((NI) 0))) goto LA185;
			result = newconstraint_415725(c, ((NU8) 25));
		}
		goto LA182;
		LA185: ;
		{
			result = semproctypewithscope_421277(c, n, prev, ((NU8) 12));
		}
		LA182: ;
	}
	break;
	case ((NU8) 150):
	{
		result = semenum_415733(c, n, prev);
	}
	break;
	case ((NU8) 4):
	{
		result = (*n).typ;
	}
	break;
	case ((NU8) 128):
	{
		result = semstmtlisttype_420829(c, n, prev);
	}
	break;
	case ((NU8) 129):
	{
		result = semblocktype_420873(c, n, prev);
	}
	break;
	case ((NU8) 149):
	{
		checksonslen_245249(n, ((NI) 1));
		result = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 0)], prev);
		result = freshtype_421192(result, prev);
		(*result).flags |= ((NI32)1)<<((((NU8) 15))%(sizeof(NI32)*8));
	}
	break;
	default:
	{
		localerror_165155((*n).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
		result = neworprevtype_415695(((NU8) 50), prev, c);
	}
	break;
	}
	asgnRefNoCycle((void**) (&(*n).typ), result);
	return result;
}

N_NIMCALL(Tnode190813*, semaftermacrocall_415431)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, NU16 flags) {
	Tnode190813* result;
	Tsym190843* LOC5;
	Tsym190843* LOC19;
	result = 0;
	evaltemplatecounter_383256 += ((NI) 1);
	{
		if (!(((NI) 100) < evaltemplatecounter_383256)) goto LA3;
		globalerror_165134((*s).info, ((NU16) 183), ((NimStringDesc*) &TMP2989));
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getmodule_198243((*s).owner);
	(*c).friendmodules = (Tsymseq190815*) incrSeq(&((*c).friendmodules)->Sup, sizeof(Tsym190843*));
	asgnRefNoCycle((void**) (&(*c).friendmodules->data[(*c).friendmodules->Sup.len-1]), LOC5);
	result = n;
	{
		if (!((*(*s).typ).sons->data[((NI) 0)] == NIM_NIL)) goto LA8;
		result = semstmt_409277(c, result);
	}
	goto LA6;
	LA8: ;
	{
		switch ((*(*(*s).typ).sons->data[((NI) 0)]).kind) {
		case ((NU8) 6):
		{
			result = semexpr_409201(c, result, flags);
		}
		break;
		case ((NU8) 7):
		{
			result = semstmt_409277(c, result);
		}
		break;
		case ((NU8) 8):
		{
			Ttype190849* typ;
			{
				if (!((*n).kind == ((NU8) 115))) goto LA16;
				(*result).kind = ((NU8) 128);
			}
			LA16: ;
			typ = semtypenode_409269(c, result, NIM_NIL);
			asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_244682(c, typ));
		}
		break;
		default:
		{
			result = semexpr_409201(c, result, flags);
			result = fitnode_409245(c, (*(*s).typ).sons->data[((NI) 0)], result);
		}
		break;
		}
	}
	LA6: ;
	evaltemplatecounter_383256 -= ((NI) 1);
	LOC19 = 0;
	LOC19 = pop_367918((&(*c).friendmodules));
	return result;
}

N_NIMCALL(Tnode190813*, semmacroexpr_410066)(Tcontext244023* c, Tnode190813* n, Tnode190813* norig, Tsym190843* sym, NU16 flags) {
	Tnode190813* result;
	result = 0;
	pushinfocontext_164192((*norig).info);
	markused_344251((*n).info, sym);
	{
		if (!(sym == (*(*c).p).owner)) goto LA3;
		globalerror_165134((*n).info, ((NU16) 25), (*(*sym).name).s);
	}
	LA3: ;
	result = evalmacrocall_397902((*c).module, n, norig, sym);
	{
		if (!!(((flags &(1<<((((NU8) 9))&15)))!=0))) goto LA7;
		result = semaftermacrocall_415431(c, result, sym, flags);
	}
	LA7: ;
	popinfocontext_164211();
	return result;
}

N_NIMCALL(Tnode190813*, semsym_441038)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, NU16 flags) {
	Tnode190813* result;
{	result = 0;
	switch ((*s).kind) {
	case ((NU8) 10):
	{
		Ttype190849* LOC2;
		markused_344251((*n).info, s);
		LOC2 = 0;
		LOC2 = skiptypes_194167((*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 == ((NU16) 0))) goto LA6;
				result = inlineconst_441028(n, s);
			}
			goto LA4;
			LA6: ;
			{
				result = newsymnode_192338(s, (*n).info);
			}
			LA4: ;
		}
		break;
		case ((NU8) 4):
		case ((NU8) 24):
		{
			{
				NI LOC12;
				LOC12 = 0;
				LOC12 = len_191097((*s).ast);
				if (!(LOC12 == ((NI) 0))) goto LA13;
				result = inlineconst_441028(n, s);
			}
			goto LA10;
			LA13: ;
			{
				result = newsymnode_192338(s, (*n).info);
			}
			LA10: ;
		}
		break;
		default:
		{
			result = newsymnode_192338(s, (*n).info);
		}
		break;
		}
	}
	break;
	case ((NU8) 17):
	{
		result = semmacroexpr_410066(c, n, n, s, flags);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_410055(c, n, s, flags);
	}
	break;
	case ((NU8) 3):
	{
		markused_344251((*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;
			{
				Tnode190813* realparam;
				Tnode190813* LOC40;
				if (!(*(*c).p).wasforwarded) goto LA31;
				realparam = HEX5BHEX5D_191244((*(*(*(*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_165306(TMP3386);
					internalerror_165218(LOC39);
				}
				LA37: ;
				LOC40 = 0;
				LOC40 = HEX5BHEX5D_191244((*(*(*(*c).p).owner).typ).n, (NI)((*s).position + ((NI) 1)));
				result = newsymnode_192338((*LOC40).kindU.S4.sym, (*n).info);
				goto BeforeRet;
			}
			goto LA29;
			LA31: ;
			{
				Tsym190843* u;
				if (!((*(*(*c).p).owner).kind == ((NU8) 17))) goto LA42;
				u = searchinscopes_249205(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_165306(TMP3387);
					internalerror_165218(LOC52);
				}
				LA50: ;
				result = newsymnode_192338(u, (*n).info);
				goto BeforeRet;
			}
			goto LA29;
			LA42: ;
			LA29: ;
		}
		goto LA20;
		LA27: ;
		LA20: ;
		result = newsymnode_192338(s, (*n).info);
	}
	break;
	case ((NU8) 8):
	case ((NU8) 9):
	case ((NU8) 11):
	case ((NU8) 21):
	{
		markused_344251((*n).info, s);
		{
			if (!(((*s).flags &(1<<((((NU8) 3))&31)))!=0)) goto LA56;
			(*(*(*c).p).owner).flags |= ((NI32)1)<<((((NU8) 11))%(sizeof(NI32)*8));
		}
		LA56: ;
		result = newsymnode_192338(s, (*n).info);
	}
	break;
	case ((NU8) 4):
	{
		{
			if (!((*(*s).typ).kind == ((NU8) 59))) goto LA61;
			result = newsymnode_192338(s, (*n).info);
			asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
		}
		goto LA59;
		LA61: ;
		{
			if (!!(((*s).ast == NIM_NIL))) goto LA64;
			result = semexpr_409201(c, (*s).ast, 0);
		}
		goto LA59;
		LA64: ;
		{
			asgnRefNoCycle((void**) (&(*n).typ), (*s).typ);
			result = n;
			goto BeforeRet;
		}
		LA59: ;
	}
	break;
	case ((NU8) 7):
	{
		markused_344251((*n).info, s);
		{
			NIM_BOOL LOC70;
			LOC70 = 0;
			LOC70 = ((*(*s).typ).kind == ((NU8) 59));
			if (!(LOC70)) goto LA71;
			LOC70 = !(((*(*s).typ).n == NIM_NIL));
			LA71: ;
			if (!LOC70) goto LA72;
			result = (*(*s).typ).n;
			goto BeforeRet;
		}
		LA72: ;
		result = newsymnode_192338(s, (*n).info);
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_244682(c, (*s).typ));
	}
	break;
	default:
	{
		markused_344251((*n).info, s);
		result = newsymnode_192338(s, (*n).info);
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(Tnode190813*, semfieldaccess_440814)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	result = 0;
	result = builtinfieldaccess_445958(c, n, flags);
	{
		if (!(result == NIM_NIL)) goto LA3;
		result = dottransformation_446679(c, n);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, maybelifttype_442488)(Ttype190849** t, Tcontext244023* c, Tlineinfo163338 info) {
	Tscope190837* LOC1;
	Ttype190849* lifted;
	Tnode190813* LOC2;
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	LOC2 = 0;
	LOC2 = newnodei_192351(((NU8) 152), info);
	lifted = liftparamtype_419279(c, ((NU8) 7), LOC2, (*t), ((NimStringDesc*) &TMP3390), info, NIM_FALSE);
	closescope_249111(c);
	{
		if (!!((lifted == NIM_NIL))) goto LA5;
		unsureAsgnRef((void**) (&(*t)), lifted);
	}
	LA5: ;
}

N_NIMCALL(Tnode190813*, inferwithmetatype_409463)(Tcontext244023* c, Ttype190849* formal, Tnode190813* arg, NIM_BOOL coercedistincts) {
	Tnode190813* result;
	Tcandidate344209 m;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_344276(c, (&m), formal);
	m.coercedistincts = coercedistincts;
	result = paramtypesmatch_349556((&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_414176(c, result, (&m));
	}
	LA5: ;
	{
		Ttype190849* LOC11;
		if (!!((result == NIM_NIL))) goto LA9;
		LOC11 = 0;
		LOC11 = skiptypes_194167(formal, IL64(18014398509481984));
		asgnRefNoCycle((void**) (&(*result).typ), generatetypeinstance_267631(c, m.bindings, (*arg).info, LOC11));
	}
	goto LA7;
	LA9: ;
	{
		typemismatch_409379(arg, formal, (*arg).typ);
		result = copytree_195028(arg);
		asgnRefNoCycle((void**) (&(*result).typ), formal);
	}
	LA7: ;
	return result;
}

N_NIMCALL(NU8, checkconversionbetweenobjects_442209)(Ttype190849* castdest, Ttype190849* src) {
	NU8 result;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = inheritancediff_227064(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_442223)(Tcontext244023* c, Ttype190849* castdest, Ttype190849* src) {
	NU8 result;
	Ttype190849* d;
	Ttype190849* s;
{	result = 0;
	result = ((NU8) 0);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametype_225092(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_194167(castdest, IL64(211106240964864));
	s = skiptypes_194167(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_193442(d);
			s = lastson_193442(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_442209(d, s);
	}
	goto LA17;
	LA24: ;
	{
		NIM_BOOL LOC27;
		Ttype190849* LOC28;
		Ttype190849* LOC30;
		LOC27 = 0;
		LOC28 = 0;
		LOC28 = skiptypes_194167(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_194167(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_348708(c, d, s);
		switch (LOC34) {
		case ((NU8) 0):
		case ((NU8) 7):
		{
			{
				NIM_BOOL LOC38;
				LOC38 = 0;
				LOC38 = comparetypes_227047(castdest, src, ((NU8) 1), 0);
				if (!!(LOC38)) goto LA39;
				result = ((NU8) 2);
			}
			LA39: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA17: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semconv_442510)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Ttype190849* targettype;
	Ttype190849* LOC6;
	Tnode190813* LOC7;
	Tnode190813* LOC8;
	Tnode190813* op;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_165155((*n).info, ((NU16) 161), ((NimStringDesc*) &TMP2989));
		result = n;
		goto BeforeRet;
	}
	LA4: ;
	result = newnodei_192351(((NU8) 60), (*n).info);
	LOC6 = 0;
	LOC6 = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	targettype = skiptypes_194167(LOC6, 256);
	LOC7 = 0;
	LOC7 = HEX5BHEX5D_191244(n, ((NI) 0));
	maybelifttype_442488(&targettype, c, (*LOC7).info);
	LOC8 = 0;
	LOC8 = copytree_195028((*n).kindU.S6.sons->data[((NI) 0)]);
	addson_192819(result, LOC8);
	op = semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	{
		NIM_BOOL LOC11;
		Tnode190813* final;
		LOC11 = 0;
		LOC11 = ismetatype_191821(targettype);
		if (!LOC11) goto LA12;
		final = inferwithmetatype_409463(c, targettype, op, NIM_TRUE);
		addson_192819(result, final);
		asgnRefNoCycle((void**) (&(*result).typ), (*final).typ);
		goto BeforeRet;
	}
	LA12: ;
	asgnRefNoCycle((void**) (&(*result).typ), targettype);
	addson_192819(result, op);
	{
		NIM_BOOL LOC16;
		NU8 status;
		LOC16 = 0;
		LOC16 = issymchoice_442471(op);
		if (!!(LOC16)) goto LA17;
		status = checkconvertible_442223(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_195651((*op).kindU.S4.sym);
				LA23: ;
				if (!LOC22) goto LA24;
				asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), fitnode_409245(c, (*result).typ, (*result).kindU.S6.sons->data[((NI) 1)]));
			}
			LA24: ;
		}
		break;
		case ((NU8) 1):
		{
			NimStringDesc* LOC27;
			LOC27 = 0;
			LOC27 = typetostring_220032((*result).typ, ((NU8) 0));
			message_165188((*n).info, ((NU16) 266), LOC27);
		}
		break;
		case ((NU8) 2):
		{
			NimStringDesc* LOC29;
			TY154965 LOC30;
			NimStringDesc* LOC31;
			LOC29 = 0;
			LOC29 = msgkindtostring_164616(((NU16) 142));
			memset((void*)LOC30, 0, sizeof(LOC30));
			LOC30[0] = typetostring_220032((*op).typ, ((NU8) 0));
			LOC30[1] = typetostring_220032((*result).typ, ((NU8) 0));
			LOC31 = 0;
			LOC31 = nsuFormatOpenArray(LOC29, LOC30, 2);
			localerror_165155((*n).info, ((NU16) 4), LOC31);
		}
		break;
		}
	}
	goto LA14;
	LA17: ;
	{
		{
			NI i_442553;
			NI HEX3Atmp_442606;
			NI LOC34;
			NI res_442609;
			i_442553 = 0;
			HEX3Atmp_442606 = 0;
			LOC34 = 0;
			LOC34 = sonslen_193403(op);
			HEX3Atmp_442606 = (NI)(LOC34 - ((NI) 1));
			res_442609 = ((NI) 0);
			{
				while (1) {
					Tnode190813* it;
					NU8 status;
					if (!(res_442609 <= HEX3Atmp_442606)) goto LA36;
					i_442553 = res_442609;
					it = (*op).kindU.S6.sons->data[i_442553];
					status = checkconvertible_442223(c, (*result).typ, (*it).typ);
					{
						if (!((3 &(1<<((status)&7)))!=0)) goto LA39;
						markused_344251((*n).info, (*it).kindU.S4.sym);
						markindirect_245197(c, (*it).kindU.S4.sym);
						result = it;
						goto BeforeRet;
					}
					LA39: ;
					res_442609 += ((NI) 1);
				} LA36: ;
			}
		}
		localerror_165155((*n).info, ((NU16) 62), (*(*(*(*op).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name).s);
	}
	LA14: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, checkinitialized_449320)(Tnode190813* n, Intset187056 ids, Tlineinfo163338 info) {
	switch ((*n).kind) {
	case ((NU8) 138):
	{
		{
			NI i_449337;
			NI HEX3Atmp_449435;
			NI LOC3;
			NI res_449438;
			i_449337 = 0;
			HEX3Atmp_449435 = 0;
			LOC3 = 0;
			LOC3 = sonslen_193403(n);
			HEX3Atmp_449435 = (NI)(LOC3 - ((NI) 1));
			res_449438 = ((NI) 0);
			{
				while (1) {
					if (!(res_449438 <= HEX3Atmp_449435)) goto LA5;
					i_449337 = res_449438;
					checkinitialized_449320((*n).kindU.S6.sons->data[i_449337], ids, info);
					res_449438 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 139):
	{
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA9;
			internalerror_165199(info, ((NimStringDesc*) &TMP3392));
		}
		LA9: ;
		checkinitialized_449320((*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_187829(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*) &TMP3393));
appendString(LOC19, (*(*(*n).kindU.S4.sym).name).s);
			message_165188(info, ((NU16) 4), LOC19);
		}
		LA17: ;
	}
	break;
	default:
	{
		internalerror_165199(info, ((NimStringDesc*) &TMP3392));
	}
	break;
	}
}

N_NIMCALL(Tnode190813*, semobjconstr_445040)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	Ttype190849* t;
	Ttype190849* objtype;
	Intset187056 ids;
{	result = 0;
	t = semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL);
	result = n;
	asgnRefNoCycle((void**) (&(*result).typ), t);
	(*result).kind = ((NU8) 38);
	t = skiptypes_194167(t, 2048);
	{
		if (!((*t).kind == ((NU8) 22))) goto LA3;
		t = skiptypes_194167((*t).sons->data[((NI) 0)], 2048);
	}
	LA3: ;
	{
		if (!!(((*t).kind == ((NU8) 17)))) goto LA7;
		localerror_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3391));
		goto BeforeRet;
	}
	LA7: ;
	objtype = t;
	memset((void*)(&ids), 0, sizeof(ids));
	chckNil((void*)(&ids));
	memset((void*)(&ids), 0, sizeof(ids));
	initintset_187927((&ids));
	{
		NI i_449503;
		NI HEX3Atmp_449618;
		NI LOC10;
		NI res_449621;
		i_449503 = 0;
		HEX3Atmp_449618 = 0;
		LOC10 = 0;
		LOC10 = len_191097(n);
		HEX3Atmp_449618 = (LOC10 - 1);
		res_449621 = ((NI) 1);
		{
			while (1) {
				Tnode190813* it;
				Tident167021* id;
				Tnode190813* e;
				Tnode190813* check;
				Tsym190843* f;
				if (!(res_449621 <= HEX3Atmp_449618)) goto LA12;
				i_449503 = res_449621;
				it = (*n).kindU.S6.sons->data[i_449503];
				{
					if (!!(((*it).kind == ((NU8) 34)))) goto LA15;
					localerror_165155((*n).info, ((NU16) 170), ((NimStringDesc*) &TMP2989));
					goto LA9;
				}
				LA15: ;
				id = considerquotedident_249010((*it).kindU.S6.sons->data[((NI) 0)]);
				{
					NIM_BOOL LOC19;
					LOC19 = 0;
					LOC19 = containsorincl_187898((&ids), (*id).Sup.id);
					if (!LOC19) goto LA20;
					localerror_165155((*it).info, ((NU16) 86), (*id).s);
				}
				LA20: ;
				e = semexprwithtype_409211(c, (*it).kindU.S6.sons->data[((NI) 1)], (flags & 64));
				check = NIM_NIL;
				f = 0;
				t = objtype;
				{
					while (1) {
						check = NIM_NIL;
						f = lookupinrecordandbuildcheck_445604(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_194167((*t).sons->data[((NI) 0)], 2048);
					}
				} LA22: ;
				{
					NIM_BOOL LOC34;
					LOC34 = 0;
					LOC34 = !((f == NIM_NIL));
					if (!(LOC34)) goto LA35;
					LOC34 = fieldvisible_351059(c, f);
					LA35: ;
					if (!LOC34) goto LA36;
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(f));
					e = fitnode_409245(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_191164(it, check);
					}
					LA40: ;
				}
				goto LA32;
				LA36: ;
				{
					localerror_165155((*it).info, ((NU16) 80), (*id).s);
				}
				LA32: ;
				asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), e);
				res_449621 += ((NI) 1);
			} LA12: ;
		}
	} LA9: ;
	{
		if (!(((*objtype).flags &(1<<((((NU8) 17))&31)))!=0)) goto LA45;
		{
			while (1) {
				checkinitialized_449320((*objtype).n, ids, (*n).info);
				{
					if (!((*objtype).sons->data[((NI) 0)] == NIM_NIL)) goto LA51;
					goto LA47;
				}
				LA51: ;
				objtype = skiptypes_194167((*objtype).sons->data[((NI) 0)], 2048);
			}
		} LA47: ;
	}
	LA45: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym190843*, lookupfordefined_447661)(Tcontext244023* c, Tident167021* i, NIM_BOOL onlycurrentscope) {
	Tsym190843* result;
	result = 0;
	{
		if (!onlycurrentscope) goto LA3;
		result = localsearchinscope_249194(c, i);
	}
	goto LA1;
	LA3: ;
	{
		result = searchinscopes_249205(c, i);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tsym190843*, lookupfordefined_447670)(Tcontext244023* c, Tnode190813* n, NIM_BOOL onlycurrentscope) {
	Tsym190843* result;
{	result = 0;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		result = lookupfordefined_447661(c, (*n).kindU.S5.ident, onlycurrentscope);
	}
	break;
	case ((NU8) 45):
	{
		Tsym190843* m;
		result = NIM_NIL;
		{
			if (!onlycurrentscope) goto LA5;
			goto BeforeRet;
		}
		LA5: ;
		checksonslen_245249(n, ((NI) 2));
		m = lookupfordefined_447670(c, (*n).kindU.S6.sons->data[((NI) 0)], onlycurrentscope);
		{
			NIM_BOOL LOC9;
			Tident167021* ident;
			Tnode190813* 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_191244(n, ((NI) 1));
			ident = considerquotedident_249010(LOC13);
			{
				if (!(m == (*c).module)) goto LA16;
				result = strtableget_198111((*(*c).toplevelscope).symbols, ident);
			}
			goto LA14;
			LA16: ;
			{
				result = strtableget_198111((*m).kindU.S3.tab, ident);
			}
			LA14: ;
		}
		LA11: ;
	}
	break;
	case ((NU8) 53):
	{
		Tident167021* LOC20;
		LOC20 = 0;
		LOC20 = considerquotedident_249010(n);
		result = lookupfordefined_447661(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_212058(n, 0);
		localerror_165155((*n).info, ((NU16) 19), LOC24);
		result = NIM_NIL;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semdefined_447719)(Tcontext244023* c, Tnode190813* n, NIM_BOOL onlycurrentscope) {
	Tnode190813* result;
	result = 0;
	checksonslen_245249(n, ((NI) 2));
	result = newintnode_191608(((NU8) 6), IL64(0));
	{
		NIM_BOOL LOC3;
		Tnode190813* LOC5;
		Tident167021* LOC6;
		LOC3 = 0;
		LOC3 = !(onlycurrentscope);
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = HEX5BHEX5D_191244(n, ((NI) 0));
		LOC6 = 0;
		LOC6 = considerquotedident_249010(LOC5);
		LOC3 = eqStrings((*LOC6).s, ((NimStringDesc*) &TMP3394));
		LA4: ;
		if (!LOC3) goto LA7;
		{
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2)))) goto LA11;
			localerror_165166((*n).info, ((NimStringDesc*) &TMP3395));
		}
		goto LA9;
		LA11: ;
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = isdefined_168167((*(*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: ;
	{
		Tsym190843* LOC18;
		LOC18 = 0;
		LOC18 = lookupfordefined_447670(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_238030(((NU8) 1)));
	return result;
}

N_NIMCALL(Tnode190813*, setms_448568)(Tnode190813* n, Tsym190843* s) {
	Tnode190813* result;
	result = 0;
	result = n;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(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_17043;
	exchandler_17043 = s;
}

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

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

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

N_NIMCALL(Tnode190813*, tryexpr_409317)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* volatile result;
	NI olderrorcount;
	NI olderrormax;
	Tscope190837* oldscope;
	Tscope190837* LOC1;
	NI oldownerlen;
	TY244141* oldgenerics;
	NU8 olderroroutputs;
	NI oldcontextlen;
	NI oldingenericcontext;
	NI oldinunrolledcontext;
	NI oldingenericinst;
	Tproccon244011* oldproccon;
	TSafePoint TMP3396;
	result = 0;
	olderrorcount = gerrorcounter_164015;
	olderrormax = gerrormax_164018;
	(*c).incompilescontext += ((NI) 1);
	gerrormax_164018 = ((NI) 2147483647);
	oldscope = (*c).currentscope;
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	oldownerlen = (gowners_244289 ? gowners_244289->Sup.len : 0);
	oldgenerics = (*c).generics;
	olderroroutputs = erroroutputs_164056;
	erroroutputs_164056 = 0;
	oldcontextlen = getinfocontextlen_164156();
	oldingenericcontext = (*c).ingenericcontext;
	oldinunrolledcontext = (*c).inunrolledcontext;
	oldingenericinst = (*c).ingenericinst;
	oldproccon = (*c).p;
	if ((*c).generics) nimGCunrefNoCycle((*c).generics);
	(*c).generics = (TY244141*) newSeqRC1((&NTI244141), 0);
	pushSafePoint(&TMP3396);
	TMP3396.status = _setjmp(TMP3396.context);
	if (TMP3396.status == 0) {
		result = semexpr_409201(c, n, flags);
		{
			if (!!((gerrorcounter_164015 == olderrorcount))) goto LA5;
			result = NIM_NIL;
		}
		LA5: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI163344))) {
			TMP3396.status = 0;
			popCurrentException();
		}
	}
	if (TMP3396.status != 0) reraiseException();
	genericSeqAssign((&(*c).generics), oldgenerics, (&NTI244141));
	(*c).ingenericcontext = oldingenericcontext;
	(*c).inunrolledcontext = oldinunrolledcontext;
	(*c).ingenericinst = oldingenericinst;
	asgnRef((void**) (&(*c).p), oldproccon);
	setinfocontextlen_164173(oldcontextlen);
	gowners_244289 = (Tsymseq190815*) setLengthSeq(&(gowners_244289)->Sup, sizeof(Tsym190843*), ((NI) (oldownerlen)));
	asgnRef((void**) (&(*c).currentscope), oldscope);
	(*c).incompilescontext -= ((NI) 1);
	erroroutputs_164056 = olderroroutputs;
	gerrorcounter_164015 = olderrorcount;
	gerrormax_164018 = olderrormax;
	return result;
}

N_NIMCALL(Tnode190813*, semcompiles_448463)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	Tnode190813* LOC6;
	Tnode190813* LOC7;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		result = semdirectop_410032(c, n, flags);
		goto BeforeRet;
	}
	LA4: ;
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_191244(n, ((NI) 1));
	LOC7 = 0;
	LOC7 = tryexpr_409317(c, LOC6, flags);
	result = newintnode_191608(((NU8) 6), ((NI64) (!((LOC7 == NIM_NIL)))));
	(*result).info = (*n).info;
	asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 1)));
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semsizeof_442694)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!!((LOC3 == ((NI) 2)))) goto LA4;
		localerror_165155((*n).info, ((NU16) 69), ((NimStringDesc*) &TMP3397));
	}
	goto LA1;
	LA4: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 1)], 32));
	}
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_238030(((NU8) 31)));
	result = n;
	return result;
}

N_NIMCALL(Tnode190813*, isopimpl_410048)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Ttype190849* t1;
	Tnode190813* LOC16;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NI LOC6;
		Tnode190813* LOC8;
		Tnode190813* LOC10;
		Tnode190813* LOC12;
		NimStringDesc* LOC15;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = sonslen_193403(n);
		LOC5 = (LOC6 == ((NI) 3));
		if (!(LOC5)) goto LA7;
		LOC8 = 0;
		LOC8 = HEX5BHEX5D_191244(n, ((NI) 1));
		LOC5 = !(((*LOC8).typ == NIM_NIL));
		LA7: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA9;
		LOC10 = 0;
		LOC10 = HEX5BHEX5D_191244(n, ((NI) 1));
		LOC4 = ((*(*LOC10).typ).kind == ((NU8) 8));
		LA9: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA11;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_191244(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_165306(TMP3399);
		internalerror_165218(LOC15);
	}
	LA13: ;
	LOC16 = 0;
	LOC16 = HEX5BHEX5D_191244(n, ((NI) 1));
	t1 = skiptypes_194167((*LOC16).typ, IL64(2305843009213694208));
	{
		Tnode190813* LOC19;
		Tnode190813* LOC22;
		NimStringDesc* LOC23;
		LOC19 = 0;
		LOC19 = HEX5BHEX5D_191244(n, ((NI) 2));
		if (!((*LOC19).kind >= ((NU8) 20) && (*LOC19).kind <= ((NU8) 22))) goto LA20;
		LOC22 = 0;
		LOC22 = HEX5BHEX5D_191244(n, ((NI) 2));
		LOC23 = 0;
		LOC23 = nsuNormalize((*LOC22).kindU.S3.strval);
		if (eqStrings(LOC23, ((NimStringDesc*) &TMP3400))) goto LA24;
		goto LA25;
		LA24: ;
		{
			Ttype190849* t;
			NIM_BOOL LOC28;
			NIM_BOOL LOC29;
			t = skiptypes_194167(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_191608(((NU8) 6), ((NI64) (LOC28)));
		}
		goto LA26;
		LA25: ;
		{
		}
		LA26: ;
	}
	goto LA17;
	LA20: ;
	{
		Ttype190849* t2;
		Tnode190813* LOC34;
		Tcandidate344209 m;
		NIM_BOOL match;
		NU8 LOC35;
		LOC34 = 0;
		LOC34 = HEX5BHEX5D_191244(n, ((NI) 2));
		t2 = skiptypes_194167((*LOC34).typ, 256);
		maybelifttype_442488(&t2, c, (*n).info);
		memset((void*)(&m), 0, sizeof(m));
		initcandidate_344276(c, (&m), t2);
		LOC35 = 0;
		LOC35 = typerel_345064((&m), t2, t1, NIM_TRUE);
		match = (((NU8) 3) <= LOC35);
		result = newintnode_191608(((NU8) 6), ((NI64) (match)));
	}
	LA17: ;
	asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	return result;
}

N_NIMCALL(Tnode190813*, semis_442917)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* LOC6;
	Ttype190849* lhstype;
	Tnode190813* LOC14;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!!((LOC3 == ((NI) 3)))) goto LA4;
		localerror_165155((*n).info, ((NU16) 204), ((NimStringDesc*) &TMP3398));
	}
	LA4: ;
	result = n;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_238030(((NU8) 1)));
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_191244(n, ((NI) 1));
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_409211(c, LOC6, 34));
	{
		Tnode190813* LOC9;
		Ttype190849* t2;
		Tnode190813* LOC12;
		Tnode190813* LOC13;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_191244(n, ((NI) 2));
		if (!!(((*LOC9).kind >= ((NU8) 20) && (*LOC9).kind <= ((NU8) 22)))) goto LA10;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_191244(n, ((NI) 2));
		t2 = semtypenode_409269(c, LOC12, NIM_NIL);
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_191244(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), newnodeit_192807(((NU8) 4), (*LOC13).info, t2));
	}
	LA10: ;
	LOC14 = 0;
	LOC14 = HEX5BHEX5D_191244(n, ((NI) 1));
	lhstype = (*LOC14).typ;
	{
		Tnode190813* LOC19;
		if (!!(((*lhstype).kind == ((NU8) 8)))) goto LA17;
		LOC19 = 0;
		LOC19 = HEX5BHEX5D_191244(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), maketypesymnode_244712(c, lhstype, (*LOC19).info));
	}
	goto LA15;
	LA17: ;
	{
		Ttype190849* LOC21;
		LOC21 = 0;
		LOC21 = base_220039(lhstype);
		if (!((*LOC21).kind == ((NU8) 0))) goto LA22;
		goto BeforeRet;
	}
	goto LA15;
	LA22: ;
	LA15: ;
	{
		Tnode190813* LOC26;
		Ttype190849* LOC27;
		NIM_BOOL LOC28;
		LOC26 = 0;
		LOC26 = HEX5BHEX5D_191244(n, ((NI) 1));
		LOC27 = 0;
		LOC27 = base_220039((*LOC26).typ);
		LOC28 = 0;
		LOC28 = containsgenerictype_229310(LOC27);
		if (!!(LOC28)) goto LA29;
		result = isopimpl_410048(c, n);
	}
	LA29: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semof_442705)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
{	result = 0;
	{
		NI LOC3;
		Ttype190849* a;
		Ttype190849* b;
		Ttype190849* x;
		Ttype190849* y;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 3))) goto LA4;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 1)], 0));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 2)], 32));
		a = skiptypes_194167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106247256320));
		b = skiptypes_194167((*(*n).kindU.S6.sons->data[((NI) 2)]).typ, IL64(211106247256320));
		x = skiptypes_194167((*(*n).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106247256064));
		y = skiptypes_194167((*(*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_165155((*n).info, ((NU16) 205), ((NimStringDesc*) &TMP3401));
		}
		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_165155((*n).info, ((NU16) 205), ((NimStringDesc*) &TMP3401));
		}
		goto LA6;
		LA15: ;
		{
			NI diff;
			diff = inheritancediff_227064(a, b);
			{
				NimStringDesc* LOC22;
				if (!(diff <= ((NI) 0))) goto LA20;
				LOC22 = 0;
				LOC22 = rendertree_212058(n, 0);
				message_165188((*n).info, ((NU16) 274), LOC22);
				result = newintnode_191608(((NU8) 6), IL64(1));
				(*result).info = (*n).info;
				asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 1)));
				goto BeforeRet;
			}
			goto LA18;
			LA20: ;
			{
				NimStringDesc* LOC26;
				if (!(diff == ((NI) 2147483647))) goto LA24;
				LOC26 = 0;
				LOC26 = typetostring_220032(a, ((NU8) 0));
				localerror_165155((*n).info, ((NU16) 206), LOC26);
			}
			goto LA18;
			LA24: ;
			LA18: ;
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		localerror_165155((*n).info, ((NU16) 204), ((NimStringDesc*) &TMP3401));
	}
	LA1: ;
	asgnRefNoCycle((void**) (&(*n).typ), getsystype_238030(((NU8) 1)));
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym190843*, expectmacroortemplatecall_410025)(Tcontext244023* c, Tnode190813* n) {
	Tsym190843* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		Tsym190843* expandedsym;
		Tnode190813* LOC6;
		LOC3 = 0;
		LOC3 = iscallexpr_191071(n);
		if (!LOC3) goto LA4;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_191244(n, ((NI) 0));
		expandedsym = qualifiedlookup_249864(c, LOC6, 2);
		{
			Tnode190813* LOC11;
			NimStringDesc* LOC12;
			Tnode190813* LOC13;
			if (!(expandedsym == NIM_NIL)) goto LA9;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_191244(n, ((NI) 0));
			LOC12 = 0;
			LOC12 = rendertree_212058(LOC11, 0);
			localerror_165155((*n).info, ((NU16) 61), LOC12);
			LOC13 = 0;
			LOC13 = HEX5BHEX5D_191244(n, ((NI) 0));
			result = errorsym_249372(c, LOC13);
			goto BeforeRet;
		}
		LA9: ;
		{
			Tnode190813* LOC18;
			if (!!(((393216 &(1<<(((*expandedsym).kind)&31)))!=0))) goto LA16;
			localerror_165155((*n).info, ((NU16) 216), (*(*expandedsym).name).s);
			LOC18 = 0;
			LOC18 = HEX5BHEX5D_191244(n, ((NI) 0));
			result = errorsym_249372(c, LOC18);
			goto BeforeRet;
		}
		LA16: ;
		result = expandedsym;
	}
	goto LA1;
	LA4: ;
	{
		NimStringDesc* LOC20;
		LOC20 = 0;
		LOC20 = rendertree_212058(n, 0);
		localerror_165155((*n).info, ((NU16) 216), LOC20);
		result = errorsym_249372(c, n);
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semexpandtoast_447913)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* macrocall;
	Tsym190843* expandedsym;
{	result = 0;
	macrocall = HEX5BHEX5D_191244(n, ((NI) 1));
	expandedsym = expectmacroortemplatecall_410025(c, macrocall);
	{
		if (!((*expandedsym).kind == ((NU8) 0))) goto LA3;
		result = n;
		goto BeforeRet;
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*macrocall).kindU.S6.sons->data[((NI) 0)]), newsymnode_192338(expandedsym, (*macrocall).info));
	markused_344251((*n).info, expandedsym);
	{
		NI i_448014;
		NI HEX3Atmp_448050;
		NI LOC6;
		NI res_448053;
		i_448014 = 0;
		HEX3Atmp_448050 = 0;
		LOC6 = 0;
		LOC6 = len_191097(macrocall);
		HEX3Atmp_448050 = (NI)(LOC6 - ((NI) 1));
		res_448053 = ((NI) 1);
		{
			while (1) {
				Tnode190813* LOC9;
				if (!(res_448053 <= HEX3Atmp_448050)) goto LA8;
				i_448014 = res_448053;
				LOC9 = 0;
				LOC9 = HEX5BHEX5D_191244(macrocall, i_448014);
				asgnRefNoCycle((void**) (&(*macrocall).kindU.S6.sons->data[i_448014]), semexprwithtype_409211(c, LOC9, 0));
				res_448053 += ((NI) 1);
			} LA8: ;
		}
	}
	{
		NimStringDesc* LOC14;
		if (!!(((*(*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic == ((NU16) 20)))) goto LA12;
		LOC14 = 0;
		LOC14 = HEX24_165306(TMP3402);
		internalerror_165218(LOC14);
	}
	LA12: ;
	{
		Tsym190843* LOC17;
		LOC17 = 0;
		LOC17 = getcompilerproc_238036(((NimStringDesc*) &TMP3026));
		if (!!((LOC17 == NIM_NIL))) goto LA18;
		asgnRefNoCycle((void**) (&(*n).typ), systypefromname_238213(((NimStringDesc*) &TMP3027)));
	}
	goto LA15;
	LA18: ;
	{
		asgnRefNoCycle((void**) (&(*n).typ), systypefromname_238213(((NimStringDesc*) &TMP3028)));
	}
	LA15: ;
	result = n;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semexpandtoast_448069)(Tcontext244023* c, Tnode190813* n, Tsym190843* magicsym, NU16 flags) {
	Tnode190813* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 2))) goto LA4;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_192338(magicsym, (*n).info));
		result = semexpandtoast_447913(c, n);
	}
	goto LA1;
	LA4: ;
	{
		result = semdirectop_410032(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NimStringDesc*, expectstring_447791)(Tcontext244023* c, Tnode190813* n_447794) {
	NimStringDesc* result;
	Tnode190813* n;
{	result = 0;
	n = semconstexpr_410485(c, n_447794);
	{
		if (!((*n).kind >= ((NU8) 20) && (*n).kind <= ((NU8) 22))) goto LA3;
		result = copyString((*n).kindU.S3.strval);
		goto BeforeRet;
	}
	goto LA1;
	LA3: ;
	{
		localerror_165155((*n).info, ((NU16) 6), ((NimStringDesc*) &TMP2989));
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, processquotations_448082)(Tnode190813** n, NimStringDesc* op, Tnodeseq190807** quotes, Tnodeseq190807** ids) {
{	{
		if (!((*(*n)).kind == ((NU8) 30))) goto LA3;
		checksonslen_245249((*n), ((NI) 2));
		{
			Tnode190813* LOC7;
			NimStringDesc* examinedop;
			Tnode190813* LOC10;
			LOC7 = 0;
			LOC7 = HEX5BHEX5D_191244((*n), ((NI) 0));
			if (!((*LOC7).kind == ((NU8) 2))) goto LA8;
			LOC10 = 0;
			LOC10 = HEX5BHEX5D_191244((*n), ((NI) 0));
			examinedop = copyString((*(*LOC10).kindU.S5.ident).s);
			{
				Tnode190813* LOC15;
				NimStringDesc* LOC16;
				Tident167021* LOC17;
				if (!eqStrings(examinedop, op)) goto LA13;
				LOC15 = 0;
				LOC15 = HEX5BHEX5D_191244((*n), ((NI) 1));
				(*quotes) = (Tnodeseq190807*) incrSeq(&((*quotes))->Sup, sizeof(Tnode190813*));
				asgnRefNoCycle((void**) (&(*quotes)->data[(*quotes)->Sup.len-1]), LOC15);
				LOC16 = 0;
				LOC16 = nimIntToStr(((*quotes) ? (*quotes)->Sup.len : 0));
				LOC17 = 0;
				LOC17 = getident_167463(LOC16);
				unsureAsgnRef((void**) (&(*n)), newidentnode_192313(LOC17, (*(*n)).info));
				(*ids) = (Tnodeseq190807*) incrSeq(&((*ids))->Sup, sizeof(Tnode190813*));
				asgnRefNoCycle((void**) (&(*ids)->data[(*ids)->Sup.len-1]), (*n));
				goto BeforeRet;
			}
			goto LA11;
			LA13: ;
			{
				NIM_BOOL LOC19;
				NimStringDesc* LOC22;
				Tident167021* 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_167463(LOC22);
				asgnRefNoCycle((void**) (&(*(*n)).kindU.S6.sons->data[((NI) 0)]), newidentnode_192313(LOC23, (*(*n)).info));
			}
			goto LA11;
			LA20: ;
			LA11: ;
		}
		LA8: ;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC25;
		Tnode190813* LOC29;
		NimStringDesc* LOC30;
		Tident167021* LOC31;
		LOC25 = 0;
		LOC25 = ((*(*n)).kind == ((NU8) 53));
		if (!(LOC25)) goto LA26;
		LOC25 = eqStrings(op, ((NimStringDesc*) &TMP3404));
		LA26: ;
		if (!LOC25) goto LA27;
		LOC29 = 0;
		LOC29 = HEX5BHEX5D_191244((*n), ((NI) 0));
		(*quotes) = (Tnodeseq190807*) incrSeq(&((*quotes))->Sup, sizeof(Tnode190813*));
		asgnRefNoCycle((void**) (&(*quotes)->data[(*quotes)->Sup.len-1]), LOC29);
		LOC30 = 0;
		LOC30 = nimIntToStr(((*quotes) ? (*quotes)->Sup.len : 0));
		LOC31 = 0;
		LOC31 = getident_167463(LOC30);
		unsureAsgnRef((void**) (&(*n)), newidentnode_192313(LOC31, (*(*n)).info));
		(*ids) = (Tnodeseq190807*) incrSeq(&((*ids))->Sup, sizeof(Tnode190813*));
		asgnRefNoCycle((void**) (&(*ids)->data[(*ids)->Sup.len-1]), (*n));
		goto BeforeRet;
	}
	goto LA1;
	LA27: ;
	LA1: ;
	{
		NI i_448208;
		NI HEX3Atmp_448212;
		NI LOC33;
		NI res_448215;
		i_448208 = 0;
		HEX3Atmp_448212 = 0;
		LOC33 = 0;
		LOC33 = safelen_191125((*n));
		HEX3Atmp_448212 = (LOC33 - 1);
		res_448215 = ((NI) 0);
		{
			while (1) {
				if (!(res_448215 <= HEX3Atmp_448212)) goto LA35;
				i_448208 = res_448215;
				processquotations_448082(&(*(*n)).kindU.S6.sons->data[i_448208], op, quotes, ids);
				res_448215 += ((NI) 1);
			} LA35: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tsym190843*, newanonsym_447826)(NU8 kind, Tlineinfo163338 info, Tsym190843* owner) {
	Tsym190843* result;
	result = 0;
	result = newsym_191656(kind, idanon_167495, owner, info);
	(*result).flags = IL64(2147483648);
	return result;
}

N_NIMCALL(Tnode190813*, semtemplbodydirty_425220)(Templctx422582* c, Tnode190813* n) {
	Tnode190813* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym190843* s;
		s = qualifiedlookup_249864((*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_192338(s, (*n).info);
			}
			goto LA6;
			LA10: ;
			{
				NIM_BOOL LOC13;
				LOC13 = 0;
				LOC13 = contains_187829((*c).tobind, (*s).Sup.id);
				if (!LOC13) goto LA14;
				result = symchoice_422316((*c).c, n, s, ((NU8) 0));
			}
			goto LA6;
			LA14: ;
			LA6: ;
		}
		LA4: ;
	}
	break;
	case ((NU8) 55):
	{
		result = semtemplbodydirty_425220(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_422421((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC22;
			Tsym190843* s;
			LOC22 = 0;
			LOC22 = ((*n).kind == ((NU8) 45));
			if (LOC22) goto LA23;
			LOC22 = ((*n).kind == ((NU8) 53));
			LA23: ;
			if (!LOC22) goto LA24;
			s = qualifiedlookup_249864((*c).c, n, 0);
			{
				NIM_BOOL LOC28;
				LOC28 = 0;
				LOC28 = !((s == NIM_NIL));
				if (!(LOC28)) goto LA29;
				LOC28 = contains_187829((*c).tobind, (*s).Sup.id);
				LA29: ;
				if (!LOC28) goto LA30;
				result = symchoice_422316((*c).c, n, s, ((NU8) 0));
				goto BeforeRet;
			}
			LA30: ;
		}
		LA24: ;
		result = n;
		{
			NI i_425486;
			NI HEX3Atmp_425490;
			NI LOC33;
			NI res_425493;
			i_425486 = 0;
			HEX3Atmp_425490 = 0;
			LOC33 = 0;
			LOC33 = sonslen_193403(n);
			HEX3Atmp_425490 = (NI)(LOC33 - ((NI) 1));
			res_425493 = ((NI) 0);
			{
				while (1) {
					if (!(res_425493 <= HEX3Atmp_425490)) goto LA35;
					i_425486 = res_425493;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_425486]), semtemplbodydirty_425220(c, (*n).kindU.S6.sons->data[i_425486]));
					res_425493 += ((NI) 1);
				} LA35: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semtemplsymbol_423011)(Tcontext244023* c, Tnode190813* n, Tsym190843* s) {
	Tnode190813* result;
	result = 0;
	(*s).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*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_422316(c, n, s, ((NU8) 1));
	}
	break;
	case ((NU8) 4):
	{
		result = newsymnodetypedesc_257736(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_257736(s, (*n).info);
		}
		goto LA6;
		LA10: ;
		{
			result = n;
		}
		LA6: ;
	}
	break;
	default:
	{
		result = newsymnode_192338(s, (*n).info);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, openscope_422693)(Templctx422582* c) {
	Tscope190837* LOC1;
	LOC1 = 0;
	LOC1 = openscope_249091((*c).c);
}

N_NIMCALL(void, closescope_422700)(Templctx422582* c) {
	closescope_249111((*c).c);
}

N_NIMCALL(Tnode190813*, semtemplbodyscope_422707)(Templctx422582* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	openscope_422693(c);
	result = semtemplbody_422688(c, n);
	closescope_422700(c);
	return result;
}

N_NIMCALL(NU8, symbinding_422251)(Tnode190813* n) {
	NU8 result;
{	result = 0;
	{
		NI i_422267;
		NI HEX3Atmp_422292;
		NI LOC2;
		NI res_422295;
		i_422267 = 0;
		HEX3Atmp_422292 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_422292 = (NI)(LOC2 - ((NI) 1));
		res_422295 = ((NI) 0);
		{
			while (1) {
				Tnode190813* it;
				Tnode190813* key;
				if (!(res_422295 <= HEX3Atmp_422292)) goto LA4;
				i_422267 = res_422295;
				it = (*n).kindU.S6.sons->data[i_422267];
				{
					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_172386((*key).kindU.S5.ident);
					switch (LOC14) {
					case ((NU16) 181):
					{
						result = ((NU8) 1);
						goto BeforeRet;
					}
					break;
					case ((NU16) 182):
					{
						result = ((NU8) 2);
						goto BeforeRet;
					}
					break;
					default:
					{
					}
					break;
					}
				}
				LA12: ;
				res_422295 += ((NI) 1);
			} LA4: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, onlyreplaceparams_422716)(Templctx422582* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = n;
	{
		Tsym190843* s;
		if (!((*n).kind == ((NU8) 2))) goto LA3;
		s = qualifiedlookup_249864((*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 |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
				result = newsymnode_192338(s, (*n).info);
			}
			LA13: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			NI i_422820;
			NI HEX3Atmp_422824;
			NI LOC17;
			NI res_422827;
			i_422820 = 0;
			HEX3Atmp_422824 = 0;
			LOC17 = 0;
			LOC17 = safelen_191125(n);
			HEX3Atmp_422824 = (LOC17 - 1);
			res_422827 = ((NI) 0);
			{
				while (1) {
					if (!(res_422827 <= HEX3Atmp_422824)) goto LA19;
					i_422820 = res_422827;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_422820]), onlyreplaceparams_422716(c, (*n).kindU.S6.sons->data[i_422820]));
					res_422827 += ((NI) 1);
				} LA19: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, getidentnode_422589)(Templctx422582* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	switch ((*n).kind) {
	case ((NU8) 31):
	{
		result = getidentnode_422589(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 43):
	{
		result = getidentnode_422589(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 2):
	{
		Tsym190843* s;
		result = n;
		s = qualifiedlookup_249864((*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_192338(s, (*n).info);
			}
			LA12: ;
		}
		LA6: ;
	}
	break;
	case ((NU8) 53):
	case ((NU8) 3):
	{
		result = n;
	}
	break;
	default:
	{
		illformedast_245229(n);
		result = n;
	}
	break;
	}
	return result;
}

static N_INLINE(NIM_BOOL, istemplparam_422636)(Templctx422582* c, Tnode190813* 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_422569)(Tnode190813** n, Tnode190813* s) {
	switch ((*(*n)).kind) {
	case ((NU8) 31):
	{
		replaceidentbysym_422569(&(*(*n)).kindU.S6.sons->data[((NI) 1)], s);
	}
	break;
	case ((NU8) 43):
	{
		replaceidentbysym_422569(&(*(*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_245229((*n));
	}
	break;
	}
}

N_NIMCALL(Tsym190843*, newgensym_422843)(NU8 kind, Tnode190813* n, Templctx422582* c) {
	Tsym190843* result;
	Tident167021* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = considerquotedident_249010(n);
	result = newsym_191656(kind, LOC1, (*c).owner, (*n).info);
	(*result).flags |= ((NI32)1)<<((((NU8) 31))%(sizeof(NI32)*8));
	(*result).flags |= ((NI32)1)<<((((NU8) 21))%(sizeof(NI32)*8));
	return result;
}

N_NIMCALL(void, addlocaldecl_422875)(Templctx422582* c, Tnode190813** n, NU8 k) {
{	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		Tnode190813* x;
		Tnode190813* ident;
		LOC3 = 0;
		LOC3 = ((*(*n)).kind == ((NU8) 43));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = symbinding_422251((*(*n)).kindU.S6.sons->data[((NI) 1)]);
		LOC3 = (LOC5 == ((NU8) 2));
		LA4: ;
		if (!LOC3) goto LA6;
		x = HEX5BHEX5D_191244((*n), ((NI) 0));
		{
			while (1) {
				switch ((*x).kind) {
				case ((NU8) 31):
				{
					x = HEX5BHEX5D_191244(x, ((NI) 1));
				}
				break;
				case ((NU8) 43):
				{
					x = HEX5BHEX5D_191244(x, ((NI) 0));
				}
				break;
				case ((NU8) 2):
				{
					goto LA8;
				}
				break;
				case ((NU8) 53):
				{
					unsureAsgnRef((void**) (&(*n)), onlyreplaceparams_422716(c, (*n)));
					goto BeforeRet;
				}
				break;
				default:
				{
					illformedast_245229(x);
				}
				break;
				}
			}
		} LA8: ;
		ident = getidentnode_422589(c, x);
		{
			NIM_BOOL LOC17;
			LOC17 = 0;
			LOC17 = istemplparam_422636((&(*c)), ident);
			if (!!(LOC17)) goto LA18;
			incl_187856((&(*c).toinject), (*(*x).kindU.S5.ident).Sup.id);
		}
		goto LA15;
		LA18: ;
		{
			replaceidentbysym_422569(n, ident);
		}
		LA15: ;
	}
	goto LA1;
	LA6: ;
	{
		Tnode190813* ident;
		ident = getidentnode_422589(c, (*n));
		{
			NIM_BOOL LOC24;
			Tsym190843* local;
			Tnode190813* LOC27;
			LOC24 = 0;
			LOC24 = istemplparam_422636((&(*c)), ident);
			if (!!(LOC24)) goto LA25;
			local = newgensym_422843(k, ident, c);
			addprelimdecl_249619((*c).c, local);
			LOC27 = 0;
			LOC27 = newsymnode_192338(local, (*(*n)).info);
			replaceidentbysym_422569(n, LOC27);
		}
		goto LA22;
		LA25: ;
		{
			replaceidentbysym_422569(n, ident);
		}
		LA22: ;
	}
	LA1: ;
	}BeforeRet: ;
}

N_NIMCALL(void, semtemplsomedecl_423438)(Templctx422582* c, Tnode190813* n, NU8 symkind, NI start) {
	{
		NI i_423457;
		NI HEX3Atmp_423517;
		NI LOC2;
		NI res_423520;
		i_423457 = 0;
		HEX3Atmp_423517 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_423517 = (NI)(LOC2 - ((NI) 1));
		res_423520 = start;
		{
			while (1) {
				if (!(res_423520 <= HEX3Atmp_423517)) goto LA4;
				i_423457 = res_423520;
				{
					Tnode190813* a;
					NI L;
					a = (*n).kindU.S6.sons->data[i_423457];
					{
						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_245229(a);
					}
					LA14: ;
					checkminsonslen_245259(a, ((NI) 3));
					L = sonslen_193403(a);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semtemplbody_422688(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 2))]));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbody_422688(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					{
						NI j_423504;
						NI HEX3Atmp_423510;
						NI res_423513;
						j_423504 = 0;
						HEX3Atmp_423510 = 0;
						HEX3Atmp_423510 = (NI)(L - ((NI) 3));
						res_423513 = ((NI) 0);
						{
							while (1) {
								if (!(res_423513 <= HEX3Atmp_423510)) goto LA18;
								j_423504 = res_423513;
								addlocaldecl_422875(c, &(*a).kindU.S6.sons->data[j_423504], symkind);
								res_423513 += ((NI) 1);
							} LA18: ;
						}
					}
				} LA5: ;
				res_423520 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode190813*, semroutineintemplname_423054)(Templctx422582* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = n;
	{
		Tsym190843* s;
		if (!((*n).kind == ((NU8) 2))) goto LA3;
		s = qualifiedlookup_249864((*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 |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
				result = newsymnode_192338(s, (*n).info);
			}
			LA15: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			NI i_423213;
			NI HEX3Atmp_423217;
			NI LOC19;
			NI res_423220;
			i_423213 = 0;
			HEX3Atmp_423217 = 0;
			LOC19 = 0;
			LOC19 = safelen_191125(n);
			HEX3Atmp_423217 = (NI)(LOC19 - ((NI) 1));
			res_423220 = ((NI) 0);
			{
				while (1) {
					if (!(res_423220 <= HEX3Atmp_423217)) goto LA21;
					i_423213 = res_423220;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_423213]), semroutineintemplname_423054(c, (*n).kindU.S6.sons->data[i_423213]));
					res_423220 += ((NI) 1);
				} LA21: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semroutineintemplbody_423236)(Templctx422582* c, Tnode190813* n, NU8 k) {
	Tnode190813* result;
	result = 0;
	result = n;
	checksonslen_245249(n, ((NI) 7));
	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		Tnode190813* ident;
		LOC3 = 0;
		LOC3 = !(((*n).kind == ((NU8) 51) || (*n).kind == ((NU8) 52)));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = symbinding_422251((*n).kindU.S6.sons->data[((NI) 4)]);
		LOC3 = (LOC5 == ((NU8) 1));
		LA4: ;
		if (!LOC3) goto LA6;
		ident = getidentnode_422589(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NIM_BOOL LOC10;
			Tsym190843* s;
			LOC10 = 0;
			LOC10 = istemplparam_422636((&(*c)), ident);
			if (!!(LOC10)) goto LA11;
			s = newgensym_422843(k, ident, c);
			asgnRefNoCycle((void**) (&(*s).ast), n);
			addprelimdecl_249619((*c).c, s);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_192338(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_423054(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	LA1: ;
	openscope_422693(c);
	{
		NI i_423416;
		NI res_423422;
		i_423416 = 0;
		res_423422 = ((NI) 1);
		{
			while (1) {
				if (!(res_423422 <= ((NI) 6))) goto LA17;
				i_423416 = res_423422;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_423416]), semtemplbody_422688(c, (*n).kindU.S6.sons->data[i_423416]));
				res_423422 += ((NI) 1);
			} LA17: ;
		}
	}
	closescope_422700(c);
	return result;
}

N_NIMCALL(Tnode190813*, semtemplbody_422688)(Templctx422582* c, Tnode190813* n) {
	Tnode190813* result;
{	result = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 2):
	{
		Tsym190843* s;
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = contains_187829((*c).toinject, (*(*n).kindU.S5.ident).Sup.id);
			if (!LOC4) goto LA5;
			result = n;
			goto BeforeRet;
		}
		LA5: ;
		s = qualifiedlookup_249864((*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 |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
				result = newsymnode_192338(s, (*n).info);
			}
			goto LA11;
			LA15: ;
			{
				NIM_BOOL LOC18;
				LOC18 = 0;
				LOC18 = contains_187829((*c).tobind, (*s).Sup.id);
				if (!LOC18) goto LA19;
				result = symchoice_422316((*c).c, n, s, ((NU8) 0));
			}
			goto LA11;
			LA19: ;
			{
				NIM_BOOL LOC22;
				LOC22 = 0;
				LOC22 = contains_187829((*c).tomixin, (*(*s).name).Sup.id);
				if (!LOC22) goto LA23;
				result = symchoice_422316((*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 |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
				result = newsymnode_192338(s, (*n).info);
			}
			goto LA11;
			LA28: ;
			{
				result = semtemplsymbol_423011((*c).c, n, s);
			}
			LA11: ;
		}
		LA9: ;
	}
	break;
	case ((NU8) 55):
	{
		result = semtemplbody_422688(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 122):
	{
		result = sembindstmt_422421((*c).c, n, (&(*c).tobind));
	}
	break;
	case ((NU8) 123):
	{
		result = semmixinstmt_422521((*c).c, n, (&(*c).tomixin));
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 92):
	{
		{
			NI i_424016;
			NI HEX3Atmp_425019;
			NI LOC37;
			NI res_425022;
			i_424016 = 0;
			HEX3Atmp_425019 = 0;
			LOC37 = 0;
			LOC37 = sonslen_193403(n);
			HEX3Atmp_425019 = (NI)(LOC37 - ((NI) 1));
			res_425022 = ((NI) 0);
			{
				while (1) {
					Tnode190813* it;
					if (!(res_425022 <= HEX3Atmp_425019)) goto LA39;
					i_424016 = res_425022;
					it = (*n).kindU.S6.sons->data[i_424016];
					{
						NI LOC42;
						LOC42 = 0;
						LOC42 = len_191097(it);
						if (!(LOC42 == ((NI) 2))) goto LA43;
						openscope_422693(c);
						asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), semtemplbody_422688(c, (*it).kindU.S6.sons->data[((NI) 0)]));
						asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), semtemplbody_422688(c, (*it).kindU.S6.sons->data[((NI) 1)]));
						closescope_422700(c);
					}
					goto LA40;
					LA43: ;
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_424016]), semtemplbodyscope_422707(c, it));
					}
					LA40: ;
					res_425022 += ((NI) 1);
				} LA39: ;
			}
		}
	}
	break;
	case ((NU8) 96):
	{
		openscope_422693(c);
		{
			NI i_424416;
			NI HEX3Atmp_425027;
			NI LOC48;
			NI res_425030;
			i_424416 = 0;
			HEX3Atmp_425027 = 0;
			LOC48 = 0;
			LOC48 = sonslen_193403(n);
			HEX3Atmp_425027 = (NI)(LOC48 - ((NI) 1));
			res_425030 = ((NI) 0);
			{
				while (1) {
					if (!(res_425030 <= HEX3Atmp_425027)) goto LA50;
					i_424416 = res_425030;
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_424416]), semtemplbody_422688(c, (*n).kindU.S6.sons->data[i_424416]));
					res_425030 += ((NI) 1);
				} LA50: ;
			}
		}
		closescope_422700(c);
	}
	break;
	case ((NU8) 97):
	{
		openscope_422693(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbody_422688(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_424433;
			NI HEX3Atmp_425043;
			NI LOC53;
			NI res_425046;
			i_424433 = 0;
			HEX3Atmp_425043 = 0;
			LOC53 = 0;
			LOC53 = sonslen_193403(n);
			HEX3Atmp_425043 = (NI)(LOC53 - ((NI) 1));
			res_425046 = ((NI) 1);
			{
				while (1) {
					Tnode190813* a;
					NI L;
					if (!(res_425046 <= HEX3Atmp_425043)) goto LA55;
					i_424433 = res_425046;
					a = (*n).kindU.S6.sons->data[i_424433];
					checkminsonslen_245259(a, ((NI) 1));
					L = sonslen_193403(a);
					{
						NI j_424449;
						NI HEX3Atmp_425036;
						NI res_425039;
						j_424449 = 0;
						HEX3Atmp_425036 = 0;
						HEX3Atmp_425036 = (NI)(L - ((NI) 2));
						res_425039 = ((NI) 0);
						{
							while (1) {
								if (!(res_425039 <= HEX3Atmp_425036)) goto LA58;
								j_424449 = res_425039;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_424449]), semtemplbody_422688(c, (*a).kindU.S6.sons->data[j_424449]));
								res_425039 += ((NI) 1);
							} LA58: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbodyscope_422707(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					res_425046 += ((NI) 1);
				} LA55: ;
			}
		}
		closescope_422700(c);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		NI L;
		L = sonslen_193403(n);
		openscope_422693(c);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]), semtemplbody_422688(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 2))]));
		{
			NI i_424469;
			NI HEX3Atmp_425051;
			NI res_425054;
			i_424469 = 0;
			HEX3Atmp_425051 = 0;
			HEX3Atmp_425051 = (NI)(L - ((NI) 3));
			res_425054 = ((NI) 0);
			{
				while (1) {
					if (!(res_425054 <= HEX3Atmp_425051)) goto LA62;
					i_424469 = res_425054;
					addlocaldecl_422875(c, &(*n).kindU.S6.sons->data[i_424469], ((NU8) 21));
					res_425054 += ((NI) 1);
				} LA62: ;
			}
		}
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbody_422688(c, (*n).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
		closescope_422700(c);
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	case ((NU8) 129):
	{
		checksonslen_245249(n, ((NI) 2));
		openscope_422693(c);
		{
			Tsym190843* s;
			if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA66;
			s = newgensym_422843(((NU8) 22), (*n).kindU.S6.sons->data[((NI) 0)], c);
			addprelimdecl_249619((*c).c, s);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_192338(s, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
		}
		LA66: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semtemplbody_422688(c, (*n).kindU.S6.sons->data[((NI) 1)]));
		closescope_422700(c);
	}
	break;
	case ((NU8) 106):
	{
		checkminsonslen_245259(n, ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbodyscope_422707(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_424619;
			NI HEX3Atmp_425067;
			NI LOC70;
			NI res_425070;
			i_424619 = 0;
			HEX3Atmp_425067 = 0;
			LOC70 = 0;
			LOC70 = sonslen_193403(n);
			HEX3Atmp_425067 = (NI)(LOC70 - ((NI) 1));
			res_425070 = ((NI) 1);
			{
				while (1) {
					Tnode190813* a;
					NI L;
					if (!(res_425070 <= HEX3Atmp_425067)) goto LA72;
					i_424619 = res_425070;
					a = (*n).kindU.S6.sons->data[i_424619];
					checkminsonslen_245259(a, ((NI) 1));
					L = sonslen_193403(a);
					{
						NI j_424635;
						NI HEX3Atmp_425060;
						NI res_425063;
						j_424635 = 0;
						HEX3Atmp_425060 = 0;
						HEX3Atmp_425060 = (NI)(L - ((NI) 2));
						res_425063 = ((NI) 0);
						{
							while (1) {
								if (!(res_425063 <= HEX3Atmp_425060)) goto LA75;
								j_424635 = res_425063;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_424635]), semtemplbody_422688(c, (*a).kindU.S6.sons->data[j_424635]));
								res_425063 += ((NI) 1);
							} LA75: ;
						}
					}
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), semtemplbodyscope_422707(c, (*a).kindU.S6.sons->data[(NI)(L - ((NI) 1))]));
					res_425070 += ((NI) 1);
				} LA72: ;
			}
		}
	}
	break;
	case ((NU8) 99):
	{
		semtemplsomedecl_423438(c, n, ((NU8) 8), ((NI) 0));
	}
	break;
	case ((NU8) 100):
	{
		semtemplsomedecl_423438(c, n, ((NU8) 9), ((NI) 0));
	}
	break;
	case ((NU8) 76):
	{
		checkminsonslen_245259(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semtemplbody_422688(c, (*n).kindU.S6.sons->data[((NI) 0)]));
		semtemplsomedecl_423438(c, n, ((NU8) 3), ((NI) 1));
	}
	break;
	case ((NU8) 101):
	{
		{
			NI i_424654;
			NI HEX3Atmp_425076;
			NI LOC81;
			NI res_425079;
			i_424654 = 0;
			HEX3Atmp_425076 = 0;
			LOC81 = 0;
			LOC81 = sonslen_193403(n);
			HEX3Atmp_425076 = (NI)(LOC81 - ((NI) 1));
			res_425079 = ((NI) 0);
			{
				while (1) {
					if (!(res_425079 <= HEX3Atmp_425076)) goto LA83;
					i_424654 = res_425079;
					{
						Tnode190813* a;
						a = (*n).kindU.S6.sons->data[i_424654];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA87;
							goto LA84;
						}
						LA87: ;
						{
							if (!!(((*a).kind == ((NU8) 102)))) goto LA91;
							illformedast_245229(a);
						}
						LA91: ;
						checksonslen_245249(a, ((NI) 3));
						addlocaldecl_422875(c, &(*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 10));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semtemplbody_422688(c, (*a).kindU.S6.sons->data[((NI) 1)]));
						asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_422688(c, (*a).kindU.S6.sons->data[((NI) 2)]));
					} LA84: ;
					res_425079 += ((NI) 1);
				} LA83: ;
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		{
			NI i_424693;
			NI HEX3Atmp_425085;
			NI LOC95;
			NI res_425088;
			i_424693 = 0;
			HEX3Atmp_425085 = 0;
			LOC95 = 0;
			LOC95 = sonslen_193403(n);
			HEX3Atmp_425085 = (NI)(LOC95 - ((NI) 1));
			res_425088 = ((NI) 0);
			{
				while (1) {
					if (!(res_425088 <= HEX3Atmp_425085)) goto LA97;
					i_424693 = res_425088;
					{
						Tnode190813* a;
						a = (*n).kindU.S6.sons->data[i_424693];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA101;
							goto LA98;
						}
						LA101: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA105;
							illformedast_245229(a);
						}
						LA105: ;
						checksonslen_245249(a, ((NI) 3));
						addlocaldecl_422875(c, &(*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 7));
					} LA98: ;
					res_425088 += ((NI) 1);
				} LA97: ;
			}
		}
		{
			NI i_424728;
			NI HEX3Atmp_425094;
			NI LOC108;
			NI res_425097;
			i_424728 = 0;
			HEX3Atmp_425094 = 0;
			LOC108 = 0;
			LOC108 = sonslen_193403(n);
			HEX3Atmp_425094 = (NI)(LOC108 - ((NI) 1));
			res_425097 = ((NI) 0);
			{
				while (1) {
					if (!(res_425097 <= HEX3Atmp_425094)) goto LA110;
					i_424728 = res_425097;
					{
						Tnode190813* a;
						a = (*n).kindU.S6.sons->data[i_424728];
						{
							if (!((*a).kind == ((NU8) 125))) goto LA114;
							goto LA111;
						}
						LA114: ;
						{
							if (!!(((*a).kind == ((NU8) 103)))) goto LA118;
							illformedast_245229(a);
						}
						LA118: ;
						checksonslen_245249(a, ((NI) 3));
						{
							if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA122;
							openscope_422693(c);
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semtemplbody_422688(c, (*a).kindU.S6.sons->data[((NI) 1)]));
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_422688(c, (*a).kindU.S6.sons->data[((NI) 2)]));
							closescope_422700(c);
						}
						goto LA120;
						LA122: ;
						{
							asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 2)]), semtemplbody_422688(c, (*a).kindU.S6.sons->data[((NI) 2)]));
						}
						LA120: ;
					} LA111: ;
					res_425097 += ((NI) 1);
				} LA110: ;
			}
		}
	}
	break;
	case ((NU8) 79):
	case ((NU8) 51):
	case ((NU8) 52):
	{
		result = semroutineintemplbody_423236(c, n, ((NU8) 12));
	}
	break;
	case ((NU8) 80):
	{
		result = semroutineintemplbody_423236(c, n, ((NU8) 13));
	}
	break;
	case ((NU8) 84):
	{
		NU8 kind;
		{
			Tnode190813* LOC130;
			NIM_BOOL LOC131;
			LOC130 = 0;
			LOC130 = HEX5BHEX5D_191244(n, ((NI) 4));
			LOC131 = 0;
			LOC131 = haspragma_263698(LOC130, ((NU16) 137));
			if (!LOC131) goto LA132;
			kind = ((NU8) 15);
		}
		goto LA128;
		LA132: ;
		{
			kind = ((NU8) 14);
		}
		LA128: ;
		result = semroutineintemplbody_423236(c, n, kind);
	}
	break;
	case ((NU8) 83):
	{
		result = semroutineintemplbody_423236(c, n, ((NU8) 18));
	}
	break;
	case ((NU8) 82):
	{
		result = semroutineintemplbody_423236(c, n, ((NU8) 17));
	}
	break;
	case ((NU8) 81):
	{
		result = semroutineintemplbody_423236(c, n, ((NU8) 16));
	}
	break;
	case ((NU8) 43):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), semtemplbody_422688(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	break;
	case ((NU8) 31):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semtemplbody_422688(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	}
	break;
	case ((NU8) 90):
	{
		result = onlyreplaceparams_422716(c, n);
	}
	break;
	default:
	{
		{
			NIM_BOOL LOC144;
			Tsym190843* s;
			LOC144 = 0;
			LOC144 = ((*n).kind == ((NU8) 45));
			if (LOC144) goto LA145;
			LOC144 = ((*n).kind == ((NU8) 53));
			LA145: ;
			if (!LOC144) goto LA146;
			s = qualifiedlookup_249864((*c).c, n, 0);
			{
				if (!!((s == NIM_NIL))) goto LA150;
				{
					NIM_BOOL LOC154;
					NIM_BOOL LOC155;
					NIM_BOOL LOC156;
					NI LOC160;
					LOC154 = 0;
					LOC155 = 0;
					LOC156 = 0;
					LOC156 = ((*s).owner == (*c).owner);
					if (!(LOC156)) goto LA157;
					LOC156 = ((*s).kind == ((NU8) 3));
					LA157: ;
					LOC155 = LOC156;
					if (!(LOC155)) goto LA158;
					LOC155 = ((*n).kind == ((NU8) 53));
					LA158: ;
					LOC154 = LOC155;
					if (!(LOC154)) goto LA159;
					LOC160 = 0;
					LOC160 = len_191097(n);
					LOC154 = (LOC160 == ((NI) 1));
					LA159: ;
					if (!LOC154) goto LA161;
					(*s).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
					result = newsymnode_192338(s, (*n).info);
					goto BeforeRet;
				}
				goto LA152;
				LA161: ;
				{
					NIM_BOOL LOC164;
					LOC164 = 0;
					LOC164 = contains_187829((*c).tobind, (*s).Sup.id);
					if (!LOC164) goto LA165;
					result = symchoice_422316((*c).c, n, s, ((NU8) 0));
					goto BeforeRet;
				}
				goto LA152;
				LA165: ;
				{
					NIM_BOOL LOC168;
					LOC168 = 0;
					LOC168 = contains_187829((*c).tomixin, (*(*s).name).Sup.id);
					if (!LOC168) goto LA169;
					result = symchoice_422316((*c).c, n, s, ((NU8) 2));
					goto BeforeRet;
				}
				goto LA152;
				LA169: ;
				{
					result = symchoice_422316((*c).c, n, s, ((NU8) 1));
					goto BeforeRet;
				}
				LA152: ;
			}
			LA150: ;
		}
		LA146: ;
		result = n;
		{
			NI i_425015;
			NI HEX3Atmp_425102;
			NI LOC173;
			NI res_425105;
			i_425015 = 0;
			HEX3Atmp_425102 = 0;
			LOC173 = 0;
			LOC173 = sonslen_193403(n);
			HEX3Atmp_425102 = (NI)(LOC173 - ((NI) 1));
			res_425105 = ((NI) 0);
			{
				while (1) {
					if (!(res_425105 <= HEX3Atmp_425102)) goto LA175;
					i_425015 = res_425105;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_425015]), semtemplbody_422688(c, (*n).kindU.S6.sons->data[i_425015]));
					res_425105 += ((NI) 1);
				} LA175: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, transformtoexpr_425509)(Tnode190813* n) {
	Tnode190813* result;
	NI realstmt;
	result = 0;
	realstmt = 0;
	result = n;
	switch ((*n).kind) {
	case ((NU8) 115):
	{
		realstmt = ((NI) -1);
		{
			NI i_425526;
			NI HEX3Atmp_425531;
			NI LOC3;
			NI res_425534;
			i_425526 = 0;
			HEX3Atmp_425531 = 0;
			LOC3 = 0;
			LOC3 = sonslen_193403(n);
			HEX3Atmp_425531 = (NI)(LOC3 - ((NI) 1));
			res_425534 = ((NI) 0);
			{
				while (1) {
					if (!(res_425534 <= HEX3Atmp_425531)) goto LA5;
					i_425526 = res_425534;
					switch ((*(*n).kindU.S6.sons->data[i_425526]).kind) {
					case ((NU8) 125):
					case ((NU8) 1):
					case ((NU8) 23):
					{
					}
					break;
					default:
					{
						{
							if (!(realstmt == ((NI) -1))) goto LA10;
							realstmt = i_425526;
						}
						goto LA8;
						LA10: ;
						{
							realstmt = ((NI) -2);
						}
						LA8: ;
					}
					break;
					}
					res_425534 += ((NI) 1);
				} LA5: ;
			}
		}
		{
			if (!(((NI) 0) <= realstmt)) goto LA15;
			result = transformtoexpr_425509((*n).kindU.S6.sons->data[realstmt]);
		}
		goto LA13;
		LA15: ;
		{
			(*n).kind = ((NU8) 126);
		}
		LA13: ;
	}
	break;
	case ((NU8) 112):
	{
		(*n).kind = ((NU8) 127);
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(Tnode190813*, semtemplatedef_425550)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tsym190843* s;
	Tscope190837* LOC6;
	Tnode190813* gp;
	Templctx422582 ctx;
	Tsym190843* proto;
	result = 0;
	s = 0;
	{
		if (!((*(*(*c).p).owner).kind == ((NU8) 6))) goto LA3;
		s = semidentvis_409955(c, ((NU8) 18), (*n).kindU.S6.sons->data[((NI) 0)], 2);
		(*s).flags |= ((NI32)1)<<((((NU8) 3))%(sizeof(NI32)*8));
	}
	goto LA1;
	LA3: ;
	{
		s = semidentvis_409955(c, ((NU8) 18), (*n).kindU.S6.sons->data[((NI) 0)], 0);
	}
	LA1: ;
	pushowner_244261(s);
	LOC6 = 0;
	LOC6 = openscope_249091(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_192338(s, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA9;
		pragma_260069(c, s, (*n).kindU.S6.sons->data[((NI) 4)], TMP3408);
	}
	LA9: ;
	gp = 0;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA13;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), semgenericparamlist_421951(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA11;
	LA13: ;
	{
		gp = newnodei_192351(((NU8) 75), (*n).info);
	}
	LA11: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA18;
		semparamlist_409284(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NI i_425651;
			NI HEX3Atmp_425850;
			NI LOC21;
			NI res_425853;
			i_425651 = 0;
			HEX3Atmp_425850 = 0;
			LOC21 = 0;
			LOC21 = len_191097((*(*s).typ).n);
			HEX3Atmp_425850 = (NI)(LOC21 - ((NI) 1));
			res_425853 = ((NI) 1);
			{
				while (1) {
					if (!(res_425853 <= HEX3Atmp_425850)) goto LA23;
					i_425651 = res_425853;
					(*(*(*(*(*s).typ).n).kindU.S6.sons->data[i_425651]).kindU.S4.sym).flags &= ~(((NI32)1) << ((((NU8) 31)) % (sizeof(NI32)*8)));
					res_425853 += ((NI) 1);
				} LA23: ;
			}
		}
		{
			NI LOC26;
			LOC26 = 0;
			LOC26 = sonslen_193403(gp);
			if (!(((NI) 0) < LOC26)) goto LA27;
			{
				if (!((*(*n).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1))) goto LA31;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), gp);
			}
			LA31: ;
		}
		LA27: ;
		{
			if (!((*(*(*n).kindU.S6.sons->data[((NI) 3)]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1))) goto LA35;
			asgnRefNoCycle((void**) (&(*(*s).typ).sons->data[((NI) 0)]), newtypes_244219(((NU8) 7), c));
			asgnRefNoCycle((void**) (&(*(*(*s).typ).n).kindU.S6.sons->data[((NI) 0)]), newnodeit_192807(((NU8) 4), (*n).info, (*(*s).typ).sons->data[((NI) 0)]));
		}
		LA35: ;
	}
	goto LA16;
	LA18: ;
	{
		Ttype190849* LOC38;
		Tnode190813* LOC39;
		asgnRefNoCycle((void**) (&(*s).typ), newtypes_244219(((NU8) 25), c));
		asgnRefNoCycle((void**) (&(*(*s).typ).n), newnodei_192351(((NU8) 76), (*n).info));
		LOC38 = 0;
		LOC38 = newtypes_244219(((NU8) 7), c);
		rawaddson_194478((*s).typ, LOC38);
		LOC39 = 0;
		LOC39 = newnodeit_192807(((NU8) 4), (*n).info, (*(*s).typ).sons->data[((NI) 0)]);
		addson_192819((*(*s).typ).n, LOC39);
	}
	LA16: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA42;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), sempattern_423548(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	}
	LA42: ;
	memset((void*)(&ctx), 0, sizeof(ctx));
	initintset_187927((&ctx.tobind));
	initintset_187927((&ctx.tomixin));
	initintset_187927((&ctx.toinject));
	ctx.c = c;
	ctx.owner = s;
	{
		if (!(((*s).flags &(1<<((((NU8) 9))&31)))!=0)) goto LA46;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semtemplbodydirty_425220((&ctx), (*n).kindU.S6.sons->data[((NI) 6)]));
	}
	goto LA44;
	LA46: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), semtemplbody_422688((&ctx), (*n).kindU.S6.sons->data[((NI) 6)]));
	}
	LA44: ;
	{
		if (!!(((*(*(*s).typ).sons->data[((NI) 0)]).kind == ((NU8) 7) || (*(*(*s).typ).sons->data[((NI) 0)]).kind == ((NU8) 8)))) goto LA51;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformtoexpr_425509((*n).kindU.S6.sons->data[((NI) 6)]));
	}
	LA51: ;
	closescope_249111(c);
	popowner_244267();
	asgnRefNoCycle((void**) (&(*s).ast), n);
	result = n;
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1))) goto LA55;
		localerror_165155((*n).info, ((NU16) 138), (*(*s).name).s);
	}
	LA55: ;
	proto = searchforproc_259278(c, (*c).currentscope, s);
	{
		if (!(proto == NIM_NIL)) goto LA59;
		addinterfaceoverloadablesymat_249746(c, (*c).currentscope, s);
	}
	goto LA57;
	LA59: ;
	{
		symtabreplace_202415((&(*(*c).currentscope).symbols), proto, s);
	}
	LA57: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA64;
		(*c).patterns = (Tsymseq190815*) incrSeq(&((*c).patterns)->Sup, sizeof(Tsym190843*));
		asgnRefNoCycle((void**) (&(*c).patterns->data[(*c).patterns->Sup.len-1]), s);
	}
	LA64: ;
	return result;
}

N_NIMCALL(Tsym190843*, getmagicsym_447811)(NU16 magic) {
	Tsym190843* result;
	Tident167021* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_167463(reprEnum(magic, (&NTI190529)));
	result = newsym_191656(((NU8) 12), LOC1, systemmodule_238019, gcodegenlineinfo_163961);
	(*result).magic = magic;
	return result;
}

N_NIMCALL(Tnode190813*, semquoteast_409334)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* doblk;
	NI LOC10;
	NimStringDesc* op;
	Tnodeseq190807* quotes;
	Tnodeseq190807* ids;
	Tsym190843* LOC28;
	Tsym190843* LOC29;
	Tnode190813* tmpl;
	Tnodeseq190807* LOC41;
	TY245103 LOC42;
	Tsym190843* LOC43;
	result = 0;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NI LOC6;
		NimStringDesc* LOC9;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = len_191097(n);
		LOC3 = (LOC4 == ((NI) 2));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = len_191097(n);
		LOC3 = (LOC6 == ((NI) 3));
		LA5: ;
		if (!!(LOC3)) goto LA7;
		LOC9 = 0;
		LOC9 = HEX24_165306(TMP3403);
		internalerror_165218(LOC9);
	}
	LA7: ;
	LOC10 = 0;
	{
		if (!NIM_FALSE) goto LA13;
		LOC10 = ((NI) -1);
	}
	goto LA11;
	LA13: ;
	{
		NI LOC16;
		LOC16 = 0;
		LOC16 = len_191097(n);
		LOC10 = (NI)(LOC16 + ((NI) -1));
	}
	LA11: ;
	doblk = HEX5BHEX5D_191244(n, LOC10);
	{
		NI LOC19;
		Tnode190813* LOC22;
		LOC19 = 0;
		LOC19 = len_191097(n);
		if (!(LOC19 == ((NI) 3))) goto LA20;
		LOC22 = 0;
		LOC22 = HEX5BHEX5D_191244(n, ((NI) 1));
		op = expectstring_447791(c, LOC22);
	}
	goto LA17;
	LA20: ;
	{
		op = copyString(((NimStringDesc*) &TMP3404));
	}
	LA17: ;
	quotes = newseq_448261(((NI) 1));
	ids = newseq_448261(((NI) 0));
	{
		if (!!(((*doblk).kind == ((NU8) 52)))) goto LA26;
		localerror_165155((*n).info, ((NU16) 188), ((NimStringDesc*) &TMP3405));
	}
	LA26: ;
	processquotations_448082(&(*doblk).kindU.S6.sons->data[((NI) 6)], op, (&quotes), (&ids));
	LOC28 = 0;
	LOC28 = getcurrowner_244256();
	LOC29 = 0;
	LOC29 = newanonsym_447826(((NU8) 18), (*n).info, LOC28);
	asgnRefNoCycle((void**) (&(*doblk).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(LOC29));
	{
		Tnode190813* LOC34;
		Tsym190843* LOC35;
		Tnode190813* LOC36;
		Tsym190843* LOC37;
		Tnode190813* LOC38;
		Tnode190813* LOC39;
		Tnode190813* LOC40;
		if (!(((NI) 0) < (ids ? ids->Sup.len : 0))) goto LA32;
		asgnRefNoCycle((void**) (&(*doblk).kindU.S6.sons->data[((NI) 3)]), newnodei_192351(((NU8) 76), (*n).info));
		LOC34 = 0;
		LOC34 = HEX5BHEX5D_191244(doblk, ((NI) 3));
		LOC35 = 0;
		LOC35 = getsyssym_238054(((NimStringDesc*) &TMP3406));
		LOC36 = 0;
		LOC36 = newsymnode_192325(LOC35);
		add_191164(LOC34, LOC36);
		LOC37 = 0;
		LOC37 = getsyssym_238054(((NimStringDesc*) &TMP3407));
		LOC38 = 0;
		LOC38 = newsymnode_192325(LOC37);
		ids = (Tnodeseq190807*) incrSeq(&(ids)->Sup, sizeof(Tnode190813*));
		asgnRefNoCycle((void**) (&ids->data[ids->Sup.len-1]), LOC38);
		ids = (Tnodeseq190807*) incrSeq(&(ids)->Sup, sizeof(Tnode190813*));
		asgnRefNoCycle((void**) (&ids->data[ids->Sup.len-1]), emptynode_191807);
		LOC39 = 0;
		LOC39 = HEX5BHEX5D_191244(doblk, ((NI) 3));
		LOC40 = 0;
		LOC40 = newnode_192607(((NU8) 35), (*n).info, ids, NIM_NIL);
		add_191164(LOC39, LOC40);
	}
	LA32: ;
	tmpl = semtemplatedef_425550(c, doblk);
	asgnRefNoCycle((void**) (&quotes->data[((NI) 0)]), HEX5BHEX5D_191244(tmpl, ((NI) 0)));
	LOC41 = 0;
	LOC41 = (Tnodeseq190807*) newSeq((&NTI190807), 2);
	memset((void*)LOC42, 0, sizeof(LOC42));
	LOC43 = 0;
	LOC43 = getmagicsym_447811(((NU16) 20));
	LOC42[0] = newsymnode_192325(LOC43);
	LOC42[1] = newnode_192607(((NU8) 27), (*n).info, quotes, NIM_NIL);
	asgnRefNoCycle((void**) (&LOC41->data[0]), LOC42[0]);
	asgnRefNoCycle((void**) (&LOC41->data[1]), LOC42[1]);
	result = newnode_192607(((NU8) 27), (*n).info, LOC41, NIM_NIL);
	result = semexpandtoast_447913(c, result);
	return result;
}

N_NIMCALL(Ttype190849*, createflowvar_448503)(Tcontext244023* c, Ttype190849* t, Tlineinfo163338 info) {
	Ttype190849* result;
	Tsym190843* LOC1;
	result = 0;
	result = newtype_193140(((NU8) 9), (*c).module);
	LOC1 = 0;
	LOC1 = getcompilerproc_238036(((NimStringDesc*) &TMP3411));
	addsonskipintlit_238729(result, (*LOC1).typ);
	addsonskipintlit_238729(result, t);
	result = instgenericcontainer_412151(c, info, result, NIM_FALSE);
	return result;
}

N_NIMCALL(Tsym190843*, instantiatecreateflowvarcall_448513)(Tcontext244023* c, Ttype190849* t, Tlineinfo163338 info) {
	Tsym190843* result;
	Tsym190843* sym;
	Tidtable190861 bindings;
	Tnode190813* LOC5;
	Tidobj167015* LOC6;
	TNimObject* LOC7;
	result = 0;
	sym = getcompilerproc_238036(((NimStringDesc*) &TMP3412));
	{
		if (!(sym == NIM_NIL)) goto LA3;
		localerror_165155(info, ((NU16) 64), ((NimStringDesc*) &TMP3412));
	}
	LA3: ;
	memset((void*)(&bindings), 0, sizeof(bindings));
	initidtable_194057((&bindings));
	LOC5 = 0;
	LOC5 = HEX5BHEX5D_191244((*sym).ast, ((NI) 2));
	LOC6 = 0;
	LOC6 = &(*(*LOC5).kindU.S6.sons->data[((NI) 0)]).typ->Sup;
	LOC7 = 0;
	LOC7 = &t->Sup.Sup;
	idtableput_198196((&bindings), LOC6, LOC7);
	result = (*c).semgenerateinstance.ClEnv? (*c).semgenerateinstance.ClPrc(c, sym, bindings, info, (*c).semgenerateinstance.ClEnv):((TMP3413)((*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(Tnode190813*, semmagic_448578)(Tcontext244023* c, Tnode190813* n, Tsym190843* s, NU16 flags) {
	Tnode190813* result;
	result = 0;
	result = n;
	switch ((*s).magic) {
	case ((NU16) 10):
	{
		checksonslen_245249(n, ((NI) 2));
		result = semaddr_444049(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU16) 11):
	{
		checksonslen_245249(n, ((NI) 2));
		result = semtypeof_444070(c, (*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU16) 1):
	{
		Tnode190813* LOC4;
		LOC4 = 0;
		LOC4 = setms_448568(n, s);
		result = semdefined_447719(c, LOC4, NIM_FALSE);
	}
	break;
	case ((NU16) 2):
	{
		Tnode190813* LOC6;
		LOC6 = 0;
		LOC6 = setms_448568(n, s);
		result = semdefined_447719(c, LOC6, NIM_TRUE);
	}
	break;
	case ((NU16) 3):
	{
		Tnode190813* LOC8;
		LOC8 = 0;
		LOC8 = setms_448568(n, s);
		result = semcompiles_448463(c, LOC8, flags);
	}
	break;
	case ((NU16) 4):
	{
		Tnode190813* LOC10;
		LOC10 = 0;
		LOC10 = setms_448568(n, s);
		result = semlowhigh_442647(c, LOC10, ((NU16) 4));
	}
	break;
	case ((NU16) 5):
	{
		Tnode190813* LOC12;
		LOC12 = 0;
		LOC12 = setms_448568(n, s);
		result = semlowhigh_442647(c, LOC12, ((NU16) 5));
	}
	break;
	case ((NU16) 6):
	{
		Tnode190813* LOC14;
		LOC14 = 0;
		LOC14 = setms_448568(n, s);
		result = semsizeof_442694(c, LOC14);
	}
	break;
	case ((NU16) 8):
	{
		Tnode190813* LOC16;
		LOC16 = 0;
		LOC16 = setms_448568(n, s);
		result = semis_442917(c, LOC16);
	}
	break;
	case ((NU16) 9):
	{
		Tnode190813* LOC18;
		LOC18 = 0;
		LOC18 = setms_448568(n, s);
		result = semof_442705(c, LOC18);
	}
	break;
	case ((NU16) 15):
	{
		result = semshallowcopy_444276(c, n, flags);
	}
	break;
	case ((NU16) 20):
	{
		result = semexpandtoast_448069(c, n, s, flags);
	}
	break;
	case ((NU16) 21):
	{
		result = semquoteast_409334(c, n);
	}
	break;
	case ((NU16) 165):
	{
		Tnode190813* LOC23;
		NimStringDesc* LOC24;
		checksonslen_245249(n, ((NI) 2));
		LOC23 = 0;
		LOC23 = HEX5BHEX5D_191244(n, ((NI) 1));
		LOC24 = 0;
		LOC24 = rendertree_212058(LOC23, 4);
		result = newstrnodet_256042(LOC24, n);
		asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 28)));
	}
	break;
	case ((NU16) 166):
	{
		Tnode190813* x;
		result = setms_448568(n, s);
		x = lastson_193431(n);
		{
			if (!((*x).kind == ((NU8) 52))) goto LA28;
			x = (*x).kindU.S6.sons->data[((NI) 6)];
		}
		LA28: ;
		(*c).inparallelstmt += ((NI) 1);
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semstmt_409277(c, x));
		(*c).inparallelstmt -= ((NI) 1);
	}
	break;
	case ((NU16) 213):
	{
		result = setms_448568(n, s);
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semexpr_409201(c, (*n).kindU.S6.sons->data[((NI) 1)], 0));
		{
			Tnode190813* LOC33;
			NIM_BOOL LOC34;
			Tnode190813* LOC46;
			Tsym190843* LOC47;
			Tnode190813* LOC48;
			LOC33 = 0;
			LOC33 = HEX5BHEX5D_191244(result, ((NI) 1));
			LOC34 = 0;
			LOC34 = isemptytype_195933((*LOC33).typ);
			if (!!(LOC34)) goto LA35;
			{
				Tnode190813* LOC39;
				NU8 LOC40;
				Tnode190813* LOC43;
				LOC39 = 0;
				LOC39 = HEX5BHEX5D_191244(result, ((NI) 1));
				LOC40 = 0;
				LOC40 = spawnresult_358965((*LOC39).typ, (((NI) 0) < (*c).inparallelstmt));
				if (!(LOC40 == ((NU8) 1))) goto LA41;
				LOC43 = 0;
				LOC43 = HEX5BHEX5D_191244(result, ((NI) 1));
				asgnRefNoCycle((void**) (&(*result).typ), createflowvar_448503(c, (*LOC43).typ, (*n).info));
			}
			goto LA37;
			LA41: ;
			{
				Tnode190813* LOC45;
				LOC45 = 0;
				LOC45 = HEX5BHEX5D_191244(result, ((NI) 1));
				asgnRefNoCycle((void**) (&(*result).typ), (*LOC45).typ);
			}
			LA37: ;
			LOC46 = 0;
			LOC46 = HEX5BHEX5D_191244(result, ((NI) 1));
			LOC47 = 0;
			LOC47 = instantiatecreateflowvarcall_448513(c, (*LOC46).typ, (*n).info);
			LOC48 = 0;
			LOC48 = newsymnode_192325(LOC47);
			add_191164(result, LOC48);
		}
		LA35: ;
	}
	break;
	case ((NU16) 218):
	{
		Tnode190813* LOC50;
		result = setms_448568(n, s);
		asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), semexpr_409201(c, (*n).kindU.S6.sons->data[((NI) 1)], 0));
		LOC50 = 0;
		LOC50 = HEX5BHEX5D_191244(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*result).typ), (*LOC50).typ);
	}
	break;
	default:
	{
		result = semdirectop_410032(c, n, flags);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, semopaux_442960)(Tcontext244023* c, Tnode190813* n) {
	{
		NI i_442979;
		NI HEX3Atmp_443000;
		NI LOC2;
		NI res_443003;
		i_442979 = 0;
		HEX3Atmp_443000 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_443000 = (NI)(LOC2 - ((NI) 1));
		res_443003 = ((NI) 1);
		{
			while (1) {
				Tnode190813* a;
				if (!(res_443003 <= HEX3Atmp_443000)) goto LA4;
				i_442979 = res_443003;
				a = (*n).kindU.S6.sons->data[i_442979];
				{
					NIM_BOOL LOC7;
					NI LOC9;
					Tlineinfo163338 info;
					Tident167021* LOC12;
					LOC7 = 0;
					LOC7 = ((*a).kind == ((NU8) 33));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = sonslen_193403(a);
					LOC7 = (LOC9 == ((NI) 2));
					LA8: ;
					if (!LOC7) goto LA10;
					info = (*(*a).kindU.S6.sons->data[((NI) 0)]).info;
					LOC12 = 0;
					LOC12 = considerquotedident_249010((*a).kindU.S6.sons->data[((NI) 0)]);
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newidentnode_192313(LOC12, info));
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_409211(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_442979]), semexprwithtype_409211(c, a, 32));
				}
				LA5: ;
				res_443003 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, resolveindirectcall_445045)(Tcontext244023* c, Tnode190813* n, Tnode190813* norig, Ttype190849* t, Tcandidate344209* Result) {
	initcandidate_344276(c, Result, t);
	matches_350449(c, n, norig, Result);
	{
		if (!!(((*Result).state == ((NU8) 1)))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = experimentalmode_245279(c);
			if (!(LOC7)) goto LA8;
			LOC7 = canderef_414851(n);
			LA8: ;
			if (!LOC7) goto LA9;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), tryderef_414884((*n).kindU.S6.sons->data[((NI) 1)]));
			initcandidate_344276(c, Result, t);
			matches_350449(c, n, norig, Result);
		}
		LA9: ;
	}
	LA3: ;
}

N_NIMCALL(Tnode190813*, overloadedcallopr_443019)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tident167021* par;
	result = 0;
	par = getident_167463(((NimStringDesc*) &TMP3104));
	{
		Tsym190843* LOC3;
		LOC3 = 0;
		LOC3 = searchinscopes_249205(c, par);
		if (!(LOC3 == NIM_NIL)) goto LA4;
		result = NIM_NIL;
	}
	goto LA1;
	LA4: ;
	{
		Tnode190813* LOC7;
		result = newnodei_192351(((NU8) 27), (*n).info);
		LOC7 = 0;
		LOC7 = newidentnode_192313(par, (*n).info);
		addson_192819(result, LOC7);
		{
			NI i_443049;
			NI HEX3Atmp_443052;
			NI LOC9;
			NI res_443055;
			i_443049 = 0;
			HEX3Atmp_443052 = 0;
			LOC9 = 0;
			LOC9 = sonslen_193403(n);
			HEX3Atmp_443052 = (NI)(LOC9 - ((NI) 1));
			res_443055 = ((NI) 0);
			{
				while (1) {
					if (!(res_443055 <= HEX3Atmp_443052)) goto LA11;
					i_443049 = res_443055;
					addson_192819(result, (*n).kindU.S6.sons->data[i_443049]);
					res_443055 += ((NI) 1);
				} LA11: ;
			}
		}
		result = semexpr_409201(c, result, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semindirectop_445071)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	Tnode190813* prc;
	Tnode190813* norig;
	Ttype190849* t;
{	result = 0;
	result = NIM_NIL;
	checkminsonslen_245259(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_245249((*n).kindU.S6.sons->data[((NI) 0)], ((NI) 2));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semfieldaccess_440814(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 |= ((NI16)1)<<((((NU8) 10))%(sizeof(NI16)*8));
			{
				NI i_445125;
				NI HEX3Atmp_445329;
				NI LOC10;
				NI res_445332;
				i_445125 = 0;
				HEX3Atmp_445329 = 0;
				LOC10 = 0;
				LOC10 = sonslen_193403(n);
				HEX3Atmp_445329 = (NI)(LOC10 - ((NI) 1));
				res_445332 = ((NI) 1);
				{
					while (1) {
						if (!(res_445332 <= HEX3Atmp_445329)) goto LA12;
						i_445125 = res_445332;
						addson_192819(result, (*n).kindU.S6.sons->data[i_445125]);
						res_445332 += ((NI) 1);
					} LA12: ;
				}
			}
			result = semexpr_409201(c, result, flags);
			goto BeforeRet;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexpr_409201(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
	}
	LA1: ;
	norig = copytree_195028(n);
	semopaux_442960(c, n);
	t = NIM_NIL;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).typ == NIM_NIL))) goto LA16;
		t = skiptypes_194167((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, IL64(211106232576000));
	}
	LA16: ;
	{
		NIM_BOOL LOC20;
		Tcandidate344209 m;
		LOC20 = 0;
		LOC20 = !((t == NIM_NIL));
		if (!(LOC20)) goto LA21;
		LOC20 = ((*t).kind == ((NU8) 25));
		LA21: ;
		if (!LOC20) goto LA22;
		memset((void*)(&m), 0, sizeof(m));
		chckNil((void*)(&m));
		memset((void*)(&m), 0, sizeof(m));
		resolveindirectcall_445045(c, n, norig, t, (&m));
		{
			if (!!((m.state == ((NU8) 1)))) goto LA26;
			{
				if (!(((NI) 0) < (*c).incompilescontext)) goto LA30;
				globalerror_165134((*n).info, ((NU16) 129), ((NimStringDesc*) &TMP2989));
				result = emptynode_191807;
				goto BeforeRet;
			}
			goto LA28;
			LA30: ;
			{
				NIM_BOOL haserrortype;
				NimStringDesc* msg;
				haserrortype = NIM_FALSE;
				msg = msgkindtostring_164616(((NU16) 129));
				{
					NI i_445204;
					NI HEX3Atmp_445338;
					NI LOC34;
					NI res_445341;
					i_445204 = 0;
					HEX3Atmp_445338 = 0;
					LOC34 = 0;
					LOC34 = sonslen_193403(n);
					HEX3Atmp_445338 = (NI)(LOC34 - ((NI) 1));
					res_445341 = ((NI) 1);
					{
						while (1) {
							Ttype190849* nt;
							NimStringDesc* LOC41;
							if (!(res_445341 <= HEX3Atmp_445338)) goto LA36;
							i_445204 = res_445341;
							{
								if (!(((NI) 1) < i_445204)) goto LA39;
								msg = resizeString(msg, 2);
appendString(msg, ((NimStringDesc*) &TMP3357));
							}
							LA39: ;
							nt = (*(*n).kindU.S6.sons->data[i_445204]).typ;
							LOC41 = 0;
							LOC41 = typetostring_220032(nt, ((NU8) 0));
							msg = resizeString(msg, LOC41->Sup.len + 0);
appendString(msg, LOC41);
							{
								if (!((*nt).kind == ((NU8) 50))) goto LA44;
								haserrortype = NIM_TRUE;
								goto LA33;
							}
							LA44: ;
							res_445341 += ((NI) 1);
						} LA36: ;
					}
				} LA33: ;
				{
					NimStringDesc* LOC50;
					NimStringDesc* LOC51;
					NimStringDesc* LOC52;
					if (!!(haserrortype)) goto LA48;
					LOC50 = 0;
					LOC51 = 0;
					LOC51 = msgkindtostring_164616(((NU16) 130));
					LOC52 = 0;
					LOC52 = typetostring_220032((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, ((NU8) 0));
					LOC50 = rawNewString(LOC51->Sup.len + LOC52->Sup.len + 3);
appendString(LOC50, ((NimStringDesc*) &TMP3414));
appendString(LOC50, LOC51);
appendString(LOC50, ((NimStringDesc*) &TMP3359));
appendString(LOC50, LOC52);
					msg = resizeString(msg, LOC50->Sup.len + 0);
appendString(msg, LOC50);
					localerror_165155((*n).info, ((NU16) 4), msg);
				}
				LA48: ;
				result = errornode_245160(c, n);
				goto BeforeRet;
			}
			LA28: ;
			result = NIM_NIL;
		}
		goto LA24;
		LA26: ;
		{
			result = m.call;
			instgenericconverterssons_414212(c, result, (&m));
		}
		LA24: ;
		{
			if (!!((((*t).flags &(1<<((((NU8) 1))&31)))!=0))) goto LA56;
			(*(*(*c).p).owner).flags |= ((NI32)1)<<((((NU8) 11))%(sizeof(NI32)*8));
		}
		LA56: ;
	}
	goto LA18;
	LA22: ;
	{
		NIM_BOOL LOC59;
		LOC59 = 0;
		LOC59 = !((t == NIM_NIL));
		if (!(LOC59)) goto LA60;
		LOC59 = ((*t).kind == ((NU8) 8));
		LA60: ;
		if (!LOC59) goto LA61;
		{
			NI LOC65;
			LOC65 = 0;
			LOC65 = len_191097(n);
			if (!(LOC65 == ((NI) 1))) goto LA66;
			result = semobjconstr_445040(c, n, flags);
			goto BeforeRet;
		}
		LA66: ;
		result = semconv_442510(c, n);
		goto BeforeRet;
	}
	goto LA18;
	LA61: ;
	{
		result = overloadedcallopr_443019(c, n);
		{
			if (!(result == NIM_NIL)) goto LA71;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), prc);
			asgnRefNoCycle((void**) (&(*norig).kindU.S6.sons->data[((NI) 0)]), prc);
			(*n).flags |= ((NI16)1)<<((((NU8) 11))%(sizeof(NI16)*8));
			result = semoverloadedcallanalyseeffects_444900(c, n, norig, flags);
			{
				if (!(result == NIM_NIL)) goto LA75;
				result = errornode_245160(c, n);
				goto BeforeRet;
			}
			LA75: ;
		}
		goto LA69;
		LA71: ;
		{
			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 LA78;
			goto BeforeRet;
		}
		goto LA69;
		LA78: ;
		LA69: ;
	}
	LA18: ;
	fixabstracttype_443407(c, result);
	analyseifaddresstakenincall_443851(c, result);
	{
		NIM_BOOL LOC82;
		LOC82 = 0;
		LOC82 = ((*(*result).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3));
		if (!(LOC82)) goto LA83;
		LOC82 = !(((*(*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic == ((NU16) 0)));
		LA83: ;
		if (!LOC82) goto LA84;
		result = magicsafteroverloadresolution_444353(c, result, flags);
	}
	LA84: ;
	result = evalatcompiletime_444428(c, result);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, setgenericparams_450037)(Tcontext244023* c, Tnode190813* n) {
	{
		NI i_450060;
		NI HEX3Atmp_450062;
		NI LOC2;
		NI res_450065;
		i_450060 = 0;
		HEX3Atmp_450062 = 0;
		LOC2 = 0;
		LOC2 = len_191097(n);
		HEX3Atmp_450062 = (LOC2 - 1);
		res_450065 = ((NI) 1);
		{
			while (1) {
				Tnode190813* LOC5;
				Tnode190813* LOC6;
				if (!(res_450065 <= HEX3Atmp_450062)) goto LA4;
				i_450060 = res_450065;
				LOC5 = 0;
				LOC5 = HEX5BHEX5D_191244(n, i_450060);
				LOC6 = 0;
				LOC6 = HEX5BHEX5D_191244(n, i_450060);
				asgnRefNoCycle((void**) (&(*LOC5).typ), semtypenode_409269(c, LOC6, NIM_NIL));
				res_450065 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode190813*, semsymgenericinstantiation_441019)(Tcontext244023* c, Tnode190813* n, Tsym190843* s) {
	Tnode190813* result;
	result = 0;
	result = symchoice_422316(c, n, s, ((NU8) 0));
	return result;
}

N_NIMCALL(Tnode190813*, explicitgenericsym_414939)(Tcontext244023* c, Tnode190813* n, Tsym190843* s) {
	Tnode190813* result;
	Tcandidate344209 m;
	Tsym190843* newinst;
	result = 0;
	memset((void*)(&m), 0, sizeof(m));
	initcandidate_344301(c, (&m), s, n, ((NI) -1));
	newinst = generateinstance_412450(c, s, m.bindings, (*n).info);
	markused_344251((*n).info, s);
	result = newsymnode_192338(newinst, (*n).info);
	return result;
}

N_NIMCALL(Tnode190813*, explicitgenericinsterror_414932)(Tnode190813* n) {
	Tnode190813* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = rendertree_212058(n, 0);
	localerror_165155((*n).info, ((NU16) 124), LOC1);
	result = n;
	return result;
}

N_NIMCALL(Tnode190813*, explicitgenericinstantiation_415005)(Tcontext244023* c, Tnode190813* n, Tsym190843* s_415009) {
	Tnode190813* result;
	Tsym190843* s;
	Tnode190813* a;
{	result = 0;
	{
		NI i_415211;
		NI HEX3Atmp_415286;
		NI LOC2;
		NI res_415289;
		i_415211 = 0;
		HEX3Atmp_415286 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_415286 = (NI)(LOC2 - ((NI) 1));
		res_415289 = ((NI) 1);
		{
			while (1) {
				if (!(res_415289 <= HEX3Atmp_415286)) goto LA4;
				i_415211 = res_415289;
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_415211]).typ), semtypenode_409269(c, (*n).kindU.S6.sons->data[i_415211], NIM_NIL));
				res_415289 += ((NI) 1);
			} LA4: ;
		}
	}
	s = s_415009;
	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_191125((*(*s).ast).kindU.S6.sons->data[((NI) 2)]);
			LOC12 = 0;
			LOC12 = len_191097(n);
			if (!!((LOC11 == (NI)(LOC12 - ((NI) 1))))) goto LA13;
			expected = safelen_191125((*(*s).ast).kindU.S6.sons->data[((NI) 2)]);
			LOC15 = 0;
			LOC16 = 0;
			LOC16 = rendertree_212058(n, 0);
			LOC17 = 0;
			LOC17 = len_191097(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*) &TMP3415));
appendString(LOC15, LOC16);
appendString(LOC15, ((NimStringDesc*) &TMP3416));
appendString(LOC15, LOC18);
appendString(LOC15, ((NimStringDesc*) &TMP3417));
appendString(LOC15, LOC19);
			localerror_165155((*n).info, ((NU16) 4), LOC15);
			result = n;
			goto BeforeRet;
		}
		LA13: ;
		result = explicitgenericsym_414939(c, n, s);
	}
	goto LA5;
	LA7: ;
	{
		if (!((*a).kind == ((NU8) 56) || (*a).kind == ((NU8) 57))) goto LA21;
		result = newnodei_192351((*a).kind, (*n).info);
		{
			NI i_415256;
			NI HEX3Atmp_415294;
			NI LOC24;
			NI res_415297;
			i_415256 = 0;
			HEX3Atmp_415294 = 0;
			LOC24 = 0;
			LOC24 = len_191097(a);
			HEX3Atmp_415294 = (NI)(LOC24 - ((NI) 1));
			res_415297 = ((NI) 0);
			{
				while (1) {
					Tsym190843* candidate;
					if (!(res_415297 <= HEX3Atmp_415294)) goto LA26;
					i_415256 = res_415297;
					candidate = (*(*a).kindU.S6.sons->data[i_415256]).kindU.S4.sym;
					{
						if (!((126976 &(1<<(((*candidate).kind)&31)))!=0)) goto LA29;
						{
							NI LOC33;
							NI LOC34;
							Tnode190813* LOC37;
							LOC33 = 0;
							LOC33 = safelen_191125((*(*candidate).ast).kindU.S6.sons->data[((NI) 2)]);
							LOC34 = 0;
							LOC34 = len_191097(n);
							if (!(LOC33 == (NI)(LOC34 - ((NI) 1)))) goto LA35;
							LOC37 = 0;
							LOC37 = explicitgenericsym_414939(c, n, candidate);
							add_191164(result, LOC37);
						}
						LA35: ;
					}
					LA29: ;
					res_415297 += ((NI) 1);
				} LA26: ;
			}
		}
		{
			NIM_BOOL LOC40;
			NI LOC41;
			LOC40 = 0;
			LOC41 = 0;
			LOC41 = len_191097(result);
			LOC40 = (LOC41 == ((NI) 1));
			if (!(LOC40)) goto LA42;
			LOC40 = ((*a).kind == ((NU8) 56));
			LA42: ;
			if (!LOC40) goto LA43;
			result = HEX5BHEX5D_191244(result, ((NI) 0));
		}
		LA43: ;
	}
	goto LA5;
	LA21: ;
	{
		result = explicitgenericinsterror_414932(n);
	}
	LA5: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semarrayaccess_446898)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	Tnode190813* oldbracketexpr;
	result = 0;
	oldbracketexpr = (*(*c).p).bracketexpr;
	result = semsubscript_446774(c, n, flags);
	{
		Tident167021* LOC5;
		Tnode190813* LOC6;
		if (!(result == NIM_NIL)) goto LA3;
		LOC5 = 0;
		LOC5 = getident_167463(((NimStringDesc*) &TMP3418));
		LOC6 = 0;
		LOC6 = buildoverloadedsubscripts_446722(n, LOC5);
		result = semexpr_409201(c, LOC6, 0);
	}
	LA3: ;
	asgnRefNoCycle((void**) (&(*(*c).p).bracketexpr), oldbracketexpr);
	return result;
}

N_NIMCALL(NU8, checkpar_448990)(Tnode190813* n) {
	NU8 result;
	NI length;
{	result = 0;
	length = sonslen_193403(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_449027;
			NI HEX3Atmp_449073;
			NI res_449076;
			i_449027 = 0;
			HEX3Atmp_449073 = 0;
			HEX3Atmp_449073 = (NI)(length - ((NI) 1));
			res_449076 = ((NI) 0);
			{
				while (1) {
					if (!(res_449076 <= HEX3Atmp_449073)) goto LA21;
					i_449027 = res_449076;
					{
						if (!(result == ((NU8) 2))) goto LA24;
						{
							NIM_BOOL LOC28;
							LOC28 = 0;
							LOC28 = !(((*(*n).kindU.S6.sons->data[i_449027]).kind == ((NU8) 34)));
							if (LOC28) goto LA29;
							LOC28 = !(((*(*(*n).kindU.S6.sons->data[i_449027]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3) || (*(*(*n).kindU.S6.sons->data[i_449027]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2)));
							LA29: ;
							if (!LOC28) goto LA30;
							localerror_165155((*(*n).kindU.S6.sons->data[i_449027]).info, ((NU16) 170), ((NimStringDesc*) &TMP2989));
							result = ((NU8) 0);
							goto BeforeRet;
						}
						LA30: ;
					}
					goto LA22;
					LA24: ;
					{
						{
							if (!((*(*n).kindU.S6.sons->data[i_449027]).kind == ((NU8) 34))) goto LA35;
							localerror_165155((*(*n).kindU.S6.sons->data[i_449027]).info, ((NU16) 171), ((NimStringDesc*) &TMP2989));
							result = ((NU8) 0);
							goto BeforeRet;
						}
						LA35: ;
					}
					LA22: ;
					res_449076 += ((NI) 1);
				} LA21: ;
			}
		}
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semtuplepositionsconstr_449204)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	Ttype190849* typ;
	result = 0;
	result = n;
	typ = newtypes_244219(((NU8) 18), c);
	{
		NI i_449223;
		NI HEX3Atmp_449241;
		NI LOC2;
		NI res_449244;
		i_449223 = 0;
		HEX3Atmp_449241 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_449241 = (NI)(LOC2 - ((NI) 1));
		res_449244 = ((NI) 0);
		{
			while (1) {
				if (!(res_449244 <= HEX3Atmp_449241)) goto LA4;
				i_449223 = res_449244;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_449223]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[i_449223], (flags & 64)));
				addsonskipintlit_238729(typ, (*(*n).kindU.S6.sons->data[i_449223]).typ);
				res_449244 += ((NI) 1);
			} LA4: ;
		}
	}
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_NIMCALL(NIM_BOOL, istupletype_449260)(Tnode190813* n) {
	NIM_BOOL result;
{	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_191097(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA4: ;
	{
		NI i_449278;
		NI HEX3Atmp_449301;
		NI LOC7;
		NI res_449304;
		i_449278 = 0;
		HEX3Atmp_449301 = 0;
		LOC7 = 0;
		LOC7 = len_191097(n);
		HEX3Atmp_449301 = (NI)(LOC7 - ((NI) 1));
		res_449304 = ((NI) 0);
		{
			while (1) {
				if (!(res_449304 <= HEX3Atmp_449301)) goto LA9;
				i_449278 = res_449304;
				{
					NIM_BOOL LOC12;
					Tnode190813* LOC13;
					Tnode190813* LOC15;
					LOC12 = 0;
					LOC13 = 0;
					LOC13 = HEX5BHEX5D_191244(n, i_449278);
					LOC12 = ((*LOC13).typ == NIM_NIL);
					if (LOC12) goto LA14;
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_191244(n, i_449278);
					LOC12 = !(((*(*LOC15).typ).kind == ((NU8) 8)));
					LA14: ;
					if (!LOC12) goto LA16;
					result = NIM_FALSE;
					goto BeforeRet;
				}
				LA16: ;
				res_449304 += ((NI) 1);
			} LA9: ;
		}
	}
	result = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semtuplefieldsconstr_449092)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	Ttype190849* typ;
	Intset187056 ids;
	result = 0;
	result = newnodei_192351(((NU8) 37), (*n).info);
	typ = newtypes_244219(((NU8) 18), c);
	asgnRefNoCycle((void**) (&(*typ).n), newnodei_192351(((NU8) 138), (*n).info));
	memset((void*)(&ids), 0, sizeof(ids));
	chckNil((void*)(&ids));
	memset((void*)(&ids), 0, sizeof(ids));
	initintset_187927((&ids));
	{
		NI i_449112;
		NI HEX3Atmp_449185;
		NI LOC2;
		NI res_449188;
		i_449112 = 0;
		HEX3Atmp_449185 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_449185 = (NI)(LOC2 - ((NI) 1));
		res_449188 = ((NI) 0);
		{
			while (1) {
				Tident167021* id;
				Tsym190843* f;
				Tnode190813* LOC24;
				if (!(res_449188 <= HEX3Atmp_449185)) goto LA4;
				i_449112 = res_449188;
				{
					NIM_BOOL LOC7;
					Tnode190813* LOC8;
					Tnode190813* LOC10;
					Tnode190813* LOC11;
					LOC7 = 0;
					LOC8 = 0;
					LOC8 = HEX5BHEX5D_191244(n, i_449112);
					LOC7 = !(((*LOC8).kind == ((NU8) 34)));
					if (LOC7) goto LA9;
					LOC10 = 0;
					LOC10 = HEX5BHEX5D_191244(n, i_449112);
					LOC11 = 0;
					LOC11 = HEX5BHEX5D_191244(LOC10, ((NI) 0));
					LOC7 = !(((*LOC11).kind == ((NU8) 3) || (*LOC11).kind == ((NU8) 2)));
					LA9: ;
					if (!LOC7) goto LA12;
					illformedast_245229((*n).kindU.S6.sons->data[i_449112]);
				}
				LA12: ;
				id = 0;
				{
					if (!((*(*(*n).kindU.S6.sons->data[i_449112]).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2))) goto LA16;
					id = (*(*(*n).kindU.S6.sons->data[i_449112]).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident;
				}
				goto LA14;
				LA16: ;
				{
					id = (*(*(*(*n).kindU.S6.sons->data[i_449112]).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).name;
				}
				LA14: ;
				{
					NIM_BOOL LOC21;
					LOC21 = 0;
					LOC21 = containsorincl_187898((&ids), (*id).Sup.id);
					if (!LOC21) goto LA22;
					localerror_165155((*(*n).kindU.S6.sons->data[i_449112]).info, ((NU16) 86), (*id).s);
				}
				LA22: ;
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_449112]).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_409211(c, (*(*n).kindU.S6.sons->data[i_449112]).kindU.S6.sons->data[((NI) 1)], (flags & 64)));
				f = newsyms_409904(((NU8) 19), (*(*n).kindU.S6.sons->data[i_449112]).kindU.S6.sons->data[((NI) 0)], c);
				asgnRefNoCycle((void**) (&(*f).typ), skipintlit_238696((*(*(*n).kindU.S6.sons->data[i_449112]).kindU.S6.sons->data[((NI) 1)]).typ));
				(*f).position = i_449112;
				rawaddson_194478(typ, (*f).typ);
				LOC24 = 0;
				LOC24 = newsymnode_192325(f);
				addson_192819((*typ).n, LOC24);
				asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_449112]).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(f));
				addson_192819(result, (*n).kindU.S6.sons->data[i_449112]);
				res_449188 += ((NI) 1);
			} LA4: ;
		}
	}
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_NIMCALL(Tnode190813*, semsetconstr_448734)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = newnodei_192351(((NU8) 39), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), newtypes_244219(((NU8) 19), c));
	{
		NI LOC3;
		Ttype190849* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		LOC6 = 0;
		LOC6 = newtypes_244219(((NU8) 3), c);
		rawaddson_194478((*result).typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		Ttype190849* typ;
		typ = NIM_NIL;
		{
			NI i_448752;
			NI HEX3Atmp_448858;
			NI LOC9;
			NI res_448861;
			i_448752 = 0;
			HEX3Atmp_448858 = 0;
			LOC9 = 0;
			LOC9 = sonslen_193403(n);
			HEX3Atmp_448858 = (NI)(LOC9 - ((NI) 1));
			res_448861 = ((NI) 0);
			{
				while (1) {
					if (!(res_448861 <= HEX3Atmp_448858)) goto LA11;
					i_448752 = res_448861;
					{
						NIM_BOOL LOC14;
						LOC14 = 0;
						LOC14 = isrange_219612((*n).kindU.S6.sons->data[i_448752]);
						if (!LOC14) goto LA15;
						checksonslen_245249((*n).kindU.S6.sons->data[i_448752], ((NI) 3));
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_448752]).kindU.S6.sons->data[((NI) 1)]), semexprwithtype_409211(c, (*(*n).kindU.S6.sons->data[i_448752]).kindU.S6.sons->data[((NI) 1)], 0));
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_448752]).kindU.S6.sons->data[((NI) 2)]), semexprwithtype_409211(c, (*(*n).kindU.S6.sons->data[i_448752]).kindU.S6.sons->data[((NI) 2)], 0));
						{
							if (!(typ == NIM_NIL)) goto LA19;
							typ = skiptypes_194167((*(*(*n).kindU.S6.sons->data[i_448752]).kindU.S6.sons->data[((NI) 1)]).typ, 8423424);
						}
						LA19: ;
						asgnRefNoCycle((void**) (&(*(*n).kindU.S6.sons->data[i_448752]).typ), (*(*(*n).kindU.S6.sons->data[i_448752]).kindU.S6.sons->data[((NI) 2)]).typ);
					}
					goto LA12;
					LA15: ;
					{
						if (!((*(*n).kindU.S6.sons->data[i_448752]).kind == ((NU8) 44))) goto LA22;
						{
							if (!(typ == NIM_NIL)) goto LA26;
							typ = skiptypes_194167((*(*(*n).kindU.S6.sons->data[i_448752]).kindU.S6.sons->data[((NI) 0)]).typ, 8423424);
						}
						LA26: ;
					}
					goto LA12;
					LA22: ;
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_448752]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[i_448752], 0));
						{
							if (!(typ == NIM_NIL)) goto LA31;
							typ = skiptypes_194167((*(*n).kindU.S6.sons->data[i_448752]).typ, 8423424);
						}
						LA31: ;
					}
					LA12: ;
					res_448861 += ((NI) 1);
				} LA11: ;
			}
		}
		{
			NIM_BOOL LOC35;
			Ttype190849* LOC38;
			LOC35 = 0;
			LOC35 = isordinaltype_220093(typ);
			if (!!(LOC35)) goto LA36;
			localerror_165155((*n).info, ((NU16) 74), ((NimStringDesc*) &TMP2989));
			LOC38 = 0;
			LOC38 = getsystype_238030(((NU8) 31));
			typ = makerangetype_245182(c, IL64(0), IL64(65535), (*n).info, LOC38);
		}
		goto LA33;
		LA36: ;
		{
			NI64 LOC40;
			Ttype190849* LOC43;
			LOC40 = 0;
			LOC40 = lengthord_220016(typ);
			if (!(IL64(65536) < LOC40)) goto LA41;
			LOC43 = 0;
			LOC43 = getsystype_238030(((NU8) 31));
			typ = makerangetype_245182(c, IL64(0), IL64(65535), (*n).info, LOC43);
		}
		goto LA33;
		LA41: ;
		LA33: ;
		addsonskipintlit_238729((*result).typ, typ);
		{
			NI i_448836;
			NI HEX3Atmp_448867;
			NI LOC45;
			NI res_448870;
			i_448836 = 0;
			HEX3Atmp_448867 = 0;
			LOC45 = 0;
			LOC45 = sonslen_193403(n);
			HEX3Atmp_448867 = (NI)(LOC45 - ((NI) 1));
			res_448870 = ((NI) 0);
			{
				while (1) {
					Tnode190813* m;
					if (!(res_448870 <= HEX3Atmp_448867)) goto LA47;
					i_448836 = res_448870;
					m = 0;
					{
						NIM_BOOL LOC50;
						Tnode190813* LOC53;
						Tnode190813* LOC54;
						LOC50 = 0;
						LOC50 = isrange_219612((*n).kindU.S6.sons->data[i_448836]);
						if (!LOC50) goto LA51;
						m = newnodei_192351(((NU8) 44), (*(*n).kindU.S6.sons->data[i_448836]).info);
						LOC53 = 0;
						LOC53 = fitnode_409245(c, typ, (*(*n).kindU.S6.sons->data[i_448836]).kindU.S6.sons->data[((NI) 1)]);
						addson_192819(m, LOC53);
						LOC54 = 0;
						LOC54 = fitnode_409245(c, typ, (*(*n).kindU.S6.sons->data[i_448836]).kindU.S6.sons->data[((NI) 2)]);
						addson_192819(m, LOC54);
					}
					goto LA48;
					LA51: ;
					{
						if (!((*(*n).kindU.S6.sons->data[i_448836]).kind == ((NU8) 44))) goto LA56;
						m = (*n).kindU.S6.sons->data[i_448836];
					}
					goto LA48;
					LA56: ;
					{
						m = fitnode_409245(c, typ, (*n).kindU.S6.sons->data[i_448836]);
					}
					LA48: ;
					addson_192819(result, m);
					res_448870 += ((NI) 1);
				} LA47: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(Ttype190849*, commontype_409477)(Ttype190849* x, Ttype190849* y) {
	Ttype190849* result;
	Ttype190849* a;
	Ttype190849* 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_194167(x, 2048);
	b = skiptypes_194167(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_229739((*a).sons, NIM_NIL);
			if (!LOC27) goto LA28;
			result = a;
		}
		goto LA25;
		LA28: ;
		{
			Ttype190849* LOC31;
			result = newtype_193140(((NU8) 8), (*a).owner);
			LOC31 = 0;
			LOC31 = newtype_193140(((NU8) 0), (*a).owner);
			rawaddson_194478(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;
		Ttype190849* 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_193377(a);
		LOC47 = 0;
		LOC47 = len_193377(b);
		LOC42 = (LOC46 == LOC47);
		LA45: ;
		if (!LOC42) goto LA48;
		nt = 0;
		{
			NI i_409657;
			NI HEX3Atmp_409882;
			NI LOC51;
			NI res_409885;
			i_409657 = 0;
			HEX3Atmp_409882 = 0;
			LOC51 = 0;
			LOC51 = len_193377(a);
			HEX3Atmp_409882 = (LOC51 - 1);
			res_409885 = ((NI) 0);
			{
				while (1) {
					NIM_BOOL aempty;
					NIM_BOOL bempty;
					if (!(res_409885 <= HEX3Atmp_409882)) goto LA53;
					i_409657 = res_409885;
					aempty = isemptycontainer_229978((*a).sons->data[i_409657]);
					bempty = isemptycontainer_229978((*b).sons->data[i_409657]);
					{
						if (!!((aempty == bempty))) goto LA56;
						{
							if (!nt == 0) goto LA60;
							nt = copytype_193549(a, (*a).owner, NIM_FALSE);
						}
						LA60: ;
						{
							if (!aempty) goto LA64;
							asgnRefNoCycle((void**) (&(*nt).sons->data[i_409657]), (*b).sons->data[i_409657]);
						}
						goto LA62;
						LA64: ;
						{
							asgnRefNoCycle((void**) (&(*nt).sons->data[i_409657]), (*a).sons->data[i_409657]);
						}
						LA62: ;
					}
					LA56: ;
					res_409885 += ((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;
			Ttype190849* LOC81;
			LOC78 = 0;
			LOC78 = sametype_225092(a, b, 0);
			if (!!(LOC78)) goto LA79;
			LOC81 = 0;
			LOC81 = skiptypes_194167(a, 1048576);
			result = skipintlit_238696(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_193442(a);
			b = lastson_193442(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_227468(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: ;
			{
				Ttype190849* r;
				if (!!((k == ((NU8) 0)))) goto LA109;
				r = result;
				result = newtype_193140(k, (*r).owner);
				addsonskipintlit_238729(result, r);
			}
			LA109: ;
		}
		LA95: ;
	}
	LA9: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semarrayconstr_443273)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	NI LOC35;
	Ttype190849* LOC36;
	result = 0;
	result = newnodei_192351(((NU8) 41), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), newtypes_244219(((NU8) 4), c));
	rawaddson_194478((*result).typ, NIM_NIL);
	{
		NI LOC3;
		Ttype190849* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_193403(n);
		if (!(LOC3 == ((NI) 0))) goto LA4;
		LOC6 = 0;
		LOC6 = newtypes_244219(((NU8) 3), c);
		rawaddson_194478((*result).typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		Tnode190813* x;
		NI64 lastindex;
		Ttype190849* indextype;
		Tnode190813* yy;
		Ttype190849* typ;
		x = (*n).kindU.S6.sons->data[((NI) 0)];
		lastindex = IL64(0);
		indextype = getsystype_238030(((NU8) 31));
		{
			NIM_BOOL LOC10;
			NI LOC12;
			Tnode190813* idx;
			LOC10 = 0;
			LOC10 = ((*x).kind == ((NU8) 34));
			if (!(LOC10)) goto LA11;
			LOC12 = 0;
			LOC12 = sonslen_193403(x);
			LOC10 = (LOC12 == ((NI) 2));
			LA11: ;
			if (!LOC10) goto LA13;
			idx = semconstexpr_410485(c, (*x).kindU.S6.sons->data[((NI) 0)]);
			lastindex = getordvalue_220178(idx);
			indextype = (*idx).typ;
			x = (*x).kindU.S6.sons->data[((NI) 1)];
		}
		LA13: ;
		yy = semexprwithtype_409211(c, x, 0);
		typ = (*yy).typ;
		addson_192819(result, yy);
		{
			NI i_443309;
			NI HEX3Atmp_443371;
			NI LOC16;
			NI res_443374;
			i_443309 = 0;
			HEX3Atmp_443371 = 0;
			LOC16 = 0;
			LOC16 = sonslen_193403(n);
			HEX3Atmp_443371 = (NI)(LOC16 - ((NI) 1));
			res_443374 = ((NI) 1);
			{
				while (1) {
					Tnode190813* xx;
					if (!(res_443374 <= HEX3Atmp_443371)) goto LA18;
					i_443309 = res_443374;
					x = (*n).kindU.S6.sons->data[i_443309];
					{
						NIM_BOOL LOC21;
						NI LOC23;
						Tnode190813* idx;
						LOC21 = 0;
						LOC21 = ((*x).kind == ((NU8) 34));
						if (!(LOC21)) goto LA22;
						LOC23 = 0;
						LOC23 = sonslen_193403(x);
						LOC21 = (LOC23 == ((NI) 2));
						LA22: ;
						if (!LOC21) goto LA24;
						idx = semconstexpr_410485(c, (*x).kindU.S6.sons->data[((NI) 0)]);
						idx = fitnode_409245(c, indextype, idx);
						{
							NI64 LOC28;
							LOC28 = 0;
							LOC28 = getordvalue_220178(idx);
							if (!!(((NI64)(lastindex + IL64(1)) == LOC28))) goto LA29;
							localerror_165155((*x).info, ((NU16) 144), ((NimStringDesc*) &TMP2989));
						}
						LA29: ;
						x = (*x).kindU.S6.sons->data[((NI) 1)];
					}
					LA24: ;
					xx = semexprwithtype_409211(c, x, (flags & 64));
					add_191164(result, xx);
					typ = commontype_409477(typ, (*xx).typ);
					lastindex += ((NI) 1);
					res_443374 += ((NI) 1);
				} LA18: ;
			}
		}
		addsonskipintlit_238729((*result).typ, typ);
		{
			NI i_443366;
			NI HEX3Atmp_443379;
			NI LOC32;
			NI res_443382;
			i_443366 = 0;
			HEX3Atmp_443379 = 0;
			LOC32 = 0;
			LOC32 = len_191097(result);
			HEX3Atmp_443379 = (LOC32 - 1);
			res_443382 = ((NI) 0);
			{
				while (1) {
					if (!(res_443382 <= HEX3Atmp_443379)) goto LA34;
					i_443366 = res_443382;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_443366]), fitnode_409245(c, typ, (*result).kindU.S6.sons->data[i_443366]));
					res_443382 += ((NI) 1);
				} LA34: ;
			}
		}
	}
	LA1: ;
	LOC35 = 0;
	LOC35 = sonslen_193403(result);
	LOC36 = 0;
	LOC36 = getsystype_238030(((NU8) 31));
	asgnRefNoCycle((void**) (&(*(*result).typ).sons->data[((NI) 0)]), makerangetype_245182(c, IL64(0), ((NI64) ((NI)(LOC35 - ((NI) 1)))), (*n).info, LOC36));
	return result;
}

N_NIMCALL(Tnode190813*, semlambda_409261)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	Tsym190843* s;
	Tscope190837* LOC13;
	Tnode190813* gp;
{	result = 0;
	result = semprocannotation_438127(c, n, TMP3421);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = n;
	checksonslen_245249(n, ((NI) 7));
	s = 0;
	{
		Tnode190813* LOC7;
		Tsym190843* LOC10;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_191244(n, ((NI) 0));
		if (!!(((*LOC7).kind == ((NU8) 3)))) goto LA8;
		LOC10 = 0;
		LOC10 = getcurrowner_244256();
		s = newsym_191656(((NU8) 12), idanon_167495, LOC10, (*n).info);
		asgnRefNoCycle((void**) (&(*s).ast), n);
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(s));
	}
	goto LA5;
	LA8: ;
	{
		Tnode190813* LOC12;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_191244(n, ((NI) 0));
		s = (*LOC12).kindU.S4.sym;
	}
	LA5: ;
	pushowner_244261(s);
	LOC13 = 0;
	LOC13 = openscope_249091(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_421951(c, (*n).kindU.S6.sons->data[((NI) 2)], NIM_NIL));
		gp = (*n).kindU.S6.sons->data[((NI) 2)];
	}
	goto LA14;
	LA16: ;
	{
		gp = newnodei_192351(((NU8) 75), (*n).info);
	}
	LA14: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 3)]).kind == ((NU8) 1)))) goto LA21;
		semparamlist_409284(c, (*n).kindU.S6.sons->data[((NI) 3)], gp, s);
		{
			NIM_BOOL LOC25;
			NI LOC26;
			LOC25 = 0;
			LOC26 = 0;
			LOC26 = sonslen_193403(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_420342(c, (*n).info, NIM_NIL));
	}
	LA19: ;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 4)]).kind == ((NU8) 1)))) goto LA33;
		pragma_260069(c, s, (*n).kindU.S6.sons->data[((NI) 4)], TMP3421);
	}
	LA33: ;
	(*s).options = goptions_154126;
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1)))) goto LA37;
		{
			if (!(((*s).flags &(1<<((((NU8) 5))&31)))!=0)) goto LA41;
			localerror_165155((*(*n).kindU.S6.sons->data[((NI) 6)]).info, ((NU16) 137), (*(*s).name).s);
		}
		LA41: ;
		{
			NIM_BOOL LOC45;
			NI LOC46;
			NIM_BOOL LOC48;
			NI LOC49;
			Tnode190813* LOC51;
			Tnode190813* sembody;
			Tnode190813* LOC54;
			LOC45 = 0;
			LOC46 = 0;
			LOC46 = len_191097(gp);
			LOC45 = (LOC46 == ((NI) 0));
			if (LOC45) goto LA47;
			LOC48 = 0;
			LOC49 = 0;
			LOC49 = len_191097(gp);
			LOC48 = (LOC49 == ((NI) 1));
			if (!(LOC48)) goto LA50;
			LOC51 = 0;
			LOC51 = HEX5BHEX5D_191244(gp, ((NI) 0));
			LOC48 = (((*(*LOC51).typ).flags &(1<<((((NU8) 10))&31)))!=0);
			LA50: ;
			LOC45 = LOC48;
			LA47: ;
			if (!LOC45) goto LA52;
			pushproccon_244359(c, s);
			addresult_437997(c, (*(*s).typ).sons->data[((NI) 0)], (*n).info, ((NU8) 12));
			addresultnode_438031(c, n);
			LOC54 = 0;
			LOC54 = semprocbody_409238(c, (*n).kindU.S6.sons->data[((NI) 6)]);
			sembody = hlobody_411161(c, LOC54);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_370118((*c).module, sembody, s));
			popproccon_244391(c);
		}
		goto LA43;
		LA52: ;
		{
			if (!!(((flags &(1<<((((NU8) 8))&15)))!=0))) goto LA56;
			localerror_165155((*n).info, ((NU16) 227), ((NimStringDesc*) &TMP2989));
		}
		goto LA43;
		LA56: ;
		LA43: ;
		sideeffectscheck_412116(c, s);
	}
	goto LA35;
	LA37: ;
	{
		localerror_165155((*n).info, ((NU16) 138), (*(*s).name).s);
	}
	LA35: ;
	closescope_249111(c);
	popowner_244267();
	asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semdo_438430)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode190813* LOC4;
		Tnode190813* LOC6;
		Tnode190813* LOC9;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_191244(n, ((NI) 2));
		LOC3 = ((*LOC4).kind == ((NU8) 1));
		if (!(LOC3)) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_191244(n, ((NI) 3));
		LOC3 = ((*LOC6).kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_191244(n, ((NI) 6));
		result = semstmt_409277(c, LOC9);
	}
	goto LA1;
	LA7: ;
	{
		result = semlambda_409261(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, iscastable_442383)(Ttype190849* dst, Ttype190849* src) {
	NIM_BOOL result;
	NI64 dstsize;
	NI64 srcsize;
{	result = 0;
	{
		Ttype190849* LOC3;
		LOC3 = 0;
		LOC3 = skiptypes_194167(dst, IL64(211106232576256));
		if (!((*LOC3).kind == ((NU8) 27))) goto LA4;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA4: ;
	dstsize = 0;
	srcsize = 0;
	dstsize = computesize_220184(dst);
	srcsize = computesize_220184(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: ;
	{
		Ttype190849* LOC14;
		LOC14 = 0;
		LOC14 = typeallowed_228654(dst, ((NU8) 3));
		if (!!((LOC14 == NIM_NIL))) goto LA15;
		result = NIM_FALSE;
	}
	goto LA6;
	LA15: ;
	{
		NIM_BOOL LOC18;
		NIM_BOOL LOC19;
		Ttype190849* LOC21;
		Ttype190849* LOC23;
		LOC18 = 0;
		LOC19 = 0;
		LOC19 = (srcsize <= dstsize);
		if (LOC19) goto LA20;
		LOC21 = 0;
		LOC21 = skiptypes_194167(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_194167(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_159625)));
	}
	LA28: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semcast_442625)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* LOC5;
	Tnode190813* LOC6;
	result = 0;
	{
		if (!((gglobaloptions_154128 &(1<<((((NU8) 6))&31)))!=0)) goto LA3;
		localerror_165155((*n).info, ((NU16) 91), ((NimStringDesc*) &TMP2989));
	}
	LA3: ;
	checksonslen_245249(n, ((NI) 2));
	result = newnodei_192351(((NU8) 61), (*n).info);
	asgnRefNoCycle((void**) (&(*result).typ), semtypenode_409269(c, (*n).kindU.S6.sons->data[((NI) 0)], NIM_NIL));
	LOC5 = 0;
	LOC5 = copytree_195028((*n).kindU.S6.sons->data[((NI) 0)]);
	addson_192819(result, LOC5);
	LOC6 = 0;
	LOC6 = semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	addson_192819(result, LOC6);
	{
		NIM_BOOL LOC9;
		NimStringDesc* LOC12;
		LOC9 = 0;
		LOC9 = iscastable_442383((*result).typ, (*(*result).kindU.S6.sons->data[((NI) 1)]).typ);
		if (!!(LOC9)) goto LA10;
		LOC12 = 0;
		LOC12 = typetostring_220032((*result).typ, ((NU8) 0));
		localerror_165155((*result).info, ((NU16) 92), LOC12);
	}
	LA10: ;
	return result;
}

static N_INLINE(void, semdestructorcheck_432440)(Tcontext244023* c, Tnode190813* 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;
		{
			Ttype190849* LOC9;
			LOC9 = 0;
			LOC9 = instantiatedestructor_431423(c, (*n).typ);
			if (!!((LOC9 == NIM_NIL))) goto LA10;
			localerror_165155((*n).info, ((NU16) 257), ((NimStringDesc*) &TMP2989));
		}
		LA10: ;
	}
	LA5: ;
}

N_NIMCALL(Tnode190813*, semexprbranch_432604)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = semexpr_409201(c, n, 0);
	{
		if (!!(((*result).typ == NIM_NIL))) goto LA3;
		semprocvarcheck_431366(c, result);
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA7;
			result = newderef_357024(result);
		}
		LA7: ;
		semdestructorcheck_432440(c, result, 0);
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode190813*, semexprbranchscope_432635)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tscope190837* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	result = semexprbranch_432604(c, n);
	closescope_249111(c);
	return result;
}

N_NIMCALL(Tnode190813*, semif_432860)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Ttype190849* typ;
	NIM_BOOL haselse;
	result = 0;
	result = n;
	typ = commontypebegin_409472;
	haselse = NIM_FALSE;
	{
		NI i_432879;
		NI HEX3Atmp_433236;
		NI LOC2;
		NI res_433239;
		i_432879 = 0;
		HEX3Atmp_433236 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_433236 = (NI)(LOC2 - ((NI) 1));
		res_433239 = ((NI) 0);
		{
			while (1) {
				Tnode190813* it;
				if (!(res_433239 <= HEX3Atmp_433236)) goto LA4;
				i_432879 = res_433239;
				it = (*n).kindU.S6.sons->data[i_432879];
				{
					NI LOC7;
					Tscope190837* LOC10;
					Tnode190813* LOC11;
					LOC7 = 0;
					LOC7 = len_191097(it);
					if (!(LOC7 == ((NI) 2))) goto LA8;
					LOC10 = 0;
					LOC10 = openscope_249091(c);
					LOC11 = 0;
					LOC11 = semexprwithtype_409211(c, (*it).kindU.S6.sons->data[((NI) 0)], 0);
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), forcebool_415629(c, LOC11));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 1)]), semexprbranch_432604(c, (*it).kindU.S6.sons->data[((NI) 1)]));
					typ = commontype_409477(typ, (*(*it).kindU.S6.sons->data[((NI) 1)]).typ);
					closescope_249111(c);
				}
				goto LA5;
				LA8: ;
				{
					NI LOC13;
					LOC13 = 0;
					LOC13 = len_191097(it);
					if (!(LOC13 == ((NI) 1))) goto LA14;
					haselse = NIM_TRUE;
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_432635(c, (*it).kindU.S6.sons->data[((NI) 0)]));
					typ = commontype_409477(typ, (*(*it).kindU.S6.sons->data[((NI) 0)]).typ);
				}
				goto LA5;
				LA14: ;
				{
					illformedast_245229(it);
				}
				LA5: ;
				res_433239 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NIM_BOOL LOC19;
		NIM_BOOL LOC20;
		LOC19 = 0;
		LOC20 = 0;
		LOC20 = isemptytype_195933(typ);
		if (LOC20) goto LA21;
		LOC20 = ((*typ).kind == ((NU8) 5));
		LA21: ;
		LOC19 = LOC20;
		if (LOC19) goto LA22;
		LOC19 = !(haselse);
		LA22: ;
		if (!LOC19) goto LA23;
		{
			Tnode190813* it_433217;
			it_433217 = 0;
			{
				NI i_433247;
				NI HEX3Atmp_433249;
				NI LOC27;
				NI res_433251;
				i_433247 = 0;
				HEX3Atmp_433249 = 0;
				LOC27 = 0;
				LOC27 = len_191097(n);
				HEX3Atmp_433249 = (LOC27 - 1);
				res_433251 = ((NI) 0);
				{
					while (1) {
						Tnode190813* LOC30;
						if (!(res_433251 <= HEX3Atmp_433249)) goto LA29;
						i_433247 = res_433251;
						it_433217 = (*n).kindU.S6.sons->data[i_433247];
						LOC30 = 0;
						LOC30 = lastson_193431(it_433217);
						discardcheck_432756(c, LOC30);
						res_433251 += ((NI) 1);
					} LA29: ;
				}
			}
		}
		(*result).kind = ((NU8) 92);
		{
			if (!(typ == enforcevoidcontext_431005)) goto LA33;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_431005);
		}
		LA33: ;
	}
	goto LA17;
	LA23: ;
	{
		{
			Tnode190813* it_433230;
			it_433230 = 0;
			{
				NI i_433258;
				NI HEX3Atmp_433260;
				NI LOC38;
				NI res_433262;
				i_433258 = 0;
				HEX3Atmp_433260 = 0;
				LOC38 = 0;
				LOC38 = len_191097(n);
				HEX3Atmp_433260 = (LOC38 - 1);
				res_433262 = ((NI) 0);
				{
					while (1) {
						NI j;
						NI LOC41;
						if (!(res_433262 <= HEX3Atmp_433260)) goto LA40;
						i_433258 = res_433262;
						it_433230 = (*n).kindU.S6.sons->data[i_433258];
						LOC41 = 0;
						LOC41 = len_191097(it_433230);
						j = (NI)(LOC41 - ((NI) 1));
						asgnRefNoCycle((void**) (&(*it_433230).kindU.S6.sons->data[j]), fitnode_409245(c, typ, (*it_433230).kindU.S6.sons->data[j]));
						res_433262 += ((NI) 1);
					} LA40: ;
				}
			}
		}
		(*result).kind = ((NU8) 48);
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA17: ;
	return result;
}

N_NIMCALL(Tnode190813*, semtableconstr_448895)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	NI lastkey;
	result = 0;
	result = newnodei_192351(((NU8) 41), (*n).info);
	lastkey = ((NI) 0);
	{
		NI i_448912;
		NI HEX3Atmp_448956;
		NI LOC2;
		NI res_448959;
		i_448912 = 0;
		HEX3Atmp_448956 = 0;
		LOC2 = 0;
		LOC2 = len_191097(n);
		HEX3Atmp_448956 = (NI)(LOC2 - ((NI) 1));
		res_448959 = ((NI) 0);
		{
			while (1) {
				Tnode190813* x;
				if (!(res_448959 <= HEX3Atmp_448956)) goto LA4;
				i_448912 = res_448959;
				x = (*n).kindU.S6.sons->data[i_448912];
				{
					NIM_BOOL LOC7;
					NI LOC9;
					Tnode190813* pair;
					Tnode190813* LOC16;
					Tnode190813* LOC17;
					LOC7 = 0;
					LOC7 = ((*x).kind == ((NU8) 34));
					if (!(LOC7)) goto LA8;
					LOC9 = 0;
					LOC9 = sonslen_193403(x);
					LOC7 = (LOC9 == ((NI) 2));
					LA8: ;
					if (!LOC7) goto LA10;
					{
						NI j_448936;
						NI HEX3Atmp_448949;
						NI res_448952;
						j_448936 = 0;
						HEX3Atmp_448949 = 0;
						HEX3Atmp_448949 = (NI)(i_448912 - ((NI) 1));
						res_448952 = lastkey;
						{
							while (1) {
								Tnode190813* pair;
								Tnode190813* LOC15;
								if (!(res_448952 <= HEX3Atmp_448949)) goto LA14;
								j_448936 = res_448952;
								pair = newnodei_192351(((NU8) 37), (*x).info);
								add_191164(pair, (*n).kindU.S6.sons->data[j_448936]);
								LOC15 = 0;
								LOC15 = HEX5BHEX5D_191244(x, ((NI) 1));
								add_191164(pair, LOC15);
								add_191164(result, pair);
								res_448952 += ((NI) 1);
							} LA14: ;
						}
					}
					pair = newnodei_192351(((NU8) 37), (*x).info);
					LOC16 = 0;
					LOC16 = HEX5BHEX5D_191244(x, ((NI) 0));
					add_191164(pair, LOC16);
					LOC17 = 0;
					LOC17 = HEX5BHEX5D_191244(x, ((NI) 1));
					add_191164(pair, LOC17);
					add_191164(result, pair);
					lastkey = (NI)(i_448912 + ((NI) 1));
				}
				LA10: ;
				res_448959 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NI LOC20;
		LOC20 = 0;
		LOC20 = len_191097(n);
		if (!!((lastkey == LOC20))) goto LA21;
		illformedast_245229(n);
	}
	LA21: ;
	result = semexpr_409201(c, result, 0);
	return result;
}

N_NIMCALL(Tnode190813*, semstaticexpr_444881)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* a;
	result = 0;
	a = semexpr_409201(c, (*n).kindU.S6.sons->data[((NI) 0)], 0);
	result = evalstaticexpr_397832((*c).module, a, (*(*c).p).owner);
	{
		NimStringDesc* LOC5;
		if (!result == 0) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_212058(n, 0);
		localerror_165155((*n).info, ((NU16) 208), LOC5);
		result = emptynode_191807;
	}
	goto LA1;
	LA3: ;
	{
		result = fixuptypeaftereval_410201(c, result, a);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semblock_449650)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tscope190837* LOC1;
	result = 0;
	result = n;
	(*(*c).p).nestedblockcounter += ((NI) 1);
	checksonslen_245249(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	{
		Tsym190843* labl;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA4;
		labl = newsymg_409916(((NU8) 22), (*n).kindU.S6.sons->data[((NI) 0)], c);
		{
			if (!!((((*labl).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA8;
			adddecl_249607(c, labl);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_192338(labl, (*(*n).kindU.S6.sons->data[((NI) 0)]).info));
		}
		LA8: ;
		suggestsym_353960((*(*n).kindU.S6.sons->data[((NI) 0)]).info, labl);
	}
	LA4: ;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semexpr_409201(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_195933((*n).typ);
		if (!LOC12) goto LA13;
		(*n).kind = ((NU8) 112);
	}
	goto LA10;
	LA13: ;
	{
		(*n).kind = ((NU8) 127);
	}
	LA10: ;
	closescope_249111(c);
	(*(*c).p).nestedblockcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Tnode190813*, semtry_433715)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Ttype190849* typ_433729;
	Intset187056 check;
	NI last;
	NI LOC1;
	result = 0;
	result = n;
	(*(*c).p).intrystmt += ((NI) 1);
	checkminsonslen_245259(n, ((NI) 2));
	typ_433729 = commontypebegin_409472;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_432635(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	typ_433729 = commontype_409477(typ_433729, (*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
	memset((void*)(&check), 0, sizeof(check));
	chckNil((void*)(&check));
	memset((void*)(&check), 0, sizeof(check));
	initintset_187927((&check));
	LOC1 = 0;
	LOC1 = sonslen_193403(n);
	last = (NI)(LOC1 - ((NI) 1));
	{
		NI i_433747;
		NI res_433955;
		i_433747 = 0;
		res_433955 = ((NI) 1);
		{
			while (1) {
				Tnode190813* a;
				NI length;
				if (!(res_433955 <= last)) goto LA4;
				i_433747 = res_433955;
				a = (*n).kindU.S6.sons->data[i_433747];
				checkminsonslen_245259(a, ((NI) 1));
				length = sonslen_193403(a);
				{
					if (!((*a).kind == ((NU8) 87))) goto LA7;
					{
						NIM_BOOL LOC11;
						Slice85768 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_105273(((NI) 0), ((NI) 0));
						HEX5BHEX5DHEX3D_413619((&(*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_193403(a);
					}
					LA13: ;
					{
						NI j_433812;
						NI HEX3Atmp_433946;
						NI res_433949;
						j_433812 = 0;
						HEX3Atmp_433946 = 0;
						HEX3Atmp_433946 = (NI)(length - ((NI) 2));
						res_433949 = ((NI) 0);
						{
							while (1) {
								Ttype190849* typ;
								if (!(res_433949 <= HEX3Atmp_433946)) goto LA18;
								j_433812 = res_433949;
								typ = semtypenode_409269(c, (*a).kindU.S6.sons->data[j_433812], NIM_NIL);
								{
									if (!((*typ).kind == ((NU8) 22))) goto LA21;
									typ = (*typ).sons->data[((NI) 0)];
								}
								LA21: ;
								{
									if (!!(((*typ).kind == ((NU8) 17)))) goto LA25;
									localerror_165155((*(*a).kindU.S6.sons->data[j_433812]).info, ((NU16) 112), ((NimStringDesc*) &TMP2989));
								}
								LA25: ;
								asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[j_433812]), newnodei_192351(((NU8) 4), (*(*a).kindU.S6.sons->data[j_433812]).info));
								asgnRefNoCycle((void**) (&(*(*a).kindU.S6.sons->data[j_433812]).typ), typ);
								{
									NIM_BOOL LOC29;
									LOC29 = 0;
									LOC29 = containsorincl_187898((&check), (*typ).Sup.id);
									if (!LOC29) goto LA30;
									localerror_165155((*(*a).kindU.S6.sons->data[j_433812]).info, ((NU16) 35), ((NimStringDesc*) &TMP2989));
								}
								LA30: ;
								res_433949 += ((NI) 1);
							} LA18: ;
						}
					}
				}
				goto LA5;
				LA7: ;
				{
					if (!!(((*a).kind == ((NU8) 107)))) goto LA33;
					illformedast_245229(n);
				}
				goto LA5;
				LA33: ;
				LA5: ;
				asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]), semexprbranchscope_432635(c, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]));
				{
					if (!!(((*a).kind == ((NU8) 107)))) goto LA37;
					typ_433729 = commontype_409477(typ_433729, (*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).typ);
				}
				goto LA35;
				LA37: ;
				{
					last -= ((NI) 1);
				}
				LA35: ;
				res_433955 += ((NI) 1);
			} LA4: ;
		}
	}
	(*(*c).p).intrystmt -= ((NI) 1);
	{
		NIM_BOOL LOC42;
		LOC42 = 0;
		LOC42 = isemptytype_195933(typ_433729);
		if (LOC42) goto LA43;
		LOC42 = ((*typ_433729).kind == ((NU8) 5));
		LA43: ;
		if (!LOC42) goto LA44;
		discardcheck_432756(c, (*n).kindU.S6.sons->data[((NI) 0)]);
		{
			NI i_433899;
			NI HEX3Atmp_433960;
			NI LOC47;
			NI res_433963;
			i_433899 = 0;
			HEX3Atmp_433960 = 0;
			LOC47 = 0;
			LOC47 = len_191097(n);
			HEX3Atmp_433960 = (NI)(LOC47 - ((NI) 1));
			res_433963 = ((NI) 1);
			{
				while (1) {
					Tnode190813* LOC50;
					if (!(res_433963 <= HEX3Atmp_433960)) goto LA49;
					i_433899 = res_433963;
					LOC50 = 0;
					LOC50 = lastson_193431((*n).kindU.S6.sons->data[i_433899]);
					discardcheck_432756(c, LOC50);
					res_433963 += ((NI) 1);
				} LA49: ;
			}
		}
		{
			if (!(typ_433729 == enforcevoidcontext_431005)) goto LA53;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_431005);
		}
		LA53: ;
	}
	goto LA40;
	LA44: ;
	{
		{
			Tnode190813* LOC58;
			Tnode190813* LOC61;
			Tnode190813* LOC62;
			LOC58 = 0;
			LOC58 = lastson_193431(n);
			if (!((*LOC58).kind == ((NU8) 107))) goto LA59;
			LOC61 = 0;
			LOC61 = lastson_193431(n);
			LOC62 = 0;
			LOC62 = lastson_193431(LOC61);
			discardcheck_432756(c, LOC62);
		}
		LA59: ;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), fitnode_409245(c, typ_433729, (*n).kindU.S6.sons->data[((NI) 0)]));
		{
			NI i_433937;
			NI res_433970;
			i_433937 = 0;
			res_433970 = ((NI) 1);
			{
				while (1) {
					Tnode190813* it;
					NI j;
					NI LOC66;
					if (!(res_433970 <= last)) goto LA65;
					i_433937 = res_433970;
					it = (*n).kindU.S6.sons->data[i_433937];
					LOC66 = 0;
					LOC66 = len_191097(it);
					j = (NI)(LOC66 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[j]), fitnode_409245(c, typ_433729, (*it).kindU.S6.sons->data[j]));
					res_433970 += ((NI) 1);
				} LA65: ;
			}
		}
		asgnRefNoCycle((void**) (&(*result).typ), typ_433729);
	}
	LA40: ;
	return result;
}

N_NIMCALL(NIM_BOOL, usesresult_440004)(Tnode190813* n) {
	NIM_BOOL result;
{	result = 0;
	{
		if (!!(((*n).kind >= ((NU8) 51) && (*n).kind <= ((NU8) 52) || (*n).kind >= ((NU8) 79) && (*n).kind <= ((NU8) 84) || (*n).kind == ((NU8) 115) || (*n).kind == ((NU8) 126)))) goto LA3;
		{
			NIM_BOOL LOC7;
			NIM_BOOL LOC10;
			LOC7 = 0;
			LOC7 = isatom_195905(n);
			if (!LOC7) goto LA8;
			LOC10 = 0;
			LOC10 = ((*n).kind == ((NU8) 3));
			if (!(LOC10)) goto LA11;
			LOC10 = ((*(*n).kindU.S4.sym).kind == ((NU8) 11));
			LA11: ;
			result = LOC10;
		}
		goto LA5;
		LA8: ;
		{
			if (!((*n).kind == ((NU8) 109))) goto LA13;
			result = NIM_TRUE;
		}
		goto LA5;
		LA13: ;
		{
			{
				Tnode190813* c_440059;
				c_440059 = 0;
				{
					NI i_440064;
					NI HEX3Atmp_440066;
					NI LOC18;
					NI res_440068;
					i_440064 = 0;
					HEX3Atmp_440066 = 0;
					LOC18 = 0;
					LOC18 = len_191097(n);
					HEX3Atmp_440066 = (LOC18 - 1);
					res_440068 = ((NI) 0);
					{
						while (1) {
							if (!(res_440068 <= HEX3Atmp_440066)) goto LA20;
							i_440064 = res_440068;
							c_440059 = (*n).kindU.S6.sons->data[i_440064];
							{
								NIM_BOOL LOC23;
								LOC23 = 0;
								LOC23 = usesresult_440004(c_440059);
								if (!LOC23) goto LA24;
								result = NIM_TRUE;
								goto BeforeRet;
							}
							LA24: ;
							res_440068 += ((NI) 1);
						} LA20: ;
					}
				}
			}
		}
		LA5: ;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, insertdestructors_432265)(Tcontext244023* c, Tnode190813* varsection, TY432269* Result) {
	NI totalvars;
{	totalvars = sonslen_193403(varsection);
	{
		NI j_432287;
		NI HEX3Atmp_432418;
		NI res_432421;
		j_432287 = 0;
		HEX3Atmp_432418 = 0;
		HEX3Atmp_432418 = (NI)(totalvars - ((NI) 1));
		res_432421 = ((NI) 0);
		{
			while (1) {
				if (!(res_432421 <= HEX3Atmp_432418)) goto LA3;
				j_432287 = res_432421;
				{
					Tnode190813* varid;
					Tnode190813* LOC5;
					Ttype190849* vartyp;
					Tlineinfo163338 info;
					Ttype190849* destructablet;
					LOC5 = 0;
					LOC5 = HEX5BHEX5D_191244(varsection, j_432287);
					varid = HEX5BHEX5D_191244(LOC5, ((NI) 0));
					vartyp = (*(*varid).kindU.S4.sym).typ;
					info = (*varid).info;
					{
						NIM_BOOL LOC8;
						LOC8 = 0;
						LOC8 = (vartyp == NIM_NIL);
						if (LOC8) goto LA9;
						LOC8 = (((*(*varid).kindU.S4.sym).flags &(1<<((((NU8) 3))&31)))!=0);
						LA9: ;
						if (!LOC8) goto LA10;
						goto LA4;
					}
					LA10: ;
					destructablet = instantiatedestructor_431423(c, vartyp);
					{
						Tnode190813* trystmt;
						Tnodeseq190807* LOC29;
						TY208680 LOC30;
						Tnodeseq190807* LOC31;
						TY245103 LOC32;
						Tnode190813* LOC33;
						Tnode190813* LOC34;
						if (!!((destructablet == NIM_NIL))) goto LA14;
						trystmt = newnodei_192351(((NU8) 106), info);
						{
							Tnode190813* remainingvars;
							NI LOC20;
							Slice85768 LOC21;
							TY432269 LOC22;
							Tnode190813* outer;
							Tnode190813* inner;
							if (!(j_432287 < (NI)(totalvars - ((NI) 1)))) goto LA18;
							remainingvars = newnodei_192351((*varsection).kind, info);
							LOC20 = 0;
							LOC20 = len_191097(varsection);
							LOC21 = HEX2EHEX2E_105273((NI)(j_432287 + ((NI) 1)), (NI)(LOC20 - ((NI) 1)));
							asgnRefNoCycle((void**) (&(*remainingvars).kindU.S6.sons), HEX5BHEX5D_431717((*varsection).kindU.S6.sons, LOC21));
							memset((void*)(&LOC22), 0, sizeof(LOC22));
							insertdestructors_432265(c, remainingvars, (&LOC22));
							outer = 0;
							outer = LOC22.Field0;
							inner = 0;
							inner = LOC22.Field1;
							{
								if (!!((outer == NIM_NIL))) goto LA25;
								addson_192819(trystmt, outer);
								unsureAsgnRef((void**) (&(*Result).Field1), inner);
							}
							goto LA23;
							LA25: ;
							{
								unsureAsgnRef((void**) (&(*Result).Field1), newnodei_192351(((NU8) 115), info));
								addson_192819((*Result).Field1, remainingvars);
								addson_192819(trystmt, (*Result).Field1);
							}
							LA23: ;
						}
						goto LA16;
						LA18: ;
						{
							unsureAsgnRef((void**) (&(*Result).Field1), newnodei_192351(((NU8) 115), info));
							addson_192819(trystmt, (*Result).Field1);
						}
						LA16: ;
						LOC29 = 0;
						LOC29 = (Tnodeseq190807*) newSeq((&NTI190807), 1);
						memset((void*)LOC30, 0, sizeof(LOC30));
						LOC31 = 0;
						LOC31 = (Tnodeseq190807*) newSeq((&NTI190807), 2);
						memset((void*)LOC32, 0, sizeof(LOC32));
						LOC32[0] = usesym_354055((*destructablet).destructor);
						LOC32[1] = usesym_354055((*varid).kindU.S4.sym);
						asgnRefNoCycle((void**) (&LOC31->data[0]), LOC32[0]);
						asgnRefNoCycle((void**) (&LOC31->data[1]), LOC32[1]);
						LOC33 = 0;
						LOC33 = newnode_192607(((NU8) 27), info, LOC31, NIM_NIL);
						LOC30[0] = semstmt_409277(c, LOC33);
						asgnRefNoCycle((void**) (&LOC29->data[0]), LOC30[0]);
						LOC34 = 0;
						LOC34 = newnode_192607(((NU8) 107), info, LOC29, NIM_NIL);
						addson_192819(trystmt, LOC34);
						unsureAsgnRef((void**) (&(*Result).Field0), newnodei_192351(((NU8) 115), info));
						(*varsection).kindU.S6.sons = (Tnodeseq190807*) setLengthSeq(&((*varsection).kindU.S6.sons)->Sup, sizeof(Tnode190813*), ((NI) ((NI)(j_432287 + ((NI) 1)))));
						addson_192819((*Result).Field0, varsection);
						addson_192819((*Result).Field0, trystmt);
						goto BeforeRet;
					}
					LA14: ;
				} LA4: ;
				res_432421 += ((NI) 1);
			} LA3: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode190813*, semstmtlist_440086)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	NI length;
	NIM_BOOL voidcontext;
	NI last;
{	result = 0;
	result = n;
	(*result).kind = ((NU8) 115);
	length = sonslen_193403(n);
	voidcontext = NIM_FALSE;
	last = (NI)(length - ((NI) 1));
	{
		NI i_440109;
		NI HEX3Atmp_440613;
		NI res_440616;
		i_440109 = 0;
		HEX3Atmp_440613 = 0;
		HEX3Atmp_440613 = (NI)(length - ((NI) 1));
		res_440616 = ((NI) 0);
		{
			while (1) {
				if (!(res_440616 <= HEX3Atmp_440613)) goto LA3;
				i_440109 = res_440616;
				{
					NU8 k;
					k = (*(*n).kindU.S6.sons->data[i_440109]).kind;
					switch (k) {
					case ((NU8) 107):
					case ((NU8) 87):
					case ((NU8) 105):
					{
						Tnode190813* deferpart;
						Tnode190813* trystmt;
						Tnode190813* body;
						deferpart = 0;
						{
							if (!(k == ((NU8) 105))) goto LA8;
							deferpart = newnodei_192351(((NU8) 107), (*(*n).kindU.S6.sons->data[i_440109]).info);
							add_191164(deferpart, (*(*n).kindU.S6.sons->data[i_440109]).kindU.S6.sons->data[((NI) 0)]);
						}
						goto LA6;
						LA8: ;
						{
							if (!(k == ((NU8) 107))) goto LA11;
							message_165188((*n).info, ((NU16) 234), ((NimStringDesc*) &TMP3422));
							deferpart = (*n).kindU.S6.sons->data[i_440109];
						}
						goto LA6;
						LA11: ;
						{
							message_165188((*n).info, ((NU16) 234), ((NimStringDesc*) &TMP3423));
							deferpart = (*n).kindU.S6.sons->data[i_440109];
						}
						LA6: ;
						trystmt = newnodei_192351(((NU8) 106), (*(*n).kindU.S6.sons->data[i_440109]).info);
						body = newnodei_192351(((NU8) 115), (*(*n).kindU.S6.sons->data[i_440109]).info);
						{
							NI LOC16;
							NI LOC19;
							Slice85768 LOC20;
							LOC16 = 0;
							LOC16 = sonslen_193403(n);
							if (!(i_440109 < (NI)(LOC16 - ((NI) 1)))) goto LA17;
							LOC19 = 0;
							LOC19 = len_191097(n);
							LOC20 = HEX2EHEX2E_105273((NI)(i_440109 + ((NI) 1)), (NI)(LOC19 - ((NI) 1)));
							asgnRefNoCycle((void**) (&(*body).kindU.S6.sons), HEX5BHEX5D_431717((*n).kindU.S6.sons, LOC20));
						}
						LA17: ;
						addson_192819(trystmt, body);
						addson_192819(trystmt, deferpart);
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_440109]), semtry_433715(c, trystmt));
						(*n).kindU.S6.sons = (Tnodeseq190807*) setLengthSeq(&((*n).kindU.S6.sons)->Sup, sizeof(Tnode190813*), ((NI) ((NI)(i_440109 + ((NI) 1)))));
						asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[i_440109]).typ);
						goto BeforeRet;
					}
					break;
					default:
					{
						asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_440109]), semexpr_409201(c, (*n).kindU.S6.sons->data[i_440109], 0));
						{
							NIM_BOOL LOC24;
							Tnode190813* LOC26;
							Tnode190813* LOC29;
							LOC24 = 0;
							LOC24 = (((NI) 0) < (*c).intypeclass);
							if (!(LOC24)) goto LA25;
							LOC26 = 0;
							LOC26 = HEX5BHEX5D_191244(n, i_440109);
							LOC24 = !(((*LOC26).typ == NIM_NIL));
							LA25: ;
							if (!LOC24) goto LA27;
							LOC29 = 0;
							LOC29 = HEX5BHEX5D_191244(n, i_440109);
							switch ((*(*LOC29).typ).kind) {
							case ((NU8) 1):
							{
								Tnode190813* verdict;
								Tnode190813* LOC31;
								LOC31 = 0;
								LOC31 = HEX5BHEX5D_191244(n, i_440109);
								verdict = semconstexpr_410485(c, LOC31);
								{
									if (!((*verdict).kindU.S1.intval == IL64(0))) goto LA34;
									localerror_165166((*result).info, ((NimStringDesc*) &TMP3424));
								}
								LA34: ;
							}
							break;
							case ((NU8) 60):
							{
								goto LA4;
							}
							break;
							default:
							{
							}
							break;
							}
						}
						LA27: ;
						{
							NIM_BOOL LOC40;
							LOC40 = 0;
							LOC40 = ((*(*n).kindU.S6.sons->data[i_440109]).typ == enforcevoidcontext_431005);
							if (LOC40) goto LA41;
							LOC40 = usesresult_440004((*n).kindU.S6.sons->data[i_440109]);
							LA41: ;
							if (!LOC40) goto LA42;
							voidcontext = NIM_TRUE;
							asgnRefNoCycle((void**) (&(*n).typ), enforcevoidcontext_431005);
						}
						LA42: ;
						{
							NIM_BOOL LOC46;
							NIM_BOOL LOC48;
							LOC46 = 0;
							LOC46 = (i_440109 == last);
							if (!(LOC46)) goto LA47;
							LOC48 = 0;
							LOC48 = (length == ((NI) 1));
							if (LOC48) goto LA49;
							LOC48 = ((flags &(1<<((((NU8) 7))&15)))!=0);
							LA49: ;
							LOC46 = LOC48;
							LA47: ;
							if (!LOC46) goto LA50;
							asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[i_440109]).typ);
							{
								NIM_BOOL LOC54;
								LOC54 = 0;
								LOC54 = isemptytype_195933((*n).typ);
								if (!!(LOC54)) goto LA55;
								(*n).kind = ((NU8) 126);
							}
							LA55: ;
						}
						goto LA44;
						LA50: ;
						{
							NIM_BOOL LOC58;
							LOC58 = 0;
							LOC58 = !((i_440109 == last));
							if (LOC58) goto LA59;
							LOC58 = voidcontext;
							LA59: ;
							if (!LOC58) goto LA60;
							discardcheck_432756(c, (*n).kindU.S6.sons->data[i_440109]);
						}
						goto LA44;
						LA60: ;
						{
							asgnRefNoCycle((void**) (&(*n).typ), (*(*n).kindU.S6.sons->data[i_440109]).typ);
							{
								NIM_BOOL LOC65;
								LOC65 = 0;
								LOC65 = isemptytype_195933((*n).typ);
								if (!!(LOC65)) goto LA66;
								(*n).kind = ((NU8) 126);
							}
							LA66: ;
						}
						LA44: ;
						switch ((*(*n).kindU.S6.sons->data[i_440109]).kind) {
						case ((NU8) 99):
						case ((NU8) 100):
						{
							TY432269 LOC69;
							Tnode190813* outer;
							Tnode190813* inner;
							memset((void*)(&LOC69), 0, sizeof(LOC69));
							insertdestructors_432265(c, (*n).kindU.S6.sons->data[i_440109], (&LOC69));
							outer = 0;
							outer = LOC69.Field0;
							inner = 0;
							inner = LOC69.Field1;
							{
								Tnode190813* rest;
								Slice85768 LOC74;
								Tnodeseq190807* LOC75;
								Tnode190813* LOC76;
								if (!!((outer == NIM_NIL))) goto LA72;
								asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_440109]), outer);
								LOC74 = HEX2EHEX2E_105273((NI)(i_440109 + ((NI) 1)), (NI)(length - ((NI) 1)));
								LOC75 = 0;
								LOC75 = HEX5BHEX5D_431717((*n).kindU.S6.sons, LOC74);
								rest = newnode_192607(((NU8) 115), (*n).info, LOC75, NIM_NIL);
								LOC76 = 0;
								LOC76 = semstmtlist_440086(c, rest, flags);
								addson_192819(inner, LOC76);
								(*n).kindU.S6.sons = (Tnodeseq190807*) setLengthSeq(&((*n).kindU.S6.sons)->Sup, sizeof(Tnode190813*), ((NI) ((NI)(i_440109 + ((NI) 1)))));
								goto BeforeRet;
							}
							LA72: ;
						}
						break;
						case ((NU8) 108):
						case ((NU8) 109):
						case ((NU8) 110):
						case ((NU8) 111):
						{
							{
								NI j_440289;
								NI HEX3Atmp_440605;
								NI HEX3Atmp_440606;
								NI res_440609;
								j_440289 = 0;
								HEX3Atmp_440605 = 0;
								HEX3Atmp_440606 = 0;
								HEX3Atmp_440605 = (NI)(i_440109 + ((NI) 1));
								HEX3Atmp_440606 = (NI)(length - ((NI) 1));
								res_440609 = HEX3Atmp_440605;
								{
									while (1) {
										if (!(res_440609 <= HEX3Atmp_440606)) goto LA80;
										j_440289 = res_440609;
										switch ((*(*n).kindU.S6.sons->data[j_440289]).kind) {
										case ((NU8) 90):
										case ((NU8) 125):
										case ((NU8) 23):
										case ((NU8) 1):
										{
										}
										break;
										default:
										{
											localerror_165155((*(*n).kindU.S6.sons->data[j_440289]).info, ((NU16) 41), ((NimStringDesc*) &TMP2989));
										}
										break;
										}
										res_440609 += ((NI) 1);
									} LA80: ;
								}
							}
						}
						break;
						default:
						{
						}
						break;
						}
					}
					break;
					}
				} LA4: ;
				res_440616 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NI LOC86;
		LOC86 = 0;
		LOC86 = len_191097(result);
		if (!(LOC86 == ((NI) 1))) goto LA87;
		result = (*result).kindU.S6.sons->data[((NI) 0)];
	}
	LA87: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semraise_437101)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = n;
	checksonslen_245249(n, ((NI) 1));
	{
		Ttype190849* typ;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA3;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_409211(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_165155((*n).info, ((NU16) 112), ((NimStringDesc*) &TMP2989));
		}
		LA9: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, addtovarsection_435306)(Tcontext244023* c, Tnode190813** result, Tnode190813* orig, Tnode190813* identdefs) {
	NI L;
	Tnode190813* value;
	L = len_191097(identdefs);
	value = HEX5BHEX5D_191244(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_191807);
		{
			Tnode190813* oldresult;
			if (!!(((*(*result)).kind == ((NU8) 115)))) goto LA9;
			oldresult = (*result);
			add_191164(oldresult, identdefs);
			unsureAsgnRef((void**) (&(*result)), newnodei_192351(((NU8) 115), (*(*result)).info));
			add_191164((*result), oldresult);
		}
		goto LA7;
		LA9: ;
		{
			Tnode190813* o;
			o = copynode_194640(orig);
			add_191164(o, identdefs);
			add_191164((*result), o);
		}
		LA7: ;
		{
			NI i_435364;
			NI HEX3Atmp_435380;
			NI res_435383;
			i_435364 = 0;
			HEX3Atmp_435380 = 0;
			HEX3Atmp_435380 = (NI)(L - ((NI) 3));
			res_435383 = ((NI) 0);
			{
				while (1) {
					Tnode190813* LOC15;
					Tnode190813* LOC16;
					if (!(res_435383 <= HEX3Atmp_435380)) goto LA14;
					i_435364 = res_435383;
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_191244(identdefs, i_435364);
					LOC16 = 0;
					LOC16 = overloadedasgn_435296(c, LOC15, value);
					add_191164((*result), LOC16);
					res_435383 += ((NI) 1);
				} LA14: ;
			}
		}
	}
	goto LA1;
	LA5: ;
	{
		Tnode190813* o;
		if (!((*(*result)).kind == ((NU8) 115))) goto LA18;
		o = copynode_194640(orig);
		add_191164(o, identdefs);
		add_191164((*result), o);
	}
	goto LA1;
	LA18: ;
	{
		add_191164((*result), identdefs);
	}
	LA1: ;
}

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

N_NIMCALL(Tsym190843*, findshadowedvar_434035)(Tcontext244023* c, Tsym190843* v) {
	Tsym190843* result;
{	result = 0;
	{
		Tscope190837* scope_434040;
		Tscope190837* HEX3Atmp_434077;
		Tscope190837* current_434080;
		scope_434040 = 0;
		HEX3Atmp_434077 = 0;
		HEX3Atmp_434077 = (*(*c).currentscope).parent;
		current_434080 = HEX3Atmp_434077;
		{
			while (1) {
				Tsym190843* shadowed;
				if (!!((current_434080 == NIM_NIL))) goto LA3;
				scope_434040 = current_434080;
				{
					if (!(scope_434040 == (*c).toplevelscope)) goto LA6;
					goto LA1;
				}
				LA6: ;
				shadowed = strtableget_198111((*scope_434040).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_434080 = (*current_434080).parent;
			} LA3: ;
		}
	} LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, identwithin_434093)(Tnode190813* n, Tident167021* s) {
	NIM_BOOL result;
	NIM_BOOL LOC10;
{	result = 0;
	{
		NI i_434109;
		NI HEX3Atmp_434123;
		NI LOC2;
		NI res_434126;
		i_434109 = 0;
		HEX3Atmp_434123 = 0;
		LOC2 = 0;
		LOC2 = safelen_191125(n);
		HEX3Atmp_434123 = (NI)(LOC2 - ((NI) 1));
		res_434126 = ((NI) 0);
		{
			while (1) {
				if (!(res_434126 <= HEX3Atmp_434123)) goto LA4;
				i_434109 = res_434126;
				{
					NIM_BOOL LOC7;
					LOC7 = 0;
					LOC7 = identwithin_434093((*n).kindU.S6.sons->data[i_434109], s);
					if (!LOC7) goto LA8;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA8: ;
				res_434126 += ((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(void, checknilable_434204)(Tsym190843* 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_165188((*v).info, ((NU16) 250), (*(*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_165188((*v).info, ((NU16) 250), (*(*v).name).s);
		}
		goto LA7;
		LA14: ;
		LA7: ;
	}
	LA5: ;
}

N_NIMCALL(Tnode190813*, semvarorlet_435418)(Tcontext244023* c, Tnode190813* n, NU8 symkind) {
	Tnode190813* result;
	Tnode190813* b;
	NIM_BOOL hascompiletime;
	result = 0;
	b = 0;
	result = copynode_194640(n);
	hascompiletime = NIM_FALSE;
	{
		NI i_435438;
		NI HEX3Atmp_435951;
		NI LOC2;
		NI res_435954;
		i_435438 = 0;
		HEX3Atmp_435951 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_435951 = (NI)(LOC2 - ((NI) 1));
		res_435954 = ((NI) 0);
		{
			while (1) {
				if (!(res_435954 <= HEX3Atmp_435951)) goto LA4;
				i_435438 = res_435954;
				{
					Tnode190813* a;
					NI length;
					Ttype190849* typ;
					Tnode190813* def;
					Ttype190849* tup;
					a = (*n).kindU.S6.sons->data[i_435438];
					{
						if (!(gcmd_154130 == ((NU8) 14))) goto LA8;
						suggeststmt_354301(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_245229(a);
					}
					LA16: ;
					checkminsonslen_245259(a, ((NI) 3));
					length = sonslen_193403(a);
					typ = 0;
					{
						if (!!(((*(*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).kind == ((NU8) 1)))) goto LA20;
						typ = semtypenode_409269(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_409211(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_165166((*def).info, ((NimStringDesc*) &TMP3425));
							asgnRefNoCycle((void**) (&(*def).typ), errortype_245150(c));
						}
						LA31: ;
						{
							if (!!((typ == NIM_NIL))) goto LA35;
							{
								NIM_BOOL LOC39;
								LOC39 = 0;
								LOC39 = ismetatype_191821(typ);
								if (!LOC39) goto LA40;
								def = inferwithmetatype_409463(c, typ, def, NIM_FALSE);
								typ = (*def).typ;
							}
							goto LA37;
							LA40: ;
							{
								def = fitnode_409245(c, typ, def);
							}
							LA37: ;
						}
						goto LA33;
						LA35: ;
						{
							typ = skipintlit_238696((*def).typ);
							{
								NIM_BOOL LOC46;
								Ttype190849* 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_193442(typ);
								LOC46 = ((*LOC48).kind == ((NU8) 3));
								LA47: ;
								if (!LOC46) goto LA49;
								LOC51 = 0;
								LOC51 = copyStr(reprEnum((*typ).kind, (&NTI190260)), ((NI) 2));
								LOC52 = 0;
								LOC52 = nsuToLowerStr(LOC51);
								localerror_165155((*def).info, ((NU16) 225), LOC52);
							}
							LA49: ;
						}
						LA33: ;
					}
					goto LA23;
					LA25: ;
					{
						def = emptynode_191807;
						{
							if (!(symkind == ((NU8) 9))) goto LA56;
							localerror_165155((*a).info, ((NU16) 219), ((NimStringDesc*) &TMP2989));
						}
						LA56: ;
					}
					LA23: ;
					{
						if (!(typ == NIM_NIL)) goto LA60;
						goto LA5;
					}
					LA60: ;
					typeallowedcheck_409980((*a).info, typ, symkind);
					tup = skiptypes_194167(typ, 2048);
					{
						if (!((*a).kind == ((NU8) 36))) goto LA64;
						{
							if (!!(((*tup).kind == ((NU8) 18)))) goto LA68;
							localerror_165155((*a).info, ((NU16) 188), ((NimStringDesc*) &TMP3426));
						}
						goto LA66;
						LA68: ;
						{
							NI LOC71;
							LOC71 = 0;
							LOC71 = sonslen_193351(tup);
							if (!!(((NI)(length - ((NI) 2)) == LOC71))) goto LA72;
							localerror_165155((*a).info, ((NU16) 111), ((NimStringDesc*) &TMP2989));
						}
						goto LA66;
						LA72: ;
						{
							b = newnodei_192351(((NU8) 36), (*a).info);
							newsons_193272(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_435306(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_191097(a);
						LOC76 = (((NI) 3) < LOC82);
						LA81: ;
						if (!LOC76) goto LA83;
						message_165188((*a).info, ((NU16) 248), ((NimStringDesc*) &TMP2989));
					}
					goto LA62;
					LA83: ;
					LA62: ;
					{
						NI j_435638;
						NI HEX3Atmp_435944;
						NI res_435947;
						j_435638 = 0;
						HEX3Atmp_435944 = 0;
						HEX3Atmp_435944 = (NI)(length - ((NI) 3));
						res_435947 = ((NI) 0);
						{
							while (1) {
								Tsym190843* v;
								if (!(res_435947 <= HEX3Atmp_435944)) goto LA87;
								j_435638 = res_435947;
								v = semidentdef_434142(c, (*a).kindU.S6.sons->data[j_435638], 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_435399(v);
									LOC90 = !(LOC92);
									LA91: ;
									if (!LOC90) goto LA93;
									addinterfacedecl_249736(c, v);
								}
								LA93: ;
								{
									if (!(((NI) 0) < (*c).inunrolledcontext)) goto LA97;
									(*v).flags |= ((NI32)1)<<((((NU8) 21))%(sizeof(NI32)*8));
								}
								goto LA95;
								LA97: ;
								{
									Tsym190843* shadowed;
									shadowed = findshadowedvar_434035(c, v);
									{
										if (!!((shadowed == NIM_NIL))) goto LA102;
										(*shadowed).flags |= ((NI32)1)<<((((NU8) 21))%(sizeof(NI32)*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_165188((*a).info, ((NU16) 259), ((NimStringDesc*) &TMP2989));
										}
										LA108: ;
										{
											NIM_BOOL LOC112;
											NIM_BOOL LOC114;
											LOC112 = 0;
											LOC112 = ((gnotes_164014 &(IL64(1)<<(((((NU16) 249)- 230))&IL64(63))))!=0);
											if (!(LOC112)) goto LA113;
											LOC114 = 0;
											LOC114 = identwithin_434093(def, (*v).name);
											LOC112 = !(LOC114);
											LA113: ;
											if (!LOC112) goto LA115;
											message_165188((*a).info, ((NU16) 249), (*(*v).name).s);
										}
										LA115: ;
									}
									LA102: ;
								}
								LA95: ;
								{
									Tnode190813* LOC137;
									Tnode190813* 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_165155((*def).info, ((NU16) 220), ((NimStringDesc*) &TMP2989));
										}
										LA129: ;
									}
									LA125: ;
									asgnRefNoCycle((void**) (&(*v).typ), typ);
									b = newnodei_192351(((NU8) 35), (*a).info);
									{
										NIM_BOOL LOC133;
										NimStringDesc* LOC136;
										LOC133 = 0;
										LOC133 = importantcomments_154164();
										if (!LOC133) goto LA134;
										LOC136 = 0;
										LOC136 = (*b).comment; (*b).comment = copyStringRC1((*a).comment);
										if (LOC136) nimGCunrefNoCycle(LOC136);
									}
									LA134: ;
									LOC137 = 0;
									LOC137 = newsymnode_192325(v);
									addson_192819(b, LOC137);
									addson_192819(b, (*a).kindU.S6.sons->data[(NI)(length - ((NI) 2))]);
									LOC138 = 0;
									LOC138 = copytree_195028(def);
									addson_192819(b, LOC138);
									addtovarsection_435306(c, &result, n, b);
								}
								goto LA117;
								LA119: ;
								{
									{
										if (!((*def).kind == ((NU8) 37))) goto LA142;
										asgnRefNoCycle((void**) (&(*v).ast), HEX5BHEX5D_191244(def, j_435638));
									}
									LA142: ;
									asgnRefNoCycle((void**) (&(*v).typ), (*tup).sons->data[j_435638]);
									asgnRefNoCycle((void**) (&(*b).kindU.S6.sons->data[j_435638]), newsymnode_192325(v));
								}
								LA117: ;
								checknilable_434204(v);
								{
									if (!(((*v).flags &(1<<((((NU8) 23))&31)))!=0)) goto LA146;
									hascompiletime = NIM_TRUE;
								}
								LA146: ;
								res_435947 += ((NI) 1);
							} LA87: ;
						}
					}
				} LA5: ;
				res_435954 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		if (!hascompiletime) goto LA150;
		setupcompiletimevar_397855((*c).module, result);
	}
	LA150: ;
	return result;
}

N_NIMCALL(Tnode190813*, fitremovehiddenconv_434013)(Tcontext244023* c, Ttype190849* typ, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = fitnode_409245(c, typ, n);
	{
		if (!((*result).kind == ((NU8) 58) || (*result).kind == ((NU8) 59))) goto LA3;
		changetype_409253((*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_225092((*result).typ, typ, 0);
		if (!!(LOC6)) goto LA7;
		changetype_409253(result, typ, NIM_FALSE);
	}
	goto LA1;
	LA7: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semconst_435982)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = copynode_194640(n);
	{
		NI i_435999;
		NI HEX3Atmp_436124;
		NI LOC2;
		NI res_436127;
		i_435999 = 0;
		HEX3Atmp_436124 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_436124 = (NI)(LOC2 - ((NI) 1));
		res_436127 = ((NI) 0);
		{
			while (1) {
				if (!(res_436127 <= HEX3Atmp_436124)) goto LA4;
				i_435999 = res_436127;
				{
					Tnode190813* a;
					Tsym190843* v;
					Ttype190849* typ;
					Tnode190813* def;
					Tnode190813* b;
					Tnode190813* LOC53;
					Tnode190813* LOC54;
					a = (*n).kindU.S6.sons->data[i_435999];
					{
						if (!(gcmd_154130 == ((NU8) 14))) goto LA8;
						suggeststmt_354301(c, a);
					}
					LA8: ;
					{
						if (!((*a).kind == ((NU8) 125))) goto LA12;
						goto LA5;
					}
					LA12: ;
					{
						if (!!(((*a).kind == ((NU8) 102)))) goto LA16;
						illformedast_245229(a);
					}
					LA16: ;
					checksonslen_245249(a, ((NI) 3));
					v = semidentdef_434142(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_409269(c, (*a).kindU.S6.sons->data[((NI) 1)], NIM_NIL);
					}
					LA20: ;
					def = semconstexpr_410485(c, (*a).kindU.S6.sons->data[((NI) 2)]);
					{
						if (!(def == NIM_NIL)) goto LA24;
						localerror_165155((*(*a).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 104), ((NimStringDesc*) &TMP2989));
						goto LA5;
					}
					LA24: ;
					{
						if (!!((typ == NIM_NIL))) goto LA28;
						def = fitremovehiddenconv_434013(c, typ, def);
					}
					goto LA26;
					LA28: ;
					{
						typ = (*def).typ;
					}
					LA26: ;
					{
						if (!(typ == NIM_NIL)) goto LA33;
						localerror_165155((*(*a).kindU.S6.sons->data[((NI) 2)]).info, ((NU16) 104), ((NimStringDesc*) &TMP2989));
						goto LA5;
					}
					LA33: ;
					{
						NIM_BOOL LOC37;
						Ttype190849* LOC38;
						NimStringDesc* LOC42;
						LOC37 = 0;
						LOC38 = 0;
						LOC38 = typeallowed_228654(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_220032(typ, ((NU8) 0));
						localerror_165155((*a).info, ((NU16) 165), 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_249736(c, v);
					}
					LA45: ;
					b = newnodei_192351(((NU8) 102), (*a).info);
					{
						NIM_BOOL LOC49;
						NimStringDesc* LOC52;
						LOC49 = 0;
						LOC49 = importantcomments_154164();
						if (!LOC49) goto LA50;
						LOC52 = 0;
						LOC52 = (*b).comment; (*b).comment = copyStringRC1((*a).comment);
						if (LOC52) nimGCunrefNoCycle(LOC52);
					}
					LA50: ;
					LOC53 = 0;
					LOC53 = newsymnode_192325(v);
					addson_192819(b, LOC53);
					addson_192819(b, (*a).kindU.S6.sons->data[((NI) 1)]);
					LOC54 = 0;
					LOC54 = copytree_195028(def);
					addson_192819(b, LOC54);
					addson_192819(result, b);
				} LA5: ;
				res_436127 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(void, typesectionleftsidepass_437199)(Tcontext244023* c, Tnode190813* n) {
	{
		NI i_437215;
		NI HEX3Atmp_437275;
		NI LOC2;
		NI res_437278;
		i_437215 = 0;
		HEX3Atmp_437275 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_437275 = (NI)(LOC2 - ((NI) 1));
		res_437278 = ((NI) 0);
		{
			while (1) {
				if (!(res_437278 <= HEX3Atmp_437275)) goto LA4;
				i_437215 = res_437278;
				{
					Tnode190813* a;
					Tsym190843* s;
					a = (*n).kindU.S6.sons->data[i_437215];
					{
						if (!(gcmd_154130 == ((NU8) 14))) goto LA8;
						suggeststmt_354301(c, a);
					}
					LA8: ;
					{
						if (!((*a).kind == ((NU8) 125))) goto LA12;
						goto LA5;
					}
					LA12: ;
					{
						if (!!(((*a).kind == ((NU8) 103)))) goto LA16;
						illformedast_245229(a);
					}
					LA16: ;
					checksonslen_245249(a, ((NI) 3));
					s = semidentdef_434142(c, (*a).kindU.S6.sons->data[((NI) 0)], ((NU8) 7));
					asgnRefNoCycle((void**) (&(*s).typ), newtypes_244219(((NU8) 30), c));
					asgnRefNoCycle((void**) (&(*(*s).typ).sym), s);
					{
						if (!((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 43))) goto LA20;
						pragma_260069(c, s, (*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 1)], TMP3381);
					}
					LA20: ;
					{
						if (!!((((*s).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA24;
						addinterfacedecl_249736(c, s);
					}
					LA24: ;
					asgnRefNoCycle((void**) (&(*a).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(s));
				} LA5: ;
				res_437278 += ((NI) 1);
			} LA4: ;
		}
	}
}

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

N_NIMCALL(void, processmagictype_421888)(Tcontext244023* c, Tsym190843* m) {
	switch ((*m).magic) {
	case ((NU16) 183):
	{
		setmagictype_421877(m, ((NU8) 31), intsize_159623);
	}
	break;
	case ((NU16) 184):
	{
		setmagictype_421877(m, ((NU8) 32), ((NI) 1));
	}
	break;
	case ((NU16) 185):
	{
		setmagictype_421877(m, ((NU8) 33), ((NI) 2));
	}
	break;
	case ((NU16) 186):
	{
		setmagictype_421877(m, ((NU8) 34), ((NI) 4));
	}
	break;
	case ((NU16) 187):
	{
		setmagictype_421877(m, ((NU8) 35), ((NI) 8));
	}
	break;
	case ((NU16) 188):
	{
		setmagictype_421877(m, ((NU8) 40), intsize_159623);
	}
	break;
	case ((NU16) 189):
	{
		setmagictype_421877(m, ((NU8) 41), ((NI) 1));
	}
	break;
	case ((NU16) 190):
	{
		setmagictype_421877(m, ((NU8) 42), ((NI) 2));
	}
	break;
	case ((NU16) 191):
	{
		setmagictype_421877(m, ((NU8) 43), ((NI) 4));
	}
	break;
	case ((NU16) 192):
	{
		setmagictype_421877(m, ((NU8) 44), ((NI) 8));
	}
	break;
	case ((NU16) 193):
	{
		setmagictype_421877(m, ((NU8) 36), floatsize_159624);
	}
	break;
	case ((NU16) 194):
	{
		setmagictype_421877(m, ((NU8) 37), ((NI) 4));
	}
	break;
	case ((NU16) 195):
	{
		setmagictype_421877(m, ((NU8) 38), ((NI) 8));
	}
	break;
	case ((NU16) 196):
	{
		setmagictype_421877(m, ((NU8) 39), ((NI) 16));
	}
	break;
	case ((NU16) 197):
	{
		setmagictype_421877(m, ((NU8) 1), ((NI) 1));
	}
	break;
	case ((NU16) 198):
	{
		setmagictype_421877(m, ((NU8) 2), ((NI) 1));
	}
	break;
	case ((NU16) 199):
	{
		Ttype190849* LOC18;
		setmagictype_421877(m, ((NU8) 28), ptrsize_159625);
		LOC18 = 0;
		LOC18 = getsystype_238030(((NU8) 2));
		rawaddson_194478((*m).typ, LOC18);
	}
	break;
	case ((NU16) 200):
	{
		Ttype190849* LOC20;
		setmagictype_421877(m, ((NU8) 29), ptrsize_159625);
		LOC20 = 0;
		LOC20 = getsystype_238030(((NU8) 2));
		rawaddson_194478((*m).typ, LOC20);
	}
	break;
	case ((NU16) 201):
	{
		setmagictype_421877(m, ((NU8) 26), ptrsize_159625);
	}
	break;
	case ((NU16) 202):
	{
		Ttype190849* LOC23;
		setmagictype_421877(m, ((NU8) 19), ((NI) 1));
		LOC23 = 0;
		LOC23 = newtypes_244219(((NU8) 3), c);
		rawaddson_194478((*m).typ, LOC23);
	}
	break;
	case ((NU16) 203):
	{
		setmagictype_421877(m, ((NU8) 20), intsize_159623);
	}
	break;
	case ((NU16) 204):
	{
		setmagictype_421877(m, ((NU8) 5), ptrsize_159625);
	}
	break;
	case ((NU16) 205):
	{
		setmagictype_421877(m, ((NU8) 6), ((NI) 0));
	}
	break;
	case ((NU16) 206):
	{
		setmagictype_421877(m, ((NU8) 7), ((NI) 0));
	}
	break;
	case ((NU16) 207):
	{
		Ttype190849* LOC29;
		setmagictype_421877(m, ((NU8) 8), ((NI) 0));
		LOC29 = 0;
		LOC29 = newtypes_244219(((NU8) 0), c);
		rawaddson_194478((*m).typ, LOC29);
	}
	break;
	case ((NU16) 208):
	{
		setmagictype_421877(m, ((NU8) 3), ((NI) 0));
	}
	break;
	case ((NU16) 176):
	{
		setmagictype_421877(m, ((NU8) 16), ((NI) 0));
	}
	break;
	case ((NU16) 177):
	{
		setmagictype_421877(m, ((NU8) 27), ((NI) 0));
	}
	break;
	case ((NU16) 181):
	{
		setmagictype_421877(m, ((NU8) 48), ((NI) 0));
	}
	break;
	case ((NU16) 178):
	{
		Ttype190849* LOC35;
		setmagictype_421877(m, ((NU8) 20), ((NI) 0));
		LOC35 = 0;
		LOC35 = newtypes_244219(((NU8) 0), c);
		rawaddson_194478((*m).typ, LOC35);
	}
	break;
	case ((NU16) 179):
	{
		setmagictype_421877(m, ((NU8) 19), ((NI) 0));
	}
	break;
	case ((NU16) 180):
	{
		setmagictype_421877(m, ((NU8) 24), ((NI) 0));
	}
	break;
	case ((NU16) 182):
	{
		Ttype190849* LOC39;
		setmagictype_421877(m, ((NU8) 15), ((NI) 0));
		LOC39 = 0;
		LOC39 = newtypes_244219(((NU8) 0), c);
		rawaddson_194478((*m).typ, LOC39);
	}
	break;
	case ((NU16) 209):
	{
	}
	break;
	case ((NU16) 210):
	{
		setmagictype_421877(m, ((NU8) 17), ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*m).typ).n), newnodei_192351(((NU8) 138), (*m).info));
		(*(*m).typ).flags |= ((NI32)1)<<((((NU8) 15))%(sizeof(NI32)*8));
	}
	break;
	case ((NU16) 211):
	{
		Ttype190849* LOC43;
		setmagictype_421877(m, ((NU8) 17), ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*m).typ).n), newnodei_192351(((NU8) 138), (*m).info));
		(*(*m).typ).flags |= ((NI32)1)<<((((NU8) 15))%(sizeof(NI32)*8));
		LOC43 = 0;
		LOC43 = systypefromname_238213(((NimStringDesc*) &TMP3428));
		rawaddson_194478((*m).typ, LOC43);
	}
	break;
	default:
	{
		localerror_165155((*m).info, ((NU16) 63), ((NimStringDesc*) &TMP2989));
	}
	break;
	}
}

N_NIMCALL(void, typesectionrightsidepass_437297)(Tcontext244023* c, Tnode190813* n) {
	{
		NI i_437313;
		NI HEX3Atmp_437558;
		NI LOC2;
		NI res_437561;
		i_437313 = 0;
		HEX3Atmp_437558 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_437558 = (NI)(LOC2 - ((NI) 1));
		res_437561 = ((NI) 0);
		{
			while (1) {
				if (!(res_437561 <= HEX3Atmp_437558)) goto LA4;
				i_437313 = res_437561;
				{
					Tnode190813* a;
					Tsym190843* s;
					Tnode190813* aa;
					a = (*n).kindU.S6.sons->data[i_437313];
					{
						if (!((*a).kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!!(((*a).kind == ((NU8) 103)))) goto LA12;
						illformedast_245229(a);
					}
					LA12: ;
					checksonslen_245249(a, ((NI) 3));
					{
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA16;
						illformedast_245229(a);
					}
					LA16: ;
					s = (*(*a).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
					{
						NIM_BOOL LOC20;
						LOC20 = 0;
						LOC20 = ((*s).magic == ((NU16) 0));
						if (!(LOC20)) goto LA21;
						LOC20 = ((*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1));
						LA21: ;
						if (!LOC20) goto LA22;
						localerror_165155((*a).info, ((NU16) 138), (*(*s).name).s);
					}
					LA22: ;
					{
						if (!!(((*s).magic == ((NU16) 0)))) goto LA26;
						processmagictype_421888(c, s);
					}
					LA26: ;
					{
						Tscope190837* LOC32;
						Ttype190849* LOC37;
						Ttype190849* body;
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 1)))) goto LA30;
						LOC32 = 0;
						LOC32 = openscope_249091(c);
						pushowner_244261(s);
						{
							if (!((*s).magic == ((NU16) 0))) goto LA35;
							(*(*s).typ).kind = ((NU8) 10);
						}
						LA35: ;
						asgnRefNoCycle((void**) (&(*(*s).typ).n), semgenericparamlist_421951(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_244219(((NU8) 0), c);
						rawaddson_194478((*s).typ, LOC37);
						asgnRefNoCycle((void**) (&(*s).ast), a);
						(*c).ingenericcontext += ((NI) 1);
						body = semtypenode_409269(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_193351((*s).typ);
							asgnRefNoCycle((void**) (&(*(*s).typ).sons->data[(NI)(LOC42 - ((NI) 1))]), body);
						}
						LA40: ;
						popowner_244267();
						closescope_249111(c);
					}
					goto LA28;
					LA30: ;
					{
						Ttype190849* t;
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 2)]).kind == ((NU8) 1)))) goto LA44;
						pushowner_244261(s);
						t = semtypenode_409269(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_193452((*s).typ, t);
						}
						goto LA46;
						LA51: ;
						LA46: ;
						asgnRefNoCycle((void**) (&(*s).ast), a);
						popowner_244267();
					}
					goto LA28;
					LA44: ;
					LA28: ;
					aa = (*a).kindU.S6.sons->data[((NI) 2)];
					{
						NIM_BOOL LOC55;
						NIM_BOOL LOC56;
						NI LOC58;
						Ttype190849* st;
						Ttype190849* LOC77;
						NimStringDesc* LOC78;
						Tident167021* LOC79;
						Tsym190843* LOC80;
						LOC55 = 0;
						LOC56 = 0;
						LOC56 = ((*aa).kind == ((NU8) 141) || (*aa).kind == ((NU8) 142));
						if (!(LOC56)) goto LA57;
						LOC58 = 0;
						LOC58 = len_191097(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_193442(st);
						}
						LA64: ;
						{
							NimStringDesc* LOC70;
							if (!!(((*st).kind == ((NU8) 21) || (*st).kind == ((NU8) 22)))) goto LA68;
							LOC70 = 0;
							LOC70 = HEX24_165306(TMP3429);
							internalerror_165218(LOC70);
						}
						LA68: ;
						{
							Ttype190849* LOC73;
							NimStringDesc* LOC76;
							LOC73 = 0;
							LOC73 = lastson_193442(st);
							if (!!(((*LOC73).sym == NIM_NIL))) goto LA74;
							LOC76 = 0;
							LOC76 = HEX24_165306(TMP3431);
							internalerror_165218(LOC76);
						}
						LA74: ;
						LOC77 = 0;
						LOC77 = lastson_193442(st);
						LOC78 = 0;
						LOC78 = rawNewString((*(*s).name).s->Sup.len + 11);
appendString(LOC78, (*(*s).name).s);
appendString(LOC78, ((NimStringDesc*) &TMP3432));
						LOC79 = 0;
						LOC79 = getident_167463(LOC78);
						LOC80 = 0;
						LOC80 = getcurrowner_244256();
						asgnRefNoCycle((void**) (&(*LOC77).sym), newsym_191656(((NU8) 7), LOC79, LOC80, (*s).info));
					}
					LA60: ;
				} LA5: ;
				res_437561 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(void, checkformetafields_437580)(Tnode190813* n) {
{	{
		if (!n == 0) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 138):
	case ((NU8) 139):
	{
		{
			Tnode190813* s_437600;
			s_437600 = 0;
			{
				NI i_437707;
				NI HEX3Atmp_437709;
				NI LOC8;
				NI res_437711;
				i_437707 = 0;
				HEX3Atmp_437709 = 0;
				LOC8 = 0;
				LOC8 = len_191097(n);
				HEX3Atmp_437709 = (LOC8 - 1);
				res_437711 = ((NI) 0);
				{
					while (1) {
						if (!(res_437711 <= HEX3Atmp_437709)) goto LA10;
						i_437707 = res_437711;
						s_437600 = (*n).kindU.S6.sons->data[i_437707];
						checkformetafields_437580(s_437600);
						res_437711 += ((NI) 1);
					} LA10: ;
				}
			}
		}
	}
	break;
	case ((NU8) 85):
	case ((NU8) 88):
	{
		Tnode190813* LOC12;
		LOC12 = 0;
		LOC12 = lastson_193431(n);
		checkformetafields_437580(LOC12);
	}
	break;
	case ((NU8) 3):
	{
		Ttype190849* 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_437651;
				NI HEX3Atmp_437715;
				NI res_437718;
				i_437651 = 0;
				HEX3Atmp_437715 = 0;
				HEX3Atmp_437715 = (((*t).sons ? (*t).sons->Sup.len : 0) - 1);
				res_437718 = ((NI) (start));
				{
					while (1) {
						if (!(res_437718 <= HEX3Atmp_437715)) goto LA17;
						i_437651 = res_437718;
						{
							NIM_BOOL LOC20;
							NIM_BOOL LOC21;
							NimStringDesc* LOC26;
							LOC20 = 0;
							LOC21 = 0;
							LOC21 = !(((*t).sons->data[i_437651] == NIM_NIL));
							if (!(LOC21)) goto LA22;
							LOC21 = ismetatype_191821((*t).sons->data[i_437651]);
							LA22: ;
							LOC20 = LOC21;
							if (!(LOC20)) goto LA23;
							LOC20 = !((((*(*t).sons->data[i_437651]).flags &(1<<((((NU8) 23))&31)))!=0));
							LA23: ;
							if (!LOC20) goto LA24;
							LOC26 = 0;
							LOC26 = typetostring_220032((*t).sons->data[i_437651], ((NU8) 0));
							localerror_165155((*n).info, ((NU16) 189), LOC26);
						}
						LA24: ;
						res_437718 += ((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_191821(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_220032(t, ((NU8) 0));
				localerror_165155((*n).info, ((NU16) 189), LOC36);
			}
			LA34: ;
		}
		break;
		}
	}
	break;
	default:
	{
		{
			NimStringDesc* LOC42;
			if (!NIM_TRUE) goto LA40;
			LOC42 = 0;
			LOC42 = HEX24_165306(TMP3433);
			internalerror_165218(LOC42);
		}
		LA40: ;
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(void, typesectionfinalpass_437746)(Tcontext244023* c, Tnode190813* n) {
	{
		NI i_437762;
		NI HEX3Atmp_437851;
		NI LOC2;
		NI res_437854;
		i_437762 = 0;
		HEX3Atmp_437851 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_437851 = (NI)(LOC2 - ((NI) 1));
		res_437854 = ((NI) 0);
		{
			while (1) {
				if (!(res_437854 <= HEX3Atmp_437851)) goto LA4;
				i_437762 = res_437854;
				{
					Tnode190813* a;
					Tsym190843* s;
					a = (*n).kindU.S6.sons->data[i_437762];
					{
						if (!((*a).kind == ((NU8) 125))) goto LA8;
						goto LA5;
					}
					LA8: ;
					{
						if (!!(((*(*a).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA12;
						illformedast_245229(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;
						{
							Ttype190849* 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_409269(c, (*a).kindU.S6.sons->data[((NI) 2)], NIM_NIL);
							{
								if (!((*t).kind == ((NU8) 17) || (*t).kind == ((NU8) 14))) goto LA24;
								assigntype_193452((*s).typ, t);
								(*(*s).typ).Sup.id = (*t).Sup.id;
							}
							LA24: ;
						}
						LA20: ;
						checkconstructedtype_265110((*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_437580((*(*s).typ).n);
						}
						LA30: ;
					}
					LA16: ;
				} LA5: ;
				res_437854 += ((NI) 1);
			} LA4: ;
		}
	}
}

N_NIMCALL(Tnode190813*, semtypesection_437873)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	typesectionleftsidepass_437199(c, n);
	typesectionrightsidepass_437297(c, n);
	typesectionfinalpass_437746(c, n);
	result = n;
	return result;
}

N_NIMCALL(Tnode190813*, semdiscard_431006)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = n;
	checksonslen_245249(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_409211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = isemptytype_195933((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			if (!LOC7) goto LA8;
			localerror_165155((*n).info, ((NU16) 141), ((NimStringDesc*) &TMP2989));
		}
		LA8: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode190813*, semwhile_431217)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tscope190837* LOC1;
	Tnode190813* LOC2;
	result = 0;
	result = n;
	checksonslen_245249(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	LOC2 = 0;
	LOC2 = semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), forcebool_415629(c, LOC2));
	(*(*c).p).nestedloopcounter += ((NI) 1);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), semstmt_409277(c, (*n).kindU.S6.sons->data[((NI) 1)]));
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	closescope_249111(c);
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 1)]).typ == enforcevoidcontext_431005)) goto LA5;
		asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_431005);
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tnode190813*, sembreakorcontinue_431027)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = n;
	checksonslen_245249(n, ((NI) 1));
	{
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA3;
		{
			Tsym190843* s;
			if (!!(((*n).kind == ((NU8) 111)))) goto LA7;
			s = 0;
			switch ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind) {
			case ((NU8) 2):
			{
				s = lookup_249804(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_245229(n);
			}
			break;
			}
			{
				NIM_BOOL LOC14;
				Tnode190813* 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_192325(s);
				(*x).info = (*n).info;
				(*s).flags |= ((NI32)1)<<((((NU8) 0))%(sizeof(NI32)*8));
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), x);
				suggestsym_353960((*x).info, s);
			}
			goto LA12;
			LA16: ;
			{
				localerror_165155((*n).info, ((NU16) 164), (*(*s).name).s);
			}
			LA12: ;
		}
		goto LA5;
		LA7: ;
		{
			localerror_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3434));
		}
		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_212058(n, 4);
		localerror_165155((*n).info, ((NU16) 164), LOC25);
	}
	goto LA1;
	LA23: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semexprnoderef_409228)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	result = 0;
	result = semexpr_409201(c, n, flags);
	{
		if (!((*result).kind == ((NU8) 1))) goto LA3;
		result = errornode_245160(c, n);
	}
	LA3: ;
	{
		NimStringDesc* LOC9;
		if (!((*result).typ == NIM_NIL)) goto LA7;
		LOC9 = 0;
		LOC9 = rendertree_212058(result, 4);
		localerror_165155((*n).info, ((NU16) 90), LOC9);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_245150(c));
	}
	goto LA5;
	LA7: ;
	{
		semprocvarcheck_431366(c, result);
		semdestructorcheck_432440(c, result, flags);
	}
	LA5: ;
	return result;
}

N_NIMCALL(Tsym190843*, symforvar_436707)(Tcontext244023* c, Tnode190813* n) {
	Tsym190843* result;
	Tnode190813* 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_409916(((NU8) 21), m, c);
	return result;
}

N_NIMCALL(void, addforvardecl_436675)(Tcontext244023* c, Tsym190843* v) {
	{
		Tsym190843* shadowed;
		if (!((gnotes_164014 &(IL64(1)<<(((((NU16) 249)- 230))&IL64(63))))!=0)) goto LA3;
		shadowed = findshadowedvar_434035(c, v);
		{
			if (!!((shadowed == NIM_NIL))) goto LA7;
			message_165188((*v).info, ((NU16) 249), (*(*v).name).s);
		}
		LA7: ;
	}
	LA3: ;
	adddecl_249607(c, v);
}

N_NIMCALL(Tnode190813*, semforvars_436804)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	NI length;
	Ttype190849* iterbase;
	Ttype190849* iter;
	result = 0;
	result = n;
	length = sonslen_193403(n);
	iterbase = skiptypes_194167((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).typ, IL64(562949953421312));
	iter = skiptypes_194167(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;
		{
			Tsym190843* v;
			if (!(length == ((NI) 3))) goto LA9;
			v = symforvar_436707(c, (*n).kindU.S6.sons->data[((NI) 0)]);
			{
				Tsym190843* LOC13;
				LOC13 = 0;
				LOC13 = getcurrowner_244256();
				if (!((*LOC13).kind == ((NU8) 6))) goto LA14;
				(*v).flags |= ((NI32)1)<<((((NU8) 3))%(sizeof(NI32)*8));
			}
			LA14: ;
			asgnRefNoCycle((void**) (&(*v).typ), iterbase);
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), newsymnode_192325(v));
			{
				if (!!((((*v).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA18;
				addforvardecl_436675(c, v);
			}
			LA18: ;
		}
		goto LA7;
		LA9: ;
		{
			localerror_165155((*n).info, ((NU16) 111), ((NimStringDesc*) &TMP2989));
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		NI LOC22;
		LOC22 = 0;
		LOC22 = sonslen_193351(iter);
		if (!!(((NI)(length - ((NI) 2)) == LOC22))) goto LA23;
		localerror_165155((*n).info, ((NU16) 111), ((NimStringDesc*) &TMP2989));
	}
	goto LA1;
	LA23: ;
	{
		{
			NI i_436871;
			NI HEX3Atmp_436928;
			NI res_436931;
			i_436871 = 0;
			HEX3Atmp_436928 = 0;
			HEX3Atmp_436928 = (NI)(length - ((NI) 3));
			res_436931 = ((NI) 0);
			{
				while (1) {
					Tsym190843* v;
					if (!(res_436931 <= HEX3Atmp_436928)) goto LA28;
					i_436871 = res_436931;
					v = symforvar_436707(c, (*n).kindU.S6.sons->data[i_436871]);
					{
						Tsym190843* LOC31;
						LOC31 = 0;
						LOC31 = getcurrowner_244256();
						if (!((*LOC31).kind == ((NU8) 6))) goto LA32;
						(*v).flags |= ((NI32)1)<<((((NU8) 3))%(sizeof(NI32)*8));
					}
					LA32: ;
					asgnRefNoCycle((void**) (&(*v).typ), (*iter).sons->data[i_436871]);
					asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[i_436871]), newsymnode_192325(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_435399(v);
						LOC36 = !(LOC38);
						LA37: ;
						if (!LOC36) goto LA39;
						addforvardecl_436675(c, v);
					}
					LA39: ;
					res_436931 += ((NI) 1);
				} LA28: ;
			}
		}
	}
	LA1: ;
	(*(*c).p).nestedloopcounter += ((NI) 1);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]), semstmt_409277(c, (*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]));
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	return result;
}

N_NIMCALL(Tnode190813*, instfieldloopbody_436152)(Tfieldinstctx436147 c, Tnode190813* n, Tnode190813* forloop) {
	Tnode190813* 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):
	{
		Tident167021* ident;
		NI L;
		result = n;
		ident = considerquotedident_249010(n);
		L = sonslen_193403(forloop);
		{
			if (!c.replacebyfieldname) goto LA5;
			{
				Tnode190813* LOC9;
				Tident167021* LOC10;
				NimStringDesc* fieldname;
				LOC9 = 0;
				LOC9 = HEX5BHEX5D_191244(forloop, ((NI) 0));
				LOC10 = 0;
				LOC10 = considerquotedident_249010(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*) &TMP3438));
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_191644(((NU8) 20), fieldname);
				goto BeforeRet;
			}
			LA11: ;
		}
		LA5: ;
		{
			NI i_436220;
			NI HEX3Atmp_436271;
			NI HEX3Atmp_436272;
			NI res_436275;
			i_436220 = 0;
			HEX3Atmp_436271 = 0;
			HEX3Atmp_436272 = 0;
			HEX3Atmp_436271 = c.replacebyfieldname;
			HEX3Atmp_436272 = (NI)(L - ((NI) 3));
			res_436275 = ((NI) (HEX3Atmp_436271));
			{
				while (1) {
					if (!(res_436275 <= HEX3Atmp_436272)) goto LA25;
					i_436220 = res_436275;
					{
						Tnode190813* LOC28;
						Tident167021* LOC29;
						Tnode190813* call;
						Tnode190813* tupl;
						LOC28 = 0;
						LOC28 = HEX5BHEX5D_191244(forloop, i_436220);
						LOC29 = 0;
						LOC29 = considerquotedident_249010(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_436220 + ((NI) 1)) - ((NI) (c.replacebyfieldname)))];
						{
							Tnode190813* LOC36;
							if (!c.field == 0) goto LA34;
							result = newnodei_192351(((NU8) 42), (*n).info);
							add_191164(result, tupl);
							LOC36 = 0;
							LOC36 = newintnode_191608(((NU8) 6), ((NI64) (c.tupleindex)));
							add_191164(result, LOC36);
						}
						goto LA32;
						LA34: ;
						{
							Tnode190813* LOC38;
							result = newnodei_192351(((NU8) 45), (*n).info);
							add_191164(result, tupl);
							LOC38 = 0;
							LOC38 = newsymnode_192338(c.field, (*n).info);
							add_191164(result, LOC38);
						}
						LA32: ;
						goto LA23;
					}
					LA30: ;
					res_436275 += ((NI) 1);
				} LA25: ;
			}
		} LA23: ;
	}
	break;
	default:
	{
		NI LOC44;
		{
			if (!((*n).kind == ((NU8) 111))) goto LA42;
			localerror_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3439));
		}
		LA42: ;
		result = copynode_194640(n);
		LOC44 = 0;
		LOC44 = sonslen_193403(n);
		newsons_193272(result, LOC44);
		{
			NI i_436267;
			NI HEX3Atmp_436280;
			NI LOC46;
			NI res_436283;
			i_436267 = 0;
			HEX3Atmp_436280 = 0;
			LOC46 = 0;
			LOC46 = sonslen_193403(n);
			HEX3Atmp_436280 = (NI)(LOC46 - ((NI) 1));
			res_436283 = ((NI) 0);
			{
				while (1) {
					if (!(res_436283 <= HEX3Atmp_436280)) goto LA48;
					i_436267 = res_436283;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_436267]), instfieldloopbody_436152(c, (*n).kindU.S6.sons->data[i_436267], forloop));
					res_436283 += ((NI) 1);
				} LA48: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, semforobjectfields_436312)(Tfieldsctx436309 c, Tnode190813* typ, Tnode190813* forloop, Tnode190813* father) {
{	switch ((*typ).kind) {
	case ((NU8) 3):
	{
		Tfieldinstctx436147 fc;
		Tscope190837* LOC2;
		Tnode190813* body;
		Tnode190813* LOC3;
		Tnode190813* LOC4;
		memset((void*)(&fc), 0, sizeof(fc));
		fc.field = (*typ).kindU.S4.sym;
		fc.replacebyfieldname = (c.m == ((NU16) 153));
		LOC2 = 0;
		LOC2 = openscope_249091(c.c);
		(*c.c).inunrolledcontext += ((NI) 1);
		LOC3 = 0;
		LOC3 = lastson_193431(forloop);
		body = instfieldloopbody_436152(fc, LOC3, forloop);
		LOC4 = 0;
		LOC4 = semstmt_409277(c.c, body);
		add_191164(father, LOC4);
		(*c.c).inunrolledcontext -= ((NI) 1);
		closescope_249111(c.c);
	}
	break;
	case ((NU8) 23):
	{
	}
	break;
	case ((NU8) 139):
	{
		NI L_436350;
		Tnode190813* call;
		Tnode190813* LOC12;
		Tnode190813* casestmt;
		Tnode190813* access;
		Tnode190813* LOC13;
		L_436350 = len_191097(forloop);
		call = (*forloop).kindU.S6.sons->data[(NI)(L_436350 - ((NI) 2))];
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_191097(call);
			if (!(((NI) 2) < LOC9)) goto LA10;
			localerror_165155((*forloop).info, ((NU16) 4), ((NimStringDesc*) &TMP3440));
			goto BeforeRet;
		}
		LA10: ;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_191244(typ, ((NI) 0));
		semforobjectfields_436312(c, LOC12, forloop, father);
		casestmt = newnodei_192351(((NU8) 97), (*forloop).info);
		access = newnodei_192407(((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_192338((*(*typ).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym, (*forloop).info));
		LOC13 = 0;
		LOC13 = semexprwithtype_409211(c.c, access, 0);
		add_191164(casestmt, LOC13);
		{
			NI i_436381;
			NI HEX3Atmp_436392;
			NI LOC15;
			NI res_436395;
			i_436381 = 0;
			HEX3Atmp_436392 = 0;
			LOC15 = 0;
			LOC15 = len_191097(typ);
			HEX3Atmp_436392 = (LOC15 - 1);
			res_436395 = ((NI) 1);
			{
				while (1) {
					Tnode190813* branch;
					Tnode190813* LOC18;
					NI L;
					Tnode190813* LOC19;
					Tnode190813* LOC20;
					Tnode190813* LOC21;
					if (!(res_436395 <= HEX3Atmp_436392)) goto LA17;
					i_436381 = res_436395;
					LOC18 = 0;
					LOC18 = HEX5BHEX5D_191244(typ, i_436381);
					branch = copytree_195028(LOC18);
					L = len_191097(branch);
					asgnRefNoCycle((void**) (&(*branch).kindU.S6.sons->data[(NI)(L - ((NI) 1))]), newnodei_192351(((NU8) 115), (*forloop).info));
					LOC19 = 0;
					LOC19 = HEX5BHEX5D_191244(typ, i_436381);
					LOC20 = 0;
					LOC20 = lastson_193431(LOC19);
					LOC21 = 0;
					LOC21 = HEX5BHEX5D_191244(branch, (NI)(L - ((NI) 1)));
					semforobjectfields_436312(c, LOC20, forloop, LOC21);
					add_191164(casestmt, branch);
					res_436395 += ((NI) 1);
				} LA17: ;
			}
		}
		add_191164(father, casestmt);
	}
	break;
	case ((NU8) 138):
	{
		{
			Tnode190813* t_436389;
			t_436389 = 0;
			{
				NI i_436403;
				NI HEX3Atmp_436405;
				NI LOC25;
				NI res_436407;
				i_436403 = 0;
				HEX3Atmp_436405 = 0;
				LOC25 = 0;
				LOC25 = len_191097(typ);
				HEX3Atmp_436405 = (LOC25 - 1);
				res_436407 = ((NI) 0);
				{
					while (1) {
						if (!(res_436407 <= HEX3Atmp_436405)) goto LA27;
						i_436403 = res_436407;
						t_436389 = (*typ).kindU.S6.sons->data[i_436403];
						semforobjectfields_436312(c, t_436389, forloop, father);
						res_436407 += ((NI) 1);
					} LA27: ;
				}
			}
		}
	}
	break;
	default:
	{
		illformedastlocal_245239(typ);
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode190813*, semforfields_436434)(Tcontext244023* c, Tnode190813* n, NU16 m) {
	Tnode190813* result;
	Tsym190843* truesymbol;
	Tident167021* LOC1;
	Tnode190813* stmts;
	NI length;
	Tnode190813* call;
	Ttype190849* tupletypea;
{	result = 0;
	result = newnodei_192407(((NU8) 96), (*n).info, ((NI) 2));
	LOC1 = 0;
	LOC1 = getident_167463(((NimStringDesc*) &TMP3435));
	truesymbol = strtableget_198111((*systemmodule_238019).kindU.S3.tab, LOC1);
	{
		Tident167021* LOC6;
		Tsym190843* LOC7;
		if (!(truesymbol == NIM_NIL)) goto LA4;
		localerror_165155((*n).info, ((NU16) 64), ((NimStringDesc*) &TMP3436));
		LOC6 = 0;
		LOC6 = getident_167463(((NimStringDesc*) &TMP3435));
		LOC7 = 0;
		LOC7 = getcurrowner_244256();
		truesymbol = newsym_191656(((NU8) 0), LOC6, LOC7, (*n).info);
		asgnRefNoCycle((void**) (&(*truesymbol).typ), getsystype_238030(((NU8) 1)));
	}
	LA4: ;
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), newsymnode_192338(truesymbol, (*n).info));
	stmts = newnodei_192351(((NU8) 115), (*n).info);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 1)]), stmts);
	length = sonslen_193403(n);
	call = (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))];
	{
		NI LOC10;
		LOC10 = 0;
		LOC10 = sonslen_193403(call);
		if (!!(((NI)(length - ((NI) 2)) == (NI)((NI)(LOC10 - ((NI) 1)) + ((NI) ((m == ((NU16) 153)))))))) goto LA11;
		localerror_165155((*n).info, ((NU16) 111), ((NimStringDesc*) &TMP2989));
		goto BeforeRet;
	}
	LA11: ;
	tupletypea = skiptypes_194167((*(*call).kindU.S6.sons->data[((NI) 1)]).typ, IL64(211106240964608));
	{
		if (!!(((*tupletypea).kind == ((NU8) 18) || (*tupletypea).kind == ((NU8) 17)))) goto LA15;
		localerror_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3437));
		goto BeforeRet;
	}
	LA15: ;
	{
		NI i_436515;
		NI HEX3Atmp_436630;
		NI LOC18;
		NI res_436633;
		i_436515 = 0;
		HEX3Atmp_436630 = 0;
		LOC18 = 0;
		LOC18 = len_191097(call);
		HEX3Atmp_436630 = (NI)(LOC18 - ((NI) 1));
		res_436633 = ((NI) 1);
		{
			while (1) {
				Ttype190849* tupletypeb;
				if (!(res_436633 <= HEX3Atmp_436630)) goto LA20;
				i_436515 = res_436633;
				tupletypeb = skiptypes_194167((*(*call).kindU.S6.sons->data[i_436515]).typ, IL64(211106240964608));
				{
					NIM_BOOL LOC23;
					LOC23 = 0;
					LOC23 = sametype_225092(tupletypea, tupletypeb, 0);
					if (!!(LOC23)) goto LA24;
					typemismatch_409379((*call).kindU.S6.sons->data[i_436515], tupletypea, tupletypeb);
				}
				LA24: ;
				res_436633 += ((NI) 1);
			} LA20: ;
		}
	}
	(*(*c).p).nestedloopcounter += ((NI) 1);
	{
		Tnode190813* loopbody;
		if (!((*tupletypea).kind == ((NU8) 18))) goto LA28;
		loopbody = (*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))];
		{
			NI i_436562;
			NI HEX3Atmp_436639;
			NI LOC31;
			NI res_436642;
			i_436562 = 0;
			HEX3Atmp_436639 = 0;
			LOC31 = 0;
			LOC31 = sonslen_193351(tupletypea);
			HEX3Atmp_436639 = (NI)(LOC31 - ((NI) 1));
			res_436642 = ((NI) 0);
			{
				while (1) {
					Tscope190837* LOC34;
					Tfieldinstctx436147 fc;
					Tnode190813* body;
					Tnode190813* LOC35;
					if (!(res_436642 <= HEX3Atmp_436639)) goto LA33;
					i_436562 = res_436642;
					LOC34 = 0;
					LOC34 = openscope_249091(c);
					memset((void*)(&fc), 0, sizeof(fc));
					fc.tupletype = tupletypea;
					fc.tupleindex = i_436562;
					fc.replacebyfieldname = (m == ((NU16) 153));
					body = instfieldloopbody_436152(fc, loopbody, n);
					(*c).inunrolledcontext += ((NI) 1);
					LOC35 = 0;
					LOC35 = semstmt_409277(c, body);
					add_191164(stmts, LOC35);
					(*c).inunrolledcontext -= ((NI) 1);
					closescope_249111(c);
					res_436642 += ((NI) 1);
				} LA33: ;
			}
		}
	}
	goto LA26;
	LA28: ;
	{
		Tfieldsctx436309 fc;
		Ttype190849* 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_436312(fc, (*t).n, n, stmts);
				{
					if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA41;
					goto LA37;
				}
				LA41: ;
				t = skiptypes_194167((*t).sons->data[((NI) 0)], IL64(211106247256320));
			} LA38: ;
		} LA37: ;
	}
	LA26: ;
	(*(*c).p).nestedloopcounter -= ((NI) 1);
	{
		NIM_BOOL LOC45;
		Tnode190813* b;
		LOC45 = 0;
		LOC45 = containsnode_195365(stmts, TMP3441);
		if (!LOC45) goto LA46;
		b = newnodei_192351(((NU8) 110), (*n).info);
		add_191164(b, emptynode_191807);
		add_191164(stmts, b);
	}
	goto LA43;
	LA46: ;
	{
		result = stmts;
	}
	LA43: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, implicititerator_436947)(Tcontext244023* c, NimStringDesc* it, Tnode190813* arg) {
	Tnode190813* result;
	Tident167021* LOC1;
	Tnode190813* LOC2;
	result = 0;
	result = newnodei_192351(((NU8) 27), (*arg).info);
	LOC1 = 0;
	LOC1 = getident_167463(it);
	LOC2 = 0;
	LOC2 = newidentnode_192313(LOC1, (*arg).info);
	add_191164(result, LOC2);
	{
		NIM_BOOL LOC5;
		Tnode190813* 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_357024(arg);
		add_191164(result, LOC9);
	}
	goto LA3;
	LA7: ;
	{
		add_191164(result, arg);
	}
	LA3: ;
	result = semexprnoderef_409228(c, result, 2);
	return result;
}

N_NIMCALL(Tnode190813*, semfor_436981)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	NI length;
	Tscope190837* LOC1;
	Tnode190813* call;
	NIM_BOOL iscallexpr;
	result = 0;
	result = n;
	checkminsonslen_245259(n, ((NI) 3));
	length = sonslen_193403(n);
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]), semexprnoderef_409228(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;
		Tnode190813* LOC7;
		Tnode190813* LOC9;
		LOC4 = 0;
		LOC5 = 0;
		LOC5 = iscallexpr;
		if (!(LOC5)) goto LA6;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_191244(call, ((NI) 0));
		LOC5 = ((*LOC7).kind == ((NU8) 3));
		LA6: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA8;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_191244(call, ((NI) 0));
		LOC4 = ((*(*LOC9).kindU.S4.sym).magic == ((NU16) 152) || (*(*LOC9).kindU.S4.sym).magic == ((NU16) 153) || (*(*LOC9).kindU.S4.sym).magic == ((NU16) 154));
		LA8: ;
		if (!LOC4) goto LA10;
		{
			if (!((*(*(*call).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).magic == ((NU16) 154))) goto LA14;
			result = semforvars_436804(c, n);
			(*result).kind = ((NU8) 95);
		}
		goto LA12;
		LA14: ;
		{
			result = semforfields_436434(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_436804(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_436947(c, ((NimStringDesc*) &TMP3442), (*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_436947(c, ((NimStringDesc*) &TMP3443), (*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]));
		}
		goto LA31;
		LA36: ;
		{
			localerror_165155((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 2))]).info, ((NU16) 218), ((NimStringDesc*) &TMP2989));
		}
		LA31: ;
		result = semforvars_436804(c, n);
	}
	goto LA2;
	LA29: ;
	{
		result = semforvars_436804(c, n);
	}
	LA2: ;
	{
		if (!((*(*n).kindU.S6.sons->data[(NI)(length - ((NI) 1))]).typ == enforcevoidcontext_431005)) goto LA42;
		asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_431005);
	}
	LA42: ;
	closescope_249111(c);
	return result;
}

N_NIMCALL(NI64, tocover_431259)(Ttype190849* t) {
	NI64 result;
	Ttype190849* t2;
	result = 0;
	t2 = skiptypes_194167(t, IL64(211106242013184));
	{
		NIM_BOOL LOC3;
		NI LOC7;
		LOC3 = 0;
		LOC3 = ((*t2).kind == ((NU8) 14));
		if (!(LOC3)) goto LA4;
		LOC3 = enumhasholes_220099(t2);
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		LOC7 = sonslen_193403((*t2).n);
		result = ((NI64) (LOC7));
	}
	goto LA1;
	LA5: ;
	{
		Ttype190849* LOC9;
		LOC9 = 0;
		LOC9 = skiptypes_194167(t, IL64(211106240964608));
		result = lengthord_220016(LOC9);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semcase_433301)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tscope190837* LOC1;
	NIM_BOOL chckcovered;
	NI64 covered;
	Ttype190849* typ;
	NIM_BOOL haselse;
	NIM_BOOL notordinal;
	Ttype190849* LOC2;
{	result = 0;
	result = n;
	checkminsonslen_245259(n, ((NI) 2));
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
	chckcovered = NIM_FALSE;
	covered = IL64(0);
	typ = commontypebegin_409472;
	haselse = NIM_FALSE;
	notordinal = NIM_FALSE;
	LOC2 = 0;
	LOC2 = skiptypes_194167((*(*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_165155((*n).info, ((NU16) 107), ((NimStringDesc*) &TMP2989));
		goto BeforeRet;
	}
	break;
	}
	{
		NI i_433339;
		NI HEX3Atmp_433662;
		NI LOC7;
		NI res_433665;
		i_433339 = 0;
		HEX3Atmp_433662 = 0;
		LOC7 = 0;
		LOC7 = sonslen_193403(n);
		HEX3Atmp_433662 = (NI)(LOC7 - ((NI) 1));
		res_433665 = ((NI) 1);
		{
			while (1) {
				Tnode190813* x;
				if (!(res_433665 <= HEX3Atmp_433662)) goto LA9;
				i_433339 = res_433665;
				x = (*n).kindU.S6.sons->data[i_433339];
				switch ((*x).kind) {
				case ((NU8) 85):
				{
					NI last;
					NI LOC11;
					checkminsonslen_245259(x, ((NI) 2));
					semcasebranch_417947(c, n, x, i_433339, (&covered));
					LOC11 = 0;
					LOC11 = sonslen_193403(x);
					last = (NI)(LOC11 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[last]), semexprbranchscope_432635(c, (*x).kindU.S6.sons->data[last]));
					typ = commontype_409477(typ, (*(*x).kindU.S6.sons->data[last]).typ);
				}
				break;
				case ((NU8) 86):
				{
					Tscope190837* LOC13;
					Tnode190813* LOC14;
					chckcovered = NIM_FALSE;
					checksonslen_245249(x, ((NI) 2));
					LOC13 = 0;
					LOC13 = openscope_249091(c);
					LOC14 = 0;
					LOC14 = semexprwithtype_409211(c, (*x).kindU.S6.sons->data[((NI) 0)], 0);
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 0)]), forcebool_415629(c, LOC14));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 1)]), semexprbranch_432604(c, (*x).kindU.S6.sons->data[((NI) 1)]));
					typ = commontype_409477(typ, (*(*x).kindU.S6.sons->data[((NI) 1)]).typ);
					closescope_249111(c);
				}
				break;
				case ((NU8) 88):
				{
					chckcovered = NIM_FALSE;
					checksonslen_245249(x, ((NI) 1));
					asgnRefNoCycle((void**) (&(*x).kindU.S6.sons->data[((NI) 0)]), semexprbranchscope_432635(c, (*x).kindU.S6.sons->data[((NI) 0)]));
					typ = commontype_409477(typ, (*(*x).kindU.S6.sons->data[((NI) 0)]).typ);
					haselse = NIM_TRUE;
				}
				break;
				default:
				{
					illformedast_245229(x);
				}
				break;
				}
				res_433665 += ((NI) 1);
			} LA9: ;
		}
	}
	{
		NIM_BOOL LOC19;
		LOC19 = 0;
		LOC19 = notordinal;
		if (!(LOC19)) goto LA20;
		LOC19 = !(haselse);
		LA20: ;
		if (!LOC19) goto LA21;
		message_165188((*n).info, ((NU16) 234), ((NimStringDesc*) &TMP3444));
	}
	LA21: ;
	{
		if (!chckcovered) goto LA25;
		{
			NI64 LOC29;
			LOC29 = 0;
			LOC29 = tocover_431259((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			if (!(covered == LOC29)) goto LA30;
			haselse = NIM_TRUE;
		}
		goto LA27;
		LA30: ;
		{
			localerror_165155((*n).info, ((NU16) 151), ((NimStringDesc*) &TMP2989));
		}
		LA27: ;
	}
	LA25: ;
	closescope_249111(c);
	{
		NIM_BOOL LOC35;
		NIM_BOOL LOC36;
		LOC35 = 0;
		LOC36 = 0;
		LOC36 = isemptytype_195933(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_433628;
			NI HEX3Atmp_433670;
			NI LOC42;
			NI res_433673;
			i_433628 = 0;
			HEX3Atmp_433670 = 0;
			LOC42 = 0;
			LOC42 = len_191097(n);
			HEX3Atmp_433670 = (NI)(LOC42 - ((NI) 1));
			res_433673 = ((NI) 1);
			{
				while (1) {
					Tnode190813* LOC45;
					if (!(res_433673 <= HEX3Atmp_433670)) goto LA44;
					i_433628 = res_433673;
					LOC45 = 0;
					LOC45 = lastson_193431((*n).kindU.S6.sons->data[i_433628]);
					discardcheck_432756(c, LOC45);
					res_433673 += ((NI) 1);
				} LA44: ;
			}
		}
		{
			if (!(typ == enforcevoidcontext_431005)) goto LA48;
			asgnRefNoCycle((void**) (&(*result).typ), enforcevoidcontext_431005);
		}
		LA48: ;
	}
	goto LA33;
	LA39: ;
	{
		{
			NI i_433653;
			NI HEX3Atmp_433678;
			NI LOC52;
			NI res_433681;
			i_433653 = 0;
			HEX3Atmp_433678 = 0;
			LOC52 = 0;
			LOC52 = len_191097(n);
			HEX3Atmp_433678 = (NI)(LOC52 - ((NI) 1));
			res_433681 = ((NI) 1);
			{
				while (1) {
					Tnode190813* it;
					NI j;
					NI LOC55;
					if (!(res_433681 <= HEX3Atmp_433678)) goto LA54;
					i_433653 = res_433681;
					it = (*n).kindU.S6.sons->data[i_433653];
					LOC55 = 0;
					LOC55 = len_191097(it);
					j = (NI)(LOC55 - ((NI) 1));
					asgnRefNoCycle((void**) (&(*it).kindU.S6.sons->data[j]), fitnode_409245(c, typ, (*it).kindU.S6.sons->data[j]));
					res_433681 += ((NI) 1);
				} LA54: ;
			}
		}
		asgnRefNoCycle((void**) (&(*result).typ), typ);
	}
	LA33: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semreturn_447260)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = n;
	checksonslen_245249(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;
			{
				Tnode190813* a;
				Tnode190813* LOC13;
				if (!!(((*(*c).p).resultsym == NIM_NIL))) goto LA11;
				a = newnodei_192351(((NU8) 73), (*(*n).kindU.S6.sons->data[((NI) 0)]).info);
				LOC13 = 0;
				LOC13 = newsymnode_192325((*(*c).p).resultsym);
				addson_192819(a, LOC13);
				addson_192819(a, (*n).kindU.S6.sons->data[((NI) 0)]);
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semasgn_447081(c, a));
				{
					NIM_BOOL LOC16;
					Tnode190813* LOC17;
					Tnode190813* LOC18;
					Tnode190813* LOC20;
					Tnode190813* LOC21;
					LOC16 = 0;
					LOC17 = 0;
					LOC17 = HEX5BHEX5D_191244(n, ((NI) 0));
					LOC18 = 0;
					LOC18 = HEX5BHEX5D_191244(LOC17, ((NI) 1));
					LOC16 = ((*LOC18).kind == ((NU8) 3));
					if (!(LOC16)) goto LA19;
					LOC20 = 0;
					LOC20 = HEX5BHEX5D_191244(n, ((NI) 0));
					LOC21 = 0;
					LOC21 = HEX5BHEX5D_191244(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_191807);
				}
				LA22: ;
			}
			goto LA9;
			LA11: ;
			{
				localerror_165155((*n).info, ((NU16) 179), ((NimStringDesc*) &TMP2989));
			}
			LA9: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		localerror_165155((*n).info, ((NU16) 163), ((NimStringDesc*) &TMP3445));
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semusing_447837)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = newnodei_192351(((NU8) 1), (*n).info);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = experimentalmode_245279(c);
		if (!!(LOC3)) goto LA4;
		localerror_165166((*n).info, ((NimStringDesc*) &TMP3446));
	}
	LA4: ;
	{
		Tnode190813* e_447852;
		Tnodeseq190807* HEX3Atmp_447892;
		NI i_447895;
		NI L_447897;
		e_447852 = 0;
		HEX3Atmp_447892 = 0;
		HEX3Atmp_447892 = (*n).kindU.S6.sons;
		i_447895 = ((NI) 0);
		L_447897 = (HEX3Atmp_447892 ? HEX3Atmp_447892->Sup.len : 0);
		{
			while (1) {
				if (!(i_447895 < L_447897)) goto LA8;
				e_447852 = HEX3Atmp_447892->data[i_447895];
				{
					Tnode190813* usedsym;
					NimStringDesc* LOC17;
					usedsym = semexpr_409201(c, e_447852, 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_413279((&(*(*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_249629((*c).currentscope, (*usedsym).kindU.S4.sym);
							goto LA9;
						}
						break;
						default:
						{
						}
						break;
						}
					}
					LA12: ;
					LOC17 = 0;
					LOC17 = rendertree_212058(e_447852, 0);
					localerror_165155((*e_447852).info, ((NU16) 200), LOC17);
				} LA9: ;
				i_447895 += ((NI) 1);
			} LA8: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode190813*, semasm_431207)(Tcontext244023* con, Tnode190813* n) {
	Tnode190813* result;
	NIM_CHAR marker;
	result = 0;
	checksonslen_245249(n, ((NI) 2));
	marker = pragmaasm_260088(con, (*n).kindU.S6.sons->data[((NI) 0)]);
	{
		if (!((NU8)(marker) == (NU8)(0))) goto LA3;
		marker = 96;
	}
	LA3: ;
	result = semasmoremit_261547(con, n, marker);
	return result;
}

N_NIMCALL(void, semyieldvarresult_447425)(Tcontext244023* c, Tnode190813* n, Ttype190849* restype) {
	Ttype190849* t;
	t = skiptypes_194167(restype, 2048);
	switch ((*t).kind) {
	case ((NU8) 23):
	{
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), takeimplicitaddr_446986(c, (*n).kindU.S6.sons->data[((NI) 0)]));
	}
	break;
	case ((NU8) 18):
	{
		{
			NI i_447452;
			NI HEX3Atmp_447508;
			NI LOC4;
			NI res_447511;
			i_447452 = 0;
			HEX3Atmp_447508 = 0;
			LOC4 = 0;
			LOC4 = sonslen_193351(t);
			HEX3Atmp_447508 = (LOC4 - 1);
			res_447511 = ((NI) 0);
			{
				while (1) {
					Ttype190849* e;
					if (!(res_447511 <= HEX3Atmp_447508)) goto LA6;
					i_447452 = res_447511;
					e = skiptypes_194167((*t).sons->data[i_447452], 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_447452]), takeimplicitaddr_446986(c, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[i_447452]));
						}
						goto LA11;
						LA13: ;
						{
							NIM_BOOL LOC16;
							Tnode190813* 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_447452]), takeimplicitaddr_446986(c, (*a).kindU.S6.sons->data[i_447452]));
						}
						goto LA11;
						LA18: ;
						{
							localerror_165155((*(*n).kindU.S6.sons->data[((NI) 0)]).info, ((NU16) 188), ((NimStringDesc*) &TMP3448));
						}
						LA11: ;
					}
					LA9: ;
					res_447511 += ((NI) 1);
				} LA6: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
}

N_NIMCALL(Tnode190813*, semyield_447527)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = n;
	checksonslen_245249(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_165155((*n).info, ((NU16) 36), ((NimStringDesc*) &TMP2989));
	}
	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_165155((*n).info, ((NU16) 37), ((NimStringDesc*) &TMP2989));
	}
	goto LA1;
	LA10: ;
	{
		Ttype190849* itertype;
		Ttype190849* restype;
		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 1)))) goto LA13;
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexprwithtype_409211(c, (*n).kindU.S6.sons->data[((NI) 0)], 0));
		itertype = (*(*(*c).p).owner).typ;
		restype = (*itertype).sons->data[((NI) 0)];
		{
			Ttype190849* adjustedres;
			if (!!((restype == NIM_NIL))) goto LA17;
			{
				if (!((*restype).kind == ((NU8) 49))) goto LA21;
				adjustedres = base_220039(restype);
			}
			goto LA19;
			LA21: ;
			{
				adjustedres = restype;
			}
			LA19: ;
			{
				if (!!(((*adjustedres).kind == ((NU8) 6)))) goto LA26;
				asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), fitnode_409245(c, adjustedres, (*n).kindU.S6.sons->data[((NI) 0)]));
			}
			LA26: ;
			{
				if (!((*(*n).kindU.S6.sons->data[((NI) 0)]).typ == NIM_NIL)) goto LA30;
				internalerror_165199((*n).info, ((NimStringDesc*) &TMP3447));
			}
			LA30: ;
			{
				NIM_BOOL LOC34;
				Ttype190849* inferred;
				LOC34 = 0;
				LOC34 = ismetatype_191821(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_447425(c, n, adjustedres);
		}
		goto LA15;
		LA17: ;
		{
			localerror_165155((*n).info, ((NU16) 39), ((NimStringDesc*) &TMP2989));
		}
		LA15: ;
	}
	goto LA1;
	LA13: ;
	{
		if (!!(((*(*(*(*c).p).owner).typ).sons->data[((NI) 0)] == NIM_NIL))) goto LA45;
		localerror_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3449));
	}
	goto LA1;
	LA45: ;
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, semiterator_439512)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	NU8 kind;
	Tsym190843* s;
	Ttype190849* t;
	result = 0;
	{
		NIM_BOOL LOC3;
		Tnode190813* LOC4;
		Tnode190813* LOC6;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_191244(n, ((NI) 4));
		LOC3 = haspragma_263698(LOC4, ((NU16) 137));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_191244(n, ((NI) 0));
		LOC3 = ((*LOC6).kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		kind = ((NU8) 15);
	}
	goto LA1;
	LA7: ;
	{
		kind = ((NU8) 14);
	}
	LA1: ;
	{
		Tnode190813* LOC12;
		Tnode190813* LOC15;
		Tnode190813* LOC16;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_191244(n, ((NI) 0));
		if (!((*LOC12).kind == ((NU8) 3))) goto LA13;
		LOC15 = 0;
		LOC15 = HEX5BHEX5D_191244(n, ((NI) 0));
		asgnRefNoCycle((void**) (&(*(*LOC15).kindU.S4.sym).owner), getcurrowner_244256());
		LOC16 = 0;
		LOC16 = HEX5BHEX5D_191244(n, ((NI) 0));
		(*(*LOC16).kindU.S4.sym).kind = kind;
	}
	LA13: ;
	result = semprocaux_438890(c, n, kind, TMP3451, ((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_165155((*n).info, ((NU16) 178), ((NimStringDesc*) &TMP3452));
	}
	LA21: ;
	{
		if (!((*(*s).typ).callconv == ((NU8) 8))) goto LA25;
		(*(*s).typ).flags |= ((NI32)1)<<((((NU8) 11))%(sizeof(NI32)*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 == ((NU16) 0));
		LA31: ;
		if (!LOC30) goto LA32;
		localerror_165155((*n).info, ((NU16) 138), (*(*s).name).s);
	}
	LA32: ;
	return result;
}

N_NIMCALL(Tnode190813*, semmethod_439688)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tsym190843* s;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_245269(c);
		if (!!(LOC3)) goto LA4;
		localerror_165155((*n).info, ((NU16) 181), ((NimStringDesc*) &TMP3453));
	}
	LA4: ;
	result = semprocaux_438890(c, n, ((NU8) 13), TMP3165, ((NU8) 0));
	s = (*(*result).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = isgenericroutine_195651(s);
		if (!!(LOC8)) goto LA9;
		{
			NIM_BOOL LOC13;
			LOC13 = 0;
			LOC13 = hasobjparam_439633(s);
			if (!LOC13) goto LA14;
			methoddef_355634(s, NIM_FALSE);
		}
		goto LA11;
		LA14: ;
		{
			localerror_165155((*n).info, ((NU16) 182), ((NimStringDesc*) &TMP3453));
		}
		LA11: ;
	}
	LA9: ;
	return result;
}

N_NIMCALL(Tnode190813*, semconverterdef_439699)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tsym190843* s;
	Ttype190849* t;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_245269(c);
		if (!!(LOC3)) goto LA4;
		localerror_165155((*n).info, ((NU16) 181), ((NimStringDesc*) &TMP3454));
	}
	LA4: ;
	checksonslen_245249(n, ((NI) 7));
	result = semprocaux_438890(c, n, ((NU8) 16), TMP3165, ((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_165155((*n).info, ((NU16) 178), ((NimStringDesc*) &TMP3454));
	}
	LA8: ;
	{
		NI LOC12;
		LOC12 = 0;
		LOC12 = sonslen_193351(t);
		if (!!((LOC12 == ((NI) 2)))) goto LA13;
		localerror_165155((*n).info, ((NU16) 213), ((NimStringDesc*) &TMP3454));
	}
	LA13: ;
	addconverter_244562(c, s);
	return result;
}

N_NIMCALL(Tnode190813*, semmacrodef_439724)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tsym190843* s;
	Ttype190849* t;
	result = 0;
	checksonslen_245249(n, ((NI) 7));
	result = semprocaux_438890(c, n, ((NU8) 17), TMP3455, ((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_165155((*n).info, ((NU16) 178), ((NimStringDesc*) &TMP3456));
	}
	LA3: ;
	{
		if (!((*(*n).kindU.S6.sons->data[((NI) 6)]).kind == ((NU8) 1))) goto LA7;
		localerror_165155((*n).info, ((NU16) 138), (*(*s).name).s);
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode190813*, evalinclude_439760)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = newnodei_192351(((NU8) 115), (*n).info);
	addson_192819(result, n);
	{
		NI i_439777;
		NI HEX3Atmp_439783;
		NI LOC2;
		NI res_439786;
		i_439777 = 0;
		HEX3Atmp_439783 = 0;
		LOC2 = 0;
		LOC2 = sonslen_193403(n);
		HEX3Atmp_439783 = (NI)(LOC2 - ((NI) 1));
		res_439786 = ((NI) 0);
		{
			while (1) {
				NI32 f;
				if (!(res_439786 <= HEX3Atmp_439783)) goto LA4;
				i_439777 = res_439786;
				f = checkmodulename_251064((*n).kindU.S6.sons->data[i_439777]);
				{
					if (!!((f == ((NI32) -1)))) goto LA7;
					{
						NIM_BOOL LOC11;
						NimStringDesc* LOC14;
						LOC11 = 0;
						LOC11 = containsorincl_187898((&(*c).includedfiles), ((NI) (f)));
						if (!LOC11) goto LA12;
						LOC14 = 0;
						LOC14 = tofilename_164266(f);
						localerror_165155((*n).info, ((NU16) 25), LOC14);
					}
					goto LA9;
					LA12: ;
					{
						Tnode190813* LOC16;
						Tnode190813* LOC17;
						LOC16 = 0;
						LOC16 = gincludefile_241073((*c).module, f);
						LOC17 = 0;
						LOC17 = semstmt_409277(c, LOC16);
						addson_192819(result, LOC17);
						excl_187871((&(*c).includedfiles), ((NI) (f)));
					}
					LA9: ;
				}
				LA7: ;
				res_439786 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode190813*, semexport_449816)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* x;
	result = 0;
	x = newnodei_192351((*n).kind, (*n).info);
	{
		NI i_449841;
		NI HEX3Atmp_450006;
		NI LOC2;
		NI res_450009;
		i_449841 = 0;
		HEX3Atmp_450006 = 0;
		LOC2 = 0;
		LOC2 = len_191097(n);
		HEX3Atmp_450006 = (LOC2 - 1);
		res_450009 = ((NI) 0);
		{
			while (1) {
				Tnode190813* a;
				Toverloaditer249431 o;
				Tsym190843* s;
				if (!(res_450009 <= HEX3Atmp_450006)) goto LA4;
				i_449841 = res_450009;
				a = (*n).kindU.S6.sons->data[i_449841];
				memset((void*)(&o), 0, sizeof(o));
				s = initoverloaditer_250108((&o), c, a);
				{
					NimStringDesc* LOC9;
					NimStringDesc* LOC10;
					if (!(s == NIM_NIL)) goto LA7;
					LOC9 = 0;
					LOC10 = 0;
					LOC10 = rendertree_212058(a, 0);
					LOC9 = rawNewString(LOC10->Sup.len + 15);
appendString(LOC9, ((NimStringDesc*) &TMP3473));
appendString(LOC9, LOC10);
					localerror_165155((*a).info, ((NU16) 4), LOC9);
				}
				goto LA5;
				LA7: ;
				{
					Tnode190813* LOC14;
					Ttabiter198119 ti;
					Tsym190843* it;
					if (!((*s).kind == ((NU8) 6))) goto LA12;
					strtableadd_198103((&(*(*c).module).kindU.S3.tab), s);
					LOC14 = 0;
					LOC14 = newsymnode_192338(s, (*a).info);
					add_191164(x, LOC14);
					memset((void*)(&ti), 0, sizeof(ti));
					it = inittabiter_198124((&ti), (*s).kindU.S3.tab);
					{
						while (1) {
							if (!!((it == NIM_NIL))) goto LA16;
							{
								if (!((43513792 &(1<<(((*it).kind)&31)))!=0)) goto LA19;
								strtableadd_198103((&(*(*c).module).kindU.S3.tab), it);
							}
							LA19: ;
							it = nextiter_198132((&ti), (*s).kindU.S3.tab);
						} LA16: ;
					}
				}
				goto LA5;
				LA12: ;
				{
					{
						while (1) {
							if (!!((s == NIM_NIL))) goto LA23;
							{
								Tnode190813* LOC28;
								if (!((43513792 &(1<<(((*s).kind)&31)))!=0)) goto LA26;
								LOC28 = 0;
								LOC28 = newsymnode_192338(s, (*a).info);
								add_191164(x, LOC28);
								strtableadd_198103((&(*(*c).module).kindU.S3.tab), s);
							}
							LA26: ;
							s = nextoverloaditer_250277((&o), c, a);
						} LA23: ;
					}
				}
				LA5: ;
				res_450009 += ((NI) 1);
			} LA4: ;
		}
	}
	result = n;
	return result;
}

N_NIMCALL(void, setline_439802)(Tnode190813* n, Tlineinfo163338 info) {
	{
		NI i_439824;
		NI HEX3Atmp_439827;
		NI LOC2;
		NI res_439830;
		i_439824 = 0;
		HEX3Atmp_439827 = 0;
		LOC2 = 0;
		LOC2 = safelen_191125(n);
		HEX3Atmp_439827 = (LOC2 - 1);
		res_439830 = ((NI) 0);
		{
			while (1) {
				if (!(res_439830 <= HEX3Atmp_439827)) goto LA4;
				i_439824 = res_439830;
				setline_439802((*n).kindU.S6.sons->data[i_439824], info);
				res_439830 += ((NI) 1);
			} LA4: ;
		}
	}
	(*n).info = info;
}

N_NIMCALL(Tnode190813*, sempragmablock_439846)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* pragmalist;
	result = 0;
	pragmalist = (*n).kindU.S6.sons->data[((NI) 0)];
	pragma_260069(c, NIM_NIL, pragmalist, TMP3474);
	result = semexpr_409201(c, (*n).kindU.S6.sons->data[((NI) 1)], 0);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 1)]), result);
	{
		NI i_439874;
		NI HEX3Atmp_439879;
		NI LOC2;
		NI res_439882;
		i_439874 = 0;
		HEX3Atmp_439879 = 0;
		LOC2 = 0;
		LOC2 = len_191097(pragmalist);
		HEX3Atmp_439879 = (LOC2 - 1);
		res_439882 = ((NI) 0);
		{
			while (1) {
				NU16 LOC5;
				if (!(res_439882 <= HEX3Atmp_439879)) goto LA4;
				i_439874 = res_439882;
				LOC5 = 0;
				LOC5 = whichpragma_219673((*pragmalist).kindU.S6.sons->data[i_439874]);
				switch (LOC5) {
				case ((NU16) 113):
				{
					setline_439802(result, (*(*pragmalist).kindU.S6.sons->data[i_439874]).info);
				}
				break;
				case ((NU16) 193):
				{
					result = n;
					asgnRefNoCycle((void**) (&(*result).typ), (*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
				}
				break;
				default:
				{
				}
				break;
				}
				res_439882 += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}

N_NIMCALL(Tnode190813*, semstaticstmt_439898)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* a;
	result = 0;
	a = semstmt_409277(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), a);
	evalstaticstmt_397844((*c).module, a, (*(*c).p).owner);
	result = newnodei_192407(((NU8) 114), (*n).info, ((NI) 1));
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[((NI) 0)]), emptynode_191807);
	return result;
}

N_NIMCALL(Tnode190813*, semexpr_409201)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
{	result = 0;
	result = n;
	{
		if (!(gcmd_154130 == ((NU8) 14))) goto LA3;
		suggestexpr_354070(c, n);
	}
	LA3: ;
	{
		if (!(((*n).flags &(1<<((((NU8) 6))&15)))!=0)) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	switch ((*n).kind) {
	case ((NU8) 2):
	case ((NU8) 53):
	{
		Tsym190843* s;
		s = lookup_249804(c, n);
		{
			if (!((*c).intypeclass == ((NI) 0))) goto LA12;
			semcapturesym_361834(s, (*(*c).p).owner);
		}
		LA12: ;
		result = semsym_441038(c, n, s, flags);
		{
			if (!((126976 &(1<<(((*s).kind)&31)))!=0)) goto LA16;
			result = symchoice_422316(c, n, s, ((NU8) 0));
			{
				if (!((*result).kind == ((NU8) 3))) goto LA20;
				markindirect_245197(c, (*result).kindU.S4.sym);
			}
			LA20: ;
		}
		LA16: ;
	}
	break;
	case ((NU8) 3):
	{
		result = semsym_441038(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_238030(((NU8) 5)));
		}
		LA27: ;
	}
	break;
	case ((NU8) 6):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA32;
			setintlittype_238774(result);
		}
		LA32: ;
	}
	break;
	case ((NU8) 7):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA37;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 32)));
		}
		LA37: ;
	}
	break;
	case ((NU8) 8):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA42;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 33)));
		}
		LA42: ;
	}
	break;
	case ((NU8) 9):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA47;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 34)));
		}
		LA47: ;
	}
	break;
	case ((NU8) 10):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA52;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 35)));
		}
		LA52: ;
	}
	break;
	case ((NU8) 11):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA57;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 40)));
		}
		LA57: ;
	}
	break;
	case ((NU8) 12):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA62;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 41)));
		}
		LA62: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA67;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 42)));
		}
		LA67: ;
	}
	break;
	case ((NU8) 14):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA72;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 43)));
		}
		LA72: ;
	}
	break;
	case ((NU8) 15):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA77;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 44)));
		}
		LA77: ;
	}
	break;
	case ((NU8) 16):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA82;
			asgnRefNoCycle((void**) (&(*result).typ), getfloatlittype_238686(result));
		}
		LA82: ;
	}
	break;
	case ((NU8) 17):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA87;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 37)));
		}
		LA87: ;
	}
	break;
	case ((NU8) 18):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA92;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 38)));
		}
		LA92: ;
	}
	break;
	case ((NU8) 19):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA97;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 39)));
		}
		LA97: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA102;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 28)));
		}
		LA102: ;
	}
	break;
	case ((NU8) 5):
	{
		{
			if (!((*result).typ == NIM_NIL)) goto LA107;
			asgnRefNoCycle((void**) (&(*result).typ), getsystype_238030(((NU8) 2)));
		}
		LA107: ;
	}
	break;
	case ((NU8) 45):
	{
		result = semfieldaccess_440814(c, n, flags);
		{
			if (!((*result).kind == ((NU8) 25))) goto LA112;
			(*result).kind = ((NU8) 27);
			result = semexpr_409201(c, result, flags);
		}
		LA112: ;
	}
	break;
	case ((NU8) 55):
	{
		message_165188((*n).info, ((NU16) 234), ((NimStringDesc*) &TMP3389));
		result = semexpr_409201(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):
	{
		Ttype190849* typ;
		Ttype190849* LOC116;
		LOC116 = 0;
		LOC116 = semtypenode_409269(c, n, NIM_NIL);
		typ = skiptypes_194167(LOC116, IL64(562949953421568));
		asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_244682(c, typ));
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		NU8 mode;
		Tsym190843* s;
		checkminsonslen_245259(n, ((NI) 1));
		{
			if (!(((*n).flags &(1<<((((NU8) 8))&15)))!=0)) goto LA120;
			mode = 0;
		}
		goto LA118;
		LA120: ;
		{
			mode = 2;
		}
		LA118: ;
		s = qualifiedlookup_249864(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_410032(c, n, flags);
				}
				goto LA128;
				LA130: ;
				{
					result = semmacroexpr_410066(c, n, n, s, flags);
				}
				LA128: ;
			}
			break;
			case ((NU8) 18):
			{
				{
					if (!!((((*s).flags &(1<<((((NU8) 25))&31)))!=0))) goto LA136;
					result = semdirectop_410032(c, n, flags);
				}
				goto LA134;
				LA136: ;
				{
					result = semtemplateexpr_410055(c, n, s, flags);
				}
				LA134: ;
			}
			break;
			case ((NU8) 7):
			{
				{
					NI LOC142;
					LOC142 = 0;
					LOC142 = len_191097(n);
					if (!(LOC142 == ((NI) 2))) goto LA143;
					result = semconv_442510(c, n);
				}
				goto LA140;
				LA143: ;
				{
					NI LOC146;
					LOC146 = 0;
					LOC146 = len_191097(n);
					if (!(LOC146 == ((NI) 1))) goto LA147;
					result = semobjconstr_445040(c, n, flags);
				}
				goto LA140;
				LA147: ;
				{
					NIM_BOOL LOC150;
					LOC150 = 0;
					LOC150 = contains_187829((*c).ambiguoussymbols, (*s).Sup.id);
					if (!LOC150) goto LA151;
					localerror_165155((*n).info, ((NU16) 62), (*(*s).name).s);
				}
				goto LA140;
				LA151: ;
				{
					if (!((*s).magic == ((NU16) 0))) goto LA154;
					result = semdirectop_410032(c, n, flags);
				}
				goto LA140;
				LA154: ;
				{
					result = semmagic_448578(c, n, s, flags);
				}
				LA140: ;
			}
			break;
			case ((NU8) 12):
			case ((NU8) 13):
			case ((NU8) 16):
			case ((NU8) 14):
			case ((NU8) 15):
			{
				{
					if (!((*s).magic == ((NU16) 0))) goto LA160;
					result = semdirectop_410032(c, n, flags);
				}
				goto LA158;
				LA160: ;
				{
					result = semmagic_448578(c, n, s, flags);
				}
				LA158: ;
			}
			break;
			default:
			{
				result = semindirectop_445071(c, n, flags);
			}
			break;
			}
		}
		goto LA123;
		LA125: ;
		{
			NIM_BOOL LOC165;
			Tnode190813* LOC166;
			Tnode190813* LOC168;
			Tnode190813* LOC169;
			LOC165 = 0;
			LOC166 = 0;
			LOC166 = HEX5BHEX5D_191244(n, ((NI) 0));
			LOC165 = ((*LOC166).kind == ((NU8) 42));
			if (!(LOC165)) goto LA167;
			LOC168 = 0;
			LOC168 = HEX5BHEX5D_191244(n, ((NI) 0));
			LOC169 = 0;
			LOC169 = HEX5BHEX5D_191244(LOC168, ((NI) 0));
			LOC165 = issymchoice_442471(LOC169);
			LA167: ;
			if (!LOC165) goto LA170;
			setgenericparams_450037(c, (*n).kindU.S6.sons->data[((NI) 0)]);
			result = semdirectop_410032(c, n, flags);
		}
		goto LA123;
		LA170: ;
		{
			NIM_BOOL LOC173;
			LOC173 = 0;
			LOC173 = issymchoice_442471((*n).kindU.S6.sons->data[((NI) 0)]);
			if (LOC173) goto LA174;
			LOC173 = (((*n).flags &(1<<((((NU8) 8))&15)))!=0);
			LA174: ;
			if (!LOC173) goto LA175;
			result = semdirectop_410032(c, n, flags);
		}
		goto LA123;
		LA175: ;
		{
			result = semindirectop_445071(c, n, flags);
		}
		LA123: ;
	}
	break;
	case ((NU8) 93):
	{
		{
			if (!((flags &(1<<((((NU8) 3))&15)))!=0)) goto LA181;
			result = semwhen_410040(c, n, NIM_TRUE);
		}
		goto LA179;
		LA181: ;
		{
			result = semwhen_410040(c, n, NIM_FALSE);
			result = semexpr_409201(c, result, flags);
		}
		LA179: ;
	}
	break;
	case ((NU8) 42):
	{
		Tsym190843* s;
		checkminsonslen_245259(n, ((NI) 1));
		s = qualifiedlookup_249864(c, (*n).kindU.S6.sons->data[((NI) 0)], 2);
		{
			NIM_BOOL LOC187;
			NIM_BOOL LOC188;
			Tnode190813* LOC191;
			LOC187 = 0;
			LOC188 = 0;
			LOC188 = !((s == NIM_NIL));
			if (!(LOC188)) goto LA189;
			LOC188 = ((126976 &(1<<(((*s).kind)&31)))!=0);
			LA189: ;
			LOC187 = LOC188;
			if (LOC187) goto LA190;
			LOC191 = 0;
			LOC191 = HEX5BHEX5D_191244(n, ((NI) 0));
			LOC187 = ((*LOC191).kind == ((NU8) 56) || (*LOC191).kind == ((NU8) 57));
			LA190: ;
			if (!LOC187) goto LA192;
			asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semsymgenericinstantiation_441019(c, (*n).kindU.S6.sons->data[((NI) 0)], s));
			result = explicitgenericinstantiation_415005(c, n, s);
		}
		goto LA185;
		LA192: ;
		{
			NIM_BOOL LOC195;
			Ttype190849* LOC199;
			LOC195 = 0;
			LOC195 = !((s == NIM_NIL));
			if (!(LOC195)) goto LA196;
			LOC195 = ((128 &(1<<(((*s).kind)&31)))!=0);
			LA196: ;
			if (!LOC195) goto LA197;
			LOC199 = 0;
			LOC199 = semtypenode_409269(c, n, NIM_NIL);
			result = symnodefromtype_410113(c, LOC199, (*n).info);
		}
		goto LA185;
		LA197: ;
		{
			result = semarrayaccess_446898(c, n, flags);
		}
		LA185: ;
	}
	break;
	case ((NU8) 40):
	{
		Tident167021* LOC202;
		Tnode190813* LOC203;
		LOC202 = 0;
		LOC202 = getident_167463(((NimStringDesc*) &TMP3419));
		LOC203 = 0;
		LOC203 = buildoverloadedsubscripts_446722(n, LOC202);
		result = semexpr_409201(c, LOC203, flags);
	}
	break;
	case ((NU8) 43):
	{
		internalerror_165199((*n).info, ((NimStringDesc*) &TMP3420));
	}
	break;
	case ((NU8) 37):
	{
		NU8 LOC206;
		LOC206 = 0;
		LOC206 = checkpar_448990(n);
		switch (LOC206) {
		case ((NU8) 0):
		{
			result = errornode_245160(c, n);
		}
		break;
		case ((NU8) 3):
		{
			Tnode190813* tupexp;
			tupexp = semtuplepositionsconstr_449204(c, n, flags);
			{
				NIM_BOOL LOC211;
				Ttype190849* typ;
				Ttype190849* LOC214;
				LOC211 = 0;
				LOC211 = istupletype_449260(tupexp);
				if (!LOC211) goto LA212;
				LOC214 = 0;
				LOC214 = semtypenode_409269(c, n, NIM_NIL);
				typ = skiptypes_194167(LOC214, IL64(562949953421568));
				asgnRefNoCycle((void**) (&(*result).typ), maketypedesc_244682(c, typ));
			}
			goto LA209;
			LA212: ;
			{
				result = tupexp;
			}
			LA209: ;
		}
		break;
		case ((NU8) 2):
		{
			result = semtuplefieldsconstr_449092(c, n, flags);
		}
		break;
		case ((NU8) 1):
		{
			result = semexpr_409201(c, (*n).kindU.S6.sons->data[((NI) 0)], flags);
		}
		break;
		}
	}
	break;
	case ((NU8) 39):
	{
		result = semsetconstr_448734(c, n);
	}
	break;
	case ((NU8) 41):
	{
		result = semarrayconstr_443273(c, n, flags);
	}
	break;
	case ((NU8) 38):
	{
		result = semobjconstr_445040(c, n, flags);
	}
	break;
	case ((NU8) 51):
	{
		result = semlambda_409261(c, n, flags);
	}
	break;
	case ((NU8) 52):
	{
		result = semdo_438430(c, n, flags);
	}
	break;
	case ((NU8) 47):
	{
		result = semderef_446761(c, n);
	}
	break;
	case ((NU8) 63):
	{
		result = n;
		checksonslen_245249(n, ((NI) 1));
		result = semaddr_444049(c, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 64):
	case ((NU8) 65):
	{
		checksonslen_245249(n, ((NI) 1));
		asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 0)]), semexpr_409201(c, (*n).kindU.S6.sons->data[((NI) 0)], flags));
	}
	break;
	case ((NU8) 61):
	{
		result = semcast_442625(c, n);
	}
	break;
	case ((NU8) 48):
	case ((NU8) 92):
	{
		result = semif_432860(c, n);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	case ((NU8) 32):
	{
		checksonslen_245249(n, ((NI) 2));
	}
	break;
	case ((NU8) 71):
	case ((NU8) 72):
	case ((NU8) 66):
	case ((NU8) 67):
	{
		checksonslen_245249(n, ((NI) 1));
	}
	break;
	case ((NU8) 68):
	case ((NU8) 69):
	case ((NU8) 70):
	{
		checksonslen_245249(n, ((NI) 3));
	}
	break;
	case ((NU8) 46):
	{
		checkminsonslen_245259(n, ((NI) 2));
	}
	break;
	case ((NU8) 54):
	{
		result = semtableconstr_448895(c, n);
	}
	break;
	case ((NU8) 56):
	case ((NU8) 57):
	{
	}
	break;
	case ((NU8) 62):
	{
		result = semstaticexpr_444881(c, n);
	}
	break;
	case ((NU8) 73):
	{
		result = semasgn_447081(c, n);
	}
	break;
	case ((NU8) 112):
	case ((NU8) 127):
	{
		result = semblock_449650(c, n);
	}
	break;
	case ((NU8) 115):
	case ((NU8) 126):
	{
		result = semstmtlist_440086(c, n, flags);
	}
	break;
	case ((NU8) 108):
	{
		result = semraise_437101(c, n);
	}
	break;
	case ((NU8) 99):
	{
		result = semvarorlet_435418(c, n, ((NU8) 8));
	}
	break;
	case ((NU8) 100):
	{
		result = semvarorlet_435418(c, n, ((NU8) 9));
	}
	break;
	case ((NU8) 101):
	{
		result = semconst_435982(c, n);
	}
	break;
	case ((NU8) 98):
	{
		result = semtypesection_437873(c, n);
	}
	break;
	case ((NU8) 114):
	{
		result = semdiscard_431006(c, n);
	}
	break;
	case ((NU8) 96):
	{
		result = semwhile_431217(c, n);
	}
	break;
	case ((NU8) 106):
	{
		result = semtry_433715(c, n);
	}
	break;
	case ((NU8) 110):
	case ((NU8) 111):
	{
		result = sembreakorcontinue_431027(c, n);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		result = semfor_436981(c, n);
	}
	break;
	case ((NU8) 97):
	{
		result = semcase_433301(c, n);
	}
	break;
	case ((NU8) 109):
	{
		result = semreturn_447260(c, n);
	}
	break;
	case ((NU8) 124):
	{
		result = semusing_447837(c, n);
	}
	break;
	case ((NU8) 89):
	{
		result = semasm_431207(c, n);
	}
	break;
	case ((NU8) 104):
	{
		result = semyield_447527(c, n);
	}
	break;
	case ((NU8) 90):
	{
		pragma_260069(c, (*(*c).p).owner, n, TMP3450);
	}
	break;
	case ((NU8) 84):
	{
		result = semiterator_439512(c, n);
	}
	break;
	case ((NU8) 79):
	{
		result = semproc_431397(c, n);
	}
	break;
	case ((NU8) 80):
	{
		result = semmethod_439688(c, n);
	}
	break;
	case ((NU8) 81):
	{
		result = semconverterdef_439699(c, n);
	}
	break;
	case ((NU8) 82):
	{
		result = semmacrodef_439724(c, n);
	}
	break;
	case ((NU8) 83):
	{
		result = semtemplatedef_425550(c, n);
	}
	break;
	case ((NU8) 116):
	{
		{
			NIM_BOOL LOC263;
			LOC263 = 0;
			LOC263 = istoplevel_245269(c);
			if (!!(LOC263)) goto LA264;
			localerror_165155((*n).info, ((NU16) 181), ((NimStringDesc*) &TMP3457));
		}
		LA264: ;
		result = evalimport_251004(c, n);
	}
	break;
	case ((NU8) 117):
	{
		{
			NIM_BOOL LOC269;
			LOC269 = 0;
			LOC269 = istoplevel_245269(c);
			if (!!(LOC269)) goto LA270;
			localerror_165155((*n).info, ((NU16) 181), ((NimStringDesc*) &TMP3457));
		}
		LA270: ;
		result = evalimportexcept_251857(c, n);
	}
	break;
	case ((NU8) 120):
	{
		{
			NIM_BOOL LOC275;
			LOC275 = 0;
			LOC275 = istoplevel_245269(c);
			if (!!(LOC275)) goto LA276;
			localerror_165155((*n).info, ((NU16) 181), ((NimStringDesc*) &TMP3468));
		}
		LA276: ;
		result = evalfrom_251011(c, n);
	}
	break;
	case ((NU8) 121):
	{
		{
			NIM_BOOL LOC281;
			LOC281 = 0;
			LOC281 = istoplevel_245269(c);
			if (!!(LOC281)) goto LA282;
			localerror_165155((*n).info, ((NU16) 181), ((NimStringDesc*) &TMP3471));
		}
		LA282: ;
		result = evalinclude_439760(c, n);
	}
	break;
	case ((NU8) 118):
	case ((NU8) 119):
	{
		{
			NIM_BOOL LOC287;
			LOC287 = 0;
			LOC287 = istoplevel_245269(c);
			if (!!(LOC287)) goto LA288;
			localerror_165155((*n).info, ((NU16) 181), ((NimStringDesc*) &TMP3472));
		}
		LA288: ;
		result = semexport_449816(c, n);
	}
	break;
	case ((NU8) 91):
	{
		result = sempragmablock_439846(c, n);
	}
	break;
	case ((NU8) 113):
	{
		result = semstaticstmt_439898(c, n);
	}
	break;
	case ((NU8) 105):
	{
		localerror_165155((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3475));
	}
	break;
	default:
	{
		NimStringDesc* LOC294;
		LOC294 = 0;
		LOC294 = rendertree_212058(n, 4);
		localerror_165155((*n).info, ((NU16) 168), LOC294);
	}
	break;
	}
	{
		if (!!((result == NIM_NIL))) goto LA297;
		(*result).flags |= ((NI16)1)<<((((NU8) 6))%(sizeof(NI16)*8));
	}
	LA297: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semexprwithtype_409211)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	result = 0;
	result = semexpr_409201(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_245160(c, n);
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		NimStringDesc* LOC13;
		LOC9 = 0;
		LOC9 = ((*result).typ == NIM_NIL);
		if (LOC9) goto LA10;
		LOC9 = ((*result).typ == enforcevoidcontext_431005);
		LA10: ;
		if (!LOC9) goto LA11;
		LOC13 = 0;
		LOC13 = rendertree_212058(result, 4);
		localerror_165155((*n).info, ((NU16) 90), LOC13);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_245150(c));
	}
	goto LA7;
	LA11: ;
	{
		semprocvarcheck_431366(c, result);
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA17;
			result = newderef_357024(result);
		}
		LA17: ;
		semdestructorcheck_432440(c, result, flags);
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode190813*, semconstexpr_410485)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tnode190813* e;
{	result = 0;
	e = semexprwithtype_409211(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3;
		localerror_165155((*n).info, ((NU16) 104), ((NimStringDesc*) &TMP2989));
		result = n;
		goto BeforeRet;
	}
	LA3: ;
	result = getconstexpr_256004((*c).module, e);
	{
		if (!(result == NIM_NIL)) goto LA7;
		result = evalconstexpr_397821((*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_164789((*e).info, (*n).info);
				if (!!(LOC17)) goto LA18;
				pushinfocontext_164192((*n).info);
				localerror_165155((*e).info, ((NU16) 104), ((NimStringDesc*) &TMP2989));
				popinfocontext_164211();
			}
			goto LA15;
			LA18: ;
			{
				localerror_165155((*e).info, ((NU16) 104), ((NimStringDesc*) &TMP2989));
			}
			LA15: ;
			result = e;
		}
		goto LA9;
		LA13: ;
		{
			result = fixuptypeaftereval_410201(c, result, e);
		}
		LA9: ;
	}
	LA7: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, tryconstexpr_410420)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* volatile result;
	Tnode190813* e;
	NI olderrorcount;
	NI olderrormax;
	NU8 olderroroutputs;
	TSafePoint TMP3476;
{	result = 0;
	e = semexprwithtype_409211(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = getconstexpr_256004((*c).module, e);
	{
		if (!!((result == NIM_NIL))) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	olderrorcount = gerrorcounter_164015;
	olderrormax = gerrormax_164018;
	olderroroutputs = erroroutputs_164056;
	erroroutputs_164056 = 0;
	gerrormax_164018 = ((NI) 2147483647);
	pushSafePoint(&TMP3476);
	TMP3476.status = _setjmp(TMP3476.context);
	if (TMP3476.status == 0) {
		result = evalconstexpr_397821((*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_410201(c, result, e);
		}
		LA10: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI163344))) {
			TMP3476.status = 0;
			result = NIM_NIL;
			popCurrentException();
		}
	}
	if (TMP3476.status != 0) reraiseException();
	gerrorcounter_164015 = olderrorcount;
	gerrormax_164018 = olderrormax;
	erroroutputs_164056 = olderroroutputs;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, semoperand_440821)(Tcontext244023* c, Tnode190813* n, NU16 flags) {
	Tnode190813* result;
	result = 0;
	result = semexpr_409201(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_245160(c, n);
	}
	LA5: ;
	{
		if (!!(((*result).typ == NIM_NIL))) goto LA9;
		{
			if (!((*(*result).typ).kind == ((NU8) 23))) goto LA13;
			result = newderef_357024(result);
		}
		LA13: ;
	}
	goto LA7;
	LA9: ;
	{
		if (!!(((24 & flags) == 0))) goto LA16;
		asgnRefNoCycle((void**) (&(*result).typ), newtypes_244219(((NU8) 3), c));
	}
	goto LA7;
	LA16: ;
	{
		NimStringDesc* LOC19;
		LOC19 = 0;
		LOC19 = rendertree_212058(result, 4);
		localerror_165155((*n).info, ((NU16) 90), LOC19);
		asgnRefNoCycle((void**) (&(*result).typ), errortype_245150(c));
	}
	LA7: ;
	return result;
}

N_NIMCALL(Tnode190813*, seminferredlambda_438457)(Tcontext244023* c, Tidtable190861 pt, Tnode190813* n_438461) {
	Tnode190813* result;
	Tnode190813* n;
	Tscope190837* LOC1;
	Tsym190843* s;
	Tnode190813* sembody;
	Tnode190813* LOC2;
	result = 0;
	n = n_438461;
	n = replacetypesinbody_267617(c, pt, n);
	result = n;
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 2)]), emptynode_191807);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 3)]), (*(*n).typ).n);
	LOC1 = 0;
	LOC1 = openscope_249091(c);
	s = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym;
	pushowner_244261(s);
	addparams_409293(c, (*(*n).typ).n, ((NU8) 12));
	pushproccon_244359(c, s);
	addresult_437997(c, (*(*n).typ).sons->data[((NI) 0)], (*n).info, ((NU8) 12));
	addresultnode_438031(c, n);
	LOC2 = 0;
	LOC2 = semprocbody_409238(c, (*n).kindU.S6.sons->data[((NI) 6)]);
	sembody = hlobody_411161(c, LOC2);
	asgnRefNoCycle((void**) (&(*n).kindU.S6.sons->data[((NI) 6)]), transformbody_370118((*c).module, sembody, (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym));
	popproccon_244391(c);
	popowner_244267();
	closescope_249111(c);
	asgnRefNoCycle((void**) (&(*s).ast), result);
	return result;
}

N_NIMCALL(Tpasscontext241005*, myopen_450686)(Tsym190843* module) {
	Tpasscontext241005* result;
	Tcontext244023* c;
	TY244124 LOC5;
	TY244130 LOC6;
	result = 0;
	c = newcontext_244182(module);
	{
		if (!!(((*c).p == NIM_NIL))) goto LA3;
		internalerror_165199((*module).info, ((NimStringDesc*) &TMP1961));
	}
	LA3: ;
	(*c).semconstexpr = semconstexpr_410485;
	(*c).semexpr = semexpr_409201;
	(*c).semtryexpr = tryexpr_409317;
	(*c).semtryconstexpr = tryconstexpr_410420;
	(*c).semoperand = semoperand_440821;
	(*c).semconstboolexpr = semconstboolexpr_415652;
	(*c).semoverloadedcall = semoverloadedcall_414892;
	memset((void*)(&LOC5), 0, sizeof(LOC5));
	LOC5.ClPrc = ((TMP3477) (seminferredlambda_438457)); LOC5.ClEnv = NIM_NIL;
	asgnRef((void**) (&(*c).seminferredlambda.ClEnv), LOC5.ClEnv);
	(*c).seminferredlambda.ClPrc = LOC5.ClPrc;
	memset((void*)(&LOC6), 0, sizeof(LOC6));
	LOC6.ClPrc = ((TMP3478) (generateinstance_412450)); LOC6.ClEnv = NIM_NIL;
	asgnRef((void**) (&(*c).semgenerateinstance.ClEnv), LOC6.ClEnv);
	(*c).semgenerateinstance.ClPrc = LOC6.ClPrc;
	(*c).semtypenode = semtypenode_409269;
	(*c).insttypeboundop = insttypeboundop_350551;
	pushproccon_244359(c, module);
	pushowner_244261((*c).module);
	asgnRef((void**) (&(*c).importtable), openscope_249091(c));
	strtableadd_198103((&(*(*c).importtable).symbols), module);
	{
		if (!(((*module).flags &(1<<((((NU8) 13))&31)))!=0)) goto LA9;
		asgnRefNoCycle((void**) (&systemmodule_238019), module);
	}
	goto LA7;
	LA9: ;
	{
		strtableadd_198103((&(*(*c).importtable).symbols), systemmodule_238019);
		importallsymbols_251389(c, systemmodule_238019);
	}
	LA7: ;
	asgnRef((void**) (&(*c).toplevelscope), openscope_249091(c));
	result = &c->Sup;
	return result;
}

N_NIMCALL(Tpasscontext241005*, myopencached_450723)(Tsym190843* module, Trodreader233030* rd) {
	Tpasscontext241005* result;
	result = 0;
	result = myopen_450686(module);
	{
		Tsym190843* m_450737;
		Tsymseq190815* HEX3Atmp_450739;
		NI i_450742;
		NI L_450744;
		m_450737 = 0;
		HEX3Atmp_450739 = 0;
		HEX3Atmp_450739 = (*rd).methods;
		i_450742 = ((NI) 0);
		L_450744 = (HEX3Atmp_450739 ? HEX3Atmp_450739->Sup.len : 0);
		{
			while (1) {
				if (!(i_450742 < L_450744)) goto LA3;
				m_450737 = HEX3Atmp_450739->data[i_450742];
				methoddef_355634(m_450737, NIM_TRUE);
				i_450742 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(void, addcodeforgenerics_450577)(Tcontext244023* c, Tnode190813* n) {
	{
		NI i_450601;
		NI HEX3Atmp_450663;
		NI HEX3Atmp_450664;
		NI res_450667;
		i_450601 = 0;
		HEX3Atmp_450663 = 0;
		HEX3Atmp_450664 = 0;
		HEX3Atmp_450663 = (*c).lastgenericidx;
		HEX3Atmp_450664 = (NI)(((*c).generics ? (*c).generics->Sup.len : 0) - ((NI) 1));
		res_450667 = HEX3Atmp_450663;
		{
			while (1) {
				Tsym190843* prc;
				if (!(res_450667 <= HEX3Atmp_450664)) goto LA3;
				i_450601 = res_450667;
				prc = (*(*c).generics->data[i_450601].inst).sym;
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = ((77824 &(1<<(((*prc).kind)&31)))!=0);
					if (!(LOC6)) goto LA7;
					LOC6 = ((*prc).magic == ((NU16) 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*) &TMP3481));
appendString(LOC16, (*(*prc).name).s);
						internalerror_165199((*prc).info, LOC16);
					}
					goto LA10;
					LA14: ;
					{
						addson_192819(n, (*prc).ast);
					}
					LA10: ;
				}
				LA8: ;
				res_450667 += ((NI) 1);
			} LA3: ;
		}
	}
	(*c).lastgenericidx = ((*c).generics ? (*c).generics->Sup.len : 0);
}

N_NIMCALL(Tnode190813*, hlostmt_411187)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*c).patterns ? (*c).patterns->Sup.len : 0) == ((NI) 0));
		if (LOC3) goto LA4;
		LOC3 = !(((goptions_154126 &(1<<((((NU8) 21))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
		goto BeforeRet;
	}
	LA5: ;
	(*c).hloloopdetector = ((NI) 0);
	result = hlo_410542(c, n);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, buildechostmt_445412)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	Tsym190843* e;
	Tident167021* LOC1;
	result = 0;
	result = newnodei_192351(((NU8) 27), (*n).info);
	LOC1 = 0;
	LOC1 = getident_167463(((NimStringDesc*) &TMP3482));
	e = strtableget_198111((*systemmodule_238019).kindU.S3.tab, LOC1);
	{
		Tnode190813* LOC6;
		if (!!((e == NIM_NIL))) goto LA4;
		LOC6 = 0;
		LOC6 = newsymnode_192325(e);
		add_191164(result, LOC6);
	}
	goto LA2;
	LA4: ;
	{
		Tnode190813* LOC8;
		localerror_165155((*n).info, ((NU16) 64), ((NimStringDesc*) &TMP3483));
		LOC8 = 0;
		LOC8 = errornode_245160(c, n);
		add_191164(result, LOC8);
	}
	LA2: ;
	add_191164(result, n);
	result = semexpr_409201(c, result, 0);
	return result;
}

N_NIMCALL(Tnode190813*, semstmtandgenerategenerics_450760)(Tcontext244023* c, Tnode190813* n) {
	Tnode190813* result;
	result = 0;
	result = semstmt_409277(c, n);
	{
		Tnode190813* a;
		if (!((*c).lastgenericidx < ((*c).generics ? (*c).generics->Sup.len : 0))) goto LA3;
		a = newnodei_192351(((NU8) 115), (*n).info);
		addcodeforgenerics_450577(c, a);
		{
			NI LOC7;
			LOC7 = 0;
			LOC7 = sonslen_193403(a);
			if (!(((NI) 0) < LOC7)) goto LA8;
			{
				if (!!(((*result).kind == ((NU8) 1)))) goto LA12;
				addson_192819(a, result);
			}
			LA12: ;
			result = a;
		}
		LA8: ;
	}
	LA3: ;
	result = hlostmt_411187(c, result);
	{
		NIM_BOOL LOC16;
		NIM_BOOL LOC18;
		LOC16 = 0;
		LOC16 = (gcmd_154130 == ((NU8) 18));
		if (!(LOC16)) goto LA17;
		LOC18 = 0;
		LOC18 = isemptytype_195933((*result).typ);
		LOC16 = !(LOC18);
		LA17: ;
		if (!LOC16) goto LA19;
		result = buildechostmt_445412(c, result);
	}
	LA19: ;
	result = transformstmt_370207((*c).module, result);
	return result;
}

N_NIMCALL(void, recovercontext_450798)(Tcontext244023* c) {
	asgnRef((void**) (&(*c).currentscope), (*c).toplevelscope);
	{
		while (1) {
			Tsym190843* LOC3;
			LOC3 = 0;
			LOC3 = getcurrowner_244256();
			if (!!(((*LOC3).kind == ((NU8) 6)))) goto LA2;
			popowner_244267();
		} 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_22817(obj, subclass, cache);
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode190813*, myprocess_450851)(Tpasscontext241005* context, Tnode190813* n) {
	Tnode190813* volatile result;
	Tcontext244023* c;
	result = 0;
	c = ((Tcontext244023*) (context));
	{
		if (!(gerrormax_164018 <= ((NI) 1))) goto LA3;
		result = semstmtandgenerategenerics_450760(c, n);
	}
	goto LA1;
	LA3: ;
	{
		NI oldcontextlen;
		NI oldingenericinst;
		TSafePoint TMP3484;
		oldcontextlen = getinfocontextlen_164156();
		oldingenericinst = (*c).ingenericinst;
		pushSafePoint(&TMP3484);
		TMP3484.status = _setjmp(TMP3484.context);
		if (TMP3484.status == 0) {
			result = semstmtandgenerategenerics_450760(c, n);
			popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(getCurrentException()->Sup.m_type, (&NTI163344))||isObj(getCurrentException()->Sup.m_type, (&NTI163346))) {
				TMP3484.status = 0;
				recovercontext_450798(c);
				(*c).ingenericinst = oldingenericinst;
				setinfocontextlen_164173(oldcontextlen);
				{
					Exception* LOC11;
					LOC11 = 0;
					LOC11 = getCurrentException();
					if (!((LOC11) && (isObjWithCache((*LOC11).Sup.m_type, (&NTI163346), Nim_OfCheck_CACHE1)))) goto LA12;
					result = NIM_NIL;
				}
				goto LA9;
				LA12: ;
				{
					result = emptynode_191807;
				}
				LA9: ;
				popCurrentException();
			}
		}
		if (TMP3484.status != 0) reraiseException();
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode190813*, myclose_450867)(Tpasscontext241005* context, Tnode190813* n) {
	Tnode190813* result;
	Tcontext244023* c;
	result = 0;
	c = ((Tcontext244023*) (context));
	closescope_249111(c);
	rawclosescope_249102(c);
	result = newnode_191401(((NU8) 115));
	{
		if (!!((n == NIM_NIL))) goto LA3;
		internalerror_165199((*n).info, ((NimStringDesc*) &TMP3485));
	}
	LA3: ;
	addcodeforgenerics_450577(c, result);
	{
		if (!!(((*(*c).module).ast == NIM_NIL))) goto LA7;
		add_191164(result, (*(*c).module).ast);
	}
	LA7: ;
	popowner_244267();
	popproccon_244391(c);
	return result;
}
NIM_EXTERNC N_NOINLINE(void, nimsrc_semInit)(void) {
	Ttype190849* LOC1;
	Ttype190849* LOC2;
	Tident167021* LOC3;
	Tlineinfo163338 LOC4;
	LOC1 = 0;
	LOC1 = (Ttype190849*) newObj((&NTI190809), sizeof(Ttype190849));
	(*LOC1).Sup.Sup.m_type = (&NTI190849);
	(*LOC1).kind = ((NU8) 6);
	asgnRefNoCycle((void**) (&commontypebegin_409472), LOC1);
	asgnRefNoCycle((void**) (&typedescid_419273), getident_167463(((NimStringDesc*) &TMP1033)));
	LOC2 = 0;
	LOC2 = (Ttype190849*) newObj((&NTI190809), sizeof(Ttype190849));
	(*LOC2).Sup.Sup.m_type = (&NTI190849);
	(*LOC2).kind = ((NU8) 7);
	asgnRefNoCycle((void**) (&enforcevoidcontext_431005), LOC2);
	if (analyzingdestructor_431401) nimGCunrefNoCycle(analyzingdestructor_431401);
	analyzingdestructor_431401 = (Tsym190843*) newObjRC1((&NTI190811), sizeof(Tsym190843));
	(*analyzingdestructor_431401).Sup.Sup.m_type = (&NTI190843);
	if (destructoristrivial_431402) nimGCunrefNoCycle(destructoristrivial_431402);
	destructoristrivial_431402 = (Tsym190843*) newObjRC1((&NTI190811), sizeof(Tsym190843));
	(*destructoristrivial_431402).Sup.Sup.m_type = (&NTI190843);
	asgnRefNoCycle((void**) (&destructorname_431419), getident_167463(((NimStringDesc*) &TMP1034)));
	asgnRefNoCycle((void**) (&destructorparam_431420), getident_167463(((NimStringDesc*) &TMP1035)));
	LOC3 = 0;
	LOC3 = getident_167463(((NimStringDesc*) &TMP1036));
	LOC4 = unknownlineinfo_164027();
	asgnRefNoCycle((void**) (&destructorpragma_431421), newidentnode_192313(LOC3, LOC4));
}

NIM_EXTERNC N_NOINLINE(void, nimsrc_semDatInit)(void) {
static TNimNode* TMP3102[2];
static TNimNode* TMP3130[5];
static TNimNode* TMP4008[2];
static TNimNode TMP860[12];
NTI412758.size = sizeof(TY412758);
NTI412758.kind = 18;
NTI412758.base = 0;
NTI412758.flags = 2;
TMP3102[0] = &TMP860[1];
TMP860[1].kind = 1;
TMP860[1].offset = offsetof(TY412758, Field0);
TMP860[1].typ = (&NTI190811);
TMP860[1].name = "Field0";
TMP3102[1] = &TMP860[2];
TMP860[2].kind = 1;
TMP860[2].offset = offsetof(TY412758, Field1);
TMP860[2].typ = (&NTI108);
TMP860[2].name = "Field1";
TMP860[0].len = 2; TMP860[0].kind = 2; TMP860[0].sons = &TMP3102[0];
NTI412758.node = &TMP860[0];
NTI412757.size = sizeof(TY412757*);
NTI412757.kind = 24;
NTI412757.base = (&NTI412758);
NTI412757.flags = 2;
NTI412757.marker = TMP3103;
NTI420253.size = sizeof(TY420253);
NTI420253.kind = 18;
NTI420253.base = 0;
TMP3130[0] = &TMP860[4];
TMP860[4].kind = 1;
TMP860[4].offset = offsetof(TY420253, HEX3Astate);
TMP860[4].typ = (&NTI310033);
TMP860[4].name = ":state";
TMP3130[1] = &TMP860[5];
TMP860[5].kind = 1;
TMP860[5].offset = offsetof(TY420253, paramname419285);
TMP860[5].typ = (&NTI149);
TMP860[5].name = "paramName419285";
TMP3130[2] = &TMP860[6];
TMP860[6].kind = 1;
TMP860[6].offset = offsetof(TY420253, genericparams419283);
TMP860[6].typ = (&NTI190805);
TMP860[6].name = "genericParams419283";
TMP3130[3] = &TMP860[7];
TMP860[7].kind = 1;
TMP860[7].offset = offsetof(TY420253, info419286);
TMP860[7].typ = (&NTI163338);
TMP860[7].name = "info419286";
TMP3130[4] = &TMP860[8];
TMP860[8].kind = 1;
TMP860[8].offset = offsetof(TY420253, c419281);
TMP860[8].typ = (&NTI244021);
TMP860[8].name = "c419281";
TMP860[3].len = 5; TMP860[3].kind = 2; TMP860[3].sons = &TMP3130[0];
NTI420253.node = &TMP860[3];
NTI420311.size = sizeof(TY420253*);
NTI420311.kind = 22;
NTI420311.base = (&NTI420253);
NTI420311.marker = TMP3131;
NTI432269.size = sizeof(TY432269);
NTI432269.kind = 18;
NTI432269.base = 0;
NTI432269.flags = 2;
TMP4008[0] = &TMP860[10];
TMP860[10].kind = 1;
TMP860[10].offset = offsetof(TY432269, Field0);
TMP860[10].typ = (&NTI190805);
TMP860[10].name = "Field0";
TMP4008[1] = &TMP860[11];
TMP860[11].kind = 1;
TMP860[11].offset = offsetof(TY432269, Field1);
TMP860[11].typ = (&NTI190805);
TMP860[11].name = "Field1";
TMP860[9].len = 2; TMP860[9].kind = 2; TMP860[9].sons = &TMP4008[0];
NTI432269.node = &TMP860[9];
}

