/* Generated by Nimrod Compiler v0.9.5 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
/* Compiled for: Linux, i386, gcc */
/* Command for C compiler:
   gcc -c  -w -O3 -fno-strict-aliasing  -I/build/nimrod/src/nimrod/lib -o compiler/nimcache/sem.o compiler/nimcache/sem.c */
#define NIM_INTBITS 32
#include "nimbase.h"

#include <string.h>

#include <setjmp.h>
typedef struct ttype188837 ttype188837;
typedef struct tidobj167013 tidobj167013;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct ttypeseq188835 ttypeseq188835;
typedef struct TGenericSeq TGenericSeq;
typedef struct tnode188803 tnode188803;
typedef struct tsym188833 tsym188833;
typedef struct tloc188817 tloc188817;
typedef struct trope145007 trope145007;
typedef struct tcell41090 tcell41090;
typedef struct tcellseq41106 tcellseq41106;
typedef struct tgcheap43016 tgcheap43016;
typedef struct tcellset41102 tcellset41102;
typedef struct tpagedesc41098 tpagedesc41098;
typedef struct tmemregion23410 tmemregion23410;
typedef struct tsmallchunk22638 tsmallchunk22638;
typedef struct tllchunk23404 tllchunk23404;
typedef struct tbigchunk22640 tbigchunk22640;
typedef struct tintset22615 tintset22615;
typedef struct ttrunk22611 ttrunk22611;
typedef struct tavlnode23408 tavlnode23408;
typedef struct tgcstat43014 tgcstat43014;
typedef struct tident167019 tident167019;
typedef struct NimStringDesc NimStringDesc;
typedef struct tscope188827 tscope188827;
typedef struct TY188933 TY188933;
typedef struct tinstantiation188823 tinstantiation188823;
typedef struct tstrtable188807 tstrtable188807;
typedef struct tsymseq188805 tsymseq188805;
typedef struct tlineinfo163527 tlineinfo163527;
typedef struct tlib188821 tlib188821;
typedef struct tpasscontext246003 tpasscontext246003;
typedef struct tcontext250019 tcontext250019;
typedef struct tproccon250009 tproccon250009;
typedef struct tintset185047 tintset185047;
typedef struct ttrunk185043 ttrunk185043;
typedef struct ttrunkseq185045 ttrunkseq185045;
typedef struct tlinkedlist118023 tlinkedlist118023;
typedef struct tlistentry118017 tlistentry118017;
typedef struct tidtable188849 tidtable188849;
typedef struct tidpairseq188847 tidpairseq188847;
typedef struct tidpair188845 tidpair188845;
typedef struct tctx249037 tctx249037;
typedef struct TY250131 TY250131;
typedef struct tinstantiationpair250011 tinstantiationpair250011;
typedef struct tnodeseq188797 tnodeseq188797;
typedef struct toverloaditer252363 toverloaditer252363;
typedef struct tidentiter197106 tidentiter197106;
typedef struct TY79484 TY79484;
typedef struct tcandidate345205 tcandidate345205;
typedef struct TY110805 TY110805;
typedef struct trepltypevars273546 trepltypevars273546;
typedef struct TY188922 TY188922;
typedef struct toptionentry250003 toptionentry250003;
typedef struct TY427566 TY427566;
typedef struct templctx430596 templctx430596;
typedef struct tslice78892 tslice78892;
typedef struct ttabiter197090 ttabiter197090;
typedef struct E_Base E_Base;
typedef struct TSafePoint TSafePoint;
typedef struct TY439278 TY439278;
typedef struct tfieldinstctx443024 tfieldinstctx443024;
typedef struct tfieldsctx443300 tfieldsctx443300;
typedef struct trodreader236024 trodreader236024;
typedef struct tindex236022 tindex236022;
typedef struct tiitable197207 tiitable197207;
typedef struct tiipairseq197205 tiipairseq197205;
typedef struct tiipair197203 tiipair197203;
typedef struct tmemfile234204 tmemfile234204;
typedef struct tbasechunk22636 tbasechunk22636;
typedef struct tfreecell22628 tfreecell22628;
typedef struct TY249229 TY249229;
typedef struct TY164208 TY164208;
typedef struct pprocHEX3Aobjecttype249216 pprocHEX3Aobjecttype249216;
typedef struct TY249217 TY249217;
typedef struct tblock249023 tblock249023;
typedef struct TY249198 TY249198;
typedef struct TY249223 TY249223;
typedef N_NIMCALL_PTR(void, TY2289) (void* p, NI op);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY2289 marker;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tidobj167013  {
  TNimObject Sup;
NI Id;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  tloc188817  {
NU8 K;
NU8 S;
NU8 Flags;
ttype188837* T;
trope145007* R;
trope145007* Heaproot;
NI A;
};
struct  ttype188837  {
  tidobj167013 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq188835* Sons;
tnode188803* N;
tsym188833* Destructor;
tsym188833* Owner;
tsym188833* Sym;
NI64 Size;
NI Align;
tloc188817 Loc;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  tcell41090  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq41106  {
NI Len;
NI Cap;
tcell41090** D;
};
struct  tcellset41102  {
NI Counter;
NI Max;
tpagedesc41098* Head;
tpagedesc41098** Data;
};
typedef tsmallchunk22638* TY23422[512];
typedef ttrunk22611* ttrunkbuckets22613[256];
struct  tintset22615  {
ttrunkbuckets22613 Data;
};
struct  tmemregion23410  {
NI Minlargeobj;
NI Maxlargeobj;
TY23422 Freesmallchunks;
tllchunk23404* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk22640* Freechunkslist;
tintset22615 Chunkstarts;
tavlnode23408* Root;
tavlnode23408* Deleted;
tavlnode23408* Last;
tavlnode23408* Freeavlnodes;
};
struct  tgcstat43014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap43016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq41106 Zct;
tcellseq41106 Decstack;
tcellset41102 Cycleroots;
tcellseq41106 Tempstack;
NI Recgclock;
tmemregion23410 Region;
tgcstat43014 Stat;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tstrtable188807  {
NI Counter;
tsymseq188805* Data;
};
struct  tlineinfo163527  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  tsym188833  {
  tidobj167013 Sup;
NU8 Kind;
union {
struct {ttypeseq188835* Typeinstcache;
tscope188827* Typscope;
} S1;
struct {TY188933* Procinstcache;
tscope188827* Scope;
} S2;
struct {TY188933* Usedgenerics;
tstrtable188807 Tab;
} S3;
} kindU;
NU16 Magic;
ttype188837* Typ;
tident167019* Name;
tlineinfo163527 Info;
tsym188833* Owner;
NU32 Flags;
tnode188803* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc188817 Loc;
tlib188821* Annex;
tnode188803* Constraint;
};
struct  tpasscontext246003  {
  TNimObject Sup;
NIM_BOOL Fromcache;
};
struct  tintset185047  {
NI Counter;
NI Max;
ttrunk185043* Head;
ttrunkseq185045* Data;
};
struct  tlinkedlist118023  {
tlistentry118017* Head;
tlistentry118017* Tail;
NI Counter;
};
struct  tidpair188845  {
tidobj167013* Key;
TNimObject* Val;
};
struct  tidtable188849  {
NI Counter;
tidpairseq188847* Data;
};
typedef N_NIMCALL_PTR(tnode188803*, TY250061) (tcontext250019* c, tnode188803* n);
typedef N_NIMCALL_PTR(tnode188803*, TY250066) (tcontext250019* c, tnode188803* n, NU16 flags);
typedef N_NIMCALL_PTR(tnode188803*, TY250074) (tcontext250019* c, tnode188803* n, NU16 flags, NIM_BOOL buffererrors);
typedef N_NIMCALL_PTR(tnode188803*, TY250083) (tcontext250019* c, tnode188803* n);
typedef N_NIMCALL_PTR(tnode188803*, TY250088) (tcontext250019* c, tnode188803* n, NU16 flags);
typedef N_NIMCALL_PTR(tnode188803*, TY250096) (tcontext250019* c, tnode188803* n);
typedef N_NIMCALL_PTR(tnode188803*, TY250101) (tcontext250019* c, tnode188803* n, tnode188803* norig, NU32 filter);
typedef N_NIMCALL_PTR(ttype188837*, TY250108) (tcontext250019* c, tnode188803* n, ttype188837* prev);
typedef struct {
N_NIMCALL_PTR(tnode188803*, ClPrc) (tcontext250019* c, tidtable188849 pt, tnode188803* n, void* ClEnv);
void* ClEnv;
} TY250114;
typedef struct {
N_NIMCALL_PTR(tsym188833*, ClPrc) (tcontext250019* c, tsym188833* fn, tidtable188849 pt, tlineinfo163527 info, void* ClEnv);
void* ClEnv;
} TY250120;
struct  tinstantiationpair250011  {
tsym188833* Genericsym;
tinstantiation188823* Inst;
};
struct  tcontext250019  {
  tpasscontext246003 Sup;
tsym188833* Module;
tscope188827* Currentscope;
tscope188827* Importtable;
tscope188827* Toplevelscope;
tproccon250009* P;
tsym188833* Friendmodule;
NI Instcounter;
tintset185047 Ambiguoussymbols;
NI Intypeclass;
NI Ingenericcontext;
NI Inunrolledcontext;
NI Incompilescontext;
NI Ingenericinst;
tsymseq188805* Converters;
tsymseq188805* Patterns;
tlinkedlist118023 Optionstack;
tidtable188849 Symmapping;
tlinkedlist118023 Libs;
TY250061 Semconstexpr;
TY250066 Semexpr;
TY250074 Semtryexpr;
TY250083 Semtryconstexpr;
TY250088 Semoperand;
TY250096 Semconstboolexpr;
TY250101 Semoverloadedcall;
TY250108 Semtypenode;
TY250114 Seminferredlambda;
TY250120 Semgenerateinstance;
tintset185047 Includedfiles;
tstrtable188807 Userpragmas;
tctx249037* Evalcontext;
tintset185047 Unknownidents;
TY250131* Generics;
NI Lastgenericidx;
NI Hloloopdetector;
};
struct  tnode188803  {
ttype188837* Typ;
tlineinfo163527 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym188833* Sym;
} S4;
struct {tident167019* Ident;
} S5;
struct {tnodeseq188797* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
struct  tproccon250009  {
tsym188833* Owner;
tsym188833* Resultsym;
NI Nestedloopcounter;
NI Nestedblockcounter;
NI Intrystmt;
tproccon250009* Next;
};
struct  tident167019  {
  tidobj167013 Sup;
NimStringDesc* S;
tident167019* Next;
NI H;
};
typedef NU8 TY439854[20];
typedef tnode188803* TY423419[2];
typedef ttype188837* TY423424[2];
struct  tidentiter197106  {
NI H;
tident167019* Name;
};
struct  toverloaditer252363  {
tidentiter197106 It;
tsym188833* M;
NU8 Mode;
NI Symchoiceindex;
tscope188827* Scope;
tintset185047 Insymchoice;
};
struct TY79484 {
NimStringDesc* Field0;
NI Field1;
};
typedef NimStringDesc* TY137892[2];
struct  tcandidate345205  {
tcontext250019* C;
NI Exactmatches;
NI Genericmatches;
NI Subtypematches;
NI Intconvmatches;
NI Convmatches;
NU8 State;
ttype188837* Callee;
tsym188833* Calleesym;
NI Calleescope;
tnode188803* Call;
tidtable188849 Bindings;
NIM_BOOL Basetypematch;
NIM_BOOL Proxymatch;
NIM_BOOL Genericconverter;
NIM_BOOL Coercedistincts;
NIM_BOOL Typedescmatched;
NI Inheritancepenalty;
TY110805* Errors;
};
struct  trepltypevars273546  {
tcontext250019* C;
tidtable188849 Typemap;
tidtable188849 Symmap;
tidtable188849 Localcache;
tlineinfo163527 Info;
NIM_BOOL Allowmetatypes;
};
struct  tinstantiation188823  {
tsym188833* Sym;
ttypeseq188835* Concretetypes;
TY188922* Usedby;
};
typedef NU8 tspecialwords171011[32];
typedef ttype188837* TY250763[2];
typedef tnode188803* TY457200[3];
struct  tscope188827  {
NI Depthlevel;
tstrtable188807 Symbols;
tnodeseq188797* Usingsyms;
tscope188827* Parent;
};
typedef ttype188837* TY350968[1];
struct  tlistentry118017  {
  TNimObject Sup;
tlistentry118017* Prev;
tlistentry118017* Next;
};
struct  toptionentry250003  {
  tlistentry118017 Sup;
NU32 Options;
NU8 Defaultcc;
tlib188821* Dynlib;
NU64 Notes;
tnode188803* Otherpragmas;
};
struct  TY427566  {
NI HEX3Astate427569;
NimStringDesc* Paramname426791;
tnode188803* Genericparams426789;
tlineinfo163527 Info426792;
tcontext250019* C426787;
};
typedef struct {
N_NIMCALL_PTR(ttype188837*, ClPrc) (ttype188837* typeclass, tident167019* typid, void* ClEnv);
void* ClEnv;
} TY426813;
typedef N_CLOSURE_PTR(ttype188837*, TMP2843) (ttype188837* typeclass, tident167019* typid);
typedef N_CLOSURE_PTR(ttype188837*, TMP2844) (ttype188837* typeclass, tident167019* typid);
typedef N_CLOSURE_PTR(ttype188837*, TMP2845) (ttype188837* typeclass, tident167019* typid);
typedef N_CLOSURE_PTR(ttype188837*, TMP2846) (ttype188837* typeclass, tident167019* typid);
typedef N_CLOSURE_PTR(ttype188837*, TMP2847) (ttype188837* typeclass, tident167019* typid);
typedef N_CLOSURE_PTR(ttype188837*, TMP2848) (ttype188837* typeclass, tident167019* typid);
typedef N_CLOSURE_PTR(ttype188837*, TMP2849) (ttype188837* typeclass, tident167019* typid);
typedef N_CLOSURE_PTR(ttype188837*, TMP2850) (ttype188837* typeclass, tident167019* typid);
typedef N_CLOSURE_PTR(ttype188837*, TMP2852) (ttype188837* typeclass, tident167019* typid);
typedef N_CLOSURE_PTR(ttype188837*, TMP2853) (ttype188837* typeclass, tident167019* typid);
struct  templctx430596  {
tcontext250019* C;
tintset185047 Tobind;
tintset185047 Tomixin;
tintset185047 Toinject;
tsym188833* Owner;
};
typedef tsym188833* TY439088[2];
typedef tnode188803* TY251116[2];
struct  tslice78892  {
NI A;
NI B;
};
typedef tnode188803* TY191256[7];
typedef tnode188803* TY207692[1];
typedef NU8 TY452951[34];
typedef NimStringDesc* TY450818[2];
struct  ttabiter197090  {
NI H;
};
typedef NimStringDesc* TY173034[3];
typedef NimStringDesc* TY165002[1];
struct  E_Base  {
  TNimObject Sup;
E_Base* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClPrc) (E_Base* e, void* ClEnv);
void* ClEnv;
} TY11626;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY11626 raiseAction;
};
struct TY439278 {
tnode188803* Field0;
tnode188803* Field1;
};
struct  tfieldinstctx443024  {
ttype188837* Tupletype;
NI Tupleindex;
tsym188833* Field;
NIM_BOOL Replacebyfieldname;
};
struct  tfieldsctx443300  {
tcontext250019* C;
NU16 M;
};
typedef N_NIMCALL_PTR(tnode188803*, TY246061) (tsym188833* m, NI32 fileidx);
typedef N_CLOSURE_PTR(tnode188803*, TMP3117) (tcontext250019* c, tidtable188849 pt, tnode188803* n, void* ClEnv);
typedef N_CLOSURE_PTR(tsym188833*, TMP3118) (tcontext250019* c, tsym188833* fn, tidtable188849 pt, tlineinfo163527 info, void* ClEnv);
struct  tiipair197203  {
NI Key;
NI Val;
};
struct  tiitable197207  {
NI Counter;
tiipairseq197205* Data;
};
struct  tindex236022  {
NI Lastidxkey;
NI Lastidxval;
tiitable197207 Tab;
NimStringDesc* R;
NI Offset;
};
struct  tmemfile234204  {
void* Mem;
NI Size;
int Handle;
};
struct  trodreader236024  {
  TNimObject Sup;
NI Pos;
NCSTRING S;
NU32 Options;
NU8 Reason;
TY188922* Moddeps;
TY188922* Files;
NI Dataidx;
NI Convertersidx;
NI Initidx;
NI Interfidx;
NI Compilerprocsidx;
NI Methodsidx;
NimStringDesc* Filename;
tindex236022 Index;
tindex236022 Imports;
NI Readerindex;
NI Line;
NI Moduleid;
tidtable188849 Syms;
tmemfile234204 Memfile;
tsymseq188805* Methods;
NimStringDesc* Origfile;
NIM_BOOL Inviewmode;
};
struct  trope145007  {
  TNimObject Sup;
trope145007* Left;
trope145007* Right;
NI Length;
NimStringDesc* Data;
};
typedef NI TY22618[16];
struct  tpagedesc41098  {
tpagedesc41098* Next;
NI Key;
TY22618 Bits;
};
struct  tbasechunk22636  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk22638  {
  tbasechunk22636 Sup;
tsmallchunk22638* Next;
tsmallchunk22638* Prev;
tfreecell22628* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk23404  {
NI Size;
NI Acc;
tllchunk23404* Next;
};
struct  tbigchunk22640  {
  tbasechunk22636 Sup;
tbigchunk22640* Next;
tbigchunk22640* Prev;
NI Align;
NF Data;
};
struct  ttrunk22611  {
ttrunk22611* Next;
NI Key;
TY22618 Bits;
};
typedef tavlnode23408* TY23414[2];
struct  tavlnode23408  {
TY23414 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  tlib188821  {
  tlistentry118017 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope145007* Name;
tnode188803* Path;
};
struct  ttrunk185043  {
ttrunk185043* Next;
NI Key;
TY22618 Bits;
};
struct  tctx249037  {
  tpasscontext246003 Sup;
TY249229* Code;
TY164208* Debug;
tnode188803* Globals;
tnode188803* Constants;
ttypeseq188835* Types;
tnode188803* Currentexceptiona;
tnode188803* Currentexceptionb;
NI Exceptioninstr;
pprocHEX3Aobjecttype249216* Prc;
tsym188833* Module;
tnode188803* Callsite;
NU8 Mode;
NU8 Features;
NIM_BOOL Traceactive;
NI Loopiterations;
};
struct  tfreecell22628  {
tfreecell22628* Next;
NI Zerofield;
};
struct  tblock249023  {
tsym188833* Label;
TY249198* Fixups;
};
struct TY249223 {
NIM_BOOL Field0;
NU8 Field1;
};
typedef TY249223 TY249220[256];
struct  pprocHEX3Aobjecttype249216  {
TY249217* Blocks;
tsym188833* Sym;
TY249220 Slots;
NI Maxslots;
};
struct ttypeseq188835 {
  TGenericSeq Sup;
  ttype188837* data[SEQ_DECL_SIZE];
};
struct TY188933 {
  TGenericSeq Sup;
  tinstantiation188823* data[SEQ_DECL_SIZE];
};
struct tsymseq188805 {
  TGenericSeq Sup;
  tsym188833* data[SEQ_DECL_SIZE];
};
struct ttrunkseq185045 {
  TGenericSeq Sup;
  ttrunk185043* data[SEQ_DECL_SIZE];
};
struct tidpairseq188847 {
  TGenericSeq Sup;
  tidpair188845 data[SEQ_DECL_SIZE];
};
struct TY250131 {
  TGenericSeq Sup;
  tinstantiationpair250011 data[SEQ_DECL_SIZE];
};
struct tnodeseq188797 {
  TGenericSeq Sup;
  tnode188803* data[SEQ_DECL_SIZE];
};
struct TY110805 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct TY188922 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct tiipairseq197205 {
  TGenericSeq Sup;
  tiipair197203 data[SEQ_DECL_SIZE];
};
struct TY249229 {
  TGenericSeq Sup;
  NU32 data[SEQ_DECL_SIZE];
};
struct TY164208 {
  TGenericSeq Sup;
  tlineinfo163527 data[SEQ_DECL_SIZE];
};
struct TY249198 {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
struct TY249217 {
  TGenericSeq Sup;
  tblock249023 data[SEQ_DECL_SIZE];
};
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tcell41090*, usrtocell_44443)(void* usr);
static N_INLINE(void, rtladdzct_46002)(tcell41090* c);
N_NOINLINE(void, addzct_44418)(tcellseq41106* s, tcell41090* c);
N_NIMCALL(tident167019*, getident_167456)(NimStringDesc* identifier);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newObjRC1)(TNimType* typ, NI size);
N_NIMCALL(tnode188803*, newidentnode_189090)(tident167019* ident, tlineinfo163527 info);
N_NIMCALL(tlineinfo163527, unknownlineinfo_164203)(void);
N_NIMCALL(tcontext250019*, newcontext_250150)(tsym188833* module);
N_NIMCALL(void, internalerror_165591)(tlineinfo163527 info, NimStringDesc* errmsg);
N_NIMCALL(tnode188803*, semconstexpr_417095)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semexprwithtype_416011)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, semexpr_416003)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(void, suggestexpr_362986)(tcontext250019* c, tnode188803* node);
N_NIMCALL(tsym188833*, lookup_252708)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, semcapturesym_369436)(tsym188833* s, tsym188833* owner);
N_NIMCALL(tnode188803*, semsym_450070)(tcontext250019* c, tnode188803* n, tsym188833* s, NU16 flags);
N_NIMCALL(void, markused_345244)(tnode188803* n, tsym188833* s);
N_NIMCALL(ttype188837*, skiptypes_192793)(ttype188837* t, NU64 kinds);
static N_INLINE(tnode188803*, inlineconst_450064)(tnode188803* n, tsym188833* s);
N_NIMCALL(tnode188803*, copytree_189237)(tnode188803* src);
static N_INLINE(NI, len_189264)(tnode188803* n);
N_NIMCALL(tnode188803*, newsymnode_190723)(tsym188833* sym, tlineinfo163527 info);
N_NIMCALL(tnode188803*, semmacroexpr_416657)(tcontext250019* c, tnode188803* n, tnode188803* norig, tsym188833* sym, NU16 flags);
N_NIMCALL(void, globalerror_165558)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(tnode188803*, evalmacrocall_410503)(tsym188833* module, tnode188803* n, tnode188803* norig, tsym188833* sym);
N_NIMCALL(tnode188803*, semaftermacrocall_422334)(tcontext250019* c, tnode188803* n, tsym188833* s, NU16 flags);
N_NIMCALL(tsym188833*, getmodule_197183)(tsym188833* s);
N_NIMCALL(tnode188803*, semstmt_416061)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semexprnotype_416019)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, discardcheck_439985)(tcontext250019* c, tnode188803* result);
N_NIMCALL(void, message_165584)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NIM_BOOL, implicitlydiscardable_439849)(tnode188803* n_439851);
static N_INLINE(tnode188803*, lastson_189189)(tnode188803* n);
static N_INLINE(NI, sonslen_189181)(tnode188803* n);
N_NIMCALL(NIM_BOOL, iscallexpr_189241)(tnode188803* n);
N_NIMCALL(void, fixniltype_439933)(tnode188803* n);
static N_INLINE(NIM_BOOL, isatom_195186)(tnode188803* n);
N_NIMCALL(void, localerror_165571)(tlineinfo163527 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, typetostring_223020)(ttype188837* typ, NU8 prefer);
N_NIMCALL(ttype188837*, semtypenode_416055)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(void, checksonslen_251209)(tnode188803* n, NI length);
N_NIMCALL(ttype188837*, neworprevtype_422528)(NU8 kind, ttype188837* prev, tcontext250019* c);
N_NIMCALL(ttype188837*, newtypes_250180)(NU8 kind, tcontext250019* c);
static N_INLINE(NIM_BOOL, isrange_222077)(tnode188803* n);
static N_INLINE(tnode188803*, HEX5BHEX5D_189694)(tnode188803* n, NI i);
N_NIMCALL(ttype188837*, semrangeaux_423297)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(tnode188803*, newnodei_189099)(NU8 kind, tlineinfo163527 info);
static N_INLINE(ttype188837*, skipintlit_242424)(ttype188837* t);
N_NIMCALL(ttype188837*, getsystype_242024)(NU8 kind);
N_NIMCALL(NIM_BOOL, sametype_228116)(ttype188837* a, ttype188837* b, NU8 flags);
N_NIMCALL(NIM_BOOL, isordinaltype_223071)(ttype188837* t);
N_NIMCALL(NIM_BOOL, enumhasholes_223075)(ttype188837* t);
N_NIMCALL(NIM_BOOL, hasgenericarguments_273821)(tnode188803* n);
N_NIMCALL(void, addson_189207)(tnode188803* father, tnode188803* son);
N_NIMCALL(tnode188803*, makestaticexpr_250684)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NU8, weaklevalue_197537)(tnode188803* a, tnode188803* b);
N_NIMCALL(void, addsonskipintlit_242461)(ttype188837* father, ttype188837* son);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(ttype188837*, makeandtype_250741)(tcontext250019* c, ttype188837* t1, ttype188837* t2);
N_NIMCALL(ttype188837*, makeortype_250856)(tcontext250019* c, ttype188837* t1, ttype188837* t2);
static N_INLINE(ttype188837*, freshtype_428671)(ttype188837* res, ttype188837* prev);
N_NIMCALL(ttype188837*, copytype_189141)(ttype188837* t, tsym188833* owner, NIM_BOOL keepid);
N_NIMCALL(ttype188837*, makenottype_250971)(tcontext250019* c, ttype188837* t1);
N_NIMCALL(ttype188837*, semanyref_423149)(tcontext250019* c, tnode188803* n_423152, NU8 kind, ttype188837* prev);
N_NIMCALL(ttype188837*, newconstraint_422561)(tcontext250019* c, NU8 k);
N_NIMCALL(void, checkminsonslen_251215)(tnode188803* n, NI length);
N_NIMCALL(ttype188837*, semtypeexpr_428654)(tcontext250019* c, tnode188803* n_428657);
N_NIMCALL(ttype188837*, base_223029)(ttype188837* t);
N_NIMCALL(NimStringDesc*, rendertree_211051)(tnode188803* n, NU8 renderflags);
N_NIMCALL(tnode188803*, semwhen_416637)(tcontext250019* c, tnode188803* n, NIM_BOOL semcheck);
N_NIMCALL(void, illformedast_251203)(tnode188803* n);
N_NIMCALL(void, idsynchronizationpoint_187452)(NI idrange);
N_NIMCALL(tsym188833*, semtypeident_424101)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tsym188833*, qualifiedlookup_252806)(tcontext250019* c, tnode188803* n, NU8 flags);
N_NIMCALL(tsym188833*, errorsym_252288)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tsym188833*, copysym_189147)(tsym188833* s, NIM_BOOL keepid);
N_NIMCALL(NI, len_192569)(ttype188837* n);
N_NIMCALL(tsym188833*, initoverloaditer_253331)(toverloaditer252363* o, tcontext250019* c, tnode188803* n);
N_NIMCALL(tsym188833*, nextoverloaditer_253684)(toverloaditer252363* o, tcontext250019* c, tnode188803* n);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_NIMCALL(ttype188837*, semarray_423785)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(ttype188837*, makerangewithstaticexpr_251076)(tcontext250019* c, tnode188803* n);
N_NIMCALL(ttype188837*, makerangetype_251156)(tcontext250019* c, NI64 first, NI64 last, tlineinfo163527 info, ttype188837* inttype);
N_NIMCALL(void, internalerror_165606)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_165714)(TY79484 x_165718);
static N_INLINE(ttype188837*, lastson_189193)(ttype188837* n);
static N_INLINE(NI, sonslen_189185)(ttype188837* n);
N_NIMCALL(ttype188837*, semcontainer_423075)(tcontext250019* c, tnode188803* n, NU8 kind, NimStringDesc* kindstr, ttype188837* prev);
N_NIMCALL(ttype188837*, errortype_251136)(tcontext250019* c);
N_NIMCALL(ttype188837*, semrange_423470)(tcontext250019* c, tnode188803* n_423473, ttype188837* prev);
N_NIMCALL(ttype188837*, semset_423034)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(NI64, lengthord_223010)(ttype188837* t);
N_NIMCALL(ttype188837*, semordinal_424056)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(ttype188837*, semvarargs_423099)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(tident167019*, consideracc_252006)(tnode188803* n);
N_NIMCALL(ttype188837*, maketypedesc_250627)(tcontext250019* c, ttype188837* typ);
N_NIMCALL(tsym188833*, getcurrowner_250215)(void);
N_NIMCALL(void, rawaddson_193092)(ttype188837* father, ttype188837* son);
N_NIMCALL(ttype188837*, semgeneric_428438)(tcontext250019* c, tnode188803* n, tsym188833* s, ttype188837* prev);
N_NIMCALL(void, localerror_165578)(tlineinfo163527 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_75880, TNimType* typ);
N_NIMCALL(ttype188837*, semgenericparamininvokation_428432)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, newcandidate_345619)(tcontext250019* ctx, ttype188837* callee, tcandidate345205* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, matches_353566)(tcontext250019* c, tnode188803* n, tnode188803* norig, tcandidate345205* m);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, describeargs_345953)(tcontext250019* c, tnode188803* n, NI startidx);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NIM_BOOL, containsgenerictype_232717)(ttype188837* t);
N_NIMCALL(ttype188837*, instgenericcontainer_419226)(tcontext250019* c, tlineinfo163527 info, ttype188837* header, NIM_BOOL allowmetatypes);
N_NIMCALL(void, initidtable_189120)(tidtable188849* x);
N_NIMCALL(ttype188837*, replacetypevarst_273584)(trepltypevars273546* cl, ttype188837* t);
N_NIMCALL(NIM_BOOL, ismetatype_189732)(ttype188837* t);
N_NIMCALL(void, initintset_185918)(tintset185047* Result);
N_NIMCALL(tnode188803*, semgenericstmt_422520)(tcontext250019* c, tnode188803* n_422523, NU8 flags_422524, tintset185047* ctx);
N_NIMCALL(void, suggeststmt_363273)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, lookup_435130)(tcontext250019* c, tnode188803* n, NU8 flags, tintset185047* ctx);
N_NIMCALL(tsym188833*, searchinscopes_252216)(tcontext250019* c, tident167019* s);
N_NIMCALL(NIM_BOOL, contains_185821)(tintset185047 s, NI key);
N_NIMCALL(tnode188803*, symchoice_430291)(tcontext250019* c, tnode188803* n, tsym188833* s, NU8 r);
N_NIMCALL(tnode188803*, newnodeit_189104)(NU8 kind, tlineinfo163527 info, ttype188837* typ);
N_NIMCALL(tnode188803*, semgenericstmtsymbol_435024)(tcontext250019* c, tnode188803* n_435027, tsym188833* s);
N_NIMCALL(tnode188803*, fiximmediateparams_416100)(tnode188803* n);
static N_INLINE(NI, safelen_189320)(tnode188803* n);
N_NIMCALL(NIM_BOOL, doblockisstmtlist_462236)(tnode188803* n);
N_NIMCALL(tnode188803*, semtemplateexpr_416648)(tcontext250019* c, tnode188803* n, tsym188833* s, NU16 flags);
N_NIMCALL(void, pushinfocontext_164697)(tlineinfo163527 info);
N_NIMCALL(tnode188803*, evaltemplate_390275)(tnode188803* n, tsym188833* tmpl, tsym188833* gensymowner);
N_NIMCALL(void, popinfocontext_164720)(void);
N_NIMCALL(tnode188803*, newsymnodetypedesc_263979)(tsym188833* s, tlineinfo163527 info);
N_NIMCALL(tnode188803*, semmixinstmt_430510)(tcontext250019* c, tnode188803* n, tintset185047* tomixin);
N_NIMCALL(void, incl_185849)(tintset185047* s, NI key);
N_NIMCALL(tnode188803*, semgenericstmtscope_435008)(tcontext250019* c, tnode188803* n, NU8 flags, tintset185047* ctx);
N_NIMCALL(tscope188827*, openscope_252167)(tcontext250019* c);
N_NIMCALL(void, closescope_252179)(tcontext250019* c);
N_NIMCALL(void, addprelimdecl_252565)(tcontext250019* c, tsym188833* sym);
N_NIMCALL(tsym188833*, newsyms_416504)(NU8 kind, tnode188803* n, tcontext250019* c);
N_NIMCALL(tsym188833*, newsym_189053)(NU8 symkind, tident167019* name, tsym188833* owner, tlineinfo163527 info);
N_NIMCALL(tnode188803*, getidentnode_434975)(tnode188803* n);
N_NIMCALL(void, adddecl_252550)(tcontext250019* c, tsym188833* sym);
N_NIMCALL(tnode188803*, getbody_239244)(tsym188833* s);
N_NIMCALL(ttype188837*, maketypefromexpr_250668)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, assigntype_189152)(ttype188837* dest, ttype188837* src);
N_NIMCALL(ttype188837*, semobjectnode_426398)(tcontext250019* c, tnode188803* n, ttype188837* prev);
static N_INLINE(ttype188837*, skipgenericinvokation_426375)(ttype188837* t);
N_NIMCALL(void, addinheritedfields_426348)(tcontext250019* c, tintset185047* check, NI* pos, ttype188837* obj);
N_NIMCALL(void, addinheritedfieldsaux_426194)(tcontext250019* c, tintset185047* check, NI* pos, tnode188803* n);
N_NIMCALL(void, semrecordnodeaux_425298)(tcontext250019* c, tnode188803* n, tintset185047* check, NI* pos, tnode188803* father, ttype188837* rectype);
N_NIMCALL(tnode188803*, semconstboolexpr_422470)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, fitnode_416037)(tcontext250019* c, ttype188837* formal, tnode188803* arg);
N_NIMCALL(tnode188803*, copynode_189233)(tnode188803* src);
N_NIMCALL(tnode188803*, indextypesmatch_416119)(tcontext250019* c, ttype188837* f, ttype188837* a, tnode188803* arg);
N_NIMCALL(void, initcandidate_345257)(tcontext250019* ctx, tcandidate345205* c, ttype188837* callee);
N_NIMCALL(tnode188803*, paramtypesmatch_351560)(tcandidate345205* m, ttype188837* f, ttype188837* a, tnode188803* arg, tnode188803* argorig);
N_NIMCALL(void, instgenericconvertersarg_421394)(tcontext250019* c, tnode188803* a, tcandidate345205* x);
N_NIMCALL(NIM_BOOL, isgenericroutine_194927)(tsym188833* s);
N_NIMCALL(tsym188833*, generateinstance_419355)(tcontext250019* c, tsym188833* fn, tidtable188849 pt, tlineinfo163527 info);
N_NIMCALL(void, pushowner_250218)(tsym188833* owner);
N_NIMCALL(tnode188803*, newsymnode_189095)(tsym188833* sym);
N_NIMCALL(tinstantiation188823*, new_419481)(void);
N_NIMCALL(void, instantiategenericparamlist_418123)(tcontext250019* c, tnode188803* n, tidtable188849 pt, tinstantiation188823* entry);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(TNimObject*, idtableget_197137)(tidtable188849 t, tidobj167013* key);
N_NIMCALL(ttype188837*, generatetypeinstance_275735)(tcontext250019* p, tidtable188849 pt, tlineinfo163527 info, ttype188837* t);
static N_INLINE(void, pushproccon_250317)(tcontext250019* c, tsym188833* owner);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_46827)(tcell41090* c);
static N_INLINE(NIM_BOOL, canbecycleroot_44462)(tcell41090* c);
static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c);
N_NOINLINE(void, incl_41855)(tcellset41102* s, tcell41090* cell);
static N_INLINE(void, decref_46402)(tcell41090* c);
N_NIMCALL(void, instantiateproctype_419247)(tcontext250019* c, tidtable188849 pt, tsym188833* prc, tlineinfo163527 info);
N_NIMCALL(void, inittypevars_275714)(tcontext250019* p, tidtable188849 pt, tlineinfo163527 info, trepltypevars273546* Result);
N_NIMCALL(ttype188837*, instcopytype_274604)(trepltypevars273546* cl, ttype188837* t);
N_NIMCALL(tnode188803*, shallowcopy_193743)(tnode188803* src);
N_NIMCALL(void, propagatetoowner_192852)(ttype188837* owner, ttype188837* elem);
N_NIMCALL(tnode188803*, replacetypevarsn_273566)(trepltypevars273546* cl, tnode188803* n_273570);
N_NIMCALL(void, erasevoidparams_275102)(ttype188837* t);
N_NIMCALL(void, skipintliteralparams_275297)(ttype188837* t);
N_NIMCALL(void, maybeaddresult_416079)(tcontext250019* c, tsym188833* s, tnode188803* n);
N_NIMCALL(void, addresult_445870)(tcontext250019* c, ttype188837* t, tlineinfo163527 info, NU8 owner);
N_NIMCALL(void, addparamorresult_418960)(tcontext250019* c, tsym188833* param, NU8 kind);
N_NIMCALL(ttype188837*, findenforcedstatictype_426617)(ttype188837* t_426619);
N_NIMCALL(tsym188833*, getsyssym_242040)(NimStringDesc* name);
N_NIMCALL(void, addresultnode_445911)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tsym188833*, genericcacheget_418335)(tsym188833* genericsym, tinstantiation188823 entry);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_191892)(TY188933* x_191898, TY188933* y_191903);
N_NIMCALL(NIM_BOOL, sameinstantiation_418290)(tinstantiation188823 a, tinstantiation188823 b);
N_NIMCALL(NIM_BOOL, comparetypes_230547)(ttype188837* x, ttype188837* y, NU8 cmp, NU8 flags);
N_NIMCALL(void, safeadd_419570)(TY188933** x_419578, tinstantiation188823* y_419582);
N_NIMCALL(void, makeinstpair_250136)(tsym188833* s, tinstantiation188823* inst, tinstantiationpair250011* Result);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(void, pragma_267073)(tcontext250019* c, tsym188833* sym, tnode188803* n, tspecialwords171011 validpragmas);
N_NIMCALL(void, instantiatebody_419026)(tcontext250019* c, tnode188803* n, tsym188833* result);
N_NIMCALL(void, freshgensyms_418802)(tnode188803* n, tsym188833* owner, tidtable188849* symmap);
N_NIMCALL(void, idtableput_197147)(tidtable188849* t, tidobj167013* key, TNimObject* val);
N_NIMCALL(tnode188803*, semprocbody_416032)(tcontext250019* c, tnode188803* n);
static N_INLINE(NIM_BOOL, isemptytype_195210)(ttype188837* t);
N_NIMCALL(tnode188803*, newnodei_190803)(NU8 kind, tlineinfo163527 info, NI children);
N_NIMCALL(tnode188803*, semasgn_457417)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, builtinfieldaccess_456040)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(NIM_BOOL, istypeexpr_455548)(tnode188803* n);
N_NIMCALL(tsym188833*, getsymfromlist_197172)(tnode188803* list, tident167019* ident, NI start);
N_NIMCALL(tnode188803*, readtypeparameter_455950)(tcontext250019* c, ttype188837* typ, tident167019* paramname, tlineinfo163527 info);
N_NIMCALL(ttype188837*, skipgenericalias_229506)(ttype188837* t);
N_NIMCALL(tsym188833*, linkto_189797)(tsym188833* s, ttype188837* t);
N_NIMCALL(ttype188837*, newtypewithsons_250675)(tcontext250019* c, NU8 kind, ttypeseq188835* sons);
N_NIMCALL(tsym188833*, lookupinrecordandbuildcheck_455576)(tcontext250019* c, tnode188803* n, tnode188803* r, tident167019* field, tnode188803** check);
static N_INLINE(NIM_BOOL, fieldvisible_357236)(tcontext250019* c, tsym188833* f);
N_NIMCALL(tnode188803*, makederef_455912)(tnode188803* n);
N_NIMCALL(tnode188803*, propertywriteaccess_457174)(tcontext250019* c, tnode188803* n, tnode188803* norig, tnode188803* a);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(tnode188803*, newnode_191003)(NU8 kind, tlineinfo163527 info, tnodeseq188797* sons, ttype188837* typ);
N_NIMCALL(tnode188803*, semoverloadedcallanalyseeffects_454454)(tcontext250019* c, tnode188803* n, tnode188803* norig, NU16 flags);
N_NIMCALL(tnode188803*, semoverloadedcall_421913)(tcontext250019* c, tnode188803* n, tnode188803* norig, NU32 filter);
N_NIMCALL(void, resolveoverloads_420191)(tcontext250019* c, tnode188803* n, tnode188803* orig, NU32 filter, tcandidate345205* Result);
N_NIMCALL(void, gatherusedsyms_420073)(tcontext250019* c, tnodeseq188797** usedsyms);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_272164)(tnodeseq188797* x_272170, tnodeseq188797* y_272175);
N_NIMCALL(void, safeadd_420113)(tnodeseq188797** x_420121, tnode188803* y_420125);
N_NIMCALL(void, insert_420294)(tnodeseq188797** x_420302, tnode188803* item_420306, NI i_420308);
N_NIMCALL(void, pickbestcandidate_419851)(tcontext250019* c, tnode188803* headsymbol, tnode188803* n, tnode188803* orig, tnode188803* initialbinding, NU32 filter, tcandidate345205* best, tcandidate345205* alt, TY110805** errors);
N_NIMCALL(NI, lastoverloadscope_253667)(toverloaditer252363* o);
N_NIMCALL(void, initcandidate_345274)(tcontext250019* ctx, tcandidate345205* c, tsym188833* callee, tnode188803* binding, NI calleescope);
N_NIMCALL(void, determinetype_419847)(tcontext250019* c, tsym188833* s);
N_NIMCALL(tnode188803*, semprocaux_446878)(tcontext250019* c, tnode188803* n, NU8 kind, tspecialwords171011 validpragmas, NU8 phase);
N_NIMCALL(tnode188803*, semprocannotation_446024)(tcontext250019* c, tnode188803* prc);
N_NIMCALL(tsym188833*, lookupmacro_445980)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tsym188833*, searchinscopes_252245)(tcontext250019* c, tident167019* s, NU32 filter);
N_NIMCALL(tnode188803*, copyexcept_445933)(tnode188803* n, NI i);
N_NIMCALL(void, add_189390)(tnode188803* father, tnode188803* son);
N_NIMCALL(tnode188803*, newprocnode_191214)(NU8 kind, tlineinfo163527 info, tnode188803* body, tnode188803* params, tnode188803* name, tnode188803* pattern, tnode188803* genericparams, tnode188803* pragmas, tnode188803* exceptions);
N_NIMCALL(tsym188833*, semidentdef_441944)(tcontext250019* c, tnode188803* n, NU8 kind);
static N_INLINE(NIM_BOOL, istoplevel_416498)(tcontext250019* c);
N_NIMCALL(tsym188833*, semidentwithpragma_416608)(tcontext250019* c, NU8 kind, tnode188803* n, NU32 allowed);
N_NIMCALL(tsym188833*, semidentvis_416601)(tcontext250019* c, NU8 kind, tnode188803* n, NU32 allowed);
N_NIMCALL(tsym188833*, newsymg_416512)(NU8 kind, tnode188803* n, tcontext250019* c);
N_NIMCALL(void, checkdef_355603)(tnode188803* n, tsym188833* s);
static N_INLINE(void, suggestsym_362857)(tnode188803* n, tsym188833* s);
N_NIMCALL(void, findusages_360481)(tnode188803* node, tsym188833* s);
N_NIMCALL(void, finddefinition_360519)(tnode188803* node, tsym188833* s);
N_NIMCALL(void, addtosourcemap_360663)(tsym188833* sym, tlineinfo163527 info);
N_NIMCALL(void, addinterfaceoverloadablesymat_252701)(tcontext250019* c, tscope188827* scope, tsym188833* sym);
N_NIMCALL(tnode188803*, semgenericparamlist_429851)(tcontext250019* c, tnode188803* n, ttype188837* father);
N_NIMCALL(ttype188837*, semgenericconstraints_429827)(tcontext250019* c, ttype188837* x);
N_NIMCALL(void, semparamlist_416066)(tcontext250019* c, tnode188803* n, tnode188803* genericparams, tsym188833* s);
N_NIMCALL(ttype188837*, semproctypenode_427613)(tcontext250019* c, tnode188803* n, tnode188803* genericparams, ttype188837* prev, NU8 kind);
N_NIMCALL(toptionentry250003*, lastoptionentry_250154)(tcontext250019* c);
N_NIMCALL(ttype188837*, semparamtype_427582)(tcontext250019* c, tnode188803* n, tnode188803** constraint);
N_NIMCALL(tnode188803*, semnodekindconstraints_276472)(tnode188803* p);
N_NIMCALL(ttype188837*, liftparamtype_426785)(tcontext250019* c, NU8 prockind, tnode188803* genericparams, ttype188837* paramtype, NimStringDesc* paramname, tlineinfo163527 info, NIM_BOOL anon);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP2841)(void* p, NI op);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_CLOSURE(ttype188837*, addimplicitgenericimpl_426812)(ttype188837* typeclass, tident167019* typid, void* ClEnv);
N_NIMCALL(NIM_BOOL, containsorincl_185888)(tintset185047* s, NI key);
N_NIMCALL(NIM_BOOL, isinlineiterator_350834)(ttype188837* t);
N_NIMCALL(tnode188803*, sempattern_431521)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, flattenstmts_222251)(tnode188803* n);
N_NIMCALL(tnode188803*, sempatternbody_433833)(templctx430596* c, tnode188803* n);
N_NIMCALL(tnode188803*, handlesym_434002)(templctx430596* c, tnode188803* n, tsym188833* s);
N_NIMCALL(tnode188803*, newparam_433847)(templctx430596* c, tnode188803* n, tsym188833* s);
N_NIMCALL(tnode188803*, sembindstmt_430396)(tcontext250019* c, tnode188803* n, tintset185047* tobind);
N_NIMCALL(tnode188803*, expectparam_434075)(templctx430596* c, tnode188803* n);
N_NIMCALL(tsym188833*, searchforproc_266341)(tcontext250019* c, tscope188827* scope, tsym188833* fn);
N_NIMCALL(void, addinterfacedeclat_252637)(tcontext250019* c, tscope188827* scope, tsym188833* sym);
N_NIMCALL(void, implicitpragmas_271915)(tcontext250019* c, tsym188833* sym, tnode188803* n, tspecialwords171011 validpragmas);
N_NIMCALL(void, wrongredefinition_252535)(tlineinfo163527 info, NimStringDesc* s);
N_NIMCALL(void, addgenericparamlisttoscope_444632)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, addparams_416073)(tcontext250019* c, tnode188803* n, NU8 kind);
static N_INLINE(NIM_BOOL, importantcomments_137145)(void);
N_NIMCALL(void, popowner_250222)(void);
N_NIMCALL(void, dodestructorstuff_438223)(tcontext250019* c, tsym188833* s, tnode188803* n);
N_NIMCALL(ttype188837*, instantiatedestructor_438219)(tcontext250019* c, ttype188837* typ);
static N_INLINE(NIM_BOOL, contains_438991)(tsym188833** a_438997, NI a_438997Len0, tsym188833* item_439000);
static N_INLINE(NI, find_439003)(tsym188833** a_439008, NI a_439008Len0, tsym188833* item_439010);
N_NIMCALL(tnode188803*, generatedestructor_438873)(tcontext250019* c, ttype188837* t);
N_NIMCALL(tnode188803*, destroyfieldorfields_438418)(tcontext250019* c, tnode188803* field, tnode188803* holder);
N_NIMCALL(tnode188803*, destroycase_438484)(tcontext250019* c, tnode188803* n, tnode188803* holder);
N_NIMCALL(tnodeseq188797*, HEX5BHEX5D_438583)(tnodeseq188797* s_438589, tslice78892 x_438594);
static N_INLINE(tslice78892, HEX2EHEX2E_86221)(NI a_86225, NI b_86227);
N_NIMCALL(tnode188803*, newnode_189065)(NU8 kind);
N_NIMCALL(tnode188803*, destroysym_438423)(tcontext250019* c, tsym188833* field, tnode188803* holder);
N_NIMCALL(tnode188803*, usesym_362981)(tsym188833* sym);
N_NIMCALL(tnode188803*, symnodefromtype_416707)(tcontext250019* c, ttype188837* t, tlineinfo163527 info);
N_NIMCALL(tsym188833*, symfromtype_416667)(ttype188837* t, tlineinfo163527 info);
N_NIMCALL(ttype188837*, makevartype_250175)(tcontext250019* c, ttype188837* basetype);
N_NIMCALL(tnode188803*, semproc_438177)(tcontext250019* c, tnode188803* n);
static N_INLINE(void, paramstypecheck_416620)(tcontext250019* c, ttype188837* typ);
N_NIMCALL(NIM_BOOL, typeallowed_223180)(ttype188837* t, NU8 kind);
N_NIMCALL(tnode188803*, hlobody_418063)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, hlo_417163)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, applypatterns_417332)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, applyrule_414255)(tcontext250019* c, tsym188833* s, tnode188803* n);
N_NIMCALL(tnode188803*, evalpattern_417167)(tcontext250019* c, tnode188803* n, tnode188803* orig);
N_NIMCALL(tnode188803*, semdirectop_416631)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, aftercallactions_455231)(tcontext250019* c, tnode188803* n, tnode188803* orig, NU16 flags);
N_NIMCALL(void, semfinishoperands_353494)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, activate_416104)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, fixabstracttype_452189)(tcontext250019* c, tnode188803* n);
N_NIMCALL(ttype188837*, arrayconstrtype_451924)(tcontext250019* c, tnode188803* n);
N_NIMCALL(ttype188837*, elemtype_223559)(ttype188837* t);
N_NIMCALL(void, changetype_416043)(tnode188803* n, ttype188837* newtype, NIM_BOOL check);
N_NIMCALL(NI64, firstord_223002)(ttype188837* t);
N_NIMCALL(NI64, lastord_223006)(ttype188837* t);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_NIMCALL(tnode188803*, semarrayconstr_451964)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(NI64, getordvalue_223150)(tnode188803* n);
N_NIMCALL(ttype188837*, commontype_416202)(ttype188837* x, ttype188837* y);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_233264)(ttypeseq188835* x_233270, ttypeseq188835* y_233275);
N_NIMCALL(ttype188837*, newtype_189060)(NU8 kind, tsym188833* owner);
N_NIMCALL(ttype188837*, commonsuperclass_230876)(ttype188837* a, ttype188837* b);
N_NIMCALL(void, analyseifaddresstakenincall_452906)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NU8, isassignable_452519)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NU8, isassignable_276961)(tsym188833* owner, tnode188803* n);
N_NIMCALL(void, semprocvarcheck_438120)(tcontext250019* c, tnode188803* n_438123);
N_NIMCALL(tnode188803*, skipconv_197231)(tnode188803* n);
N_NIMCALL(void, performprocvarcheck_438091)(tcontext250019* c, tnode188803* n, tsym188833* s);
N_NIMCALL(tnode188803*, analyseifaddresstaken_452568)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, newhiddenaddrtaken_452525)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, magicsafteroverloadresolution_453828)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, semispartof_453269)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(NU8, ispartof_411388)(tnode188803* a, tnode188803* b);
N_NIMCALL(tnode188803*, newintnodet_261020)(NI64 intval, tnode188803* n);
N_NIMCALL(tnode188803*, semtypetraits_453403)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, evaltypetrait_453373)(tnode188803* trait, ttype188837* operand, tsym188833* context);
N_NIMCALL(NimStringDesc*, nsuNormalize)(NimStringDesc* s);
N_NIMCALL(tnode188803*, newstrnode_189085)(NU8 kind, NimStringDesc* strval);
N_NIMCALL(tnode188803*, newintnode_189069)(NU8 kind, NI64 intval);
N_NIMCALL(tnode188803*, newstrnodet_261030)(NimStringDesc* strval, tnode188803* n);
N_NIMCALL(tnode188803*, seminstantiationinfo_453306)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NI, expectintlit_453285)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tlineinfo163527, getinfocontext_164751)(NI index);
N_NIMCALL(NimStringDesc*, tofullpath_164788)(NI32 fileidx);
N_NIMCALL(NimStringDesc*, tofilename_164780)(NI32 fileidx);
static N_INLINE(NI, tolinenumber_164812)(tlineinfo163527 info);
N_NIMCALL(tnode188803*, semord_453484)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semlowhigh_450811)(tcontext250019* c, tnode188803* n, NU16 m);
N_NIMCALL(tnode188803*, semshallowcopy_453823)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, sembindsym_453518)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, errornode_251142)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semlocals_453730)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tsym188833*, inittabiter_197093)(ttabiter197090* ti, tstrtable188807 tab);
static N_INLINE(tnode188803*, newderef_439802)(tnode188803* n);
N_NIMCALL(tsym188833*, nextiter_197099)(ttabiter197090* ti, tstrtable188807 tab);
N_NIMCALL(tnode188803*, evalatcompiletime_453850)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, getconstexpr_261002)(tsym188833* m, tnode188803* n);
N_NIMCALL(ttype188837*, getintervaltype_261393)(NU16 m, tnode188803* n);
N_NIMCALL(tnode188803*, evalstaticexpr_410429)(tsym188833* module, tnode188803* e, tsym188833* prc);
N_NIMCALL(tnode188803*, fixuptypeaftereval_416801)(tcontext250019* c, tnode188803* evaluated, tnode188803* eorig);
N_NIMCALL(void, annotatetype_415194)(tnode188803* n, ttype188837* t);
N_NIMCALL(tnode188803*, evalconstexpr_410422)(tsym188833* module, tnode188803* e);
N_NIMCALL(tnode188803*, commonoptimizations_377442)(tsym188833* c, tnode188803* n);
N_NIMCALL(tnode188803*, transformbody_378285)(tsym188833* module, tnode188803* n, tsym188833* prc);
static N_INLINE(void, popproccon_250358)(tcontext250019* c);
N_NIMCALL(void, fixupinstantiatedsymbols_419136)(tcontext250019* c, tsym188833* s);
N_NIMCALL(void, semborrow_445832)(tcontext250019* c, tnode188803* n, tsym188833* s);
N_NIMCALL(tsym188833*, searchforborrowproc_422198)(tcontext250019* c, tscope188827* startscope, tsym188833* fn);
N_NIMCALL(ttype188837*, baseofdistinct_232723)(ttype188837* t);
N_NIMCALL(void, sideeffectscheck_419186)(tcontext250019* c, tsym188833* s);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_164476)(TY110805* x_164482, TY110805* y_164487);
N_NIMCALL(void, safeadd_164460)(TY110805** x_164468, NimStringDesc* y_164472);
N_NIMCALL(NimStringDesc*, getprocheader_223025)(tsym188833* sym);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(NI, cmpcandidates_345815)(tcandidate345205* a, tcandidate345205* b);
N_NIMCALL(void, delete_420419)(tnodeseq188797** x_420427, NI i_420431);
N_NIMCALL(tnode188803*, withinfo_190675)(tnode188803* n, tlineinfo163527 info);
N_NIMCALL(void, HEX5BHEX5DHEX3D_420606)(tnodeseq188797** s_420614, tslice78892 x_420620, tnode188803** b_420625, NI b_420625Len0);
static N_INLINE(NimStringDesc*, HEX5BHEX5D_78885)(NimStringDesc* s, tslice78892 x);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_70624, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(void, notfounderror_420045)(tcontext250019* c, tnode188803* n, TY110805* errors);
N_NIMCALL(NimStringDesc*, msgkindtostring_165071)(NU16 kind);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NIM_BOOL, samemethoddispatcher_419759)(tsym188833* a, tsym188833* b);
N_NIMCALL(tnode188803*, semresolvedcall_421719)(tcontext250019* c, tnode188803* n, tcandidate345205* x);
N_NIMCALL(void, instgenericconverterssons_421531)(tcontext250019* c, tnode188803* n, tcandidate345205* x);
N_NIMCALL(tnode188803*, dottransformation_456657)(tcontext250019* c, tnode188803* n);
static N_INLINE(NIM_BOOL, issymchoice_450481)(tnode188803* n);
N_NIMCALL(tnode188803*, semsubscript_456818)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, semderef_456768)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, buildoverloadedsubscripts_456746)(tnode188803* n, tident167019* ident);
N_NIMCALL(NU8, cmptypes_350566)(tcontext250019* c, ttype188837* f, ttype188837* a);
N_NIMCALL(void, typemismatch_416126)(tnode188803* n, ttype188837* formal, ttype188837* actual);
static N_INLINE(void, asgntoresultvar_457313)(tcontext250019* c, tnode188803* n, tnode188803* le, tnode188803* ri);
N_NIMCALL(tnode188803*, takeimplicitaddr_457259)(tcontext250019* c, tnode188803* n);
N_NIMCALL(ttype188837*, makeptrtype_250170)(tcontext250019* c, ttype188837* basetype);
N_NIMCALL(void, finishmethod_416114)(tcontext250019* c, tsym188833* s);
N_NIMCALL(NIM_BOOL, hasobjparam_448440)(tsym188833* s);
N_NIMCALL(void, methoddef_364446)(tsym188833* s, NIM_BOOL fromcache);
N_NIMCALL(tnode188803*, forcebool_422446)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, assign_185939)(tintset185047* dest, tintset185047 src);
N_NIMCALL(void, semrecordcase_425308)(tcontext250019* c, tnode188803* n, tintset185047* check, NI* pos, tnode188803* father, ttype188837* rectype);
N_NIMCALL(void, semcasebranch_425080)(tcontext250019* c, tnode188803* t, tnode188803* branch, NI branchindex, NI64* covered);
N_NIMCALL(tnode188803*, semcasebranchrange_424939)(tcontext250019* c, tnode188803* t, tnode188803* b, NI64* covered);
N_NIMCALL(tnode188803*, sembranchrange_424897)(tcontext250019* c, tnode188803* t, tnode188803* a, tnode188803* b, NI64* covered);
N_NIMCALL(tnode188803*, skipconvtaketype_197265)(tnode188803* n);
N_NIMCALL(NIM_BOOL, emptyrange_244024)(tnode188803* a, tnode188803* b);
N_NIMCALL(tnode188803*, semcasebranchsetelem_424976)(tcontext250019* c, tnode188803* t, tnode188803* b, NI64* covered);
N_NIMCALL(void, checkforoverlap_424812)(tcontext250019* c, tnode188803* t, NI currentex, NI branchindex);
N_NIMCALL(NIM_BOOL, overlap_244008)(tnode188803* a, tnode188803* b);
N_NIMCALL(void, delson_189212)(tnode188803* father, NI idx);
N_NIMCALL(trope145007*, torope_145058)(NimStringDesc* s);
N_NIMCALL(ttype188837*, semtuple_424366)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(ttype188837*, semtypeclass_428688)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(void, safeadd_273475)(ttypeseq188835** x_273483, ttype188837* y_273487);
N_NIMCALL(ttype188837*, semvartype_423244)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(ttype188837*, semdistinct_423275)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(ttype188837*, semproctypewithscope_428757)(tcontext250019* c, tnode188803* n, ttype188837* prev, NU8 kind);
N_NIMCALL(void, seteffectsforproctype_324766)(ttype188837* t, tnode188803* n);
N_NIMCALL(NIM_BOOL, haspragma_272125)(tnode188803* n, NU8 pragma);
N_NIMCALL(ttype188837*, semenum_422567)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(void, strtableadd_197078)(tstrtable188807* t, tsym188833* n);
N_NIMCALL(ttype188837*, semstmtlisttype_428240)(tcontext250019* c, tnode188803* n, ttype188837* prev);
N_NIMCALL(ttype188837*, semblocktype_428323)(tcontext250019* c, tnode188803* n, ttype188837* prev);
static N_INLINE(void, markindirect_251167)(tcontext250019* c, tsym188833* s);
N_NIMCALL(void, setintlittype_242517)(tnode188803* result);
N_NIMCALL(ttype188837*, getfloatlittype_242418)(tnode188803* literal);
N_NIMCALL(tnode188803*, semfieldaccess_449848)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(void, checkuse_355729)(tnode188803* n, tsym188833* s);
N_NIMCALL(tnode188803*, semconv_450524)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, maybelifttype_450499)(ttype188837** t, tcontext250019* c, tlineinfo163527 info);
N_NIMCALL(tnode188803*, inferwithmetatype_416192)(tcontext250019* c, ttype188837* formal, tnode188803* arg, NIM_BOOL coercedistincts);
N_NIMCALL(NU8, checkconvertible_450229)(tcontext250019* c, ttype188837* castdest, ttype188837* src);
N_NIMCALL(NU8, checkconversionbetweenobjects_450217)(ttype188837* castdest, ttype188837* src);
N_NIMCALL(NI, inheritancediff_230560)(ttype188837* a, ttype188837* b);
N_NIMCALL(tnode188803*, semobjconstr_454666)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(void, checkinitialized_461409)(tnode188803* n, tintset185047 ids, tlineinfo163527 info);
N_NIMCALL(tnode188803*, semmagic_459949)(tcontext250019* c, tnode188803* n, tsym188833* s, NU16 flags);
N_NIMCALL(tnode188803*, semdefined_458801)(tcontext250019* c, tnode188803* n, NIM_BOOL onlycurrentscope);
N_NIMCALL(tsym188833*, lookupfordefined_458629)(tcontext250019* c, tnode188803* n, NIM_BOOL onlycurrentscope);
N_NIMCALL(tsym188833*, lookupfordefined_458622)(tcontext250019* c, tident167019* i, NIM_BOOL onlycurrentscope);
N_NIMCALL(tsym188833*, localsearchinscope_252209)(tcontext250019* c, tident167019* s);
N_NIMCALL(tsym188833*, strtableget_197084)(tstrtable188807 t, tident167019* name);
N_NIMCALL(NIM_BOOL, isdefined_168022)(tident167019* symbol);
N_NIMCALL(tnode188803*, setms_458918)(tnode188803* n, tsym188833* s);
N_NIMCALL(tnode188803*, semcompiles_459910)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, tryexpr_416091)(tcontext250019* c, tnode188803* n, NU16 flags, NIM_BOOL buffererrors);
N_NIMCALL(NI, getinfocontextlen_164660)(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(E_Base*, getCurrentException)(void);
static N_INLINE(void, popCurrentException)(void);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src_74604, TNimType* mt);
N_NIMCALL(void, setinfocontextlen_164676)(NI l);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(tnode188803*, semsizeof_450917)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semis_451340)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, maketypesymnode_250658)(tcontext250019* c, ttype188837* typ, tlineinfo163527 info);
N_NIMCALL(tnode188803*, isopimpl_416643)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NU8, typerel_346174)(tcandidate345205* c, ttype188837* f, ttype188837* aorig, NIM_BOOL dobind);
N_NIMCALL(tnode188803*, semof_450952)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semecho_455352)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, buildstringify_455302)(tcontext250019* c, tnode188803* arg);
N_NIMCALL(tnode188803*, semexpandtoast_459305)(tcontext250019* c, tnode188803* n, tsym188833* magicsym, NU16 flags);
N_NIMCALL(tnode188803*, semexpandtoast_459159)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tsym188833*, expectmacroortemplatecall_416626)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semquoteast_416109)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NimStringDesc*, expectstring_458991)(tcontext250019* c, tnode188803* n_458994);
N_NIMCALL(tnodeseq188797*, newseq_459573)(NI len_459577);
N_NIMCALL(void, processquotations_459329)(tnode188803** n, NimStringDesc* op, tnodeseq188797** quotes, tnodeseq188797** ids);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s, NimStringDesc* prefix);
N_NIMCALL(tsym188833*, newanonsym_459037)(NU8 kind, tlineinfo163527 info, tsym188833* owner);
N_NIMCALL(tnode188803*, semtemplatedef_433248)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semtemplbodydirty_433044)(templctx430596* c, tnode188803* n);
N_NIMCALL(tnode188803*, semtemplbody_430750)(templctx430596* c, tnode188803* n);
N_NIMCALL(tnode188803*, semtemplsymbol_431004)(tcontext250019* c, tnode188803* n, tsym188833* s);
N_NIMCALL(void, openscope_430755)(templctx430596* c);
N_NIMCALL(void, closescope_430760)(templctx430596* c);
N_NIMCALL(tnode188803*, semtemplbodyscope_430765)(templctx430596* c, tnode188803* n);
N_NIMCALL(void, addlocaldecl_430944)(templctx430596* c, tnode188803** n, NU8 k);
N_NIMCALL(NU8, symbinding_430201)(tnode188803* n);
N_NIMCALL(NU8, whichkeyword_171360)(tident167019* id);
N_NIMCALL(tnode188803*, onlyreplaceparams_430772)(templctx430596* c, tnode188803* n);
N_NIMCALL(tnode188803*, getidentnode_430602)(templctx430596* c, tnode188803* n);
static N_INLINE(NIM_BOOL, istemplparam_430682)(templctx430596* c, tnode188803* n);
N_NIMCALL(void, replaceidentbysym_430559)(tnode188803** n, tnode188803* s);
N_NIMCALL(tsym188833*, newgensym_430904)(NU8 kind, tnode188803* n, templctx430596* c);
N_NIMCALL(void, semtemplsomedecl_431362)(templctx430596* c, tnode188803* n, NU8 symkind);
N_NIMCALL(tnode188803*, semroutineintemplbody_431189)(templctx430596* c, tnode188803* n, NU8 k);
N_NIMCALL(tnode188803*, semroutineintemplname_431053)(templctx430596* c, tnode188803* n);
N_NIMCALL(tnode188803*, transformtoexpr_433195)(tnode188803* n);
N_NIMCALL(void, symtabreplace_202005)(tstrtable188807* t, tsym188833* prevsym, tsym188833* newsym);
N_NIMCALL(tsym188833*, getmagicsym_459025)(NU16 magic);
N_NIMCALL(tnode188803*, semindirectop_454671)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(void, semopaux_451423)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, overloadedcallopr_451571)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, setgenericparams_462609)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semsymgenericinstantiation_450057)(tcontext250019* c, tnode188803* n, tsym188833* s);
N_NIMCALL(tnode188803*, explicitgenericinstantiation_421947)(tcontext250019* c, tnode188803* n, tsym188833* s_421951);
N_NIMCALL(tnode188803*, explicitgenericsym_421936)(tcontext250019* c, tnode188803* n, tsym188833* s);
N_NIMCALL(tnode188803*, explicitgenericinsterror_421931)(tnode188803* n);
N_NIMCALL(tnode188803*, semarrayaccess_457150)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(NU8, checkpar_460776)(tnode188803* n);
N_NIMCALL(tnode188803*, semtuplepositionsconstr_461323)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, semtuplefieldsconstr_460948)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, semsetconstr_460148)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semlambda_416049)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, semcast_450736)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NIM_BOOL, iscastable_450423)(ttype188837* dst, ttype188837* src);
N_NIMCALL(NI64, computesize_223154)(ttype188837* typ);
N_NIMCALL(tnode188803*, semif_440088)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semexprbranch_439807)(tcontext250019* c, tnode188803* n);
static N_INLINE(void, semdestructorcheck_439541)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, semexprbranchscope_439841)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semtableconstr_460689)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semstaticexpr_454422)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semblock_462063)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semstmtlist_449087)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, semtry_441221)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NIM_BOOL, usesresult_449002)(tnode188803* n);
N_NIMCALL(void, insertdestructors_439274)(tcontext250019* c, tnode188803* varsection, TY439278* Result);
N_NIMCALL(tnode188803*, semraise_444542)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semvarorlet_442061)(tcontext250019* c, tnode188803* n, NU8 symkind);
N_NIMCALL(void, newsons_189197)(tnode188803* father, NI length);
N_NIMCALL(void, addinterfacedecl_252695)(tcontext250019* c, tsym188833* sym);
N_NIMCALL(tsym188833*, findshadowedvar_441827)(tcontext250019* c, tsym188833* v);
N_NIMCALL(NIM_BOOL, identwithin_441885)(tnode188803* n, tident167019* s);
N_NIMCALL(void, checknilable_441970)(tsym188833* v);
N_NIMCALL(void, setupcompiletimevar_410444)(tsym188833* module, tnode188803* n);
N_NIMCALL(tnode188803*, semconst_442779)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, fitremovehiddenconv_441778)(tcontext250019* c, ttype188837* typ, tnode188803* n);
N_NIMCALL(tnode188803*, semtypesection_445704)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, typesectionleftsidepass_444702)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, typesectionrightsidepass_444862)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, processmagictype_429790)(tcontext250019* c, tsym188833* m);
N_NIMCALL(void, setmagictype_429784)(tsym188833* m, NU8 kind, NI size);
N_NIMCALL(ttype188837*, systypefromname_242204)(NimStringDesc* name);
N_NIMCALL(void, typesectionfinalpass_445371)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, checkconstructedtype_273140)(tlineinfo163527 info, ttype188837* typ);
N_NIMCALL(void, checkformetafields_445208)(tnode188803* n);
N_NIMCALL(tnode188803*, semdiscard_437696)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semwhile_437916)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, sembreakorcontinue_437767)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semfor_444184)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semexprnoderef_416024)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, semforvars_443904)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tsym188833*, symforvar_443874)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, addforvardecl_443838)(tcontext250019* c, tsym188833* v);
N_NIMCALL(tnode188803*, semforfields_443508)(tcontext250019* c, tnode188803* n, NU16 m);
N_NIMCALL(tnode188803*, instfieldloopbody_443029)(tfieldinstctx443024 c, tnode188803* n, tnode188803* forloop);
N_NIMCALL(void, semforobjectfields_443303)(tfieldsctx443300 c, tnode188803* typ, tnode188803* forloop, tnode188803* father);
N_NIMCALL(NIM_BOOL, hassonwith_189217)(tnode188803* n, NU8 kind);
N_NIMCALL(tnode188803*, implicititerator_444150)(tcontext250019* c, NimStringDesc* it, tnode188803* arg);
N_NIMCALL(tnode188803*, semcase_440561)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NI64, tocover_438040)(ttype188837* t);
N_NIMCALL(tnode188803*, semreturn_457784)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semusing_459045)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, adddeclat_252571)(tscope188827* scope, tsym188833* sym);
N_NIMCALL(tnode188803*, semasm_437895)(tcontext250019* con, tnode188803* n);
N_NIMCALL(NIM_CHAR, pragmaasm_267087)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semasmoremit_269409)(tcontext250019* con, tnode188803* n, NIM_CHAR marker);
N_NIMCALL(tnode188803*, semyield_458387)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, semyieldvarresult_458098)(tcontext250019* c, tnode188803* n, ttype188837* restype);
N_NIMCALL(tnode188803*, semiterator_448137)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semmethod_448478)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semconverterdef_448536)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, addconverter_250523)(tcontext250019* c, tsym188833* conv);
N_NIMCALL(tnode188803*, semmacrodef_448589)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, evalimport_255002)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, evalimportexcept_256161)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, evalfrom_255007)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, evalinclude_448665)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NI32, checkmodulename_255227)(tnode188803* n);
N_NIMCALL(void, excl_185860)(tintset185047* s, NI key);
N_NIMCALL(tnode188803*, semexport_462305)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, sempragmablock_448752)(tcontext250019* c, tnode188803* n);
N_NIMCALL(NU8, whichpragma_222161)(tnode188803* n);
N_NIMCALL(void, setline_448706)(tnode188803* n, tlineinfo163527 info);
N_NIMCALL(tnode188803*, semstaticstmt_448851)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, evalstaticstmt_410437)(tsym188833* module, tnode188803* e, tsym188833* prc);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_165246)(tlineinfo163527 a, tlineinfo163527 b);
N_NIMCALL(tnode188803*, tryconstexpr_417019)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, semoperand_449855)(tcontext250019* c, tnode188803* n, NU16 flags);
N_NIMCALL(tnode188803*, seminferredlambda_446618)(tcontext250019* c, tidtable188849 pt, tnode188803* n_446622);
N_NIMCALL(tnode188803*, replacetypesinbody_275725)(tcontext250019* p, tidtable188849 pt, tnode188803* n);
N_NIMCALL(void, importallsymbols_255625)(tcontext250019* c, tsym188833* frommod);
N_NIMCALL(tpasscontext246003*, myopen_463662)(tsym188833* module);
N_NIMCALL(tnode188803*, semstmtandgenerategenerics_463727)(tcontext250019* c, tnode188803* n);
N_NIMCALL(void, addcodeforgenerics_463543)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, hlostmt_418093)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, buildechostmt_455485)(tcontext250019* c, tnode188803* n);
N_NIMCALL(tnode188803*, transformstmt_378403)(tsym188833* module, tnode188803* n);
N_NIMCALL(void, recovercontext_463766)(tcontext250019* c);
N_NIMCALL(void, rawclosescope_252174)(tcontext250019* c);
STRING_LITERAL(TMP934, "typedesc", 8);
STRING_LITERAL(TMP935, "destroy_", 8);
STRING_LITERAL(TMP936, "this_", 5);
STRING_LITERAL(TMP937, "destructor", 10);
STRING_LITERAL(TMP1858, "sem.myOpen", 10);
STRING_LITERAL(TMP2675, "", 0);
static NIM_CONST TY439854 TMP2676 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0xE0, 0x11, 0x02, 0x86, 0x00, 0x60,
0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP2677, "|", 1);
STRING_LITERAL(TMP2678, "invalid type", 12);
STRING_LITERAL(TMP2679, "region needs to be an object type", 33);
STRING_LITERAL(TMP2682, "compiler/semtypes.nim", 21);
NIM_CONST TY79484 TMP2681 = {((NimStringDesc*) &TMP2682),
228}
;
STRING_LITERAL(TMP2683, "openarray", 9);
STRING_LITERAL(TMP2684, "range", 5);
STRING_LITERAL(TMP2685, "set", 3);
STRING_LITERAL(TMP2686, "ordinal", 7);
STRING_LITERAL(TMP2687, "seq", 3);
STRING_LITERAL(TMP2688, "varargs", 7);
STRING_LITERAL(TMP2689, "cannot instantiate the \'$1\' $2", 30);
NIM_CONST TY79484 TMP2690 = {((NimStringDesc*) &TMP2682),
983}
;
STRING_LITERAL(TMP2691, "cannot instantiate ", 19);
STRING_LITERAL(TMP2692, "\012got: (", 7);
STRING_LITERAL(TMP2696, ")\012but expected: (", 17);
STRING_LITERAL(TMP2697, ")", 1);
STRING_LITERAL(TMP2698, "result", 6);
NIM_CONST TY79484 TMP2699 = {((NimStringDesc*) &TMP2682),
1164}
;
STRING_LITERAL(TMP2700, "addInheritedFieldsAux", 21);
STRING_LITERAL(TMP2701, "addInheritedFieldsAux(record case branch)", 41);
STRING_LITERAL(TMP2702, "addInheritedFieldsAux()", 23);
STRING_LITERAL(TMP2703, "semObjectNode", 13);
STRING_LITERAL(TMP2704, "nesting too deep", 16);
STRING_LITERAL(TMP2706, "compiler/seminst.nim", 20);
NIM_CONST TY79484 TMP2705 = {((NimStringDesc*) &TMP2706),
212}
;
STRING_LITERAL(TMP2707, "instantiateGenericParamList; no generic params", 46);
STRING_LITERAL(TMP2708, "instantiateGenericParamList; no symbol", 38);
STRING_LITERAL(TMP2709, "instantiateGenericParamList: ", 29);
STRING_LITERAL(TMP2710, "owner is nil", 12);
STRING_LITERAL(TMP2711, "result", 6);
STRING_LITERAL(TMP2712, "PNimrodNode", 11);
static NIM_CONST tspecialwords171011 TMP2772 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x30, 0xF8, 0xA3, 0xDF, 0x05, 0x00, 0xE3,
0x7F, 0x00, 0x40, 0x08, 0x33, 0x00, 0x43, 0x12,
0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP2774, "compiler/semexprs.nim", 21);
NIM_CONST TY79484 TMP2773 = {((NimStringDesc*) &TMP2774),
945}
;
STRING_LITERAL(TMP2775, "in", 2);
STRING_LITERAL(TMP2776, "not", 3);
STRING_LITERAL(TMP2777, "()", 2);
STRING_LITERAL(TMP2779, "compiler/sem.nim", 16);
NIM_CONST TY79484 TMP2778 = {((NimStringDesc*) &TMP2779),
143}
;
NIM_CONST TY79484 TMP2780 = {((NimStringDesc*) &TMP2779),
144}
;
static NIM_CONST tspecialwords171011 TMP2781 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x60, 0x03, 0x00, 0x04, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST tspecialwords171011 TMP2782 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x60, 0x23, 0xC1, 0x04, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x13, 0x03,
0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00}
;
static NIM_CONST tspecialwords171011 TMP2783 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x60, 0x23, 0x01, 0x04, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP2842, ":type", 5);
NIM_CONST TY79484 TMP2851 = {((NimStringDesc*) &TMP2682),
675}
;
STRING_LITERAL(TMP2854, "invalid return type: \'stmt\'", 27);
STRING_LITERAL(TMP2855, "*", 1);
STRING_LITERAL(TMP2856, "**", 2);
STRING_LITERAL(TMP2857, "~", 1);
STRING_LITERAL(TMP2858, "semProcAux", 10);
STRING_LITERAL(TMP2860, "nimDestroyRange", 15);
STRING_LITERAL(TMP2862, "compiler/semdestruct.nim", 24);
NIM_CONST TY79484 TMP2861 = {((NimStringDesc*) &TMP2862),
114}
;
NIM_CONST TY79484 TMP2863 = {((NimStringDesc*) &TMP2862),
105}
;
NIM_CONST TY79484 TMP2864 = {((NimStringDesc*) &TMP2862),
154}
;
STRING_LITERAL(TMP2865, "AnonType", 8);
static NIM_CONST tspecialwords171011 TMP2866 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x30, 0xF8, 0xA3, 0xDF, 0x05, 0x00, 0xE3,
0x7F, 0x00, 0x40, 0x08, 0x33, 0x00, 0x43, 0x12,
0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP2880, "compiler/hlo.nim", 16);
NIM_CONST TY79484 TMP2879 = {((NimStringDesc*) &TMP2880),
15}
;
STRING_LITERAL(TMP2881, "changeType: no tuple type for constructor", 41);
STRING_LITERAL(TMP2882, "changeType(): invalid tuple constr", 34);
STRING_LITERAL(TMP2883, "changeType(): invalid identifier", 32);
STRING_LITERAL(TMP2884, "cannot convert ", 15);
STRING_LITERAL(TMP2885, " to ", 4);
static NIM_CONST TY452951 TMP2886 = {
0x00, 0x08, 0x60, 0x87, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x8C, 0x40, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TMP2887, "analyseIfAddressTaken", 21);
STRING_LITERAL(TMP2889, "compiler/semmagic.nim", 21);
NIM_CONST TY79484 TMP2888 = {((NimStringDesc*) &TMP2889),
52}
;
STRING_LITERAL(TMP2890, "name", 4);
STRING_LITERAL(TMP2891, "arity", 5);
NIM_CONST TY79484 TMP2892 = {((NimStringDesc*) &TMP2889),
47}
;
STRING_LITERAL(TMP2893, "low", 3);
STRING_LITERAL(TMP2894, "high", 4);
NIM_CONST TY450818 optostr_450817 = {((NimStringDesc*) &TMP2893),
((NimStringDesc*) &TMP2894)}
;
static NIM_CONST TY452951 TMP2895 = {
0x01, 0x00, 0xFC, 0xF8, 0xE7, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xF8, 0x41, 0x0C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00}
;
STRING_LITERAL(TMP2968, " --> \'", 6);
STRING_LITERAL(TMP2969, "\'", 1);
static NIM_CONST tspecialwords171011 TMP3011 = {
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(TMP3012, "\012  ", 3);
STRING_LITERAL(TMP3014, "compiler/semcall.nim", 20);
NIM_CONST TY79484 TMP3013 = {((NimStringDesc*) &TMP3014),
142}
;
STRING_LITERAL(TMP3015, ".()", 3);
STRING_LITERAL(TMP3016, ".", 1);
NIM_CONST TY79484 TMP3017 = {((NimStringDesc*) &TMP3014),
163}
;
STRING_LITERAL(TMP3018, ".=", 2);
STRING_LITERAL(TMP3019, "\012", 1);
NIM_CONST TY79484 TMP3020 = {((NimStringDesc*) &TMP3014),
191}
;
STRING_LITERAL(TMP3021, "ambiguous call", 14);
STRING_LITERAL(TMP3022, "(", 1);
STRING_LITERAL(TMP3023, ", ", 2);
STRING_LITERAL(TMP3024, "calleeSym.ast is nil", 20);
STRING_LITERAL(TMP3025, "semOverloadedCallAnalyseEffects", 31);
STRING_LITERAL(TMP3026, "[]=", 3);
STRING_LITERAL(TMP3027, "{}=", 3);
NIM_CONST TY79484 TMP3028 = {((NimStringDesc*) &TMP2774),
1233}
;
STRING_LITERAL(TMP3029, ") ", 2);
STRING_LITERAL(TMP3033, "semRecordNodeAux", 16);
STRING_LITERAL(TMP3034, "semRecordCase: discriminant is no symbol", 40);
STRING_LITERAL(TMP3035, "dummy", 5);
static NIM_CONST tspecialwords171011 TMP3036 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x50, 0x60, 0x6F, 0x85, 0x04, 0x00, 0x01,
0x00, 0x00, 0x00, 0x02, 0x10, 0x06, 0x0B, 0x04,
0x00, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x06}
;
static NIM_CONST tspecialwords171011 TMP3037 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x20, 0x00, 0x00, 0x06, 0x00, 0x00, 0xE2,
0x7F, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3041, "bind", 4);
STRING_LITERAL(TMP3042, ":anon", 5);
STRING_LITERAL(TMP3043, "object constructor needs an object type", 39);
STRING_LITERAL(TMP3044, "checkInitialized", 16);
STRING_LITERAL(TMP3045, "field not initialized: ", 23);
STRING_LITERAL(TMP3047, "sizeof", 6);
STRING_LITERAL(TMP3048, "is", 2);
NIM_CONST TY79484 TMP3049 = {((NimStringDesc*) &TMP2774),
339}
;
STRING_LITERAL(TMP3050, "closure", 7);
STRING_LITERAL(TMP3051, "of", 2);
STRING_LITERAL(TMP3052, "$", 1);
STRING_LITERAL(TMP3053, "implicitly invoked \'$\' does not return string", 45);
NIM_CONST TY79484 TMP3054 = {((NimStringDesc*) &TMP2774),
1458}
;
STRING_LITERAL(TMP3055, "PNimrodNode", 11);
NIM_CONST TY79484 TMP3056 = {((NimStringDesc*) &TMP2774),
1494}
;
STRING_LITERAL(TMP3057, "``", 2);
STRING_LITERAL(TMP3058, "block", 5);
STRING_LITERAL(TMP3059, "stmt", 4);
STRING_LITERAL(TMP3060, "expr", 4);
static NIM_CONST tspecialwords171011 TMP3061 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x14, 0x00, 0x00, 0x04, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3062, ")\012", 2);
STRING_LITERAL(TMP3063, "cannot instantiate: ", 20);
STRING_LITERAL(TMP3064, "; got ", 6);
STRING_LITERAL(TMP3065, " type(s) but expected ", 22);
STRING_LITERAL(TMP3066, "[]", 2);
STRING_LITERAL(TMP3067, "{}", 2);
STRING_LITERAL(TMP3068, "semExpr() to implement", 22);
static NIM_CONST tspecialwords171011 TMP3069 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x20, 0x60, 0xA3, 0x4F, 0x00, 0x00, 0xE1,
0x7F, 0x00, 0x40, 0x08, 0x00, 0x00, 0x40, 0x10,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3070, "usage of a type with a destructor in a non destructible context", 63);
STRING_LITERAL(TMP3071, "type class predicate failed", 27);
STRING_LITERAL(TMP3072, "tuple", 5);
STRING_LITERAL(TMP3073, "shared", 6);
STRING_LITERAL(TMP3075, "compiler/semstmts.nim", 21);
NIM_CONST TY79484 TMP3074 = {((NimStringDesc*) &TMP3075),
793}
;
NIM_CONST TY79484 TMP3076 = {((NimStringDesc*) &TMP3075),
819}
;
NIM_CONST TY79484 TMP3077 = {((NimStringDesc*) &TMP3075),
820}
;
STRING_LITERAL(TMP3078, ":ObjectType", 11);
STRING_LITERAL(TMP3079, "true", 4);
STRING_LITERAL(TMP3080, "true", 4);
STRING_LITERAL(TMP3081, "no object or tuple type", 23);
STRING_LITERAL(TMP3082, "Field", 5);
STRING_LITERAL(TMP3083, "\'continue\' not supported in a \'fields\' loop", 43);
STRING_LITERAL(TMP3084, "parallel \'fields\' iterator does not work for \'case\' objects", 59);
STRING_LITERAL(TMP3085, "items", 5);
STRING_LITERAL(TMP3086, "pairs", 5);
STRING_LITERAL(TMP3087, "\'return\'", 8);
STRING_LITERAL(TMP3088, "semYield", 8);
STRING_LITERAL(TMP3089, "tuple constructor", 17);
STRING_LITERAL(TMP3090, "yield statement must yield a value", 34);
static NIM_CONST tspecialwords171011 TMP3091 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x40, 0x00, 0xDE, 0xFF, 0x09,
0x00, 0xFE, 0x3F, 0xD4, 0xCC, 0x78, 0x20, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
static NIM_CONST tspecialwords171011 TMP3092 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x60, 0xA3, 0x06, 0x04, 0x00, 0xE1,
0x7F, 0x00, 0x40, 0x08, 0x30, 0x00, 0x03, 0x10,
0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3093, "iterator", 8);
STRING_LITERAL(TMP3094, "method", 6);
STRING_LITERAL(TMP3095, "converter", 9);
static NIM_CONST tspecialwords171011 TMP3096 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x74, 0x23, 0x82, 0x04, 0x00, 0xE1,
0x7F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x03, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3097, "macro", 5);
STRING_LITERAL(TMP3098, "import", 6);
STRING_LITERAL(TMP3109, "from", 4);
STRING_LITERAL(TMP3112, "include", 7);
STRING_LITERAL(TMP3113, "export", 6);
STRING_LITERAL(TMP3114, "invalid expr for \'export\': ", 27);
static NIM_CONST tspecialwords171011 TMP3115 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP3119, "no code for ", 12);
STRING_LITERAL(TMP3120, "echo", 4);
STRING_LITERAL(TMP3121, "echo", 4);
STRING_LITERAL(TMP3123, "n is not nil", 12);
ttype188837* commontypebegin_416199;
extern TNimType NTI188799; /* PType */
extern TNimType NTI188837; /* TType */
extern tgcheap43016 gch_43044;
tident167019* typedescid_426779;
ttype188837* enforcevoidcontext_437695;
tsym188833* analyzingdestructor_438181;
tsym188833* destructoristrivial_438182;
extern TNimType NTI188801; /* PSym */
extern TNimType NTI188833; /* TSym */
tident167019* destructorname_438215;
tident167019* destructorparam_438216;
tnode188803* destructorpragma_438217;
tsym188833* rangedestructorproc_438218;
extern NU8 gcmd_137113;
extern NI evaltemplatecounter_390273;
extern TNimType NTI188803; /* TNode */
extern TNimType NTI188441; /* TSymKind */
extern TNimType NTI188835; /* TTypeSeq */
extern TNimType NTI250007; /* PProcCon */
extern tnode188803* emptynode_189727;
extern TNimType NTI188797; /* TNodeSeq */
extern tident167019* iddelegator_167478;
extern tnode188803* emptyparams_191211;
extern tident167019* idanon_167476;
extern NU32 gglobaloptions_137111;
extern NIM_BOOL isserving_137126;
TNimType NTI427566; /* object */
extern TNimType NTI353715; /* range -1..0(int) */
extern TNimType NTI143; /* string */
extern TNimType NTI188795; /* PNode */
extern TNimType NTI163527; /* TLineInfo */
extern TNimType NTI250017; /* PContext */
TNimType NTI427581; /* ref object */
extern NU32 goptions_137108;
extern NU64 gnotes_164181;
extern TNimType NTI345205; /* TCandidate */
extern TNimType NTI110805; /* seq[string] */
extern NI gerrorcounter_164182;
extern NI gerrormax_164185;
extern tsymseq188805* gowners_250247;
extern NU8 erroroutputs_164234;
extern TNimType NTI250131; /* seq[TInstantiationPair] */
extern TSafePoint* exchandler_13039;
extern TNimType NTI163533; /* ERecoverableError */
extern E_Base* currexception_13041;
extern TNimType NTI188521; /* TMagic */
extern tsym188833* systemmodule_242017;
extern tlineinfo163527 gcodegenlineinfo_164126;
extern TNimType NTI188240; /* TTypeKind */
extern NI intsize_142590;
extern NI floatsize_142591;
extern NI ptrsize_142592;
extern TY246061 gincludefile_246065;
extern TNimType NTI163535; /* ESuggestDone */

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

static N_INLINE(void, rtladdzct_46002)(tcell41090* c) {
	addzct_44418(&gch_43044.Zct, c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tcell41090* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_44443(src);
		(*c).Refcount += 8;
	}
	LA3: ;
	{
		tcell41090* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_44443((*dest));
		{
			(*c).Refcount -= 8;
			if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA11;
			rtladdzct_46002(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tcell41090* c;
	c = usrtocell_44443(p);
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		rtladdzct_46002(c);
	}
	LA3: ;
}

static N_INLINE(tnode188803*, inlineconst_450064)(tnode188803* n, tsym188833* s) {
	tnode188803* result;
	result = 0;
	result = copytree_189237((*s).Ast);
	asgnRefNoCycle((void**) &(*result).Typ, (*s).Typ);
	(*result).Info = (*n).Info;
	return result;
}

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

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

static N_INLINE(tnode188803*, lastson_189189)(tnode188803* n) {
	tnode188803* result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	result = (*n).kindU.S6.Sons->data[(NI32)(LOC1 - 1)];
	return result;
}

N_NIMCALL(NIM_BOOL, implicitlydiscardable_439849)(tnode188803* n_439851) {
	NIM_BOOL result;
	tnode188803* n;
	NIM_BOOL LOC2;
	NIM_BOOL LOC3;
	result = 0;
	n = n_439851;
	while (1) {
		if (!((TMP2676[(*n).Kind/8] &(1<<((*n).Kind%8)))!=0)) goto LA1;
		n = lastson_189189(n);
	} LA1: ;
	LOC2 = 0;
	LOC3 = 0;
	LOC3 = iscallexpr_189241(n);
	if (!(LOC3)) goto LA4;
	LOC3 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
	LA4: ;
	LOC2 = LOC3;
	if (!(LOC2)) goto LA5;
	LOC2 = (((*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Flags &(1<<((((NU8) 29))&31)))!=0);
	LA5: ;
	result = LOC2;
	return result;
}

static N_INLINE(NIM_BOOL, isatom_195186)(tnode188803* 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_439933)(tnode188803* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isatom_195186(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_223020((*n).Typ, ((NU8) 0));
			localerror_165571((*n).Info, ((NU16) 140), LOC12);
		}
		LA10: ;
	}
	goto LA1;
	LA4: ;
	{
		tnode188803* it_439976;
		NI i_439978;
		NI HEX3Atmp_439980;
		NI LOC16;
		NI res_439982;
		if (!((*n).Kind == ((NU8) 114) || (*n).Kind == ((NU8) 125))) goto LA14;
		(*n).Kind = ((NU8) 114);
		it_439976 = 0;
		i_439978 = 0;
		HEX3Atmp_439980 = 0;
		LOC16 = 0;
		LOC16 = len_189264(n);
		HEX3Atmp_439980 = LOC16 - 1;
		res_439982 = 0;
		while (1) {
			if (!(res_439982 <= HEX3Atmp_439980)) goto LA17;
			i_439978 = res_439982;
			it_439976 = (*n).kindU.S6.Sons->data[i_439978];
			fixniltype_439933(it_439976);
			res_439982 += 1;
		} LA17: ;
	}
	goto LA1;
	LA14: ;
	LA1: ;
	asgnRefNoCycle((void**) &(*n).Typ, NIM_NIL);
}

N_NIMCALL(void, discardcheck_439985)(tcontext250019* c, tnode188803* result) {
	{
		if (!(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_165584((*result).Info, ((NU16) 242), ((NimStringDesc*) &TMP2675));
		}
		goto LA11;
		LA13: ;
		{
			NIM_BOOL LOC16;
			tnode188803* n;
			LOC16 = 0;
			LOC16 = implicitlydiscardable_439849(result);
			if (!LOC16) goto LA17;
			n = result;
			asgnRefNoCycle((void**) &(*result).Typ, NIM_NIL);
			while (1) {
				if (!((TMP2676[(*n).Kind/8] &(1<<((*n).Kind%8)))!=0)) goto LA19;
				n = lastson_189189(n);
				asgnRefNoCycle((void**) &(*n).Typ, NIM_NIL);
			} LA19: ;
		}
		goto LA11;
		LA17: ;
		{
			NIM_BOOL LOC21;
			LOC21 = 0;
			LOC21 = !(((*(*result).Typ).Kind == ((NU8) 50)));
			if (!(LOC21)) goto LA22;
			LOC21 = !((gcmd_137113 == ((NU8) 18)));
			LA22: ;
			if (!LOC21) goto LA23;
			{
				if (!((*(*result).Typ).Kind == ((NU8) 5))) goto LA27;
				fixniltype_439933(result);
				message_165584((*result).Info, ((NU16) 242), ((NimStringDesc*) &TMP2675));
			}
			goto LA25;
			LA27: ;
			{
				tnode188803* n;
				NimStringDesc* LOC31;
				n = result;
				while (1) {
					if (!((TMP2676[(*n).Kind/8] &(1<<((*n).Kind%8)))!=0)) goto LA30;
					n = lastson_189189(n);
				} LA30: ;
				LOC31 = 0;
				LOC31 = typetostring_223020((*result).Typ, ((NU8) 0));
				localerror_165571((*n).Info, ((NU16) 140), LOC31);
			}
			LA25: ;
		}
		goto LA11;
		LA23: ;
		LA11: ;
	}
	LA9: ;
	BeforeRet: ;
}

N_NIMCALL(tnode188803*, semexprnotype_416019)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = semexpr_416003(c, n, 8);
	discardcheck_439985(c, result);
	return result;
}

N_NIMCALL(tnode188803*, semstmt_416061)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = semexprnotype_416019(c, n);
	return result;
}

N_NIMCALL(ttype188837*, neworprevtype_422528)(NU8 kind, ttype188837* prev, tcontext250019* c) {
	ttype188837* result;
	result = 0;
	{
		if (!(prev == NIM_NIL)) goto LA3;
		result = newtypes_250180(kind, c);
	}
	goto LA1;
	LA3: ;
	{
		result = prev;
		{
			if (!((*result).Kind == ((NU8) 30))) goto LA8;
			(*result).Kind = kind;
		}
		LA8: ;
	}
	LA1: ;
	return result;
}

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

static N_INLINE(NIM_BOOL, isrange_222077)(tnode188803* n) {
	NIM_BOOL result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 29))) goto LA3;
		{
			NIM_BOOL LOC7;
			NIM_BOOL LOC8;
			tnode188803* LOC9;
			tnode188803* LOC11;
			NIM_BOOL LOC13;
			tnode188803* LOC14;
			tnode188803* LOC16;
			tnode188803* LOC17;
			LOC7 = 0;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_189694(n, 0);
			LOC8 = ((*LOC9).Kind == ((NU8) 2));
			if (!(LOC8)) goto LA10;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_189694(n, 0);
			LOC8 = ((*(*LOC11).kindU.S5.Ident).Sup.Id == 73);
			LA10: ;
			LOC7 = LOC8;
			if (LOC7) goto LA12;
			LOC13 = 0;
			LOC14 = 0;
			LOC14 = HEX5BHEX5D_189694(n, 0);
			LOC13 = ((*LOC14).Kind == ((NU8) 56) || (*LOC14).Kind == ((NU8) 57));
			if (!(LOC13)) goto LA15;
			LOC16 = 0;
			LOC16 = HEX5BHEX5D_189694(n, 0);
			LOC17 = 0;
			LOC17 = HEX5BHEX5D_189694(LOC16, 1);
			LOC13 = ((*(*(*LOC17).kindU.S4.Sym).Name).Sup.Id == 73);
			LA15: ;
			LOC7 = LOC13;
			LA12: ;
			if (!LOC7) goto LA18;
			result = NIM_TRUE;
		}
		LA18: ;
	}
	LA3: ;
	return result;
}

static N_INLINE(ttype188837*, skipintlit_242424)(ttype188837* t) {
	ttype188837* result;
	result = 0;
	{
		if (!!(((*t).N == NIM_NIL))) goto LA3;
		{
			if (!((*t).Kind == ((NU8) 31) || (*t).Kind == ((NU8) 36))) goto LA7;
			result = getsystype_242024((*t).Kind);
			goto BeforeRet;
		}
		LA7: ;
	}
	LA3: ;
	result = t;
	BeforeRet: ;
	return result;
}

N_NIMCALL(ttype188837*, semrangeaux_423297)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	TY423419 range;
	tnode188803* LOC9;
	tnode188803* LOC10;
	TY423424 ranget;
	NI i_423437;
	NI res_423462;
	NI i_423449;
	NI res_423465;
	result = 0;
	checksonslen_251209(n, 3);
	result = neworprevtype_422528(((NU8) 20), prev, c);
	asgnRefNoCycle((void**) &(*result).N, newnodei_189099(((NU8) 44), (*n).Info));
	{
		NIM_BOOL LOC3;
		tnode188803* LOC4;
		tnode188803* LOC6;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_189694(n, 1);
		LOC3 = ((*LOC4).Kind == ((NU8) 1));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_189694(n, 2);
		LOC3 = ((*LOC6).Kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		localerror_165571((*n).Info, ((NU16) 106), ((NimStringDesc*) &TMP2675));
	}
	LA7: ;
	memset((void*)range, 0, sizeof(range));
	LOC9 = 0;
	LOC9 = HEX5BHEX5D_189694(n, 1);
	range[(0)- 0] = semexprwithtype_416011(c, LOC9, 16);
	LOC10 = 0;
	LOC10 = HEX5BHEX5D_189694(n, 2);
	range[(1)- 0] = semexprwithtype_416011(c, LOC10, 16);
	memset((void*)ranget, 0, sizeof(ranget));
	i_423437 = 0;
	res_423462 = 0;
	while (1) {
		ttype188837* LOC12;
		if (!(res_423462 <= 1)) goto LA11;
		i_423437 = res_423462;
		LOC12 = 0;
		LOC12 = skiptypes_192793((*range[(i_423437)- 0]).Typ, IL64(576460752303423488));
		ranget[(i_423437)- 0] = skipintlit_242424(LOC12);
		res_423462 += 1;
	} LA11: ;
	{
		NIM_BOOL LOC15;
		LOC15 = 0;
		LOC15 = sametype_228116(ranget[(0)- 0], ranget[(1)- 0], 0);
		if (!!(LOC15)) goto LA16;
		localerror_165571((*n).Info, ((NU16) 128), ((NimStringDesc*) &TMP2675));
	}
	goto LA13;
	LA16: ;
	{
		NIM_BOOL LOC19;
		LOC19 = 0;
		LOC19 = isordinaltype_223071(ranget[(0)- 0]);
		if (!!(LOC19)) goto LA20;
		localerror_165571((*n).Info, ((NU16) 74), ((NimStringDesc*) &TMP2675));
	}
	goto LA13;
	LA20: ;
	{
		NIM_BOOL LOC23;
		LOC23 = 0;
		LOC23 = enumhasholes_223075(ranget[(0)- 0]);
		if (!LOC23) goto LA24;
		localerror_165571((*n).Info, ((NU16) 146), (*(*(*ranget[(0)- 0]).Sym).Name).S);
	}
	goto LA13;
	LA24: ;
	LA13: ;
	i_423449 = 0;
	res_423465 = 0;
	while (1) {
		if (!(res_423465 <= 1)) goto LA26;
		i_423449 = res_423465;
		{
			NIM_BOOL LOC29;
			tnode188803* LOC32;
			LOC29 = 0;
			LOC29 = hasgenericarguments_273821(range[(i_423449)- 0]);
			if (!LOC29) goto LA30;
			LOC32 = 0;
			LOC32 = makestaticexpr_250684(c, range[(i_423449)- 0]);
			addson_189207((*result).N, LOC32);
		}
		goto LA27;
		LA30: ;
		{
			tnode188803* LOC34;
			LOC34 = 0;
			LOC34 = semconstexpr_417095(c, range[(i_423449)- 0]);
			addson_189207((*result).N, LOC34);
		}
		LA27: ;
		res_423465 += 1;
	} LA26: ;
	{
		tnode188803* LOC37;
		tnode188803* LOC38;
		NU8 LOC39;
		LOC37 = 0;
		LOC37 = HEX5BHEX5D_189694((*result).N, 0);
		LOC38 = 0;
		LOC38 = HEX5BHEX5D_189694((*result).N, 1);
		LOC39 = 0;
		LOC39 = weaklevalue_197537(LOC37, LOC38);
		if (!(LOC39 == ((NU8) 1))) goto LA40;
		localerror_165571((*n).Info, ((NU16) 106), ((NimStringDesc*) &TMP2675));
	}
	LA40: ;
	addsonskipintlit_242461(result, ranget[(0)- 0]);
	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)), (NI32)((*a).Sup.len * 1));
	LOC11 = (LOC13 == ((NI32) 0));
	LA12: ;
	result = LOC11;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

static N_INLINE(ttype188837*, freshtype_428671)(ttype188837* res, ttype188837* prev) {
	ttype188837* result;
	result = 0;
	{
		if (!prev == 0) goto LA3;
		result = copytype_189141(res, (*res).Owner, NIM_FALSE);
	}
	goto LA1;
	LA3: ;
	{
		result = res;
	}
	LA1: ;
	return result;
}

N_NIMCALL(ttype188837*, newconstraint_422561)(tcontext250019* c, NU8 k) {
	ttype188837* result;
	ttype188837* LOC1;
	result = 0;
	result = newtypes_250180(((NU8) 51), c);
	LOC1 = 0;
	LOC1 = newtypes_250180(k, c);
	addsonskipintlit_242461(result, LOC1);
	return result;
}

N_NIMCALL(ttype188837*, semanyref_423149)(tcontext250019* c, tnode188803* n_423152, NU8 kind, ttype188837* prev) {
	ttype188837* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_189264(n_423152);
		if (!(LOC3 < 1)) goto LA4;
		result = newconstraint_422561(c, kind);
	}
	goto LA1;
	LA4: ;
	{
		NI iscall;
		tnode188803* n;
		NI i_423220;
		NI HEX3Atmp_423238;
		NI LOC13;
		NI res_423240;
		ttype188837* base;
		tnode188803* LOC22;
		iscall = ((*n_423152).Kind == ((NU8) 27) || (*n_423152).Kind == ((NU8) 29) || (*n_423152).Kind == ((NU8) 30) || (*n_423152).Kind == ((NU8) 31) || (*n_423152).Kind == ((NU8) 26) || (*n_423152).Kind == ((NU8) 28) || (*n_423152).Kind == ((NU8) 32));
		{
			tnode188803* LOC9;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_189694(n_423152, 0);
			if (!((*LOC9).Kind == ((NU8) 41))) goto LA10;
			n = HEX5BHEX5D_189694(n_423152, 0);
		}
		goto LA7;
		LA10: ;
		{
			n = n_423152;
		}
		LA7: ;
		checkminsonslen_251215(n, 1);
		result = neworprevtype_422528(kind, prev, c);
		i_423220 = 0;
		HEX3Atmp_423238 = 0;
		LOC13 = 0;
		LOC13 = len_189264(n);
		HEX3Atmp_423238 = (NI32)(LOC13 - 2);
		res_423240 = ((NI) (iscall));
		while (1) {
			ttype188837* region;
			tnode188803* LOC15;
			if (!(res_423240 <= HEX3Atmp_423238)) goto LA14;
			i_423220 = res_423240;
			LOC15 = 0;
			LOC15 = HEX5BHEX5D_189694(n, i_423220);
			region = semtypenode_416055(c, LOC15, NIM_NIL);
			{
				ttype188837* LOC18;
				tnode188803* LOC21;
				LOC18 = 0;
				LOC18 = skiptypes_192793(region, 2048);
				if (!!(((*LOC18).Kind == ((NU8) 50) || (*LOC18).Kind == ((NU8) 17)))) goto LA19;
				LOC21 = 0;
				LOC21 = HEX5BHEX5D_189694(n, i_423220);
				message_165584((*LOC21).Info, ((NU16) 4), ((NimStringDesc*) &TMP2679));
			}
			LA19: ;
			addsonskipintlit_242461(result, region);
			res_423240 += 1;
		} LA14: ;
		LOC22 = 0;
		LOC22 = lastson_189189(n);
		base = semtypenode_416055(c, LOC22, NIM_NIL);
		addsonskipintlit_242461(result, base);
	}
	LA1: ;
	return result;
}

N_NIMCALL(ttype188837*, semtypeexpr_428654)(tcontext250019* c, tnode188803* n_428657) {
	ttype188837* result;
	tnode188803* n;
	result = 0;
	n = semexprwithtype_416011(c, n_428657, 16);
	{
		if (!((*(*n).Typ).Kind == ((NU8) 8))) goto LA3;
		result = base_223029((*n).Typ);
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC6;
		LOC6 = 0;
		LOC6 = rendertree_211051(n, 0);
		localerror_165571((*n).Info, ((NU16) 63), LOC6);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semwhen_416637)(tcontext250019* c, tnode188803* n, NIM_BOOL semcheck) {
	tnode188803* result;
	NI i_459980;
	NI HEX3Atmp_460142;
	NI LOC1;
	NI res_460144;
	result = 0;
	result = NIM_NIL;
	i_459980 = 0;
	HEX3Atmp_460142 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_460142 = (NI32)(LOC1 - 1);
	res_460144 = 0;
	while (1) {
		tnode188803* it;
		if (!(res_460144 <= HEX3Atmp_460142)) goto LA2;
		i_459980 = res_460144;
		it = (*n).kindU.S6.Sons->data[i_459980];
		switch ((*it).Kind) {
		case ((NU8) 86):
		case ((NU8) 49):
		{
			tnode188803* e;
			checksonslen_251209(it, 2);
			e = semconstexpr_417095(c, (*it).kindU.S6.Sons->data[0]);
			{
				if (!!(((*e).Kind == ((NU8) 6)))) goto LA6;
			}
			goto LA4;
			LA6: ;
			{
				NIM_BOOL LOC9;
				LOC9 = 0;
				LOC9 = !(((*e).kindU.S1.Intval == 0));
				if (!(LOC9)) goto LA10;
				LOC9 = (result == NIM_NIL);
				LA10: ;
				if (!LOC9) goto LA11;
				{
					if (!semcheck) goto LA15;
					result = semstmt_416061(c, (*it).kindU.S6.Sons->data[1]);
				}
				goto LA13;
				LA15: ;
				{
					result = (*it).kindU.S6.Sons->data[1];
				}
				LA13: ;
			}
			goto LA4;
			LA11: ;
			LA4: ;
		}
		break;
		case ((NU8) 88):
		case ((NU8) 50):
		{
			checksonslen_251209(it, 1);
			{
				if (!(result == NIM_NIL)) goto LA21;
				{
					if (!semcheck) goto LA25;
					result = semstmt_416061(c, (*it).kindU.S6.Sons->data[0]);
				}
				goto LA23;
				LA25: ;
				{
					result = (*it).kindU.S6.Sons->data[0];
				}
				LA23: ;
			}
			LA21: ;
		}
		break;
		default:
		{
			illformedast_251203(n);
		}
		break;
		}
		res_460144 += 1;
	} LA2: ;
	{
		if (!(result == NIM_NIL)) goto LA31;
		result = newnodei_189099(((NU8) 1), (*n).Info);
	}
	LA31: ;
	idsynchronizationpoint_187452(200);
	return result;
}

N_NIMCALL(tsym188833*, semtypeident_424101)(tcontext250019* c, tnode188803* n) {
	tsym188833* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 3))) goto LA3;
		result = (*n).kindU.S4.Sym;
	}
	goto LA1;
	LA3: ;
	{
		result = qualifiedlookup_252806(c, n, 3);
		{
			if (!!((result == NIM_NIL))) goto LA8;
			markused_345244(n, 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;
				{
					tsym188833* bound;
					if (!(0 < (*c).Ingenericinst)) goto LA18;
					bound = (*(*(*result).Typ).Sons->data[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_165571((*n).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
					result = errorsym_252288(c, n);
					goto BeforeRet;
				}
				LA26: ;
				result = copysym_189147((*(*result).Typ).Sym, NIM_FALSE);
				asgnRefNoCycle((void**) &(*result).Typ, copytype_189141((*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_192569((*result).Typ);
					LOC35 = (LOC37 == 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_165571((*n).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
					result = errorsym_252288(c, n);
					goto BeforeRet;
				}
				LA32: ;
			}
			LA30: ;
			{
				toverloaditer252363 ov;
				tsym188833* amb;
				if (!!(((*result).Kind == ((NU8) 7)))) goto LA44;
				memset((void*)&ov, 0, sizeof(ov));
				amb = initoverloaditer_253331(&ov, c, n);
				while (1) {
					NIM_BOOL LOC47;
					LOC47 = 0;
					LOC47 = !((amb == NIM_NIL));
					if (!(LOC47)) goto LA48;
					LOC47 = !(((*amb).Kind == ((NU8) 7)));
					LA48: ;
					if (!LOC47) goto LA46;
					amb = nextoverloaditer_253684(&ov, c, n);
				} LA46: ;
				{
					if (!!((amb == NIM_NIL))) goto LA51;
					result = amb;
				}
				goto LA49;
				LA51: ;
				{
					{
						if (!!(((*result).Kind == ((NU8) 0)))) goto LA56;
						localerror_165571((*n).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
					}
					LA56: ;
					result = errorsym_252288(c, n);
					goto BeforeRet;
				}
				LA49: ;
			}
			LA44: ;
			{
				tlineinfo163527 oldinfo;
				if (!!(((*(*result).Typ).Kind == ((NU8) 12)))) goto LA60;
				oldinfo = (*n).Info;
				genericReset((void*)&(*n), (&NTI188803));
				(*n).Kind = ((NU8) 3);
				asgnRefNoCycle((void**) &(*n).kindU.S4.Sym, result);
				(*n).Info = oldinfo;
			}
			LA60: ;
		}
		goto LA6;
		LA8: ;
		{
			localerror_165571((*n).Info, ((NU16) 19), ((NimStringDesc*) &TMP2675));
			result = errorsym_252288(c, n);
		}
		LA6: ;
	}
	LA1: ;
	BeforeRet: ;
	return result;
}

static N_INLINE(NI, sonslen_189185)(ttype188837* n) {
	NI result;
	result = 0;
	{
		if (!(*n).Sons == 0) goto LA3;
		result = 0;
	}
	goto LA1;
	LA3: ;
	{
		result = (*n).Sons->Sup.len;
	}
	LA1: ;
	return result;
}

static N_INLINE(ttype188837*, lastson_189193)(ttype188837* n) {
	ttype188837* result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = sonslen_189185(n);
	result = (*n).Sons->data[(NI32)(LOC1 - 1)];
	return result;
}

N_NIMCALL(ttype188837*, semarray_423785)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	ttype188837* indx;
	ttype188837* base;
	result = 0;
	indx = 0;
	base = 0;
	result = neworprevtype_422528(((NU8) 16), prev, c);
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 3)) goto LA4;
		{
			tnode188803* LOC8;
			NIM_BOOL LOC9;
			tnode188803* LOC12;
			LOC8 = 0;
			LOC8 = HEX5BHEX5D_189694(n, 1);
			LOC9 = 0;
			LOC9 = isrange_222077(LOC8);
			if (!LOC9) goto LA10;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_189694(n, 1);
			indx = semrangeaux_423297(c, LOC12, NIM_NIL);
		}
		goto LA6;
		LA10: ;
		{
			tnode188803* e;
			e = semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[1], 16);
			{
				if (!((*(*e).Typ).Kind == ((NU8) 60))) goto LA16;
				indx = makerangewithstaticexpr_251076(c, (*(*e).Typ).N);
			}
			goto LA14;
			LA16: ;
			{
				if (!((*e).Kind >= ((NU8) 6) && (*e).Kind <= ((NU8) 15))) goto LA19;
				indx = makerangetype_251156(c, 0, (NI64)((*e).kindU.S1.Intval - 1), (*n).Info, (*e).Typ);
			}
			goto LA14;
			LA19: ;
			{
				NIM_BOOL LOC22;
				LOC22 = 0;
				LOC22 = ((*e).Kind == ((NU8) 3));
				if (!(LOC22)) goto LA23;
				LOC22 = ((*(*e).Typ).Kind == ((NU8) 59));
				LA23: ;
				if (!LOC22) goto LA24;
				{
					if (!!(((*(*e).kindU.S4.Sym).Ast == NIM_NIL))) goto LA28;
					result = semarray_423785(c, (*(*e).kindU.S4.Sym).Ast, NIM_NIL);
					goto BeforeRet;
				}
				LA28: ;
				{
					NimStringDesc* LOC34;
					if (!!((0 < (*c).Ingenericcontext))) goto LA32;
					LOC34 = 0;
					LOC34 = HEX24_165714(TMP2681);
					internalerror_165606(LOC34);
				}
				LA32: ;
				{
					ttype188837* LOC37;
					NIM_BOOL LOC38;
					tnode188803* LOC41;
					LOC37 = 0;
					LOC37 = lastson_189193((*e).Typ);
					LOC38 = 0;
					LOC38 = isordinaltype_223071(LOC37);
					if (!!(LOC38)) goto LA39;
					LOC41 = 0;
					LOC41 = HEX5BHEX5D_189694(n, 1);
					localerror_165571((*LOC41).Info, ((NU16) 74), ((NimStringDesc*) &TMP2675));
				}
				LA39: ;
				indx = makerangewithstaticexpr_251076(c, e);
				(*indx).Flags |=((NI32)(1)<<((((NU8) 9))%(sizeof(NI32)*8)));
			}
			goto LA14;
			LA24: ;
			{
				NIM_BOOL LOC43;
				LOC43 = 0;
				LOC43 = ((*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 (!(LOC43)) goto LA44;
				LOC43 = hasgenericarguments_273821(e);
				LA44: ;
				if (!LOC43) goto LA45;
				{
					NIM_BOOL LOC49;
					tnode188803* LOC52;
					LOC49 = 0;
					LOC49 = isordinaltype_223071((*e).Typ);
					if (!!(LOC49)) goto LA50;
					LOC52 = 0;
					LOC52 = HEX5BHEX5D_189694(n, 1);
					localerror_165571((*LOC52).Info, ((NU16) 74), ((NimStringDesc*) &TMP2675));
				}
				LA50: ;
				indx = makerangewithstaticexpr_251076(c, e);
			}
			goto LA14;
			LA45: ;
			{
				if (!((*e).Kind == ((NU8) 2))) goto LA54;
				indx = skiptypes_192793((*e).Typ, 256);
			}
			goto LA14;
			LA54: ;
			{
				tnode188803* x;
				x = semconstexpr_417095(c, e);
				{
					ttype188837* LOC61;
					if (!((*x).Kind >= ((NU8) 6) && (*x).Kind <= ((NU8) 15))) goto LA59;
					LOC61 = 0;
					LOC61 = skiptypes_192793((*x).Typ, 256);
					indx = makerangetype_251156(c, 0, (NI64)((*x).kindU.S1.Intval - 1), (*n).Info, LOC61);
				}
				goto LA57;
				LA59: ;
				{
					indx = skiptypes_192793((*x).Typ, 256);
				}
				LA57: ;
			}
			LA14: ;
		}
		LA6: ;
		addsonskipintlit_242461(result, indx);
		{
			if (!((*indx).Kind == ((NU8) 11))) goto LA65;
			indx = lastson_189193(indx);
		}
		LA65: ;
		{
			if (!!(((*indx).Kind == ((NU8) 12) || (*indx).Kind == ((NU8) 59) || (*indx).Kind == ((NU8) 60)))) goto LA69;
			{
				NIM_BOOL LOC73;
				LOC73 = 0;
				LOC73 = isordinaltype_223071(indx);
				if (!!(LOC73)) goto LA74;
				localerror_165571((*(*n).kindU.S6.Sons->data[1]).Info, ((NU16) 74), ((NimStringDesc*) &TMP2675));
			}
			goto LA71;
			LA74: ;
			{
				NIM_BOOL LOC77;
				LOC77 = 0;
				LOC77 = enumhasholes_223075(indx);
				if (!LOC77) goto LA78;
				localerror_165571((*(*n).kindU.S6.Sons->data[1]).Info, ((NU16) 146), (*(*(*indx).Sym).Name).S);
			}
			goto LA71;
			LA78: ;
			LA71: ;
		}
		LA69: ;
		base = semtypenode_416055(c, (*n).kindU.S6.Sons->data[2], NIM_NIL);
		addsonskipintlit_242461(result, base);
	}
	goto LA1;
	LA4: ;
	{
		localerror_165571((*n).Info, ((NU16) 173), ((NimStringDesc*) &TMP2675));
		result = neworprevtype_422528(((NU8) 50), prev, c);
	}
	LA1: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(ttype188837*, semcontainer_423075)(tcontext250019* c, tnode188803* n, NU8 kind, NimStringDesc* kindstr, ttype188837* prev) {
	ttype188837* result;
	result = 0;
	result = neworprevtype_422528(kind, prev, c);
	{
		NI LOC3;
		ttype188837* base;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 2)) goto LA4;
		base = semtypenode_416055(c, (*n).kindU.S6.Sons->data[1], NIM_NIL);
		addsonskipintlit_242461(result, base);
	}
	goto LA1;
	LA4: ;
	{
		ttype188837* LOC7;
		localerror_165571((*n).Info, ((NU16) 172), kindstr);
		LOC7 = 0;
		LOC7 = errortype_251136(c);
		addsonskipintlit_242461(result, LOC7);
	}
	LA1: ;
	return result;
}

N_NIMCALL(ttype188837*, semrange_423470)(tcontext250019* c, tnode188803* n_423473, ttype188837* prev) {
	ttype188837* result;
	result = 0;
	result = NIM_NIL;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_189181(n_423473);
		if (!(LOC3 == 2)) goto LA4;
		{
			tnode188803* LOC8;
			NIM_BOOL LOC9;
			tnode188803* LOC12;
			tnode188803* n;
			LOC8 = 0;
			LOC8 = HEX5BHEX5D_189694(n_423473, 1);
			LOC9 = 0;
			LOC9 = isrange_222077(LOC8);
			if (!LOC9) goto LA10;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_189694(n_423473, 1);
			result = semrangeaux_423297(c, LOC12, prev);
			n = (*result).N;
			{
				NIM_BOOL LOC15;
				LOC15 = 0;
				LOC15 = ((*(*n).kindU.S6.Sons->data[0]).Kind >= ((NU8) 5) && (*(*n).kindU.S6.Sons->data[0]).Kind <= ((NU8) 15));
				if (!(LOC15)) goto LA16;
				LOC15 = (0 < (*(*n).kindU.S6.Sons->data[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[1]).Kind >= ((NU8) 5) && (*(*n).kindU.S6.Sons->data[1]).Kind <= ((NU8) 15));
				if (!(LOC20)) goto LA21;
				LOC20 = ((*(*n).kindU.S6.Sons->data[1]).kindU.S1.Intval < 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[0]).Kind >= ((NU8) 16) && (*(*n).kindU.S6.Sons->data[0]).Kind <= ((NU8) 18));
				if (!(LOC25)) goto LA26;
				LOC25 = (0.0 < (*(*n).kindU.S6.Sons->data[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[1]).Kind >= ((NU8) 16) && (*(*n).kindU.S6.Sons->data[1]).Kind <= ((NU8) 18));
				if (!(LOC30)) goto LA31;
				LOC30 = ((*(*n).kindU.S6.Sons->data[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_165571((*(*n_423473).kindU.S6.Sons->data[0]).Info, ((NU16) 96), ((NimStringDesc*) &TMP2675));
			result = neworprevtype_422528(((NU8) 50), prev, c);
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		localerror_165571((*n_423473).Info, ((NU16) 172), ((NimStringDesc*) &TMP2684));
		result = neworprevtype_422528(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(ttype188837*, semset_423034)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	result = 0;
	result = neworprevtype_422528(((NU8) 19), prev, c);
	{
		NI LOC3;
		ttype188837* base;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 2)) goto LA4;
		base = semtypenode_416055(c, (*n).kindU.S6.Sons->data[1], NIM_NIL);
		addsonskipintlit_242461(result, base);
		{
			if (!((*base).Kind == ((NU8) 11))) goto LA8;
			base = lastson_189193(base);
		}
		LA8: ;
		{
			if (!!(((*base).Kind == ((NU8) 12)))) goto LA12;
			{
				NIM_BOOL LOC16;
				LOC16 = 0;
				LOC16 = isordinaltype_223071(base);
				if (!!(LOC16)) goto LA17;
				localerror_165571((*n).Info, ((NU16) 74), ((NimStringDesc*) &TMP2675));
			}
			goto LA14;
			LA17: ;
			{
				NI64 LOC20;
				LOC20 = 0;
				LOC20 = lengthord_223010(base);
				if (!(65536 < LOC20)) goto LA21;
				localerror_165571((*n).Info, ((NU16) 119), ((NimStringDesc*) &TMP2675));
			}
			goto LA14;
			LA21: ;
			LA14: ;
		}
		LA12: ;
	}
	goto LA1;
	LA4: ;
	{
		ttype188837* LOC24;
		localerror_165571((*n).Info, ((NU16) 172), ((NimStringDesc*) &TMP2685));
		LOC24 = 0;
		LOC24 = errortype_251136(c);
		addsonskipintlit_242461(result, LOC24);
	}
	LA1: ;
	return result;
}

N_NIMCALL(ttype188837*, semordinal_424056)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	result = 0;
	result = neworprevtype_422528(((NU8) 15), prev, c);
	{
		NI LOC3;
		ttype188837* base;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 2)) goto LA4;
		base = semtypenode_416055(c, (*n).kindU.S6.Sons->data[1], NIM_NIL);
		{
			if (!!(((*base).Kind == ((NU8) 12)))) goto LA8;
			{
				NIM_BOOL LOC12;
				LOC12 = 0;
				LOC12 = isordinaltype_223071(base);
				if (!!(LOC12)) goto LA13;
				localerror_165571((*(*n).kindU.S6.Sons->data[1]).Info, ((NU16) 74), ((NimStringDesc*) &TMP2675));
			}
			LA13: ;
		}
		LA8: ;
		addsonskipintlit_242461(result, base);
	}
	goto LA1;
	LA4: ;
	{
		localerror_165571((*n).Info, ((NU16) 172), ((NimStringDesc*) &TMP2686));
		result = neworprevtype_422528(((NU8) 50), prev, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(ttype188837*, semvarargs_423099)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	result = 0;
	result = neworprevtype_422528(((NU8) 48), prev, c);
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NI LOC6;
		ttype188837* base;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_189181(n);
		LOC3 = (LOC4 == 2);
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = sonslen_189181(n);
		LOC3 = (LOC6 == 3);
		LA5: ;
		if (!LOC3) goto LA7;
		base = semtypenode_416055(c, (*n).kindU.S6.Sons->data[1], NIM_NIL);
		addsonskipintlit_242461(result, base);
		{
			NI LOC11;
			tident167019* LOC14;
			LOC11 = 0;
			LOC11 = sonslen_189181(n);
			if (!(LOC11 == 3)) goto LA12;
			LOC14 = 0;
			LOC14 = consideracc_252006((*n).kindU.S6.Sons->data[2]);
			asgnRefNoCycle((void**) &(*result).N, newidentnode_189090(LOC14, (*(*n).kindU.S6.Sons->data[2]).Info));
		}
		LA12: ;
	}
	goto LA1;
	LA7: ;
	{
		ttype188837* LOC16;
		localerror_165571((*n).Info, ((NU16) 172), ((NimStringDesc*) &TMP2688));
		LOC16 = 0;
		LOC16 = errortype_251136(c);
		addsonskipintlit_242461(result, LOC16);
	}
	LA1: ;
	return result;
}

N_NIMCALL(ttype188837*, semgenericparamininvokation_428432)(tcontext250019* c, tnode188803* n) {
	ttype188837* result;
	result = 0;
	result = semtypenode_416055(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)), (NI32)((*src).Sup.len + 1));
	(*dest).Sup.len += (*src).Sup.len;
}

N_NIMCALL(ttype188837*, instgenericcontainer_419226)(tcontext250019* c, tlineinfo163527 info, ttype188837* header, NIM_BOOL allowmetatypes) {
	ttype188837* result;
	trepltypevars273546 cl;
	result = 0;
	memset((void*)&cl, 0, sizeof(cl));
	initidtable_189120(&cl.Symmap);
	initidtable_189120(&cl.Typemap);
	initidtable_189120(&cl.Localcache);
	cl.Info = info;
	cl.C = c;
	cl.Allowmetatypes = allowmetatypes;
	result = replacetypevarst_273584(&cl, header);
	return result;
}

N_NIMCALL(ttype188837*, semgeneric_428438)(tcontext250019* c, tnode188803* n, tsym188833* s, ttype188837* prev) {
	ttype188837* result;
	ttype188837* t;
	result = 0;
	{
		TY137892 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, (&NTI188441)), 2);
		LOC5[1] = nsuToLowerStr(LOC6);
		LOC7 = 0;
		LOC7 = nsuFormatOpenArray(((NimStringDesc*) &TMP2689), LOC5, 2);
		localerror_165578((*n).Info, LOC7);
		result = neworprevtype_422528(((NU8) 50), prev, c);
		goto BeforeRet;
	}
	LA3: ;
	t = (*s).Typ;
	{
		NIM_BOOL LOC10;
		ttype188837* LOC12;
		LOC10 = 0;
		LOC10 = ((*t).Kind == ((NU8) 54));
		if (!(LOC10)) goto LA11;
		LOC12 = 0;
		LOC12 = base_223029(t);
		LOC10 = ((*LOC12).Kind == ((NU8) 10));
		LA11: ;
		if (!LOC10) goto LA13;
		t = base_223029(t);
	}
	LA13: ;
	result = neworprevtype_422528(((NU8) 9), prev, c);
	addsonskipintlit_242461(result, t);
	{
		NI i_428519;
		NI HEX3Atmp_428643;
		NI LOC19;
		NI res_428645;
		if (!((*t).Kind == ((NU8) 30))) goto LA17;
		i_428519 = 0;
		HEX3Atmp_428643 = 0;
		LOC19 = 0;
		LOC19 = sonslen_189181(n);
		HEX3Atmp_428643 = (NI32)(LOC19 - 1);
		res_428645 = 1;
		while (1) {
			ttype188837* elem;
			if (!(res_428645 <= HEX3Atmp_428643)) goto LA20;
			i_428519 = res_428645;
			elem = semgenericparamininvokation_428432(c, (*n).kindU.S6.Sons->data[i_428519]);
			{
				if (!elem == 0) goto LA23;
				{
					NimStringDesc* LOC29;
					if (!NIM_TRUE) goto LA27;
					LOC29 = 0;
					LOC29 = HEX24_165714(TMP2690);
					internalerror_165606(LOC29);
				}
				LA27: ;
				rawaddson_193092(result, elem);
			}
			goto LA21;
			LA23: ;
			{
				addsonskipintlit_242461(result, elem);
			}
			LA21: ;
			res_428645 += 1;
		} LA20: ;
		goto BeforeRet;
	}
	goto LA15;
	LA17: ;
	{
		if (!!(((*t).Kind == ((NU8) 10)))) goto LA32;
		localerror_165571((*n).Info, ((NU16) 156), (*(*s).Name).S);
		result = neworprevtype_422528(((NU8) 50), prev, c);
		goto BeforeRet;
	}
	goto LA15;
	LA32: ;
	{
		tcandidate345205 m;
		tnode188803* LOC35;
		NIM_BOOL isconcrete;
		NI i_428596;
		NI HEX3Atmp_428647;
		NI LOC44;
		NI res_428649;
		chckNil((void*)&m);
		memset((void*)&m, 0, sizeof(m));
		newcandidate_345619(c, t, &m);
		LOC35 = 0;
		LOC35 = copytree_189237(n);
		matches_353566(c, n, LOC35, &m);
		{
			NimStringDesc* err;
			NimStringDesc* LOC40;
			NimStringDesc* LOC41;
			NimStringDesc* LOC42;
			NimStringDesc* LOC43;
			if (!!((m.State == ((NU8) 1)))) goto LA38;
			LOC40 = 0;
			LOC41 = 0;
			LOC41 = typetostring_223020(t, ((NU8) 0));
			LOC42 = 0;
			LOC42 = describeargs_345953(c, n, 1);
			LOC43 = 0;
			LOC43 = describeargs_345953(c, (*t).N, 0);
			LOC40 = rawNewString(LOC41->Sup.len + LOC42->Sup.len + LOC43->Sup.len + 44);
appendString(LOC40, ((NimStringDesc*) &TMP2691));
appendString(LOC40, LOC41);
appendString(LOC40, ((NimStringDesc*) &TMP2692));
appendString(LOC40, LOC42);
appendString(LOC40, ((NimStringDesc*) &TMP2696));
appendString(LOC40, LOC43);
appendString(LOC40, ((NimStringDesc*) &TMP2697));
			err = LOC40;
			localerror_165571((*n).Info, ((NU16) 4), err);
			result = neworprevtype_422528(((NU8) 50), prev, c);
			goto BeforeRet;
		}
		LA38: ;
		isconcrete = NIM_TRUE;
		i_428596 = 0;
		HEX3Atmp_428647 = 0;
		LOC44 = 0;
		LOC44 = len_189264(m.Call);
		HEX3Atmp_428647 = LOC44 - 1;
		res_428649 = 1;
		while (1) {
			ttype188837* typ;
			tnode188803* LOC46;
			if (!(res_428649 <= HEX3Atmp_428647)) goto LA45;
			i_428596 = res_428649;
			LOC46 = 0;
			LOC46 = HEX5BHEX5D_189694(m.Call, i_428596);
			typ = skiptypes_192793((*LOC46).Typ, 256);
			{
				NIM_BOOL LOC49;
				LOC49 = 0;
				LOC49 = containsgenerictype_232717(typ);
				if (!LOC49) goto LA50;
				isconcrete = NIM_FALSE;
			}
			LA50: ;
			{
				if (!typ == 0) goto LA54;
				{
					NimStringDesc* LOC60;
					if (!NIM_TRUE) goto LA58;
					LOC60 = 0;
					LOC60 = HEX24_165714(TMP2690);
					internalerror_165606(LOC60);
				}
				LA58: ;
				rawaddson_193092(result, typ);
			}
			goto LA52;
			LA54: ;
			{
				addsonskipintlit_242461(result, typ);
			}
			LA52: ;
			res_428649 += 1;
		} LA45: ;
		{
			if (!isconcrete) goto LA64;
			{
				NIM_BOOL LOC68;
				LOC68 = 0;
				LOC68 = ((*s).Ast == NIM_NIL);
				if (!(LOC68)) goto LA69;
				LOC68 = !(((*(*s).Typ).Kind == ((NU8) 54)));
				LA69: ;
				if (!LOC68) goto LA70;
				localerror_165571((*n).Info, ((NU16) 124), (*(*s).Name).S);
				result = neworprevtype_422528(((NU8) 50), prev, c);
			}
			goto LA66;
			LA70: ;
			{
				result = instgenericcontainer_419226(c, (*n).Info, result, NIM_FALSE);
			}
			LA66: ;
		}
		LA64: ;
	}
	LA15: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, symchoice_430291)(tcontext250019* c, tnode188803* n, tsym188833* s, NU8 r) {
	tnode188803* result;
	tsym188833* a;
	toverloaditer252363 o;
	NI i;
	result = 0;
	a = 0;
	memset((void*)&o, 0, sizeof(o));
	i = 0;
	a = initoverloaditer_253331(&o, c, n);
	while (1) {
		if (!!((a == NIM_NIL))) goto LA1;
		a = nextoverloaditer_253684(&o, c, n);
		i += 1;
		{
			if (!(1 < i)) goto LA4;
			goto LA1;
		}
		LA4: ;
	} LA1: ;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = (i <= 1);
		if (!(LOC8)) goto LA9;
		LOC8 = !((r == ((NU8) 2)));
		LA9: ;
		if (!LOC8) goto LA10;
		result = newsymnode_190723(s, (*n).Info);
		markused_345244(n, s);
	}
	goto LA6;
	LA10: ;
	{
		NU8 kind;
		ttype188837* LOC18;
		{
			if (!(r == ((NU8) 0))) goto LA15;
			kind = ((NU8) 56);
		}
		goto LA13;
		LA15: ;
		{
			kind = ((NU8) 57);
		}
		LA13: ;
		LOC18 = 0;
		LOC18 = newtypes_250180(((NU8) 0), c);
		result = newnodeit_189104(kind, (*n).Info, LOC18);
		a = initoverloaditer_253331(&o, c, n);
		while (1) {
			tnode188803* LOC20;
			if (!!((a == NIM_NIL))) goto LA19;
			(*a).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
			LOC20 = 0;
			LOC20 = newsymnode_190723(a, (*n).Info);
			addson_189207(result, LOC20);
			a = nextoverloaditer_253684(&o, c, n);
		} LA19: ;
	}
	LA6: ;
	return result;
}

static N_INLINE(NI, safelen_189320)(tnode188803* 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 = 0;
	}
	goto LA1;
	LA5: ;
	{
		result = (*n).kindU.S6.Sons->Sup.len;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, doblockisstmtlist_462236)(tnode188803* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	tnode188803* LOC4;
	NI LOC5;
	tnode188803* LOC7;
	tnode188803* LOC8;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*n).Kind == ((NU8) 52));
	if (!(LOC2)) goto LA3;
	LOC4 = 0;
	LOC4 = HEX5BHEX5D_189694(n, 3);
	LOC5 = 0;
	LOC5 = sonslen_189181(LOC4);
	LOC2 = (LOC5 == 1);
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA6;
	LOC7 = 0;
	LOC7 = HEX5BHEX5D_189694(n, 3);
	LOC8 = 0;
	LOC8 = HEX5BHEX5D_189694(LOC7, 0);
	LOC1 = ((*LOC8).Kind == ((NU8) 1));
	LA6: ;
	result = LOC1;
	return result;
}

N_NIMCALL(tnode188803*, fiximmediateparams_416100)(tnode188803* n) {
	tnode188803* result;
	NI i_462284;
	NI HEX3Atmp_462299;
	NI LOC1;
	NI res_462301;
	result = 0;
	i_462284 = 0;
	HEX3Atmp_462299 = 0;
	LOC1 = 0;
	LOC1 = safelen_189320(n);
	HEX3Atmp_462299 = LOC1 - 1;
	res_462301 = 1;
	while (1) {
		if (!(res_462301 <= HEX3Atmp_462299)) goto LA2;
		i_462284 = res_462301;
		{
			tnode188803* LOC5;
			NIM_BOOL LOC6;
			tnode188803* LOC9;
			LOC5 = 0;
			LOC5 = HEX5BHEX5D_189694(n, i_462284);
			LOC6 = 0;
			LOC6 = doblockisstmtlist_462236(LOC5);
			if (!LOC6) goto LA7;
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_189694(n, i_462284);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_462284], HEX5BHEX5D_189694(LOC9, 6));
		}
		LA7: ;
		res_462301 += 1;
	} LA2: ;
	result = n;
	return result;
}

N_NIMCALL(tnode188803*, semtemplateexpr_416648)(tcontext250019* c, tnode188803* n, tsym188833* s, NU16 flags) {
	tnode188803* result;
	tsym188833* LOC1;
	result = 0;
	markused_345244(n, s);
	pushinfocontext_164697((*n).Info);
	LOC1 = 0;
	LOC1 = getcurrowner_250215();
	result = evaltemplate_390275(n, s, LOC1);
	{
		if (!!(((flags &(1<<((((NU8) 8))&15)))!=0))) goto LA4;
		result = semaftermacrocall_422334(c, result, s, flags);
	}
	LA4: ;
	popinfocontext_164720();
	return result;
}

N_NIMCALL(tnode188803*, semgenericstmtsymbol_435024)(tcontext250019* c, tnode188803* n_435027, tsym188833* s) {
	tnode188803* result;
	result = 0;
	(*s).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
	switch ((*s).Kind) {
	case ((NU8) 0):
	{
		result = n_435027;
	}
	break;
	case ((NU8) 12):
	case ((NU8) 13):
	case ((NU8) 14):
	case ((NU8) 16):
	case ((NU8) 15):
	{
		result = symchoice_430291(c, n_435027, s, ((NU8) 1));
	}
	break;
	case ((NU8) 18):
	{
		{
			NIM_BOOL LOC6;
			NIM_BOOL LOC8;
			NI LOC9;
			tnode188803* n;
			LOC6 = 0;
			LOC6 = ((393216 &(1<<(((*s).Kind)&31)))!=0);
			if (!(LOC6)) goto LA7;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = len_192569((*s).Typ);
			LOC8 = (LOC9 == 1);
			if (LOC8) goto LA10;
			LOC8 = (((*s).Flags &(1<<((((NU8) 25))&31)))!=0);
			LA10: ;
			LOC6 = LOC8;
			LA7: ;
			if (!LOC6) goto LA11;
			n = fiximmediateparams_416100(n_435027);
			result = semtemplateexpr_416648(c, n, s, 256);
		}
		goto LA4;
		LA11: ;
		{
			result = symchoice_430291(c, n_435027, 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_192569((*s).Typ);
			LOC19 = (LOC20 == 1);
			if (LOC19) goto LA21;
			LOC19 = (((*s).Flags &(1<<((((NU8) 25))&31)))!=0);
			LA21: ;
			LOC17 = LOC19;
			LA18: ;
			if (!LOC17) goto LA22;
			result = semmacroexpr_416657(c, n_435027, n_435027, s, 256);
		}
		goto LA15;
		LA22: ;
		{
			result = symchoice_430291(c, n_435027, s, ((NU8) 1));
		}
		LA15: ;
	}
	break;
	case ((NU8) 4):
	{
		result = newsymnodetypedesc_263979(s, (*n_435027).Info);
	}
	break;
	case ((NU8) 3):
	{
		result = n_435027;
	}
	break;
	case ((NU8) 7):
	{
		{
			NIM_BOOL LOC30;
			LOC30 = 0;
			LOC30 = !(((*s).Typ == NIM_NIL));
			if (!(LOC30)) goto LA31;
			LOC30 = !(((*(*s).Typ).Kind == ((NU8) 12)));
			LA31: ;
			if (!LOC30) goto LA32;
			result = newsymnodetypedesc_263979(s, (*n_435027).Info);
		}
		goto LA28;
		LA32: ;
		{
			result = n_435027;
		}
		LA28: ;
	}
	break;
	default:
	{
		result = newsymnode_190723(s, (*n_435027).Info);
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, lookup_435130)(tcontext250019* c, tnode188803* n, NU8 flags, tintset185047* ctx) {
	tnode188803* result;
	tident167019* ident;
	tsym188833* s;
	result = 0;
	result = n;
	ident = consideracc_252006(n);
	s = searchinscopes_252216(c, ident);
	{
		if (!(s == NIM_NIL)) goto LA3;
		{
			NIM_BOOL LOC7;
			NIM_BOOL LOC8;
			LOC7 = 0;
			LOC8 = 0;
			LOC8 = contains_185821((*ctx), (*ident).Sup.Id);
			LOC7 = !(LOC8);
			if (!(LOC7)) goto LA9;
			LOC7 = !(((flags &(1<<((((NU8) 2))&7)))!=0));
			LA9: ;
			if (!LOC7) goto LA10;
			localerror_165571((*n).Info, ((NU16) 61), (*ident).S);
		}
		LA10: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!((flags &(1<<((((NU8) 0))&7)))!=0)) goto LA15;
			result = symchoice_430291(c, n, s, ((NU8) 0));
		}
		goto LA13;
		LA15: ;
		{
			NIM_BOOL LOC18;
			LOC18 = 0;
			LOC18 = contains_185821((*ctx), (*(*s).Name).Sup.Id);
			if (!LOC18) goto LA19;
			result = symchoice_430291(c, n, s, ((NU8) 2));
		}
		goto LA13;
		LA19: ;
		{
			result = semgenericstmtsymbol_435024(c, n, s);
		}
		LA13: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semmixinstmt_430510)(tcontext250019* c, tnode188803* n, tintset185047* tomixin) {
	tnode188803* result;
	NI i_430538;
	NI HEX3Atmp_430553;
	NI LOC1;
	NI res_430555;
	result = 0;
	i_430538 = 0;
	HEX3Atmp_430553 = 0;
	LOC1 = 0;
	LOC1 = len_189264(n);
	HEX3Atmp_430553 = LOC1 - 1;
	res_430555 = 0;
	while (1) {
		tident167019* LOC3;
		if (!(res_430555 <= HEX3Atmp_430553)) goto LA2;
		i_430538 = res_430555;
		LOC3 = 0;
		LOC3 = consideracc_252006((*n).kindU.S6.Sons->data[i_430538]);
		incl_185849(tomixin, (*LOC3).Sup.Id);
		res_430555 += 1;
	} LA2: ;
	result = newnodei_189099(((NU8) 1), (*n).Info);
	return result;
}

N_NIMCALL(tnode188803*, semgenericstmtscope_435008)(tcontext250019* c, tnode188803* n, NU8 flags, tintset185047* ctx) {
	tnode188803* result;
	tscope188827* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	result = semgenericstmt_422520(c, n, flags, ctx);
	closescope_252179(c);
	return result;
}

N_NIMCALL(tsym188833*, newsyms_416504)(NU8 kind, tnode188803* n, tcontext250019* c) {
	tsym188833* result;
	tident167019* LOC1;
	tsym188833* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = consideracc_252006(n);
	LOC2 = 0;
	LOC2 = getcurrowner_250215();
	result = newsym_189053(kind, LOC1, LOC2, (*n).Info);
	return result;
}

N_NIMCALL(tnode188803*, getidentnode_434975)(tnode188803* n) {
	tnode188803* result;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 31):
	{
		result = getidentnode_434975((*n).kindU.S6.Sons->data[1]);
	}
	break;
	case ((NU8) 43):
	{
		result = getidentnode_434975((*n).kindU.S6.Sons->data[0]);
	}
	break;
	case ((NU8) 2):
	case ((NU8) 53):
	case ((NU8) 3):
	{
		result = n;
	}
	break;
	default:
	{
		illformedast_251203(n);
		result = n;
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, semgenericstmt_422520)(tcontext250019* c, tnode188803* n_422523, NU8 flags_422524, tintset185047* ctx) {
	tnode188803* result;
	result = 0;
	result = n_422523;
	{
		if (!(gcmd_137113 == ((NU8) 14))) goto LA3;
		suggeststmt_363273(c, n_422523);
	}
	LA3: ;
	switch ((*n_422523).Kind) {
	case ((NU8) 2):
	case ((NU8) 53):
	{
		result = lookup_435130(c, n_422523, flags_422524, ctx);
	}
	break;
	case ((NU8) 45):
	{
		NU8 luf;
		tsym188833* s;
		{
			if (!!(((flags_422524 &(1<<((((NU8) 2))&7)))!=0))) goto LA9;
			luf = 2;
		}
		goto LA7;
		LA9: ;
		{
			luf = 0;
		}
		LA7: ;
		s = qualifiedlookup_252806(c, n_422523, luf);
		{
			if (!!((s == NIM_NIL))) goto LA14;
			result = semgenericstmtsymbol_435024(c, n_422523, s);
		}
		LA14: ;
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 55):
	{
		result = semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[0], (flags_422524 | 1), ctx);
	}
	break;
	case ((NU8) 122):
	{
		result = semmixinstmt_430510(c, n_422523, ctx);
	}
	break;
	case ((NU8) 27):
	case ((NU8) 32):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		tnode188803* fn;
		tsym188833* s;
		NI first;
		NIM_BOOL isdefinedmagic;
		NU8 flags;
		NI i_435662;
		NI HEX3Atmp_437584;
		NI LOC81;
		NI res_437586;
		checkminsonslen_251215(n_422523, 1);
		fn = (*n_422523).kindU.S6.Sons->data[0];
		s = qualifiedlookup_252806(c, fn, 0);
		{
			NIM_BOOL LOC22;
			NIM_BOOL LOC23;
			NIM_BOOL LOC24;
			tident167019* LOC28;
			NIM_BOOL LOC29;
			NimStringDesc* LOC32;
			LOC22 = 0;
			LOC23 = 0;
			LOC24 = 0;
			LOC24 = (s == NIM_NIL);
			if (!(LOC24)) goto LA25;
			LOC24 = !(((flags_422524 &(1<<((((NU8) 2))&7)))!=0));
			LA25: ;
			LOC23 = LOC24;
			if (!(LOC23)) goto LA26;
			LOC23 = ((*fn).Kind == ((NU8) 2) || (*fn).Kind == ((NU8) 53));
			LA26: ;
			LOC22 = LOC23;
			if (!(LOC22)) goto LA27;
			LOC28 = 0;
			LOC28 = consideracc_252006(fn);
			LOC29 = 0;
			LOC29 = contains_185821((*ctx), (*LOC28).Sup.Id);
			LOC22 = !(LOC29);
			LA27: ;
			if (!LOC22) goto LA30;
			LOC32 = 0;
			LOC32 = rendertree_211051(fn, 0);
			localerror_165571((*n_422523).Info, ((NU16) 61), LOC32);
		}
		LA30: ;
		first = 0;
		isdefinedmagic = NIM_FALSE;
		{
			NU8 scoption;
			if (!!((s == NIM_NIL))) goto LA35;
			(*s).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
			isdefinedmagic = ((*s).Magic == ((NU16) 1) || (*s).Magic == ((NU16) 2) || (*s).Magic == ((NU16) 3));
			{
				NIM_BOOL LOC39;
				LOC39 = 0;
				LOC39 = contains_185821((*ctx), (*(*s).Name).Sup.Id);
				if (!LOC39) goto LA40;
				scoption = ((NU8) 2);
			}
			goto LA37;
			LA40: ;
			{
				scoption = ((NU8) 1);
			}
			LA37: ;
			switch ((*s).Kind) {
			case ((NU8) 17):
			{
				{
					NIM_BOOL LOC46;
					NIM_BOOL LOC48;
					NI LOC49;
					LOC46 = 0;
					LOC46 = ((393216 &(1<<(((*s).Kind)&31)))!=0);
					if (!(LOC46)) goto LA47;
					LOC48 = 0;
					LOC49 = 0;
					LOC49 = len_192569((*s).Typ);
					LOC48 = (LOC49 == 1);
					if (LOC48) goto LA50;
					LOC48 = (((*s).Flags &(1<<((((NU8) 25))&31)))!=0);
					LA50: ;
					LOC46 = LOC48;
					LA47: ;
					if (!LOC46) goto LA51;
					result = semmacroexpr_416657(c, n_422523, n_422523, s, 256);
				}
				goto LA44;
				LA51: ;
				{
					asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[0], symchoice_430291(c, (*n_422523).kindU.S6.Sons->data[0], s, scoption));
					result = n_422523;
				}
				LA44: ;
			}
			break;
			case ((NU8) 18):
			{
				{
					NIM_BOOL LOC57;
					NIM_BOOL LOC59;
					NI LOC60;
					tnode188803* n;
					LOC57 = 0;
					LOC57 = ((393216 &(1<<(((*s).Kind)&31)))!=0);
					if (!(LOC57)) goto LA58;
					LOC59 = 0;
					LOC60 = 0;
					LOC60 = len_192569((*s).Typ);
					LOC59 = (LOC60 == 1);
					if (LOC59) goto LA61;
					LOC59 = (((*s).Flags &(1<<((((NU8) 25))&31)))!=0);
					LA61: ;
					LOC57 = LOC59;
					LA58: ;
					if (!LOC57) goto LA62;
					n = fiximmediateparams_416100(n_422523);
					result = semtemplateexpr_416648(c, n, s, 256);
				}
				goto LA55;
				LA62: ;
				{
					asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[0], symchoice_430291(c, (*n_422523).kindU.S6.Sons->data[0], s, scoption));
					result = n_422523;
				}
				LA55: ;
			}
			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[0], symchoice_430291(c, (*n_422523).kindU.S6.Sons->data[0], s, scoption));
				first = 1;
			}
			break;
			case ((NU8) 4):
			{
				asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], newsymnodetypedesc_263979(s, (*(*n_422523).kindU.S6.Sons->data[0]).Info));
				first = 1;
			}
			break;
			case ((NU8) 7):
			{
				{
					NIM_BOOL LOC71;
					LOC71 = 0;
					LOC71 = !(((*s).Typ == NIM_NIL));
					if (!(LOC71)) goto LA72;
					LOC71 = !(((*(*s).Typ).Kind == ((NU8) 12)));
					LA72: ;
					if (!LOC71) goto LA73;
					asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], newsymnodetypedesc_263979(s, (*(*n_422523).kindU.S6.Sons->data[0]).Info));
					first = 1;
				}
				LA73: ;
			}
			break;
			default:
			{
				asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], newsymnode_190723(s, (*(*n_422523).kindU.S6.Sons->data[0]).Info));
				first = 1;
			}
			break;
			}
		}
		LA35: ;
		{
			if (!isdefinedmagic) goto LA78;
			flags = (flags_422524 | 4);
		}
		goto LA76;
		LA78: ;
		{
			flags = flags_422524;
		}
		LA76: ;
		i_435662 = 0;
		HEX3Atmp_437584 = 0;
		LOC81 = 0;
		LOC81 = sonslen_189181(result);
		HEX3Atmp_437584 = (NI32)(LOC81 - 1);
		res_437586 = first;
		while (1) {
			if (!(res_437586 <= HEX3Atmp_437584)) goto LA82;
			i_435662 = res_437586;
			asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_435662], semgenericstmt_422520(c, (*result).kindU.S6.Sons->data[i_435662], flags, ctx));
			res_437586 += 1;
		} LA82: ;
	}
	break;
	case ((NU8) 92):
	{
		NI i_435703;
		NI HEX3Atmp_437588;
		NI LOC84;
		NI res_437590;
		i_435703 = 0;
		HEX3Atmp_437588 = 0;
		LOC84 = 0;
		LOC84 = sonslen_189181(n_422523);
		HEX3Atmp_437588 = (NI32)(LOC84 - 1);
		res_437590 = 0;
		while (1) {
			if (!(res_437590 <= HEX3Atmp_437588)) goto LA85;
			i_435703 = res_437590;
			asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[i_435703], semgenericstmtscope_435008(c, (*n_422523).kindU.S6.Sons->data[i_435703], flags_422524, ctx));
			res_437590 += 1;
		} LA85: ;
	}
	break;
	case ((NU8) 93):
	{
		NI i_435744;
		NI HEX3Atmp_437592;
		NI LOC87;
		NI res_437594;
		i_435744 = 0;
		HEX3Atmp_437592 = 0;
		LOC87 = 0;
		LOC87 = sonslen_189181(n_422523);
		HEX3Atmp_437592 = (NI32)(LOC87 - 1);
		res_437594 = 0;
		while (1) {
			if (!(res_437594 <= HEX3Atmp_437592)) goto LA88;
			i_435744 = res_437594;
			asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[i_435744], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[i_435744], (flags_422524 | 4), ctx));
			res_437594 += 1;
		} LA88: ;
	}
	break;
	case ((NU8) 96):
	{
		tscope188827* LOC90;
		NI i_435803;
		NI HEX3Atmp_437596;
		NI LOC91;
		NI res_437598;
		LOC90 = 0;
		LOC90 = openscope_252167(c);
		i_435803 = 0;
		HEX3Atmp_437596 = 0;
		LOC91 = 0;
		LOC91 = sonslen_189181(n_422523);
		HEX3Atmp_437596 = (NI32)(LOC91 - 1);
		res_437598 = 0;
		while (1) {
			if (!(res_437598 <= HEX3Atmp_437596)) goto LA92;
			i_435803 = res_437598;
			asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[i_435803], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[i_435803], flags_422524, ctx));
			res_437598 += 1;
		} LA92: ;
		closescope_252179(c);
	}
	break;
	case ((NU8) 97):
	{
		tscope188827* LOC94;
		NI i_435872;
		NI HEX3Atmp_437604;
		NI LOC95;
		NI res_437606;
		LOC94 = 0;
		LOC94 = openscope_252167(c);
		asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[0], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[0], flags_422524, ctx));
		i_435872 = 0;
		HEX3Atmp_437604 = 0;
		LOC95 = 0;
		LOC95 = sonslen_189181(n_422523);
		HEX3Atmp_437604 = (NI32)(LOC95 - 1);
		res_437606 = 1;
		while (1) {
			tnode188803* a;
			NI l;
			NI j_435901;
			NI HEX3Atmp_437600;
			NI res_437602;
			if (!(res_437606 <= HEX3Atmp_437604)) goto LA96;
			i_435872 = res_437606;
			a = (*n_422523).kindU.S6.Sons->data[i_435872];
			checkminsonslen_251215(a, 1);
			l = sonslen_189181(a);
			j_435901 = 0;
			HEX3Atmp_437600 = 0;
			HEX3Atmp_437600 = (NI32)(l - 2);
			res_437602 = 0;
			while (1) {
				if (!(res_437602 <= HEX3Atmp_437600)) goto LA97;
				j_435901 = res_437602;
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[j_435901], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[j_435901], flags_422524, ctx));
				res_437602 += 1;
			} LA97: ;
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(l - 1)], semgenericstmtscope_435008(c, (*a).kindU.S6.Sons->data[(NI32)(l - 1)], flags_422524, ctx));
			res_437606 += 1;
		} LA96: ;
		closescope_252179(c);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		NI l;
		tscope188827* LOC99;
		NI i_435999;
		NI HEX3Atmp_437608;
		NI res_437610;
		l = sonslen_189181(n_422523);
		LOC99 = 0;
		LOC99 = openscope_252167(c);
		asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[(NI32)(l - 2)], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[(NI32)(l - 2)], flags_422524, ctx));
		i_435999 = 0;
		HEX3Atmp_437608 = 0;
		HEX3Atmp_437608 = (NI32)(l - 3);
		res_437610 = 0;
		while (1) {
			tsym188833* LOC101;
			if (!(res_437610 <= HEX3Atmp_437608)) goto LA100;
			i_435999 = res_437610;
			LOC101 = 0;
			LOC101 = newsyms_416504(((NU8) 0), (*n_422523).kindU.S6.Sons->data[i_435999], c);
			addprelimdecl_252565(c, LOC101);
			res_437610 += 1;
		} LA100: ;
		asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[(NI32)(l - 1)], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[(NI32)(l - 1)], flags_422524, ctx));
		closescope_252179(c);
	}
	break;
	case ((NU8) 111):
	case ((NU8) 126):
	case ((NU8) 128):
	{
		tscope188827* LOC103;
		checksonslen_251209(n_422523, 2);
		LOC103 = 0;
		LOC103 = openscope_252167(c);
		{
			tsym188833* LOC108;
			if (!!(((*(*n_422523).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA106;
			LOC108 = 0;
			LOC108 = newsyms_416504(((NU8) 0), (*n_422523).kindU.S6.Sons->data[0], c);
			addprelimdecl_252565(c, LOC108);
		}
		LA106: ;
		asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[1], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[1], flags_422524, ctx));
		closescope_252179(c);
	}
	break;
	case ((NU8) 105):
	{
		NI i_436147;
		NI HEX3Atmp_437616;
		NI LOC110;
		NI res_437618;
		checkminsonslen_251215(n_422523, 2);
		asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[0], semgenericstmtscope_435008(c, (*n_422523).kindU.S6.Sons->data[0], flags_422524, ctx));
		i_436147 = 0;
		HEX3Atmp_437616 = 0;
		LOC110 = 0;
		LOC110 = sonslen_189181(n_422523);
		HEX3Atmp_437616 = (NI32)(LOC110 - 1);
		res_437618 = 1;
		while (1) {
			tnode188803* a;
			NI l;
			NI j_436176;
			NI HEX3Atmp_437612;
			NI res_437614;
			if (!(res_437618 <= HEX3Atmp_437616)) goto LA111;
			i_436147 = res_437618;
			a = (*n_422523).kindU.S6.Sons->data[i_436147];
			checkminsonslen_251215(a, 1);
			l = sonslen_189181(a);
			j_436176 = 0;
			HEX3Atmp_437612 = 0;
			HEX3Atmp_437612 = (NI32)(l - 2);
			res_437614 = 0;
			while (1) {
				if (!(res_437614 <= HEX3Atmp_437612)) goto LA112;
				j_436176 = res_437614;
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[j_436176], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[j_436176], (flags_422524 | 2), ctx));
				res_437614 += 1;
			} LA112: ;
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(l - 1)], semgenericstmtscope_435008(c, (*a).kindU.S6.Sons->data[(NI32)(l - 1)], flags_422524, ctx));
			res_437618 += 1;
		} LA111: ;
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	{
		NI i_436263;
		NI HEX3Atmp_437625;
		NI LOC114;
		NI res_437627;
		i_436263 = 0;
		HEX3Atmp_437625 = 0;
		LOC114 = 0;
		LOC114 = sonslen_189181(n_422523);
		HEX3Atmp_437625 = (NI32)(LOC114 - 1);
		res_437627 = 0;
		while (1) {
			if (!(res_437627 <= HEX3Atmp_437625)) goto LA115;
			i_436263 = res_437627;
			{
				tnode188803* a;
				NI l;
				NI j_436393;
				NI HEX3Atmp_437621;
				NI res_437623;
				a = (*n_422523).kindU.S6.Sons->data[i_436263];
				{
					if (!((*a).Kind == ((NU8) 124))) goto LA119;
					goto LA116;
				}
				LA119: ;
				{
					NIM_BOOL LOC123;
					LOC123 = 0;
					LOC123 = !(((*a).Kind == ((NU8) 35)));
					if (!(LOC123)) goto LA124;
					LOC123 = !(((*a).Kind == ((NU8) 36)));
					LA124: ;
					if (!LOC123) goto LA125;
					illformedast_251203(a);
				}
				LA125: ;
				checkminsonslen_251215(a, 3);
				l = sonslen_189181(a);
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(l - 2)], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[(NI32)(l - 2)], (flags_422524 | 2), ctx));
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(l - 1)], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[(NI32)(l - 1)], flags_422524, ctx));
				j_436393 = 0;
				HEX3Atmp_437621 = 0;
				HEX3Atmp_437621 = (NI32)(l - 3);
				res_437623 = 0;
				while (1) {
					tnode188803* LOC128;
					tsym188833* LOC129;
					if (!(res_437623 <= HEX3Atmp_437621)) goto LA127;
					j_436393 = res_437623;
					LOC128 = 0;
					LOC128 = getidentnode_434975((*a).kindU.S6.Sons->data[j_436393]);
					LOC129 = 0;
					LOC129 = newsyms_416504(((NU8) 0), LOC128, c);
					addprelimdecl_252565(c, LOC129);
					res_437623 += 1;
				} LA127: ;
			} LA116: ;
			res_437627 += 1;
		} LA115: ;
	}
	break;
	case ((NU8) 75):
	{
		NI i_436420;
		NI HEX3Atmp_437633;
		NI LOC131;
		NI res_437635;
		i_436420 = 0;
		HEX3Atmp_437633 = 0;
		LOC131 = 0;
		LOC131 = sonslen_189181(n_422523);
		HEX3Atmp_437633 = (NI32)(LOC131 - 1);
		res_437635 = 0;
		while (1) {
			tnode188803* a;
			NI l;
			NI j_436504;
			NI HEX3Atmp_437629;
			NI res_437631;
			if (!(res_437635 <= HEX3Atmp_437633)) goto LA132;
			i_436420 = res_437635;
			a = (*n_422523).kindU.S6.Sons->data[i_436420];
			{
				if (!!(((*a).Kind == ((NU8) 35)))) goto LA135;
				illformedast_251203(a);
			}
			LA135: ;
			checkminsonslen_251215(a, 3);
			l = sonslen_189181(a);
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(l - 2)], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[(NI32)(l - 2)], (flags_422524 | 2), ctx));
			j_436504 = 0;
			HEX3Atmp_437629 = 0;
			HEX3Atmp_437629 = (NI32)(l - 3);
			res_437631 = 0;
			while (1) {
				tnode188803* LOC138;
				tsym188833* LOC139;
				if (!(res_437631 <= HEX3Atmp_437629)) goto LA137;
				j_436504 = res_437631;
				LOC138 = 0;
				LOC138 = getidentnode_434975((*a).kindU.S6.Sons->data[j_436504]);
				LOC139 = 0;
				LOC139 = newsyms_416504(((NU8) 0), LOC138, c);
				addprelimdecl_252565(c, LOC139);
				res_437631 += 1;
			} LA137: ;
			res_437635 += 1;
		} LA132: ;
	}
	break;
	case ((NU8) 101):
	{
		NI i_436531;
		NI HEX3Atmp_437638;
		NI LOC141;
		NI res_437640;
		i_436531 = 0;
		HEX3Atmp_437638 = 0;
		LOC141 = 0;
		LOC141 = sonslen_189181(n_422523);
		HEX3Atmp_437638 = (NI32)(LOC141 - 1);
		res_437640 = 0;
		while (1) {
			if (!(res_437640 <= HEX3Atmp_437638)) goto LA142;
			i_436531 = res_437640;
			{
				tnode188803* a;
				tnode188803* LOC152;
				tsym188833* LOC153;
				a = (*n_422523).kindU.S6.Sons->data[i_436531];
				{
					if (!((*a).Kind == ((NU8) 124))) goto LA146;
					goto LA143;
				}
				LA146: ;
				{
					if (!!(((*a).Kind == ((NU8) 102)))) goto LA150;
					illformedast_251203(a);
				}
				LA150: ;
				checksonslen_251209(a, 3);
				LOC152 = 0;
				LOC152 = getidentnode_434975((*a).kindU.S6.Sons->data[0]);
				LOC153 = 0;
				LOC153 = newsyms_416504(((NU8) 0), LOC152, c);
				addprelimdecl_252565(c, LOC153);
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[1], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[1], (flags_422524 | 2), ctx));
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[2], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[2], flags_422524, ctx));
			} LA143: ;
			res_437640 += 1;
		} LA142: ;
	}
	break;
	case ((NU8) 98):
	{
		NI i_436665;
		NI HEX3Atmp_437643;
		NI LOC155;
		NI res_437645;
		NI i_436725;
		NI HEX3Atmp_437648;
		NI LOC168;
		NI res_437650;
		i_436665 = 0;
		HEX3Atmp_437643 = 0;
		LOC155 = 0;
		LOC155 = sonslen_189181(n_422523);
		HEX3Atmp_437643 = (NI32)(LOC155 - 1);
		res_437645 = 0;
		while (1) {
			if (!(res_437645 <= HEX3Atmp_437643)) goto LA156;
			i_436665 = res_437645;
			{
				tnode188803* a;
				tnode188803* LOC166;
				tsym188833* LOC167;
				a = (*n_422523).kindU.S6.Sons->data[i_436665];
				{
					if (!((*a).Kind == ((NU8) 124))) goto LA160;
					goto LA157;
				}
				LA160: ;
				{
					if (!!(((*a).Kind == ((NU8) 103)))) goto LA164;
					illformedast_251203(a);
				}
				LA164: ;
				checksonslen_251209(a, 3);
				LOC166 = 0;
				LOC166 = getidentnode_434975((*a).kindU.S6.Sons->data[0]);
				LOC167 = 0;
				LOC167 = newsyms_416504(((NU8) 0), LOC166, c);
				addprelimdecl_252565(c, LOC167);
			} LA157: ;
			res_437645 += 1;
		} LA156: ;
		i_436725 = 0;
		HEX3Atmp_437648 = 0;
		LOC168 = 0;
		LOC168 = sonslen_189181(n_422523);
		HEX3Atmp_437648 = (NI32)(LOC168 - 1);
		res_437650 = 0;
		while (1) {
			if (!(res_437650 <= HEX3Atmp_437648)) goto LA169;
			i_436725 = res_437650;
			{
				tnode188803* a;
				a = (*n_422523).kindU.S6.Sons->data[i_436725];
				{
					if (!((*a).Kind == ((NU8) 124))) goto LA173;
					goto LA170;
				}
				LA173: ;
				{
					if (!!(((*a).Kind == ((NU8) 103)))) goto LA177;
					illformedast_251203(a);
				}
				LA177: ;
				checksonslen_251209(a, 3);
				{
					tscope188827* LOC183;
					if (!!(((*(*a).kindU.S6.Sons->data[1]).Kind == ((NU8) 1)))) goto LA181;
					LOC183 = 0;
					LOC183 = openscope_252167(c);
					asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[1], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[1], flags_422524, ctx));
					asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[2], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[2], (flags_422524 | 2), ctx));
					closescope_252179(c);
				}
				goto LA179;
				LA181: ;
				{
					asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[2], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[2], (flags_422524 | 2), ctx));
				}
				LA179: ;
			} LA170: ;
			res_437650 += 1;
		} LA169: ;
	}
	break;
	case ((NU8) 148):
	{
		{
			NI LOC188;
			NI i_436984;
			NI HEX3Atmp_437653;
			NI LOC195;
			NI res_437655;
			LOC188 = 0;
			LOC188 = sonslen_189181(n_422523);
			if (!(0 < LOC188)) goto LA189;
			{
				if (!!(((*(*n_422523).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA193;
				asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[0], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[0], (flags_422524 | 2), ctx));
			}
			LA193: ;
			i_436984 = 0;
			HEX3Atmp_437653 = 0;
			LOC195 = 0;
			LOC195 = sonslen_189181(n_422523);
			HEX3Atmp_437653 = (NI32)(LOC195 - 1);
			res_437655 = 1;
			while (1) {
				tnode188803* a;
				tnode188803* LOC200;
				tsym188833* LOC201;
				if (!(res_437655 <= HEX3Atmp_437653)) goto LA196;
				i_436984 = res_437655;
				a = 0;
				switch ((*(*n_422523).kindU.S6.Sons->data[i_436984]).Kind) {
				case ((NU8) 149):
				{
					a = (*(*n_422523).kindU.S6.Sons->data[i_436984]).kindU.S6.Sons->data[0];
				}
				break;
				case ((NU8) 2):
				{
					a = (*n_422523).kindU.S6.Sons->data[i_436984];
				}
				break;
				default:
				{
					illformedast_251203(n_422523);
				}
				break;
				}
				LOC200 = 0;
				LOC200 = getidentnode_434975((*a).kindU.S6.Sons->data[i_436984]);
				LOC201 = 0;
				LOC201 = newsyms_416504(((NU8) 0), LOC200, c);
				adddecl_252550(c, LOC201);
				res_437655 += 1;
			} LA196: ;
		}
		LA189: ;
	}
	break;
	case ((NU8) 132):
	case ((NU8) 133):
	{
	}
	break;
	case ((NU8) 76):
	{
		NI i_437137;
		NI HEX3Atmp_437661;
		NI LOC208;
		NI res_437663;
		checkminsonslen_251215(n_422523, 1);
		{
			if (!!(((*(*n_422523).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA206;
			asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[0], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[0], (flags_422524 | 2), ctx));
		}
		LA206: ;
		i_437137 = 0;
		HEX3Atmp_437661 = 0;
		LOC208 = 0;
		LOC208 = sonslen_189181(n_422523);
		HEX3Atmp_437661 = (NI32)(LOC208 - 1);
		res_437663 = 1;
		while (1) {
			tnode188803* a;
			NI l;
			NI j_437249;
			NI HEX3Atmp_437657;
			NI res_437659;
			if (!(res_437663 <= HEX3Atmp_437661)) goto LA209;
			i_437137 = res_437663;
			a = (*n_422523).kindU.S6.Sons->data[i_437137];
			{
				if (!!(((*a).Kind == ((NU8) 35)))) goto LA212;
				illformedast_251203(a);
			}
			LA212: ;
			checkminsonslen_251215(a, 3);
			l = sonslen_189181(a);
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(l - 2)], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[(NI32)(l - 2)], (flags_422524 | 2), ctx));
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(l - 1)], semgenericstmt_422520(c, (*a).kindU.S6.Sons->data[(NI32)(l - 1)], flags_422524, ctx));
			j_437249 = 0;
			HEX3Atmp_437657 = 0;
			HEX3Atmp_437657 = (NI32)(l - 3);
			res_437659 = 0;
			while (1) {
				tnode188803* LOC215;
				tsym188833* LOC216;
				if (!(res_437659 <= HEX3Atmp_437657)) goto LA214;
				j_437249 = res_437659;
				LOC215 = 0;
				LOC215 = getidentnode_434975((*a).kindU.S6.Sons->data[j_437249]);
				LOC216 = 0;
				LOC216 = newsyms_416504(((NU8) 0), LOC215, c);
				addprelimdecl_252565(c, LOC216);
				res_437659 += 1;
			} LA214: ;
			res_437663 += 1;
		} LA209: ;
	}
	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):
	{
		tscope188827* LOC224;
		tnode188803* body;
		checksonslen_251209(n_422523, 7);
		{
			tnode188803* LOC222;
			tsym188833* LOC223;
			if (!!(((*n_422523).Kind == ((NU8) 51) || (*n_422523).Kind == ((NU8) 52)))) goto LA220;
			LOC222 = 0;
			LOC222 = getidentnode_434975((*n_422523).kindU.S6.Sons->data[0]);
			LOC223 = 0;
			LOC223 = newsyms_416504(((NU8) 0), LOC222, c);
			addprelimdecl_252565(c, LOC223);
		}
		LA220: ;
		LOC224 = 0;
		LOC224 = openscope_252167(c);
		asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[2], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[2], flags_422524, ctx));
		{
			if (!!(((*(*n_422523).kindU.S6.Sons->data[3]).Kind == ((NU8) 1)))) goto LA227;
			{
				tident167019* LOC233;
				tsym188833* LOC234;
				if (!!(((*(*(*n_422523).kindU.S6.Sons->data[3]).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA231;
				LOC233 = 0;
				LOC233 = getident_167456(((NimStringDesc*) &TMP2698));
				LOC234 = 0;
				LOC234 = newsym_189053(((NU8) 0), LOC233, NIM_NIL, (*n_422523).Info);
				addprelimdecl_252565(c, LOC234);
			}
			LA231: ;
			asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[3], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[3], flags_422524, ctx));
		}
		LA227: ;
		asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[4], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[4], flags_422524, ctx));
		body = 0;
		{
			if (!((*(*n_422523).kindU.S6.Sons->data[0]).Kind == ((NU8) 3))) goto LA237;
			body = getbody_239244((*(*n_422523).kindU.S6.Sons->data[0]).kindU.S4.Sym);
		}
		goto LA235;
		LA237: ;
		{
			body = (*n_422523).kindU.S6.Sons->data[6];
		}
		LA235: ;
		asgnRefNoCycle((void**) &(*n_422523).kindU.S6.Sons->data[6], semgenericstmtscope_435008(c, body, flags_422524, ctx));
		closescope_252179(c);
	}
	break;
	case ((NU8) 90):
	case ((NU8) 43):
	{
	}
	break;
	case ((NU8) 34):
	case ((NU8) 33):
	{
		checkminsonslen_251215(n_422523, 2);
		asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[1], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[1], flags_422524, ctx));
	}
	break;
	default:
	{
		NI i_437555;
		NI HEX3Atmp_437666;
		NI LOC243;
		NI res_437668;
		i_437555 = 0;
		HEX3Atmp_437666 = 0;
		LOC243 = 0;
		LOC243 = sonslen_189181(n_422523);
		HEX3Atmp_437666 = (NI32)(LOC243 - 1);
		res_437668 = 0;
		while (1) {
			if (!(res_437668 <= HEX3Atmp_437666)) goto LA244;
			i_437555 = res_437668;
			asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_437555], semgenericstmt_422520(c, (*n_422523).kindU.S6.Sons->data[i_437555], flags_422524, ctx));
			res_437668 += 1;
		} LA244: ;
	}
	break;
	}
	return result;
}

static N_INLINE(ttype188837*, skipgenericinvokation_426375)(ttype188837* t) {
	ttype188837* result;
	result = 0;
	result = t;
	{
		if (!((*result).Kind == ((NU8) 9))) goto LA3;
		result = (*result).Sons->data[0];
	}
	LA3: ;
	{
		if (!((*result).Kind == ((NU8) 10))) goto LA7;
		result = lastson_189193(result);
	}
	LA7: ;
	return result;
}

N_NIMCALL(void, addinheritedfieldsaux_426194)(tcontext250019* c, tintset185047* check, NI* pos, tnode188803* n) {
	switch ((*n).Kind) {
	case ((NU8) 137):
	{
		NI i_426251;
		NI HEX3Atmp_426337;
		NI LOC6;
		NI res_426339;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA4;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2700));
		}
		LA4: ;
		addinheritedfieldsaux_426194(c, check, pos, (*n).kindU.S6.Sons->data[0]);
		i_426251 = 0;
		HEX3Atmp_426337 = 0;
		LOC6 = 0;
		LOC6 = sonslen_189181(n);
		HEX3Atmp_426337 = (NI32)(LOC6 - 1);
		res_426339 = 1;
		while (1) {
			if (!(res_426339 <= HEX3Atmp_426337)) goto LA7;
			i_426251 = res_426339;
			switch ((*(*n).kindU.S6.Sons->data[i_426251]).Kind) {
			case ((NU8) 85):
			case ((NU8) 88):
			{
				tnode188803* LOC9;
				LOC9 = 0;
				LOC9 = lastson_189189((*n).kindU.S6.Sons->data[i_426251]);
				addinheritedfieldsaux_426194(c, check, pos, LOC9);
			}
			break;
			default:
			{
				internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2701));
			}
			break;
			}
			res_426339 += 1;
		} LA7: ;
	}
	break;
	case ((NU8) 136):
	{
		NI i_426292;
		NI HEX3Atmp_426341;
		NI LOC12;
		NI res_426343;
		i_426292 = 0;
		HEX3Atmp_426341 = 0;
		LOC12 = 0;
		LOC12 = sonslen_189181(n);
		HEX3Atmp_426341 = (NI32)(LOC12 - 1);
		res_426343 = 0;
		while (1) {
			if (!(res_426343 <= HEX3Atmp_426341)) goto LA13;
			i_426292 = res_426343;
			addinheritedfieldsaux_426194(c, check, pos, (*n).kindU.S6.Sons->data[i_426292]);
			res_426343 += 1;
		} LA13: ;
	}
	break;
	case ((NU8) 3):
	{
		incl_185849(check, (*(*(*n).kindU.S4.Sym).Name).Sup.Id);
		(*pos) += 1;
	}
	break;
	default:
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2702));
	}
	break;
	}
}

N_NIMCALL(void, addinheritedfields_426348)(tcontext250019* c, tintset185047* check, NI* pos, ttype188837* obj) {
	{
		NIM_BOOL LOC3;
		NI LOC4;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = sonslen_189185(obj);
		LOC3 = (0 < LOC4);
		if (!(LOC3)) goto LA5;
		LOC3 = !(((*obj).Sons->data[0] == NIM_NIL));
		LA5: ;
		if (!LOC3) goto LA6;
		addinheritedfields_426348(c, check, pos, (*obj).Sons->data[0]);
	}
	LA6: ;
	addinheritedfieldsaux_426194(c, check, pos, (*obj).N);
}

N_NIMCALL(void, instantiategenericparamlist_418123)(tcontext250019* c, tnode188803* n, tidtable188849 pt, tinstantiation188823* entry) {
	NI LOC5;
	NI i_418155;
	tnode188803* a_418156;
	NI i_418282;
	NI HEX3Atmp_418284;
	NI LOC6;
	NI res_418286;
	{
		if (!!(((*n).Kind == ((NU8) 75)))) goto LA3;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2707));
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = len_189264(n);
	unsureAsgnRef((void**) &(*entry).Concretetypes, (ttypeseq188835*) newSeq((&NTI188835), LOC5));
	i_418155 = 0;
	a_418156 = 0;
	i_418282 = 0;
	HEX3Atmp_418284 = 0;
	LOC6 = 0;
	LOC6 = len_189264(n);
	HEX3Atmp_418284 = LOC6 - 1;
	res_418286 = 0;
	while (1) {
		if (!(res_418286 <= HEX3Atmp_418284)) goto LA7;
		i_418282 = res_418286;
		i_418155 = i_418282;
		a_418156 = (*n).kindU.S6.Sons->data[i_418282];
		{
			tsym188833* q;
			tsym188833* s;
			tsym188833* LOC17;
			ttype188837* t;
			TNimObject* LOC18;
			{
				if (!!(((*a_418156).Kind == ((NU8) 3)))) goto LA11;
				internalerror_165591((*a_418156).Info, ((NimStringDesc*) &TMP2708));
			}
			LA11: ;
			q = (*a_418156).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 LA15;
				goto LA8;
			}
			LA15: ;
			LOC17 = 0;
			LOC17 = getcurrowner_250215();
			s = newsym_189053(((NU8) 7), (*q).Name, LOC17, (*q).Info);
			(*s).Flags = ((*s).Flags | 5);
			LOC18 = 0;
			LOC18 = idtableget_197137(pt, &(*q).Typ->Sup);
			t = ((ttype188837*) (LOC18));
			{
				if (!(t == NIM_NIL)) goto LA21;
				{
					if (!(((*(*q).Typ).Flags &(1<<((((NU8) 10))&31)))!=0)) goto LA25;
					t = (*q).Typ;
				}
				goto LA23;
				LA25: ;
				{
					localerror_165571((*a_418156).Info, ((NU16) 124), (*(*s).Name).S);
					t = errortype_251136(c);
				}
				LA23: ;
			}
			goto LA19;
			LA21: ;
			{
				NimStringDesc* LOC31;
				if (!((*t).Kind == ((NU8) 12))) goto LA29;
				LOC31 = 0;
				LOC31 = rawNewString((*(*q).Name).S->Sup.len + 29);
appendString(LOC31, ((NimStringDesc*) &TMP2709));
appendString(LOC31, (*(*q).Name).S);
				internalerror_165591((*a_418156).Info, LOC31);
			}
			goto LA19;
			LA29: ;
			{
				if (!((*t).Kind == ((NU8) 9))) goto LA33;
				t = generatetypeinstance_275735(c, pt, (*a_418156).Info, t);
			}
			goto LA19;
			LA33: ;
			LA19: ;
			asgnRefNoCycle((void**) &(*s).Typ, t);
			adddecl_252550(c, s);
			asgnRefNoCycle((void**) &(*entry).Concretetypes->data[i_418155], t);
		} LA8: ;
		res_418286 += 1;
	} LA7: ;
}

static N_INLINE(NIM_BOOL, canbecycleroot_44462)(tcell41090* c) {
	NIM_BOOL result;
	result = 0;
	result = !((((*(*c).Typ).flags &(1<<((((NU8) 1))&7)))!=0));
	return result;
}

static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c) {
	{
		if (!!((((NI) ((NI)((*c).Refcount & 3))) == 3))) goto LA3;
		(*c).Refcount = (NI)((NI)((*c).Refcount & -4) | 3);
		incl_41855(&gch_43044.Cycleroots, c);
	}
	LA3: ;
}

static N_INLINE(void, incref_46827)(tcell41090* c) {
	(*c).Refcount = (NI)((NU32)((*c).Refcount) + (NU32)(8));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_44462(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_45235(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_46402)(tcell41090* c) {
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		rtladdzct_46002(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_44462(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_45235(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tcell41090* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_44443(src);
		incref_46827(LOC5);
	}
	LA3: ;
	{
		tcell41090* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_44443((*dest));
		decref_46402(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

static N_INLINE(void, pushproccon_250317)(tcontext250019* c, tsym188833* owner) {
	tproccon250009* x;
	{
		if (!(owner == NIM_NIL)) goto LA3;
		internalerror_165606(((NimStringDesc*) &TMP2710));
		goto BeforeRet;
	}
	LA3: ;
	x = 0;
	x = (tproccon250009*) newObj((&NTI250007), sizeof(tproccon250009));
	asgnRefNoCycle((void**) &(*x).Owner, owner);
	asgnRef((void**) &(*x).Next, (*c).P);
	asgnRef((void**) &(*c).P, x);
	BeforeRet: ;
}

N_NIMCALL(ttype188837*, findenforcedstatictype_426617)(ttype188837* t_426619) {
	ttype188837* result;
	result = 0;
	{
		if (!((*t_426619).Kind == ((NU8) 59))) goto LA3;
		result = t_426619;
		goto BeforeRet;
	}
	LA3: ;
	{
		ttype188837* s_426651;
		ttypeseq188835* HEX3Atmp_426670;
		NI i_426672;
		NI l_426674;
		if (!((*t_426619).Kind == ((NU8) 55))) goto LA7;
		s_426651 = 0;
		HEX3Atmp_426670 = 0;
		HEX3Atmp_426670 = (*t_426619).Sons;
		i_426672 = 0;
		l_426674 = HEX3Atmp_426670->Sup.len;
		while (1) {
			ttype188837* t;
			if (!(i_426672 < l_426674)) goto LA9;
			s_426651 = HEX3Atmp_426670->data[i_426672];
			t = findenforcedstatictype_426617(s_426651);
			{
				if (!!((t == NIM_NIL))) goto LA12;
				result = t;
				goto BeforeRet;
			}
			LA12: ;
			i_426672 += 1;
		} LA9: ;
	}
	LA7: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, addparamorresult_418960)(tcontext250019* c, tsym188833* param, NU8 kind) {
	{
		ttype188837* statictype;
		if (!(kind == ((NU8) 17))) goto LA3;
		statictype = findenforcedstatictype_426617((*param).Typ);
		{
			tsym188833* a;
			if (!!((statictype == NIM_NIL))) goto LA7;
			a = copysym_189147(param, NIM_FALSE);
			asgnRefNoCycle((void**) &(*a).Typ, base_223029(statictype));
			{
				if (!!((((*a).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA11;
				adddecl_252550(c, a);
			}
			LA11: ;
		}
		goto LA5;
		LA7: ;
		{
			if (!((*(*param).Typ).Kind == ((NU8) 8))) goto LA14;
			{
				if (!!((((*param).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA18;
				adddecl_252550(c, param);
			}
			LA18: ;
		}
		goto LA5;
		LA14: ;
		{
			tsym188833* nn;
			tsym188833* a;
			nn = getsyssym_242040(((NimStringDesc*) &TMP2712));
			a = copysym_189147(param, NIM_FALSE);
			asgnRefNoCycle((void**) &(*a).Typ, (*nn).Typ);
			{
				if (!!((((*a).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA23;
				adddecl_252550(c, a);
			}
			LA23: ;
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!!((((*param).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA28;
			adddecl_252550(c, param);
		}
		LA28: ;
	}
	LA1: ;
}

N_NIMCALL(void, addresult_445870)(tcontext250019* c, ttype188837* t, tlineinfo163527 info, NU8 owner) {
	{
		tsym188833* s;
		tident167019* LOC5;
		tsym188833* LOC6;
		if (!!((t == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = getident_167456(((NimStringDesc*) &TMP2711));
		LOC6 = 0;
		LOC6 = getcurrowner_250215();
		s = newsym_189053(((NU8) 11), LOC5, LOC6, info);
		asgnRefNoCycle((void**) &(*s).Typ, t);
		(*s).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
		addparamorresult_418960(c, s, owner);
		asgnRefNoCycle((void**) &(*(*c).P).Resultsym, s);
	}
	LA3: ;
}

N_NIMCALL(void, addresultnode_445911)(tcontext250019* c, tnode188803* n) {
	{
		tnode188803* LOC5;
		if (!!(((*(*c).P).Resultsym == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = newsymnode_189095((*(*c).P).Resultsym);
		addson_189207(n, LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, maybeaddresult_416079)(tcontext250019* c, tsym188833* s, tnode188803* n) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*(*s).Typ).Sons->data[0] == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = !(((*s).Kind == ((NU8) 14)));
		LA4: ;
		if (!LOC3) goto LA5;
		addresult_445870(c, (*(*s).Typ).Sons->data[0], (*n).Info, (*s).Kind);
		addresultnode_445911(c, n);
	}
	LA5: ;
}

N_NIMCALL(void, instantiateproctype_419247)(tcontext250019* c, tidtable188849 pt, tsym188833* prc, tlineinfo163527 info) {
	trepltypevars273546 cl;
	ttype188837* result;
	tnode188803* originalparams;
	NI i_419279;
	NI HEX3Atmp_419349;
	NI LOC1;
	NI res_419351;
	tnode188803* LOC8;
	adddecl_252550(c, prc);
	pushinfocontext_164697(info);
	chckNil((void*)&cl);
	memset((void*)&cl, 0, sizeof(cl));
	inittypevars_275714(c, pt, info, &cl);
	result = instcopytype_274604(&cl, (*prc).Typ);
	originalparams = (*result).N;
	asgnRefNoCycle((void**) &(*result).N, shallowcopy_193743(originalparams));
	i_419279 = 0;
	HEX3Atmp_419349 = 0;
	LOC1 = 0;
	LOC1 = len_192569(result);
	HEX3Atmp_419349 = LOC1 - 1;
	res_419351 = 1;
	while (1) {
		tnode188803* param;
		tnode188803* LOC3;
		if (!(res_419351 <= HEX3Atmp_419349)) goto LA2;
		i_419279 = res_419351;
		asgnRefNoCycle((void**) &(*result).Sons->data[i_419279], replacetypevarst_273584(&cl, (*result).Sons->data[i_419279]));
		propagatetoowner_192852(result, (*result).Sons->data[i_419279]);
		LOC3 = 0;
		LOC3 = HEX5BHEX5D_189694(originalparams, i_419279);
		param = replacetypevarsn_273566(&cl, LOC3);
		asgnRefNoCycle((void**) &(*(*result).N).kindU.S6.Sons->data[i_419279], param);
		{
			if (!((*param).Kind == ((NU8) 3))) goto LA6;
			asgnRefNoCycle((void**) &(*(*param).kindU.S4.Sym).Owner, prc);
			adddecl_252550(c, (*param).kindU.S4.Sym);
		}
		LA6: ;
		res_419351 += 1;
	} LA2: ;
	asgnRefNoCycle((void**) &(*result).Sons->data[0], replacetypevarst_273584(&cl, (*result).Sons->data[0]));
	LOC8 = 0;
	LOC8 = HEX5BHEX5D_189694(originalparams, 0);
	asgnRefNoCycle((void**) &(*(*result).N).kindU.S6.Sons->data[0], copytree_189237(LOC8));
	erasevoidparams_275102(result);
	skipintliteralparams_275297(result);
	asgnRefNoCycle((void**) &(*prc).Typ, result);
	maybeaddresult_416079(c, prc, (*prc).Ast);
	popinfocontext_164720();
}

N_NIMCALL(NIM_BOOL, sameinstantiation_418290)(tinstantiation188823 a, tinstantiation188823 b) {
	NIM_BOOL result;
	result = 0;
	{
		NI i_418327;
		NI HEX3Atmp_418329;
		NI res_418331;
		if (!(a.Concretetypes->Sup.len == b.Concretetypes->Sup.len)) goto LA3;
		i_418327 = 0;
		HEX3Atmp_418329 = 0;
		HEX3Atmp_418329 = (a.Concretetypes->Sup.len-1);
		res_418331 = 0;
		while (1) {
			if (!(res_418331 <= HEX3Atmp_418329)) goto LA5;
			i_418327 = res_418331;
			{
				NIM_BOOL LOC8;
				LOC8 = 0;
				LOC8 = comparetypes_230547(a.Concretetypes->data[i_418327], b.Concretetypes->data[i_418327], ((NU8) 0), 4);
				if (!!(LOC8)) goto LA9;
				goto BeforeRet;
			}
			LA9: ;
			res_418331 += 1;
		} LA5: ;
		result = NIM_TRUE;
	}
	LA3: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tsym188833*, genericcacheget_418335)(tsym188833* genericsym, tinstantiation188823 entry) {
	tsym188833* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		tinstantiation188823* inst_418603;
		TY188933* HEX3Atmp_418604;
		NI i_418606;
		NI l_418608;
		LOC3 = 0;
		LOC3 = HEX3DHEX3D_191892((*genericsym).kindU.S2.Procinstcache, NIM_NIL);
		if (!!(LOC3)) goto LA4;
		inst_418603 = 0;
		HEX3Atmp_418604 = 0;
		HEX3Atmp_418604 = (*genericsym).kindU.S2.Procinstcache;
		i_418606 = 0;
		l_418608 = HEX3Atmp_418604->Sup.len;
		while (1) {
			if (!(i_418606 < l_418608)) goto LA6;
			inst_418603 = HEX3Atmp_418604->data[i_418606];
			{
				NIM_BOOL LOC9;
				LOC9 = 0;
				LOC9 = sameinstantiation_418290(entry, (*inst_418603));
				if (!LOC9) goto LA10;
				result = (*inst_418603).Sym;
				goto BeforeRet;
			}
			LA10: ;
			i_418606 += 1;
		} LA6: ;
	}
	LA4: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, freshgensyms_418802)(tnode188803* n, tsym188833* owner, tidtable188849* symmap) {
	{
		NIM_BOOL LOC3;
		tsym188833* x;
		TNimObject* LOC7;
		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;
		LOC7 = 0;
		LOC7 = idtableget_197137((*symmap), &(*n).kindU.S4.Sym->Sup);
		x = ((tsym188833*) (LOC7));
		{
			if (!(x == NIM_NIL)) goto LA10;
			x = copysym_189147((*n).kindU.S4.Sym, NIM_FALSE);
			asgnRefNoCycle((void**) &(*x).Owner, owner);
			idtableput_197147(symmap, &(*n).kindU.S4.Sym->Sup, &x->Sup.Sup);
		}
		LA10: ;
		asgnRefNoCycle((void**) &(*n).kindU.S4.Sym, x);
	}
	goto LA1;
	LA5: ;
	{
		NI i_418939;
		NI HEX3Atmp_418954;
		NI LOC13;
		NI res_418956;
		i_418939 = 0;
		HEX3Atmp_418954 = 0;
		LOC13 = 0;
		LOC13 = safelen_189320(n);
		HEX3Atmp_418954 = LOC13 - 1;
		res_418956 = 0;
		while (1) {
			if (!(res_418956 <= HEX3Atmp_418954)) goto LA14;
			i_418939 = res_418956;
			freshgensyms_418802((*n).kindU.S6.Sons->data[i_418939], owner, symmap);
			res_418956 += 1;
		} LA14: ;
	}
	LA1: ;
}

static N_INLINE(NIM_BOOL, isemptytype_195210)(ttype188837* 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_455548)(tnode188803* n) {
	NIM_BOOL result;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 4):
	case ((NU8) 131):
	{
		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(tnode188803*, readtypeparameter_455950)(tcontext250019* c, ttype188837* typ, tident167019* paramname, tlineinfo163527 info) {
	tnode188803* result;
	ttype188837* ty;
	ttype188837* tbody;
	NI s_456005;
	NI HEX3Atmp_456034;
	NI LOC11;
	NI res_456036;
	result = 0;
	{
		if (!((*typ).Kind == ((NU8) 11))) goto LA3;
		ty = skipgenericalias_229506(typ);
	}
	goto LA1;
	LA3: ;
	{
		{
			NimStringDesc* LOC10;
			if (!!(((*typ).Kind == ((NU8) 54)))) goto LA8;
			LOC10 = 0;
			LOC10 = HEX24_165714(TMP2773);
			internalerror_165606(LOC10);
		}
		LA8: ;
		ty = (*typ).Sons->data[1];
	}
	LA1: ;
	tbody = (*ty).Sons->data[0];
	s_456005 = 0;
	HEX3Atmp_456034 = 0;
	LOC11 = 0;
	LOC11 = len_192569(tbody);
	HEX3Atmp_456034 = (NI32)(LOC11 - 2);
	res_456036 = 0;
	while (1) {
		ttype188837* tparam;
		if (!(res_456036 <= HEX3Atmp_456034)) goto LA12;
		s_456005 = res_456036;
		tparam = (*tbody).Sons->data[s_456005];
		{
			ttype188837* rawtyp;
			if (!((*(*tparam).Sym).Name == paramname)) goto LA15;
			rawtyp = (*ty).Sons->data[(NI32)(s_456005 + 1)];
			{
				if (!((*rawtyp).Kind == ((NU8) 59))) goto LA19;
				result = (*rawtyp).N;
				goto BeforeRet;
			}
			goto LA17;
			LA19: ;
			{
				ttype188837* foundtyp;
				tsym188833* LOC22;
				tsym188833* LOC23;
				foundtyp = maketypedesc_250627(c, rawtyp);
				LOC22 = 0;
				LOC22 = copysym_189147((*tparam).Sym, NIM_FALSE);
				LOC23 = 0;
				LOC23 = linkto_189797(LOC22, foundtyp);
				result = newsymnode_190723(LOC23, info);
				goto BeforeRet;
			}
			LA17: ;
		}
		LA15: ;
		res_456036 += 1;
	} LA12: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tsym188833*, lookupinrecordandbuildcheck_455576)(tcontext250019* c, tnode188803* n, tnode188803* r, tident167019* field, tnode188803** check) {
	tsym188833* result;
	result = 0;
	result = NIM_NIL;
	switch ((*r).Kind) {
	case ((NU8) 136):
	{
		NI i_455597;
		NI HEX3Atmp_455891;
		NI LOC2;
		NI res_455893;
		i_455597 = 0;
		HEX3Atmp_455891 = 0;
		LOC2 = 0;
		LOC2 = sonslen_189181(r);
		HEX3Atmp_455891 = (NI32)(LOC2 - 1);
		res_455893 = 0;
		while (1) {
			if (!(res_455893 <= HEX3Atmp_455891)) goto LA3;
			i_455597 = res_455893;
			result = lookupinrecordandbuildcheck_455576(c, n, (*r).kindU.S6.Sons->data[i_455597], field, check);
			{
				if (!!((result == NIM_NIL))) goto LA6;
				goto BeforeRet;
			}
			LA6: ;
			res_455893 += 1;
		} LA3: ;
	}
	break;
	case ((NU8) 137):
	{
		tnode188803* s;
		NI i_455696;
		NI HEX3Atmp_455903;
		NI LOC17;
		NI res_455905;
		checkminsonslen_251215(r, 2);
		{
			if (!!(((*(*r).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA11;
			illformedast_251203(r);
		}
		LA11: ;
		result = lookupinrecordandbuildcheck_455576(c, n, (*r).kindU.S6.Sons->data[0], field, check);
		{
			if (!!((result == NIM_NIL))) goto LA15;
			goto BeforeRet;
		}
		LA15: ;
		s = newnodei_189099(((NU8) 39), (*r).Info);
		i_455696 = 0;
		HEX3Atmp_455903 = 0;
		LOC17 = 0;
		LOC17 = sonslen_189181(r);
		HEX3Atmp_455903 = (NI32)(LOC17 - 1);
		res_455905 = 1;
		while (1) {
			tnode188803* it;
			if (!(res_455905 <= HEX3Atmp_455903)) goto LA18;
			i_455696 = res_455905;
			it = (*r).kindU.S6.Sons->data[i_455696];
			switch ((*it).Kind) {
			case ((NU8) 85):
			{
				tnode188803* LOC20;
				LOC20 = 0;
				LOC20 = lastson_189189(it);
				result = lookupinrecordandbuildcheck_455576(c, n, LOC20, field, check);
				{
					NI j_455739;
					NI HEX3Atmp_455895;
					NI LOC25;
					NI res_455897;
					if (!(result == NIM_NIL)) goto LA23;
					j_455739 = 0;
					HEX3Atmp_455895 = 0;
					LOC25 = 0;
					LOC25 = sonslen_189181(it);
					HEX3Atmp_455895 = (NI32)(LOC25 - 2);
					res_455897 = 0;
					while (1) {
						tnode188803* LOC27;
						if (!(res_455897 <= HEX3Atmp_455895)) goto LA26;
						j_455739 = res_455897;
						LOC27 = 0;
						LOC27 = copytree_189237((*it).kindU.S6.Sons->data[j_455739]);
						addson_189207(s, LOC27);
						res_455897 += 1;
					} LA26: ;
				}
				goto LA21;
				LA23: ;
				{
					NI j_455783;
					NI HEX3Atmp_455899;
					NI LOC33;
					NI res_455901;
					tnode188803* inexpr;
					tident167019* LOC36;
					tnode188803* LOC37;
					tnode188803* LOC38;
					tnode188803* LOC39;
					{
						if (!((*check) == NIM_NIL)) goto LA31;
						unsureAsgnRef((void**) &(*check), newnodei_189099(((NU8) 46), (*n).Info));
						addson_189207((*check), emptynode_189727);
					}
					LA31: ;
					s = newnodei_189099(((NU8) 39), (*n).Info);
					j_455783 = 0;
					HEX3Atmp_455899 = 0;
					LOC33 = 0;
					LOC33 = sonslen_189181(it);
					HEX3Atmp_455899 = (NI32)(LOC33 - 2);
					res_455901 = 0;
					while (1) {
						tnode188803* LOC35;
						if (!(res_455901 <= HEX3Atmp_455899)) goto LA34;
						j_455783 = res_455901;
						LOC35 = 0;
						LOC35 = copytree_189237((*it).kindU.S6.Sons->data[j_455783]);
						addson_189207(s, LOC35);
						res_455901 += 1;
					} LA34: ;
					inexpr = newnodei_189099(((NU8) 27), (*n).Info);
					LOC36 = 0;
					LOC36 = getident_167456(((NimStringDesc*) &TMP2775));
					LOC37 = 0;
					LOC37 = newidentnode_189090(LOC36, (*n).Info);
					addson_189207(inexpr, LOC37);
					LOC38 = 0;
					LOC38 = copytree_189237((*r).kindU.S6.Sons->data[0]);
					addson_189207(inexpr, LOC38);
					addson_189207(inexpr, s);
					LOC39 = 0;
					LOC39 = semexpr_416003(c, inexpr, 0);
					addson_189207((*check), LOC39);
					goto BeforeRet;
				}
				LA21: ;
			}
			break;
			case ((NU8) 88):
			{
				tnode188803* LOC41;
				LOC41 = 0;
				LOC41 = lastson_189189(it);
				result = lookupinrecordandbuildcheck_455576(c, n, LOC41, field, check);
				{
					tnode188803* inexpr;
					tident167019* LOC50;
					tnode188803* LOC51;
					tnode188803* LOC52;
					tnode188803* notexpr;
					tident167019* LOC53;
					tnode188803* LOC54;
					tnode188803* LOC55;
					if (!!((result == NIM_NIL))) goto LA44;
					{
						if (!((*check) == NIM_NIL)) goto LA48;
						unsureAsgnRef((void**) &(*check), newnodei_189099(((NU8) 46), (*n).Info));
						addson_189207((*check), emptynode_189727);
					}
					LA48: ;
					inexpr = newnodei_189099(((NU8) 27), (*n).Info);
					LOC50 = 0;
					LOC50 = getident_167456(((NimStringDesc*) &TMP2775));
					LOC51 = 0;
					LOC51 = newidentnode_189090(LOC50, (*n).Info);
					addson_189207(inexpr, LOC51);
					LOC52 = 0;
					LOC52 = copytree_189237((*r).kindU.S6.Sons->data[0]);
					addson_189207(inexpr, LOC52);
					addson_189207(inexpr, s);
					notexpr = newnodei_189099(((NU8) 27), (*n).Info);
					LOC53 = 0;
					LOC53 = getident_167456(((NimStringDesc*) &TMP2776));
					LOC54 = 0;
					LOC54 = newidentnode_189090(LOC53, (*n).Info);
					addson_189207(notexpr, LOC54);
					addson_189207(notexpr, inexpr);
					LOC55 = 0;
					LOC55 = semexpr_416003(c, notexpr, 0);
					addson_189207((*check), LOC55);
					goto BeforeRet;
				}
				LA44: ;
			}
			break;
			default:
			{
				illformedast_251203(it);
			}
			break;
			}
			res_455905 += 1;
		} LA18: ;
	}
	break;
	case ((NU8) 3):
	{
		{
			if (!((*(*(*r).kindU.S4.Sym).Name).Sup.Id == (*field).Sup.Id)) goto LA60;
			result = (*r).kindU.S4.Sym;
		}
		LA60: ;
	}
	break;
	default:
	{
		illformedast_251203(n);
	}
	break;
	}
	BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, fieldvisible_357236)(tcontext250019* c, tsym188833* f) {
	NIM_BOOL result;
	NI fmoduleid;
	tsym188833* LOC1;
	NIM_BOOL LOC2;
	NIM_BOOL LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = getmodule_197183(f);
	fmoduleid = (*LOC1).Sup.Id;
	LOC2 = 0;
	LOC3 = 0;
	LOC3 = (((*f).Flags &(1<<((((NU8) 1))&31)))!=0);
	if (LOC3) goto LA4;
	LOC3 = (fmoduleid == (*(*c).Module).Sup.Id);
	LA4: ;
	LOC2 = LOC3;
	if (LOC2) goto LA5;
	LOC2 = (fmoduleid == (*(*c).Friendmodule).Sup.Id);
	LA5: ;
	result = LOC2;
	return result;
}

N_NIMCALL(tnode188803*, makederef_455912)(tnode188803* n) {
	tnode188803* result;
	ttype188837* t;
	result = 0;
	t = skiptypes_192793((*n).Typ, 2048);
	result = n;
	{
		if (!((*t).Kind == ((NU8) 23))) goto LA3;
		result = newnodeit_189104(((NU8) 65), (*n).Info, (*t).Sons->data[0]);
		addson_189207(result, n);
		t = skiptypes_192793((*t).Sons->data[0], 2048);
	}
	LA3: ;
	while (1) {
		tnode188803* a;
		ttype188837* LOC6;
		if (!((*t).Kind == ((NU8) 21) || (*t).Kind == ((NU8) 22))) goto LA5;
		a = result;
		result = newnodeit_189104(((NU8) 65), (*n).Info, (*t).Sons->data[0]);
		addson_189207(result, a);
		LOC6 = 0;
		LOC6 = lastson_189193(t);
		t = skiptypes_192793(LOC6, 2048);
	} LA5: ;
	return result;
}

N_NIMCALL(tnode188803*, builtinfieldaccess_456040)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	tsym188833* s;
	tident167019* i;
	ttype188837* ty;
	tsym188833* f;
	tnode188803* check;
	result = 0;
	checksonslen_251209(n, 2);
	s = qualifiedlookup_252806(c, n, 3);
	{
		if (!!((s == NIM_NIL))) goto LA3;
		markused_345244((*n).kindU.S6.Sons->data[1], s);
		result = semsym_450070(c, n, s, flags);
		goto BeforeRet;
	}
	LA3: ;
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[0], (flags | 16)));
	i = consideracc_252006((*n).kindU.S6.Sons->data[1]);
	ty = (*(*n).kindU.S6.Sons->data[0]).Typ;
	f = NIM_NIL;
	result = NIM_NIL;
	{
		NIM_BOOL LOC7;
		NIM_BOOL LOC9;
		ttype188837* LOC11;
		LOC7 = 0;
		LOC7 = istypeexpr_455548((*n).kindU.S6.Sons->data[0]);
		if (LOC7) goto LA8;
		LOC9 = 0;
		LOC9 = ((*ty).Kind == ((NU8) 8));
		if (!(LOC9)) goto LA10;
		LOC11 = 0;
		LOC11 = base_223029(ty);
		LOC9 = !(((*LOC11).Kind == ((NU8) 0)));
		LA10: ;
		LOC7 = LOC9;
		LA8: ;
		if (!LOC7) goto LA12;
		{
			if (!((*ty).Kind == ((NU8) 8))) goto LA16;
			ty = base_223029(ty);
		}
		LA16: ;
		ty = skiptypes_192793(ty, 14680064);
		switch ((*ty).Kind) {
		case ((NU8) 14):
		{
			while (1) {
				if (!!((ty == NIM_NIL))) goto LA19;
				f = getsymfromlist_197172((*ty).N, i, 0);
				{
					if (!!((f == NIM_NIL))) goto LA22;
					goto LA19;
				}
				LA22: ;
				ty = (*ty).Sons->data[0];
			} LA19: ;
			{
				if (!!((f == NIM_NIL))) goto LA26;
				result = newsymnode_189095(f);
				(*result).Info = (*n).Info;
				asgnRefNoCycle((void**) &(*result).Typ, ty);
				markused_345244(n, f);
				goto BeforeRet;
			}
			LA26: ;
		}
		break;
		case ((NU8) 11):
		case ((NU8) 54):
		{
			result = readtypeparameter_455950(c, ty, i, (*n).Info);
			goto BeforeRet;
		}
		break;
		case ((NU8) 17):
		case ((NU8) 18):
		{
			{
				tnode188803* field_456257;
				tnode188803* HEX3Atmp_456644;
				NI i_456646;
				NI HEX3Atmp_456648;
				NI LOC34;
				NI res_456650;
				if (!((*(*ty).N).Kind == ((NU8) 136))) goto LA32;
				field_456257 = 0;
				HEX3Atmp_456644 = 0;
				HEX3Atmp_456644 = (*ty).N;
				i_456646 = 0;
				HEX3Atmp_456648 = 0;
				LOC34 = 0;
				LOC34 = len_189264(HEX3Atmp_456644);
				HEX3Atmp_456648 = LOC34 - 1;
				res_456650 = 0;
				while (1) {
					if (!(res_456650 <= HEX3Atmp_456648)) goto LA35;
					i_456646 = res_456650;
					field_456257 = (*HEX3Atmp_456644).kindU.S6.Sons->data[i_456646];
					{
						ttypeseq188835* LOC40;
						TY250763 LOC41;
						if (!((*(*field_456257).kindU.S4.Sym).Name == i)) goto LA38;
						LOC40 = 0;
						LOC40 = (ttypeseq188835*) newSeq((&NTI188835), 2);
						memset((void*)LOC41, 0, sizeof(LOC41));
						LOC41[0] = ty;
						LOC41[1] = (*(*field_456257).kindU.S4.Sym).Typ;
						asgnRefNoCycle((void**) &LOC40->data[0], LOC41[0]);
						asgnRefNoCycle((void**) &LOC40->data[1], LOC41[1]);
						asgnRefNoCycle((void**) &(*n).Typ, newtypewithsons_250675(c, ((NU8) 61), LOC40));
						asgnRefNoCycle((void**) &(*(*n).Typ).N, copytree_189237(n));
						result = n;
						goto BeforeRet;
					}
					LA38: ;
					res_456650 += 1;
				} LA35: ;
			}
			LA32: ;
		}
		break;
		default:
		{
			goto BeforeRet;
		}
		break;
		}
		ty = (*(*n).kindU.S6.Sons->data[0]).Typ;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA12: ;
	ty = skiptypes_192793(ty, 14682112);
	while (1) {
		if (!(((*ty).Flags &(1<<((((NU8) 27))&31)))!=0)) goto LA43;
		ty = skiptypes_192793(ty, 8192);
	} LA43: ;
	check = NIM_NIL;
	{
		if (!((*ty).Kind == ((NU8) 17))) goto LA46;
		while (1) {
			check = NIM_NIL;
			f = lookupinrecordandbuildcheck_455576(c, n, (*ty).N, i, &check);
			{
				if (!!((f == NIM_NIL))) goto LA51;
				goto LA48;
			}
			LA51: ;
			{
				if (!((*ty).Sons->data[0] == NIM_NIL)) goto LA55;
				goto LA48;
			}
			LA55: ;
			ty = skiptypes_192793((*ty).Sons->data[0], 2048);
		} LA48: ;
		{
			if (!!((f == NIM_NIL))) goto LA59;
			{
				NIM_BOOL LOC63;
				LOC63 = 0;
				LOC63 = fieldvisible_357236(c, f);
				if (!LOC63) goto LA64;
				markused_345244((*n).kindU.S6.Sons->data[1], f);
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], makederef_455912((*n).kindU.S6.Sons->data[0]));
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], newsymnode_189095(f));
				asgnRefNoCycle((void**) &(*n).Typ, (*f).Typ);
				{
					if (!(check == NIM_NIL)) goto LA68;
					result = n;
				}
				goto LA66;
				LA68: ;
				{
					asgnRefNoCycle((void**) &(*check).kindU.S6.Sons->data[0], n);
					asgnRefNoCycle((void**) &(*check).Typ, (*n).Typ);
					result = check;
				}
				LA66: ;
			}
			LA64: ;
		}
		LA59: ;
	}
	goto LA44;
	LA46: ;
	{
		NIM_BOOL LOC72;
		LOC72 = 0;
		LOC72 = ((*ty).Kind == ((NU8) 18));
		if (!(LOC72)) goto LA73;
		LOC72 = !(((*ty).N == NIM_NIL));
		LA73: ;
		if (!LOC72) goto LA74;
		f = getsymfromlist_197172((*ty).N, i, 0);
		{
			if (!!((f == NIM_NIL))) goto LA78;
			markused_345244((*n).kindU.S6.Sons->data[1], f);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], makederef_455912((*n).kindU.S6.Sons->data[0]));
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], newsymnode_189095(f));
			asgnRefNoCycle((void**) &(*n).Typ, (*f).Typ);
			result = n;
		}
		LA78: ;
	}
	goto LA44;
	LA74: ;
	LA44: ;
	{
		ttype188837* t;
		if (!(result == NIM_NIL)) goto LA82;
		t = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, 14680064);
		{
			if (!((*t).Kind == ((NU8) 11) || (*t).Kind == ((NU8) 54))) goto LA86;
			result = readtypeparameter_455950(c, t, i, (*n).Info);
		}
		LA86: ;
	}
	LA82: ;
	BeforeRet: ;
	return result;
}

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

N_NIMCALL(void, gatherusedsyms_420073)(tcontext250019* c, tnodeseq188797** usedsyms) {
	tscope188827* scope_420079;
	tscope188827* HEX3Atmp_420185;
	tscope188827* current_420187;
	scope_420079 = 0;
	HEX3Atmp_420185 = 0;
	HEX3Atmp_420185 = (*c).Currentscope;
	current_420187 = HEX3Atmp_420185;
	while (1) {
		if (!!((current_420187 == NIM_NIL))) goto LA1;
		scope_420079 = current_420187;
		{
			NIM_BOOL LOC4;
			tnode188803* s_420109;
			tnodeseq188797* HEX3Atmp_420180;
			NI i_420182;
			NI l_420184;
			LOC4 = 0;
			LOC4 = HEX3DHEX3D_272164((*scope_420079).Usingsyms, NIM_NIL);
			if (!!(LOC4)) goto LA5;
			s_420109 = 0;
			HEX3Atmp_420180 = 0;
			HEX3Atmp_420180 = (*scope_420079).Usingsyms;
			i_420182 = 0;
			l_420184 = HEX3Atmp_420180->Sup.len;
			while (1) {
				if (!(i_420182 < l_420184)) goto LA7;
				s_420109 = HEX3Atmp_420180->data[i_420182];
				safeadd_420113(usedsyms, s_420109);
				i_420182 += 1;
			} LA7: ;
		}
		LA5: ;
		current_420187 = (*current_420187).Parent;
	} LA1: ;
}

N_NIMCALL(tsym188833*, lookupmacro_445980)(tcontext250019* c, tnode188803* n) {
	tsym188833* 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: ;
	{
		tident167019* LOC10;
		LOC10 = 0;
		LOC10 = consideracc_252006(n);
		result = searchinscopes_252245(c, LOC10, 393216);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, copyexcept_445933)(tnode188803* n, NI i) {
	tnode188803* result;
	NI j_445959;
	NI HEX3Atmp_445974;
	NI LOC1;
	NI res_445976;
	result = 0;
	result = copynode_189233(n);
	j_445959 = 0;
	HEX3Atmp_445974 = 0;
	LOC1 = 0;
	LOC1 = len_189264(n);
	HEX3Atmp_445974 = LOC1 - 1;
	res_445976 = 0;
	while (1) {
		if (!(res_445976 <= HEX3Atmp_445974)) goto LA2;
		j_445959 = res_445976;
		{
			if (!!((j_445959 == i))) goto LA5;
			add_189390(result, (*n).kindU.S6.Sons->data[j_445959]);
		}
		LA5: ;
		res_445976 += 1;
	} LA2: ;
	return result;
}

N_NIMCALL(tnode188803*, semprocannotation_446024)(tcontext250019* c, tnode188803* prc) {
	tnode188803* result;
	tnode188803* n;
	NI i_446093;
	NI HEX3Atmp_446264;
	NI LOC7;
	NI res_446266;
	result = 0;
	n = (*prc).kindU.S6.Sons->data[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: ;
	i_446093 = 0;
	HEX3Atmp_446264 = 0;
	LOC7 = 0;
	LOC7 = len_189264(n);
	HEX3Atmp_446264 = LOC7 - 1;
	res_446266 = 0;
	while (1) {
		if (!(res_446266 <= HEX3Atmp_446264)) goto LA8;
		i_446093 = res_446266;
		{
			tnode188803* it;
			tnode188803* key;
			tsym188833* m;
			tnode188803* x;
			tnode188803* LOC31;
			tnode188803* LOC36;
			it = (*n).kindU.S6.Sons->data[i_446093];
			{
				if (!((*it).Kind == ((NU8) 34))) goto LA12;
				key = (*it).kindU.S6.Sons->data[0];
			}
			goto LA10;
			LA12: ;
			{
				key = it;
			}
			LA10: ;
			m = lookupmacro_445980(c, key);
			{
				if (!(m == NIM_NIL)) goto LA17;
				{
					NIM_BOOL LOC21;
					LOC21 = 0;
					LOC21 = ((*key).Kind == ((NU8) 2));
					if (!(LOC21)) goto LA22;
					LOC21 = ((*(*key).kindU.S5.Ident).Sup.Id == 84);
					LA22: ;
					if (!LOC21) goto LA23;
					{
						tident167019* LOC27;
						LOC27 = 0;
						LOC27 = consideracc_252006((*prc).kindU.S6.Sons->data[0]);
						if (!eqStrings((*LOC27).S, ((NimStringDesc*) &TMP2777))) goto LA28;
						asgnRefNoCycle((void**) &(*prc).kindU.S6.Sons->data[0], newidentnode_189090(iddelegator_167478, (*prc).Info));
						asgnRefNoCycle((void**) &(*prc).kindU.S6.Sons->data[4], copyexcept_445933(n, i_446093));
					}
					goto LA25;
					LA28: ;
					{
						localerror_165571((*prc).Info, ((NU16) 199), ((NimStringDesc*) &TMP2675));
					}
					LA25: ;
				}
				LA23: ;
				goto LA9;
			}
			LA17: ;
			x = newnodei_189099(((NU8) 27), (*n).Info);
			LOC31 = 0;
			LOC31 = newsymnode_189095(m);
			add_189390(x, LOC31);
			asgnRefNoCycle((void**) &(*prc).kindU.S6.Sons->data[4], copyexcept_445933(n, i_446093));
			{
				if (!((*it).Kind == ((NU8) 34))) goto LA34;
				add_189390(x, (*it).kindU.S6.Sons->data[1]);
			}
			LA34: ;
			LOC36 = 0;
			LOC36 = newprocnode_191214(((NU8) 52), (*prc).Info, prc, emptyparams_191211, emptynode_189727, emptynode_189727, emptynode_189727, emptynode_189727, emptynode_189727);
			add_189390(x, LOC36);
			result = semstmt_416061(c, x);
			goto BeforeRet;
		} LA9: ;
		res_446266 += 1;
	} LA8: ;
	BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, istoplevel_416498)(tcontext250019* c) {
	NIM_BOOL result;
	result = 0;
	result = ((*(*c).Currentscope).Depthlevel <= 2);
	return result;
}

N_NIMCALL(tsym188833*, newsymg_416512)(NU8 kind, tnode188803* n, tcontext250019* c) {
	tsym188833* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 3))) goto LA3;
		result = (*n).kindU.S4.Sym;
		{
			NimStringDesc* LOC9;
			if (!!((((*result).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA7;
			LOC9 = 0;
			LOC9 = HEX24_165714(TMP2778);
			internalerror_165606(LOC9);
		}
		LA7: ;
		{
			NimStringDesc* LOC14;
			if (!!(((*result).Kind == kind))) goto LA12;
			LOC14 = 0;
			LOC14 = HEX24_165714(TMP2780);
			internalerror_165606(LOC14);
		}
		LA12: ;
		asgnRefNoCycle((void**) &(*result).Owner, getcurrowner_250215());
	}
	goto LA1;
	LA3: ;
	{
		tident167019* LOC16;
		tsym188833* LOC17;
		LOC16 = 0;
		LOC16 = consideracc_252006(n);
		LOC17 = 0;
		LOC17 = getcurrowner_250215();
		result = newsym_189053(kind, LOC16, LOC17, (*n).Info);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tsym188833*, semidentvis_416601)(tcontext250019* c, NU8 kind, tnode188803* n, NU32 allowed) {
	tsym188833* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 31))) goto LA3;
		{
			NIM_BOOL LOC7;
			NI LOC8;
			tident167019* v;
			LOC7 = 0;
			LOC8 = 0;
			LOC8 = sonslen_189181(n);
			LOC7 = (LOC8 == 2);
			if (!(LOC7)) goto LA9;
			LOC7 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 2));
			LA9: ;
			if (!LOC7) goto LA10;
			result = newsymg_416512(kind, (*n).kindU.S6.Sons->data[1], c);
			v = (*(*n).kindU.S6.Sons->data[0]).kindU.S5.Ident;
			{
				NIM_BOOL LOC14;
				LOC14 = 0;
				LOC14 = ((allowed &(1<<((((NU8) 1))&31)))!=0);
				if (!(LOC14)) goto LA15;
				LOC14 = ((*v).Sup.Id == 74);
				LA15: ;
				if (!LOC14) goto LA16;
				(*result).Flags |=((NI32)(1)<<((((NU8) 1))%(sizeof(NI32)*8)));
			}
			goto LA12;
			LA16: ;
			{
				localerror_165571((*(*n).kindU.S6.Sons->data[0]).Info, ((NU16) 174), (*v).S);
			}
			LA12: ;
		}
		goto LA5;
		LA10: ;
		{
			illformedast_251203(n);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		result = newsymg_416512(kind, n, c);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tsym188833*, semidentwithpragma_416608)(tcontext250019* c, NU8 kind, tnode188803* n, NU32 allowed) {
	tsym188833* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 43))) goto LA3;
		checksonslen_251209(n, 2);
		result = semidentvis_416601(c, kind, (*n).kindU.S6.Sons->data[0], allowed);
		switch (kind) {
		case ((NU8) 7):
		{
		}
		break;
		case ((NU8) 19):
		{
			pragma_267073(c, result, (*n).kindU.S6.Sons->data[1], TMP2781);
		}
		break;
		case ((NU8) 8):
		{
			pragma_267073(c, result, (*n).kindU.S6.Sons->data[1], TMP2782);
		}
		break;
		case ((NU8) 9):
		{
			pragma_267073(c, result, (*n).kindU.S6.Sons->data[1], TMP2782);
		}
		break;
		case ((NU8) 10):
		{
			pragma_267073(c, result, (*n).kindU.S6.Sons->data[1], TMP2783);
		}
		break;
		default:
		{
		}
		break;
		}
	}
	goto LA1;
	LA3: ;
	{
		result = semidentvis_416601(c, kind, n, allowed);
	}
	LA1: ;
	{
		if (!(gcmd_137113 == ((NU8) 7))) goto LA14;
		checkdef_355603(n, result);
	}
	LA14: ;
	return result;
}

static N_INLINE(void, suggestsym_362857)(tnode188803* n, tsym188833* s) {
	{
		if (!((gglobaloptions_137111 &(1<<((((NU8) 26))&31)))!=0)) goto LA3;
		findusages_360481(n, s);
	}
	LA3: ;
	{
		if (!((gglobaloptions_137111 &(1<<((((NU8) 25))&31)))!=0)) goto LA7;
		finddefinition_360519(n, s);
	}
	LA7: ;
	{
		if (!isserving_137126) goto LA11;
		addtosourcemap_360663(s, (*n).Info);
	}
	LA11: ;
}

N_NIMCALL(tsym188833*, semidentdef_441944)(tcontext250019* c, tnode188803* n, NU8 kind) {
	tsym188833* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_416498(c);
		if (!LOC3) goto LA4;
		result = semidentwithpragma_416608(c, kind, n, 2);
		(*result).Flags |=((NI32)(1)<<((((NU8) 3))%(sizeof(NI32)*8)));
	}
	goto LA1;
	LA4: ;
	{
		result = semidentwithpragma_416608(c, kind, n, 0);
	}
	LA1: ;
	suggestsym_362857(n, result);
	return result;
}

N_NIMCALL(ttype188837*, semgenericconstraints_429827)(tcontext250019* c, ttype188837* x) {
	ttype188837* result;
	ttypeseq188835* LOC1;
	TY350968 LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = (ttypeseq188835*) newSeq((&NTI188835), 1);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = x;
	asgnRefNoCycle((void**) &LOC1->data[0], LOC2[0]);
	result = newtypewithsons_250675(c, ((NU8) 12), LOC1);
	return result;
}

N_NIMCALL(tnode188803*, semgenericparamlist_429851)(tcontext250019* c, tnode188803* n, ttype188837* father) {
	tnode188803* result;
	NI i_429878;
	NI HEX3Atmp_430189;
	NI LOC5;
	NI res_430191;
	result = 0;
	result = copynode_189233(n);
	{
		if (!!(((*n).Kind == ((NU8) 75)))) goto LA3;
		illformedast_251203(n);
		goto BeforeRet;
	}
	LA3: ;
	i_429878 = 0;
	HEX3Atmp_430189 = 0;
	LOC5 = 0;
	LOC5 = sonslen_189181(n);
	HEX3Atmp_430189 = (NI32)(LOC5 - 1);
	res_430191 = 0;
	while (1) {
		tnode188803* a;
		NI l;
		tnode188803* def;
		NI LOC11;
		tnode188803* constraint;
		NI LOC18;
		ttype188837* typ;
		NI j_430092;
		NI HEX3Atmp_430185;
		NI res_430187;
		if (!(res_430191 <= HEX3Atmp_430189)) goto LA6;
		i_429878 = res_430191;
		a = (*n).kindU.S6.Sons->data[i_429878];
		{
			if (!!(((*a).Kind == ((NU8) 35)))) goto LA9;
			illformedast_251203(n);
		}
		LA9: ;
		l = len_189264(a);
		LOC11 = 0;
		{
			if (!NIM_FALSE) goto LA14;
			LOC11 = -1;
		}
		goto LA12;
		LA14: ;
		{
			NI LOC17;
			LOC17 = 0;
			LOC17 = len_189264(a);
			LOC11 = (NI32)(LOC17 + -1);
		}
		LA12: ;
		def = HEX5BHEX5D_189694(a, LOC11);
		LOC18 = 0;
		{
			if (!NIM_FALSE) goto LA21;
			LOC18 = -2;
		}
		goto LA19;
		LA21: ;
		{
			NI LOC24;
			LOC24 = 0;
			LOC24 = len_189264(a);
			LOC18 = (NI32)(LOC24 + -2);
		}
		LA19: ;
		constraint = HEX5BHEX5D_189694(a, LOC18);
		typ = 0;
		{
			if (!!(((*constraint).Kind == ((NU8) 1)))) goto LA27;
			typ = semtypenode_416055(c, constraint, NIM_NIL);
			{
				NIM_BOOL LOC31;
				NI LOC33;
				LOC31 = 0;
				LOC31 = !(((*typ).Kind == ((NU8) 59)));
				if (LOC31) goto LA32;
				LOC33 = 0;
				LOC33 = len_192569(typ);
				LOC31 = (LOC33 == 0);
				LA32: ;
				if (!LOC31) goto LA34;
				{
					if (!((*typ).Kind == ((NU8) 8))) goto LA38;
					{
						ttypeseq188835* LOC44;
						TY350968 LOC45;
						if (!((*(*typ).Sons->data[0]).Kind == ((NU8) 0))) goto LA42;
						LOC44 = 0;
						LOC44 = (ttypeseq188835*) newSeq((&NTI188835), 1);
						memset((void*)LOC45, 0, sizeof(LOC45));
						LOC45[0] = newtypes_250180(((NU8) 0), c);
						asgnRefNoCycle((void**) &LOC44->data[0], LOC45[0]);
						typ = newtypewithsons_250675(c, ((NU8) 8), LOC44);
					}
					LA42: ;
				}
				goto LA36;
				LA38: ;
				{
					typ = semgenericconstraints_429827(c, typ);
				}
				LA36: ;
			}
			LA34: ;
		}
		LA27: ;
		{
			if (!!(((*def).Kind == ((NU8) 1)))) goto LA49;
			def = semconstexpr_417095(c, def);
			{
				if (!(typ == NIM_NIL)) goto LA53;
				{
					ttypeseq188835* LOC59;
					TY350968 LOC60;
					if (!!(((*(*def).Typ).Kind == ((NU8) 8)))) goto LA57;
					LOC59 = 0;
					LOC59 = (ttypeseq188835*) newSeq((&NTI188835), 1);
					memset((void*)LOC60, 0, sizeof(LOC60));
					LOC60[0] = (*def).Typ;
					asgnRefNoCycle((void**) &LOC59->data[0], LOC60[0]);
					typ = newtypewithsons_250675(c, ((NU8) 59), LOC59);
				}
				LA57: ;
			}
			goto LA51;
			LA53: ;
			{
				{
					NIM_BOOL LOC64;
					LOC64 = 0;
					LOC64 = containsgenerictype_232717((*def).Typ);
					if (!!(LOC64)) goto LA65;
					def = fitnode_416037(c, typ, def);
				}
				LA65: ;
			}
			LA51: ;
		}
		LA49: ;
		{
			if (!(typ == NIM_NIL)) goto LA69;
			typ = newtypes_250180(((NU8) 12), c);
			{
				if (!(father == NIM_NIL)) goto LA73;
				(*typ).Flags |=((NI32)(1)<<((((NU8) 25))%(sizeof(NI32)*8)));
			}
			LA73: ;
		}
		LA69: ;
		(*typ).Flags |=((NI32)(1)<<((((NU8) 23))%(sizeof(NI32)*8)));
		j_430092 = 0;
		HEX3Atmp_430185 = 0;
		HEX3Atmp_430185 = (NI32)(l - 3);
		res_430187 = 0;
		while (1) {
			ttype188837* finaltype;
			tsym188833* s;
			tnode188803* LOC98;
			if (!(res_430187 <= HEX3Atmp_430185)) goto LA75;
			j_430092 = res_430187;
			{
				if (!(j_430092 == 0)) goto LA78;
				finaltype = typ;
			}
			goto LA76;
			LA78: ;
			{
				finaltype = copytype_189141(typ, (*typ).Owner, NIM_FALSE);
			}
			LA76: ;
			{
				NIM_BOOL LOC83;
				tsym188833* LOC87;
				LOC83 = 0;
				LOC83 = ((*finaltype).Kind == ((NU8) 59));
				if (LOC83) goto LA84;
				LOC83 = (((*typ).Flags &(1<<((((NU8) 25))&31)))!=0);
				LA84: ;
				if (!LOC83) goto LA85;
				LOC87 = 0;
				LOC87 = newsymg_416512(((NU8) 4), (*a).kindU.S6.Sons->data[j_430092], c);
				s = linkto_189797(LOC87, finaltype);
			}
			goto LA81;
			LA85: ;
			{
				tsym188833* LOC89;
				LOC89 = 0;
				LOC89 = newsymg_416512(((NU8) 7), (*a).kindU.S6.Sons->data[j_430092], c);
				s = linkto_189797(LOC89, finaltype);
			}
			LA81: ;
			{
				if (!!(((*def).Kind == ((NU8) 1)))) goto LA92;
				asgnRefNoCycle((void**) &(*s).Ast, def);
			}
			LA92: ;
			{
				if (!!((father == NIM_NIL))) goto LA96;
				addsonskipintlit_242461(father, (*s).Typ);
			}
			LA96: ;
			(*s).Position = len_189264(result);
			LOC98 = 0;
			LOC98 = newsymnode_189095(s);
			addson_189207(result, LOC98);
			{
				if (!!((((*s).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA101;
				adddecl_252550(c, s);
			}
			LA101: ;
			res_430187 += 1;
		} LA75: ;
		res_430191 += 1;
	} LA6: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(ttype188837*, semparamtype_427582)(tcontext250019* c, tnode188803* n, tnode188803** constraint) {
	ttype188837* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 40))) goto LA3;
		result = semtypenode_416055(c, (*n).kindU.S6.Sons->data[0], NIM_NIL);
		unsureAsgnRef((void**) &(*constraint), semnodekindconstraints_276472(n));
	}
	goto LA1;
	LA3: ;
	{
		result = semtypenode_416055(c, n, NIM_NIL);
	}
	LA1: ;
	return result;
}
N_NIMCALL(void, TMP2841)(void* p, NI op) {
	TY427566* a;
	a = (TY427566*)p;
	nimGCvisit((void*)(*a).Paramname426791, op);
	nimGCvisit((void*)(*a).Genericparams426789, op);
	nimGCvisit((void*)(*a).C426787, op);
}

N_CLOSURE(ttype188837*, addimplicitgenericimpl_426812)(ttype188837* typeclass, tident167019* typid, void* ClEnv) {
	ttype188837* result;
	TY427566* HEX3Aenv_427567;
	tident167019* finaltypid;
	NI i_426864;
	NI HEX3Atmp_426975;
	NI LOC11;
	NI res_426977;
	tsym188833* owner;
	tsym188833* s;
	tsym188833* LOC26;
	tnode188803* LOC27;
	result = 0;
	HEX3Aenv_427567 = (TY427566*) ClEnv;
	{
		if (!!((typid == NIM_NIL))) goto LA3;
		finaltypid = typid;
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC6;
		LOC6 = 0;
		LOC6 = rawNewString((*HEX3Aenv_427567).Paramname426791->Sup.len + 5);
appendString(LOC6, (*HEX3Aenv_427567).Paramname426791);
appendString(LOC6, ((NimStringDesc*) &TMP2842));
		finaltypid = getident_167456(LOC6);
	}
	LA1: ;
	{
		if (!((*HEX3Aenv_427567).Genericparams426789 == NIM_NIL)) goto LA9;
		goto BeforeRet;
	}
	LA9: ;
	i_426864 = 0;
	HEX3Atmp_426975 = 0;
	LOC11 = 0;
	LOC11 = len_189264((*HEX3Aenv_427567).Genericparams426789);
	HEX3Atmp_426975 = (NI32)(LOC11 - 1);
	res_426977 = 0;
	while (1) {
		if (!(res_426977 <= HEX3Atmp_426975)) goto LA12;
		i_426864 = res_426977;
		{
			if (!((*(*(*(*(*HEX3Aenv_427567).Genericparams426789).kindU.S6.Sons->data[i_426864]).kindU.S4.Sym).Name).Sup.Id == (*finaltypid).Sup.Id)) goto LA15;
			result = (*(*(*HEX3Aenv_427567).Genericparams426789).kindU.S6.Sons->data[i_426864]).Typ;
			goto BeforeRet;
		}
		LA15: ;
		res_426977 += 1;
	} LA12: ;
	{
		if (!!(((*typeclass).Sym == NIM_NIL))) goto LA19;
		owner = (*typeclass).Sym;
	}
	goto LA17;
	LA19: ;
	{
		owner = getcurrowner_250215();
	}
	LA17: ;
	s = newsym_189053(((NU8) 7), finaltypid, owner, (*HEX3Aenv_427567).Info426792);
	{
		if (!(typid == NIM_NIL)) goto LA24;
		(*s).Flags |=((NI32)(1)<<((((NU8) 29))%(sizeof(NI32)*8)));
	}
	LA24: ;
	LOC26 = 0;
	LOC26 = linkto_189797(s, typeclass);
	(*typeclass).Flags |=((NI32)(1)<<((((NU8) 24))%(sizeof(NI32)*8)));
	(*s).Position = len_189264((*HEX3Aenv_427567).Genericparams426789);
	LOC27 = 0;
	LOC27 = newsymnode_189095(s);
	addson_189207((*HEX3Aenv_427567).Genericparams426789, LOC27);
	result = typeclass;
	adddecl_252550((*HEX3Aenv_427567).C426787, s);
	BeforeRet: ;
	return result;
}

N_NIMCALL(ttype188837*, liftparamtype_426785)(tcontext250019* c, NU8 prockind, tnode188803* genericparams, ttype188837* paramtype, NimStringDesc* paramname, tlineinfo163527 info, NIM_BOOL anon) {
	ttype188837* result;
	TY427566* HEX3Aenv_427580;
	NimStringDesc* LOC1;
	tident167019* paramtypid;
	result = 0;
	HEX3Aenv_427580 = 0;
	HEX3Aenv_427580 = (TY427566*) newObj((&NTI427581), sizeof(TY427566));
	LOC1 = 0;
	LOC1 = (*HEX3Aenv_427580).Paramname426791; (*HEX3Aenv_427580).Paramname426791 = copyStringRC1(paramname);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	asgnRefNoCycle((void**) &(*HEX3Aenv_427580).Genericparams426789, genericparams);
	(*HEX3Aenv_427580).Info426792 = info;
	asgnRef((void**) &(*HEX3Aenv_427580).C426787, 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):
	{
		TY426813 LOC14;
		ttype188837* LOC15;
		memset((void*)&LOC14, 0, sizeof(LOC14));
		LOC14.ClPrc = addimplicitgenericimpl_426812; LOC14.ClEnv = HEX3Aenv_427580;
		LOC15 = 0;
		LOC15 = newtypes_250180(((NU8) 12), (*HEX3Aenv_427580).C426787);
		result = LOC14.ClEnv? LOC14.ClPrc(LOC15, paramtypid, LOC14.ClEnv):((TMP2843)(LOC14.ClPrc))(LOC15, paramtypid);
	}
	break;
	case ((NU8) 59):
	{
		ttype188837* base;
		ttype188837* lifted_427041;
		ttype188837* LOC25;
		TY426813 LOC37;
		ttypeseq188835* LOC38;
		TY350968 LOC39;
		ttype188837* 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_223029(paramtype);
		lifted_427041 = liftparamtype_426785((*HEX3Aenv_427580).C426787, prockind, (*HEX3Aenv_427580).Genericparams426789, LOC25, (*HEX3Aenv_427580).Paramname426791, (*HEX3Aenv_427580).Info426792, NIM_FALSE);
		{
			if (!!((lifted_427041 == NIM_NIL))) goto LA28;
			base = lifted_427041;
		}
		goto LA26;
		LA28: ;
		{
			base = base_223029(paramtype);
		}
		LA26: ;
		{
			NIM_BOOL LOC33;
			LOC33 = 0;
			LOC33 = ismetatype_189732(base);
			if (!(LOC33)) goto LA34;
			LOC33 = (prockind == ((NU8) 17));
			LA34: ;
			if (!LOC33) goto LA35;
			localerror_165571((*HEX3Aenv_427580).Info426792, ((NU16) 201), (*HEX3Aenv_427580).Paramname426791);
		}
		LA35: ;
		memset((void*)&LOC37, 0, sizeof(LOC37));
		LOC37.ClPrc = addimplicitgenericimpl_426812; LOC37.ClEnv = HEX3Aenv_427580;
		LOC38 = 0;
		LOC38 = (ttypeseq188835*) newSeq((&NTI188835), 1);
		memset((void*)LOC39, 0, sizeof(LOC39));
		LOC39[0] = base;
		asgnRefNoCycle((void**) &LOC38->data[0], LOC39[0]);
		LOC40 = 0;
		LOC40 = newtypewithsons_250675((*HEX3Aenv_427580).C426787, ((NU8) 59), LOC38);
		result = LOC37.ClEnv? LOC37.ClPrc(LOC40, paramtypid, LOC37.ClEnv):((TMP2844)(LOC37.ClPrc))(LOC40, paramtypid);
		(*result).Flags = ((*result).Flags | 4194816);
	}
	break;
	case ((NU8) 8):
	{
		{
			TY426813 LOC55;
			ttypeseq188835* LOC56;
			TY350968 LOC57;
			ttype188837* LOC58;
			if (!!((((*paramtype).Flags &(1<<((((NU8) 9))&31)))!=0))) goto LA44;
			{
				NIM_BOOL LOC48;
				NIM_BOOL LOC49;
				ttype188837* LOC50;
				LOC48 = 0;
				LOC49 = 0;
				LOC50 = 0;
				LOC50 = base_223029(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_426779).Sup.Id);
				LA52: ;
				if (!LOC48) goto LA53;
				paramtypid = NIM_NIL;
			}
			LA53: ;
			memset((void*)&LOC55, 0, sizeof(LOC55));
			LOC55.ClPrc = addimplicitgenericimpl_426812; LOC55.ClEnv = HEX3Aenv_427580;
			LOC56 = 0;
			LOC56 = (ttypeseq188835*) newSeq((&NTI188835), 1);
			memset((void*)LOC57, 0, sizeof(LOC57));
			LOC57[0] = base_223029(paramtype);
			asgnRefNoCycle((void**) &LOC56->data[0], LOC57[0]);
			LOC58 = 0;
			LOC58 = newtypewithsons_250675((*HEX3Aenv_427580).C426787, ((NU8) 8), LOC56);
			result = LOC55.ClEnv? LOC55.ClPrc(LOC58, paramtypid, LOC55.ClEnv):((TMP2845)(LOC55.ClPrc))(LOC58, paramtypid);
		}
		LA44: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			NI LOC62;
			LOC62 = 0;
			LOC62 = sonslen_189185(paramtype);
			if (!(LOC62 == 1)) goto LA63;
			result = liftparamtype_426785((*HEX3Aenv_427580).C426787, prockind, (*HEX3Aenv_427580).Genericparams426789, (*paramtype).Sons->data[0], (*HEX3Aenv_427580).Paramname426791, (*HEX3Aenv_427580).Info426792, 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;
			ttype188837* LOC70;
			ttype188837* typ;
			ttypeseq188835* LOC73;
			TY350968 LOC74;
			TY426813 LOC75;
			LOC68 = 0;
			LOC68 = ((*paramtype).Kind == ((NU8) 24));
			if (!(LOC68)) goto LA69;
			LOC70 = 0;
			LOC70 = lastson_189193(paramtype);
			LOC68 = ((*LOC70).Kind == ((NU8) 0));
			LA69: ;
			if (!LOC68) goto LA71;
			LOC73 = 0;
			LOC73 = (ttypeseq188835*) newSeq((&NTI188835), 1);
			memset((void*)LOC74, 0, sizeof(LOC74));
			LOC74[0] = newtypes_250180((*paramtype).Kind, (*HEX3Aenv_427580).C426787);
			asgnRefNoCycle((void**) &LOC73->data[0], LOC74[0]);
			typ = newtypewithsons_250675((*HEX3Aenv_427580).C426787, ((NU8) 51), LOC73);
			memset((void*)&LOC75, 0, sizeof(LOC75));
			LOC75.ClPrc = addimplicitgenericimpl_426812; LOC75.ClEnv = HEX3Aenv_427580;
			result = LOC75.ClEnv? LOC75.ClPrc(typ, paramtypid, LOC75.ClEnv):((TMP2846)(LOC75.ClPrc))(typ, paramtypid);
		}
		goto LA66;
		LA71: ;
		{
			NI i_427234;
			NI HEX3Atmp_427550;
			NI res_427552;
			i_427234 = 0;
			HEX3Atmp_427550 = 0;
			HEX3Atmp_427550 = (*paramtype).Sons->Sup.len - 1;
			res_427552 = 0;
			while (1) {
				ttype188837* lifted;
				if (!(res_427552 <= HEX3Atmp_427550)) goto LA77;
				i_427234 = res_427552;
				lifted = liftparamtype_426785((*HEX3Aenv_427580).C426787, prockind, (*HEX3Aenv_427580).Genericparams426789, (*paramtype).Sons->data[i_427234], (*HEX3Aenv_427580).Paramname426791, (*HEX3Aenv_427580).Info426792, NIM_FALSE);
				{
					if (!!((lifted == NIM_NIL))) goto LA80;
					asgnRefNoCycle((void**) &(*paramtype).Sons->data[i_427234], lifted);
					result = paramtype;
				}
				LA80: ;
				res_427552 += 1;
			} LA77: ;
		}
		LA66: ;
	}
	break;
	case ((NU8) 10):
	{
		NI i_427263;
		NI HEX3Atmp_427554;
		NI LOC83;
		NI res_427556;
		ttypeseq188835* LOC93;
		TY250763 LOC94;
		TY426813 LOC95;
		result = newtypes_250180(((NU8) 9), (*HEX3Aenv_427580).C426787);
		rawaddson_193092(result, paramtype);
		i_427263 = 0;
		HEX3Atmp_427554 = 0;
		LOC83 = 0;
		LOC83 = sonslen_189185(paramtype);
		HEX3Atmp_427554 = (NI32)(LOC83 - 2);
		res_427556 = 0;
		while (1) {
			ttype188837* LOC85;
			if (!(res_427556 <= HEX3Atmp_427554)) goto LA84;
			i_427263 = res_427556;
			LOC85 = 0;
			LOC85 = newtypes_250180(((NU8) 58), (*HEX3Aenv_427580).C426787);
			rawaddson_193092(result, LOC85);
			res_427556 += 1;
		} LA84: ;
		{
			ttype188837* LOC88;
			ttype188837* LOC91;
			TY426813 LOC92;
			LOC88 = 0;
			LOC88 = lastson_189193(paramtype);
			if (!((*LOC88).Kind == ((NU8) 52))) goto LA89;
			(*result).Kind = ((NU8) 53);
			LOC91 = 0;
			LOC91 = lastson_189193(paramtype);
			rawaddson_193092(result, LOC91);
			memset((void*)&LOC92, 0, sizeof(LOC92));
			LOC92.ClPrc = addimplicitgenericimpl_426812; LOC92.ClEnv = HEX3Aenv_427580;
			result = LOC92.ClEnv? LOC92.ClPrc(result, paramtypid, LOC92.ClEnv):((TMP2847)(LOC92.ClPrc))(result, paramtypid);
			goto BeforeRet;
		}
		LA89: ;
		result = instgenericcontainer_419226((*HEX3Aenv_427580).C426787, (*(*paramtype).Sym).Info, result, NIM_TRUE);
		LOC93 = 0;
		LOC93 = (ttypeseq188835*) newSeq((&NTI188835), 2);
		memset((void*)LOC94, 0, sizeof(LOC94));
		LOC94[0] = paramtype;
		LOC94[1] = result;
		asgnRefNoCycle((void**) &LOC93->data[0], LOC94[0]);
		asgnRefNoCycle((void**) &LOC93->data[1], LOC94[1]);
		result = newtypewithsons_250675((*HEX3Aenv_427580).C426787, ((NU8) 54), LOC93);
		memset((void*)&LOC95, 0, sizeof(LOC95));
		LOC95.ClPrc = addimplicitgenericimpl_426812; LOC95.ClEnv = HEX3Aenv_427580;
		result = LOC95.ClEnv? LOC95.ClPrc(result, paramtypid, LOC95.ClEnv):((TMP2848)(LOC95.ClPrc))(result, paramtypid);
	}
	break;
	case ((NU8) 49):
	{
		{
			TY426813 LOC115;
			if (!((*paramtype).Callconv == ((NU8) 5))) goto LA99;
			{
				if (!!(((409600 &(1<<((prockind)&31)))!=0))) goto LA103;
				localerror_165571((*HEX3Aenv_427580).Info426792, ((NU16) 203), ((NimStringDesc*) &TMP2675));
			}
			LA103: ;
			{
				NI LOC107;
				ttype188837* lifted;
				ttype188837* LOC110;
				LOC107 = 0;
				LOC107 = len_192569(paramtype);
				if (!(LOC107 == 1)) goto LA108;
				LOC110 = 0;
				LOC110 = base_223029(paramtype);
				lifted = liftparamtype_426785((*HEX3Aenv_427580).C426787, prockind, (*HEX3Aenv_427580).Genericparams426789, LOC110, (*HEX3Aenv_427580).Paramname426791, (*HEX3Aenv_427580).Info426792, NIM_FALSE);
				{
					if (!!((lifted == NIM_NIL))) goto LA113;
					asgnRefNoCycle((void**) &(*paramtype).Sons->data[0], lifted);
				}
				LA113: ;
			}
			LA108: ;
			memset((void*)&LOC115, 0, sizeof(LOC115));
			LOC115.ClPrc = addimplicitgenericimpl_426812; LOC115.ClEnv = HEX3Aenv_427580;
			result = LOC115.ClEnv? LOC115.ClPrc(paramtype, paramtypid, LOC115.ClEnv):((TMP2849)(LOC115.ClPrc))(paramtype, paramtypid);
		}
		LA99: ;
	}
	break;
	case ((NU8) 11):
	{
		NI i_427363;
		NI HEX3Atmp_427558;
		NI res_427560;
		ttype188837* liftbody;
		ttype188837* LOC135;
		{
			ttype188837* LOC119;
			ttype188837* cp;
			tsym188833* LOC122;
			TY426813 LOC123;
			LOC119 = 0;
			LOC119 = lastson_189193(paramtype);
			if (!((*LOC119).Kind == ((NU8) 52))) goto LA120;
			LOC122 = 0;
			LOC122 = getcurrowner_250215();
			cp = copytype_189141(paramtype, LOC122, NIM_FALSE);
			(*cp).Kind = ((NU8) 53);
			memset((void*)&LOC123, 0, sizeof(LOC123));
			LOC123.ClPrc = addimplicitgenericimpl_426812; LOC123.ClEnv = HEX3Aenv_427580;
			result = LOC123.ClEnv? LOC123.ClPrc(cp, paramtypid, LOC123.ClEnv):((TMP2850)(LOC123.ClPrc))(cp, paramtypid);
			goto BeforeRet;
		}
		LA120: ;
		i_427363 = 0;
		HEX3Atmp_427558 = 0;
		HEX3Atmp_427558 = (NI32)((*paramtype).Sons->Sup.len - 2);
		res_427560 = 1;
		while (1) {
			ttype188837* lifted;
			if (!(res_427560 <= HEX3Atmp_427558)) goto LA124;
			i_427363 = res_427560;
			lifted = liftparamtype_426785((*HEX3Aenv_427580).C426787, prockind, (*HEX3Aenv_427580).Genericparams426789, (*paramtype).Sons->data[i_427363], (*HEX3Aenv_427580).Paramname426791, (*HEX3Aenv_427580).Info426792, NIM_FALSE);
			{
				if (!!((lifted == NIM_NIL))) goto LA127;
				asgnRefNoCycle((void**) &(*paramtype).Sons->data[i_427363], lifted);
				result = paramtype;
				{
					ttype188837* LOC131;
					NimStringDesc* LOC134;
					LOC131 = 0;
					LOC131 = lastson_189193(result);
					if (!!((((*LOC131).Flags &(1<<((((NU8) 19))&31)))!=0))) goto LA132;
					LOC134 = 0;
					LOC134 = HEX24_165714(TMP2851);
					internalerror_165606(LOC134);
				}
				LA132: ;
			}
			LA127: ;
			res_427560 += 1;
		} LA124: ;
		LOC135 = 0;
		LOC135 = lastson_189193(paramtype);
		liftbody = liftparamtype_426785((*HEX3Aenv_427580).C426787, prockind, (*HEX3Aenv_427580).Genericparams426789, LOC135, (*HEX3Aenv_427580).Paramname426791, (*HEX3Aenv_427580).Info426792, NIM_TRUE);
		{
			if (!!((liftbody == NIM_NIL))) goto LA138;
			result = liftbody;
			{
				NimStringDesc* LOC144;
				if (!!((((*result).Flags &(1<<((((NU8) 19))&31)))!=0))) goto LA142;
				LOC144 = 0;
				LOC144 = HEX24_165714(TMP2851);
				internalerror_165606(LOC144);
			}
			LA142: ;
		}
		LA138: ;
	}
	break;
	case ((NU8) 9):
	{
		NI i_427487;
		NI HEX3Atmp_427562;
		NI LOC146;
		NI res_427564;
		ttype188837* expanded;
		i_427487 = 0;
		HEX3Atmp_427562 = 0;
		LOC146 = 0;
		LOC146 = sonslen_189185(paramtype);
		HEX3Atmp_427562 = LOC146 - 1;
		res_427564 = 1;
		while (1) {
			ttype188837* lifted;
			if (!(res_427564 <= HEX3Atmp_427562)) goto LA147;
			i_427487 = res_427564;
			lifted = liftparamtype_426785((*HEX3Aenv_427580).C426787, prockind, (*HEX3Aenv_427580).Genericparams426789, (*paramtype).Sons->data[i_427487], (*HEX3Aenv_427580).Paramname426791, (*HEX3Aenv_427580).Info426792, NIM_FALSE);
			{
				if (!!((lifted == NIM_NIL))) goto LA150;
				asgnRefNoCycle((void**) &(*paramtype).Sons->data[i_427487], lifted);
			}
			LA150: ;
			res_427564 += 1;
		} LA147: ;
		expanded = instgenericcontainer_419226((*HEX3Aenv_427580).C426787, (*HEX3Aenv_427580).Info426792, paramtype, NIM_TRUE);
		result = liftparamtype_426785((*HEX3Aenv_427580).C426787, prockind, (*HEX3Aenv_427580).Genericparams426789, expanded, (*HEX3Aenv_427580).Paramname426791, (*HEX3Aenv_427580).Info426792, NIM_TRUE);
	}
	break;
	case ((NU8) 52):
	case ((NU8) 51):
	case ((NU8) 55):
	case ((NU8) 56):
	case ((NU8) 57):
	{
		TY426813 LOC153;
		tsym188833* LOC154;
		ttype188837* LOC155;
		memset((void*)&LOC153, 0, sizeof(LOC153));
		LOC153.ClPrc = addimplicitgenericimpl_426812; LOC153.ClEnv = HEX3Aenv_427580;
		LOC154 = 0;
		LOC154 = getcurrowner_250215();
		LOC155 = 0;
		LOC155 = copytype_189141(paramtype, LOC154, NIM_TRUE);
		result = LOC153.ClEnv? LOC153.ClPrc(LOC155, paramtypid, LOC153.ClEnv):((TMP2852)(LOC153.ClPrc))(LOC155, paramtypid);
	}
	break;
	case ((NU8) 6):
	{
		{
			TY426813 LOC161;
			ttype188837* LOC162;
			if (!!(((393216 &(1<<((prockind)&31)))!=0))) goto LA159;
			memset((void*)&LOC161, 0, sizeof(LOC161));
			LOC161.ClPrc = addimplicitgenericimpl_426812; LOC161.ClEnv = HEX3Aenv_427580;
			LOC162 = 0;
			LOC162 = newtypes_250180(((NU8) 58), (*HEX3Aenv_427580).C426787);
			result = LOC161.ClEnv? LOC161.ClPrc(LOC162, paramtypid, LOC161.ClEnv):((TMP2853)(LOC161.ClPrc))(LOC162, paramtypid);
		}
		LA159: ;
	}
	break;
	case ((NU8) 12):
	{
		markused_345244((*HEX3Aenv_427580).Genericparams426789, (*paramtype).Sym);
		{
			if (!(((*paramtype).Flags &(1<<((((NU8) 25))&31)))!=0)) goto LA166;
			(*paramtype).Flags &= ~((NI32)(1) << ((((NU8) 25)) % (sizeof(NI32)*8)));
			(*(*paramtype).Sym).Kind = ((NU8) 7);
		}
		LA166: ;
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(ttype188837*, semproctypenode_427613)(tcontext250019* c, tnode188803* n, tnode188803* genericparams, ttype188837* prev, NU8 kind) {
	ttype188837* result;
	tnode188803* res;
	tintset185047 cl;
	toptionentry250003* LOC1;
	tintset185047 check;
	NI counter;
	NI i_427654;
	NI HEX3Atmp_428224;
	NI LOC9;
	NI res_428226;
	ttype188837* r;
	result = 0;
	res = 0;
	memset((void*)&cl, 0, sizeof(cl));
	checkminsonslen_251215(n, 1);
	result = neworprevtype_422528(((NU8) 25), prev, c);
	LOC1 = 0;
	LOC1 = lastoptionentry_250154(c);
	(*result).Callconv = (*LOC1).Defaultcc;
	asgnRefNoCycle((void**) &(*result).N, newnodei_189099(((NU8) 76), (*n).Info));
	{
		NIM_BOOL LOC4;
		NI LOC6;
		LOC4 = 0;
		LOC4 = !((genericparams == NIM_NIL));
		if (!(LOC4)) goto LA5;
		LOC6 = 0;
		LOC6 = sonslen_189181(genericparams);
		LOC4 = (LOC6 == 0);
		LA5: ;
		if (!LOC4) goto LA7;
		chckNil((void*)&cl);
		memset((void*)&cl, 0, sizeof(cl));
		initintset_185918(&cl);
	}
	LA7: ;
	rawaddson_193092(result, NIM_NIL);
	res = newnodei_189099(((NU8) 150), (*n).Info);
	addson_189207((*result).N, res);
	chckNil((void*)&check);
	memset((void*)&check, 0, sizeof(check));
	initintset_185918(&check);
	counter = 0;
	i_427654 = 0;
	HEX3Atmp_428224 = 0;
	LOC9 = 0;
	LOC9 = len_189264(n);
	HEX3Atmp_428224 = (NI32)(LOC9 - 1);
	res_428226 = 1;
	while (1) {
		if (!(res_428226 <= HEX3Atmp_428224)) goto LA10;
		i_427654 = res_428226;
		{
			tnode188803* a;
			ttype188837* typ;
			tnode188803* def;
			tnode188803* constraint;
			NI length;
			NIM_BOOL hastype;
			NIM_BOOL hasdefault;
			NI j_427831;
			NI HEX3Atmp_428220;
			NI res_428222;
			a = (*n).kindU.S6.Sons->data[i_427654];
			{
				if (!!(((*a).Kind == ((NU8) 35)))) goto LA14;
				illformedast_251203(a);
			}
			LA14: ;
			checkminsonslen_251215(a, 3);
			typ = NIM_NIL;
			def = NIM_NIL;
			constraint = NIM_NIL;
			length = sonslen_189181(a);
			hastype = !(((*(*a).kindU.S6.Sons->data[(NI32)(length - 2)]).Kind == ((NU8) 1)));
			hasdefault = !(((*(*a).kindU.S6.Sons->data[(NI32)(length - 1)]).Kind == ((NU8) 1)));
			{
				if (!hastype) goto LA18;
				typ = semparamtype_427582(c, (*a).kindU.S6.Sons->data[(NI32)(length - 2)], &constraint);
			}
			LA18: ;
			{
				if (!hasdefault) goto LA22;
				def = semexprwithtype_416011(c, (*a).kindU.S6.Sons->data[(NI32)(length - 1)], 0);
				{
					if (!(typ == NIM_NIL)) goto LA26;
					typ = (*def).Typ;
				}
				goto LA24;
				LA26: ;
				{
					if (!!((def == NIM_NIL))) goto LA29;
					{
						NIM_BOOL LOC33;
						LOC33 = 0;
						LOC33 = containsgenerictype_232717(typ);
						if (!!(LOC33)) goto LA34;
						def = fitnode_416037(c, typ, def);
					}
					LA34: ;
				}
				goto LA24;
				LA29: ;
				LA24: ;
			}
			LA22: ;
			{
				NIM_BOOL LOC38;
				NU8 tdef;
				LOC38 = 0;
				LOC38 = hastype;
				if (LOC38) goto LA39;
				LOC38 = hasdefault;
				LA39: ;
				if (!!(LOC38)) goto LA40;
				{
					if (!((393216 &(1<<((kind)&31)))!=0)) goto LA44;
					tdef = ((NU8) 6);
				}
				goto LA42;
				LA44: ;
				{
					tdef = ((NU8) 58);
				}
				LA42: ;
				typ = newtypes_250180(tdef, c);
			}
			LA40: ;
			{
				ttype188837* LOC49;
				LOC49 = 0;
				LOC49 = skiptypes_192793(typ, 2048);
				if (!((*LOC49).Kind == ((NU8) 3))) goto LA50;
				goto LA11;
			}
			LA50: ;
			j_427831 = 0;
			HEX3Atmp_428220 = 0;
			HEX3Atmp_428220 = (NI32)(length - 3);
			res_428222 = 0;
			while (1) {
				tsym188833* arg;
				ttype188837* lifted;
				ttype188837* finaltype;
				tnode188803* LOC69;
				if (!(res_428222 <= HEX3Atmp_428220)) goto LA52;
				j_427831 = res_428222;
				arg = newsymg_416512(((NU8) 3), (*a).kindU.S6.Sons->data[j_427831], c);
				lifted = liftparamtype_426785(c, kind, genericparams, typ, (*(*arg).Name).S, (*arg).Info, NIM_FALSE);
				{
					if (!!((lifted == NIM_NIL))) goto LA55;
					finaltype = lifted;
				}
				goto LA53;
				LA55: ;
				{
					finaltype = skipintlit_242424(typ);
				}
				LA53: ;
				asgnRefNoCycle((void**) &(*arg).Typ, finaltype);
				(*arg).Position = counter;
				asgnRefNoCycle((void**) &(*arg).Constraint, constraint);
				counter += 1;
				{
					NIM_BOOL LOC60;
					LOC60 = 0;
					LOC60 = !((def == NIM_NIL));
					if (!(LOC60)) goto LA61;
					LOC60 = !(((*def).Kind == ((NU8) 1)));
					LA61: ;
					if (!LOC60) goto LA62;
					asgnRefNoCycle((void**) &(*arg).Ast, copytree_189237(def));
				}
				LA62: ;
				{
					NIM_BOOL LOC66;
					LOC66 = 0;
					LOC66 = containsorincl_185888(&check, (*(*arg).Name).Sup.Id);
					if (!LOC66) goto LA67;
					localerror_165571((*(*a).kindU.S6.Sons->data[j_427831]).Info, ((NU16) 40), (*(*arg).Name).S);
				}
				LA67: ;
				LOC69 = 0;
				LOC69 = newsymnode_189095(arg);
				addson_189207((*result).N, LOC69);
				rawaddson_193092(result, finaltype);
				addparamorresult_418960(c, arg, kind);
				{
					if (!(gcmd_137113 == ((NU8) 7))) goto LA72;
					checkdef_355603((*a).kindU.S6.Sons->data[j_427831], arg);
				}
				LA72: ;
				res_428222 += 1;
			} LA52: ;
		} LA11: ;
		res_428226 += 1;
	} LA10: ;
	r = 0;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA76;
		r = semtypenode_416055(c, (*n).kindU.S6.Sons->data[0], NIM_NIL);
	}
	goto LA74;
	LA76: ;
	{
		if (!(kind == ((NU8) 14))) goto LA79;
		r = newtypes_250180(((NU8) 58), c);
	}
	goto LA74;
	LA79: ;
	LA74: ;
	{
		if (!!((r == NIM_NIL))) goto LA83;
		{
			ttype188837* LOC87;
			LOC87 = 0;
			LOC87 = skiptypes_192793(r, 2048);
			if (!!(((*LOC87).Kind == ((NU8) 3)))) goto LA88;
			{
				NIM_BOOL LOC92;
				ttype188837* lifted;
				LOC92 = 0;
				LOC92 = ((*r).Sym == NIM_NIL);
				if (LOC92) goto LA93;
				LOC92 = !((((*(*r).Sym).Flags &(1<<((((NU8) 29))&31)))!=0));
				LA93: ;
				if (!LOC92) goto LA94;
				lifted = liftparamtype_426785(c, kind, genericparams, r, ((NimStringDesc*) &TMP2698), (*(*n).kindU.S6.Sons->data[0]).Info, NIM_FALSE);
				{
					if (!!((lifted == NIM_NIL))) goto LA98;
					r = lifted;
				}
				LA98: ;
				(*r).Flags |=((NI32)(1)<<((((NU8) 10))%(sizeof(NI32)*8)));
			}
			LA94: ;
			r = skipintlit_242424(r);
			{
				if (!(kind == ((NU8) 14))) goto LA102;
				{
					NIM_BOOL LOC106;
					ttypeseq188835* LOC109;
					TY350968 LOC110;
					LOC106 = 0;
					LOC106 = isinlineiterator_350834(r);
					if (!!(LOC106)) goto LA107;
					LOC109 = 0;
					LOC109 = (ttypeseq188835*) newSeq((&NTI188835), 1);
					memset((void*)LOC110, 0, sizeof(LOC110));
					LOC110[0] = r;
					asgnRefNoCycle((void**) &LOC109->data[0], LOC110[0]);
					r = newtypewithsons_250675(c, ((NU8) 49), LOC109);
				}
				LA107: ;
			}
			LA102: ;
			asgnRefNoCycle((void**) &(*result).Sons->data[0], r);
			asgnRefNoCycle((void**) &(*res).Typ, r);
		}
		LA88: ;
	}
	LA83: ;
	{
		tnode188803* n_428142;
		NI i_428230;
		NI HEX3Atmp_428232;
		NI LOC115;
		NI res_428234;
		if (!!((genericparams == NIM_NIL))) goto LA113;
		n_428142 = 0;
		i_428230 = 0;
		HEX3Atmp_428232 = 0;
		LOC115 = 0;
		LOC115 = len_189264(genericparams);
		HEX3Atmp_428232 = LOC115 - 1;
		res_428234 = 0;
		while (1) {
			if (!(res_428234 <= HEX3Atmp_428232)) goto LA116;
			i_428230 = res_428234;
			n_428142 = (*genericparams).kindU.S6.Sons->data[i_428230];
			{
				if (!(((*(*(*n_428142).kindU.S4.Sym).Typ).Flags &(1<<((((NU8) 25))&31)))!=0)) goto LA119;
				(*(*n_428142).kindU.S4.Sym).Kind = ((NU8) 7);
				(*(*(*n_428142).kindU.S4.Sym).Typ).Flags &= ~((NI32)(1) << ((((NU8) 25)) % (sizeof(NI32)*8)));
			}
			LA119: ;
			res_428234 += 1;
		} LA116: ;
	}
	LA113: ;
	return result;
}

N_NIMCALL(void, semparamlist_416066)(tcontext250019* c, tnode188803* n, tnode188803* genericparams, tsym188833* s) {
	asgnRefNoCycle((void**) &(*s).Typ, semproctypenode_427613(c, n, genericparams, NIM_NIL, (*s).Kind));
	{
		if (!!(((393216 &(1<<(((*s).Kind)&31)))!=0))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = !(((*(*s).Typ).Sons->data[0] == NIM_NIL));
			if (!(LOC7)) goto LA8;
			LOC7 = ((*(*(*s).Typ).Sons->data[0]).Kind == ((NU8) 7));
			LA8: ;
			if (!LOC7) goto LA9;
			localerror_165571((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP2854));
		}
		LA9: ;
	}
	LA3: ;
}

N_NIMCALL(tnode188803*, newparam_433847)(templctx430596* c, tnode188803* n, tsym188833* s) {
	tnode188803* result;
	tsym188833* x;
	result = 0;
	(*s).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
	x = (*(*(*(*(*c).Owner).Typ).N).kindU.S6.Sons->data[(NI32)((*s).Position + 1)]).kindU.S4.Sym;
	result = newsymnode_190723(x, (*n).Info);
	return result;
}

N_NIMCALL(tnode188803*, handlesym_434002)(templctx430596* c, tnode188803* n, tsym188833* s) {
	tnode188803* 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_433847(c, n, s);
		}
		goto LA5;
		LA9: ;
		{
			NIM_BOOL LOC12;
			LOC12 = 0;
			LOC12 = contains_185821((*c).Tobind, (*s).Sup.Id);
			if (!LOC12) goto LA13;
			result = symchoice_430291((*c).C, n, s, ((NU8) 0));
		}
		goto LA5;
		LA13: ;
		{
			NIM_BOOL LOC16;
			NIM_BOOL LOC18;
			NI LOC19;
			tnode188803* LOC23;
			LOC16 = 0;
			LOC16 = ((*s).Kind == ((NU8) 18));
			if (!(LOC16)) goto LA17;
			LOC18 = 0;
			LOC19 = 0;
			LOC19 = len_192569((*s).Typ);
			LOC18 = (LOC19 == 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_416648((*c).C, n, s, 256);
			result = sempatternbody_433833(c, LOC23);
		}
		goto LA5;
		LA21: ;
		{
		}
		LA5: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(tnode188803*, sembindstmt_430396)(tcontext250019* c, tnode188803* n, tintset185047* tobind) {
	tnode188803* result;
	NI i_430424;
	NI HEX3Atmp_430503;
	NI LOC1;
	NI res_430505;
	result = 0;
	i_430424 = 0;
	HEX3Atmp_430503 = 0;
	LOC1 = 0;
	LOC1 = len_189264(n);
	HEX3Atmp_430503 = LOC1 - 1;
	res_430505 = 0;
	while (1) {
		tnode188803* a;
		tsym188833* s;
		if (!(res_430505 <= HEX3Atmp_430503)) goto LA2;
		i_430424 = res_430505;
		a = (*n).kindU.S6.Sons->data[i_430424];
		s = qualifiedlookup_252806(c, a, 2);
		{
			tnode188803* sc;
			if (!!((s == NIM_NIL))) goto LA5;
			sc = symchoice_430291(c, n, s, ((NU8) 0));
			{
				if (!((*sc).Kind == ((NU8) 3))) goto LA9;
				incl_185849(tobind, (*(*sc).kindU.S4.Sym).Sup.Id);
			}
			goto LA7;
			LA9: ;
			{
				tnode188803* x_430482;
				NI i_430498;
				NI HEX3Atmp_430500;
				NI LOC12;
				NI res_430502;
				x_430482 = 0;
				i_430498 = 0;
				HEX3Atmp_430500 = 0;
				LOC12 = 0;
				LOC12 = len_189264(sc);
				HEX3Atmp_430500 = LOC12 - 1;
				res_430502 = 0;
				while (1) {
					if (!(res_430502 <= HEX3Atmp_430500)) goto LA13;
					i_430498 = res_430502;
					x_430482 = (*sc).kindU.S6.Sons->data[i_430498];
					incl_185849(tobind, (*(*x_430482).kindU.S4.Sym).Sup.Id);
					res_430502 += 1;
				} LA13: ;
			}
			LA7: ;
		}
		goto LA3;
		LA5: ;
		{
			illformedast_251203(a);
		}
		LA3: ;
		res_430505 += 1;
	} LA2: ;
	result = newnodei_189099(((NU8) 1), (*n).Info);
	return result;
}

N_NIMCALL(tnode188803*, expectparam_434075)(templctx430596* c, tnode188803* n) {
	tnode188803* result;
	tsym188833* s;
	result = 0;
	s = qualifiedlookup_252806((*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_433847(c, n, s);
	}
	goto LA1;
	LA7: ;
	{
		localerror_165571((*n).Info, ((NU16) 167), ((NimStringDesc*) &TMP2675));
		result = n;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, sempatternbody_433833)(templctx430596* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	switch ((*n).Kind) {
	case ((NU8) 2):
	{
		tsym188833* s;
		s = qualifiedlookup_252806((*c).C, n, 0);
		result = handlesym_434002(c, n, s);
	}
	break;
	case ((NU8) 121):
	{
		result = sembindstmt_430396((*c).C, n, &(*c).Tobind);
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 40):
	{
		{
			NI LOC7;
			LOC7 = 0;
			LOC7 = len_189264(n);
			if (!!((LOC7 == 2))) goto LA8;
			localerror_165571((*n).Info, ((NU16) 167), ((NimStringDesc*) &TMP2675));
		}
		goto LA5;
		LA8: ;
		{
			if (!((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 2))) goto LA11;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], sempatternbody_433833(c, (*n).kindU.S6.Sons->data[0]));
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], expectparam_434075(c, (*n).kindU.S6.Sons->data[1]));
		}
		goto LA5;
		LA11: ;
		{
			NIM_BOOL LOC14;
			tnode188803* opr;
			LOC14 = 0;
			LOC14 = ((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 30));
			if (!(LOC14)) goto LA15;
			LOC14 = ((*(*(*n).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[0]).Kind == ((NU8) 2));
			LA15: ;
			if (!LOC14) goto LA16;
			opr = (*(*n).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[0];
			{
				if (!eqStrings((*(*opr).kindU.S5.Ident).S, ((NimStringDesc*) &TMP2677))) goto LA20;
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], sempatternbody_433833(c, (*n).kindU.S6.Sons->data[0]));
				asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[1], expectparam_434075(c, (*(*n).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[1]));
			}
			goto LA18;
			LA20: ;
			{
				localerror_165571((*n).Info, ((NU16) 167), ((NimStringDesc*) &TMP2675));
			}
			LA18: ;
		}
		goto LA5;
		LA16: ;
		{
			localerror_165571((*n).Info, ((NU16) 167), ((NimStringDesc*) &TMP2675));
		}
		LA5: ;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	case ((NU8) 32):
	{
		tsym188833* s;
		NI i_434823;
		NI HEX3Atmp_434927;
		NI LOC76;
		NI res_434929;
		s = qualifiedlookup_252806((*c).C, (*n).kindU.S6.Sons->data[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_185821((*c).Tobind, (*s).Sup.Id);
				if (!LOC36) goto LA37;
			}
			goto LA29;
			LA37: ;
			{
				NIM_BOOL LOC40;
				NIM_BOOL LOC42;
				NI LOC43;
				tnode188803* LOC47;
				LOC40 = 0;
				LOC40 = ((*s).Kind == ((NU8) 18));
				if (!(LOC40)) goto LA41;
				LOC42 = 0;
				LOC43 = 0;
				LOC43 = len_192569((*s).Typ);
				LOC42 = (LOC43 == 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_416648((*c).C, n, s, 256);
				result = sempatternbody_433833(c, LOC47);
				goto BeforeRet;
			}
			goto LA29;
			LA45: ;
			LA29: ;
		}
		LA27: ;
		{
			NIM_BOOL LOC50;
			tnode188803* opr;
			LOC50 = 0;
			LOC50 = ((*n).Kind == ((NU8) 29));
			if (!(LOC50)) goto LA51;
			LOC50 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 2));
			LA51: ;
			if (!LOC50) goto LA52;
			opr = (*n).kindU.S6.Sons->data[0];
			{
				NIM_BOOL LOC56;
				NI LOC60;
				LOC56 = 0;
				LOC56 = eqStrings((*(*opr).kindU.S5.Ident).S, ((NimStringDesc*) &TMP2855));
				if (LOC56) goto LA57;
				LOC56 = eqStrings((*(*opr).kindU.S5.Ident).S, ((NimStringDesc*) &TMP2856));
				LA57: ;
				if (!LOC56) goto LA58;
				LOC60 = 0;
				LOC60 = len_189264(n);
				result = newnodei_190803(((NU8) 151), (*n).Info, LOC60);
				asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], opr);
				asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[1], sempatternbody_433833(c, (*n).kindU.S6.Sons->data[1]));
				asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[2], expectparam_434075(c, (*n).kindU.S6.Sons->data[2]));
				goto BeforeRet;
			}
			goto LA54;
			LA58: ;
			{
				NI LOC64;
				if (!eqStrings((*(*opr).kindU.S5.Ident).S, ((NimStringDesc*) &TMP2677))) goto LA62;
				LOC64 = 0;
				LOC64 = len_189264(n);
				result = newnodei_190803(((NU8) 151), (*n).Info, LOC64);
				asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], opr);
				asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[1], sempatternbody_433833(c, (*n).kindU.S6.Sons->data[1]));
				asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[2], sempatternbody_433833(c, (*n).kindU.S6.Sons->data[2]));
				goto BeforeRet;
			}
			goto LA54;
			LA62: ;
			LA54: ;
		}
		LA52: ;
		{
			NIM_BOOL LOC67;
			tnode188803* opr;
			LOC67 = 0;
			LOC67 = ((*n).Kind == ((NU8) 30));
			if (!(LOC67)) goto LA68;
			LOC67 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 2));
			LA68: ;
			if (!LOC67) goto LA69;
			opr = (*n).kindU.S6.Sons->data[0];
			{
				NI LOC75;
				if (!eqStrings((*(*opr).kindU.S5.Ident).S, ((NimStringDesc*) &TMP2857))) goto LA73;
				LOC75 = 0;
				LOC75 = len_189264(n);
				result = newnodei_190803(((NU8) 151), (*n).Info, LOC75);
				asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], opr);
				asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[1], sempatternbody_433833(c, (*n).kindU.S6.Sons->data[1]));
				goto BeforeRet;
			}
			LA73: ;
		}
		LA69: ;
		i_434823 = 0;
		HEX3Atmp_434927 = 0;
		LOC76 = 0;
		LOC76 = sonslen_189181(n);
		HEX3Atmp_434927 = (NI32)(LOC76 - 1);
		res_434929 = 0;
		while (1) {
			if (!(res_434929 <= HEX3Atmp_434927)) goto LA77;
			i_434823 = res_434929;
			asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_434823], sempatternbody_433833(c, (*n).kindU.S6.Sons->data[i_434823]));
			res_434929 += 1;
		} LA77: ;
	}
	break;
	default:
	{
		NI i_434898;
		NI HEX3Atmp_434931;
		NI LOC97;
		NI res_434933;
		switch ((*n).Kind) {
		case ((NU8) 45):
		case ((NU8) 53):
		{
			tsym188833* s;
			s = qualifiedlookup_252806((*c).C, n, 0);
			{
				if (!!((s == NIM_NIL))) goto LA82;
				{
					NIM_BOOL LOC86;
					LOC86 = 0;
					LOC86 = contains_185821((*c).Tobind, (*s).Sup.Id);
					if (!LOC86) goto LA87;
					result = symchoice_430291((*c).C, n, s, ((NU8) 0));
					goto BeforeRet;
				}
				goto LA84;
				LA87: ;
				{
					result = newidentnode_189090((*s).Name, (*n).Info);
					goto BeforeRet;
				}
				LA84: ;
			}
			LA82: ;
		}
		break;
		case ((NU8) 37):
		{
			{
				NI LOC93;
				LOC93 = 0;
				LOC93 = len_189264(n);
				if (!(LOC93 == 1)) goto LA94;
				result = sempatternbody_433833(c, (*n).kindU.S6.Sons->data[0]);
				goto BeforeRet;
			}
			LA94: ;
		}
		break;
		default:
		{
		}
		break;
		}
		i_434898 = 0;
		HEX3Atmp_434931 = 0;
		LOC97 = 0;
		LOC97 = sonslen_189181(n);
		HEX3Atmp_434931 = (NI32)(LOC97 - 1);
		res_434933 = 0;
		while (1) {
			if (!(res_434933 <= HEX3Atmp_434931)) goto LA98;
			i_434898 = res_434933;
			asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_434898], sempatternbody_433833(c, (*n).kindU.S6.Sons->data[i_434898]));
			res_434933 += 1;
		} LA98: ;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, sempattern_431521)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tscope188827* LOC1;
	templctx430596 ctx;
	tnode188803* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	memset((void*)&ctx, 0, sizeof(ctx));
	initintset_185918(&ctx.Tobind);
	initintset_185918(&ctx.Tomixin);
	initintset_185918(&ctx.Toinject);
	ctx.C = c;
	ctx.Owner = getcurrowner_250215();
	LOC2 = 0;
	LOC2 = sempatternbody_433833(&ctx, n);
	result = flattenstmts_222251(LOC2);
	{
		if (!((*result).Kind == ((NU8) 114) || (*result).Kind == ((NU8) 125))) goto LA5;
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_189264(result);
			if (!(LOC9 == 1)) goto LA10;
			result = (*result).kindU.S6.Sons->data[0];
		}
		goto LA7;
		LA10: ;
		{
			NI LOC13;
			LOC13 = 0;
			LOC13 = len_189264(result);
			if (!(LOC13 == 0)) goto LA14;
			localerror_165571((*n).Info, ((NU16) 167), ((NimStringDesc*) &TMP2675));
		}
		goto LA7;
		LA14: ;
		LA7: ;
	}
	LA5: ;
	closescope_252179(c);
	return result;
}

N_NIMCALL(void, addgenericparamlisttoscope_444632)(tcontext250019* c, tnode188803* n) {
	NI i_444657;
	NI HEX3Atmp_444696;
	NI LOC5;
	NI res_444698;
	{
		if (!!(((*n).Kind == ((NU8) 75)))) goto LA3;
		illformedast_251203(n);
	}
	LA3: ;
	i_444657 = 0;
	HEX3Atmp_444696 = 0;
	LOC5 = 0;
	LOC5 = sonslen_189181(n);
	HEX3Atmp_444696 = (NI32)(LOC5 - 1);
	res_444698 = 0;
	while (1) {
		tnode188803* a;
		if (!(res_444698 <= HEX3Atmp_444696)) goto LA6;
		i_444657 = res_444698;
		a = (*n).kindU.S6.Sons->data[i_444657];
		{
			if (!((*a).Kind == ((NU8) 3))) goto LA9;
			adddecl_252550(c, (*a).kindU.S4.Sym);
		}
		goto LA7;
		LA9: ;
		{
			illformedast_251203(a);
		}
		LA7: ;
		res_444698 += 1;
	} LA6: ;
}

N_NIMCALL(void, addparams_416073)(tcontext250019* c, tnode188803* n, NU8 kind) {
	NI i_445774;
	NI HEX3Atmp_445826;
	NI LOC1;
	NI res_445828;
	i_445774 = 0;
	HEX3Atmp_445826 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_445826 = (NI32)(LOC1 - 1);
	res_445828 = 1;
	while (1) {
		if (!(res_445828 <= HEX3Atmp_445826)) goto LA2;
		i_445774 = res_445828;
		{
			if (!((*(*n).kindU.S6.Sons->data[i_445774]).Kind == ((NU8) 3))) goto LA5;
			addparamorresult_418960(c, (*(*n).kindU.S6.Sons->data[i_445774]).kindU.S4.Sym, kind);
		}
		goto LA3;
		LA5: ;
		{
			illformedast_251203(n);
		}
		LA3: ;
		res_445828 += 1;
	} LA2: ;
}

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

static N_INLINE(NI, find_439003)(tsym188833** a_439008, NI a_439008Len0, tsym188833* item_439010) {
	NI result;
	tsym188833* i_439050;
	NI i_439084;
	result = 0;
	i_439050 = 0;
	i_439084 = 0;
	while (1) {
		if (!(i_439084 < a_439008Len0)) goto LA1;
		i_439050 = a_439008[i_439084];
		{
			if (!(i_439050 == item_439010)) goto LA4;
			goto BeforeRet;
		}
		LA4: ;
		result += 1;
		i_439084 += 1;
	} LA1: ;
	result = -1;
	BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, contains_438991)(tsym188833** a_438997, NI a_438997Len0, tsym188833* item_439000) {
	NIM_BOOL result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = find_439003(a_438997, a_438997Len0, item_439000);
	result = (0 <= LOC1);
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

static N_INLINE(tslice78892, HEX2EHEX2E_86221)(NI a_86225, NI b_86227) {
	tslice78892 result;
	memset((void*)&result, 0, sizeof(result));
	result.A = a_86225;
	result.B = b_86227;
	return result;
}

N_NIMCALL(tnode188803*, destroycase_438484)(tcontext250019* c, tnode188803* n, tnode188803* holder) {
	tnode188803* result;
	NI nontrivialfields;
	tnodeseq188797* LOC1;
	tnodeseq188797* LOC2;
	TY251116 LOC3;
	tnode188803* LOC4;
	NI i_438555;
	NI HEX3Atmp_438717;
	NI LOC5;
	NI res_438719;
	result = 0;
	nontrivialfields = 0;
	LOC1 = 0;
	LOC1 = (tnodeseq188797*) newSeq((&NTI188797), 0);
	result = newnode_191003(((NU8) 97), (*n).Info, LOC1, NIM_NIL);
	LOC2 = 0;
	LOC2 = (tnodeseq188797*) newSeq((&NTI188797), 2);
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = holder;
	LOC3[1] = (*n).kindU.S6.Sons->data[0];
	asgnRefNoCycle((void**) &LOC2->data[0], LOC3[0]);
	asgnRefNoCycle((void**) &LOC2->data[1], LOC3[1]);
	LOC4 = 0;
	LOC4 = newnode_191003(((NU8) 45), (*n).Info, LOC2, NIM_NIL);
	addson_189207(result, LOC4);
	i_438555 = 0;
	HEX3Atmp_438717 = 0;
	LOC5 = 0;
	LOC5 = len_189264(n);
	HEX3Atmp_438717 = (NI32)(LOC5 - 1);
	res_438719 = 1;
	while (1) {
		tnode188803* casebranch;
		tnode188803* LOC7;
		tnode188803* LOC8;
		tnode188803* LOC9;
		tslice78892 LOC10;
		tnodeseq188797* LOC11;
		tnode188803* stmt;
		tnode188803* LOC12;
		tnode188803* LOC13;
		if (!(res_438719 <= HEX3Atmp_438717)) goto LA6;
		i_438555 = res_438719;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_189694(n, i_438555);
		LOC8 = 0;
		LOC8 = HEX5BHEX5D_189694(n, i_438555);
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_189694(n, i_438555);
		LOC10 = HEX2EHEX2E_86221(0, -2);
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_438583((*LOC9).kindU.S6.Sons, LOC10);
		casebranch = newnode_191003((*LOC7).Kind, (*LOC8).Info, LOC11, NIM_NIL);
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_189694(n, i_438555);
		LOC13 = 0;
		LOC13 = lastson_189189(LOC12);
		stmt = destroyfieldorfields_438418(c, LOC13, holder);
		{
			tnode188803* LOC18;
			tnodeseq188797* LOC19;
			tnode188803* LOC20;
			if (!(stmt == NIM_NIL)) goto LA16;
			LOC18 = 0;
			LOC18 = HEX5BHEX5D_189694(n, i_438555);
			LOC19 = 0;
			LOC19 = (tnodeseq188797*) newSeq((&NTI188797), 0);
			LOC20 = 0;
			LOC20 = newnode_191003(((NU8) 114), (*LOC18).Info, LOC19, NIM_NIL);
			addson_189207(casebranch, LOC20);
		}
		goto LA14;
		LA16: ;
		{
			NI LOC22;
			addson_189207(casebranch, stmt);
			LOC22 = 0;
			LOC22 = len_189264(stmt);
			nontrivialfields += LOC22;
		}
		LA14: ;
		addson_189207(result, casebranch);
		res_438719 += 1;
	} LA6: ;
	{
		if (!(nontrivialfields == 0)) goto LA25;
		result = NIM_NIL;
	}
	LA25: ;
	return result;
}

N_NIMCALL(tnode188803*, destroysym_438423)(tcontext250019* c, tsym188833* field, tnode188803* holder) {
	tnode188803* result;
	ttype188837* destructablet;
	result = 0;
	destructablet = instantiatedestructor_438219(c, (*field).Typ);
	{
		tnodeseq188797* LOC5;
		TY251116 LOC6;
		tnodeseq188797* LOC7;
		TY251116 LOC8;
		if (!!((destructablet == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = (tnodeseq188797*) newSeq((&NTI188797), 2);
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = usesym_362981((*destructablet).Destructor);
		LOC7 = 0;
		LOC7 = (tnodeseq188797*) newSeq((&NTI188797), 2);
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = holder;
		LOC8[1] = usesym_362981(field);
		asgnRefNoCycle((void**) &LOC7->data[0], LOC8[0]);
		asgnRefNoCycle((void**) &LOC7->data[1], LOC8[1]);
		LOC6[1] = newnode_191003(((NU8) 45), (*field).Info, LOC7, NIM_NIL);
		asgnRefNoCycle((void**) &LOC5->data[0], LOC6[0]);
		asgnRefNoCycle((void**) &LOC5->data[1], LOC6[1]);
		result = newnode_191003(((NU8) 27), (*field).Info, LOC5, NIM_NIL);
	}
	LA3: ;
	return result;
}

N_NIMCALL(tnode188803*, destroyfieldorfields_438418)(tcontext250019* c, tnode188803* field, tnode188803* holder) {
	tnode188803* result;
	result = 0;
	switch ((*field).Kind) {
	case ((NU8) 137):
	{
		tnode188803* stmt_438736;
		stmt_438736 = destroycase_438484(c, field, holder);
		{
			if (!!((stmt_438736 == NIM_NIL))) goto LA4;
			{
				if (!(result == NIM_NIL)) goto LA8;
				result = newnode_189065(((NU8) 114));
			}
			LA8: ;
			addson_189207(result, stmt_438736);
		}
		LA4: ;
	}
	break;
	case ((NU8) 3):
	{
		tnode188803* stmt_438772;
		stmt_438772 = destroysym_438423(c, (*field).kindU.S4.Sym, holder);
		{
			if (!!((stmt_438772 == NIM_NIL))) goto LA13;
			{
				if (!(result == NIM_NIL)) goto LA17;
				result = newnode_189065(((NU8) 114));
			}
			LA17: ;
			addson_189207(result, stmt_438772);
		}
		LA13: ;
	}
	break;
	case ((NU8) 136):
	{
		tnode188803* son_438821;
		NI i_438866;
		NI HEX3Atmp_438868;
		NI LOC20;
		NI res_438870;
		son_438821 = 0;
		i_438866 = 0;
		HEX3Atmp_438868 = 0;
		LOC20 = 0;
		LOC20 = len_189264(field);
		HEX3Atmp_438868 = LOC20 - 1;
		res_438870 = 0;
		while (1) {
			tnode188803* stmt_438823;
			if (!(res_438870 <= HEX3Atmp_438868)) goto LA21;
			i_438866 = res_438870;
			son_438821 = (*field).kindU.S6.Sons->data[i_438866];
			stmt_438823 = destroyfieldorfields_438418(c, son_438821, holder);
			{
				if (!!((stmt_438823 == NIM_NIL))) goto LA24;
				{
					if (!(result == NIM_NIL)) goto LA28;
					result = newnode_189065(((NU8) 114));
				}
				LA28: ;
				addson_189207(result, stmt_438823);
			}
			LA24: ;
			res_438870 += 1;
		} LA21: ;
	}
	break;
	default:
	{
		{
			NimStringDesc* LOC35;
			if (!NIM_TRUE) goto LA33;
			LOC35 = 0;
			LOC35 = HEX24_165714(TMP2863);
			internalerror_165606(LOC35);
		}
		LA33: ;
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, generatedestructor_438873)(tcontext250019* c, ttype188837* t) {
	tnode188803* result;
	tnode188803* destructedobj;
	tlineinfo163527 LOC12;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*t).N == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = HEX3DHEX3D_272164((*(*t).N).kindU.S6.Sons, NIM_NIL);
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	{
		NimStringDesc* LOC11;
		if (!!(((*(*t).N).Kind == ((NU8) 136)))) goto LA9;
		LOC11 = 0;
		LOC11 = HEX24_165714(TMP2861);
		internalerror_165606(LOC11);
	}
	LA9: ;
	LOC12 = unknownlineinfo_164203();
	destructedobj = newidentnode_189090(destructorparam_438216, LOC12);
	result = destroyfieldorfields_438418(c, (*t).N, destructedobj);
	BeforeRet: ;
	return result;
}

N_NIMCALL(tsym188833*, symfromtype_416667)(ttype188837* t, tlineinfo163527 info) {
	tsym188833* result;
	tident167019* LOC5;
	result = 0;
	{
		if (!!(((*t).Sym == NIM_NIL))) goto LA3;
		result = (*t).Sym;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getident_167456(((NimStringDesc*) &TMP2865));
	result = newsym_189053(((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(tnode188803*, symnodefromtype_416707)(tcontext250019* c, ttype188837* t, tlineinfo163527 info) {
	tnode188803* result;
	tsym188833* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = symfromtype_416667(t, info);
	result = newsymnode_190723(LOC1, info);
	asgnRefNoCycle((void**) &(*result).Typ, maketypedesc_250627(c, t));
	return result;
}

N_NIMCALL(tnode188803*, semproc_438177)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = semprocaux_446878(c, n, ((NU8) 12), TMP2866, ((NU8) 0));
	return result;
}

N_NIMCALL(ttype188837*, instantiatedestructor_438219)(tcontext250019* c, ttype188837* typ) {
	ttype188837* result;
	ttype188837* t;
	ttype188837* LOC1;
	ttype188837* typeholdinguserdefinition;
	result = 0;
	LOC1 = 0;
	LOC1 = skiptypes_192793(typ, IL64(211106232532992));
	t = skipgenericalias_229506(LOC1);
	{
		if (!((*t).Kind == ((NU8) 11))) goto LA4;
		typeholdinguserdefinition = base_223029(t);
	}
	goto LA2;
	LA4: ;
	{
		typeholdinguserdefinition = t;
	}
	LA2: ;
	{
		if (!!(((*typeholdinguserdefinition).Destructor == NIM_NIL))) goto LA9;
		{
			TY439088 LOC13;
			NIM_BOOL LOC14;
			memset((void*)LOC13, 0, sizeof(LOC13));
			LOC13[0] = analyzingdestructor_438181;
			LOC13[1] = destructoristrivial_438182;
			LOC14 = 0;
			LOC14 = contains_438991(LOC13, 2, (*typeholdinguserdefinition).Destructor);
			if (!!(LOC14)) goto LA15;
			result = typeholdinguserdefinition;
			goto BeforeRet;
		}
		goto LA11;
		LA15: ;
		{
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA11: ;
	}
	LA9: ;
	t = skiptypes_192793(t, 2048);
	switch ((*t).Kind) {
	case ((NU8) 24):
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			ttype188837* LOC21;
			LOC21 = 0;
			LOC21 = instantiatedestructor_438219(c, (*t).Sons->data[0]);
			if (!!((LOC21 == NIM_NIL))) goto LA22;
			{
				tident167019* LOC28;
				if (!(rangedestructorproc_438218 == NIM_NIL)) goto LA26;
				LOC28 = 0;
				LOC28 = getident_167456(((NimStringDesc*) &TMP2860));
				asgnRefNoCycle((void**) &rangedestructorproc_438218, searchinscopes_252216(c, LOC28));
			}
			LA26: ;
			asgnRefNoCycle((void**) &(*t).Destructor, rangedestructorproc_438218);
			result = t;
			goto BeforeRet;
		}
		goto LA19;
		LA22: ;
		{
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA19: ;
	}
	break;
	case ((NU8) 18):
	case ((NU8) 17):
	{
		tnode188803* generated;
		asgnRefNoCycle((void**) &(*t).Destructor, analyzingdestructor_438181);
		generated = generatedestructor_438873(c, t);
		{
			tlineinfo163527 i;
			tnode188803* fulldef;
			tnodeseq188797* LOC40;
			TY191256 LOC41;
			tnodeseq188797* LOC42;
			TY251116 LOC43;
			tnodeseq188797* LOC44;
			TY457200 LOC45;
			ttype188837* LOC46;
			tnodeseq188797* LOC47;
			TY207692 LOC48;
			tnode188803* semantizeddef;
			tnode188803* LOC49;
			if (!!((generated == NIM_NIL))) goto LA33;
			{
				NimStringDesc* LOC39;
				if (!!(!(((*t).Sym == NIM_NIL)))) goto LA37;
				LOC39 = 0;
				LOC39 = HEX24_165714(TMP2864);
				internalerror_165606(LOC39);
			}
			LA37: ;
			i = (*(*t).Sym).Info;
			LOC40 = 0;
			LOC40 = (tnodeseq188797*) newSeq((&NTI188797), 7);
			memset((void*)LOC41, 0, sizeof(LOC41));
			LOC41[0] = newidentnode_189090(destructorname_438215, i);
			LOC41[1] = emptynode_189727;
			LOC41[2] = emptynode_189727;
			LOC42 = 0;
			LOC42 = (tnodeseq188797*) newSeq((&NTI188797), 2);
			memset((void*)LOC43, 0, sizeof(LOC43));
			LOC43[0] = emptynode_189727;
			LOC44 = 0;
			LOC44 = (tnodeseq188797*) newSeq((&NTI188797), 3);
			memset((void*)LOC45, 0, sizeof(LOC45));
			LOC45[0] = newidentnode_189090(destructorparam_438216, i);
			LOC46 = 0;
			LOC46 = makevartype_250175(c, t);
			LOC45[1] = symnodefromtype_416707(c, LOC46, (*(*t).Sym).Info);
			LOC45[2] = emptynode_189727;
			asgnRefNoCycle((void**) &LOC44->data[0], LOC45[0]);
			asgnRefNoCycle((void**) &LOC44->data[1], LOC45[1]);
			asgnRefNoCycle((void**) &LOC44->data[2], LOC45[2]);
			LOC43[1] = newnode_191003(((NU8) 35), i, LOC44, NIM_NIL);
			asgnRefNoCycle((void**) &LOC42->data[0], LOC43[0]);
			asgnRefNoCycle((void**) &LOC42->data[1], LOC43[1]);
			LOC41[3] = newnode_191003(((NU8) 76), i, LOC42, NIM_NIL);
			LOC47 = 0;
			LOC47 = (tnodeseq188797*) newSeq((&NTI188797), 1);
			memset((void*)LOC48, 0, sizeof(LOC48));
			LOC48[0] = destructorpragma_438217;
			asgnRefNoCycle((void**) &LOC47->data[0], LOC48[0]);
			LOC41[4] = newnode_191003(((NU8) 90), i, LOC47, NIM_NIL);
			LOC41[5] = emptynode_189727;
			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_191003(((NU8) 79), i, LOC40, NIM_NIL);
			semantizeddef = semproc_438177(c, fulldef);
			LOC49 = 0;
			LOC49 = HEX5BHEX5D_189694(semantizeddef, 0);
			asgnRefNoCycle((void**) &(*t).Destructor, (*LOC49).kindU.S4.Sym);
			result = t;
			goto BeforeRet;
		}
		goto LA31;
		LA33: ;
		{
			asgnRefNoCycle((void**) &(*t).Destructor, destructoristrivial_438182);
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA31: ;
	}
	break;
	default:
	{
		result = NIM_NIL;
		goto BeforeRet;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, dodestructorstuff_438223)(tcontext250019* c, tsym188833* s, tnode188803* n) {
	ttype188837* t;
	t = skiptypes_192793((*(*s).Typ).Sons->data[1], 8388608);
	{
		NI i_438260;
		NI HEX3Atmp_438405;
		NI LOC5;
		NI res_438407;
		if (!((*t).Kind == ((NU8) 9))) goto LA3;
		i_438260 = 0;
		HEX3Atmp_438405 = 0;
		LOC5 = 0;
		LOC5 = sonslen_189185(t);
		HEX3Atmp_438405 = LOC5 - 1;
		res_438407 = 1;
		while (1) {
			if (!(res_438407 <= HEX3Atmp_438405)) goto LA6;
			i_438260 = res_438407;
			{
				if (!!(((*(*t).Sons->data[i_438260]).Kind == ((NU8) 12)))) goto LA9;
				localerror_165571((*n).Info, ((NU16) 202), ((NimStringDesc*) &TMP2675));
				goto BeforeRet;
			}
			LA9: ;
			res_438407 += 1;
		} LA6: ;
		t = base_223029(t);
	}
	goto LA1;
	LA3: ;
	{
		if (!((*t).Kind == ((NU8) 54))) goto LA12;
		t = base_223029(t);
		{
			if (!!(((*t).Kind == ((NU8) 10)))) goto LA16;
			localerror_165571((*n).Info, ((NU16) 202), ((NimStringDesc*) &TMP2675));
			goto BeforeRet;
		}
		LA16: ;
	}
	goto LA1;
	LA12: ;
	LA1: ;
	asgnRefNoCycle((void**) &(*t).Destructor, s);
	{
		NI i_438323;
		NI HEX3Atmp_438410;
		NI LOC22;
		NI res_438412;
		if (!!(((*(*n).kindU.S6.Sons->data[6]).Kind == ((NU8) 1)))) goto LA20;
		i_438323 = 0;
		HEX3Atmp_438410 = 0;
		LOC22 = 0;
		LOC22 = sonslen_189185(t);
		HEX3Atmp_438410 = (NI32)(LOC22 - 1);
		res_438412 = 0;
		while (1) {
			if (!(res_438412 <= HEX3Atmp_438410)) goto LA23;
			i_438323 = res_438412;
			{
				ttype188837* destructablet;
				{
					if (!((*t).Sons->data[i_438323] == NIM_NIL)) goto LA27;
					goto LA24;
				}
				LA27: ;
				destructablet = instantiatedestructor_438219(c, (*t).Sons->data[i_438323]);
				{
					tnodeseq188797* LOC33;
					TY251116 LOC34;
					tnode188803* LOC35;
					tnode188803* LOC36;
					if (!!((destructablet == NIM_NIL))) goto LA31;
					LOC33 = 0;
					LOC33 = (tnodeseq188797*) newSeq((&NTI188797), 2);
					memset((void*)LOC34, 0, sizeof(LOC34));
					LOC34[0] = usesym_362981((*destructablet).Destructor);
					LOC35 = 0;
					LOC35 = HEX5BHEX5D_189694((*n).kindU.S6.Sons->data[3], 1);
					LOC34[1] = HEX5BHEX5D_189694(LOC35, 0);
					asgnRefNoCycle((void**) &LOC33->data[0], LOC34[0]);
					asgnRefNoCycle((void**) &LOC33->data[1], LOC34[1]);
					LOC36 = 0;
					LOC36 = newnode_191003(((NU8) 27), (*(*t).Sym).Info, LOC33, NIM_NIL);
					addson_189207((*n).kindU.S6.Sons->data[6], LOC36);
				}
				LA31: ;
			} LA24: ;
			res_438412 += 1;
		} LA23: ;
	}
	LA20: ;
	BeforeRet: ;
}

static N_INLINE(void, paramstypecheck_416620)(tcontext250019* c, ttype188837* typ) {
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC6;
		LOC3 = 0;
		LOC3 = typeallowed_223180(typ, ((NU8) 10));
		if (!!(LOC3)) goto LA4;
		LOC6 = 0;
		LOC6 = typetostring_223020(typ, ((NU8) 0));
		localerror_165571((*(*typ).N).Info, ((NU16) 165), LOC6);
	}
	LA4: ;
}

N_NIMCALL(void, activate_416104)(tcontext250019* c, tnode188803* n) {
}

N_NIMCALL(ttype188837*, arrayconstrtype_451924)(tcontext250019* c, tnode188803* n) {
	ttype188837* result;
	ttype188837* typ;
	NI LOC9;
	ttype188837* LOC10;
	result = 0;
	typ = newtypes_250180(((NU8) 4), c);
	rawaddson_193092(typ, NIM_NIL);
	{
		NI LOC3;
		ttype188837* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 0)) goto LA4;
		LOC6 = 0;
		LOC6 = newtypes_250180(((NU8) 3), c);
		rawaddson_193092(typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		tnode188803* x;
		NI64 lastindex;
		NI LOC8;
		ttype188837* t;
		x = (*n).kindU.S6.Sons->data[0];
		LOC8 = 0;
		LOC8 = sonslen_189181(n);
		lastindex = ((NI64) ((NI32)(LOC8 - 1)));
		t = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, 8423424);
		addsonskipintlit_242461(typ, t);
	}
	LA1: ;
	LOC9 = 0;
	LOC9 = sonslen_189181(n);
	LOC10 = 0;
	LOC10 = getsystype_242024(((NU8) 31));
	asgnRefNoCycle((void**) &(*typ).Sons->data[0], makerangetype_251156(c, 0, ((NI64) ((NI32)(LOC9 - 1))), (*n).Info, LOC10));
	result = typ;
	return result;
}

N_NIMCALL(void, changetype_416043)(tnode188803* n, ttype188837* newtype, NIM_BOOL check) {
	switch ((*n).Kind) {
	case ((NU8) 39):
	case ((NU8) 41):
	{
		NI i_451644;
		NI HEX3Atmp_451908;
		NI LOC2;
		NI res_451910;
		i_451644 = 0;
		HEX3Atmp_451908 = 0;
		LOC2 = 0;
		LOC2 = sonslen_189181(n);
		HEX3Atmp_451908 = (NI32)(LOC2 - 1);
		res_451910 = 0;
		while (1) {
			ttype188837* LOC4;
			if (!(res_451910 <= HEX3Atmp_451908)) goto LA3;
			i_451644 = res_451910;
			LOC4 = 0;
			LOC4 = elemtype_223559(newtype);
			changetype_416043((*n).kindU.S6.Sons->data[i_451644], LOC4, check);
			res_451910 += 1;
		} LA3: ;
	}
	break;
	case ((NU8) 37):
	{
		{
			if (!!(((*newtype).Kind == ((NU8) 18)))) goto LA8;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2881));
		}
		goto LA6;
		LA8: ;
		{
			if (!((*newtype).N == NIM_NIL)) goto LA11;
		}
		goto LA6;
		LA11: ;
		{
			NIM_BOOL LOC14;
			NI LOC15;
			NI i_451721;
			NI HEX3Atmp_451912;
			NI LOC19;
			NI res_451914;
			LOC14 = 0;
			LOC15 = 0;
			LOC15 = sonslen_189181(n);
			LOC14 = (0 < LOC15);
			if (!(LOC14)) goto LA16;
			LOC14 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 34));
			LA16: ;
			if (!LOC14) goto LA17;
			i_451721 = 0;
			HEX3Atmp_451912 = 0;
			LOC19 = 0;
			LOC19 = sonslen_189181(n);
			HEX3Atmp_451912 = (NI32)(LOC19 - 1);
			res_451914 = 0;
			while (1) {
				tnode188803* m;
				tsym188833* f;
				if (!(res_451914 <= HEX3Atmp_451912)) goto LA20;
				i_451721 = res_451914;
				m = (*(*n).kindU.S6.Sons->data[i_451721]).kindU.S6.Sons->data[0];
				{
					if (!!(((*m).Kind == ((NU8) 3)))) goto LA23;
					internalerror_165591((*m).Info, ((NimStringDesc*) &TMP2882));
					goto BeforeRet;
				}
				LA23: ;
				f = getsymfromlist_197172((*newtype).N, (*(*m).kindU.S4.Sym).Name, 0);
				{
					if (!(f == NIM_NIL)) goto LA27;
					internalerror_165591((*m).Info, ((NimStringDesc*) &TMP2883));
					goto BeforeRet;
				}
				LA27: ;
				changetype_416043((*(*n).kindU.S6.Sons->data[i_451721]).kindU.S6.Sons->data[1], (*f).Typ, check);
				res_451914 += 1;
			} LA20: ;
		}
		goto LA6;
		LA17: ;
		{
			NI i_451832;
			NI HEX3Atmp_451916;
			NI LOC30;
			NI res_451918;
			i_451832 = 0;
			HEX3Atmp_451916 = 0;
			LOC30 = 0;
			LOC30 = sonslen_189181(n);
			HEX3Atmp_451916 = (NI32)(LOC30 - 1);
			res_451918 = 0;
			while (1) {
				tnode188803* m;
				tnode188803* a;
				tnode188803* LOC32;
				if (!(res_451918 <= HEX3Atmp_451916)) goto LA31;
				i_451832 = res_451918;
				m = (*n).kindU.S6.Sons->data[i_451832];
				a = newnodeit_189104(((NU8) 34), (*m).Info, (*newtype).Sons->data[i_451832]);
				LOC32 = 0;
				LOC32 = newsymnode_189095((*(*(*newtype).N).kindU.S6.Sons->data[i_451832]).kindU.S4.Sym);
				addson_189207(a, LOC32);
				addson_189207(a, m);
				changetype_416043(m, (*newtype).Sons->data[i_451832], check);
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_451832], a);
				res_451918 += 1;
			} LA31: ;
		}
		LA6: ;
	}
	break;
	case ((NU8) 5) ... ((NU8) 15):
	{
		{
			NI64 value;
			if (!check) goto LA36;
			value = (*n).kindU.S1.Intval;
			{
				NIM_BOOL LOC40;
				NI64 LOC41;
				NI64 LOC43;
				NimStringDesc* LOC46;
				NimStringDesc* LOC47;
				NimStringDesc* LOC48;
				LOC40 = 0;
				LOC41 = 0;
				LOC41 = firstord_223002(newtype);
				LOC40 = (value < LOC41);
				if (LOC40) goto LA42;
				LOC43 = 0;
				LOC43 = lastord_223006(newtype);
				LOC40 = (LOC43 < value);
				LA42: ;
				if (!LOC40) goto LA44;
				LOC46 = 0;
				LOC47 = 0;
				LOC47 = nimInt64ToStr(value);
				LOC48 = 0;
				LOC48 = typetostring_223020(newtype, ((NU8) 0));
				LOC46 = rawNewString(LOC47->Sup.len + LOC48->Sup.len + 19);
appendString(LOC46, ((NimStringDesc*) &TMP2884));
appendString(LOC46, LOC47);
appendString(LOC46, ((NimStringDesc*) &TMP2885));
appendString(LOC46, LOC48);
				localerror_165571((*n).Info, ((NU16) 4), LOC46);
			}
			LA44: ;
		}
		LA36: ;
	}
	break;
	default:
	{
	}
	break;
	}
	asgnRefNoCycle((void**) &(*n).Typ, newtype);
	BeforeRet: ;
}

N_NIMCALL(ttype188837*, commontype_416202)(ttype188837* x, ttype188837* y) {
	ttype188837* result;
	ttype188837* a;
	ttype188837* 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_192793(x, 2048);
	b = skiptypes_192793(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_233264((*a).Sons, NIM_NIL);
			if (!LOC27) goto LA28;
			result = a;
		}
		goto LA25;
		LA28: ;
		{
			ttype188837* LOC31;
			result = newtype_189060(((NU8) 8), (*a).Owner);
			LOC31 = 0;
			LOC31 = newtype_189060(((NU8) 0), (*a).Owner);
			rawaddson_193092(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;
		LOC42 = 0;
		LOC42 = ((*a).Kind == ((NU8) 20));
		if (!(LOC42)) goto LA43;
		LOC42 = ((*b).Kind == ((NU8) 20));
		LA43: ;
		if (!LOC42) goto LA44;
		{
			NIM_BOOL LOC48;
			ttype188837* LOC51;
			LOC48 = 0;
			LOC48 = sametype_228116(a, b, 0);
			if (!!(LOC48)) goto LA49;
			LOC51 = 0;
			LOC51 = skiptypes_192793(a, 1048576);
			result = skipintlit_242424(LOC51);
		}
		LA49: ;
	}
	goto LA9;
	LA44: ;
	{
		NU8 k;
		k = ((NU8) 0);
		{
			if (!((*a).Kind == ((NU8) 22) || (*a).Kind == ((NU8) 21))) goto LA55;
			k = (*a).Kind;
			{
				if (!!(((*b).Kind == (*a).Kind))) goto LA59;
				result = x;
				goto BeforeRet;
			}
			LA59: ;
			a = lastson_189193(a);
			b = lastson_189193(b);
		}
		LA55: ;
		{
			NIM_BOOL LOC63;
			LOC63 = 0;
			LOC63 = ((*a).Kind == ((NU8) 17));
			if (!(LOC63)) goto LA64;
			LOC63 = ((*b).Kind == ((NU8) 17));
			LA64: ;
			if (!LOC63) goto LA65;
			result = commonsuperclass_230876(a, b);
			{
				NIM_BOOL LOC69;
				LOC69 = 0;
				LOC69 = result == 0;
				if (LOC69) goto LA70;
				LOC69 = (result == a);
				LA70: ;
				if (!LOC69) goto LA71;
				result = x;
				goto BeforeRet;
			}
			LA71: ;
			{
				if (!(result == b)) goto LA75;
				result = y;
				goto BeforeRet;
			}
			LA75: ;
			{
				ttype188837* r;
				if (!!((k == ((NU8) 0)))) goto LA79;
				r = result;
				result = newtype_189060(k, (*r).Owner);
				addsonskipintlit_242461(result, r);
			}
			LA79: ;
		}
		LA65: ;
	}
	LA9: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semarrayconstr_451964)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	NI LOC31;
	ttype188837* LOC32;
	result = 0;
	result = newnodei_189099(((NU8) 41), (*n).Info);
	asgnRefNoCycle((void**) &(*result).Typ, newtypes_250180(((NU8) 4), c));
	rawaddson_193092((*result).Typ, NIM_NIL);
	{
		NI LOC3;
		ttype188837* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 0)) goto LA4;
		LOC6 = 0;
		LOC6 = newtypes_250180(((NU8) 3), c);
		rawaddson_193092((*result).Typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		tnode188803* x;
		NI64 lastindex;
		ttype188837* indextype;
		tnode188803* yy;
		ttype188837* typ;
		NI i_452039;
		NI HEX3Atmp_452178;
		NI LOC15;
		NI res_452180;
		NI i_452148;
		NI HEX3Atmp_452182;
		NI LOC29;
		NI res_452184;
		x = (*n).kindU.S6.Sons->data[0];
		lastindex = 0;
		indextype = getsystype_242024(((NU8) 31));
		{
			NIM_BOOL LOC10;
			NI LOC12;
			tnode188803* idx;
			LOC10 = 0;
			LOC10 = ((*x).Kind == ((NU8) 34));
			if (!(LOC10)) goto LA11;
			LOC12 = 0;
			LOC12 = sonslen_189181(x);
			LOC10 = (LOC12 == 2);
			LA11: ;
			if (!LOC10) goto LA13;
			idx = semconstexpr_417095(c, (*x).kindU.S6.Sons->data[0]);
			lastindex = getordvalue_223150(idx);
			indextype = (*idx).Typ;
			x = (*x).kindU.S6.Sons->data[1];
		}
		LA13: ;
		yy = semexprwithtype_416011(c, x, 0);
		typ = (*yy).Typ;
		addson_189207(result, yy);
		i_452039 = 0;
		HEX3Atmp_452178 = 0;
		LOC15 = 0;
		LOC15 = sonslen_189181(n);
		HEX3Atmp_452178 = (NI32)(LOC15 - 1);
		res_452180 = 1;
		while (1) {
			tnode188803* xx;
			if (!(res_452180 <= HEX3Atmp_452178)) goto LA16;
			i_452039 = res_452180;
			x = (*n).kindU.S6.Sons->data[i_452039];
			{
				NIM_BOOL LOC19;
				NI LOC21;
				tnode188803* idx;
				LOC19 = 0;
				LOC19 = ((*x).Kind == ((NU8) 34));
				if (!(LOC19)) goto LA20;
				LOC21 = 0;
				LOC21 = sonslen_189181(x);
				LOC19 = (LOC21 == 2);
				LA20: ;
				if (!LOC19) goto LA22;
				idx = semconstexpr_417095(c, (*x).kindU.S6.Sons->data[0]);
				idx = fitnode_416037(c, indextype, idx);
				{
					NI64 LOC26;
					LOC26 = 0;
					LOC26 = getordvalue_223150(idx);
					if (!!(((NI64)(lastindex + 1) == LOC26))) goto LA27;
					localerror_165571((*x).Info, ((NU16) 144), ((NimStringDesc*) &TMP2675));
				}
				LA27: ;
				x = (*x).kindU.S6.Sons->data[1];
			}
			LA22: ;
			xx = semexprwithtype_416011(c, x, (flags & 32));
			add_189390(result, xx);
			typ = commontype_416202(typ, (*xx).Typ);
			lastindex += 1;
			res_452180 += 1;
		} LA16: ;
		addsonskipintlit_242461((*result).Typ, typ);
		i_452148 = 0;
		HEX3Atmp_452182 = 0;
		LOC29 = 0;
		LOC29 = len_189264(result);
		HEX3Atmp_452182 = LOC29 - 1;
		res_452184 = 0;
		while (1) {
			if (!(res_452184 <= HEX3Atmp_452182)) goto LA30;
			i_452148 = res_452184;
			asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_452148], fitnode_416037(c, typ, (*result).kindU.S6.Sons->data[i_452148]));
			res_452184 += 1;
		} LA30: ;
	}
	LA1: ;
	LOC31 = 0;
	LOC31 = sonslen_189181(result);
	LOC32 = 0;
	LOC32 = getsystype_242024(((NU8) 31));
	asgnRefNoCycle((void**) &(*(*result).Typ).Sons->data[0], makerangetype_251156(c, 0, ((NI64) ((NI32)(LOC31 - 1))), (*n).Info, LOC32));
	return result;
}

N_NIMCALL(void, fixabstracttype_452189)(tcontext250019* c, tnode188803* n) {
	NI i_452205;
	NI HEX3Atmp_452452;
	NI LOC1;
	NI res_452454;
	i_452205 = 0;
	HEX3Atmp_452452 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_452452 = (NI32)(LOC1 - 1);
	res_452454 = 1;
	while (1) {
		tnode188803* it;
		if (!(res_452454 <= HEX3Atmp_452452)) goto LA2;
		i_452205 = res_452454;
		it = (*n).kindU.S6.Sons->data[i_452205];
		switch ((*it).Kind) {
		case ((NU8) 58):
		case ((NU8) 59):
		{
			{
				if (!((*(*it).kindU.S6.Sons->data[1]).Kind == ((NU8) 41))) goto LA6;
				asgnRefNoCycle((void**) &(*(*it).kindU.S6.Sons->data[1]).Typ, arrayconstrtype_451924(c, (*it).kindU.S6.Sons->data[1]));
			}
			LA6: ;
			{
				ttype188837* LOC10;
				ttype188837* s;
				LOC10 = 0;
				LOC10 = skiptypes_192793((*it).Typ, IL64(211106240964864));
				if (!((*LOC10).Kind == ((NU8) 27) || (*LOC10).Kind == ((NU8) 48))) goto LA11;
				s = skiptypes_192793((*(*it).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
				{
					NIM_BOOL LOC15;
					tsym188833* LOC19;
					ttype188837* LOC20;
					ttype188837* LOC21;
					LOC15 = 0;
					LOC15 = ((*s).Kind == ((NU8) 4));
					if (!(LOC15)) goto LA16;
					LOC15 = ((*(*s).Sons->data[1]).Kind == ((NU8) 3));
					LA16: ;
					if (!LOC15) goto LA17;
					LOC19 = 0;
					LOC19 = getcurrowner_250215();
					s = copytype_189141(s, LOC19, NIM_FALSE);
					LOC20 = 0;
					LOC20 = skiptypes_192793(s, IL64(211106240964864));
					LOC21 = 0;
					LOC21 = skiptypes_192793((*it).Typ, IL64(211106240964864));
					asgnRefNoCycle((void**) &(*LOC20).Sons->data[1], elemtype_223559(LOC21));
					asgnRefNoCycle((void**) &(*(*it).kindU.S6.Sons->data[1]).Typ, s);
				}
				goto LA13;
				LA17: ;
				{
					NIM_BOOL LOC23;
					tsym188833* LOC27;
					ttype188837* LOC28;
					ttype188837* LOC29;
					LOC23 = 0;
					LOC23 = ((*s).Kind == ((NU8) 24));
					if (!(LOC23)) goto LA24;
					LOC23 = ((*(*s).Sons->data[0]).Kind == ((NU8) 3));
					LA24: ;
					if (!LOC23) goto LA25;
					LOC27 = 0;
					LOC27 = getcurrowner_250215();
					s = copytype_189141(s, LOC27, NIM_FALSE);
					LOC28 = 0;
					LOC28 = skiptypes_192793(s, IL64(211106240964864));
					LOC29 = 0;
					LOC29 = skiptypes_192793((*it).Typ, IL64(211106240964864));
					asgnRefNoCycle((void**) &(*LOC28).Sons->data[0], elemtype_223559(LOC29));
					asgnRefNoCycle((void**) &(*(*it).kindU.S6.Sons->data[1]).Typ, s);
				}
				goto LA13;
				LA25: ;
				LA13: ;
			}
			goto LA8;
			LA11: ;
			{
				ttype188837* LOC31;
				ttype188837* s;
				LOC31 = 0;
				LOC31 = skiptypes_192793((*(*it).kindU.S6.Sons->data[1]).Typ, IL64(211106240964864));
				if (!((*LOC31).Kind == ((NU8) 5) || (*LOC31).Kind == ((NU8) 4) || (*LOC31).Kind == ((NU8) 18) || (*LOC31).Kind == ((NU8) 19))) goto LA32;
				s = skiptypes_192793((*it).Typ, IL64(211106240964864));
				changetype_416043((*it).kindU.S6.Sons->data[1], s, NIM_TRUE);
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_452205], (*it).kindU.S6.Sons->data[1]);
			}
			goto LA8;
			LA32: ;
			LA8: ;
		}
		break;
		case ((NU8) 41):
		{
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_452205], semarrayconstr_451964(c, it, 0));
		}
		break;
		default:
		{
		}
		break;
		}
		res_452454 += 1;
	} LA2: ;
}

N_NIMCALL(NU8, isassignable_452519)(tcontext250019* c, tnode188803* n) {
	NU8 result;
	result = 0;
	result = isassignable_276961((*(*c).P).Owner, n);
	return result;
}

N_NIMCALL(void, performprocvarcheck_438091)(tcontext250019* c, tnode188803* n, tsym188833* s) {
	NI smoduleid;
	tsym188833* LOC1;
	LOC1 = 0;
	LOC1 = getmodule_197183(s);
	smoduleid = (*LOC1).Sup.Id;
	{
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NIM_BOOL LOC6;
		LOC4 = 0;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = !((((*s).Flags &(1<<((((NU8) 17))&31)))!=0));
		if (!(LOC6)) goto LA7;
		LOC6 = ((*(*s).Typ).Callconv == ((NU8) 0));
		LA7: ;
		LOC5 = LOC6;
		if (!(LOC5)) goto LA8;
		LOC5 = !((smoduleid == (*(*c).Module).Sup.Id));
		LA8: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA9;
		LOC4 = !((smoduleid == (*(*c).Friendmodule).Sup.Id));
		LA9: ;
		if (!LOC4) goto LA10;
		localerror_165571((*n).Info, ((NU16) 134), (*(*s).Name).S);
	}
	LA10: ;
}

N_NIMCALL(void, semprocvarcheck_438120)(tcontext250019* c, tnode188803* n_438123) {
	tnode188803* n;
	n = skipconv_197231(n_438123);
	{
		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_438091(c, n, (*n).kindU.S4.Sym);
	}
	LA5: ;
}

N_NIMCALL(tnode188803*, newhiddenaddrtaken_452525)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 65))) goto LA3;
		checksonslen_251209(n, 1);
		result = (*n).kindU.S6.Sons->data[0];
	}
	goto LA1;
	LA3: ;
	{
		ttype188837* LOC6;
		LOC6 = 0;
		LOC6 = makevartype_250175(c, (*n).Typ);
		result = newnodeit_189104(((NU8) 64), (*n).Info, LOC6);
		addson_189207(result, n);
		{
			NU8 LOC9;
			LOC9 = 0;
			LOC9 = isassignable_452519(c, n);
			if (!!(((6 &(1<<((LOC9)&7)))!=0))) goto LA10;
			localerror_165571((*n).Info, ((NU16) 127), ((NimStringDesc*) &TMP2675));
		}
		LA10: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, analyseifaddresstaken_452568)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	switch ((*n).Kind) {
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC4;
			ttype188837* LOC6;
			LOC4 = 0;
			LOC4 = !(((*(*n).kindU.S4.Sym).Typ == NIM_NIL));
			if (!(LOC4)) goto LA5;
			LOC6 = 0;
			LOC6 = skiptypes_192793((*(*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_452525(c, n);
		}
		LA7: ;
	}
	break;
	case ((NU8) 45):
	{
		checksonslen_251209(n, 2);
		{
			if (!!(((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 3)))) goto LA12;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2887));
			goto BeforeRet;
		}
		LA12: ;
		{
			ttype188837* LOC16;
			LOC16 = 0;
			LOC16 = skiptypes_192793((*(*(*n).kindU.S6.Sons->data[1]).kindU.S4.Sym).Typ, IL64(211106232576000));
			if (!!(((*LOC16).Kind == ((NU8) 23)))) goto LA17;
			(*(*(*n).kindU.S6.Sons->data[1]).kindU.S4.Sym).Flags |=((NI32)(1)<<((((NU8) 15))%(sizeof(NI32)*8)));
			result = newhiddenaddrtaken_452525(c, n);
		}
		LA17: ;
	}
	break;
	case ((NU8) 42):
	{
		checkminsonslen_251215(n, 1);
		{
			ttype188837* LOC22;
			LOC22 = 0;
			LOC22 = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106232576000));
			if (!!(((*LOC22).Kind == ((NU8) 23)))) goto LA23;
			{
				if (!((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3))) goto LA27;
				(*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Flags |=((NI32)(1)<<((((NU8) 15))%(sizeof(NI32)*8)));
			}
			LA27: ;
			result = newhiddenaddrtaken_452525(c, n);
		}
		LA23: ;
	}
	break;
	default:
	{
		result = newhiddenaddrtaken_452525(c, n);
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, analyseifaddresstakenincall_452906)(tcontext250019* c, tnode188803* n) {
	ttype188837* t;
	NI i_453127;
	NI HEX3Atmp_453262;
	NI LOC28;
	NI res_453264;
	checkminsonslen_251215(n, 1);
	t = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, 2048);
	{
		NIM_BOOL LOC3;
		NI i_453004;
		NI HEX3Atmp_453258;
		NI LOC7;
		NI res_453260;
		LOC3 = 0;
		LOC3 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
		if (!(LOC3)) goto LA4;
		LOC3 = ((TMP2886[(*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Magic/8] &(1<<((*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Magic%8)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		i_453004 = 0;
		HEX3Atmp_453258 = 0;
		LOC7 = 0;
		LOC7 = sonslen_189181(n);
		HEX3Atmp_453258 = (NI32)(LOC7 - 1);
		res_453260 = 1;
		while (1) {
			if (!(res_453260 <= HEX3Atmp_453258)) goto LA8;
			i_453004 = res_453260;
			{
				NIM_BOOL LOC11;
				NIM_BOOL LOC12;
				NI LOC13;
				ttype188837* LOC16;
				LOC11 = 0;
				LOC12 = 0;
				LOC13 = 0;
				LOC13 = sonslen_189185(t);
				LOC12 = (i_453004 < LOC13);
				if (!(LOC12)) goto LA14;
				LOC12 = !(((*t).Sons->data[i_453004] == NIM_NIL));
				LA14: ;
				LOC11 = LOC12;
				if (!(LOC11)) goto LA15;
				LOC16 = 0;
				LOC16 = skiptypes_192793((*t).Sons->data[i_453004], IL64(211106232576000));
				LOC11 = ((*LOC16).Kind == ((NU8) 23));
				LA15: ;
				if (!LOC11) goto LA17;
				{
					NU8 LOC21;
					LOC21 = 0;
					LOC21 = isassignable_452519(c, (*n).kindU.S6.Sons->data[i_453004]);
					if (!!(((6 &(1<<((LOC21)&7)))!=0))) goto LA22;
					{
						if (!!(((*(*n).kindU.S6.Sons->data[i_453004]).Kind == ((NU8) 64)))) goto LA26;
						localerror_165571((*(*n).kindU.S6.Sons->data[i_453004]).Info, ((NU16) 127), ((NimStringDesc*) &TMP2675));
					}
					LA26: ;
				}
				LA22: ;
			}
			LA17: ;
			res_453260 += 1;
		} LA8: ;
		goto BeforeRet;
	}
	LA5: ;
	i_453127 = 0;
	HEX3Atmp_453262 = 0;
	LOC28 = 0;
	LOC28 = sonslen_189181(n);
	HEX3Atmp_453262 = (NI32)(LOC28 - 1);
	res_453264 = 1;
	while (1) {
		if (!(res_453264 <= HEX3Atmp_453262)) goto LA29;
		i_453127 = res_453264;
		{
			if (!((*(*n).kindU.S6.Sons->data[i_453127]).Kind == ((NU8) 32))) goto LA32;
			analyseifaddresstakenincall_452906(c, (*n).kindU.S6.Sons->data[i_453127]);
		}
		LA32: ;
		semprocvarcheck_438120(c, (*n).kindU.S6.Sons->data[i_453127]);
		{
			NIM_BOOL LOC36;
			NI LOC37;
			ttype188837* LOC39;
			LOC36 = 0;
			LOC37 = 0;
			LOC37 = sonslen_189185(t);
			LOC36 = (i_453127 < LOC37);
			if (!(LOC36)) goto LA38;
			LOC39 = 0;
			LOC39 = skiptypes_192793((*t).Sons->data[i_453127], IL64(211106232576000));
			LOC36 = ((*LOC39).Kind == ((NU8) 23));
			LA38: ;
			if (!LOC36) goto LA40;
			{
				if (!!(((*(*n).kindU.S6.Sons->data[i_453127]).Kind == ((NU8) 64)))) goto LA44;
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_453127], analyseifaddresstaken_452568(c, (*n).kindU.S6.Sons->data[i_453127]));
			}
			LA44: ;
		}
		LA40: ;
		res_453264 += 1;
	} LA29: ;
	BeforeRet: ;
}

N_NIMCALL(tnode188803*, semispartof_453269)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	NU8 r;
	tnode188803* LOC1;
	tnode188803* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_189694(n, 1);
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_189694(n, 2);
	r = ispartof_411388(LOC1, LOC2);
	result = newintnodet_261020(((NI64) (r)), n);
	return result;
}

N_NIMCALL(tnode188803*, evaltypetrait_453373)(tnode188803* trait, ttype188837* operand, tsym188833* context) {
	tnode188803* result;
	ttype188837* typ;
	NimStringDesc* LOC1;
	result = 0;
	typ = skiptypes_192793(operand, 256);
	LOC1 = 0;
	LOC1 = nsuNormalize((*(*(*trait).kindU.S4.Sym).Name).S);
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP2890))) goto LA2;
	if (eqStrings(LOC1, ((NimStringDesc*) &TMP2891))) goto LA3;
	goto LA4;
	LA2: ;
	{
		NimStringDesc* LOC7;
		LOC7 = 0;
		LOC7 = typetostring_223020(typ, ((NU8) 0));
		result = newstrnode_189085(((NU8) 20), LOC7);
		asgnRefNoCycle((void**) &(*result).Typ, newtype_189060(((NU8) 28), context));
		(*result).Info = (*trait).Info;
	}
	goto LA5;
	LA3: ;
	{
		NI LOC9;
		LOC9 = 0;
		LOC9 = len_189264((*typ).N);
		result = newintnode_189069(((NU8) 6), ((NI64) ((NI32)(LOC9 - 1))));
		asgnRefNoCycle((void**) &(*result).Typ, newtype_189060(((NU8) 31), context));
		(*result).Info = (*trait).Info;
	}
	goto LA5;
	LA4: ;
	{
		{
			NimStringDesc* LOC15;
			if (!NIM_TRUE) goto LA13;
			LOC15 = 0;
			LOC15 = HEX24_165714(TMP2892);
			internalerror_165606(LOC15);
		}
		LA13: ;
	}
	LA5: ;
	return result;
}

N_NIMCALL(tnode188803*, semtypetraits_453403)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	ttype188837* t;
	result = 0;
	checkminsonslen_251215(n, 2);
	t = (*(*n).kindU.S6.Sons->data[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_165714(TMP2888);
		internalerror_165606(LOC7);
	}
	LA5: ;
	{
		NI LOC10;
		tnode188803* LOC13;
		tsym188833* LOC14;
		LOC10 = 0;
		LOC10 = sonslen_189185(t);
		if (!(0 < LOC10)) goto LA11;
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_189694(n, 0);
		LOC14 = 0;
		LOC14 = getcurrowner_250215();
		result = evaltypetrait_453373(LOC13, t, LOC14);
	}
	goto LA8;
	LA11: ;
	{
		result = n;
	}
	LA8: ;
	return result;
}

N_NIMCALL(NI, expectintlit_453285)(tcontext250019* c, tnode188803* n) {
	NI result;
	tnode188803* 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_165571((*n).Info, ((NU16) 7), ((NimStringDesc*) &TMP2675));
	}
	break;
	}
	return result;
}

static N_INLINE(NI, tolinenumber_164812)(tlineinfo163527 info) {
	NI result;
	result = 0;
	result = ((NI) (info.Line));
	return result;
}

N_NIMCALL(tnode188803*, seminstantiationinfo_453306)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NI idx;
	NI usefullpaths;
	tlineinfo163527 info;
	tnode188803* filename;
	ttype188837* LOC1;
	tnode188803* line;
	ttype188837* LOC7;
	NI LOC8;
	result = 0;
	result = newnodeit_189104(((NU8) 37), (*n).Info, (*n).Typ);
	idx = expectintlit_453285(c, (*n).kindU.S6.Sons->data[1]);
	usefullpaths = expectintlit_453285(c, (*n).kindU.S6.Sons->data[2]);
	info = getinfocontext_164751(idx);
	LOC1 = 0;
	LOC1 = getsystype_242024(((NU8) 28));
	filename = newnodeit_189104(((NU8) 20), (*n).Info, LOC1);
	{
		if (!!((usefullpaths == 0))) goto LA4;
		asgnRefNoCycle((void**) &(*filename).kindU.S3.Strval, tofullpath_164788(info.Fileindex));
	}
	goto LA2;
	LA4: ;
	{
		asgnRefNoCycle((void**) &(*filename).kindU.S3.Strval, tofilename_164780(info.Fileindex));
	}
	LA2: ;
	LOC7 = 0;
	LOC7 = getsystype_242024(((NU8) 31));
	line = newnodeit_189104(((NU8) 6), (*n).Info, LOC7);
	LOC8 = 0;
	LOC8 = tolinenumber_164812(info);
	(*line).kindU.S1.Intval = ((NI64) (LOC8));
	add_189390(result, filename);
	add_189390(result, line);
	return result;
}

N_NIMCALL(tnode188803*, semord_453484)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NI64 LOC1;
	NI64 LOC2;
	ttype188837* LOC3;
	result = 0;
	result = n;
	LOC1 = 0;
	LOC1 = firstord_223002((*(*n).kindU.S6.Sons->data[1]).Typ);
	LOC2 = 0;
	LOC2 = lastord_223006((*(*n).kindU.S6.Sons->data[1]).Typ);
	LOC3 = 0;
	LOC3 = getsystype_242024(((NU8) 31));
	asgnRefNoCycle((void**) &(*result).Typ, makerangetype_251156(c, LOC1, LOC2, (*n).Info, LOC3));
	return result;
}

N_NIMCALL(tnode188803*, semlowhigh_450811)(tcontext250019* c, tnode188803* n, NU16 m) {
	tnode188803* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!!((LOC3 == 2))) goto LA4;
		localerror_165571((*n).Info, ((NU16) 69), optostr_450817[(m)- 4]);
	}
	goto LA1;
	LA4: ;
	{
		ttype188837* typ;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[1], 16));
		typ = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(2306054115455707392));
		switch ((*typ).Kind) {
		case ((NU8) 24):
		case ((NU8) 28):
		case ((NU8) 27):
		case ((NU8) 48):
		{
			asgnRefNoCycle((void**) &(*n).Typ, getsystype_242024(((NU8) 31)));
		}
		break;
		case ((NU8) 4):
		case ((NU8) 16):
		{
			asgnRefNoCycle((void**) &(*n).Typ, (*typ).Sons->data[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_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(2306054115454658816)));
		}
		break;
		case ((NU8) 12):
		{
			tnode188803* LOC11;
			LOC11 = 0;
			LOC11 = copytree_189237(n);
			asgnRefNoCycle((void**) &(*n).Typ, maketypefromexpr_250668(c, LOC11));
		}
		break;
		default:
		{
			localerror_165571((*n).Info, ((NU16) 67), optostr_450817[(m)- 4]);
		}
		break;
		}
	}
	LA1: ;
	result = n;
	return result;
}

N_NIMCALL(tnode188803*, semshallowcopy_453823)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	result = 0;
	{
		NI LOC3;
		tnode188803* LOC6;
		tnode188803* LOC7;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 3)) goto LA4;
		result = newnodei_189099(((NU8) 74), (*n).Info);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_189694(n, 1);
		add_189390(result, LOC6);
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_189694(n, 2);
		add_189390(result, LOC7);
		result = semasgn_457417(c, result);
	}
	goto LA1;
	LA4: ;
	{
		result = semdirectop_416631(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, sembindsym_453518)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* sl;
	tnode188803* ismixin;
	tnode188803* id;
	tident167019* LOC13;
	tsym188833* s;
	result = 0;
	result = copynode_189233(n);
	add_189390(result, (*n).kindU.S6.Sons->data[0]);
	sl = semconstexpr_417095(c, (*n).kindU.S6.Sons->data[1]);
	{
		if (!!(((*sl).Kind == ((NU8) 20) || (*sl).Kind == ((NU8) 21) || (*sl).Kind == ((NU8) 22)))) goto LA3;
		localerror_165571((*(*n).kindU.S6.Sons->data[1]).Info, ((NU16) 6), ((NimStringDesc*) &TMP2675));
		result = errornode_251142(c, n);
		goto BeforeRet;
	}
	LA3: ;
	ismixin = semconstexpr_417095(c, (*n).kindU.S6.Sons->data[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 < 0);
		LA9: ;
		LOC7 = LOC8;
		if (LOC7) goto LA10;
		LOC7 = (2 < (*ismixin).kindU.S1.Intval);
		LA10: ;
		if (!LOC7) goto LA11;
		localerror_165571((*(*n).kindU.S6.Sons->data[2]).Info, ((NU16) 104), ((NimStringDesc*) &TMP2675));
		result = errornode_251142(c, n);
		goto BeforeRet;
	}
	LA11: ;
	LOC13 = 0;
	LOC13 = getident_167456((*sl).kindU.S3.Strval);
	id = newidentnode_189090(LOC13, (*n).Info);
	s = qualifiedlookup_252806(c, id, 2);
	{
		tnode188803* sc;
		if (!!((s == NIM_NIL))) goto LA16;
		sc = symchoice_430291(c, id, s, ((NU8) ((*ismixin).kindU.S1.Intval)));
		add_189390(result, sc);
	}
	goto LA14;
	LA16: ;
	{
		localerror_165571((*(*n).kindU.S6.Sons->data[1]).Info, ((NU16) 61), (*sl).kindU.S3.Strval);
	}
	LA14: ;
	BeforeRet: ;
	return result;
}

static N_INLINE(tnode188803*, newderef_439802)(tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = newnodeit_189104(((NU8) 65), (*n).Info, (*(*n).Typ).Sons->data[0]);
	addson_189207(result, n);
	return result;
}

N_NIMCALL(tnode188803*, semlocals_453730)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NI counter;
	ttype188837* tupletype;
	tscope188827* scope_453737;
	tscope188827* HEX3Atmp_453817;
	tscope188827* current_453819;
	result = 0;
	counter = 0;
	tupletype = newtypes_250180(((NU8) 18), c);
	result = newnodeit_189104(((NU8) 37), (*n).Info, tupletype);
	asgnRefNoCycle((void**) &(*tupletype).N, newnodei_189099(((NU8) 136), (*n).Info));
	scope_453737 = 0;
	HEX3Atmp_453817 = 0;
	HEX3Atmp_453817 = (*c).Currentscope;
	current_453819 = HEX3Atmp_453817;
	while (1) {
		tsym188833* it_453754;
		tstrtable188807 HEX3Atmp_453812;
		ttabiter197090 it_453814;
		tsym188833* s_453816;
		if (!!((current_453819 == NIM_NIL))) goto LA1;
		scope_453737 = current_453819;
		{
			if (!(scope_453737 == (*c).Toplevelscope)) goto LA4;
			goto LA1;
		}
		LA4: ;
		it_453754 = 0;
		memset((void*)&HEX3Atmp_453812, 0, sizeof(HEX3Atmp_453812));
		HEX3Atmp_453812.Counter = (*scope_453737).Symbols.Counter;
		HEX3Atmp_453812.Data = (*scope_453737).Symbols.Data;
		memset((void*)&it_453814, 0, sizeof(it_453814));
		s_453816 = inittabiter_197093(&it_453814, HEX3Atmp_453812);
		while (1) {
			if (!!((s_453816 == NIM_NIL))) goto LA6;
			it_453754 = s_453816;
			{
				NIM_BOOL LOC9;
				ttype188837* LOC11;
				tsym188833* field;
				tsym188833* LOC14;
				tnode188803* LOC15;
				tnode188803* a;
				LOC9 = 0;
				LOC9 = ((2099976 &(1<<(((*it_453754).Kind)&31)))!=0);
				if (!(LOC9)) goto LA10;
				LOC11 = 0;
				LOC11 = skiptypes_192793((*it_453754).Typ, 8390656);
				LOC9 = !(((*LOC11).Kind == ((NU8) 48) || (*LOC11).Kind == ((NU8) 27) || (*LOC11).Kind == ((NU8) 8) || (*LOC11).Kind == ((NU8) 59) || (*LOC11).Kind == ((NU8) 6) || (*LOC11).Kind == ((NU8) 7) || (*LOC11).Kind == ((NU8) 3)));
				LA10: ;
				if (!LOC9) goto LA12;
				LOC14 = 0;
				LOC14 = getcurrowner_250215();
				field = newsym_189053(((NU8) 19), (*it_453754).Name, LOC14, (*n).Info);
				asgnRefNoCycle((void**) &(*field).Typ, skiptypes_192793((*it_453754).Typ, 8390656));
				(*field).Position = counter;
				counter += 1;
				LOC15 = 0;
				LOC15 = newsymnode_189095(field);
				addson_189207((*tupletype).N, LOC15);
				addsonskipintlit_242461(tupletype, (*field).Typ);
				a = newsymnode_190723(it_453754, (*result).Info);
				{
					ttype188837* LOC18;
					LOC18 = 0;
					LOC18 = skiptypes_192793((*it_453754).Typ, 2048);
					if (!((*LOC18).Kind == ((NU8) 23))) goto LA19;
					a = newderef_439802(a);
				}
				LA19: ;
				add_189390(result, a);
			}
			LA12: ;
			s_453816 = nextiter_197099(&it_453814, HEX3Atmp_453812);
		} LA6: ;
		current_453819 = (*current_453819).Parent;
	} LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, magicsafteroverloadresolution_453828)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	tnode188803* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_189694(n, 0);
	switch ((*(*LOC1).kindU.S4.Sym).Magic) {
	case ((NU16) 164):
	{
		result = semispartof_453269(c, n, flags);
	}
	break;
	case ((NU16) 7):
	{
		result = semtypetraits_453403(c, n);
	}
	break;
	case ((NU16) 165):
	{
		tnode188803* LOC5;
		NimStringDesc* LOC6;
		LOC5 = 0;
		LOC5 = HEX5BHEX5D_189694(n, 1);
		LOC6 = 0;
		LOC6 = rendertree_211051(LOC5, 4);
		result = newstrnodet_261030(LOC6, n);
		asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 28)));
	}
	break;
	case ((NU16) 262):
	{
		result = seminstantiationinfo_453306(c, n);
	}
	break;
	case ((NU16) 23):
	{
		result = semord_453484(c, n);
	}
	break;
	case ((NU16) 5):
	{
		result = semlowhigh_450811(c, n, ((NU16) 5));
	}
	break;
	case ((NU16) 11):
	{
		result = semshallowcopy_453823(c, n, flags);
	}
	break;
	case ((NU16) 254):
	{
		result = sembindsym_453518(c, n);
	}
	break;
	case ((NU16) 255):
	{
		result = semlocals_453730(c, n);
	}
	break;
	default:
	{
		result = n;
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, fixuptypeaftereval_416801)(tcontext250019* c, tnode188803* evaluated, tnode188803* eorig) {
	tnode188803* result;
	result = 0;
	{
		if (!((*(*eorig).Typ).Kind == ((NU8) 6) || (*(*eorig).Typ).Kind == ((NU8) 7) || (*(*eorig).Typ).Kind == ((NU8) 8))) goto LA3;
		result = semexprwithtype_416011(c, evaluated, 0);
	}
	goto LA1;
	LA3: ;
	{
		ttype188837* expectedtype;
		result = evaluated;
		expectedtype = skiptypes_192793((*eorig).Typ, IL64(576460752303423488));
		annotatetype_415194(result, expectedtype);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, evalatcompiletime_453850)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tsym188833* 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[0]).Kind == ((NU8) 3)));
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	callee = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	{
		NIM_BOOL LOC9;
		NIM_BOOL LOC10;
		tnode188803* call;
		NIM_BOOL allconst;
		NI i_453996;
		NI HEX3Atmp_454405;
		NI LOC15;
		NI res_454407;
		LOC9 = 0;
		LOC10 = 0;
		LOC10 = !(((*callee).Magic == ((NU16) 0)));
		if (!(LOC10)) goto LA11;
		LOC10 = ((TMP2895[(*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_189104(((NU8) 27), (*n).Info, (*n).Typ);
		add_189390(call, (*n).kindU.S6.Sons->data[0]);
		allconst = NIM_TRUE;
		i_453996 = 0;
		HEX3Atmp_454405 = 0;
		LOC15 = 0;
		LOC15 = len_189264(n);
		HEX3Atmp_454405 = LOC15 - 1;
		res_454407 = 1;
		while (1) {
			tnode188803* a;
			if (!(res_454407 <= HEX3Atmp_454405)) goto LA16;
			i_453996 = res_454407;
			a = getconstexpr_261002((*c).Module, (*n).kindU.S6.Sons->data[i_453996]);
			{
				if (!(a == NIM_NIL)) goto LA19;
				allconst = NIM_FALSE;
				a = (*n).kindU.S6.Sons->data[i_453996];
				{
					if (!((*a).Kind == ((NU8) 58))) goto LA23;
					a = (*a).kindU.S6.Sons->data[1];
				}
				LA23: ;
			}
			LA19: ;
			add_189390(call, a);
			res_454407 += 1;
		} LA16: ;
		{
			if (!allconst) goto LA27;
			result = getconstexpr_261002((*c).Module, call);
			{
				if (!result == 0) goto LA31;
				result = n;
			}
			goto LA29;
			LA31: ;
			{
				goto BeforeRet;
			}
			LA29: ;
		}
		LA27: ;
		asgnRefNoCycle((void**) &(*result).Typ, getintervaltype_261393((*callee).Magic, call));
	}
	LA13: ;
	{
		{
			NI LOC37;
			NI i_454100;
			NI HEX3Atmp_454409;
			NI LOC40;
			NI res_454411;
			ttypeseq188835* LOC50;
			TY350968 LOC51;
			LOC37 = 0;
			LOC37 = len_189264(n);
			if (!(1 < LOC37)) goto LA38;
			i_454100 = 0;
			HEX3Atmp_454409 = 0;
			LOC40 = 0;
			LOC40 = len_189264(n);
			HEX3Atmp_454409 = LOC40 - 1;
			res_454411 = 1;
			while (1) {
				if (!(res_454411 <= HEX3Atmp_454409)) goto LA41;
				i_454100 = res_454411;
				{
					NIM_BOOL LOC44;
					tnode188803* LOC45;
					tnode188803* LOC47;
					LOC44 = 0;
					LOC45 = 0;
					LOC45 = HEX5BHEX5D_189694(n, i_454100);
					LOC44 = !(((*(*LOC45).Typ).Kind == ((NU8) 59)));
					if (LOC44) goto LA46;
					LOC47 = 0;
					LOC47 = HEX5BHEX5D_189694(n, i_454100);
					LOC44 = !((((*(*LOC47).Typ).Flags &(1<<((((NU8) 9))&31)))!=0));
					LA46: ;
					if (!LOC44) goto LA48;
					goto LA34;
				}
				LA48: ;
				res_454411 += 1;
			} LA41: ;
			LOC50 = 0;
			LOC50 = (ttypeseq188835*) newSeq((&NTI188835), 1);
			memset((void*)LOC51, 0, sizeof(LOC51));
			LOC51[0] = (*n).Typ;
			asgnRefNoCycle((void**) &LOC50->data[0], LOC51[0]);
			asgnRefNoCycle((void**) &(*n).Typ, newtypewithsons_250675(c, ((NU8) 59), LOC50));
			(*(*n).Typ).Flags |=((NI32)(1)<<((((NU8) 9))%(sizeof(NI32)*8)));
		}
		LA38: ;
	} LA34: ;
	{
		NIM_BOOL LOC54;
		tnode188803* call;
		NI i_454337;
		NI HEX3Atmp_454413;
		NI LOC81;
		NI res_454415;
		LOC54 = 0;
		LOC54 = !(((8389632 & (*callee).Flags) == 0));
		if (!(LOC54)) goto LA55;
		LOC54 = ((48 & (*callee).Flags) == 0);
		LA55: ;
		if (!LOC54) goto LA56;
		{
			NIM_BOOL LOC60;
			LOC60 = 0;
			LOC60 = !((((*callee).Flags &(1<<((((NU8) 23))&31)))!=0));
			if (!(LOC60)) goto LA61;
			LOC60 = !(((goptions_137108 &(1<<((((NU8) 20))&31)))!=0));
			LA61: ;
			if (!LOC60) goto LA62;
			goto BeforeRet;
		}
		LA62: ;
		{
			if (!!(((TMP2895[(*callee).Magic/8] &(1<<((*callee).Magic%8)))!=0))) goto LA66;
			goto BeforeRet;
		}
		LA66: ;
		{
			NIM_BOOL LOC70;
			LOC70 = 0;
			LOC70 = !(((69632 &(1<<(((*callee).Kind)&31)))!=0));
			if (LOC70) goto LA71;
			LOC70 = isgenericroutine_194927(callee);
			LA71: ;
			if (!LOC70) goto LA72;
			goto BeforeRet;
		}
		LA72: ;
		{
			NIM_BOOL LOC76;
			NIM_BOOL LOC78;
			LOC76 = 0;
			LOC76 = !(((*n).Typ == NIM_NIL));
			if (!(LOC76)) goto LA77;
			LOC78 = 0;
			LOC78 = typeallowed_223180((*n).Typ, ((NU8) 10));
			LOC76 = !(LOC78);
			LA77: ;
			if (!LOC76) goto LA79;
			goto BeforeRet;
		}
		LA79: ;
		call = newnodeit_189104(((NU8) 27), (*n).Info, (*n).Typ);
		add_189390(call, (*n).kindU.S6.Sons->data[0]);
		i_454337 = 0;
		HEX3Atmp_454413 = 0;
		LOC81 = 0;
		LOC81 = len_189264(n);
		HEX3Atmp_454413 = LOC81 - 1;
		res_454415 = 1;
		while (1) {
			tnode188803* a;
			if (!(res_454415 <= HEX3Atmp_454413)) goto LA82;
			i_454337 = res_454415;
			a = getconstexpr_261002((*c).Module, (*n).kindU.S6.Sons->data[i_454337]);
			{
				if (!(a == NIM_NIL)) goto LA85;
				result = n;
				goto BeforeRet;
			}
			LA85: ;
			add_189390(call, a);
			res_454415 += 1;
		} LA82: ;
		{
			if (!(((*callee).Flags &(1<<((((NU8) 23))&31)))!=0)) goto LA89;
			result = evalstaticexpr_410429((*c).Module, call, (*(*c).P).Owner);
			{
				NimStringDesc* LOC95;
				if (!result == 0) goto LA93;
				LOC95 = 0;
				LOC95 = rendertree_211051(call, 0);
				localerror_165571((*n).Info, ((NU16) 208), LOC95);
			}
			goto LA91;
			LA93: ;
			{
				result = fixuptypeaftereval_416801(c, result, n);
			}
			LA91: ;
		}
		goto LA87;
		LA89: ;
		{
			result = evalconstexpr_410422((*c).Module, call);
			{
				if (!result == 0) goto LA100;
				result = n;
			}
			goto LA98;
			LA100: ;
			{
				result = fixuptypeaftereval_416801(c, result, n);
			}
			LA98: ;
		}
		LA87: ;
	}
	LA56: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, aftercallactions_455231)(tcontext250019* c, tnode188803* n, tnode188803* orig, NU16 flags) {
	tnode188803* result;
	tsym188833* callee;
	result = 0;
	result = n;
	callee = (*(*result).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	switch ((*callee).Kind) {
	case ((NU8) 17):
	{
		result = semmacroexpr_416657(c, result, orig, callee, flags);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_416648(c, result, callee, flags);
	}
	break;
	default:
	{
		semfinishoperands_353494(c, result);
		activate_416104(c, result);
		fixabstracttype_452189(c, result);
		analyseifaddresstakenincall_452906(c, result);
		{
			if (!!(((*callee).Magic == ((NU16) 0)))) goto LA6;
			result = magicsafteroverloadresolution_453828(c, result, flags);
		}
		LA6: ;
	}
	break;
	}
	{
		if (!((*c).Intypeclass == 0)) goto LA10;
		result = evalatcompiletime_453850(c, result);
	}
	LA10: ;
	return result;
}

N_NIMCALL(tnode188803*, semdirectop_416631)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	tnode188803* norig;
	result = 0;
	norig = copytree_189237(n);
	result = semoverloadedcallanalyseeffects_454454(c, n, norig, flags);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		result = aftercallactions_455231(c, result, norig, flags);
	}
	goto LA1;
	LA3: ;
	{
		result = errornode_251142(c, n);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, evalpattern_417167)(tcontext250019* c, tnode188803* n, tnode188803* orig) {
	tnode188803* result;
	NimStringDesc* rule;
	tsym188833* 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[0]).Kind == ((NU8) 3));
		LA4: ;
		if (!!(LOC3)) goto LA5;
		LOC7 = 0;
		LOC7 = HEX24_165714(TMP2879);
		internalerror_165606(LOC7);
	}
	LA5: ;
	rule = 0;
	{
		NIM_BOOL LOC10;
		LOC10 = 0;
		LOC10 = ((goptions_137108 &(1<<((((NU8) 12))&31)))!=0);
		if (!(LOC10)) goto LA11;
		LOC10 = ((gnotes_164181 &(IL64(1)<<(((((NU16) 271)- 230))&IL64(63))))!=0);
		LA11: ;
		if (!LOC10) goto LA12;
		rule = rendertree_211051(n, 4);
	}
	LA12: ;
	s = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	switch ((*s).Kind) {
	case ((NU8) 17):
	{
		result = semmacroexpr_416657(c, n, orig, s, 0);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_416648(c, n, s, 0);
	}
	break;
	default:
	{
		result = semdirectop_416631(c, n, 0);
	}
	break;
	}
	{
		NIM_BOOL LOC19;
		NimStringDesc* LOC23;
		NimStringDesc* LOC24;
		LOC19 = 0;
		LOC19 = ((goptions_137108 &(1<<((((NU8) 12))&31)))!=0);
		if (!(LOC19)) goto LA20;
		LOC19 = ((gnotes_164181 &(IL64(1)<<(((((NU16) 271)- 230))&IL64(63))))!=0);
		LA20: ;
		if (!LOC19) goto LA21;
		LOC23 = 0;
		LOC24 = 0;
		LOC24 = rendertree_211051(result, 4);
		LOC23 = rawNewString(rule->Sup.len + LOC24->Sup.len + 7);
appendString(LOC23, rule);
appendString(LOC23, ((NimStringDesc*) &TMP2968));
appendString(LOC23, LOC24);
appendString(LOC23, ((NimStringDesc*) &TMP2969));
		message_165584((*orig).Info, ((NU16) 271), LOC23);
	}
	LA21: ;
	return result;
}

N_NIMCALL(tnode188803*, applypatterns_417332)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NI i_417370;
	NI HEX3Atmp_417845;
	NI res_417847;
	result = 0;
	result = n;
	i_417370 = 0;
	HEX3Atmp_417845 = 0;
	HEX3Atmp_417845 = (*c).Patterns->Sup.len - 1;
	res_417847 = HEX3Atmp_417845;
	while (1) {
		tsym188833* pattern;
		if (!(0 <= res_417847)) goto LA1;
		i_417370 = res_417847;
		pattern = (*c).Patterns->data[i_417370];
		{
			tnode188803* x;
			if (!!(pattern == 0)) goto LA4;
			x = applyrule_414255(c, pattern, result);
			{
				if (!!(x == 0)) goto LA8;
				evaltemplatecounter_390273 += 1;
				{
					if (!(100 < evaltemplatecounter_390273)) goto LA12;
					globalerror_165558((*n).Info, ((NU16) 183), ((NimStringDesc*) &TMP2675));
				}
				LA12: ;
				asgnRefNoCycle((void**) &(*c).Patterns->data[i_417370], NIM_NIL);
				{
					if (!((*x).Kind == ((NU8) 114))) goto LA16;
					asgnRefNoCycle((void**) &(*x).kindU.S6.Sons->data[1], evalpattern_417167(c, (*x).kindU.S6.Sons->data[1], result));
					result = flattenstmts_222251(x);
				}
				goto LA14;
				LA16: ;
				{
					result = evalpattern_417167(c, x, result);
				}
				LA14: ;
				evaltemplatecounter_390273 -= 1;
				asgnRefNoCycle((void**) &(*c).Patterns->data[i_417370], pattern);
			}
			LA8: ;
		}
		LA4: ;
		res_417847 -= 1;
	} LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, hlo_417163)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	(*c).Hloloopdetector += 1;
	{
		if (!(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[0]).Kind == ((NU8) 3));
			LA11: ;
			LOC9 = LOC10;
			if (!(LOC9)) goto LA12;
			LOC9 = ((520 & (*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Flags) == 520);
			LA12: ;
			if (!LOC9) goto LA13;
			result = n;
			goto BeforeRet;
		}
		LA13: ;
		result = applypatterns_417332(c, n);
		{
			NI i_418010;
			NI HEX3Atmp_418057;
			NI LOC19;
			NI res_418059;
			if (!(result == n)) goto LA17;
			i_418010 = 0;
			HEX3Atmp_418057 = 0;
			LOC19 = 0;
			LOC19 = safelen_189320(result);
			HEX3Atmp_418057 = LOC19 - 1;
			res_418059 = 0;
			while (1) {
				tnode188803* a;
				tnode188803* h;
				if (!(res_418059 <= HEX3Atmp_418057)) goto LA20;
				i_418010 = res_418059;
				a = (*result).kindU.S6.Sons->data[i_418010];
				h = hlo_417163(c, a);
				{
					if (!!((h == a))) goto LA23;
					asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_418010], h);
				}
				LA23: ;
				res_418059 += 1;
			} LA20: ;
		}
		goto LA15;
		LA17: ;
		{
			{
				NIM_BOOL LOC28;
				LOC28 = 0;
				LOC28 = isemptytype_195210((*n).Typ);
				if (!(LOC28)) goto LA29;
				LOC28 = isemptytype_195210((*result).Typ);
				LA29: ;
				if (!LOC28) goto LA30;
			}
			goto LA26;
			LA30: ;
			{
				result = fitnode_416037(c, (*n).Typ, result);
			}
			LA26: ;
			result = commonoptimizations_377442((*c).Module, result);
			result = hlo_417163(c, result);
			result = commonoptimizations_377442((*c).Module, result);
		}
		LA15: ;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, hlobody_418063)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*c).Patterns->Sup.len == 0);
		if (LOC3) goto LA4;
		LOC3 = !(((goptions_137108 &(1<<((((NU8) 21))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
		goto BeforeRet;
	}
	LA5: ;
	(*c).Hloloopdetector = 0;
	result = hlo_417163(c, n);
	BeforeRet: ;
	return result;
}

static N_INLINE(void, popproccon_250358)(tcontext250019* c) {
	asgnRef((void**) &(*c).P, (*(*c).P).Next);
}

N_NIMCALL(void, fixupinstantiatedsymbols_419136)(tcontext250019* c, tsym188833* s) {
	NI i_419163;
	NI HEX3Atmp_419180;
	NI res_419182;
	i_419163 = 0;
	HEX3Atmp_419180 = 0;
	HEX3Atmp_419180 = (NI32)((*c).Generics->Sup.len - 1);
	res_419182 = 0;
	while (1) {
		if (!(res_419182 <= HEX3Atmp_419180)) goto LA1;
		i_419163 = res_419182;
		{
			tsym188833* oldprc;
			tscope188827* LOC6;
			tnode188803* n;
			tnode188803* LOC7;
			if (!((*(*c).Generics->data[i_419163].Genericsym).Sup.Id == (*s).Sup.Id)) goto LA4;
			oldprc = (*(*c).Generics->data[i_419163].Inst).Sym;
			pushinfocontext_164697((*oldprc).Info);
			LOC6 = 0;
			LOC6 = openscope_252167(c);
			n = (*oldprc).Ast;
			LOC7 = 0;
			LOC7 = getbody_239244(s);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], copytree_189237(LOC7));
			instantiatebody_419026(c, n, oldprc);
			closescope_252179(c);
			popinfocontext_164720();
		}
		LA4: ;
		res_419182 += 1;
	} LA1: ;
}

N_NIMCALL(tsym188833*, searchforborrowproc_422198)(tcontext250019* c, tscope188827* startscope, tsym188833* fn) {
	tsym188833* result;
	tnode188803* call;
	NIM_BOOL hasdistinct;
	tnode188803* LOC1;
	NI i_422227;
	NI HEX3Atmp_422327;
	NI LOC2;
	NI res_422329;
	result = 0;
	call = newnodei_189099(((NU8) 27), (*fn).Info);
	hasdistinct = NIM_FALSE;
	LOC1 = 0;
	LOC1 = newidentnode_189090((*fn).Name, (*fn).Info);
	add_189390(call, LOC1);
	i_422227 = 0;
	HEX3Atmp_422327 = 0;
	LOC2 = 0;
	LOC2 = len_189264((*(*fn).Typ).N);
	HEX3Atmp_422327 = LOC2 - 1;
	res_422329 = 1;
	while (1) {
		tnode188803* param;
		ttype188837* t;
		ttype188837* LOC10;
		tnode188803* LOC11;
		if (!(res_422329 <= HEX3Atmp_422327)) goto LA3;
		i_422227 = res_422329;
		param = (*(*(*fn).Typ).N).kindU.S6.Sons->data[i_422227];
		t = skiptypes_192793((*param).Typ, IL64(211106240964608));
		{
			NIM_BOOL LOC6;
			LOC6 = 0;
			LOC6 = ((*t).Kind == ((NU8) 13));
			if (LOC6) goto LA7;
			LOC6 = ((*(*param).Typ).Kind == ((NU8) 13));
			LA7: ;
			if (!LOC6) goto LA8;
			hasdistinct = NIM_TRUE;
		}
		LA8: ;
		LOC10 = 0;
		LOC10 = baseofdistinct_232723(t);
		LOC11 = 0;
		LOC11 = newnodeit_189104(((NU8) 1), (*fn).Info, LOC10);
		add_189390(call, LOC11);
		res_422329 += 1;
	} LA3: ;
	{
		tnode188803* resolved;
		NU32 LOC16;
		if (!hasdistinct) goto LA14;
		LOC16 = 0;
		LOC16 |=(1<<((NI32)((*fn).Kind)%(sizeof(NI32)*8)));
		resolved = semoverloadedcall_421913(c, call, call, LOC16);
		{
			if (!!((resolved == NIM_NIL))) goto LA19;
			result = (*(*resolved).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		}
		LA19: ;
	}
	LA14: ;
	return result;
}

N_NIMCALL(void, semborrow_445832)(tcontext250019* c, tnode188803* n, tsym188833* s) {
	tsym188833* b;
	b = searchforborrowproc_422198(c, (*(*c).Currentscope).Parent, s);
	{
		if (!!((b == NIM_NIL))) goto LA3;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], newsymnode_189095(b));
	}
	goto LA1;
	LA3: ;
	{
		localerror_165571((*n).Info, ((NU16) 139), ((NimStringDesc*) &TMP2675));
	}
	LA1: ;
}

N_NIMCALL(void, sideeffectscheck_419186)(tcontext250019* c, tsym188833* s) {
	{
		if (!((3072 & (*s).Flags) == 3072)) goto LA3;
		localerror_165571((*s).Info, ((NU16) 217), (*(*s).Name).S);
	}
	LA3: ;
}

N_NIMCALL(tnode188803*, semprocaux_446878)(tcontext250019* c, tnode188803* n, NU8 kind, tspecialwords171011 validpragmas, NU8 phase) {
	tnode188803* result;
	tsym188833* s;
	NIM_BOOL typeisdetermined;
	NIM_BOOL isanon;
	tscope188827* oldscope;
	tscope188827* LOC25;
	tnode188803* gp;
	tsym188833* proto;
	result = 0;
	result = semprocannotation_446024(c, n);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = n;
	checksonslen_251209(n, 7);
	s = 0;
	typeisdetermined = NIM_FALSE;
	isanon = NIM_FALSE;
	{
		tnode188803* LOC7;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_189694(n, 0);
		if (!!(((*LOC7).Kind == ((NU8) 3)))) goto LA8;
		{
			tnode188803* LOC12;
			tsym188833* LOC15;
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_189694(n, 0);
			if (!((*LOC12).Kind == ((NU8) 1))) goto LA13;
			LOC15 = 0;
			LOC15 = getcurrowner_250215();
			s = newsym_189053(kind, idanon_167476, LOC15, (*n).Info);
			isanon = NIM_TRUE;
		}
		goto LA10;
		LA13: ;
		{
			s = semidentdef_441944(c, (*n).kindU.S6.Sons->data[0], kind);
		}
		LA10: ;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], newsymnode_189095(s));
		asgnRefNoCycle((void**) &(*s).Ast, n);
		asgnRef((void**) &(*s).kindU.S2.Scope, (*c).Currentscope);
		{
			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_252701(c, (*c).Currentscope, s);
			(*s).Flags |=((NI32)(1)<<((((NU8) 4))%(sizeof(NI32)*8)));
			goto BeforeRet;
		}
		LA21: ;
	}
	goto LA5;
	LA8: ;
	{
		tnode188803* LOC24;
		LOC24 = 0;
		LOC24 = HEX5BHEX5D_189694(n, 0);
		s = (*LOC24).kindU.S4.Sym;
		asgnRefNoCycle((void**) &(*s).Owner, getcurrowner_250215());
		typeisdetermined = ((*s).Typ == NIM_NIL);
		asgnRefNoCycle((void**) &(*s).Ast, n);
		asgnRef((void**) &(*s).kindU.S2.Scope, (*c).Currentscope);
	}
	LA5: ;
	oldscope = (*c).Currentscope;
	asgnRef((void**) &(*c).Currentscope, (*s).kindU.S2.Scope);
	pushowner_250218(s);
	LOC25 = 0;
	LOC25 = openscope_252167(c);
	gp = 0;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)))) goto LA28;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[2], semgenericparamlist_429851(c, (*n).kindU.S6.Sons->data[2], NIM_NIL));
		gp = (*n).kindU.S6.Sons->data[2];
	}
	goto LA26;
	LA28: ;
	{
		gp = newnodei_189099(((NU8) 75), (*n).Info);
	}
	LA26: ;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[3]).Kind == ((NU8) 1)))) goto LA33;
		semparamlist_416066(c, (*n).kindU.S6.Sons->data[3], gp, s);
		{
			NI LOC37;
			LOC37 = 0;
			LOC37 = sonslen_189181(gp);
			if (!(0 < LOC37)) goto LA38;
			{
				if (!((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 1))) goto LA42;
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[2], gp);
			}
			LA42: ;
		}
		LA38: ;
	}
	goto LA31;
	LA33: ;
	{
		asgnRefNoCycle((void**) &(*s).Typ, newtypes_250180(((NU8) 25), c));
		rawaddson_193092((*s).Typ, NIM_NIL);
	}
	LA31: ;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 1)))) goto LA47;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], sempattern_431521(c, (*n).kindU.S6.Sons->data[1]));
	}
	LA47: ;
	{
		if (!((49152 &(1<<(((*s).Kind)&31)))!=0)) goto LA51;
		(*(*s).Typ).Flags |=((NI32)(1)<<((((NU8) 14))%(sizeof(NI32)*8)));
	}
	LA51: ;
	proto = searchforproc_266341(c, (*s).kindU.S2.Scope, s);
	{
		if (!(proto == NIM_NIL)) goto LA55;
		{
			if (!((*s).Kind == ((NU8) 15))) goto LA59;
			(*(*s).Typ).Callconv = ((NU8) 8);
		}
		goto LA57;
		LA59: ;
		{
			toptionentry250003* LOC62;
			LOC62 = 0;
			LOC62 = lastoptionentry_250154(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_252701(c, (*s).kindU.S2.Scope, s);
			}
			LA72: ;
		}
		goto LA63;
		LA68: ;
		{
			{
				if (!!(typeisdetermined)) goto LA77;
				addinterfacedeclat_252637(c, (*s).kindU.S2.Scope, s);
			}
			LA77: ;
		}
		LA63: ;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[4]).Kind == ((NU8) 1)))) goto LA81;
			pragma_267073(c, s, (*n).kindU.S6.Sons->data[4], validpragmas);
		}
		goto LA79;
		LA81: ;
		{
			implicitpragmas_271915(c, s, n, validpragmas);
		}
		LA79: ;
	}
	goto LA53;
	LA55: ;
	{
		tscope188827* LOC93;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[4]).Kind == ((NU8) 1)))) goto LA87;
			localerror_165571((*(*n).kindU.S6.Sons->data[4]).Info, ((NU16) 136), ((NimStringDesc*) &TMP2675));
		}
		LA87: ;
		{
			if (!!((((*proto).Flags &(1<<((((NU8) 4))&31)))!=0))) goto LA91;
			wrongredefinition_252535((*n).Info, (*(*proto).Name).S);
		}
		LA91: ;
		(*proto).Flags &= ~((NI32)(1) << ((((NU8) 4)) % (sizeof(NI32)*8)));
		closescope_252179(c);
		LOC93 = 0;
		LOC93 = openscope_252167(c);
		{
			if (!!(((*(*(*proto).Ast).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)))) goto LA96;
			addgenericparamlisttoscope_444632(c, (*(*proto).Ast).kindU.S6.Sons->data[2]);
		}
		LA96: ;
		addparams_416073(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[2], (*(*proto).Ast).kindU.S6.Sons->data[2]);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[3], (*(*proto).Ast).kindU.S6.Sons->data[3]);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[4], (*(*proto).Ast).kindU.S6.Sons->data[4]);
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA100;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2858));
		}
		LA100: ;
		asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym, proto);
		{
			NIM_BOOL LOC104;
			NimStringDesc* LOC108;
			LOC104 = 0;
			LOC104 = importantcomments_137145();
			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_250222();
		pushowner_250218(s);
	}
	LA53: ;
	(*s).Options = goptions_137108;
	{
		if (!(((*s).Flags &(1<<((((NU8) 30))&31)))!=0)) goto LA111;
		dodestructorstuff_438223(c, s, n);
	}
	LA111: ;
	{
		NIM_BOOL usepseudogenerics;
		if (!!(((*(*n).kindU.S6.Sons->data[6]).Kind == ((NU8) 1)))) goto LA115;
		{
			if (!(((*s).Flags &(1<<((((NU8) 26))&31)))!=0)) goto LA119;
			localerror_165571((*(*n).kindU.S6.Sons->data[6]).Info, ((NU16) 137), (*(*s).Name).S);
		}
		LA119: ;
		usepseudogenerics = ((393216 &(1<<((kind)&31)))!=0);
		{
			NIM_BOOL LOC123;
			LOC123 = 0;
			LOC123 = ((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 1));
			if (LOC123) goto LA124;
			LOC123 = usepseudogenerics;
			LA124: ;
			if (!LOC123) goto LA125;
			{
				if (!!(usepseudogenerics)) goto LA129;
				paramstypecheck_416620(c, (*s).Typ);
			}
			LA129: ;
			pushproccon_250317(c, s);
			maybeaddresult_416079(c, s, n);
			{
				tnode188803* sembody;
				tnode188803* LOC135;
				if (!!((((*s).Flags &(1<<((((NU8) 5))&31)))!=0))) goto LA133;
				LOC135 = 0;
				LOC135 = semprocbody_416032(c, (*n).kindU.S6.Sons->data[6]);
				sembody = hlobody_418063(c, LOC135);
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], transformbody_378285((*c).Module, sembody, s));
			}
			LA133: ;
			popproccon_250358(c);
		}
		goto LA121;
		LA125: ;
		{
			tintset185047 tobind;
			{
				NIM_BOOL LOC139;
				tident167019* LOC143;
				tsym188833* LOC144;
				LOC139 = 0;
				LOC139 = !(((*(*s).Typ).Sons->data[0] == NIM_NIL));
				if (!(LOC139)) goto LA140;
				LOC139 = !(((49152 &(1<<((kind)&31)))!=0));
				LA140: ;
				if (!LOC139) goto LA141;
				LOC143 = 0;
				LOC143 = getident_167456(((NimStringDesc*) &TMP2711));
				LOC144 = 0;
				LOC144 = newsym_189053(((NU8) 0), LOC143, NIM_NIL, (*n).Info);
				adddecl_252550(c, LOC144);
			}
			LA141: ;
			chckNil((void*)&tobind);
			memset((void*)&tobind, 0, sizeof(tobind));
			initintset_185918(&tobind);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], semgenericstmtscope_435008(c, (*n).kindU.S6.Sons->data[6], 0, &tobind));
			fixupinstantiatedsymbols_419136(c, s);
		}
		LA121: ;
		{
			if (!(((*s).Flags &(1<<((((NU8) 5))&31)))!=0)) goto LA147;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], emptynode_189727);
		}
		LA147: ;
	}
	goto LA113;
	LA115: ;
	{
		{
			if (!!((proto == NIM_NIL))) goto LA152;
			localerror_165571((*n).Info, ((NU16) 138), (*(*proto).Name).S);
		}
		LA152: ;
		{
			NIM_BOOL LOC156;
			LOC156 = 0;
			LOC156 = ((67108896 & (*s).Flags) == 0);
			if (!(LOC156)) goto LA157;
			LOC156 = ((*s).Magic == ((NU16) 0));
			LA157: ;
			if (!LOC156) goto LA158;
			(*s).Flags |=((NI32)(1)<<((((NU8) 4))%(sizeof(NI32)*8)));
		}
		goto LA154;
		LA158: ;
		{
			if (!(((*s).Flags &(1<<((((NU8) 26))&31)))!=0)) goto LA161;
			semborrow_445832(c, n, s);
		}
		goto LA154;
		LA161: ;
		LA154: ;
	}
	LA113: ;
	sideeffectscheck_419186(c, s);
	closescope_252179(c);
	asgnRef((void**) &(*c).Currentscope, oldscope);
	popowner_250222();
	{
		if (!!(((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 1)))) goto LA165;
		(*c).Patterns = (tsymseq188805*) incrSeq(&((*c).Patterns)->Sup, sizeof(tsym188833*));
		asgnRefNoCycle((void**) &(*c).Patterns->data[(*c).Patterns->Sup.len-1], s);
	}
	LA165: ;
	{
		if (!isanon) goto LA169;
		asgnRefNoCycle((void**) &(*result).Typ, (*s).Typ);
	}
	LA169: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, determinetype_419847)(tcontext250019* c, tsym188833* s) {
	tnode188803* LOC5;
	{
		if (!!(((*s).Typ == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = semprocaux_446878(c, (*s).Ast, (*s).Kind, TMP3011, ((NU8) 1));
	BeforeRet: ;
}

N_NIMCALL(void, pickbestcandidate_419851)(tcontext250019* c, tnode188803* headsymbol, tnode188803* n, tnode188803* orig, tnode188803* initialbinding, NU32 filter, tcandidate345205* best, tcandidate345205* alt, TY110805** errors) {
	toverloaditer252363 o;
	tsym188833* sym;
	NI symscope;
	tcandidate345205 z;
	memset((void*)&o, 0, sizeof(o));
	sym = initoverloaditer_253331(&o, c, headsymbol);
	symscope = lastoverloadscope_253667(&o);
	memset((void*)&z, 0, sizeof(z));
	{
		if (!(sym == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	initcandidate_345274(c, best, sym, initialbinding, symscope);
	initcandidate_345274(c, alt, sym, initialbinding, symscope);
	(*best).State = ((NU8) 2);
	while (1) {
		if (!!((sym == NIM_NIL))) goto LA5;
		{
			NI LOC10;
			if (!((filter &(1<<(((*sym).Kind)&31)))!=0)) goto LA8;
			determinetype_419847(c, sym);
			LOC10 = 0;
			LOC10 = lastoverloadscope_253667(&o);
			initcandidate_345274(c, &z, sym, initialbinding, LOC10);
			z.Calleesym = sym;
			matches_353566(c, n, orig, &z);
			{
				NIM_BOOL LOC13;
				NimStringDesc* LOC16;
				LOC13 = 0;
				LOC13 = HEX3DHEX3D_164476((*errors), NIM_NIL);
				if (!!(LOC13)) goto LA14;
				LOC16 = 0;
				LOC16 = getprocheader_223025(sym);
				safeadd_164460(errors, LOC16);
				{
					NIM_BOOL LOC19;
					NimStringDesc* err_419981;
					TY110805* HEX3Atmp_420037;
					NI i_420039;
					NI l_420041;
					LOC19 = 0;
					LOC19 = HEX3DHEX3D_164476(z.Errors, NIM_NIL);
					if (!!(LOC19)) goto LA20;
					err_419981 = 0;
					HEX3Atmp_420037 = 0;
					HEX3Atmp_420037 = z.Errors;
					i_420039 = 0;
					l_420041 = HEX3Atmp_420037->Sup.len;
					while (1) {
						NimStringDesc* LOC23;
						if (!(i_420039 < l_420041)) goto LA22;
						err_419981 = HEX3Atmp_420037->data[i_420039];
						LOC23 = 0;
						LOC23 = rawNewString(err_419981->Sup.len + 3);
appendString(LOC23, ((NimStringDesc*) &TMP3012));
appendString(LOC23, err_419981);
						(*errors)->data[(NI32)((*errors)->Sup.len - 1)] = resizeString((*errors)->data[(NI32)((*errors)->Sup.len - 1)], LOC23->Sup.len + 0);
appendString((*errors)->data[(NI32)((*errors)->Sup.len - 1)], LOC23);
						i_420039 += 1;
					} LA22: ;
				}
				LA20: ;
			}
			LA14: ;
			{
				if (!(z.State == ((NU8) 1))) goto LA26;
				{
					if (!((49152 &(1<<(((*sym).Kind)&31)))!=0)) goto LA30;
					z.Exactmatches += 200;
				}
				LA30: ;
				switch ((*best).State) {
				case ((NU8) 0):
				case ((NU8) 2):
				{
					genericAssign((void*)&(*best), (void*)&z, (&NTI345205));
				}
				break;
				case ((NU8) 1):
				{
					NI cmp;
					cmp = cmpcandidates_345815(&(*best), &z);
					{
						if (!(cmp < 0)) goto LA36;
						genericAssign((void*)&(*best), (void*)&z, (&NTI345205));
					}
					goto LA34;
					LA36: ;
					{
						if (!(cmp == 0)) goto LA39;
						genericAssign((void*)&(*alt), (void*)&z, (&NTI345205));
					}
					goto LA34;
					LA39: ;
					{
					}
					LA34: ;
				}
				break;
				}
			}
			LA26: ;
		}
		LA8: ;
		sym = nextoverloaditer_253684(&o, c, headsymbol);
	} LA5: ;
	BeforeRet: ;
}

static N_INLINE(NimStringDesc*, HEX5BHEX5D_78885)(NimStringDesc* s, tslice78892 x) {
	NimStringDesc* result;
	NI LOC1;
	NI LOC7;
	result = 0;
	LOC1 = 0;
	{
		if (!(0 <= x.A)) goto LA4;
		LOC1 = x.A;
	}
	goto LA2;
	LA4: ;
	{
		LOC1 = (NI32)(s->Sup.len + x.A);
	}
	LA2: ;
	LOC7 = 0;
	{
		if (!(0 <= x.B)) goto LA10;
		LOC7 = x.B;
	}
	goto LA8;
	LA10: ;
	{
		LOC7 = (NI32)(s->Sup.len + x.B);
	}
	LA8: ;
	result = copyStrLast(s, LOC1, LOC7);
	return result;
}

N_NIMCALL(void, notfounderror_420045)(tcontext250019* c, tnode188803* n, TY110805* errors) {
	NimStringDesc* result;
	NimStringDesc* LOC5;
	NimStringDesc* candidates;
	NimStringDesc* err_420066;
	NI i_420068;
	NI l_420070;
	{
		if (!(0 < (*c).Incompilescontext)) goto LA3;
		globalerror_165558((*n).Info, ((NU16) 129), ((NimStringDesc*) &TMP2675));
	}
	LA3: ;
	result = msgkindtostring_165071(((NU16) 129));
	LOC5 = 0;
	LOC5 = describeargs_345953(c, n, 1);
	result = resizeString(result, LOC5->Sup.len + 0);
appendString(result, LOC5);
	result = addChar(result, 41);
	candidates = copyString(((NimStringDesc*) &TMP2675));
	err_420066 = 0;
	i_420068 = 0;
	l_420070 = errors->Sup.len;
	while (1) {
		if (!(i_420068 < l_420070)) goto LA6;
		err_420066 = errors->data[i_420068];
		candidates = resizeString(candidates, err_420066->Sup.len + 0);
appendString(candidates, err_420066);
		candidates = resizeString(candidates, 1);
appendString(candidates, ((NimStringDesc*) &TMP3019));
		i_420068 += 1;
	} LA6: ;
	{
		NimStringDesc* LOC11;
		NimStringDesc* LOC12;
		if (!!(((candidates) && (candidates)->Sup.len == 0))) goto LA9;
		LOC11 = 0;
		LOC12 = 0;
		LOC12 = msgkindtostring_165071(((NU16) 130));
		LOC11 = rawNewString(LOC12->Sup.len + candidates->Sup.len + 2);
appendString(LOC11, ((NimStringDesc*) &TMP3019));
appendString(LOC11, LOC12);
appendString(LOC11, ((NimStringDesc*) &TMP3019));
appendString(LOC11, candidates);
		result = resizeString(result, LOC11->Sup.len + 0);
appendString(result, LOC11);
	}
	LA9: ;
	localerror_165571((*n).Info, ((NU16) 4), result);
}

N_NIMCALL(NIM_BOOL, samemethoddispatcher_419759)(tsym188833* a, tsym188833* b) {
	NIM_BOOL result;
	result = 0;
	result = NIM_FALSE;
	{
		NIM_BOOL LOC3;
		tnode188803* aa;
		tnode188803* bb;
		LOC3 = 0;
		LOC3 = ((*a).Kind == ((NU8) 13));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*b).Kind == ((NU8) 13));
		LA4: ;
		if (!LOC3) goto LA5;
		aa = lastson_189189((*a).Ast);
		bb = lastson_189189((*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_420191)(tcontext250019* c, tnode188803* n, tnode188803* orig, NU32 filter, tcandidate345205* Result) {
	tnode188803* initialbinding;
	tcandidate345205 alt;
	tnode188803* f;
	TY110805* errors;
	tnodeseq188797* usedsyms;
	NU8 overloadsstate;
	initialbinding = 0;
	memset((void*)&alt, 0, sizeof(alt));
	f = (*n).kindU.S6.Sons->data[0];
	{
		if (!((*f).Kind == ((NU8) 42))) goto LA3;
		initialbinding = f;
		f = (*f).kindU.S6.Sons->data[0];
	}
	goto LA1;
	LA3: ;
	{
		initialbinding = NIM_NIL;
	}
	LA1: ;
	errors = 0;
	usedsyms = 0;
	gatherusedsyms_420073(c, &usedsyms);
	{
		NIM_BOOL LOC8;
		tnode188803* hiddenarg;
		LOC8 = 0;
		LOC8 = HEX3DHEX3D_272164(usedsyms, NIM_NIL);
		if (!!(LOC8)) goto LA9;
		{
			if (!(1 < usedsyms->Sup.len)) goto LA13;
			hiddenarg = newnode_191003(((NU8) 56), (*n).Info, usedsyms, NIM_NIL);
		}
		goto LA11;
		LA13: ;
		{
			hiddenarg = usedsyms->data[0];
		}
		LA11: ;
		insert_420294(&(*n).kindU.S6.Sons, hiddenarg, 1);
		insert_420294(&(*orig).kindU.S6.Sons, hiddenarg, 1);
		pickbestcandidate_419851(c, f, n, orig, initialbinding, filter, Result, &alt, &errors);
		{
			if (!!(((*Result).State == ((NU8) 1)))) goto LA18;
			delete_420419(&(*n).kindU.S6.Sons, 1);
			delete_420419(&(*orig).kindU.S6.Sons, 1);
		}
		goto LA16;
		LA18: ;
		{
			goto BeforeRet;
		}
		LA16: ;
	}
	LA9: ;
	pickbestcandidate_419851(c, f, n, orig, initialbinding, filter, Result, &alt, &errors);
	overloadsstate = (*Result).State;
	{
		if (!!((overloadsstate == ((NU8) 1)))) goto LA23;
		{
			tnode188803* calleename;
			tnode188803* LOC37;
			tslice78892 LOC38;
			TY457200 LOC39;
			tslice78892 LOC40;
			TY457200 LOC41;
			if (!(((*n).Flags &(1<<((((NU8) 7))&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_189181(n);
				LOC31 = (2 <= LOC33);
				LA32: ;
				if (!!(LOC31)) goto LA34;
				LOC36 = 0;
				LOC36 = HEX24_165714(TMP3013);
				internalerror_165606(LOC36);
			}
			LA34: ;
			LOC37 = 0;
			LOC37 = newstrnode_189085(((NU8) 20), (*(*f).kindU.S5.Ident).S);
			calleename = withinfo_190675(LOC37, (*n).Info);
			LOC38 = HEX2EHEX2E_86221(0, 1);
			memset((void*)LOC39, 0, sizeof(LOC39));
			LOC39[0] = NIM_NIL;
			LOC39[1] = HEX5BHEX5D_189694(n, 1);
			LOC39[2] = calleename;
			HEX5BHEX5DHEX3D_420606(&(*n).kindU.S6.Sons, LOC38, LOC39, 3);
			LOC40 = HEX2EHEX2E_86221(0, 1);
			memset((void*)LOC41, 0, sizeof(LOC41));
			LOC41[0] = NIM_NIL;
			LOC41[1] = HEX5BHEX5D_189694(orig, 1);
			LOC41[2] = calleename;
			HEX5BHEX5DHEX3D_420606(&(*orig).kindU.S6.Sons, LOC40, LOC41, 3);
			{
				tnode188803* op_420913;
				tident167019* LOC46;
				if (!(((*n).Flags &(1<<((((NU8) 9))&15)))!=0)) goto LA44;
				LOC46 = 0;
				LOC46 = getident_167456(((NimStringDesc*) &TMP3015));
				op_420913 = newidentnode_189090(LOC46, (*n).Info);
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], op_420913);
				asgnRefNoCycle((void**) &(*orig).kindU.S6.Sons->data[0], op_420913);
				pickbestcandidate_419851(c, op_420913, n, orig, initialbinding, filter, Result, &alt, &errors);
			}
			LA44: ;
			{
				tnode188803* op_420960;
				tident167019* LOC51;
				if (!((5 &(1<<(((*Result).State)&7)))!=0)) goto LA49;
				LOC51 = 0;
				LOC51 = getident_167456(((NimStringDesc*) &TMP3016));
				op_420960 = newidentnode_189090(LOC51, (*n).Info);
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], op_420960);
				asgnRefNoCycle((void**) &(*orig).kindU.S6.Sons->data[0], op_420960);
				pickbestcandidate_419851(c, op_420960, n, orig, initialbinding, filter, Result, &alt, &errors);
			}
			LA49: ;
		}
		goto LA25;
		LA27: ;
		{
			tnode188803* calleename;
			tslice78892 LOC63;
			NimStringDesc* LOC64;
			tnode188803* LOC65;
			tnode188803* callop;
			tident167019* LOC66;
			tslice78892 LOC67;
			TY457200 LOC68;
			tslice78892 LOC69;
			TY457200 LOC70;
			if (!(((*n).Flags &(1<<((((NU8) 8))&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_189181(n);
				LOC57 = (LOC59 == 3);
				LA58: ;
				if (!!(LOC57)) goto LA60;
				LOC62 = 0;
				LOC62 = HEX24_165714(TMP3017);
				internalerror_165606(LOC62);
			}
			LA60: ;
			LOC63 = HEX2EHEX2E_86221(0, -2);
			LOC64 = 0;
			LOC64 = HEX5BHEX5D_78885((*(*f).kindU.S5.Ident).S, LOC63);
			LOC65 = 0;
			LOC65 = newstrnode_189085(((NU8) 20), LOC64);
			calleename = withinfo_190675(LOC65, (*n).Info);
			LOC66 = 0;
			LOC66 = getident_167456(((NimStringDesc*) &TMP3018));
			callop = newidentnode_189090(LOC66, (*n).Info);
			LOC67 = HEX2EHEX2E_86221(0, 1);
			memset((void*)LOC68, 0, sizeof(LOC68));
			LOC68[0] = callop;
			LOC68[1] = HEX5BHEX5D_189694(n, 1);
			LOC68[2] = calleename;
			HEX5BHEX5DHEX3D_420606(&(*n).kindU.S6.Sons, LOC67, LOC68, 3);
			LOC69 = HEX2EHEX2E_86221(0, 1);
			memset((void*)LOC70, 0, sizeof(LOC70));
			LOC70[0] = callop;
			LOC70[1] = HEX5BHEX5D_189694(orig, 1);
			LOC70[2] = calleename;
			HEX5BHEX5DHEX3D_420606(&(*orig).kindU.S6.Sons, LOC69, LOC70, 3);
			pickbestcandidate_419851(c, callop, n, orig, initialbinding, filter, Result, &alt, &errors);
		}
		goto LA25;
		LA53: ;
		LA25: ;
		{
			NIM_BOOL LOC73;
			tident167019* LOC77;
			LOC73 = 0;
			LOC73 = (overloadsstate == ((NU8) 0));
			if (!(LOC73)) goto LA74;
			LOC73 = ((*Result).State == ((NU8) 0));
			LA74: ;
			if (!LOC73) goto LA75;
			LOC77 = 0;
			LOC77 = consideracc_252006(f);
			localerror_165571((*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) 10))&15)))!=0)) goto LA83;
				LOC85 = 0;
				LOC85 = rendertree_211051(n, 4);
				localerror_165571((*n).Info, ((NU16) 88), LOC85);
			}
			goto LA81;
			LA83: ;
			{
				{
					if (!!(((384 & (*n).Flags) == 0))) goto LA89;
					delete_420419(&(*n).kindU.S6.Sons, 2);
					asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], f);
				}
				LA89: ;
				errors = (TY110805*) newSeq((&NTI110805), 0);
				pickbestcandidate_419851(c, f, n, orig, initialbinding, filter, Result, &alt, &errors);
				notfounderror_420045(c, n, 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_345815(Result, &alt);
		LOC94 = (LOC96 == 0);
		LA95: ;
		LOC93 = LOC94;
		if (!(LOC93)) goto LA97;
		LOC98 = 0;
		LOC98 = samemethoddispatcher_419759((*Result).Calleesym, alt.Calleesym);
		LOC93 = !(LOC98);
		LA97: ;
		if (!LOC93) goto LA99;
		{
			NimStringDesc* LOC105;
			if (!!(((*Result).State == ((NU8) 1)))) goto LA103;
			LOC105 = 0;
			LOC105 = HEX24_165714(TMP3020);
			internalerror_165606(LOC105);
		}
		LA103: ;
		{
			if (!(0 < (*c).Incompilescontext)) goto LA108;
			globalerror_165558((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP3021));
		}
		goto LA106;
		LA108: ;
		{
			NimStringDesc* args;
			NI i_421364;
			NI HEX3Atmp_421388;
			NI LOC113;
			NI res_421390;
			NimStringDesc* LOC120;
			TY173034 LOC121;
			NimStringDesc* LOC122;
			if (!(gerrorcounter_164182 == 0)) goto LA111;
			args = copyString(((NimStringDesc*) &TMP3022));
			i_421364 = 0;
			HEX3Atmp_421388 = 0;
			LOC113 = 0;
			LOC113 = sonslen_189181(n);
			HEX3Atmp_421388 = (NI32)(LOC113 - 1);
			res_421390 = 1;
			while (1) {
				NimStringDesc* LOC119;
				if (!(res_421390 <= HEX3Atmp_421388)) goto LA114;
				i_421364 = res_421390;
				{
					if (!(1 < i_421364)) goto LA117;
					args = resizeString(args, 2);
appendString(args, ((NimStringDesc*) &TMP3023));
				}
				LA117: ;
				LOC119 = 0;
				LOC119 = typetostring_223020((*(*n).kindU.S6.Sons->data[i_421364]).Typ, ((NU8) 0));
				args = resizeString(args, LOC119->Sup.len + 0);
appendString(args, LOC119);
				res_421390 += 1;
			} LA114: ;
			args = resizeString(args, 1);
appendString(args, ((NimStringDesc*) &TMP2697));
			LOC120 = 0;
			LOC120 = msgkindtostring_165071(((NU16) 132));
			memset((void*)LOC121, 0, sizeof(LOC121));
			LOC121[0] = getprocheader_223025((*Result).Calleesym);
			LOC121[1] = getprocheader_223025(alt.Calleesym);
			LOC121[2] = copyString(args);
			LOC122 = 0;
			LOC122 = nsuFormatOpenArray(LOC120, LOC121, 3);
			localerror_165571((*n).Info, ((NU16) 4), LOC122);
		}
		goto LA106;
		LA111: ;
		LA106: ;
	}
	LA99: ;
	BeforeRet: ;
}

N_NIMCALL(void, instgenericconverterssons_421531)(tcontext250019* c, tnode188803* n, tcandidate345205* x) {
	{
		NI i_421622;
		NI HEX3Atmp_421637;
		NI LOC5;
		NI res_421639;
		if (!(*x).Genericconverter) goto LA3;
		i_421622 = 0;
		HEX3Atmp_421637 = 0;
		LOC5 = 0;
		LOC5 = len_189264(n);
		HEX3Atmp_421637 = LOC5 - 1;
		res_421639 = 1;
		while (1) {
			if (!(res_421639 <= HEX3Atmp_421637)) goto LA6;
			i_421622 = res_421639;
			instgenericconvertersarg_421394(c, (*n).kindU.S6.Sons->data[i_421622], x);
			res_421639 += 1;
		} LA6: ;
	}
	LA3: ;
}

N_NIMCALL(tnode188803*, semresolvedcall_421719)(tcontext250019* c, tnode188803* n, tcandidate345205* x) {
	tnode188803* result;
	tsym188833* finalcallee;
	result = 0;
	finalcallee = (*x).Calleesym;
	markused_345244((*n).kindU.S6.Sons->data[0], finalcallee);
	{
		if (!((*finalcallee).Ast == NIM_NIL)) goto LA3;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3024));
	}
	LA3: ;
	{
		if (!!(((*(*(*finalcallee).Ast).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)))) goto LA7;
		{
			if (!!((*x).Proxymatch)) goto LA11;
			finalcallee = generateinstance_419355(c, (*x).Calleesym, (*x).Bindings, (*n).Info);
		}
		goto LA9;
		LA11: ;
		{
			result = (*x).Call;
			asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], newsymnode_190723(finalcallee, (*(*result).kindU.S6.Sons->data[0]).Info));
			asgnRefNoCycle((void**) &(*result).Typ, (*(*finalcallee).Typ).Sons->data[0]);
			{
				NIM_BOOL LOC16;
				LOC16 = 0;
				LOC16 = containsgenerictype_232717((*result).Typ);
				if (!LOC16) goto LA17;
				asgnRefNoCycle((void**) &(*result).Typ, errortype_251136(c));
			}
			LA17: ;
			goto BeforeRet;
		}
		LA9: ;
	}
	LA7: ;
	result = (*x).Call;
	instgenericconverterssons_421531(c, result, x);
	asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], newsymnode_190723(finalcallee, (*(*result).kindU.S6.Sons->data[0]).Info));
	asgnRefNoCycle((void**) &(*result).Typ, (*(*finalcallee).Typ).Sons->data[0]);
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semoverloadedcall_421913)(tcontext250019* c, tnode188803* n, tnode188803* norig, NU32 filter) {
	tnode188803* result;
	tcandidate345205 r;
	result = 0;
	chckNil((void*)&r);
	memset((void*)&r, 0, sizeof(r));
	resolveoverloads_420191(c, n, norig, filter, &r);
	{
		if (!(r.State == ((NU8) 1))) goto LA3;
		result = semresolvedcall_421719(c, n, &r);
	}
	LA3: ;
	return result;
}

N_NIMCALL(tnode188803*, semoverloadedcallanalyseeffects_454454)(tcontext250019* c, tnode188803* n, tnode188803* norig, NU16 flags) {
	tnode188803* result;
	result = 0;
	{
		if (!!(((flags & 6) == 0))) goto LA3;
		result = semoverloadedcall_421913(c, n, norig, 520192);
	}
	goto LA1;
	LA3: ;
	{
		result = semoverloadedcall_421913(c, n, norig, 471040);
	}
	LA1: ;
	{
		tsym188833* callee;
		if (!!((result == NIM_NIL))) goto LA8;
		{
			if (!!(((*(*result).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA12;
			internalerror_165606(((NimStringDesc*) &TMP3025));
			goto BeforeRet;
		}
		LA12: ;
		callee = (*(*result).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		switch ((*callee).Kind) {
		case ((NU8) 17):
		case ((NU8) 18):
		{
		}
		break;
		default:
		{
			{
				NIM_BOOL LOC18;
				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_165571((*n).Info, ((NU16) 25), (*(*callee).Name).S);
			}
			LA20: ;
			{
				if (!!((((*callee).Flags &(1<<((((NU8) 10))&31)))!=0))) goto LA24;
				{
					if (!!(((2080 & (*callee).Flags) == 0))) goto LA28;
					(*(*(*c).P).Owner).Flags |=((NI32)(1)<<((((NU8) 11))%(sizeof(NI32)*8)));
				}
				LA28: ;
			}
			LA24: ;
		}
		break;
		}
	}
	LA8: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, propertywriteaccess_457174)(tcontext250019* c, tnode188803* n, tnode188803* norig, tnode188803* a) {
	tnode188803* result;
	tident167019* id;
	tnode188803* LOC1;
	tnode188803* setterid;
	NimStringDesc* LOC2;
	tident167019* LOC3;
	tnode188803* aorig;
	tnodeseq188797* LOC4;
	TY457200 LOC5;
	tnode188803* LOC6;
	tnode188803* orig;
	tnodeseq188797* LOC7;
	TY457200 LOC8;
	result = 0;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_189694(a, 1);
	id = consideracc_252006(LOC1);
	LOC2 = 0;
	LOC2 = rawNewString((*id).S->Sup.len + 1);
appendString(LOC2, (*id).S);
appendChar(LOC2, 61);
	LOC3 = 0;
	LOC3 = getident_167456(LOC2);
	setterid = newidentnode_189090(LOC3, (*n).Info);
	aorig = HEX5BHEX5D_189694(norig, 0);
	LOC4 = 0;
	LOC4 = (tnodeseq188797*) newSeq((&NTI188797), 3);
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC5[0] = setterid;
	LOC5[1] = HEX5BHEX5D_189694(a, 0);
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_189694(n, 1);
	LOC5[2] = semexpr_416003(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_191003(((NU8) 27), (*n).Info, LOC4, NIM_NIL);
	(*result).Flags |=((NI16)(1)<<((((NU8) 8))%(sizeof(NI16)*8)));
	LOC7 = 0;
	LOC7 = (tnodeseq188797*) newSeq((&NTI188797), 3);
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = setterid;
	LOC8[1] = HEX5BHEX5D_189694(aorig, 0);
	LOC8[2] = HEX5BHEX5D_189694(norig, 1);
	asgnRefNoCycle((void**) &LOC7->data[0], LOC8[0]);
	asgnRefNoCycle((void**) &LOC7->data[1], LOC8[1]);
	asgnRefNoCycle((void**) &LOC7->data[2], LOC8[2]);
	orig = newnode_191003(((NU8) 27), (*n).Info, LOC7, NIM_NIL);
	result = semoverloadedcallanalyseeffects_454454(c, result, orig, 0);
	{
		if (!!((result == NIM_NIL))) goto LA11;
		result = aftercallactions_455231(c, result, norig, 0);
	}
	LA11: ;
	return result;
}

static N_INLINE(NIM_BOOL, issymchoice_450481)(tnode188803* n) {
	NIM_BOOL result;
	result = 0;
	result = ((*n).Kind == ((NU8) 56) || (*n).Kind == ((NU8) 57));
	return result;
}

N_NIMCALL(tnode188803*, dottransformation_456657)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		tnode188803* LOC6;
		tnode188803* LOC7;
		LOC3 = 0;
		LOC3 = issymchoice_450481((*n).kindU.S6.Sons->data[1]);
		if (!LOC3) goto LA4;
		result = newnodei_189099(((NU8) 25), (*n).Info);
		addson_189207(result, (*n).kindU.S6.Sons->data[1]);
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_189694(n, 0);
		LOC7 = 0;
		LOC7 = copytree_189237(LOC6);
		addson_189207(result, LOC7);
	}
	goto LA1;
	LA4: ;
	{
		tident167019* i;
		tnode188803* LOC9;
		tnode188803* LOC10;
		tnode188803* LOC11;
		tnode188803* LOC12;
		i = consideracc_252006((*n).kindU.S6.Sons->data[1]);
		result = newnodei_189099(((NU8) 25), (*n).Info);
		(*result).Flags |=((NI16)(1)<<((((NU8) 7))%(sizeof(NI16)*8)));
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_189694(n, 1);
		LOC10 = 0;
		LOC10 = newidentnode_189090(i, (*LOC9).Info);
		addson_189207(result, LOC10);
		LOC11 = 0;
		LOC11 = HEX5BHEX5D_189694(n, 0);
		LOC12 = 0;
		LOC12 = copytree_189237(LOC11);
		addson_189207(result, LOC12);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semderef_456768)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	ttype188837* t;
	result = 0;
	checksonslen_251209(n, 1);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[0], 0));
	result = n;
	t = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, 8390656);
	switch ((*t).Kind) {
	case ((NU8) 22):
	case ((NU8) 21):
	{
		asgnRefNoCycle((void**) &(*n).Typ, lastson_189193(t));
	}
	break;
	default:
	{
		result = NIM_NIL;
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, semsubscript_456818)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	ttype188837* arr;
	result = 0;
	{
		NI LOC3;
		tnode188803* x;
		tnode188803* LOC10;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 1)) goto LA4;
		x = semderef_456768(c, n);
		{
			if (!(x == NIM_NIL)) goto LA8;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA8: ;
		result = newnodeit_189104(((NU8) 47), (*x).Info, (*x).Typ);
		LOC10 = 0;
		LOC10 = HEX5BHEX5D_189694(x, 0);
		add_189390(result, LOC10);
		goto BeforeRet;
	}
	LA4: ;
	checkminsonslen_251215(n, 2);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[0], 0));
	arr = skiptypes_192793((*(*n).kindU.S6.Sons->data[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):
	{
		NI i_456926;
		NI HEX3Atmp_457144;
		NI LOC17;
		NI res_457146;
		ttype188837* indextype;
		tnode188803* arg;
		{
			NI LOC14;
			LOC14 = 0;
			LOC14 = len_189264(n);
			if (!!((LOC14 == 2))) goto LA15;
			result = NIM_NIL;
			goto BeforeRet;
		}
		LA15: ;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], makederef_455912((*n).kindU.S6.Sons->data[0]));
		i_456926 = 0;
		HEX3Atmp_457144 = 0;
		LOC17 = 0;
		LOC17 = sonslen_189181(n);
		HEX3Atmp_457144 = (NI32)(LOC17 - 1);
		res_457146 = 1;
		while (1) {
			if (!(res_457146 <= HEX3Atmp_457144)) goto LA18;
			i_456926 = res_457146;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_456926], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[i_456926], (flags & 20)));
			res_457146 += 1;
		} LA18: ;
		{
			if (!((*arr).Kind == ((NU8) 16))) goto LA21;
			indextype = (*arr).Sons->data[0];
		}
		goto LA19;
		LA21: ;
		{
			indextype = getsystype_242024(((NU8) 31));
		}
		LA19: ;
		arg = indextypesmatch_416119(c, indextype, (*(*n).kindU.S6.Sons->data[1]).Typ, (*n).kindU.S6.Sons->data[1]);
		{
			if (!!((arg == NIM_NIL))) goto LA26;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], arg);
			result = n;
			asgnRefNoCycle((void**) &(*result).Typ, elemtype_223559(arr));
		}
		LA26: ;
	}
	break;
	case ((NU8) 8):
	{
		ttype188837* LOC29;
		result = n;
		LOC29 = 0;
		LOC29 = semtypenode_416055(c, n, NIM_NIL);
		asgnRefNoCycle((void**) &(*result).Typ, maketypedesc_250627(c, LOC29));
	}
	break;
	case ((NU8) 18):
	{
		checksonslen_251209(n, 2);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], makederef_455912((*n).kindU.S6.Sons->data[0]));
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], semconstexpr_417095(c, (*n).kindU.S6.Sons->data[1]));
		{
			ttype188837* LOC33;
			NI64 idx;
			LOC33 = 0;
			LOC33 = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, 1083392);
			if (!((*LOC33).Kind >= ((NU8) 31) && (*LOC33).Kind <= ((NU8) 35))) goto LA34;
			idx = getordvalue_223150((*n).kindU.S6.Sons->data[1]);
			{
				NIM_BOOL LOC38;
				NI LOC40;
				LOC38 = 0;
				LOC38 = (0 <= idx);
				if (!(LOC38)) goto LA39;
				LOC40 = 0;
				LOC40 = sonslen_189185(arr);
				LOC38 = (idx < ((NI64) (LOC40)));
				LA39: ;
				if (!LOC38) goto LA41;
				asgnRefNoCycle((void**) &(*n).Typ, (*arr).Sons->data[idx]);
			}
			goto LA36;
			LA41: ;
			{
				localerror_165571((*n).Info, ((NU16) 185), ((NimStringDesc*) &TMP2675));
			}
			LA36: ;
		}
		goto LA31;
		LA34: ;
		{
			localerror_165571((*n).Info, ((NU16) 83), ((NimStringDesc*) &TMP2675));
		}
		LA31: ;
		result = n;
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, buildoverloadedsubscripts_456746)(tnode188803* n, tident167019* ident) {
	tnode188803* result;
	tnode188803* LOC1;
	NI i_456761;
	NI HEX3Atmp_456762;
	NI LOC2;
	NI res_456764;
	result = 0;
	result = newnodei_189099(((NU8) 27), (*n).Info);
	LOC1 = 0;
	LOC1 = newidentnode_189090(ident, (*n).Info);
	add_189390(result, LOC1);
	i_456761 = 0;
	HEX3Atmp_456762 = 0;
	LOC2 = 0;
	LOC2 = len_189264(n);
	HEX3Atmp_456762 = (NI32)(LOC2 - 1);
	res_456764 = 0;
	while (1) {
		tnode188803* LOC4;
		if (!(res_456764 <= HEX3Atmp_456762)) goto LA3;
		i_456761 = res_456764;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_189694(n, i_456761);
		add_189390(result, LOC4);
		res_456764 += 1;
	} LA3: ;
	return result;
}

N_NIMCALL(void, typemismatch_416126)(tnode188803* n, ttype188837* formal, ttype188837* actual) {
	{
		NIM_BOOL LOC3;
		NimStringDesc* LOC7;
		NimStringDesc* LOC8;
		NimStringDesc* LOC9;
		NimStringDesc* LOC10;
		TY165002 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_165071(((NU16) 129));
		LOC9 = 0;
		LOC9 = typetostring_223020(actual, ((NU8) 0));
		LOC10 = 0;
		LOC10 = msgkindtostring_165071(((NU16) 131));
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = typetostring_223020(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*) &TMP3029));
appendString(LOC7, LOC12);
		localerror_165571((*n).Info, ((NU16) 4), LOC7);
	}
	LA5: ;
}

N_NIMCALL(tnode188803*, takeimplicitaddr_457259)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NU8 valid;
	ttype188837* 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[0];
		goto BeforeRet;
	}
	break;
	case ((NU8) 42):
	{
		{
			NI LOC6;
			LOC6 = 0;
			LOC6 = len_189264(n);
			if (!(LOC6 == 1)) goto LA7;
			result = (*n).kindU.S6.Sons->data[0];
			goto BeforeRet;
		}
		LA7: ;
	}
	break;
	default:
	{
	}
	break;
	}
	valid = isassignable_452519(c, n);
	{
		if (!!((valid == ((NU8) 1)))) goto LA12;
		{
			NimStringDesc* LOC18;
			if (!(valid == ((NU8) 2))) goto LA16;
			LOC18 = 0;
			LOC18 = rendertree_211051(n, 4);
			localerror_165571((*n).Info, ((NU16) 126), LOC18);
		}
		goto LA14;
		LA16: ;
		{
			localerror_165571((*n).Info, ((NU16) 125), ((NimStringDesc*) &TMP2675));
		}
		LA14: ;
	}
	LA12: ;
	LOC20 = 0;
	LOC20 = makeptrtype_250170(c, (*n).Typ);
	result = newnodeit_189104(((NU8) 64), (*n).Info, LOC20);
	add_189390(result, n);
	BeforeRet: ;
	return result;
}

static N_INLINE(void, asgntoresultvar_457313)(tcontext250019* c, tnode188803* n, tnode188803* le, tnode188803* ri) {
	{
		tnode188803* x;
		if (!((*le).Kind == ((NU8) 65))) goto LA3;
		x = (*le).kindU.S6.Sons->data[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[0], x);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], takeimplicitaddr_457259(c, ri));
		}
		LA11: ;
	}
	LA3: ;
}

N_NIMCALL(tnode188803*, semasgn_457417)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* a;
	ttype188837* le;
	result = 0;
	checksonslen_251209(n, 2);
	a = (*n).kindU.S6.Sons->data[0];
	switch ((*a).Kind) {
	case ((NU8) 45):
	{
		tnode188803* norig;
		norig = copytree_189237(n);
		a = builtinfieldaccess_456040(c, a, 1);
		{
			tnode188803* LOC6;
			tnode188803* LOC11;
			if (!(a == NIM_NIL)) goto LA4;
			LOC6 = 0;
			LOC6 = HEX5BHEX5D_189694(n, 0);
			a = propertywriteaccess_457174(c, n, norig, LOC6);
			{
				if (!!((a == NIM_NIL))) goto LA9;
				result = a;
				goto BeforeRet;
			}
			LA9: ;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_189694(n, 0);
			a = dottransformation_456657(c, LOC11);
			{
				if (!((*a).Kind == ((NU8) 25))) goto LA14;
				(*a).Kind = ((NU8) 27);
				a = semexprwithtype_416011(c, a, 1);
			}
			LA14: ;
		}
		LA4: ;
	}
	break;
	case ((NU8) 42):
	{
		a = semsubscript_456818(c, a, 1);
		{
			tident167019* LOC21;
			tnode188803* LOC22;
			if (!(a == NIM_NIL)) goto LA19;
			LOC21 = 0;
			LOC21 = getident_167456(((NimStringDesc*) &TMP3026));
			result = buildoverloadedsubscripts_456746((*n).kindU.S6.Sons->data[0], LOC21);
			LOC22 = 0;
			LOC22 = HEX5BHEX5D_189694(n, 1);
			add_189390(result, LOC22);
			result = semexprnotype_416019(c, result);
			goto BeforeRet;
		}
		LA19: ;
	}
	break;
	case ((NU8) 40):
	{
		tident167019* LOC24;
		tnode188803* LOC25;
		LOC24 = 0;
		LOC24 = getident_167456(((NimStringDesc*) &TMP3027));
		result = buildoverloadedsubscripts_456746((*n).kindU.S6.Sons->data[0], LOC24);
		LOC25 = 0;
		LOC25 = HEX5BHEX5D_189694(n, 1);
		add_189390(result, LOC25);
		result = semexprnotype_416019(c, result);
		goto BeforeRet;
	}
	break;
	default:
	{
		a = semexprwithtype_416011(c, a, 1);
	}
	break;
	}
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], a);
	le = (*a).Typ;
	{
		NIM_BOOL LOC29;
		ttype188837* LOC30;
		NU8 LOC32;
		NimStringDesc* LOC35;
		LOC29 = 0;
		LOC30 = 0;
		LOC30 = skiptypes_192793(le, 2048);
		LOC29 = !(((*LOC30).Kind == ((NU8) 23)));
		if (!(LOC29)) goto LA31;
		LOC32 = 0;
		LOC32 = isassignable_452519(c, a);
		LOC29 = (LOC32 == ((NU8) 0));
		LA31: ;
		if (!LOC29) goto LA33;
		LOC35 = 0;
		LOC35 = rendertree_211051(a, 4);
		localerror_165571((*a).Info, ((NU16) 176), LOC35);
	}
	goto LA27;
	LA33: ;
	{
		tnode188803* lhs;
		NIM_BOOL lhsisresult;
		NIM_BOOL LOC37;
		tnode188803* rhs;
		NU16 LOC39;
		lhs = (*n).kindU.S6.Sons->data[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 = 32;
		}
		goto LA40;
		LA42: ;
		{
			LOC39 = 0;
		}
		LA40: ;
		rhs = semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[1], LOC39);
		{
			if (!lhsisresult) goto LA47;
			asgnRefNoCycle((void**) &(*n).Typ, enforcevoidcontext_437695);
			{
				NIM_BOOL LOC51;
				NIM_BOOL LOC53;
				LOC51 = 0;
				LOC51 = !(((*(*(*c).P).Owner).Kind == ((NU8) 17)));
				if (!(LOC51)) goto LA52;
				LOC53 = 0;
				LOC53 = ismetatype_189732((*(*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_350566(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_165714(TMP3028);
						internalerror_165606(LOC66);
					}
					LA64: ;
					asgnRefNoCycle((void**) &(*lhs).Typ, (*rhs).Typ);
					asgnRefNoCycle((void**) &(*(*(*c).P).Resultsym).Typ, (*rhs).Typ);
					asgnRefNoCycle((void**) &(*(*(*(*c).P).Owner).Typ).Sons->data[0], (*rhs).Typ);
				}
				goto LA57;
				LA60: ;
				{
					typemismatch_416126(n, (*lhs).Typ, (*rhs).Typ);
				}
				LA57: ;
			}
			LA55: ;
		}
		LA47: ;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], fitnode_416037(c, le, rhs));
		fixabstracttype_452189(c, n);
		asgntoresultvar_457313(c, n, (*n).kindU.S6.Sons->data[0], (*n).kindU.S6.Sons->data[1]);
	}
	LA27: ;
	result = n;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semprocbody_416032)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tscope188827* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	result = semexpr_416003(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_195210((*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) 125));
			if (!(LOC19)) goto LA20;
			LOC19 = ((*(*result).Typ).Kind == ((NU8) 5));
			LA20: ;
			if (!LOC19) goto LA21;
			fixniltype_439933(result);
		}
		goto LA9;
		LA21: ;
		{
			tnode188803* a;
			a = newnodei_190803(((NU8) 73), (*n).Info, 2);
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[0], newsymnode_189095((*(*c).P).Resultsym));
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[1], result);
			result = semasgn_457417(c, a);
		}
		LA9: ;
	}
	goto LA2;
	LA7: ;
	{
		discardcheck_439985(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_189732((*(*(*c).P).Resultsym).Typ);
		LA30: ;
		if (!LOC27) goto LA31;
		localerror_165571((*(*(*c).P).Resultsym).Info, ((NU16) 226), ((NimStringDesc*) &TMP2675));
	}
	LA31: ;
	closescope_252179(c);
	return result;
}

N_NIMCALL(void, instantiatebody_419026)(tcontext250019* c, tnode188803* n, tsym188833* result) {
	{
		tnode188803* b;
		tidtable188849 symmap;
		if (!!(((*(*n).kindU.S6.Sons->data[6]).Kind == ((NU8) 1)))) goto LA3;
		(*c).Ingenericinst += 1;
		b = (*n).kindU.S6.Sons->data[6];
		memset((void*)&symmap, 0, sizeof(symmap));
		initidtable_189120(&symmap);
		freshgensyms_418802(b, result, &symmap);
		b = semprocbody_416032(c, b);
		b = hlobody_418063(c, b);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], transformbody_378285((*c).Module, b, result));
		(*result).Flags &= ~((NI32)(1) << ((((NU8) 4)) % (sizeof(NI32)*8)));
		(*c).Ingenericinst -= 1;
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, hasobjparam_448440)(tsym188833* s) {
	NIM_BOOL result;
	ttype188837* t;
	NI col_448457;
	NI HEX3Atmp_448467;
	NI LOC1;
	NI res_448469;
	result = 0;
	t = (*s).Typ;
	col_448457 = 0;
	HEX3Atmp_448467 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189185(t);
	HEX3Atmp_448467 = (NI32)(LOC1 - 1);
	res_448469 = 1;
	while (1) {
		if (!(res_448469 <= HEX3Atmp_448467)) goto LA2;
		col_448457 = res_448469;
		{
			ttype188837* LOC5;
			LOC5 = 0;
			LOC5 = skiptypes_192793((*t).Sons->data[col_448457], IL64(211106247215360));
			if (!((*LOC5).Kind == ((NU8) 17))) goto LA6;
			result = NIM_TRUE;
			goto BeforeRet;
		}
		LA6: ;
		res_448469 += 1;
	} LA2: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, finishmethod_416114)(tcontext250019* c, tsym188833* s) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = hasobjparam_448440(s);
		if (!LOC3) goto LA4;
		methoddef_364446(s, NIM_FALSE);
	}
	LA4: ;
}

N_NIMCALL(tsym188833*, generateinstance_419355)(tcontext250019* c, tsym188833* fn, tidtable188849 pt, tlineinfo163527 info) {
	tsym188833* result;
	tnode188803* n;
	tsym188833* oldfriend;
	tscope188827* LOC9;
	tinstantiation188823* entry;
	tsym188833* oldprc;
	result = 0;
	{
		if (!((393216 &(1<<(((*fn).Kind)&31)))!=0)) goto LA3;
		result = fn;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(1000 < (*c).Instcounter)) goto LA7;
		internalerror_165591((*(*fn).Ast).Info, ((NimStringDesc*) &TMP2704));
	}
	LA7: ;
	(*c).Instcounter += 1;
	n = copytree_189237((*fn).Ast);
	oldfriend = (*c).Friendmodule;
	asgnRefNoCycle((void**) &(*c).Friendmodule, getmodule_197183(fn));
	result = copysym_189147(fn, NIM_FALSE);
	(*result).Flags |=((NI32)(1)<<((((NU8) 2))%(sizeof(NI32)*8)));
	asgnRefNoCycle((void**) &(*result).Owner, fn);
	asgnRefNoCycle((void**) &(*result).Ast, n);
	pushowner_250218(result);
	LOC9 = 0;
	LOC9 = openscope_252167(c);
	{
		NimStringDesc* LOC14;
		if (!!(!(((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 1))))) goto LA12;
		LOC14 = 0;
		LOC14 = HEX24_165714(TMP2705);
		internalerror_165606(LOC14);
	}
	LA12: ;
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], newsymnode_189095(result));
	pushinfocontext_164697(info);
	entry = new_419481();
	asgnRefNoCycle((void**) &(*entry).Sym, result);
	instantiategenericparamlist_418123(c, (*n).kindU.S6.Sons->data[2], pt, entry);
	pushproccon_250317(c, result);
	instantiateproctype_419247(c, pt, result, info);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[2], emptynode_189727);
	oldprc = genericcacheget_418335(fn, (*entry));
	{
		tinstantiationpair250011 LOC19;
		if (!(oldprc == NIM_NIL)) goto LA17;
		safeadd_419570(&(*fn).kindU.S2.Procinstcache, entry);
		memset((void*)&LOC19, 0, sizeof(LOC19));
		makeinstpair_250136(fn, entry, &LOC19);
		(*c).Generics = (TY250131*) incrSeq(&((*c).Generics)->Sup, sizeof(tinstantiationpair250011));
		asgnRefNoCycle((void**) &(*c).Generics->data[(*c).Generics->Sup.len-1].Genericsym, LOC19.Genericsym);
		asgnRefNoCycle((void**) &(*c).Generics->data[(*c).Generics->Sup.len-1].Inst, LOC19.Inst);
		{
			if (!!(((*(*n).kindU.S6.Sons->data[4]).Kind == ((NU8) 1)))) goto LA22;
			pragma_267073(c, result, (*n).kindU.S6.Sons->data[4], TMP2772);
		}
		LA22: ;
		{
			tnode188803* LOC28;
			if (!(*n).kindU.S6.Sons->data[6] == 0) goto LA26;
			LOC28 = 0;
			LOC28 = getbody_239244(fn);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], copytree_189237(LOC28));
		}
		LA26: ;
		instantiatebody_419026(c, n, result);
		sideeffectscheck_419186(c, result);
		paramstypecheck_416620(c, (*result).Typ);
	}
	goto LA15;
	LA17: ;
	{
		result = oldprc;
	}
	LA15: ;
	popproccon_250358(c);
	popinfocontext_164720();
	closescope_252179(c);
	popowner_250222();
	asgnRefNoCycle((void**) &(*c).Friendmodule, oldfriend);
	(*c).Instcounter -= 1;
	{
		if (!((*result).Kind == ((NU8) 13))) goto LA32;
		finishmethod_416114(c, result);
	}
	LA32: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, instgenericconvertersarg_421394)(tcontext250019* c, tnode188803* a, tcandidate345205* x) {
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		tsym188833* finalcallee;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = ((*a).Kind == ((NU8) 32));
		if (!(LOC4)) goto LA5;
		LOC4 = ((*(*a).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
		LA5: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA6;
		LOC3 = isgenericroutine_194927((*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym);
		LA6: ;
		if (!LOC3) goto LA7;
		finalcallee = generateinstance_419355(c, (*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym, (*x).Bindings, (*a).Info);
		asgnRefNoCycle((void**) &(*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym, finalcallee);
		asgnRefNoCycle((void**) &(*(*a).kindU.S6.Sons->data[0]).Typ, (*finalcallee).Typ);
	}
	LA7: ;
}

N_NIMCALL(tnode188803*, indextypesmatch_416119)(tcontext250019* c, ttype188837* f, ttype188837* a, tnode188803* arg) {
	tnode188803* result;
	tcandidate345205 m;
	result = 0;
	memset((void*)&m, 0, sizeof(m));
	initcandidate_345257(c, &m, f);
	result = paramtypesmatch_351560(&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_421394(c, result, &m);
	}
	LA5: ;
	return result;
}

N_NIMCALL(tnode188803*, fitnode_416037)(tcontext250019* c, ttype188837* formal, tnode188803* arg) {
	tnode188803* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!(*arg).Typ == 0) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_211051(arg, 4);
		localerror_165571((*arg).Info, ((NU16) 90), LOC5);
		result = copynode_189233(arg);
		asgnRefNoCycle((void**) &(*result).Typ, formal);
	}
	goto LA1;
	LA3: ;
	{
		result = indextypesmatch_416119(c, formal, (*arg).Typ, arg);
		{
			if (!(result == NIM_NIL)) goto LA9;
			typemismatch_416126(arg, formal, (*arg).Typ);
			result = copytree_189237(arg);
			asgnRefNoCycle((void**) &(*result).Typ, formal);
		}
		LA9: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semconstboolexpr_422470)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* nn;
	ttype188837* LOC1;
	result = 0;
	nn = semexprwithtype_416011(c, n, 0);
	LOC1 = 0;
	LOC1 = getsystype_242024(((NU8) 1));
	result = fitnode_416037(c, LOC1, nn);
	{
		if (!(result == NIM_NIL)) goto LA4;
		localerror_165571((*n).Info, ((NU16) 104), ((NimStringDesc*) &TMP2675));
		result = nn;
		goto BeforeRet;
	}
	LA4: ;
	result = getconstexpr_261002((*c).Module, result);
	{
		if (!(result == NIM_NIL)) goto LA8;
		localerror_165571((*n).Info, ((NU16) 104), ((NimStringDesc*) &TMP2675));
		result = nn;
	}
	LA8: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, forcebool_422446)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	ttype188837* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getsystype_242024(((NU8) 1));
	result = fitnode_416037(c, LOC1, n);
	{
		if (!(result == NIM_NIL)) goto LA4;
		result = n;
	}
	LA4: ;
	return result;
}

N_NIMCALL(tnode188803*, sembranchrange_424897)(tcontext250019* c, tnode188803* t, tnode188803* a, tnode188803* b, NI64* covered) {
	tnode188803* result;
	tnode188803* ac;
	tnode188803* bc;
	tnode188803* at;
	tnode188803* LOC1;
	tnode188803* bt;
	tnode188803* LOC2;
	result = 0;
	checkminsonslen_251215(t, 1);
	ac = semconstexpr_417095(c, a);
	bc = semconstexpr_417095(c, b);
	LOC1 = 0;
	LOC1 = fitnode_416037(c, (*(*t).kindU.S6.Sons->data[0]).Typ, ac);
	at = skipconvtaketype_197265(LOC1);
	LOC2 = 0;
	LOC2 = fitnode_416037(c, (*(*t).kindU.S6.Sons->data[0]).Typ, bc);
	bt = skipconvtaketype_197265(LOC2);
	result = newnodei_189099(((NU8) 44), (*a).Info);
	add_189390(result, at);
	add_189390(result, bt);
	{
		NIM_BOOL LOC5;
		LOC5 = 0;
		LOC5 = emptyrange_244024(ac, bc);
		if (!LOC5) goto LA6;
		localerror_165571((*b).Info, ((NU16) 106), ((NimStringDesc*) &TMP2675));
	}
	goto LA3;
	LA6: ;
	{
		NI64 LOC9;
		NI64 LOC10;
		LOC9 = 0;
		LOC9 = getordvalue_223150(bc);
		LOC10 = 0;
		LOC10 = getordvalue_223150(ac);
		(*covered) = (NI64)((NI64)((NI64)((*covered) + LOC9) - LOC10) + 1);
	}
	LA3: ;
	return result;
}

N_NIMCALL(tnode188803*, semcasebranchrange_424939)(tcontext250019* c, tnode188803* t, tnode188803* b, NI64* covered) {
	tnode188803* result;
	result = 0;
	checksonslen_251209(b, 3);
	result = sembranchrange_424897(c, t, (*b).kindU.S6.Sons->data[1], (*b).kindU.S6.Sons->data[2], covered);
	return result;
}

N_NIMCALL(tnode188803*, semcasebranchsetelem_424976)(tcontext250019* c, tnode188803* t, tnode188803* b, NI64* covered) {
	tnode188803* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isrange_222077(b);
		if (!LOC3) goto LA4;
		checksonslen_251209(b, 3);
		result = sembranchrange_424897(c, t, (*b).kindU.S6.Sons->data[1], (*b).kindU.S6.Sons->data[2], covered);
	}
	goto LA1;
	LA4: ;
	{
		if (!((*b).Kind == ((NU8) 44))) goto LA7;
		checksonslen_251209(b, 2);
		result = sembranchrange_424897(c, t, (*b).kindU.S6.Sons->data[0], (*b).kindU.S6.Sons->data[1], covered);
	}
	goto LA1;
	LA7: ;
	{
		result = fitnode_416037(c, (*(*t).kindU.S6.Sons->data[0]).Typ, b);
		(*covered) += 1;
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, checkforoverlap_424812)(tcontext250019* c, tnode188803* t, NI currentex, NI branchindex) {
	tnode188803* ex;
	tnode188803* LOC1;
	tnode188803* LOC2;
	NI i_424831;
	NI res_424892;
	LOC1 = 0;
	LOC1 = HEX5BHEX5D_189694(t, branchindex);
	LOC2 = 0;
	LOC2 = HEX5BHEX5D_189694(LOC1, currentex);
	ex = skipconv_197231(LOC2);
	i_424831 = 0;
	res_424892 = 1;
	while (1) {
		NI j_424858;
		NI HEX3Atmp_424887;
		NI LOC4;
		NI res_424889;
		if (!(res_424892 <= branchindex)) goto LA3;
		i_424831 = res_424892;
		j_424858 = 0;
		HEX3Atmp_424887 = 0;
		LOC4 = 0;
		LOC4 = sonslen_189181((*t).kindU.S6.Sons->data[i_424831]);
		HEX3Atmp_424887 = (NI32)(LOC4 - 2);
		res_424889 = 0;
		while (1) {
			if (!(res_424889 <= HEX3Atmp_424887)) goto LA5;
			j_424858 = res_424889;
			{
				NIM_BOOL LOC8;
				LOC8 = 0;
				LOC8 = (i_424831 == branchindex);
				if (!(LOC8)) goto LA9;
				LOC8 = (j_424858 == currentex);
				LA9: ;
				if (!LOC8) goto LA10;
				goto LA5;
			}
			LA10: ;
			{
				tnode188803* LOC14;
				NIM_BOOL LOC15;
				LOC14 = 0;
				LOC14 = skipconv_197231((*(*t).kindU.S6.Sons->data[i_424831]).kindU.S6.Sons->data[j_424858]);
				LOC15 = 0;
				LOC15 = overlap_244008(LOC14, ex);
				if (!LOC15) goto LA16;
				localerror_165571((*ex).Info, ((NU16) 105), ((NimStringDesc*) &TMP2675));
			}
			LA16: ;
			res_424889 += 1;
		} LA5: ;
		res_424892 += 1;
	} LA3: ;
}

N_NIMCALL(void, semcasebranch_425080)(tcontext250019* c, tnode188803* t, tnode188803* branch, NI branchindex, NI64* covered) {
	NI i_425100;
	NI HEX3Atmp_425291;
	NI LOC1;
	NI res_425293;
	i_425100 = 0;
	HEX3Atmp_425291 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(branch);
	HEX3Atmp_425291 = (NI32)(LOC1 - 2);
	res_425293 = 0;
	while (1) {
		tnode188803* b;
		if (!(res_425293 <= HEX3Atmp_425291)) goto LA2;
		i_425100 = res_425293;
		b = (*branch).kindU.S6.Sons->data[i_425100];
		{
			if (!((*b).Kind == ((NU8) 44))) goto LA5;
			asgnRefNoCycle((void**) &(*branch).kindU.S6.Sons->data[i_425100], b);
		}
		goto LA3;
		LA5: ;
		{
			NIM_BOOL LOC8;
			LOC8 = 0;
			LOC8 = isrange_222077(b);
			if (!LOC8) goto LA9;
			asgnRefNoCycle((void**) &(*branch).kindU.S6.Sons->data[i_425100], semcasebranchrange_424939(c, t, b, covered));
		}
		goto LA3;
		LA9: ;
		{
			tnode188803* r;
			r = semconstexpr_417095(c, b);
			{
				NIM_BOOL LOC14;
				NI LOC16;
				tnode188803* LOC19;
				LOC14 = 0;
				LOC14 = !(((*r).Kind == ((NU8) 39)));
				if (LOC14) goto LA15;
				LOC16 = 0;
				LOC16 = len_189264(r);
				LOC14 = (LOC16 == 0);
				LA15: ;
				if (!LOC14) goto LA17;
				checkminsonslen_251215(t, 1);
				LOC19 = 0;
				LOC19 = fitnode_416037(c, (*(*t).kindU.S6.Sons->data[0]).Typ, r);
				asgnRefNoCycle((void**) &(*branch).kindU.S6.Sons->data[i_425100], skipconv_197231(LOC19));
				(*covered) += 1;
			}
			goto LA12;
			LA17: ;
			{
				tnode188803* LOC21;
				NI j_425242;
				NI HEX3Atmp_425287;
				NI LOC22;
				NI res_425289;
				LOC21 = 0;
				LOC21 = HEX5BHEX5D_189694(r, 0);
				asgnRefNoCycle((void**) &(*branch).kindU.S6.Sons->data[i_425100], semcasebranchsetelem_424976(c, t, LOC21, covered));
				j_425242 = 0;
				HEX3Atmp_425287 = 0;
				LOC22 = 0;
				LOC22 = len_189264(r);
				HEX3Atmp_425287 = LOC22 - 1;
				res_425289 = 1;
				while (1) {
					tnode188803* LOC24;
					tnode188803* LOC25;
					NI l;
					tnode188803* LOC26;
					if (!(res_425289 <= HEX3Atmp_425287)) goto LA23;
					j_425242 = res_425289;
					LOC24 = 0;
					LOC24 = HEX5BHEX5D_189694(r, j_425242);
					LOC25 = 0;
					LOC25 = semcasebranchsetelem_424976(c, t, LOC24, covered);
					add_189390(branch, LOC25);
					l = len_189264(branch);
					LOC26 = 0;
					LOC26 = (*branch).kindU.S6.Sons->data[(NI32)(l - 2)];
					asgnRefNoCycle((void**) &(*branch).kindU.S6.Sons->data[(NI32)(l - 2)], (*branch).kindU.S6.Sons->data[(NI32)(l - 1)]);
					asgnRefNoCycle((void**) &(*branch).kindU.S6.Sons->data[(NI32)(l - 1)], LOC26);
					res_425289 += 1;
				} LA23: ;
			}
			LA12: ;
		}
		LA3: ;
		checkforoverlap_424812(c, t, i_425100, branchindex);
		res_425293 += 1;
	} LA2: ;
}

N_NIMCALL(void, semrecordcase_425308)(tcontext250019* c, tnode188803* n, tintset185047* check, NI* pos, tnode188803* father, ttype188837* rectype) {
	tnode188803* a;
	NI64 covered;
	ttype188837* typ;
	NIM_BOOL chckcovered;
	NI i_425507;
	NI HEX3Atmp_425567;
	NI LOC18;
	NI res_425569;
	a = copynode_189233(n);
	checkminsonslen_251215(n, 2);
	semrecordnodeaux_425298(c, (*n).kindU.S6.Sons->data[0], check, pos, a, rectype);
	{
		if (!!(((*(*a).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA3;
		internalerror_165606(((NimStringDesc*) &TMP3034));
		goto BeforeRet;
	}
	LA3: ;
	(*(*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym).Flags |=((NI32)(1)<<((((NU8) 18))%(sizeof(NI32)*8)));
	covered = 0;
	typ = skiptypes_192793((*(*a).kindU.S6.Sons->data[0]).Typ, IL64(211106240964608));
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = isordinaltype_223071(typ);
		if (!!(LOC7)) goto LA8;
		localerror_165571((*n).Info, ((NU16) 108), ((NimStringDesc*) &TMP2675));
	}
	goto LA5;
	LA8: ;
	{
		NI64 LOC11;
		LOC11 = 0;
		LOC11 = firstord_223002(typ);
		if (!(LOC11 < 0)) goto LA12;
		localerror_165571((*n).Info, ((NU16) 109), (*(*(*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
	}
	goto LA5;
	LA12: ;
	{
		NI64 LOC15;
		LOC15 = 0;
		LOC15 = lengthord_223010(typ);
		if (!(32767 < LOC15)) goto LA16;
		localerror_165571((*n).Info, ((NU16) 110), (*(*(*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
	}
	goto LA5;
	LA16: ;
	LA5: ;
	chckcovered = NIM_TRUE;
	i_425507 = 0;
	HEX3Atmp_425567 = 0;
	LOC18 = 0;
	LOC18 = sonslen_189181(n);
	HEX3Atmp_425567 = (NI32)(LOC18 - 1);
	res_425569 = 1;
	while (1) {
		tnode188803* b;
		NI LOC23;
		tnode188803* LOC24;
		if (!(res_425569 <= HEX3Atmp_425567)) goto LA19;
		i_425507 = res_425569;
		b = copytree_189237((*n).kindU.S6.Sons->data[i_425507]);
		addson_189207(a, b);
		switch ((*(*n).kindU.S6.Sons->data[i_425507]).Kind) {
		case ((NU8) 85):
		{
			checkminsonslen_251215(b, 2);
			semcasebranch_425080(c, a, b, i_425507, &covered);
		}
		break;
		case ((NU8) 88):
		{
			chckcovered = NIM_FALSE;
			checksonslen_251209(b, 1);
		}
		break;
		default:
		{
			illformedast_251203(n);
		}
		break;
		}
		LOC23 = 0;
		LOC23 = sonslen_189181(b);
		delson_189212(b, (NI32)(LOC23 - 1));
		LOC24 = 0;
		LOC24 = lastson_189189((*n).kindU.S6.Sons->data[i_425507]);
		semrecordnodeaux_425298(c, LOC24, check, pos, b, rectype);
		res_425569 += 1;
	} LA19: ;
	{
		NIM_BOOL LOC27;
		NI64 LOC29;
		LOC27 = 0;
		LOC27 = chckcovered;
		if (!(LOC27)) goto LA28;
		LOC29 = 0;
		LOC29 = lengthord_223010((*(*a).kindU.S6.Sons->data[0]).Typ);
		LOC27 = !((covered == LOC29));
		LA28: ;
		if (!LOC27) goto LA30;
		localerror_165571((*a).Info, ((NU16) 151), ((NimStringDesc*) &TMP2675));
	}
	LA30: ;
	addson_189207(father, a);
	BeforeRet: ;
}

N_NIMCALL(void, semrecordnodeaux_425298)(tcontext250019* c, tnode188803* n, tintset185047* check, NI* pos, tnode188803* father, ttype188837* rectype) {
	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).Kind) {
	case ((NU8) 138):
	{
		tnode188803* branch;
		NI i_425613;
		NI HEX3Atmp_426176;
		NI LOC6;
		NI res_426178;
		branch = NIM_NIL;
		i_425613 = 0;
		HEX3Atmp_426176 = 0;
		LOC6 = 0;
		LOC6 = sonslen_189181(n);
		HEX3Atmp_426176 = (NI32)(LOC6 - 1);
		res_426178 = 0;
		while (1) {
			tnode188803* it;
			NI idx;
			if (!(res_426178 <= HEX3Atmp_426176)) goto LA7;
			i_425613 = res_426178;
			it = (*n).kindU.S6.Sons->data[i_425613];
			{
				if (!(it == NIM_NIL)) goto LA10;
				illformedast_251203(n);
			}
			LA10: ;
			idx = 1;
			switch ((*it).Kind) {
			case ((NU8) 86):
			{
				checksonslen_251209(it, 2);
				{
					tnode188803* e;
					if (!((*c).Ingenericcontext == 0)) goto LA15;
					e = semconstboolexpr_422470(c, (*it).kindU.S6.Sons->data[0]);
					{
						if (!!(((*e).Kind == ((NU8) 6)))) goto LA19;
						internalerror_165591((*e).Info, ((NimStringDesc*) &TMP3033));
					}
					goto LA17;
					LA19: ;
					{
						NIM_BOOL LOC22;
						LOC22 = 0;
						LOC22 = !(((*e).kindU.S1.Intval == 0));
						if (!(LOC22)) goto LA23;
						LOC22 = (branch == NIM_NIL);
						LA23: ;
						if (!LOC22) goto LA24;
						branch = (*it).kindU.S6.Sons->data[1];
					}
					goto LA17;
					LA24: ;
					LA17: ;
				}
				goto LA13;
				LA15: ;
				{
					tnode188803* LOC27;
					LOC27 = 0;
					LOC27 = semexprwithtype_416011(c, (*it).kindU.S6.Sons->data[0], 0);
					asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[0], forcebool_422446(c, LOC27));
				}
				LA13: ;
			}
			break;
			case ((NU8) 88):
			{
				checksonslen_251209(it, 1);
				{
					if (!(branch == NIM_NIL)) goto LA31;
					branch = (*it).kindU.S6.Sons->data[0];
				}
				LA31: ;
				idx = 0;
			}
			break;
			default:
			{
				illformedast_251203(n);
			}
			break;
			}
			{
				tintset185047 newcheck;
				NI newpos;
				tnode188803* newf;
				if (!(0 < (*c).Ingenericcontext)) goto LA36;
				memset((void*)&newcheck, 0, sizeof(newcheck));
				assign_185939(&newcheck, (*check));
				newpos = (*pos);
				newf = newnodei_189099(((NU8) 136), (*n).Info);
				semrecordnodeaux_425298(c, (*it).kindU.S6.Sons->data[idx], &newcheck, &newpos, newf, rectype);
				{
					NI LOC40;
					LOC40 = 0;
					LOC40 = len_189264(newf);
					if (!(LOC40 == 1)) goto LA41;
					asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[idx], HEX5BHEX5D_189694(newf, 0));
				}
				goto LA38;
				LA41: ;
				{
					asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[idx], newf);
				}
				LA38: ;
			}
			LA36: ;
			res_426178 += 1;
		} LA7: ;
		{
			if (!(0 < (*c).Ingenericcontext)) goto LA46;
			addson_189207(father, n);
		}
		goto LA44;
		LA46: ;
		{
			if (!!((branch == NIM_NIL))) goto LA49;
			semrecordnodeaux_425298(c, branch, check, pos, father, rectype);
		}
		goto LA44;
		LA49: ;
		LA44: ;
	}
	break;
	case ((NU8) 137):
	{
		semrecordcase_425308(c, n, check, pos, father, rectype);
	}
	break;
	case ((NU8) 23):
	{
		{
			tnode188803* LOC57;
			if (!!(((*father).Kind == ((NU8) 136)))) goto LA55;
			LOC57 = 0;
			LOC57 = newnodei_189099(((NU8) 136), (*n).Info);
			addson_189207(father, LOC57);
		}
		LA55: ;
	}
	break;
	case ((NU8) 136):
	{
		tnode188803* a;
		NI i_425859;
		NI HEX3Atmp_426180;
		NI LOC64;
		NI res_426182;
		{
			if (!((*father).Kind == ((NU8) 136))) goto LA61;
			a = father;
		}
		goto LA59;
		LA61: ;
		{
			a = copynode_189233(n);
		}
		LA59: ;
		i_425859 = 0;
		HEX3Atmp_426180 = 0;
		LOC64 = 0;
		LOC64 = sonslen_189181(n);
		HEX3Atmp_426180 = (NI32)(LOC64 - 1);
		res_426182 = 0;
		while (1) {
			if (!(res_426182 <= HEX3Atmp_426180)) goto LA65;
			i_425859 = res_426182;
			semrecordnodeaux_425298(c, (*n).kindU.S6.Sons->data[i_425859], check, pos, a, rectype);
			res_426182 += 1;
		} LA65: ;
		{
			if (!!((a == father))) goto LA68;
			addson_189207(father, a);
		}
		LA68: ;
	}
	break;
	case ((NU8) 35):
	{
		NI length;
		tnode188803* a;
		ttype188837* typ;
		tsym188833* rec;
		NI i_425989;
		NI HEX3Atmp_426186;
		NI LOC87;
		NI res_426188;
		checkminsonslen_251215(n, 3);
		length = sonslen_189181(n);
		a = 0;
		{
			NIM_BOOL LOC73;
			LOC73 = 0;
			LOC73 = !(((*father).Kind == ((NU8) 136)));
			if (!(LOC73)) goto LA74;
			LOC73 = (4 <= length);
			LA74: ;
			if (!LOC73) goto LA75;
			a = newnodei_189099(((NU8) 136), (*n).Info);
		}
		goto LA71;
		LA75: ;
		{
			a = emptynode_189727;
		}
		LA71: ;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[(NI32)(length - 1)]).Kind == ((NU8) 1)))) goto LA80;
			localerror_165571((*(*n).kindU.S6.Sons->data[(NI32)(length - 1)]).Info, ((NU16) 175), ((NimStringDesc*) &TMP2675));
		}
		LA80: ;
		typ = 0;
		{
			if (!((*(*n).kindU.S6.Sons->data[(NI32)(length - 2)]).Kind == ((NU8) 1))) goto LA84;
			localerror_165571((*n).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
			typ = errortype_251136(c);
		}
		goto LA82;
		LA84: ;
		{
			typ = semtypenode_416055(c, (*n).kindU.S6.Sons->data[(NI32)(length - 2)], NIM_NIL);
			propagatetoowner_192852(rectype, typ);
		}
		LA82: ;
		rec = (*rectype).Sym;
		i_425989 = 0;
		HEX3Atmp_426186 = 0;
		LOC87 = 0;
		LOC87 = sonslen_189181(n);
		HEX3Atmp_426186 = (NI32)(LOC87 - 3);
		res_426188 = 0;
		while (1) {
			tsym188833* f;
			if (!(res_426188 <= HEX3Atmp_426186)) goto LA88;
			i_425989 = res_426188;
			f = semidentwithpragma_416608(c, ((NU8) 19), (*n).kindU.S6.Sons->data[i_425989], 2);
			suggestsym_362857((*n).kindU.S6.Sons->data[i_425989], f);
			asgnRefNoCycle((void**) &(*f).Typ, typ);
			(*f).Position = (*pos);
			{
				NIM_BOOL LOC91;
				NIM_BOOL LOC92;
				LOC91 = 0;
				LOC92 = 0;
				LOC92 = !((rec == NIM_NIL));
				if (!(LOC92)) goto LA93;
				LOC92 = !(((96 & (*rec).Flags) == 0));
				LA93: ;
				LOC91 = LOC92;
				if (!(LOC91)) goto LA94;
				LOC91 = ((*f).Loc.R == NIM_NIL);
				LA94: ;
				if (!LOC91) goto LA95;
				asgnRefNoCycle((void**) &(*f).Loc.R, torope_145058((*(*f).Name).S));
				(*f).Flags = ((*f).Flags | (96 & (*rec).Flags));
			}
			LA95: ;
			(*pos) += 1;
			{
				NIM_BOOL LOC99;
				LOC99 = 0;
				LOC99 = containsorincl_185888(check, (*(*f).Name).Sup.Id);
				if (!LOC99) goto LA100;
				localerror_165571((*(*n).kindU.S6.Sons->data[i_425989]).Info, ((NU16) 40), (*(*f).Name).S);
			}
			LA100: ;
			{
				tnode188803* LOC106;
				if (!((*a).Kind == ((NU8) 1))) goto LA104;
				LOC106 = 0;
				LOC106 = newsymnode_189095(f);
				addson_189207(father, LOC106);
			}
			goto LA102;
			LA104: ;
			{
				tnode188803* LOC108;
				LOC108 = 0;
				LOC108 = newsymnode_189095(f);
				addson_189207(a, LOC108);
			}
			LA102: ;
			res_426188 += 1;
		} LA88: ;
		{
			if (!!(((*a).Kind == ((NU8) 1)))) goto LA111;
			addson_189207(father, a);
		}
		LA111: ;
	}
	break;
	case ((NU8) 1):
	{
	}
	break;
	default:
	{
		illformedast_251203(n);
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(ttype188837*, semobjectnode_426398)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	tintset185047 check;
	NI pos;
	ttype188837* base;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 0)) goto LA4;
		result = newconstraint_422561(c, ((NU8) 17));
		goto BeforeRet;
	}
	LA4: ;
	chckNil((void*)&check);
	memset((void*)&check, 0, sizeof(check));
	initintset_185918(&check);
	pos = 0;
	base = NIM_NIL;
	checksonslen_251209(n, 3);
	{
		ttype188837* LOC10;
		ttype188837* concretebase;
		ttype188837* LOC11;
		if (!!(((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 1)))) goto LA8;
		LOC10 = 0;
		LOC10 = semtypenode_416055(c, (*(*n).kindU.S6.Sons->data[1]).kindU.S6.Sons->data[0], NIM_NIL);
		base = skiptypes_192793(LOC10, IL64(211106247215360));
		LOC11 = 0;
		LOC11 = skipgenericinvokation_426375(base);
		concretebase = skiptypes_192793(LOC11, IL64(211106247215360));
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = ((*concretebase).Kind == ((NU8) 17));
			if (!(LOC14)) goto LA15;
			LOC14 = !((((*concretebase).Flags &(1<<((((NU8) 2))&31)))!=0));
			LA15: ;
			if (!LOC14) goto LA16;
			addinheritedfields_426348(c, &check, &pos, concretebase);
		}
		goto LA12;
		LA16: ;
		{
			{
				if (!!(((*concretebase).Kind == ((NU8) 50)))) goto LA21;
				localerror_165571((*(*n).kindU.S6.Sons->data[1]).Info, ((NU16) 121), ((NimStringDesc*) &TMP2675));
			}
			LA21: ;
			base = NIM_NIL;
		}
		LA12: ;
	}
	LA8: ;
	{
		if (!!(((*n).Kind == ((NU8) 132)))) goto LA25;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP2703));
	}
	LA25: ;
	result = neworprevtype_422528(((NU8) 17), prev, c);
	rawaddson_193092(result, base);
	asgnRefNoCycle((void**) &(*result).N, newnodei_189099(((NU8) 136), (*n).Info));
	semrecordnodeaux_425298(c, (*n).kindU.S6.Sons->data[2], &check, &pos, (*result).N, result);
	{
		tsym188833* s;
		tident167019* LOC31;
		tnode188803* LOC32;
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA29;
		LOC31 = 0;
		LOC31 = getident_167456(((NimStringDesc*) &TMP3035));
		LOC32 = 0;
		LOC32 = newidentnode_189090(LOC31, (*n).Info);
		s = newsyms_416504(((NU8) 7), LOC32, c);
		asgnRefNoCycle((void**) &(*s).Typ, result);
		pragma_267073(c, s, (*n).kindU.S6.Sons->data[0], TMP3036);
	}
	LA29: ;
	{
		NIM_BOOL LOC35;
		LOC35 = 0;
		LOC35 = (base == NIM_NIL);
		if (!(LOC35)) goto LA36;
		LOC35 = !((((*result).Flags &(1<<((((NU8) 3))&31)))!=0));
		LA36: ;
		if (!LOC35) goto LA37;
		(*result).Flags |=((NI32)(1)<<((((NU8) 2))%(sizeof(NI32)*8)));
	}
	LA37: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(ttype188837*, semtuple_424366)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	ttype188837* typ;
	tintset185047 check;
	NI counter;
	NI i_424387;
	NI HEX3Atmp_424574;
	NI LOC6;
	NI res_424576;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 0)) goto LA4;
		result = newconstraint_422561(c, ((NU8) 18));
		goto BeforeRet;
	}
	LA4: ;
	typ = 0;
	result = neworprevtype_422528(((NU8) 18), prev, c);
	asgnRefNoCycle((void**) &(*result).N, newnodei_189099(((NU8) 136), (*n).Info));
	chckNil((void*)&check);
	memset((void*)&check, 0, sizeof(check));
	initintset_185918(&check);
	counter = 0;
	i_424387 = 0;
	HEX3Atmp_424574 = 0;
	LOC6 = 0;
	LOC6 = sonslen_189181(n);
	HEX3Atmp_424574 = (NI32)(LOC6 - 1);
	res_424576 = 0;
	while (1) {
		tnode188803* a;
		NI length;
		NI j_424499;
		NI HEX3Atmp_424570;
		NI res_424572;
		if (!(res_424576 <= HEX3Atmp_424574)) goto LA7;
		i_424387 = res_424576;
		a = (*n).kindU.S6.Sons->data[i_424387];
		{
			if (!!(((*a).Kind == ((NU8) 35)))) goto LA10;
			illformedast_251203(a);
		}
		LA10: ;
		checkminsonslen_251215(a, 3);
		length = sonslen_189181(a);
		{
			if (!!(((*(*a).kindU.S6.Sons->data[(NI32)(length - 2)]).Kind == ((NU8) 1)))) goto LA14;
			typ = semtypenode_416055(c, (*a).kindU.S6.Sons->data[(NI32)(length - 2)], NIM_NIL);
		}
		goto LA12;
		LA14: ;
		{
			localerror_165571((*a).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
			typ = errortype_251136(c);
		}
		LA12: ;
		{
			if (!!(((*(*a).kindU.S6.Sons->data[(NI32)(length - 1)]).Kind == ((NU8) 1)))) goto LA19;
			localerror_165571((*(*a).kindU.S6.Sons->data[(NI32)(length - 1)]).Info, ((NU16) 175), ((NimStringDesc*) &TMP2675));
		}
		LA19: ;
		j_424499 = 0;
		HEX3Atmp_424570 = 0;
		HEX3Atmp_424570 = (NI32)(length - 3);
		res_424572 = 0;
		while (1) {
			tsym188833* field;
			if (!(res_424572 <= HEX3Atmp_424570)) goto LA21;
			j_424499 = res_424572;
			field = newsymg_416512(((NU8) 19), (*a).kindU.S6.Sons->data[j_424499], c);
			asgnRefNoCycle((void**) &(*field).Typ, typ);
			(*field).Position = counter;
			counter += 1;
			{
				NIM_BOOL LOC24;
				LOC24 = 0;
				LOC24 = containsorincl_185888(&check, (*(*field).Name).Sup.Id);
				if (!LOC24) goto LA25;
				localerror_165571((*(*a).kindU.S6.Sons->data[j_424499]).Info, ((NU16) 40), (*(*field).Name).S);
			}
			goto LA22;
			LA25: ;
			{
				tnode188803* LOC28;
				LOC28 = 0;
				LOC28 = newsymnode_189095(field);
				addson_189207((*result).N, LOC28);
				addsonskipintlit_242461(result, typ);
			}
			LA22: ;
			{
				if (!(gcmd_137113 == ((NU8) 7))) goto LA31;
				checkdef_355603((*a).kindU.S6.Sons->data[j_424499], field);
			}
			LA31: ;
			res_424572 += 1;
		} LA21: ;
		res_424576 += 1;
	} LA7: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(ttype188837*, semtypeclass_428688)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	tnode188803* pragmas;
	tnode188803* inherited;
	result = 0;
	result = neworprevtype_422528(((NU8) 52), prev, c);
	asgnRefNoCycle((void**) &(*result).N, n);
	pragmas = HEX5BHEX5D_189694(n, 1);
	inherited = HEX5BHEX5D_189694(n, 2);
	{
		tnode188803* n_428731;
		tnodeseq188797* HEX3Atmp_428750;
		NI i_428752;
		NI l_428754;
		if (!!(((*inherited).Kind == ((NU8) 1)))) goto LA3;
		n_428731 = 0;
		HEX3Atmp_428750 = 0;
		HEX3Atmp_428750 = (*inherited).kindU.S6.Sons;
		i_428752 = 0;
		l_428754 = HEX3Atmp_428750->Sup.len;
		while (1) {
			ttype188837* typ;
			if (!(i_428752 < l_428754)) goto LA5;
			n_428731 = HEX3Atmp_428750->data[i_428752];
			typ = semtypenode_416055(c, n_428731, NIM_NIL);
			safeadd_273475(&(*result).Sons, typ);
			i_428752 += 1;
		} LA5: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(ttype188837*, semvartype_423244)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	result = 0;
	{
		NI LOC3;
		ttype188837* base;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 1)) goto LA4;
		result = neworprevtype_422528(((NU8) 23), prev, c);
		base = semtypenode_416055(c, (*n).kindU.S6.Sons->data[0], NIM_NIL);
		{
			if (!((*base).Kind == ((NU8) 23))) goto LA8;
			localerror_165571((*n).Info, ((NU16) 197), ((NimStringDesc*) &TMP2675));
			base = (*base).Sons->data[0];
		}
		LA8: ;
		addsonskipintlit_242461(result, base);
	}
	goto LA1;
	LA4: ;
	{
		result = newconstraint_422561(c, ((NU8) 23));
	}
	LA1: ;
	return result;
}

N_NIMCALL(ttype188837*, semdistinct_423275)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	ttype188837* LOC6;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = len_189264(n);
		if (!(LOC3 == 0)) goto LA4;
		result = newconstraint_422561(c, ((NU8) 13));
		goto BeforeRet;
	}
	LA4: ;
	result = neworprevtype_422528(((NU8) 13), prev, c);
	LOC6 = 0;
	LOC6 = semtypenode_416055(c, (*n).kindU.S6.Sons->data[0], NIM_NIL);
	addsonskipintlit_242461(result, LOC6);
	{
		NI LOC9;
		LOC9 = 0;
		LOC9 = len_189264(n);
		if (!(1 < LOC9)) goto LA10;
		asgnRefNoCycle((void**) &(*result).N, HEX5BHEX5D_189694(n, 1));
	}
	LA10: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(ttype188837*, semproctypewithscope_428757)(tcontext250019* c, tnode188803* n, ttype188837* prev, NU8 kind) {
	ttype188837* result;
	tscope188827* LOC1;
	tsym188833* s;
	tident167019* LOC2;
	tnode188803* LOC3;
	result = 0;
	checksonslen_251209(n, 2);
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	result = semproctypenode_427613(c, (*n).kindU.S6.Sons->data[0], NIM_NIL, prev, kind);
	LOC2 = 0;
	LOC2 = getident_167456(((NimStringDesc*) &TMP3035));
	LOC3 = 0;
	LOC3 = newidentnode_189090(LOC2, (*n).Info);
	s = newsyms_416504(kind, LOC3, c);
	asgnRefNoCycle((void**) &(*s).Typ, result);
	{
		NIM_BOOL LOC6;
		NI LOC8;
		LOC6 = 0;
		LOC6 = ((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 1));
		if (LOC6) goto LA7;
		LOC8 = 0;
		LOC8 = len_189264((*n).kindU.S6.Sons->data[1]);
		LOC6 = (LOC8 == 0);
		LA7: ;
		if (!LOC6) goto LA9;
		{
			if (!((*result).Callconv == ((NU8) 0))) goto LA13;
			(*result).Callconv = ((NU8) 8);
		}
		LA13: ;
	}
	goto LA4;
	LA9: ;
	{
		pragma_267073(c, s, (*n).kindU.S6.Sons->data[1], TMP3037);
		seteffectsforproctype_324766(result, (*n).kindU.S6.Sons->data[1]);
	}
	LA4: ;
	closescope_252179(c);
	return result;
}

N_NIMCALL(ttype188837*, semenum_422567)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	NI64 counter;
	NI64 x;
	tsym188833* e;
	ttype188837* base;
	NIM_BOOL ispure;
	NIM_BOOL LOC15;
	NIM_BOOL hasnull;
	NI i_422695;
	NI HEX3Atmp_423028;
	NI LOC17;
	NI res_423030;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 0)) goto LA4;
		result = newconstraint_422561(c, ((NU8) 14));
		goto BeforeRet;
	}
	LA4: ;
	counter = 0;
	x = 0;
	e = 0;
	base = 0;
	counter = 0;
	base = NIM_NIL;
	result = neworprevtype_422528(((NU8) 14), prev, c);
	asgnRefNoCycle((void**) &(*result).N, newnodei_189099(((NU8) 148), (*n).Info));
	checkminsonslen_251215(n, 1);
	{
		NI64 LOC14;
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA8;
		base = semtypenode_416055(c, (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[0], NIM_NIL);
		{
			if (!!(((*base).Kind == ((NU8) 14)))) goto LA12;
			localerror_165571((*(*n).kindU.S6.Sons->data[0]).Info, ((NU16) 122), ((NimStringDesc*) &TMP2675));
		}
		LA12: ;
		LOC14 = 0;
		LOC14 = lastord_223006(base);
		counter = (NI64)(LOC14 + 1);
	}
	LA8: ;
	rawaddson_193092(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;
	i_422695 = 0;
	HEX3Atmp_423028 = 0;
	LOC17 = 0;
	LOC17 = sonslen_189181(n);
	HEX3Atmp_423028 = (NI32)(LOC17 - 1);
	res_423030 = 1;
	while (1) {
		tnode188803* LOC65;
		if (!(res_423030 <= HEX3Atmp_423028)) goto LA18;
		i_422695 = res_423030;
		switch ((*(*n).kindU.S6.Sons->data[i_422695]).Kind) {
		case ((NU8) 149):
		{
			tnode188803* v;
			tnode188803* strval;
			ttype188837* LOC20;
			e = newsyms_416504(((NU8) 20), (*(*n).kindU.S6.Sons->data[i_422695]).kindU.S6.Sons->data[0], c);
			v = semconstexpr_417095(c, (*(*n).kindU.S6.Sons->data[i_422695]).kindU.S6.Sons->data[1]);
			strval = NIM_NIL;
			LOC20 = 0;
			LOC20 = skiptypes_192793((*v).Typ, IL64(211106232576000));
			switch ((*LOC20).Kind) {
			case ((NU8) 18):
			{
				{
					NI LOC24;
					LOC24 = 0;
					LOC24 = sonslen_189181(v);
					if (!(LOC24 == 2)) goto LA25;
					strval = (*v).kindU.S6.Sons->data[1];
					{
						ttype188837* LOC29;
						LOC29 = 0;
						LOC29 = skiptypes_192793((*strval).Typ, IL64(211106232576256));
						if (!((*LOC29).Kind == ((NU8) 28) || (*LOC29).Kind == ((NU8) 29))) goto LA30;
						x = getordvalue_223150((*v).kindU.S6.Sons->data[0]);
					}
					goto LA27;
					LA30: ;
					{
						localerror_165571((*strval).Info, ((NU16) 6), ((NimStringDesc*) &TMP2675));
					}
					LA27: ;
				}
				goto LA22;
				LA25: ;
				{
					localerror_165571((*v).Info, ((NU16) 111), ((NimStringDesc*) &TMP2675));
				}
				LA22: ;
			}
			break;
			case ((NU8) 28):
			case ((NU8) 29):
			{
				strval = v;
				x = counter;
			}
			break;
			default:
			{
				x = getordvalue_223150(v);
			}
			break;
			}
			{
				if (!!((i_422695 == 1))) goto LA38;
				{
					if (!!((x == counter))) goto LA42;
					(*result).Flags |=((NI32)(1)<<((((NU8) 5))%(sizeof(NI32)*8)));
				}
				LA42: ;
				{
					if (!(x < counter)) goto LA46;
					localerror_165571((*(*n).kindU.S6.Sons->data[i_422695]).Info, ((NU16) 145), (*(*e).Name).S);
					x = counter;
				}
				LA46: ;
			}
			LA38: ;
			asgnRefNoCycle((void**) &(*e).Ast, strval);
			counter = x;
		}
		break;
		case ((NU8) 3):
		{
			e = (*(*n).kindU.S6.Sons->data[i_422695]).kindU.S4.Sym;
		}
		break;
		case ((NU8) 2):
		{
			e = newsyms_416504(((NU8) 20), (*n).kindU.S6.Sons->data[i_422695], c);
		}
		break;
		default:
		{
			illformedast_251203(n);
		}
		break;
		}
		asgnRefNoCycle((void**) &(*e).Typ, result);
		(*e).Position = ((NI) (counter));
		{
			if (!((*e).Position == 0)) goto LA53;
			hasnull = NIM_TRUE;
		}
		LA53: ;
		{
			NIM_BOOL LOC57;
			LOC57 = 0;
			LOC57 = !(((*result).Sym == NIM_NIL));
			if (!(LOC57)) goto LA58;
			LOC57 = (((*(*result).Sym).Flags &(1<<((((NU8) 1))&31)))!=0);
			LA58: ;
			if (!LOC57) goto LA59;
			(*e).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
			(*e).Flags |=((NI32)(1)<<((((NU8) 1))%(sizeof(NI32)*8)));
			{
				if (!!(ispure)) goto LA63;
				strtableadd_197078(&(*(*c).Module).kindU.S3.Tab, e);
			}
			LA63: ;
		}
		LA59: ;
		LOC65 = 0;
		LOC65 = newsymnode_189095(e);
		addson_189207((*result).N, LOC65);
		{
			NIM_BOOL LOC68;
			LOC68 = 0;
			LOC68 = !((((*e).Flags &(1<<((((NU8) 31))&31)))!=0));
			if (!(LOC68)) goto LA69;
			LOC68 = !(ispure);
			LA69: ;
			if (!LOC68) goto LA70;
			adddecl_252550(c, e);
		}
		LA70: ;
		counter += 1;
		res_423030 += 1;
	} LA18: ;
	{
		if (!!(hasnull)) goto LA74;
		(*result).Flags |=((NI32)(1)<<((((NU8) 17))%(sizeof(NI32)*8)));
	}
	LA74: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(ttype188837*, semstmtlisttype_428240)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	NI length;
	NI i_428259;
	NI HEX3Atmp_428317;
	NI res_428319;
	result = 0;
	checkminsonslen_251215(n, 1);
	length = sonslen_189181(n);
	i_428259 = 0;
	HEX3Atmp_428317 = 0;
	HEX3Atmp_428317 = (NI32)(length - 2);
	res_428319 = 0;
	while (1) {
		if (!(res_428319 <= HEX3Atmp_428317)) goto LA1;
		i_428259 = res_428319;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_428259], semstmt_416061(c, (*n).kindU.S6.Sons->data[i_428259]));
		res_428319 += 1;
	} LA1: ;
	{
		if (!(0 < length)) goto LA4;
		result = semtypenode_416055(c, (*n).kindU.S6.Sons->data[(NI32)(length - 1)], prev);
		asgnRefNoCycle((void**) &(*n).Typ, result);
		asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[(NI32)(length - 1)]).Typ, result);
	}
	goto LA2;
	LA4: ;
	{
		result = NIM_NIL;
	}
	LA2: ;
	return result;
}

N_NIMCALL(ttype188837*, semblocktype_428323)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	tscope188827* LOC1;
	result = 0;
	(*(*c).P).Nestedblockcounter += 1;
	checksonslen_251209(n, 2);
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	{
		tsym188833* LOC6;
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1) || (*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA4;
		LOC6 = 0;
		LOC6 = newsyms_416504(((NU8) 22), (*n).kindU.S6.Sons->data[0], c);
		adddecl_252550(c, LOC6);
	}
	LA4: ;
	result = semstmtlisttype_428240(c, (*n).kindU.S6.Sons->data[1], prev);
	asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[1]).Typ, result);
	asgnRefNoCycle((void**) &(*n).Typ, result);
	closescope_252179(c);
	(*(*c).P).Nestedblockcounter -= 1;
	return result;
}

N_NIMCALL(ttype188837*, semtypenode_416055)(tcontext250019* c, tnode188803* n, ttype188837* prev) {
	ttype188837* result;
	result = 0;
	result = NIM_NIL;
	{
		if (!(gcmd_137113 == ((NU8) 14))) goto LA3;
		suggestexpr_362986(c, n);
	}
	LA3: ;
	switch ((*n).Kind) {
	case ((NU8) 1):
	{
	}
	break;
	case ((NU8) 131):
	{
		tnode188803* typexpr;
		checksonslen_251209(n, 1);
		typexpr = semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[0], 4);
		result = skiptypes_192793((*typexpr).Typ, IL64(562949953421312));
	}
	break;
	case ((NU8) 37):
	{
		{
			NI LOC10;
			LOC10 = 0;
			LOC10 = sonslen_189181(n);
			if (!(LOC10 == 1)) goto LA11;
			result = semtypenode_416055(c, (*n).kindU.S6.Sons->data[0], prev);
		}
		goto LA8;
		LA11: ;
		{
			localerror_165571((*n).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
			result = neworprevtype_422528(((NU8) 50), prev, c);
		}
		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_222077(n);
			if (!LOC17) goto LA18;
			result = semrangeaux_423297(c, n, prev);
		}
		goto LA15;
		LA18: ;
		{
			tnode188803* LOC21;
			tident167019* op;
			LOC21 = 0;
			LOC21 = HEX5BHEX5D_189694(n, 0);
			if (!((*LOC21).Kind == ((NU8) 2))) goto LA22;
			op = (*(*n).kindU.S6.Sons->data[0]).kindU.S5.Ident;
			{
				NIM_BOOL LOC26;
				ttype188837* t1;
				ttype188837* t2;
				LOC26 = 0;
				LOC26 = ((*op).Sup.Id == 2 || (*op).Sup.Id == 47);
				if (LOC26) goto LA27;
				LOC26 = eqStrings((*op).S, ((NimStringDesc*) &TMP2677));
				LA27: ;
				if (!LOC26) goto LA28;
				checksonslen_251209(n, 3);
				t1 = semtypenode_416055(c, (*n).kindU.S6.Sons->data[1], NIM_NIL);
				t2 = semtypenode_416055(c, (*n).kindU.S6.Sons->data[2], NIM_NIL);
				{
					if (!(t1 == NIM_NIL)) goto LA32;
					localerror_165571((*(*n).kindU.S6.Sons->data[1]).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
					result = neworprevtype_422528(((NU8) 50), prev, c);
				}
				goto LA30;
				LA32: ;
				{
					if (!(t2 == NIM_NIL)) goto LA35;
					localerror_165571((*(*n).kindU.S6.Sons->data[2]).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
					result = neworprevtype_422528(((NU8) 50), prev, c);
				}
				goto LA30;
				LA35: ;
				{
					{
						if (!((*op).Sup.Id == 2)) goto LA40;
						result = makeandtype_250741(c, t1, t2);
					}
					goto LA38;
					LA40: ;
					{
						result = makeortype_250856(c, t1, t2);
					}
					LA38: ;
				}
				LA30: ;
			}
			goto LA24;
			LA28: ;
			{
				NI LOC46;
				if (!((*op).Sup.Id == 43)) goto LA44;
				LOC46 = 0;
				LOC46 = len_189264(n);
				switch (LOC46) {
				case 3:
				{
					result = semtypenode_416055(c, (*n).kindU.S6.Sons->data[1], prev);
					{
						NIM_BOOL LOC50;
						LOC50 = 0;
						LOC50 = ((*result).Kind == ((NU8) 26) || (*result).Kind == ((NU8) 29) || (*result).Kind == ((NU8) 22) || (*result).Kind == ((NU8) 21) || (*result).Kind == ((NU8) 24) || (*result).Kind == ((NU8) 25) || (*result).Kind == ((NU8) 28) || (*result).Kind == ((NU8) 50));
						if (!(LOC50)) goto LA51;
						LOC50 = ((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 23));
						LA51: ;
						if (!LOC50) goto LA52;
						result = freshtype_428671(result, prev);
						(*result).Flags |=((NI32)(1)<<((((NU8) 16))%(sizeof(NI32)*8)));
					}
					goto LA48;
					LA52: ;
					{
						localerror_165571((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP2678));
					}
					LA48: ;
				}
				break;
				case 2:
				{
					ttype188837* negated;
					negated = semtypenode_416055(c, (*n).kindU.S6.Sons->data[1], prev);
					result = makenottype_250971(c, negated);
				}
				break;
				default:
				{
					localerror_165571((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP2678));
				}
				break;
				}
			}
			goto LA24;
			LA44: ;
			{
				if (!((*op).Sup.Id == 50)) goto LA58;
				result = semanyref_423149(c, n, ((NU8) 21), prev);
			}
			goto LA24;
			LA58: ;
			{
				if (!((*op).Sup.Id == 52)) goto LA61;
				result = semanyref_423149(c, n, ((NU8) 22), prev);
			}
			goto LA24;
			LA61: ;
			{
				result = semtypeexpr_428654(c, n);
			}
			LA24: ;
		}
		goto LA15;
		LA22: ;
		{
			result = semtypeexpr_428654(c, n);
		}
		LA15: ;
	}
	break;
	case ((NU8) 93):
	{
		tnode188803* whenresult;
		whenresult = semwhen_416637(c, n, NIM_FALSE);
		{
			if (!((*whenresult).Kind == ((NU8) 114))) goto LA68;
			(*whenresult).Kind = ((NU8) 127);
		}
		LA68: ;
		result = semtypenode_416055(c, whenresult, prev);
	}
	break;
	case ((NU8) 42):
	{
		tsym188833* s;
		checkminsonslen_251215(n, 2);
		s = semtypeident_424101(c, (*n).kindU.S6.Sons->data[0]);
		switch ((*s).Magic) {
		case ((NU16) 175):
		{
			result = semarray_423785(c, n, prev);
		}
		break;
		case ((NU16) 176):
		{
			result = semcontainer_423075(c, n, ((NU8) 27), ((NimStringDesc*) &TMP2683), prev);
		}
		break;
		case ((NU16) 177):
		{
			result = semrange_423470(c, n, prev);
		}
		break;
		case ((NU16) 178):
		{
			result = semset_423034(c, n, prev);
		}
		break;
		case ((NU16) 181):
		{
			result = semordinal_424056(c, n, prev);
		}
		break;
		case ((NU16) 179):
		{
			result = semcontainer_423075(c, n, ((NU8) 24), ((NimStringDesc*) &TMP2687), prev);
		}
		break;
		case ((NU16) 180):
		{
			result = semvarargs_423099(c, n, prev);
		}
		break;
		case ((NU16) 206):
		{
			tnode188803* LOC79;
			ttype188837* LOC80;
			LOC79 = 0;
			LOC79 = HEX5BHEX5D_189694(n, 1);
			LOC80 = 0;
			LOC80 = semtypenode_416055(c, LOC79, NIM_NIL);
			result = maketypedesc_250627(c, LOC80);
		}
		break;
		case ((NU16) 204):
		{
			result = semtypenode_416055(c, (*n).kindU.S6.Sons->data[0], NIM_NIL);
			{
				tsym188833* LOC86;
				NI i_429404;
				NI HEX3Atmp_429778;
				NI LOC87;
				NI res_429780;
				if (!!((result == NIM_NIL))) goto LA84;
				LOC86 = 0;
				LOC86 = getcurrowner_250215();
				result = copytype_189141(result, LOC86, NIM_FALSE);
				i_429404 = 0;
				HEX3Atmp_429778 = 0;
				LOC87 = 0;
				LOC87 = len_189264(n);
				HEX3Atmp_429778 = (NI32)(LOC87 - 1);
				res_429780 = 1;
				while (1) {
					ttype188837* LOC89;
					if (!(res_429780 <= HEX3Atmp_429778)) goto LA88;
					i_429404 = res_429780;
					LOC89 = 0;
					LOC89 = semtypenode_416055(c, (*n).kindU.S6.Sons->data[i_429404], NIM_NIL);
					rawaddson_193092(result, LOC89);
					res_429780 += 1;
				} LA88: ;
			}
			LA84: ;
		}
		break;
		default:
		{
			result = semgeneric_428438(c, n, s, prev);
		}
		break;
		}
	}
	break;
	case ((NU8) 45):
	{
		tnode188803* typeexpr;
		typeexpr = semexpr_416003(c, n, 0);
		{
			if (!!(((*(*typeexpr).Typ).Kind == ((NU8) 8)))) goto LA94;
			localerror_165571((*n).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
			result = errortype_251136(c);
			goto BeforeRet;
		}
		LA94: ;
		result = base_223029((*typeexpr).Typ);
		{
			NIM_BOOL LOC98;
			tintset185047 tobind;
			tnode188803* preprocessed;
			LOC98 = 0;
			LOC98 = ismetatype_189732(result);
			if (!LOC98) goto LA99;
			chckNil((void*)&tobind);
			memset((void*)&tobind, 0, sizeof(tobind));
			initintset_185918(&tobind);
			preprocessed = semgenericstmt_422520(c, n, 0, &tobind);
			result = maketypefromexpr_250668(c, preprocessed);
			goto BeforeRet;
		}
		LA99: ;
	}
	break;
	case ((NU8) 2):
	case ((NU8) 53):
	{
		tsym188833* s;
		s = semtypeident_424101(c, n);
		{
			if (!((*s).Typ == NIM_NIL)) goto LA104;
			{
				if (!!(((*s).Kind == ((NU8) 0)))) goto LA108;
				localerror_165571((*n).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
			}
			LA108: ;
			result = neworprevtype_422528(((NU8) 50), prev, c);
		}
		goto LA102;
		LA104: ;
		{
			NIM_BOOL LOC111;
			LOC111 = 0;
			LOC111 = ((*s).Kind == ((NU8) 3));
			if (!(LOC111)) goto LA112;
			LOC111 = ((*(*s).Typ).Kind == ((NU8) 8));
			LA112: ;
			if (!LOC111) goto LA113;
			{
				NIM_BOOL LOC117;
				ttype188837* LOC118;
				NimStringDesc* LOC122;
				LOC117 = 0;
				LOC118 = 0;
				LOC118 = base_223029((*s).Typ);
				LOC117 = !(((*LOC118).Kind == ((NU8) 0)));
				if (!(LOC117)) goto LA119;
				LOC117 = (prev == NIM_NIL);
				LA119: ;
				if (!!(LOC117)) goto LA120;
				LOC122 = 0;
				LOC122 = HEX24_165714(TMP2699);
				internalerror_165606(LOC122);
			}
			LA120: ;
			result = base_223029((*s).Typ);
		}
		goto LA102;
		LA113: ;
		{
			if (!(prev == NIM_NIL)) goto LA124;
			result = (*s).Typ;
		}
		goto LA102;
		LA124: ;
		{
			assigntype_189152(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 LA129;
				(*prev).Sup.Id = (*(*s).Typ).Sup.Id;
			}
			LA129: ;
			result = prev;
		}
		LA102: ;
	}
	break;
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC134;
			ttype188837* t;
			LOC134 = 0;
			LOC134 = ((*(*n).kindU.S4.Sym).Kind == ((NU8) 7));
			if (!(LOC134)) goto LA135;
			LOC134 = !(((*(*n).kindU.S4.Sym).Typ == NIM_NIL));
			LA135: ;
			if (!LOC134) goto LA136;
			t = (*(*n).kindU.S4.Sym).Typ;
			{
				if (!(prev == NIM_NIL)) goto LA140;
				result = t;
			}
			goto LA138;
			LA140: ;
			{
				assigntype_189152(prev, t);
				result = prev;
			}
			LA138: ;
			markused_345244(n, (*n).kindU.S4.Sym);
		}
		goto LA132;
		LA136: ;
		{
			{
				if (!!(((*(*n).kindU.S4.Sym).Kind == ((NU8) 0)))) goto LA146;
				localerror_165571((*n).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
			}
			LA146: ;
			result = neworprevtype_422528(((NU8) 50), prev, c);
		}
		LA132: ;
	}
	break;
	case ((NU8) 132):
	{
		result = semobjectnode_426398(c, n, prev);
	}
	break;
	case ((NU8) 133):
	{
		result = semtuple_424366(c, n, prev);
	}
	break;
	case ((NU8) 134):
	{
		result = semtypeclass_428688(c, n, prev);
	}
	break;
	case ((NU8) 139):
	{
		result = semanyref_423149(c, n, ((NU8) 22), prev);
	}
	break;
	case ((NU8) 140):
	{
		result = semanyref_423149(c, n, ((NU8) 21), prev);
	}
	break;
	case ((NU8) 141):
	{
		result = semvartype_423244(c, n, prev);
	}
	break;
	case ((NU8) 144):
	{
		result = semdistinct_423275(c, n, prev);
	}
	break;
	case ((NU8) 135):
	{
		ttype188837* base;
		result = neworprevtype_422528(((NU8) 59), prev, c);
		base = semtypenode_416055(c, (*n).kindU.S6.Sons->data[0], NIM_NIL);
		rawaddson_193092(result, base);
		(*result).Flags |=((NI32)(1)<<((((NU8) 22))%(sizeof(NI32)*8)));
	}
	break;
	case ((NU8) 146):
	{
		{
			NI LOC159;
			LOC159 = 0;
			LOC159 = sonslen_189181(n);
			if (!(LOC159 == 0)) goto LA160;
			result = newconstraint_422561(c, ((NU8) 49));
		}
		goto LA157;
		LA160: ;
		{
			result = semproctypewithscope_428757(c, n, prev, ((NU8) 15));
			{
				NIM_BOOL LOC165;
				tnode188803* LOC166;
				tnode188803* LOC168;
				LOC165 = 0;
				LOC166 = 0;
				LOC166 = lastson_189189(n);
				LOC165 = ((*LOC166).Kind == ((NU8) 90));
				if (!(LOC165)) goto LA167;
				LOC168 = 0;
				LOC168 = lastson_189189(n);
				LOC165 = haspragma_272125(LOC168, ((NU8) 130));
				LA167: ;
				if (!LOC165) goto LA169;
				(*result).Kind = ((NU8) 49);
				(*result).Callconv = ((NU8) 5);
			}
			goto LA163;
			LA169: ;
			{
				(*result).Flags |=((NI32)(1)<<((((NU8) 14))%(sizeof(NI32)*8)));
				(*result).Callconv = ((NU8) 8);
			}
			LA163: ;
		}
		LA157: ;
	}
	break;
	case ((NU8) 145):
	{
		{
			NI LOC175;
			LOC175 = 0;
			LOC175 = sonslen_189181(n);
			if (!(LOC175 == 0)) goto LA176;
			result = newconstraint_422561(c, ((NU8) 25));
		}
		goto LA173;
		LA176: ;
		{
			result = semproctypewithscope_428757(c, n, prev, ((NU8) 12));
		}
		LA173: ;
	}
	break;
	case ((NU8) 148):
	{
		result = semenum_422567(c, n, prev);
	}
	break;
	case ((NU8) 4):
	{
		result = (*n).Typ;
	}
	break;
	case ((NU8) 127):
	{
		result = semstmtlisttype_428240(c, n, prev);
	}
	break;
	case ((NU8) 128):
	{
		result = semblocktype_428323(c, n, prev);
	}
	break;
	case ((NU8) 147):
	{
		checksonslen_251209(n, 1);
		result = semtypenode_416055(c, (*n).kindU.S6.Sons->data[0], prev);
		result = freshtype_428671(result, prev);
		(*result).Flags |=((NI32)(1)<<((((NU8) 15))%(sizeof(NI32)*8)));
	}
	break;
	default:
	{
		localerror_165571((*n).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
		result = neworprevtype_422528(((NU8) 50), prev, c);
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semaftermacrocall_422334)(tcontext250019* c, tnode188803* n, tsym188833* s, NU16 flags) {
	tnode188803* result;
	tsym188833* oldfriend;
	result = 0;
	evaltemplatecounter_390273 += 1;
	{
		if (!(100 < evaltemplatecounter_390273)) goto LA3;
		globalerror_165558((*s).Info, ((NU16) 183), ((NimStringDesc*) &TMP2675));
	}
	LA3: ;
	oldfriend = (*c).Friendmodule;
	asgnRefNoCycle((void**) &(*c).Friendmodule, getmodule_197183((*s).Owner));
	result = n;
	{
		if (!((*(*s).Typ).Sons->data[0] == NIM_NIL)) goto LA7;
		result = semstmt_416061(c, result);
	}
	goto LA5;
	LA7: ;
	{
		switch ((*(*(*s).Typ).Sons->data[0]).Kind) {
		case ((NU8) 6):
		{
			result = semexpr_416003(c, result, flags);
		}
		break;
		case ((NU8) 7):
		{
			result = semstmt_416061(c, result);
		}
		break;
		case ((NU8) 8):
		{
			ttype188837* typ;
			{
				if (!((*n).Kind == ((NU8) 114))) goto LA15;
				(*result).Kind = ((NU8) 127);
			}
			LA15: ;
			typ = semtypenode_416055(c, result, NIM_NIL);
			asgnRefNoCycle((void**) &(*result).Typ, maketypedesc_250627(c, typ));
		}
		break;
		default:
		{
			result = semexpr_416003(c, result, flags);
			result = fitnode_416037(c, (*(*s).Typ).Sons->data[0], result);
		}
		break;
		}
	}
	LA5: ;
	evaltemplatecounter_390273 -= 1;
	asgnRefNoCycle((void**) &(*c).Friendmodule, oldfriend);
	return result;
}

N_NIMCALL(tnode188803*, semmacroexpr_416657)(tcontext250019* c, tnode188803* n, tnode188803* norig, tsym188833* sym, NU16 flags) {
	tnode188803* result;
	result = 0;
	markused_345244(n, sym);
	{
		if (!(sym == (*(*c).P).Owner)) goto LA3;
		globalerror_165558((*n).Info, ((NU16) 25), (*(*sym).Name).S);
	}
	LA3: ;
	result = evalmacrocall_410503((*c).Module, n, norig, sym);
	{
		if (!!(((flags &(1<<((((NU8) 8))&15)))!=0))) goto LA7;
		result = semaftermacrocall_422334(c, result, sym, flags);
	}
	LA7: ;
	return result;
}

N_NIMCALL(tnode188803*, semsym_450070)(tcontext250019* c, tnode188803* n, tsym188833* s, NU16 flags) {
	tnode188803* result;
	result = 0;
	switch ((*s).Kind) {
	case ((NU8) 10):
	{
		ttype188837* LOC2;
		markused_345244(n, s);
		LOC2 = 0;
		LOC2 = skiptypes_192793((*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):
		{
			result = inlineconst_450064(n, s);
		}
		break;
		case ((NU8) 4):
		case ((NU8) 24):
		{
			{
				NI LOC7;
				LOC7 = 0;
				LOC7 = len_189264((*s).Ast);
				if (!(LOC7 == 0)) goto LA8;
				result = inlineconst_450064(n, s);
			}
			goto LA5;
			LA8: ;
			{
				result = newsymnode_190723(s, (*n).Info);
			}
			LA5: ;
		}
		break;
		default:
		{
			result = newsymnode_190723(s, (*n).Info);
		}
		break;
		}
	}
	break;
	case ((NU8) 17):
	{
		result = semmacroexpr_416657(c, n, n, s, flags);
	}
	break;
	case ((NU8) 18):
	{
		result = semtemplateexpr_416648(c, n, s, flags);
	}
	break;
	case ((NU8) 8):
	case ((NU8) 9):
	case ((NU8) 11):
	case ((NU8) 3):
	case ((NU8) 21):
	{
		markused_345244(n, s);
		{
			if (!(((*s).Flags &(1<<((((NU8) 3))&31)))!=0)) goto LA17;
			(*(*(*c).P).Owner).Flags |=((NI32)(1)<<((((NU8) 11))%(sizeof(NI32)*8)));
		}
		goto LA15;
		LA17: ;
		{
			NIM_BOOL LOC20;
			NIM_BOOL LOC21;
			LOC20 = 0;
			LOC21 = 0;
			LOC21 = ((*s).Kind == ((NU8) 3));
			if (!(LOC21)) goto LA22;
			LOC21 = ((*(*s).Typ).Kind == ((NU8) 59));
			LA22: ;
			LOC20 = LOC21;
			if (!(LOC20)) goto LA23;
			LOC20 = !(((*(*s).Typ).N == NIM_NIL));
			LA23: ;
			if (!LOC20) goto LA24;
			result = (*(*s).Typ).N;
			goto BeforeRet;
		}
		goto LA15;
		LA24: ;
		LA15: ;
		result = newsymnode_190723(s, (*n).Info);
	}
	break;
	case ((NU8) 4):
	{
		{
			if (!((*(*s).Typ).Kind == ((NU8) 59))) goto LA29;
			result = newsymnode_190723(s, (*n).Info);
			asgnRefNoCycle((void**) &(*result).Typ, (*s).Typ);
		}
		goto LA27;
		LA29: ;
		{
			if (!!(((*s).Ast == NIM_NIL))) goto LA32;
			result = semexpr_416003(c, (*s).Ast, 0);
		}
		goto LA27;
		LA32: ;
		{
			asgnRefNoCycle((void**) &(*n).Typ, (*s).Typ);
			result = n;
			goto BeforeRet;
		}
		LA27: ;
	}
	break;
	case ((NU8) 7):
	{
		markused_345244(n, s);
		{
			NIM_BOOL LOC38;
			LOC38 = 0;
			LOC38 = ((*(*s).Typ).Kind == ((NU8) 59));
			if (!(LOC38)) goto LA39;
			LOC38 = !(((*(*s).Typ).N == NIM_NIL));
			LA39: ;
			if (!LOC38) goto LA40;
			result = (*(*s).Typ).N;
			goto BeforeRet;
		}
		LA40: ;
		result = newsymnode_190723(s, (*n).Info);
		asgnRefNoCycle((void**) &(*result).Typ, maketypedesc_250627(c, (*s).Typ));
	}
	break;
	default:
	{
		markused_345244(n, s);
		result = newsymnode_190723(s, (*n).Info);
	}
	break;
	}
	BeforeRet: ;
	return result;
}

static N_INLINE(void, markindirect_251167)(tcontext250019* c, tsym188833* s) {
	{
		if (!((126976 &(1<<(((*s).Kind)&31)))!=0)) goto LA3;
		(*s).Flags |=((NI32)(1)<<((((NU8) 15))%(sizeof(NI32)*8)));
	}
	LA3: ;
}

N_NIMCALL(tnode188803*, semfieldaccess_449848)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	result = 0;
	result = builtinfieldaccess_456040(c, n, flags);
	{
		if (!(result == NIM_NIL)) goto LA3;
		result = dottransformation_456657(c, n);
	}
	LA3: ;
	return result;
}

N_NIMCALL(void, maybelifttype_450499)(ttype188837** t, tcontext250019* c, tlineinfo163527 info) {
	tscope188827* LOC1;
	ttype188837* lifted;
	tnode188803* LOC2;
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	LOC2 = 0;
	LOC2 = newnodei_189099(((NU8) 150), info);
	lifted = liftparamtype_426785(c, ((NU8) 7), LOC2, (*t), ((NimStringDesc*) &TMP3042), info, NIM_FALSE);
	closescope_252179(c);
	{
		if (!!((lifted == NIM_NIL))) goto LA5;
		unsureAsgnRef((void**) &(*t), lifted);
	}
	LA5: ;
}

N_NIMCALL(tnode188803*, inferwithmetatype_416192)(tcontext250019* c, ttype188837* formal, tnode188803* arg, NIM_BOOL coercedistincts) {
	tnode188803* result;
	tcandidate345205 m;
	result = 0;
	memset((void*)&m, 0, sizeof(m));
	initcandidate_345257(c, &m, formal);
	m.Coercedistincts = coercedistincts;
	result = paramtypesmatch_351560(&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_421394(c, result, &m);
	}
	LA5: ;
	{
		ttype188837* LOC11;
		if (!!((result == NIM_NIL))) goto LA9;
		LOC11 = 0;
		LOC11 = skiptypes_192793(formal, IL64(18014398509481984));
		asgnRefNoCycle((void**) &(*result).Typ, generatetypeinstance_275735(c, m.Bindings, (*arg).Info, LOC11));
	}
	goto LA7;
	LA9: ;
	{
		typemismatch_416126(arg, formal, (*arg).Typ);
		result = copytree_189237(arg);
		asgnRefNoCycle((void**) &(*result).Typ, formal);
	}
	LA7: ;
	return result;
}

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

N_NIMCALL(NU8, checkconvertible_450229)(tcontext250019* c, ttype188837* castdest, ttype188837* src) {
	NU8 result;
	ttype188837* d;
	ttype188837* s;
	result = 0;
	result = ((NU8) 0);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametype_228116(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_192793(castdest, IL64(211106240964864));
	s = skiptypes_192793(src, IL64(211106240964608));
	while (1) {
		NIM_BOOL LOC12;
		NIM_BOOL LOC13;
		LOC12 = 0;
		LOC13 = 0;
		LOC13 = !((d == NIM_NIL));
		if (!(LOC13)) goto LA14;
		LOC13 = ((*d).Kind == ((NU8) 21) || (*d).Kind == ((NU8) 22));
		LA14: ;
		LOC12 = LOC13;
		if (!(LOC12)) goto LA15;
		LOC12 = ((*d).Kind == (*s).Kind);
		LA15: ;
		if (!LOC12) goto LA11;
		d = lastson_189193(d);
		s = lastson_189193(s);
	} LA11: ;
	{
		if (!(d == NIM_NIL)) goto LA18;
		result = ((NU8) 2);
	}
	goto LA16;
	LA18: ;
	{
		NIM_BOOL LOC21;
		LOC21 = 0;
		LOC21 = ((*d).Kind == ((NU8) 17));
		if (!(LOC21)) goto LA22;
		LOC21 = ((*s).Kind == ((NU8) 17));
		LA22: ;
		if (!LOC21) goto LA23;
		result = checkconversionbetweenobjects_450217(d, s);
	}
	goto LA16;
	LA23: ;
	{
		NIM_BOOL LOC26;
		ttype188837* LOC27;
		ttype188837* LOC29;
		LOC26 = 0;
		LOC27 = 0;
		LOC27 = skiptypes_192793(castdest, IL64(211106242013440));
		LOC26 = ((*LOC27).Kind == ((NU8) 1) || (*LOC27).Kind == ((NU8) 14) || (*LOC27).Kind == ((NU8) 2) || (*LOC27).Kind >= ((NU8) 31) && (*LOC27).Kind <= ((NU8) 44));
		if (!(LOC26)) goto LA28;
		LOC29 = 0;
		LOC29 = skiptypes_192793(src, IL64(211106242013184));
		LOC26 = ((*LOC29).Kind == ((NU8) 1) || (*LOC29).Kind == ((NU8) 14) || (*LOC29).Kind == ((NU8) 2) || (*LOC29).Kind >= ((NU8) 31) && (*LOC29).Kind <= ((NU8) 44));
		LA28: ;
		if (!LOC26) goto LA30;
	}
	goto LA16;
	LA30: ;
	{
		NU8 LOC33;
		LOC33 = 0;
		LOC33 = cmptypes_350566(c, d, s);
		switch (LOC33) {
		case ((NU8) 0):
		case ((NU8) 7):
		{
			{
				NIM_BOOL LOC37;
				LOC37 = 0;
				LOC37 = comparetypes_230547(castdest, src, ((NU8) 1), 0);
				if (!!(LOC37)) goto LA38;
				result = ((NU8) 2);
			}
			LA38: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA16: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semconv_450524)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	ttype188837* targettype;
	tnode188803* LOC6;
	tnode188803* LOC7;
	tnode188803* op;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!!((LOC3 == 2))) goto LA4;
		localerror_165571((*n).Info, ((NU16) 161), ((NimStringDesc*) &TMP2675));
		result = n;
		goto BeforeRet;
	}
	LA4: ;
	result = newnodei_189099(((NU8) 60), (*n).Info);
	targettype = semtypenode_416055(c, (*n).kindU.S6.Sons->data[0], NIM_NIL);
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_189694(n, 0);
	maybelifttype_450499(&targettype, c, (*LOC6).Info);
	LOC7 = 0;
	LOC7 = copytree_189237((*n).kindU.S6.Sons->data[0]);
	addson_189207(result, LOC7);
	op = semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[1], 0);
	{
		NIM_BOOL LOC10;
		tnode188803* final;
		LOC10 = 0;
		LOC10 = ismetatype_189732(targettype);
		if (!LOC10) goto LA11;
		final = inferwithmetatype_416192(c, targettype, op, NIM_TRUE);
		addson_189207(result, final);
		asgnRefNoCycle((void**) &(*result).Typ, (*final).Typ);
		goto BeforeRet;
	}
	LA11: ;
	asgnRefNoCycle((void**) &(*result).Typ, targettype);
	addson_189207(result, op);
	{
		NIM_BOOL LOC15;
		NU8 status;
		LOC15 = 0;
		LOC15 = issymchoice_450481(op);
		if (!!(LOC15)) goto LA16;
		status = checkconvertible_450229(c, (*result).Typ, (*op).Typ);
		switch (status) {
		case ((NU8) 0):
		{
			{
				NIM_BOOL LOC21;
				LOC21 = 0;
				LOC21 = ((*op).Kind == ((NU8) 3));
				if (!(LOC21)) goto LA22;
				LOC21 = isgenericroutine_194927((*op).kindU.S4.Sym);
				LA22: ;
				if (!LOC21) goto LA23;
				asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[1], fitnode_416037(c, (*result).Typ, (*result).kindU.S6.Sons->data[1]));
			}
			LA23: ;
		}
		break;
		case ((NU8) 1):
		{
			NimStringDesc* LOC26;
			LOC26 = 0;
			LOC26 = typetostring_223020((*result).Typ, ((NU8) 0));
			message_165584((*n).Info, ((NU16) 262), LOC26);
		}
		break;
		case ((NU8) 2):
		{
			NimStringDesc* LOC28;
			TY137892 LOC29;
			NimStringDesc* LOC30;
			LOC28 = 0;
			LOC28 = msgkindtostring_165071(((NU16) 142));
			memset((void*)LOC29, 0, sizeof(LOC29));
			LOC29[0] = typetostring_223020((*op).Typ, ((NU8) 0));
			LOC29[1] = typetostring_223020((*result).Typ, ((NU8) 0));
			LOC30 = 0;
			LOC30 = nsuFormatOpenArray(LOC28, LOC29, 2);
			localerror_165571((*n).Info, ((NU16) 4), LOC30);
		}
		break;
		}
	}
	goto LA13;
	LA16: ;
	{
		NI i_450643;
		NI HEX3Atmp_450730;
		NI LOC32;
		NI res_450732;
		i_450643 = 0;
		HEX3Atmp_450730 = 0;
		LOC32 = 0;
		LOC32 = sonslen_189181(op);
		HEX3Atmp_450730 = (NI32)(LOC32 - 1);
		res_450732 = 0;
		while (1) {
			tnode188803* it;
			NU8 status;
			if (!(res_450732 <= HEX3Atmp_450730)) goto LA33;
			i_450643 = res_450732;
			it = (*op).kindU.S6.Sons->data[i_450643];
			status = checkconvertible_450229(c, (*result).Typ, (*it).Typ);
			{
				if (!((3 &(1<<((status)&7)))!=0)) goto LA36;
				markused_345244(n, (*it).kindU.S4.Sym);
				markindirect_251167(c, (*it).kindU.S4.Sym);
				result = it;
				goto BeforeRet;
			}
			LA36: ;
			res_450732 += 1;
		} LA33: ;
		localerror_165571((*n).Info, ((NU16) 62), (*(*(*(*op).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name).S);
	}
	LA13: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, checkinitialized_461409)(tnode188803* n, tintset185047 ids, tlineinfo163527 info) {
	switch ((*n).Kind) {
	case ((NU8) 136):
	{
		NI i_461426;
		NI HEX3Atmp_461656;
		NI LOC2;
		NI res_461658;
		i_461426 = 0;
		HEX3Atmp_461656 = 0;
		LOC2 = 0;
		LOC2 = sonslen_189181(n);
		HEX3Atmp_461656 = (NI32)(LOC2 - 1);
		res_461658 = 0;
		while (1) {
			if (!(res_461658 <= HEX3Atmp_461656)) goto LA3;
			i_461426 = res_461658;
			checkinitialized_461409((*n).kindU.S6.Sons->data[i_461426], ids, info);
			res_461658 += 1;
		} LA3: ;
	}
	break;
	case ((NU8) 137):
	{
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA7;
			internalerror_165591(info, ((NimStringDesc*) &TMP3044));
		}
		LA7: ;
		checkinitialized_461409((*n).kindU.S6.Sons->data[0], ids, info);
	}
	break;
	case ((NU8) 3):
	{
		{
			NIM_BOOL LOC12;
			NIM_BOOL LOC14;
			NimStringDesc* LOC17;
			LOC12 = 0;
			LOC12 = (((*(*(*n).kindU.S4.Sym).Typ).Flags &(1<<((((NU8) 17))&31)))!=0);
			if (!(LOC12)) goto LA13;
			LOC14 = 0;
			LOC14 = contains_185821(ids, (*(*(*n).kindU.S4.Sym).Name).Sup.Id);
			LOC12 = !(LOC14);
			LA13: ;
			if (!LOC12) goto LA15;
			LOC17 = 0;
			LOC17 = rawNewString((*(*(*n).kindU.S4.Sym).Name).S->Sup.len + 23);
appendString(LOC17, ((NimStringDesc*) &TMP3045));
appendString(LOC17, (*(*(*n).kindU.S4.Sym).Name).S);
			message_165584(info, ((NU16) 4), LOC17);
		}
		LA15: ;
	}
	break;
	default:
	{
		internalerror_165591(info, ((NimStringDesc*) &TMP3044));
	}
	break;
	}
}

N_NIMCALL(tnode188803*, semobjconstr_454666)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	ttype188837* t;
	ttype188837* objtype;
	tintset185047 ids;
	NI i_461726;
	NI HEX3Atmp_462055;
	NI LOC9;
	NI res_462057;
	result = 0;
	t = semtypenode_416055(c, (*n).kindU.S6.Sons->data[0], NIM_NIL);
	result = n;
	asgnRefNoCycle((void**) &(*result).Typ, t);
	(*result).Kind = ((NU8) 38);
	t = skiptypes_192793(t, 2048);
	{
		if (!((*t).Kind == ((NU8) 22))) goto LA3;
		t = skiptypes_192793((*t).Sons->data[0], 2048);
	}
	LA3: ;
	{
		if (!!(((*t).Kind == ((NU8) 17)))) goto LA7;
		localerror_165571((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP3043));
		goto BeforeRet;
	}
	LA7: ;
	objtype = t;
	chckNil((void*)&ids);
	memset((void*)&ids, 0, sizeof(ids));
	initintset_185918(&ids);
	i_461726 = 0;
	HEX3Atmp_462055 = 0;
	LOC9 = 0;
	LOC9 = len_189264(n);
	HEX3Atmp_462055 = LOC9 - 1;
	res_462057 = 1;
	while (1) {
		tnode188803* it;
		tident167019* id;
		tnode188803* e;
		tnode188803* check;
		tsym188833* f;
		if (!(res_462057 <= HEX3Atmp_462055)) goto LA10;
		i_461726 = res_462057;
		it = (*n).kindU.S6.Sons->data[i_461726];
		{
			NIM_BOOL LOC13;
			LOC13 = 0;
			LOC13 = !(((*it).Kind == ((NU8) 34)));
			if (LOC13) goto LA14;
			LOC13 = !(((*(*it).kindU.S6.Sons->data[0]).Kind == ((NU8) 3) || (*(*it).kindU.S6.Sons->data[0]).Kind == ((NU8) 2)));
			LA14: ;
			if (!LOC13) goto LA15;
			localerror_165571((*n).Info, ((NU16) 170), ((NimStringDesc*) &TMP2675));
			goto LA10;
		}
		LA15: ;
		id = 0;
		{
			if (!((*(*it).kindU.S6.Sons->data[0]).Kind == ((NU8) 2))) goto LA19;
			id = (*(*it).kindU.S6.Sons->data[0]).kindU.S5.Ident;
		}
		goto LA17;
		LA19: ;
		{
			id = (*(*(*it).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name;
		}
		LA17: ;
		{
			NIM_BOOL LOC24;
			LOC24 = 0;
			LOC24 = containsorincl_185888(&ids, (*id).Sup.Id);
			if (!LOC24) goto LA25;
			localerror_165571((*it).Info, ((NU16) 86), (*id).S);
		}
		LA25: ;
		e = semexprwithtype_416011(c, (*it).kindU.S6.Sons->data[1], (flags & 32));
		check = NIM_NIL;
		f = 0;
		t = objtype;
		while (1) {
			check = NIM_NIL;
			f = lookupinrecordandbuildcheck_455576(c, it, (*t).N, id, &check);
			{
				if (!!((f == NIM_NIL))) goto LA30;
				goto LA27;
			}
			LA30: ;
			{
				if (!((*t).Sons->data[0] == NIM_NIL)) goto LA34;
				goto LA27;
			}
			LA34: ;
			t = skiptypes_192793((*t).Sons->data[0], 2048);
		} LA27: ;
		{
			NIM_BOOL LOC38;
			LOC38 = 0;
			LOC38 = !((f == NIM_NIL));
			if (!(LOC38)) goto LA39;
			LOC38 = fieldvisible_357236(c, f);
			LA39: ;
			if (!LOC38) goto LA40;
			asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[0], newsymnode_189095(f));
			e = fitnode_416037(c, (*f).Typ, e);
			{
				if (!!((check == NIM_NIL))) goto LA44;
				asgnRefNoCycle((void**) &(*check).kindU.S6.Sons->data[0], (*it).kindU.S6.Sons->data[0]);
				add_189390(it, check);
			}
			LA44: ;
		}
		goto LA36;
		LA40: ;
		{
			localerror_165571((*it).Info, ((NU16) 80), (*id).S);
		}
		LA36: ;
		asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[1], e);
		res_462057 += 1;
	} LA10: ;
	{
		if (!(((*objtype).Flags &(1<<((((NU8) 17))&31)))!=0)) goto LA49;
		while (1) {
			checkinitialized_461409((*objtype).N, ids, (*n).Info);
			{
				if (!((*objtype).Sons->data[0] == NIM_NIL)) goto LA54;
				goto LA51;
			}
			LA54: ;
			objtype = skiptypes_192793((*objtype).Sons->data[0], 2048);
		} LA51: ;
	}
	LA49: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tsym188833*, lookupfordefined_458622)(tcontext250019* c, tident167019* i, NIM_BOOL onlycurrentscope) {
	tsym188833* result;
	result = 0;
	{
		if (!onlycurrentscope) goto LA3;
		result = localsearchinscope_252209(c, i);
	}
	goto LA1;
	LA3: ;
	{
		result = searchinscopes_252216(c, i);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tsym188833*, lookupfordefined_458629)(tcontext250019* c, tnode188803* n, NIM_BOOL onlycurrentscope) {
	tsym188833* result;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 2):
	{
		result = lookupfordefined_458622(c, (*n).kindU.S5.Ident, onlycurrentscope);
	}
	break;
	case ((NU8) 45):
	{
		tsym188833* m;
		result = NIM_NIL;
		{
			if (!onlycurrentscope) goto LA5;
			goto BeforeRet;
		}
		LA5: ;
		checksonslen_251209(n, 2);
		m = lookupfordefined_458629(c, (*n).kindU.S6.Sons->data[0], onlycurrentscope);
		{
			NIM_BOOL LOC9;
			LOC9 = 0;
			LOC9 = !((m == NIM_NIL));
			if (!(LOC9)) goto LA10;
			LOC9 = ((*m).Kind == ((NU8) 6));
			LA10: ;
			if (!LOC9) goto LA11;
			{
				tident167019* ident;
				if (!((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 2))) goto LA15;
				ident = (*(*n).kindU.S6.Sons->data[1]).kindU.S5.Ident;
				{
					if (!(m == (*c).Module)) goto LA19;
					result = strtableget_197084((*(*c).Toplevelscope).Symbols, ident);
				}
				goto LA17;
				LA19: ;
				{
					result = strtableget_197084((*m).kindU.S3.Tab, ident);
				}
				LA17: ;
			}
			goto LA13;
			LA15: ;
			{
				localerror_165571((*(*n).kindU.S6.Sons->data[1]).Info, ((NU16) 19), ((NimStringDesc*) &TMP2675));
			}
			LA13: ;
		}
		LA11: ;
	}
	break;
	case ((NU8) 53):
	{
		tident167019* LOC24;
		LOC24 = 0;
		LOC24 = consideracc_252006(n);
		result = lookupfordefined_458622(c, LOC24, onlycurrentscope);
	}
	break;
	case ((NU8) 3):
	{
		result = (*n).kindU.S4.Sym;
	}
	break;
	default:
	{
		NimStringDesc* LOC27;
		LOC27 = 0;
		LOC27 = rendertree_211051(n, 0);
		localerror_165571((*n).Info, ((NU16) 19), LOC27);
		result = NIM_NIL;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semdefined_458801)(tcontext250019* c, tnode188803* n, NIM_BOOL onlycurrentscope) {
	tnode188803* result;
	result = 0;
	checksonslen_251209(n, 2);
	result = newintnode_189069(((NU8) 6), 0);
	{
		tsym188833* LOC3;
		LOC3 = 0;
		LOC3 = lookupfordefined_458629(c, (*n).kindU.S6.Sons->data[1], onlycurrentscope);
		if (!!((LOC3 == NIM_NIL))) goto LA4;
		(*result).kindU.S1.Intval = 1;
	}
	goto LA1;
	LA4: ;
	{
		NIM_BOOL LOC7;
		NIM_BOOL LOC8;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = !(onlycurrentscope);
		if (!(LOC8)) goto LA9;
		LOC8 = ((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 2));
		LA9: ;
		LOC7 = LOC8;
		if (!(LOC7)) goto LA10;
		LOC7 = isdefined_168022((*(*n).kindU.S6.Sons->data[1]).kindU.S5.Ident);
		LA10: ;
		if (!LOC7) goto LA11;
		(*result).kindU.S1.Intval = 1;
	}
	goto LA1;
	LA11: ;
	LA1: ;
	(*result).Info = (*n).Info;
	asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 1)));
	return result;
}

N_NIMCALL(tnode188803*, setms_458918)(tnode188803* n, tsym188833* s) {
	tnode188803* result;
	result = 0;
	result = n;
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], newsymnode_189095(s));
	(*(*n).kindU.S6.Sons->data[0]).Info = (*n).Info;
	return result;
}

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

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

static N_INLINE(E_Base*, getCurrentException)(void) {
	E_Base* result;
	result = 0;
	result = currexception_13041;
	return result;
}

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

N_NIMCALL(tnode188803*, tryexpr_416091)(tcontext250019* c, tnode188803* n, NU16 flags, NIM_BOOL buffererrors) {
	tnode188803* result;
	NI olderrorcount;
	NI olderrormax;
	tscope188827* oldscope;
	tscope188827* LOC1;
	NI oldownerlen;
	TY250131* oldgenerics;
	NU8 olderroroutputs;
	NI oldcontextlen;
	NI oldingenericcontext;
	NI oldinunrolledcontext;
	NI oldingenericinst;
	tproccon250009* oldproccon;
	TSafePoint TMP3046;
	result = 0;
	olderrorcount = gerrorcounter_164182;
	olderrormax = gerrormax_164185;
	(*c).Incompilescontext += 1;
	gerrormax_164185 = 2147483647;
	oldscope = (*c).Currentscope;
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	oldownerlen = gowners_250247->Sup.len;
	oldgenerics = (*c).Generics;
	olderroroutputs = erroroutputs_164234;
	{
		if (!buffererrors) goto LA4;
		erroroutputs_164234 = 4;
	}
	goto LA2;
	LA4: ;
	{
		erroroutputs_164234 = 0;
	}
	LA2: ;
	oldcontextlen = getinfocontextlen_164660();
	oldingenericcontext = (*c).Ingenericcontext;
	oldinunrolledcontext = (*c).Inunrolledcontext;
	oldingenericinst = (*c).Ingenericinst;
	oldproccon = (*c).P;
	if ((*c).Generics) nimGCunrefNoCycle((*c).Generics);
	(*c).Generics = (TY250131*) newSeqRC1((&NTI250131), 0);
	pushSafePoint(&TMP3046);
	TMP3046.status = setjmp(TMP3046.context);
	if (TMP3046.status == 0) {
		result = semexpr_416003(c, n, flags);
		{
			if (!!((gerrorcounter_164182 == olderrorcount))) goto LA10;
			result = NIM_NIL;
		}
		LA10: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI163533))) {
			TMP3046.status = 0;
			popCurrentException();
		}
	}
	if (TMP3046.status != 0) reraiseException();
	genericSeqAssign(&(*c).Generics, oldgenerics, (&NTI250131));
	(*c).Ingenericcontext = oldingenericcontext;
	(*c).Inunrolledcontext = oldinunrolledcontext;
	(*c).Ingenericinst = oldingenericinst;
	asgnRef((void**) &(*c).P, oldproccon);
	setinfocontextlen_164676(oldcontextlen);
	gowners_250247 = (tsymseq188805*) setLengthSeq(&(gowners_250247)->Sup, sizeof(tsym188833*), oldownerlen);
	asgnRef((void**) &(*c).Currentscope, oldscope);
	(*c).Incompilescontext -= 1;
	erroroutputs_164234 = olderroroutputs;
	gerrorcounter_164182 = olderrorcount;
	gerrormax_164185 = olderrormax;
	return result;
}

N_NIMCALL(tnode188803*, semcompiles_459910)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	tnode188803* LOC6;
	tnode188803* LOC7;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!!((LOC3 == 2))) goto LA4;
		result = semdirectop_416631(c, n, flags);
		goto BeforeRet;
	}
	LA4: ;
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_189694(n, 1);
	LOC7 = 0;
	LOC7 = tryexpr_416091(c, LOC6, flags, NIM_FALSE);
	result = newintnode_189069(((NU8) 6), ((NI64) (!((LOC7 == NIM_NIL)))));
	(*result).Info = (*n).Info;
	asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 1)));
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semsizeof_450917)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!!((LOC3 == 2))) goto LA4;
		localerror_165571((*n).Info, ((NU16) 69), ((NimStringDesc*) &TMP3047));
	}
	goto LA1;
	LA4: ;
	{
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[1], 16));
	}
	LA1: ;
	asgnRefNoCycle((void**) &(*n).Typ, getsystype_242024(((NU8) 31)));
	result = n;
	return result;
}

N_NIMCALL(tnode188803*, isopimpl_416643)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	ttype188837* t1;
	tnode188803* LOC16;
	result = 0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NI LOC6;
		tnode188803* LOC8;
		tnode188803* LOC10;
		tnode188803* LOC12;
		NimStringDesc* LOC15;
		LOC3 = 0;
		LOC4 = 0;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = sonslen_189181(n);
		LOC5 = (LOC6 == 3);
		if (!(LOC5)) goto LA7;
		LOC8 = 0;
		LOC8 = HEX5BHEX5D_189694(n, 1);
		LOC5 = !(((*LOC8).Typ == NIM_NIL));
		LA7: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA9;
		LOC10 = 0;
		LOC10 = HEX5BHEX5D_189694(n, 1);
		LOC4 = ((*(*LOC10).Typ).Kind == ((NU8) 8));
		LA9: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA11;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_189694(n, 2);
		LOC3 = ((*LOC12).Kind >= ((NU8) 20) && (*LOC12).Kind <= ((NU8) 22) || (*LOC12).Kind == ((NU8) 4));
		LA11: ;
		if (!!(LOC3)) goto LA13;
		LOC15 = 0;
		LOC15 = HEX24_165714(TMP3049);
		internalerror_165606(LOC15);
	}
	LA13: ;
	LOC16 = 0;
	LOC16 = HEX5BHEX5D_189694(n, 1);
	t1 = skiptypes_192793((*LOC16).Typ, IL64(2305843009213694208));
	{
		tnode188803* LOC19;
		tnode188803* LOC22;
		NimStringDesc* LOC23;
		LOC19 = 0;
		LOC19 = HEX5BHEX5D_189694(n, 2);
		if (!((*LOC19).Kind >= ((NU8) 20) && (*LOC19).Kind <= ((NU8) 22))) goto LA20;
		LOC22 = 0;
		LOC22 = HEX5BHEX5D_189694(n, 2);
		LOC23 = 0;
		LOC23 = nsuNormalize((*LOC22).kindU.S3.Strval);
		if (eqStrings(LOC23, ((NimStringDesc*) &TMP3050))) goto LA24;
		goto LA25;
		LA24: ;
		{
			ttype188837* t;
			NIM_BOOL LOC28;
			NIM_BOOL LOC29;
			t = skiptypes_192793(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_189069(((NU8) 6), ((NI64) (LOC28)));
		}
		goto LA26;
		LA25: ;
		{
		}
		LA26: ;
	}
	goto LA17;
	LA20: ;
	{
		ttype188837* t2;
		tnode188803* LOC34;
		tcandidate345205 m;
		NIM_BOOL match;
		NU8 LOC35;
		LOC34 = 0;
		LOC34 = HEX5BHEX5D_189694(n, 2);
		t2 = skiptypes_192793((*LOC34).Typ, 256);
		maybelifttype_450499(&t2, c, (*n).Info);
		memset((void*)&m, 0, sizeof(m));
		initcandidate_345257(c, &m, t2);
		LOC35 = 0;
		LOC35 = typerel_346174(&m, t2, t1, NIM_TRUE);
		match = !((LOC35 == ((NU8) 0)));
		result = newintnode_189069(((NU8) 6), ((NI64) (match)));
	}
	LA17: ;
	asgnRefNoCycle((void**) &(*result).Typ, (*n).Typ);
	return result;
}

N_NIMCALL(tnode188803*, semis_451340)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* LOC6;
	ttype188837* lhstype;
	tnode188803* LOC14;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!!((LOC3 == 3))) goto LA4;
		localerror_165571((*n).Info, ((NU16) 204), ((NimStringDesc*) &TMP3048));
	}
	LA4: ;
	result = n;
	asgnRefNoCycle((void**) &(*n).Typ, getsystype_242024(((NU8) 1)));
	LOC6 = 0;
	LOC6 = HEX5BHEX5D_189694(n, 1);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], semexprwithtype_416011(c, LOC6, 18));
	{
		tnode188803* LOC9;
		ttype188837* t2;
		tnode188803* LOC12;
		tnode188803* LOC13;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_189694(n, 2);
		if (!!(((*LOC9).Kind >= ((NU8) 20) && (*LOC9).Kind <= ((NU8) 22)))) goto LA10;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_189694(n, 2);
		t2 = semtypenode_416055(c, LOC12, NIM_NIL);
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_189694(n, 2);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[2], newnodeit_189104(((NU8) 4), (*LOC13).Info, t2));
	}
	LA10: ;
	LOC14 = 0;
	LOC14 = HEX5BHEX5D_189694(n, 1);
	lhstype = (*LOC14).Typ;
	{
		tnode188803* LOC19;
		if (!!(((*lhstype).Kind == ((NU8) 8)))) goto LA17;
		LOC19 = 0;
		LOC19 = HEX5BHEX5D_189694(n, 1);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], maketypesymnode_250658(c, lhstype, (*LOC19).Info));
	}
	goto LA15;
	LA17: ;
	{
		ttype188837* LOC21;
		LOC21 = 0;
		LOC21 = base_223029(lhstype);
		if (!((*LOC21).Kind == ((NU8) 0))) goto LA22;
		goto BeforeRet;
	}
	goto LA15;
	LA22: ;
	LA15: ;
	{
		tnode188803* LOC26;
		ttype188837* LOC27;
		NIM_BOOL LOC28;
		LOC26 = 0;
		LOC26 = HEX5BHEX5D_189694(n, 1);
		LOC27 = 0;
		LOC27 = base_223029((*LOC26).Typ);
		LOC28 = 0;
		LOC28 = containsgenerictype_232717(LOC27);
		if (!!(LOC28)) goto LA29;
		result = isopimpl_416643(c, n);
	}
	LA29: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semof_450952)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		NI LOC3;
		ttype188837* a;
		ttype188837* b;
		ttype188837* x;
		ttype188837* y;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 3)) goto LA4;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[1], 0));
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[2], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[2], 16));
		a = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106247256320));
		b = skiptypes_192793((*(*n).kindU.S6.Sons->data[2]).Typ, IL64(211106247256320));
		x = skiptypes_192793((*(*n).kindU.S6.Sons->data[1]).Typ, IL64(211106247256064));
		y = skiptypes_192793((*(*n).kindU.S6.Sons->data[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_165571((*n).Info, ((NU16) 205), ((NimStringDesc*) &TMP3051));
		}
		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_165571((*n).Info, ((NU16) 205), ((NimStringDesc*) &TMP3051));
		}
		goto LA6;
		LA15: ;
		{
			NI diff;
			diff = inheritancediff_230560(a, b);
			{
				NimStringDesc* LOC22;
				if (!(diff <= 0)) goto LA20;
				LOC22 = 0;
				LOC22 = rendertree_211051(n, 0);
				message_165584((*n).Info, ((NU16) 270), LOC22);
				result = newintnode_189069(((NU8) 6), 1);
				(*result).Info = (*n).Info;
				asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 1)));
				goto BeforeRet;
			}
			goto LA18;
			LA20: ;
			{
				NimStringDesc* LOC26;
				if (!(diff == 2147483647)) goto LA24;
				LOC26 = 0;
				LOC26 = typetostring_223020(a, ((NU8) 0));
				localerror_165571((*n).Info, ((NU16) 206), LOC26);
			}
			goto LA18;
			LA24: ;
			LA18: ;
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		localerror_165571((*n).Info, ((NU16) 204), ((NimStringDesc*) &TMP3051));
	}
	LA1: ;
	asgnRefNoCycle((void**) &(*n).Typ, getsystype_242024(((NU8) 1)));
	result = n;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, buildstringify_455302)(tcontext250019* c, tnode188803* arg) {
	tnode188803* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		ttype188837* LOC5;
		LOC3 = 0;
		LOC3 = !(((*arg).Typ == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = skiptypes_192793((*arg).Typ, IL64(211106232576000));
		LOC3 = ((*LOC5).Kind == ((NU8) 28));
		LA4: ;
		if (!LOC3) goto LA6;
		result = arg;
	}
	goto LA1;
	LA6: ;
	{
		tident167019* LOC9;
		tnode188803* LOC10;
		result = newnodei_189099(((NU8) 27), (*arg).Info);
		LOC9 = 0;
		LOC9 = getident_167456(((NimStringDesc*) &TMP3052));
		LOC10 = 0;
		LOC10 = newidentnode_189090(LOC9, (*arg).Info);
		addson_189207(result, LOC10);
		addson_189207(result, arg);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semecho_455352)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NI i_455369;
	NI HEX3Atmp_455479;
	NI LOC1;
	NI res_455481;
	ttype188837* t;
	result = 0;
	checkminsonslen_251215(n, 1);
	i_455369 = 0;
	HEX3Atmp_455479 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_455479 = (NI32)(LOC1 - 1);
	res_455481 = 1;
	while (1) {
		tnode188803* arg;
		tnode188803* LOC3;
		ttype188837* t;
		if (!(res_455481 <= HEX3Atmp_455479)) goto LA2;
		i_455369 = res_455481;
		arg = semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[i_455369], 0);
		LOC3 = 0;
		LOC3 = buildstringify_455302(c, arg);
		arg = semexprwithtype_416011(c, LOC3, 0);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_455369], arg);
		t = (*arg).Typ;
		{
			NIM_BOOL LOC6;
			NIM_BOOL LOC7;
			ttype188837* LOC9;
			LOC6 = 0;
			LOC7 = 0;
			LOC7 = (t == NIM_NIL);
			if (LOC7) goto LA8;
			LOC9 = 0;
			LOC9 = skiptypes_192793(t, IL64(211106232576256));
			LOC7 = !(((*LOC9).Kind == ((NU8) 28)));
			LA8: ;
			LOC6 = LOC7;
			if (!(LOC6)) goto LA10;
			LOC6 = !(((*arg).Kind == ((NU8) 1)));
			LA10: ;
			if (!LOC6) goto LA11;
			localerror_165571((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP3053));
		}
		LA11: ;
		res_455481 += 1;
	} LA2: ;
	t = (*(*n).kindU.S6.Sons->data[0]).Typ;
	{
		if (!!((((*t).Flags &(1<<((((NU8) 1))&31)))!=0))) goto LA15;
		(*(*(*c).P).Owner).Flags |=((NI32)(1)<<((((NU8) 11))%(sizeof(NI32)*8)));
	}
	LA15: ;
	result = n;
	return result;
}

N_NIMCALL(tsym188833*, expectmacroortemplatecall_416626)(tcontext250019* c, tnode188803* n) {
	tsym188833* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		tsym188833* expandedsym;
		tnode188803* LOC6;
		LOC3 = 0;
		LOC3 = iscallexpr_189241(n);
		if (!LOC3) goto LA4;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_189694(n, 0);
		expandedsym = qualifiedlookup_252806(c, LOC6, 2);
		{
			tnode188803* LOC11;
			NimStringDesc* LOC12;
			tnode188803* LOC13;
			if (!(expandedsym == NIM_NIL)) goto LA9;
			LOC11 = 0;
			LOC11 = HEX5BHEX5D_189694(n, 0);
			LOC12 = 0;
			LOC12 = rendertree_211051(LOC11, 0);
			localerror_165571((*n).Info, ((NU16) 61), LOC12);
			LOC13 = 0;
			LOC13 = HEX5BHEX5D_189694(n, 0);
			result = errorsym_252288(c, LOC13);
			goto BeforeRet;
		}
		LA9: ;
		{
			tnode188803* LOC18;
			if (!!(((393216 &(1<<(((*expandedsym).Kind)&31)))!=0))) goto LA16;
			localerror_165571((*n).Info, ((NU16) 216), (*(*expandedsym).Name).S);
			LOC18 = 0;
			LOC18 = HEX5BHEX5D_189694(n, 0);
			result = errorsym_252288(c, LOC18);
			goto BeforeRet;
		}
		LA16: ;
		result = expandedsym;
	}
	goto LA1;
	LA4: ;
	{
		NimStringDesc* LOC20;
		LOC20 = 0;
		LOC20 = rendertree_211051(n, 0);
		localerror_165571((*n).Info, ((NU16) 216), LOC20);
		result = errorsym_252288(c, n);
	}
	LA1: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semexpandtoast_459159)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* macrocall;
	tsym188833* expandedsym;
	NI i_459201;
	NI HEX3Atmp_459299;
	NI LOC5;
	NI res_459301;
	tsym188833* LOC13;
	result = 0;
	macrocall = HEX5BHEX5D_189694(n, 1);
	expandedsym = expectmacroortemplatecall_416626(c, macrocall);
	{
		if (!((*expandedsym).Kind == ((NU8) 0))) goto LA3;
		result = n;
		goto BeforeRet;
	}
	LA3: ;
	asgnRefNoCycle((void**) &(*macrocall).kindU.S6.Sons->data[0], newsymnode_190723(expandedsym, (*macrocall).Info));
	markused_345244(n, expandedsym);
	i_459201 = 0;
	HEX3Atmp_459299 = 0;
	LOC5 = 0;
	LOC5 = len_189264(macrocall);
	HEX3Atmp_459299 = (NI32)(LOC5 - 1);
	res_459301 = 1;
	while (1) {
		tnode188803* LOC7;
		if (!(res_459301 <= HEX3Atmp_459299)) goto LA6;
		i_459201 = res_459301;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_189694(macrocall, i_459201);
		asgnRefNoCycle((void**) &(*macrocall).kindU.S6.Sons->data[i_459201], semexprwithtype_416011(c, LOC7, 0));
		res_459301 += 1;
	} LA6: ;
	{
		NimStringDesc* LOC12;
		if (!!(((*(*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym).Magic == ((NU16) 16)))) goto LA10;
		LOC12 = 0;
		LOC12 = HEX24_165714(TMP3054);
		internalerror_165606(LOC12);
	}
	LA10: ;
	LOC13 = 0;
	LOC13 = getsyssym_242040(((NimStringDesc*) &TMP3055));
	asgnRefNoCycle((void**) &(*n).Typ, (*LOC13).Typ);
	result = n;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semexpandtoast_459305)(tcontext250019* c, tnode188803* n, tsym188833* magicsym, NU16 flags) {
	tnode188803* result;
	result = 0;
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 2)) goto LA4;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], newsymnode_190723(magicsym, (*n).Info));
		result = semexpandtoast_459159(c, n);
	}
	goto LA1;
	LA4: ;
	{
		result = semdirectop_416631(c, n, flags);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NimStringDesc*, expectstring_458991)(tcontext250019* c, tnode188803* n_458994) {
	NimStringDesc* result;
	tnode188803* n;
	result = 0;
	n = semconstexpr_417095(c, n_458994);
	{
		if (!((*n).Kind >= ((NU8) 20) && (*n).Kind <= ((NU8) 22))) goto LA3;
		result = copyString((*n).kindU.S3.Strval);
		goto BeforeRet;
	}
	goto LA1;
	LA3: ;
	{
		localerror_165571((*n).Info, ((NU16) 6), ((NimStringDesc*) &TMP2675));
	}
	LA1: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, processquotations_459329)(tnode188803** n, NimStringDesc* op, tnodeseq188797** quotes, tnodeseq188797** ids) {
	NI i_459521;
	NI HEX3Atmp_459537;
	NI LOC32;
	NI res_459539;
	{
		if (!((*(*n)).Kind == ((NU8) 30))) goto LA3;
		checksonslen_251209((*n), 2);
		{
			tnode188803* LOC7;
			NimStringDesc* examinedop;
			tnode188803* LOC10;
			LOC7 = 0;
			LOC7 = HEX5BHEX5D_189694((*n), 0);
			if (!((*LOC7).Kind == ((NU8) 2))) goto LA8;
			LOC10 = 0;
			LOC10 = HEX5BHEX5D_189694((*n), 0);
			examinedop = copyString((*(*LOC10).kindU.S5.Ident).S);
			{
				tnode188803* LOC15;
				NimStringDesc* LOC16;
				tident167019* LOC17;
				if (!eqStrings(examinedop, op)) goto LA13;
				LOC15 = 0;
				LOC15 = HEX5BHEX5D_189694((*n), 1);
				(*quotes) = (tnodeseq188797*) incrSeq(&((*quotes))->Sup, sizeof(tnode188803*));
				asgnRefNoCycle((void**) &(*quotes)->data[(*quotes)->Sup.len-1], LOC15);
				LOC16 = 0;
				LOC16 = nimIntToStr((*quotes)->Sup.len);
				LOC17 = 0;
				LOC17 = getident_167456(LOC16);
				unsureAsgnRef((void**) &(*n), newidentnode_189090(LOC17, (*(*n)).Info));
				(*ids) = (tnodeseq188797*) incrSeq(&((*ids))->Sup, sizeof(tnode188803*));
				asgnRefNoCycle((void**) &(*ids)->data[(*ids)->Sup.len-1], (*n));
				goto BeforeRet;
			}
			goto LA11;
			LA13: ;
			{
				NIM_BOOL LOC19;
				NimStringDesc* LOC22;
				tident167019* LOC23;
				LOC19 = 0;
				LOC19 = nsuStartsWith(examinedop, op);
				if (!LOC19) goto LA20;
				LOC22 = 0;
				LOC22 = copyStr(examinedop, op->Sup.len);
				LOC23 = 0;
				LOC23 = getident_167456(LOC22);
				asgnRefNoCycle((void**) &(*(*n)).kindU.S6.Sons->data[0], newidentnode_189090(LOC23, (*(*n)).Info));
			}
			goto LA11;
			LA20: ;
			LA11: ;
		}
		LA8: ;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC25;
		tnode188803* LOC29;
		NimStringDesc* LOC30;
		tident167019* LOC31;
		LOC25 = 0;
		LOC25 = ((*(*n)).Kind == ((NU8) 53));
		if (!(LOC25)) goto LA26;
		LOC25 = eqStrings(op, ((NimStringDesc*) &TMP3057));
		LA26: ;
		if (!LOC25) goto LA27;
		LOC29 = 0;
		LOC29 = HEX5BHEX5D_189694((*n), 0);
		(*quotes) = (tnodeseq188797*) incrSeq(&((*quotes))->Sup, sizeof(tnode188803*));
		asgnRefNoCycle((void**) &(*quotes)->data[(*quotes)->Sup.len-1], LOC29);
		LOC30 = 0;
		LOC30 = nimIntToStr((*quotes)->Sup.len);
		LOC31 = 0;
		LOC31 = getident_167456(LOC30);
		unsureAsgnRef((void**) &(*n), newidentnode_189090(LOC31, (*(*n)).Info));
		(*ids) = (tnodeseq188797*) incrSeq(&((*ids))->Sup, sizeof(tnode188803*));
		asgnRefNoCycle((void**) &(*ids)->data[(*ids)->Sup.len-1], (*n));
		goto BeforeRet;
	}
	goto LA1;
	LA27: ;
	LA1: ;
	i_459521 = 0;
	HEX3Atmp_459537 = 0;
	LOC32 = 0;
	LOC32 = safelen_189320((*n));
	HEX3Atmp_459537 = LOC32 - 1;
	res_459539 = 0;
	while (1) {
		if (!(res_459539 <= HEX3Atmp_459537)) goto LA33;
		i_459521 = res_459539;
		processquotations_459329(&(*(*n)).kindU.S6.Sons->data[i_459521], op, quotes, ids);
		res_459539 += 1;
	} LA33: ;
	BeforeRet: ;
}

N_NIMCALL(tsym188833*, newanonsym_459037)(NU8 kind, tlineinfo163527 info, tsym188833* owner) {
	tsym188833* result;
	result = 0;
	result = newsym_189053(kind, idanon_167476, owner, info);
	(*result).Flags = IL64(2147483648);
	return result;
}

N_NIMCALL(tnode188803*, semtemplbodydirty_433044)(templctx430596* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	switch ((*n).Kind) {
	case ((NU8) 2):
	{
		tsym188833* s;
		s = qualifiedlookup_252806((*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_190723(s, (*n).Info);
			}
			goto LA6;
			LA10: ;
			{
				NIM_BOOL LOC13;
				LOC13 = 0;
				LOC13 = contains_185821((*c).Tobind, (*s).Sup.Id);
				if (!LOC13) goto LA14;
				result = symchoice_430291((*c).C, n, s, ((NU8) 0));
			}
			goto LA6;
			LA14: ;
			LA6: ;
		}
		LA4: ;
	}
	break;
	case ((NU8) 55):
	{
		result = semtemplbodydirty_433044(c, (*n).kindU.S6.Sons->data[0]);
	}
	break;
	case ((NU8) 121):
	{
		result = sembindstmt_430396((*c).C, n, &(*c).Tobind);
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	default:
	{
		NI i_433160;
		NI HEX3Atmp_433189;
		NI LOC32;
		NI res_433191;
		{
			NIM_BOOL LOC22;
			tsym188833* s;
			LOC22 = 0;
			LOC22 = ((*n).Kind == ((NU8) 45));
			if (LOC22) goto LA23;
			LOC22 = ((*n).Kind == ((NU8) 53));
			LA23: ;
			if (!LOC22) goto LA24;
			s = qualifiedlookup_252806((*c).C, n, 0);
			{
				NIM_BOOL LOC28;
				LOC28 = 0;
				LOC28 = !((s == NIM_NIL));
				if (!(LOC28)) goto LA29;
				LOC28 = contains_185821((*c).Tobind, (*s).Sup.Id);
				LA29: ;
				if (!LOC28) goto LA30;
				result = symchoice_430291((*c).C, n, s, ((NU8) 0));
				goto BeforeRet;
			}
			LA30: ;
		}
		LA24: ;
		result = n;
		i_433160 = 0;
		HEX3Atmp_433189 = 0;
		LOC32 = 0;
		LOC32 = sonslen_189181(n);
		HEX3Atmp_433189 = (NI32)(LOC32 - 1);
		res_433191 = 0;
		while (1) {
			if (!(res_433191 <= HEX3Atmp_433189)) goto LA33;
			i_433160 = res_433191;
			asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_433160], semtemplbodydirty_433044(c, (*n).kindU.S6.Sons->data[i_433160]));
			res_433191 += 1;
		} LA33: ;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semtemplsymbol_431004)(tcontext250019* c, tnode188803* n, tsym188833* s) {
	tnode188803* 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_430291(c, n, s, ((NU8) 1));
	}
	break;
	case ((NU8) 4):
	{
		result = newsymnodetypedesc_263979(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_263979(s, (*n).Info);
		}
		goto LA6;
		LA10: ;
		{
			result = n;
		}
		LA6: ;
	}
	break;
	default:
	{
		result = newsymnode_190723(s, (*n).Info);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, openscope_430755)(templctx430596* c) {
	tscope188827* LOC1;
	LOC1 = 0;
	LOC1 = openscope_252167((*c).C);
}

N_NIMCALL(void, closescope_430760)(templctx430596* c) {
	closescope_252179((*c).C);
}

N_NIMCALL(tnode188803*, semtemplbodyscope_430765)(templctx430596* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	openscope_430755(c);
	result = semtemplbody_430750(c, n);
	closescope_430760(c);
	return result;
}

N_NIMCALL(NU8, symbinding_430201)(tnode188803* n) {
	NU8 result;
	NI i_430217;
	NI HEX3Atmp_430280;
	NI LOC1;
	NI res_430282;
	result = 0;
	i_430217 = 0;
	HEX3Atmp_430280 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_430280 = (NI32)(LOC1 - 1);
	res_430282 = 0;
	while (1) {
		tnode188803* it;
		tnode188803* key;
		if (!(res_430282 <= HEX3Atmp_430280)) goto LA2;
		i_430217 = res_430282;
		it = (*n).kindU.S6.Sons->data[i_430217];
		{
			if (!((*it).Kind == ((NU8) 34))) goto LA5;
			key = (*it).kindU.S6.Sons->data[0];
		}
		goto LA3;
		LA5: ;
		{
			key = it;
		}
		LA3: ;
		{
			NU8 LOC12;
			if (!((*key).Kind == ((NU8) 2))) goto LA10;
			LOC12 = 0;
			LOC12 = whichkeyword_171360((*key).kindU.S5.Ident);
			switch (LOC12) {
			case ((NU8) 176):
			{
				result = ((NU8) 1);
				goto BeforeRet;
			}
			break;
			case ((NU8) 177):
			{
				result = ((NU8) 2);
				goto BeforeRet;
			}
			break;
			default:
			{
			}
			break;
			}
		}
		LA10: ;
		res_430282 += 1;
	} LA2: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, onlyreplaceparams_430772)(templctx430596* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	{
		tsym188833* s;
		if (!((*n).Kind == ((NU8) 2))) goto LA3;
		s = qualifiedlookup_252806((*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_190723(s, (*n).Info);
			}
			LA13: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		NI i_430869;
		NI HEX3Atmp_430898;
		NI LOC16;
		NI res_430900;
		i_430869 = 0;
		HEX3Atmp_430898 = 0;
		LOC16 = 0;
		LOC16 = safelen_189320(n);
		HEX3Atmp_430898 = LOC16 - 1;
		res_430900 = 0;
		while (1) {
			if (!(res_430900 <= HEX3Atmp_430898)) goto LA17;
			i_430869 = res_430900;
			asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_430869], onlyreplaceparams_430772(c, (*n).kindU.S6.Sons->data[i_430869]));
			res_430900 += 1;
		} LA17: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, getidentnode_430602)(templctx430596* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 31):
	{
		result = getidentnode_430602(c, (*n).kindU.S6.Sons->data[1]);
	}
	break;
	case ((NU8) 43):
	{
		result = getidentnode_430602(c, (*n).kindU.S6.Sons->data[0]);
	}
	break;
	case ((NU8) 2):
	{
		tsym188833* s;
		result = n;
		s = qualifiedlookup_252806((*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_190723(s, (*n).Info);
			}
			LA12: ;
		}
		LA6: ;
	}
	break;
	case ((NU8) 53):
	case ((NU8) 3):
	{
		result = n;
	}
	break;
	default:
	{
		illformedast_251203(n);
		result = n;
	}
	break;
	}
	return result;
}

static N_INLINE(NIM_BOOL, istemplparam_430682)(templctx430596* c, tnode188803* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*n).Kind == ((NU8) 3));
	if (!(LOC2)) goto LA3;
	LOC2 = ((*(*n).kindU.S4.Sym).Kind == ((NU8) 3));
	LA3: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA4;
	LOC1 = ((*(*n).kindU.S4.Sym).Owner == (*c).Owner);
	LA4: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, replaceidentbysym_430559)(tnode188803** n, tnode188803* s) {
	switch ((*(*n)).Kind) {
	case ((NU8) 31):
	{
		replaceidentbysym_430559(&(*(*n)).kindU.S6.Sons->data[1], s);
	}
	break;
	case ((NU8) 43):
	{
		replaceidentbysym_430559(&(*(*n)).kindU.S6.Sons->data[0], s);
	}
	break;
	case ((NU8) 2):
	case ((NU8) 53):
	case ((NU8) 3):
	{
		unsureAsgnRef((void**) &(*n), s);
	}
	break;
	default:
	{
		illformedast_251203((*n));
	}
	break;
	}
}

N_NIMCALL(tsym188833*, newgensym_430904)(NU8 kind, tnode188803* n, templctx430596* c) {
	tsym188833* result;
	tident167019* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = consideracc_252006(n);
	result = newsym_189053(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_430944)(templctx430596* c, tnode188803** n, NU8 k) {
	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		tnode188803* x;
		tnode188803* ident;
		LOC3 = 0;
		LOC3 = ((*(*n)).Kind == ((NU8) 43));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = symbinding_430201((*(*n)).kindU.S6.Sons->data[1]);
		LOC3 = (LOC5 == ((NU8) 2));
		LA4: ;
		if (!LOC3) goto LA6;
		x = HEX5BHEX5D_189694((*n), 0);
		while (1) {
			switch ((*x).Kind) {
			case ((NU8) 31):
			{
				x = HEX5BHEX5D_189694(x, 1);
			}
			break;
			case ((NU8) 43):
			{
				x = HEX5BHEX5D_189694(x, 0);
			}
			break;
			case ((NU8) 2):
			{
				goto LA8;
			}
			break;
			case ((NU8) 53):
			{
				unsureAsgnRef((void**) &(*n), onlyreplaceparams_430772(c, (*n)));
				goto BeforeRet;
			}
			break;
			default:
			{
				illformedast_251203(x);
			}
			break;
			}
		} LA8: ;
		ident = getidentnode_430602(c, x);
		{
			NIM_BOOL LOC16;
			LOC16 = 0;
			LOC16 = istemplparam_430682(&(*c), ident);
			if (!!(LOC16)) goto LA17;
			incl_185849(&(*c).Toinject, (*(*x).kindU.S5.Ident).Sup.Id);
		}
		goto LA14;
		LA17: ;
		{
			replaceidentbysym_430559(n, ident);
		}
		LA14: ;
	}
	goto LA1;
	LA6: ;
	{
		tnode188803* ident;
		ident = getidentnode_430602(c, (*n));
		{
			NIM_BOOL LOC23;
			tsym188833* local;
			tnode188803* LOC26;
			LOC23 = 0;
			LOC23 = istemplparam_430682(&(*c), ident);
			if (!!(LOC23)) goto LA24;
			local = newgensym_430904(k, ident, c);
			addprelimdecl_252565((*c).C, local);
			LOC26 = 0;
			LOC26 = newsymnode_190723(local, (*(*n)).Info);
			replaceidentbysym_430559(n, LOC26);
		}
		goto LA21;
		LA24: ;
		{
			replaceidentbysym_430559(n, ident);
		}
		LA21: ;
	}
	LA1: ;
	BeforeRet: ;
}

N_NIMCALL(void, semtemplsomedecl_431362)(templctx430596* c, tnode188803* n, NU8 symkind) {
	NI i_431380;
	NI HEX3Atmp_431513;
	NI LOC1;
	NI res_431515;
	i_431380 = 0;
	HEX3Atmp_431513 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_431513 = (NI32)(LOC1 - 1);
	res_431515 = 0;
	while (1) {
		if (!(res_431515 <= HEX3Atmp_431513)) goto LA2;
		i_431380 = res_431515;
		{
			tnode188803* a;
			NI l;
			NI j_431492;
			NI HEX3Atmp_431509;
			NI res_431511;
			a = (*n).kindU.S6.Sons->data[i_431380];
			{
				if (!((*a).Kind == ((NU8) 124))) goto LA6;
				goto LA3;
			}
			LA6: ;
			{
				NIM_BOOL LOC10;
				LOC10 = 0;
				LOC10 = !(((*a).Kind == ((NU8) 35)));
				if (!(LOC10)) goto LA11;
				LOC10 = !(((*a).Kind == ((NU8) 36)));
				LA11: ;
				if (!LOC10) goto LA12;
				illformedast_251203(a);
			}
			LA12: ;
			checkminsonslen_251215(a, 3);
			l = sonslen_189181(a);
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(l - 2)], semtemplbody_430750(c, (*a).kindU.S6.Sons->data[(NI32)(l - 2)]));
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(l - 1)], semtemplbody_430750(c, (*a).kindU.S6.Sons->data[(NI32)(l - 1)]));
			j_431492 = 0;
			HEX3Atmp_431509 = 0;
			HEX3Atmp_431509 = (NI32)(l - 3);
			res_431511 = 0;
			while (1) {
				if (!(res_431511 <= HEX3Atmp_431509)) goto LA14;
				j_431492 = res_431511;
				addlocaldecl_430944(c, &(*a).kindU.S6.Sons->data[j_431492], symkind);
				res_431511 += 1;
			} LA14: ;
		} LA3: ;
		res_431515 += 1;
	} LA2: ;
}

N_NIMCALL(tnode188803*, semroutineintemplname_431053)(templctx430596* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	{
		tsym188833* s;
		if (!((*n).Kind == ((NU8) 2))) goto LA3;
		s = qualifiedlookup_252806((*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_190723(s, (*n).Info);
			}
			LA15: ;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		NI i_431154;
		NI HEX3Atmp_431183;
		NI LOC18;
		NI res_431185;
		i_431154 = 0;
		HEX3Atmp_431183 = 0;
		LOC18 = 0;
		LOC18 = safelen_189320(n);
		HEX3Atmp_431183 = (NI32)(LOC18 - 1);
		res_431185 = 0;
		while (1) {
			if (!(res_431185 <= HEX3Atmp_431183)) goto LA19;
			i_431154 = res_431185;
			asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_431154], semroutineintemplname_431053(c, (*n).kindU.S6.Sons->data[i_431154]));
			res_431185 += 1;
		} LA19: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semroutineintemplbody_431189)(templctx430596* c, tnode188803* n, NU8 k) {
	tnode188803* result;
	NI i_431328;
	NI res_431358;
	result = 0;
	result = n;
	checksonslen_251209(n, 7);
	{
		NIM_BOOL LOC3;
		NU8 LOC5;
		tnode188803* ident;
		LOC3 = 0;
		LOC3 = !(((*n).Kind == ((NU8) 51) || (*n).Kind == ((NU8) 52)));
		if (!(LOC3)) goto LA4;
		LOC5 = 0;
		LOC5 = symbinding_430201((*n).kindU.S6.Sons->data[4]);
		LOC3 = (LOC5 == ((NU8) 1));
		LA4: ;
		if (!LOC3) goto LA6;
		ident = getidentnode_430602(c, (*n).kindU.S6.Sons->data[0]);
		{
			NIM_BOOL LOC10;
			tsym188833* s;
			LOC10 = 0;
			LOC10 = istemplparam_430682(&(*c), ident);
			if (!!(LOC10)) goto LA11;
			s = newgensym_430904(k, ident, c);
			asgnRefNoCycle((void**) &(*s).Ast, n);
			addprelimdecl_252565((*c).C, s);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], newsymnode_190723(s, (*(*n).kindU.S6.Sons->data[0]).Info));
		}
		goto LA8;
		LA11: ;
		{
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], ident);
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	{
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semroutineintemplname_431053(c, (*n).kindU.S6.Sons->data[0]));
	}
	LA1: ;
	openscope_430755(c);
	i_431328 = 0;
	res_431358 = 1;
	while (1) {
		if (!(res_431358 <= 6)) goto LA15;
		i_431328 = res_431358;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_431328], semtemplbody_430750(c, (*n).kindU.S6.Sons->data[i_431328]));
		res_431358 += 1;
	} LA15: ;
	closescope_430760(c);
	return result;
}

N_NIMCALL(tnode188803*, semtemplbody_430750)(templctx430596* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	switch ((*n).Kind) {
	case ((NU8) 2):
	{
		tsym188833* s;
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = contains_185821((*c).Toinject, (*(*n).kindU.S5.Ident).Sup.Id);
			if (!LOC4) goto LA5;
			result = n;
			goto BeforeRet;
		}
		LA5: ;
		s = qualifiedlookup_252806((*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_190723(s, (*n).Info);
			}
			goto LA11;
			LA15: ;
			{
				NIM_BOOL LOC18;
				LOC18 = 0;
				LOC18 = contains_185821((*c).Tobind, (*s).Sup.Id);
				if (!LOC18) goto LA19;
				result = symchoice_430291((*c).C, n, s, ((NU8) 0));
			}
			goto LA11;
			LA19: ;
			{
				NIM_BOOL LOC22;
				LOC22 = 0;
				LOC22 = contains_185821((*c).Tomixin, (*(*s).Name).Sup.Id);
				if (!LOC22) goto LA23;
				result = symchoice_430291((*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_190723(s, (*n).Info);
			}
			goto LA11;
			LA28: ;
			{
				result = semtemplsymbol_431004((*c).C, n, s);
			}
			LA11: ;
		}
		LA9: ;
	}
	break;
	case ((NU8) 55):
	{
		result = semtemplbody_430750(c, (*n).kindU.S6.Sons->data[0]);
	}
	break;
	case ((NU8) 121):
	{
		result = sembindstmt_430396((*c).C, n, &(*c).Tobind);
	}
	break;
	case ((NU8) 122):
	{
		result = semmixinstmt_430510((*c).C, n, &(*c).Tomixin);
	}
	break;
	case ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
	}
	break;
	case ((NU8) 92):
	{
		NI i_431679;
		NI HEX3Atmp_432982;
		NI LOC36;
		NI res_432984;
		i_431679 = 0;
		HEX3Atmp_432982 = 0;
		LOC36 = 0;
		LOC36 = sonslen_189181(n);
		HEX3Atmp_432982 = (NI32)(LOC36 - 1);
		res_432984 = 0;
		while (1) {
			tnode188803* it;
			if (!(res_432984 <= HEX3Atmp_432982)) goto LA37;
			i_431679 = res_432984;
			it = (*n).kindU.S6.Sons->data[i_431679];
			{
				NI LOC40;
				LOC40 = 0;
				LOC40 = len_189264(it);
				if (!(LOC40 == 2)) goto LA41;
				openscope_430755(c);
				asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[0], semtemplbody_430750(c, (*it).kindU.S6.Sons->data[0]));
				asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[1], semtemplbody_430750(c, (*it).kindU.S6.Sons->data[1]));
				closescope_430760(c);
			}
			goto LA38;
			LA41: ;
			{
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_431679], semtemplbodyscope_430765(c, it));
			}
			LA38: ;
			res_432984 += 1;
		} LA37: ;
	}
	break;
	case ((NU8) 96):
	{
		NI i_432055;
		NI HEX3Atmp_432986;
		NI LOC45;
		NI res_432988;
		openscope_430755(c);
		i_432055 = 0;
		HEX3Atmp_432986 = 0;
		LOC45 = 0;
		LOC45 = sonslen_189181(n);
		HEX3Atmp_432986 = (NI32)(LOC45 - 1);
		res_432988 = 0;
		while (1) {
			if (!(res_432988 <= HEX3Atmp_432986)) goto LA46;
			i_432055 = res_432988;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_432055], semtemplbody_430750(c, (*n).kindU.S6.Sons->data[i_432055]));
			res_432988 += 1;
		} LA46: ;
		closescope_430760(c);
	}
	break;
	case ((NU8) 97):
	{
		NI i_432124;
		NI HEX3Atmp_432994;
		NI LOC48;
		NI res_432996;
		openscope_430755(c);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semtemplbody_430750(c, (*n).kindU.S6.Sons->data[0]));
		i_432124 = 0;
		HEX3Atmp_432994 = 0;
		LOC48 = 0;
		LOC48 = sonslen_189181(n);
		HEX3Atmp_432994 = (NI32)(LOC48 - 1);
		res_432996 = 1;
		while (1) {
			tnode188803* a;
			NI l;
			NI j_432153;
			NI HEX3Atmp_432990;
			NI res_432992;
			if (!(res_432996 <= HEX3Atmp_432994)) goto LA49;
			i_432124 = res_432996;
			a = (*n).kindU.S6.Sons->data[i_432124];
			checkminsonslen_251215(a, 1);
			l = sonslen_189181(a);
			j_432153 = 0;
			HEX3Atmp_432990 = 0;
			HEX3Atmp_432990 = (NI32)(l - 2);
			res_432992 = 0;
			while (1) {
				if (!(res_432992 <= HEX3Atmp_432990)) goto LA50;
				j_432153 = res_432992;
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[j_432153], semtemplbody_430750(c, (*a).kindU.S6.Sons->data[j_432153]));
				res_432992 += 1;
			} LA50: ;
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(l - 1)], semtemplbodyscope_430765(c, (*a).kindU.S6.Sons->data[(NI32)(l - 1)]));
			res_432996 += 1;
		} LA49: ;
		closescope_430760(c);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		NI l;
		NI i_432251;
		NI HEX3Atmp_432998;
		NI res_433000;
		l = sonslen_189181(n);
		openscope_430755(c);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[(NI32)(l - 2)], semtemplbody_430750(c, (*n).kindU.S6.Sons->data[(NI32)(l - 2)]));
		i_432251 = 0;
		HEX3Atmp_432998 = 0;
		HEX3Atmp_432998 = (NI32)(l - 3);
		res_433000 = 0;
		while (1) {
			if (!(res_433000 <= HEX3Atmp_432998)) goto LA52;
			i_432251 = res_433000;
			addlocaldecl_430944(c, &(*n).kindU.S6.Sons->data[i_432251], ((NU8) 21));
			res_433000 += 1;
		} LA52: ;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[(NI32)(l - 1)], semtemplbody_430750(c, (*n).kindU.S6.Sons->data[(NI32)(l - 1)]));
		closescope_430760(c);
	}
	break;
	case ((NU8) 111):
	case ((NU8) 126):
	case ((NU8) 128):
	{
		checksonslen_251209(n, 2);
		openscope_430755(c);
		{
			tsym188833* s;
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA56;
			s = newgensym_430904(((NU8) 22), (*n).kindU.S6.Sons->data[0], c);
			addprelimdecl_252565((*c).C, s);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], newsymnode_190723(s, (*(*n).kindU.S6.Sons->data[0]).Info));
		}
		LA56: ;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], semtemplbody_430750(c, (*n).kindU.S6.Sons->data[1]));
		closescope_430760(c);
	}
	break;
	case ((NU8) 105):
	{
		NI i_432429;
		NI HEX3Atmp_433006;
		NI LOC59;
		NI res_433008;
		checkminsonslen_251215(n, 2);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semtemplbodyscope_430765(c, (*n).kindU.S6.Sons->data[0]));
		i_432429 = 0;
		HEX3Atmp_433006 = 0;
		LOC59 = 0;
		LOC59 = sonslen_189181(n);
		HEX3Atmp_433006 = (NI32)(LOC59 - 1);
		res_433008 = 1;
		while (1) {
			tnode188803* a;
			NI l;
			NI j_432458;
			NI HEX3Atmp_433002;
			NI res_433004;
			if (!(res_433008 <= HEX3Atmp_433006)) goto LA60;
			i_432429 = res_433008;
			a = (*n).kindU.S6.Sons->data[i_432429];
			checkminsonslen_251215(a, 1);
			l = sonslen_189181(a);
			j_432458 = 0;
			HEX3Atmp_433002 = 0;
			HEX3Atmp_433002 = (NI32)(l - 2);
			res_433004 = 0;
			while (1) {
				if (!(res_433004 <= HEX3Atmp_433002)) goto LA61;
				j_432458 = res_433004;
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[j_432458], semtemplbody_430750(c, (*a).kindU.S6.Sons->data[j_432458]));
				res_433004 += 1;
			} LA61: ;
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(l - 1)], semtemplbodyscope_430765(c, (*a).kindU.S6.Sons->data[(NI32)(l - 1)]));
			res_433008 += 1;
		} LA60: ;
	}
	break;
	case ((NU8) 99):
	{
		semtemplsomedecl_431362(c, n, ((NU8) 8));
	}
	break;
	case ((NU8) 100):
	{
		semtemplsomedecl_431362(c, n, ((NU8) 9));
	}
	break;
	case ((NU8) 101):
	{
		NI i_432527;
		NI HEX3Atmp_433011;
		NI LOC65;
		NI res_433013;
		i_432527 = 0;
		HEX3Atmp_433011 = 0;
		LOC65 = 0;
		LOC65 = sonslen_189181(n);
		HEX3Atmp_433011 = (NI32)(LOC65 - 1);
		res_433013 = 0;
		while (1) {
			if (!(res_433013 <= HEX3Atmp_433011)) goto LA66;
			i_432527 = res_433013;
			{
				tnode188803* a;
				a = (*n).kindU.S6.Sons->data[i_432527];
				{
					if (!((*a).Kind == ((NU8) 124))) goto LA70;
					goto LA67;
				}
				LA70: ;
				{
					if (!!(((*a).Kind == ((NU8) 102)))) goto LA74;
					illformedast_251203(a);
				}
				LA74: ;
				checksonslen_251209(a, 3);
				addlocaldecl_430944(c, &(*a).kindU.S6.Sons->data[0], ((NU8) 10));
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[1], semtemplbody_430750(c, (*a).kindU.S6.Sons->data[1]));
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[2], semtemplbody_430750(c, (*a).kindU.S6.Sons->data[2]));
			} LA67: ;
			res_433013 += 1;
		} LA66: ;
	}
	break;
	case ((NU8) 98):
	{
		NI i_432644;
		NI HEX3Atmp_433016;
		NI LOC77;
		NI res_433018;
		NI i_432705;
		NI HEX3Atmp_433021;
		NI LOC88;
		NI res_433023;
		i_432644 = 0;
		HEX3Atmp_433016 = 0;
		LOC77 = 0;
		LOC77 = sonslen_189181(n);
		HEX3Atmp_433016 = (NI32)(LOC77 - 1);
		res_433018 = 0;
		while (1) {
			if (!(res_433018 <= HEX3Atmp_433016)) goto LA78;
			i_432644 = res_433018;
			{
				tnode188803* a;
				a = (*n).kindU.S6.Sons->data[i_432644];
				{
					if (!((*a).Kind == ((NU8) 124))) goto LA82;
					goto LA79;
				}
				LA82: ;
				{
					if (!!(((*a).Kind == ((NU8) 103)))) goto LA86;
					illformedast_251203(a);
				}
				LA86: ;
				checksonslen_251209(a, 3);
				addlocaldecl_430944(c, &(*a).kindU.S6.Sons->data[0], ((NU8) 7));
			} LA79: ;
			res_433018 += 1;
		} LA78: ;
		i_432705 = 0;
		HEX3Atmp_433021 = 0;
		LOC88 = 0;
		LOC88 = sonslen_189181(n);
		HEX3Atmp_433021 = (NI32)(LOC88 - 1);
		res_433023 = 0;
		while (1) {
			if (!(res_433023 <= HEX3Atmp_433021)) goto LA89;
			i_432705 = res_433023;
			{
				tnode188803* a;
				a = (*n).kindU.S6.Sons->data[i_432705];
				{
					if (!((*a).Kind == ((NU8) 124))) goto LA93;
					goto LA90;
				}
				LA93: ;
				{
					if (!!(((*a).Kind == ((NU8) 103)))) goto LA97;
					illformedast_251203(a);
				}
				LA97: ;
				checksonslen_251209(a, 3);
				{
					if (!!(((*(*a).kindU.S6.Sons->data[1]).Kind == ((NU8) 1)))) goto LA101;
					openscope_430755(c);
					asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[1], semtemplbody_430750(c, (*a).kindU.S6.Sons->data[1]));
					asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[2], semtemplbody_430750(c, (*a).kindU.S6.Sons->data[2]));
					closescope_430760(c);
				}
				goto LA99;
				LA101: ;
				{
					asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[2], semtemplbody_430750(c, (*a).kindU.S6.Sons->data[2]));
				}
				LA99: ;
			} LA90: ;
			res_433023 += 1;
		} LA89: ;
	}
	break;
	case ((NU8) 79):
	case ((NU8) 51):
	case ((NU8) 52):
	{
		result = semroutineintemplbody_431189(c, n, ((NU8) 12));
	}
	break;
	case ((NU8) 80):
	{
		result = semroutineintemplbody_431189(c, n, ((NU8) 13));
	}
	break;
	case ((NU8) 84):
	{
		NU8 kind;
		{
			tnode188803* LOC109;
			NIM_BOOL LOC110;
			LOC109 = 0;
			LOC109 = HEX5BHEX5D_189694(n, 4);
			LOC110 = 0;
			LOC110 = haspragma_272125(LOC109, ((NU8) 133));
			if (!LOC110) goto LA111;
			kind = ((NU8) 15);
		}
		goto LA107;
		LA111: ;
		{
			kind = ((NU8) 14);
		}
		LA107: ;
		result = semroutineintemplbody_431189(c, n, kind);
	}
	break;
	case ((NU8) 83):
	{
		result = semroutineintemplbody_431189(c, n, ((NU8) 18));
	}
	break;
	case ((NU8) 82):
	{
		result = semroutineintemplbody_431189(c, n, ((NU8) 17));
	}
	break;
	case ((NU8) 81):
	{
		result = semroutineintemplbody_431189(c, n, ((NU8) 16));
	}
	break;
	case ((NU8) 43):
	{
		asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], semtemplbody_430750(c, (*n).kindU.S6.Sons->data[0]));
	}
	break;
	case ((NU8) 31):
	{
		asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[1], semtemplbody_430750(c, (*n).kindU.S6.Sons->data[1]));
	}
	break;
	case ((NU8) 90):
	{
		result = onlyreplaceparams_430772(c, n);
	}
	break;
	default:
	{
		NI i_432953;
		NI HEX3Atmp_433025;
		NI LOC141;
		NI res_433027;
		{
			NIM_BOOL LOC123;
			tsym188833* s;
			LOC123 = 0;
			LOC123 = ((*n).Kind == ((NU8) 45));
			if (LOC123) goto LA124;
			LOC123 = ((*n).Kind == ((NU8) 53));
			LA124: ;
			if (!LOC123) goto LA125;
			s = qualifiedlookup_252806((*c).C, n, 0);
			{
				if (!!((s == NIM_NIL))) goto LA129;
				{
					NIM_BOOL LOC133;
					LOC133 = 0;
					LOC133 = contains_185821((*c).Tobind, (*s).Sup.Id);
					if (!LOC133) goto LA134;
					result = symchoice_430291((*c).C, n, s, ((NU8) 0));
					goto BeforeRet;
				}
				goto LA131;
				LA134: ;
				{
					NIM_BOOL LOC137;
					LOC137 = 0;
					LOC137 = contains_185821((*c).Tomixin, (*(*s).Name).Sup.Id);
					if (!LOC137) goto LA138;
					result = symchoice_430291((*c).C, n, s, ((NU8) 2));
					goto BeforeRet;
				}
				goto LA131;
				LA138: ;
				{
					result = symchoice_430291((*c).C, n, s, ((NU8) 1));
					goto BeforeRet;
				}
				LA131: ;
			}
			LA129: ;
		}
		LA125: ;
		result = n;
		i_432953 = 0;
		HEX3Atmp_433025 = 0;
		LOC141 = 0;
		LOC141 = sonslen_189181(n);
		HEX3Atmp_433025 = (NI32)(LOC141 - 1);
		res_433027 = 0;
		while (1) {
			if (!(res_433027 <= HEX3Atmp_433025)) goto LA142;
			i_432953 = res_433027;
			asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_432953], semtemplbody_430750(c, (*n).kindU.S6.Sons->data[i_432953]));
			res_433027 += 1;
		} LA142: ;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, transformtoexpr_433195)(tnode188803* n) {
	tnode188803* result;
	NI realstmt;
	result = 0;
	realstmt = 0;
	result = n;
	switch ((*n).Kind) {
	case ((NU8) 114):
	{
		NI i_433212;
		NI HEX3Atmp_433242;
		NI LOC2;
		NI res_433244;
		realstmt = -1;
		i_433212 = 0;
		HEX3Atmp_433242 = 0;
		LOC2 = 0;
		LOC2 = sonslen_189181(n);
		HEX3Atmp_433242 = (NI32)(LOC2 - 1);
		res_433244 = 0;
		while (1) {
			if (!(res_433244 <= HEX3Atmp_433242)) goto LA3;
			i_433212 = res_433244;
			switch ((*(*n).kindU.S6.Sons->data[i_433212]).Kind) {
			case ((NU8) 124):
			case ((NU8) 1):
			case ((NU8) 23):
			{
			}
			break;
			default:
			{
				{
					if (!(realstmt == -1)) goto LA8;
					realstmt = i_433212;
				}
				goto LA6;
				LA8: ;
				{
					realstmt = -2;
				}
				LA6: ;
			}
			break;
			}
			res_433244 += 1;
		} LA3: ;
		{
			if (!(0 <= realstmt)) goto LA13;
			result = transformtoexpr_433195((*n).kindU.S6.Sons->data[realstmt]);
		}
		goto LA11;
		LA13: ;
		{
			(*n).Kind = ((NU8) 125);
		}
		LA11: ;
	}
	break;
	case ((NU8) 111):
	{
		(*n).Kind = ((NU8) 126);
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(tnode188803*, semtemplatedef_433248)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tsym188833* s;
	tscope188827* LOC6;
	tnode188803* gp;
	templctx430596 ctx;
	tsym188833* proto;
	result = 0;
	s = 0;
	{
		if (!((*(*(*c).P).Owner).Kind == ((NU8) 6))) goto LA3;
		s = semidentvis_416601(c, ((NU8) 18), (*n).kindU.S6.Sons->data[0], 2);
		(*s).Flags |=((NI32)(1)<<((((NU8) 3))%(sizeof(NI32)*8)));
	}
	goto LA1;
	LA3: ;
	{
		s = semidentvis_416601(c, ((NU8) 18), (*n).kindU.S6.Sons->data[0], 0);
	}
	LA1: ;
	asgnRef((void**) &(*s).kindU.S2.Scope, (*c).Currentscope);
	pushowner_250218(s);
	LOC6 = 0;
	LOC6 = openscope_252167(c);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], newsymnode_190723(s, (*(*n).kindU.S6.Sons->data[0]).Info));
	{
		if (!!(((*(*n).kindU.S6.Sons->data[4]).Kind == ((NU8) 1)))) goto LA9;
		pragma_267073(c, s, (*n).kindU.S6.Sons->data[4], TMP3061);
	}
	LA9: ;
	gp = 0;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)))) goto LA13;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[2], semgenericparamlist_429851(c, (*n).kindU.S6.Sons->data[2], NIM_NIL));
		gp = (*n).kindU.S6.Sons->data[2];
	}
	goto LA11;
	LA13: ;
	{
		gp = newnodei_189099(((NU8) 75), (*n).Info);
	}
	LA11: ;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[3]).Kind == ((NU8) 1)))) goto LA18;
		semparamlist_416066(c, (*n).kindU.S6.Sons->data[3], gp, s);
		{
			NI LOC22;
			LOC22 = 0;
			LOC22 = sonslen_189181(gp);
			if (!(0 < LOC22)) goto LA23;
			{
				if (!((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 1))) goto LA27;
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[2], gp);
			}
			LA27: ;
		}
		LA23: ;
		{
			if (!((*(*(*n).kindU.S6.Sons->data[3]).kindU.S6.Sons->data[0]).Kind == ((NU8) 1))) goto LA31;
			asgnRefNoCycle((void**) &(*(*s).Typ).Sons->data[0], newtypes_250180(((NU8) 7), c));
			asgnRefNoCycle((void**) &(*(*(*s).Typ).N).kindU.S6.Sons->data[0], newnodeit_189104(((NU8) 4), (*n).Info, (*(*s).Typ).Sons->data[0]));
		}
		LA31: ;
	}
	goto LA16;
	LA18: ;
	{
		ttype188837* LOC34;
		tnode188803* LOC35;
		asgnRefNoCycle((void**) &(*s).Typ, newtypes_250180(((NU8) 25), c));
		asgnRefNoCycle((void**) &(*(*s).Typ).N, newnodei_189099(((NU8) 76), (*n).Info));
		LOC34 = 0;
		LOC34 = newtypes_250180(((NU8) 7), c);
		rawaddson_193092((*s).Typ, LOC34);
		LOC35 = 0;
		LOC35 = newnodeit_189104(((NU8) 4), (*n).Info, (*(*s).Typ).Sons->data[0]);
		addson_189207((*(*s).Typ).N, LOC35);
	}
	LA16: ;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 1)))) goto LA38;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], sempattern_431521(c, (*n).kindU.S6.Sons->data[1]));
	}
	LA38: ;
	memset((void*)&ctx, 0, sizeof(ctx));
	initintset_185918(&ctx.Tobind);
	initintset_185918(&ctx.Tomixin);
	initintset_185918(&ctx.Toinject);
	ctx.C = c;
	ctx.Owner = s;
	{
		if (!(((*s).Flags &(1<<((((NU8) 9))&31)))!=0)) goto LA42;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], semtemplbodydirty_433044(&ctx, (*n).kindU.S6.Sons->data[6]));
	}
	goto LA40;
	LA42: ;
	{
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], semtemplbody_430750(&ctx, (*n).kindU.S6.Sons->data[6]));
	}
	LA40: ;
	{
		if (!!(((*(*(*s).Typ).Sons->data[0]).Kind == ((NU8) 7) || (*(*(*s).Typ).Sons->data[0]).Kind == ((NU8) 8)))) goto LA47;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], transformtoexpr_433195((*n).kindU.S6.Sons->data[6]));
	}
	LA47: ;
	closescope_252179(c);
	popowner_250222();
	asgnRefNoCycle((void**) &(*s).Ast, n);
	result = n;
	{
		if (!((*(*n).kindU.S6.Sons->data[6]).Kind == ((NU8) 1))) goto LA51;
		localerror_165571((*n).Info, ((NU16) 138), (*(*s).Name).S);
	}
	LA51: ;
	proto = searchforproc_266341(c, (*c).Currentscope, s);
	{
		if (!(proto == NIM_NIL)) goto LA55;
		addinterfaceoverloadablesymat_252701(c, (*c).Currentscope, s);
	}
	goto LA53;
	LA55: ;
	{
		symtabreplace_202005(&(*(*c).Currentscope).Symbols, proto, s);
	}
	LA53: ;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[1]).Kind == ((NU8) 1)))) goto LA60;
		(*c).Patterns = (tsymseq188805*) incrSeq(&((*c).Patterns)->Sup, sizeof(tsym188833*));
		asgnRefNoCycle((void**) &(*c).Patterns->data[(*c).Patterns->Sup.len-1], s);
	}
	LA60: ;
	return result;
}

N_NIMCALL(tsym188833*, getmagicsym_459025)(NU16 magic) {
	tsym188833* result;
	tident167019* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_167456(reprEnum(magic, (&NTI188521)));
	result = newsym_189053(((NU8) 12), LOC1, systemmodule_242017, gcodegenlineinfo_164126);
	(*result).Magic = magic;
	return result;
}

N_NIMCALL(tnode188803*, semquoteast_416109)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* doblk;
	NI LOC10;
	NimStringDesc* op;
	tnodeseq188797* quotes;
	tnodeseq188797* ids;
	tsym188833* LOC28;
	tsym188833* LOC29;
	tnode188803* tmpl;
	tnodeseq188797* LOC40;
	TY251116 LOC41;
	tsym188833* LOC42;
	result = 0;
	{
		NIM_BOOL LOC3;
		NI LOC4;
		NI LOC6;
		NimStringDesc* LOC9;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = len_189264(n);
		LOC3 = (LOC4 == 2);
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = len_189264(n);
		LOC3 = (LOC6 == 3);
		LA5: ;
		if (!!(LOC3)) goto LA7;
		LOC9 = 0;
		LOC9 = HEX24_165714(TMP3056);
		internalerror_165606(LOC9);
	}
	LA7: ;
	LOC10 = 0;
	{
		if (!NIM_FALSE) goto LA13;
		LOC10 = -1;
	}
	goto LA11;
	LA13: ;
	{
		NI LOC16;
		LOC16 = 0;
		LOC16 = len_189264(n);
		LOC10 = (NI32)(LOC16 + -1);
	}
	LA11: ;
	doblk = HEX5BHEX5D_189694(n, LOC10);
	{
		NI LOC19;
		tnode188803* LOC22;
		LOC19 = 0;
		LOC19 = len_189264(n);
		if (!(LOC19 == 3)) goto LA20;
		LOC22 = 0;
		LOC22 = HEX5BHEX5D_189694(n, 1);
		op = expectstring_458991(c, LOC22);
	}
	goto LA17;
	LA20: ;
	{
		op = copyString(((NimStringDesc*) &TMP3057));
	}
	LA17: ;
	quotes = newseq_459573(1);
	ids = newseq_459573(0);
	{
		if (!!(((*doblk).Kind == ((NU8) 52)))) goto LA26;
		localerror_165571((*n).Info, ((NU16) 188), ((NimStringDesc*) &TMP3058));
	}
	LA26: ;
	processquotations_459329(&(*doblk).kindU.S6.Sons->data[6], op, &quotes, &ids);
	LOC28 = 0;
	LOC28 = getcurrowner_250215();
	LOC29 = 0;
	LOC29 = newanonsym_459037(((NU8) 18), (*n).Info, LOC28);
	asgnRefNoCycle((void**) &(*doblk).kindU.S6.Sons->data[0], newsymnode_189095(LOC29));
	{
		tnode188803* LOC34;
		tnode188803* LOC35;
		tsym188833* LOC36;
		tsym188833* LOC37;
		tnode188803* LOC38;
		tnode188803* LOC39;
		if (!(0 < ids->Sup.len)) goto LA32;
		LOC34 = 0;
		LOC34 = HEX5BHEX5D_189694(doblk, 3);
		(*LOC34).kindU.S6.Sons = (tnodeseq188797*) setLengthSeq(&((*LOC34).kindU.S6.Sons)->Sup, sizeof(tnode188803*), 2);
		LOC35 = 0;
		LOC35 = HEX5BHEX5D_189694(doblk, 3);
		LOC36 = 0;
		LOC36 = getsyssym_242040(((NimStringDesc*) &TMP3059));
		asgnRefNoCycle((void**) &(*LOC35).kindU.S6.Sons->data[0], newsymnode_189095(LOC36));
		LOC37 = 0;
		LOC37 = getsyssym_242040(((NimStringDesc*) &TMP3060));
		LOC38 = 0;
		LOC38 = newsymnode_189095(LOC37);
		ids = (tnodeseq188797*) incrSeq(&(ids)->Sup, sizeof(tnode188803*));
		asgnRefNoCycle((void**) &ids->data[ids->Sup.len-1], LOC38);
		ids = (tnodeseq188797*) incrSeq(&(ids)->Sup, sizeof(tnode188803*));
		asgnRefNoCycle((void**) &ids->data[ids->Sup.len-1], emptynode_189727);
		LOC39 = 0;
		LOC39 = HEX5BHEX5D_189694(doblk, 3);
		asgnRefNoCycle((void**) &(*LOC39).kindU.S6.Sons->data[1], newnode_191003(((NU8) 35), (*n).Info, ids, NIM_NIL));
	}
	LA32: ;
	tmpl = semtemplatedef_433248(c, doblk);
	asgnRefNoCycle((void**) &quotes->data[0], HEX5BHEX5D_189694(tmpl, 0));
	LOC40 = 0;
	LOC40 = (tnodeseq188797*) newSeq((&NTI188797), 2);
	memset((void*)LOC41, 0, sizeof(LOC41));
	LOC42 = 0;
	LOC42 = getmagicsym_459025(((NU16) 16));
	LOC41[0] = newsymnode_189095(LOC42);
	LOC41[1] = newnode_191003(((NU8) 27), (*n).Info, quotes, NIM_NIL);
	asgnRefNoCycle((void**) &LOC40->data[0], LOC41[0]);
	asgnRefNoCycle((void**) &LOC40->data[1], LOC41[1]);
	result = newnode_191003(((NU8) 27), (*n).Info, LOC40, NIM_NIL);
	result = semexpandtoast_459159(c, result);
	return result;
}

N_NIMCALL(tnode188803*, semmagic_459949)(tcontext250019* c, tnode188803* n, tsym188833* s, NU16 flags) {
	tnode188803* result;
	result = 0;
	result = n;
	switch ((*s).Magic) {
	case ((NU16) 1):
	{
		tnode188803* LOC2;
		LOC2 = 0;
		LOC2 = setms_458918(n, s);
		result = semdefined_458801(c, LOC2, NIM_FALSE);
	}
	break;
	case ((NU16) 2):
	{
		tnode188803* LOC4;
		LOC4 = 0;
		LOC4 = setms_458918(n, s);
		result = semdefined_458801(c, LOC4, NIM_TRUE);
	}
	break;
	case ((NU16) 3):
	{
		tnode188803* LOC6;
		LOC6 = 0;
		LOC6 = setms_458918(n, s);
		result = semcompiles_459910(c, LOC6, flags);
	}
	break;
	case ((NU16) 4):
	{
		tnode188803* LOC8;
		LOC8 = 0;
		LOC8 = setms_458918(n, s);
		result = semlowhigh_450811(c, LOC8, ((NU16) 4));
	}
	break;
	case ((NU16) 5):
	{
		tnode188803* LOC10;
		LOC10 = 0;
		LOC10 = setms_458918(n, s);
		result = semlowhigh_450811(c, LOC10, ((NU16) 5));
	}
	break;
	case ((NU16) 6):
	{
		tnode188803* LOC12;
		LOC12 = 0;
		LOC12 = setms_458918(n, s);
		result = semsizeof_450917(c, LOC12);
	}
	break;
	case ((NU16) 8):
	{
		tnode188803* LOC14;
		LOC14 = 0;
		LOC14 = setms_458918(n, s);
		result = semis_451340(c, LOC14);
	}
	break;
	case ((NU16) 9):
	{
		tnode188803* LOC16;
		LOC16 = 0;
		LOC16 = setms_458918(n, s);
		result = semof_450952(c, LOC16);
	}
	break;
	case ((NU16) 10):
	{
		tnode188803* LOC18;
		LOC18 = 0;
		LOC18 = setms_458918(n, s);
		result = semecho_455352(c, LOC18);
	}
	break;
	case ((NU16) 11):
	{
		result = semshallowcopy_453823(c, n, flags);
	}
	break;
	case ((NU16) 16):
	{
		result = semexpandtoast_459305(c, n, s, flags);
	}
	break;
	case ((NU16) 17):
	{
		result = semquoteast_416109(c, n);
	}
	break;
	case ((NU16) 165):
	{
		tnode188803* LOC23;
		NimStringDesc* LOC24;
		checksonslen_251209(n, 2);
		LOC23 = 0;
		LOC23 = HEX5BHEX5D_189694(n, 1);
		LOC24 = 0;
		LOC24 = rendertree_211051(LOC23, 4);
		result = newstrnodet_261030(LOC24, n);
		asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 28)));
	}
	break;
	default:
	{
		result = semdirectop_416631(c, n, flags);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, semopaux_451423)(tcontext250019* c, tnode188803* n) {
	NI i_451441;
	NI HEX3Atmp_451565;
	NI LOC1;
	NI res_451567;
	i_451441 = 0;
	HEX3Atmp_451565 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_451565 = (NI32)(LOC1 - 1);
	res_451567 = 1;
	while (1) {
		tnode188803* a;
		if (!(res_451567 <= HEX3Atmp_451565)) goto LA2;
		i_451441 = res_451567;
		a = (*n).kindU.S6.Sons->data[i_451441];
		{
			NIM_BOOL LOC5;
			NI LOC7;
			tlineinfo163527 info;
			tident167019* LOC10;
			LOC5 = 0;
			LOC5 = ((*a).Kind == ((NU8) 33));
			if (!(LOC5)) goto LA6;
			LOC7 = 0;
			LOC7 = sonslen_189181(a);
			LOC5 = (LOC7 == 2);
			LA6: ;
			if (!LOC5) goto LA8;
			info = (*(*a).kindU.S6.Sons->data[0]).Info;
			LOC10 = 0;
			LOC10 = consideracc_252006((*a).kindU.S6.Sons->data[0]);
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[0], newidentnode_189090(LOC10, info));
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[1], semexprwithtype_416011(c, (*a).kindU.S6.Sons->data[1], 16));
			asgnRefNoCycle((void**) &(*a).Typ, (*(*a).kindU.S6.Sons->data[1]).Typ);
		}
		goto LA3;
		LA8: ;
		{
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_451441], semexprwithtype_416011(c, a, 16));
		}
		LA3: ;
		res_451567 += 1;
	} LA2: ;
}

N_NIMCALL(tnode188803*, overloadedcallopr_451571)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tident167019* par;
	result = 0;
	par = getident_167456(((NimStringDesc*) &TMP2777));
	{
		tsym188833* LOC3;
		LOC3 = 0;
		LOC3 = searchinscopes_252216(c, par);
		if (!(LOC3 == NIM_NIL)) goto LA4;
		result = NIM_NIL;
	}
	goto LA1;
	LA4: ;
	{
		tnode188803* LOC7;
		NI i_451606;
		NI HEX3Atmp_451621;
		NI LOC8;
		NI res_451623;
		result = newnodei_189099(((NU8) 27), (*n).Info);
		LOC7 = 0;
		LOC7 = newidentnode_189090(par, (*n).Info);
		addson_189207(result, LOC7);
		i_451606 = 0;
		HEX3Atmp_451621 = 0;
		LOC8 = 0;
		LOC8 = sonslen_189181(n);
		HEX3Atmp_451621 = (NI32)(LOC8 - 1);
		res_451623 = 0;
		while (1) {
			if (!(res_451623 <= HEX3Atmp_451621)) goto LA9;
			i_451606 = res_451623;
			addson_189207(result, (*n).kindU.S6.Sons->data[i_451606]);
			res_451623 += 1;
		} LA9: ;
		result = semexpr_416003(c, result, 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semindirectop_454671)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	tnode188803* prc;
	tnode188803* norig;
	ttype188837* t;
	result = 0;
	result = NIM_NIL;
	checkminsonslen_251215(n, 1);
	prc = (*n).kindU.S6.Sons->data[0];
	{
		if (!((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 45))) goto LA3;
		checksonslen_251209((*n).kindU.S6.Sons->data[0], 2);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semfieldaccess_449848(c, (*n).kindU.S6.Sons->data[0], 0));
		{
			NI i_454822;
			NI HEX3Atmp_455218;
			NI LOC9;
			NI res_455220;
			if (!((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 25))) goto LA7;
			result = (*n).kindU.S6.Sons->data[0];
			(*result).Kind = ((NU8) 27);
			(*result).Flags |=((NI16)(1)<<((((NU8) 9))%(sizeof(NI16)*8)));
			i_454822 = 0;
			HEX3Atmp_455218 = 0;
			LOC9 = 0;
			LOC9 = sonslen_189181(n);
			HEX3Atmp_455218 = (NI32)(LOC9 - 1);
			res_455220 = 1;
			while (1) {
				if (!(res_455220 <= HEX3Atmp_455218)) goto LA10;
				i_454822 = res_455220;
				addson_189207(result, (*n).kindU.S6.Sons->data[i_454822]);
				res_455220 += 1;
			} LA10: ;
			result = semexpr_416003(c, result, flags);
			goto BeforeRet;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semexpr_416003(c, (*n).kindU.S6.Sons->data[0], 0));
	}
	LA1: ;
	norig = copytree_189237(n);
	semopaux_451423(c, n);
	t = NIM_NIL;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Typ == NIM_NIL))) goto LA14;
		t = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106232576000));
	}
	LA14: ;
	{
		NIM_BOOL LOC18;
		tcandidate345205 m;
		LOC18 = 0;
		LOC18 = !((t == NIM_NIL));
		if (!(LOC18)) goto LA19;
		LOC18 = ((*t).Kind == ((NU8) 25));
		LA19: ;
		if (!LOC18) goto LA20;
		memset((void*)&m, 0, sizeof(m));
		initcandidate_345257(c, &m, t);
		matches_353566(c, n, norig, &m);
		{
			if (!!((m.State == ((NU8) 1)))) goto LA24;
			{
				if (!(0 < (*c).Incompilescontext)) goto LA28;
				globalerror_165558((*n).Info, ((NU16) 129), ((NimStringDesc*) &TMP2675));
				result = emptynode_189727;
				goto BeforeRet;
			}
			goto LA26;
			LA28: ;
			{
				NIM_BOOL haserrortype;
				NimStringDesc* msg;
				NI i_454983;
				NI HEX3Atmp_455224;
				NI LOC31;
				NI res_455226;
				haserrortype = NIM_FALSE;
				msg = msgkindtostring_165071(((NU16) 129));
				i_454983 = 0;
				HEX3Atmp_455224 = 0;
				LOC31 = 0;
				LOC31 = sonslen_189181(n);
				HEX3Atmp_455224 = (NI32)(LOC31 - 1);
				res_455226 = 1;
				while (1) {
					ttype188837* nt;
					NimStringDesc* LOC37;
					if (!(res_455226 <= HEX3Atmp_455224)) goto LA32;
					i_454983 = res_455226;
					{
						if (!(1 < i_454983)) goto LA35;
						msg = resizeString(msg, 2);
appendString(msg, ((NimStringDesc*) &TMP3023));
					}
					LA35: ;
					nt = (*(*n).kindU.S6.Sons->data[i_454983]).Typ;
					LOC37 = 0;
					LOC37 = typetostring_223020(nt, ((NU8) 0));
					msg = resizeString(msg, LOC37->Sup.len + 0);
appendString(msg, LOC37);
					{
						if (!((*nt).Kind == ((NU8) 50))) goto LA40;
						haserrortype = NIM_TRUE;
						goto LA32;
					}
					LA40: ;
					res_455226 += 1;
				} LA32: ;
				{
					NimStringDesc* LOC46;
					NimStringDesc* LOC47;
					NimStringDesc* LOC48;
					if (!!(haserrortype)) goto LA44;
					LOC46 = 0;
					LOC47 = 0;
					LOC47 = msgkindtostring_165071(((NU16) 130));
					LOC48 = 0;
					LOC48 = typetostring_223020((*(*n).kindU.S6.Sons->data[0]).Typ, ((NU8) 0));
					LOC46 = rawNewString(LOC47->Sup.len + LOC48->Sup.len + 3);
appendString(LOC46, ((NimStringDesc*) &TMP3062));
appendString(LOC46, LOC47);
appendString(LOC46, ((NimStringDesc*) &TMP3019));
appendString(LOC46, LOC48);
					msg = resizeString(msg, LOC46->Sup.len + 0);
appendString(msg, LOC46);
					localerror_165571((*n).Info, ((NU16) 4), msg);
				}
				LA44: ;
				result = errornode_251142(c, n);
				goto BeforeRet;
			}
			LA26: ;
			result = NIM_NIL;
		}
		goto LA22;
		LA24: ;
		{
			result = m.Call;
			instgenericconverterssons_421531(c, result, &m);
		}
		LA22: ;
		{
			if (!!((((*t).Flags &(1<<((((NU8) 1))&31)))!=0))) goto LA52;
			(*(*(*c).P).Owner).Flags |=((NI32)(1)<<((((NU8) 11))%(sizeof(NI32)*8)));
		}
		LA52: ;
	}
	goto LA16;
	LA20: ;
	{
		NIM_BOOL LOC55;
		ttype188837* desttype;
		LOC55 = 0;
		LOC55 = !((t == NIM_NIL));
		if (!(LOC55)) goto LA56;
		LOC55 = ((*t).Kind == ((NU8) 8));
		LA56: ;
		if (!LOC55) goto LA57;
		{
			NI LOC61;
			LOC61 = 0;
			LOC61 = len_189264(n);
			if (!(LOC61 == 1)) goto LA62;
			result = semobjconstr_454666(c, n, flags);
			goto BeforeRet;
		}
		LA62: ;
		desttype = skiptypes_192793(t, 2304);
		result = semconv_450524(c, n);
		goto BeforeRet;
	}
	goto LA16;
	LA57: ;
	{
		result = overloadedcallopr_451571(c, n);
		{
			if (!(result == NIM_NIL)) goto LA67;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], prc);
			asgnRefNoCycle((void**) &(*norig).kindU.S6.Sons->data[0], prc);
			(*n).Flags |=((NI16)(1)<<((((NU8) 10))%(sizeof(NI16)*8)));
			result = semoverloadedcallanalyseeffects_454454(c, n, norig, flags);
			{
				if (!(result == NIM_NIL)) goto LA71;
				result = errornode_251142(c, n);
				goto BeforeRet;
			}
			LA71: ;
		}
		LA67: ;
	}
	LA16: ;
	fixabstracttype_452189(c, result);
	analyseifaddresstakenincall_452906(c, result);
	{
		NIM_BOOL LOC75;
		LOC75 = 0;
		LOC75 = ((*(*result).kindU.S6.Sons->data[0]).Kind == ((NU8) 3));
		if (!(LOC75)) goto LA76;
		LOC75 = !(((*(*(*result).kindU.S6.Sons->data[0]).kindU.S4.Sym).Magic == ((NU16) 0)));
		LA76: ;
		if (!LOC75) goto LA77;
		result = magicsafteroverloadresolution_453828(c, result, flags);
	}
	LA77: ;
	result = evalatcompiletime_453850(c, result);
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, setgenericparams_462609)(tcontext250019* c, tnode188803* n) {
	NI i_462634;
	NI HEX3Atmp_462635;
	NI LOC1;
	NI res_462637;
	i_462634 = 0;
	HEX3Atmp_462635 = 0;
	LOC1 = 0;
	LOC1 = len_189264(n);
	HEX3Atmp_462635 = LOC1 - 1;
	res_462637 = 1;
	while (1) {
		tnode188803* LOC3;
		tnode188803* LOC4;
		if (!(res_462637 <= HEX3Atmp_462635)) goto LA2;
		i_462634 = res_462637;
		LOC3 = 0;
		LOC3 = HEX5BHEX5D_189694(n, i_462634);
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_189694(n, i_462634);
		asgnRefNoCycle((void**) &(*LOC3).Typ, semtypenode_416055(c, LOC4, NIM_NIL));
		res_462637 += 1;
	} LA2: ;
}

N_NIMCALL(tnode188803*, semsymgenericinstantiation_450057)(tcontext250019* c, tnode188803* n, tsym188833* s) {
	tnode188803* result;
	result = 0;
	result = symchoice_430291(c, n, s, ((NU8) 0));
	return result;
}

N_NIMCALL(tnode188803*, explicitgenericsym_421936)(tcontext250019* c, tnode188803* n, tsym188833* s) {
	tnode188803* result;
	tcandidate345205 m;
	tsym188833* newinst;
	result = 0;
	memset((void*)&m, 0, sizeof(m));
	initcandidate_345274(c, &m, s, n, -1);
	newinst = generateinstance_419355(c, s, m.Bindings, (*n).Info);
	markused_345244(n, s);
	result = newsymnode_190723(newinst, (*n).Info);
	return result;
}

N_NIMCALL(tnode188803*, explicitgenericinsterror_421931)(tnode188803* n) {
	tnode188803* result;
	NimStringDesc* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = rendertree_211051(n, 0);
	localerror_165571((*n).Info, ((NU16) 124), LOC1);
	result = n;
	return result;
}

N_NIMCALL(tnode188803*, explicitgenericinstantiation_421947)(tcontext250019* c, tnode188803* n, tsym188833* s_421951) {
	tnode188803* result;
	NI i_422011;
	NI HEX3Atmp_422187;
	NI LOC1;
	NI res_422189;
	tsym188833* s;
	tnode188803* a;
	result = 0;
	i_422011 = 0;
	HEX3Atmp_422187 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_422187 = (NI32)(LOC1 - 1);
	res_422189 = 1;
	while (1) {
		if (!(res_422189 <= HEX3Atmp_422187)) goto LA2;
		i_422011 = res_422189;
		asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[i_422011]).Typ, semtypenode_416055(c, (*n).kindU.S6.Sons->data[i_422011], NIM_NIL));
		res_422189 += 1;
	} LA2: ;
	s = s_421951;
	a = (*n).kindU.S6.Sons->data[0];
	{
		if (!((*a).Kind == ((NU8) 3))) goto LA5;
		{
			NI LOC9;
			NI LOC10;
			NI expected;
			NimStringDesc* LOC13;
			NimStringDesc* LOC14;
			NI LOC15;
			NimStringDesc* LOC16;
			NimStringDesc* LOC17;
			LOC9 = 0;
			LOC9 = safelen_189320((*(*s).Ast).kindU.S6.Sons->data[2]);
			LOC10 = 0;
			LOC10 = len_189264(n);
			if (!!((LOC9 == (NI32)(LOC10 - 1)))) goto LA11;
			expected = safelen_189320((*(*s).Ast).kindU.S6.Sons->data[2]);
			LOC13 = 0;
			LOC14 = 0;
			LOC14 = rendertree_211051(n, 0);
			LOC15 = 0;
			LOC15 = len_189264(n);
			LOC16 = 0;
			LOC16 = nimIntToStr((NI32)(LOC15 - 1));
			LOC17 = 0;
			LOC17 = nimIntToStr(expected);
			LOC13 = rawNewString(LOC14->Sup.len + LOC16->Sup.len + LOC17->Sup.len + 48);
appendString(LOC13, ((NimStringDesc*) &TMP3063));
appendString(LOC13, LOC14);
appendString(LOC13, ((NimStringDesc*) &TMP3064));
appendString(LOC13, LOC16);
appendString(LOC13, ((NimStringDesc*) &TMP3065));
appendString(LOC13, LOC17);
			localerror_165571((*n).Info, ((NU16) 4), LOC13);
			result = n;
			goto BeforeRet;
		}
		LA11: ;
		result = explicitgenericsym_421936(c, n, s);
	}
	goto LA3;
	LA5: ;
	{
		NI i_422120;
		NI HEX3Atmp_422191;
		NI LOC21;
		NI res_422193;
		if (!((*a).Kind == ((NU8) 56) || (*a).Kind == ((NU8) 57))) goto LA19;
		result = newnodei_189099((*a).Kind, (*n).Info);
		i_422120 = 0;
		HEX3Atmp_422191 = 0;
		LOC21 = 0;
		LOC21 = len_189264(a);
		HEX3Atmp_422191 = (NI32)(LOC21 - 1);
		res_422193 = 0;
		while (1) {
			tsym188833* candidate;
			if (!(res_422193 <= HEX3Atmp_422191)) goto LA22;
			i_422120 = res_422193;
			candidate = (*(*a).kindU.S6.Sons->data[i_422120]).kindU.S4.Sym;
			{
				if (!((126976 &(1<<(((*candidate).Kind)&31)))!=0)) goto LA25;
				{
					NI LOC29;
					NI LOC30;
					tnode188803* LOC33;
					LOC29 = 0;
					LOC29 = safelen_189320((*(*candidate).Ast).kindU.S6.Sons->data[2]);
					LOC30 = 0;
					LOC30 = len_189264(n);
					if (!(LOC29 == (NI32)(LOC30 - 1))) goto LA31;
					LOC33 = 0;
					LOC33 = explicitgenericsym_421936(c, n, candidate);
					add_189390(result, LOC33);
				}
				LA31: ;
			}
			LA25: ;
			res_422193 += 1;
		} LA22: ;
		{
			NIM_BOOL LOC36;
			NI LOC37;
			LOC36 = 0;
			LOC37 = 0;
			LOC37 = len_189264(result);
			LOC36 = (LOC37 == 1);
			if (!(LOC36)) goto LA38;
			LOC36 = ((*a).Kind == ((NU8) 56));
			LA38: ;
			if (!LOC36) goto LA39;
			result = HEX5BHEX5D_189694(result, 0);
		}
		LA39: ;
	}
	goto LA3;
	LA19: ;
	{
		result = explicitgenericinsterror_421931(n);
	}
	LA3: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semarrayaccess_457150)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	result = 0;
	result = semsubscript_456818(c, n, flags);
	{
		tident167019* LOC5;
		tnode188803* LOC6;
		if (!(result == NIM_NIL)) goto LA3;
		LOC5 = 0;
		LOC5 = getident_167456(((NimStringDesc*) &TMP3066));
		LOC6 = 0;
		LOC6 = buildoverloadedsubscripts_456746(n, LOC5);
		result = semexpr_416003(c, LOC6, 0);
	}
	LA3: ;
	return result;
}

N_NIMCALL(NU8, checkpar_460776)(tnode188803* n) {
	NU8 result;
	NI length;
	result = 0;
	length = sonslen_189181(n);
	{
		if (!(length == 0)) goto LA3;
		result = ((NU8) 3);
	}
	goto LA1;
	LA3: ;
	{
		if (!(length == 1)) goto LA6;
		result = ((NU8) 1);
	}
	goto LA1;
	LA6: ;
	{
		NI i_460816;
		NI HEX3Atmp_460942;
		NI res_460944;
		{
			if (!((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 34))) goto LA11;
			result = ((NU8) 2);
		}
		goto LA9;
		LA11: ;
		{
			result = ((NU8) 3);
		}
		LA9: ;
		i_460816 = 0;
		HEX3Atmp_460942 = 0;
		HEX3Atmp_460942 = (NI32)(length - 1);
		res_460944 = 0;
		while (1) {
			if (!(res_460944 <= HEX3Atmp_460942)) goto LA14;
			i_460816 = res_460944;
			{
				if (!(result == ((NU8) 2))) goto LA17;
				{
					NIM_BOOL LOC21;
					LOC21 = 0;
					LOC21 = !(((*(*n).kindU.S6.Sons->data[i_460816]).Kind == ((NU8) 34)));
					if (LOC21) goto LA22;
					LOC21 = !(((*(*(*n).kindU.S6.Sons->data[i_460816]).kindU.S6.Sons->data[0]).Kind == ((NU8) 3) || (*(*(*n).kindU.S6.Sons->data[i_460816]).kindU.S6.Sons->data[0]).Kind == ((NU8) 2)));
					LA22: ;
					if (!LOC21) goto LA23;
					localerror_165571((*(*n).kindU.S6.Sons->data[i_460816]).Info, ((NU16) 170), ((NimStringDesc*) &TMP2675));
					result = ((NU8) 0);
					goto BeforeRet;
				}
				LA23: ;
			}
			goto LA15;
			LA17: ;
			{
				{
					if (!((*(*n).kindU.S6.Sons->data[i_460816]).Kind == ((NU8) 34))) goto LA28;
					localerror_165571((*(*n).kindU.S6.Sons->data[i_460816]).Info, ((NU16) 171), ((NimStringDesc*) &TMP2675));
					result = ((NU8) 0);
					goto BeforeRet;
				}
				LA28: ;
			}
			LA15: ;
			res_460944 += 1;
		} LA14: ;
	}
	LA1: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semtuplepositionsconstr_461323)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	ttype188837* typ;
	NI i_461342;
	NI HEX3Atmp_461403;
	NI LOC1;
	NI res_461405;
	result = 0;
	result = n;
	typ = newtypes_250180(((NU8) 18), c);
	i_461342 = 0;
	HEX3Atmp_461403 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_461403 = (NI32)(LOC1 - 1);
	res_461405 = 0;
	while (1) {
		if (!(res_461405 <= HEX3Atmp_461403)) goto LA2;
		i_461342 = res_461405;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_461342], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[i_461342], (flags & 32)));
		addsonskipintlit_242461(typ, (*(*n).kindU.S6.Sons->data[i_461342]).Typ);
		res_461405 += 1;
	} LA2: ;
	asgnRefNoCycle((void**) &(*result).Typ, typ);
	return result;
}

N_NIMCALL(tnode188803*, semtuplefieldsconstr_460948)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	ttype188837* typ;
	tintset185047 ids;
	NI i_460968;
	NI HEX3Atmp_461317;
	NI LOC1;
	NI res_461319;
	result = 0;
	result = newnodei_189099(((NU8) 37), (*n).Info);
	typ = newtypes_250180(((NU8) 18), c);
	asgnRefNoCycle((void**) &(*typ).N, newnodei_189099(((NU8) 136), (*n).Info));
	chckNil((void*)&ids);
	memset((void*)&ids, 0, sizeof(ids));
	initintset_185918(&ids);
	i_460968 = 0;
	HEX3Atmp_461317 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_461317 = (NI32)(LOC1 - 1);
	res_461319 = 0;
	while (1) {
		tident167019* id;
		tsym188833* f;
		tnode188803* LOC22;
		if (!(res_461319 <= HEX3Atmp_461317)) goto LA2;
		i_460968 = res_461319;
		{
			NIM_BOOL LOC5;
			tnode188803* LOC6;
			tnode188803* LOC8;
			tnode188803* LOC9;
			LOC5 = 0;
			LOC6 = 0;
			LOC6 = HEX5BHEX5D_189694(n, i_460968);
			LOC5 = !(((*LOC6).Kind == ((NU8) 34)));
			if (LOC5) goto LA7;
			LOC8 = 0;
			LOC8 = HEX5BHEX5D_189694(n, i_460968);
			LOC9 = 0;
			LOC9 = HEX5BHEX5D_189694(LOC8, 0);
			LOC5 = !(((*LOC9).Kind == ((NU8) 3) || (*LOC9).Kind == ((NU8) 2)));
			LA7: ;
			if (!LOC5) goto LA10;
			illformedast_251203((*n).kindU.S6.Sons->data[i_460968]);
		}
		LA10: ;
		id = 0;
		{
			if (!((*(*(*n).kindU.S6.Sons->data[i_460968]).kindU.S6.Sons->data[0]).Kind == ((NU8) 2))) goto LA14;
			id = (*(*(*n).kindU.S6.Sons->data[i_460968]).kindU.S6.Sons->data[0]).kindU.S5.Ident;
		}
		goto LA12;
		LA14: ;
		{
			id = (*(*(*(*n).kindU.S6.Sons->data[i_460968]).kindU.S6.Sons->data[0]).kindU.S4.Sym).Name;
		}
		LA12: ;
		{
			NIM_BOOL LOC19;
			LOC19 = 0;
			LOC19 = containsorincl_185888(&ids, (*id).Sup.Id);
			if (!LOC19) goto LA20;
			localerror_165571((*(*n).kindU.S6.Sons->data[i_460968]).Info, ((NU16) 86), (*id).S);
		}
		LA20: ;
		asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[i_460968]).kindU.S6.Sons->data[1], semexprwithtype_416011(c, (*(*n).kindU.S6.Sons->data[i_460968]).kindU.S6.Sons->data[1], (flags & 32)));
		f = newsyms_416504(((NU8) 19), (*(*n).kindU.S6.Sons->data[i_460968]).kindU.S6.Sons->data[0], c);
		asgnRefNoCycle((void**) &(*f).Typ, skipintlit_242424((*(*(*n).kindU.S6.Sons->data[i_460968]).kindU.S6.Sons->data[1]).Typ));
		(*f).Position = i_460968;
		rawaddson_193092(typ, (*f).Typ);
		LOC22 = 0;
		LOC22 = newsymnode_189095(f);
		addson_189207((*typ).N, LOC22);
		asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[i_460968]).kindU.S6.Sons->data[0], newsymnode_189095(f));
		addson_189207(result, (*n).kindU.S6.Sons->data[i_460968]);
		res_461319 += 1;
	} LA2: ;
	asgnRefNoCycle((void**) &(*result).Typ, typ);
	return result;
}

N_NIMCALL(tnode188803*, semsetconstr_460148)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = newnodei_189099(((NU8) 39), (*n).Info);
	asgnRefNoCycle((void**) &(*result).Typ, newtypes_250180(((NU8) 19), c));
	{
		NI LOC3;
		ttype188837* LOC6;
		LOC3 = 0;
		LOC3 = sonslen_189181(n);
		if (!(LOC3 == 0)) goto LA4;
		LOC6 = 0;
		LOC6 = newtypes_250180(((NU8) 3), c);
		rawaddson_193092((*result).Typ, LOC6);
	}
	goto LA1;
	LA4: ;
	{
		ttype188837* typ;
		NI i_460166;
		NI HEX3Atmp_460677;
		NI LOC8;
		NI res_460679;
		NI i_460539;
		NI HEX3Atmp_460682;
		NI LOC42;
		NI res_460684;
		typ = NIM_NIL;
		i_460166 = 0;
		HEX3Atmp_460677 = 0;
		LOC8 = 0;
		LOC8 = sonslen_189181(n);
		HEX3Atmp_460677 = (NI32)(LOC8 - 1);
		res_460679 = 0;
		while (1) {
			if (!(res_460679 <= HEX3Atmp_460677)) goto LA9;
			i_460166 = res_460679;
			{
				NIM_BOOL LOC12;
				LOC12 = 0;
				LOC12 = isrange_222077((*n).kindU.S6.Sons->data[i_460166]);
				if (!LOC12) goto LA13;
				checksonslen_251209((*n).kindU.S6.Sons->data[i_460166], 3);
				asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[i_460166]).kindU.S6.Sons->data[1], semexprwithtype_416011(c, (*(*n).kindU.S6.Sons->data[i_460166]).kindU.S6.Sons->data[1], 0));
				asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[i_460166]).kindU.S6.Sons->data[2], semexprwithtype_416011(c, (*(*n).kindU.S6.Sons->data[i_460166]).kindU.S6.Sons->data[2], 0));
				{
					if (!(typ == NIM_NIL)) goto LA17;
					typ = skiptypes_192793((*(*(*n).kindU.S6.Sons->data[i_460166]).kindU.S6.Sons->data[1]).Typ, 8423424);
				}
				LA17: ;
				asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[i_460166]).Typ, (*(*(*n).kindU.S6.Sons->data[i_460166]).kindU.S6.Sons->data[2]).Typ);
			}
			goto LA10;
			LA13: ;
			{
				if (!((*(*n).kindU.S6.Sons->data[i_460166]).Kind == ((NU8) 44))) goto LA20;
				{
					if (!(typ == NIM_NIL)) goto LA24;
					typ = skiptypes_192793((*(*(*n).kindU.S6.Sons->data[i_460166]).kindU.S6.Sons->data[0]).Typ, 8423424);
				}
				LA24: ;
			}
			goto LA10;
			LA20: ;
			{
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_460166], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[i_460166], 0));
				{
					if (!(typ == NIM_NIL)) goto LA29;
					typ = skiptypes_192793((*(*n).kindU.S6.Sons->data[i_460166]).Typ, 8423424);
				}
				LA29: ;
			}
			LA10: ;
			res_460679 += 1;
		} LA9: ;
		{
			NIM_BOOL LOC33;
			ttype188837* LOC36;
			LOC33 = 0;
			LOC33 = isordinaltype_223071(typ);
			if (!!(LOC33)) goto LA34;
			localerror_165571((*n).Info, ((NU16) 74), ((NimStringDesc*) &TMP2675));
			LOC36 = 0;
			LOC36 = getsystype_242024(((NU8) 31));
			typ = makerangetype_251156(c, 0, 65535, (*n).Info, LOC36);
		}
		goto LA31;
		LA34: ;
		{
			NI64 LOC38;
			ttype188837* LOC41;
			LOC38 = 0;
			LOC38 = lengthord_223010(typ);
			if (!(65536 < LOC38)) goto LA39;
			LOC41 = 0;
			LOC41 = getsystype_242024(((NU8) 31));
			typ = makerangetype_251156(c, 0, 65535, (*n).Info, LOC41);
		}
		goto LA31;
		LA39: ;
		LA31: ;
		addsonskipintlit_242461((*result).Typ, typ);
		i_460539 = 0;
		HEX3Atmp_460682 = 0;
		LOC42 = 0;
		LOC42 = sonslen_189181(n);
		HEX3Atmp_460682 = (NI32)(LOC42 - 1);
		res_460684 = 0;
		while (1) {
			tnode188803* m;
			if (!(res_460684 <= HEX3Atmp_460682)) goto LA43;
			i_460539 = res_460684;
			m = 0;
			{
				NIM_BOOL LOC46;
				tnode188803* LOC49;
				tnode188803* LOC50;
				LOC46 = 0;
				LOC46 = isrange_222077((*n).kindU.S6.Sons->data[i_460539]);
				if (!LOC46) goto LA47;
				m = newnodei_189099(((NU8) 44), (*(*n).kindU.S6.Sons->data[i_460539]).Info);
				LOC49 = 0;
				LOC49 = fitnode_416037(c, typ, (*(*n).kindU.S6.Sons->data[i_460539]).kindU.S6.Sons->data[1]);
				addson_189207(m, LOC49);
				LOC50 = 0;
				LOC50 = fitnode_416037(c, typ, (*(*n).kindU.S6.Sons->data[i_460539]).kindU.S6.Sons->data[2]);
				addson_189207(m, LOC50);
			}
			goto LA44;
			LA47: ;
			{
				if (!((*(*n).kindU.S6.Sons->data[i_460539]).Kind == ((NU8) 44))) goto LA52;
				m = (*n).kindU.S6.Sons->data[i_460539];
			}
			goto LA44;
			LA52: ;
			{
				m = fitnode_416037(c, typ, (*n).kindU.S6.Sons->data[i_460539]);
			}
			LA44: ;
			addson_189207(result, m);
			res_460684 += 1;
		} LA43: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semlambda_416049)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	tsym188833* s;
	tscope188827* LOC13;
	tnode188803* gp;
	result = 0;
	result = semprocannotation_446024(c, n);
	{
		if (!!((result == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = n;
	checksonslen_251209(n, 7);
	s = 0;
	{
		tnode188803* LOC7;
		tsym188833* LOC10;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_189694(n, 0);
		if (!!(((*LOC7).Kind == ((NU8) 3)))) goto LA8;
		LOC10 = 0;
		LOC10 = getcurrowner_250215();
		s = newsym_189053(((NU8) 12), idanon_167476, LOC10, (*n).Info);
		asgnRefNoCycle((void**) &(*s).Ast, n);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], newsymnode_189095(s));
	}
	goto LA5;
	LA8: ;
	{
		tnode188803* LOC12;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_189694(n, 0);
		s = (*LOC12).kindU.S4.Sym;
	}
	LA5: ;
	pushowner_250218(s);
	LOC13 = 0;
	LOC13 = openscope_252167(c);
	gp = 0;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)))) goto LA16;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[2], semgenericparamlist_429851(c, (*n).kindU.S6.Sons->data[2], NIM_NIL));
		gp = (*n).kindU.S6.Sons->data[2];
	}
	goto LA14;
	LA16: ;
	{
		gp = newnodei_189099(((NU8) 75), (*n).Info);
	}
	LA14: ;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[3]).Kind == ((NU8) 1)))) goto LA21;
		semparamlist_416066(c, (*n).kindU.S6.Sons->data[3], gp, s);
		{
			NIM_BOOL LOC25;
			NI LOC26;
			LOC25 = 0;
			LOC26 = 0;
			LOC26 = sonslen_189181(gp);
			LOC25 = (0 < LOC26);
			if (!(LOC25)) goto LA27;
			LOC25 = ((*(*n).kindU.S6.Sons->data[2]).Kind == ((NU8) 1));
			LA27: ;
			if (!LOC25) goto LA28;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[2], gp);
		}
		LA28: ;
	}
	goto LA19;
	LA21: ;
	{
		asgnRefNoCycle((void**) &(*s).Typ, newtypes_250180(((NU8) 25), c));
		rawaddson_193092((*s).Typ, NIM_NIL);
	}
	LA19: ;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[4]).Kind == ((NU8) 1)))) goto LA33;
		pragma_267073(c, s, (*n).kindU.S6.Sons->data[4], TMP3069);
	}
	LA33: ;
	(*s).Options = goptions_137108;
	{
		if (!!(((*(*n).kindU.S6.Sons->data[6]).Kind == ((NU8) 1)))) goto LA37;
		{
			if (!(((*s).Flags &(1<<((((NU8) 5))&31)))!=0)) goto LA41;
			localerror_165571((*(*n).kindU.S6.Sons->data[6]).Info, ((NU16) 137), (*(*s).Name).S);
		}
		LA41: ;
		{
			NIM_BOOL LOC45;
			NI LOC46;
			NIM_BOOL LOC48;
			NI LOC49;
			tnode188803* LOC51;
			tnode188803* sembody;
			tnode188803* LOC54;
			LOC45 = 0;
			LOC46 = 0;
			LOC46 = len_189264(gp);
			LOC45 = (LOC46 == 0);
			if (LOC45) goto LA47;
			LOC48 = 0;
			LOC49 = 0;
			LOC49 = len_189264(gp);
			LOC48 = (LOC49 == 1);
			if (!(LOC48)) goto LA50;
			LOC51 = 0;
			LOC51 = HEX5BHEX5D_189694(gp, 0);
			LOC48 = (((*(*LOC51).Typ).Flags &(1<<((((NU8) 10))&31)))!=0);
			LA50: ;
			LOC45 = LOC48;
			LA47: ;
			if (!LOC45) goto LA52;
			pushproccon_250317(c, s);
			addresult_445870(c, (*(*s).Typ).Sons->data[0], (*n).Info, ((NU8) 12));
			LOC54 = 0;
			LOC54 = semprocbody_416032(c, (*n).kindU.S6.Sons->data[6]);
			sembody = hlobody_418063(c, LOC54);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], transformbody_378285((*c).Module, sembody, s));
			addresultnode_445911(c, n);
			popproccon_250358(c);
		}
		goto LA43;
		LA52: ;
		{
			if (!!(((flags &(1<<((((NU8) 7))&15)))!=0))) goto LA56;
			localerror_165571((*n).Info, ((NU16) 227), ((NimStringDesc*) &TMP2675));
		}
		goto LA43;
		LA56: ;
		LA43: ;
		sideeffectscheck_419186(c, s);
	}
	goto LA35;
	LA37: ;
	{
		localerror_165571((*n).Info, ((NU16) 138), (*(*s).Name).S);
	}
	LA35: ;
	closescope_252179(c);
	popowner_250222();
	asgnRefNoCycle((void**) &(*result).Typ, (*s).Typ);
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, iscastable_450423)(ttype188837* dst, ttype188837* src) {
	NIM_BOOL result;
	NI64 ds;
	NI64 ss;
	result = 0;
	ds = 0;
	ss = 0;
	ds = computesize_223154(dst);
	ss = computesize_223154(src);
	{
		if (!(ds < 0)) goto LA3;
		result = NIM_FALSE;
	}
	goto LA1;
	LA3: ;
	{
		if (!(ss < 0)) goto LA6;
		result = NIM_FALSE;
	}
	goto LA1;
	LA6: ;
	{
		NIM_BOOL LOC9;
		NIM_BOOL LOC10;
		ttype188837* LOC12;
		ttype188837* LOC14;
		LOC9 = 0;
		LOC10 = 0;
		LOC10 = (ss <= ds);
		if (LOC10) goto LA11;
		LOC12 = 0;
		LOC12 = skiptypes_192793(dst, IL64(211106232576256));
		LOC10 = ((*LOC12).Kind == ((NU8) 1) || (*LOC12).Kind == ((NU8) 14) || (*LOC12).Kind == ((NU8) 2) || (*LOC12).Kind >= ((NU8) 31) && (*LOC12).Kind <= ((NU8) 44));
		LA11: ;
		LOC9 = LOC10;
		if (LOC9) goto LA13;
		LOC14 = 0;
		LOC14 = skiptypes_192793(src, IL64(211106232576000));
		LOC9 = ((*LOC14).Kind == ((NU8) 1) || (*LOC14).Kind == ((NU8) 14) || (*LOC14).Kind == ((NU8) 2) || (*LOC14).Kind >= ((NU8) 31) && (*LOC14).Kind <= ((NU8) 44));
		LA13: ;
		result = LOC9;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semcast_450736)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* LOC5;
	tnode188803* LOC6;
	result = 0;
	{
		if (!((gglobaloptions_137111 &(1<<((((NU8) 6))&31)))!=0)) goto LA3;
		localerror_165571((*n).Info, ((NU16) 91), ((NimStringDesc*) &TMP2675));
	}
	LA3: ;
	checksonslen_251209(n, 2);
	result = newnodei_189099(((NU8) 61), (*n).Info);
	asgnRefNoCycle((void**) &(*result).Typ, semtypenode_416055(c, (*n).kindU.S6.Sons->data[0], NIM_NIL));
	LOC5 = 0;
	LOC5 = copytree_189237((*n).kindU.S6.Sons->data[0]);
	addson_189207(result, LOC5);
	LOC6 = 0;
	LOC6 = semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[1], 0);
	addson_189207(result, LOC6);
	{
		NIM_BOOL LOC9;
		NimStringDesc* LOC12;
		LOC9 = 0;
		LOC9 = iscastable_450423((*result).Typ, (*(*result).kindU.S6.Sons->data[1]).Typ);
		if (!!(LOC9)) goto LA10;
		LOC12 = 0;
		LOC12 = typetostring_223020((*result).Typ, ((NU8) 0));
		localerror_165571((*result).Info, ((NU16) 92), LOC12);
	}
	LA10: ;
	return result;
}

static N_INLINE(void, semdestructorcheck_439541)(tcontext250019* c, tnode188803* n, NU16 flags) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((flags &(1<<((((NU8) 5))&15)))!=0));
		if (!(LOC3)) goto LA4;
		LOC3 = ((*n).Kind >= ((NU8) 26) && (*n).Kind <= ((NU8) 32) || (*n).Kind == ((NU8) 38));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			ttype188837* LOC9;
			LOC9 = 0;
			LOC9 = instantiatedestructor_438219(c, (*n).Typ);
			if (!!((LOC9 == NIM_NIL))) goto LA10;
			localerror_165571((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP3070));
		}
		LA10: ;
	}
	LA5: ;
}

N_NIMCALL(tnode188803*, semexprbranch_439807)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = semexpr_416003(c, n, 0);
	{
		if (!!(((*result).Typ == NIM_NIL))) goto LA3;
		semprocvarcheck_438120(c, result);
		{
			if (!((*(*result).Typ).Kind == ((NU8) 23))) goto LA7;
			result = newderef_439802(result);
		}
		LA7: ;
		semdestructorcheck_439541(c, result, 0);
	}
	LA3: ;
	return result;
}

N_NIMCALL(tnode188803*, semexprbranchscope_439841)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tscope188827* LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	result = semexprbranch_439807(c, n);
	closescope_252179(c);
	return result;
}

N_NIMCALL(tnode188803*, semif_440088)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	ttype188837* typ;
	NIM_BOOL haselse;
	NI i_440107;
	NI HEX3Atmp_440541;
	NI LOC1;
	NI res_440543;
	result = 0;
	result = n;
	typ = commontypebegin_416199;
	haselse = NIM_FALSE;
	i_440107 = 0;
	HEX3Atmp_440541 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_440541 = (NI32)(LOC1 - 1);
	res_440543 = 0;
	while (1) {
		tnode188803* it;
		if (!(res_440543 <= HEX3Atmp_440541)) goto LA2;
		i_440107 = res_440543;
		it = (*n).kindU.S6.Sons->data[i_440107];
		{
			NI LOC5;
			tscope188827* LOC8;
			tnode188803* LOC9;
			LOC5 = 0;
			LOC5 = len_189264(it);
			if (!(LOC5 == 2)) goto LA6;
			LOC8 = 0;
			LOC8 = openscope_252167(c);
			LOC9 = 0;
			LOC9 = semexprwithtype_416011(c, (*it).kindU.S6.Sons->data[0], 0);
			asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[0], forcebool_422446(c, LOC9));
			asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[1], semexprbranch_439807(c, (*it).kindU.S6.Sons->data[1]));
			typ = commontype_416202(typ, (*(*it).kindU.S6.Sons->data[1]).Typ);
			closescope_252179(c);
		}
		goto LA3;
		LA6: ;
		{
			NI LOC11;
			LOC11 = 0;
			LOC11 = len_189264(it);
			if (!(LOC11 == 1)) goto LA12;
			haselse = NIM_TRUE;
			asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[0], semexprbranchscope_439841(c, (*it).kindU.S6.Sons->data[0]));
			typ = commontype_416202(typ, (*(*it).kindU.S6.Sons->data[0]).Typ);
		}
		goto LA3;
		LA12: ;
		{
			illformedast_251203(it);
		}
		LA3: ;
		res_440543 += 1;
	} LA2: ;
	{
		NIM_BOOL LOC17;
		NIM_BOOL LOC18;
		tnode188803* it_440494;
		NI i_440546;
		NI HEX3Atmp_440548;
		NI LOC23;
		NI res_440550;
		LOC17 = 0;
		LOC18 = 0;
		LOC18 = isemptytype_195210(typ);
		if (LOC18) goto LA19;
		LOC18 = ((*typ).Kind == ((NU8) 5));
		LA19: ;
		LOC17 = LOC18;
		if (LOC17) goto LA20;
		LOC17 = !(haselse);
		LA20: ;
		if (!LOC17) goto LA21;
		it_440494 = 0;
		i_440546 = 0;
		HEX3Atmp_440548 = 0;
		LOC23 = 0;
		LOC23 = len_189264(n);
		HEX3Atmp_440548 = LOC23 - 1;
		res_440550 = 0;
		while (1) {
			tnode188803* LOC25;
			if (!(res_440550 <= HEX3Atmp_440548)) goto LA24;
			i_440546 = res_440550;
			it_440494 = (*n).kindU.S6.Sons->data[i_440546];
			LOC25 = 0;
			LOC25 = lastson_189189(it_440494);
			discardcheck_439985(c, LOC25);
			res_440550 += 1;
		} LA24: ;
		(*result).Kind = ((NU8) 92);
		{
			if (!(typ == enforcevoidcontext_437695)) goto LA28;
			asgnRefNoCycle((void**) &(*result).Typ, enforcevoidcontext_437695);
		}
		LA28: ;
	}
	goto LA15;
	LA21: ;
	{
		tnode188803* it_440511;
		NI i_440552;
		NI HEX3Atmp_440554;
		NI LOC31;
		NI res_440556;
		it_440511 = 0;
		i_440552 = 0;
		HEX3Atmp_440554 = 0;
		LOC31 = 0;
		LOC31 = len_189264(n);
		HEX3Atmp_440554 = LOC31 - 1;
		res_440556 = 0;
		while (1) {
			NI j;
			NI LOC33;
			if (!(res_440556 <= HEX3Atmp_440554)) goto LA32;
			i_440552 = res_440556;
			it_440511 = (*n).kindU.S6.Sons->data[i_440552];
			LOC33 = 0;
			LOC33 = len_189264(it_440511);
			j = (NI32)(LOC33 - 1);
			asgnRefNoCycle((void**) &(*it_440511).kindU.S6.Sons->data[j], fitnode_416037(c, typ, (*it_440511).kindU.S6.Sons->data[j]));
			res_440556 += 1;
		} LA32: ;
		(*result).Kind = ((NU8) 48);
		asgnRefNoCycle((void**) &(*result).Typ, typ);
	}
	LA15: ;
	return result;
}

N_NIMCALL(tnode188803*, semtableconstr_460689)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NI lastkey;
	NI i_460705;
	NI HEX3Atmp_460763;
	NI LOC1;
	NI res_460765;
	result = 0;
	result = newnodei_189099(((NU8) 41), (*n).Info);
	lastkey = 0;
	i_460705 = 0;
	HEX3Atmp_460763 = 0;
	LOC1 = 0;
	LOC1 = len_189264(n);
	HEX3Atmp_460763 = (NI32)(LOC1 - 1);
	res_460765 = 0;
	while (1) {
		tnode188803* x;
		if (!(res_460765 <= HEX3Atmp_460763)) goto LA2;
		i_460705 = res_460765;
		x = (*n).kindU.S6.Sons->data[i_460705];
		{
			NIM_BOOL LOC5;
			NI LOC7;
			NI j_460742;
			NI HEX3Atmp_460759;
			NI res_460761;
			tnode188803* pair;
			tnode188803* LOC12;
			tnode188803* LOC13;
			LOC5 = 0;
			LOC5 = ((*x).Kind == ((NU8) 34));
			if (!(LOC5)) goto LA6;
			LOC7 = 0;
			LOC7 = sonslen_189181(x);
			LOC5 = (LOC7 == 2);
			LA6: ;
			if (!LOC5) goto LA8;
			j_460742 = 0;
			HEX3Atmp_460759 = 0;
			HEX3Atmp_460759 = (NI32)(i_460705 - 1);
			res_460761 = lastkey;
			while (1) {
				tnode188803* pair;
				tnode188803* LOC11;
				if (!(res_460761 <= HEX3Atmp_460759)) goto LA10;
				j_460742 = res_460761;
				pair = newnodei_189099(((NU8) 37), (*x).Info);
				add_189390(pair, (*n).kindU.S6.Sons->data[j_460742]);
				LOC11 = 0;
				LOC11 = HEX5BHEX5D_189694(x, 1);
				add_189390(pair, LOC11);
				add_189390(result, pair);
				res_460761 += 1;
			} LA10: ;
			pair = newnodei_189099(((NU8) 37), (*x).Info);
			LOC12 = 0;
			LOC12 = HEX5BHEX5D_189694(x, 0);
			add_189390(pair, LOC12);
			LOC13 = 0;
			LOC13 = HEX5BHEX5D_189694(x, 1);
			add_189390(pair, LOC13);
			add_189390(result, pair);
			lastkey = (NI32)(i_460705 + 1);
		}
		LA8: ;
		res_460765 += 1;
	} LA2: ;
	{
		NI LOC16;
		LOC16 = 0;
		LOC16 = len_189264(n);
		if (!!((lastkey == LOC16))) goto LA17;
		illformedast_251203(n);
	}
	LA17: ;
	result = semexpr_416003(c, result, 0);
	return result;
}

N_NIMCALL(tnode188803*, semstaticexpr_454422)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* a;
	result = 0;
	a = semexpr_416003(c, (*n).kindU.S6.Sons->data[0], 0);
	result = evalstaticexpr_410429((*c).Module, a, (*(*c).P).Owner);
	{
		NimStringDesc* LOC5;
		if (!result == 0) goto LA3;
		LOC5 = 0;
		LOC5 = rendertree_211051(n, 0);
		localerror_165571((*n).Info, ((NU16) 208), LOC5);
		result = emptynode_189727;
	}
	goto LA1;
	LA3: ;
	{
		result = fixuptypeaftereval_416801(c, result, a);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semblock_462063)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tscope188827* LOC1;
	result = 0;
	result = n;
	(*(*c).P).Nestedblockcounter += 1;
	checksonslen_251209(n, 2);
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	{
		tsym188833* labl;
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA4;
		labl = newsymg_416512(((NU8) 22), (*n).kindU.S6.Sons->data[0], c);
		{
			if (!!((((*labl).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA8;
			adddecl_252550(c, labl);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], newsymnode_190723(labl, (*(*n).kindU.S6.Sons->data[0]).Info));
		}
		LA8: ;
		suggestsym_362857((*n).kindU.S6.Sons->data[0], labl);
	}
	LA4: ;
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], semexpr_416003(c, (*n).kindU.S6.Sons->data[1], 0));
	asgnRefNoCycle((void**) &(*n).Typ, (*(*n).kindU.S6.Sons->data[1]).Typ);
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = isemptytype_195210((*n).Typ);
		if (!LOC12) goto LA13;
		(*n).Kind = ((NU8) 111);
	}
	goto LA10;
	LA13: ;
	{
		(*n).Kind = ((NU8) 126);
	}
	LA10: ;
	closescope_252179(c);
	(*(*c).P).Nestedblockcounter -= 1;
	return result;
}

N_NIMCALL(tnode188803*, semtry_441221)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	ttype188837* typ_441242;
	tintset185047 check;
	NI i_441298;
	NI HEX3Atmp_441761;
	NI LOC1;
	NI res_441763;
	result = 0;
	result = n;
	(*(*c).P).Intrystmt += 1;
	checkminsonslen_251215(n, 2);
	typ_441242 = commontypebegin_416199;
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semexprbranchscope_439841(c, (*n).kindU.S6.Sons->data[0]));
	typ_441242 = commontype_416202(typ_441242, (*(*n).kindU.S6.Sons->data[0]).Typ);
	chckNil((void*)&check);
	memset((void*)&check, 0, sizeof(check));
	initintset_185918(&check);
	i_441298 = 0;
	HEX3Atmp_441761 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_441761 = (NI32)(LOC1 - 1);
	res_441763 = 1;
	while (1) {
		tnode188803* a;
		NI length;
		if (!(res_441763 <= HEX3Atmp_441761)) goto LA2;
		i_441298 = res_441763;
		a = (*n).kindU.S6.Sons->data[i_441298];
		checkminsonslen_251215(a, 1);
		length = sonslen_189181(a);
		{
			NI j_441438;
			NI HEX3Atmp_441757;
			NI res_441759;
			if (!((*a).Kind == ((NU8) 87))) goto LA5;
			{
				NIM_BOOL LOC9;
				tslice78892 LOC13;
				LOC9 = 0;
				LOC9 = (length == 2);
				if (!(LOC9)) goto LA10;
				LOC9 = ((*(*a).kindU.S6.Sons->data[0]).Kind == ((NU8) 41));
				LA10: ;
				if (!LOC9) goto LA11;
				LOC13 = HEX2EHEX2E_86221(0, 0);
				HEX5BHEX5DHEX3D_420606(&(*a).kindU.S6.Sons, LOC13, (*(*a).kindU.S6.Sons->data[0]).kindU.S6.Sons->data, (*(*a).kindU.S6.Sons->data[0]).kindU.S6.Sons->Sup.len);
				length = sonslen_189181(a);
			}
			LA11: ;
			j_441438 = 0;
			HEX3Atmp_441757 = 0;
			HEX3Atmp_441757 = (NI32)(length - 2);
			res_441759 = 0;
			while (1) {
				ttype188837* typ;
				if (!(res_441759 <= HEX3Atmp_441757)) goto LA14;
				j_441438 = res_441759;
				typ = semtypenode_416055(c, (*a).kindU.S6.Sons->data[j_441438], NIM_NIL);
				{
					if (!((*typ).Kind == ((NU8) 22))) goto LA17;
					typ = (*typ).Sons->data[0];
				}
				LA17: ;
				{
					if (!!(((*typ).Kind == ((NU8) 17)))) goto LA21;
					localerror_165571((*(*a).kindU.S6.Sons->data[j_441438]).Info, ((NU16) 112), ((NimStringDesc*) &TMP2675));
				}
				LA21: ;
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[j_441438], newnodei_189099(((NU8) 4), (*(*a).kindU.S6.Sons->data[j_441438]).Info));
				asgnRefNoCycle((void**) &(*(*a).kindU.S6.Sons->data[j_441438]).Typ, typ);
				{
					NIM_BOOL LOC25;
					LOC25 = 0;
					LOC25 = containsorincl_185888(&check, (*typ).Sup.Id);
					if (!LOC25) goto LA26;
					localerror_165571((*(*a).kindU.S6.Sons->data[j_441438]).Info, ((NU16) 35), ((NimStringDesc*) &TMP2675));
				}
				LA26: ;
				res_441759 += 1;
			} LA14: ;
		}
		goto LA3;
		LA5: ;
		{
			if (!!(((*a).Kind == ((NU8) 106)))) goto LA29;
			illformedast_251203(n);
		}
		goto LA3;
		LA29: ;
		LA3: ;
		asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[(NI32)(length - 1)], semexprbranchscope_439841(c, (*a).kindU.S6.Sons->data[(NI32)(length - 1)]));
		typ_441242 = commontype_416202(typ_441242, (*(*a).kindU.S6.Sons->data[(NI32)(length - 1)]).Typ);
		res_441763 += 1;
	} LA2: ;
	(*(*c).P).Intrystmt -= 1;
	{
		NIM_BOOL LOC33;
		NI i_441643;
		NI HEX3Atmp_441765;
		NI LOC37;
		NI res_441767;
		LOC33 = 0;
		LOC33 = isemptytype_195210(typ_441242);
		if (LOC33) goto LA34;
		LOC33 = ((*typ_441242).Kind == ((NU8) 5));
		LA34: ;
		if (!LOC33) goto LA35;
		discardcheck_439985(c, (*n).kindU.S6.Sons->data[0]);
		i_441643 = 0;
		HEX3Atmp_441765 = 0;
		LOC37 = 0;
		LOC37 = len_189264(n);
		HEX3Atmp_441765 = (NI32)(LOC37 - 1);
		res_441767 = 1;
		while (1) {
			tnode188803* LOC39;
			if (!(res_441767 <= HEX3Atmp_441765)) goto LA38;
			i_441643 = res_441767;
			LOC39 = 0;
			LOC39 = lastson_189189((*n).kindU.S6.Sons->data[i_441643]);
			discardcheck_439985(c, LOC39);
			res_441767 += 1;
		} LA38: ;
		{
			if (!(typ_441242 == enforcevoidcontext_437695)) goto LA42;
			asgnRefNoCycle((void**) &(*result).Typ, enforcevoidcontext_437695);
		}
		LA42: ;
	}
	goto LA31;
	LA35: ;
	{
		NI i_441712;
		NI HEX3Atmp_441769;
		NI LOC45;
		NI res_441771;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], fitnode_416037(c, typ_441242, (*n).kindU.S6.Sons->data[0]));
		i_441712 = 0;
		HEX3Atmp_441769 = 0;
		LOC45 = 0;
		LOC45 = len_189264(n);
		HEX3Atmp_441769 = (NI32)(LOC45 - 1);
		res_441771 = 1;
		while (1) {
			tnode188803* it;
			NI j;
			NI LOC47;
			if (!(res_441771 <= HEX3Atmp_441769)) goto LA46;
			i_441712 = res_441771;
			it = (*n).kindU.S6.Sons->data[i_441712];
			LOC47 = 0;
			LOC47 = len_189264(it);
			j = (NI32)(LOC47 - 1);
			asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[j], fitnode_416037(c, typ_441242, (*it).kindU.S6.Sons->data[j]));
			res_441771 += 1;
		} LA46: ;
		asgnRefNoCycle((void**) &(*result).Typ, typ_441242);
	}
	LA31: ;
	return result;
}

N_NIMCALL(NIM_BOOL, usesresult_449002)(tnode188803* n) {
	NIM_BOOL result;
	result = 0;
	{
		if (!!(((*n).Kind >= ((NU8) 51) && (*n).Kind <= ((NU8) 52) || (*n).Kind >= ((NU8) 79) && (*n).Kind <= ((NU8) 81) || (*n).Kind == ((NU8) 84) || (*n).Kind == ((NU8) 114) || (*n).Kind == ((NU8) 125)))) goto LA3;
		{
			NIM_BOOL LOC7;
			NIM_BOOL LOC10;
			LOC7 = 0;
			LOC7 = isatom_195186(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) 108))) goto LA13;
			result = NIM_TRUE;
		}
		goto LA5;
		LA13: ;
		{
			tnode188803* c_449078;
			NI i_449080;
			NI HEX3Atmp_449082;
			NI LOC16;
			NI res_449084;
			c_449078 = 0;
			i_449080 = 0;
			HEX3Atmp_449082 = 0;
			LOC16 = 0;
			LOC16 = len_189264(n);
			HEX3Atmp_449082 = LOC16 - 1;
			res_449084 = 0;
			while (1) {
				if (!(res_449084 <= HEX3Atmp_449082)) goto LA17;
				i_449080 = res_449084;
				c_449078 = (*n).kindU.S6.Sons->data[i_449080];
				{
					NIM_BOOL LOC20;
					LOC20 = 0;
					LOC20 = usesresult_449002(c_449078);
					if (!LOC20) goto LA21;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA21: ;
				res_449084 += 1;
			} LA17: ;
		}
		LA5: ;
	}
	LA3: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, insertdestructors_439274)(tcontext250019* c, tnode188803* varsection, TY439278* Result) {
	NI totalvars;
	NI j_439295;
	NI HEX3Atmp_439534;
	NI res_439536;
	totalvars = sonslen_189181(varsection);
	j_439295 = 0;
	HEX3Atmp_439534 = 0;
	HEX3Atmp_439534 = (NI32)(totalvars - 1);
	res_439536 = 0;
	while (1) {
		if (!(res_439536 <= HEX3Atmp_439534)) goto LA1;
		j_439295 = res_439536;
		{
			tnode188803* varid;
			tnode188803* LOC3;
			ttype188837* vartyp;
			tlineinfo163527 info;
			ttype188837* destructablet;
			LOC3 = 0;
			LOC3 = HEX5BHEX5D_189694(varsection, j_439295);
			varid = HEX5BHEX5D_189694(LOC3, 0);
			vartyp = (*(*varid).kindU.S4.Sym).Typ;
			info = (*varid).Info;
			{
				NIM_BOOL LOC6;
				LOC6 = 0;
				LOC6 = (vartyp == NIM_NIL);
				if (LOC6) goto LA7;
				LOC6 = (((*(*varid).kindU.S4.Sym).Flags &(1<<((((NU8) 3))&31)))!=0);
				LA7: ;
				if (!LOC6) goto LA8;
				goto LA2;
			}
			LA8: ;
			destructablet = instantiatedestructor_438219(c, vartyp);
			{
				tnode188803* trystmt;
				tnodeseq188797* LOC26;
				TY207692 LOC27;
				tnodeseq188797* LOC28;
				TY251116 LOC29;
				tnode188803* LOC30;
				tnode188803* LOC31;
				if (!!((destructablet == NIM_NIL))) goto LA12;
				trystmt = newnodei_189099(((NU8) 105), info);
				{
					tnode188803* remainingvars;
					tslice78892 LOC18;
					TY439278 LOC19;
					tnode188803* outer;
					tnode188803* inner;
					if (!(j_439295 < (NI32)(totalvars - 1))) goto LA16;
					remainingvars = newnodei_189099((*varsection).Kind, info);
					LOC18 = HEX2EHEX2E_86221((NI32)(j_439295 + 1), -1);
					asgnRefNoCycle((void**) &(*remainingvars).kindU.S6.Sons, HEX5BHEX5D_438583((*varsection).kindU.S6.Sons, LOC18));
					memset((void*)&LOC19, 0, sizeof(LOC19));
					insertdestructors_439274(c, remainingvars, &LOC19);
					outer = LOC19.Field0;
					inner = LOC19.Field1;
					{
						if (!!((outer == NIM_NIL))) goto LA22;
						addson_189207(trystmt, outer);
						unsureAsgnRef((void**) &(*Result).Field1, inner);
					}
					goto LA20;
					LA22: ;
					{
						unsureAsgnRef((void**) &(*Result).Field1, newnodei_189099(((NU8) 114), info));
						addson_189207((*Result).Field1, remainingvars);
						addson_189207(trystmt, (*Result).Field1);
					}
					LA20: ;
				}
				goto LA14;
				LA16: ;
				{
					unsureAsgnRef((void**) &(*Result).Field1, newnodei_189099(((NU8) 114), info));
					addson_189207(trystmt, (*Result).Field1);
				}
				LA14: ;
				LOC26 = 0;
				LOC26 = (tnodeseq188797*) newSeq((&NTI188797), 1);
				memset((void*)LOC27, 0, sizeof(LOC27));
				LOC28 = 0;
				LOC28 = (tnodeseq188797*) newSeq((&NTI188797), 2);
				memset((void*)LOC29, 0, sizeof(LOC29));
				LOC29[0] = usesym_362981((*destructablet).Destructor);
				LOC29[1] = usesym_362981((*varid).kindU.S4.Sym);
				asgnRefNoCycle((void**) &LOC28->data[0], LOC29[0]);
				asgnRefNoCycle((void**) &LOC28->data[1], LOC29[1]);
				LOC30 = 0;
				LOC30 = newnode_191003(((NU8) 27), info, LOC28, NIM_NIL);
				LOC27[0] = semstmt_416061(c, LOC30);
				asgnRefNoCycle((void**) &LOC26->data[0], LOC27[0]);
				LOC31 = 0;
				LOC31 = newnode_191003(((NU8) 106), info, LOC26, NIM_NIL);
				addson_189207(trystmt, LOC31);
				unsureAsgnRef((void**) &(*Result).Field0, newnodei_189099(((NU8) 114), info));
				(*varsection).kindU.S6.Sons = (tnodeseq188797*) setLengthSeq(&((*varsection).kindU.S6.Sons)->Sup, sizeof(tnode188803*), (NI32)(j_439295 + 1));
				addson_189207((*Result).Field0, varsection);
				addson_189207((*Result).Field0, trystmt);
				goto BeforeRet;
			}
			LA12: ;
		} LA2: ;
		res_439536 += 1;
	} LA1: ;
	BeforeRet: ;
}

N_NIMCALL(tnode188803*, semstmtlist_449087)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	NI length;
	NIM_BOOL voidcontext;
	NI last;
	NI i_449110;
	NI HEX3Atmp_449806;
	NI res_449808;
	result = 0;
	result = n;
	(*result).Kind = ((NU8) 114);
	length = sonslen_189181(n);
	voidcontext = NIM_FALSE;
	last = (NI32)(length - 1);
	i_449110 = 0;
	HEX3Atmp_449806 = 0;
	HEX3Atmp_449806 = (NI32)(length - 1);
	res_449808 = 0;
	while (1) {
		if (!(res_449808 <= HEX3Atmp_449806)) goto LA1;
		i_449110 = res_449808;
		switch ((*(*n).kindU.S6.Sons->data[i_449110]).Kind) {
		case ((NU8) 106):
		case ((NU8) 87):
		{
			tnode188803* trystmt;
			tnode188803* body;
			trystmt = newnodei_189099(((NU8) 105), (*(*n).kindU.S6.Sons->data[i_449110]).Info);
			body = newnodei_189099(((NU8) 114), (*(*n).kindU.S6.Sons->data[i_449110]).Info);
			{
				NI LOC5;
				tslice78892 LOC8;
				LOC5 = 0;
				LOC5 = sonslen_189181(n);
				if (!(i_449110 < (NI32)(LOC5 - 1))) goto LA6;
				LOC8 = HEX2EHEX2E_86221((NI32)(i_449110 + 1), -1);
				asgnRefNoCycle((void**) &(*body).kindU.S6.Sons, HEX5BHEX5D_438583((*n).kindU.S6.Sons, LOC8));
			}
			LA6: ;
			addson_189207(trystmt, body);
			addson_189207(trystmt, (*n).kindU.S6.Sons->data[i_449110]);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_449110], semtry_441221(c, trystmt));
			(*n).kindU.S6.Sons = (tnodeseq188797*) setLengthSeq(&((*n).kindU.S6.Sons)->Sup, sizeof(tnode188803*), (NI32)(i_449110 + 1));
			goto BeforeRet;
		}
		break;
		default:
		{
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_449110], semexpr_416003(c, (*n).kindU.S6.Sons->data[i_449110], 0));
			{
				NIM_BOOL LOC12;
				NIM_BOOL LOC13;
				tnode188803* LOC15;
				tnode188803* LOC17;
				tnode188803* verdict;
				tnode188803* LOC20;
				LOC12 = 0;
				LOC13 = 0;
				LOC13 = (0 < (*c).Intypeclass);
				if (!(LOC13)) goto LA14;
				LOC15 = 0;
				LOC15 = HEX5BHEX5D_189694(n, i_449110);
				LOC13 = !(((*LOC15).Typ == NIM_NIL));
				LA14: ;
				LOC12 = LOC13;
				if (!(LOC12)) goto LA16;
				LOC17 = 0;
				LOC17 = HEX5BHEX5D_189694(n, i_449110);
				LOC12 = ((*(*LOC17).Typ).Kind == ((NU8) 1));
				LA16: ;
				if (!LOC12) goto LA18;
				LOC20 = 0;
				LOC20 = HEX5BHEX5D_189694(n, i_449110);
				verdict = semconstexpr_417095(c, LOC20);
				{
					if (!((*verdict).kindU.S1.Intval == 0)) goto LA23;
					localerror_165578((*result).Info, ((NimStringDesc*) &TMP3071));
				}
				LA23: ;
			}
			LA18: ;
			{
				NIM_BOOL LOC27;
				LOC27 = 0;
				LOC27 = ((*(*n).kindU.S6.Sons->data[i_449110]).Typ == enforcevoidcontext_437695);
				if (LOC27) goto LA28;
				LOC27 = usesresult_449002((*n).kindU.S6.Sons->data[i_449110]);
				LA28: ;
				if (!LOC27) goto LA29;
				voidcontext = NIM_TRUE;
				asgnRefNoCycle((void**) &(*n).Typ, enforcevoidcontext_437695);
			}
			LA29: ;
			{
				NIM_BOOL LOC33;
				NIM_BOOL LOC35;
				LOC33 = 0;
				LOC33 = (i_449110 == last);
				if (!(LOC33)) goto LA34;
				LOC35 = 0;
				LOC35 = (length == 1);
				if (LOC35) goto LA36;
				LOC35 = ((flags &(1<<((((NU8) 6))&15)))!=0);
				LA36: ;
				LOC33 = LOC35;
				LA34: ;
				if (!LOC33) goto LA37;
				asgnRefNoCycle((void**) &(*n).Typ, (*(*n).kindU.S6.Sons->data[i_449110]).Typ);
				{
					NIM_BOOL LOC41;
					LOC41 = 0;
					LOC41 = isemptytype_195210((*n).Typ);
					if (!!(LOC41)) goto LA42;
					(*n).Kind = ((NU8) 125);
				}
				LA42: ;
			}
			goto LA31;
			LA37: ;
			{
				NIM_BOOL LOC45;
				LOC45 = 0;
				LOC45 = !((i_449110 == last));
				if (LOC45) goto LA46;
				LOC45 = voidcontext;
				LA46: ;
				if (!LOC45) goto LA47;
				discardcheck_439985(c, (*n).kindU.S6.Sons->data[i_449110]);
			}
			goto LA31;
			LA47: ;
			{
				asgnRefNoCycle((void**) &(*n).Typ, (*(*n).kindU.S6.Sons->data[i_449110]).Typ);
				{
					NIM_BOOL LOC52;
					LOC52 = 0;
					LOC52 = isemptytype_195210((*n).Typ);
					if (!!(LOC52)) goto LA53;
					(*n).Kind = ((NU8) 125);
				}
				LA53: ;
			}
			LA31: ;
			switch ((*(*n).kindU.S6.Sons->data[i_449110]).Kind) {
			case ((NU8) 99):
			case ((NU8) 100):
			{
				TY439278 LOC56;
				tnode188803* outer;
				tnode188803* inner;
				memset((void*)&LOC56, 0, sizeof(LOC56));
				insertdestructors_439274(c, (*n).kindU.S6.Sons->data[i_449110], &LOC56);
				outer = LOC56.Field0;
				inner = LOC56.Field1;
				{
					tnode188803* rest;
					tslice78892 LOC61;
					tnodeseq188797* LOC62;
					tnode188803* LOC63;
					if (!!((outer == NIM_NIL))) goto LA59;
					asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_449110], outer);
					LOC61 = HEX2EHEX2E_86221((NI32)(i_449110 + 1), (NI32)(length - 1));
					LOC62 = 0;
					LOC62 = HEX5BHEX5D_438583((*n).kindU.S6.Sons, LOC61);
					rest = newnode_191003(((NU8) 114), (*n).Info, LOC62, NIM_NIL);
					LOC63 = 0;
					LOC63 = semstmtlist_449087(c, rest, flags);
					addson_189207(inner, LOC63);
					(*n).kindU.S6.Sons = (tnodeseq188797*) setLengthSeq(&((*n).kindU.S6.Sons)->Sup, sizeof(tnode188803*), (NI32)(i_449110 + 1));
					goto BeforeRet;
				}
				LA59: ;
			}
			break;
			case ((NU8) 107):
			case ((NU8) 108):
			case ((NU8) 109):
			case ((NU8) 110):
			{
				NI j_449585;
				NI HEX3Atmp_449801;
				NI HEX3Atmp_449802;
				NI res_449804;
				j_449585 = 0;
				HEX3Atmp_449801 = 0;
				HEX3Atmp_449802 = 0;
				HEX3Atmp_449801 = (NI32)(i_449110 + 1);
				HEX3Atmp_449802 = (NI32)(length - 1);
				res_449804 = HEX3Atmp_449801;
				while (1) {
					if (!(res_449804 <= HEX3Atmp_449802)) goto LA65;
					j_449585 = res_449804;
					switch ((*(*n).kindU.S6.Sons->data[j_449585]).Kind) {
					case ((NU8) 90):
					case ((NU8) 124):
					case ((NU8) 23):
					case ((NU8) 1):
					{
					}
					break;
					default:
					{
						localerror_165571((*(*n).kindU.S6.Sons->data[j_449585]).Info, ((NU16) 41), ((NimStringDesc*) &TMP2675));
					}
					break;
					}
					res_449804 += 1;
				} LA65: ;
			}
			break;
			default:
			{
			}
			break;
			}
		}
		break;
		}
		res_449808 += 1;
	} LA1: ;
	{
		NI LOC71;
		LOC71 = 0;
		LOC71 = len_189264(result);
		if (!(LOC71 == 1)) goto LA72;
		result = (*result).kindU.S6.Sons->data[0];
	}
	LA72: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semraise_444542)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	checksonslen_251209(n, 1);
	{
		ttype188837* typ;
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[0], 0));
		typ = (*(*n).kindU.S6.Sons->data[0]).Typ;
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = !(((*typ).Kind == ((NU8) 22)));
			if (LOC7) goto LA8;
			LOC7 = !(((*(*typ).Sons->data[0]).Kind == ((NU8) 17)));
			LA8: ;
			if (!LOC7) goto LA9;
			localerror_165571((*n).Info, ((NU16) 112), ((NimStringDesc*) &TMP2675));
		}
		LA9: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(tsym188833*, findshadowedvar_441827)(tcontext250019* c, tsym188833* v) {
	tsym188833* result;
	tscope188827* scope_441832;
	tscope188827* HEX3Atmp_441880;
	tscope188827* current_441882;
	result = 0;
	scope_441832 = 0;
	HEX3Atmp_441880 = 0;
	HEX3Atmp_441880 = (*(*c).Currentscope).Parent;
	current_441882 = HEX3Atmp_441880;
	while (1) {
		tsym188833* shadowed;
		if (!!((current_441882 == NIM_NIL))) goto LA1;
		scope_441832 = current_441882;
		{
			if (!(scope_441832 == (*c).Toplevelscope)) goto LA4;
			goto LA1;
		}
		LA4: ;
		shadowed = strtableget_197084((*scope_441832).Symbols, (*v).Name);
		{
			NIM_BOOL LOC8;
			LOC8 = 0;
			LOC8 = !((shadowed == NIM_NIL));
			if (!(LOC8)) goto LA9;
			LOC8 = ((2099976 &(1<<(((*shadowed).Kind)&31)))!=0);
			LA9: ;
			if (!LOC8) goto LA10;
			result = shadowed;
			goto BeforeRet;
		}
		LA10: ;
		current_441882 = (*current_441882).Parent;
	} LA1: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, identwithin_441885)(tnode188803* n, tident167019* s) {
	NIM_BOOL result;
	NI i_441900;
	NI HEX3Atmp_441938;
	NI LOC1;
	NI res_441940;
	NIM_BOOL LOC8;
	result = 0;
	i_441900 = 0;
	HEX3Atmp_441938 = 0;
	LOC1 = 0;
	LOC1 = safelen_189320(n);
	HEX3Atmp_441938 = (NI32)(LOC1 - 1);
	res_441940 = 0;
	while (1) {
		if (!(res_441940 <= HEX3Atmp_441938)) goto LA2;
		i_441900 = res_441940;
		{
			NIM_BOOL LOC5;
			LOC5 = 0;
			LOC5 = identwithin_441885((*n).kindU.S6.Sons->data[i_441900], s);
			if (!LOC5) goto LA6;
			result = NIM_TRUE;
			goto BeforeRet;
		}
		LA6: ;
		res_441940 += 1;
	} LA2: ;
	LOC8 = 0;
	LOC8 = ((*n).Kind == ((NU8) 3));
	if (!(LOC8)) goto LA9;
	LOC8 = ((*(*(*n).kindU.S4.Sym).Name).Sup.Id == (*s).Sup.Id);
	LA9: ;
	result = LOC8;
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, checknilable_441970)(tsym188833* 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_165584((*v).Info, ((NU16) 249), (*(*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_165584((*v).Info, ((NU16) 249), (*(*v).Name).S);
		}
		goto LA7;
		LA14: ;
		LA7: ;
	}
	LA5: ;
}

N_NIMCALL(tnode188803*, semvarorlet_442061)(tcontext250019* c, tnode188803* n, NU8 symkind) {
	tnode188803* result;
	tnode188803* b;
	NIM_BOOL hascompiletime;
	NI i_442081;
	NI HEX3Atmp_442771;
	NI LOC1;
	NI res_442773;
	result = 0;
	b = 0;
	result = copynode_189233(n);
	hascompiletime = NIM_FALSE;
	i_442081 = 0;
	HEX3Atmp_442771 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_442771 = (NI32)(LOC1 - 1);
	res_442773 = 0;
	while (1) {
		if (!(res_442773 <= HEX3Atmp_442771)) goto LA2;
		i_442081 = res_442773;
		{
			tnode188803* a;
			NI length;
			ttype188837* typ;
			tnode188803* def;
			ttype188837* tup;
			NI j_442382;
			NI HEX3Atmp_442767;
			NI res_442769;
			a = (*n).kindU.S6.Sons->data[i_442081];
			{
				if (!(gcmd_137113 == ((NU8) 14))) goto LA6;
				suggeststmt_363273(c, a);
			}
			LA6: ;
			{
				if (!((*a).Kind == ((NU8) 124))) goto LA10;
				goto LA3;
			}
			LA10: ;
			{
				if (!!(((*a).Kind == ((NU8) 35) || (*a).Kind == ((NU8) 36) || (*a).Kind == ((NU8) 102)))) goto LA14;
				illformedast_251203(a);
			}
			LA14: ;
			checkminsonslen_251215(a, 3);
			length = sonslen_189181(a);
			typ = 0;
			{
				if (!!(((*(*a).kindU.S6.Sons->data[(NI32)(length - 2)]).Kind == ((NU8) 1)))) goto LA18;
				typ = semtypenode_416055(c, (*a).kindU.S6.Sons->data[(NI32)(length - 2)], NIM_NIL);
			}
			goto LA16;
			LA18: ;
			{
				typ = NIM_NIL;
			}
			LA16: ;
			def = 0;
			{
				if (!!(((*(*a).kindU.S6.Sons->data[(NI32)(length - 1)]).Kind == ((NU8) 1)))) goto LA23;
				def = semexprwithtype_416011(c, (*a).kindU.S6.Sons->data[(NI32)(length - 1)], 32);
				{
					if (!!((typ == NIM_NIL))) goto LA27;
					def = fitnode_416037(c, typ, def);
				}
				goto LA25;
				LA27: ;
				{
					typ = skipintlit_242424((*def).Typ);
					{
						NIM_BOOL LOC32;
						ttype188837* LOC34;
						NimStringDesc* LOC37;
						NimStringDesc* LOC38;
						LOC32 = 0;
						LOC32 = ((*typ).Kind == ((NU8) 24) || (*typ).Kind == ((NU8) 16) || (*typ).Kind == ((NU8) 19));
						if (!(LOC32)) goto LA33;
						LOC34 = 0;
						LOC34 = lastson_189193(typ);
						LOC32 = ((*LOC34).Kind == ((NU8) 3));
						LA33: ;
						if (!LOC32) goto LA35;
						LOC37 = 0;
						LOC37 = copyStr(reprEnum((*typ).Kind, (&NTI188240)), 2);
						LOC38 = 0;
						LOC38 = nsuToLowerStr(LOC37);
						localerror_165571((*def).Info, ((NU16) 225), LOC38);
					}
					LA35: ;
				}
				LA25: ;
			}
			goto LA21;
			LA23: ;
			{
				def = emptynode_189727;
				{
					if (!(symkind == ((NU8) 9))) goto LA42;
					localerror_165571((*a).Info, ((NU16) 219), ((NimStringDesc*) &TMP2675));
				}
				LA42: ;
			}
			LA21: ;
			{
				if (!(typ == NIM_NIL)) goto LA46;
				goto LA3;
			}
			LA46: ;
			{
				NIM_BOOL LOC50;
				NimStringDesc* LOC53;
				LOC50 = 0;
				LOC50 = typeallowed_223180(typ, symkind);
				if (!!(LOC50)) goto LA51;
				LOC53 = 0;
				LOC53 = typetostring_223020(typ, ((NU8) 0));
				localerror_165571((*a).Info, ((NU16) 165), LOC53);
			}
			LA51: ;
			tup = skiptypes_192793(typ, 2048);
			{
				if (!((*a).Kind == ((NU8) 36))) goto LA56;
				{
					if (!!(((*tup).Kind == ((NU8) 18)))) goto LA60;
					localerror_165571((*a).Info, ((NU16) 188), ((NimStringDesc*) &TMP3072));
				}
				goto LA58;
				LA60: ;
				{
					NI LOC63;
					LOC63 = 0;
					LOC63 = sonslen_189185(tup);
					if (!!(((NI32)(length - 2) == LOC63))) goto LA64;
					localerror_165571((*a).Info, ((NU16) 111), ((NimStringDesc*) &TMP2675));
				}
				goto LA58;
				LA64: ;
				{
					b = newnodei_189099(((NU8) 36), (*a).Info);
					newsons_189197(b, length);
					asgnRefNoCycle((void**) &(*b).kindU.S6.Sons->data[(NI32)(length - 2)], (*a).kindU.S6.Sons->data[(NI32)(length - 2)]);
					asgnRefNoCycle((void**) &(*b).kindU.S6.Sons->data[(NI32)(length - 1)], def);
					addson_189207(result, b);
				}
				LA58: ;
			}
			goto LA54;
			LA56: ;
			{
				NIM_BOOL LOC68;
				NIM_BOOL LOC69;
				NIM_BOOL LOC70;
				NI LOC74;
				LOC68 = 0;
				LOC69 = 0;
				LOC70 = 0;
				LOC70 = ((*tup).Kind == ((NU8) 18));
				if (!(LOC70)) goto LA71;
				LOC70 = ((*def).Kind == ((NU8) 37));
				LA71: ;
				LOC69 = LOC70;
				if (!(LOC69)) goto LA72;
				LOC69 = ((*a).Kind == ((NU8) 35));
				LA72: ;
				LOC68 = LOC69;
				if (!(LOC68)) goto LA73;
				LOC74 = 0;
				LOC74 = len_189264(a);
				LOC68 = (3 < LOC74);
				LA73: ;
				if (!LOC68) goto LA75;
				message_165584((*a).Info, ((NU16) 247), ((NimStringDesc*) &TMP2675));
			}
			goto LA54;
			LA75: ;
			LA54: ;
			j_442382 = 0;
			HEX3Atmp_442767 = 0;
			HEX3Atmp_442767 = (NI32)(length - 3);
			res_442769 = 0;
			while (1) {
				tsym188833* v;
				if (!(res_442769 <= HEX3Atmp_442767)) goto LA77;
				j_442382 = res_442769;
				v = semidentdef_441944(c, (*a).kindU.S6.Sons->data[j_442382], symkind);
				{
					if (!!((((*v).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA80;
					addinterfacedecl_252695(c, v);
				}
				LA80: ;
				{
					if (!(0 < (*c).Inunrolledcontext)) goto LA84;
					(*v).Flags |=((NI32)(1)<<((((NU8) 21))%(sizeof(NI32)*8)));
				}
				goto LA82;
				LA84: ;
				{
					tsym188833* shadowed;
					shadowed = findshadowedvar_441827(c, v);
					{
						if (!!((shadowed == NIM_NIL))) goto LA89;
						(*shadowed).Flags |=((NI32)(1)<<((((NU8) 21))%(sizeof(NI32)*8)));
						{
							NIM_BOOL LOC93;
							NIM_BOOL LOC95;
							LOC93 = 0;
							LOC93 = ((gnotes_164181 &(IL64(1)<<(((((NU16) 248)- 230))&IL64(63))))!=0);
							if (!(LOC93)) goto LA94;
							LOC95 = 0;
							LOC95 = identwithin_441885(def, (*v).Name);
							LOC93 = !(LOC95);
							LA94: ;
							if (!LOC93) goto LA96;
							message_165584((*a).Info, ((NU16) 248), (*(*v).Name).S);
						}
						LA96: ;
					}
					LA89: ;
				}
				LA82: ;
				{
					tnode188803* LOC118;
					tnode188803* LOC119;
					if (!!(((*a).Kind == ((NU8) 36)))) goto LA100;
					{
						NIM_BOOL LOC104;
						LOC104 = 0;
						LOC104 = !((def == NIM_NIL));
						if (!(LOC104)) goto LA105;
						LOC104 = !(((*def).Kind == ((NU8) 1)));
						LA105: ;
						if (!LOC104) goto LA106;
						asgnRefNoCycle((void**) &(*v).Ast, def);
						{
							if (!(((*v).Flags &(1<<((((NU8) 22))&31)))!=0)) goto LA110;
							localerror_165571((*def).Info, ((NU16) 220), ((NimStringDesc*) &TMP2675));
						}
						LA110: ;
					}
					LA106: ;
					asgnRefNoCycle((void**) &(*v).Typ, typ);
					b = newnodei_189099(((NU8) 35), (*a).Info);
					{
						NIM_BOOL LOC114;
						NimStringDesc* LOC117;
						LOC114 = 0;
						LOC114 = importantcomments_137145();
						if (!LOC114) goto LA115;
						LOC117 = 0;
						LOC117 = (*b).Comment; (*b).Comment = copyStringRC1((*a).Comment);
						if (LOC117) nimGCunrefNoCycle(LOC117);
					}
					LA115: ;
					LOC118 = 0;
					LOC118 = newsymnode_189095(v);
					addson_189207(b, LOC118);
					addson_189207(b, (*a).kindU.S6.Sons->data[(NI32)(length - 2)]);
					LOC119 = 0;
					LOC119 = copytree_189237(def);
					addson_189207(b, LOC119);
					addson_189207(result, b);
				}
				goto LA98;
				LA100: ;
				{
					{
						if (!((*def).Kind == ((NU8) 37))) goto LA123;
						asgnRefNoCycle((void**) &(*v).Ast, HEX5BHEX5D_189694(def, j_442382));
					}
					LA123: ;
					asgnRefNoCycle((void**) &(*v).Typ, (*tup).Sons->data[j_442382]);
					asgnRefNoCycle((void**) &(*b).kindU.S6.Sons->data[j_442382], newsymnode_189095(v));
				}
				LA98: ;
				checknilable_441970(v);
				{
					if (!(((*v).Flags &(1<<((((NU8) 23))&31)))!=0)) goto LA127;
					hascompiletime = NIM_TRUE;
				}
				LA127: ;
				res_442769 += 1;
			} LA77: ;
		} LA3: ;
		res_442773 += 1;
	} LA2: ;
	{
		if (!hascompiletime) goto LA131;
		setupcompiletimevar_410444((*c).Module, result);
	}
	LA131: ;
	return result;
}

N_NIMCALL(tnode188803*, fitremovehiddenconv_441778)(tcontext250019* c, ttype188837* typ, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = fitnode_416037(c, typ, n);
	{
		if (!((*result).Kind == ((NU8) 58) || (*result).Kind == ((NU8) 59))) goto LA3;
		changetype_416043((*result).kindU.S6.Sons->data[1], typ, NIM_TRUE);
		result = (*result).kindU.S6.Sons->data[1];
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = sametype_228116((*result).Typ, typ, 0);
		if (!!(LOC6)) goto LA7;
		changetype_416043(result, typ, NIM_FALSE);
	}
	goto LA1;
	LA7: ;
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semconst_442779)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NI i_442796;
	NI HEX3Atmp_443016;
	NI LOC1;
	NI res_443018;
	result = 0;
	result = copynode_189233(n);
	i_442796 = 0;
	HEX3Atmp_443016 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_443016 = (NI32)(LOC1 - 1);
	res_443018 = 0;
	while (1) {
		if (!(res_443018 <= HEX3Atmp_443016)) goto LA2;
		i_442796 = res_443018;
		{
			tnode188803* a;
			tsym188833* v;
			ttype188837* typ;
			tnode188803* def;
			tnode188803* b;
			tnode188803* LOC49;
			tnode188803* LOC50;
			a = (*n).kindU.S6.Sons->data[i_442796];
			{
				if (!(gcmd_137113 == ((NU8) 14))) goto LA6;
				suggeststmt_363273(c, a);
			}
			LA6: ;
			{
				if (!((*a).Kind == ((NU8) 124))) goto LA10;
				goto LA3;
			}
			LA10: ;
			{
				if (!!(((*a).Kind == ((NU8) 102)))) goto LA14;
				illformedast_251203(a);
			}
			LA14: ;
			checksonslen_251209(a, 3);
			v = semidentdef_441944(c, (*a).kindU.S6.Sons->data[0], ((NU8) 10));
			typ = NIM_NIL;
			{
				if (!!(((*(*a).kindU.S6.Sons->data[1]).Kind == ((NU8) 1)))) goto LA18;
				typ = semtypenode_416055(c, (*a).kindU.S6.Sons->data[1], NIM_NIL);
			}
			LA18: ;
			def = semconstexpr_417095(c, (*a).kindU.S6.Sons->data[2]);
			{
				if (!(def == NIM_NIL)) goto LA22;
				localerror_165571((*(*a).kindU.S6.Sons->data[2]).Info, ((NU16) 104), ((NimStringDesc*) &TMP2675));
				goto LA3;
			}
			LA22: ;
			{
				if (!!((typ == NIM_NIL))) goto LA26;
				def = fitremovehiddenconv_441778(c, typ, def);
			}
			goto LA24;
			LA26: ;
			{
				typ = (*def).Typ;
			}
			LA24: ;
			{
				if (!(typ == NIM_NIL)) goto LA31;
				localerror_165571((*(*a).kindU.S6.Sons->data[2]).Info, ((NU16) 104), ((NimStringDesc*) &TMP2675));
				goto LA3;
			}
			LA31: ;
			{
				NIM_BOOL LOC35;
				NimStringDesc* LOC38;
				LOC35 = 0;
				LOC35 = typeallowed_223180(typ, ((NU8) 10));
				if (!!(LOC35)) goto LA36;
				LOC38 = 0;
				LOC38 = typetostring_223020(typ, ((NU8) 0));
				localerror_165571((*a).Info, ((NU16) 165), LOC38);
				goto LA3;
			}
			LA36: ;
			asgnRefNoCycle((void**) &(*v).Typ, typ);
			asgnRefNoCycle((void**) &(*v).Ast, def);
			{
				if (!!((((*v).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA41;
				addinterfacedecl_252695(c, v);
			}
			LA41: ;
			b = newnodei_189099(((NU8) 102), (*a).Info);
			{
				NIM_BOOL LOC45;
				NimStringDesc* LOC48;
				LOC45 = 0;
				LOC45 = importantcomments_137145();
				if (!LOC45) goto LA46;
				LOC48 = 0;
				LOC48 = (*b).Comment; (*b).Comment = copyStringRC1((*a).Comment);
				if (LOC48) nimGCunrefNoCycle(LOC48);
			}
			LA46: ;
			LOC49 = 0;
			LOC49 = newsymnode_189095(v);
			addson_189207(b, LOC49);
			addson_189207(b, (*a).kindU.S6.Sons->data[1]);
			LOC50 = 0;
			LOC50 = copytree_189237(def);
			addson_189207(b, LOC50);
			addson_189207(result, b);
		} LA3: ;
		res_443018 += 1;
	} LA2: ;
	return result;
}

N_NIMCALL(void, typesectionleftsidepass_444702)(tcontext250019* c, tnode188803* n) {
	NI i_444718;
	NI HEX3Atmp_444855;
	NI LOC1;
	NI res_444857;
	i_444718 = 0;
	HEX3Atmp_444855 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_444855 = (NI32)(LOC1 - 1);
	res_444857 = 0;
	while (1) {
		if (!(res_444857 <= HEX3Atmp_444855)) goto LA2;
		i_444718 = res_444857;
		{
			tnode188803* a;
			tsym188833* s;
			a = (*n).kindU.S6.Sons->data[i_444718];
			{
				if (!(gcmd_137113 == ((NU8) 14))) goto LA6;
				suggeststmt_363273(c, a);
			}
			LA6: ;
			{
				if (!((*a).Kind == ((NU8) 124))) goto LA10;
				goto LA3;
			}
			LA10: ;
			{
				if (!!(((*a).Kind == ((NU8) 103)))) goto LA14;
				illformedast_251203(a);
			}
			LA14: ;
			checksonslen_251209(a, 3);
			s = semidentdef_441944(c, (*a).kindU.S6.Sons->data[0], ((NU8) 7));
			asgnRefNoCycle((void**) &(*s).Typ, newtypes_250180(((NU8) 30), c));
			asgnRefNoCycle((void**) &(*(*s).Typ).Sym, s);
			{
				if (!((*(*a).kindU.S6.Sons->data[0]).Kind == ((NU8) 43))) goto LA18;
				pragma_267073(c, s, (*(*a).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1], TMP3036);
			}
			LA18: ;
			{
				if (!!((((*s).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA22;
				addinterfacedecl_252695(c, s);
			}
			LA22: ;
			asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[0], newsymnode_189095(s));
		} LA3: ;
		res_444857 += 1;
	} LA2: ;
}

N_NIMCALL(void, setmagictype_429784)(tsym188833* m, NU8 kind, NI size) {
	(*(*m).Typ).Kind = kind;
	(*(*m).Typ).Align = size;
	(*(*m).Typ).Size = ((NI64) (size));
}

N_NIMCALL(void, processmagictype_429790)(tcontext250019* c, tsym188833* m) {
	switch ((*m).Magic) {
	case ((NU16) 182):
	{
		setmagictype_429784(m, ((NU8) 31), intsize_142590);
	}
	break;
	case ((NU16) 183):
	{
		setmagictype_429784(m, ((NU8) 32), 1);
	}
	break;
	case ((NU16) 184):
	{
		setmagictype_429784(m, ((NU8) 33), 2);
	}
	break;
	case ((NU16) 185):
	{
		setmagictype_429784(m, ((NU8) 34), 4);
	}
	break;
	case ((NU16) 186):
	{
		setmagictype_429784(m, ((NU8) 35), 8);
	}
	break;
	case ((NU16) 187):
	{
		setmagictype_429784(m, ((NU8) 40), intsize_142590);
	}
	break;
	case ((NU16) 188):
	{
		setmagictype_429784(m, ((NU8) 41), 1);
	}
	break;
	case ((NU16) 189):
	{
		setmagictype_429784(m, ((NU8) 42), 2);
	}
	break;
	case ((NU16) 190):
	{
		setmagictype_429784(m, ((NU8) 43), 4);
	}
	break;
	case ((NU16) 191):
	{
		setmagictype_429784(m, ((NU8) 44), 8);
	}
	break;
	case ((NU16) 192):
	{
		setmagictype_429784(m, ((NU8) 36), floatsize_142591);
	}
	break;
	case ((NU16) 193):
	{
		setmagictype_429784(m, ((NU8) 37), 4);
	}
	break;
	case ((NU16) 194):
	{
		setmagictype_429784(m, ((NU8) 38), 8);
	}
	break;
	case ((NU16) 195):
	{
		setmagictype_429784(m, ((NU8) 39), 16);
	}
	break;
	case ((NU16) 196):
	{
		setmagictype_429784(m, ((NU8) 1), 1);
	}
	break;
	case ((NU16) 197):
	{
		setmagictype_429784(m, ((NU8) 2), 1);
	}
	break;
	case ((NU16) 198):
	{
		ttype188837* LOC18;
		setmagictype_429784(m, ((NU8) 28), ptrsize_142592);
		LOC18 = 0;
		LOC18 = getsystype_242024(((NU8) 2));
		rawaddson_193092((*m).Typ, LOC18);
	}
	break;
	case ((NU16) 199):
	{
		ttype188837* LOC20;
		setmagictype_429784(m, ((NU8) 29), ptrsize_142592);
		LOC20 = 0;
		LOC20 = getsystype_242024(((NU8) 2));
		rawaddson_193092((*m).Typ, LOC20);
	}
	break;
	case ((NU16) 200):
	{
		setmagictype_429784(m, ((NU8) 26), ptrsize_142592);
	}
	break;
	case ((NU16) 201):
	{
		ttype188837* LOC23;
		setmagictype_429784(m, ((NU8) 19), 1);
		LOC23 = 0;
		LOC23 = newtypes_250180(((NU8) 3), c);
		rawaddson_193092((*m).Typ, LOC23);
	}
	break;
	case ((NU16) 202):
	{
		setmagictype_429784(m, ((NU8) 20), intsize_142590);
	}
	break;
	case ((NU16) 203):
	{
		setmagictype_429784(m, ((NU8) 5), ptrsize_142592);
	}
	break;
	case ((NU16) 204):
	{
		setmagictype_429784(m, ((NU8) 6), 0);
	}
	break;
	case ((NU16) 205):
	{
		setmagictype_429784(m, ((NU8) 7), 0);
	}
	break;
	case ((NU16) 206):
	{
		ttype188837* LOC29;
		setmagictype_429784(m, ((NU8) 8), 0);
		LOC29 = 0;
		LOC29 = newtypes_250180(((NU8) 0), c);
		rawaddson_193092((*m).Typ, LOC29);
	}
	break;
	case ((NU16) 207):
	{
		setmagictype_429784(m, ((NU8) 3), 0);
	}
	break;
	case ((NU16) 175):
	{
		setmagictype_429784(m, ((NU8) 16), 0);
	}
	break;
	case ((NU16) 176):
	{
		setmagictype_429784(m, ((NU8) 27), 0);
	}
	break;
	case ((NU16) 180):
	{
		setmagictype_429784(m, ((NU8) 48), 0);
	}
	break;
	case ((NU16) 177):
	{
		ttype188837* LOC35;
		setmagictype_429784(m, ((NU8) 20), 0);
		LOC35 = 0;
		LOC35 = newtypes_250180(((NU8) 0), c);
		rawaddson_193092((*m).Typ, LOC35);
	}
	break;
	case ((NU16) 178):
	{
		setmagictype_429784(m, ((NU8) 19), 0);
	}
	break;
	case ((NU16) 179):
	{
		setmagictype_429784(m, ((NU8) 24), 0);
	}
	break;
	case ((NU16) 181):
	{
		ttype188837* LOC39;
		setmagictype_429784(m, ((NU8) 15), 0);
		LOC39 = 0;
		LOC39 = newtypes_250180(((NU8) 0), c);
		rawaddson_193092((*m).Typ, LOC39);
	}
	break;
	case ((NU16) 208):
	{
	}
	break;
	case ((NU16) 209):
	{
		setmagictype_429784(m, ((NU8) 17), 0);
		asgnRefNoCycle((void**) &(*(*m).Typ).N, newnodei_189099(((NU8) 136), (*m).Info));
		(*(*m).Typ).Flags |=((NI32)(1)<<((((NU8) 15))%(sizeof(NI32)*8)));
	}
	break;
	case ((NU16) 210):
	{
		ttype188837* LOC43;
		setmagictype_429784(m, ((NU8) 17), 0);
		asgnRefNoCycle((void**) &(*(*m).Typ).N, newnodei_189099(((NU8) 136), (*m).Info));
		(*(*m).Typ).Flags |=((NI32)(1)<<((((NU8) 15))%(sizeof(NI32)*8)));
		LOC43 = 0;
		LOC43 = systypefromname_242204(((NimStringDesc*) &TMP3073));
		rawaddson_193092((*m).Typ, LOC43);
	}
	break;
	default:
	{
		localerror_165571((*m).Info, ((NU16) 63), ((NimStringDesc*) &TMP2675));
	}
	break;
	}
}

N_NIMCALL(void, typesectionrightsidepass_444862)(tcontext250019* c, tnode188803* n) {
	NI i_444878;
	NI HEX3Atmp_445201;
	NI LOC1;
	NI res_445203;
	i_444878 = 0;
	HEX3Atmp_445201 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_445201 = (NI32)(LOC1 - 1);
	res_445203 = 0;
	while (1) {
		if (!(res_445203 <= HEX3Atmp_445201)) goto LA2;
		i_444878 = res_445203;
		{
			tnode188803* a;
			tsym188833* s;
			a = (*n).kindU.S6.Sons->data[i_444878];
			{
				if (!((*a).Kind == ((NU8) 124))) goto LA6;
				goto LA3;
			}
			LA6: ;
			{
				if (!!(((*a).Kind == ((NU8) 103)))) goto LA10;
				illformedast_251203(a);
			}
			LA10: ;
			checksonslen_251209(a, 3);
			{
				if (!!(((*(*a).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA14;
				illformedast_251203(a);
			}
			LA14: ;
			s = (*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym;
			{
				NIM_BOOL LOC18;
				LOC18 = 0;
				LOC18 = ((*s).Magic == ((NU16) 0));
				if (!(LOC18)) goto LA19;
				LOC18 = ((*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 1));
				LA19: ;
				if (!LOC18) goto LA20;
				localerror_165571((*a).Info, ((NU16) 138), (*(*s).Name).S);
			}
			LA20: ;
			{
				if (!!(((*s).Magic == ((NU16) 0)))) goto LA24;
				processmagictype_429790(c, s);
			}
			LA24: ;
			{
				tscope188827* LOC30;
				ttype188837* LOC35;
				ttype188837* body;
				if (!!(((*(*a).kindU.S6.Sons->data[1]).Kind == ((NU8) 1)))) goto LA28;
				LOC30 = 0;
				LOC30 = openscope_252167(c);
				pushowner_250218(s);
				{
					if (!((*s).Magic == ((NU16) 0))) goto LA33;
					(*(*s).Typ).Kind = ((NU8) 10);
				}
				LA33: ;
				asgnRefNoCycle((void**) &(*(*s).Typ).N, semgenericparamlist_429851(c, (*a).kindU.S6.Sons->data[1], (*s).Typ));
				asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[1], (*(*s).Typ).N);
				(*(*s).Typ).Size = -1;
				LOC35 = 0;
				LOC35 = newtypes_250180(((NU8) 0), c);
				rawaddson_193092((*s).Typ, LOC35);
				asgnRefNoCycle((void**) &(*s).Ast, a);
				(*c).Ingenericcontext += 1;
				body = semtypenode_416055(c, (*a).kindU.S6.Sons->data[2], NIM_NIL);
				(*c).Ingenericcontext -= 1;
				{
					NI LOC40;
					if (!!((body == NIM_NIL))) goto LA38;
					asgnRefNoCycle((void**) &(*body).Sym, s);
					(*body).Size = -1;
					LOC40 = 0;
					LOC40 = sonslen_189185((*s).Typ);
					asgnRefNoCycle((void**) &(*(*s).Typ).Sons->data[(NI32)(LOC40 - 1)], body);
				}
				LA38: ;
				popowner_250222();
				closescope_252179(c);
			}
			goto LA26;
			LA28: ;
			{
				ttype188837* t;
				if (!!(((*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 1)))) goto LA42;
				pushowner_250218(s);
				t = semtypenode_416055(c, (*a).kindU.S6.Sons->data[2], (*s).Typ);
				{
					if (!((*s).Typ == NIM_NIL)) goto LA46;
					asgnRefNoCycle((void**) &(*s).Typ, t);
				}
				goto LA44;
				LA46: ;
				{
					if (!!((t == (*s).Typ))) goto LA49;
					assigntype_189152((*s).Typ, t);
				}
				goto LA44;
				LA49: ;
				LA44: ;
				asgnRefNoCycle((void**) &(*s).Ast, a);
				popowner_250222();
			}
			goto LA26;
			LA42: ;
			LA26: ;
		} LA3: ;
		res_445203 += 1;
	} LA2: ;
}

N_NIMCALL(void, checkformetafields_445208)(tnode188803* n) {
	switch ((*n).Kind) {
	case ((NU8) 136):
	case ((NU8) 137):
	{
		tnode188803* s_445219;
		NI i_445359;
		NI HEX3Atmp_445361;
		NI LOC2;
		NI res_445363;
		s_445219 = 0;
		i_445359 = 0;
		HEX3Atmp_445361 = 0;
		LOC2 = 0;
		LOC2 = len_189264(n);
		HEX3Atmp_445361 = LOC2 - 1;
		res_445363 = 0;
		while (1) {
			if (!(res_445363 <= HEX3Atmp_445361)) goto LA3;
			i_445359 = res_445363;
			s_445219 = (*n).kindU.S6.Sons->data[i_445359];
			checkformetafields_445208(s_445219);
			res_445363 += 1;
		} LA3: ;
	}
	break;
	case ((NU8) 85):
	case ((NU8) 88):
	{
		tnode188803* LOC5;
		LOC5 = 0;
		LOC5 = lastson_189189(n);
		checkformetafields_445208(LOC5);
	}
	break;
	case ((NU8) 3):
	{
		ttype188837* 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;
			NI i_445290;
			NI HEX3Atmp_445364;
			NI res_445366;
			start = ((*t).Kind == ((NU8) 9) || (*t).Kind == ((NU8) 11));
			i_445290 = 0;
			HEX3Atmp_445364 = 0;
			HEX3Atmp_445364 = (*t).Sons->Sup.len - 1;
			res_445366 = ((NI) (start));
			while (1) {
				if (!(res_445366 <= HEX3Atmp_445364)) goto LA8;
				i_445290 = res_445366;
				{
					NIM_BOOL LOC11;
					NIM_BOOL LOC12;
					NimStringDesc* LOC17;
					LOC11 = 0;
					LOC12 = 0;
					LOC12 = !(((*t).Sons->data[i_445290] == NIM_NIL));
					if (!(LOC12)) goto LA13;
					LOC12 = ismetatype_189732((*t).Sons->data[i_445290]);
					LA13: ;
					LOC11 = LOC12;
					if (!(LOC11)) goto LA14;
					LOC11 = !((((*(*t).Sons->data[i_445290]).Flags &(1<<((((NU8) 23))&31)))!=0));
					LA14: ;
					if (!LOC11) goto LA15;
					LOC17 = 0;
					LOC17 = typetostring_223020((*t).Sons->data[i_445290], ((NU8) 0));
					localerror_165571((*n).Info, ((NU16) 189), LOC17);
				}
				LA15: ;
				res_445366 += 1;
			} LA8: ;
		}
		break;
		default:
		{
			{
				NIM_BOOL LOC21;
				NIM_BOOL LOC22;
				NimStringDesc* LOC27;
				LOC21 = 0;
				LOC22 = 0;
				LOC22 = !((t == NIM_NIL));
				if (!(LOC22)) goto LA23;
				LOC22 = ismetatype_189732(t);
				LA23: ;
				LOC21 = LOC22;
				if (!(LOC21)) goto LA24;
				LOC21 = !((((*t).Flags &(1<<((((NU8) 23))&31)))!=0));
				LA24: ;
				if (!LOC21) goto LA25;
				LOC27 = 0;
				LOC27 = typetostring_223020(t, ((NU8) 0));
				localerror_165571((*n).Info, ((NU16) 189), LOC27);
			}
			LA25: ;
		}
		break;
		}
	}
	break;
	default:
	{
		{
			NimStringDesc* LOC33;
			if (!NIM_TRUE) goto LA31;
			LOC33 = 0;
			LOC33 = HEX24_165714(TMP3074);
			internalerror_165606(LOC33);
		}
		LA31: ;
	}
	break;
	}
}

N_NIMCALL(void, typesectionfinalpass_445371)(tcontext250019* c, tnode188803* n) {
	NI i_445387;
	NI HEX3Atmp_445697;
	NI LOC1;
	NI res_445699;
	i_445387 = 0;
	HEX3Atmp_445697 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_445697 = (NI32)(LOC1 - 1);
	res_445699 = 0;
	while (1) {
		if (!(res_445699 <= HEX3Atmp_445697)) goto LA2;
		i_445387 = res_445699;
		{
			tnode188803* a;
			tsym188833* s;
			tnode188803* aa;
			a = (*n).kindU.S6.Sons->data[i_445387];
			{
				if (!((*a).Kind == ((NU8) 124))) goto LA6;
				goto LA3;
			}
			LA6: ;
			{
				if (!!(((*(*a).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA10;
				illformedast_251203(a);
			}
			LA10: ;
			s = (*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym;
			{
				if (!((*(*a).kindU.S6.Sons->data[1]).Kind == ((NU8) 1))) goto LA14;
				{
					ttype188837* t;
					if (!((*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 3) || (*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 2) || (*(*a).kindU.S6.Sons->data[2]).Kind == ((NU8) 53))) goto LA18;
					t = semtypenode_416055(c, (*a).kindU.S6.Sons->data[2], NIM_NIL);
					{
						if (!((*t).Kind == ((NU8) 17) || (*t).Kind == ((NU8) 14))) goto LA22;
						assigntype_189152((*s).Typ, t);
						(*(*s).Typ).Sup.Id = (*t).Sup.Id;
					}
					LA22: ;
				}
				LA18: ;
				checkconstructedtype_273140((*s).Info, (*s).Typ);
				{
					if (!((*(*s).Typ).Kind == ((NU8) 17) || (*(*s).Typ).Kind == ((NU8) 18))) goto LA26;
					checkformetafields_445208((*(*s).Typ).N);
				}
				LA26: ;
			}
			LA14: ;
			aa = (*a).kindU.S6.Sons->data[2];
			{
				NIM_BOOL LOC30;
				NIM_BOOL LOC31;
				NI LOC33;
				ttype188837* st;
				ttype188837* LOC52;
				NimStringDesc* LOC53;
				tident167019* LOC54;
				tsym188833* LOC55;
				LOC30 = 0;
				LOC31 = 0;
				LOC31 = ((*aa).Kind == ((NU8) 139) || (*aa).Kind == ((NU8) 140));
				if (!(LOC31)) goto LA32;
				LOC33 = 0;
				LOC33 = len_189264(aa);
				LOC31 = (LOC33 == 1);
				LA32: ;
				LOC30 = LOC31;
				if (!(LOC30)) goto LA34;
				LOC30 = ((*(*aa).kindU.S6.Sons->data[0]).Kind == ((NU8) 132));
				LA34: ;
				if (!LOC30) goto LA35;
				st = (*s).Typ;
				{
					if (!((*st).Kind == ((NU8) 10))) goto LA39;
					st = lastson_189193(st);
				}
				LA39: ;
				{
					NimStringDesc* LOC45;
					if (!!(((*st).Kind == ((NU8) 21) || (*st).Kind == ((NU8) 22)))) goto LA43;
					LOC45 = 0;
					LOC45 = HEX24_165714(TMP3076);
					internalerror_165606(LOC45);
				}
				LA43: ;
				{
					ttype188837* LOC48;
					NimStringDesc* LOC51;
					LOC48 = 0;
					LOC48 = lastson_189193(st);
					if (!!(((*LOC48).Sym == NIM_NIL))) goto LA49;
					LOC51 = 0;
					LOC51 = HEX24_165714(TMP3077);
					internalerror_165606(LOC51);
				}
				LA49: ;
				LOC52 = 0;
				LOC52 = lastson_189193(st);
				LOC53 = 0;
				LOC53 = rawNewString((*(*s).Name).S->Sup.len + 11);
appendString(LOC53, (*(*s).Name).S);
appendString(LOC53, ((NimStringDesc*) &TMP3078));
				LOC54 = 0;
				LOC54 = getident_167456(LOC53);
				LOC55 = 0;
				LOC55 = getcurrowner_250215();
				asgnRefNoCycle((void**) &(*LOC52).Sym, newsym_189053(((NU8) 7), LOC54, LOC55, (*s).Info));
			}
			LA35: ;
		} LA3: ;
		res_445699 += 1;
	} LA2: ;
}

N_NIMCALL(tnode188803*, semtypesection_445704)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	typesectionleftsidepass_444702(c, n);
	typesectionrightsidepass_444862(c, n);
	typesectionfinalpass_445371(c, n);
	result = n;
	return result;
}

N_NIMCALL(tnode188803*, semdiscard_437696)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	checksonslen_251209(n, 1);
	{
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[0], 0));
		{
			NIM_BOOL LOC7;
			LOC7 = 0;
			LOC7 = isemptytype_195210((*(*n).kindU.S6.Sons->data[0]).Typ);
			if (!LOC7) goto LA8;
			localerror_165571((*n).Info, ((NU16) 141), ((NimStringDesc*) &TMP2675));
		}
		LA8: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(tnode188803*, semwhile_437916)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tscope188827* LOC1;
	tnode188803* LOC2;
	result = 0;
	result = n;
	checksonslen_251209(n, 2);
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	LOC2 = 0;
	LOC2 = semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[0], 0);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], forcebool_422446(c, LOC2));
	(*(*c).P).Nestedloopcounter += 1;
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[1], semstmt_416061(c, (*n).kindU.S6.Sons->data[1]));
	(*(*c).P).Nestedloopcounter -= 1;
	closescope_252179(c);
	{
		if (!((*(*n).kindU.S6.Sons->data[1]).Typ == enforcevoidcontext_437695)) goto LA5;
		asgnRefNoCycle((void**) &(*result).Typ, enforcevoidcontext_437695);
	}
	LA5: ;
	return result;
}

N_NIMCALL(tnode188803*, sembreakorcontinue_437767)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	checksonslen_251209(n, 1);
	{
		tsym188833* s;
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA3;
		s = 0;
		switch ((*(*n).kindU.S6.Sons->data[0]).Kind) {
		case ((NU8) 2):
		{
			s = lookup_252708(c, (*n).kindU.S6.Sons->data[0]);
		}
		break;
		case ((NU8) 3):
		{
			s = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		}
		break;
		default:
		{
			illformedast_251203(n);
		}
		break;
		}
		{
			NIM_BOOL LOC10;
			tnode188803* x;
			LOC10 = 0;
			LOC10 = ((*s).Kind == ((NU8) 22));
			if (!(LOC10)) goto LA11;
			LOC10 = ((*(*s).Owner).Sup.Id == (*(*(*c).P).Owner).Sup.Id);
			LA11: ;
			if (!LOC10) goto LA12;
			x = newsymnode_189095(s);
			(*x).Info = (*n).Info;
			(*s).Flags |=((NI32)(1)<<((((NU8) 0))%(sizeof(NI32)*8)));
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], x);
			suggestsym_362857(x, s);
		}
		goto LA8;
		LA12: ;
		{
			localerror_165571((*n).Info, ((NU16) 164), (*(*s).Name).S);
		}
		LA8: ;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC16;
		NimStringDesc* LOC20;
		LOC16 = 0;
		LOC16 = ((*(*c).P).Nestedloopcounter <= 0);
		if (!(LOC16)) goto LA17;
		LOC16 = ((*(*c).P).Nestedblockcounter <= 0);
		LA17: ;
		if (!LOC16) goto LA18;
		LOC20 = 0;
		LOC20 = rendertree_211051(n, 4);
		localerror_165571((*n).Info, ((NU16) 164), LOC20);
	}
	goto LA1;
	LA18: ;
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semexprnoderef_416024)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	result = 0;
	result = semexpr_416003(c, n, flags);
	{
		if (!((*result).Kind == ((NU8) 1))) goto LA3;
		result = errornode_251142(c, n);
	}
	LA3: ;
	{
		NimStringDesc* LOC9;
		if (!((*result).Typ == NIM_NIL)) goto LA7;
		LOC9 = 0;
		LOC9 = rendertree_211051(result, 4);
		localerror_165571((*n).Info, ((NU16) 90), LOC9);
		asgnRefNoCycle((void**) &(*result).Typ, errortype_251136(c));
	}
	goto LA5;
	LA7: ;
	{
		semprocvarcheck_438120(c, result);
		semdestructorcheck_439541(c, result, flags);
	}
	LA5: ;
	return result;
}

N_NIMCALL(tsym188833*, symforvar_443874)(tcontext250019* c, tnode188803* n) {
	tsym188833* result;
	tnode188803* m;
	result = 0;
	{
		if (!((*n).Kind == ((NU8) 43))) goto LA3;
		m = (*n).kindU.S6.Sons->data[0];
	}
	goto LA1;
	LA3: ;
	{
		m = n;
	}
	LA1: ;
	result = newsymg_416512(((NU8) 21), m, c);
	return result;
}

N_NIMCALL(void, addforvardecl_443838)(tcontext250019* c, tsym188833* v) {
	{
		tsym188833* shadowed;
		if (!((gnotes_164181 &(IL64(1)<<(((((NU16) 248)- 230))&IL64(63))))!=0)) goto LA3;
		shadowed = findshadowedvar_441827(c, v);
		{
			if (!!((shadowed == NIM_NIL))) goto LA7;
			message_165584((*v).Info, ((NU16) 248), (*(*v).Name).S);
		}
		LA7: ;
	}
	LA3: ;
	adddecl_252550(c, v);
}

N_NIMCALL(tnode188803*, semforvars_443904)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NI length;
	ttype188837* iterbase;
	ttype188837* iter;
	result = 0;
	result = n;
	length = sonslen_189181(n);
	iterbase = skiptypes_192793((*(*n).kindU.S6.Sons->data[(NI32)(length - 2)]).Typ, IL64(562949953421312));
	iter = skiptypes_192793(iterbase, 2048);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = !(((*iter).Kind == ((NU8) 18)));
		if (LOC3) goto LA4;
		LOC3 = (length == 3);
		LA4: ;
		if (!LOC3) goto LA5;
		{
			tsym188833* v;
			if (!(length == 3)) goto LA9;
			v = symforvar_443874(c, (*n).kindU.S6.Sons->data[0]);
			{
				tsym188833* LOC13;
				LOC13 = 0;
				LOC13 = getcurrowner_250215();
				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[0], newsymnode_189095(v));
			{
				if (!!((((*v).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA18;
				addforvardecl_443838(c, v);
			}
			LA18: ;
		}
		goto LA7;
		LA9: ;
		{
			localerror_165571((*n).Info, ((NU16) 111), ((NimStringDesc*) &TMP2675));
		}
		LA7: ;
	}
	goto LA1;
	LA5: ;
	{
		NI LOC22;
		LOC22 = 0;
		LOC22 = sonslen_189185(iter);
		if (!!(((NI32)(length - 2) == LOC22))) goto LA23;
		localerror_165571((*n).Info, ((NU16) 111), ((NimStringDesc*) &TMP2675));
	}
	goto LA1;
	LA23: ;
	{
		NI i_444016;
		NI HEX3Atmp_444144;
		NI res_444146;
		i_444016 = 0;
		HEX3Atmp_444144 = 0;
		HEX3Atmp_444144 = (NI32)(length - 3);
		res_444146 = 0;
		while (1) {
			tsym188833* v;
			if (!(res_444146 <= HEX3Atmp_444144)) goto LA26;
			i_444016 = res_444146;
			v = symforvar_443874(c, (*n).kindU.S6.Sons->data[i_444016]);
			{
				tsym188833* LOC29;
				LOC29 = 0;
				LOC29 = getcurrowner_250215();
				if (!((*LOC29).Kind == ((NU8) 6))) goto LA30;
				(*v).Flags |=((NI32)(1)<<((((NU8) 3))%(sizeof(NI32)*8)));
			}
			LA30: ;
			asgnRefNoCycle((void**) &(*v).Typ, (*iter).Sons->data[i_444016]);
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[i_444016], newsymnode_189095(v));
			{
				if (!!((((*v).Flags &(1<<((((NU8) 31))&31)))!=0))) goto LA34;
				addforvardecl_443838(c, v);
			}
			LA34: ;
			res_444146 += 1;
		} LA26: ;
	}
	LA1: ;
	(*(*c).P).Nestedloopcounter += 1;
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[(NI32)(length - 1)], semstmt_416061(c, (*n).kindU.S6.Sons->data[(NI32)(length - 1)]));
	(*(*c).P).Nestedloopcounter -= 1;
	return result;
}

N_NIMCALL(tnode188803*, instfieldloopbody_443029)(tfieldinstctx443024 c, tnode188803* n, tnode188803* forloop) {
	tnode188803* result;
	result = 0;
	switch ((*n).Kind) {
	case ((NU8) 1) ... ((NU8) 1):
	case ((NU8) 3) ... ((NU8) 23):
	{
		result = n;
	}
	break;
	case ((NU8) 2):
	{
		NI l;
		NI i_443159;
		NI HEX3Atmp_443287;
		NI HEX3Atmp_443288;
		NI res_443290;
		result = n;
		l = sonslen_189181(forloop);
		{
			if (!c.Replacebyfieldname) goto LA5;
			{
				tnode188803* LOC9;
				NimStringDesc* fieldname;
				LOC9 = 0;
				LOC9 = HEX5BHEX5D_189694(forloop, 0);
				if (!((*(*n).kindU.S5.Ident).Sup.Id == (*(*LOC9).kindU.S5.Ident).Sup.Id)) goto LA10;
				{
					if (!c.Tupletype == 0) goto LA14;
					fieldname = (*(*c.Field).Name).S;
				}
				goto LA12;
				LA14: ;
				{
					NimStringDesc* LOC19;
					NimStringDesc* LOC20;
					if (!(*c.Tupletype).N == 0) goto LA17;
					LOC19 = 0;
					LOC20 = 0;
					LOC20 = nimIntToStr(c.Tupleindex);
					LOC19 = rawNewString(LOC20->Sup.len + 5);
appendString(LOC19, ((NimStringDesc*) &TMP3082));
appendString(LOC19, LOC20);
					fieldname = LOC19;
				}
				goto LA12;
				LA17: ;
				{
					fieldname = (*(*(*(*(*c.Tupletype).N).kindU.S6.Sons->data[c.Tupleindex]).kindU.S4.Sym).Name).S;
				}
				LA12: ;
				result = newstrnode_189085(((NU8) 20), fieldname);
				goto BeforeRet;
			}
			LA10: ;
		}
		LA5: ;
		i_443159 = 0;
		HEX3Atmp_443287 = 0;
		HEX3Atmp_443288 = 0;
		HEX3Atmp_443287 = c.Replacebyfieldname;
		HEX3Atmp_443288 = (NI32)(l - 3);
		res_443290 = ((NI) (HEX3Atmp_443287));
		while (1) {
			if (!(res_443290 <= HEX3Atmp_443288)) goto LA22;
			i_443159 = res_443290;
			{
				tnode188803* LOC25;
				tnode188803* call;
				tnode188803* tupl;
				LOC25 = 0;
				LOC25 = HEX5BHEX5D_189694(forloop, i_443159);
				if (!((*(*n).kindU.S5.Ident).Sup.Id == (*(*LOC25).kindU.S5.Ident).Sup.Id)) goto LA26;
				call = (*forloop).kindU.S6.Sons->data[(NI32)(l - 2)];
				tupl = (*call).kindU.S6.Sons->data[(NI32)((NI32)(i_443159 + 1) - ((NI) (c.Replacebyfieldname)))];
				{
					tnode188803* LOC32;
					if (!c.Field == 0) goto LA30;
					result = newnodei_189099(((NU8) 42), (*n).Info);
					add_189390(result, tupl);
					LOC32 = 0;
					LOC32 = newintnode_189069(((NU8) 6), ((NI64) (c.Tupleindex)));
					add_189390(result, LOC32);
				}
				goto LA28;
				LA30: ;
				{
					tnode188803* LOC34;
					result = newnodei_189099(((NU8) 45), (*n).Info);
					add_189390(result, tupl);
					LOC34 = 0;
					LOC34 = newsymnode_190723(c.Field, (*n).Info);
					add_189390(result, LOC34);
				}
				LA28: ;
				goto LA22;
			}
			LA26: ;
			res_443290 += 1;
		} LA22: ;
	}
	break;
	default:
	{
		NI LOC40;
		NI i_443258;
		NI HEX3Atmp_443292;
		NI LOC41;
		NI res_443294;
		{
			if (!((*n).Kind == ((NU8) 110))) goto LA38;
			localerror_165571((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP3083));
		}
		LA38: ;
		result = copynode_189233(n);
		LOC40 = 0;
		LOC40 = sonslen_189181(n);
		newsons_189197(result, LOC40);
		i_443258 = 0;
		HEX3Atmp_443292 = 0;
		LOC41 = 0;
		LOC41 = sonslen_189181(n);
		HEX3Atmp_443292 = (NI32)(LOC41 - 1);
		res_443294 = 0;
		while (1) {
			if (!(res_443294 <= HEX3Atmp_443292)) goto LA42;
			i_443258 = res_443294;
			asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[i_443258], instfieldloopbody_443029(c, (*n).kindU.S6.Sons->data[i_443258], forloop));
			res_443294 += 1;
		} LA42: ;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, semforobjectfields_443303)(tfieldsctx443300 c, tnode188803* typ, tnode188803* forloop, tnode188803* father) {
	switch ((*typ).Kind) {
	case ((NU8) 3):
	{
		tfieldinstctx443024 fc;
		tscope188827* LOC2;
		tnode188803* body;
		tnode188803* LOC3;
		tnode188803* LOC4;
		memset((void*)&fc, 0, sizeof(fc));
		fc.Field = (*typ).kindU.S4.Sym;
		fc.Replacebyfieldname = (c.M == ((NU16) 153));
		LOC2 = 0;
		LOC2 = openscope_252167(c.C);
		(*c.C).Inunrolledcontext += 1;
		LOC3 = 0;
		LOC3 = lastson_189189(forloop);
		body = instfieldloopbody_443029(fc, LOC3, forloop);
		LOC4 = 0;
		LOC4 = semstmt_416061(c.C, body);
		add_189390(father, LOC4);
		(*c.C).Inunrolledcontext -= 1;
		closescope_252179(c.C);
	}
	break;
	case ((NU8) 23):
	{
	}
	break;
	case ((NU8) 137):
	{
		NI l_443366;
		tnode188803* call;
		tnode188803* LOC12;
		tnode188803* casestmt;
		tnode188803* access;
		tnode188803* LOC13;
		NI i_443476;
		NI HEX3Atmp_443495;
		NI LOC14;
		NI res_443497;
		l_443366 = len_189264(forloop);
		call = (*forloop).kindU.S6.Sons->data[(NI32)(l_443366 - 2)];
		{
			NI LOC9;
			LOC9 = 0;
			LOC9 = len_189264(call);
			if (!(2 < LOC9)) goto LA10;
			localerror_165571((*forloop).Info, ((NU16) 4), ((NimStringDesc*) &TMP3084));
			goto BeforeRet;
		}
		LA10: ;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_189694(typ, 0);
		semforobjectfields_443303(c, LOC12, forloop, father);
		casestmt = newnodei_189099(((NU8) 97), (*forloop).Info);
		access = newnodei_190803(((NU8) 45), (*forloop).Info, 2);
		asgnRefNoCycle((void**) &(*access).kindU.S6.Sons->data[0], (*call).kindU.S6.Sons->data[1]);
		asgnRefNoCycle((void**) &(*access).kindU.S6.Sons->data[1], newsymnode_190723((*(*typ).kindU.S6.Sons->data[0]).kindU.S4.Sym, (*forloop).Info));
		LOC13 = 0;
		LOC13 = semexprwithtype_416011(c.C, access, 0);
		add_189390(casestmt, LOC13);
		i_443476 = 0;
		HEX3Atmp_443495 = 0;
		LOC14 = 0;
		LOC14 = len_189264(typ);
		HEX3Atmp_443495 = LOC14 - 1;
		res_443497 = 1;
		while (1) {
			tnode188803* branch;
			tnode188803* LOC16;
			NI l;
			tnode188803* LOC17;
			tnode188803* LOC18;
			tnode188803* LOC19;
			if (!(res_443497 <= HEX3Atmp_443495)) goto LA15;
			i_443476 = res_443497;
			LOC16 = 0;
			LOC16 = HEX5BHEX5D_189694(typ, i_443476);
			branch = copytree_189237(LOC16);
			l = len_189264(branch);
			asgnRefNoCycle((void**) &(*branch).kindU.S6.Sons->data[(NI32)(l - 1)], newnodei_189099(((NU8) 114), (*forloop).Info));
			LOC17 = 0;
			LOC17 = HEX5BHEX5D_189694(typ, i_443476);
			LOC18 = 0;
			LOC18 = lastson_189189(LOC17);
			LOC19 = 0;
			LOC19 = HEX5BHEX5D_189694(branch, (NI32)(l - 1));
			semforobjectfields_443303(c, LOC18, forloop, LOC19);
			add_189390(casestmt, branch);
			res_443497 += 1;
		} LA15: ;
		add_189390(father, casestmt);
	}
	break;
	case ((NU8) 136):
	{
		tnode188803* t_443493;
		NI i_443500;
		NI HEX3Atmp_443502;
		NI LOC21;
		NI res_443504;
		t_443493 = 0;
		i_443500 = 0;
		HEX3Atmp_443502 = 0;
		LOC21 = 0;
		LOC21 = len_189264(typ);
		HEX3Atmp_443502 = LOC21 - 1;
		res_443504 = 0;
		while (1) {
			if (!(res_443504 <= HEX3Atmp_443502)) goto LA22;
			i_443500 = res_443504;
			t_443493 = (*typ).kindU.S6.Sons->data[i_443500];
			semforobjectfields_443303(c, t_443493, forloop, father);
			res_443504 += 1;
		} LA22: ;
	}
	break;
	default:
	{
		illformedast_251203(typ);
	}
	break;
	}
	BeforeRet: ;
}

N_NIMCALL(tnode188803*, semforfields_443508)(tcontext250019* c, tnode188803* n, NU16 m) {
	tnode188803* result;
	tsym188833* truesymbol;
	tident167019* LOC1;
	tnode188803* stmts;
	NI length;
	tnode188803* call;
	ttype188837* tupletypea;
	NI i_443665;
	NI HEX3Atmp_443825;
	NI LOC17;
	NI res_443827;
	result = 0;
	result = newnodei_190803(((NU8) 96), (*n).Info, 2);
	LOC1 = 0;
	LOC1 = getident_167456(((NimStringDesc*) &TMP3079));
	truesymbol = strtableget_197084((*systemmodule_242017).kindU.S3.Tab, LOC1);
	{
		tident167019* LOC6;
		tsym188833* LOC7;
		if (!(truesymbol == NIM_NIL)) goto LA4;
		localerror_165571((*n).Info, ((NU16) 64), ((NimStringDesc*) &TMP3080));
		LOC6 = 0;
		LOC6 = getident_167456(((NimStringDesc*) &TMP3079));
		LOC7 = 0;
		LOC7 = getcurrowner_250215();
		truesymbol = newsym_189053(((NU8) 0), LOC6, LOC7, (*n).Info);
		asgnRefNoCycle((void**) &(*truesymbol).Typ, getsystype_242024(((NU8) 1)));
	}
	LA4: ;
	asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], newsymnode_190723(truesymbol, (*n).Info));
	stmts = newnodei_189099(((NU8) 114), (*n).Info);
	asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[1], stmts);
	length = sonslen_189181(n);
	call = (*n).kindU.S6.Sons->data[(NI32)(length - 2)];
	{
		NI LOC10;
		LOC10 = 0;
		LOC10 = sonslen_189181(call);
		if (!!(((NI32)(length - 2) == (NI32)((NI32)(LOC10 - 1) + ((NI) ((m == ((NU16) 153)))))))) goto LA11;
		localerror_165571((*n).Info, ((NU16) 111), ((NimStringDesc*) &TMP2675));
		goto BeforeRet;
	}
	LA11: ;
	tupletypea = skiptypes_192793((*(*call).kindU.S6.Sons->data[1]).Typ, IL64(211106240964608));
	{
		if (!!(((*tupletypea).Kind == ((NU8) 18) || (*tupletypea).Kind == ((NU8) 17)))) goto LA15;
		localerror_165571((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP3081));
		goto BeforeRet;
	}
	LA15: ;
	i_443665 = 0;
	HEX3Atmp_443825 = 0;
	LOC17 = 0;
	LOC17 = len_189264(call);
	HEX3Atmp_443825 = (NI32)(LOC17 - 1);
	res_443827 = 1;
	while (1) {
		ttype188837* tupletypeb;
		if (!(res_443827 <= HEX3Atmp_443825)) goto LA18;
		i_443665 = res_443827;
		tupletypeb = skiptypes_192793((*(*call).kindU.S6.Sons->data[i_443665]).Typ, IL64(211106240964608));
		{
			NIM_BOOL LOC21;
			LOC21 = 0;
			LOC21 = sametype_228116(tupletypea, tupletypeb, 0);
			if (!!(LOC21)) goto LA22;
			typemismatch_416126((*call).kindU.S6.Sons->data[i_443665], tupletypea, tupletypeb);
		}
		LA22: ;
		res_443827 += 1;
	} LA18: ;
	(*(*c).P).Nestedloopcounter += 1;
	{
		tnode188803* loopbody;
		NI i_443763;
		NI HEX3Atmp_443830;
		NI LOC28;
		NI res_443832;
		if (!((*tupletypea).Kind == ((NU8) 18))) goto LA26;
		loopbody = (*n).kindU.S6.Sons->data[(NI32)(length - 1)];
		i_443763 = 0;
		HEX3Atmp_443830 = 0;
		LOC28 = 0;
		LOC28 = sonslen_189185(tupletypea);
		HEX3Atmp_443830 = (NI32)(LOC28 - 1);
		res_443832 = 0;
		while (1) {
			tscope188827* LOC30;
			tfieldinstctx443024 fc;
			tnode188803* body;
			tnode188803* LOC31;
			if (!(res_443832 <= HEX3Atmp_443830)) goto LA29;
			i_443763 = res_443832;
			LOC30 = 0;
			LOC30 = openscope_252167(c);
			memset((void*)&fc, 0, sizeof(fc));
			fc.Tupletype = tupletypea;
			fc.Tupleindex = i_443763;
			fc.Replacebyfieldname = (m == ((NU16) 153));
			body = instfieldloopbody_443029(fc, loopbody, n);
			(*c).Inunrolledcontext += 1;
			LOC31 = 0;
			LOC31 = semstmt_416061(c, body);
			add_189390(stmts, LOC31);
			(*c).Inunrolledcontext -= 1;
			closescope_252179(c);
			res_443832 += 1;
		} LA29: ;
	}
	goto LA24;
	LA26: ;
	{
		tfieldsctx443300 fc;
		memset((void*)&fc, 0, sizeof(fc));
		fc.M = m;
		fc.C = c;
		semforobjectfields_443303(fc, (*tupletypea).N, n, stmts);
	}
	LA24: ;
	(*(*c).P).Nestedloopcounter -= 1;
	{
		NIM_BOOL LOC35;
		tnode188803* b;
		LOC35 = 0;
		LOC35 = hassonwith_189217(stmts, ((NU8) 109));
		if (!LOC35) goto LA36;
		b = newnodei_189099(((NU8) 109), (*n).Info);
		add_189390(b, emptynode_189727);
		add_189390(stmts, b);
	}
	goto LA33;
	LA36: ;
	{
		result = stmts;
	}
	LA33: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, implicititerator_444150)(tcontext250019* c, NimStringDesc* it, tnode188803* arg) {
	tnode188803* result;
	tident167019* LOC1;
	tnode188803* LOC2;
	result = 0;
	result = newnodei_189099(((NU8) 27), (*arg).Info);
	LOC1 = 0;
	LOC1 = getident_167456(it);
	LOC2 = 0;
	LOC2 = newidentnode_189090(LOC1, (*arg).Info);
	add_189390(result, LOC2);
	{
		NIM_BOOL LOC5;
		tnode188803* 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_439802(arg);
		add_189390(result, LOC9);
	}
	goto LA3;
	LA7: ;
	{
		add_189390(result, arg);
	}
	LA3: ;
	result = semexprnoderef_416024(c, result, 2);
	return result;
}

N_NIMCALL(tnode188803*, semfor_444184)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NI length;
	tscope188827* LOC1;
	tnode188803* call;
	NIM_BOOL iscallexpr;
	result = 0;
	result = n;
	checkminsonslen_251215(n, 3);
	length = sonslen_189181(n);
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[(NI32)(length - 2)], semexprnoderef_416024(c, (*n).kindU.S6.Sons->data[(NI32)(length - 2)], 2));
	call = (*n).kindU.S6.Sons->data[(NI32)(length - 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;
		tnode188803* LOC7;
		tnode188803* LOC9;
		LOC4 = 0;
		LOC5 = 0;
		LOC5 = iscallexpr;
		if (!(LOC5)) goto LA6;
		LOC7 = 0;
		LOC7 = HEX5BHEX5D_189694(call, 0);
		LOC5 = ((*LOC7).Kind == ((NU8) 3));
		LA6: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA8;
		LOC9 = 0;
		LOC9 = HEX5BHEX5D_189694(call, 0);
		LOC4 = !(((*(*LOC9).kindU.S4.Sym).Magic == ((NU16) 0)));
		LA8: ;
		if (!LOC4) goto LA10;
		{
			if (!((*(*(*call).kindU.S6.Sons->data[0]).kindU.S4.Sym).Magic == ((NU16) 154))) goto LA14;
			result = semforvars_443904(c, n);
			(*result).Kind = ((NU8) 95);
		}
		goto LA12;
		LA14: ;
		{
			result = semforfields_443508(c, n, (*(*(*call).kindU.S6.Sons->data[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[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_443904(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[0]).Kind == ((NU8) 3)));
		LA27: ;
		LOC25 = LOC26;
		if (LOC25) goto LA28;
		LOC25 = !(((49152 &(1<<(((*(*(*call).kindU.S6.Sons->data[0]).kindU.S4.Sym).Kind)&31)))!=0));
		LA28: ;
		if (!LOC25) goto LA29;
		{
			if (!(length == 3)) goto LA33;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[(NI32)(length - 2)], implicititerator_444150(c, ((NimStringDesc*) &TMP3085), (*n).kindU.S6.Sons->data[(NI32)(length - 2)]));
		}
		goto LA31;
		LA33: ;
		{
			if (!(length == 4)) goto LA36;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[(NI32)(length - 2)], implicititerator_444150(c, ((NimStringDesc*) &TMP3086), (*n).kindU.S6.Sons->data[(NI32)(length - 2)]));
		}
		goto LA31;
		LA36: ;
		{
			localerror_165571((*(*n).kindU.S6.Sons->data[(NI32)(length - 2)]).Info, ((NU16) 218), ((NimStringDesc*) &TMP2675));
		}
		LA31: ;
		result = semforvars_443904(c, n);
	}
	goto LA2;
	LA29: ;
	{
		result = semforvars_443904(c, n);
	}
	LA2: ;
	{
		if (!((*(*n).kindU.S6.Sons->data[(NI32)(length - 1)]).Typ == enforcevoidcontext_437695)) goto LA42;
		asgnRefNoCycle((void**) &(*result).Typ, enforcevoidcontext_437695);
	}
	LA42: ;
	closescope_252179(c);
	return result;
}

N_NIMCALL(NI64, tocover_438040)(ttype188837* t) {
	NI64 result;
	ttype188837* t2;
	result = 0;
	t2 = skiptypes_192793(t, IL64(211106242013184));
	{
		NIM_BOOL LOC3;
		NI LOC7;
		LOC3 = 0;
		LOC3 = ((*t2).Kind == ((NU8) 14));
		if (!(LOC3)) goto LA4;
		LOC3 = enumhasholes_223075(t2);
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		LOC7 = sonslen_189181((*t2).N);
		result = ((NI64) (LOC7));
	}
	goto LA1;
	LA5: ;
	{
		ttype188837* LOC9;
		LOC9 = 0;
		LOC9 = skiptypes_192793(t, IL64(211106240964608));
		result = lengthord_223010(LOC9);
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semcase_440561)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tscope188827* LOC1;
	NIM_BOOL chckcovered;
	NI64 covered;
	ttype188837* typ;
	NIM_BOOL haselse;
	ttype188837* LOC2;
	NI i_440642;
	NI HEX3Atmp_441205;
	NI LOC6;
	NI res_441207;
	result = 0;
	result = n;
	checkminsonslen_251215(n, 2);
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[0], 0));
	chckcovered = NIM_FALSE;
	covered = 0;
	typ = commontypebegin_416199;
	haselse = NIM_FALSE;
	LOC2 = 0;
	LOC2 = skiptypes_192793((*(*n).kindU.S6.Sons->data[0]).Typ, IL64(211106242013184));
	switch ((*LOC2).Kind) {
	case ((NU8) 31) ... ((NU8) 35):
	case ((NU8) 2):
	case ((NU8) 14):
	case ((NU8) 40) ... ((NU8) 43):
	{
		chckcovered = NIM_TRUE;
	}
	break;
	case ((NU8) 36) ... ((NU8) 39):
	case ((NU8) 28):
	case ((NU8) 50):
	{
	}
	break;
	default:
	{
		localerror_165571((*n).Info, ((NU16) 107), ((NimStringDesc*) &TMP2675));
		goto BeforeRet;
	}
	break;
	}
	i_440642 = 0;
	HEX3Atmp_441205 = 0;
	LOC6 = 0;
	LOC6 = sonslen_189181(n);
	HEX3Atmp_441205 = (NI32)(LOC6 - 1);
	res_441207 = 1;
	while (1) {
		tnode188803* x;
		if (!(res_441207 <= HEX3Atmp_441205)) goto LA7;
		i_440642 = res_441207;
		x = (*n).kindU.S6.Sons->data[i_440642];
		switch ((*x).Kind) {
		case ((NU8) 85):
		{
			NI last;
			NI LOC9;
			checkminsonslen_251215(x, 2);
			semcasebranch_425080(c, n, x, i_440642, &covered);
			LOC9 = 0;
			LOC9 = sonslen_189181(x);
			last = (NI32)(LOC9 - 1);
			asgnRefNoCycle((void**) &(*x).kindU.S6.Sons->data[last], semexprbranchscope_439841(c, (*x).kindU.S6.Sons->data[last]));
			typ = commontype_416202(typ, (*(*x).kindU.S6.Sons->data[last]).Typ);
		}
		break;
		case ((NU8) 86):
		{
			tscope188827* LOC11;
			tnode188803* LOC12;
			chckcovered = NIM_FALSE;
			checksonslen_251209(x, 2);
			LOC11 = 0;
			LOC11 = openscope_252167(c);
			LOC12 = 0;
			LOC12 = semexprwithtype_416011(c, (*x).kindU.S6.Sons->data[0], 0);
			asgnRefNoCycle((void**) &(*x).kindU.S6.Sons->data[0], forcebool_422446(c, LOC12));
			asgnRefNoCycle((void**) &(*x).kindU.S6.Sons->data[1], semexprbranch_439807(c, (*x).kindU.S6.Sons->data[1]));
			typ = commontype_416202(typ, (*(*x).kindU.S6.Sons->data[1]).Typ);
			closescope_252179(c);
		}
		break;
		case ((NU8) 88):
		{
			chckcovered = NIM_FALSE;
			checksonslen_251209(x, 1);
			asgnRefNoCycle((void**) &(*x).kindU.S6.Sons->data[0], semexprbranchscope_439841(c, (*x).kindU.S6.Sons->data[0]));
			typ = commontype_416202(typ, (*(*x).kindU.S6.Sons->data[0]).Typ);
			haselse = NIM_TRUE;
		}
		break;
		default:
		{
			illformedast_251203(x);
		}
		break;
		}
		res_441207 += 1;
	} LA7: ;
	{
		if (!chckcovered) goto LA17;
		{
			NI64 LOC21;
			LOC21 = 0;
			LOC21 = tocover_438040((*(*n).kindU.S6.Sons->data[0]).Typ);
			if (!(covered == LOC21)) goto LA22;
			haselse = NIM_TRUE;
		}
		goto LA19;
		LA22: ;
		{
			localerror_165571((*n).Info, ((NU16) 151), ((NimStringDesc*) &TMP2675));
		}
		LA19: ;
	}
	LA17: ;
	closescope_252179(c);
	{
		NIM_BOOL LOC27;
		NIM_BOOL LOC28;
		NI i_441118;
		NI HEX3Atmp_441209;
		NI LOC33;
		NI res_441211;
		LOC27 = 0;
		LOC28 = 0;
		LOC28 = isemptytype_195210(typ);
		if (LOC28) goto LA29;
		LOC28 = ((*typ).Kind == ((NU8) 5));
		LA29: ;
		LOC27 = LOC28;
		if (LOC27) goto LA30;
		LOC27 = !(haselse);
		LA30: ;
		if (!LOC27) goto LA31;
		i_441118 = 0;
		HEX3Atmp_441209 = 0;
		LOC33 = 0;
		LOC33 = len_189264(n);
		HEX3Atmp_441209 = (NI32)(LOC33 - 1);
		res_441211 = 1;
		while (1) {
			tnode188803* LOC35;
			if (!(res_441211 <= HEX3Atmp_441209)) goto LA34;
			i_441118 = res_441211;
			LOC35 = 0;
			LOC35 = lastson_189189((*n).kindU.S6.Sons->data[i_441118]);
			discardcheck_439985(c, LOC35);
			res_441211 += 1;
		} LA34: ;
		{
			if (!(typ == enforcevoidcontext_437695)) goto LA38;
			asgnRefNoCycle((void**) &(*result).Typ, enforcevoidcontext_437695);
		}
		LA38: ;
	}
	goto LA25;
	LA31: ;
	{
		NI i_441159;
		NI HEX3Atmp_441213;
		NI LOC41;
		NI res_441215;
		i_441159 = 0;
		HEX3Atmp_441213 = 0;
		LOC41 = 0;
		LOC41 = len_189264(n);
		HEX3Atmp_441213 = (NI32)(LOC41 - 1);
		res_441215 = 1;
		while (1) {
			tnode188803* it;
			NI j;
			NI LOC43;
			if (!(res_441215 <= HEX3Atmp_441213)) goto LA42;
			i_441159 = res_441215;
			it = (*n).kindU.S6.Sons->data[i_441159];
			LOC43 = 0;
			LOC43 = len_189264(it);
			j = (NI32)(LOC43 - 1);
			asgnRefNoCycle((void**) &(*it).kindU.S6.Sons->data[j], fitnode_416037(c, typ, (*it).kindU.S6.Sons->data[j]));
			res_441215 += 1;
		} LA42: ;
		asgnRefNoCycle((void**) &(*result).Typ, typ);
	}
	LA25: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semreturn_457784)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	checksonslen_251209(n, 1);
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((208896 &(1<<(((*(*(*c).P).Owner).Kind)&31)))!=0);
		if (LOC3) goto LA4;
		LOC3 = ((*(*(*c).P).Owner).Kind == ((NU8) 15));
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA9;
			{
				tnode188803* a;
				tnode188803* LOC15;
				if (!!(((*(*c).P).Resultsym == NIM_NIL))) goto LA13;
				a = newnodei_189099(((NU8) 73), (*(*n).kindU.S6.Sons->data[0]).Info);
				LOC15 = 0;
				LOC15 = newsymnode_189095((*(*c).P).Resultsym);
				addson_189207(a, LOC15);
				addson_189207(a, (*n).kindU.S6.Sons->data[0]);
				asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semasgn_457417(c, a));
				{
					NIM_BOOL LOC18;
					tnode188803* LOC19;
					tnode188803* LOC20;
					tnode188803* LOC22;
					tnode188803* LOC23;
					LOC18 = 0;
					LOC19 = 0;
					LOC19 = HEX5BHEX5D_189694(n, 0);
					LOC20 = 0;
					LOC20 = HEX5BHEX5D_189694(LOC19, 1);
					LOC18 = ((*LOC20).Kind == ((NU8) 3));
					if (!(LOC18)) goto LA21;
					LOC22 = 0;
					LOC22 = HEX5BHEX5D_189694(n, 0);
					LOC23 = 0;
					LOC23 = HEX5BHEX5D_189694(LOC22, 1);
					LOC18 = ((*LOC23).kindU.S4.Sym == (*(*c).P).Resultsym);
					LA21: ;
					if (!LOC18) goto LA24;
					asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], emptynode_189727);
				}
				LA24: ;
			}
			goto LA11;
			LA13: ;
			{
				localerror_165571((*n).Info, ((NU16) 179), ((NimStringDesc*) &TMP2675));
			}
			LA11: ;
		}
		LA9: ;
	}
	goto LA1;
	LA5: ;
	{
		localerror_165571((*n).Info, ((NU16) 163), ((NimStringDesc*) &TMP3087));
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semusing_459045)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* e_459076;
	tnodeseq188797* HEX3Atmp_459151;
	NI i_459153;
	NI l_459155;
	result = 0;
	result = newnodei_189099(((NU8) 1), (*n).Info);
	e_459076 = 0;
	HEX3Atmp_459151 = 0;
	HEX3Atmp_459151 = (*n).kindU.S6.Sons;
	i_459153 = 0;
	l_459155 = HEX3Atmp_459151->Sup.len;
	while (1) {
		if (!(i_459153 < l_459155)) goto LA1;
		e_459076 = HEX3Atmp_459151->data[i_459153];
		{
			tnode188803* usedsym;
			NimStringDesc* LOC10;
			usedsym = semexpr_416003(c, e_459076, 0);
			{
				if (!((*usedsym).Kind == ((NU8) 3))) goto LA5;
				switch ((*(*usedsym).kindU.S4.Sym).Kind) {
				case ((NU8) 3):
				case ((NU8) 8) ... ((NU8) 11):
				case ((NU8) 21):
				{
					safeadd_420113(&(*(*c).Currentscope).Usingsyms, usedsym);
					goto LA2;
				}
				break;
				case ((NU8) 12):
				case ((NU8) 18):
				case ((NU8) 17):
				case ((NU8) 14):
				case ((NU8) 15):
				case ((NU8) 13):
				case ((NU8) 16):
				{
					adddeclat_252571((*c).Currentscope, (*usedsym).kindU.S4.Sym);
					goto LA2;
				}
				break;
				default:
				{
				}
				break;
				}
			}
			LA5: ;
			LOC10 = 0;
			LOC10 = rendertree_211051(e_459076, 0);
			localerror_165571((*e_459076).Info, ((NU16) 200), LOC10);
		} LA2: ;
		i_459153 += 1;
	} LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semasm_437895)(tcontext250019* con, tnode188803* n) {
	tnode188803* result;
	NIM_CHAR marker;
	result = 0;
	checksonslen_251209(n, 2);
	marker = pragmaasm_267087(con, (*n).kindU.S6.Sons->data[0]);
	{
		if (!((NU8)(marker) == (NU8)(0))) goto LA3;
		marker = 96;
	}
	LA3: ;
	result = semasmoremit_269409(con, n, marker);
	return result;
}

N_NIMCALL(void, semyieldvarresult_458098)(tcontext250019* c, tnode188803* n, ttype188837* restype) {
	ttype188837* t;
	t = skiptypes_192793(restype, 2048);
	switch ((*t).Kind) {
	case ((NU8) 23):
	{
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], takeimplicitaddr_457259(c, (*n).kindU.S6.Sons->data[0]));
	}
	break;
	case ((NU8) 18):
	{
		NI i_458154;
		NI HEX3Atmp_458381;
		NI LOC3;
		NI res_458383;
		i_458154 = 0;
		HEX3Atmp_458381 = 0;
		LOC3 = 0;
		LOC3 = sonslen_189185(t);
		HEX3Atmp_458381 = LOC3 - 1;
		res_458383 = 0;
		while (1) {
			ttype188837* e;
			if (!(res_458383 <= HEX3Atmp_458381)) goto LA4;
			i_458154 = res_458383;
			e = skiptypes_192793((*t).Sons->data[i_458154], 2048);
			{
				if (!((*e).Kind == ((NU8) 23))) goto LA7;
				{
					if (!((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 37))) goto LA11;
					asgnRefNoCycle((void**) &(*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[i_458154], takeimplicitaddr_457259(c, (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[i_458154]));
				}
				goto LA9;
				LA11: ;
				{
					NIM_BOOL LOC14;
					tnode188803* a;
					LOC14 = 0;
					LOC14 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 58) || (*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 59));
					if (!(LOC14)) goto LA15;
					LOC14 = ((*(*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1]).Kind == ((NU8) 37));
					LA15: ;
					if (!LOC14) goto LA16;
					a = (*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1];
					asgnRefNoCycle((void**) &(*a).kindU.S6.Sons->data[i_458154], takeimplicitaddr_457259(c, (*a).kindU.S6.Sons->data[i_458154]));
				}
				goto LA9;
				LA16: ;
				{
					localerror_165571((*(*n).kindU.S6.Sons->data[0]).Info, ((NU16) 188), ((NimStringDesc*) &TMP3089));
				}
				LA9: ;
			}
			LA7: ;
			res_458383 += 1;
		} LA4: ;
	}
	break;
	default:
	{
	}
	break;
	}
}

N_NIMCALL(tnode188803*, semyield_458387)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = n;
	checksonslen_251209(n, 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_165571((*n).Info, ((NU16) 36), ((NimStringDesc*) &TMP2675));
	}
	goto LA1;
	LA5: ;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = (0 < (*(*c).P).Intrystmt);
		if (!(LOC8)) goto LA9;
		LOC8 = !(((*(*(*(*c).P).Owner).Typ).Callconv == ((NU8) 5)));
		LA9: ;
		if (!LOC8) goto LA10;
		localerror_165571((*n).Info, ((NU16) 37), ((NimStringDesc*) &TMP2675));
	}
	goto LA1;
	LA10: ;
	{
		ttype188837* itertype;
		ttype188837* restype;
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 1)))) goto LA13;
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[0], 0));
		itertype = (*(*(*c).P).Owner).Typ;
		restype = (*itertype).Sons->data[0];
		{
			ttype188837* adjustedres;
			if (!!((restype == NIM_NIL))) goto LA17;
			{
				if (!((*(*(*c).P).Owner).Kind == ((NU8) 14))) goto LA21;
				adjustedres = base_223029(restype);
			}
			goto LA19;
			LA21: ;
			{
				adjustedres = restype;
			}
			LA19: ;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], fitnode_416037(c, adjustedres, (*n).kindU.S6.Sons->data[0]));
			{
				if (!((*(*n).kindU.S6.Sons->data[0]).Typ == NIM_NIL)) goto LA26;
				internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3088));
			}
			LA26: ;
			{
				NIM_BOOL LOC30;
				ttype188837* inferred;
				LOC30 = 0;
				LOC30 = ismetatype_189732(adjustedres);
				if (!(LOC30)) goto LA31;
				LOC30 = !(((*adjustedres).Kind == ((NU8) 8)));
				LA31: ;
				if (!LOC30) goto LA32;
				inferred = (*(*n).kindU.S6.Sons->data[0]).Typ;
				{
					if (!((*(*(*c).P).Owner).Kind == ((NU8) 14))) goto LA36;
					asgnRefNoCycle((void**) &(*(*itertype).Sons->data[0]).Sons->data[0], inferred);
				}
				goto LA34;
				LA36: ;
				{
					asgnRefNoCycle((void**) &(*itertype).Sons->data[0], inferred);
				}
				LA34: ;
			}
			LA32: ;
			semyieldvarresult_458098(c, n, adjustedres);
		}
		goto LA15;
		LA17: ;
		{
			localerror_165571((*n).Info, ((NU16) 39), ((NimStringDesc*) &TMP2675));
		}
		LA15: ;
	}
	goto LA1;
	LA13: ;
	{
		if (!!(((*(*(*(*c).P).Owner).Typ).Sons->data[0] == NIM_NIL))) goto LA41;
		localerror_165571((*n).Info, ((NU16) 4), ((NimStringDesc*) &TMP3090));
	}
	goto LA1;
	LA41: ;
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, semiterator_448137)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NU8 kind;
	tsym188833* s;
	ttype188837* t;
	result = 0;
	{
		NIM_BOOL LOC3;
		tnode188803* LOC4;
		tnode188803* LOC6;
		LOC3 = 0;
		LOC4 = 0;
		LOC4 = HEX5BHEX5D_189694(n, 4);
		LOC3 = haspragma_272125(LOC4, ((NU8) 133));
		if (LOC3) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_189694(n, 0);
		LOC3 = ((*LOC6).Kind == ((NU8) 1));
		LA5: ;
		if (!LOC3) goto LA7;
		kind = ((NU8) 15);
	}
	goto LA1;
	LA7: ;
	{
		kind = ((NU8) 14);
	}
	LA1: ;
	{
		tnode188803* LOC12;
		tnode188803* LOC15;
		tnode188803* LOC16;
		LOC12 = 0;
		LOC12 = HEX5BHEX5D_189694(n, 0);
		if (!((*LOC12).Kind == ((NU8) 3))) goto LA13;
		LOC15 = 0;
		LOC15 = HEX5BHEX5D_189694(n, 0);
		asgnRefNoCycle((void**) &(*(*LOC15).kindU.S4.Sym).Owner, getcurrowner_250215());
		LOC16 = 0;
		LOC16 = HEX5BHEX5D_189694(n, 0);
		(*(*LOC16).kindU.S4.Sym).Kind = kind;
	}
	LA13: ;
	result = semprocaux_446878(c, n, kind, TMP3092, ((NU8) 0));
	s = (*(*result).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	t = (*s).Typ;
	{
		NIM_BOOL LOC19;
		LOC19 = 0;
		LOC19 = ((*t).Sons->data[0] == NIM_NIL);
		if (!(LOC19)) goto LA20;
		LOC19 = !(((*(*s).Typ).Callconv == ((NU8) 8)));
		LA20: ;
		if (!LOC19) goto LA21;
		localerror_165571((*n).Info, ((NU16) 178), ((NimStringDesc*) &TMP3093));
	}
	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[6]).Kind == ((NU8) 1));
		if (!(LOC30)) goto LA31;
		LOC30 = ((*s).Magic == ((NU16) 0));
		LA31: ;
		if (!LOC30) goto LA32;
		localerror_165571((*n).Info, ((NU16) 138), (*(*s).Name).S);
	}
	LA32: ;
	return result;
}

N_NIMCALL(tnode188803*, semmethod_448478)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tsym188833* s;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_416498(c);
		if (!!(LOC3)) goto LA4;
		localerror_165571((*n).Info, ((NU16) 181), ((NimStringDesc*) &TMP3094));
	}
	LA4: ;
	result = semprocaux_446878(c, n, ((NU8) 13), TMP2866, ((NU8) 0));
	s = (*(*result).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	{
		NIM_BOOL LOC8;
		NIM_BOOL LOC9;
		LOC8 = 0;
		LOC9 = 0;
		LOC9 = isgenericroutine_194927(s);
		LOC8 = !(LOC9);
		if (!(LOC8)) goto LA10;
		LOC8 = !(((*(*result).kindU.S6.Sons->data[6]).Kind == ((NU8) 1)));
		LA10: ;
		if (!LOC8) goto LA11;
		{
			NIM_BOOL LOC15;
			LOC15 = 0;
			LOC15 = hasobjparam_448440(s);
			if (!LOC15) goto LA16;
			methoddef_364446(s, NIM_FALSE);
		}
		goto LA13;
		LA16: ;
		{
			localerror_165571((*n).Info, ((NU16) 182), ((NimStringDesc*) &TMP3094));
		}
		LA13: ;
	}
	LA11: ;
	return result;
}

N_NIMCALL(tnode188803*, semconverterdef_448536)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tsym188833* s;
	ttype188837* t;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = istoplevel_416498(c);
		if (!!(LOC3)) goto LA4;
		localerror_165571((*n).Info, ((NU16) 181), ((NimStringDesc*) &TMP3095));
	}
	LA4: ;
	checksonslen_251209(n, 7);
	result = semprocaux_446878(c, n, ((NU8) 16), TMP2866, ((NU8) 0));
	s = (*(*result).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	t = (*s).Typ;
	{
		if (!((*t).Sons->data[0] == NIM_NIL)) goto LA8;
		localerror_165571((*n).Info, ((NU16) 178), ((NimStringDesc*) &TMP3095));
	}
	LA8: ;
	{
		NI LOC12;
		LOC12 = 0;
		LOC12 = sonslen_189185(t);
		if (!!((LOC12 == 2))) goto LA13;
		localerror_165571((*n).Info, ((NU16) 213), ((NimStringDesc*) &TMP3095));
	}
	LA13: ;
	addconverter_250523(c, s);
	return result;
}

N_NIMCALL(tnode188803*, semmacrodef_448589)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tsym188833* s;
	ttype188837* t;
	result = 0;
	checksonslen_251209(n, 7);
	result = semprocaux_446878(c, n, ((NU8) 17), TMP3096, ((NU8) 0));
	s = (*(*result).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	t = (*s).Typ;
	{
		if (!((*t).Sons->data[0] == NIM_NIL)) goto LA3;
		localerror_165571((*n).Info, ((NU16) 178), ((NimStringDesc*) &TMP3097));
	}
	LA3: ;
	{
		if (!((*(*n).kindU.S6.Sons->data[6]).Kind == ((NU8) 1))) goto LA7;
		localerror_165571((*n).Info, ((NU16) 138), (*(*s).Name).S);
	}
	LA7: ;
	return result;
}

N_NIMCALL(tnode188803*, evalinclude_448665)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	NI i_448682;
	NI HEX3Atmp_448700;
	NI LOC1;
	NI res_448702;
	result = 0;
	result = newnodei_189099(((NU8) 114), (*n).Info);
	addson_189207(result, n);
	i_448682 = 0;
	HEX3Atmp_448700 = 0;
	LOC1 = 0;
	LOC1 = sonslen_189181(n);
	HEX3Atmp_448700 = (NI32)(LOC1 - 1);
	res_448702 = 0;
	while (1) {
		NI32 f;
		if (!(res_448702 <= HEX3Atmp_448700)) goto LA2;
		i_448682 = res_448702;
		f = checkmodulename_255227((*n).kindU.S6.Sons->data[i_448682]);
		{
			if (!!((f == ((NI32) -1)))) goto LA5;
			{
				NIM_BOOL LOC9;
				NimStringDesc* LOC12;
				LOC9 = 0;
				LOC9 = containsorincl_185888(&(*c).Includedfiles, ((NI) (f)));
				if (!LOC9) goto LA10;
				LOC12 = 0;
				LOC12 = tofilename_164780(f);
				localerror_165571((*n).Info, ((NU16) 25), LOC12);
			}
			goto LA7;
			LA10: ;
			{
				tnode188803* LOC14;
				tnode188803* LOC15;
				LOC14 = 0;
				LOC14 = gincludefile_246065((*c).Module, f);
				LOC15 = 0;
				LOC15 = semstmt_416061(c, LOC14);
				addson_189207(result, LOC15);
				excl_185860(&(*c).Includedfiles, ((NI) (f)));
			}
			LA7: ;
		}
		LA5: ;
		res_448702 += 1;
	} LA2: ;
	return result;
}

N_NIMCALL(tnode188803*, semexport_462305)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* x;
	NI i_462332;
	NI HEX3Atmp_462602;
	NI LOC1;
	NI res_462604;
	result = 0;
	x = newnodei_189099((*n).Kind, (*n).Info);
	i_462332 = 0;
	HEX3Atmp_462602 = 0;
	LOC1 = 0;
	LOC1 = len_189264(n);
	HEX3Atmp_462602 = LOC1 - 1;
	res_462604 = 0;
	while (1) {
		tnode188803* a;
		toverloaditer252363 o;
		tsym188833* s;
		if (!(res_462604 <= HEX3Atmp_462602)) goto LA2;
		i_462332 = res_462604;
		a = (*n).kindU.S6.Sons->data[i_462332];
		memset((void*)&o, 0, sizeof(o));
		s = initoverloaditer_253331(&o, c, a);
		{
			NimStringDesc* LOC7;
			NimStringDesc* LOC8;
			if (!(s == NIM_NIL)) goto LA5;
			LOC7 = 0;
			LOC8 = 0;
			LOC8 = rendertree_211051(a, 0);
			LOC7 = rawNewString(LOC8->Sup.len + 27);
appendString(LOC7, ((NimStringDesc*) &TMP3114));
appendString(LOC7, LOC8);
			localerror_165571((*a).Info, ((NU16) 4), LOC7);
		}
		LA5: ;
		while (1) {
			if (!!((s == NIM_NIL))) goto LA9;
			{
				tnode188803* LOC14;
				if (!((9959360 &(1<<(((*s).Kind)&31)))!=0)) goto LA12;
				LOC14 = 0;
				LOC14 = newsymnode_190723(s, (*a).Info);
				add_189390(x, LOC14);
			}
			LA12: ;
			s = nextoverloaditer_253684(&o, c, a);
		} LA9: ;
		res_462604 += 1;
	} LA2: ;
	{
		if (!(*(*c).Module).Ast == 0) goto LA17;
		asgnRefNoCycle((void**) &(*(*c).Module).Ast, newnodei_189099(((NU8) 114), (*n).Info));
	}
	LA17: ;
	add_189390((*(*c).Module).Ast, x);
	result = n;
	return result;
}

N_NIMCALL(void, setline_448706)(tnode188803* n, tlineinfo163527 info) {
	NI i_448731;
	NI HEX3Atmp_448746;
	NI LOC1;
	NI res_448748;
	i_448731 = 0;
	HEX3Atmp_448746 = 0;
	LOC1 = 0;
	LOC1 = safelen_189320(n);
	HEX3Atmp_448746 = LOC1 - 1;
	res_448748 = 0;
	while (1) {
		if (!(res_448748 <= HEX3Atmp_448746)) goto LA2;
		i_448731 = res_448748;
		setline_448706((*n).kindU.S6.Sons->data[i_448731], info);
		res_448748 += 1;
	} LA2: ;
	(*n).Info = info;
}

N_NIMCALL(tnode188803*, sempragmablock_448752)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* pragmalist;
	NI i_448807;
	NI HEX3Atmp_448845;
	NI LOC1;
	NI res_448847;
	result = 0;
	pragmalist = (*n).kindU.S6.Sons->data[0];
	pragma_267073(c, NIM_NIL, pragmalist, TMP3115);
	result = semexpr_416003(c, (*n).kindU.S6.Sons->data[1], 0);
	i_448807 = 0;
	HEX3Atmp_448845 = 0;
	LOC1 = 0;
	LOC1 = len_189264(pragmalist);
	HEX3Atmp_448845 = LOC1 - 1;
	res_448847 = 0;
	while (1) {
		if (!(res_448847 <= HEX3Atmp_448845)) goto LA2;
		i_448807 = res_448847;
		{
			NU8 LOC5;
			LOC5 = 0;
			LOC5 = whichpragma_222161((*pragmalist).kindU.S6.Sons->data[i_448807]);
			if (!(LOC5 == ((NU8) 109))) goto LA6;
			setline_448706(result, (*(*pragmalist).kindU.S6.Sons->data[i_448807]).Info);
		}
		LA6: ;
		res_448847 += 1;
	} LA2: ;
	return result;
}

N_NIMCALL(tnode188803*, semstaticstmt_448851)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* a;
	result = 0;
	a = semstmt_416061(c, (*n).kindU.S6.Sons->data[0]);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], a);
	evalstaticstmt_410437((*c).Module, a, (*(*c).P).Owner);
	result = newnodei_190803(((NU8) 113), (*n).Info, 1);
	asgnRefNoCycle((void**) &(*result).kindU.S6.Sons->data[0], emptynode_189727);
	return result;
}

N_NIMCALL(tnode188803*, semexpr_416003)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	result = 0;
	result = n;
	{
		if (!(gcmd_137113 == ((NU8) 14))) goto LA3;
		suggestexpr_362986(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):
	{
		tsym188833* s;
		s = lookup_252708(c, n);
		semcapturesym_369436(s, (*(*c).P).Owner);
		result = semsym_450070(c, n, s, flags);
		{
			if (!((126976 &(1<<(((*s).Kind)&31)))!=0)) goto LA12;
			result = symchoice_430291(c, n, s, ((NU8) 0));
			{
				if (!((*result).Kind == ((NU8) 3))) goto LA16;
				markindirect_251167(c, (*result).kindU.S4.Sym);
			}
			LA16: ;
		}
		LA12: ;
	}
	break;
	case ((NU8) 3):
	{
		result = semsym_450070(c, n, (*n).kindU.S4.Sym, flags);
	}
	break;
	case ((NU8) 1):
	case ((NU8) 0):
	case ((NU8) 124):
	{
	}
	break;
	case ((NU8) 23):
	{
		asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 5)));
	}
	break;
	case ((NU8) 6):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA24;
			setintlittype_242517(result);
		}
		LA24: ;
	}
	break;
	case ((NU8) 7):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA29;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 32)));
		}
		LA29: ;
	}
	break;
	case ((NU8) 8):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA34;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 33)));
		}
		LA34: ;
	}
	break;
	case ((NU8) 9):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA39;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 34)));
		}
		LA39: ;
	}
	break;
	case ((NU8) 10):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA44;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 35)));
		}
		LA44: ;
	}
	break;
	case ((NU8) 11):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA49;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 40)));
		}
		LA49: ;
	}
	break;
	case ((NU8) 12):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA54;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 41)));
		}
		LA54: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA59;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 42)));
		}
		LA59: ;
	}
	break;
	case ((NU8) 14):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA64;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 43)));
		}
		LA64: ;
	}
	break;
	case ((NU8) 15):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA69;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 44)));
		}
		LA69: ;
	}
	break;
	case ((NU8) 16):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA74;
			asgnRefNoCycle((void**) &(*result).Typ, getfloatlittype_242418(result));
		}
		LA74: ;
	}
	break;
	case ((NU8) 17):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA79;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 37)));
		}
		LA79: ;
	}
	break;
	case ((NU8) 18):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA84;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 38)));
		}
		LA84: ;
	}
	break;
	case ((NU8) 19):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA89;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 39)));
		}
		LA89: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA94;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 28)));
		}
		LA94: ;
	}
	break;
	case ((NU8) 5):
	{
		{
			if (!((*result).Typ == NIM_NIL)) goto LA99;
			asgnRefNoCycle((void**) &(*result).Typ, getsystype_242024(((NU8) 2)));
		}
		LA99: ;
	}
	break;
	case ((NU8) 45):
	{
		result = semfieldaccess_449848(c, n, flags);
		{
			if (!((*result).Kind == ((NU8) 25))) goto LA104;
			(*result).Kind = ((NU8) 27);
			result = semexpr_416003(c, result, flags);
		}
		LA104: ;
	}
	break;
	case ((NU8) 55):
	{
		message_165584((*n).Info, ((NU16) 234), ((NimStringDesc*) &TMP3041));
		result = semexpr_416003(c, (*n).kindU.S6.Sons->data[0], flags);
	}
	break;
	case ((NU8) 131):
	case ((NU8) 133):
	case ((NU8) 139) ... ((NU8) 148):
	case ((NU8) 135):
	{
		ttype188837* typ;
		ttype188837* LOC108;
		LOC108 = 0;
		LOC108 = semtypenode_416055(c, n, NIM_NIL);
		typ = skiptypes_192793(LOC108, IL64(562949953421568));
		asgnRefNoCycle((void**) &(*result).Typ, maketypedesc_250627(c, typ));
	}
	break;
	case ((NU8) 27):
	case ((NU8) 29):
	case ((NU8) 30):
	case ((NU8) 31):
	case ((NU8) 26):
	case ((NU8) 28):
	{
		NU8 mode;
		tsym188833* s;
		checkminsonslen_251215(n, 1);
		{
			if (!(((*n).Flags &(1<<((((NU8) 7))&15)))!=0)) goto LA112;
			mode = 0;
		}
		goto LA110;
		LA112: ;
		{
			mode = 2;
		}
		LA110: ;
		s = qualifiedlookup_252806(c, (*n).kindU.S6.Sons->data[0], mode);
		{
			if (!!((s == NIM_NIL))) goto LA117;
			{
				NIM_BOOL LOC121;
				LOC121 = 0;
				LOC121 = (gcmd_137113 == ((NU8) 7));
				if (!(LOC121)) goto LA122;
				LOC121 = ((*(*n).kindU.S6.Sons->data[0]).Kind == ((NU8) 45));
				LA122: ;
				if (!LOC121) goto LA123;
				checkuse_355729((*(*n).kindU.S6.Sons->data[0]).kindU.S6.Sons->data[1], s);
			}
			LA123: ;
			switch ((*s).Kind) {
			case ((NU8) 17):
			{
				{
					if (!!((((*s).Flags &(1<<((((NU8) 25))&31)))!=0))) goto LA128;
					result = semdirectop_416631(c, n, flags);
				}
				goto LA126;
				LA128: ;
				{
					tnode188803* p;
					p = fiximmediateparams_416100(n);
					result = semmacroexpr_416657(c, p, p, s, flags);
				}
				LA126: ;
			}
			break;
			case ((NU8) 18):
			{
				{
					if (!!((((*s).Flags &(1<<((((NU8) 25))&31)))!=0))) goto LA134;
					result = semdirectop_416631(c, n, flags);
				}
				goto LA132;
				LA134: ;
				{
					tnode188803* p;
					p = fiximmediateparams_416100(n);
					result = semtemplateexpr_416648(c, p, s, flags);
				}
				LA132: ;
			}
			break;
			case ((NU8) 7):
			{
				{
					NI LOC140;
					LOC140 = 0;
					LOC140 = len_189264(n);
					if (!(LOC140 == 2)) goto LA141;
					result = semconv_450524(c, n);
				}
				goto LA138;
				LA141: ;
				{
					NI LOC144;
					LOC144 = 0;
					LOC144 = len_189264(n);
					if (!(LOC144 == 1)) goto LA145;
					result = semobjconstr_454666(c, n, flags);
				}
				goto LA138;
				LA145: ;
				{
					NIM_BOOL LOC148;
					LOC148 = 0;
					LOC148 = contains_185821((*c).Ambiguoussymbols, (*s).Sup.Id);
					if (!LOC148) goto LA149;
					localerror_165571((*n).Info, ((NU16) 62), (*(*s).Name).S);
				}
				goto LA138;
				LA149: ;
				{
					if (!((*s).Magic == ((NU16) 0))) goto LA152;
					result = semdirectop_416631(c, n, flags);
				}
				goto LA138;
				LA152: ;
				{
					result = semmagic_459949(c, n, s, flags);
				}
				LA138: ;
			}
			break;
			case ((NU8) 12):
			case ((NU8) 13):
			case ((NU8) 16):
			case ((NU8) 14):
			case ((NU8) 15):
			{
				{
					if (!((*s).Magic == ((NU16) 0))) goto LA158;
					result = semdirectop_416631(c, n, flags);
				}
				goto LA156;
				LA158: ;
				{
					result = semmagic_459949(c, n, s, flags);
				}
				LA156: ;
			}
			break;
			default:
			{
				result = semindirectop_454671(c, n, flags);
			}
			break;
			}
		}
		goto LA115;
		LA117: ;
		{
			NIM_BOOL LOC163;
			tnode188803* LOC164;
			tnode188803* LOC166;
			tnode188803* LOC167;
			LOC163 = 0;
			LOC164 = 0;
			LOC164 = HEX5BHEX5D_189694(n, 0);
			LOC163 = ((*LOC164).Kind == ((NU8) 42));
			if (!(LOC163)) goto LA165;
			LOC166 = 0;
			LOC166 = HEX5BHEX5D_189694(n, 0);
			LOC167 = 0;
			LOC167 = HEX5BHEX5D_189694(LOC166, 0);
			LOC163 = issymchoice_450481(LOC167);
			LA165: ;
			if (!LOC163) goto LA168;
			setgenericparams_462609(c, (*n).kindU.S6.Sons->data[0]);
			result = semdirectop_416631(c, n, flags);
		}
		goto LA115;
		LA168: ;
		{
			NIM_BOOL LOC171;
			LOC171 = 0;
			LOC171 = issymchoice_450481((*n).kindU.S6.Sons->data[0]);
			if (LOC171) goto LA172;
			LOC171 = (((*n).Flags &(1<<((((NU8) 7))&15)))!=0);
			LA172: ;
			if (!LOC171) goto LA173;
			result = semdirectop_416631(c, n, flags);
		}
		goto LA115;
		LA173: ;
		{
			result = semindirectop_454671(c, n, flags);
		}
		LA115: ;
	}
	break;
	case ((NU8) 93):
	{
		{
			if (!((flags &(1<<((((NU8) 3))&15)))!=0)) goto LA179;
			result = semwhen_416637(c, n, NIM_TRUE);
		}
		goto LA177;
		LA179: ;
		{
			result = semwhen_416637(c, n, NIM_FALSE);
			result = semexpr_416003(c, result, flags);
		}
		LA177: ;
	}
	break;
	case ((NU8) 42):
	{
		tsym188833* s;
		checkminsonslen_251215(n, 1);
		s = qualifiedlookup_252806(c, (*n).kindU.S6.Sons->data[0], 2);
		{
			NIM_BOOL LOC185;
			NIM_BOOL LOC186;
			tnode188803* LOC189;
			LOC185 = 0;
			LOC186 = 0;
			LOC186 = !((s == NIM_NIL));
			if (!(LOC186)) goto LA187;
			LOC186 = ((126976 &(1<<(((*s).Kind)&31)))!=0);
			LA187: ;
			LOC185 = LOC186;
			if (LOC185) goto LA188;
			LOC189 = 0;
			LOC189 = HEX5BHEX5D_189694(n, 0);
			LOC185 = ((*LOC189).Kind == ((NU8) 56) || (*LOC189).Kind == ((NU8) 57));
			LA188: ;
			if (!LOC185) goto LA190;
			asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semsymgenericinstantiation_450057(c, (*n).kindU.S6.Sons->data[0], s));
			result = explicitgenericinstantiation_421947(c, n, s);
		}
		goto LA183;
		LA190: ;
		{
			NIM_BOOL LOC193;
			ttype188837* LOC197;
			LOC193 = 0;
			LOC193 = !((s == NIM_NIL));
			if (!(LOC193)) goto LA194;
			LOC193 = ((128 &(1<<(((*s).Kind)&31)))!=0);
			LA194: ;
			if (!LOC193) goto LA195;
			LOC197 = 0;
			LOC197 = semtypenode_416055(c, n, NIM_NIL);
			result = symnodefromtype_416707(c, LOC197, (*n).Info);
		}
		goto LA183;
		LA195: ;
		{
			result = semarrayaccess_457150(c, n, flags);
		}
		LA183: ;
	}
	break;
	case ((NU8) 40):
	{
		tident167019* LOC200;
		tnode188803* LOC201;
		LOC200 = 0;
		LOC200 = getident_167456(((NimStringDesc*) &TMP3067));
		LOC201 = 0;
		LOC201 = buildoverloadedsubscripts_456746(n, LOC200);
		result = semexpr_416003(c, LOC201, flags);
	}
	break;
	case ((NU8) 43):
	{
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3068));
	}
	break;
	case ((NU8) 37):
	{
		NU8 LOC204;
		LOC204 = 0;
		LOC204 = checkpar_460776(n);
		switch (LOC204) {
		case ((NU8) 0):
		{
			result = errornode_251142(c, n);
		}
		break;
		case ((NU8) 3):
		{
			result = semtuplepositionsconstr_461323(c, n, flags);
		}
		break;
		case ((NU8) 2):
		{
			result = semtuplefieldsconstr_460948(c, n, flags);
		}
		break;
		case ((NU8) 1):
		{
			result = semexpr_416003(c, (*n).kindU.S6.Sons->data[0], flags);
		}
		break;
		}
	}
	break;
	case ((NU8) 39):
	{
		result = semsetconstr_460148(c, n);
	}
	break;
	case ((NU8) 41):
	{
		result = semarrayconstr_451964(c, n, flags);
	}
	break;
	case ((NU8) 38):
	{
		result = semobjconstr_454666(c, n, flags);
	}
	break;
	case ((NU8) 51):
	case ((NU8) 52):
	{
		result = semlambda_416049(c, n, flags);
	}
	break;
	case ((NU8) 47):
	{
		result = semderef_456768(c, n);
	}
	break;
	case ((NU8) 63):
	{
		result = n;
		checksonslen_251209(n, 1);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semexprwithtype_416011(c, (*n).kindU.S6.Sons->data[0], 0));
		{
			NU8 LOC217;
			LOC217 = 0;
			LOC217 = isassignable_452519(c, (*n).kindU.S6.Sons->data[0]);
			if (!!(((6 &(1<<((LOC217)&7)))!=0))) goto LA218;
			localerror_165571((*n).Info, ((NU16) 125), ((NimStringDesc*) &TMP2675));
		}
		LA218: ;
		asgnRefNoCycle((void**) &(*n).Typ, makeptrtype_250170(c, (*(*n).kindU.S6.Sons->data[0]).Typ));
	}
	break;
	case ((NU8) 64):
	case ((NU8) 65):
	{
		checksonslen_251209(n, 1);
		asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[0], semexpr_416003(c, (*n).kindU.S6.Sons->data[0], flags));
	}
	break;
	case ((NU8) 61):
	{
		result = semcast_450736(c, n);
	}
	break;
	case ((NU8) 48):
	case ((NU8) 92):
	{
		result = semif_440088(c, n);
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	case ((NU8) 32):
	{
		checksonslen_251209(n, 2);
	}
	break;
	case ((NU8) 71):
	case ((NU8) 72):
	case ((NU8) 66):
	case ((NU8) 67):
	{
		checksonslen_251209(n, 1);
	}
	break;
	case ((NU8) 68):
	case ((NU8) 69):
	case ((NU8) 70):
	{
		checksonslen_251209(n, 3);
	}
	break;
	case ((NU8) 46):
	{
		checkminsonslen_251215(n, 2);
	}
	break;
	case ((NU8) 54):
	{
		result = semtableconstr_460689(c, n);
	}
	break;
	case ((NU8) 56):
	case ((NU8) 57):
	{
	}
	break;
	case ((NU8) 62):
	{
		result = semstaticexpr_454422(c, n);
	}
	break;
	case ((NU8) 73):
	{
		result = semasgn_457417(c, n);
	}
	break;
	case ((NU8) 111):
	case ((NU8) 126):
	{
		result = semblock_462063(c, n);
	}
	break;
	case ((NU8) 114):
	case ((NU8) 125):
	{
		result = semstmtlist_449087(c, n, flags);
	}
	break;
	case ((NU8) 107):
	{
		result = semraise_444542(c, n);
	}
	break;
	case ((NU8) 99):
	{
		result = semvarorlet_442061(c, n, ((NU8) 8));
	}
	break;
	case ((NU8) 100):
	{
		result = semvarorlet_442061(c, n, ((NU8) 9));
	}
	break;
	case ((NU8) 101):
	{
		result = semconst_442779(c, n);
	}
	break;
	case ((NU8) 98):
	{
		result = semtypesection_445704(c, n);
	}
	break;
	case ((NU8) 113):
	{
		result = semdiscard_437696(c, n);
	}
	break;
	case ((NU8) 96):
	{
		result = semwhile_437916(c, n);
	}
	break;
	case ((NU8) 105):
	{
		result = semtry_441221(c, n);
	}
	break;
	case ((NU8) 109):
	case ((NU8) 110):
	{
		result = sembreakorcontinue_437767(c, n);
	}
	break;
	case ((NU8) 94):
	case ((NU8) 95):
	{
		result = semfor_444184(c, n);
	}
	break;
	case ((NU8) 97):
	{
		result = semcase_440561(c, n);
	}
	break;
	case ((NU8) 108):
	{
		result = semreturn_457784(c, n);
	}
	break;
	case ((NU8) 123):
	{
		result = semusing_459045(c, n);
	}
	break;
	case ((NU8) 89):
	{
		result = semasm_437895(c, n);
	}
	break;
	case ((NU8) 104):
	{
		result = semyield_458387(c, n);
	}
	break;
	case ((NU8) 90):
	{
		pragma_267073(c, (*(*c).P).Owner, n, TMP3091);
	}
	break;
	case ((NU8) 84):
	{
		result = semiterator_448137(c, n);
	}
	break;
	case ((NU8) 79):
	{
		result = semproc_438177(c, n);
	}
	break;
	case ((NU8) 80):
	{
		result = semmethod_448478(c, n);
	}
	break;
	case ((NU8) 81):
	{
		result = semconverterdef_448536(c, n);
	}
	break;
	case ((NU8) 82):
	{
		result = semmacrodef_448589(c, n);
	}
	break;
	case ((NU8) 83):
	{
		result = semtemplatedef_433248(c, n);
	}
	break;
	case ((NU8) 115):
	{
		{
			NIM_BOOL LOC258;
			LOC258 = 0;
			LOC258 = istoplevel_416498(c);
			if (!!(LOC258)) goto LA259;
			localerror_165571((*n).Info, ((NU16) 181), ((NimStringDesc*) &TMP3098));
		}
		LA259: ;
		result = evalimport_255002(c, n);
	}
	break;
	case ((NU8) 116):
	{
		{
			NIM_BOOL LOC264;
			LOC264 = 0;
			LOC264 = istoplevel_416498(c);
			if (!!(LOC264)) goto LA265;
			localerror_165571((*n).Info, ((NU16) 181), ((NimStringDesc*) &TMP3098));
		}
		LA265: ;
		result = evalimportexcept_256161(c, n);
	}
	break;
	case ((NU8) 119):
	{
		{
			NIM_BOOL LOC270;
			LOC270 = 0;
			LOC270 = istoplevel_416498(c);
			if (!!(LOC270)) goto LA271;
			localerror_165571((*n).Info, ((NU16) 181), ((NimStringDesc*) &TMP3109));
		}
		LA271: ;
		result = evalfrom_255007(c, n);
	}
	break;
	case ((NU8) 120):
	{
		{
			NIM_BOOL LOC276;
			LOC276 = 0;
			LOC276 = istoplevel_416498(c);
			if (!!(LOC276)) goto LA277;
			localerror_165571((*n).Info, ((NU16) 181), ((NimStringDesc*) &TMP3112));
		}
		LA277: ;
		result = evalinclude_448665(c, n);
	}
	break;
	case ((NU8) 117):
	case ((NU8) 118):
	{
		{
			NIM_BOOL LOC282;
			LOC282 = 0;
			LOC282 = istoplevel_416498(c);
			if (!!(LOC282)) goto LA283;
			localerror_165571((*n).Info, ((NU16) 181), ((NimStringDesc*) &TMP3113));
		}
		LA283: ;
		result = semexport_462305(c, n);
	}
	break;
	case ((NU8) 91):
	{
		result = sempragmablock_448752(c, n);
	}
	break;
	case ((NU8) 112):
	{
		result = semstaticstmt_448851(c, n);
	}
	break;
	default:
	{
		NimStringDesc* LOC288;
		LOC288 = 0;
		LOC288 = rendertree_211051(n, 4);
		localerror_165571((*n).Info, ((NU16) 168), LOC288);
	}
	break;
	}
	{
		if (!!((result == NIM_NIL))) goto LA291;
		(*result).Flags |=((NI16)(1)<<((((NU8) 6))%(sizeof(NI16)*8)));
	}
	LA291: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semexprwithtype_416011)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	result = 0;
	result = semexpr_416003(c, n, (flags | 64));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = result == 0;
		if (LOC3) goto LA4;
		LOC3 = ((*result).Kind == ((NU8) 1));
		LA4: ;
		if (!LOC3) goto LA5;
		result = errornode_251142(c, n);
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		NimStringDesc* LOC13;
		LOC9 = 0;
		LOC9 = ((*result).Typ == NIM_NIL);
		if (LOC9) goto LA10;
		LOC9 = ((*result).Typ == enforcevoidcontext_437695);
		LA10: ;
		if (!LOC9) goto LA11;
		LOC13 = 0;
		LOC13 = rendertree_211051(result, 4);
		localerror_165571((*n).Info, ((NU16) 90), LOC13);
		asgnRefNoCycle((void**) &(*result).Typ, errortype_251136(c));
	}
	goto LA7;
	LA11: ;
	{
		semprocvarcheck_438120(c, result);
		{
			if (!((*(*result).Typ).Kind == ((NU8) 23))) goto LA17;
			result = newderef_439802(result);
		}
		LA17: ;
		semdestructorcheck_439541(c, result, flags);
	}
	LA7: ;
	return result;
}

N_NIMCALL(tnode188803*, semconstexpr_417095)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* e;
	result = 0;
	e = semexprwithtype_416011(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3;
		localerror_165571((*n).Info, ((NU16) 104), ((NimStringDesc*) &TMP2675));
		result = n;
		goto BeforeRet;
	}
	LA3: ;
	result = getconstexpr_261002((*c).Module, e);
	{
		if (!(result == NIM_NIL)) goto LA7;
		result = evalconstexpr_410422((*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_165246((*e).Info, (*n).Info);
				if (!!(LOC17)) goto LA18;
				pushinfocontext_164697((*n).Info);
				localerror_165571((*e).Info, ((NU16) 104), ((NimStringDesc*) &TMP2675));
				popinfocontext_164720();
			}
			goto LA15;
			LA18: ;
			{
				localerror_165571((*e).Info, ((NU16) 104), ((NimStringDesc*) &TMP2675));
			}
			LA15: ;
			result = e;
		}
		goto LA9;
		LA13: ;
		{
			result = fixuptypeaftereval_416801(c, result, e);
		}
		LA9: ;
	}
	LA7: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, tryconstexpr_417019)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tnode188803* e;
	NI olderrorcount;
	NI olderrormax;
	NU8 olderroroutputs;
	TSafePoint TMP3116;
	result = 0;
	e = semexprwithtype_416011(c, n, 0);
	{
		if (!(e == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	result = getconstexpr_261002((*c).Module, e);
	{
		if (!!((result == NIM_NIL))) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	olderrorcount = gerrorcounter_164182;
	olderrormax = gerrormax_164185;
	olderroroutputs = erroroutputs_164234;
	erroroutputs_164234 = 0;
	gerrormax_164185 = 2147483647;
	pushSafePoint(&TMP3116);
	TMP3116.status = setjmp(TMP3116.context);
	if (TMP3116.status == 0) {
		result = evalconstexpr_410422((*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_416801(c, result, e);
		}
		LA10: ;
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI163533))) {
			TMP3116.status = 0;
			result = NIM_NIL;
			popCurrentException();
		}
	}
	if (TMP3116.status != 0) reraiseException();
	gerrorcounter_164182 = olderrorcount;
	gerrormax_164185 = olderrormax;
	erroroutputs_164234 = olderroroutputs;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, semoperand_449855)(tcontext250019* c, tnode188803* n, NU16 flags) {
	tnode188803* result;
	result = 0;
	result = semexpr_416003(c, n, (flags | 128));
	{
		if (!((*result).Kind == ((NU8) 1))) goto LA3;
		result = errornode_251142(c, n);
	}
	LA3: ;
	{
		if (!!(((*result).Typ == NIM_NIL))) goto LA7;
		{
			if (!((*(*result).Typ).Kind == ((NU8) 23))) goto LA11;
			result = newderef_439802(result);
		}
		LA11: ;
	}
	goto LA5;
	LA7: ;
	{
		if (!((flags &(1<<((((NU8) 3))&15)))!=0)) goto LA14;
		asgnRefNoCycle((void**) &(*result).Typ, newtypes_250180(((NU8) 3), c));
	}
	goto LA5;
	LA14: ;
	{
		NimStringDesc* LOC17;
		LOC17 = 0;
		LOC17 = rendertree_211051(result, 4);
		localerror_165571((*n).Info, ((NU16) 90), LOC17);
		asgnRefNoCycle((void**) &(*result).Typ, errortype_251136(c));
	}
	LA5: ;
	return result;
}

N_NIMCALL(tnode188803*, seminferredlambda_446618)(tcontext250019* c, tidtable188849 pt, tnode188803* n_446622) {
	tnode188803* result;
	tnode188803* n;
	tscope188827* LOC1;
	tsym188833* s;
	tnode188803* sembody;
	tnode188803* LOC2;
	result = 0;
	n = n_446622;
	n = replacetypesinbody_275725(c, pt, n);
	result = n;
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[2], emptynode_189727);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[3], (*(*n).Typ).N);
	LOC1 = 0;
	LOC1 = openscope_252167(c);
	s = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
	addparams_416073(c, (*(*n).Typ).N, ((NU8) 12));
	pushproccon_250317(c, s);
	addresult_445870(c, (*(*n).Typ).Sons->data[0], (*n).Info, ((NU8) 12));
	LOC2 = 0;
	LOC2 = semprocbody_416032(c, (*n).kindU.S6.Sons->data[6]);
	sembody = hlobody_418063(c, LOC2);
	asgnRefNoCycle((void**) &(*n).kindU.S6.Sons->data[6], transformbody_378285((*c).Module, sembody, (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym));
	addresultnode_445911(c, n);
	popproccon_250358(c);
	closescope_252179(c);
	asgnRefNoCycle((void**) &(*s).Ast, result);
	return result;
}

N_NIMCALL(tpasscontext246003*, myopen_463662)(tsym188833* module) {
	tpasscontext246003* result;
	tcontext250019* c;
	TY250114 LOC5;
	TY250120 LOC6;
	result = 0;
	c = newcontext_250150(module);
	{
		if (!!(((*c).P == NIM_NIL))) goto LA3;
		internalerror_165591((*module).Info, ((NimStringDesc*) &TMP1858));
	}
	LA3: ;
	(*c).Semconstexpr = semconstexpr_417095;
	(*c).Semexpr = semexpr_416003;
	(*c).Semtryexpr = tryexpr_416091;
	(*c).Semtryconstexpr = tryconstexpr_417019;
	(*c).Semoperand = semoperand_449855;
	(*c).Semconstboolexpr = semconstboolexpr_422470;
	(*c).Semoverloadedcall = semoverloadedcall_421913;
	memset((void*)&LOC5, 0, sizeof(LOC5));
	LOC5.ClPrc = ((TMP3117) (seminferredlambda_446618)); LOC5.ClEnv = NIM_NIL;
	asgnRef((void**) &(*c).Seminferredlambda.ClEnv, LOC5.ClEnv);
	(*c).Seminferredlambda.ClPrc = LOC5.ClPrc;
	memset((void*)&LOC6, 0, sizeof(LOC6));
	LOC6.ClPrc = ((TMP3118) (generateinstance_419355)); LOC6.ClEnv = NIM_NIL;
	asgnRef((void**) &(*c).Semgenerateinstance.ClEnv, LOC6.ClEnv);
	(*c).Semgenerateinstance.ClPrc = LOC6.ClPrc;
	(*c).Semtypenode = semtypenode_416055;
	pushproccon_250317(c, module);
	pushowner_250218((*c).Module);
	asgnRef((void**) &(*c).Importtable, openscope_252167(c));
	strtableadd_197078(&(*(*c).Importtable).Symbols, module);
	{
		if (!(((*module).Flags &(1<<((((NU8) 13))&31)))!=0)) goto LA9;
		asgnRefNoCycle((void**) &systemmodule_242017, module);
	}
	goto LA7;
	LA9: ;
	{
		strtableadd_197078(&(*(*c).Importtable).Symbols, systemmodule_242017);
		importallsymbols_255625(c, systemmodule_242017);
	}
	LA7: ;
	asgnRef((void**) &(*c).Toplevelscope, openscope_252167(c));
	result = &c->Sup;
	return result;
}

N_NIMCALL(tpasscontext246003*, myopencached_463701)(tsym188833* module, trodreader236024* rd) {
	tpasscontext246003* result;
	tsym188833* m_463718;
	tsymseq188805* HEX3Atmp_463719;
	NI i_463721;
	NI l_463723;
	result = 0;
	result = myopen_463662(module);
	m_463718 = 0;
	HEX3Atmp_463719 = 0;
	HEX3Atmp_463719 = (*rd).Methods;
	i_463721 = 0;
	l_463723 = HEX3Atmp_463719->Sup.len;
	while (1) {
		if (!(i_463721 < l_463723)) goto LA1;
		m_463718 = HEX3Atmp_463719->data[i_463721];
		methoddef_364446(m_463718, NIM_TRUE);
		i_463721 += 1;
	} LA1: ;
	return result;
}

N_NIMCALL(void, addcodeforgenerics_463543)(tcontext250019* c, tnode188803* n) {
	NI i_463570;
	NI HEX3Atmp_463654;
	NI HEX3Atmp_463655;
	NI res_463657;
	i_463570 = 0;
	HEX3Atmp_463654 = 0;
	HEX3Atmp_463655 = 0;
	HEX3Atmp_463654 = (*c).Lastgenericidx;
	HEX3Atmp_463655 = (NI32)((*c).Generics->Sup.len - 1);
	res_463657 = HEX3Atmp_463654;
	while (1) {
		tsym188833* prc;
		if (!(res_463657 <= HEX3Atmp_463655)) goto LA1;
		i_463570 = res_463657;
		prc = (*(*c).Generics->data[i_463570].Inst).Sym;
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = ((77824 &(1<<(((*prc).Kind)&31)))!=0);
			if (!(LOC4)) goto LA5;
			LOC4 = ((*prc).Magic == ((NU16) 0));
			LA5: ;
			if (!LOC4) goto LA6;
			{
				NIM_BOOL LOC10;
				NimStringDesc* LOC14;
				LOC10 = 0;
				LOC10 = ((*prc).Ast == NIM_NIL);
				if (LOC10) goto LA11;
				LOC10 = ((*(*prc).Ast).kindU.S6.Sons->data[6] == NIM_NIL);
				LA11: ;
				if (!LOC10) goto LA12;
				LOC14 = 0;
				LOC14 = rawNewString((*(*prc).Name).S->Sup.len + 12);
appendString(LOC14, ((NimStringDesc*) &TMP3119));
appendString(LOC14, (*(*prc).Name).S);
				internalerror_165591((*prc).Info, LOC14);
			}
			goto LA8;
			LA12: ;
			{
				addson_189207(n, (*prc).Ast);
			}
			LA8: ;
		}
		LA6: ;
		res_463657 += 1;
	} LA1: ;
	(*c).Lastgenericidx = (*c).Generics->Sup.len;
}

N_NIMCALL(tnode188803*, hlostmt_418093)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*c).Patterns->Sup.len == 0);
		if (LOC3) goto LA4;
		LOC3 = !(((goptions_137108 &(1<<((((NU8) 21))&31)))!=0));
		LA4: ;
		if (!LOC3) goto LA5;
		result = n;
		goto BeforeRet;
	}
	LA5: ;
	(*c).Hloloopdetector = 0;
	result = hlo_417163(c, n);
	BeforeRet: ;
	return result;
}

N_NIMCALL(tnode188803*, buildechostmt_455485)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	tsym188833* e;
	tident167019* LOC1;
	tnode188803* arg;
	result = 0;
	result = newnodei_189099(((NU8) 27), (*n).Info);
	LOC1 = 0;
	LOC1 = getident_167456(((NimStringDesc*) &TMP3120));
	e = strtableget_197084((*systemmodule_242017).kindU.S3.Tab, LOC1);
	{
		tnode188803* LOC6;
		if (!!((e == NIM_NIL))) goto LA4;
		LOC6 = 0;
		LOC6 = newsymnode_189095(e);
		addson_189207(result, LOC6);
	}
	goto LA2;
	LA4: ;
	{
		tnode188803* LOC8;
		localerror_165571((*n).Info, ((NU16) 64), ((NimStringDesc*) &TMP3121));
		LOC8 = 0;
		LOC8 = errornode_251142(c, n);
		addson_189207(result, LOC8);
	}
	LA2: ;
	arg = buildstringify_455302(c, n);
	arg = semexpr_416003(c, arg, 0);
	{
		if (!!((arg == NIM_NIL))) goto LA11;
		addson_189207(result, arg);
	}
	LA11: ;
	return result;
}

N_NIMCALL(tnode188803*, semstmtandgenerategenerics_463727)(tcontext250019* c, tnode188803* n) {
	tnode188803* result;
	result = 0;
	result = semstmt_416061(c, n);
	{
		tnode188803* a;
		if (!((*c).Lastgenericidx < (*c).Generics->Sup.len)) goto LA3;
		a = newnodei_189099(((NU8) 114), (*n).Info);
		addcodeforgenerics_463543(c, a);
		{
			NI LOC7;
			LOC7 = 0;
			LOC7 = sonslen_189181(a);
			if (!(0 < LOC7)) goto LA8;
			{
				if (!!(((*result).Kind == ((NU8) 1)))) goto LA12;
				addson_189207(a, result);
			}
			LA12: ;
			result = a;
		}
		LA8: ;
	}
	LA3: ;
	result = hlostmt_418093(c, result);
	{
		NIM_BOOL LOC16;
		NIM_BOOL LOC18;
		LOC16 = 0;
		LOC16 = (gcmd_137113 == ((NU8) 18));
		if (!(LOC16)) goto LA17;
		LOC18 = 0;
		LOC18 = isemptytype_195210((*result).Typ);
		LOC16 = !(LOC18);
		LA17: ;
		if (!LOC16) goto LA19;
		result = buildechostmt_455485(c, result);
	}
	LA19: ;
	result = transformstmt_378403((*c).Module, result);
	return result;
}

N_NIMCALL(void, recovercontext_463766)(tcontext250019* c) {
	asgnRef((void**) &(*c).Currentscope, (*c).Toplevelscope);
	while (1) {
		tsym188833* LOC2;
		LOC2 = 0;
		LOC2 = getcurrowner_250215();
		if (!!(((*LOC2).Kind == ((NU8) 6)))) goto LA1;
		popowner_250222();
	} LA1: ;
	while (1) {
		NIM_BOOL LOC4;
		LOC4 = 0;
		LOC4 = !(((*c).P == NIM_NIL));
		if (!(LOC4)) goto LA5;
		LOC4 = !(((*(*(*c).P).Owner).Kind == ((NU8) 6)));
		LA5: ;
		if (!LOC4) goto LA3;
		asgnRef((void**) &(*c).P, (*(*c).P).Next);
	} LA3: ;
}

N_NIMCALL(tnode188803*, myprocess_463808)(tpasscontext246003* context, tnode188803* n) {
	tnode188803* result;
	tcontext250019* c;
	result = 0;
	c = ((tcontext250019*) (context));
	{
		if (!(gerrormax_164185 <= 1)) goto LA3;
		result = semstmtandgenerategenerics_463727(c, n);
	}
	goto LA1;
	LA3: ;
	{
		NI oldcontextlen;
		NI oldingenericinst;
		TSafePoint TMP3122;
		oldcontextlen = getinfocontextlen_164660();
		oldingenericinst = (*c).Ingenericinst;
		pushSafePoint(&TMP3122);
		TMP3122.status = setjmp(TMP3122.context);
		if (TMP3122.status == 0) {
			result = semstmtandgenerategenerics_463727(c, n);
			popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(getCurrentException()->Sup.m_type, (&NTI163533))||isObj(getCurrentException()->Sup.m_type, (&NTI163535))) {
				TMP3122.status = 0;
				recovercontext_463766(c);
				(*c).Ingenericinst = oldingenericinst;
				setinfocontextlen_164676(oldcontextlen);
				{
					E_Base* LOC11;
					LOC11 = 0;
					LOC11 = getCurrentException();
					if (!((LOC11) && isObj((*LOC11).Sup.m_type, (&NTI163535)))) goto LA12;
					result = NIM_NIL;
				}
				goto LA9;
				LA12: ;
				{
					result = emptynode_189727;
				}
				LA9: ;
				popCurrentException();
			}
		}
		if (TMP3122.status != 0) reraiseException();
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode188803*, myclose_463820)(tpasscontext246003* context, tnode188803* n) {
	tnode188803* result;
	tcontext250019* c;
	result = 0;
	c = ((tcontext250019*) (context));
	closescope_252179(c);
	rawclosescope_252174(c);
	result = newnode_189065(((NU8) 114));
	{
		if (!!((n == NIM_NIL))) goto LA3;
		internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3123));
	}
	LA3: ;
	addcodeforgenerics_463543(c, result);
	{
		if (!!(((*(*c).Module).Ast == NIM_NIL))) goto LA7;
		add_189390(result, (*(*c).Module).Ast);
	}
	LA7: ;
	popowner_250222();
	popproccon_250358(c);
	return result;
}
N_NOINLINE(void, semInit)(void) {
	ttype188837* LOC1;
	ttype188837* LOC2;
	tident167019* LOC3;
	tlineinfo163527 LOC4;
	LOC1 = 0;
	LOC1 = (ttype188837*) newObj((&NTI188799), sizeof(ttype188837));
	(*LOC1).Sup.Sup.m_type = (&NTI188837);
	(*LOC1).Kind = ((NU8) 6);
	asgnRefNoCycle((void**) &commontypebegin_416199, LOC1);
	asgnRefNoCycle((void**) &typedescid_426779, getident_167456(((NimStringDesc*) &TMP934)));
	LOC2 = 0;
	LOC2 = (ttype188837*) newObj((&NTI188799), sizeof(ttype188837));
	(*LOC2).Sup.Sup.m_type = (&NTI188837);
	(*LOC2).Kind = ((NU8) 7);
	asgnRefNoCycle((void**) &enforcevoidcontext_437695, LOC2);
	if (analyzingdestructor_438181) nimGCunrefNoCycle(analyzingdestructor_438181);
	analyzingdestructor_438181 = (tsym188833*) newObjRC1((&NTI188801), sizeof(tsym188833));
	(*analyzingdestructor_438181).Sup.Sup.m_type = (&NTI188833);
	if (destructoristrivial_438182) nimGCunrefNoCycle(destructoristrivial_438182);
	destructoristrivial_438182 = (tsym188833*) newObjRC1((&NTI188801), sizeof(tsym188833));
	(*destructoristrivial_438182).Sup.Sup.m_type = (&NTI188833);
	asgnRefNoCycle((void**) &destructorname_438215, getident_167456(((NimStringDesc*) &TMP935)));
	asgnRefNoCycle((void**) &destructorparam_438216, getident_167456(((NimStringDesc*) &TMP936)));
	LOC3 = 0;
	LOC3 = getident_167456(((NimStringDesc*) &TMP937));
	LOC4 = unknownlineinfo_164203();
	asgnRefNoCycle((void**) &destructorpragma_438217, newidentnode_189090(LOC3, LOC4));
}

N_NOINLINE(void, semDatInit)(void) {
static TNimNode* TMP2840[5];
static TNimNode TMP844[6];
NTI427566.size = sizeof(TY427566);
NTI427566.kind = 18;
NTI427566.base = 0;
TMP2840[0] = &TMP844[1];
TMP844[1].kind = 1;
TMP844[1].offset = offsetof(TY427566, HEX3Astate427569);
TMP844[1].typ = (&NTI353715);
TMP844[1].name = ":state427569";
TMP2840[1] = &TMP844[2];
TMP844[2].kind = 1;
TMP844[2].offset = offsetof(TY427566, Paramname426791);
TMP844[2].typ = (&NTI143);
TMP844[2].name = "paramName426791";
TMP2840[2] = &TMP844[3];
TMP844[3].kind = 1;
TMP844[3].offset = offsetof(TY427566, Genericparams426789);
TMP844[3].typ = (&NTI188795);
TMP844[3].name = "genericParams426789";
TMP2840[3] = &TMP844[4];
TMP844[4].kind = 1;
TMP844[4].offset = offsetof(TY427566, Info426792);
TMP844[4].typ = (&NTI163527);
TMP844[4].name = "info426792";
TMP2840[4] = &TMP844[5];
TMP844[5].kind = 1;
TMP844[5].offset = offsetof(TY427566, C426787);
TMP844[5].typ = (&NTI250017);
TMP844[5].name = "c426787";
TMP844[0].len = 5; TMP844[0].kind = 2; TMP844[0].sons = &TMP2840[0];
NTI427566.node = &TMP844[0];
NTI427581.size = sizeof(TY427566*);
NTI427581.kind = 22;
NTI427581.base = (&NTI427566);
NTI427581.marker = TMP2841;
}

