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

#include "nimbase.h"
typedef struct Ropeobj172006 Ropeobj172006;
typedef struct TY471140 TY471140;
typedef struct Tcgen471026 Tcgen471026;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Tpasscontext263002 Tpasscontext263002;
typedef struct TNimObject TNimObject;
typedef struct Tsym216822 Tsym216822;
typedef struct NimStringDesc NimStringDesc;
typedef struct Tidtable216840 Tidtable216840;
typedef struct Tidpairseq216838 Tidpairseq216838;
typedef struct Intset213035 Intset213035;
typedef struct Trunk213031 Trunk213031;
typedef struct Trunkseq213033 Trunkseq213033;
typedef struct Tlinkedlist138016 Tlinkedlist138016;
typedef struct Tlistentry138010 Tlistentry138010;
typedef struct Tcproc471022 Tcproc471022;
typedef struct Ttypeseq216824 Ttypeseq216824;
typedef struct Tnodetable216852 Tnodetable216852;
typedef struct Tnodepairseq216850 Tnodepairseq216850;
typedef struct Tsymseq216792 Tsymseq216792;
typedef struct Tlineinfo184337 Tlineinfo184337;
typedef struct Tnodeseq216784 Tnodeseq216784;
typedef struct TY184350 TY184350;
typedef struct TY471094 TY471094;
typedef struct Tblock471020 Tblock471020;
typedef struct Cell47304 Cell47304;
typedef struct Cellseq47320 Cellseq47320;
typedef struct Gcheap49618 Gcheap49618;
typedef struct Gcstack49616 Gcstack49616;
typedef struct Cellset47316 Cellset47316;
typedef struct Pagedesc47312 Pagedesc47312;
typedef struct Memregion29488 Memregion29488;
typedef struct Smallchunk29440 Smallchunk29440;
typedef struct Llchunk29482 Llchunk29482;
typedef struct Bigchunk29442 Bigchunk29442;
typedef struct Intset29414 Intset29414;
typedef struct Trunk29410 Trunk29410;
typedef struct Avlnode29486 Avlnode29486;
typedef struct Gcstat49614 Gcstat49614;
typedef struct Tidobj191006 Tidobj191006;
typedef struct Tscope216816 Tscope216816;
typedef struct TY216925 TY216925;
typedef struct Tstrtable216794 Tstrtable216794;
typedef struct Ttype216828 Ttype216828;
typedef struct Tident191012 Tident191012;
typedef struct Tnode216790 Tnode216790;
typedef struct Tloc216804 Tloc216804;
typedef struct Tlib216808 Tlib216808;
typedef struct Tidpair216836 Tidpair216836;
typedef struct Tnodepair216848 Tnodepair216848;
typedef struct Basechunk29438 Basechunk29438;
typedef struct Freecell29430 Freecell29430;
typedef struct Tinstantiation216812 Tinstantiation216812;
typedef struct TY216913 TY216913;
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  Tpasscontext263002  {
  TNimObject Sup;
NIM_BOOL fromcache;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef Ropeobj172006* Tcfilesections471010[18];
struct  Tidtable216840  {
NI counter;
Tidpairseq216838* data;
};
struct  Intset213035  {
NI counter;
NI max;
Trunk213031* head;
Trunkseq213033* data;
};
struct  Tlinkedlist138016  {
Tlistentry138010* head;
Tlistentry138010* tail;
NI counter;
};
struct  Tnodetable216852  {
NI counter;
Tnodepairseq216850* data;
};
typedef Ropeobj172006* TY471132[10];
struct  Tcgen471026  {
  Tpasscontext263002 Sup;
Tsym216822* module;
NimStringDesc* filename;
Tcfilesections471010 s;
NIM_BOOL preventstacktrace;
NIM_BOOL usesthreadvars;
NIM_BOOL framedeclared;
NIM_BOOL isheaderfile;
NIM_BOOL includesstringh;
NIM_BOOL objhaskidsvalid;
NimStringDesc* cfilename;
Tidtable216840 typecache;
Tidtable216840 forwtypecache;
Intset213035 declaredthings;
Intset213035 declaredprotos;
Tlinkedlist138016 headerfiles;
Intset213035 typeinfomarker;
Tcproc471022* initproc;
Tcproc471022* postinitproc;
Tcproc471022* preinitproc;
Ttypeseq216824* typestack;
Tnodetable216852 datacache;
Tsymseq216792* forwardedprocs;
NI typenodes;
NI nimtypes;
Ropeobj172006* typenodesname;
Ropeobj172006* nimtypesname;
NI labels;
TY471132 extensionloaders;
Ropeobj172006* injectstmt;
};
struct  Tlineinfo184337  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tcproc471022  {
Tsym216822* prc;
NIM_BOOL beforeretneeded;
NIM_BOOL threadvaraccessed;
Tlineinfo184337 lastlineinfo;
Tnodeseq216784* nestedtrystmts;
NI inexceptblock;
TY184350* finallysafepoints;
NI labels;
TY471094* blocks;
NI breakidx;
NU32 options;
NI maxframelen;
Tcgen471026* module;
NI withinloop;
NI splitdecls;
NI gcframeid;
Ropeobj172006* gcframetype;
};
typedef Ropeobj172006* Tcprocsections471014[3];
struct  Tblock471020  {
NI id;
Ropeobj172006* label;
Tcprocsections471014 sections;
NIM_BOOL isloop;
NI16 nestedtrystmts;
NI16 nestedexceptstmts;
NI16 framelen;
};
struct  Cell47304  {
NI refcount;
TNimType* typ;
};
struct  Cellseq47320  {
NI len;
NI cap;
Cell47304** d;
};
struct  Cellset47316  {
NI counter;
NI max;
Pagedesc47312* head;
Pagedesc47312** data;
};
typedef Smallchunk29440* TY29503[512];
typedef Trunk29410* Trunkbuckets29412[256];
struct  Intset29414  {
Trunkbuckets29412 data;
};
struct  Memregion29488  {
NI minlargeobj;
NI maxlargeobj;
TY29503 freesmallchunks;
Llchunk29482* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk29442* freechunkslist;
Intset29414 chunkstarts;
Avlnode29486* root;
Avlnode29486* deleted;
Avlnode29486* last;
Avlnode29486* freeavlnodes;
};
struct  Gcstat49614  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap49618  {
Gcstack49616* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq47320 zct;
Cellseq47320 decstack;
Cellset47316 cycleroots;
Cellseq47320 tempstack;
NI recgclock;
Memregion29488 region;
Gcstat49614 stat;
};
struct  Tidobj191006  {
  TNimObject Sup;
NI id;
};
struct  Tstrtable216794  {
NI counter;
Tsymseq216792* data;
};
struct  Tloc216804  {
NU8 k;
NU8 s;
NU16 flags;
Ttype216828* t;
Ropeobj172006* r;
Ropeobj172006* heaproot;
};
struct  Tsym216822  {
  Tidobj191006 Sup;
NU8 kind;
union{
struct {Ttypeseq216824* typeinstcache;
Tscope216816* typscope;
} S1;
struct {TY216925* procinstcache;
Tsym216822* gcunsafetyreason;
} S2;
struct {TY216925* usedgenerics;
Tstrtable216794 tab;
} S3;
struct {Tsym216822* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype216828* typ;
Tident191012* name;
Tlineinfo184337 info;
Tsym216822* owner;
NU32 flags;
Tnode216790* ast;
NU32 options;
NI position;
NI offset;
Tloc216804 loc;
Tlib216808* annex;
Tnode216790* constraint;
};
struct  Ropeobj172006  {
  TNimObject Sup;
Ropeobj172006* left;
Ropeobj172006* right;
NI length;
NimStringDesc* data;
};
struct  Tidpair216836  {
Tidobj191006* key;
TNimObject* val;
};
typedef NI TY29419[8];
struct  Trunk213031  {
Trunk213031* next;
NI key;
TY29419 bits;
};
struct  Tlistentry138010  {
  TNimObject Sup;
Tlistentry138010* prev;
Tlistentry138010* next;
};
struct  Tnodepair216848  {
NI h;
Tnode216790* key;
NI val;
};
struct  Gcstack49616  {
Gcstack49616* prev;
Gcstack49616* next;
void* starts;
void* pos;
NI maxstacksize;
};
struct  Pagedesc47312  {
Pagedesc47312* next;
NI key;
TY29419 bits;
};
struct  Basechunk29438  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk29440  {
  Basechunk29438 Sup;
Smallchunk29440* next;
Smallchunk29440* prev;
Freecell29430* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk29482  {
NI size;
NI acc;
Llchunk29482* next;
};
struct  Bigchunk29442  {
  Basechunk29438 Sup;
Bigchunk29442* next;
Bigchunk29442* prev;
NI align;
NF data;
};
struct  Trunk29410  {
Trunk29410* next;
NI key;
TY29419 bits;
};
typedef Avlnode29486* TY29493[2];
struct  Avlnode29486  {
TY29493 link;
NI key;
NI upperbound;
NI level;
};
struct  Tscope216816  {
NI depthlevel;
Tstrtable216794 symbols;
Tnodeseq216784* usingsyms;
Tscope216816* parent;
};
struct  Ttype216828  {
  Tidobj191006 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq216824* sons;
Tnode216790* n;
Tsym216822* owner;
Tsym216822* sym;
Tsym216822* destructor;
Tsym216822* deepcopy;
Tsym216822* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc216804 loc;
};
struct  Tident191012  {
  Tidobj191006 Sup;
NimStringDesc* s;
Tident191012* next;
NI h;
};
struct  Tnode216790  {
Ttype216828* typ;
Tlineinfo184337 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym216822* sym;
} S4;
struct {Tident191012* ident;
} S5;
struct {Tnodeseq216784* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
struct  Tlib216808  {
  Tlistentry138010 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj172006* name;
Tnode216790* path;
};
struct  Freecell29430  {
Freecell29430* next;
NI zerofield;
};
struct  Tinstantiation216812  {
Tsym216822* sym;
Ttypeseq216824* concretetypes;
TY216913* usedby;
NI compilesid;
};
struct TY471140 {
  TGenericSeq Sup;
  Tcgen471026* data[SEQ_DECL_SIZE];
};
struct TY471094 {
  TGenericSeq Sup;
  Tblock471020 data[SEQ_DECL_SIZE];
};
struct Tnodeseq216784 {
  TGenericSeq Sup;
  Tnode216790* data[SEQ_DECL_SIZE];
};
struct TY184350 {
  TGenericSeq Sup;
  Ropeobj172006* data[SEQ_DECL_SIZE];
};
struct Tidpairseq216838 {
  TGenericSeq Sup;
  Tidpair216836 data[SEQ_DECL_SIZE];
};
struct Trunkseq213033 {
  TGenericSeq Sup;
  Trunk213031* data[SEQ_DECL_SIZE];
};
struct Ttypeseq216824 {
  TGenericSeq Sup;
  Ttype216828* data[SEQ_DECL_SIZE];
};
struct Tnodepairseq216850 {
  TGenericSeq Sup;
  Tnodepair216848 data[SEQ_DECL_SIZE];
};
struct Tsymseq216792 {
  TGenericSeq Sup;
  Tsym216822* data[SEQ_DECL_SIZE];
};
struct TY216925 {
  TGenericSeq Sup;
  Tinstantiation216812* data[SEQ_DECL_SIZE];
};
struct TY216913 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP1179)(void* p, NI op);
N_NIMCALL(void, TMP1180)(void* p, NI op);
N_NIMCALL(void, TMP1184)(void* p, NI op);
N_NIMCALL(void, TMP1185)(void* p, NI op);
static N_INLINE(void, nimGCunref)(void* p);
static N_INLINE(void, decref_53201)(Cell47304* c);
static N_INLINE(void, rtladdzct_52801)(Cell47304* c);
N_NOINLINE(void, addzct_51217)(Cellseq47320* s, Cell47304* c);
static N_INLINE(NIM_BOOL, canbecycleroot_51258)(Cell47304* c);
static N_INLINE(void, rtladdcycleroot_52020)(Cell47304* c);
N_NOINLINE(void, incl_48047)(Cellset47316* s, Cell47304* cell);
static N_INLINE(Cell47304*, usrtocell_51240)(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_53619)(Cell47304* c);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
Ropeobj172006* mainmodprocs_471135;
Ropeobj172006* mainmodinit_471136;
Ropeobj172006* othermodsinit_471137;
Ropeobj172006* maindatinit_471138;
Ropeobj172006* gmapping_471139;
TY471140* gmodules_471157;
extern TNimType NTI263002; /* TPassContext */
TNimType NTI471026; /* TCGen */
extern TNimType NTI216788; /* PSym */
extern TNimType NTI138; /* string */
extern TNimType NTI172004; /* Rope */
TNimType NTI471010; /* TCFileSections */
extern TNimType NTI130; /* bool */
extern TNimType NTI216840; /* TIdTable */
extern TNimType NTI213035; /* IntSet */
extern TNimType NTI138016; /* TLinkedList */
TNimType NTI471022; /* TCProc */
extern TNimType NTI184337; /* TLineInfo */
extern TNimType NTI216784; /* TNodeSeq */
extern TNimType NTI104; /* int */
extern TNimType NTI184350; /* seq[Rope] */
extern TNimType NTI3604; /* Natural */
TNimType NTI471020; /* TBlock */
TNimType NTI471014; /* TCProcSections */
extern TNimType NTI108; /* int16 */
TNimType NTI471094; /* seq[TBlock] */
extern TNimType NTI163011; /* TOptions */
TNimType NTI471018; /* BProc */
extern TNimType NTI216824; /* TTypeSeq */
extern TNimType NTI216852; /* TNodeTable */
extern TNimType NTI216792; /* TSymSeq */
TNimType NTI471132; /* array[48..57, Rope] */
TNimType NTI471016; /* BModule */
TNimType NTI471140; /* seq[BModule] */
extern Gcheap49618 gch_49659;
NI gforwardedprocscounter_471158;
extern NU32 goptions_163119;
N_NIMCALL(void, TMP1179)(void* p, NI op) {
	TY471094* a;
	NI LOC1;
	NI LOC2;
	a = (TY471094*)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, TMP1180)(void* p, NI op) {
	Tcproc471022* a;
	a = (Tcproc471022*)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, TMP1184)(void* p, NI op) {
	Tcgen471026* a;
	NI LOC1;
	NI LOC2;
	a = (Tcgen471026*)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, TMP1185)(void* p, NI op) {
	TY471140* a;
	NI LOC1;
	a = (TY471140*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}

static N_INLINE(void, rtladdzct_52801)(Cell47304* c) {
	addzct_51217((&gch_49659.zct), c);
}

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

static N_INLINE(void, rtladdcycleroot_52020)(Cell47304* c) {
	{
		if (!!((((NI) ((NI)((*c).refcount & ((NI) 3)))) == ((NI) 3)))) goto LA3;
		(*c).refcount = (NI)((NI)((*c).refcount & ((NI) -4)) | ((NI) 3));
		incl_48047((&gch_49659.cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, decref_53201)(Cell47304* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA3;
		rtladdzct_52801(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_51258(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_52020(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(Cell47304*, usrtocell_51240)(void* usr) {
	Cell47304* result;
	result = 0;
	result = ((Cell47304*) ((NI)((NU64)(((NI) (usr))) - (NU64)(((NI)sizeof(Cell47304))))));
	return result;
}

static N_INLINE(void, nimGCunref)(void* p) {
	Cell47304* LOC1;
	LOC1 = 0;
	LOC1 = usrtocell_51240(p);
	decref_53201(LOC1);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		Cell47304* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_51240(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell47304* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_51240((*dest));
		{
			(*c).refcount -= ((NI) 8);
			if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA11;
			rtladdzct_52801(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

static N_INLINE(void, incref_53619)(Cell47304* c) {
	(*c).refcount = (NI)((NU64)((*c).refcount) + (NU64)(((NI) 8)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_51258(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_52020(c);
	}
	LA4: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		Cell47304* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_51240(src);
		incref_53619(LOC5);
	}
	LA3: ;
	{
		Cell47304* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_51240((*dest));
		decref_53201(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	Cell47304* c;
	c = usrtocell_51240(p);
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA3;
		rtladdzct_52801(c);
	}
	LA3: ;
}

N_NIMCALL(Tcproc471022*, newproc_471193)(Tsym216822* prc, Tcgen471026* module) {
	Tcproc471022* result;
	result = 0;
	result = (Tcproc471022*) newObj((&NTI471018), sizeof(Tcproc471022));
	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_163119;
	}
	LA1: ;
	if ((*result).blocks) nimGCunrefNoCycle((*result).blocks);
	(*result).blocks = (TY471094*) newSeqRC1((&NTI471094), ((NI) 1));
	if ((*result).nestedtrystmts) nimGCunrefNoCycle((*result).nestedtrystmts);
	(*result).nestedtrystmts = (Tnodeseq216784*) newSeqRC1((&NTI216784), 0);
	if ((*result).finallysafepoints) nimGCunrefNoCycle((*result).finallysafepoints);
	(*result).finallysafepoints = (TY184350*) newSeqRC1((&NTI184350), 0);
	return result;
}

N_NIMCALL(Tcgen471026*, bmod_471188)(Tsym216822* module) {
	Tcgen471026* result;
	result = 0;
	result = gmodules_471157->data[(*module).position];
	return result;
}
NIM_EXTERNC N_NOINLINE(void, compiler_cgendataInit000)(void) {
	if (gmodules_471157) nimGCunref(gmodules_471157);
	gmodules_471157 = (TY471140*) newSeqRC1((&NTI471140), 0);
	gforwardedprocscounter_471158 = ((NI) 0);
}

NIM_EXTERNC N_NOINLINE(void, compiler_cgendataDatInit000)(void) {
static TNimNode* TMP1173[29];
static TNimNode* TMP1177[17];
static TNimNode* TMP1178[7];
static TNimNode TMP1171[56];
NTI471026.size = sizeof(Tcgen471026);
NTI471026.kind = 17;
NTI471026.base = (&NTI263002);
TMP1173[0] = &TMP1171[1];
TMP1171[1].kind = 1;
TMP1171[1].offset = offsetof(Tcgen471026, module);
TMP1171[1].typ = (&NTI216788);
TMP1171[1].name = "module";
TMP1173[1] = &TMP1171[2];
TMP1171[2].kind = 1;
TMP1171[2].offset = offsetof(Tcgen471026, filename);
TMP1171[2].typ = (&NTI138);
TMP1171[2].name = "filename";
TMP1173[2] = &TMP1171[3];
NTI471010.size = sizeof(Tcfilesections471010);
NTI471010.kind = 16;
NTI471010.base = (&NTI172004);
NTI471010.flags = 2;
TMP1171[3].kind = 1;
TMP1171[3].offset = offsetof(Tcgen471026, s);
TMP1171[3].typ = (&NTI471010);
TMP1171[3].name = "s";
TMP1173[3] = &TMP1171[4];
TMP1171[4].kind = 1;
TMP1171[4].offset = offsetof(Tcgen471026, preventstacktrace);
TMP1171[4].typ = (&NTI130);
TMP1171[4].name = "preventStackTrace";
TMP1173[4] = &TMP1171[5];
TMP1171[5].kind = 1;
TMP1171[5].offset = offsetof(Tcgen471026, usesthreadvars);
TMP1171[5].typ = (&NTI130);
TMP1171[5].name = "usesThreadVars";
TMP1173[5] = &TMP1171[6];
TMP1171[6].kind = 1;
TMP1171[6].offset = offsetof(Tcgen471026, framedeclared);
TMP1171[6].typ = (&NTI130);
TMP1171[6].name = "frameDeclared";
TMP1173[6] = &TMP1171[7];
TMP1171[7].kind = 1;
TMP1171[7].offset = offsetof(Tcgen471026, isheaderfile);
TMP1171[7].typ = (&NTI130);
TMP1171[7].name = "isHeaderFile";
TMP1173[7] = &TMP1171[8];
TMP1171[8].kind = 1;
TMP1171[8].offset = offsetof(Tcgen471026, includesstringh);
TMP1171[8].typ = (&NTI130);
TMP1171[8].name = "includesStringh";
TMP1173[8] = &TMP1171[9];
TMP1171[9].kind = 1;
TMP1171[9].offset = offsetof(Tcgen471026, objhaskidsvalid);
TMP1171[9].typ = (&NTI130);
TMP1171[9].name = "objHasKidsValid";
TMP1173[9] = &TMP1171[10];
TMP1171[10].kind = 1;
TMP1171[10].offset = offsetof(Tcgen471026, cfilename);
TMP1171[10].typ = (&NTI138);
TMP1171[10].name = "cfilename";
TMP1173[10] = &TMP1171[11];
TMP1171[11].kind = 1;
TMP1171[11].offset = offsetof(Tcgen471026, typecache);
TMP1171[11].typ = (&NTI216840);
TMP1171[11].name = "typeCache";
TMP1173[11] = &TMP1171[12];
TMP1171[12].kind = 1;
TMP1171[12].offset = offsetof(Tcgen471026, forwtypecache);
TMP1171[12].typ = (&NTI216840);
TMP1171[12].name = "forwTypeCache";
TMP1173[12] = &TMP1171[13];
TMP1171[13].kind = 1;
TMP1171[13].offset = offsetof(Tcgen471026, declaredthings);
TMP1171[13].typ = (&NTI213035);
TMP1171[13].name = "declaredThings";
TMP1173[13] = &TMP1171[14];
TMP1171[14].kind = 1;
TMP1171[14].offset = offsetof(Tcgen471026, declaredprotos);
TMP1171[14].typ = (&NTI213035);
TMP1171[14].name = "declaredProtos";
TMP1173[14] = &TMP1171[15];
TMP1171[15].kind = 1;
TMP1171[15].offset = offsetof(Tcgen471026, headerfiles);
TMP1171[15].typ = (&NTI138016);
TMP1171[15].name = "headerFiles";
TMP1173[15] = &TMP1171[16];
TMP1171[16].kind = 1;
TMP1171[16].offset = offsetof(Tcgen471026, typeinfomarker);
TMP1171[16].typ = (&NTI213035);
TMP1171[16].name = "typeInfoMarker";
TMP1173[16] = &TMP1171[17];
NTI471022.size = sizeof(Tcproc471022);
NTI471022.kind = 18;
NTI471022.base = 0;
TMP1177[0] = &TMP1171[19];
TMP1171[19].kind = 1;
TMP1171[19].offset = offsetof(Tcproc471022, prc);
TMP1171[19].typ = (&NTI216788);
TMP1171[19].name = "prc";
TMP1177[1] = &TMP1171[20];
TMP1171[20].kind = 1;
TMP1171[20].offset = offsetof(Tcproc471022, beforeretneeded);
TMP1171[20].typ = (&NTI130);
TMP1171[20].name = "beforeRetNeeded";
TMP1177[2] = &TMP1171[21];
TMP1171[21].kind = 1;
TMP1171[21].offset = offsetof(Tcproc471022, threadvaraccessed);
TMP1171[21].typ = (&NTI130);
TMP1171[21].name = "threadVarAccessed";
TMP1177[3] = &TMP1171[22];
TMP1171[22].kind = 1;
TMP1171[22].offset = offsetof(Tcproc471022, lastlineinfo);
TMP1171[22].typ = (&NTI184337);
TMP1171[22].name = "lastLineInfo";
TMP1177[4] = &TMP1171[23];
TMP1171[23].kind = 1;
TMP1171[23].offset = offsetof(Tcproc471022, nestedtrystmts);
TMP1171[23].typ = (&NTI216784);
TMP1171[23].name = "nestedTryStmts";
TMP1177[5] = &TMP1171[24];
TMP1171[24].kind = 1;
TMP1171[24].offset = offsetof(Tcproc471022, inexceptblock);
TMP1171[24].typ = (&NTI104);
TMP1171[24].name = "inExceptBlock";
TMP1177[6] = &TMP1171[25];
TMP1171[25].kind = 1;
TMP1171[25].offset = offsetof(Tcproc471022, finallysafepoints);
TMP1171[25].typ = (&NTI184350);
TMP1171[25].name = "finallySafePoints";
TMP1177[7] = &TMP1171[26];
TMP1171[26].kind = 1;
TMP1171[26].offset = offsetof(Tcproc471022, labels);
TMP1171[26].typ = (&NTI3604);
TMP1171[26].name = "labels";
TMP1177[8] = &TMP1171[27];
NTI471020.size = sizeof(Tblock471020);
NTI471020.kind = 18;
NTI471020.base = 0;
NTI471020.flags = 2;
TMP1178[0] = &TMP1171[29];
TMP1171[29].kind = 1;
TMP1171[29].offset = offsetof(Tblock471020, id);
TMP1171[29].typ = (&NTI104);
TMP1171[29].name = "id";
TMP1178[1] = &TMP1171[30];
TMP1171[30].kind = 1;
TMP1171[30].offset = offsetof(Tblock471020, label);
TMP1171[30].typ = (&NTI172004);
TMP1171[30].name = "label";
TMP1178[2] = &TMP1171[31];
NTI471014.size = sizeof(Tcprocsections471014);
NTI471014.kind = 16;
NTI471014.base = (&NTI172004);
NTI471014.flags = 2;
TMP1171[31].kind = 1;
TMP1171[31].offset = offsetof(Tblock471020, sections);
TMP1171[31].typ = (&NTI471014);
TMP1171[31].name = "sections";
TMP1178[3] = &TMP1171[32];
TMP1171[32].kind = 1;
TMP1171[32].offset = offsetof(Tblock471020, isloop);
TMP1171[32].typ = (&NTI130);
TMP1171[32].name = "isLoop";
TMP1178[4] = &TMP1171[33];
TMP1171[33].kind = 1;
TMP1171[33].offset = offsetof(Tblock471020, nestedtrystmts);
TMP1171[33].typ = (&NTI108);
TMP1171[33].name = "nestedTryStmts";
TMP1178[5] = &TMP1171[34];
TMP1171[34].kind = 1;
TMP1171[34].offset = offsetof(Tblock471020, nestedexceptstmts);
TMP1171[34].typ = (&NTI108);
TMP1171[34].name = "nestedExceptStmts";
TMP1178[6] = &TMP1171[35];
TMP1171[35].kind = 1;
TMP1171[35].offset = offsetof(Tblock471020, framelen);
TMP1171[35].typ = (&NTI108);
TMP1171[35].name = "frameLen";
TMP1171[28].len = 7; TMP1171[28].kind = 2; TMP1171[28].sons = &TMP1178[0];
NTI471020.node = &TMP1171[28];
NTI471094.size = sizeof(TY471094*);
NTI471094.kind = 24;
NTI471094.base = (&NTI471020);
NTI471094.flags = 2;
NTI471094.marker = TMP1179;
TMP1171[27].kind = 1;
TMP1171[27].offset = offsetof(Tcproc471022, blocks);
TMP1171[27].typ = (&NTI471094);
TMP1171[27].name = "blocks";
TMP1177[9] = &TMP1171[36];
TMP1171[36].kind = 1;
TMP1171[36].offset = offsetof(Tcproc471022, breakidx);
TMP1171[36].typ = (&NTI104);
TMP1171[36].name = "breakIdx";
TMP1177[10] = &TMP1171[37];
TMP1171[37].kind = 1;
TMP1171[37].offset = offsetof(Tcproc471022, options);
TMP1171[37].typ = (&NTI163011);
TMP1171[37].name = "options";
TMP1177[11] = &TMP1171[38];
TMP1171[38].kind = 1;
TMP1171[38].offset = offsetof(Tcproc471022, maxframelen);
TMP1171[38].typ = (&NTI104);
TMP1171[38].name = "maxFrameLen";
TMP1177[12] = &TMP1171[39];
TMP1171[39].kind = 1;
TMP1171[39].offset = offsetof(Tcproc471022, module);
TMP1171[39].typ = (&NTI471016);
TMP1171[39].name = "module";
TMP1177[13] = &TMP1171[40];
TMP1171[40].kind = 1;
TMP1171[40].offset = offsetof(Tcproc471022, withinloop);
TMP1171[40].typ = (&NTI104);
TMP1171[40].name = "withinLoop";
TMP1177[14] = &TMP1171[41];
TMP1171[41].kind = 1;
TMP1171[41].offset = offsetof(Tcproc471022, splitdecls);
TMP1171[41].typ = (&NTI104);
TMP1171[41].name = "splitDecls";
TMP1177[15] = &TMP1171[42];
TMP1171[42].kind = 1;
TMP1171[42].offset = offsetof(Tcproc471022, gcframeid);
TMP1171[42].typ = (&NTI3604);
TMP1171[42].name = "gcFrameId";
TMP1177[16] = &TMP1171[43];
TMP1171[43].kind = 1;
TMP1171[43].offset = offsetof(Tcproc471022, gcframetype);
TMP1171[43].typ = (&NTI172004);
TMP1171[43].name = "gcFrameType";
TMP1171[18].len = 17; TMP1171[18].kind = 2; TMP1171[18].sons = &TMP1177[0];
NTI471022.node = &TMP1171[18];
NTI471018.size = sizeof(Tcproc471022*);
NTI471018.kind = 22;
NTI471018.base = (&NTI471022);
NTI471018.marker = TMP1180;
TMP1171[17].kind = 1;
TMP1171[17].offset = offsetof(Tcgen471026, initproc);
TMP1171[17].typ = (&NTI471018);
TMP1171[17].name = "initProc";
TMP1173[17] = &TMP1171[44];
TMP1171[44].kind = 1;
TMP1171[44].offset = offsetof(Tcgen471026, postinitproc);
TMP1171[44].typ = (&NTI471018);
TMP1171[44].name = "postInitProc";
TMP1173[18] = &TMP1171[45];
TMP1171[45].kind = 1;
TMP1171[45].offset = offsetof(Tcgen471026, preinitproc);
TMP1171[45].typ = (&NTI471018);
TMP1171[45].name = "preInitProc";
TMP1173[19] = &TMP1171[46];
TMP1171[46].kind = 1;
TMP1171[46].offset = offsetof(Tcgen471026, typestack);
TMP1171[46].typ = (&NTI216824);
TMP1171[46].name = "typeStack";
TMP1173[20] = &TMP1171[47];
TMP1171[47].kind = 1;
TMP1171[47].offset = offsetof(Tcgen471026, datacache);
TMP1171[47].typ = (&NTI216852);
TMP1171[47].name = "dataCache";
TMP1173[21] = &TMP1171[48];
TMP1171[48].kind = 1;
TMP1171[48].offset = offsetof(Tcgen471026, forwardedprocs);
TMP1171[48].typ = (&NTI216792);
TMP1171[48].name = "forwardedProcs";
TMP1173[22] = &TMP1171[49];
TMP1171[49].kind = 1;
TMP1171[49].offset = offsetof(Tcgen471026, typenodes);
TMP1171[49].typ = (&NTI104);
TMP1171[49].name = "typeNodes";
TMP1173[23] = &TMP1171[50];
TMP1171[50].kind = 1;
TMP1171[50].offset = offsetof(Tcgen471026, nimtypes);
TMP1171[50].typ = (&NTI104);
TMP1171[50].name = "nimTypes";
TMP1173[24] = &TMP1171[51];
TMP1171[51].kind = 1;
TMP1171[51].offset = offsetof(Tcgen471026, typenodesname);
TMP1171[51].typ = (&NTI172004);
TMP1171[51].name = "typeNodesName";
TMP1173[25] = &TMP1171[52];
TMP1171[52].kind = 1;
TMP1171[52].offset = offsetof(Tcgen471026, nimtypesname);
TMP1171[52].typ = (&NTI172004);
TMP1171[52].name = "nimTypesName";
TMP1173[26] = &TMP1171[53];
TMP1171[53].kind = 1;
TMP1171[53].offset = offsetof(Tcgen471026, labels);
TMP1171[53].typ = (&NTI3604);
TMP1171[53].name = "labels";
TMP1173[27] = &TMP1171[54];
NTI471132.size = sizeof(TY471132);
NTI471132.kind = 16;
NTI471132.base = (&NTI172004);
NTI471132.flags = 2;
TMP1171[54].kind = 1;
TMP1171[54].offset = offsetof(Tcgen471026, extensionloaders);
TMP1171[54].typ = (&NTI471132);
TMP1171[54].name = "extensionLoaders";
TMP1173[28] = &TMP1171[55];
TMP1171[55].kind = 1;
TMP1171[55].offset = offsetof(Tcgen471026, injectstmt);
TMP1171[55].typ = (&NTI172004);
TMP1171[55].name = "injectStmt";
TMP1171[0].len = 29; TMP1171[0].kind = 2; TMP1171[0].sons = &TMP1173[0];
NTI471026.node = &TMP1171[0];
NTI471016.size = sizeof(Tcgen471026*);
NTI471016.kind = 22;
NTI471016.base = (&NTI471026);
NTI471016.marker = TMP1184;
NTI471140.size = sizeof(TY471140*);
NTI471140.kind = 24;
NTI471140.base = (&NTI471016);
NTI471140.marker = TMP1185;
}

