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

#include "nimbase.h"
#include <string.h>
typedef struct Tnode215790 Tnode215790;
typedef struct Ttype215828 Ttype215828;
typedef struct Tlineinfo183337 Tlineinfo183337;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tsym215822 Tsym215822;
typedef struct Tident190012 Tident190012;
typedef struct Tnodeseq215784 Tnodeseq215784;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Tidobj190006 Tidobj190006;
typedef struct TNimObject TNimObject;
typedef struct Ttypeseq215824 Ttypeseq215824;
typedef struct Tloc215804 Tloc215804;
typedef struct Ropeobj170006 Ropeobj170006;
typedef struct Tscope215816 Tscope215816;
typedef struct TY215925 TY215925;
typedef struct Tstrtable215794 Tstrtable215794;
typedef struct Tsymseq215792 Tsymseq215792;
typedef struct Tlib215808 Tlib215808;
typedef struct Tinstantiation215812 Tinstantiation215812;
typedef struct TY215913 TY215913;
typedef struct Tlistentry135010 Tlistentry135010;
typedef struct Cell47504 Cell47504;
typedef struct Cellseq47520 Cellseq47520;
typedef struct Gcheap49818 Gcheap49818;
typedef struct Gcstack49816 Gcstack49816;
typedef struct Cellset47516 Cellset47516;
typedef struct Pagedesc47512 Pagedesc47512;
typedef struct Memregion29687 Memregion29687;
typedef struct Smallchunk29639 Smallchunk29639;
typedef struct Llchunk29681 Llchunk29681;
typedef struct Bigchunk29641 Bigchunk29641;
typedef struct Intset29614 Intset29614;
typedef struct Trunk29610 Trunk29610;
typedef struct Avlnode29685 Avlnode29685;
typedef struct Gcstat49814 Gcstat49814;
typedef struct Tidtable215840 Tidtable215840;
typedef struct Tidpairseq215838 Tidpairseq215838;
typedef struct Tidpair215836 Tidpair215836;
typedef struct Tnodetable215852 Tnodetable215852;
typedef struct Tnodepairseq215850 Tnodepairseq215850;
typedef struct Tnodepair215848 Tnodepair215848;
typedef struct Tidnodetable215846 Tidnodetable215846;
typedef struct Tidnodepairseq215844 Tidnodepairseq215844;
typedef struct Tidnodepair215842 Tidnodepair215842;
typedef struct Basechunk29637 Basechunk29637;
typedef struct Freecell29629 Freecell29629;
struct  Tlineinfo183337  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tnode215790  {
Ttype215828* typ;
Tlineinfo183337 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym215822* sym;
} S4;
struct {Tident190012* ident;
} S5;
struct {Tnodeseq215784* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
typedef N_NIMCALL_PTR(void, TY3489) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3494) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3489 marker;
TY3494 deepcopy;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj190006  {
  TNimObject Sup;
NI id;
};
struct  Tloc215804  {
NU8 k;
NU8 s;
NU16 flags;
Ttype215828* t;
Ropeobj170006* r;
Ropeobj170006* heaproot;
};
struct  Ttype215828  {
  Tidobj190006 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq215824* sons;
Tnode215790* n;
Tsym215822* owner;
Tsym215822* sym;
Tsym215822* destructor;
Tsym215822* deepcopy;
Tsym215822* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc215804 loc;
};
struct  Tstrtable215794  {
NI counter;
Tsymseq215792* data;
};
struct  Tsym215822  {
  Tidobj190006 Sup;
NU8 kind;
union{
struct {Ttypeseq215824* typeinstcache;
Tscope215816* typscope;
} S1;
struct {TY215925* procinstcache;
Tsym215822* gcunsafetyreason;
} S2;
struct {TY215925* usedgenerics;
Tstrtable215794 tab;
} S3;
struct {Tsym215822* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype215828* typ;
Tident190012* name;
Tlineinfo183337 info;
Tsym215822* owner;
NU32 flags;
Tnode215790* ast;
NU32 options;
NI position;
NI offset;
Tloc215804 loc;
Tlib215808* annex;
Tnode215790* constraint;
};
struct  Tscope215816  {
NI depthlevel;
Tstrtable215794 symbols;
Tnodeseq215784* usingsyms;
Tscope215816* parent;
};
struct  Tinstantiation215812  {
Tsym215822* sym;
Ttypeseq215824* concretetypes;
TY215913* usedby;
NI compilesid;
};
struct  Tlistentry135010  {
  TNimObject Sup;
Tlistentry135010* prev;
Tlistentry135010* next;
};
struct  Tlib215808  {
  Tlistentry135010 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj170006* name;
Tnode215790* path;
};
struct  Cell47504  {
NI refcount;
TNimType* typ;
};
struct  Cellseq47520  {
NI len;
NI cap;
Cell47504** d;
};
struct  Cellset47516  {
NI counter;
NI max;
Pagedesc47512* head;
Pagedesc47512** data;
};
typedef Smallchunk29639* TY29702[512];
typedef Trunk29610* Trunkbuckets29612[256];
struct  Intset29614  {
Trunkbuckets29612 data;
};
struct  Memregion29687  {
NI minlargeobj;
NI maxlargeobj;
TY29702 freesmallchunks;
Llchunk29681* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk29641* freechunkslist;
Intset29614 chunkstarts;
Avlnode29685* root;
Avlnode29685* deleted;
Avlnode29685* last;
Avlnode29685* freeavlnodes;
};
struct  Gcstat49814  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap49818  {
Gcstack49816* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq47520 zct;
Cellseq47520 decstack;
Cellset47516 cycleroots;
Cellseq47520 tempstack;
NI recgclock;
Memregion29687 region;
Gcstat49814 stat;
};
struct  Tidtable215840  {
NI counter;
Tidpairseq215838* data;
};
struct  Tidpair215836  {
Tidobj190006* key;
TNimObject* val;
};
typedef Tnode215790* TY218053[7];
struct  Tnodetable215852  {
NI counter;
Tnodepairseq215850* data;
};
struct  Tnodepair215848  {
NI h;
Tnode215790* key;
NI val;
};
typedef NimStringDesc* TY215016[10];
typedef Tnode215790* TY231280[1];
struct  Tidnodetable215846  {
NI counter;
Tidnodepairseq215844* data;
};
struct  Tidnodepair215842  {
Tidobj190006* key;
Tnode215790* val;
};
typedef NU8 TY450235[20];
struct  Tident190012  {
  Tidobj190006 Sup;
NimStringDesc* s;
Tident190012* next;
NI h;
};
struct  Ropeobj170006  {
  TNimObject Sup;
Ropeobj170006* left;
Ropeobj170006* right;
NI length;
NimStringDesc* data;
};
struct  Gcstack49816  {
Gcstack49816* prev;
Gcstack49816* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY29618[16];
struct  Pagedesc47512  {
Pagedesc47512* next;
NI key;
TY29618 bits;
};
struct  Basechunk29637  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk29639  {
  Basechunk29637 Sup;
Smallchunk29639* next;
Smallchunk29639* prev;
Freecell29629* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk29681  {
NI size;
NI acc;
Llchunk29681* next;
};
struct  Bigchunk29641  {
  Basechunk29637 Sup;
Bigchunk29641* next;
Bigchunk29641* prev;
NI align;
NF data;
};
struct  Trunk29610  {
Trunk29610* next;
NI key;
TY29618 bits;
};
typedef Avlnode29685* TY29692[2];
struct  Avlnode29685  {
TY29692 link;
NI key;
NI upperbound;
NI level;
};
struct  Freecell29629  {
Freecell29629* next;
NI zerofield;
};
struct Ttypeseq215824 {
  TGenericSeq Sup;
  Ttype215828* data[SEQ_DECL_SIZE];
};
struct Tsymseq215792 {
  TGenericSeq Sup;
  Tsym215822* data[SEQ_DECL_SIZE];
};
struct Tnodeseq215784 {
  TGenericSeq Sup;
  Tnode215790* data[SEQ_DECL_SIZE];
};
struct TY215913 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct TY215925 {
  TGenericSeq Sup;
  Tinstantiation215812* data[SEQ_DECL_SIZE];
};
struct Tidpairseq215838 {
  TGenericSeq Sup;
  Tidpair215836 data[SEQ_DECL_SIZE];
};
struct Tnodepairseq215850 {
  TGenericSeq Sup;
  Tnodepair215848 data[SEQ_DECL_SIZE];
};
struct Tidnodepairseq215844 {
  TGenericSeq Sup;
  Tidnodepair215842 data[SEQ_DECL_SIZE];
};
N_NIMCALL(Tnode215790*, newnode_216401)(NU8 kind);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP822)(void* p, NI op);
N_NIMCALL(void, TMP830)(void* p, NI op);
N_NIMCALL(void, TMP831)(void* p, NI op);
N_NIMCALL(void, TMP832)(void* p, NI op);
N_NIMCALL(void, TMP835)(void* p, NI op);
N_NIMCALL(void, TMP836)(void* p, NI op);
N_NIMCALL(void, TMP837)(void* p, NI op);
N_NIMCALL(void, TMP865)(void* p, NI op);
N_NIMCALL(void, TMP866)(void* p, NI op);
N_NIMCALL(void, TMP867)(void* p, NI op);
N_NIMCALL(void, TMP874)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Cell47504*, usrtocell_51440)(void* usr);
static N_INLINE(void, rtladdzct_53001)(Cell47504* c);
N_NOINLINE(void, addzct_51417)(Cellseq47520* s, Cell47504* c);
N_NIMCALL(Tsym215822*, newsym_216684)(NU8 symkind, Tident190012* name, Tsym215822* owner, Tlineinfo183337 info);
static N_INLINE(NI, getid_214401)(void);
N_NIMCALL(Tident190012*, getident_190441)(NimStringDesc* identifier);
N_NIMCALL(Tlineinfo183337, unknownlineinfo_184090)(void);
N_NIMCALL(void, addson_217807)(Tnode215790* father, Tnode215790* son);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(Tsym215822*, createmagic_220600)(NimStringDesc* name, NU8 m);
N_NIMCALL(void, TMP920)(void* p, NI op);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(Ttype215828*, lastson_218377)(Ttype215828* n);
N_NIMCALL(void, propagatetoowner_219190)(Ttype215828* owner, Ttype215828* elem);
N_NIMCALL(NIM_BOOL, ismetatype_216803)(Ttype215828* t);
N_NIMCALL(Ttype215828*, skiptypes_219113)(Ttype215828* t, NU64 kinds);
static N_INLINE(NIM_BOOL, isgcedmem_219157)(Ttype215828* t);
N_NIMCALL(Tnode215790*, newintnode_216660)(NU8 kind, NI64 intval);
N_NIMCALL(Tnodeseq215784*, HEX40_216610)(Tnode215790** a, NI aLen0);
N_NIMCALL(Ttype215828*, newtype_218107)(NU8 kind, Tsym215822* owner);
N_NIMCALL(void, assigntype_218389)(Ttype215828* dest, Ttype215828* src);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_53819)(Cell47504* c);
static N_INLINE(NIM_BOOL, canbecycleroot_51458)(Cell47504* c);
static N_INLINE(void, rtladdcycleroot_52220)(Cell47504* c);
N_NOINLINE(void, incl_48247)(Cellset47516* s, Cell47504* cell);
static N_INLINE(void, decref_53401)(Cell47504* c);
N_NIMCALL(void, mergeloc_218201)(Tloc215804* a, Tloc215804 b);
N_NIMCALL(void, newsons_218295)(Ttype215828* father, NI length);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(NI, sonslen_218327)(Ttype215828* n);
N_NIMCALL(Tnode215790*, newnodei_217248)(NU8 kind, Tlineinfo183337 info);
N_NIMCALL(void, TMP1175)(void* p, NI op);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src_84004, TNimType* mt);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(void, copystrtable_217015)(Tstrtable215794* dest, Tstrtable215794 src);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(void, initstrtable_219001)(Tstrtable215794* x);
N_NIMCALL(NI, sonslen_218351)(Tnode215790* n);
N_NIMCALL(Tnode215790*, copytree_219822)(Tnode215790* src);
static N_INLINE(Tnode215790*, HEX5BHEX5D_216238)(Tnode215790* n, NI i);
N_NIMCALL(NI, len_218339)(Ttype215828* n);
N_NIMCALL(void, internalerror_188100)(Tlineinfo183337 info, NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
N_NIMCALL(void, TMP3434)(void* p, NI op);
N_NIMCALL(NIM_BOOL, containsnode_220117)(Tnode215790* n, TY450235 kinds);
N_NIMCALL(NIM_BOOL, hassubnodewith_220175)(Tnode215790* n, NU8 kind);
static N_INLINE(NI, len_216059)(Tnode215790* n);
N_NIMCALL(Tnode215790*, lastson_218364)(Tnode215790* n);
TNimNode* NimDT_215822_kind[26];
TNimNode* NimDT_215790_kind[160];
STRING_LITERAL(TMP875, "*", 1);
STRING_LITERAL(TMP876, "not", 3);
STRING_LITERAL(TMP877, "contains", 8);
STRING_LITERAL(TMP2225, "", 0);
STRING_LITERAL(TMP2226, "stdcall", 7);
STRING_LITERAL(TMP2227, "cdecl", 5);
STRING_LITERAL(TMP2228, "safecall", 8);
STRING_LITERAL(TMP2229, "syscall", 7);
STRING_LITERAL(TMP2230, "inline", 6);
STRING_LITERAL(TMP2231, "noinline", 8);
STRING_LITERAL(TMP2232, "fastcall", 8);
STRING_LITERAL(TMP2233, "closure", 7);
STRING_LITERAL(TMP2234, "noconv", 6);
NIM_CONST TY215016 Callingconvtostr_215013 = {((NimStringDesc*) &TMP2225),
((NimStringDesc*) &TMP2226),
((NimStringDesc*) &TMP2227),
((NimStringDesc*) &TMP2228),
((NimStringDesc*) &TMP2229),
((NimStringDesc*) &TMP2230),
((NimStringDesc*) &TMP2231),
((NimStringDesc*) &TMP2232),
((NimStringDesc*) &TMP2233),
((NimStringDesc*) &TMP2234)}
;
STRING_LITERAL(TMP2238, "<unspecified>", 13);
STRING_LITERAL(TMP2239, "<unknown>", 9);
STRING_LITERAL(TMP3410, "getInt", 6);
STRING_LITERAL(TMP3411, "getFloat", 8);
STRING_LITERAL(TMP3412, "getStr", 6);
STRING_LITERAL(TMP3415, "getStrOrChar", 12);
NIM_BOOL ggdebug_216040;
Tnode215790* emptynode_216801;
TNimType NTI215790; /* TNode */
extern TNimType NTI190006; /* TIdObj */
TNimType NTI215828; /* TType */
TNimType NTI215241; /* TTypeKind */
TNimType NTI215002; /* TCallingConvention */
TNimType NTI215431; /* TTypeFlag */
TNimType NTI215433; /* TTypeFlags */
TNimType NTI215824; /* TTypeSeq */
TNimType NTI215822; /* TSym */
TNimType NTI215435; /* TSymKind */
TNimType NTI215816; /* TScope */
extern TNimType NTI104; /* int */
TNimType NTI215794; /* TStrTable */
TNimType NTI215792; /* TSymSeq */
TNimType NTI215784; /* TNodeSeq */
TNimType NTI215818; /* PScope */
TNimType NTI215812; /* TInstantiation */
extern TNimType NTI110; /* int32 */
TNimType NTI215913; /* seq[int32] */
TNimType NTI215810; /* CompilesId */
TNimType NTI215814; /* PInstantiation */
TNimType NTI215925; /* seq[PInstantiation] */
TNimType NTI215521; /* TMagic */
extern TNimType NTI190010; /* PIdent */
extern TNimType NTI183337; /* TLineInfo */
TNimType NTI215183; /* TSymFlag */
TNimType NTI215185; /* TSymFlags */
extern TNimType NTI161011; /* TOptions */
TNimType NTI215804; /* TLoc */
TNimType NTI215796; /* TLocKind */
TNimType NTI215800; /* TStorageLoc */
TNimType NTI215798; /* TLocFlag */
TNimType NTI215802; /* TLocFlags */
extern TNimType NTI170004; /* Rope */
extern TNimType NTI135010; /* TListEntry */
TNimType NTI215808; /* TLib */
TNimType NTI215806; /* TLibKind */
extern TNimType NTI130; /* bool */
TNimType NTI215820; /* PLib */
TNimType NTI215788; /* PSym */
extern TNimType NTI7088; /* BiggestInt */
extern TNimType NTI108; /* int16 */
TNimType NTI215786; /* PType */
TNimType NTI215427; /* TNodeFlag */
TNimType NTI215429; /* TNodeFlags */
TNimType NTI215020; /* TNodeKind */
extern TNimType NTI7090; /* BiggestFloat */
extern TNimType NTI138; /* string */
TNimType NTI215782; /* PNode */
extern Gcheap49818 gch_49859;
Tsym215822* anyglobal_216802;
extern NU32 goptions_161119;
extern NI gfrontendid_214003;
Tnode215790* emptyparams_218038;
Tsym215822* opnot_220606;
Tsym215822* opcontains_220607;
TNimType NTI215836; /* TIdPair */
extern TNimType NTI190008; /* PIdObj */
extern TNimType NTI3610; /* RootRef */
TNimType NTI215838; /* TIdPairSeq */
TNimType NTI215840; /* TIdTable */
TNimType NTI215852; /* TNodeTable */
TNimType NTI215848; /* TNodePair */
extern TNimType NTI137002; /* Hash */
TNimType NTI215850; /* TNodePairSeq */
TNimType NTI402221; /* ptr PNode */
TNimType NTI215846; /* TIdNodeTable */
TNimType NTI215842; /* TIdNodePair */
TNimType NTI215844; /* TIdNodePairSeq */
N_NIMCALL(void, TMP822)(void* p, NI op) {
	Ttypeseq215824* a;
	NI LOC1;
	a = (Ttypeseq215824*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}
N_NIMCALL(void, TMP830)(void* p, NI op) {
	Tsymseq215792* a;
	NI LOC1;
	a = (Tsymseq215792*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}
N_NIMCALL(void, TMP831)(void* p, NI op) {
	Tnodeseq215784* a;
	NI LOC1;
	a = (Tnodeseq215784*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}
N_NIMCALL(void, TMP832)(void* p, NI op) {
	Tscope215816* a;
	a = (Tscope215816*)p;
	nimGCvisit((void*)(*a).symbols.data, op);
	nimGCvisit((void*)(*a).usingsyms, op);
	nimGCvisit((void*)(*a).parent, op);
}
N_NIMCALL(void, TMP835)(void* p, NI op) {
	TY215913* a;
	NI LOC1;
	a = (TY215913*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	}
}
N_NIMCALL(void, TMP836)(void* p, NI op) {
	Tinstantiation215812* a;
	a = (Tinstantiation215812*)p;
	nimGCvisit((void*)(*a).sym, op);
	nimGCvisit((void*)(*a).concretetypes, op);
	nimGCvisit((void*)(*a).usedby, op);
}
N_NIMCALL(void, TMP837)(void* p, NI op) {
	TY215925* a;
	NI LOC1;
	a = (TY215925*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}
N_NIMCALL(void, TMP865)(void* p, NI op) {
	Tlib215808* a;
	a = (Tlib215808*)p;
	nimGCvisit((void*)(*a).Sup.prev, op);
	nimGCvisit((void*)(*a).Sup.next, op);
	nimGCvisit((void*)(*a).name, op);
	nimGCvisit((void*)(*a).path, op);
}
N_NIMCALL(void, TMP866)(void* p, NI op) {
	Tsym215822* a;
	a = (Tsym215822*)p;
	switch ((*a).kind) {
	case ((NU8) 7):
	case ((NU8) 4):
	nimGCvisit((void*)(*a).kindU.S1.typeinstcache, op);
	nimGCvisit((void*)(*a).kindU.S1.typscope, op);
	break;
	case ((NU8) 12):
	case ((NU8) 13):
	case ((NU8) 14):
	case ((NU8) 15):
	case ((NU8) 16):
	case ((NU8) 17):
	nimGCvisit((void*)(*a).kindU.S2.procinstcache, op);
	nimGCvisit((void*)(*a).kindU.S2.gcunsafetyreason, op);
	break;
	case ((NU8) 6):
	nimGCvisit((void*)(*a).kindU.S3.usedgenerics, op);
	nimGCvisit((void*)(*a).kindU.S3.tab.data, op);
	break;
	case ((NU8) 9):
	case ((NU8) 8):
	case ((NU8) 18):
	case ((NU8) 20):
	nimGCvisit((void*)(*a).kindU.S4.guard, op);
	break;
	default:
	break;
	} 
	nimGCvisit((void*)(*a).typ, op);
	nimGCvisit((void*)(*a).name, op);
	nimGCvisit((void*)(*a).owner, op);
	nimGCvisit((void*)(*a).ast, op);
	nimGCvisit((void*)(*a).loc.t, op);
	nimGCvisit((void*)(*a).loc.r, op);
	nimGCvisit((void*)(*a).loc.heaproot, op);
	nimGCvisit((void*)(*a).annex, op);
	nimGCvisit((void*)(*a).constraint, op);
}
N_NIMCALL(void, TMP867)(void* p, NI op) {
	Ttype215828* a;
	a = (Ttype215828*)p;
	nimGCvisit((void*)(*a).sons, op);
	nimGCvisit((void*)(*a).n, op);
	nimGCvisit((void*)(*a).owner, op);
	nimGCvisit((void*)(*a).sym, op);
	nimGCvisit((void*)(*a).destructor, op);
	nimGCvisit((void*)(*a).deepcopy, op);
	nimGCvisit((void*)(*a).assignment, op);
	nimGCvisit((void*)(*a).loc.t, op);
	nimGCvisit((void*)(*a).loc.r, op);
	nimGCvisit((void*)(*a).loc.heaproot, op);
}
N_NIMCALL(void, TMP874)(void* p, NI op) {
	Tnode215790* a;
	a = (Tnode215790*)p;
	nimGCvisit((void*)(*a).typ, op);
	switch ((*a).kind) {
	case ((NU8) 5) ... ((NU8) 15):
	break;
	case ((NU8) 16) ... ((NU8) 19):
	break;
	case ((NU8) 20) ... ((NU8) 22):
	nimGCvisit((void*)(*a).kindU.S3.strval, op);
	break;
	case ((NU8) 3):
	nimGCvisit((void*)(*a).kindU.S4.sym, op);
	break;
	case ((NU8) 2):
	nimGCvisit((void*)(*a).kindU.S5.ident, op);
	break;
	default:
	nimGCvisit((void*)(*a).kindU.S6.sons, op);
	break;
	} 
	nimGCvisit((void*)(*a).comment, op);
}

N_NIMCALL(Tnode215790*, newnode_216401)(NU8 kind) {
	Tnode215790* result;
	result = 0;
	result = (Tnode215790*) newObj((&NTI215782), sizeof(Tnode215790));
	(*result).kind = kind;
	(*result).info.fileindex = ((NI32) -1);
	(*result).info.col = ((NI16) -1);
	(*result).info.line = ((NI16) -1);
	return result;
}

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

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

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

static N_INLINE(NI, getid_214401)(void) {
	NI result;
	result = 0;
	result = gfrontendid_214003;
	gfrontendid_214003 += ((NI) 1);
	return result;
}

N_NIMCALL(Tsym215822*, newsym_216684)(NU8 symkind, Tident190012* name, Tsym215822* owner, Tlineinfo183337 info) {
	Tsym215822* result;
	result = 0;
	result = (Tsym215822*) newObj((&NTI215788), sizeof(Tsym215822));
	(*result).Sup.Sup.m_type = (&NTI215822);
	asgnRefNoCycle((void**) (&(*result).name), name);
	(*result).kind = symkind;
	(*result).flags = 0;
	(*result).info = info;
	(*result).options = goptions_161119;
	asgnRefNoCycle((void**) (&(*result).owner), owner);
	(*result).offset = ((NI) -1);
	(*result).Sup.id = getid_214401();
	return result;
}

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

N_NIMCALL(void, addson_217807)(Tnode215790* father, Tnode215790* son) {
	{
		if (!(*father).kindU.S6.sons == 0) goto LA3;
		if ((*father).kindU.S6.sons) nimGCunrefNoCycle((*father).kindU.S6.sons);
		(*father).kindU.S6.sons = (Tnodeseq215784*) newSeqRC1((&NTI215784), 0);
	}
	LA3: ;
	(*father).kindU.S6.sons = (Tnodeseq215784*) incrSeqV2(&((*father).kindU.S6.sons)->Sup, sizeof(Tnode215790*));
	asgnRefNoCycle((void**) (&(*father).kindU.S6.sons->data[(*father).kindU.S6.sons->Sup.len]), son);
	++(*father).kindU.S6.sons->Sup.len;
}

N_NIMCALL(Tsym215822*, createmagic_220600)(NimStringDesc* name, NU8 m) {
	Tsym215822* result;
	Tident190012* LOC1;
	Tlineinfo183337 LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_190441(name);
	LOC2 = unknownlineinfo_184090();
	result = newsym_216684(((NU8) 12), LOC1, NIM_NIL, LOC2);
	(*result).magic = m;
	return result;
}
N_NIMCALL(void, TMP920)(void* p, NI op) {
	Tidpairseq215838* a;
	NI LOC1;
	a = (Tidpairseq215838*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].key, op);
	nimGCvisit((void*)a->data[LOC1].val, op);
	}
}

N_NIMCALL(void, initidtable_219033)(Tidtable215840* x) {
	(*x).counter = ((NI) 0);
	unsureAsgnRef((void**) (&(*x).data), (Tidpairseq215838*) newSeq((&NTI215838), ((NI) 8)));
}

N_NIMCALL(void, initstrtable_219001)(Tstrtable215794* x) {
	(*x).counter = ((NI) 0);
	unsureAsgnRef((void**) (&(*x).data), (Tsymseq215792*) newSeq((&NTI215792), ((NI) 8)));
}

N_NIMCALL(Ttype215828*, newtype_218107)(NU8 kind, Tsym215822* owner) {
	Ttype215828* result;
	result = 0;
	result = (Ttype215828*) newObj((&NTI215786), sizeof(Ttype215828));
	(*result).Sup.Sup.m_type = (&NTI215828);
	(*result).kind = kind;
	asgnRefNoCycle((void**) (&(*result).owner), owner);
	(*result).size = IL64(-1);
	(*result).align = ((NI16) 2);
	(*result).Sup.id = getid_214401();
	(*result).locklevel = ((NI16) -1);
	return result;
}

N_NIMCALL(Tnode215790*, newnodeit_217801)(NU8 kind, Tlineinfo183337 info, Ttype215828* typ) {
	Tnode215790* result;
	result = 0;
	result = newnode_216401(kind);
	(*result).info = info;
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_NIMCALL(Tnode215790*, newnodei_217248)(NU8 kind, Tlineinfo183337 info) {
	Tnode215790* result;
	result = 0;
	result = (Tnode215790*) newObj((&NTI215782), sizeof(Tnode215790));
	(*result).kind = kind;
	(*result).info = info;
	return result;
}

N_NIMCALL(Ttype215828*, lastson_218377)(Ttype215828* n) {
	Ttype215828* result;
	result = 0;
	result = (*n).sons->data[(NI)(((*n).sons ? (*n).sons->Sup.len : 0) - ((NI) 1))];
	return result;
}

N_NIMCALL(Ttype215828*, skiptypes_219113)(Ttype215828* t, NU64 kinds) {
	Ttype215828* result;
	result = 0;
	result = t;
	{
		while (1) {
			if (!((kinds &((NU64)1<<((NU)((*result).kind)&63U)))!=0)) goto LA2;
			result = lastson_218377(result);
		} LA2: ;
	}
	return result;
}

N_NIMCALL(Tnode215790*, newsymnode_217234)(Tsym215822* sym) {
	Tnode215790* result;
	result = 0;
	result = newnode_216401(((NU8) 3));
	asgnRefNoCycle((void**) (&(*result).kindU.S4.sym), sym);
	asgnRefNoCycle((void**) (&(*result).typ), (*sym).typ);
	(*result).info = (*sym).info;
	return result;
}

N_NIMCALL(void, addsonnilallowed_219454)(Tnode215790* father, Tnode215790* son) {
	{
		if (!(*father).kindU.S6.sons == 0) goto LA3;
		if ((*father).kindU.S6.sons) nimGCunrefNoCycle((*father).kindU.S6.sons);
		(*father).kindU.S6.sons = (Tnodeseq215784*) newSeqRC1((&NTI215784), 0);
	}
	LA3: ;
	(*father).kindU.S6.sons = (Tnodeseq215784*) incrSeqV2(&((*father).kindU.S6.sons)->Sup, sizeof(Tnode215790*));
	asgnRefNoCycle((void**) (&(*father).kindU.S6.sons->data[(*father).kindU.S6.sons->Sup.len]), son);
	++(*father).kindU.S6.sons->Sup.len;
}

N_NIMCALL(NIM_BOOL, ismetatype_216803)(Ttype215828* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	NIM_BOOL LOC4;
{	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((*t).kind == ((NU8) 6) || (*t).kind == ((NU8) 8) || (*t).kind == ((NU8) 12) || (*t).kind >= ((NU8) 51) && (*t).kind <= ((NU8) 58));
	if (LOC2) goto LA3;
	LOC4 = 0;
	LOC4 = ((*t).kind == ((NU8) 59));
	if (!(LOC4)) goto LA5;
	LOC4 = ((*t).n == NIM_NIL);
	LA5: ;
	LOC2 = LOC4;
	LA3: ;
	LOC1 = LOC2;
	if (LOC1) goto LA6;
	LOC1 = (((*t).flags &(1U<<((NU)(((NU8) 19))&31U)))!=0);
	LA6: ;
	result = LOC1;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, isgcedmem_219157)(Ttype215828* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 28) || (*t).kind == ((NU8) 22) || (*t).kind == ((NU8) 24));
	if (LOC1) goto LA2;
	LOC3 = 0;
	LOC3 = ((*t).kind == ((NU8) 25));
	if (!(LOC3)) goto LA4;
	LOC3 = ((*t).callconv == ((NU8) 8));
	LA4: ;
	LOC1 = LOC3;
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, propagatetoowner_219190)(Ttype215828* owner, Ttype215828* elem) {
	(*owner).flags = ((*owner).flags | ((*elem).flags & 524288));
	{
		if (!(((*elem).flags &(1U<<((NU)(((NU8) 16))&31U)))!=0)) goto LA3;
		{
			if (!((*owner).kind == ((NU8) 11) || (*owner).kind == ((NU8) 10) || (*owner).kind == ((NU8) 9))) goto LA7;
			(*owner).flags |= ((NU32)1)<<((((NU8) 16))%(sizeof(NU32)*8));
		}
		goto LA5;
		LA7: ;
		{
			if (!!(((*owner).kind == ((NU8) 24) || (*owner).kind == ((NU8) 19) || (*owner).kind == ((NU8) 21) || (*owner).kind == ((NU8) 22) || (*owner).kind == ((NU8) 25)))) goto LA10;
			(*owner).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
		}
		goto LA5;
		LA10: ;
		LA5: ;
	}
	LA3: ;
	{
		if (!(((*elem).flags &(1U<<((NU)(((NU8) 17))&31U)))!=0)) goto LA14;
		{
			if (!((*owner).kind == ((NU8) 24) || (*owner).kind == ((NU8) 19) || (*owner).kind == ((NU8) 21) || (*owner).kind == ((NU8) 22) || (*owner).kind == ((NU8) 25))) goto LA18;
		}
		goto LA16;
		LA18: ;
		{
			(*owner).flags |= ((NU32)1)<<((((NU8) 17))%(sizeof(NU32)*8));
		}
		LA16: ;
	}
	LA14: ;
	{
		NIM_BOOL LOC23;
		LOC23 = 0;
		LOC23 = ismetatype_216803(elem);
		if (!LOC23) goto LA24;
		(*owner).flags |= ((NU32)1)<<((((NU8) 19))%(sizeof(NU32)*8));
	}
	LA24: ;
	{
		Ttype215828* o2;
		if (!(((*elem).flags &(1U<<((NU)(((NU8) 26))&31U)))!=0)) goto LA28;
		o2 = skiptypes_219113(elem, 2048);
		{
			if (!((*o2).kind == ((NU8) 18) || (*o2).kind == ((NU8) 17) || (*o2).kind == ((NU8) 16) || (*o2).kind == ((NU8) 4) || (*o2).kind == ((NU8) 24) || (*o2).kind == ((NU8) 19) || (*o2).kind == ((NU8) 13))) goto LA32;
			(*o2).flags |= ((NU32)1)<<((((NU8) 26))%(sizeof(NU32)*8));
			(*owner).flags |= ((NU32)1)<<((((NU8) 26))%(sizeof(NU32)*8));
		}
		LA32: ;
	}
	LA28: ;
	{
		if (!(((*elem).flags &(1U<<((NU)(((NU8) 28))&31U)))!=0)) goto LA36;
		(*owner).flags |= ((NU32)1)<<((((NU8) 28))%(sizeof(NU32)*8));
	}
	LA36: ;
	{
		Ttype215828* elemb;
		if (!!(((*owner).kind == ((NU8) 25) || (*owner).kind == ((NU8) 11) || (*owner).kind == ((NU8) 10) || (*owner).kind == ((NU8) 9) || (*owner).kind == ((NU8) 21)))) goto LA40;
		elemb = skiptypes_219113(elem, 2048);
		{
			NIM_BOOL LOC44;
			LOC44 = 0;
			LOC44 = isgcedmem_219157(elemb);
			if (LOC44) goto LA45;
			LOC44 = (((*elemb).flags &(1U<<((NU)(((NU8) 20))&31U)))!=0);
			LA45: ;
			if (!LOC44) goto LA46;
			(*owner).flags |= ((NU32)1)<<((((NU8) 20))%(sizeof(NU32)*8));
		}
		LA46: ;
	}
	LA40: ;
}

N_NIMCALL(void, rawaddson_219408)(Ttype215828* father, Ttype215828* son) {
	{
		if (!(*father).sons == 0) goto LA3;
		if ((*father).sons) nimGCunrefNoCycle((*father).sons);
		(*father).sons = (Ttypeseq215824*) newSeqRC1((&NTI215824), 0);
	}
	LA3: ;
	(*father).sons = (Ttypeseq215824*) incrSeqV2(&((*father).sons)->Sup, sizeof(Ttype215828*));
	asgnRefNoCycle((void**) (&(*father).sons->data[(*father).sons->Sup.len]), son);
	++(*father).sons->Sup.len;
	{
		if (!!(son == 0)) goto LA7;
		propagatetoowner_219190(father, son);
	}
	LA7: ;
}

N_NIMCALL(Tnode215790*, newsymnode_217241)(Tsym215822* sym, Tlineinfo183337 info) {
	Tnode215790* result;
	result = 0;
	result = newnode_216401(((NU8) 3));
	asgnRefNoCycle((void**) (&(*result).kindU.S4.sym), sym);
	asgnRefNoCycle((void**) (&(*result).typ), (*sym).typ);
	(*result).info = info;
	return result;
}

N_NIMCALL(void, add_216114)(Tnode215790* father, Tnode215790* son) {
	{
		if (!(*father).kindU.S6.sons == 0) goto LA3;
		if ((*father).kindU.S6.sons) nimGCunrefNoCycle((*father).kindU.S6.sons);
		(*father).kindU.S6.sons = (Tnodeseq215784*) newSeqRC1((&NTI215784), 0);
	}
	LA3: ;
	(*father).kindU.S6.sons = (Tnodeseq215784*) incrSeqV2(&((*father).kindU.S6.sons)->Sup, sizeof(Tnode215790*));
	asgnRefNoCycle((void**) (&(*father).kindU.S6.sons->data[(*father).kindU.S6.sons->Sup.len]), son);
	++(*father).kindU.S6.sons->Sup.len;
}

N_NIMCALL(Tnode215790*, lastson_218364)(Tnode215790* n) {
	Tnode215790* result;
	result = 0;
	result = (*n).kindU.S6.sons->data[(NI)(((*n).kindU.S6.sons ? (*n).kindU.S6.sons->Sup.len : 0) - ((NI) 1))];
	return result;
}

N_NIMCALL(Tsym215822*, skipgenericowner_220352)(Tsym215822* s) {
	Tsym215822* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((258048 &(1U<<((NU)((*s).kind)&31U)))!=0);
		if (!(LOC3)) goto LA4;
		LOC3 = (((*s).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0);
		LA4: ;
		if (!LOC3) goto LA5;
		result = (*(*s).owner).owner;
	}
	goto LA1;
	LA5: ;
	{
		result = (*s).owner;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NI, sonslen_218351)(Tnode215790* n) {
	NI result;
	result = 0;
	result = ((*n).kindU.S6.sons ? (*n).kindU.S6.sons->Sup.len : 0);
	return result;
}

N_NIMCALL(Tnode215790*, newintnode_216660)(NU8 kind, NI64 intval) {
	Tnode215790* result;
	result = 0;
	result = newnode_216401(kind);
	(*result).kindU.S1.intval = intval;
	return result;
}

N_NIMCALL(Tnode215790*, newinttypenode_216666)(NU8 kind, NI64 intval, Ttype215828* typ) {
	Tnode215790* result;
	result = 0;
	result = newintnode_216660(kind, intval);
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_NIMCALL(Tnode215790*, newtree_216602)(NU8 kind, Tnode215790** children, NI childrenLen0) {
	Tnode215790* result;
	result = 0;
	result = newnode_216401(kind);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons), HEX40_216610(children, childrenLen0));
	return result;
}

N_NIMCALL(Tnode215790*, newnodei_217401)(NU8 kind, Tlineinfo183337 info, NI children) {
	Tnode215790* result;
	result = 0;
	result = (Tnode215790*) newObj((&NTI215782), sizeof(Tnode215790));
	(*result).kind = kind;
	(*result).info = info;
	{
		if (!(((NI) 0) < children)) goto LA3;
		if ((*result).kindU.S6.sons) nimGCunrefNoCycle((*result).kindU.S6.sons);
		(*result).kindU.S6.sons = (Tnodeseq215784*) newSeqRC1((&NTI215784), ((NI) (children)));
	}
	LA3: ;
	return result;
}

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

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

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

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

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

N_NIMCALL(void, mergeloc_218201)(Tloc215804* a, Tloc215804 b) {
	{
		if (!((*a).k == ((NU8) 0))) goto LA3;
		(*a).k = b.k;
	}
	LA3: ;
	{
		if (!((*a).s == ((NU8) 0))) goto LA7;
		(*a).s = b.s;
	}
	LA7: ;
	(*a).flags = ((*a).flags | b.flags);
	{
		if (!((*a).t == NIM_NIL)) goto LA11;
		unsureAsgnRef((void**) (&(*a).t), b.t);
	}
	LA11: ;
	{
		if (!((*a).r == NIM_NIL)) goto LA15;
		unsureAsgnRef((void**) (&(*a).r), b.r);
	}
	LA15: ;
}

N_NIMCALL(void, newsons_218295)(Ttype215828* father, NI length) {
	{
		if (!(*father).sons == 0) goto LA3;
		if ((*father).sons) nimGCunrefNoCycle((*father).sons);
		(*father).sons = (Ttypeseq215824*) newSeqRC1((&NTI215824), ((NI) (length)));
	}
	goto LA1;
	LA3: ;
	{
		(*father).sons = (Ttypeseq215824*) setLengthSeq(&((*father).sons)->Sup, sizeof(Ttype215828*), ((NI) (length)));
	}
	LA1: ;
}

N_NIMCALL(NI, sonslen_218327)(Ttype215828* n) {
	NI result;
	result = 0;
	result = ((*n).sons ? (*n).sons->Sup.len : 0);
	return result;
}

N_NIMCALL(void, assigntype_218389)(Ttype215828* dest, Ttype215828* src) {
	NI LOC14;
	(*dest).kind = (*src).kind;
	(*dest).flags = (*src).flags;
	(*dest).callconv = (*src).callconv;
	asgnRefNoCycle((void**) (&(*dest).n), (*src).n);
	(*dest).size = (*src).size;
	(*dest).align = (*src).align;
	asgnRefNoCycle((void**) (&(*dest).destructor), (*src).destructor);
	asgnRefNoCycle((void**) (&(*dest).deepcopy), (*src).deepcopy);
	asgnRefNoCycle((void**) (&(*dest).assignment), (*src).assignment);
	(*dest).locklevel = (*src).locklevel;
	{
		if (!!(((*src).sym == NIM_NIL))) goto LA3;
		{
			if (!!(((*dest).sym == NIM_NIL))) goto LA7;
			(*(*dest).sym).flags = ((*(*dest).sym).flags | (*(*src).sym).flags);
			{
				if (!((*(*dest).sym).annex == NIM_NIL)) goto LA11;
				asgnRef((void**) (&(*(*dest).sym).annex), (*(*src).sym).annex);
			}
			LA11: ;
			mergeloc_218201((&(*(*dest).sym).loc), (*(*src).sym).loc);
		}
		goto LA5;
		LA7: ;
		{
			asgnRefNoCycle((void**) (&(*dest).sym), (*src).sym);
		}
		LA5: ;
	}
	LA3: ;
	LOC14 = 0;
	LOC14 = sonslen_218327(src);
	newsons_218295(dest, LOC14);
	{
		NI i_218461;
		NI HEX3Atmp_218463;
		NI LOC16;
		NI res_218466;
		i_218461 = 0;
		HEX3Atmp_218463 = 0;
		LOC16 = 0;
		LOC16 = sonslen_218327(src);
		HEX3Atmp_218463 = (NI)(LOC16 - ((NI) 1));
		res_218466 = ((NI) 0);
		{
			while (1) {
				if (!(res_218466 <= HEX3Atmp_218463)) goto LA18;
				i_218461 = res_218466;
				asgnRefNoCycle((void**) (&(*dest).sons->data[i_218461]), (*src).sons->data[i_218461]);
				res_218466 += ((NI) 1);
			} LA18: ;
		}
	}
}

N_NIMCALL(Ttype215828*, copytype_218470)(Ttype215828* t, Tsym215822* owner, NIM_BOOL keepid) {
	Ttype215828* result;
	result = 0;
	result = newtype_218107((*t).kind, owner);
	assigntype_218389(result, t);
	{
		if (!keepid) goto LA3;
		(*result).Sup.id = (*t).Sup.id;
	}
	goto LA1;
	LA3: ;
	{
	}
	LA1: ;
	asgnRefNoCycle((void**) (&(*result).sym), (*t).sym);
	return result;
}

N_NIMCALL(Tnode215790*, newprocnode_218040)(NU8 kind, Tlineinfo183337 info, Tnode215790* body, Tnode215790* params, Tnode215790* name, Tnode215790* pattern, Tnode215790* genericparams, Tnode215790* pragmas, Tnode215790* exceptions) {
	Tnode215790* result;
	TY218053 LOC1;
	result = 0;
	result = newnodei_217248(kind, info);
	if ((*result).kindU.S6.sons) nimGCunrefNoCycle((*result).kindU.S6.sons);
	(*result).kindU.S6.sons = (Tnodeseq215784*) newSeqRC1((&NTI215784), 7);
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = name;
	LOC1[1] = pattern;
	LOC1[2] = genericparams;
	LOC1[3] = params;
	LOC1[4] = pragmas;
	LOC1[5] = exceptions;
	LOC1[6] = body;
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[0]), LOC1[0]);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[1]), LOC1[1]);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[2]), LOC1[2]);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[3]), LOC1[3]);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[4]), LOC1[4]);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[5]), LOC1[5]);
	asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[6]), LOC1[6]);
	return result;
}

N_NIMCALL(Tnode215790*, newidentnode_217228)(Tident190012* ident, Tlineinfo183337 info) {
	Tnode215790* result;
	result = 0;
	result = newnode_216401(((NU8) 2));
	asgnRefNoCycle((void**) (&(*result).kindU.S5.ident), ident);
	(*result).info = info;
	return result;
}
N_NIMCALL(void, TMP1175)(void* p, NI op) {
	Tnodepairseq215850* a;
	NI LOC1;
	a = (Tnodepairseq215850*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].key, op);
	}
}

N_NIMCALL(Tnode215790*, newnode_217601)(NU8 kind, Tlineinfo183337 info, Tnodeseq215784* sons, Ttype215828* typ) {
	Tnode215790* result;
	result = 0;
	result = (Tnode215790*) newObj((&NTI215782), sizeof(Tnode215790));
	(*result).kind = kind;
	(*result).info = info;
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	genericSeqAssign((&(*result).kindU.S6.sons), sons, (&NTI215784));
	return result;
}

N_NIMCALL(Tnode215790*, newstrnode_216678)(NU8 kind, NimStringDesc* strval) {
	Tnode215790* result;
	NimStringDesc* LOC1;
	result = 0;
	result = newnode_216401(kind);
	LOC1 = 0;
	LOC1 = (*result).kindU.S3.strval; (*result).kindU.S3.strval = copyStringRC1(strval);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	return result;
}

N_NIMCALL(NI, len_218339)(Ttype215828* n) {
	NI result;
	result = 0;
	result = ((*n).sons ? (*n).sons->Sup.len : 0);
	return result;
}

N_NIMCALL(NimStringDesc*, HEX24_218069)(NI16 x) {
	NimStringDesc* result;
	result = 0;
	{
		if (!(((NI) (x)) == ((NI) -1))) goto LA3;
		result = copyString(((NimStringDesc*) &TMP2238));
	}
	goto LA1;
	LA3: ;
	{
		if (!(((NI) (x)) == ((NI) 1001))) goto LA6;
		result = copyString(((NimStringDesc*) &TMP2239));
	}
	goto LA1;
	LA6: ;
	{
		result = nimIntToStr(((NI) (x)));
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, copyidtable_217066)(Tidtable215840* dest, Tidtable215840 src) {
{	(*dest).counter = src.counter;
	{
		if (!src.data == 0) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	unsureAsgnRef((void**) (&(*dest).data), (Tidpairseq215838*) newSeq((&NTI215838), ((NI) ((src.data ? src.data->Sup.len : 0)))));
	{
		NI i_217108;
		NI HEX3Atmp_217110;
		NI res_217113;
		i_217108 = 0;
		HEX3Atmp_217110 = 0;
		HEX3Atmp_217110 = (src.data ? (src.data->Sup.len-1) : -1);
		res_217113 = ((NI) 0);
		{
			while (1) {
				if (!(res_217113 <= HEX3Atmp_217110)) goto LA7;
				i_217108 = res_217113;
				asgnRef((void**) (&(*dest).data->data[i_217108].key), src.data->data[i_217108].key);
				asgnRef((void**) (&(*dest).data->data[i_217108].val), src.data->data[i_217108].val);
				res_217113 += ((NI) 1);
			} LA7: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode215790*, copynode_219542)(Tnode215790* src) {
	Tnode215790* result;
{	result = 0;
	{
		if (!(src == NIM_NIL)) goto LA3;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA3: ;
	result = newnode_216401((*src).kind);
	(*result).info = (*src).info;
	asgnRefNoCycle((void**) (&(*result).typ), (*src).typ);
	(*result).flags = ((*src).flags & 26382);
	switch ((*src).kind) {
	case ((NU8) 5) ... ((NU8) 15):
	{
		(*result).kindU.S1.intval = (*src).kindU.S1.intval;
	}
	break;
	case ((NU8) 16) ... ((NU8) 19):
	{
		(*result).kindU.S2.floatval = (*src).kindU.S2.floatval;
	}
	break;
	case ((NU8) 3):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S4.sym), (*src).kindU.S4.sym);
	}
	break;
	case ((NU8) 2):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S5.ident), (*src).kindU.S5.ident);
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		NimStringDesc* LOC10;
		LOC10 = 0;
		LOC10 = (*result).kindU.S3.strval; (*result).kindU.S3.strval = copyStringRC1((*src).kindU.S3.strval);
		if (LOC10) nimGCunrefNoCycle(LOC10);
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, copystrtable_217015)(Tstrtable215794* dest, Tstrtable215794 src) {
{	(*dest).counter = src.counter;
	{
		if (!src.data == 0) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	(*dest).data = (Tsymseq215792*) setLengthSeq(&((*dest).data)->Sup, sizeof(Tsym215822*), ((NI) ((src.data ? src.data->Sup.len : 0))));
	{
		NI i_217057;
		NI HEX3Atmp_217059;
		NI res_217062;
		i_217057 = 0;
		HEX3Atmp_217059 = 0;
		HEX3Atmp_217059 = (src.data ? (src.data->Sup.len-1) : -1);
		res_217062 = ((NI) 0);
		{
			while (1) {
				if (!(res_217062 <= HEX3Atmp_217059)) goto LA7;
				i_217057 = res_217062;
				asgnRefNoCycle((void**) (&(*dest).data->data[i_217057]), src.data->data[i_217057]);
				res_217062 += ((NI) 1);
			} LA7: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tsym215822*, copysym_218601)(Tsym215822* s, NIM_BOOL keepid) {
	Tsym215822* result;
	result = 0;
	result = newsym_216684((*s).kind, (*s).name, (*s).owner, (*s).info);
	asgnRefNoCycle((void**) (&(*result).typ), (*s).typ);
	{
		if (!keepid) goto LA3;
		(*result).Sup.id = (*s).Sup.id;
	}
	goto LA1;
	LA3: ;
	{
		(*result).Sup.id = getid_214401();
	}
	LA1: ;
	(*result).flags = (*s).flags;
	(*result).magic = (*s).magic;
	{
		if (!((*s).kind == ((NU8) 6))) goto LA8;
		copystrtable_217015((&(*result).kindU.S3.tab), (*s).kindU.S3.tab);
	}
	LA8: ;
	(*result).options = (*s).options;
	(*result).position = (*s).position;
	genericAssign((void*)(&(*result).loc), (void*)(&(*s).loc), (&NTI215804));
	asgnRef((void**) (&(*result).annex), (*s).annex);
	{
		if (!((262912 &(1U<<((NU)((*result).kind)&31U)))!=0)) goto LA12;
		asgnRefNoCycle((void**) (&(*result).kindU.S4.guard), (*s).kindU.S4.guard);
	}
	LA12: ;
	return result;
}

N_NIMCALL(void, newsons_218260)(Tnode215790* father, NI length) {
	{
		if (!(*father).kindU.S6.sons == 0) goto LA3;
		if ((*father).kindU.S6.sons) nimGCunrefNoCycle((*father).kindU.S6.sons);
		(*father).kindU.S6.sons = (Tnodeseq215784*) newSeqRC1((&NTI215784), ((NI) (length)));
	}
	goto LA1;
	LA3: ;
	{
		(*father).kindU.S6.sons = (Tnodeseq215784*) setLengthSeq(&((*father).kindU.S6.sons)->Sup, sizeof(Tnode215790*), ((NI) (length)));
	}
	LA1: ;
}

N_NIMCALL(void, newstrtable_219015)(Tstrtable215794* Result) {
	initstrtable_219001(Result);
}

N_NIMCALL(Tnode215790*, copytree_219822)(Tnode215790* src) {
	Tnode215790* result;
{	result = 0;
	{
		if (!(src == NIM_NIL)) goto LA3;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA3: ;
	result = newnode_216401((*src).kind);
	(*result).info = (*src).info;
	asgnRefNoCycle((void**) (&(*result).typ), (*src).typ);
	(*result).flags = ((*src).flags & 26382);
	switch ((*src).kind) {
	case ((NU8) 5) ... ((NU8) 15):
	{
		(*result).kindU.S1.intval = (*src).kindU.S1.intval;
	}
	break;
	case ((NU8) 16) ... ((NU8) 19):
	{
		(*result).kindU.S2.floatval = (*src).kindU.S2.floatval;
	}
	break;
	case ((NU8) 3):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S4.sym), (*src).kindU.S4.sym);
	}
	break;
	case ((NU8) 2):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S5.ident), (*src).kindU.S5.ident);
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		NimStringDesc* LOC10;
		LOC10 = 0;
		LOC10 = (*result).kindU.S3.strval; (*result).kindU.S3.strval = copyStringRC1((*src).kindU.S3.strval);
		if (LOC10) nimGCunrefNoCycle(LOC10);
	}
	break;
	default:
	{
		NI LOC12;
		LOC12 = 0;
		LOC12 = sonslen_218351(src);
		if ((*result).kindU.S6.sons) nimGCunrefNoCycle((*result).kindU.S6.sons);
		(*result).kindU.S6.sons = (Tnodeseq215784*) newSeqRC1((&NTI215784), ((NI) (LOC12)));
		{
			NI i_220033;
			NI HEX3Atmp_220037;
			NI LOC14;
			NI res_220040;
			i_220033 = 0;
			HEX3Atmp_220037 = 0;
			LOC14 = 0;
			LOC14 = sonslen_218351(src);
			HEX3Atmp_220037 = (NI)(LOC14 - ((NI) 1));
			res_220040 = ((NI) 0);
			{
				while (1) {
					if (!(res_220040 <= HEX3Atmp_220037)) goto LA16;
					i_220033 = res_220040;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_220033]), copytree_219822((*src).kindU.S6.sons->data[i_220033]));
					res_220040 += ((NI) 1);
				} LA16: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym215822*, originatingmodule_220380)(Tsym215822* s) {
	Tsym215822* result;
	result = 0;
	result = (*s).owner;
	{
		while (1) {
			if (!!(((*result).kind == ((NU8) 6)))) goto LA2;
			result = (*result).owner;
		} LA2: ;
	}
	return result;
}

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

N_NIMCALL(NIM_BOOL, isgenericroutine_220314)(Tsym215822* s) {
	NIM_BOOL result;
	result = 0;
	switch ((*s).kind) {
	case ((NU8) 12):
	case ((NU8) 17):
	case ((NU8) 16):
	case ((NU8) 14):
	case ((NU8) 13):
	case ((NU8) 15):
	{
		NIM_BOOL LOC2;
		NIM_BOOL LOC4;
		Tnode215790* LOC6;
		LOC2 = 0;
		LOC2 = (((*s).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0);
		if (LOC2) goto LA3;
		LOC4 = 0;
		LOC4 = !(((*s).ast == NIM_NIL));
		if (!(LOC4)) goto LA5;
		LOC6 = 0;
		LOC6 = HEX5BHEX5D_216238((*s).ast, ((NI) 2));
		LOC4 = !(((*LOC6).kind == ((NU8) 1)));
		LA5: ;
		LOC2 = LOC4;
		LA3: ;
		result = LOC2;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(Ttype215828*, skiptypesornil_219129)(Ttype215828* t, NU64 kinds) {
	Ttype215828* result;
{	result = 0;
	result = t;
	{
		while (1) {
			NIM_BOOL LOC3;
			LOC3 = 0;
			LOC3 = !((result == NIM_NIL));
			if (!(LOC3)) goto LA4;
			LOC3 = ((kinds &((NU64)1<<((NU)((*result).kind)&63U)))!=0);
			LA4: ;
			if (!LOC3) goto LA2;
			{
				NI LOC7;
				LOC7 = 0;
				LOC7 = len_218339(result);
				if (!(LOC7 == ((NI) 0))) goto LA8;
				result = NIM_NIL;
				goto BeforeRet;
			}
			LA8: ;
			result = lastson_218377(result);
		} LA2: ;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, discardsons_216056)(Tnode215790* father) {
	genericSeqAssign((&(*father).kindU.S6.sons), NIM_NIL, (&NTI215784));
}

N_NIMCALL(void, appendtomodule_216869)(Tsym215822* m, Tnode215790* n) {
	{
		TY231280 LOC5;
		if (!((*m).ast == NIM_NIL)) goto LA3;
		asgnRefNoCycle((void**) (&(*m).ast), newnode_216401(((NU8) 115)));
		if ((*(*m).ast).kindU.S6.sons) nimGCunrefNoCycle((*(*m).ast).kindU.S6.sons);
		(*(*m).ast).kindU.S6.sons = (Tnodeseq215784*) newSeqRC1((&NTI215784), 1);
		memset((void*)LOC5, 0, sizeof(LOC5));
		LOC5[0] = n;
		asgnRefNoCycle((void**) (&(*(*m).ast).kindU.S6.sons->data[0]), LOC5[0]);
	}
	goto LA1;
	LA3: ;
	{
		(*(*m).ast).kindU.S6.sons = (Tnodeseq215784*) incrSeqV2(&((*(*m).ast).kindU.S6.sons)->Sup, sizeof(Tnode215790*));
		asgnRefNoCycle((void**) (&(*(*m).ast).kindU.S6.sons->data[(*(*m).ast).kindU.S6.sons->Sup.len]), n);
		++(*(*m).ast).kindU.S6.sons->Sup.len;
	}
	LA1: ;
}

N_NIMCALL(void, delson_219495)(Tnode215790* father, NI idx) {
	NI length;
{	{
		if (!(*father).kindU.S6.sons == 0) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	length = sonslen_218351(father);
	{
		NI i_219520;
		NI HEX3Atmp_219535;
		NI res_219538;
		i_219520 = 0;
		HEX3Atmp_219535 = 0;
		HEX3Atmp_219535 = (NI)(length - ((NI) 2));
		res_219538 = idx;
		{
			while (1) {
				if (!(res_219538 <= HEX3Atmp_219535)) goto LA7;
				i_219520 = res_219538;
				asgnRefNoCycle((void**) (&(*father).kindU.S6.sons->data[i_219520]), (*father).kindU.S6.sons->data[(NI)(i_219520 + ((NI) 1))]);
				res_219538 += ((NI) 1);
			} LA7: ;
		}
	}
	(*father).kindU.S6.sons = (Tnodeseq215784*) setLengthSeq(&((*father).kindU.S6.sons)->Sup, sizeof(Tnode215790*), ((NI) ((NI)(length - ((NI) 1)))));
	}BeforeRet: ;
}

N_NIMCALL(Tnode215790*, newfloatnode_216672)(NU8 kind, NF floatval) {
	Tnode215790* result;
	result = 0;
	result = newnode_216401(kind);
	(*result).kindU.S2.floatval = floatval;
	return result;
}

N_NIMCALL(NIM_BOOL, iscallexpr_216042)(Tnode215790* n) {
	NIM_BOOL result;
	result = 0;
	result = ((*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));
	return result;
}

N_NIMCALL(Tnode215790*, shallowcopy_219611)(Tnode215790* src) {
	Tnode215790* result;
{	result = 0;
	{
		if (!(src == NIM_NIL)) goto LA3;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA3: ;
	result = newnode_216401((*src).kind);
	(*result).info = (*src).info;
	asgnRefNoCycle((void**) (&(*result).typ), (*src).typ);
	(*result).flags = ((*src).flags & 26382);
	switch ((*src).kind) {
	case ((NU8) 5) ... ((NU8) 15):
	{
		(*result).kindU.S1.intval = (*src).kindU.S1.intval;
	}
	break;
	case ((NU8) 16) ... ((NU8) 19):
	{
		(*result).kindU.S2.floatval = (*src).kindU.S2.floatval;
	}
	break;
	case ((NU8) 3):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S4.sym), (*src).kindU.S4.sym);
	}
	break;
	case ((NU8) 2):
	{
		asgnRefNoCycle((void**) (&(*result).kindU.S5.ident), (*src).kindU.S5.ident);
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		NimStringDesc* LOC10;
		LOC10 = 0;
		LOC10 = (*result).kindU.S3.strval; (*result).kindU.S3.strval = copyStringRC1((*src).kindU.S3.strval);
		if (LOC10) nimGCunrefNoCycle(LOC10);
	}
	break;
	default:
	{
		NI LOC12;
		LOC12 = 0;
		LOC12 = sonslen_218351(src);
		if ((*result).kindU.S6.sons) nimGCunrefNoCycle((*result).kindU.S6.sons);
		(*result).kindU.S6.sons = (Tnodeseq215784*) newSeqRC1((&NTI215784), ((NI) (LOC12)));
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, resetidtable_219047)(Tidtable215840* x) {
	(*x).counter = ((NI) 0);
	(*x).data = (Tidpairseq215838*) setLengthSeq(&((*x).data)->Sup, sizeof(Tidpair215836), ((NI) 0));
	(*x).data = (Tidpairseq215838*) setLengthSeq(&((*x).data)->Sup, sizeof(Tidpair215836), ((NI) 8));
}

N_NIMCALL(Tsym215822*, linkto_216854)(Tsym215822* s, Ttype215828* t) {
	Tsym215822* result;
	result = 0;
	asgnRefNoCycle((void**) (&(*t).sym), s);
	asgnRefNoCycle((void**) (&(*s).typ), t);
	result = s;
	return result;
}

N_NIMCALL(NI64, getint_220293)(Tnode215790* a) {
	NI64 result;
	result = 0;
	switch ((*a).kind) {
	case ((NU8) 6) ... ((NU8) 15):
	{
		result = (*a).kindU.S1.intval;
	}
	break;
	default:
	{
		internalerror_188100((*a).info, ((NimStringDesc*) &TMP3410));
		result = IL64(0);
	}
	break;
	}
	return result;
}

N_NIMCALL(NF, getfloat_220298)(Tnode215790* a) {
	NF result;
	result = 0;
	switch ((*a).kind) {
	case ((NU8) 16) ... ((NU8) 19):
	{
		result = (*a).kindU.S2.floatval;
	}
	break;
	default:
	{
		internalerror_188100((*a).info, ((NimStringDesc*) &TMP3411));
		result = 0.0;
	}
	break;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, getstr_220303)(Tnode215790* a) {
	NimStringDesc* result;
	result = 0;
	switch ((*a).kind) {
	case ((NU8) 20) ... ((NU8) 22):
	{
		result = copyString((*a).kindU.S3.strval);
	}
	break;
	case ((NU8) 23):
	{
		result = copyString(NIM_NIL);
	}
	break;
	default:
	{
		internalerror_188100((*a).info, ((NimStringDesc*) &TMP3412));
		result = copyString(((NimStringDesc*) &TMP2225));
	}
	break;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, getstrorchar_220308)(Tnode215790* a) {
	NimStringDesc* result;
	result = 0;
	switch ((*a).kind) {
	case ((NU8) 20) ... ((NU8) 22):
	{
		result = copyString((*a).kindU.S3.strval);
	}
	break;
	case ((NU8) 5) ... ((NU8) 15):
	{
		result = nimCharToStr(((NIM_CHAR) (((NI) (((NI) ((*a).kindU.S1.intval)))))));
	}
	break;
	default:
	{
		internalerror_188100((*a).info, ((NimStringDesc*) &TMP3415));
		result = copyString(((NimStringDesc*) &TMP2225));
	}
	break;
	}
	return result;
}
N_NIMCALL(void, TMP3434)(void* p, NI op) {
	Tidnodepairseq215844* a;
	NI LOC1;
	a = (Tidnodepairseq215844*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].key, op);
	nimGCvisit((void*)a->data[LOC1].val, op);
	}
}

N_NIMCALL(void, initidnodetable_219085)(Tidnodetable215846* x) {
	(*x).counter = ((NI) 0);
	unsureAsgnRef((void**) (&(*x).data), (Tidnodepairseq215844*) newSeq((&NTI215844), ((NI) 8)));
}

N_NIMCALL(NIM_BOOL, containsnode_220117)(Tnode215790* n, TY450235 kinds) {
	NIM_BOOL result;
{	result = 0;
	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 1) ... ((NU8) 23):
	{
		result = ((kinds[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0);
	}
	break;
	default:
	{
		{
			NI i_220155;
			NI HEX3Atmp_220168;
			NI LOC8;
			NI res_220171;
			i_220155 = 0;
			HEX3Atmp_220168 = 0;
			LOC8 = 0;
			LOC8 = sonslen_218351(n);
			HEX3Atmp_220168 = (NI)(LOC8 - ((NI) 1));
			res_220171 = ((NI) 0);
			{
				while (1) {
					if (!(res_220171 <= HEX3Atmp_220168)) goto LA10;
					i_220155 = res_220171;
					{
						NIM_BOOL LOC13;
						LOC13 = 0;
						LOC13 = ((kinds[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0);
						if (LOC13) goto LA14;
						LOC13 = containsnode_220117((*n).kindU.S6.sons->data[i_220155], kinds);
						LA14: ;
						if (!LOC13) goto LA15;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA15: ;
					res_220171 += ((NI) 1);
				} LA10: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, hassubnodewith_220175)(Tnode215790* n, NU8 kind) {
	NIM_BOOL result;
{	result = 0;
	switch ((*n).kind) {
	case ((NU8) 1) ... ((NU8) 23):
	{
		result = ((*n).kind == kind);
	}
	break;
	default:
	{
		{
			NI i_220200;
			NI HEX3Atmp_220213;
			NI LOC4;
			NI res_220216;
			i_220200 = 0;
			HEX3Atmp_220213 = 0;
			LOC4 = 0;
			LOC4 = sonslen_218351(n);
			HEX3Atmp_220213 = (NI)(LOC4 - ((NI) 1));
			res_220216 = ((NI) 0);
			{
				while (1) {
					if (!(res_220216 <= HEX3Atmp_220213)) goto LA6;
					i_220200 = res_220216;
					{
						NIM_BOOL LOC9;
						LOC9 = 0;
						LOC9 = ((*(*n).kindU.S6.sons->data[i_220200]).kind == kind);
						if (LOC9) goto LA10;
						LOC9 = hassubnodewith_220175((*n).kindU.S6.sons->data[i_220200], kind);
						LA10: ;
						if (!LOC9) goto LA11;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA11: ;
					res_220216 += ((NI) 1);
				} LA6: ;
			}
		}
		result = NIM_FALSE;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode215790*, withinfo_217223)(Tnode215790* n, Tlineinfo183337 info) {
	Tnode215790* result;
{	result = 0;
	(*n).info = info;
	result = n;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym215822*, createmodulealias_218838)(Tsym215822* s, Tident190012* newident, Tlineinfo183337 info) {
	Tsym215822* result;
	result = 0;
	result = newsym_216684((*s).kind, newident, (*s).owner, info);
	asgnRefNoCycle((void**) (&(*result).ast), (*s).ast);
	(*result).Sup.id = (*s).Sup.id;
	(*result).flags = (*s).flags;
	(*result).kindU.S3.tab.counter = (*s).kindU.S3.tab.counter;
	asgnRefNoCycle((void**) (&(*result).kindU.S3.tab.data), (*s).kindU.S3.tab.data);
	(*result).options = (*s).options;
	(*result).position = (*s).position;
	genericAssign((void*)(&(*result).loc), (void*)(&(*s).loc), (&NTI215804));
	asgnRef((void**) (&(*result).annex), (*s).annex);
	return result;
}

N_NIMCALL(void, initnodetable_219099)(Tnodetable215852* x) {
	(*x).counter = ((NI) 0);
	unsureAsgnRef((void**) (&(*x).data), (Tnodepairseq215850*) newSeq((&NTI215850), ((NI) 8)));
}

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

N_NIMCALL(Tnode215790*, skipstmtlist_220554)(Tnode215790* n) {
	Tnode215790* result;
{	result = 0;
	{
		if (!((*n).kind == ((NU8) 115) || (*n).kind == ((NU8) 126))) goto LA3;
		{
			NI i_220579;
			NI HEX3Atmp_220593;
			NI LOC6;
			NI res_220596;
			i_220579 = 0;
			HEX3Atmp_220593 = 0;
			LOC6 = 0;
			LOC6 = len_216059(n);
			HEX3Atmp_220593 = (NI)(LOC6 - ((NI) 2));
			res_220596 = ((NI) 0);
			{
				while (1) {
					if (!(res_220596 <= HEX3Atmp_220593)) goto LA8;
					i_220579 = res_220596;
					{
						Tnode215790* LOC11;
						LOC11 = 0;
						LOC11 = HEX5BHEX5D_216238(n, i_220579);
						if (!!(((*LOC11).kind == ((NU8) 1) || (*LOC11).kind == ((NU8) 125)))) goto LA12;
						result = n;
						goto BeforeRet;
					}
					LA12: ;
					res_220596 += ((NI) 1);
				} LA8: ;
			}
		}
		result = lastson_218364(n);
	}
	goto LA1;
	LA3: ;
	{
		result = n;
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}
NIM_EXTERNC N_NOINLINE(void, compiler_astInit000)(void) {
	Tident190012* LOC1;
	Tlineinfo183337 LOC2;
	asgnRefNoCycle((void**) (&emptynode_216801), newnode_216401(((NU8) 1)));
	LOC1 = 0;
	LOC1 = getident_190441(((NimStringDesc*) &TMP875));
	LOC2 = unknownlineinfo_184090();
	asgnRefNoCycle((void**) (&anyglobal_216802), newsym_216684(((NU8) 8), LOC1, NIM_NIL, LOC2));
	asgnRefNoCycle((void**) (&emptyparams_218038), newnode_216401(((NU8) 76)));
	addson_217807(emptyparams_218038, emptynode_216801);
	asgnRefNoCycle((void**) (&opnot_220606), createmagic_220600(((NimStringDesc*) &TMP876), ((NU8) 98)));
	asgnRefNoCycle((void**) (&opcontains_220607), createmagic_220600(((NimStringDesc*) &TMP877), ((NU8) 147)));
}

NIM_EXTERNC N_NOINLINE(void, compiler_astDatInit000)(void) {
static TNimNode* TMP811[5];
static TNimNode* TMP812[14];
static TNimNode* TMP813[62];
NI TMP815;
static char* NIM_CONST TMP814[62] = {
"tyNone", 
"tyBool", 
"tyChar", 
"tyEmpty", 
"tyArrayConstr", 
"tyNil", 
"tyExpr", 
"tyStmt", 
"tyTypeDesc", 
"tyGenericInvocation", 
"tyGenericBody", 
"tyGenericInst", 
"tyGenericParam", 
"tyDistinct", 
"tyEnum", 
"tyOrdinal", 
"tyArray", 
"tyObject", 
"tyTuple", 
"tySet", 
"tyRange", 
"tyPtr", 
"tyRef", 
"tyVar", 
"tySequence", 
"tyProc", 
"tyPointer", 
"tyOpenArray", 
"tyString", 
"tyCString", 
"tyForward", 
"tyInt", 
"tyInt8", 
"tyInt16", 
"tyInt32", 
"tyInt64", 
"tyFloat", 
"tyFloat32", 
"tyFloat64", 
"tyFloat128", 
"tyUInt", 
"tyUInt8", 
"tyUInt16", 
"tyUInt32", 
"tyUInt64", 
"tyBigNum", 
"tyConst", 
"tyMutable", 
"tyVarargs", 
"tyIter", 
"tyProxy", 
"tyBuiltInTypeClass", 
"tyUserTypeClass", 
"tyUserTypeClassInst", 
"tyCompositeTypeClass", 
"tyAnd", 
"tyOr", 
"tyNot", 
"tyAnything", 
"tyStatic", 
"tyFromExpr", 
"tyFieldAccessor"};
static TNimNode* TMP816[10];
NI TMP818;
static char* NIM_CONST TMP817[10] = {
"ccDefault", 
"ccStdCall", 
"ccCDecl", 
"ccSafeCall", 
"ccSysCall", 
"ccInline", 
"ccNoInline", 
"ccFastCall", 
"ccClosure", 
"ccNoConvention"};
static TNimNode* TMP819[29];
NI TMP821;
static char* NIM_CONST TMP820[29] = {
"tfVarargs", 
"tfNoSideEffect", 
"tfFinal", 
"tfInheritable", 
"tfAcyclic", 
"tfEnumHasHoles", 
"tfShallow", 
"tfThread", 
"tfFromGeneric", 
"tfUnresolved", 
"tfRetType", 
"tfCapturesEnv", 
"tfByCopy", 
"tfByRef", 
"tfIterator", 
"tfShared", 
"tfNotNil", 
"tfNeedsInit", 
"tfVarIsPtr", 
"tfHasMeta", 
"tfHasGCedMem", 
"tfPacked", 
"tfHasStatic", 
"tfGenericTypeParam", 
"tfImplicitTypeParam", 
"tfWildcard", 
"tfHasAsgn", 
"tfBorrowDot", 
"tfTriggersCompileTime"};
static TNimNode* TMP823[14];
static TNimNode* TMP824[25];
NI TMP826;
static char* NIM_CONST TMP825[25] = {
"skUnknown", 
"skConditional", 
"skDynLib", 
"skParam", 
"skGenericParam", 
"skTemp", 
"skModule", 
"skType", 
"skVar", 
"skLet", 
"skConst", 
"skResult", 
"skProc", 
"skMethod", 
"skIterator", 
"skConverter", 
"skMacro", 
"skTemplate", 
"skField", 
"skEnumField", 
"skForVar", 
"skLabel", 
"skStub", 
"skPackage", 
"skAlias"};
static TNimNode* TMP827[2];
static TNimNode* TMP828[4];
static TNimNode* TMP829[2];
static TNimNode* TMP833[2];
static TNimNode* TMP834[4];
static TNimNode* TMP838[2];
static TNimNode* TMP839[2];
static TNimNode* TMP840[255];
NI TMP842;
static char* NIM_CONST TMP841[255] = {
"mNone", 
"mDefined", 
"mDefinedInScope", 
"mCompiles", 
"mArrGet", 
"mArrPut", 
"mAsgn", 
"mLow", 
"mHigh", 
"mSizeOf", 
"mTypeTrait", 
"mIs", 
"mOf", 
"mAddr", 
"mTypeOf", 
"mRoof", 
"mPlugin", 
"mEcho", 
"mShallowCopy", 
"mSlurp", 
"mStaticExec", 
"mParseExprToAst", 
"mParseStmtToAst", 
"mExpandToAst", 
"mQuoteAst", 
"mUnaryLt", 
"mInc", 
"mDec", 
"mOrd", 
"mNew", 
"mNewFinalize", 
"mNewSeq", 
"mLengthOpenArray", 
"mLengthStr", 
"mLengthArray", 
"mLengthSeq", 
"mXLenStr", 
"mXLenSeq", 
"mIncl", 
"mExcl", 
"mCard", 
"mChr", 
"mGCref", 
"mGCunref", 
"mAddI", 
"mSubI", 
"mMulI", 
"mDivI", 
"mModI", 
"mSucc", 
"mPred", 
"mAddF64", 
"mSubF64", 
"mMulF64", 
"mDivF64", 
"mShrI", 
"mShlI", 
"mBitandI", 
"mBitorI", 
"mBitxorI", 
"mMinI", 
"mMaxI", 
"mMinF64", 
"mMaxF64", 
"mAddU", 
"mSubU", 
"mMulU", 
"mDivU", 
"mModU", 
"mEqI", 
"mLeI", 
"mLtI", 
"mEqF64", 
"mLeF64", 
"mLtF64", 
"mLeU", 
"mLtU", 
"mLeU64", 
"mLtU64", 
"mEqEnum", 
"mLeEnum", 
"mLtEnum", 
"mEqCh", 
"mLeCh", 
"mLtCh", 
"mEqB", 
"mLeB", 
"mLtB", 
"mEqRef", 
"mEqUntracedRef", 
"mLePtr", 
"mLtPtr", 
"mEqCString", 
"mXor", 
"mEqProc", 
"mUnaryMinusI", 
"mUnaryMinusI64", 
"mAbsI", 
"mNot", 
"mUnaryPlusI", 
"mBitnotI", 
"mUnaryPlusF64", 
"mUnaryMinusF64", 
"mAbsF64", 
"mZe8ToI", 
"mZe8ToI64", 
"mZe16ToI", 
"mZe16ToI64", 
"mZe32ToI64", 
"mZeIToI64", 
"mToU8", 
"mToU16", 
"mToU32", 
"mToFloat", 
"mToBiggestFloat", 
"mToInt", 
"mToBiggestInt", 
"mCharToStr", 
"mBoolToStr", 
"mIntToStr", 
"mInt64ToStr", 
"mFloatToStr", 
"mCStrToStr", 
"mStrToStr", 
"mEnumToStr", 
"mAnd", 
"mOr", 
"mEqStr", 
"mLeStr", 
"mLtStr", 
"mEqSet", 
"mLeSet", 
"mLtSet", 
"mMulSet", 
"mPlusSet", 
"mMinusSet", 
"mSymDiffSet", 
"mConStrStr", 
"mSlice", 
"mDotDot", 
"mFields", 
"mFieldPairs", 
"mOmpParFor", 
"mAppendStrCh", 
"mAppendStrStr", 
"mAppendSeqElem", 
"mInRange", 
"mInSet", 
"mRepr", 
"mExit", 
"mSetLengthStr", 
"mSetLengthSeq", 
"mIsPartOf", 
"mAstToStr", 
"mParallel", 
"mSwap", 
"mIsNil", 
"mArrToSeq", 
"mCopyStr", 
"mCopyStrLast", 
"mNewString", 
"mNewStringOfCap", 
"mParseBiggestFloat", 
"mReset", 
"mArray", 
"mOpenArray", 
"mRange", 
"mSet", 
"mSeq", 
"mVarargs", 
"mOrdinal", 
"mInt", 
"mInt8", 
"mInt16", 
"mInt32", 
"mInt64", 
"mUInt", 
"mUInt8", 
"mUInt16", 
"mUInt32", 
"mUInt64", 
"mFloat", 
"mFloat32", 
"mFloat64", 
"mFloat128", 
"mBool", 
"mChar", 
"mString", 
"mCstring", 
"mPointer", 
"mEmptySet", 
"mIntSetBaseType", 
"mNil", 
"mExpr", 
"mStmt", 
"mTypeDesc", 
"mVoidType", 
"mPNimrodNode", 
"mShared", 
"mGuarded", 
"mLock", 
"mSpawn", 
"mDeepCopy", 
"mIsMainModule", 
"mCompileDate", 
"mCompileTime", 
"mProcCall", 
"mCpuEndian", 
"mHostOS", 
"mHostCPU", 
"mAppType", 
"mNaN", 
"mInf", 
"mNegInf", 
"mCompileOption", 
"mCompileOptionArg", 
"mNLen", 
"mNChild", 
"mNSetChild", 
"mNAdd", 
"mNAddMultiple", 
"mNDel", 
"mNKind", 
"mNIntVal", 
"mNFloatVal", 
"mNSymbol", 
"mNIdent", 
"mNGetType", 
"mNStrVal", 
"mNSetIntVal", 
"mNSetFloatVal", 
"mNSetSymbol", 
"mNSetIdent", 
"mNSetType", 
"mNSetStrVal", 
"mNLineInfo", 
"mNNewNimNode", 
"mNCopyNimNode", 
"mNCopyNimTree", 
"mStrToIdent", 
"mIdentToStr", 
"mNBindSym", 
"mLocals", 
"mNCallSite", 
"mEqIdent", 
"mEqNimrodNode", 
"mSameNodeType", 
"mGetImpl", 
"mNHint", 
"mNWarning", 
"mNError", 
"mInstantiationInfo", 
"mGetTypeInfo", 
"mNGenSym", 
"mNimvm"};
static TNimNode* TMP843[32];
NI TMP845;
static char* NIM_CONST TMP844[32] = {
"sfUsed", 
"sfExported", 
"sfFromGeneric", 
"sfGlobal", 
"sfForward", 
"sfImportc", 
"sfExportc", 
"sfVolatile", 
"sfRegister", 
"sfPure", 
"sfNoSideEffect", 
"sfSideEffect", 
"sfMainModule", 
"sfSystemModule", 
"sfNoReturn", 
"sfAddrTaken", 
"sfCompilerProc", 
"sfProcvar", 
"sfDiscriminant", 
"sfDeprecated", 
"sfError", 
"sfShadowed", 
"sfThread", 
"sfCompileTime", 
"sfConstructor", 
"sfDeadCodeElim", 
"sfBorrow", 
"sfInfixCall", 
"sfNamedParamCall", 
"sfDiscardable", 
"sfOverriden", 
"sfGenSym"};
static TNimNode* TMP849[6];
static TNimNode* TMP850[11];
NI TMP852;
static char* NIM_CONST TMP851[11] = {
"locNone", 
"locTemp", 
"locLocalVar", 
"locGlobalVar", 
"locParam", 
"locField", 
"locExpr", 
"locProc", 
"locData", 
"locCall", 
"locOther"};
static TNimNode* TMP853[4];
NI TMP855;
static char* NIM_CONST TMP854[4] = {
"OnUnknown", 
"OnStatic", 
"OnStack", 
"OnHeap"};
static TNimNode* TMP856[9];
NI TMP858;
static char* NIM_CONST TMP857[9] = {
"lfIndirect", 
"lfFullExternalName", 
"lfNoDeepCopy", 
"lfNoDecl", 
"lfDynamicLib", 
"lfExportLib", 
"lfHeader", 
"lfImportCompilerProc", 
"lfSingleUse"};
static TNimNode* TMP861[5];
static TNimNode* TMP862[2];
NI TMP864;
static char* NIM_CONST TMP863[2] = {
"libHeader", 
"libDynamic"};
static TNimNode* TMP868[15];
NI TMP870;
static char* NIM_CONST TMP869[15] = {
"nfNone", 
"nfBase2", 
"nfBase8", 
"nfBase16", 
"nfAllConst", 
"nfTransf", 
"nfNoRewrite", 
"nfSem", 
"nfLL", 
"nfDotField", 
"nfDotSetter", 
"nfExplicitCall", 
"nfExprCall", 
"nfIsRef", 
"nfIsCursor"};
static TNimNode* TMP871[159];
NI TMP873;
static char* NIM_CONST TMP872[159] = {
"nkNone", 
"nkEmpty", 
"nkIdent", 
"nkSym", 
"nkType", 
"nkCharLit", 
"nkIntLit", 
"nkInt8Lit", 
"nkInt16Lit", 
"nkInt32Lit", 
"nkInt64Lit", 
"nkUIntLit", 
"nkUInt8Lit", 
"nkUInt16Lit", 
"nkUInt32Lit", 
"nkUInt64Lit", 
"nkFloatLit", 
"nkFloat32Lit", 
"nkFloat64Lit", 
"nkFloat128Lit", 
"nkStrLit", 
"nkRStrLit", 
"nkTripleStrLit", 
"nkNilLit", 
"nkMetaNode_Obsolete", 
"nkDotCall", 
"nkCommand", 
"nkCall", 
"nkCallStrLit", 
"nkInfix", 
"nkPrefix", 
"nkPostfix", 
"nkHiddenCallConv", 
"nkExprEqExpr", 
"nkExprColonExpr", 
"nkIdentDefs", 
"nkVarTuple", 
"nkPar", 
"nkObjConstr", 
"nkCurly", 
"nkCurlyExpr", 
"nkBracket", 
"nkBracketExpr", 
"nkPragmaExpr", 
"nkRange", 
"nkDotExpr", 
"nkCheckedFieldExpr", 
"nkDerefExpr", 
"nkIfExpr", 
"nkElifExpr", 
"nkElseExpr", 
"nkLambda", 
"nkDo", 
"nkAccQuoted", 
"nkTableConstr", 
"nkBind", 
"nkClosedSymChoice", 
"nkOpenSymChoice", 
"nkHiddenStdConv", 
"nkHiddenSubConv", 
"nkConv", 
"nkCast", 
"nkStaticExpr", 
"nkAddr", 
"nkHiddenAddr", 
"nkHiddenDeref", 
"nkObjDownConv", 
"nkObjUpConv", 
"nkChckRangeF", 
"nkChckRange64", 
"nkChckRange", 
"nkStringToCString", 
"nkCStringToString", 
"nkAsgn", 
"nkFastAsgn", 
"nkGenericParams", 
"nkFormalParams", 
"nkOfInherit", 
"nkImportAs", 
"nkProcDef", 
"nkMethodDef", 
"nkConverterDef", 
"nkMacroDef", 
"nkTemplateDef", 
"nkIteratorDef", 
"nkOfBranch", 
"nkElifBranch", 
"nkExceptBranch", 
"nkElse", 
"nkAsmStmt", 
"nkPragma", 
"nkPragmaBlock", 
"nkIfStmt", 
"nkWhenStmt", 
"nkForStmt", 
"nkParForStmt", 
"nkWhileStmt", 
"nkCaseStmt", 
"nkTypeSection", 
"nkVarSection", 
"nkLetSection", 
"nkConstSection", 
"nkConstDef", 
"nkTypeDef", 
"nkYieldStmt", 
"nkDefer", 
"nkTryStmt", 
"nkFinally", 
"nkRaiseStmt", 
"nkReturnStmt", 
"nkBreakStmt", 
"nkContinueStmt", 
"nkBlockStmt", 
"nkStaticStmt", 
"nkDiscardStmt", 
"nkStmtList", 
"nkImportStmt", 
"nkImportExceptStmt", 
"nkExportStmt", 
"nkExportExceptStmt", 
"nkFromStmt", 
"nkIncludeStmt", 
"nkBindStmt", 
"nkMixinStmt", 
"nkUsingStmt", 
"nkCommentStmt", 
"nkStmtListExpr", 
"nkBlockExpr", 
"nkStmtListType", 
"nkBlockType", 
"nkWith", 
"nkWithout", 
"nkTypeOfExpr", 
"nkObjectTy", 
"nkTupleTy", 
"nkTupleClassTy", 
"nkTypeClassTy", 
"nkStaticTy", 
"nkRecList", 
"nkRecCase", 
"nkRecWhen", 
"nkRefTy", 
"nkPtrTy", 
"nkVarTy", 
"nkConstTy", 
"nkMutableTy", 
"nkDistinctTy", 
"nkProcTy", 
"nkIteratorTy", 
"nkSharedTy", 
"nkEnumTy", 
"nkEnumFieldDef", 
"nkArgList", 
"nkPattern", 
"nkReturnToken", 
"nkClosure", 
"nkGotoState", 
"nkState", 
"nkBreakState"};
static TNimNode* TMP917[2];
static TNimNode* TMP1166[2];
static TNimNode* TMP1173[2];
static TNimNode* TMP1174[3];
static TNimNode* TMP3432[2];
static TNimNode* TMP3433[2];
static TNimNode TMP805[729];
NTI215790.size = sizeof(Tnode215790);
NTI215790.kind = 18;
NTI215790.base = 0;
NTI215790.flags = 2;
TMP811[0] = &TMP805[1];
NTI215828.size = sizeof(Ttype215828);
NTI215828.kind = 17;
NTI215828.base = (&NTI190006);
NTI215828.flags = 2;
TMP812[0] = &TMP805[3];
NTI215241.size = sizeof(NU8);
NTI215241.kind = 14;
NTI215241.base = 0;
NTI215241.flags = 3;
for (TMP815 = 0; TMP815 < 62; TMP815++) {
TMP805[TMP815+4].kind = 1;
TMP805[TMP815+4].offset = TMP815;
TMP805[TMP815+4].name = TMP814[TMP815];
TMP813[TMP815] = &TMP805[TMP815+4];
}
TMP805[66].len = 62; TMP805[66].kind = 2; TMP805[66].sons = &TMP813[0];
NTI215241.node = &TMP805[66];
TMP805[3].kind = 1;
TMP805[3].offset = offsetof(Ttype215828, kind);
TMP805[3].typ = (&NTI215241);
TMP805[3].name = "kind";
TMP812[1] = &TMP805[67];
NTI215002.size = sizeof(NU8);
NTI215002.kind = 14;
NTI215002.base = 0;
NTI215002.flags = 3;
for (TMP818 = 0; TMP818 < 10; TMP818++) {
TMP805[TMP818+68].kind = 1;
TMP805[TMP818+68].offset = TMP818;
TMP805[TMP818+68].name = TMP817[TMP818];
TMP816[TMP818] = &TMP805[TMP818+68];
}
TMP805[78].len = 10; TMP805[78].kind = 2; TMP805[78].sons = &TMP816[0];
NTI215002.node = &TMP805[78];
TMP805[67].kind = 1;
TMP805[67].offset = offsetof(Ttype215828, callconv);
TMP805[67].typ = (&NTI215002);
TMP805[67].name = "callConv";
TMP812[2] = &TMP805[79];
NTI215431.size = sizeof(NU8);
NTI215431.kind = 14;
NTI215431.base = 0;
NTI215431.flags = 3;
for (TMP821 = 0; TMP821 < 29; TMP821++) {
TMP805[TMP821+80].kind = 1;
TMP805[TMP821+80].offset = TMP821;
TMP805[TMP821+80].name = TMP820[TMP821];
TMP819[TMP821] = &TMP805[TMP821+80];
}
TMP805[109].len = 29; TMP805[109].kind = 2; TMP805[109].sons = &TMP819[0];
NTI215431.node = &TMP805[109];
NTI215433.size = sizeof(NU32);
NTI215433.kind = 19;
NTI215433.base = (&NTI215431);
NTI215433.flags = 3;
TMP805[110].len = 0; TMP805[110].kind = 0;
NTI215433.node = &TMP805[110];
TMP805[79].kind = 1;
TMP805[79].offset = offsetof(Ttype215828, flags);
TMP805[79].typ = (&NTI215433);
TMP805[79].name = "flags";
TMP812[3] = &TMP805[111];
NTI215824.size = sizeof(Ttypeseq215824*);
NTI215824.kind = 24;
NTI215824.base = (&NTI215786);
NTI215824.flags = 2;
NTI215824.marker = TMP822;
TMP805[111].kind = 1;
TMP805[111].offset = offsetof(Ttype215828, sons);
TMP805[111].typ = (&NTI215824);
TMP805[111].name = "sons";
TMP812[4] = &TMP805[112];
TMP805[112].kind = 1;
TMP805[112].offset = offsetof(Ttype215828, n);
TMP805[112].typ = (&NTI215782);
TMP805[112].name = "n";
TMP812[5] = &TMP805[113];
NTI215822.size = sizeof(Tsym215822);
NTI215822.kind = 17;
NTI215822.base = (&NTI190006);
NTI215822.flags = 2;
TMP823[0] = &TMP805[115];
NTI215435.size = sizeof(NU8);
NTI215435.kind = 14;
NTI215435.base = 0;
NTI215435.flags = 3;
for (TMP826 = 0; TMP826 < 25; TMP826++) {
TMP805[TMP826+116].kind = 1;
TMP805[TMP826+116].offset = TMP826;
TMP805[TMP826+116].name = TMP825[TMP826];
TMP824[TMP826] = &TMP805[TMP826+116];
}
TMP805[141].len = 25; TMP805[141].kind = 2; TMP805[141].sons = &TMP824[0];
NTI215435.node = &TMP805[141];
TMP805[115].kind = 3;
TMP805[115].offset = offsetof(Tsym215822, kind);
TMP805[115].typ = (&NTI215435);
TMP805[115].name = "kind";
TMP805[115].sons = &NimDT_215822_kind[0];
TMP805[115].len = 25;
TMP827[0] = &TMP805[143];
TMP805[143].kind = 1;
TMP805[143].offset = offsetof(Tsym215822, kindU.S1.typeinstcache);
TMP805[143].typ = (&NTI215824);
TMP805[143].name = "typeInstCache";
TMP827[1] = &TMP805[144];
NTI215816.size = sizeof(Tscope215816);
NTI215816.kind = 18;
NTI215816.base = 0;
TMP828[0] = &TMP805[146];
TMP805[146].kind = 1;
TMP805[146].offset = offsetof(Tscope215816, depthlevel);
TMP805[146].typ = (&NTI104);
TMP805[146].name = "depthLevel";
TMP828[1] = &TMP805[147];
NTI215794.size = sizeof(Tstrtable215794);
NTI215794.kind = 18;
NTI215794.base = 0;
NTI215794.flags = 2;
TMP829[0] = &TMP805[149];
TMP805[149].kind = 1;
TMP805[149].offset = offsetof(Tstrtable215794, counter);
TMP805[149].typ = (&NTI104);
TMP805[149].name = "counter";
TMP829[1] = &TMP805[150];
NTI215792.size = sizeof(Tsymseq215792*);
NTI215792.kind = 24;
NTI215792.base = (&NTI215788);
NTI215792.flags = 2;
NTI215792.marker = TMP830;
TMP805[150].kind = 1;
TMP805[150].offset = offsetof(Tstrtable215794, data);
TMP805[150].typ = (&NTI215792);
TMP805[150].name = "data";
TMP805[148].len = 2; TMP805[148].kind = 2; TMP805[148].sons = &TMP829[0];
NTI215794.node = &TMP805[148];
TMP805[147].kind = 1;
TMP805[147].offset = offsetof(Tscope215816, symbols);
TMP805[147].typ = (&NTI215794);
TMP805[147].name = "symbols";
TMP828[2] = &TMP805[151];
NTI215784.size = sizeof(Tnodeseq215784*);
NTI215784.kind = 24;
NTI215784.base = (&NTI215782);
NTI215784.flags = 2;
NTI215784.marker = TMP831;
TMP805[151].kind = 1;
TMP805[151].offset = offsetof(Tscope215816, usingsyms);
TMP805[151].typ = (&NTI215784);
TMP805[151].name = "usingSyms";
TMP828[3] = &TMP805[152];
TMP805[152].kind = 1;
TMP805[152].offset = offsetof(Tscope215816, parent);
TMP805[152].typ = (&NTI215818);
TMP805[152].name = "parent";
TMP805[145].len = 4; TMP805[145].kind = 2; TMP805[145].sons = &TMP828[0];
NTI215816.node = &TMP805[145];
NTI215818.size = sizeof(Tscope215816*);
NTI215818.kind = 22;
NTI215818.base = (&NTI215816);
NTI215818.marker = TMP832;
TMP805[144].kind = 1;
TMP805[144].offset = offsetof(Tsym215822, kindU.S1.typscope);
TMP805[144].typ = (&NTI215818);
TMP805[144].name = "typScope";
TMP805[142].len = 2; TMP805[142].kind = 2; TMP805[142].sons = &TMP827[0];
NimDT_215822_kind[7] = &TMP805[142];
NimDT_215822_kind[4] = &TMP805[142];
TMP833[0] = &TMP805[154];
NTI215812.size = sizeof(Tinstantiation215812);
NTI215812.kind = 18;
NTI215812.base = 0;
NTI215812.flags = 2;
TMP834[0] = &TMP805[156];
TMP805[156].kind = 1;
TMP805[156].offset = offsetof(Tinstantiation215812, sym);
TMP805[156].typ = (&NTI215788);
TMP805[156].name = "sym";
TMP834[1] = &TMP805[157];
TMP805[157].kind = 1;
TMP805[157].offset = offsetof(Tinstantiation215812, concretetypes);
TMP805[157].typ = (&NTI215824);
TMP805[157].name = "concreteTypes";
TMP834[2] = &TMP805[158];
NTI215913.size = sizeof(TY215913*);
NTI215913.kind = 24;
NTI215913.base = (&NTI110);
NTI215913.flags = 2;
NTI215913.marker = TMP835;
TMP805[158].kind = 1;
TMP805[158].offset = offsetof(Tinstantiation215812, usedby);
TMP805[158].typ = (&NTI215913);
TMP805[158].name = "usedBy";
TMP834[3] = &TMP805[159];
NTI215810.size = sizeof(NI);
NTI215810.kind = 31;
NTI215810.base = 0;
NTI215810.flags = 3;
TMP805[159].kind = 1;
TMP805[159].offset = offsetof(Tinstantiation215812, compilesid);
TMP805[159].typ = (&NTI215810);
TMP805[159].name = "compilesId";
TMP805[155].len = 4; TMP805[155].kind = 2; TMP805[155].sons = &TMP834[0];
NTI215812.node = &TMP805[155];
NTI215814.size = sizeof(Tinstantiation215812*);
NTI215814.kind = 22;
NTI215814.base = (&NTI215812);
NTI215814.flags = 2;
NTI215814.marker = TMP836;
NTI215925.size = sizeof(TY215925*);
NTI215925.kind = 24;
NTI215925.base = (&NTI215814);
NTI215925.flags = 2;
NTI215925.marker = TMP837;
TMP805[154].kind = 1;
TMP805[154].offset = offsetof(Tsym215822, kindU.S2.procinstcache);
TMP805[154].typ = (&NTI215925);
TMP805[154].name = "procInstCache";
TMP833[1] = &TMP805[160];
TMP805[160].kind = 1;
TMP805[160].offset = offsetof(Tsym215822, kindU.S2.gcunsafetyreason);
TMP805[160].typ = (&NTI215788);
TMP805[160].name = "gcUnsafetyReason";
TMP805[153].len = 2; TMP805[153].kind = 2; TMP805[153].sons = &TMP833[0];
NimDT_215822_kind[12] = &TMP805[153];
NimDT_215822_kind[13] = &TMP805[153];
NimDT_215822_kind[14] = &TMP805[153];
NimDT_215822_kind[15] = &TMP805[153];
NimDT_215822_kind[16] = &TMP805[153];
NimDT_215822_kind[17] = &TMP805[153];
TMP838[0] = &TMP805[162];
TMP805[162].kind = 1;
TMP805[162].offset = offsetof(Tsym215822, kindU.S3.usedgenerics);
TMP805[162].typ = (&NTI215925);
TMP805[162].name = "usedGenerics";
TMP838[1] = &TMP805[163];
TMP805[163].kind = 1;
TMP805[163].offset = offsetof(Tsym215822, kindU.S3.tab);
TMP805[163].typ = (&NTI215794);
TMP805[163].name = "tab";
TMP805[161].len = 2; TMP805[161].kind = 2; TMP805[161].sons = &TMP838[0];
NimDT_215822_kind[6] = &TMP805[161];
TMP839[0] = &TMP805[165];
TMP805[165].kind = 1;
TMP805[165].offset = offsetof(Tsym215822, kindU.S4.guard);
TMP805[165].typ = (&NTI215788);
TMP805[165].name = "guard";
TMP839[1] = &TMP805[166];
TMP805[166].kind = 1;
TMP805[166].offset = offsetof(Tsym215822, kindU.S4.bitsize);
TMP805[166].typ = (&NTI104);
TMP805[166].name = "bitsize";
TMP805[164].len = 2; TMP805[164].kind = 2; TMP805[164].sons = &TMP839[0];
NimDT_215822_kind[9] = &TMP805[164];
NimDT_215822_kind[8] = &TMP805[164];
NimDT_215822_kind[18] = &TMP805[164];
NimDT_215822_kind[20] = &TMP805[164];
TMP805[167].len = 0; TMP805[167].kind = 2;
NimDT_215822_kind[25] = &TMP805[167];
TMP823[1] = &TMP805[168];
NTI215521.size = sizeof(NU8);
NTI215521.kind = 14;
NTI215521.base = 0;
NTI215521.flags = 3;
for (TMP842 = 0; TMP842 < 255; TMP842++) {
TMP805[TMP842+169].kind = 1;
TMP805[TMP842+169].offset = TMP842;
TMP805[TMP842+169].name = TMP841[TMP842];
TMP840[TMP842] = &TMP805[TMP842+169];
}
TMP805[424].len = 255; TMP805[424].kind = 2; TMP805[424].sons = &TMP840[0];
NTI215521.node = &TMP805[424];
TMP805[168].kind = 1;
TMP805[168].offset = offsetof(Tsym215822, magic);
TMP805[168].typ = (&NTI215521);
TMP805[168].name = "magic";
TMP823[2] = &TMP805[425];
TMP805[425].kind = 1;
TMP805[425].offset = offsetof(Tsym215822, typ);
TMP805[425].typ = (&NTI215786);
TMP805[425].name = "typ";
TMP823[3] = &TMP805[426];
TMP805[426].kind = 1;
TMP805[426].offset = offsetof(Tsym215822, name);
TMP805[426].typ = (&NTI190010);
TMP805[426].name = "name";
TMP823[4] = &TMP805[427];
TMP805[427].kind = 1;
TMP805[427].offset = offsetof(Tsym215822, info);
TMP805[427].typ = (&NTI183337);
TMP805[427].name = "info";
TMP823[5] = &TMP805[428];
TMP805[428].kind = 1;
TMP805[428].offset = offsetof(Tsym215822, owner);
TMP805[428].typ = (&NTI215788);
TMP805[428].name = "owner";
TMP823[6] = &TMP805[429];
NTI215183.size = sizeof(NU8);
NTI215183.kind = 14;
NTI215183.base = 0;
NTI215183.flags = 3;
for (TMP845 = 0; TMP845 < 32; TMP845++) {
TMP805[TMP845+430].kind = 1;
TMP805[TMP845+430].offset = TMP845;
TMP805[TMP845+430].name = TMP844[TMP845];
TMP843[TMP845] = &TMP805[TMP845+430];
}
TMP805[462].len = 32; TMP805[462].kind = 2; TMP805[462].sons = &TMP843[0];
NTI215183.node = &TMP805[462];
NTI215185.size = sizeof(NU32);
NTI215185.kind = 19;
NTI215185.base = (&NTI215183);
NTI215185.flags = 3;
TMP805[463].len = 0; TMP805[463].kind = 0;
NTI215185.node = &TMP805[463];
TMP805[429].kind = 1;
TMP805[429].offset = offsetof(Tsym215822, flags);
TMP805[429].typ = (&NTI215185);
TMP805[429].name = "flags";
TMP823[7] = &TMP805[464];
TMP805[464].kind = 1;
TMP805[464].offset = offsetof(Tsym215822, ast);
TMP805[464].typ = (&NTI215782);
TMP805[464].name = "ast";
TMP823[8] = &TMP805[465];
TMP805[465].kind = 1;
TMP805[465].offset = offsetof(Tsym215822, options);
TMP805[465].typ = (&NTI161011);
TMP805[465].name = "options";
TMP823[9] = &TMP805[466];
TMP805[466].kind = 1;
TMP805[466].offset = offsetof(Tsym215822, position);
TMP805[466].typ = (&NTI104);
TMP805[466].name = "position";
TMP823[10] = &TMP805[467];
TMP805[467].kind = 1;
TMP805[467].offset = offsetof(Tsym215822, offset);
TMP805[467].typ = (&NTI104);
TMP805[467].name = "offset";
TMP823[11] = &TMP805[468];
NTI215804.size = sizeof(Tloc215804);
NTI215804.kind = 18;
NTI215804.base = 0;
NTI215804.flags = 2;
TMP849[0] = &TMP805[470];
NTI215796.size = sizeof(NU8);
NTI215796.kind = 14;
NTI215796.base = 0;
NTI215796.flags = 3;
for (TMP852 = 0; TMP852 < 11; TMP852++) {
TMP805[TMP852+471].kind = 1;
TMP805[TMP852+471].offset = TMP852;
TMP805[TMP852+471].name = TMP851[TMP852];
TMP850[TMP852] = &TMP805[TMP852+471];
}
TMP805[482].len = 11; TMP805[482].kind = 2; TMP805[482].sons = &TMP850[0];
NTI215796.node = &TMP805[482];
TMP805[470].kind = 1;
TMP805[470].offset = offsetof(Tloc215804, k);
TMP805[470].typ = (&NTI215796);
TMP805[470].name = "k";
TMP849[1] = &TMP805[483];
NTI215800.size = sizeof(NU8);
NTI215800.kind = 14;
NTI215800.base = 0;
NTI215800.flags = 3;
for (TMP855 = 0; TMP855 < 4; TMP855++) {
TMP805[TMP855+484].kind = 1;
TMP805[TMP855+484].offset = TMP855;
TMP805[TMP855+484].name = TMP854[TMP855];
TMP853[TMP855] = &TMP805[TMP855+484];
}
TMP805[488].len = 4; TMP805[488].kind = 2; TMP805[488].sons = &TMP853[0];
NTI215800.node = &TMP805[488];
TMP805[483].kind = 1;
TMP805[483].offset = offsetof(Tloc215804, s);
TMP805[483].typ = (&NTI215800);
TMP805[483].name = "s";
TMP849[2] = &TMP805[489];
NTI215798.size = sizeof(NU8);
NTI215798.kind = 14;
NTI215798.base = 0;
NTI215798.flags = 3;
for (TMP858 = 0; TMP858 < 9; TMP858++) {
TMP805[TMP858+490].kind = 1;
TMP805[TMP858+490].offset = TMP858;
TMP805[TMP858+490].name = TMP857[TMP858];
TMP856[TMP858] = &TMP805[TMP858+490];
}
TMP805[499].len = 9; TMP805[499].kind = 2; TMP805[499].sons = &TMP856[0];
NTI215798.node = &TMP805[499];
NTI215802.size = sizeof(NU16);
NTI215802.kind = 19;
NTI215802.base = (&NTI215798);
NTI215802.flags = 3;
TMP805[500].len = 0; TMP805[500].kind = 0;
NTI215802.node = &TMP805[500];
TMP805[489].kind = 1;
TMP805[489].offset = offsetof(Tloc215804, flags);
TMP805[489].typ = (&NTI215802);
TMP805[489].name = "flags";
TMP849[3] = &TMP805[501];
TMP805[501].kind = 1;
TMP805[501].offset = offsetof(Tloc215804, t);
TMP805[501].typ = (&NTI215786);
TMP805[501].name = "t";
TMP849[4] = &TMP805[502];
TMP805[502].kind = 1;
TMP805[502].offset = offsetof(Tloc215804, r);
TMP805[502].typ = (&NTI170004);
TMP805[502].name = "r";
TMP849[5] = &TMP805[503];
TMP805[503].kind = 1;
TMP805[503].offset = offsetof(Tloc215804, heaproot);
TMP805[503].typ = (&NTI170004);
TMP805[503].name = "heapRoot";
TMP805[469].len = 6; TMP805[469].kind = 2; TMP805[469].sons = &TMP849[0];
NTI215804.node = &TMP805[469];
TMP805[468].kind = 1;
TMP805[468].offset = offsetof(Tsym215822, loc);
TMP805[468].typ = (&NTI215804);
TMP805[468].name = "loc";
TMP823[12] = &TMP805[504];
NTI215808.size = sizeof(Tlib215808);
NTI215808.kind = 17;
NTI215808.base = (&NTI135010);
TMP861[0] = &TMP805[506];
NTI215806.size = sizeof(NU8);
NTI215806.kind = 14;
NTI215806.base = 0;
NTI215806.flags = 3;
for (TMP864 = 0; TMP864 < 2; TMP864++) {
TMP805[TMP864+507].kind = 1;
TMP805[TMP864+507].offset = TMP864;
TMP805[TMP864+507].name = TMP863[TMP864];
TMP862[TMP864] = &TMP805[TMP864+507];
}
TMP805[509].len = 2; TMP805[509].kind = 2; TMP805[509].sons = &TMP862[0];
NTI215806.node = &TMP805[509];
TMP805[506].kind = 1;
TMP805[506].offset = offsetof(Tlib215808, kind);
TMP805[506].typ = (&NTI215806);
TMP805[506].name = "kind";
TMP861[1] = &TMP805[510];
TMP805[510].kind = 1;
TMP805[510].offset = offsetof(Tlib215808, generated);
TMP805[510].typ = (&NTI130);
TMP805[510].name = "generated";
TMP861[2] = &TMP805[511];
TMP805[511].kind = 1;
TMP805[511].offset = offsetof(Tlib215808, isoverriden);
TMP805[511].typ = (&NTI130);
TMP805[511].name = "isOverriden";
TMP861[3] = &TMP805[512];
TMP805[512].kind = 1;
TMP805[512].offset = offsetof(Tlib215808, name);
TMP805[512].typ = (&NTI170004);
TMP805[512].name = "name";
TMP861[4] = &TMP805[513];
TMP805[513].kind = 1;
TMP805[513].offset = offsetof(Tlib215808, path);
TMP805[513].typ = (&NTI215782);
TMP805[513].name = "path";
TMP805[505].len = 5; TMP805[505].kind = 2; TMP805[505].sons = &TMP861[0];
NTI215808.node = &TMP805[505];
NTI215820.size = sizeof(Tlib215808*);
NTI215820.kind = 22;
NTI215820.base = (&NTI215808);
NTI215820.marker = TMP865;
TMP805[504].kind = 1;
TMP805[504].offset = offsetof(Tsym215822, annex);
TMP805[504].typ = (&NTI215820);
TMP805[504].name = "annex";
TMP823[13] = &TMP805[514];
TMP805[514].kind = 1;
TMP805[514].offset = offsetof(Tsym215822, constraint);
TMP805[514].typ = (&NTI215782);
TMP805[514].name = "constraint";
TMP805[114].len = 14; TMP805[114].kind = 2; TMP805[114].sons = &TMP823[0];
NTI215822.node = &TMP805[114];
NTI215788.size = sizeof(Tsym215822*);
NTI215788.kind = 22;
NTI215788.base = (&NTI215822);
NTI215788.flags = 2;
NTI215788.marker = TMP866;
TMP805[113].kind = 1;
TMP805[113].offset = offsetof(Ttype215828, owner);
TMP805[113].typ = (&NTI215788);
TMP805[113].name = "owner";
TMP812[6] = &TMP805[515];
TMP805[515].kind = 1;
TMP805[515].offset = offsetof(Ttype215828, sym);
TMP805[515].typ = (&NTI215788);
TMP805[515].name = "sym";
TMP812[7] = &TMP805[516];
TMP805[516].kind = 1;
TMP805[516].offset = offsetof(Ttype215828, destructor);
TMP805[516].typ = (&NTI215788);
TMP805[516].name = "destructor";
TMP812[8] = &TMP805[517];
TMP805[517].kind = 1;
TMP805[517].offset = offsetof(Ttype215828, deepcopy);
TMP805[517].typ = (&NTI215788);
TMP805[517].name = "deepCopy";
TMP812[9] = &TMP805[518];
TMP805[518].kind = 1;
TMP805[518].offset = offsetof(Ttype215828, assignment);
TMP805[518].typ = (&NTI215788);
TMP805[518].name = "assignment";
TMP812[10] = &TMP805[519];
TMP805[519].kind = 1;
TMP805[519].offset = offsetof(Ttype215828, size);
TMP805[519].typ = (&NTI7088);
TMP805[519].name = "size";
TMP812[11] = &TMP805[520];
TMP805[520].kind = 1;
TMP805[520].offset = offsetof(Ttype215828, align);
TMP805[520].typ = (&NTI108);
TMP805[520].name = "align";
TMP812[12] = &TMP805[521];
TMP805[521].kind = 1;
TMP805[521].offset = offsetof(Ttype215828, locklevel);
TMP805[521].typ = (&NTI108);
TMP805[521].name = "lockLevel";
TMP812[13] = &TMP805[522];
TMP805[522].kind = 1;
TMP805[522].offset = offsetof(Ttype215828, loc);
TMP805[522].typ = (&NTI215804);
TMP805[522].name = "loc";
TMP805[2].len = 14; TMP805[2].kind = 2; TMP805[2].sons = &TMP812[0];
NTI215828.node = &TMP805[2];
NTI215786.size = sizeof(Ttype215828*);
NTI215786.kind = 22;
NTI215786.base = (&NTI215828);
NTI215786.flags = 2;
NTI215786.marker = TMP867;
TMP805[1].kind = 1;
TMP805[1].offset = offsetof(Tnode215790, typ);
TMP805[1].typ = (&NTI215786);
TMP805[1].name = "typ";
TMP811[1] = &TMP805[523];
TMP805[523].kind = 1;
TMP805[523].offset = offsetof(Tnode215790, info);
TMP805[523].typ = (&NTI183337);
TMP805[523].name = "info";
TMP811[2] = &TMP805[524];
NTI215427.size = sizeof(NU8);
NTI215427.kind = 14;
NTI215427.base = 0;
NTI215427.flags = 3;
for (TMP870 = 0; TMP870 < 15; TMP870++) {
TMP805[TMP870+525].kind = 1;
TMP805[TMP870+525].offset = TMP870;
TMP805[TMP870+525].name = TMP869[TMP870];
TMP868[TMP870] = &TMP805[TMP870+525];
}
TMP805[540].len = 15; TMP805[540].kind = 2; TMP805[540].sons = &TMP868[0];
NTI215427.node = &TMP805[540];
NTI215429.size = sizeof(NU16);
NTI215429.kind = 19;
NTI215429.base = (&NTI215427);
NTI215429.flags = 3;
TMP805[541].len = 0; TMP805[541].kind = 0;
NTI215429.node = &TMP805[541];
TMP805[524].kind = 1;
TMP805[524].offset = offsetof(Tnode215790, flags);
TMP805[524].typ = (&NTI215429);
TMP805[524].name = "flags";
TMP811[3] = &TMP805[542];
NTI215020.size = sizeof(NU8);
NTI215020.kind = 14;
NTI215020.base = 0;
NTI215020.flags = 3;
for (TMP873 = 0; TMP873 < 159; TMP873++) {
TMP805[TMP873+543].kind = 1;
TMP805[TMP873+543].offset = TMP873;
TMP805[TMP873+543].name = TMP872[TMP873];
TMP871[TMP873] = &TMP805[TMP873+543];
}
TMP805[702].len = 159; TMP805[702].kind = 2; TMP805[702].sons = &TMP871[0];
NTI215020.node = &TMP805[702];
TMP805[542].kind = 3;
TMP805[542].offset = offsetof(Tnode215790, kind);
TMP805[542].typ = (&NTI215020);
TMP805[542].name = "kind";
TMP805[542].sons = &NimDT_215790_kind[0];
TMP805[542].len = 159;
TMP805[703].kind = 1;
TMP805[703].offset = offsetof(Tnode215790, kindU.S1.intval);
TMP805[703].typ = (&NTI7088);
TMP805[703].name = "intVal";
NimDT_215790_kind[5] = &TMP805[703];
NimDT_215790_kind[6] = &TMP805[703];
NimDT_215790_kind[7] = &TMP805[703];
NimDT_215790_kind[8] = &TMP805[703];
NimDT_215790_kind[9] = &TMP805[703];
NimDT_215790_kind[10] = &TMP805[703];
NimDT_215790_kind[11] = &TMP805[703];
NimDT_215790_kind[12] = &TMP805[703];
NimDT_215790_kind[13] = &TMP805[703];
NimDT_215790_kind[14] = &TMP805[703];
NimDT_215790_kind[15] = &TMP805[703];
TMP805[704].kind = 1;
TMP805[704].offset = offsetof(Tnode215790, kindU.S2.floatval);
TMP805[704].typ = (&NTI7090);
TMP805[704].name = "floatVal";
NimDT_215790_kind[16] = &TMP805[704];
NimDT_215790_kind[17] = &TMP805[704];
NimDT_215790_kind[18] = &TMP805[704];
NimDT_215790_kind[19] = &TMP805[704];
TMP805[705].kind = 1;
TMP805[705].offset = offsetof(Tnode215790, kindU.S3.strval);
TMP805[705].typ = (&NTI138);
TMP805[705].name = "strVal";
NimDT_215790_kind[20] = &TMP805[705];
NimDT_215790_kind[21] = &TMP805[705];
NimDT_215790_kind[22] = &TMP805[705];
TMP805[706].kind = 1;
TMP805[706].offset = offsetof(Tnode215790, kindU.S4.sym);
TMP805[706].typ = (&NTI215788);
TMP805[706].name = "sym";
NimDT_215790_kind[3] = &TMP805[706];
TMP805[707].kind = 1;
TMP805[707].offset = offsetof(Tnode215790, kindU.S5.ident);
TMP805[707].typ = (&NTI190010);
TMP805[707].name = "ident";
NimDT_215790_kind[2] = &TMP805[707];
TMP805[708].kind = 1;
TMP805[708].offset = offsetof(Tnode215790, kindU.S6.sons);
TMP805[708].typ = (&NTI215784);
TMP805[708].name = "sons";
NimDT_215790_kind[159] = &TMP805[708];
TMP811[4] = &TMP805[709];
TMP805[709].kind = 1;
TMP805[709].offset = offsetof(Tnode215790, comment);
TMP805[709].typ = (&NTI138);
TMP805[709].name = "comment";
TMP805[0].len = 5; TMP805[0].kind = 2; TMP805[0].sons = &TMP811[0];
NTI215790.node = &TMP805[0];
NTI215782.size = sizeof(Tnode215790*);
NTI215782.kind = 22;
NTI215782.base = (&NTI215790);
NTI215782.flags = 2;
NTI215782.marker = TMP874;
NTI215836.size = sizeof(Tidpair215836);
NTI215836.kind = 18;
NTI215836.base = 0;
TMP917[0] = &TMP805[711];
TMP805[711].kind = 1;
TMP805[711].offset = offsetof(Tidpair215836, key);
TMP805[711].typ = (&NTI190008);
TMP805[711].name = "key";
TMP917[1] = &TMP805[712];
TMP805[712].kind = 1;
TMP805[712].offset = offsetof(Tidpair215836, val);
TMP805[712].typ = (&NTI3610);
TMP805[712].name = "val";
TMP805[710].len = 2; TMP805[710].kind = 2; TMP805[710].sons = &TMP917[0];
NTI215836.node = &TMP805[710];
NTI215838.size = sizeof(Tidpairseq215838*);
NTI215838.kind = 24;
NTI215838.base = (&NTI215836);
NTI215838.marker = TMP920;
NTI215840.size = sizeof(Tidtable215840);
NTI215840.kind = 18;
NTI215840.base = 0;
TMP1166[0] = &TMP805[714];
TMP805[714].kind = 1;
TMP805[714].offset = offsetof(Tidtable215840, counter);
TMP805[714].typ = (&NTI104);
TMP805[714].name = "counter";
TMP1166[1] = &TMP805[715];
TMP805[715].kind = 1;
TMP805[715].offset = offsetof(Tidtable215840, data);
TMP805[715].typ = (&NTI215838);
TMP805[715].name = "data";
TMP805[713].len = 2; TMP805[713].kind = 2; TMP805[713].sons = &TMP1166[0];
NTI215840.node = &TMP805[713];
NTI215852.size = sizeof(Tnodetable215852);
NTI215852.kind = 18;
NTI215852.base = 0;
NTI215852.flags = 2;
TMP1173[0] = &TMP805[717];
TMP805[717].kind = 1;
TMP805[717].offset = offsetof(Tnodetable215852, counter);
TMP805[717].typ = (&NTI104);
TMP805[717].name = "counter";
TMP1173[1] = &TMP805[718];
NTI215848.size = sizeof(Tnodepair215848);
NTI215848.kind = 18;
NTI215848.base = 0;
NTI215848.flags = 2;
TMP1174[0] = &TMP805[720];
TMP805[720].kind = 1;
TMP805[720].offset = offsetof(Tnodepair215848, h);
TMP805[720].typ = (&NTI137002);
TMP805[720].name = "h";
TMP1174[1] = &TMP805[721];
TMP805[721].kind = 1;
TMP805[721].offset = offsetof(Tnodepair215848, key);
TMP805[721].typ = (&NTI215782);
TMP805[721].name = "key";
TMP1174[2] = &TMP805[722];
TMP805[722].kind = 1;
TMP805[722].offset = offsetof(Tnodepair215848, val);
TMP805[722].typ = (&NTI104);
TMP805[722].name = "val";
TMP805[719].len = 3; TMP805[719].kind = 2; TMP805[719].sons = &TMP1174[0];
NTI215848.node = &TMP805[719];
NTI215850.size = sizeof(Tnodepairseq215850*);
NTI215850.kind = 24;
NTI215850.base = (&NTI215848);
NTI215850.flags = 2;
NTI215850.marker = TMP1175;
TMP805[718].kind = 1;
TMP805[718].offset = offsetof(Tnodetable215852, data);
TMP805[718].typ = (&NTI215850);
TMP805[718].name = "data";
TMP805[716].len = 2; TMP805[716].kind = 2; TMP805[716].sons = &TMP1173[0];
NTI215852.node = &TMP805[716];
NTI402221.size = sizeof(Tnode215790**);
NTI402221.kind = 21;
NTI402221.base = (&NTI215782);
NTI402221.flags = 3;
NTI215846.size = sizeof(Tidnodetable215846);
NTI215846.kind = 18;
NTI215846.base = 0;
TMP3432[0] = &TMP805[724];
TMP805[724].kind = 1;
TMP805[724].offset = offsetof(Tidnodetable215846, counter);
TMP805[724].typ = (&NTI104);
TMP805[724].name = "counter";
TMP3432[1] = &TMP805[725];
NTI215842.size = sizeof(Tidnodepair215842);
NTI215842.kind = 18;
NTI215842.base = 0;
TMP3433[0] = &TMP805[727];
TMP805[727].kind = 1;
TMP805[727].offset = offsetof(Tidnodepair215842, key);
TMP805[727].typ = (&NTI190008);
TMP805[727].name = "key";
TMP3433[1] = &TMP805[728];
TMP805[728].kind = 1;
TMP805[728].offset = offsetof(Tidnodepair215842, val);
TMP805[728].typ = (&NTI215782);
TMP805[728].name = "val";
TMP805[726].len = 2; TMP805[726].kind = 2; TMP805[726].sons = &TMP3433[0];
NTI215842.node = &TMP805[726];
NTI215844.size = sizeof(Tidnodepairseq215844*);
NTI215844.kind = 24;
NTI215844.base = (&NTI215842);
NTI215844.marker = TMP3434;
TMP805[725].kind = 1;
TMP805[725].offset = offsetof(Tidnodetable215846, data);
TMP805[725].typ = (&NTI215844);
TMP805[725].name = "data";
TMP805[723].len = 2; TMP805[723].kind = 2; TMP805[723].sons = &TMP3432[0];
NTI215846.node = &TMP805[723];
}

