/* Generated by Nim Compiler v0.10.2 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 64
#include "nimbase.h"

#include <string.h>

#include <stdio.h>
typedef struct tpasscontext286005 tpasscontext286005;
typedef struct tsym225846 tsym225846;
typedef struct tidobj200015 tidobj200015;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct ttypeseq225848 ttypeseq225848;
typedef struct ttype225852 ttype225852;
typedef struct TGenericSeq TGenericSeq;
typedef struct tscope225840 tscope225840;
typedef struct TY225947 TY225947;
typedef struct tinstantiation225836 tinstantiation225836;
typedef struct tstrtable225820 tstrtable225820;
typedef struct tsymseq225818 tsymseq225818;
typedef struct tident200021 tident200021;
typedef struct tlineinfo195539 tlineinfo195539;
typedef struct tnode225816 tnode225816;
typedef struct tloc225830 tloc225830;
typedef struct trope177009 trope177009;
typedef struct tlib225834 tlib225834;
typedef struct NimStringDesc NimStringDesc;
typedef struct trodwriter300005 trodwriter300005;
typedef struct tindex276028 tindex276028;
typedef struct tiitable235274 tiitable235274;
typedef struct tiipairseq235272 tiipairseq235272;
typedef struct tiipair235270 tiipair235270;
typedef struct TY120008 TY120008;
typedef struct tcell45133 tcell45133;
typedef struct tcellseq45149 tcellseq45149;
typedef struct tgcheap47216 tgcheap47216;
typedef struct tcellset45145 tcellset45145;
typedef struct tpagedesc45141 tpagedesc45141;
typedef struct tmemregion27410 tmemregion27410;
typedef struct tsmallchunk26640 tsmallchunk26640;
typedef struct tllchunk27404 tllchunk27404;
typedef struct tbigchunk26642 tbigchunk26642;
typedef struct tintset26617 tintset26617;
typedef struct ttrunk26613 ttrunk26613;
typedef struct tavlnode27408 tavlnode27408;
typedef struct tgcstat47214 tgcstat47214;
typedef struct stringtableobj131012 stringtableobj131012;
typedef struct keyvaluepairseq131010 keyvaluepairseq131010;
typedef struct keyvaluepair131008 keyvaluepair131008;
typedef struct tlistentry127022 tlistentry127022;
typedef struct tnodeseq225810 tnodeseq225810;
typedef struct TY225936 TY225936;
typedef struct tbasechunk26638 tbasechunk26638;
typedef struct tfreecell26630 tfreecell26630;
typedef N_NIMCALL_PTR(void, TY3089) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3094) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3089 marker;
TY3094 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tidobj200015  {
  TNimObject Sup;
NI Id;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  tstrtable225820  {
NI Counter;
tsymseq225818* Data;
};
struct  tlineinfo195539  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  tloc225830  {
NU8 K;
NU8 S;
NU8 Flags;
ttype225852* T;
trope177009* R;
trope177009* Heaproot;
};
struct  tsym225846  {
  tidobj200015 Sup;
NU8 Kind;
union {
struct {ttypeseq225848* Typeinstcache;
tscope225840* Typscope;
} S1;
struct {TY225947* Procinstcache;
tscope225840* Scope;
} S2;
struct {TY225947* Usedgenerics;
tstrtable225820 Tab;
} S3;
struct {tsym225846* Guard;
} S4;
} kindU;
NU16 Magic;
ttype225852* Typ;
tident200021* Name;
tlineinfo195539 Info;
tsym225846* Owner;
NU32 Flags;
tnode225816* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc225830 Loc;
tlib225834* Annex;
tnode225816* Constraint;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tpasscontext286005  {
  TNimObject Sup;
NIM_BOOL Fromcache;
};
struct  tiipair235270  {
NI Key;
NI Val;
};
struct  tiitable235274  {
NI Counter;
tiipairseq235272* Data;
};
struct  tindex276028  {
NI Lastidxkey;
NI Lastidxval;
tiitable235274 Tab;
NimStringDesc* R;
NI Offset;
};
struct  trodwriter300005  {
  tpasscontext286005 Sup;
tsym225846* Module;
NI32 Crc;
NU32 Options;
NimStringDesc* Defines;
NimStringDesc* Incldeps;
NimStringDesc* Moddeps;
NimStringDesc* Interf;
NimStringDesc* Compilerprocs;
tindex276028 Index;
tindex276028 Imports;
NimStringDesc* Converters;
NimStringDesc* Methods;
NimStringDesc* Init;
NimStringDesc* Data;
tsymseq225818* Sstack;
ttypeseq225848* Tstack;
TY120008* Files;
NimStringDesc* Origfile;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  tcell45133  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq45149  {
NI Len;
NI Cap;
tcell45133** D;
};
struct  tcellset45145  {
NI Counter;
NI Max;
tpagedesc45141* Head;
tpagedesc45141** Data;
};
typedef tsmallchunk26640* TY27422[512];
typedef ttrunk26613* ttrunkbuckets26615[256];
struct  tintset26617  {
ttrunkbuckets26615 Data;
};
struct  tmemregion27410  {
NI Minlargeobj;
NI Maxlargeobj;
TY27422 Freesmallchunks;
tllchunk27404* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk26642* Freechunkslist;
tintset26617 Chunkstarts;
tavlnode27408* Root;
tavlnode27408* Deleted;
tavlnode27408* Last;
tavlnode27408* Freeavlnodes;
};
struct  tgcstat47214  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap47216  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq45149 Zct;
tcellseq45149 Decstack;
tcellset45145 Cycleroots;
tcellseq45149 Tempstack;
NI Recgclock;
tmemregion27410 Region;
tgcstat47214 Stat;
};
struct keyvaluepair131008 {
NimStringDesc* Field0;
NimStringDesc* Field1;
};
struct  stringtableobj131012  {
  TNimObject Sup;
NI Counter;
keyvaluepairseq131010* Data;
NU8 Mode;
};
struct  tident200021  {
  tidobj200015 Sup;
NimStringDesc* S;
tident200021* Next;
NI H;
};
struct  ttype225852  {
  tidobj200015 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq225848* Sons;
tnode225816* N;
tsym225846* Owner;
tsym225846* Sym;
tsym225846* Destructor;
tsym225846* Deepcopy;
NI64 Size;
NI16 Align;
NI16 Locklevel;
tloc225830 Loc;
};
struct  tlistentry127022  {
  TNimObject Sup;
tlistentry127022* Prev;
tlistentry127022* Next;
};
struct  tlib225834  {
  tlistentry127022 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope177009* Name;
tnode225816* Path;
};
struct  tnode225816  {
ttype225852* Typ;
tlineinfo195539 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym225846* Sym;
} S4;
struct {tident200021* Ident;
} S5;
struct {tnodeseq225810* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
struct  tscope225840  {
NI Depthlevel;
tstrtable225820 Symbols;
tnodeseq225810* Usingsyms;
tscope225840* Parent;
};
struct  tinstantiation225836  {
tsym225846* Sym;
ttypeseq225848* Concretetypes;
TY225936* Usedby;
};
struct  trope177009  {
  TNimObject Sup;
trope177009* Left;
trope177009* Right;
NI Length;
NimStringDesc* Data;
};
typedef NI TY26620[8];
struct  tpagedesc45141  {
tpagedesc45141* Next;
NI Key;
TY26620 Bits;
};
struct  tbasechunk26638  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk26640  {
  tbasechunk26638 Sup;
tsmallchunk26640* Next;
tsmallchunk26640* Prev;
tfreecell26630* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk27404  {
NI Size;
NI Acc;
tllchunk27404* Next;
};
struct  tbigchunk26642  {
  tbasechunk26638 Sup;
tbigchunk26642* Next;
tbigchunk26642* Prev;
NI Align;
NF Data;
};
struct  ttrunk26613  {
ttrunk26613* Next;
NI Key;
TY26620 Bits;
};
typedef tavlnode27408* TY27414[2];
struct  tavlnode27408  {
TY27414 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  tfreecell26630  {
tfreecell26630* Next;
NI Zerofield;
};
struct ttypeseq225848 {
  TGenericSeq Sup;
  ttype225852* data[SEQ_DECL_SIZE];
};
struct TY225947 {
  TGenericSeq Sup;
  tinstantiation225836* data[SEQ_DECL_SIZE];
};
struct tsymseq225818 {
  TGenericSeq Sup;
  tsym225846* data[SEQ_DECL_SIZE];
};
struct tiipairseq235272 {
  TGenericSeq Sup;
  tiipair235270 data[SEQ_DECL_SIZE];
};
struct TY120008 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct keyvaluepairseq131010 {
  TGenericSeq Sup;
  keyvaluepair131008 data[SEQ_DECL_SIZE];
};
struct tnodeseq225810 {
  TGenericSeq Sup;
  tnode225816* data[SEQ_DECL_SIZE];
};
struct TY225936 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, internalerror_198006)(NimStringDesc* errmsg);
N_NIMCALL(trodwriter300005*, newrodwriter_300029)(NI32 crc, tsym225846* module);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP4096)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
static N_INLINE(tcell45133*, usrtocell_48846)(void* usr);
static N_INLINE(void, rtladdzct_50404)(tcell45133* c);
N_NOINLINE(void, addzct_48817)(tcellseq45149* s, tcell45133* c);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(void, initiitable_235282)(tiitable235274* x);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
N_NIMCALL(NimStringDesc*, getdefines_300070)(void);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
N_NIMCALL(NimStringDesc*, tofilename_197025)(NI32 fileidx);
N_NIMCALL(NI32, getcrc_278747)(NI32 fileidx);
N_NIMCALL(void, rawaddinterfacesym_301946)(trodwriter300005* w, tsym225846* s);
N_NIMCALL(void, pushsym_300328)(trodwriter300005* w, tsym225846* s);
N_NIMCALL(NI, iitableget_235289)(tiitable235274 t, NI key);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(void, processstacks_301925)(trodwriter300005* w, NIM_BOOL finalpass);
N_NIMCALL(NI, symstack_301401)(trodwriter300005* w);
N_NIMCALL(tsym225846*, getmodule_235243)(tsym225846* s);
N_NIMCALL(void, addtoindex_301209)(tindex276028* w, NI key, NI val);
N_NIMCALL(void, encodevint_234304)(NI x, NimStringDesc** result);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(void, iitableput_235296)(tiitable235274* t, NI key, NI val);
N_NIMCALL(void, encodesym_300920)(trodwriter300005* w, tsym225846* s, NimStringDesc** result);
N_NIMCALL(void, encodestr_234042)(NimStringDesc* s, NimStringDesc** result);
N_NIMCALL(void, pushtype_300300)(trodwriter300005* w, ttype225852* t);
N_NIMCALL(NI, fileidx_300109)(trodwriter300005* w, NimStringDesc* filename);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, encodeloc_300618)(trodwriter300005* w, tloc225830* loc, NimStringDesc** result);
N_NIMCALL(NimStringDesc*, ropetostr_177101)(trope177009* p);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newlen);
N_NIMCALL(void, encodelib_300899)(trodwriter300005* w, tlib225834* lib, tlineinfo195539 info, NimStringDesc** result);
N_NIMCALL(void, encodenode_300356)(trodwriter300005* w, tlineinfo195539 finfo, tnode225816* n, NimStringDesc** result);
N_NIMCALL(void, encodevbiggestint_234264)(NI64 x, NimStringDesc** result);
N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f);
static N_INLINE(NI, sonslen_226249)(tnode225816* n);
N_NIMCALL(tlineinfo195539, unknownlineinfo_196405)(void);
static N_INLINE(NIM_BOOL, haspattern_232804)(tsym225846* s);
static N_INLINE(NIM_BOOL, isroutine_232781)(tsym225846* s);
N_NIMCALL(NI, typestack_301842)(trodwriter300005* w);
N_NIMCALL(void, encodetype_300720)(trodwriter300005* w, ttype225852* t, NimStringDesc** result);
static N_INLINE(NI, sonslen_226255)(ttype225852* n);
N_NIMCALL(tnode225816*, process_302204)(tpasscontext286005* c, tnode225816* n);
N_NIMCALL(void, internalerror_197987)(tlineinfo195539 info, NimStringDesc* errmsg);
N_NIMCALL(void, addinterfacesym_300050)(trodwriter300005* w, tsym225846* s);
N_NIMCALL(void, addmoddep_300036)(trodwriter300005* w, NimStringDesc* dep);
N_NIMCALL(NimStringDesc*, getmodulename_298018)(tnode225816* n);
N_NIMCALL(void, addstmt_300057)(trodwriter300005* w, tnode225816* n);
N_NIMCALL(void, addincldep_300043)(trodwriter300005* w, NimStringDesc* dep);
N_NIMCALL(NimStringDesc*, findmodule_170366)(NimStringDesc* modulename, NimStringDesc* currentmodule);
N_NIMCALL(NimStringDesc*, tofullpath_197037)(NI32 fileidx);
N_NIMCALL(NI32, crcfromfile_176046)(NimStringDesc* filename);
N_NIMCALL(void, writerod_300064)(trodwriter300005* w);
N_NIMCALL(NIM_BOOL, open_12803)(FILE** f, NimStringDesc* filename, NU8 mode, NI bufsize);
N_NIMCALL(NimStringDesc*, completegeneratedfilepath_170001)(NimStringDesc* f, NIM_BOOL createsubdir);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, withpackagename_169946)(NimStringDesc* path);
N_NIMCALL(void, write_13065)(FILE* f, NimStringDesc* s);
N_NIMCALL(void, savemaxids_224477)(NimStringDesc* project);
N_NIMCALL(NimStringDesc*, HEX2F_117499)(NimStringDesc* head, NimStringDesc* tail);
STRING_LITERAL(TMP4094, "rodwrite: module ID not set", 27);
STRING_LITERAL(TMP4097, "", 0);
STRING_LITERAL(TMP4098, "true", 4);
STRING_LITERAL(TMP4099, " ", 1);
STRING_LITERAL(TMP4100, "symStack: module nil: ", 22);
STRING_LITERAL(TMP4101, "\012", 1);
STRING_LITERAL(TMP4102, "{}", 2);
STRING_LITERAL(TMP4103, "()", 2);
STRING_LITERAL(TMP4104, "[]", 2);
STRING_LITERAL(TMP4105, "encodeType: tyForward", 21);
STRING_LITERAL(TMP4106, "^()", 3);
STRING_LITERAL(TMP4107, "could not serialize some forwarded symbols/types", 48);
STRING_LITERAL(TMP4108, "rodwrite.process", 16);
STRING_LITERAL(TMP4109, "rodwrite.process: body is nil", 29);
STRING_LITERAL(TMP4110, "rod", 3);
STRING_LITERAL(TMP4111, "NIM:", 4);
STRING_LITERAL(TMP4112, "1215", 4);
STRING_LITERAL(TMP4113, "ID:", 3);
STRING_LITERAL(TMP4114, "ORIGFILE:", 9);
STRING_LITERAL(TMP4115, "CRC:", 4);
STRING_LITERAL(TMP4116, "OPTIONS:", 8);
STRING_LITERAL(TMP4117, "GOPTIONS:", 9);
STRING_LITERAL(TMP4118, "CMD:", 4);
STRING_LITERAL(TMP4119, "DEFINES:", 8);
STRING_LITERAL(TMP4120, "FILES(\012", 7);
STRING_LITERAL(TMP4121, ")\012", 2);
STRING_LITERAL(TMP4122, "INCLUDES(\012", 10);
STRING_LITERAL(TMP4123, "DEPS:", 5);
STRING_LITERAL(TMP4124, "INTERF(\012", 8);
STRING_LITERAL(TMP4125, "COMPILERPROCS(\012", 15);
STRING_LITERAL(TMP4126, "INDEX(\012", 7);
STRING_LITERAL(TMP4127, "IMPORTS(\012", 9);
STRING_LITERAL(TMP4128, "CONVERTERS:", 11);
STRING_LITERAL(TMP4129, "METHODS:", 8);
STRING_LITERAL(TMP4130, "INIT(\012", 6);
STRING_LITERAL(TMP4131, "DATA(\012", 6);
STRING_LITERAL(TMP4132, "\000", 1);
extern TNimType NTI286005; /* TPassContext */
TNimType NTI300005; /* TRodWriter */
extern TNimType NTI225814; /* PSym */
extern TNimType NTI176010; /* TCrc32 */
extern TNimType NTI169016; /* TOptions */
extern TNimType NTI149; /* string */
extern TNimType NTI276028; /* TIndex */
extern TNimType NTI225818; /* TSymSeq */
extern TNimType NTI225848; /* TTypeSeq */
extern TNimType NTI120008; /* seq[string] */
TNimType NTI300007; /* PRodWriter */
extern tgcheap47216 gch_47244;
extern stringtableobj131012* gsymbols_201004;
extern NU32 goptions_169116;
extern NU32 gglobaloptions_169118;
extern NU8 gcmd_169120;
extern NimStringDesc* gprojectpath_169235;
extern NimStringDesc* gprojectname_169234;
N_NIMCALL(void, TMP4096)(void* p, NI op) {
	trodwriter300005* a;
	a = (trodwriter300005*)p;
	nimGCvisit((void*)(*a).Module, op);
	nimGCvisit((void*)(*a).Defines, op);
	nimGCvisit((void*)(*a).Incldeps, op);
	nimGCvisit((void*)(*a).Moddeps, op);
	nimGCvisit((void*)(*a).Interf, op);
	nimGCvisit((void*)(*a).Compilerprocs, op);
	nimGCvisit((void*)(*a).Index.Tab.Data, op);
	nimGCvisit((void*)(*a).Index.R, op);
	nimGCvisit((void*)(*a).Imports.Tab.Data, op);
	nimGCvisit((void*)(*a).Imports.R, op);
	nimGCvisit((void*)(*a).Converters, op);
	nimGCvisit((void*)(*a).Methods, op);
	nimGCvisit((void*)(*a).Init, op);
	nimGCvisit((void*)(*a).Data, op);
	nimGCvisit((void*)(*a).Sstack, op);
	nimGCvisit((void*)(*a).Tstack, op);
	nimGCvisit((void*)(*a).Files, op);
	nimGCvisit((void*)(*a).Origfile, op);
}

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

static N_INLINE(void, rtladdzct_50404)(tcell45133* c) {
	addzct_48817((&gch_47244.Zct), c);
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tcell45133* c;
	c = usrtocell_48846(p);
	{
		(*c).Refcount -= 8;
		if (!((NU64)((*c).Refcount) < (NU64)(8))) goto LA3;
		rtladdzct_50404(c);
	}
	LA3: ;
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tcell45133* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_48846(src);
		(*c).Refcount += 8;
	}
	LA3: ;
	{
		tcell45133* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_48846((*dest));
		{
			(*c).Refcount -= 8;
			if (!((NU64)((*c).Refcount) < (NU64)(8))) goto LA11;
			rtladdzct_50404(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
	NIM_BOOL result;
	NIM_BOOL LOC11;
	int LOC13;
	result = 0;
	{
		if (!(a == b)) goto LA3;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = (a == NIM_NIL);
		if (LOC7) goto LA8;
		LOC7 = (b == NIM_NIL);
		LA8: ;
		if (!LOC7) goto LA9;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA9: ;
	LOC11 = 0;
	LOC11 = ((*a).Sup.len == (*b).Sup.len);
	if (!(LOC11)) goto LA12;
	LOC13 = 0;
	LOC13 = memcmp(((NCSTRING) ((*a).data)), ((NCSTRING) ((*b).data)), (NI64)((*a).Sup.len * 1));
	LOC11 = (LOC13 == ((NI32) 0));
	LA12: ;
	result = LOC11;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	memcpy(((NCSTRING) ((&(*dest).data[((*dest).Sup.len)- 0]))), ((NCSTRING) ((*src).data)), (NI64)((*src).Sup.len + 1));
	(*dest).Sup.len += (*src).Sup.len;
}

N_NIMCALL(NimStringDesc*, getdefines_300070)(void) {
	NimStringDesc* result;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP4097));
	{
		NimStringDesc* d_300073;
		d_300073 = 0;
		{
			NimStringDesc* key_300079;
			NimStringDesc* val_300081;
			key_300079 = 0;
			val_300081 = 0;
			{
				NI h_300083;
				NI HEX3Atmp_300085;
				NI res_300087;
				h_300083 = 0;
				HEX3Atmp_300085 = 0;
				HEX3Atmp_300085 = ((*gsymbols_201004).Data->Sup.len-1);
				res_300087 = 0;
				{
					while (1) {
						if (!(res_300087 <= HEX3Atmp_300085)) goto LA5;
						h_300083 = res_300087;
						{
							if (!!((*gsymbols_201004).Data->data[h_300083].Field0 == 0)) goto LA8;
							key_300079 = (*gsymbols_201004).Data->data[h_300083].Field0;
							val_300081 = (*gsymbols_201004).Data->data[h_300083].Field1;
							{
								if (!eqStrings(val_300081, ((NimStringDesc*) &TMP4098))) goto LA12;
								d_300073 = key_300079;
								{
									if (!!((result->Sup.len == 0))) goto LA16;
									result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TMP4099));
								}
								LA16: ;
								result = resizeString(result, d_300073->Sup.len + 0);
appendString(result, d_300073);
							}
							LA12: ;
						}
						LA8: ;
						res_300087 += 1;
					} LA5: ;
				}
			}
		}
	}
	return result;
}

N_NIMCALL(trodwriter300005*, newrodwriter_300029)(NI32 crc, tsym225846* module) {
	trodwriter300005* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	NimStringDesc* LOC4;
	NimStringDesc* LOC5;
	NimStringDesc* LOC6;
	NimStringDesc* LOC7;
	NimStringDesc* LOC8;
	result = 0;
	result = (trodwriter300005*) newObj((&NTI300007), sizeof(trodwriter300005));
	(*result).Sup.Sup.m_type = (&NTI300005);
	if ((*result).Sstack) nimGCunrefNoCycle((*result).Sstack);
	(*result).Sstack = (tsymseq225818*) newSeqRC1((&NTI225818), 0);
	if ((*result).Tstack) nimGCunrefNoCycle((*result).Tstack);
	(*result).Tstack = (ttypeseq225848*) newSeqRC1((&NTI225848), 0);
	initiitable_235282((&(*result).Index.Tab));
	initiitable_235282((&(*result).Imports.Tab));
	LOC1 = 0;
	LOC1 = (*result).Index.R; (*result).Index.R = copyStringRC1(((NimStringDesc*) &TMP4097));
	if (LOC1) nimGCunrefNoCycle(LOC1);
	LOC2 = 0;
	LOC2 = (*result).Imports.R; (*result).Imports.R = copyStringRC1(((NimStringDesc*) &TMP4097));
	if (LOC2) nimGCunrefNoCycle(LOC2);
	(*result).Crc = crc;
	asgnRefNoCycle((void**) (&(*result).Module), module);
	asgnRefNoCycle((void**) (&(*result).Defines), getdefines_300070());
	(*result).Options = goptions_169116;
	if ((*result).Files) nimGCunrefNoCycle((*result).Files);
	(*result).Files = (TY120008*) newSeqRC1((&NTI120008), 0);
	LOC3 = 0;
	LOC3 = (*result).Incldeps; (*result).Incldeps = copyStringRC1(((NimStringDesc*) &TMP4097));
	if (LOC3) nimGCunrefNoCycle(LOC3);
	LOC4 = 0;
	LOC4 = (*result).Moddeps; (*result).Moddeps = copyStringRC1(((NimStringDesc*) &TMP4097));
	if (LOC4) nimGCunrefNoCycle(LOC4);
	asgnRefNoCycle((void**) (&(*result).Interf), rawNewString(2000));
	LOC5 = 0;
	LOC5 = (*result).Compilerprocs; (*result).Compilerprocs = copyStringRC1(((NimStringDesc*) &TMP4097));
	if (LOC5) nimGCunrefNoCycle(LOC5);
	LOC6 = 0;
	LOC6 = (*result).Converters; (*result).Converters = copyStringRC1(((NimStringDesc*) &TMP4097));
	if (LOC6) nimGCunrefNoCycle(LOC6);
	LOC7 = 0;
	LOC7 = (*result).Methods; (*result).Methods = copyStringRC1(((NimStringDesc*) &TMP4097));
	if (LOC7) nimGCunrefNoCycle(LOC7);
	LOC8 = 0;
	LOC8 = (*result).Init; (*result).Init = copyStringRC1(((NimStringDesc*) &TMP4097));
	if (LOC8) nimGCunrefNoCycle(LOC8);
	asgnRefNoCycle((void**) (&(*result).Origfile), tofilename_197025((*module).Info.Fileindex));
	asgnRefNoCycle((void**) (&(*result).Data), rawNewString(12000));
	return result;
}

N_NIMCALL(void, pushsym_300328)(trodwriter300005* w, tsym225846* s) {
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = iitableget_235289((*w).Index.Tab, (*s).Sup.Id);
		if (!(LOC3 == (IL64(-9223372036854775807) - IL64(1)))) goto LA4;
		(*w).Sstack = (tsymseq225818*) incrSeq(&((*w).Sstack)->Sup, sizeof(tsym225846*));
		asgnRefNoCycle((void**) (&(*w).Sstack->data[(*w).Sstack->Sup.len-1]), s);
	}
	LA4: ;
}

N_NIMCALL(void, addtoindex_301209)(tindex276028* w, NI key, NI val) {
	{
		if (!((NI64)(key - (*w).Lastidxkey) == 1)) goto LA3;
		encodevint_234304((NI64)(val - (*w).Lastidxval), (&(*w).R));
	}
	goto LA1;
	LA3: ;
	{
		encodevint_234304((NI64)(key - (*w).Lastidxkey), (&(*w).R));
		(*w).R = addChar((*w).R, 32);
		encodevint_234304((NI64)(val - (*w).Lastidxval), (&(*w).R));
	}
	LA1: ;
	(*w).R = resizeString((*w).R, 1);
appendString((*w).R, ((NimStringDesc*) &TMP4101));
	(*w).Lastidxkey = key;
	(*w).Lastidxval = val;
	iitableput_235296((&(*w).Tab), key, val);
}

N_NIMCALL(void, pushtype_300300)(trodwriter300005* w, ttype225852* t) {
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = iitableget_235289((*w).Index.Tab, (*t).Sup.Id);
		if (!(LOC3 == (IL64(-9223372036854775807) - IL64(1)))) goto LA4;
		(*w).Tstack = (ttypeseq225848*) incrSeq(&((*w).Tstack)->Sup, sizeof(ttype225852*));
		asgnRefNoCycle((void**) (&(*w).Tstack->data[(*w).Tstack->Sup.len-1]), t);
	}
	LA4: ;
}

N_NIMCALL(NI, fileidx_300109)(trodwriter300005* w, NimStringDesc* filename) {
	NI result;
	NimStringDesc* LOC8;
	result = 0;
	{
		NI i_300126;
		NI HEX3Atmp_300155;
		NI res_300158;
		i_300126 = 0;
		HEX3Atmp_300155 = 0;
		HEX3Atmp_300155 = ((*w).Files->Sup.len-1);
		res_300158 = 0;
		{
			while (1) {
				if (!(res_300158 <= HEX3Atmp_300155)) goto LA3;
				i_300126 = res_300158;
				{
					if (!eqStrings((*w).Files->data[i_300126], filename)) goto LA6;
					result = i_300126;
					goto BeforeRet;
				}
				LA6: ;
				res_300158 += 1;
			} LA3: ;
		}
	}
	result = (*w).Files->Sup.len;
	(*w).Files = (TY120008*) setLengthSeq(&((*w).Files)->Sup, sizeof(NimStringDesc*), (NI64)(result + 1));
	LOC8 = 0;
	LOC8 = (*w).Files->data[result]; (*w).Files->data[result] = copyStringRC1(filename);
	if (LOC8) nimGCunrefNoCycle(LOC8);
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, encodeloc_300618)(trodwriter300005* w, tloc225830* loc, NimStringDesc** result) {
	NI oldlen;
	oldlen = (*result)->Sup.len;
	(*result) = addChar((*result), 60);
	{
		if (!!(((*loc).K == ((NU8) 0)))) goto LA3;
		encodevint_234304(((NI) ((*loc).K)), result);
	}
	LA3: ;
	{
		if (!!(((*loc).S == ((NU8) 0)))) goto LA7;
		(*result) = addChar((*result), 42);
		encodevint_234304(((NI) ((*loc).S)), result);
	}
	LA7: ;
	{
		if (!!(((*loc).Flags == 0))) goto LA11;
		(*result) = addChar((*result), 36);
		encodevint_234304(((NI) (((NI32) ((*loc).Flags)))), result);
	}
	LA11: ;
	{
		if (!!(((*loc).T == NIM_NIL))) goto LA15;
		(*result) = addChar((*result), 94);
		encodevint_234304(((NI) (((NI32) ((*(*loc).T).Sup.Id)))), result);
		pushtype_300300(w, (*loc).T);
	}
	LA15: ;
	{
		NimStringDesc* LOC21;
		if (!!(((*loc).R == NIM_NIL))) goto LA19;
		(*result) = addChar((*result), 33);
		LOC21 = 0;
		LOC21 = ropetostr_177101((*loc).R);
		encodestr_234042(LOC21, result);
	}
	LA19: ;
	{
		if (!((NI64)(oldlen + 1) == (*result)->Sup.len)) goto LA24;
		(*result) = setLengthStr((*result), oldlen);
	}
	goto LA22;
	LA24: ;
	{
		(*result) = addChar((*result), 62);
	}
	LA22: ;
}

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

N_NIMCALL(void, encodenode_300356)(trodwriter300005* w, tlineinfo195539 finfo, tnode225816* n, NimStringDesc** result) {
	NU16 f;
	{
		if (!(n == NIM_NIL)) goto LA3;
		(*result) = resizeString((*result), 2);
appendString((*result), ((NimStringDesc*) &TMP4103));
		goto BeforeRet;
	}
	LA3: ;
	(*result) = addChar((*result), 40);
	encodevint_234304(((NI) ((*n).Kind)), result);
	{
		NimStringDesc* LOC9;
		NI LOC10;
		if (!!((finfo.Fileindex == (*n).Info.Fileindex))) goto LA7;
		(*result) = addChar((*result), 63);
		encodevint_234304(((NI) ((*n).Info.Col)), result);
		(*result) = addChar((*result), 44);
		encodevint_234304(((NI) ((*n).Info.Line)), result);
		(*result) = addChar((*result), 44);
		LOC9 = 0;
		LOC9 = tofilename_197025((*n).Info.Fileindex);
		LOC10 = 0;
		LOC10 = fileidx_300109(w, LOC9);
		encodevint_234304(LOC10, result);
	}
	goto LA5;
	LA7: ;
	{
		if (!!((finfo.Line == (*n).Info.Line))) goto LA12;
		(*result) = addChar((*result), 63);
		encodevint_234304(((NI) ((*n).Info.Col)), result);
		(*result) = addChar((*result), 44);
		encodevint_234304(((NI) ((*n).Info.Line)), result);
	}
	goto LA5;
	LA12: ;
	{
		if (!!((finfo.Col == (*n).Info.Col))) goto LA15;
		(*result) = addChar((*result), 63);
		encodevint_234304(((NI) ((*n).Info.Col)), result);
	}
	goto LA5;
	LA15: ;
	LA5: ;
	f = ((*n).Flags & 4878);
	{
		if (!!((f == 0))) goto LA19;
		(*result) = addChar((*result), 36);
		encodevint_234304(((NI) (((NI32) (f)))), result);
	}
	LA19: ;
	{
		if (!!(((*n).Typ == NIM_NIL))) goto LA23;
		(*result) = addChar((*result), 94);
		encodevint_234304((*(*n).Typ).Sup.Id, result);
		pushtype_300300(w, (*n).Typ);
	}
	LA23: ;
	switch ((*n).Kind) {
	case ((NU8) 5) ... ((NU8) 10):
	{
		{
			if (!!(((*n).kindU.S1.Intval == IL64(0)))) goto LA28;
			(*result) = addChar((*result), 33);
			encodevbiggestint_234264((*n).kindU.S1.Intval, result);
		}
		LA28: ;
	}
	break;
	case ((NU8) 16) ... ((NU8) 18):
	{
		{
			NimStringDesc* LOC35;
			if (!!(((*n).kindU.S2.Floatval == 0.0))) goto LA33;
			(*result) = addChar((*result), 33);
			LOC35 = 0;
			LOC35 = nimFloatToStr((*n).kindU.S2.Floatval);
			encodestr_234042(LOC35, result);
		}
		LA33: ;
	}
	break;
	case ((NU8) 20) ... ((NU8) 22):
	{
		{
			if (!!((((*n).kindU.S3.Strval) && ((*n).kindU.S3.Strval)->Sup.len == 0))) goto LA39;
			(*result) = addChar((*result), 33);
			encodestr_234042((*n).kindU.S3.Strval, result);
		}
		LA39: ;
	}
	break;
	case ((NU8) 2):
	{
		(*result) = addChar((*result), 33);
		encodestr_234042((*(*n).kindU.S5.Ident).S, result);
	}
	break;
	case ((NU8) 3):
	{
		(*result) = addChar((*result), 33);
		encodevint_234304((*(*n).kindU.S4.Sym).Sup.Id, result);
		pushsym_300328(w, (*n).kindU.S4.Sym);
	}
	break;
	default:
	{
		{
			NI i_300581;
			NI HEX3Atmp_300598;
			NI LOC45;
			NI res_300601;
			i_300581 = 0;
			HEX3Atmp_300598 = 0;
			LOC45 = 0;
			LOC45 = sonslen_226249(n);
			HEX3Atmp_300598 = (NI64)(LOC45 - 1);
			res_300601 = 0;
			{
				while (1) {
					if (!(res_300601 <= HEX3Atmp_300598)) goto LA47;
					i_300581 = res_300601;
					encodenode_300356(w, (*n).Info, (*n).kindU.S6.Sons->data[i_300581], result);
					res_300601 += 1;
				} LA47: ;
			}
		}
	}
	break;
	}
	(*result) = addChar((*result), 41);
	BeforeRet: ;
}

N_NIMCALL(void, encodelib_300899)(trodwriter300005* w, tlib225834* lib, tlineinfo195539 info, NimStringDesc** result) {
	NimStringDesc* LOC1;
	(*result) = addChar((*result), 124);
	encodevint_234304(((NI) ((*lib).Kind)), result);
	(*result) = addChar((*result), 124);
	LOC1 = 0;
	LOC1 = ropetostr_177101((*lib).Name);
	encodestr_234042(LOC1, result);
	(*result) = addChar((*result), 124);
	encodenode_300356(w, info, (*lib).Path, result);
}

N_NIMCALL(void, encodesym_300920)(trodwriter300005* w, tsym225846* s, NimStringDesc** result) {
	NimStringDesc* LOC17;
	NI LOC18;
	{
		if (!(s == NIM_NIL)) goto LA3;
		(*result) = resizeString((*result), 2);
appendString((*result), ((NimStringDesc*) &TMP4102));
		goto BeforeRet;
	}
	LA3: ;
	encodevint_234304(((NI) ((*s).Kind)), result);
	(*result) = addChar((*result), 43);
	encodevint_234304((*s).Sup.Id, result);
	(*result) = addChar((*result), 38);
	encodestr_234042((*(*s).Name).S, result);
	{
		if (!!(((*s).Typ == NIM_NIL))) goto LA7;
		(*result) = addChar((*result), 94);
		encodevint_234304((*(*s).Typ).Sup.Id, result);
		pushtype_300300(w, (*s).Typ);
	}
	LA7: ;
	(*result) = addChar((*result), 63);
	{
		if (!!(((*s).Info.Col == ((NI16) -1)))) goto LA11;
		encodevint_234304(((NI) ((*s).Info.Col)), result);
	}
	LA11: ;
	(*result) = addChar((*result), 44);
	{
		if (!!(((*s).Info.Line == ((NI16) -1)))) goto LA15;
		encodevint_234304(((NI) ((*s).Info.Line)), result);
	}
	LA15: ;
	(*result) = addChar((*result), 44);
	LOC17 = 0;
	LOC17 = tofilename_197025((*s).Info.Fileindex);
	LOC18 = 0;
	LOC18 = fileidx_300109(w, LOC17);
	encodevint_234304(LOC18, result);
	{
		if (!!(((*s).Owner == NIM_NIL))) goto LA21;
		(*result) = addChar((*result), 42);
		encodevint_234304((*(*s).Owner).Sup.Id, result);
		pushsym_300328(w, (*s).Owner);
	}
	LA21: ;
	{
		if (!!(((*s).Flags == 0))) goto LA25;
		(*result) = addChar((*result), 36);
		encodevint_234304(((NI) (((NI32) ((*s).Flags)))), result);
	}
	LA25: ;
	{
		if (!!(((*s).Magic == ((NU16) 0)))) goto LA29;
		(*result) = addChar((*result), 64);
		encodevint_234304(((NI) ((*s).Magic)), result);
	}
	LA29: ;
	{
		if (!!(((*s).Options == (*w).Options))) goto LA33;
		(*result) = addChar((*result), 33);
		encodevint_234304(((NI) (((NI32) ((*s).Options)))), result);
	}
	LA33: ;
	{
		if (!!(((*s).Position == 0))) goto LA37;
		(*result) = addChar((*result), 37);
		encodevint_234304((*s).Position, result);
	}
	LA37: ;
	{
		if (!!(((*s).Offset == -1))) goto LA41;
		(*result) = addChar((*result), 96);
		encodevint_234304((*s).Offset, result);
	}
	LA41: ;
	encodeloc_300618(w, (&(*s).Loc), result);
	{
		if (!!(((*s).Annex == NIM_NIL))) goto LA45;
		encodelib_300899(w, (*s).Annex, (*s).Info, result);
	}
	LA45: ;
	{
		tlineinfo195539 LOC51;
		if (!!(((*s).Constraint == NIM_NIL))) goto LA49;
		(*result) = addChar((*result), 35);
		LOC51 = unknownlineinfo_196405();
		encodenode_300356(w, LOC51, (*s).Constraint, result);
	}
	LA49: ;
	{
		if (!!(((*s).Ast == NIM_NIL))) goto LA54;
		encodenode_300356(w, (*s).Info, (*s).Ast, result);
	}
	LA54: ;
	BeforeRet: ;
}

static N_INLINE(NIM_BOOL, isroutine_232781)(tsym225846* s) {
	NIM_BOOL result;
	result = 0;
	result = ((520192 &(1<<(((*s).Kind)&31)))!=0);
	return result;
}

static N_INLINE(NIM_BOOL, haspattern_232804)(tsym225846* s) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = isroutine_232781(s);
	if (!(LOC1)) goto LA2;
	LOC1 = !(((*(*(*s).Ast).kindU.S6.Sons->data[1]).Kind == ((NU8) 1)));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NI, symstack_301401)(trodwriter300005* w) {
	NI result;
	NI i;
	result = 0;
	i = 0;
	{
		while (1) {
			tsym225846* s;
			if (!(i < (*w).Sstack->Sup.len)) goto LA2;
			s = (*w).Sstack->data[i];
			{
				if (!(((*s).Flags &(1<<((((NU8) 4))&31)))!=0)) goto LA5;
				asgnRefNoCycle((void**) (&(*w).Sstack->data[result]), s);
				result += 1;
			}
			goto LA3;
			LA5: ;
			{
				NI LOC8;
				tsym225846* m;
				LOC8 = 0;
				LOC8 = iitableget_235289((*w).Index.Tab, (*s).Sup.Id);
				if (!(LOC8 == (IL64(-9223372036854775807) - IL64(1)))) goto LA9;
				m = getmodule_235243(s);
				{
					NimStringDesc* LOC15;
					if (!(m == NIM_NIL)) goto LA13;
					LOC15 = 0;
					LOC15 = rawNewString((*(*s).Name).S->Sup.len + 22);
appendString(LOC15, ((NimStringDesc*) &TMP4100));
appendString(LOC15, (*(*s).Name).S);
					internalerror_198006(LOC15);
				}
				LA13: ;
				{
					NIM_BOOL LOC18;
					NI l;
					LOC18 = 0;
					LOC18 = ((*m).Sup.Id == (*(*w).Module).Sup.Id);
					if (LOC18) goto LA19;
					LOC18 = (((*s).Flags &(1<<((((NU8) 2))&31)))!=0);
					LA19: ;
					if (!LOC18) goto LA20;
					l = (*w).Data->Sup.len;
					addtoindex_301209((&(*w).Index), (*s).Sup.Id, l);
					encodesym_300920(w, s, (&(*w).Data));
					(*w).Data = resizeString((*w).Data, 1);
appendString((*w).Data, ((NimStringDesc*) &TMP4101));
					{
						NIM_BOOL LOC24;
						LOC24 = 0;
						LOC24 = ((6 & (*s).Flags) == 2);
						if (!(LOC24)) goto LA25;
						LOC24 = ((43513728 &(1<<(((*s).Kind)&31)))!=0);
						LA25: ;
						if (!LOC24) goto LA26;
						encodestr_234042((*(*s).Name).S, (&(*w).Interf));
						(*w).Interf = addChar((*w).Interf, 32);
						encodevint_234304((*s).Sup.Id, (&(*w).Interf));
						(*w).Interf = resizeString((*w).Interf, 1);
appendString((*w).Interf, ((NimStringDesc*) &TMP4101));
					}
					LA26: ;
					{
						if (!(((*s).Flags &(1<<((((NU8) 16))&31)))!=0)) goto LA30;
						encodestr_234042((*(*s).Name).S, (&(*w).Compilerprocs));
						(*w).Compilerprocs = addChar((*w).Compilerprocs, 32);
						encodevint_234304((*s).Sup.Id, (&(*w).Compilerprocs));
						(*w).Compilerprocs = resizeString((*w).Compilerprocs, 1);
appendString((*w).Compilerprocs, ((NimStringDesc*) &TMP4101));
					}
					LA30: ;
					{
						NIM_BOOL LOC34;
						LOC34 = 0;
						LOC34 = ((*s).Kind == ((NU8) 16));
						if (LOC34) goto LA35;
						LOC34 = haspattern_232804(s);
						LA35: ;
						if (!LOC34) goto LA36;
						{
							if (!!(((*w).Converters->Sup.len == 0))) goto LA40;
							(*w).Converters = addChar((*w).Converters, 32);
						}
						LA40: ;
						encodevint_234304((*s).Sup.Id, (&(*w).Converters));
					}
					LA36: ;
					{
						NIM_BOOL LOC44;
						LOC44 = 0;
						LOC44 = ((*s).Kind == ((NU8) 13));
						if (!(LOC44)) goto LA45;
						LOC44 = !((((*s).Flags &(1<<((((NU8) 25))&31)))!=0));
						LA45: ;
						if (!LOC44) goto LA46;
						{
							if (!!(((*w).Methods->Sup.len == 0))) goto LA50;
							(*w).Methods = addChar((*w).Methods, 32);
						}
						LA50: ;
						encodevint_234304((*s).Sup.Id, (&(*w).Methods));
					}
					LA46: ;
				}
				goto LA16;
				LA20: ;
				{
					NI LOC53;
					LOC53 = 0;
					LOC53 = iitableget_235289((*w).Imports.Tab, (*s).Sup.Id);
					if (!(LOC53 == (IL64(-9223372036854775807) - IL64(1)))) goto LA54;
					addtoindex_301209((&(*w).Imports), (*s).Sup.Id, (*m).Sup.Id);
				}
				goto LA16;
				LA54: ;
				LA16: ;
			}
			goto LA3;
			LA9: ;
			LA3: ;
			i += 1;
		} LA2: ;
	}
	(*w).Sstack = (tsymseq225818*) setLengthSeq(&((*w).Sstack)->Sup, sizeof(tsym225846*), result);
	return result;
}

static N_INLINE(NI, sonslen_226255)(ttype225852* n) {
	NI result;
	result = 0;
	{
		if (!(*n).Sons == 0) goto LA3;
		result = 0;
	}
	goto LA1;
	LA3: ;
	{
		result = (*n).Sons->Sup.len;
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, encodetype_300720)(trodwriter300005* w, ttype225852* t, NimStringDesc** result) {
	{
		if (!(t == NIM_NIL)) goto LA3;
		(*result) = resizeString((*result), 2);
appendString((*result), ((NimStringDesc*) &TMP4104));
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*t).Kind == ((NU8) 30))) goto LA7;
		internalerror_198006(((NimStringDesc*) &TMP4105));
	}
	LA7: ;
	(*result) = addChar((*result), 91);
	encodevint_234304(((NI) ((*t).Kind)), result);
	(*result) = addChar((*result), 43);
	encodevint_234304((*t).Sup.Id, result);
	{
		tlineinfo195539 LOC13;
		if (!!(((*t).N == NIM_NIL))) goto LA11;
		LOC13 = unknownlineinfo_196405();
		encodenode_300356(w, LOC13, (*t).N, result);
	}
	LA11: ;
	{
		if (!!(((*t).Flags == 0))) goto LA16;
		(*result) = addChar((*result), 36);
		encodevint_234304(((NI) (((NI32) ((*t).Flags)))), result);
	}
	LA16: ;
	{
		if (!!(((*t).Callconv == ((NU8) 0)))) goto LA20;
		(*result) = addChar((*result), 63);
		encodevint_234304(((NI) ((*t).Callconv)), result);
	}
	LA20: ;
	{
		if (!!(((*t).Owner == NIM_NIL))) goto LA24;
		(*result) = addChar((*result), 42);
		encodevint_234304((*(*t).Owner).Sup.Id, result);
		pushsym_300328(w, (*t).Owner);
	}
	LA24: ;
	{
		if (!!(((*t).Sym == NIM_NIL))) goto LA28;
		(*result) = addChar((*result), 38);
		encodevint_234304((*(*t).Sym).Sup.Id, result);
		pushsym_300328(w, (*t).Sym);
	}
	LA28: ;
	{
		if (!!(((*t).Size == IL64(-1)))) goto LA32;
		(*result) = addChar((*result), 47);
		encodevbiggestint_234264((*t).Size, result);
	}
	LA32: ;
	{
		if (!!(((*t).Align == ((NI16) 2)))) goto LA36;
		(*result) = addChar((*result), 61);
		encodevint_234304(((NI) ((*t).Align)), result);
	}
	LA36: ;
	encodeloc_300618(w, (&(*t).Loc), result);
	{
		NI i_300859;
		NI HEX3Atmp_300879;
		NI LOC39;
		NI res_300882;
		i_300859 = 0;
		HEX3Atmp_300879 = 0;
		LOC39 = 0;
		LOC39 = sonslen_226255(t);
		HEX3Atmp_300879 = (NI64)(LOC39 - 1);
		res_300882 = 0;
		{
			while (1) {
				if (!(res_300882 <= HEX3Atmp_300879)) goto LA41;
				i_300859 = res_300882;
				{
					if (!((*t).Sons->data[i_300859] == NIM_NIL)) goto LA44;
					(*result) = resizeString((*result), 3);
appendString((*result), ((NimStringDesc*) &TMP4106));
				}
				goto LA42;
				LA44: ;
				{
					(*result) = addChar((*result), 94);
					encodevint_234304((*(*t).Sons->data[i_300859]).Sup.Id, result);
					pushtype_300300(w, (*t).Sons->data[i_300859]);
				}
				LA42: ;
				res_300882 += 1;
			} LA41: ;
		}
	}
	BeforeRet: ;
}

N_NIMCALL(NI, typestack_301842)(trodwriter300005* w) {
	NI result;
	NI i;
	result = 0;
	i = 0;
	{
		while (1) {
			ttype225852* t;
			if (!(i < (*w).Tstack->Sup.len)) goto LA2;
			t = (*w).Tstack->data[i];
			{
				if (!((*t).Kind == ((NU8) 30))) goto LA5;
				asgnRefNoCycle((void**) (&(*w).Tstack->data[result]), t);
				result += 1;
			}
			goto LA3;
			LA5: ;
			{
				NI LOC8;
				NI l;
				LOC8 = 0;
				LOC8 = iitableget_235289((*w).Index.Tab, (*t).Sup.Id);
				if (!(LOC8 == (IL64(-9223372036854775807) - IL64(1)))) goto LA9;
				l = (*w).Data->Sup.len;
				addtoindex_301209((&(*w).Index), (*t).Sup.Id, l);
				encodetype_300720(w, t, (&(*w).Data));
				(*w).Data = resizeString((*w).Data, 1);
appendString((*w).Data, ((NimStringDesc*) &TMP4101));
			}
			goto LA3;
			LA9: ;
			LA3: ;
			i += 1;
		} LA2: ;
	}
	(*w).Tstack = (ttypeseq225848*) setLengthSeq(&((*w).Tstack)->Sup, sizeof(ttype225852*), result);
	return result;
}

N_NIMCALL(void, processstacks_301925)(trodwriter300005* w, NIM_BOOL finalpass) {
	NI olds;
	NI oldt;
	olds = 0;
	oldt = 0;
	{
		while (1) {
			NI slen;
			NI tlen;
			slen = symstack_301401(w);
			tlen = typestack_301842(w);
			{
				NIM_BOOL LOC5;
				LOC5 = 0;
				LOC5 = (slen == olds);
				if (!(LOC5)) goto LA6;
				LOC5 = (tlen == oldt);
				LA6: ;
				if (!LOC5) goto LA7;
				goto LA1;
			}
			LA7: ;
			olds = slen;
			oldt = tlen;
		}
	} LA1: ;
	{
		NIM_BOOL LOC11;
		NIM_BOOL LOC13;
		LOC11 = 0;
		LOC11 = finalpass;
		if (!(LOC11)) goto LA12;
		LOC13 = 0;
		LOC13 = !((olds == 0));
		if (LOC13) goto LA14;
		LOC13 = !((oldt == 0));
		LA14: ;
		LOC11 = LOC13;
		LA12: ;
		if (!LOC11) goto LA15;
		internalerror_198006(((NimStringDesc*) &TMP4107));
	}
	LA15: ;
}

N_NIMCALL(void, rawaddinterfacesym_301946)(trodwriter300005* w, tsym225846* s) {
	pushsym_300328(w, s);
	processstacks_301925(w, NIM_FALSE);
}

N_NIMCALL(tpasscontext286005*, myopen_302687)(tsym225846* module) {
	tpasscontext286005* result;
	trodwriter300005* w;
	NI32 LOC5;
	result = 0;
	{
		if (!((*module).Sup.Id < 0)) goto LA3;
		internalerror_198006(((NimStringDesc*) &TMP4094));
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getcrc_278747(((NI32) ((*module).Position)));
	w = newrodwriter_300029(LOC5, module);
	rawaddinterfacesym_301946(w, module);
	result = &w->Sup;
	return result;
}

N_NIMCALL(void, addinterfacesym_300050)(trodwriter300005* w, tsym225846* s) {
	{
		if (!(w == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = ((43513728 &(1<<(((*s).Kind)&31)))!=0);
		if (!(LOC7)) goto LA8;
		LOC7 = !(((65538 & (*s).Flags) == 0));
		LA8: ;
		if (!LOC7) goto LA9;
		rawaddinterfacesym_301946(w, s);
	}
	LA9: ;
	BeforeRet: ;
}

N_NIMCALL(void, addmoddep_300036)(trodwriter300005* w, NimStringDesc* dep) {
	NI LOC5;
	{
		if (!!(((*w).Moddeps->Sup.len == 0))) goto LA3;
		(*w).Moddeps = addChar((*w).Moddeps, 32);
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = fileidx_300109(w, dep);
	encodevint_234304(LOC5, (&(*w).Moddeps));
}

N_NIMCALL(void, addstmt_300057)(trodwriter300005* w, tnode225816* n) {
	tlineinfo195539 LOC1;
	encodevint_234304((*w).Data->Sup.len, (&(*w).Init));
	(*w).Init = resizeString((*w).Init, 1);
appendString((*w).Init, ((NimStringDesc*) &TMP4101));
	LOC1 = unknownlineinfo_196405();
	encodenode_300356(w, LOC1, n, (&(*w).Data));
	(*w).Data = resizeString((*w).Data, 1);
appendString((*w).Data, ((NimStringDesc*) &TMP4101));
	processstacks_301925(w, NIM_FALSE);
}

N_NIMCALL(void, addincldep_300043)(trodwriter300005* w, NimStringDesc* dep) {
	NimStringDesc* resolved;
	NimStringDesc* LOC1;
	NI LOC2;
	NI32 LOC3;
	LOC1 = 0;
	LOC1 = tofullpath_197037((*(*w).Module).Info.Fileindex);
	resolved = findmodule_170366(dep, LOC1);
	LOC2 = 0;
	LOC2 = fileidx_300109(w, dep);
	encodevint_234304(LOC2, (&(*w).Incldeps));
	(*w).Incldeps = resizeString((*w).Incldeps, 1);
appendString((*w).Incldeps, ((NimStringDesc*) &TMP4099));
	LOC3 = 0;
	LOC3 = crcfromfile_176046(resolved);
	encodevint_234304(((NI) (LOC3)), (&(*w).Incldeps));
	(*w).Incldeps = resizeString((*w).Incldeps, 1);
appendString((*w).Incldeps, ((NimStringDesc*) &TMP4101));
}

N_NIMCALL(tnode225816*, process_302204)(tpasscontext286005* c, tnode225816* n) {
	tnode225816* result;
	trodwriter300005* w;
	result = 0;
	result = n;
	{
		if (!(c == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	w = ((trodwriter300005*) (c));
	switch ((*n).Kind) {
	case ((NU8) 115):
	{
		{
			NI i_302239;
			NI HEX3Atmp_302599;
			NI LOC7;
			NI res_302602;
			i_302239 = 0;
			HEX3Atmp_302599 = 0;
			LOC7 = 0;
			LOC7 = sonslen_226249(n);
			HEX3Atmp_302599 = (NI64)(LOC7 - 1);
			res_302602 = 0;
			{
				while (1) {
					tnode225816* LOC10;
					if (!(res_302602 <= HEX3Atmp_302599)) goto LA9;
					i_302239 = res_302602;
					LOC10 = 0;
					LOC10 = process_302204(c, (*n).kindU.S6.Sons->data[i_302239]);
					res_302602 += 1;
				} LA9: ;
			}
		}
	}
	break;
	case ((NU8) 79):
	case ((NU8) 80):
	case ((NU8) 84):
	case ((NU8) 81):
	case ((NU8) 83):
	case ((NU8) 82):
	{
		tsym225846* s;
		s = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		{
			if (!(s == NIM_NIL)) goto LA14;
			internalerror_197987((*n).Info, ((NimStringDesc*) &TMP4108));
		}
		LA14: ;
		{
			if (!((*n).kindU.S6.Sons->data[6] == NIM_NIL)) goto LA18;
			internalerror_197987((*n).Info, ((NimStringDesc*) &TMP4109));
		}
		LA18: ;
		{
			NIM_BOOL LOC22;
			NIM_BOOL LOC23;
			LOC22 = 0;
			LOC23 = 0;
			LOC23 = !(((*(*n).kindU.S6.Sons->data[6]).Kind == ((NU8) 1)));
			if (LOC23) goto LA24;
			LOC23 = !(((*s).Magic == ((NU16) 0)));
			LA24: ;
			LOC22 = LOC23;
			if (LOC22) goto LA25;
			LOC22 = !((((*s).Flags &(1<<((((NU8) 4))&31)))!=0));
			LA25: ;
			if (!LOC22) goto LA26;
			addinterfacesym_300050(w, s);
		}
		LA26: ;
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	case ((NU8) 101):
	{
		{
			NI i_302388;
			NI HEX3Atmp_302606;
			NI LOC30;
			NI res_302609;
			i_302388 = 0;
			HEX3Atmp_302606 = 0;
			LOC30 = 0;
			LOC30 = sonslen_226249(n);
			HEX3Atmp_302606 = (NI64)(LOC30 - 1);
			res_302609 = 0;
			{
				while (1) {
					if (!(res_302609 <= HEX3Atmp_302606)) goto LA32;
					i_302388 = res_302609;
					{
						tnode225816* a;
						a = (*n).kindU.S6.Sons->data[i_302388];
						{
							if (!((*a).Kind == ((NU8) 125))) goto LA36;
							goto LA33;
						}
						LA36: ;
						addinterfacesym_300050(w, (*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym);
					} LA33: ;
					res_302609 += 1;
				} LA32: ;
			}
		}
	}
	break;
	case ((NU8) 98):
	{
		{
			NI i_302453;
			NI HEX3Atmp_302613;
			NI LOC40;
			NI res_302616;
			i_302453 = 0;
			HEX3Atmp_302613 = 0;
			LOC40 = 0;
			LOC40 = sonslen_226249(n);
			HEX3Atmp_302613 = (NI64)(LOC40 - 1);
			res_302616 = 0;
			{
				while (1) {
					if (!(res_302616 <= HEX3Atmp_302613)) goto LA42;
					i_302453 = res_302616;
					{
						tnode225816* a;
						tsym225846* s;
						a = (*n).kindU.S6.Sons->data[i_302453];
						{
							if (!((*a).Kind == ((NU8) 125))) goto LA46;
							goto LA43;
						}
						LA46: ;
						{
							if (!!(((*(*a).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA50;
							internalerror_197987((*a).Info, ((NimStringDesc*) &TMP4108));
						}
						LA50: ;
						s = (*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym;
						addinterfacesym_300050(w, s);
					} LA43: ;
					res_302616 += 1;
				} LA42: ;
			}
		}
	}
	break;
	case ((NU8) 116):
	{
		{
			NI i_302542;
			NI HEX3Atmp_302619;
			NI LOC54;
			NI res_302622;
			i_302542 = 0;
			HEX3Atmp_302619 = 0;
			LOC54 = 0;
			LOC54 = sonslen_226249(n);
			HEX3Atmp_302619 = (NI64)(LOC54 - 1);
			res_302622 = 0;
			{
				while (1) {
					NimStringDesc* LOC57;
					if (!(res_302622 <= HEX3Atmp_302619)) goto LA56;
					i_302542 = res_302622;
					LOC57 = 0;
					LOC57 = getmodulename_298018((*n).kindU.S6.Sons->data[i_302542]);
					addmoddep_300036(w, LOC57);
					res_302622 += 1;
				} LA56: ;
			}
		}
		addstmt_300057(w, n);
	}
	break;
	case ((NU8) 120):
	{
		NimStringDesc* LOC59;
		LOC59 = 0;
		LOC59 = getmodulename_298018((*n).kindU.S6.Sons->data[0]);
		addmoddep_300036(w, LOC59);
		addstmt_300057(w, n);
	}
	break;
	case ((NU8) 121):
	{
		{
			NI i_302583;
			NI HEX3Atmp_302625;
			NI LOC62;
			NI res_302628;
			i_302583 = 0;
			HEX3Atmp_302625 = 0;
			LOC62 = 0;
			LOC62 = sonslen_226249(n);
			HEX3Atmp_302625 = (NI64)(LOC62 - 1);
			res_302628 = 0;
			{
				while (1) {
					NimStringDesc* LOC65;
					if (!(res_302628 <= HEX3Atmp_302625)) goto LA64;
					i_302583 = res_302628;
					LOC65 = 0;
					LOC65 = getmodulename_298018((*n).kindU.S6.Sons->data[i_302583]);
					addincldep_300043(w, LOC65);
					res_302628 += 1;
				} LA64: ;
			}
		}
	}
	break;
	case ((NU8) 90):
	{
		addstmt_300057(w, n);
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, writerod_300064)(trodwriter300005* w) {
	FILE* f;
	NimStringDesc* id;
	NimStringDesc* orig;
	NimStringDesc* crc;
	NimStringDesc* options;
	NimStringDesc* goptions;
	NimStringDesc* cmd;
	NimStringDesc* files;
	processstacks_301925(w, NIM_TRUE);
	f = 0;
	{
		NimStringDesc* LOC3;
		NimStringDesc* LOC4;
		NimStringDesc* LOC5;
		NimStringDesc* LOC6;
		NIM_BOOL LOC7;
		LOC3 = 0;
		LOC3 = tofilename_197025(((NI32) ((*(*w).Module).Position)));
		LOC4 = 0;
		LOC4 = withpackagename_169946(LOC3);
		LOC5 = 0;
		LOC5 = noschangeFileExt(LOC4, ((NimStringDesc*) &TMP4110));
		LOC6 = 0;
		LOC6 = completegeneratedfilepath_170001(LOC5, NIM_TRUE);
		LOC7 = 0;
		LOC7 = open_12803(&f, LOC6, ((NU8) 1), -1);
		if (!!(LOC7)) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	write_13065(f, ((NimStringDesc*) &TMP4111));
	write_13065(f, ((NimStringDesc*) &TMP4112));
	write_13065(f, ((NimStringDesc*) &TMP4101));
	id = copyString(((NimStringDesc*) &TMP4113));
	encodevint_234304((*(*w).Module).Sup.Id, (&id));
	write_13065(f, id);
	write_13065(f, ((NimStringDesc*) &TMP4101));
	orig = copyString(((NimStringDesc*) &TMP4114));
	encodestr_234042((*w).Origfile, (&orig));
	write_13065(f, orig);
	write_13065(f, ((NimStringDesc*) &TMP4101));
	crc = copyString(((NimStringDesc*) &TMP4115));
	encodevint_234304(((NI) ((*w).Crc)), (&crc));
	write_13065(f, crc);
	write_13065(f, ((NimStringDesc*) &TMP4101));
	options = copyString(((NimStringDesc*) &TMP4116));
	encodevint_234304(((NI) (((NI32) ((*w).Options)))), (&options));
	write_13065(f, options);
	write_13065(f, ((NimStringDesc*) &TMP4101));
	goptions = copyString(((NimStringDesc*) &TMP4117));
	encodevint_234304(((NI) (((NI32) (gglobaloptions_169118)))), (&goptions));
	write_13065(f, goptions);
	write_13065(f, ((NimStringDesc*) &TMP4101));
	cmd = copyString(((NimStringDesc*) &TMP4118));
	encodevint_234304(((NI) (((NI32) (gcmd_169120)))), (&cmd));
	write_13065(f, cmd);
	write_13065(f, ((NimStringDesc*) &TMP4101));
	write_13065(f, ((NimStringDesc*) &TMP4119));
	write_13065(f, (*w).Defines);
	write_13065(f, ((NimStringDesc*) &TMP4101));
	files = copyString(((NimStringDesc*) &TMP4120));
	{
		NI i_302111;
		NI HEX3Atmp_302184;
		NI res_302187;
		i_302111 = 0;
		HEX3Atmp_302184 = 0;
		HEX3Atmp_302184 = ((*w).Files->Sup.len-1);
		res_302187 = 0;
		{
			while (1) {
				if (!(res_302187 <= HEX3Atmp_302184)) goto LA12;
				i_302111 = res_302187;
				encodestr_234042((*w).Files->data[i_302111], (&files));
				files = resizeString(files, 1);
appendString(files, ((NimStringDesc*) &TMP4101));
				res_302187 += 1;
			} LA12: ;
		}
	}
	write_13065(f, files);
	write_13065(f, ((NimStringDesc*) &TMP4121));
	write_13065(f, ((NimStringDesc*) &TMP4122));
	write_13065(f, (*w).Incldeps);
	write_13065(f, ((NimStringDesc*) &TMP4121));
	write_13065(f, ((NimStringDesc*) &TMP4123));
	write_13065(f, (*w).Moddeps);
	write_13065(f, ((NimStringDesc*) &TMP4101));
	write_13065(f, ((NimStringDesc*) &TMP4124));
	write_13065(f, (*w).Interf);
	write_13065(f, ((NimStringDesc*) &TMP4121));
	write_13065(f, ((NimStringDesc*) &TMP4125));
	write_13065(f, (*w).Compilerprocs);
	write_13065(f, ((NimStringDesc*) &TMP4121));
	write_13065(f, ((NimStringDesc*) &TMP4126));
	write_13065(f, (*w).Index.R);
	write_13065(f, ((NimStringDesc*) &TMP4121));
	write_13065(f, ((NimStringDesc*) &TMP4127));
	write_13065(f, (*w).Imports.R);
	write_13065(f, ((NimStringDesc*) &TMP4121));
	write_13065(f, ((NimStringDesc*) &TMP4128));
	write_13065(f, (*w).Converters);
	write_13065(f, ((NimStringDesc*) &TMP4101));
	write_13065(f, ((NimStringDesc*) &TMP4129));
	write_13065(f, (*w).Methods);
	write_13065(f, ((NimStringDesc*) &TMP4101));
	write_13065(f, ((NimStringDesc*) &TMP4130));
	write_13065(f, (*w).Init);
	write_13065(f, ((NimStringDesc*) &TMP4121));
	write_13065(f, ((NimStringDesc*) &TMP4131));
	write_13065(f, (*w).Data);
	write_13065(f, ((NimStringDesc*) &TMP4121));
	write_13065(f, ((NimStringDesc*) &TMP4132));
	fclose(f);
	BeforeRet: ;
}

N_NIMCALL(tnode225816*, myclose_302699)(tpasscontext286005* c, tnode225816* n) {
	tnode225816* result;
	trodwriter300005* w;
	NimStringDesc* LOC1;
	result = 0;
	result = process_302204(c, n);
	w = ((trodwriter300005*) (c));
	writerod_300064(w);
	LOC1 = 0;
	LOC1 = HEX2F_117499(gprojectpath_169235, gprojectname_169234);
	savemaxids_224477(LOC1);
	return result;
}
NIM_EXTERNC N_NOINLINE(void, HEX00_rodwriteInit)(void) {
}

NIM_EXTERNC N_NOINLINE(void, HEX00_rodwriteDatInit)(void) {
static TNimNode* TMP4095[18];
static TNimNode TMP832[19];
NTI300005.size = sizeof(trodwriter300005);
NTI300005.kind = 17;
NTI300005.base = (&NTI286005);
TMP4095[0] = &TMP832[1];
TMP832[1].kind = 1;
TMP832[1].offset = offsetof(trodwriter300005, Module);
TMP832[1].typ = (&NTI225814);
TMP832[1].name = "module";
TMP4095[1] = &TMP832[2];
TMP832[2].kind = 1;
TMP832[2].offset = offsetof(trodwriter300005, Crc);
TMP832[2].typ = (&NTI176010);
TMP832[2].name = "crc";
TMP4095[2] = &TMP832[3];
TMP832[3].kind = 1;
TMP832[3].offset = offsetof(trodwriter300005, Options);
TMP832[3].typ = (&NTI169016);
TMP832[3].name = "options";
TMP4095[3] = &TMP832[4];
TMP832[4].kind = 1;
TMP832[4].offset = offsetof(trodwriter300005, Defines);
TMP832[4].typ = (&NTI149);
TMP832[4].name = "defines";
TMP4095[4] = &TMP832[5];
TMP832[5].kind = 1;
TMP832[5].offset = offsetof(trodwriter300005, Incldeps);
TMP832[5].typ = (&NTI149);
TMP832[5].name = "inclDeps";
TMP4095[5] = &TMP832[6];
TMP832[6].kind = 1;
TMP832[6].offset = offsetof(trodwriter300005, Moddeps);
TMP832[6].typ = (&NTI149);
TMP832[6].name = "modDeps";
TMP4095[6] = &TMP832[7];
TMP832[7].kind = 1;
TMP832[7].offset = offsetof(trodwriter300005, Interf);
TMP832[7].typ = (&NTI149);
TMP832[7].name = "interf";
TMP4095[7] = &TMP832[8];
TMP832[8].kind = 1;
TMP832[8].offset = offsetof(trodwriter300005, Compilerprocs);
TMP832[8].typ = (&NTI149);
TMP832[8].name = "compilerProcs";
TMP4095[8] = &TMP832[9];
TMP832[9].kind = 1;
TMP832[9].offset = offsetof(trodwriter300005, Index);
TMP832[9].typ = (&NTI276028);
TMP832[9].name = "index";
TMP4095[9] = &TMP832[10];
TMP832[10].kind = 1;
TMP832[10].offset = offsetof(trodwriter300005, Imports);
TMP832[10].typ = (&NTI276028);
TMP832[10].name = "imports";
TMP4095[10] = &TMP832[11];
TMP832[11].kind = 1;
TMP832[11].offset = offsetof(trodwriter300005, Converters);
TMP832[11].typ = (&NTI149);
TMP832[11].name = "converters";
TMP4095[11] = &TMP832[12];
TMP832[12].kind = 1;
TMP832[12].offset = offsetof(trodwriter300005, Methods);
TMP832[12].typ = (&NTI149);
TMP832[12].name = "methods";
TMP4095[12] = &TMP832[13];
TMP832[13].kind = 1;
TMP832[13].offset = offsetof(trodwriter300005, Init);
TMP832[13].typ = (&NTI149);
TMP832[13].name = "init";
TMP4095[13] = &TMP832[14];
TMP832[14].kind = 1;
TMP832[14].offset = offsetof(trodwriter300005, Data);
TMP832[14].typ = (&NTI149);
TMP832[14].name = "data";
TMP4095[14] = &TMP832[15];
TMP832[15].kind = 1;
TMP832[15].offset = offsetof(trodwriter300005, Sstack);
TMP832[15].typ = (&NTI225818);
TMP832[15].name = "sstack";
TMP4095[15] = &TMP832[16];
TMP832[16].kind = 1;
TMP832[16].offset = offsetof(trodwriter300005, Tstack);
TMP832[16].typ = (&NTI225848);
TMP832[16].name = "tstack";
TMP4095[16] = &TMP832[17];
TMP832[17].kind = 1;
TMP832[17].offset = offsetof(trodwriter300005, Files);
TMP832[17].typ = (&NTI120008);
TMP832[17].name = "files";
TMP4095[17] = &TMP832[18];
TMP832[18].kind = 1;
TMP832[18].offset = offsetof(trodwriter300005, Origfile);
TMP832[18].typ = (&NTI149);
TMP832[18].name = "origFile";
TMP832[0].len = 18; TMP832[0].kind = 2; TMP832[0].sons = &TMP4095[0];
NTI300005.node = &TMP832[0];
NTI300007.size = sizeof(trodwriter300005*);
NTI300007.kind = 22;
NTI300007.base = (&NTI300005);
NTI300007.marker = TMP4096;
}

