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

#include "nimbase.h"
typedef struct Ropeobj170006 Ropeobj170006;
typedef struct TY470140 TY470140;
typedef struct Tcgen470026 Tcgen470026;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Tpasscontext262002 Tpasscontext262002;
typedef struct TNimObject TNimObject;
typedef struct Tsym215822 Tsym215822;
typedef struct NimStringDesc NimStringDesc;
typedef struct Tidtable215840 Tidtable215840;
typedef struct Tidpairseq215838 Tidpairseq215838;
typedef struct Intset212035 Intset212035;
typedef struct Trunk212031 Trunk212031;
typedef struct Trunkseq212033 Trunkseq212033;
typedef struct Tlinkedlist135016 Tlinkedlist135016;
typedef struct Tlistentry135010 Tlistentry135010;
typedef struct Tcproc470022 Tcproc470022;
typedef struct Ttypeseq215824 Ttypeseq215824;
typedef struct Tnodetable215852 Tnodetable215852;
typedef struct Tnodepairseq215850 Tnodepairseq215850;
typedef struct Tsymseq215792 Tsymseq215792;
typedef struct Tlineinfo183337 Tlineinfo183337;
typedef struct Tnodeseq215784 Tnodeseq215784;
typedef struct TY183350 TY183350;
typedef struct TY470094 TY470094;
typedef struct Tblock470020 Tblock470020;
typedef struct Cell47504 Cell47504;
typedef struct Cellseq47520 Cellseq47520;
typedef struct Gcheap49818 Gcheap49818;
typedef struct Gcstack49816 Gcstack49816;
typedef struct Cellset47516 Cellset47516;
typedef struct Pagedesc47512 Pagedesc47512;
typedef struct Memregion29687 Memregion29687;
typedef struct Smallchunk29639 Smallchunk29639;
typedef struct Llchunk29681 Llchunk29681;
typedef struct Bigchunk29641 Bigchunk29641;
typedef struct Intset29614 Intset29614;
typedef struct Trunk29610 Trunk29610;
typedef struct Avlnode29685 Avlnode29685;
typedef struct Gcstat49814 Gcstat49814;
typedef struct Tidobj190006 Tidobj190006;
typedef struct Tscope215816 Tscope215816;
typedef struct TY215925 TY215925;
typedef struct Tstrtable215794 Tstrtable215794;
typedef struct Ttype215828 Ttype215828;
typedef struct Tident190012 Tident190012;
typedef struct Tnode215790 Tnode215790;
typedef struct Tloc215804 Tloc215804;
typedef struct Tlib215808 Tlib215808;
typedef struct Tidpair215836 Tidpair215836;
typedef struct Tnodepair215848 Tnodepair215848;
typedef struct Basechunk29637 Basechunk29637;
typedef struct Freecell29629 Freecell29629;
typedef struct Tinstantiation215812 Tinstantiation215812;
typedef struct TY215913 TY215913;
struct  TGenericSeq  {
NI len;
NI reserved;
};
typedef N_NIMCALL_PTR(void, TY3489) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3494) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3489 marker;
TY3494 deepcopy;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tpasscontext262002  {
  TNimObject Sup;
NIM_BOOL fromcache;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef Ropeobj170006* Tcfilesections470010[18];
struct  Tidtable215840  {
NI counter;
Tidpairseq215838* data;
};
struct  Intset212035  {
NI counter;
NI max;
Trunk212031* head;
Trunkseq212033* data;
};
struct  Tlinkedlist135016  {
Tlistentry135010* head;
Tlistentry135010* tail;
NI counter;
};
struct  Tnodetable215852  {
NI counter;
Tnodepairseq215850* data;
};
typedef Ropeobj170006* TY470132[10];
struct  Tcgen470026  {
  Tpasscontext262002 Sup;
Tsym215822* module;
NimStringDesc* filename;
Tcfilesections470010 s;
NIM_BOOL preventstacktrace;
NIM_BOOL usesthreadvars;
NIM_BOOL framedeclared;
NIM_BOOL isheaderfile;
NIM_BOOL includesstringh;
NIM_BOOL objhaskidsvalid;
NimStringDesc* cfilename;
Tidtable215840 typecache;
Tidtable215840 forwtypecache;
Intset212035 declaredthings;
Intset212035 declaredprotos;
Tlinkedlist135016 headerfiles;
Intset212035 typeinfomarker;
Tcproc470022* initproc;
Tcproc470022* postinitproc;
Tcproc470022* preinitproc;
Ttypeseq215824* typestack;
Tnodetable215852 datacache;
Tsymseq215792* forwardedprocs;
NI typenodes;
NI nimtypes;
Ropeobj170006* typenodesname;
Ropeobj170006* nimtypesname;
NI labels;
TY470132 extensionloaders;
Ropeobj170006* injectstmt;
};
struct  Tlineinfo183337  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tcproc470022  {
Tsym215822* prc;
NIM_BOOL beforeretneeded;
NIM_BOOL threadvaraccessed;
Tlineinfo183337 lastlineinfo;
Tnodeseq215784* nestedtrystmts;
NI inexceptblock;
TY183350* finallysafepoints;
NI labels;
TY470094* blocks;
NI breakidx;
NU32 options;
NI maxframelen;
Tcgen470026* module;
NI withinloop;
NI splitdecls;
NI gcframeid;
Ropeobj170006* gcframetype;
};
typedef Ropeobj170006* Tcprocsections470014[3];
struct  Tblock470020  {
NI id;
Ropeobj170006* label;
Tcprocsections470014 sections;
NIM_BOOL isloop;
NI16 nestedtrystmts;
NI16 nestedexceptstmts;
NI16 framelen;
};
struct  Cell47504  {
NI refcount;
TNimType* typ;
};
struct  Cellseq47520  {
NI len;
NI cap;
Cell47504** d;
};
struct  Cellset47516  {
NI counter;
NI max;
Pagedesc47512* head;
Pagedesc47512** data;
};
typedef Smallchunk29639* TY29702[512];
typedef Trunk29610* Trunkbuckets29612[256];
struct  Intset29614  {
Trunkbuckets29612 data;
};
struct  Memregion29687  {
NI minlargeobj;
NI maxlargeobj;
TY29702 freesmallchunks;
Llchunk29681* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk29641* freechunkslist;
Intset29614 chunkstarts;
Avlnode29685* root;
Avlnode29685* deleted;
Avlnode29685* last;
Avlnode29685* freeavlnodes;
};
struct  Gcstat49814  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap49818  {
Gcstack49816* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq47520 zct;
Cellseq47520 decstack;
Cellset47516 cycleroots;
Cellseq47520 tempstack;
NI recgclock;
Memregion29687 region;
Gcstat49814 stat;
};
struct  Tidobj190006  {
  TNimObject Sup;
NI id;
};
struct  Tstrtable215794  {
NI counter;
Tsymseq215792* data;
};
struct  Tloc215804  {
NU8 k;
NU8 s;
NU16 flags;
Ttype215828* t;
Ropeobj170006* r;
Ropeobj170006* heaproot;
};
struct  Tsym215822  {
  Tidobj190006 Sup;
NU8 kind;
union{
struct {Ttypeseq215824* typeinstcache;
Tscope215816* typscope;
} S1;
struct {TY215925* procinstcache;
Tsym215822* gcunsafetyreason;
} S2;
struct {TY215925* usedgenerics;
Tstrtable215794 tab;
} S3;
struct {Tsym215822* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype215828* typ;
Tident190012* name;
Tlineinfo183337 info;
Tsym215822* owner;
NU32 flags;
Tnode215790* ast;
NU32 options;
NI position;
NI offset;
Tloc215804 loc;
Tlib215808* annex;
Tnode215790* constraint;
};
struct  Ropeobj170006  {
  TNimObject Sup;
Ropeobj170006* left;
Ropeobj170006* right;
NI length;
NimStringDesc* data;
};
struct  Tidpair215836  {
Tidobj190006* key;
TNimObject* val;
};
typedef NI TY29618[16];
struct  Trunk212031  {
Trunk212031* next;
NI key;
TY29618 bits;
};
struct  Tlistentry135010  {
  TNimObject Sup;
Tlistentry135010* prev;
Tlistentry135010* next;
};
struct  Tnodepair215848  {
NI h;
Tnode215790* key;
NI val;
};
struct  Gcstack49816  {
Gcstack49816* prev;
Gcstack49816* next;
void* starts;
void* pos;
NI maxstacksize;
};
struct  Pagedesc47512  {
Pagedesc47512* next;
NI key;
TY29618 bits;
};
struct  Basechunk29637  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk29639  {
  Basechunk29637 Sup;
Smallchunk29639* next;
Smallchunk29639* prev;
Freecell29629* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk29681  {
NI size;
NI acc;
Llchunk29681* next;
};
struct  Bigchunk29641  {
  Basechunk29637 Sup;
Bigchunk29641* next;
Bigchunk29641* prev;
NI align;
NF data;
};
struct  Trunk29610  {
Trunk29610* next;
NI key;
TY29618 bits;
};
typedef Avlnode29685* TY29692[2];
struct  Avlnode29685  {
TY29692 link;
NI key;
NI upperbound;
NI level;
};
struct  Tscope215816  {
NI depthlevel;
Tstrtable215794 symbols;
Tnodeseq215784* usingsyms;
Tscope215816* parent;
};
struct  Ttype215828  {
  Tidobj190006 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq215824* sons;
Tnode215790* n;
Tsym215822* owner;
Tsym215822* sym;
Tsym215822* destructor;
Tsym215822* deepcopy;
Tsym215822* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc215804 loc;
};
struct  Tident190012  {
  Tidobj190006 Sup;
NimStringDesc* s;
Tident190012* next;
NI h;
};
struct  Tnode215790  {
Ttype215828* typ;
Tlineinfo183337 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym215822* sym;
} S4;
struct {Tident190012* ident;
} S5;
struct {Tnodeseq215784* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
struct  Tlib215808  {
  Tlistentry135010 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj170006* name;
Tnode215790* path;
};
struct  Freecell29629  {
Freecell29629* next;
NI zerofield;
};
struct  Tinstantiation215812  {
Tsym215822* sym;
Ttypeseq215824* concretetypes;
TY215913* usedby;
NI compilesid;
};
struct TY470140 {
  TGenericSeq Sup;
  Tcgen470026* data[SEQ_DECL_SIZE];
};
struct TY470094 {
  TGenericSeq Sup;
  Tblock470020 data[SEQ_DECL_SIZE];
};
struct Tnodeseq215784 {
  TGenericSeq Sup;
  Tnode215790* data[SEQ_DECL_SIZE];
};
struct TY183350 {
  TGenericSeq Sup;
  Ropeobj170006* data[SEQ_DECL_SIZE];
};
struct Tidpairseq215838 {
  TGenericSeq Sup;
  Tidpair215836 data[SEQ_DECL_SIZE];
};
struct Trunkseq212033 {
  TGenericSeq Sup;
  Trunk212031* data[SEQ_DECL_SIZE];
};
struct Ttypeseq215824 {
  TGenericSeq Sup;
  Ttype215828* data[SEQ_DECL_SIZE];
};
struct Tnodepairseq215850 {
  TGenericSeq Sup;
  Tnodepair215848 data[SEQ_DECL_SIZE];
};
struct Tsymseq215792 {
  TGenericSeq Sup;
  Tsym215822* data[SEQ_DECL_SIZE];
};
struct TY215925 {
  TGenericSeq Sup;
  Tinstantiation215812* data[SEQ_DECL_SIZE];
};
struct TY215913 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP1171)(void* p, NI op);
N_NIMCALL(void, TMP1172)(void* p, NI op);
N_NIMCALL(void, TMP1176)(void* p, NI op);
N_NIMCALL(void, TMP1177)(void* p, NI op);
static N_INLINE(void, nimGCunref)(void* p);
static N_INLINE(void, decref_53401)(Cell47504* c);
static N_INLINE(void, rtladdzct_53001)(Cell47504* c);
N_NOINLINE(void, addzct_51417)(Cellseq47520* s, Cell47504* c);
static N_INLINE(NIM_BOOL, canbecycleroot_51458)(Cell47504* c);
static N_INLINE(void, rtladdcycleroot_52220)(Cell47504* c);
N_NOINLINE(void, incl_48247)(Cellset47516* s, Cell47504* cell);
static N_INLINE(Cell47504*, usrtocell_51440)(void* usr);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_53819)(Cell47504* c);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
Ropeobj170006* mainmodprocs_470135;
Ropeobj170006* mainmodinit_470136;
Ropeobj170006* othermodsinit_470137;
Ropeobj170006* maindatinit_470138;
Ropeobj170006* gmapping_470139;
TY470140* gmodules_470157;
extern TNimType NTI262002; /* TPassContext */
TNimType NTI470026; /* TCGen */
extern TNimType NTI215788; /* PSym */
extern TNimType NTI138; /* string */
extern TNimType NTI170004; /* Rope */
TNimType NTI470010; /* TCFileSections */
extern TNimType NTI130; /* bool */
extern TNimType NTI215840; /* TIdTable */
extern TNimType NTI212035; /* IntSet */
extern TNimType NTI135016; /* TLinkedList */
TNimType NTI470022; /* TCProc */
extern TNimType NTI183337; /* TLineInfo */
extern TNimType NTI215784; /* TNodeSeq */
extern TNimType NTI104; /* int */
extern TNimType NTI183350; /* seq[Rope] */
extern TNimType NTI3604; /* Natural */
TNimType NTI470020; /* TBlock */
TNimType NTI470014; /* TCProcSections */
extern TNimType NTI108; /* int16 */
TNimType NTI470094; /* seq[TBlock] */
extern TNimType NTI161011; /* TOptions */
TNimType NTI470018; /* BProc */
extern TNimType NTI215824; /* TTypeSeq */
extern TNimType NTI215852; /* TNodeTable */
extern TNimType NTI215792; /* TSymSeq */
TNimType NTI470132; /* array[48..57, Rope] */
TNimType NTI470016; /* BModule */
TNimType NTI470140; /* seq[BModule] */
extern Gcheap49818 gch_49859;
NI gforwardedprocscounter_470158;
extern NU32 goptions_161119;
N_NIMCALL(void, TMP1171)(void* p, NI op) {
	TY470094* a;
	NI LOC1;
	NI LOC2;
	a = (TY470094*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].label, op);
	LOC2 = 0;
	for (LOC2 = 0; LOC2 < 3; LOC2++) {
	nimGCvisit((void*)a->data[LOC1].sections[LOC2], op);
	}
	}
}
N_NIMCALL(void, TMP1172)(void* p, NI op) {
	Tcproc470022* a;
	a = (Tcproc470022*)p;
	nimGCvisit((void*)(*a).prc, op);
	nimGCvisit((void*)(*a).nestedtrystmts, op);
	nimGCvisit((void*)(*a).finallysafepoints, op);
	nimGCvisit((void*)(*a).blocks, op);
	nimGCvisit((void*)(*a).module, op);
	nimGCvisit((void*)(*a).gcframetype, op);
}
N_NIMCALL(void, TMP1176)(void* p, NI op) {
	Tcgen470026* a;
	NI LOC1;
	NI LOC2;
	a = (Tcgen470026*)p;
	nimGCvisit((void*)(*a).module, op);
	nimGCvisit((void*)(*a).filename, op);
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < 18; LOC1++) {
	nimGCvisit((void*)(*a).s[LOC1], op);
	}
	nimGCvisit((void*)(*a).cfilename, op);
	nimGCvisit((void*)(*a).typecache.data, op);
	nimGCvisit((void*)(*a).forwtypecache.data, op);
	nimGCvisit((void*)(*a).declaredthings.head, op);
	nimGCvisit((void*)(*a).declaredthings.data, op);
	nimGCvisit((void*)(*a).declaredprotos.head, op);
	nimGCvisit((void*)(*a).declaredprotos.data, op);
	nimGCvisit((void*)(*a).headerfiles.head, op);
	nimGCvisit((void*)(*a).headerfiles.tail, op);
	nimGCvisit((void*)(*a).typeinfomarker.head, op);
	nimGCvisit((void*)(*a).typeinfomarker.data, op);
	nimGCvisit((void*)(*a).initproc, op);
	nimGCvisit((void*)(*a).postinitproc, op);
	nimGCvisit((void*)(*a).preinitproc, op);
	nimGCvisit((void*)(*a).typestack, op);
	nimGCvisit((void*)(*a).datacache.data, op);
	nimGCvisit((void*)(*a).forwardedprocs, op);
	nimGCvisit((void*)(*a).typenodesname, op);
	nimGCvisit((void*)(*a).nimtypesname, op);
	LOC2 = 0;
	for (LOC2 = 0; LOC2 < 10; LOC2++) {
	nimGCvisit((void*)(*a).extensionloaders[LOC2], op);
	}
	nimGCvisit((void*)(*a).injectstmt, op);
}
N_NIMCALL(void, TMP1177)(void* p, NI op) {
	TY470140* a;
	NI LOC1;
	a = (TY470140*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}

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

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

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

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

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

static N_INLINE(void, nimGCunref)(void* p) {
	Cell47504* LOC1;
	LOC1 = 0;
	LOC1 = usrtocell_51440(p);
	decref_53401(LOC1);
}

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

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

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

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

N_NIMCALL(Tcproc470022*, newproc_470193)(Tsym215822* prc, Tcgen470026* module) {
	Tcproc470022* result;
	result = 0;
	result = (Tcproc470022*) newObj((&NTI470018), sizeof(Tcproc470022));
	asgnRefNoCycle((void**) (&(*result).prc), prc);
	asgnRef((void**) (&(*result).module), module);
	{
		if (!!((prc == NIM_NIL))) goto LA3;
		(*result).options = (*prc).options;
	}
	goto LA1;
	LA3: ;
	{
		(*result).options = goptions_161119;
	}
	LA1: ;
	if ((*result).blocks) nimGCunrefNoCycle((*result).blocks);
	(*result).blocks = (TY470094*) newSeqRC1((&NTI470094), ((NI) 1));
	if ((*result).nestedtrystmts) nimGCunrefNoCycle((*result).nestedtrystmts);
	(*result).nestedtrystmts = (Tnodeseq215784*) newSeqRC1((&NTI215784), 0);
	if ((*result).finallysafepoints) nimGCunrefNoCycle((*result).finallysafepoints);
	(*result).finallysafepoints = (TY183350*) newSeqRC1((&NTI183350), 0);
	return result;
}

N_NIMCALL(Tcgen470026*, bmod_470188)(Tsym215822* module) {
	Tcgen470026* result;
	result = 0;
	result = gmodules_470157->data[(*module).position];
	return result;
}
NIM_EXTERNC N_NOINLINE(void, compiler_cgendataInit000)(void) {
	if (gmodules_470157) nimGCunref(gmodules_470157);
	gmodules_470157 = (TY470140*) newSeqRC1((&NTI470140), 0);
	gforwardedprocscounter_470158 = ((NI) 0);
}

NIM_EXTERNC N_NOINLINE(void, compiler_cgendataDatInit000)(void) {
static TNimNode* TMP1165[29];
static TNimNode* TMP1169[17];
static TNimNode* TMP1170[7];
static TNimNode TMP1163[56];
NTI470026.size = sizeof(Tcgen470026);
NTI470026.kind = 17;
NTI470026.base = (&NTI262002);
TMP1165[0] = &TMP1163[1];
TMP1163[1].kind = 1;
TMP1163[1].offset = offsetof(Tcgen470026, module);
TMP1163[1].typ = (&NTI215788);
TMP1163[1].name = "module";
TMP1165[1] = &TMP1163[2];
TMP1163[2].kind = 1;
TMP1163[2].offset = offsetof(Tcgen470026, filename);
TMP1163[2].typ = (&NTI138);
TMP1163[2].name = "filename";
TMP1165[2] = &TMP1163[3];
NTI470010.size = sizeof(Tcfilesections470010);
NTI470010.kind = 16;
NTI470010.base = (&NTI170004);
NTI470010.flags = 2;
TMP1163[3].kind = 1;
TMP1163[3].offset = offsetof(Tcgen470026, s);
TMP1163[3].typ = (&NTI470010);
TMP1163[3].name = "s";
TMP1165[3] = &TMP1163[4];
TMP1163[4].kind = 1;
TMP1163[4].offset = offsetof(Tcgen470026, preventstacktrace);
TMP1163[4].typ = (&NTI130);
TMP1163[4].name = "preventStackTrace";
TMP1165[4] = &TMP1163[5];
TMP1163[5].kind = 1;
TMP1163[5].offset = offsetof(Tcgen470026, usesthreadvars);
TMP1163[5].typ = (&NTI130);
TMP1163[5].name = "usesThreadVars";
TMP1165[5] = &TMP1163[6];
TMP1163[6].kind = 1;
TMP1163[6].offset = offsetof(Tcgen470026, framedeclared);
TMP1163[6].typ = (&NTI130);
TMP1163[6].name = "frameDeclared";
TMP1165[6] = &TMP1163[7];
TMP1163[7].kind = 1;
TMP1163[7].offset = offsetof(Tcgen470026, isheaderfile);
TMP1163[7].typ = (&NTI130);
TMP1163[7].name = "isHeaderFile";
TMP1165[7] = &TMP1163[8];
TMP1163[8].kind = 1;
TMP1163[8].offset = offsetof(Tcgen470026, includesstringh);
TMP1163[8].typ = (&NTI130);
TMP1163[8].name = "includesStringh";
TMP1165[8] = &TMP1163[9];
TMP1163[9].kind = 1;
TMP1163[9].offset = offsetof(Tcgen470026, objhaskidsvalid);
TMP1163[9].typ = (&NTI130);
TMP1163[9].name = "objHasKidsValid";
TMP1165[9] = &TMP1163[10];
TMP1163[10].kind = 1;
TMP1163[10].offset = offsetof(Tcgen470026, cfilename);
TMP1163[10].typ = (&NTI138);
TMP1163[10].name = "cfilename";
TMP1165[10] = &TMP1163[11];
TMP1163[11].kind = 1;
TMP1163[11].offset = offsetof(Tcgen470026, typecache);
TMP1163[11].typ = (&NTI215840);
TMP1163[11].name = "typeCache";
TMP1165[11] = &TMP1163[12];
TMP1163[12].kind = 1;
TMP1163[12].offset = offsetof(Tcgen470026, forwtypecache);
TMP1163[12].typ = (&NTI215840);
TMP1163[12].name = "forwTypeCache";
TMP1165[12] = &TMP1163[13];
TMP1163[13].kind = 1;
TMP1163[13].offset = offsetof(Tcgen470026, declaredthings);
TMP1163[13].typ = (&NTI212035);
TMP1163[13].name = "declaredThings";
TMP1165[13] = &TMP1163[14];
TMP1163[14].kind = 1;
TMP1163[14].offset = offsetof(Tcgen470026, declaredprotos);
TMP1163[14].typ = (&NTI212035);
TMP1163[14].name = "declaredProtos";
TMP1165[14] = &TMP1163[15];
TMP1163[15].kind = 1;
TMP1163[15].offset = offsetof(Tcgen470026, headerfiles);
TMP1163[15].typ = (&NTI135016);
TMP1163[15].name = "headerFiles";
TMP1165[15] = &TMP1163[16];
TMP1163[16].kind = 1;
TMP1163[16].offset = offsetof(Tcgen470026, typeinfomarker);
TMP1163[16].typ = (&NTI212035);
TMP1163[16].name = "typeInfoMarker";
TMP1165[16] = &TMP1163[17];
NTI470022.size = sizeof(Tcproc470022);
NTI470022.kind = 18;
NTI470022.base = 0;
TMP1169[0] = &TMP1163[19];
TMP1163[19].kind = 1;
TMP1163[19].offset = offsetof(Tcproc470022, prc);
TMP1163[19].typ = (&NTI215788);
TMP1163[19].name = "prc";
TMP1169[1] = &TMP1163[20];
TMP1163[20].kind = 1;
TMP1163[20].offset = offsetof(Tcproc470022, beforeretneeded);
TMP1163[20].typ = (&NTI130);
TMP1163[20].name = "beforeRetNeeded";
TMP1169[2] = &TMP1163[21];
TMP1163[21].kind = 1;
TMP1163[21].offset = offsetof(Tcproc470022, threadvaraccessed);
TMP1163[21].typ = (&NTI130);
TMP1163[21].name = "threadVarAccessed";
TMP1169[3] = &TMP1163[22];
TMP1163[22].kind = 1;
TMP1163[22].offset = offsetof(Tcproc470022, lastlineinfo);
TMP1163[22].typ = (&NTI183337);
TMP1163[22].name = "lastLineInfo";
TMP1169[4] = &TMP1163[23];
TMP1163[23].kind = 1;
TMP1163[23].offset = offsetof(Tcproc470022, nestedtrystmts);
TMP1163[23].typ = (&NTI215784);
TMP1163[23].name = "nestedTryStmts";
TMP1169[5] = &TMP1163[24];
TMP1163[24].kind = 1;
TMP1163[24].offset = offsetof(Tcproc470022, inexceptblock);
TMP1163[24].typ = (&NTI104);
TMP1163[24].name = "inExceptBlock";
TMP1169[6] = &TMP1163[25];
TMP1163[25].kind = 1;
TMP1163[25].offset = offsetof(Tcproc470022, finallysafepoints);
TMP1163[25].typ = (&NTI183350);
TMP1163[25].name = "finallySafePoints";
TMP1169[7] = &TMP1163[26];
TMP1163[26].kind = 1;
TMP1163[26].offset = offsetof(Tcproc470022, labels);
TMP1163[26].typ = (&NTI3604);
TMP1163[26].name = "labels";
TMP1169[8] = &TMP1163[27];
NTI470020.size = sizeof(Tblock470020);
NTI470020.kind = 18;
NTI470020.base = 0;
NTI470020.flags = 2;
TMP1170[0] = &TMP1163[29];
TMP1163[29].kind = 1;
TMP1163[29].offset = offsetof(Tblock470020, id);
TMP1163[29].typ = (&NTI104);
TMP1163[29].name = "id";
TMP1170[1] = &TMP1163[30];
TMP1163[30].kind = 1;
TMP1163[30].offset = offsetof(Tblock470020, label);
TMP1163[30].typ = (&NTI170004);
TMP1163[30].name = "label";
TMP1170[2] = &TMP1163[31];
NTI470014.size = sizeof(Tcprocsections470014);
NTI470014.kind = 16;
NTI470014.base = (&NTI170004);
NTI470014.flags = 2;
TMP1163[31].kind = 1;
TMP1163[31].offset = offsetof(Tblock470020, sections);
TMP1163[31].typ = (&NTI470014);
TMP1163[31].name = "sections";
TMP1170[3] = &TMP1163[32];
TMP1163[32].kind = 1;
TMP1163[32].offset = offsetof(Tblock470020, isloop);
TMP1163[32].typ = (&NTI130);
TMP1163[32].name = "isLoop";
TMP1170[4] = &TMP1163[33];
TMP1163[33].kind = 1;
TMP1163[33].offset = offsetof(Tblock470020, nestedtrystmts);
TMP1163[33].typ = (&NTI108);
TMP1163[33].name = "nestedTryStmts";
TMP1170[5] = &TMP1163[34];
TMP1163[34].kind = 1;
TMP1163[34].offset = offsetof(Tblock470020, nestedexceptstmts);
TMP1163[34].typ = (&NTI108);
TMP1163[34].name = "nestedExceptStmts";
TMP1170[6] = &TMP1163[35];
TMP1163[35].kind = 1;
TMP1163[35].offset = offsetof(Tblock470020, framelen);
TMP1163[35].typ = (&NTI108);
TMP1163[35].name = "frameLen";
TMP1163[28].len = 7; TMP1163[28].kind = 2; TMP1163[28].sons = &TMP1170[0];
NTI470020.node = &TMP1163[28];
NTI470094.size = sizeof(TY470094*);
NTI470094.kind = 24;
NTI470094.base = (&NTI470020);
NTI470094.flags = 2;
NTI470094.marker = TMP1171;
TMP1163[27].kind = 1;
TMP1163[27].offset = offsetof(Tcproc470022, blocks);
TMP1163[27].typ = (&NTI470094);
TMP1163[27].name = "blocks";
TMP1169[9] = &TMP1163[36];
TMP1163[36].kind = 1;
TMP1163[36].offset = offsetof(Tcproc470022, breakidx);
TMP1163[36].typ = (&NTI104);
TMP1163[36].name = "breakIdx";
TMP1169[10] = &TMP1163[37];
TMP1163[37].kind = 1;
TMP1163[37].offset = offsetof(Tcproc470022, options);
TMP1163[37].typ = (&NTI161011);
TMP1163[37].name = "options";
TMP1169[11] = &TMP1163[38];
TMP1163[38].kind = 1;
TMP1163[38].offset = offsetof(Tcproc470022, maxframelen);
TMP1163[38].typ = (&NTI104);
TMP1163[38].name = "maxFrameLen";
TMP1169[12] = &TMP1163[39];
TMP1163[39].kind = 1;
TMP1163[39].offset = offsetof(Tcproc470022, module);
TMP1163[39].typ = (&NTI470016);
TMP1163[39].name = "module";
TMP1169[13] = &TMP1163[40];
TMP1163[40].kind = 1;
TMP1163[40].offset = offsetof(Tcproc470022, withinloop);
TMP1163[40].typ = (&NTI104);
TMP1163[40].name = "withinLoop";
TMP1169[14] = &TMP1163[41];
TMP1163[41].kind = 1;
TMP1163[41].offset = offsetof(Tcproc470022, splitdecls);
TMP1163[41].typ = (&NTI104);
TMP1163[41].name = "splitDecls";
TMP1169[15] = &TMP1163[42];
TMP1163[42].kind = 1;
TMP1163[42].offset = offsetof(Tcproc470022, gcframeid);
TMP1163[42].typ = (&NTI3604);
TMP1163[42].name = "gcFrameId";
TMP1169[16] = &TMP1163[43];
TMP1163[43].kind = 1;
TMP1163[43].offset = offsetof(Tcproc470022, gcframetype);
TMP1163[43].typ = (&NTI170004);
TMP1163[43].name = "gcFrameType";
TMP1163[18].len = 17; TMP1163[18].kind = 2; TMP1163[18].sons = &TMP1169[0];
NTI470022.node = &TMP1163[18];
NTI470018.size = sizeof(Tcproc470022*);
NTI470018.kind = 22;
NTI470018.base = (&NTI470022);
NTI470018.marker = TMP1172;
TMP1163[17].kind = 1;
TMP1163[17].offset = offsetof(Tcgen470026, initproc);
TMP1163[17].typ = (&NTI470018);
TMP1163[17].name = "initProc";
TMP1165[17] = &TMP1163[44];
TMP1163[44].kind = 1;
TMP1163[44].offset = offsetof(Tcgen470026, postinitproc);
TMP1163[44].typ = (&NTI470018);
TMP1163[44].name = "postInitProc";
TMP1165[18] = &TMP1163[45];
TMP1163[45].kind = 1;
TMP1163[45].offset = offsetof(Tcgen470026, preinitproc);
TMP1163[45].typ = (&NTI470018);
TMP1163[45].name = "preInitProc";
TMP1165[19] = &TMP1163[46];
TMP1163[46].kind = 1;
TMP1163[46].offset = offsetof(Tcgen470026, typestack);
TMP1163[46].typ = (&NTI215824);
TMP1163[46].name = "typeStack";
TMP1165[20] = &TMP1163[47];
TMP1163[47].kind = 1;
TMP1163[47].offset = offsetof(Tcgen470026, datacache);
TMP1163[47].typ = (&NTI215852);
TMP1163[47].name = "dataCache";
TMP1165[21] = &TMP1163[48];
TMP1163[48].kind = 1;
TMP1163[48].offset = offsetof(Tcgen470026, forwardedprocs);
TMP1163[48].typ = (&NTI215792);
TMP1163[48].name = "forwardedProcs";
TMP1165[22] = &TMP1163[49];
TMP1163[49].kind = 1;
TMP1163[49].offset = offsetof(Tcgen470026, typenodes);
TMP1163[49].typ = (&NTI104);
TMP1163[49].name = "typeNodes";
TMP1165[23] = &TMP1163[50];
TMP1163[50].kind = 1;
TMP1163[50].offset = offsetof(Tcgen470026, nimtypes);
TMP1163[50].typ = (&NTI104);
TMP1163[50].name = "nimTypes";
TMP1165[24] = &TMP1163[51];
TMP1163[51].kind = 1;
TMP1163[51].offset = offsetof(Tcgen470026, typenodesname);
TMP1163[51].typ = (&NTI170004);
TMP1163[51].name = "typeNodesName";
TMP1165[25] = &TMP1163[52];
TMP1163[52].kind = 1;
TMP1163[52].offset = offsetof(Tcgen470026, nimtypesname);
TMP1163[52].typ = (&NTI170004);
TMP1163[52].name = "nimTypesName";
TMP1165[26] = &TMP1163[53];
TMP1163[53].kind = 1;
TMP1163[53].offset = offsetof(Tcgen470026, labels);
TMP1163[53].typ = (&NTI3604);
TMP1163[53].name = "labels";
TMP1165[27] = &TMP1163[54];
NTI470132.size = sizeof(TY470132);
NTI470132.kind = 16;
NTI470132.base = (&NTI170004);
NTI470132.flags = 2;
TMP1163[54].kind = 1;
TMP1163[54].offset = offsetof(Tcgen470026, extensionloaders);
TMP1163[54].typ = (&NTI470132);
TMP1163[54].name = "extensionLoaders";
TMP1165[28] = &TMP1163[55];
TMP1163[55].kind = 1;
TMP1163[55].offset = offsetof(Tcgen470026, injectstmt);
TMP1163[55].typ = (&NTI170004);
TMP1163[55].name = "injectStmt";
TMP1163[0].len = 29; TMP1163[0].kind = 2; TMP1163[0].sons = &TMP1165[0];
NTI470026.node = &TMP1163[0];
NTI470016.size = sizeof(Tcgen470026*);
NTI470016.kind = 22;
NTI470016.base = (&NTI470026);
NTI470016.marker = TMP1176;
NTI470140.size = sizeof(TY470140*);
NTI470140.kind = 24;
NTI470140.base = (&NTI470016);
NTI470140.marker = TMP1177;
}

