/* Generated by Nimrod Compiler v0.9.5 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
/* Compiled for: Linux, i386, gcc */
/* Command for C compiler:
   gcc -c  -w -O3 -fno-strict-aliasing  -I/build/nimrod/src/nimrod/lib -o compiler/nimcache/rodwrite.o compiler/nimcache/rodwrite.c */
#define NIM_INTBITS 32
#include "nimbase.h"

#include <string.h>

#include <stdio.h>
typedef struct tpasscontext246003 tpasscontext246003;
typedef struct tsym188833 tsym188833;
typedef struct tidobj167013 tidobj167013;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct ttypeseq188835 ttypeseq188835;
typedef struct ttype188837 ttype188837;
typedef struct TGenericSeq TGenericSeq;
typedef struct tscope188827 tscope188827;
typedef struct TY188933 TY188933;
typedef struct tinstantiation188823 tinstantiation188823;
typedef struct tstrtable188807 tstrtable188807;
typedef struct tsymseq188805 tsymseq188805;
typedef struct tident167019 tident167019;
typedef struct tlineinfo163527 tlineinfo163527;
typedef struct tnode188803 tnode188803;
typedef struct tloc188817 tloc188817;
typedef struct trope145007 trope145007;
typedef struct tlib188821 tlib188821;
typedef struct NimStringDesc NimStringDesc;
typedef struct trodwriter257004 trodwriter257004;
typedef struct tindex236022 tindex236022;
typedef struct tiitable197207 tiitable197207;
typedef struct tiipairseq197205 tiipairseq197205;
typedef struct tiipair197203 tiipair197203;
typedef struct TY110805 TY110805;
typedef struct tcell41090 tcell41090;
typedef struct tcellseq41106 tcellseq41106;
typedef struct tgcheap43016 tgcheap43016;
typedef struct tcellset41102 tcellset41102;
typedef struct tpagedesc41098 tpagedesc41098;
typedef struct tmemregion23410 tmemregion23410;
typedef struct tsmallchunk22638 tsmallchunk22638;
typedef struct tllchunk23404 tllchunk23404;
typedef struct tbigchunk22640 tbigchunk22640;
typedef struct tintset22615 tintset22615;
typedef struct ttrunk22611 ttrunk22611;
typedef struct tavlnode23408 tavlnode23408;
typedef struct tgcstat43014 tgcstat43014;
typedef struct tstringtable121810 tstringtable121810;
typedef struct tkeyvaluepairseq121808 tkeyvaluepairseq121808;
typedef struct tkeyvaluepair121806 tkeyvaluepair121806;
typedef struct tlistentry118017 tlistentry118017;
typedef struct tnodeseq188797 tnodeseq188797;
typedef struct TY188922 TY188922;
typedef struct tbasechunk22636 tbasechunk22636;
typedef struct tfreecell22628 tfreecell22628;
typedef N_NIMCALL_PTR(void, TY2289) (void* p, NI op);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY2289 marker;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tidobj167013  {
  TNimObject Sup;
NI Id;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  tstrtable188807  {
NI Counter;
tsymseq188805* Data;
};
struct  tlineinfo163527  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  tloc188817  {
NU8 K;
NU8 S;
NU8 Flags;
ttype188837* T;
trope145007* R;
trope145007* Heaproot;
NI A;
};
struct  tsym188833  {
  tidobj167013 Sup;
NU8 Kind;
union {
struct {ttypeseq188835* Typeinstcache;
tscope188827* Typscope;
} S1;
struct {TY188933* Procinstcache;
tscope188827* Scope;
} S2;
struct {TY188933* Usedgenerics;
tstrtable188807 Tab;
} S3;
} kindU;
NU16 Magic;
ttype188837* Typ;
tident167019* Name;
tlineinfo163527 Info;
tsym188833* Owner;
NU32 Flags;
tnode188803* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc188817 Loc;
tlib188821* Annex;
tnode188803* Constraint;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  tpasscontext246003  {
  TNimObject Sup;
NIM_BOOL Fromcache;
};
struct  tiipair197203  {
NI Key;
NI Val;
};
struct  tiitable197207  {
NI Counter;
tiipairseq197205* Data;
};
struct  tindex236022  {
NI Lastidxkey;
NI Lastidxval;
tiitable197207 Tab;
NimStringDesc* R;
NI Offset;
};
struct  trodwriter257004  {
  tpasscontext246003 Sup;
tsym188833* Module;
NI32 Crc;
NU32 Options;
NimStringDesc* Defines;
NimStringDesc* Incldeps;
NimStringDesc* Moddeps;
NimStringDesc* Interf;
NimStringDesc* Compilerprocs;
tindex236022 Index;
tindex236022 Imports;
NimStringDesc* Converters;
NimStringDesc* Methods;
NimStringDesc* Init;
NimStringDesc* Data;
tsymseq188805* Sstack;
ttypeseq188835* Tstack;
TY110805* Files;
NimStringDesc* Origfile;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  tcell41090  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq41106  {
NI Len;
NI Cap;
tcell41090** D;
};
struct  tcellset41102  {
NI Counter;
NI Max;
tpagedesc41098* Head;
tpagedesc41098** Data;
};
typedef tsmallchunk22638* TY23422[512];
typedef ttrunk22611* ttrunkbuckets22613[256];
struct  tintset22615  {
ttrunkbuckets22613 Data;
};
struct  tmemregion23410  {
NI Minlargeobj;
NI Maxlargeobj;
TY23422 Freesmallchunks;
tllchunk23404* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk22640* Freechunkslist;
tintset22615 Chunkstarts;
tavlnode23408* Root;
tavlnode23408* Deleted;
tavlnode23408* Last;
tavlnode23408* Freeavlnodes;
};
struct  tgcstat43014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap43016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq41106 Zct;
tcellseq41106 Decstack;
tcellset41102 Cycleroots;
tcellseq41106 Tempstack;
NI Recgclock;
tmemregion23410 Region;
tgcstat43014 Stat;
};
struct tkeyvaluepair121806 {
NimStringDesc* Field0;
NimStringDesc* Field1;
};
struct  tstringtable121810  {
  TNimObject Sup;
NI Counter;
tkeyvaluepairseq121808* Data;
NU8 Mode;
};
struct  tident167019  {
  tidobj167013 Sup;
NimStringDesc* S;
tident167019* Next;
NI H;
};
struct  ttype188837  {
  tidobj167013 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq188835* Sons;
tnode188803* N;
tsym188833* Destructor;
tsym188833* Owner;
tsym188833* Sym;
NI64 Size;
NI Align;
tloc188817 Loc;
};
struct  tlistentry118017  {
  TNimObject Sup;
tlistentry118017* Prev;
tlistentry118017* Next;
};
struct  tlib188821  {
  tlistentry118017 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope145007* Name;
tnode188803* Path;
};
struct  tnode188803  {
ttype188837* Typ;
tlineinfo163527 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym188833* Sym;
} S4;
struct {tident167019* Ident;
} S5;
struct {tnodeseq188797* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
struct  tscope188827  {
NI Depthlevel;
tstrtable188807 Symbols;
tnodeseq188797* Usingsyms;
tscope188827* Parent;
};
struct  tinstantiation188823  {
tsym188833* Sym;
ttypeseq188835* Concretetypes;
TY188922* Usedby;
};
struct  trope145007  {
  TNimObject Sup;
trope145007* Left;
trope145007* Right;
NI Length;
NimStringDesc* Data;
};
typedef NI TY22618[16];
struct  tpagedesc41098  {
tpagedesc41098* Next;
NI Key;
TY22618 Bits;
};
struct  tbasechunk22636  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk22638  {
  tbasechunk22636 Sup;
tsmallchunk22638* Next;
tsmallchunk22638* Prev;
tfreecell22628* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk23404  {
NI Size;
NI Acc;
tllchunk23404* Next;
};
struct  tbigchunk22640  {
  tbasechunk22636 Sup;
tbigchunk22640* Next;
tbigchunk22640* Prev;
NI Align;
NF Data;
};
struct  ttrunk22611  {
ttrunk22611* Next;
NI Key;
TY22618 Bits;
};
typedef tavlnode23408* TY23414[2];
struct  tavlnode23408  {
TY23414 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  tfreecell22628  {
tfreecell22628* Next;
NI Zerofield;
};
struct ttypeseq188835 {
  TGenericSeq Sup;
  ttype188837* data[SEQ_DECL_SIZE];
};
struct TY188933 {
  TGenericSeq Sup;
  tinstantiation188823* data[SEQ_DECL_SIZE];
};
struct tsymseq188805 {
  TGenericSeq Sup;
  tsym188833* data[SEQ_DECL_SIZE];
};
struct tiipairseq197205 {
  TGenericSeq Sup;
  tiipair197203 data[SEQ_DECL_SIZE];
};
struct TY110805 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct tkeyvaluepairseq121808 {
  TGenericSeq Sup;
  tkeyvaluepair121806 data[SEQ_DECL_SIZE];
};
struct tnodeseq188797 {
  TGenericSeq Sup;
  tnode188803* data[SEQ_DECL_SIZE];
};
struct TY188922 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, internalerror_165606)(NimStringDesc* errmsg);
N_NIMCALL(trodwriter257004*, newrodwriter_257026)(NI32 crc, tsym188833* module);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP3804)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
static N_INLINE(tcell41090*, usrtocell_44443)(void* usr);
static N_INLINE(void, rtladdzct_46002)(tcell41090* c);
N_NOINLINE(void, addzct_44418)(tcellseq41106* s, tcell41090* c);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(void, initiitable_197213)(tiitable197207* x);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
N_NIMCALL(NimStringDesc*, getdefines_257055)(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_164780)(NI32 fileidx);
N_NIMCALL(NI32, getcrc_238925)(NI32 fileidx);
N_NIMCALL(void, rawaddinterfacesym_258728)(trodwriter257004* w, tsym188833* s);
N_NIMCALL(void, pushsym_257257)(trodwriter257004* w, tsym188833* s);
N_NIMCALL(NI, iitableget_197218)(tiitable197207 t, NI key);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(void, processstacks_258717)(trodwriter257004* w, NIM_BOOL finalpass);
N_NIMCALL(NI, symstack_258201)(trodwriter257004* w);
N_NIMCALL(tsym188833*, getmodule_197183)(tsym188833* s);
N_NIMCALL(void, addtoindex_258005)(tindex236022* w, NI key, NI val);
N_NIMCALL(void, encodevint_196256)(NI x, NimStringDesc** result);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(void, iitableput_197223)(tiitable197207* t, NI key, NI val);
N_NIMCALL(void, encodesym_257809)(trodwriter257004* w, tsym188833* s, NimStringDesc** result);
N_NIMCALL(void, encodestr_196031)(NimStringDesc* s, NimStringDesc** result);
N_NIMCALL(void, pushtype_257233)(trodwriter257004* w, ttype188837* t);
N_NIMCALL(NI, fileidx_257072)(trodwriter257004* w, NimStringDesc* filename);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
N_NIMCALL(void, encodeloc_257529)(trodwriter257004* w, tloc188817* loc, NimStringDesc** result);
N_NIMCALL(NimStringDesc*, ropetostr_145075)(trope145007* p);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newlen);
N_NIMCALL(void, encodelib_257792)(trodwriter257004* w, tlib188821* lib, tlineinfo163527 info, NimStringDesc** result);
N_NIMCALL(void, encodenode_257281)(trodwriter257004* w, tlineinfo163527 finfo, tnode188803* n, NimStringDesc** result);
N_NIMCALL(void, encodevbiggestint_196224)(NI64 x, NimStringDesc** result);
N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF x);
static N_INLINE(NI, sonslen_189181)(tnode188803* n);
N_NIMCALL(tlineinfo163527, unknownlineinfo_164203)(void);
static N_INLINE(NIM_BOOL, haspattern_195059)(tsym188833* s);
static N_INLINE(NIM_BOOL, isroutine_195040)(tsym188833* s);
N_NIMCALL(NI, typestack_258636)(trodwriter257004* w);
N_NIMCALL(void, encodetype_257627)(trodwriter257004* w, ttype188837* t, NimStringDesc** result);
static N_INLINE(NI, sonslen_189185)(ttype188837* n);
N_NIMCALL(tnode188803*, process_258961)(tpasscontext246003* c, tnode188803* n);
N_NIMCALL(void, internalerror_165591)(tlineinfo163527 info, NimStringDesc* errmsg);
N_NIMCALL(void, addinterfacesym_257041)(trodwriter257004* w, tsym188833* s);
N_NIMCALL(void, addmoddep_257031)(trodwriter257004* w, NimStringDesc* dep);
N_NIMCALL(NimStringDesc*, getmodulename_255012)(tnode188803* n);
N_NIMCALL(void, addstmt_257046)(trodwriter257004* w, tnode188803* n);
N_NIMCALL(void, addincldep_257036)(trodwriter257004* w, NimStringDesc* dep);
N_NIMCALL(NimStringDesc*, findmodule_138312)(NimStringDesc* modulename, NimStringDesc* currentmodule);
N_NIMCALL(NimStringDesc*, tofullpath_164788)(NI32 fileidx);
N_NIMCALL(NI32, crcfromfile_144031)(NimStringDesc* filename);
N_NIMCALL(void, writerod_257051)(trodwriter257004* w);
N_NIMCALL(NIM_BOOL, open_10203)(FILE** f, NimStringDesc* filename, NU8 mode, NI bufsize);
N_NIMCALL(NimStringDesc*, completegeneratedfilepath_138001)(NimStringDesc* f, NIM_BOOL createsubdir);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, withpackagename_137873)(NimStringDesc* path);
N_NIMCALL(void, write_10463)(FILE* f, NimStringDesc* s);
N_NIMCALL(void, savemaxids_187463)(NimStringDesc* project);
N_NIMCALL(NimStringDesc*, HEX2F_108477)(NimStringDesc* head, NimStringDesc* tail);
STRING_LITERAL(TMP3802, "rodwrite: module ID not set", 27);
STRING_LITERAL(TMP3805, "", 0);
STRING_LITERAL(TMP3806, "true", 4);
STRING_LITERAL(TMP3807, " ", 1);
STRING_LITERAL(TMP3808, "symStack: module nil: ", 22);
STRING_LITERAL(TMP3809, "\012", 1);
STRING_LITERAL(TMP3810, "{}", 2);
STRING_LITERAL(TMP3811, "()", 2);
STRING_LITERAL(TMP3812, "[]", 2);
STRING_LITERAL(TMP3813, "encodeType: tyForward", 21);
STRING_LITERAL(TMP3814, "^()", 3);
STRING_LITERAL(TMP3815, "could not serialize some forwarded symbols/types", 48);
STRING_LITERAL(TMP3816, "rodwrite.process", 16);
STRING_LITERAL(TMP3817, "rodwrite.process: body is nil", 29);
STRING_LITERAL(TMP3818, "rod", 3);
STRING_LITERAL(TMP3819, "NIM:", 4);
STRING_LITERAL(TMP3820, "1215", 4);
STRING_LITERAL(TMP3821, "ID:", 3);
STRING_LITERAL(TMP3822, "ORIGFILE:", 9);
STRING_LITERAL(TMP3823, "CRC:", 4);
STRING_LITERAL(TMP3824, "OPTIONS:", 8);
STRING_LITERAL(TMP3825, "GOPTIONS:", 9);
STRING_LITERAL(TMP3826, "CMD:", 4);
STRING_LITERAL(TMP3827, "DEFINES:", 8);
STRING_LITERAL(TMP3828, "FILES(\012", 7);
STRING_LITERAL(TMP3829, ")\012", 2);
STRING_LITERAL(TMP3830, "INCLUDES(\012", 10);
STRING_LITERAL(TMP3831, "DEPS:", 5);
STRING_LITERAL(TMP3832, "INTERF(\012", 8);
STRING_LITERAL(TMP3833, "COMPILERPROCS(\012", 15);
STRING_LITERAL(TMP3834, "INDEX(\012", 7);
STRING_LITERAL(TMP3835, "IMPORTS(\012", 9);
STRING_LITERAL(TMP3836, "CONVERTERS:", 11);
STRING_LITERAL(TMP3837, "METHODS:", 8);
STRING_LITERAL(TMP3838, "INIT(\012", 6);
STRING_LITERAL(TMP3839, "DATA(\012", 6);
STRING_LITERAL(TMP3840, "\000", 1);
extern TNimType NTI246003; /* TPassContext */
TNimType NTI257004; /* TRodWriter */
extern TNimType NTI188801; /* PSym */
extern TNimType NTI144007; /* TCrc32 */
extern TNimType NTI137012; /* TOptions */
extern TNimType NTI143; /* string */
extern TNimType NTI236022; /* TIndex */
extern TNimType NTI188805; /* TSymSeq */
extern TNimType NTI188835; /* TTypeSeq */
extern TNimType NTI110805; /* seq[string] */
TNimType NTI257006; /* PRodWriter */
extern tgcheap43016 gch_43044;
extern tstringtable121810* gsymbols_168003;
extern NU32 goptions_137108;
extern NU32 gglobaloptions_137111;
extern NU8 gcmd_137113;
extern NimStringDesc* gprojectpath_137207;
extern NimStringDesc* gprojectname_137206;
N_NIMCALL(void, TMP3804)(void* p, NI op) {
	trodwriter257004* a;
	a = (trodwriter257004*)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(tcell41090*, usrtocell_44443)(void* usr) {
	tcell41090* result;
	result = 0;
	result = ((tcell41090*) ((NI)((NU32)(((NI) (usr))) - (NU32)(((NI)sizeof(tcell41090))))));
	return result;
}

static N_INLINE(void, rtladdzct_46002)(tcell41090* c) {
	addzct_44418(&gch_43044.Zct, c);
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tcell41090* c;
	c = usrtocell_44443(p);
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		rtladdzct_46002(c);
	}
	LA3: ;
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tcell41090* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_44443(src);
		(*c).Refcount += 8;
	}
	LA3: ;
	{
		tcell41090* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_44443((*dest));
		{
			(*c).Refcount -= 8;
			if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA11;
			rtladdzct_46002(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)), (NI32)((*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)), (NI32)((*src).Sup.len + 1));
	(*dest).Sup.len += (*src).Sup.len;
}

N_NIMCALL(NimStringDesc*, getdefines_257055)(void) {
	NimStringDesc* result;
	NimStringDesc* d_257058;
	NimStringDesc* key_257060;
	NimStringDesc* val_257062;
	NI h_257064;
	NI HEX3Atmp_257066;
	NI res_257068;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP3805));
	d_257058 = 0;
	key_257060 = 0;
	val_257062 = 0;
	h_257064 = 0;
	HEX3Atmp_257066 = 0;
	HEX3Atmp_257066 = ((*gsymbols_168003).Data->Sup.len-1);
	res_257068 = 0;
	while (1) {
		if (!(res_257068 <= HEX3Atmp_257066)) goto LA1;
		h_257064 = res_257068;
		{
			if (!!((*gsymbols_168003).Data->data[h_257064].Field0 == 0)) goto LA4;
			key_257060 = (*gsymbols_168003).Data->data[h_257064].Field0;
			val_257062 = (*gsymbols_168003).Data->data[h_257064].Field1;
			{
				if (!eqStrings(val_257062, ((NimStringDesc*) &TMP3806))) goto LA8;
				d_257058 = key_257060;
				{
					if (!!((result->Sup.len == 0))) goto LA12;
					result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TMP3807));
				}
				LA12: ;
				result = resizeString(result, d_257058->Sup.len + 0);
appendString(result, d_257058);
			}
			LA8: ;
		}
		LA4: ;
		res_257068 += 1;
	} LA1: ;
	return result;
}

N_NIMCALL(trodwriter257004*, newrodwriter_257026)(NI32 crc, tsym188833* module) {
	trodwriter257004* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	NimStringDesc* LOC4;
	NimStringDesc* LOC5;
	NimStringDesc* LOC6;
	NimStringDesc* LOC7;
	NimStringDesc* LOC8;
	result = 0;
	result = (trodwriter257004*) newObj((&NTI257006), sizeof(trodwriter257004));
	(*result).Sup.Sup.m_type = (&NTI257004);
	if ((*result).Sstack) nimGCunrefNoCycle((*result).Sstack);
	(*result).Sstack = (tsymseq188805*) newSeqRC1((&NTI188805), 0);
	if ((*result).Tstack) nimGCunrefNoCycle((*result).Tstack);
	(*result).Tstack = (ttypeseq188835*) newSeqRC1((&NTI188835), 0);
	initiitable_197213(&(*result).Index.Tab);
	initiitable_197213(&(*result).Imports.Tab);
	LOC1 = 0;
	LOC1 = (*result).Index.R; (*result).Index.R = copyStringRC1(((NimStringDesc*) &TMP3805));
	if (LOC1) nimGCunrefNoCycle(LOC1);
	LOC2 = 0;
	LOC2 = (*result).Imports.R; (*result).Imports.R = copyStringRC1(((NimStringDesc*) &TMP3805));
	if (LOC2) nimGCunrefNoCycle(LOC2);
	(*result).Crc = crc;
	asgnRefNoCycle((void**) &(*result).Module, module);
	asgnRefNoCycle((void**) &(*result).Defines, getdefines_257055());
	(*result).Options = goptions_137108;
	if ((*result).Files) nimGCunrefNoCycle((*result).Files);
	(*result).Files = (TY110805*) newSeqRC1((&NTI110805), 0);
	LOC3 = 0;
	LOC3 = (*result).Incldeps; (*result).Incldeps = copyStringRC1(((NimStringDesc*) &TMP3805));
	if (LOC3) nimGCunrefNoCycle(LOC3);
	LOC4 = 0;
	LOC4 = (*result).Moddeps; (*result).Moddeps = copyStringRC1(((NimStringDesc*) &TMP3805));
	if (LOC4) nimGCunrefNoCycle(LOC4);
	asgnRefNoCycle((void**) &(*result).Interf, rawNewString(2000));
	LOC5 = 0;
	LOC5 = (*result).Compilerprocs; (*result).Compilerprocs = copyStringRC1(((NimStringDesc*) &TMP3805));
	if (LOC5) nimGCunrefNoCycle(LOC5);
	LOC6 = 0;
	LOC6 = (*result).Converters; (*result).Converters = copyStringRC1(((NimStringDesc*) &TMP3805));
	if (LOC6) nimGCunrefNoCycle(LOC6);
	LOC7 = 0;
	LOC7 = (*result).Methods; (*result).Methods = copyStringRC1(((NimStringDesc*) &TMP3805));
	if (LOC7) nimGCunrefNoCycle(LOC7);
	LOC8 = 0;
	LOC8 = (*result).Init; (*result).Init = copyStringRC1(((NimStringDesc*) &TMP3805));
	if (LOC8) nimGCunrefNoCycle(LOC8);
	asgnRefNoCycle((void**) &(*result).Origfile, tofilename_164780((*module).Info.Fileindex));
	asgnRefNoCycle((void**) &(*result).Data, rawNewString(12000));
	return result;
}

N_NIMCALL(void, pushsym_257257)(trodwriter257004* w, tsym188833* s) {
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = iitableget_197218((*w).Index.Tab, (*s).Sup.Id);
		if (!(LOC3 == (-2147483647 -1))) goto LA4;
		(*w).Sstack = (tsymseq188805*) incrSeq(&((*w).Sstack)->Sup, sizeof(tsym188833*));
		asgnRefNoCycle((void**) &(*w).Sstack->data[(*w).Sstack->Sup.len-1], s);
	}
	LA4: ;
}

N_NIMCALL(void, addtoindex_258005)(tindex236022* w, NI key, NI val) {
	{
		if (!((NI32)(key - (*w).Lastidxkey) == 1)) goto LA3;
		encodevint_196256((NI32)(val - (*w).Lastidxval), &(*w).R);
	}
	goto LA1;
	LA3: ;
	{
		encodevint_196256((NI32)(key - (*w).Lastidxkey), &(*w).R);
		(*w).R = addChar((*w).R, 32);
		encodevint_196256((NI32)(val - (*w).Lastidxval), &(*w).R);
	}
	LA1: ;
	(*w).R = resizeString((*w).R, 1);
appendString((*w).R, ((NimStringDesc*) &TMP3809));
	(*w).Lastidxkey = key;
	(*w).Lastidxval = val;
	iitableput_197223(&(*w).Tab, key, val);
}

N_NIMCALL(void, pushtype_257233)(trodwriter257004* w, ttype188837* t) {
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = iitableget_197218((*w).Index.Tab, (*t).Sup.Id);
		if (!(LOC3 == (-2147483647 -1))) goto LA4;
		(*w).Tstack = (ttypeseq188835*) incrSeq(&((*w).Tstack)->Sup, sizeof(ttype188837*));
		asgnRefNoCycle((void**) &(*w).Tstack->data[(*w).Tstack->Sup.len-1], t);
	}
	LA4: ;
}

N_NIMCALL(NI, fileidx_257072)(trodwriter257004* w, NimStringDesc* filename) {
	NI result;
	NI i_257089;
	NI HEX3Atmp_257117;
	NI res_257119;
	NimStringDesc* LOC6;
	result = 0;
	i_257089 = 0;
	HEX3Atmp_257117 = 0;
	HEX3Atmp_257117 = ((*w).Files->Sup.len-1);
	res_257119 = 0;
	while (1) {
		if (!(res_257119 <= HEX3Atmp_257117)) goto LA1;
		i_257089 = res_257119;
		{
			if (!eqStrings((*w).Files->data[i_257089], filename)) goto LA4;
			result = i_257089;
			goto BeforeRet;
		}
		LA4: ;
		res_257119 += 1;
	} LA1: ;
	result = (*w).Files->Sup.len;
	(*w).Files = (TY110805*) setLengthSeq(&((*w).Files)->Sup, sizeof(NimStringDesc*), (NI32)(result + 1));
	LOC6 = 0;
	LOC6 = (*w).Files->data[result]; (*w).Files->data[result] = copyStringRC1(filename);
	if (LOC6) nimGCunrefNoCycle(LOC6);
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, encodeloc_257529)(trodwriter257004* w, tloc188817* loc, NimStringDesc** result) {
	NI oldlen;
	oldlen = (*result)->Sup.len;
	(*result) = addChar((*result), 60);
	{
		if (!!(((*loc).K == ((NU8) 0)))) goto LA3;
		encodevint_196256(((NI) ((*loc).K)), result);
	}
	LA3: ;
	{
		if (!!(((*loc).S == ((NU8) 0)))) goto LA7;
		(*result) = addChar((*result), 42);
		encodevint_196256(((NI) ((*loc).S)), result);
	}
	LA7: ;
	{
		if (!!(((*loc).Flags == 0))) goto LA11;
		(*result) = addChar((*result), 36);
		encodevint_196256(((NI) (((NI32) ((*loc).Flags)))), result);
	}
	LA11: ;
	{
		if (!!(((*loc).T == NIM_NIL))) goto LA15;
		(*result) = addChar((*result), 94);
		encodevint_196256(((NI) (((NI32) ((*(*loc).T).Sup.Id)))), result);
		pushtype_257233(w, (*loc).T);
	}
	LA15: ;
	{
		NimStringDesc* LOC21;
		if (!!(((*loc).R == NIM_NIL))) goto LA19;
		(*result) = addChar((*result), 33);
		LOC21 = 0;
		LOC21 = ropetostr_145075((*loc).R);
		encodestr_196031(LOC21, result);
	}
	LA19: ;
	{
		if (!!(((*loc).A == 0))) goto LA24;
		(*result) = addChar((*result), 63);
		encodevint_196256((*loc).A, result);
	}
	LA24: ;
	{
		if (!((NI32)(oldlen + 1) == (*result)->Sup.len)) goto LA28;
		(*result) = setLengthStr((*result), oldlen);
	}
	goto LA26;
	LA28: ;
	{
		(*result) = addChar((*result), 62);
	}
	LA26: ;
}

static N_INLINE(NI, sonslen_189181)(tnode188803* 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_257281)(trodwriter257004* w, tlineinfo163527 finfo, tnode188803* n, NimStringDesc** result) {
	NU16 f;
	{
		if (!(n == NIM_NIL)) goto LA3;
		(*result) = resizeString((*result), 2);
appendString((*result), ((NimStringDesc*) &TMP3811));
		goto BeforeRet;
	}
	LA3: ;
	(*result) = addChar((*result), 40);
	encodevint_196256(((NI) ((*n).Kind)), result);
	{
		NimStringDesc* LOC9;
		NI LOC10;
		if (!!((finfo.Fileindex == (*n).Info.Fileindex))) goto LA7;
		(*result) = addChar((*result), 63);
		encodevint_196256(((NI) ((*n).Info.Col)), result);
		(*result) = addChar((*result), 44);
		encodevint_196256(((NI) ((*n).Info.Line)), result);
		(*result) = addChar((*result), 44);
		LOC9 = 0;
		LOC9 = tofilename_164780((*n).Info.Fileindex);
		LOC10 = 0;
		LOC10 = fileidx_257072(w, LOC9);
		encodevint_196256(LOC10, result);
	}
	goto LA5;
	LA7: ;
	{
		if (!!((finfo.Line == (*n).Info.Line))) goto LA12;
		(*result) = addChar((*result), 63);
		encodevint_196256(((NI) ((*n).Info.Col)), result);
		(*result) = addChar((*result), 44);
		encodevint_196256(((NI) ((*n).Info.Line)), result);
	}
	goto LA5;
	LA12: ;
	{
		if (!!((finfo.Col == (*n).Info.Col))) goto LA15;
		(*result) = addChar((*result), 63);
		encodevint_196256(((NI) ((*n).Info.Col)), result);
	}
	goto LA5;
	LA15: ;
	LA5: ;
	f = ((*n).Flags & 2462);
	{
		if (!!((f == 0))) goto LA19;
		(*result) = addChar((*result), 36);
		encodevint_196256(((NI) (((NI32) (f)))), result);
	}
	LA19: ;
	{
		if (!!(((*n).Typ == NIM_NIL))) goto LA23;
		(*result) = addChar((*result), 94);
		encodevint_196256((*(*n).Typ).Sup.Id, result);
		pushtype_257233(w, (*n).Typ);
	}
	LA23: ;
	switch ((*n).Kind) {
	case ((NU8) 5) ... ((NU8) 10):
	{
		{
			if (!!(((*n).kindU.S1.Intval == 0))) goto LA28;
			(*result) = addChar((*result), 33);
			encodevbiggestint_196224((*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_196031(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_196031((*n).kindU.S3.Strval, result);
		}
		LA39: ;
	}
	break;
	case ((NU8) 2):
	{
		(*result) = addChar((*result), 33);
		encodestr_196031((*(*n).kindU.S5.Ident).S, result);
	}
	break;
	case ((NU8) 3):
	{
		(*result) = addChar((*result), 33);
		encodevint_196256((*(*n).kindU.S4.Sym).Sup.Id, result);
		pushsym_257257(w, (*n).kindU.S4.Sym);
	}
	break;
	default:
	{
		NI i_257506;
		NI HEX3Atmp_257522;
		NI LOC44;
		NI res_257524;
		i_257506 = 0;
		HEX3Atmp_257522 = 0;
		LOC44 = 0;
		LOC44 = sonslen_189181(n);
		HEX3Atmp_257522 = (NI32)(LOC44 - 1);
		res_257524 = 0;
		while (1) {
			if (!(res_257524 <= HEX3Atmp_257522)) goto LA45;
			i_257506 = res_257524;
			encodenode_257281(w, (*n).Info, (*n).kindU.S6.Sons->data[i_257506], result);
			res_257524 += 1;
		} LA45: ;
	}
	break;
	}
	(*result) = addChar((*result), 41);
	BeforeRet: ;
}

N_NIMCALL(void, encodelib_257792)(trodwriter257004* w, tlib188821* lib, tlineinfo163527 info, NimStringDesc** result) {
	NimStringDesc* LOC1;
	(*result) = addChar((*result), 124);
	encodevint_196256(((NI) ((*lib).Kind)), result);
	(*result) = addChar((*result), 124);
	LOC1 = 0;
	LOC1 = ropetostr_145075((*lib).Name);
	encodestr_196031(LOC1, result);
	(*result) = addChar((*result), 124);
	encodenode_257281(w, info, (*lib).Path, result);
}

N_NIMCALL(void, encodesym_257809)(trodwriter257004* w, tsym188833* s, NimStringDesc** result) {
	NimStringDesc* LOC17;
	NI LOC18;
	{
		if (!(s == NIM_NIL)) goto LA3;
		(*result) = resizeString((*result), 2);
appendString((*result), ((NimStringDesc*) &TMP3810));
		goto BeforeRet;
	}
	LA3: ;
	encodevint_196256(((NI) ((*s).Kind)), result);
	(*result) = addChar((*result), 43);
	encodevint_196256((*s).Sup.Id, result);
	(*result) = addChar((*result), 38);
	encodestr_196031((*(*s).Name).S, result);
	{
		if (!!(((*s).Typ == NIM_NIL))) goto LA7;
		(*result) = addChar((*result), 94);
		encodevint_196256((*(*s).Typ).Sup.Id, result);
		pushtype_257233(w, (*s).Typ);
	}
	LA7: ;
	(*result) = addChar((*result), 63);
	{
		if (!!(((*s).Info.Col == ((NI16) -1)))) goto LA11;
		encodevint_196256(((NI) ((*s).Info.Col)), result);
	}
	LA11: ;
	(*result) = addChar((*result), 44);
	{
		if (!!(((*s).Info.Line == ((NI16) -1)))) goto LA15;
		encodevint_196256(((NI) ((*s).Info.Line)), result);
	}
	LA15: ;
	(*result) = addChar((*result), 44);
	LOC17 = 0;
	LOC17 = tofilename_164780((*s).Info.Fileindex);
	LOC18 = 0;
	LOC18 = fileidx_257072(w, LOC17);
	encodevint_196256(LOC18, result);
	{
		if (!!(((*s).Owner == NIM_NIL))) goto LA21;
		(*result) = addChar((*result), 42);
		encodevint_196256((*(*s).Owner).Sup.Id, result);
		pushsym_257257(w, (*s).Owner);
	}
	LA21: ;
	{
		if (!!(((*s).Flags == 0))) goto LA25;
		(*result) = addChar((*result), 36);
		encodevint_196256(((NI) (((NI32) ((*s).Flags)))), result);
	}
	LA25: ;
	{
		if (!!(((*s).Magic == ((NU16) 0)))) goto LA29;
		(*result) = addChar((*result), 64);
		encodevint_196256(((NI) ((*s).Magic)), result);
	}
	LA29: ;
	{
		if (!!(((*s).Options == (*w).Options))) goto LA33;
		(*result) = addChar((*result), 33);
		encodevint_196256(((NI) (((NI32) ((*s).Options)))), result);
	}
	LA33: ;
	{
		if (!!(((*s).Position == 0))) goto LA37;
		(*result) = addChar((*result), 37);
		encodevint_196256((*s).Position, result);
	}
	LA37: ;
	{
		if (!!(((*s).Offset == -1))) goto LA41;
		(*result) = addChar((*result), 96);
		encodevint_196256((*s).Offset, result);
	}
	LA41: ;
	encodeloc_257529(w, &(*s).Loc, result);
	{
		if (!!(((*s).Annex == NIM_NIL))) goto LA45;
		encodelib_257792(w, (*s).Annex, (*s).Info, result);
	}
	LA45: ;
	{
		tlineinfo163527 LOC51;
		if (!!(((*s).Constraint == NIM_NIL))) goto LA49;
		(*result) = addChar((*result), 35);
		LOC51 = unknownlineinfo_164203();
		encodenode_257281(w, LOC51, (*s).Constraint, result);
	}
	LA49: ;
	{
		if (!!(((*s).Ast == NIM_NIL))) goto LA54;
		encodenode_257281(w, (*s).Info, (*s).Ast, result);
	}
	LA54: ;
	BeforeRet: ;
}

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

static N_INLINE(NIM_BOOL, haspattern_195059)(tsym188833* s) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = isroutine_195040(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_258201)(trodwriter257004* w) {
	NI result;
	NI i;
	result = 0;
	i = 0;
	while (1) {
		tsym188833* s;
		if (!(i < (*w).Sstack->Sup.len)) goto LA1;
		s = (*w).Sstack->data[i];
		{
			if (!(((*s).Flags &(1<<((((NU8) 4))&31)))!=0)) goto LA4;
			asgnRefNoCycle((void**) &(*w).Sstack->data[result], s);
			result += 1;
		}
		goto LA2;
		LA4: ;
		{
			NI LOC7;
			tsym188833* m;
			LOC7 = 0;
			LOC7 = iitableget_197218((*w).Index.Tab, (*s).Sup.Id);
			if (!(LOC7 == (-2147483647 -1))) goto LA8;
			m = getmodule_197183(s);
			{
				NimStringDesc* LOC14;
				if (!(m == NIM_NIL)) goto LA12;
				LOC14 = 0;
				LOC14 = rawNewString((*(*s).Name).S->Sup.len + 22);
appendString(LOC14, ((NimStringDesc*) &TMP3808));
appendString(LOC14, (*(*s).Name).S);
				internalerror_165606(LOC14);
			}
			LA12: ;
			{
				NIM_BOOL LOC17;
				NI l;
				LOC17 = 0;
				LOC17 = ((*m).Sup.Id == (*(*w).Module).Sup.Id);
				if (LOC17) goto LA18;
				LOC17 = (((*s).Flags &(1<<((((NU8) 2))&31)))!=0);
				LA18: ;
				if (!LOC17) goto LA19;
				l = (*w).Data->Sup.len;
				addtoindex_258005(&(*w).Index, (*s).Sup.Id, l);
				encodesym_257809(w, s, &(*w).Data);
				(*w).Data = resizeString((*w).Data, 1);
appendString((*w).Data, ((NimStringDesc*) &TMP3809));
				{
					NIM_BOOL LOC23;
					LOC23 = 0;
					LOC23 = ((6 & (*s).Flags) == 2);
					if (!(LOC23)) goto LA24;
					LOC23 = ((9959296 &(1<<(((*s).Kind)&31)))!=0);
					LA24: ;
					if (!LOC23) goto LA25;
					encodestr_196031((*(*s).Name).S, &(*w).Interf);
					(*w).Interf = addChar((*w).Interf, 32);
					encodevint_196256((*s).Sup.Id, &(*w).Interf);
					(*w).Interf = resizeString((*w).Interf, 1);
appendString((*w).Interf, ((NimStringDesc*) &TMP3809));
				}
				LA25: ;
				{
					if (!(((*s).Flags &(1<<((((NU8) 16))&31)))!=0)) goto LA29;
					encodestr_196031((*(*s).Name).S, &(*w).Compilerprocs);
					(*w).Compilerprocs = addChar((*w).Compilerprocs, 32);
					encodevint_196256((*s).Sup.Id, &(*w).Compilerprocs);
					(*w).Compilerprocs = resizeString((*w).Compilerprocs, 1);
appendString((*w).Compilerprocs, ((NimStringDesc*) &TMP3809));
				}
				LA29: ;
				{
					NIM_BOOL LOC33;
					LOC33 = 0;
					LOC33 = ((*s).Kind == ((NU8) 16));
					if (LOC33) goto LA34;
					LOC33 = haspattern_195059(s);
					LA34: ;
					if (!LOC33) goto LA35;
					{
						if (!!(((*w).Converters->Sup.len == 0))) goto LA39;
						(*w).Converters = addChar((*w).Converters, 32);
					}
					LA39: ;
					encodevint_196256((*s).Sup.Id, &(*w).Converters);
				}
				LA35: ;
				{
					NIM_BOOL LOC43;
					LOC43 = 0;
					LOC43 = ((*s).Kind == ((NU8) 13));
					if (!(LOC43)) goto LA44;
					LOC43 = !((((*s).Flags &(1<<((((NU8) 25))&31)))!=0));
					LA44: ;
					if (!LOC43) goto LA45;
					{
						if (!!(((*w).Methods->Sup.len == 0))) goto LA49;
						(*w).Methods = addChar((*w).Methods, 32);
					}
					LA49: ;
					encodevint_196256((*s).Sup.Id, &(*w).Methods);
				}
				LA45: ;
			}
			goto LA15;
			LA19: ;
			{
				NI LOC52;
				LOC52 = 0;
				LOC52 = iitableget_197218((*w).Imports.Tab, (*s).Sup.Id);
				if (!(LOC52 == (-2147483647 -1))) goto LA53;
				addtoindex_258005(&(*w).Imports, (*s).Sup.Id, (*m).Sup.Id);
			}
			goto LA15;
			LA53: ;
			LA15: ;
		}
		goto LA2;
		LA8: ;
		LA2: ;
		i += 1;
	} LA1: ;
	(*w).Sstack = (tsymseq188805*) setLengthSeq(&((*w).Sstack)->Sup, sizeof(tsym188833*), result);
	return result;
}

static N_INLINE(NI, sonslen_189185)(ttype188837* 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_257627)(trodwriter257004* w, ttype188837* t, NimStringDesc** result) {
	NI i_257766;
	NI HEX3Atmp_257785;
	NI LOC38;
	NI res_257787;
	{
		if (!(t == NIM_NIL)) goto LA3;
		(*result) = resizeString((*result), 2);
appendString((*result), ((NimStringDesc*) &TMP3812));
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*t).Kind == ((NU8) 30))) goto LA7;
		internalerror_165606(((NimStringDesc*) &TMP3813));
	}
	LA7: ;
	(*result) = addChar((*result), 91);
	encodevint_196256(((NI) ((*t).Kind)), result);
	(*result) = addChar((*result), 43);
	encodevint_196256((*t).Sup.Id, result);
	{
		tlineinfo163527 LOC13;
		if (!!(((*t).N == NIM_NIL))) goto LA11;
		LOC13 = unknownlineinfo_164203();
		encodenode_257281(w, LOC13, (*t).N, result);
	}
	LA11: ;
	{
		if (!!(((*t).Flags == 0))) goto LA16;
		(*result) = addChar((*result), 36);
		encodevint_196256(((NI) (((NI32) ((*t).Flags)))), result);
	}
	LA16: ;
	{
		if (!!(((*t).Callconv == ((NU8) 0)))) goto LA20;
		(*result) = addChar((*result), 63);
		encodevint_196256(((NI) ((*t).Callconv)), result);
	}
	LA20: ;
	{
		if (!!(((*t).Owner == NIM_NIL))) goto LA24;
		(*result) = addChar((*result), 42);
		encodevint_196256((*(*t).Owner).Sup.Id, result);
		pushsym_257257(w, (*t).Owner);
	}
	LA24: ;
	{
		if (!!(((*t).Sym == NIM_NIL))) goto LA28;
		(*result) = addChar((*result), 38);
		encodevint_196256((*(*t).Sym).Sup.Id, result);
		pushsym_257257(w, (*t).Sym);
	}
	LA28: ;
	{
		if (!!(((*t).Size == -1))) goto LA32;
		(*result) = addChar((*result), 47);
		encodevbiggestint_196224((*t).Size, result);
	}
	LA32: ;
	{
		if (!!(((*t).Align == 2))) goto LA36;
		(*result) = addChar((*result), 61);
		encodevint_196256((*t).Align, result);
	}
	LA36: ;
	encodeloc_257529(w, &(*t).Loc, result);
	i_257766 = 0;
	HEX3Atmp_257785 = 0;
	LOC38 = 0;
	LOC38 = sonslen_189185(t);
	HEX3Atmp_257785 = (NI32)(LOC38 - 1);
	res_257787 = 0;
	while (1) {
		if (!(res_257787 <= HEX3Atmp_257785)) goto LA39;
		i_257766 = res_257787;
		{
			if (!((*t).Sons->data[i_257766] == NIM_NIL)) goto LA42;
			(*result) = resizeString((*result), 3);
appendString((*result), ((NimStringDesc*) &TMP3814));
		}
		goto LA40;
		LA42: ;
		{
			(*result) = addChar((*result), 94);
			encodevint_196256((*(*t).Sons->data[i_257766]).Sup.Id, result);
			pushtype_257233(w, (*t).Sons->data[i_257766]);
		}
		LA40: ;
		res_257787 += 1;
	} LA39: ;
	BeforeRet: ;
}

N_NIMCALL(NI, typestack_258636)(trodwriter257004* w) {
	NI result;
	NI i;
	result = 0;
	i = 0;
	while (1) {
		ttype188837* t;
		if (!(i < (*w).Tstack->Sup.len)) goto LA1;
		t = (*w).Tstack->data[i];
		{
			if (!((*t).Kind == ((NU8) 30))) goto LA4;
			asgnRefNoCycle((void**) &(*w).Tstack->data[result], t);
			result += 1;
		}
		goto LA2;
		LA4: ;
		{
			NI LOC7;
			NI l;
			LOC7 = 0;
			LOC7 = iitableget_197218((*w).Index.Tab, (*t).Sup.Id);
			if (!(LOC7 == (-2147483647 -1))) goto LA8;
			l = (*w).Data->Sup.len;
			addtoindex_258005(&(*w).Index, (*t).Sup.Id, l);
			encodetype_257627(w, t, &(*w).Data);
			(*w).Data = resizeString((*w).Data, 1);
appendString((*w).Data, ((NimStringDesc*) &TMP3809));
		}
		goto LA2;
		LA8: ;
		LA2: ;
		i += 1;
	} LA1: ;
	(*w).Tstack = (ttypeseq188835*) setLengthSeq(&((*w).Tstack)->Sup, sizeof(ttype188837*), result);
	return result;
}

N_NIMCALL(void, processstacks_258717)(trodwriter257004* w, NIM_BOOL finalpass) {
	NI olds;
	NI oldt;
	olds = 0;
	oldt = 0;
	while (1) {
		NI slen;
		NI tlen;
		slen = symstack_258201(w);
		tlen = typestack_258636(w);
		{
			NIM_BOOL LOC4;
			LOC4 = 0;
			LOC4 = (slen == olds);
			if (!(LOC4)) goto LA5;
			LOC4 = (tlen == oldt);
			LA5: ;
			if (!LOC4) goto LA6;
			goto LA1;
		}
		LA6: ;
		olds = slen;
		oldt = tlen;
	} LA1: ;
	{
		NIM_BOOL LOC10;
		NIM_BOOL LOC12;
		LOC10 = 0;
		LOC10 = finalpass;
		if (!(LOC10)) goto LA11;
		LOC12 = 0;
		LOC12 = !((olds == 0));
		if (LOC12) goto LA13;
		LOC12 = !((oldt == 0));
		LA13: ;
		LOC10 = LOC12;
		LA11: ;
		if (!LOC10) goto LA14;
		internalerror_165606(((NimStringDesc*) &TMP3815));
	}
	LA14: ;
}

N_NIMCALL(void, rawaddinterfacesym_258728)(trodwriter257004* w, tsym188833* s) {
	pushsym_257257(w, s);
	processstacks_258717(w, NIM_FALSE);
}

N_NIMCALL(tpasscontext246003*, myopen_259386)(tsym188833* module) {
	tpasscontext246003* result;
	trodwriter257004* w;
	NI32 LOC5;
	result = 0;
	{
		if (!((*module).Sup.Id < 0)) goto LA3;
		internalerror_165606(((NimStringDesc*) &TMP3802));
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = getcrc_238925(((NI32) ((*module).Position)));
	w = newrodwriter_257026(LOC5, module);
	rawaddinterfacesym_258728(w, module);
	result = &w->Sup;
	return result;
}

N_NIMCALL(void, addinterfacesym_257041)(trodwriter257004* w, tsym188833* s) {
	{
		if (!(w == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = ((9959296 &(1<<(((*s).Kind)&31)))!=0);
		if (!(LOC7)) goto LA8;
		LOC7 = !(((65538 & (*s).Flags) == 0));
		LA8: ;
		if (!LOC7) goto LA9;
		rawaddinterfacesym_258728(w, s);
	}
	LA9: ;
	BeforeRet: ;
}

N_NIMCALL(void, addmoddep_257031)(trodwriter257004* w, NimStringDesc* dep) {
	NI LOC5;
	{
		if (!!(((*w).Moddeps->Sup.len == 0))) goto LA3;
		(*w).Moddeps = addChar((*w).Moddeps, 32);
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = fileidx_257072(w, dep);
	encodevint_196256(LOC5, &(*w).Moddeps);
}

N_NIMCALL(void, addstmt_257046)(trodwriter257004* w, tnode188803* n) {
	tlineinfo163527 LOC1;
	encodevint_196256((*w).Data->Sup.len, &(*w).Init);
	(*w).Init = resizeString((*w).Init, 1);
appendString((*w).Init, ((NimStringDesc*) &TMP3809));
	LOC1 = unknownlineinfo_164203();
	encodenode_257281(w, LOC1, n, &(*w).Data);
	(*w).Data = resizeString((*w).Data, 1);
appendString((*w).Data, ((NimStringDesc*) &TMP3809));
	processstacks_258717(w, NIM_FALSE);
}

N_NIMCALL(void, addincldep_257036)(trodwriter257004* w, NimStringDesc* dep) {
	NimStringDesc* resolved;
	NimStringDesc* LOC1;
	NI LOC2;
	NI32 LOC3;
	LOC1 = 0;
	LOC1 = tofullpath_164788((*(*w).Module).Info.Fileindex);
	resolved = findmodule_138312(dep, LOC1);
	LOC2 = 0;
	LOC2 = fileidx_257072(w, dep);
	encodevint_196256(LOC2, &(*w).Incldeps);
	(*w).Incldeps = resizeString((*w).Incldeps, 1);
appendString((*w).Incldeps, ((NimStringDesc*) &TMP3807));
	LOC3 = 0;
	LOC3 = crcfromfile_144031(resolved);
	encodevint_196256(((NI) (LOC3)), &(*w).Incldeps);
	(*w).Incldeps = resizeString((*w).Incldeps, 1);
appendString((*w).Incldeps, ((NimStringDesc*) &TMP3809));
}

N_NIMCALL(tnode188803*, process_258961)(tpasscontext246003* c, tnode188803* n) {
	tnode188803* result;
	trodwriter257004* w;
	result = 0;
	result = n;
	{
		if (!(c == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	w = ((trodwriter257004*) (c));
	switch ((*n).Kind) {
	case ((NU8) 114):
	{
		NI i_258996;
		NI HEX3Atmp_259355;
		NI LOC6;
		NI res_259357;
		i_258996 = 0;
		HEX3Atmp_259355 = 0;
		LOC6 = 0;
		LOC6 = sonslen_189181(n);
		HEX3Atmp_259355 = (NI32)(LOC6 - 1);
		res_259357 = 0;
		while (1) {
			tnode188803* LOC8;
			if (!(res_259357 <= HEX3Atmp_259355)) goto LA7;
			i_258996 = res_259357;
			LOC8 = 0;
			LOC8 = process_258961(c, (*n).kindU.S6.Sons->data[i_258996]);
			res_259357 += 1;
		} LA7: ;
	}
	break;
	case ((NU8) 79):
	case ((NU8) 80):
	case ((NU8) 84):
	case ((NU8) 81):
	case ((NU8) 83):
	case ((NU8) 82):
	{
		tsym188833* s;
		s = (*(*n).kindU.S6.Sons->data[0]).kindU.S4.Sym;
		{
			if (!(s == NIM_NIL)) goto LA12;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3816));
		}
		LA12: ;
		{
			if (!((*n).kindU.S6.Sons->data[6] == NIM_NIL)) goto LA16;
			internalerror_165591((*n).Info, ((NimStringDesc*) &TMP3817));
		}
		LA16: ;
		{
			NIM_BOOL LOC20;
			NIM_BOOL LOC21;
			LOC20 = 0;
			LOC21 = 0;
			LOC21 = !(((*(*n).kindU.S6.Sons->data[6]).Kind == ((NU8) 1)));
			if (LOC21) goto LA22;
			LOC21 = !(((*s).Magic == ((NU16) 0)));
			LA22: ;
			LOC20 = LOC21;
			if (LOC20) goto LA23;
			LOC20 = !((((*s).Flags &(1<<((((NU8) 4))&31)))!=0));
			LA23: ;
			if (!LOC20) goto LA24;
			addinterfacesym_257041(w, s);
		}
		LA24: ;
	}
	break;
	case ((NU8) 99):
	case ((NU8) 100):
	case ((NU8) 101):
	{
		NI i_259145;
		NI HEX3Atmp_259360;
		NI LOC27;
		NI res_259362;
		i_259145 = 0;
		HEX3Atmp_259360 = 0;
		LOC27 = 0;
		LOC27 = sonslen_189181(n);
		HEX3Atmp_259360 = (NI32)(LOC27 - 1);
		res_259362 = 0;
		while (1) {
			if (!(res_259362 <= HEX3Atmp_259360)) goto LA28;
			i_259145 = res_259362;
			{
				tnode188803* a;
				a = (*n).kindU.S6.Sons->data[i_259145];
				{
					if (!((*a).Kind == ((NU8) 124))) goto LA32;
					goto LA29;
				}
				LA32: ;
				addinterfacesym_257041(w, (*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym);
			} LA29: ;
			res_259362 += 1;
		} LA28: ;
	}
	break;
	case ((NU8) 98):
	{
		NI i_259210;
		NI HEX3Atmp_259365;
		NI LOC35;
		NI res_259367;
		i_259210 = 0;
		HEX3Atmp_259365 = 0;
		LOC35 = 0;
		LOC35 = sonslen_189181(n);
		HEX3Atmp_259365 = (NI32)(LOC35 - 1);
		res_259367 = 0;
		while (1) {
			if (!(res_259367 <= HEX3Atmp_259365)) goto LA36;
			i_259210 = res_259367;
			{
				tnode188803* a;
				tsym188833* s;
				a = (*n).kindU.S6.Sons->data[i_259210];
				{
					if (!((*a).Kind == ((NU8) 124))) goto LA40;
					goto LA37;
				}
				LA40: ;
				{
					if (!!(((*(*a).kindU.S6.Sons->data[0]).Kind == ((NU8) 3)))) goto LA44;
					internalerror_165591((*a).Info, ((NimStringDesc*) &TMP3816));
				}
				LA44: ;
				s = (*(*a).kindU.S6.Sons->data[0]).kindU.S4.Sym;
				addinterfacesym_257041(w, s);
			} LA37: ;
			res_259367 += 1;
		} LA36: ;
	}
	break;
	case ((NU8) 115):
	{
		NI i_259299;
		NI HEX3Atmp_259369;
		NI LOC47;
		NI res_259371;
		i_259299 = 0;
		HEX3Atmp_259369 = 0;
		LOC47 = 0;
		LOC47 = sonslen_189181(n);
		HEX3Atmp_259369 = (NI32)(LOC47 - 1);
		res_259371 = 0;
		while (1) {
			NimStringDesc* LOC49;
			if (!(res_259371 <= HEX3Atmp_259369)) goto LA48;
			i_259299 = res_259371;
			LOC49 = 0;
			LOC49 = getmodulename_255012((*n).kindU.S6.Sons->data[i_259299]);
			addmoddep_257031(w, LOC49);
			res_259371 += 1;
		} LA48: ;
		addstmt_257046(w, n);
	}
	break;
	case ((NU8) 119):
	{
		NimStringDesc* LOC51;
		LOC51 = 0;
		LOC51 = getmodulename_255012((*n).kindU.S6.Sons->data[0]);
		addmoddep_257031(w, LOC51);
		addstmt_257046(w, n);
	}
	break;
	case ((NU8) 120):
	{
		NI i_259340;
		NI HEX3Atmp_259373;
		NI LOC53;
		NI res_259375;
		i_259340 = 0;
		HEX3Atmp_259373 = 0;
		LOC53 = 0;
		LOC53 = sonslen_189181(n);
		HEX3Atmp_259373 = (NI32)(LOC53 - 1);
		res_259375 = 0;
		while (1) {
			NimStringDesc* LOC55;
			if (!(res_259375 <= HEX3Atmp_259373)) goto LA54;
			i_259340 = res_259375;
			LOC55 = 0;
			LOC55 = getmodulename_255012((*n).kindU.S6.Sons->data[i_259340]);
			addincldep_257036(w, LOC55);
			res_259375 += 1;
		} LA54: ;
	}
	break;
	case ((NU8) 90):
	{
		addstmt_257046(w, n);
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, writerod_257051)(trodwriter257004* w) {
	FILE* f;
	NimStringDesc* id;
	NimStringDesc* orig;
	NimStringDesc* crc;
	NimStringDesc* options;
	NimStringDesc* goptions;
	NimStringDesc* cmd;
	NimStringDesc* files;
	NI i_258881;
	NI HEX3Atmp_258954;
	NI res_258956;
	processstacks_258717(w, NIM_TRUE);
	f = 0;
	{
		NimStringDesc* LOC3;
		NimStringDesc* LOC4;
		NimStringDesc* LOC5;
		NimStringDesc* LOC6;
		NIM_BOOL LOC7;
		LOC3 = 0;
		LOC3 = tofilename_164780(((NI32) ((*(*w).Module).Position)));
		LOC4 = 0;
		LOC4 = withpackagename_137873(LOC3);
		LOC5 = 0;
		LOC5 = noschangeFileExt(LOC4, ((NimStringDesc*) &TMP3818));
		LOC6 = 0;
		LOC6 = completegeneratedfilepath_138001(LOC5, NIM_TRUE);
		LOC7 = 0;
		LOC7 = open_10203(&f, LOC6, ((NU8) 1), -1);
		if (!!(LOC7)) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	write_10463(f, ((NimStringDesc*) &TMP3819));
	write_10463(f, ((NimStringDesc*) &TMP3820));
	write_10463(f, ((NimStringDesc*) &TMP3809));
	id = copyString(((NimStringDesc*) &TMP3821));
	encodevint_196256((*(*w).Module).Sup.Id, &id);
	write_10463(f, id);
	write_10463(f, ((NimStringDesc*) &TMP3809));
	orig = copyString(((NimStringDesc*) &TMP3822));
	encodestr_196031((*w).Origfile, &orig);
	write_10463(f, orig);
	write_10463(f, ((NimStringDesc*) &TMP3809));
	crc = copyString(((NimStringDesc*) &TMP3823));
	encodevint_196256(((NI) ((*w).Crc)), &crc);
	write_10463(f, crc);
	write_10463(f, ((NimStringDesc*) &TMP3809));
	options = copyString(((NimStringDesc*) &TMP3824));
	encodevint_196256(((NI) (((NI32) ((*w).Options)))), &options);
	write_10463(f, options);
	write_10463(f, ((NimStringDesc*) &TMP3809));
	goptions = copyString(((NimStringDesc*) &TMP3825));
	encodevint_196256(((NI) (((NI32) (gglobaloptions_137111)))), &goptions);
	write_10463(f, goptions);
	write_10463(f, ((NimStringDesc*) &TMP3809));
	cmd = copyString(((NimStringDesc*) &TMP3826));
	encodevint_196256(((NI) (((NI32) (gcmd_137113)))), &cmd);
	write_10463(f, cmd);
	write_10463(f, ((NimStringDesc*) &TMP3809));
	write_10463(f, ((NimStringDesc*) &TMP3827));
	write_10463(f, (*w).Defines);
	write_10463(f, ((NimStringDesc*) &TMP3809));
	files = copyString(((NimStringDesc*) &TMP3828));
	i_258881 = 0;
	HEX3Atmp_258954 = 0;
	HEX3Atmp_258954 = ((*w).Files->Sup.len-1);
	res_258956 = 0;
	while (1) {
		if (!(res_258956 <= HEX3Atmp_258954)) goto LA10;
		i_258881 = res_258956;
		encodestr_196031((*w).Files->data[i_258881], &files);
		files = resizeString(files, 1);
appendString(files, ((NimStringDesc*) &TMP3809));
		res_258956 += 1;
	} LA10: ;
	write_10463(f, files);
	write_10463(f, ((NimStringDesc*) &TMP3829));
	write_10463(f, ((NimStringDesc*) &TMP3830));
	write_10463(f, (*w).Incldeps);
	write_10463(f, ((NimStringDesc*) &TMP3829));
	write_10463(f, ((NimStringDesc*) &TMP3831));
	write_10463(f, (*w).Moddeps);
	write_10463(f, ((NimStringDesc*) &TMP3809));
	write_10463(f, ((NimStringDesc*) &TMP3832));
	write_10463(f, (*w).Interf);
	write_10463(f, ((NimStringDesc*) &TMP3829));
	write_10463(f, ((NimStringDesc*) &TMP3833));
	write_10463(f, (*w).Compilerprocs);
	write_10463(f, ((NimStringDesc*) &TMP3829));
	write_10463(f, ((NimStringDesc*) &TMP3834));
	write_10463(f, (*w).Index.R);
	write_10463(f, ((NimStringDesc*) &TMP3829));
	write_10463(f, ((NimStringDesc*) &TMP3835));
	write_10463(f, (*w).Imports.R);
	write_10463(f, ((NimStringDesc*) &TMP3829));
	write_10463(f, ((NimStringDesc*) &TMP3836));
	write_10463(f, (*w).Converters);
	write_10463(f, ((NimStringDesc*) &TMP3809));
	write_10463(f, ((NimStringDesc*) &TMP3837));
	write_10463(f, (*w).Methods);
	write_10463(f, ((NimStringDesc*) &TMP3809));
	write_10463(f, ((NimStringDesc*) &TMP3838));
	write_10463(f, (*w).Init);
	write_10463(f, ((NimStringDesc*) &TMP3829));
	write_10463(f, ((NimStringDesc*) &TMP3839));
	write_10463(f, (*w).Data);
	write_10463(f, ((NimStringDesc*) &TMP3829));
	write_10463(f, ((NimStringDesc*) &TMP3840));
	fclose(f);
	BeforeRet: ;
}

N_NIMCALL(tnode188803*, myclose_259395)(tpasscontext246003* c, tnode188803* n) {
	tnode188803* result;
	trodwriter257004* w;
	NimStringDesc* LOC1;
	result = 0;
	result = process_258961(c, n);
	w = ((trodwriter257004*) (c));
	writerod_257051(w);
	LOC1 = 0;
	LOC1 = HEX2F_108477(gprojectpath_137207, gprojectname_137206);
	savemaxids_187463(LOC1);
	return result;
}
N_NOINLINE(void, rodwriteInit)(void) {
}

N_NOINLINE(void, rodwriteDatInit)(void) {
static TNimNode* TMP3803[18];
static TNimNode TMP824[19];
NTI257004.size = sizeof(trodwriter257004);
NTI257004.kind = 17;
NTI257004.base = (&NTI246003);
TMP3803[0] = &TMP824[1];
TMP824[1].kind = 1;
TMP824[1].offset = offsetof(trodwriter257004, Module);
TMP824[1].typ = (&NTI188801);
TMP824[1].name = "module";
TMP3803[1] = &TMP824[2];
TMP824[2].kind = 1;
TMP824[2].offset = offsetof(trodwriter257004, Crc);
TMP824[2].typ = (&NTI144007);
TMP824[2].name = "crc";
TMP3803[2] = &TMP824[3];
TMP824[3].kind = 1;
TMP824[3].offset = offsetof(trodwriter257004, Options);
TMP824[3].typ = (&NTI137012);
TMP824[3].name = "options";
TMP3803[3] = &TMP824[4];
TMP824[4].kind = 1;
TMP824[4].offset = offsetof(trodwriter257004, Defines);
TMP824[4].typ = (&NTI143);
TMP824[4].name = "defines";
TMP3803[4] = &TMP824[5];
TMP824[5].kind = 1;
TMP824[5].offset = offsetof(trodwriter257004, Incldeps);
TMP824[5].typ = (&NTI143);
TMP824[5].name = "inclDeps";
TMP3803[5] = &TMP824[6];
TMP824[6].kind = 1;
TMP824[6].offset = offsetof(trodwriter257004, Moddeps);
TMP824[6].typ = (&NTI143);
TMP824[6].name = "modDeps";
TMP3803[6] = &TMP824[7];
TMP824[7].kind = 1;
TMP824[7].offset = offsetof(trodwriter257004, Interf);
TMP824[7].typ = (&NTI143);
TMP824[7].name = "interf";
TMP3803[7] = &TMP824[8];
TMP824[8].kind = 1;
TMP824[8].offset = offsetof(trodwriter257004, Compilerprocs);
TMP824[8].typ = (&NTI143);
TMP824[8].name = "compilerProcs";
TMP3803[8] = &TMP824[9];
TMP824[9].kind = 1;
TMP824[9].offset = offsetof(trodwriter257004, Index);
TMP824[9].typ = (&NTI236022);
TMP824[9].name = "index";
TMP3803[9] = &TMP824[10];
TMP824[10].kind = 1;
TMP824[10].offset = offsetof(trodwriter257004, Imports);
TMP824[10].typ = (&NTI236022);
TMP824[10].name = "imports";
TMP3803[10] = &TMP824[11];
TMP824[11].kind = 1;
TMP824[11].offset = offsetof(trodwriter257004, Converters);
TMP824[11].typ = (&NTI143);
TMP824[11].name = "converters";
TMP3803[11] = &TMP824[12];
TMP824[12].kind = 1;
TMP824[12].offset = offsetof(trodwriter257004, Methods);
TMP824[12].typ = (&NTI143);
TMP824[12].name = "methods";
TMP3803[12] = &TMP824[13];
TMP824[13].kind = 1;
TMP824[13].offset = offsetof(trodwriter257004, Init);
TMP824[13].typ = (&NTI143);
TMP824[13].name = "init";
TMP3803[13] = &TMP824[14];
TMP824[14].kind = 1;
TMP824[14].offset = offsetof(trodwriter257004, Data);
TMP824[14].typ = (&NTI143);
TMP824[14].name = "data";
TMP3803[14] = &TMP824[15];
TMP824[15].kind = 1;
TMP824[15].offset = offsetof(trodwriter257004, Sstack);
TMP824[15].typ = (&NTI188805);
TMP824[15].name = "sstack";
TMP3803[15] = &TMP824[16];
TMP824[16].kind = 1;
TMP824[16].offset = offsetof(trodwriter257004, Tstack);
TMP824[16].typ = (&NTI188835);
TMP824[16].name = "tstack";
TMP3803[16] = &TMP824[17];
TMP824[17].kind = 1;
TMP824[17].offset = offsetof(trodwriter257004, Files);
TMP824[17].typ = (&NTI110805);
TMP824[17].name = "files";
TMP3803[17] = &TMP824[18];
TMP824[18].kind = 1;
TMP824[18].offset = offsetof(trodwriter257004, Origfile);
TMP824[18].typ = (&NTI143);
TMP824[18].name = "origFile";
TMP824[0].len = 18; TMP824[0].kind = 2; TMP824[0].sons = &TMP3803[0];
NTI257004.node = &TMP824[0];
NTI257006.size = sizeof(trodwriter257004*);
NTI257006.kind = 22;
NTI257006.base = (&NTI257004);
NTI257006.marker = TMP3804;
}

