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

#include "nimbase.h"
#include <string.h>
typedef struct Tnode224809 Tnode224809;
typedef struct Ttype224847 Ttype224847;
typedef struct Tlineinfo189352 Tlineinfo189352;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tsym224841 Tsym224841;
typedef struct Tident197021 Tident197021;
typedef struct Tnodeseq224803 Tnodeseq224803;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Tidobj197015 Tidobj197015;
typedef struct TNimObject TNimObject;
typedef struct Ttypeseq224843 Ttypeseq224843;
typedef struct Tloc224823 Tloc224823;
typedef struct Ropeobj175009 Ropeobj175009;
typedef struct Tscope224835 Tscope224835;
typedef struct TY224944 TY224944;
typedef struct Tstrtable224813 Tstrtable224813;
typedef struct Tsymseq224811 Tsymseq224811;
typedef struct Tlib224827 Tlib224827;
typedef struct Tinstantiation224831 Tinstantiation224831;
typedef struct TY224932 TY224932;
typedef struct Tlistentry140022 Tlistentry140022;
typedef struct Cell48946 Cell48946;
typedef struct Cellseq48962 Cellseq48962;
typedef struct Gcheap51018 Gcheap51018;
typedef struct Gcstack51016 Gcstack51016;
typedef struct Cellset48958 Cellset48958;
typedef struct Pagedesc48954 Pagedesc48954;
typedef struct Memregion30890 Memregion30890;
typedef struct Smallchunk30842 Smallchunk30842;
typedef struct Llchunk30884 Llchunk30884;
typedef struct Bigchunk30844 Bigchunk30844;
typedef struct Intset30817 Intset30817;
typedef struct Trunk30813 Trunk30813;
typedef struct Avlnode30888 Avlnode30888;
typedef struct Gcstat51014 Gcstat51014;
typedef struct Tidtable224859 Tidtable224859;
typedef struct Tidpairseq224857 Tidpairseq224857;
typedef struct Tidpair224855 Tidpair224855;
typedef struct Tnodetable224871 Tnodetable224871;
typedef struct Tnodepairseq224869 Tnodepairseq224869;
typedef struct Tnodepair224867 Tnodepair224867;
typedef struct TY90959 TY90959;
typedef struct Tidnodetable224865 Tidnodetable224865;
typedef struct Tidnodepairseq224863 Tidnodepairseq224863;
typedef struct Tidnodepair224861 Tidnodepair224861;
typedef struct Basechunk30840 Basechunk30840;
typedef struct Freecell30832 Freecell30832;
struct  Tlineinfo189352  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tnode224809  {
Ttype224847* typ;
Tlineinfo189352 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym224841* sym;
} S4;
struct {Tident197021* ident;
} S5;
struct {Tnodeseq224803* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
typedef N_NIMCALL_PTR(void, TY3889) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3894) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3889 marker;
TY3894 deepcopy;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj197015  {
  TNimObject Sup;
NI id;
};
struct  Tloc224823  {
NU8 k;
NU8 s;
NU16 flags;
Ttype224847* t;
Ropeobj175009* r;
Ropeobj175009* heaproot;
};
struct  Ttype224847  {
  Tidobj197015 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq224843* sons;
Tnode224809* n;
Tsym224841* owner;
Tsym224841* sym;
Tsym224841* destructor;
Tsym224841* deepcopy;
Tsym224841* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc224823 loc;
};
struct  Tstrtable224813  {
NI counter;
Tsymseq224811* data;
};
struct  Tsym224841  {
  Tidobj197015 Sup;
NU8 kind;
union{
struct {Ttypeseq224843* typeinstcache;
Tscope224835* typscope;
} S1;
struct {TY224944* procinstcache;
Tsym224841* gcunsafetyreason;
} S2;
struct {TY224944* usedgenerics;
Tstrtable224813 tab;
} S3;
struct {Tsym224841* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype224847* typ;
Tident197021* name;
Tlineinfo189352 info;
Tsym224841* owner;
NU32 flags;
Tnode224809* ast;
NU32 options;
NI position;
NI offset;
Tloc224823 loc;
Tlib224827* annex;
Tnode224809* constraint;
};
struct  Tscope224835  {
NI depthlevel;
Tstrtable224813 symbols;
Tnodeseq224803* usingsyms;
Tscope224835* parent;
};
struct  Tinstantiation224831  {
Tsym224841* sym;
Ttypeseq224843* concretetypes;
TY224932* usedby;
NI compilesid;
};
struct  Tlistentry140022  {
  TNimObject Sup;
Tlistentry140022* prev;
Tlistentry140022* next;
};
struct  Tlib224827  {
  Tlistentry140022 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj175009* name;
Tnode224809* path;
};
struct  Cell48946  {
NI refcount;
TNimType* typ;
};
struct  Cellseq48962  {
NI len;
NI cap;
Cell48946** d;
};
struct  Cellset48958  {
NI counter;
NI max;
Pagedesc48954* head;
Pagedesc48954** data;
};
typedef Smallchunk30842* TY30905[512];
typedef Trunk30813* Trunkbuckets30815[256];
struct  Intset30817  {
Trunkbuckets30815 data;
};
struct  Memregion30890  {
NI minlargeobj;
NI maxlargeobj;
TY30905 freesmallchunks;
Llchunk30884* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk30844* freechunkslist;
Intset30817 chunkstarts;
Avlnode30888* root;
Avlnode30888* deleted;
Avlnode30888* last;
Avlnode30888* freeavlnodes;
};
struct  Gcstat51014  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap51018  {
Gcstack51016* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq48962 zct;
Cellseq48962 decstack;
Cellset48958 cycleroots;
Cellseq48962 tempstack;
NI recgclock;
Memregion30890 region;
Gcstat51014 stat;
};
struct  Tidtable224859  {
NI counter;
Tidpairseq224857* data;
};
struct  Tidpair224855  {
Tidobj197015* key;
TNimObject* val;
};
struct  Tnodetable224871  {
NI counter;
Tnodepairseq224869* data;
};
struct  Tnodepair224867  {
NI h;
Tnode224809* key;
NI val;
};
typedef Tnode224809* TY227071[7];
typedef NimStringDesc* TY224022[10];
struct TY90959 {
NimStringDesc* Field0;
NI Field1;
};
typedef Tnode224809* TY242880[1];
struct  Tidnodetable224865  {
NI counter;
Tidnodepairseq224863* data;
};
struct  Tidnodepair224861  {
Tidobj197015* key;
Tnode224809* val;
};
typedef NU8 TY482044[20];
struct  Tident197021  {
  Tidobj197015 Sup;
NimStringDesc* s;
Tident197021* next;
NI h;
};
struct  Ropeobj175009  {
  TNimObject Sup;
Ropeobj175009* left;
Ropeobj175009* right;
NI length;
NimStringDesc* data;
};
struct  Gcstack51016  {
Gcstack51016* prev;
Gcstack51016* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY30821[16];
struct  Pagedesc48954  {
Pagedesc48954* next;
NI key;
TY30821 bits;
};
struct  Basechunk30840  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk30842  {
  Basechunk30840 Sup;
Smallchunk30842* next;
Smallchunk30842* prev;
Freecell30832* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk30884  {
NI size;
NI acc;
Llchunk30884* next;
};
struct  Bigchunk30844  {
  Basechunk30840 Sup;
Bigchunk30844* next;
Bigchunk30844* prev;
NI align;
NF data;
};
struct  Trunk30813  {
Trunk30813* next;
NI key;
TY30821 bits;
};
typedef Avlnode30888* TY30895[2];
struct  Avlnode30888  {
TY30895 link;
NI key;
NI upperbound;
NI level;
};
struct  Freecell30832  {
Freecell30832* next;
NI zerofield;
};
struct Ttypeseq224843 {
  TGenericSeq Sup;
  Ttype224847* data[SEQ_DECL_SIZE];
};
struct Tsymseq224811 {
  TGenericSeq Sup;
  Tsym224841* data[SEQ_DECL_SIZE];
};
struct Tnodeseq224803 {
  TGenericSeq Sup;
  Tnode224809* data[SEQ_DECL_SIZE];
};
struct TY224932 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct TY224944 {
  TGenericSeq Sup;
  Tinstantiation224831* data[SEQ_DECL_SIZE];
};
struct Tidpairseq224857 {
  TGenericSeq Sup;
  Tidpair224855 data[SEQ_DECL_SIZE];
};
struct Tnodepairseq224869 {
  TGenericSeq Sup;
  Tnodepair224867 data[SEQ_DECL_SIZE];
};
struct Tidnodepairseq224863 {
  TGenericSeq Sup;
  Tidnodepair224861 data[SEQ_DECL_SIZE];
};
N_NIMCALL(Tnode224809*, newnode_225401)(NU8 kind);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP816)(void* p, NI op);
N_NIMCALL(void, TMP824)(void* p, NI op);
N_NIMCALL(void, TMP825)(void* p, NI op);
N_NIMCALL(void, TMP826)(void* p, NI op);
N_NIMCALL(void, TMP829)(void* p, NI op);
N_NIMCALL(void, TMP830)(void* p, NI op);
N_NIMCALL(void, TMP831)(void* p, NI op);
N_NIMCALL(void, TMP859)(void* p, NI op);
N_NIMCALL(void, TMP860)(void* p, NI op);
N_NIMCALL(void, TMP861)(void* p, NI op);
N_NIMCALL(void, TMP868)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Cell48946*, usrtocell_52646)(void* usr);
static N_INLINE(void, rtladdzct_54204)(Cell48946* c);
N_NOINLINE(void, addzct_52617)(Cellseq48962* s, Cell48946* c);
N_NIMCALL(Tsym224841*, newsym_225656)(NU8 symkind, Tident197021* name, Tsym224841* owner, Tlineinfo189352 info);
static N_INLINE(NI, getid_223404)(void);
N_NIMCALL(Tident197021*, getident_197463)(NimStringDesc* identifier);
N_NIMCALL(Tlineinfo189352, unknownlineinfo_190411)(void);
N_NIMCALL(void, addson_226819)(Tnode224809* father, Tnode224809* 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(Tsym224841*, createmagic_230047)(NimStringDesc* name, NU8 m);
N_NIMCALL(void, TMP914)(void* p, NI op);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(Ttype224847*, lastson_227426)(Ttype224847* n);
N_NIMCALL(void, propagatetoowner_228274)(Ttype224847* owner, Ttype224847* elem);
N_NIMCALL(NIM_BOOL, ismetatype_225821)(Ttype224847* t);
N_NIMCALL(Ttype224847*, skiptypes_228167)(Ttype224847* t, NU64 kinds);
static N_INLINE(NIM_BOOL, isgcedmem_228235)(Ttype224847* t);
N_NIMCALL(void, TMP1136)(void* p, NI op);
N_NIMCALL(Tnode224809*, newnodei_226351)(NU8 kind, Tlineinfo189352 info);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src_85804, TNimType* mt);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_55022)(Cell48946* c);
static N_INLINE(NIM_BOOL, canbecycleroot_52667)(Cell48946* c);
static N_INLINE(void, rtladdcycleroot_53423)(Cell48946* c);
N_NOINLINE(void, incl_49665)(Cellset48958* s, Cell48946* cell);
static N_INLINE(void, decref_54604)(Cell48946* c);
N_NIMCALL(void, mergeloc_227207)(Tloc224823* a, Tloc224823 b);
N_NIMCALL(void, newsons_227313)(Ttype224847* father, NI length);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(NI, sonslen_227351)(Ttype224847* n);
N_NIMCALL(Ttype224847*, newtype_227140)(NU8 kind, Tsym224841* owner);
N_NIMCALL(void, assigntype_227445)(Ttype224847* dest, Ttype224847* src);
N_NIMCALL(void, copystrtable_226024)(Tstrtable224813* dest, Tstrtable224813 src);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_NIMCALL(void, initstrtable_228007)(Tstrtable224813* x);
N_NIMCALL(NI, sonslen_227387)(Tnode224809* n);
N_NIMCALL(Tnode224809*, copytree_229028)(Tnode224809* src);
N_NIMCALL(void, internalerror_195191)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_195279)(TY90959 x);
N_NIMCALL(Tnode224809*, newintnode_225608)(NU8 kind, NI64 intval);
static N_INLINE(Tnode224809*, HEX5BHEX5D_225244)(Tnode224809* n, NI i);
N_NIMCALL(NI, len_227369)(Ttype224847* n);
N_NIMCALL(void, internalerror_195172)(Tlineinfo189352 info, NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
N_NIMCALL(void, TMP3397)(void* p, NI op);
N_NIMCALL(NIM_BOOL, containsnode_229365)(Tnode224809* n, TY482044 kinds);
N_NIMCALL(NIM_BOOL, hassubnodewith_229439)(Tnode224809* n, NU8 kind);
static N_INLINE(NI, len_225098)(Tnode224809* n);
N_NIMCALL(Tnode224809*, lastson_227406)(Tnode224809* n);
TNimNode* NimDT_224841_kind[27];
TNimNode* NimDT_224809_kind[160];
STRING_LITERAL(TMP869, "*", 1);
STRING_LITERAL(TMP870, "not", 3);
STRING_LITERAL(TMP871, "contains", 8);
STRING_LITERAL(TMP2183, "", 0);
STRING_LITERAL(TMP2184, "stdcall", 7);
STRING_LITERAL(TMP2185, "cdecl", 5);
STRING_LITERAL(TMP2186, "safecall", 8);
STRING_LITERAL(TMP2187, "syscall", 7);
STRING_LITERAL(TMP2188, "inline", 6);
STRING_LITERAL(TMP2189, "noinline", 8);
STRING_LITERAL(TMP2190, "fastcall", 8);
STRING_LITERAL(TMP2191, "closure", 7);
STRING_LITERAL(TMP2192, "noconv", 6);
NIM_CONST TY224022 Callingconvtostr_224019 = {((NimStringDesc*) &TMP2183),
((NimStringDesc*) &TMP2184),
((NimStringDesc*) &TMP2185),
((NimStringDesc*) &TMP2186),
((NimStringDesc*) &TMP2187),
((NimStringDesc*) &TMP2188),
((NimStringDesc*) &TMP2189),
((NimStringDesc*) &TMP2190),
((NimStringDesc*) &TMP2191),
((NimStringDesc*) &TMP2192)}
;
STRING_LITERAL(TMP2196, "<unspecified>", 13);
STRING_LITERAL(TMP2197, "<unknown>", 9);
STRING_LITERAL(TMP2785, "compiler/ast.nim", 16);
NIM_CONST TY90959 TMP2784 = {((NimStringDesc*) &TMP2785),
((NI) 1555)}
;
STRING_LITERAL(TMP3373, "getInt", 6);
STRING_LITERAL(TMP3374, "getFloat", 8);
STRING_LITERAL(TMP3375, "getStr", 6);
STRING_LITERAL(TMP3378, "getStrOrChar", 12);
NIM_BOOL ggdebug_225067;
Tnode224809* emptynode_225807;
TNimType NTI224809; /* TNode */
extern TNimType NTI197015; /* TIdObj */
TNimType NTI224847; /* TType */
TNimType NTI224262; /* TTypeKind */
TNimType NTI224005; /* TCallingConvention */
TNimType NTI224437; /* TTypeFlag */
TNimType NTI224439; /* TTypeFlags */
TNimType NTI224843; /* TTypeSeq */
TNimType NTI224841; /* TSym */
TNimType NTI224441; /* TSymKind */
TNimType NTI224835; /* TScope */
extern TNimType NTI108; /* int */
TNimType NTI224813; /* TStrTable */
TNimType NTI224811; /* TSymSeq */
TNimType NTI224803; /* TNodeSeq */
TNimType NTI224837; /* PScope */
TNimType NTI224831; /* TInstantiation */
extern TNimType NTI114; /* int32 */
TNimType NTI224932; /* seq[int32] */
TNimType NTI224829; /* CompilesId */
TNimType NTI224833; /* PInstantiation */
TNimType NTI224944; /* seq[PInstantiation] */
TNimType NTI224534; /* TMagic */
extern TNimType NTI197019; /* PIdent */
extern TNimType NTI189352; /* TLineInfo */
TNimType NTI224195; /* TSymFlag */
TNimType NTI224197; /* TSymFlags */
extern TNimType NTI166017; /* TOptions */
TNimType NTI224823; /* TLoc */
TNimType NTI224815; /* TLocKind */
TNimType NTI224819; /* TStorageLoc */
TNimType NTI224817; /* TLocFlag */
TNimType NTI224821; /* TLocFlags */
extern TNimType NTI175007; /* Rope */
extern TNimType NTI140022; /* TListEntry */
TNimType NTI224827; /* TLib */
TNimType NTI224825; /* TLibKind */
extern TNimType NTI138; /* bool */
TNimType NTI224839; /* PLib */
TNimType NTI224807; /* PSym */
extern TNimType NTI8112; /* BiggestInt */
extern TNimType NTI112; /* int16 */
TNimType NTI224805; /* PType */
TNimType NTI224433; /* TNodeFlag */
TNimType NTI224435; /* TNodeFlags */
TNimType NTI224029; /* TNodeKind */
extern TNimType NTI8114; /* BiggestFloat */
extern TNimType NTI149; /* string */
TNimType NTI224801; /* PNode */
extern Gcheap51018 gch_51059;
Tsym224841* anyglobal_225814;
extern NU32 goptions_166130;
extern NI gfrontendid_223012;
Tnode224809* emptyparams_227044;
Tsym224841* opnot_230059;
Tsym224841* opcontains_230060;
TNimType NTI224855; /* TIdPair */
extern TNimType NTI197017; /* PIdObj */
extern TNimType NTI4013; /* RootRef */
TNimType NTI224857; /* TIdPairSeq */
TNimType NTI224859; /* TIdTable */
TNimType NTI224871; /* TNodeTable */
TNimType NTI224867; /* TNodePair */
extern TNimType NTI142005; /* Hash */
TNimType NTI224869; /* TNodePairSeq */
TNimType NTI431221; /* ptr PNode */
TNimType NTI224865; /* TIdNodeTable */
TNimType NTI224861; /* TIdNodePair */
TNimType NTI224863; /* TIdNodePairSeq */
N_NIMCALL(void, TMP816)(void* p, NI op) {
	Ttypeseq224843* a;
	NI LOC1;
	a = (Ttypeseq224843*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}
N_NIMCALL(void, TMP824)(void* p, NI op) {
	Tsymseq224811* a;
	NI LOC1;
	a = (Tsymseq224811*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}
N_NIMCALL(void, TMP825)(void* p, NI op) {
	Tnodeseq224803* a;
	NI LOC1;
	a = (Tnodeseq224803*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}
N_NIMCALL(void, TMP826)(void* p, NI op) {
	Tscope224835* a;
	a = (Tscope224835*)p;
	nimGCvisit((void*)(*a).symbols.data, op);
	nimGCvisit((void*)(*a).usingsyms, op);
	nimGCvisit((void*)(*a).parent, op);
}
N_NIMCALL(void, TMP829)(void* p, NI op) {
	TY224932* a;
	NI LOC1;
	a = (TY224932*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	}
}
N_NIMCALL(void, TMP830)(void* p, NI op) {
	Tinstantiation224831* a;
	a = (Tinstantiation224831*)p;
	nimGCvisit((void*)(*a).sym, op);
	nimGCvisit((void*)(*a).concretetypes, op);
	nimGCvisit((void*)(*a).usedby, op);
}
N_NIMCALL(void, TMP831)(void* p, NI op) {
	TY224944* a;
	NI LOC1;
	a = (TY224944*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}
N_NIMCALL(void, TMP859)(void* p, NI op) {
	Tlib224827* a;
	a = (Tlib224827*)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, TMP860)(void* p, NI op) {
	Tsym224841* a;
	a = (Tsym224841*)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):
	case ((NU8) 18):
	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) 19):
	case ((NU8) 21):
	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, TMP861)(void* p, NI op) {
	Ttype224847* a;
	a = (Ttype224847*)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, TMP868)(void* p, NI op) {
	Tnode224809* a;
	a = (Tnode224809*)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(Tnode224809*, newnode_225401)(NU8 kind) {
	Tnode224809* result;
	result = 0;
	result = (Tnode224809*) newObj((&NTI224801), sizeof(Tnode224809));
	(*result).kind = kind;
	(*result).info.fileindex = ((NI32) -1);
	(*result).info.col = ((NI16) -1);
	(*result).info.line = ((NI16) -1);
	return result;
}

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

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

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

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

N_NIMCALL(Tsym224841*, newsym_225656)(NU8 symkind, Tident197021* name, Tsym224841* owner, Tlineinfo189352 info) {
	Tsym224841* result;
	result = 0;
	result = (Tsym224841*) newObj((&NTI224807), sizeof(Tsym224841));
	(*result).Sup.Sup.m_type = (&NTI224841);
	asgnRefNoCycle((void**) (&(*result).name), name);
	(*result).kind = symkind;
	(*result).flags = 0;
	(*result).info = info;
	(*result).options = goptions_166130;
	asgnRefNoCycle((void**) (&(*result).owner), owner);
	(*result).offset = ((NI) -1);
	(*result).Sup.id = getid_223404();
	return result;
}

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

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

N_NIMCALL(Tsym224841*, createmagic_230047)(NimStringDesc* name, NU8 m) {
	Tsym224841* result;
	Tident197021* LOC1;
	Tlineinfo189352 LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = getident_197463(name);
	LOC2 = unknownlineinfo_190411();
	result = newsym_225656(((NU8) 12), LOC1, NIM_NIL, LOC2);
	(*result).magic = m;
	return result;
}
N_NIMCALL(void, TMP914)(void* p, NI op) {
	Tidpairseq224857* a;
	NI LOC1;
	a = (Tidpairseq224857*)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_228057)(Tidtable224859* x) {
	(*x).counter = ((NI) 0);
	unsureAsgnRef((void**) (&(*x).data), (Tidpairseq224857*) newSeq((&NTI224857), ((NI) 8)));
}

N_NIMCALL(void, initstrtable_228007)(Tstrtable224813* x) {
	(*x).counter = ((NI) 0);
	unsureAsgnRef((void**) (&(*x).data), (Tsymseq224811*) newSeq((&NTI224811), ((NI) 8)));
}

N_NIMCALL(Ttype224847*, newtype_227140)(NU8 kind, Tsym224841* owner) {
	Ttype224847* result;
	result = 0;
	result = (Ttype224847*) newObj((&NTI224805), sizeof(Ttype224847));
	(*result).Sup.Sup.m_type = (&NTI224847);
	(*result).kind = kind;
	asgnRefNoCycle((void**) (&(*result).owner), owner);
	(*result).size = IL64(-1);
	(*result).align = ((NI16) 2);
	(*result).Sup.id = getid_223404();
	(*result).locklevel = ((NI16) -1);
	return result;
}

N_NIMCALL(Tnode224809*, newnodeit_226807)(NU8 kind, Tlineinfo189352 info, Ttype224847* typ) {
	Tnode224809* result;
	result = 0;
	result = newnode_225401(kind);
	(*result).info = info;
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

N_NIMCALL(Tnode224809*, newnodei_226351)(NU8 kind, Tlineinfo189352 info) {
	Tnode224809* result;
	result = 0;
	result = (Tnode224809*) newObj((&NTI224801), sizeof(Tnode224809));
	(*result).kind = kind;
	(*result).info = info;
	return result;
}

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

N_NIMCALL(Ttype224847*, skiptypes_228167)(Ttype224847* t, NU64 kinds) {
	Ttype224847* result;
	result = 0;
	result = t;
	{
		while (1) {
			if (!((kinds &(IL64(1)<<(((*result).kind)&IL64(63))))!=0)) goto LA2;
			result = lastson_227426(result);
		} LA2: ;
	}
	return result;
}

N_NIMCALL(Tnode224809*, newsymnode_226325)(Tsym224841* sym) {
	Tnode224809* result;
	result = 0;
	result = newnode_225401(((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_228550)(Tnode224809* father, Tnode224809* son) {
	{
		if (!(*father).kindU.S6.sons == 0) goto LA3;
		if ((*father).kindU.S6.sons) nimGCunrefNoCycle((*father).kindU.S6.sons);
		(*father).kindU.S6.sons = (Tnodeseq224803*) newSeqRC1((&NTI224803), 0);
	}
	LA3: ;
	(*father).kindU.S6.sons = (Tnodeseq224803*) incrSeqV2(&((*father).kindU.S6.sons)->Sup, sizeof(Tnode224809*));
	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_225821)(Ttype224847* 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 &(1<<((((NU8) 19))&31)))!=0);
	LA6: ;
	result = LOC1;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, isgcedmem_228235)(Ttype224847* 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_228274)(Ttype224847* owner, Ttype224847* elem) {
	(*owner).flags = ((*owner).flags | ((*elem).flags & 524288));
	{
		if (!(((*elem).flags &(1<<((((NU8) 16))&31)))!=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 &(1<<((((NU8) 17))&31)))!=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_225821(elem);
		if (!LOC23) goto LA24;
		(*owner).flags |= ((NU32)1)<<((((NU8) 19))%(sizeof(NU32)*8));
	}
	LA24: ;
	{
		Ttype224847* o2;
		if (!(((*elem).flags &(1<<((((NU8) 26))&31)))!=0)) goto LA28;
		o2 = skiptypes_228167(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 &(1<<((((NU8) 28))&31)))!=0)) goto LA36;
		(*owner).flags |= ((NU32)1)<<((((NU8) 28))%(sizeof(NU32)*8));
	}
	LA36: ;
	{
		Ttype224847* 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_228167(elem, 2048);
		{
			NIM_BOOL LOC44;
			LOC44 = 0;
			LOC44 = isgcedmem_228235(elemb);
			if (LOC44) goto LA45;
			LOC44 = (((*elemb).flags &(1<<((((NU8) 20))&31)))!=0);
			LA45: ;
			if (!LOC44) goto LA46;
			(*owner).flags |= ((NU32)1)<<((((NU8) 20))%(sizeof(NU32)*8));
		}
		LA46: ;
	}
	LA40: ;
}

N_NIMCALL(void, rawaddson_228498)(Ttype224847* father, Ttype224847* son) {
	{
		if (!(*father).sons == 0) goto LA3;
		if ((*father).sons) nimGCunrefNoCycle((*father).sons);
		(*father).sons = (Ttypeseq224843*) newSeqRC1((&NTI224843), 0);
	}
	LA3: ;
	(*father).sons = (Ttypeseq224843*) incrSeqV2(&((*father).sons)->Sup, sizeof(Ttype224847*));
	asgnRefNoCycle((void**) (&(*father).sons->data[(*father).sons->Sup.len]), son);
	++(*father).sons->Sup.len;
	{
		if (!!(son == 0)) goto LA7;
		propagatetoowner_228274(father, son);
	}
	LA7: ;
}

N_NIMCALL(Tnode224809*, newsymnode_226338)(Tsym224841* sym, Tlineinfo189352 info) {
	Tnode224809* result;
	result = 0;
	result = newnode_225401(((NU8) 3));
	asgnRefNoCycle((void**) (&(*result).kindU.S4.sym), sym);
	asgnRefNoCycle((void**) (&(*result).typ), (*sym).typ);
	(*result).info = info;
	return result;
}

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

N_NIMCALL(Tnode224809*, newidentnode_226313)(Tident197021* ident, Tlineinfo189352 info) {
	Tnode224809* result;
	result = 0;
	result = newnode_225401(((NU8) 2));
	asgnRefNoCycle((void**) (&(*result).kindU.S5.ident), ident);
	(*result).info = info;
	return result;
}
N_NIMCALL(void, TMP1136)(void* p, NI op) {
	Tnodepairseq224869* a;
	NI LOC1;
	a = (Tnodepairseq224869*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].key, op);
	}
}

N_NIMCALL(Tnode224809*, newprocnode_227058)(NU8 kind, Tlineinfo189352 info, Tnode224809* body, Tnode224809* params, Tnode224809* name, Tnode224809* pattern, Tnode224809* genericparams, Tnode224809* pragmas, Tnode224809* exceptions) {
	Tnode224809* result;
	TY227071 LOC1;
	result = 0;
	result = newnodei_226351(kind, info);
	if ((*result).kindU.S6.sons) nimGCunrefNoCycle((*result).kindU.S6.sons);
	(*result).kindU.S6.sons = (Tnodeseq224803*) newSeqRC1((&NTI224803), 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(NI, sonslen_227387)(Tnode224809* n) {
	NI result;
	result = 0;
	result = ((*n).kindU.S6.sons ? (*n).kindU.S6.sons->Sup.len : 0);
	return result;
}

N_NIMCALL(Tnode224809*, newnode_226607)(NU8 kind, Tlineinfo189352 info, Tnodeseq224803* sons, Ttype224847* typ) {
	Tnode224809* result;
	result = 0;
	result = (Tnode224809*) newObj((&NTI224801), sizeof(Tnode224809));
	(*result).kind = kind;
	(*result).info = info;
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	genericSeqAssign((&(*result).kindU.S6.sons), sons, (&NTI224803));
	return result;
}

N_NIMCALL(Tnode224809*, newnodei_226407)(NU8 kind, Tlineinfo189352 info, NI children) {
	Tnode224809* result;
	result = 0;
	result = (Tnode224809*) newObj((&NTI224801), sizeof(Tnode224809));
	(*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 = (Tnodeseq224803*) newSeqRC1((&NTI224803), ((NI) (children)));
	}
	LA3: ;
	return result;
}

N_NIMCALL(Tnode224809*, lastson_227406)(Tnode224809* n) {
	Tnode224809* 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(Tnode224809*, newstrnode_225644)(NU8 kind, NimStringDesc* strval) {
	Tnode224809* result;
	NimStringDesc* LOC1;
	result = 0;
	result = newnode_225401(kind);
	LOC1 = 0;
	LOC1 = (*result).kindU.S3.strval; (*result).kindU.S3.strval = copyStringRC1(strval);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	return result;
}

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

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

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

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

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

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

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

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

N_NIMCALL(void, mergeloc_227207)(Tloc224823* a, Tloc224823 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_227313)(Ttype224847* father, NI length) {
	{
		if (!(*father).sons == 0) goto LA3;
		if ((*father).sons) nimGCunrefNoCycle((*father).sons);
		(*father).sons = (Ttypeseq224843*) newSeqRC1((&NTI224843), ((NI) (length)));
	}
	goto LA1;
	LA3: ;
	{
		(*father).sons = (Ttypeseq224843*) setLengthSeq(&((*father).sons)->Sup, sizeof(Ttype224847*), ((NI) (length)));
	}
	LA1: ;
}

N_NIMCALL(void, assigntype_227445)(Ttype224847* dest, Ttype224847* 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_227207((&(*(*dest).sym).loc), (*(*src).sym).loc);
		}
		goto LA5;
		LA7: ;
		{
			asgnRefNoCycle((void**) (&(*dest).sym), (*src).sym);
		}
		LA5: ;
	}
	LA3: ;
	LOC14 = 0;
	LOC14 = sonslen_227351(src);
	newsons_227313(dest, LOC14);
	{
		NI i_227518;
		NI HEX3Atmp_227520;
		NI LOC16;
		NI res_227523;
		i_227518 = 0;
		HEX3Atmp_227520 = 0;
		LOC16 = 0;
		LOC16 = sonslen_227351(src);
		HEX3Atmp_227520 = (NI)(LOC16 - ((NI) 1));
		res_227523 = ((NI) 0);
		{
			while (1) {
				if (!(res_227523 <= HEX3Atmp_227520)) goto LA18;
				i_227518 = res_227523;
				asgnRefNoCycle((void**) (&(*dest).sons->data[i_227518]), (*src).sons->data[i_227518]);
				res_227523 += ((NI) 1);
			} LA18: ;
		}
	}
}

N_NIMCALL(void, copyidtable_226091)(Tidtable224859* dest, Tidtable224859 src) {
{	(*dest).counter = src.counter;
	{
		if (!src.data == 0) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	unsureAsgnRef((void**) (&(*dest).data), (Tidpairseq224857*) newSeq((&NTI224857), ((NI) ((src.data ? src.data->Sup.len : 0)))));
	{
		NI i_226134;
		NI HEX3Atmp_226136;
		NI res_226139;
		i_226134 = 0;
		HEX3Atmp_226136 = 0;
		HEX3Atmp_226136 = (src.data ? (src.data->Sup.len-1) : -1);
		res_226139 = ((NI) 0);
		{
			while (1) {
				if (!(res_226139 <= HEX3Atmp_226136)) goto LA7;
				i_226134 = res_226139;
				asgnRef((void**) (&(*dest).data->data[i_226134].key), src.data->data[i_226134].key);
				asgnRef((void**) (&(*dest).data->data[i_226134].val), src.data->data[i_226134].val);
				res_226139 += ((NI) 1);
			} LA7: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tnode224809*, copynode_228660)(Tnode224809* src) {
	Tnode224809* result;
{	result = 0;
	{
		if (!(src == NIM_NIL)) goto LA3;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA3: ;
	result = newnode_225401((*src).kind);
	(*result).info = (*src).info;
	asgnRefNoCycle((void**) (&(*result).typ), (*src).typ);
	(*result).flags = ((*src).flags & 26126);
	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(Ttype224847*, copytype_227542)(Ttype224847* t, Tsym224841* owner, NIM_BOOL keepid) {
	Ttype224847* result;
	result = 0;
	result = newtype_227140((*t).kind, owner);
	assigntype_227445(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(void, copystrtable_226024)(Tstrtable224813* dest, Tstrtable224813 src) {
{	(*dest).counter = src.counter;
	{
		if (!src.data == 0) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	(*dest).data = (Tsymseq224811*) setLengthSeq(&((*dest).data)->Sup, sizeof(Tsym224841*), ((NI) ((src.data ? src.data->Sup.len : 0))));
	{
		NI i_226067;
		NI HEX3Atmp_226069;
		NI res_226072;
		i_226067 = 0;
		HEX3Atmp_226069 = 0;
		HEX3Atmp_226069 = (src.data ? (src.data->Sup.len-1) : -1);
		res_226072 = ((NI) 0);
		{
			while (1) {
				if (!(res_226072 <= HEX3Atmp_226069)) goto LA7;
				i_226067 = res_226072;
				asgnRefNoCycle((void**) (&(*dest).data->data[i_226067]), src.data->data[i_226067]);
				res_226072 += ((NI) 1);
			} LA7: ;
		}
	}
	}BeforeRet: ;
}

N_NIMCALL(Tsym224841*, copysym_227607)(Tsym224841* s, NIM_BOOL keepid) {
	Tsym224841* result;
	result = 0;
	result = newsym_225656((*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_223404();
	}
	LA1: ;
	(*result).flags = (*s).flags;
	(*result).magic = (*s).magic;
	{
		if (!((*s).kind == ((NU8) 6))) goto LA8;
		copystrtable_226024((&(*result).kindU.S3.tab), (*s).kindU.S3.tab);
	}
	LA8: ;
	(*result).options = (*s).options;
	(*result).position = (*s).position;
	genericAssign((void*)(&(*result).loc), (void*)(&(*s).loc), (&NTI224823));
	asgnRef((void**) (&(*result).annex), (*s).annex);
	{
		if (!((525056 &(1<<(((*result).kind)&31)))!=0)) goto LA12;
		asgnRefNoCycle((void**) (&(*result).kindU.S4.guard), (*s).kindU.S4.guard);
	}
	LA12: ;
	return result;
}

N_NIMCALL(void, newsons_227272)(Tnode224809* 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 = (Tnodeseq224803*) newSeqRC1((&NTI224803), ((NI) (length)));
	}
	goto LA1;
	LA3: ;
	{
		(*father).kindU.S6.sons = (Tnodeseq224803*) setLengthSeq(&((*father).kindU.S6.sons)->Sup, sizeof(Tnode224809*), ((NI) (length)));
	}
	LA1: ;
}

N_NIMCALL(Tnode224809*, newintnode_225608)(NU8 kind, NI64 intval) {
	Tnode224809* result;
	result = 0;
	result = newnode_225401(kind);
	(*result).kindU.S1.intval = intval;
	return result;
}

N_NIMCALL(void, newstrtable_228027)(Tstrtable224813* Result) {
	initstrtable_228007(Result);
}

N_NIMCALL(Tnode224809*, copytree_229028)(Tnode224809* src) {
	Tnode224809* result;
{	result = 0;
	{
		if (!(src == NIM_NIL)) goto LA3;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA3: ;
	result = newnode_225401((*src).kind);
	(*result).info = (*src).info;
	asgnRefNoCycle((void**) (&(*result).typ), (*src).typ);
	(*result).flags = ((*src).flags & 26126);
	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_227387(src);
		if ((*result).kindU.S6.sons) nimGCunrefNoCycle((*result).kindU.S6.sons);
		(*result).kindU.S6.sons = (Tnodeseq224803*) newSeqRC1((&NTI224803), ((NI) (LOC12)));
		{
			NI i_229234;
			NI HEX3Atmp_229238;
			NI LOC14;
			NI res_229241;
			i_229234 = 0;
			HEX3Atmp_229238 = 0;
			LOC14 = 0;
			LOC14 = sonslen_227387(src);
			HEX3Atmp_229238 = (NI)(LOC14 - ((NI) 1));
			res_229241 = ((NI) 0);
			{
				while (1) {
					if (!(res_229241 <= HEX3Atmp_229238)) goto LA16;
					i_229234 = res_229241;
					asgnRefNoCycle((void**) (&(*result).kindU.S6.sons->data[i_229234]), copytree_229028((*src).kindU.S6.sons->data[i_229234]));
					res_229241 += ((NI) 1);
				} LA16: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

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

N_NIMCALL(Tsym224841*, skipgenericowner_229694)(Tsym224841* s) {
	Tsym224841* result;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!!(((520192 &(1<<(((*s).kind)&31)))!=0))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_195279(TMP2784);
		internalerror_195191(LOC5);
	}
	LA3: ;
	{
		if (!(((*s).flags &(1<<((((NU8) 2))&31)))!=0)) goto LA8;
		result = (*(*s).owner).owner;
	}
	goto LA6;
	LA8: ;
	{
		result = (*s).owner;
	}
	LA6: ;
	return result;
}

N_NIMCALL(Tnode224809*, newinttypenode_225620)(NU8 kind, NI64 intval, Ttype224847* typ) {
	Tnode224809* result;
	result = 0;
	result = newintnode_225608(kind, intval);
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	return result;
}

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

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

N_NIMCALL(Ttype224847*, skiptypesornil_228195)(Ttype224847* t, NU64 kinds) {
	Ttype224847* result;
{	result = 0;
	result = t;
	{
		while (1) {
			NIM_BOOL LOC3;
			LOC3 = 0;
			LOC3 = !((result == NIM_NIL));
			if (!(LOC3)) goto LA4;
			LOC3 = ((kinds &(IL64(1)<<(((*result).kind)&IL64(63))))!=0);
			LA4: ;
			if (!LOC3) goto LA2;
			{
				NI LOC7;
				LOC7 = 0;
				LOC7 = len_227369(result);
				if (!(LOC7 == ((NI) 0))) goto LA8;
				result = NIM_NIL;
				goto BeforeRet;
			}
			LA8: ;
			result = lastson_227426(result);
		} LA2: ;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, discardsons_225092)(Tnode224809* father) {
	genericSeqAssign((&(*father).kindU.S6.sons), NIM_NIL, (&NTI224803));
}

N_NIMCALL(void, appendtomodule_225911)(Tsym224841* m, Tnode224809* n) {
	{
		TY242880 LOC5;
		if (!((*m).ast == NIM_NIL)) goto LA3;
		asgnRefNoCycle((void**) (&(*m).ast), newnode_225401(((NU8) 115)));
		if ((*(*m).ast).kindU.S6.sons) nimGCunrefNoCycle((*(*m).ast).kindU.S6.sons);
		(*(*m).ast).kindU.S6.sons = (Tnodeseq224803*) newSeqRC1((&NTI224803), 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 = (Tnodeseq224803*) incrSeqV2(&((*(*m).ast).kindU.S6.sons)->Sup, sizeof(Tnode224809*));
		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_228597)(Tnode224809* father, NI idx) {
	NI length;
{	{
		if (!(*father).kindU.S6.sons == 0) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	length = sonslen_227387(father);
	{
		NI i_228623;
		NI HEX3Atmp_228638;
		NI res_228641;
		i_228623 = 0;
		HEX3Atmp_228638 = 0;
		HEX3Atmp_228638 = (NI)(length - ((NI) 2));
		res_228641 = idx;
		{
			while (1) {
				if (!(res_228641 <= HEX3Atmp_228638)) goto LA7;
				i_228623 = res_228641;
				asgnRefNoCycle((void**) (&(*father).kindU.S6.sons->data[i_228623]), (*father).kindU.S6.sons->data[(NI)(i_228623 + ((NI) 1))]);
				res_228641 += ((NI) 1);
			} LA7: ;
		}
	}
	(*father).kindU.S6.sons = (Tnodeseq224803*) setLengthSeq(&((*father).kindU.S6.sons)->Sup, sizeof(Tnode224809*), ((NI) ((NI)(length - ((NI) 1)))));
	}BeforeRet: ;
}

N_NIMCALL(Tnode224809*, newfloatnode_225632)(NU8 kind, NF floatval) {
	Tnode224809* result;
	result = 0;
	result = newnode_225401(kind);
	(*result).kindU.S2.floatval = floatval;
	return result;
}

N_NIMCALL(NIM_BOOL, iscallexpr_225072)(Tnode224809* 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(Tnode224809*, shallowcopy_228817)(Tnode224809* src) {
	Tnode224809* result;
{	result = 0;
	{
		if (!(src == NIM_NIL)) goto LA3;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA3: ;
	result = newnode_225401((*src).kind);
	(*result).info = (*src).info;
	asgnRefNoCycle((void**) (&(*result).typ), (*src).typ);
	(*result).flags = ((*src).flags & 26126);
	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_227387(src);
		if ((*result).kindU.S6.sons) nimGCunrefNoCycle((*result).kindU.S6.sons);
		(*result).kindU.S6.sons = (Tnodeseq224803*) newSeqRC1((&NTI224803), ((NI) (LOC12)));
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, resetidtable_228077)(Tidtable224859* x) {
	(*x).counter = ((NI) 0);
	(*x).data = (Tidpairseq224857*) setLengthSeq(&((*x).data)->Sup, sizeof(Tidpair224855), ((NI) 0));
	(*x).data = (Tidpairseq224857*) setLengthSeq(&((*x).data)->Sup, sizeof(Tidpair224855), ((NI) 8));
}

N_NIMCALL(Tsym224841*, linkto_225884)(Tsym224841* s, Ttype224847* t) {
	Tsym224841* result;
	result = 0;
	asgnRefNoCycle((void**) (&(*t).sym), s);
	asgnRefNoCycle((void**) (&(*s).typ), t);
	result = s;
	return result;
}

N_NIMCALL(NI64, getint_229605)(Tnode224809* a) {
	NI64 result;
	result = 0;
	switch ((*a).kind) {
	case ((NU8) 6) ... ((NU8) 15):
	{
		result = (*a).kindU.S1.intval;
	}
	break;
	default:
	{
		internalerror_195172((*a).info, ((NimStringDesc*) &TMP3373));
		result = IL64(0);
	}
	break;
	}
	return result;
}

N_NIMCALL(NF, getfloat_229616)(Tnode224809* a) {
	NF result;
	result = 0;
	switch ((*a).kind) {
	case ((NU8) 16) ... ((NU8) 19):
	{
		result = (*a).kindU.S2.floatval;
	}
	break;
	default:
	{
		internalerror_195172((*a).info, ((NimStringDesc*) &TMP3374));
		result = 0.0;
	}
	break;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, getstr_229627)(Tnode224809* 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_195172((*a).info, ((NimStringDesc*) &TMP3375));
		result = copyString(((NimStringDesc*) &TMP2183));
	}
	break;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, getstrorchar_229638)(Tnode224809* 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_195172((*a).info, ((NimStringDesc*) &TMP3378));
		result = copyString(((NimStringDesc*) &TMP2183));
	}
	break;
	}
	return result;
}
N_NIMCALL(void, TMP3397)(void* p, NI op) {
	Tidnodepairseq224863* a;
	NI LOC1;
	a = (Tidnodepairseq224863*)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_228127)(Tidnodetable224865* x) {
	(*x).counter = ((NI) 0);
	unsureAsgnRef((void**) (&(*x).data), (Tidnodepairseq224863*) newSeq((&NTI224863), ((NI) 8)));
}

N_NIMCALL(NIM_BOOL, containsnode_229365)(Tnode224809* n, TY482044 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[(*n).kind/8] &(1<<((*n).kind%8)))!=0);
	}
	break;
	default:
	{
		{
			NI i_229404;
			NI HEX3Atmp_229417;
			NI LOC8;
			NI res_229420;
			i_229404 = 0;
			HEX3Atmp_229417 = 0;
			LOC8 = 0;
			LOC8 = sonslen_227387(n);
			HEX3Atmp_229417 = (NI)(LOC8 - ((NI) 1));
			res_229420 = ((NI) 0);
			{
				while (1) {
					if (!(res_229420 <= HEX3Atmp_229417)) goto LA10;
					i_229404 = res_229420;
					{
						NIM_BOOL LOC13;
						LOC13 = 0;
						LOC13 = ((kinds[(*n).kind/8] &(1<<((*n).kind%8)))!=0);
						if (LOC13) goto LA14;
						LOC13 = containsnode_229365((*n).kindU.S6.sons->data[i_229404], kinds);
						LA14: ;
						if (!LOC13) goto LA15;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA15: ;
					res_229420 += ((NI) 1);
				} LA10: ;
			}
		}
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, hassubnodewith_229439)(Tnode224809* n, NU8 kind) {
	NIM_BOOL result;
{	result = 0;
	switch ((*n).kind) {
	case ((NU8) 1) ... ((NU8) 23):
	{
		result = ((*n).kind == kind);
	}
	break;
	default:
	{
		{
			NI i_229465;
			NI HEX3Atmp_229478;
			NI LOC4;
			NI res_229481;
			i_229465 = 0;
			HEX3Atmp_229478 = 0;
			LOC4 = 0;
			LOC4 = sonslen_227387(n);
			HEX3Atmp_229478 = (NI)(LOC4 - ((NI) 1));
			res_229481 = ((NI) 0);
			{
				while (1) {
					if (!(res_229481 <= HEX3Atmp_229478)) goto LA6;
					i_229465 = res_229481;
					{
						NIM_BOOL LOC9;
						LOC9 = 0;
						LOC9 = ((*(*n).kindU.S6.sons->data[i_229465]).kind == kind);
						if (LOC9) goto LA10;
						LOC9 = hassubnodewith_229439((*n).kindU.S6.sons->data[i_229465], kind);
						LA10: ;
						if (!LOC9) goto LA11;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA11: ;
					res_229481 += ((NI) 1);
				} LA6: ;
			}
		}
		result = NIM_FALSE;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tnode224809*, withinfo_226302)(Tnode224809* n, Tlineinfo189352 info) {
	Tnode224809* result;
{	result = 0;
	(*n).info = info;
	result = n;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Tsym224841*, createmodulealias_227844)(Tsym224841* s, Tident197021* newident, Tlineinfo189352 info) {
	Tsym224841* result;
	result = 0;
	result = newsym_225656((*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), (&NTI224823));
	asgnRef((void**) (&(*result).annex), (*s).annex);
	return result;
}

N_NIMCALL(void, initnodetable_228147)(Tnodetable224871* x) {
	(*x).counter = ((NI) 0);
	unsureAsgnRef((void**) (&(*x).data), (Tnodepairseq224869*) newSeq((&NTI224869), ((NI) 8)));
}

static N_INLINE(NI, len_225098)(Tnode224809* 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(Tnode224809*, skipstmtlist_229985)(Tnode224809* n) {
	Tnode224809* result;
{	result = 0;
	{
		if (!((*n).kind == ((NU8) 115) || (*n).kind == ((NU8) 126))) goto LA3;
		{
			NI i_230011;
			NI HEX3Atmp_230025;
			NI LOC6;
			NI res_230028;
			i_230011 = 0;
			HEX3Atmp_230025 = 0;
			LOC6 = 0;
			LOC6 = len_225098(n);
			HEX3Atmp_230025 = (NI)(LOC6 - ((NI) 2));
			res_230028 = ((NI) 0);
			{
				while (1) {
					if (!(res_230028 <= HEX3Atmp_230025)) goto LA8;
					i_230011 = res_230028;
					{
						Tnode224809* LOC11;
						LOC11 = 0;
						LOC11 = HEX5BHEX5D_225244(n, i_230011);
						if (!!(((*LOC11).kind == ((NU8) 1) || (*LOC11).kind == ((NU8) 125)))) goto LA12;
						result = n;
						goto BeforeRet;
					}
					LA12: ;
					res_230028 += ((NI) 1);
				} LA8: ;
			}
		}
		result = lastson_227406(n);
	}
	goto LA1;
	LA3: ;
	{
		result = n;
	}
	LA1: ;
	}BeforeRet: ;
	return result;
}
NIM_EXTERNC N_NOINLINE(void, compiler_astInit000)(void) {
	Tident197021* LOC1;
	Tlineinfo189352 LOC2;
	asgnRefNoCycle((void**) (&emptynode_225807), newnode_225401(((NU8) 1)));
	LOC1 = 0;
	LOC1 = getident_197463(((NimStringDesc*) &TMP869));
	LOC2 = unknownlineinfo_190411();
	asgnRefNoCycle((void**) (&anyglobal_225814), newsym_225656(((NU8) 8), LOC1, NIM_NIL, LOC2));
	asgnRefNoCycle((void**) (&emptyparams_227044), newnode_225401(((NU8) 76)));
	addson_226819(emptyparams_227044, emptynode_225807);
	asgnRefNoCycle((void**) (&opnot_230059), createmagic_230047(((NimStringDesc*) &TMP870), ((NU8) 98)));
	asgnRefNoCycle((void**) (&opcontains_230060), createmagic_230047(((NimStringDesc*) &TMP871), ((NU8) 147)));
}

NIM_EXTERNC N_NOINLINE(void, compiler_astDatInit000)(void) {
static TNimNode* TMP805[5];
static TNimNode* TMP806[14];
static TNimNode* TMP807[62];
NI TMP809;
static char* NIM_CONST TMP808[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* TMP810[10];
NI TMP812;
static char* NIM_CONST TMP811[10] = {
"ccDefault", 
"ccStdCall", 
"ccCDecl", 
"ccSafeCall", 
"ccSysCall", 
"ccInline", 
"ccNoInline", 
"ccFastCall", 
"ccClosure", 
"ccNoConvention"};
static TNimNode* TMP813[29];
NI TMP815;
static char* NIM_CONST TMP814[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* TMP817[14];
static TNimNode* TMP818[26];
NI TMP820;
static char* NIM_CONST TMP819[26] = {
"skUnknown", 
"skConditional", 
"skDynLib", 
"skParam", 
"skGenericParam", 
"skTemp", 
"skModule", 
"skType", 
"skVar", 
"skLet", 
"skConst", 
"skResult", 
"skProc", 
"skMethod", 
"skIterator", 
"skClosureIterator", 
"skConverter", 
"skMacro", 
"skTemplate", 
"skField", 
"skEnumField", 
"skForVar", 
"skLabel", 
"skStub", 
"skPackage", 
"skAlias"};
static TNimNode* TMP821[2];
static TNimNode* TMP822[4];
static TNimNode* TMP823[2];
static TNimNode* TMP827[2];
static TNimNode* TMP828[4];
static TNimNode* TMP832[2];
static TNimNode* TMP833[2];
static TNimNode* TMP834[255];
NI TMP836;
static char* NIM_CONST TMP835[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* TMP837[32];
NI TMP839;
static char* NIM_CONST TMP838[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* TMP843[6];
static TNimNode* TMP844[11];
NI TMP846;
static char* NIM_CONST TMP845[11] = {
"locNone", 
"locTemp", 
"locLocalVar", 
"locGlobalVar", 
"locParam", 
"locField", 
"locExpr", 
"locProc", 
"locData", 
"locCall", 
"locOther"};
static TNimNode* TMP847[4];
NI TMP849;
static char* NIM_CONST TMP848[4] = {
"OnUnknown", 
"OnStatic", 
"OnStack", 
"OnHeap"};
static TNimNode* TMP850[9];
NI TMP852;
static char* NIM_CONST TMP851[9] = {
"lfIndirect", 
"lfFullExternalName", 
"lfNoDeepCopy", 
"lfNoDecl", 
"lfDynamicLib", 
"lfExportLib", 
"lfHeader", 
"lfImportCompilerProc", 
"lfSingleUse"};
static TNimNode* TMP855[5];
static TNimNode* TMP856[2];
NI TMP858;
static char* NIM_CONST TMP857[2] = {
"libHeader", 
"libDynamic"};
static TNimNode* TMP862[15];
NI TMP864;
static char* NIM_CONST TMP863[15] = {
"nfNone", 
"nfBase2", 
"nfBase8", 
"nfBase16", 
"nfAllConst", 
"nfTransf", 
"nfNoRewrite", 
"nfSem", 
"nfLL", 
"nfDotField", 
"nfDotSetter", 
"nfExplicitCall", 
"nfExprCall", 
"nfIsRef", 
"nfIsCursor"};
static TNimNode* TMP865[159];
NI TMP867;
static char* NIM_CONST TMP866[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* TMP911[2];
static TNimNode* TMP1124[2];
static TNimNode* TMP1134[2];
static TNimNode* TMP1135[3];
static TNimNode* TMP3395[2];
static TNimNode* TMP3396[2];
static TNimNode TMP799[730];
NTI224809.size = sizeof(Tnode224809);
NTI224809.kind = 18;
NTI224809.base = 0;
NTI224809.flags = 2;
TMP805[0] = &TMP799[1];
NTI224847.size = sizeof(Ttype224847);
NTI224847.kind = 17;
NTI224847.base = (&NTI197015);
NTI224847.flags = 2;
TMP806[0] = &TMP799[3];
NTI224262.size = sizeof(NU8);
NTI224262.kind = 14;
NTI224262.base = 0;
NTI224262.flags = 3;
for (TMP809 = 0; TMP809 < 62; TMP809++) {
TMP799[TMP809+4].kind = 1;
TMP799[TMP809+4].offset = TMP809;
TMP799[TMP809+4].name = TMP808[TMP809];
TMP807[TMP809] = &TMP799[TMP809+4];
}
TMP799[66].len = 62; TMP799[66].kind = 2; TMP799[66].sons = &TMP807[0];
NTI224262.node = &TMP799[66];
TMP799[3].kind = 1;
TMP799[3].offset = offsetof(Ttype224847, kind);
TMP799[3].typ = (&NTI224262);
TMP799[3].name = "kind";
TMP806[1] = &TMP799[67];
NTI224005.size = sizeof(NU8);
NTI224005.kind = 14;
NTI224005.base = 0;
NTI224005.flags = 3;
for (TMP812 = 0; TMP812 < 10; TMP812++) {
TMP799[TMP812+68].kind = 1;
TMP799[TMP812+68].offset = TMP812;
TMP799[TMP812+68].name = TMP811[TMP812];
TMP810[TMP812] = &TMP799[TMP812+68];
}
TMP799[78].len = 10; TMP799[78].kind = 2; TMP799[78].sons = &TMP810[0];
NTI224005.node = &TMP799[78];
TMP799[67].kind = 1;
TMP799[67].offset = offsetof(Ttype224847, callconv);
TMP799[67].typ = (&NTI224005);
TMP799[67].name = "callConv";
TMP806[2] = &TMP799[79];
NTI224437.size = sizeof(NU8);
NTI224437.kind = 14;
NTI224437.base = 0;
NTI224437.flags = 3;
for (TMP815 = 0; TMP815 < 29; TMP815++) {
TMP799[TMP815+80].kind = 1;
TMP799[TMP815+80].offset = TMP815;
TMP799[TMP815+80].name = TMP814[TMP815];
TMP813[TMP815] = &TMP799[TMP815+80];
}
TMP799[109].len = 29; TMP799[109].kind = 2; TMP799[109].sons = &TMP813[0];
NTI224437.node = &TMP799[109];
NTI224439.size = sizeof(NU32);
NTI224439.kind = 19;
NTI224439.base = (&NTI224437);
NTI224439.flags = 3;
TMP799[110].len = 0; TMP799[110].kind = 0;
NTI224439.node = &TMP799[110];
TMP799[79].kind = 1;
TMP799[79].offset = offsetof(Ttype224847, flags);
TMP799[79].typ = (&NTI224439);
TMP799[79].name = "flags";
TMP806[3] = &TMP799[111];
NTI224843.size = sizeof(Ttypeseq224843*);
NTI224843.kind = 24;
NTI224843.base = (&NTI224805);
NTI224843.flags = 2;
NTI224843.marker = TMP816;
TMP799[111].kind = 1;
TMP799[111].offset = offsetof(Ttype224847, sons);
TMP799[111].typ = (&NTI224843);
TMP799[111].name = "sons";
TMP806[4] = &TMP799[112];
TMP799[112].kind = 1;
TMP799[112].offset = offsetof(Ttype224847, n);
TMP799[112].typ = (&NTI224801);
TMP799[112].name = "n";
TMP806[5] = &TMP799[113];
NTI224841.size = sizeof(Tsym224841);
NTI224841.kind = 17;
NTI224841.base = (&NTI197015);
NTI224841.flags = 2;
TMP817[0] = &TMP799[115];
NTI224441.size = sizeof(NU8);
NTI224441.kind = 14;
NTI224441.base = 0;
NTI224441.flags = 3;
for (TMP820 = 0; TMP820 < 26; TMP820++) {
TMP799[TMP820+116].kind = 1;
TMP799[TMP820+116].offset = TMP820;
TMP799[TMP820+116].name = TMP819[TMP820];
TMP818[TMP820] = &TMP799[TMP820+116];
}
TMP799[142].len = 26; TMP799[142].kind = 2; TMP799[142].sons = &TMP818[0];
NTI224441.node = &TMP799[142];
TMP799[115].kind = 3;
TMP799[115].offset = offsetof(Tsym224841, kind);
TMP799[115].typ = (&NTI224441);
TMP799[115].name = "kind";
TMP799[115].sons = &NimDT_224841_kind[0];
TMP799[115].len = 26;
TMP821[0] = &TMP799[144];
TMP799[144].kind = 1;
TMP799[144].offset = offsetof(Tsym224841, kindU.S1.typeinstcache);
TMP799[144].typ = (&NTI224843);
TMP799[144].name = "typeInstCache";
TMP821[1] = &TMP799[145];
NTI224835.size = sizeof(Tscope224835);
NTI224835.kind = 18;
NTI224835.base = 0;
TMP822[0] = &TMP799[147];
TMP799[147].kind = 1;
TMP799[147].offset = offsetof(Tscope224835, depthlevel);
TMP799[147].typ = (&NTI108);
TMP799[147].name = "depthLevel";
TMP822[1] = &TMP799[148];
NTI224813.size = sizeof(Tstrtable224813);
NTI224813.kind = 18;
NTI224813.base = 0;
NTI224813.flags = 2;
TMP823[0] = &TMP799[150];
TMP799[150].kind = 1;
TMP799[150].offset = offsetof(Tstrtable224813, counter);
TMP799[150].typ = (&NTI108);
TMP799[150].name = "counter";
TMP823[1] = &TMP799[151];
NTI224811.size = sizeof(Tsymseq224811*);
NTI224811.kind = 24;
NTI224811.base = (&NTI224807);
NTI224811.flags = 2;
NTI224811.marker = TMP824;
TMP799[151].kind = 1;
TMP799[151].offset = offsetof(Tstrtable224813, data);
TMP799[151].typ = (&NTI224811);
TMP799[151].name = "data";
TMP799[149].len = 2; TMP799[149].kind = 2; TMP799[149].sons = &TMP823[0];
NTI224813.node = &TMP799[149];
TMP799[148].kind = 1;
TMP799[148].offset = offsetof(Tscope224835, symbols);
TMP799[148].typ = (&NTI224813);
TMP799[148].name = "symbols";
TMP822[2] = &TMP799[152];
NTI224803.size = sizeof(Tnodeseq224803*);
NTI224803.kind = 24;
NTI224803.base = (&NTI224801);
NTI224803.flags = 2;
NTI224803.marker = TMP825;
TMP799[152].kind = 1;
TMP799[152].offset = offsetof(Tscope224835, usingsyms);
TMP799[152].typ = (&NTI224803);
TMP799[152].name = "usingSyms";
TMP822[3] = &TMP799[153];
TMP799[153].kind = 1;
TMP799[153].offset = offsetof(Tscope224835, parent);
TMP799[153].typ = (&NTI224837);
TMP799[153].name = "parent";
TMP799[146].len = 4; TMP799[146].kind = 2; TMP799[146].sons = &TMP822[0];
NTI224835.node = &TMP799[146];
NTI224837.size = sizeof(Tscope224835*);
NTI224837.kind = 22;
NTI224837.base = (&NTI224835);
NTI224837.marker = TMP826;
TMP799[145].kind = 1;
TMP799[145].offset = offsetof(Tsym224841, kindU.S1.typscope);
TMP799[145].typ = (&NTI224837);
TMP799[145].name = "typScope";
TMP799[143].len = 2; TMP799[143].kind = 2; TMP799[143].sons = &TMP821[0];
NimDT_224841_kind[7] = &TMP799[143];
NimDT_224841_kind[4] = &TMP799[143];
TMP827[0] = &TMP799[155];
NTI224831.size = sizeof(Tinstantiation224831);
NTI224831.kind = 18;
NTI224831.base = 0;
NTI224831.flags = 2;
TMP828[0] = &TMP799[157];
TMP799[157].kind = 1;
TMP799[157].offset = offsetof(Tinstantiation224831, sym);
TMP799[157].typ = (&NTI224807);
TMP799[157].name = "sym";
TMP828[1] = &TMP799[158];
TMP799[158].kind = 1;
TMP799[158].offset = offsetof(Tinstantiation224831, concretetypes);
TMP799[158].typ = (&NTI224843);
TMP799[158].name = "concreteTypes";
TMP828[2] = &TMP799[159];
NTI224932.size = sizeof(TY224932*);
NTI224932.kind = 24;
NTI224932.base = (&NTI114);
NTI224932.flags = 2;
NTI224932.marker = TMP829;
TMP799[159].kind = 1;
TMP799[159].offset = offsetof(Tinstantiation224831, usedby);
TMP799[159].typ = (&NTI224932);
TMP799[159].name = "usedBy";
TMP828[3] = &TMP799[160];
NTI224829.size = sizeof(NI);
NTI224829.kind = 31;
NTI224829.base = 0;
NTI224829.flags = 3;
TMP799[160].kind = 1;
TMP799[160].offset = offsetof(Tinstantiation224831, compilesid);
TMP799[160].typ = (&NTI224829);
TMP799[160].name = "compilesId";
TMP799[156].len = 4; TMP799[156].kind = 2; TMP799[156].sons = &TMP828[0];
NTI224831.node = &TMP799[156];
NTI224833.size = sizeof(Tinstantiation224831*);
NTI224833.kind = 22;
NTI224833.base = (&NTI224831);
NTI224833.flags = 2;
NTI224833.marker = TMP830;
NTI224944.size = sizeof(TY224944*);
NTI224944.kind = 24;
NTI224944.base = (&NTI224833);
NTI224944.flags = 2;
NTI224944.marker = TMP831;
TMP799[155].kind = 1;
TMP799[155].offset = offsetof(Tsym224841, kindU.S2.procinstcache);
TMP799[155].typ = (&NTI224944);
TMP799[155].name = "procInstCache";
TMP827[1] = &TMP799[161];
TMP799[161].kind = 1;
TMP799[161].offset = offsetof(Tsym224841, kindU.S2.gcunsafetyreason);
TMP799[161].typ = (&NTI224807);
TMP799[161].name = "gcUnsafetyReason";
TMP799[154].len = 2; TMP799[154].kind = 2; TMP799[154].sons = &TMP827[0];
NimDT_224841_kind[12] = &TMP799[154];
NimDT_224841_kind[13] = &TMP799[154];
NimDT_224841_kind[14] = &TMP799[154];
NimDT_224841_kind[15] = &TMP799[154];
NimDT_224841_kind[16] = &TMP799[154];
NimDT_224841_kind[17] = &TMP799[154];
NimDT_224841_kind[18] = &TMP799[154];
TMP832[0] = &TMP799[163];
TMP799[163].kind = 1;
TMP799[163].offset = offsetof(Tsym224841, kindU.S3.usedgenerics);
TMP799[163].typ = (&NTI224944);
TMP799[163].name = "usedGenerics";
TMP832[1] = &TMP799[164];
TMP799[164].kind = 1;
TMP799[164].offset = offsetof(Tsym224841, kindU.S3.tab);
TMP799[164].typ = (&NTI224813);
TMP799[164].name = "tab";
TMP799[162].len = 2; TMP799[162].kind = 2; TMP799[162].sons = &TMP832[0];
NimDT_224841_kind[6] = &TMP799[162];
TMP833[0] = &TMP799[166];
TMP799[166].kind = 1;
TMP799[166].offset = offsetof(Tsym224841, kindU.S4.guard);
TMP799[166].typ = (&NTI224807);
TMP799[166].name = "guard";
TMP833[1] = &TMP799[167];
TMP799[167].kind = 1;
TMP799[167].offset = offsetof(Tsym224841, kindU.S4.bitsize);
TMP799[167].typ = (&NTI108);
TMP799[167].name = "bitsize";
TMP799[165].len = 2; TMP799[165].kind = 2; TMP799[165].sons = &TMP833[0];
NimDT_224841_kind[9] = &TMP799[165];
NimDT_224841_kind[8] = &TMP799[165];
NimDT_224841_kind[19] = &TMP799[165];
NimDT_224841_kind[21] = &TMP799[165];
TMP799[168].len = 0; TMP799[168].kind = 2;
NimDT_224841_kind[26] = &TMP799[168];
TMP817[1] = &TMP799[169];
NTI224534.size = sizeof(NU8);
NTI224534.kind = 14;
NTI224534.base = 0;
NTI224534.flags = 3;
for (TMP836 = 0; TMP836 < 255; TMP836++) {
TMP799[TMP836+170].kind = 1;
TMP799[TMP836+170].offset = TMP836;
TMP799[TMP836+170].name = TMP835[TMP836];
TMP834[TMP836] = &TMP799[TMP836+170];
}
TMP799[425].len = 255; TMP799[425].kind = 2; TMP799[425].sons = &TMP834[0];
NTI224534.node = &TMP799[425];
TMP799[169].kind = 1;
TMP799[169].offset = offsetof(Tsym224841, magic);
TMP799[169].typ = (&NTI224534);
TMP799[169].name = "magic";
TMP817[2] = &TMP799[426];
TMP799[426].kind = 1;
TMP799[426].offset = offsetof(Tsym224841, typ);
TMP799[426].typ = (&NTI224805);
TMP799[426].name = "typ";
TMP817[3] = &TMP799[427];
TMP799[427].kind = 1;
TMP799[427].offset = offsetof(Tsym224841, name);
TMP799[427].typ = (&NTI197019);
TMP799[427].name = "name";
TMP817[4] = &TMP799[428];
TMP799[428].kind = 1;
TMP799[428].offset = offsetof(Tsym224841, info);
TMP799[428].typ = (&NTI189352);
TMP799[428].name = "info";
TMP817[5] = &TMP799[429];
TMP799[429].kind = 1;
TMP799[429].offset = offsetof(Tsym224841, owner);
TMP799[429].typ = (&NTI224807);
TMP799[429].name = "owner";
TMP817[6] = &TMP799[430];
NTI224195.size = sizeof(NU8);
NTI224195.kind = 14;
NTI224195.base = 0;
NTI224195.flags = 3;
for (TMP839 = 0; TMP839 < 32; TMP839++) {
TMP799[TMP839+431].kind = 1;
TMP799[TMP839+431].offset = TMP839;
TMP799[TMP839+431].name = TMP838[TMP839];
TMP837[TMP839] = &TMP799[TMP839+431];
}
TMP799[463].len = 32; TMP799[463].kind = 2; TMP799[463].sons = &TMP837[0];
NTI224195.node = &TMP799[463];
NTI224197.size = sizeof(NU32);
NTI224197.kind = 19;
NTI224197.base = (&NTI224195);
NTI224197.flags = 3;
TMP799[464].len = 0; TMP799[464].kind = 0;
NTI224197.node = &TMP799[464];
TMP799[430].kind = 1;
TMP799[430].offset = offsetof(Tsym224841, flags);
TMP799[430].typ = (&NTI224197);
TMP799[430].name = "flags";
TMP817[7] = &TMP799[465];
TMP799[465].kind = 1;
TMP799[465].offset = offsetof(Tsym224841, ast);
TMP799[465].typ = (&NTI224801);
TMP799[465].name = "ast";
TMP817[8] = &TMP799[466];
TMP799[466].kind = 1;
TMP799[466].offset = offsetof(Tsym224841, options);
TMP799[466].typ = (&NTI166017);
TMP799[466].name = "options";
TMP817[9] = &TMP799[467];
TMP799[467].kind = 1;
TMP799[467].offset = offsetof(Tsym224841, position);
TMP799[467].typ = (&NTI108);
TMP799[467].name = "position";
TMP817[10] = &TMP799[468];
TMP799[468].kind = 1;
TMP799[468].offset = offsetof(Tsym224841, offset);
TMP799[468].typ = (&NTI108);
TMP799[468].name = "offset";
TMP817[11] = &TMP799[469];
NTI224823.size = sizeof(Tloc224823);
NTI224823.kind = 18;
NTI224823.base = 0;
NTI224823.flags = 2;
TMP843[0] = &TMP799[471];
NTI224815.size = sizeof(NU8);
NTI224815.kind = 14;
NTI224815.base = 0;
NTI224815.flags = 3;
for (TMP846 = 0; TMP846 < 11; TMP846++) {
TMP799[TMP846+472].kind = 1;
TMP799[TMP846+472].offset = TMP846;
TMP799[TMP846+472].name = TMP845[TMP846];
TMP844[TMP846] = &TMP799[TMP846+472];
}
TMP799[483].len = 11; TMP799[483].kind = 2; TMP799[483].sons = &TMP844[0];
NTI224815.node = &TMP799[483];
TMP799[471].kind = 1;
TMP799[471].offset = offsetof(Tloc224823, k);
TMP799[471].typ = (&NTI224815);
TMP799[471].name = "k";
TMP843[1] = &TMP799[484];
NTI224819.size = sizeof(NU8);
NTI224819.kind = 14;
NTI224819.base = 0;
NTI224819.flags = 3;
for (TMP849 = 0; TMP849 < 4; TMP849++) {
TMP799[TMP849+485].kind = 1;
TMP799[TMP849+485].offset = TMP849;
TMP799[TMP849+485].name = TMP848[TMP849];
TMP847[TMP849] = &TMP799[TMP849+485];
}
TMP799[489].len = 4; TMP799[489].kind = 2; TMP799[489].sons = &TMP847[0];
NTI224819.node = &TMP799[489];
TMP799[484].kind = 1;
TMP799[484].offset = offsetof(Tloc224823, s);
TMP799[484].typ = (&NTI224819);
TMP799[484].name = "s";
TMP843[2] = &TMP799[490];
NTI224817.size = sizeof(NU8);
NTI224817.kind = 14;
NTI224817.base = 0;
NTI224817.flags = 3;
for (TMP852 = 0; TMP852 < 9; TMP852++) {
TMP799[TMP852+491].kind = 1;
TMP799[TMP852+491].offset = TMP852;
TMP799[TMP852+491].name = TMP851[TMP852];
TMP850[TMP852] = &TMP799[TMP852+491];
}
TMP799[500].len = 9; TMP799[500].kind = 2; TMP799[500].sons = &TMP850[0];
NTI224817.node = &TMP799[500];
NTI224821.size = sizeof(NU16);
NTI224821.kind = 19;
NTI224821.base = (&NTI224817);
NTI224821.flags = 3;
TMP799[501].len = 0; TMP799[501].kind = 0;
NTI224821.node = &TMP799[501];
TMP799[490].kind = 1;
TMP799[490].offset = offsetof(Tloc224823, flags);
TMP799[490].typ = (&NTI224821);
TMP799[490].name = "flags";
TMP843[3] = &TMP799[502];
TMP799[502].kind = 1;
TMP799[502].offset = offsetof(Tloc224823, t);
TMP799[502].typ = (&NTI224805);
TMP799[502].name = "t";
TMP843[4] = &TMP799[503];
TMP799[503].kind = 1;
TMP799[503].offset = offsetof(Tloc224823, r);
TMP799[503].typ = (&NTI175007);
TMP799[503].name = "r";
TMP843[5] = &TMP799[504];
TMP799[504].kind = 1;
TMP799[504].offset = offsetof(Tloc224823, heaproot);
TMP799[504].typ = (&NTI175007);
TMP799[504].name = "heapRoot";
TMP799[470].len = 6; TMP799[470].kind = 2; TMP799[470].sons = &TMP843[0];
NTI224823.node = &TMP799[470];
TMP799[469].kind = 1;
TMP799[469].offset = offsetof(Tsym224841, loc);
TMP799[469].typ = (&NTI224823);
TMP799[469].name = "loc";
TMP817[12] = &TMP799[505];
NTI224827.size = sizeof(Tlib224827);
NTI224827.kind = 17;
NTI224827.base = (&NTI140022);
TMP855[0] = &TMP799[507];
NTI224825.size = sizeof(NU8);
NTI224825.kind = 14;
NTI224825.base = 0;
NTI224825.flags = 3;
for (TMP858 = 0; TMP858 < 2; TMP858++) {
TMP799[TMP858+508].kind = 1;
TMP799[TMP858+508].offset = TMP858;
TMP799[TMP858+508].name = TMP857[TMP858];
TMP856[TMP858] = &TMP799[TMP858+508];
}
TMP799[510].len = 2; TMP799[510].kind = 2; TMP799[510].sons = &TMP856[0];
NTI224825.node = &TMP799[510];
TMP799[507].kind = 1;
TMP799[507].offset = offsetof(Tlib224827, kind);
TMP799[507].typ = (&NTI224825);
TMP799[507].name = "kind";
TMP855[1] = &TMP799[511];
TMP799[511].kind = 1;
TMP799[511].offset = offsetof(Tlib224827, generated);
TMP799[511].typ = (&NTI138);
TMP799[511].name = "generated";
TMP855[2] = &TMP799[512];
TMP799[512].kind = 1;
TMP799[512].offset = offsetof(Tlib224827, isoverriden);
TMP799[512].typ = (&NTI138);
TMP799[512].name = "isOverriden";
TMP855[3] = &TMP799[513];
TMP799[513].kind = 1;
TMP799[513].offset = offsetof(Tlib224827, name);
TMP799[513].typ = (&NTI175007);
TMP799[513].name = "name";
TMP855[4] = &TMP799[514];
TMP799[514].kind = 1;
TMP799[514].offset = offsetof(Tlib224827, path);
TMP799[514].typ = (&NTI224801);
TMP799[514].name = "path";
TMP799[506].len = 5; TMP799[506].kind = 2; TMP799[506].sons = &TMP855[0];
NTI224827.node = &TMP799[506];
NTI224839.size = sizeof(Tlib224827*);
NTI224839.kind = 22;
NTI224839.base = (&NTI224827);
NTI224839.marker = TMP859;
TMP799[505].kind = 1;
TMP799[505].offset = offsetof(Tsym224841, annex);
TMP799[505].typ = (&NTI224839);
TMP799[505].name = "annex";
TMP817[13] = &TMP799[515];
TMP799[515].kind = 1;
TMP799[515].offset = offsetof(Tsym224841, constraint);
TMP799[515].typ = (&NTI224801);
TMP799[515].name = "constraint";
TMP799[114].len = 14; TMP799[114].kind = 2; TMP799[114].sons = &TMP817[0];
NTI224841.node = &TMP799[114];
NTI224807.size = sizeof(Tsym224841*);
NTI224807.kind = 22;
NTI224807.base = (&NTI224841);
NTI224807.flags = 2;
NTI224807.marker = TMP860;
TMP799[113].kind = 1;
TMP799[113].offset = offsetof(Ttype224847, owner);
TMP799[113].typ = (&NTI224807);
TMP799[113].name = "owner";
TMP806[6] = &TMP799[516];
TMP799[516].kind = 1;
TMP799[516].offset = offsetof(Ttype224847, sym);
TMP799[516].typ = (&NTI224807);
TMP799[516].name = "sym";
TMP806[7] = &TMP799[517];
TMP799[517].kind = 1;
TMP799[517].offset = offsetof(Ttype224847, destructor);
TMP799[517].typ = (&NTI224807);
TMP799[517].name = "destructor";
TMP806[8] = &TMP799[518];
TMP799[518].kind = 1;
TMP799[518].offset = offsetof(Ttype224847, deepcopy);
TMP799[518].typ = (&NTI224807);
TMP799[518].name = "deepCopy";
TMP806[9] = &TMP799[519];
TMP799[519].kind = 1;
TMP799[519].offset = offsetof(Ttype224847, assignment);
TMP799[519].typ = (&NTI224807);
TMP799[519].name = "assignment";
TMP806[10] = &TMP799[520];
TMP799[520].kind = 1;
TMP799[520].offset = offsetof(Ttype224847, size);
TMP799[520].typ = (&NTI8112);
TMP799[520].name = "size";
TMP806[11] = &TMP799[521];
TMP799[521].kind = 1;
TMP799[521].offset = offsetof(Ttype224847, align);
TMP799[521].typ = (&NTI112);
TMP799[521].name = "align";
TMP806[12] = &TMP799[522];
TMP799[522].kind = 1;
TMP799[522].offset = offsetof(Ttype224847, locklevel);
TMP799[522].typ = (&NTI112);
TMP799[522].name = "lockLevel";
TMP806[13] = &TMP799[523];
TMP799[523].kind = 1;
TMP799[523].offset = offsetof(Ttype224847, loc);
TMP799[523].typ = (&NTI224823);
TMP799[523].name = "loc";
TMP799[2].len = 14; TMP799[2].kind = 2; TMP799[2].sons = &TMP806[0];
NTI224847.node = &TMP799[2];
NTI224805.size = sizeof(Ttype224847*);
NTI224805.kind = 22;
NTI224805.base = (&NTI224847);
NTI224805.flags = 2;
NTI224805.marker = TMP861;
TMP799[1].kind = 1;
TMP799[1].offset = offsetof(Tnode224809, typ);
TMP799[1].typ = (&NTI224805);
TMP799[1].name = "typ";
TMP805[1] = &TMP799[524];
TMP799[524].kind = 1;
TMP799[524].offset = offsetof(Tnode224809, info);
TMP799[524].typ = (&NTI189352);
TMP799[524].name = "info";
TMP805[2] = &TMP799[525];
NTI224433.size = sizeof(NU8);
NTI224433.kind = 14;
NTI224433.base = 0;
NTI224433.flags = 3;
for (TMP864 = 0; TMP864 < 15; TMP864++) {
TMP799[TMP864+526].kind = 1;
TMP799[TMP864+526].offset = TMP864;
TMP799[TMP864+526].name = TMP863[TMP864];
TMP862[TMP864] = &TMP799[TMP864+526];
}
TMP799[541].len = 15; TMP799[541].kind = 2; TMP799[541].sons = &TMP862[0];
NTI224433.node = &TMP799[541];
NTI224435.size = sizeof(NU16);
NTI224435.kind = 19;
NTI224435.base = (&NTI224433);
NTI224435.flags = 3;
TMP799[542].len = 0; TMP799[542].kind = 0;
NTI224435.node = &TMP799[542];
TMP799[525].kind = 1;
TMP799[525].offset = offsetof(Tnode224809, flags);
TMP799[525].typ = (&NTI224435);
TMP799[525].name = "flags";
TMP805[3] = &TMP799[543];
NTI224029.size = sizeof(NU8);
NTI224029.kind = 14;
NTI224029.base = 0;
NTI224029.flags = 3;
for (TMP867 = 0; TMP867 < 159; TMP867++) {
TMP799[TMP867+544].kind = 1;
TMP799[TMP867+544].offset = TMP867;
TMP799[TMP867+544].name = TMP866[TMP867];
TMP865[TMP867] = &TMP799[TMP867+544];
}
TMP799[703].len = 159; TMP799[703].kind = 2; TMP799[703].sons = &TMP865[0];
NTI224029.node = &TMP799[703];
TMP799[543].kind = 3;
TMP799[543].offset = offsetof(Tnode224809, kind);
TMP799[543].typ = (&NTI224029);
TMP799[543].name = "kind";
TMP799[543].sons = &NimDT_224809_kind[0];
TMP799[543].len = 159;
TMP799[704].kind = 1;
TMP799[704].offset = offsetof(Tnode224809, kindU.S1.intval);
TMP799[704].typ = (&NTI8112);
TMP799[704].name = "intVal";
NimDT_224809_kind[5] = &TMP799[704];
NimDT_224809_kind[6] = &TMP799[704];
NimDT_224809_kind[7] = &TMP799[704];
NimDT_224809_kind[8] = &TMP799[704];
NimDT_224809_kind[9] = &TMP799[704];
NimDT_224809_kind[10] = &TMP799[704];
NimDT_224809_kind[11] = &TMP799[704];
NimDT_224809_kind[12] = &TMP799[704];
NimDT_224809_kind[13] = &TMP799[704];
NimDT_224809_kind[14] = &TMP799[704];
NimDT_224809_kind[15] = &TMP799[704];
TMP799[705].kind = 1;
TMP799[705].offset = offsetof(Tnode224809, kindU.S2.floatval);
TMP799[705].typ = (&NTI8114);
TMP799[705].name = "floatVal";
NimDT_224809_kind[16] = &TMP799[705];
NimDT_224809_kind[17] = &TMP799[705];
NimDT_224809_kind[18] = &TMP799[705];
NimDT_224809_kind[19] = &TMP799[705];
TMP799[706].kind = 1;
TMP799[706].offset = offsetof(Tnode224809, kindU.S3.strval);
TMP799[706].typ = (&NTI149);
TMP799[706].name = "strVal";
NimDT_224809_kind[20] = &TMP799[706];
NimDT_224809_kind[21] = &TMP799[706];
NimDT_224809_kind[22] = &TMP799[706];
TMP799[707].kind = 1;
TMP799[707].offset = offsetof(Tnode224809, kindU.S4.sym);
TMP799[707].typ = (&NTI224807);
TMP799[707].name = "sym";
NimDT_224809_kind[3] = &TMP799[707];
TMP799[708].kind = 1;
TMP799[708].offset = offsetof(Tnode224809, kindU.S5.ident);
TMP799[708].typ = (&NTI197019);
TMP799[708].name = "ident";
NimDT_224809_kind[2] = &TMP799[708];
TMP799[709].kind = 1;
TMP799[709].offset = offsetof(Tnode224809, kindU.S6.sons);
TMP799[709].typ = (&NTI224803);
TMP799[709].name = "sons";
NimDT_224809_kind[159] = &TMP799[709];
TMP805[4] = &TMP799[710];
TMP799[710].kind = 1;
TMP799[710].offset = offsetof(Tnode224809, comment);
TMP799[710].typ = (&NTI149);
TMP799[710].name = "comment";
TMP799[0].len = 5; TMP799[0].kind = 2; TMP799[0].sons = &TMP805[0];
NTI224809.node = &TMP799[0];
NTI224801.size = sizeof(Tnode224809*);
NTI224801.kind = 22;
NTI224801.base = (&NTI224809);
NTI224801.flags = 2;
NTI224801.marker = TMP868;
NTI224855.size = sizeof(Tidpair224855);
NTI224855.kind = 18;
NTI224855.base = 0;
TMP911[0] = &TMP799[712];
TMP799[712].kind = 1;
TMP799[712].offset = offsetof(Tidpair224855, key);
TMP799[712].typ = (&NTI197017);
TMP799[712].name = "key";
TMP911[1] = &TMP799[713];
TMP799[713].kind = 1;
TMP799[713].offset = offsetof(Tidpair224855, val);
TMP799[713].typ = (&NTI4013);
TMP799[713].name = "val";
TMP799[711].len = 2; TMP799[711].kind = 2; TMP799[711].sons = &TMP911[0];
NTI224855.node = &TMP799[711];
NTI224857.size = sizeof(Tidpairseq224857*);
NTI224857.kind = 24;
NTI224857.base = (&NTI224855);
NTI224857.marker = TMP914;
NTI224859.size = sizeof(Tidtable224859);
NTI224859.kind = 18;
NTI224859.base = 0;
TMP1124[0] = &TMP799[715];
TMP799[715].kind = 1;
TMP799[715].offset = offsetof(Tidtable224859, counter);
TMP799[715].typ = (&NTI108);
TMP799[715].name = "counter";
TMP1124[1] = &TMP799[716];
TMP799[716].kind = 1;
TMP799[716].offset = offsetof(Tidtable224859, data);
TMP799[716].typ = (&NTI224857);
TMP799[716].name = "data";
TMP799[714].len = 2; TMP799[714].kind = 2; TMP799[714].sons = &TMP1124[0];
NTI224859.node = &TMP799[714];
NTI224871.size = sizeof(Tnodetable224871);
NTI224871.kind = 18;
NTI224871.base = 0;
NTI224871.flags = 2;
TMP1134[0] = &TMP799[718];
TMP799[718].kind = 1;
TMP799[718].offset = offsetof(Tnodetable224871, counter);
TMP799[718].typ = (&NTI108);
TMP799[718].name = "counter";
TMP1134[1] = &TMP799[719];
NTI224867.size = sizeof(Tnodepair224867);
NTI224867.kind = 18;
NTI224867.base = 0;
NTI224867.flags = 2;
TMP1135[0] = &TMP799[721];
TMP799[721].kind = 1;
TMP799[721].offset = offsetof(Tnodepair224867, h);
TMP799[721].typ = (&NTI142005);
TMP799[721].name = "h";
TMP1135[1] = &TMP799[722];
TMP799[722].kind = 1;
TMP799[722].offset = offsetof(Tnodepair224867, key);
TMP799[722].typ = (&NTI224801);
TMP799[722].name = "key";
TMP1135[2] = &TMP799[723];
TMP799[723].kind = 1;
TMP799[723].offset = offsetof(Tnodepair224867, val);
TMP799[723].typ = (&NTI108);
TMP799[723].name = "val";
TMP799[720].len = 3; TMP799[720].kind = 2; TMP799[720].sons = &TMP1135[0];
NTI224867.node = &TMP799[720];
NTI224869.size = sizeof(Tnodepairseq224869*);
NTI224869.kind = 24;
NTI224869.base = (&NTI224867);
NTI224869.flags = 2;
NTI224869.marker = TMP1136;
TMP799[719].kind = 1;
TMP799[719].offset = offsetof(Tnodetable224871, data);
TMP799[719].typ = (&NTI224869);
TMP799[719].name = "data";
TMP799[717].len = 2; TMP799[717].kind = 2; TMP799[717].sons = &TMP1134[0];
NTI224871.node = &TMP799[717];
NTI431221.size = sizeof(Tnode224809**);
NTI431221.kind = 21;
NTI431221.base = (&NTI224801);
NTI431221.flags = 3;
NTI224865.size = sizeof(Tidnodetable224865);
NTI224865.kind = 18;
NTI224865.base = 0;
TMP3395[0] = &TMP799[725];
TMP799[725].kind = 1;
TMP799[725].offset = offsetof(Tidnodetable224865, counter);
TMP799[725].typ = (&NTI108);
TMP799[725].name = "counter";
TMP3395[1] = &TMP799[726];
NTI224861.size = sizeof(Tidnodepair224861);
NTI224861.kind = 18;
NTI224861.base = 0;
TMP3396[0] = &TMP799[728];
TMP799[728].kind = 1;
TMP799[728].offset = offsetof(Tidnodepair224861, key);
TMP799[728].typ = (&NTI197017);
TMP799[728].name = "key";
TMP3396[1] = &TMP799[729];
TMP799[729].kind = 1;
TMP799[729].offset = offsetof(Tidnodepair224861, val);
TMP799[729].typ = (&NTI224801);
TMP799[729].name = "val";
TMP799[727].len = 2; TMP799[727].kind = 2; TMP799[727].sons = &TMP3396[0];
NTI224861.node = &TMP799[727];
NTI224863.size = sizeof(Tidnodepairseq224863*);
NTI224863.kind = 24;
NTI224863.base = (&NTI224861);
NTI224863.marker = TMP3397;
TMP799[726].kind = 1;
TMP799[726].offset = offsetof(Tidnodetable224865, data);
TMP799[726].typ = (&NTI224863);
TMP799[726].name = "data";
TMP799[724].len = 2; TMP799[724].kind = 2; TMP799[724].sons = &TMP3395[0];
NTI224865.node = &TMP799[724];
}

