/* 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 Ropeobj169006 Ropeobj169006;
typedef struct TY469140 TY469140;
typedef struct Tcgen469026 Tcgen469026;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Tpasscontext261002 Tpasscontext261002;
typedef struct TNimObject TNimObject;
typedef struct Tsym214822 Tsym214822;
typedef struct NimStringDesc NimStringDesc;
typedef struct Tidtable214840 Tidtable214840;
typedef struct Tidpairseq214838 Tidpairseq214838;
typedef struct Intset211035 Intset211035;
typedef struct Trunk211031 Trunk211031;
typedef struct Trunkseq211033 Trunkseq211033;
typedef struct Tlinkedlist135016 Tlinkedlist135016;
typedef struct Tlistentry135010 Tlistentry135010;
typedef struct Tcproc469022 Tcproc469022;
typedef struct Ttypeseq214824 Ttypeseq214824;
typedef struct Tnodetable214852 Tnodetable214852;
typedef struct Tnodepairseq214850 Tnodepairseq214850;
typedef struct Tsymseq214792 Tsymseq214792;
typedef struct Tlineinfo182337 Tlineinfo182337;
typedef struct Tnodeseq214784 Tnodeseq214784;
typedef struct TY182350 TY182350;
typedef struct TY469094 TY469094;
typedef struct Tblock469020 Tblock469020;
typedef struct Cell47505 Cell47505;
typedef struct Cellseq47521 Cellseq47521;
typedef struct Gcheap49818 Gcheap49818;
typedef struct Gcstack49816 Gcstack49816;
typedef struct Cellset47517 Cellset47517;
typedef struct Pagedesc47513 Pagedesc47513;
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 Tidobj189006 Tidobj189006;
typedef struct Tscope214816 Tscope214816;
typedef struct TY214925 TY214925;
typedef struct Tstrtable214794 Tstrtable214794;
typedef struct Ttype214828 Ttype214828;
typedef struct Tident189012 Tident189012;
typedef struct Tnode214790 Tnode214790;
typedef struct Tloc214804 Tloc214804;
typedef struct Tlib214808 Tlib214808;
typedef struct Tidpair214836 Tidpair214836;
typedef struct Tnodepair214848 Tnodepair214848;
typedef struct Basechunk29637 Basechunk29637;
typedef struct Freecell29629 Freecell29629;
typedef struct Tinstantiation214812 Tinstantiation214812;
typedef struct TY214913 TY214913;
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  Tpasscontext261002  {
  TNimObject Sup;
NIM_BOOL fromcache;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef Ropeobj169006* Tcfilesections469010[18];
struct  Tidtable214840  {
NI counter;
Tidpairseq214838* data;
};
struct  Intset211035  {
NI counter;
NI max;
Trunk211031* head;
Trunkseq211033* data;
};
struct  Tlinkedlist135016  {
Tlistentry135010* head;
Tlistentry135010* tail;
NI counter;
};
struct  Tnodetable214852  {
NI counter;
Tnodepairseq214850* data;
};
typedef Ropeobj169006* TY469132[10];
struct  Tcgen469026  {
  Tpasscontext261002 Sup;
Tsym214822* module;
NimStringDesc* filename;
Tcfilesections469010 s;
NIM_BOOL preventstacktrace;
NIM_BOOL usesthreadvars;
NIM_BOOL framedeclared;
NIM_BOOL isheaderfile;
NIM_BOOL includesstringh;
NIM_BOOL objhaskidsvalid;
NimStringDesc* cfilename;
Tidtable214840 typecache;
Tidtable214840 forwtypecache;
Intset211035 declaredthings;
Intset211035 declaredprotos;
Tlinkedlist135016 headerfiles;
Intset211035 typeinfomarker;
Tcproc469022* initproc;
Tcproc469022* postinitproc;
Tcproc469022* preinitproc;
Ttypeseq214824* typestack;
Tnodetable214852 datacache;
Tsymseq214792* forwardedprocs;
NI typenodes;
NI nimtypes;
Ropeobj169006* typenodesname;
Ropeobj169006* nimtypesname;
NI labels;
TY469132 extensionloaders;
Ropeobj169006* injectstmt;
};
struct  Tlineinfo182337  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tcproc469022  {
Tsym214822* prc;
NIM_BOOL beforeretneeded;
NIM_BOOL threadvaraccessed;
Tlineinfo182337 lastlineinfo;
Tnodeseq214784* nestedtrystmts;
NI inexceptblock;
TY182350* finallysafepoints;
NI labels;
TY469094* blocks;
NI breakidx;
NU32 options;
NI maxframelen;
Tcgen469026* module;
NI withinloop;
NI splitdecls;
NI gcframeid;
Ropeobj169006* gcframetype;
};
typedef Ropeobj169006* Tcprocsections469014[3];
struct  Tblock469020  {
NI id;
Ropeobj169006* label;
Tcprocsections469014 sections;
NIM_BOOL isloop;
NI16 nestedtrystmts;
NI16 nestedexceptstmts;
NI16 framelen;
};
struct  Cell47505  {
NI refcount;
TNimType* typ;
};
struct  Cellseq47521  {
NI len;
NI cap;
Cell47505** d;
};
struct  Cellset47517  {
NI counter;
NI max;
Pagedesc47513* head;
Pagedesc47513** 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;
Cellseq47521 zct;
Cellseq47521 decstack;
Cellset47517 cycleroots;
Cellseq47521 tempstack;
NI recgclock;
Memregion29687 region;
Gcstat49814 stat;
};
struct  Tidobj189006  {
  TNimObject Sup;
NI id;
};
struct  Tstrtable214794  {
NI counter;
Tsymseq214792* data;
};
struct  Tloc214804  {
NU8 k;
NU8 s;
NU16 flags;
Ttype214828* t;
Ropeobj169006* r;
Ropeobj169006* heaproot;
};
struct  Tsym214822  {
  Tidobj189006 Sup;
NU8 kind;
union{
struct {Ttypeseq214824* typeinstcache;
Tscope214816* typscope;
} S1;
struct {TY214925* procinstcache;
Tsym214822* gcunsafetyreason;
} S2;
struct {TY214925* usedgenerics;
Tstrtable214794 tab;
} S3;
struct {Tsym214822* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype214828* typ;
Tident189012* name;
Tlineinfo182337 info;
Tsym214822* owner;
NU32 flags;
Tnode214790* ast;
NU32 options;
NI position;
NI offset;
Tloc214804 loc;
Tlib214808* annex;
Tnode214790* constraint;
};
struct  Ropeobj169006  {
  TNimObject Sup;
Ropeobj169006* left;
Ropeobj169006* right;
NI length;
NimStringDesc* data;
};
struct  Tidpair214836  {
Tidobj189006* key;
TNimObject* val;
};
typedef NI TY29618[16];
struct  Trunk211031  {
Trunk211031* next;
NI key;
TY29618 bits;
};
struct  Tlistentry135010  {
  TNimObject Sup;
Tlistentry135010* prev;
Tlistentry135010* next;
};
struct  Tnodepair214848  {
NI h;
Tnode214790* key;
NI val;
};
struct  Gcstack49816  {
Gcstack49816* prev;
Gcstack49816* next;
void* starts;
void* pos;
NI maxstacksize;
};
struct  Pagedesc47513  {
Pagedesc47513* 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  Tscope214816  {
NI depthlevel;
Tstrtable214794 symbols;
Tnodeseq214784* usingsyms;
Tscope214816* parent;
};
struct  Ttype214828  {
  Tidobj189006 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq214824* sons;
Tnode214790* n;
Tsym214822* owner;
Tsym214822* sym;
Tsym214822* destructor;
Tsym214822* deepcopy;
Tsym214822* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc214804 loc;
};
struct  Tident189012  {
  Tidobj189006 Sup;
NimStringDesc* s;
Tident189012* next;
NI h;
};
struct  Tnode214790  {
Ttype214828* typ;
Tlineinfo182337 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym214822* sym;
} S4;
struct {Tident189012* ident;
} S5;
struct {Tnodeseq214784* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
struct  Tlib214808  {
  Tlistentry135010 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj169006* name;
Tnode214790* path;
};
struct  Freecell29629  {
Freecell29629* next;
NI zerofield;
};
struct  Tinstantiation214812  {
Tsym214822* sym;
Ttypeseq214824* concretetypes;
TY214913* usedby;
NI compilesid;
};
struct TY469140 {
  TGenericSeq Sup;
  Tcgen469026* data[SEQ_DECL_SIZE];
};
struct TY469094 {
  TGenericSeq Sup;
  Tblock469020 data[SEQ_DECL_SIZE];
};
struct Tnodeseq214784 {
  TGenericSeq Sup;
  Tnode214790* data[SEQ_DECL_SIZE];
};
struct TY182350 {
  TGenericSeq Sup;
  Ropeobj169006* data[SEQ_DECL_SIZE];
};
struct Tidpairseq214838 {
  TGenericSeq Sup;
  Tidpair214836 data[SEQ_DECL_SIZE];
};
struct Trunkseq211033 {
  TGenericSeq Sup;
  Trunk211031* data[SEQ_DECL_SIZE];
};
struct Ttypeseq214824 {
  TGenericSeq Sup;
  Ttype214828* data[SEQ_DECL_SIZE];
};
struct Tnodepairseq214850 {
  TGenericSeq Sup;
  Tnodepair214848 data[SEQ_DECL_SIZE];
};
struct Tsymseq214792 {
  TGenericSeq Sup;
  Tsym214822* data[SEQ_DECL_SIZE];
};
struct TY214925 {
  TGenericSeq Sup;
  Tinstantiation214812* data[SEQ_DECL_SIZE];
};
struct TY214913 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP1169)(void* p, NI op);
N_NIMCALL(void, TMP1170)(void* p, NI op);
N_NIMCALL(void, TMP1174)(void* p, NI op);
N_NIMCALL(void, TMP1175)(void* p, NI op);
static N_INLINE(void, nimGCunref)(void* p);
static N_INLINE(void, decref_53401)(Cell47505* c);
static N_INLINE(void, rtladdzct_53001)(Cell47505* c);
N_NOINLINE(void, addzct_51417)(Cellseq47521* s, Cell47505* c);
static N_INLINE(NIM_BOOL, canbecycleroot_51458)(Cell47505* c);
static N_INLINE(void, rtladdcycleroot_52220)(Cell47505* c);
N_NOINLINE(void, incl_48247)(Cellset47517* s, Cell47505* cell);
static N_INLINE(Cell47505*, 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)(Cell47505* c);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
Ropeobj169006* mainmodprocs_469135;
Ropeobj169006* mainmodinit_469136;
Ropeobj169006* othermodsinit_469137;
Ropeobj169006* maindatinit_469138;
Ropeobj169006* gmapping_469139;
TY469140* gmodules_469157;
extern TNimType NTI261002; /* TPassContext */
TNimType NTI469026; /* TCGen */
extern TNimType NTI214788; /* PSym */
extern TNimType NTI138; /* string */
extern TNimType NTI169004; /* Rope */
TNimType NTI469010; /* TCFileSections */
extern TNimType NTI130; /* bool */
extern TNimType NTI214840; /* TIdTable */
extern TNimType NTI211035; /* IntSet */
extern TNimType NTI135016; /* TLinkedList */
TNimType NTI469022; /* TCProc */
extern TNimType NTI182337; /* TLineInfo */
extern TNimType NTI214784; /* TNodeSeq */
extern TNimType NTI104; /* int */
extern TNimType NTI182350; /* seq[Rope] */
extern TNimType NTI3604; /* Natural */
TNimType NTI469020; /* TBlock */
TNimType NTI469014; /* TCProcSections */
extern TNimType NTI108; /* int16 */
TNimType NTI469094; /* seq[TBlock] */
extern TNimType NTI160011; /* TOptions */
TNimType NTI469018; /* BProc */
extern TNimType NTI214824; /* TTypeSeq */
extern TNimType NTI214852; /* TNodeTable */
extern TNimType NTI214792; /* TSymSeq */
TNimType NTI469132; /* array[48..57, Rope] */
TNimType NTI469016; /* BModule */
TNimType NTI469140; /* seq[BModule] */
extern Gcheap49818 gch_49859;
NI gforwardedprocscounter_469158;
extern NU32 goptions_160119;
N_NIMCALL(void, TMP1169)(void* p, NI op) {
	TY469094* a;
	NI LOC1;
	NI LOC2;
	a = (TY469094*)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, TMP1170)(void* p, NI op) {
	Tcproc469022* a;
	a = (Tcproc469022*)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, TMP1174)(void* p, NI op) {
	Tcgen469026* a;
	NI LOC1;
	NI LOC2;
	a = (Tcgen469026*)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, TMP1175)(void* p, NI op) {
	TY469140* a;
	NI LOC1;
	a = (TY469140*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}

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

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

static N_INLINE(void, rtladdcycleroot_52220)(Cell47505* 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)(Cell47505* 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(Cell47505*, usrtocell_51440)(void* usr) {
	Cell47505* result;
	result = 0;
	result = ((Cell47505*) ((NI)((NU32)(((NI) (usr))) - (NU32)(((NI)sizeof(Cell47505))))));
	return result;
}

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

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		Cell47505* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_51440(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell47505* 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)(Cell47505* 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) {
	{
		Cell47505* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_51440(src);
		incref_53819(LOC5);
	}
	LA3: ;
	{
		Cell47505* 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) {
	Cell47505* c;
	c = usrtocell_51440(p);
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_53001(c);
	}
	LA3: ;
}

N_NIMCALL(Tcproc469022*, newproc_469193)(Tsym214822* prc, Tcgen469026* module) {
	Tcproc469022* result;
	result = 0;
	result = (Tcproc469022*) newObj((&NTI469018), sizeof(Tcproc469022));
	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_160119;
	}
	LA1: ;
	if ((*result).blocks) nimGCunrefNoCycle((*result).blocks);
	(*result).blocks = (TY469094*) newSeqRC1((&NTI469094), ((NI) 1));
	if ((*result).nestedtrystmts) nimGCunrefNoCycle((*result).nestedtrystmts);
	(*result).nestedtrystmts = (Tnodeseq214784*) newSeqRC1((&NTI214784), 0);
	if ((*result).finallysafepoints) nimGCunrefNoCycle((*result).finallysafepoints);
	(*result).finallysafepoints = (TY182350*) newSeqRC1((&NTI182350), 0);
	return result;
}

N_NIMCALL(Tcgen469026*, bmod_469188)(Tsym214822* module) {
	Tcgen469026* result;
	result = 0;
	result = gmodules_469157->data[(*module).position];
	return result;
}
NIM_EXTERNC N_NOINLINE(void, compiler_cgendataInit000)(void) {
	if (gmodules_469157) nimGCunref(gmodules_469157);
	gmodules_469157 = (TY469140*) newSeqRC1((&NTI469140), 0);
	gforwardedprocscounter_469158 = ((NI) 0);
}

NIM_EXTERNC N_NOINLINE(void, compiler_cgendataDatInit000)(void) {
static TNimNode* TMP1163[29];
static TNimNode* TMP1167[17];
static TNimNode* TMP1168[7];
static TNimNode TMP1161[56];
NTI469026.size = sizeof(Tcgen469026);
NTI469026.kind = 17;
NTI469026.base = (&NTI261002);
TMP1163[0] = &TMP1161[1];
TMP1161[1].kind = 1;
TMP1161[1].offset = offsetof(Tcgen469026, module);
TMP1161[1].typ = (&NTI214788);
TMP1161[1].name = "module";
TMP1163[1] = &TMP1161[2];
TMP1161[2].kind = 1;
TMP1161[2].offset = offsetof(Tcgen469026, filename);
TMP1161[2].typ = (&NTI138);
TMP1161[2].name = "filename";
TMP1163[2] = &TMP1161[3];
NTI469010.size = sizeof(Tcfilesections469010);
NTI469010.kind = 16;
NTI469010.base = (&NTI169004);
NTI469010.flags = 2;
TMP1161[3].kind = 1;
TMP1161[3].offset = offsetof(Tcgen469026, s);
TMP1161[3].typ = (&NTI469010);
TMP1161[3].name = "s";
TMP1163[3] = &TMP1161[4];
TMP1161[4].kind = 1;
TMP1161[4].offset = offsetof(Tcgen469026, preventstacktrace);
TMP1161[4].typ = (&NTI130);
TMP1161[4].name = "preventStackTrace";
TMP1163[4] = &TMP1161[5];
TMP1161[5].kind = 1;
TMP1161[5].offset = offsetof(Tcgen469026, usesthreadvars);
TMP1161[5].typ = (&NTI130);
TMP1161[5].name = "usesThreadVars";
TMP1163[5] = &TMP1161[6];
TMP1161[6].kind = 1;
TMP1161[6].offset = offsetof(Tcgen469026, framedeclared);
TMP1161[6].typ = (&NTI130);
TMP1161[6].name = "frameDeclared";
TMP1163[6] = &TMP1161[7];
TMP1161[7].kind = 1;
TMP1161[7].offset = offsetof(Tcgen469026, isheaderfile);
TMP1161[7].typ = (&NTI130);
TMP1161[7].name = "isHeaderFile";
TMP1163[7] = &TMP1161[8];
TMP1161[8].kind = 1;
TMP1161[8].offset = offsetof(Tcgen469026, includesstringh);
TMP1161[8].typ = (&NTI130);
TMP1161[8].name = "includesStringh";
TMP1163[8] = &TMP1161[9];
TMP1161[9].kind = 1;
TMP1161[9].offset = offsetof(Tcgen469026, objhaskidsvalid);
TMP1161[9].typ = (&NTI130);
TMP1161[9].name = "objHasKidsValid";
TMP1163[9] = &TMP1161[10];
TMP1161[10].kind = 1;
TMP1161[10].offset = offsetof(Tcgen469026, cfilename);
TMP1161[10].typ = (&NTI138);
TMP1161[10].name = "cfilename";
TMP1163[10] = &TMP1161[11];
TMP1161[11].kind = 1;
TMP1161[11].offset = offsetof(Tcgen469026, typecache);
TMP1161[11].typ = (&NTI214840);
TMP1161[11].name = "typeCache";
TMP1163[11] = &TMP1161[12];
TMP1161[12].kind = 1;
TMP1161[12].offset = offsetof(Tcgen469026, forwtypecache);
TMP1161[12].typ = (&NTI214840);
TMP1161[12].name = "forwTypeCache";
TMP1163[12] = &TMP1161[13];
TMP1161[13].kind = 1;
TMP1161[13].offset = offsetof(Tcgen469026, declaredthings);
TMP1161[13].typ = (&NTI211035);
TMP1161[13].name = "declaredThings";
TMP1163[13] = &TMP1161[14];
TMP1161[14].kind = 1;
TMP1161[14].offset = offsetof(Tcgen469026, declaredprotos);
TMP1161[14].typ = (&NTI211035);
TMP1161[14].name = "declaredProtos";
TMP1163[14] = &TMP1161[15];
TMP1161[15].kind = 1;
TMP1161[15].offset = offsetof(Tcgen469026, headerfiles);
TMP1161[15].typ = (&NTI135016);
TMP1161[15].name = "headerFiles";
TMP1163[15] = &TMP1161[16];
TMP1161[16].kind = 1;
TMP1161[16].offset = offsetof(Tcgen469026, typeinfomarker);
TMP1161[16].typ = (&NTI211035);
TMP1161[16].name = "typeInfoMarker";
TMP1163[16] = &TMP1161[17];
NTI469022.size = sizeof(Tcproc469022);
NTI469022.kind = 18;
NTI469022.base = 0;
TMP1167[0] = &TMP1161[19];
TMP1161[19].kind = 1;
TMP1161[19].offset = offsetof(Tcproc469022, prc);
TMP1161[19].typ = (&NTI214788);
TMP1161[19].name = "prc";
TMP1167[1] = &TMP1161[20];
TMP1161[20].kind = 1;
TMP1161[20].offset = offsetof(Tcproc469022, beforeretneeded);
TMP1161[20].typ = (&NTI130);
TMP1161[20].name = "beforeRetNeeded";
TMP1167[2] = &TMP1161[21];
TMP1161[21].kind = 1;
TMP1161[21].offset = offsetof(Tcproc469022, threadvaraccessed);
TMP1161[21].typ = (&NTI130);
TMP1161[21].name = "threadVarAccessed";
TMP1167[3] = &TMP1161[22];
TMP1161[22].kind = 1;
TMP1161[22].offset = offsetof(Tcproc469022, lastlineinfo);
TMP1161[22].typ = (&NTI182337);
TMP1161[22].name = "lastLineInfo";
TMP1167[4] = &TMP1161[23];
TMP1161[23].kind = 1;
TMP1161[23].offset = offsetof(Tcproc469022, nestedtrystmts);
TMP1161[23].typ = (&NTI214784);
TMP1161[23].name = "nestedTryStmts";
TMP1167[5] = &TMP1161[24];
TMP1161[24].kind = 1;
TMP1161[24].offset = offsetof(Tcproc469022, inexceptblock);
TMP1161[24].typ = (&NTI104);
TMP1161[24].name = "inExceptBlock";
TMP1167[6] = &TMP1161[25];
TMP1161[25].kind = 1;
TMP1161[25].offset = offsetof(Tcproc469022, finallysafepoints);
TMP1161[25].typ = (&NTI182350);
TMP1161[25].name = "finallySafePoints";
TMP1167[7] = &TMP1161[26];
TMP1161[26].kind = 1;
TMP1161[26].offset = offsetof(Tcproc469022, labels);
TMP1161[26].typ = (&NTI3604);
TMP1161[26].name = "labels";
TMP1167[8] = &TMP1161[27];
NTI469020.size = sizeof(Tblock469020);
NTI469020.kind = 18;
NTI469020.base = 0;
NTI469020.flags = 2;
TMP1168[0] = &TMP1161[29];
TMP1161[29].kind = 1;
TMP1161[29].offset = offsetof(Tblock469020, id);
TMP1161[29].typ = (&NTI104);
TMP1161[29].name = "id";
TMP1168[1] = &TMP1161[30];
TMP1161[30].kind = 1;
TMP1161[30].offset = offsetof(Tblock469020, label);
TMP1161[30].typ = (&NTI169004);
TMP1161[30].name = "label";
TMP1168[2] = &TMP1161[31];
NTI469014.size = sizeof(Tcprocsections469014);
NTI469014.kind = 16;
NTI469014.base = (&NTI169004);
NTI469014.flags = 2;
TMP1161[31].kind = 1;
TMP1161[31].offset = offsetof(Tblock469020, sections);
TMP1161[31].typ = (&NTI469014);
TMP1161[31].name = "sections";
TMP1168[3] = &TMP1161[32];
TMP1161[32].kind = 1;
TMP1161[32].offset = offsetof(Tblock469020, isloop);
TMP1161[32].typ = (&NTI130);
TMP1161[32].name = "isLoop";
TMP1168[4] = &TMP1161[33];
TMP1161[33].kind = 1;
TMP1161[33].offset = offsetof(Tblock469020, nestedtrystmts);
TMP1161[33].typ = (&NTI108);
TMP1161[33].name = "nestedTryStmts";
TMP1168[5] = &TMP1161[34];
TMP1161[34].kind = 1;
TMP1161[34].offset = offsetof(Tblock469020, nestedexceptstmts);
TMP1161[34].typ = (&NTI108);
TMP1161[34].name = "nestedExceptStmts";
TMP1168[6] = &TMP1161[35];
TMP1161[35].kind = 1;
TMP1161[35].offset = offsetof(Tblock469020, framelen);
TMP1161[35].typ = (&NTI108);
TMP1161[35].name = "frameLen";
TMP1161[28].len = 7; TMP1161[28].kind = 2; TMP1161[28].sons = &TMP1168[0];
NTI469020.node = &TMP1161[28];
NTI469094.size = sizeof(TY469094*);
NTI469094.kind = 24;
NTI469094.base = (&NTI469020);
NTI469094.flags = 2;
NTI469094.marker = TMP1169;
TMP1161[27].kind = 1;
TMP1161[27].offset = offsetof(Tcproc469022, blocks);
TMP1161[27].typ = (&NTI469094);
TMP1161[27].name = "blocks";
TMP1167[9] = &TMP1161[36];
TMP1161[36].kind = 1;
TMP1161[36].offset = offsetof(Tcproc469022, breakidx);
TMP1161[36].typ = (&NTI104);
TMP1161[36].name = "breakIdx";
TMP1167[10] = &TMP1161[37];
TMP1161[37].kind = 1;
TMP1161[37].offset = offsetof(Tcproc469022, options);
TMP1161[37].typ = (&NTI160011);
TMP1161[37].name = "options";
TMP1167[11] = &TMP1161[38];
TMP1161[38].kind = 1;
TMP1161[38].offset = offsetof(Tcproc469022, maxframelen);
TMP1161[38].typ = (&NTI104);
TMP1161[38].name = "maxFrameLen";
TMP1167[12] = &TMP1161[39];
TMP1161[39].kind = 1;
TMP1161[39].offset = offsetof(Tcproc469022, module);
TMP1161[39].typ = (&NTI469016);
TMP1161[39].name = "module";
TMP1167[13] = &TMP1161[40];
TMP1161[40].kind = 1;
TMP1161[40].offset = offsetof(Tcproc469022, withinloop);
TMP1161[40].typ = (&NTI104);
TMP1161[40].name = "withinLoop";
TMP1167[14] = &TMP1161[41];
TMP1161[41].kind = 1;
TMP1161[41].offset = offsetof(Tcproc469022, splitdecls);
TMP1161[41].typ = (&NTI104);
TMP1161[41].name = "splitDecls";
TMP1167[15] = &TMP1161[42];
TMP1161[42].kind = 1;
TMP1161[42].offset = offsetof(Tcproc469022, gcframeid);
TMP1161[42].typ = (&NTI3604);
TMP1161[42].name = "gcFrameId";
TMP1167[16] = &TMP1161[43];
TMP1161[43].kind = 1;
TMP1161[43].offset = offsetof(Tcproc469022, gcframetype);
TMP1161[43].typ = (&NTI169004);
TMP1161[43].name = "gcFrameType";
TMP1161[18].len = 17; TMP1161[18].kind = 2; TMP1161[18].sons = &TMP1167[0];
NTI469022.node = &TMP1161[18];
NTI469018.size = sizeof(Tcproc469022*);
NTI469018.kind = 22;
NTI469018.base = (&NTI469022);
NTI469018.marker = TMP1170;
TMP1161[17].kind = 1;
TMP1161[17].offset = offsetof(Tcgen469026, initproc);
TMP1161[17].typ = (&NTI469018);
TMP1161[17].name = "initProc";
TMP1163[17] = &TMP1161[44];
TMP1161[44].kind = 1;
TMP1161[44].offset = offsetof(Tcgen469026, postinitproc);
TMP1161[44].typ = (&NTI469018);
TMP1161[44].name = "postInitProc";
TMP1163[18] = &TMP1161[45];
TMP1161[45].kind = 1;
TMP1161[45].offset = offsetof(Tcgen469026, preinitproc);
TMP1161[45].typ = (&NTI469018);
TMP1161[45].name = "preInitProc";
TMP1163[19] = &TMP1161[46];
TMP1161[46].kind = 1;
TMP1161[46].offset = offsetof(Tcgen469026, typestack);
TMP1161[46].typ = (&NTI214824);
TMP1161[46].name = "typeStack";
TMP1163[20] = &TMP1161[47];
TMP1161[47].kind = 1;
TMP1161[47].offset = offsetof(Tcgen469026, datacache);
TMP1161[47].typ = (&NTI214852);
TMP1161[47].name = "dataCache";
TMP1163[21] = &TMP1161[48];
TMP1161[48].kind = 1;
TMP1161[48].offset = offsetof(Tcgen469026, forwardedprocs);
TMP1161[48].typ = (&NTI214792);
TMP1161[48].name = "forwardedProcs";
TMP1163[22] = &TMP1161[49];
TMP1161[49].kind = 1;
TMP1161[49].offset = offsetof(Tcgen469026, typenodes);
TMP1161[49].typ = (&NTI104);
TMP1161[49].name = "typeNodes";
TMP1163[23] = &TMP1161[50];
TMP1161[50].kind = 1;
TMP1161[50].offset = offsetof(Tcgen469026, nimtypes);
TMP1161[50].typ = (&NTI104);
TMP1161[50].name = "nimTypes";
TMP1163[24] = &TMP1161[51];
TMP1161[51].kind = 1;
TMP1161[51].offset = offsetof(Tcgen469026, typenodesname);
TMP1161[51].typ = (&NTI169004);
TMP1161[51].name = "typeNodesName";
TMP1163[25] = &TMP1161[52];
TMP1161[52].kind = 1;
TMP1161[52].offset = offsetof(Tcgen469026, nimtypesname);
TMP1161[52].typ = (&NTI169004);
TMP1161[52].name = "nimTypesName";
TMP1163[26] = &TMP1161[53];
TMP1161[53].kind = 1;
TMP1161[53].offset = offsetof(Tcgen469026, labels);
TMP1161[53].typ = (&NTI3604);
TMP1161[53].name = "labels";
TMP1163[27] = &TMP1161[54];
NTI469132.size = sizeof(TY469132);
NTI469132.kind = 16;
NTI469132.base = (&NTI169004);
NTI469132.flags = 2;
TMP1161[54].kind = 1;
TMP1161[54].offset = offsetof(Tcgen469026, extensionloaders);
TMP1161[54].typ = (&NTI469132);
TMP1161[54].name = "extensionLoaders";
TMP1163[28] = &TMP1161[55];
TMP1161[55].kind = 1;
TMP1161[55].offset = offsetof(Tcgen469026, injectstmt);
TMP1161[55].typ = (&NTI169004);
TMP1161[55].name = "injectStmt";
TMP1161[0].len = 29; TMP1161[0].kind = 2; TMP1161[0].sons = &TMP1163[0];
NTI469026.node = &TMP1161[0];
NTI469016.size = sizeof(Tcgen469026*);
NTI469016.kind = 22;
NTI469016.base = (&NTI469026);
NTI469016.marker = TMP1174;
NTI469140.size = sizeof(TY469140*);
NTI469140.kind = 24;
NTI469140.base = (&NTI469016);
NTI469140.marker = TMP1175;
}

