/* Generated by Nim Compiler v0.12.0 */
/*   (c) 2015 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 NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Tsym227841 Tsym227841;
typedef struct Tdocumentor386007 Tdocumentor386007;
typedef struct Tnode227809 Tnode227809;
typedef struct Ttype227847 Ttype227847;
typedef struct Tlineinfo192352 Tlineinfo192352;
typedef struct Tident200021 Tident200021;
typedef struct Tnodeseq227803 Tnodeseq227803;
typedef struct Tidobj200015 Tidobj200015;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Ttypeseq227843 Ttypeseq227843;
typedef struct Tscope227835 Tscope227835;
typedef struct TY227944 TY227944;
typedef struct Tstrtable227813 Tstrtable227813;
typedef struct Tsymseq227811 Tsymseq227811;
typedef struct Tloc227823 Tloc227823;
typedef struct Ropeobj178009 Ropeobj178009;
typedef struct Tlib227827 Tlib227827;
typedef struct Rstgenerator349016 Rstgenerator349016;
typedef struct Rstnode334011 Rstnode334011;
typedef struct Stringtableobj148212 Stringtableobj148212;
typedef struct TY349035 TY349035;
typedef struct Table349053 Table349053;
typedef struct Keyvaluepairseq349056 Keyvaluepairseq349056;
typedef struct Cell48946 Cell48946;
typedef struct Cellseq48962 Cellseq48962;
typedef struct Gcheap51018 Gcheap51018;
typedef struct Gcstack51016 Gcstack51016;
typedef struct Cellset48958 Cellset48958;
typedef struct Pagedesc48954 Pagedesc48954;
typedef struct Memregion30891 Memregion30891;
typedef struct Smallchunk30843 Smallchunk30843;
typedef struct Llchunk30885 Llchunk30885;
typedef struct Bigchunk30845 Bigchunk30845;
typedef struct Intset30817 Intset30817;
typedef struct Trunk30813 Trunk30813;
typedef struct Avlnode30889 Avlnode30889;
typedef struct Gcstat51014 Gcstat51014;
typedef struct Tsrcgen249023 Tsrcgen249023;
typedef struct Trendertokseq249021 Trendertokseq249021;
typedef struct TY122218 TY122218;
typedef struct Jsonnodeobj327754 Jsonnodeobj327754;
typedef struct TY328284 TY328284;
typedef struct TY327769 TY327769;
typedef struct TY327774 TY327774;
typedef struct Tinstantiation227831 Tinstantiation227831;
typedef struct Tlistentry143022 Tlistentry143022;
typedef struct Rstnodeseq334009 Rstnodeseq334009;
typedef struct Keyvaluepairseq148210 Keyvaluepairseq148210;
typedef struct Tocentry349012 Tocentry349012;
typedef struct Keyvaluepair349059 Keyvaluepair349059;
typedef struct Basechunk30841 Basechunk30841;
typedef struct Freecell30833 Freecell30833;
typedef struct Trendertok249019 Trendertok249019;
typedef struct TY227932 TY227932;
typedef struct Keyvaluepair148208 Keyvaluepair148208;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Tlineinfo192352  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tnode227809  {
Ttype227847* typ;
Tlineinfo192352 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym227841* sym;
} S4;
struct {Tident200021* ident;
} S5;
struct {Tnodeseq227803* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
typedef N_NIMCALL_PTR(void, TY3889) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3894) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3889 marker;
TY3894 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj200015  {
  TNimObject Sup;
NI id;
};
struct  Tstrtable227813  {
NI counter;
Tsymseq227811* data;
};
struct  Tloc227823  {
NU8 k;
NU8 s;
NU16 flags;
Ttype227847* t;
Ropeobj178009* r;
Ropeobj178009* heaproot;
};
struct  Tsym227841  {
  Tidobj200015 Sup;
NU8 kind;
union{
struct {Ttypeseq227843* typeinstcache;
Tscope227835* typscope;
} S1;
struct {TY227944* procinstcache;
Tsym227841* gcunsafetyreason;
} S2;
struct {TY227944* usedgenerics;
Tstrtable227813 tab;
} S3;
struct {Tsym227841* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype227847* typ;
Tident200021* name;
Tlineinfo192352 info;
Tsym227841* owner;
NU32 flags;
Tnode227809* ast;
NU32 options;
NI position;
NI offset;
Tloc227823 loc;
Tlib227827* annex;
Tnode227809* constraint;
};
typedef N_NIMCALL_PTR(NimStringDesc*, Findfilehandler335023) (NimStringDesc* filename);
typedef N_NIMCALL_PTR(void, Msghandler335021) (NimStringDesc* filename, NI line, NI col, NU8 msgkind, NimStringDesc* arg);
typedef NimStringDesc* TY349045[5];
struct  Table349053  {
Keyvaluepairseq349056* data;
NI counter;
};
struct  Rstgenerator349016  {
  TNimObject Sup;
NU8 target;
Stringtableobj148212* config;
NI splitafter;
NI listingcounter;
TY349035* tocpart;
NIM_BOOL hastoc;
NimStringDesc* theindex;
NU8 options;
Findfilehandler335023 findfile;
Msghandler335021 msghandler;
NimStringDesc* filename;
TY349045 meta;
NimStringDesc* currentsection;
Table349053 seenindexterms;
};
typedef Ropeobj178009* Tsections386005[26];
struct  Tdocumentor386007  {
  Rstgenerator349016 Sup;
Ropeobj178009* moddesc;
NI id;
Tsections386005 toc;
Tsections386005 section;
NimStringDesc* indexvalfilename;
NimStringDesc* analytics;
Stringtableobj148212* seensymbols;
};
typedef NU8 TY215407[32];
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef NimStringDesc* TY194421[1];
struct  Cell48946  {
NI refcount;
TNimType* typ;
};
struct  Cellseq48962  {
NI len;
NI cap;
Cell48946** d;
};
struct  Cellset48958  {
NI counter;
NI max;
Pagedesc48954* head;
Pagedesc48954** data;
};
typedef Smallchunk30843* TY30906[512];
typedef Trunk30813* Trunkbuckets30815[256];
struct  Intset30817  {
Trunkbuckets30815 data;
};
struct  Memregion30891  {
NI minlargeobj;
NI maxlargeobj;
TY30906 freesmallchunks;
Llchunk30885* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk30845* freechunkslist;
Intset30817 chunkstarts;
Avlnode30889* root;
Avlnode30889* deleted;
Avlnode30889* last;
Avlnode30889* freeavlnodes;
};
struct  Gcstat51014  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap51018  {
Gcstack51016* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq48962 zct;
Cellseq48962 decstack;
Cellset48958 cycleroots;
Cellseq48962 tempstack;
NI recgclock;
Memregion30891 region;
Gcstat51014 stat;
};
struct  Tident200021  {
  Tidobj200015 Sup;
NimStringDesc* s;
Tident200021* next;
NI h;
};
struct  Tsrcgen249023  {
NI indent;
NI linelen;
NI pos;
NI idx;
Trendertokseq249021* tokens;
NimStringDesc* buf;
NI pendingnl;
NI pendingwhitespace;
Tnodeseq227803* comstack;
NU8 flags;
NIM_BOOL checkanon;
NI inpragma;
};
typedef Ropeobj178009* TY178572[1];
typedef NimStringDesc* TY195306[2];
typedef Ropeobj178009* TY545257[2];
typedef NimStringDesc* TY195293[3];
typedef Ropeobj178009* TY517578[3];
typedef NimStringDesc* TY387106[10];
typedef Ropeobj178009* TY387108[10];
typedef NimStringDesc* TY387111[9];
typedef Ropeobj178009* TY387113[9];
typedef NimStringDesc* TY388924[13];
typedef NimStringDesc* TY196829[4];
typedef Ropeobj178009* TY517575[4];
typedef NimStringDesc* TY453890[6];
typedef Ropeobj178009* TY519247[6];
struct TY122218 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
struct TY328284 {
NimStringDesc* Field0;
Jsonnodeobj327754* Field1;
};
typedef TY328284 TY388153[1];
typedef TY328284 TY387153[2];
struct  Jsonnodeobj327754  {
NU8 kind;
union{
struct {NimStringDesc* str;
} S1;
struct {NI64 num;
} S2;
struct {NF fnum;
} S3;
struct {NIM_BOOL bval;
} S4;
struct {TY327769* fields;
} S6;
struct {TY327774* elems;
} S7;
} kindU;
};
struct  Ttype227847  {
  Tidobj200015 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq227843* sons;
Tnode227809* n;
Tsym227841* owner;
Tsym227841* sym;
Tsym227841* destructor;
Tsym227841* deepcopy;
Tsym227841* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc227823 loc;
};
struct  Tscope227835  {
NI depthlevel;
Tstrtable227813 symbols;
Tnodeseq227803* usingsyms;
Tscope227835* parent;
};
struct  Ropeobj178009  {
  TNimObject Sup;
Ropeobj178009* left;
Ropeobj178009* right;
NI length;
NimStringDesc* data;
};
struct  Tlistentry143022  {
  TNimObject Sup;
Tlistentry143022* prev;
Tlistentry143022* next;
};
struct  Tlib227827  {
  Tlistentry143022 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj178009* name;
Tnode227809* path;
};
struct  Rstnode334011  {
NU8 kind;
NimStringDesc* text;
NI level;
Rstnodeseq334009* sons;
};
struct  Stringtableobj148212  {
  TNimObject Sup;
NI counter;
Keyvaluepairseq148210* data;
NU8 mode;
};
struct  Tocentry349012  {
Rstnode334011* n;
NimStringDesc* refname;
NimStringDesc* header;
};
struct Keyvaluepair349059 {
NI Field0;
NimStringDesc* Field1;
NI Field2;
};
struct  Gcstack51016  {
Gcstack51016* prev;
Gcstack51016* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY30822[8];
struct  Pagedesc48954  {
Pagedesc48954* next;
NI key;
TY30822 bits;
};
struct  Basechunk30841  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk30843  {
  Basechunk30841 Sup;
Smallchunk30843* next;
Smallchunk30843* prev;
Freecell30833* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk30885  {
NI size;
NI acc;
Llchunk30885* next;
};
struct  Bigchunk30845  {
  Basechunk30841 Sup;
Bigchunk30845* next;
Bigchunk30845* prev;
NI align;
NF data;
};
struct  Trunk30813  {
Trunk30813* next;
NI key;
TY30822 bits;
};
typedef Avlnode30889* TY30896[2];
struct  Avlnode30889  {
TY30896 link;
NI key;
NI upperbound;
NI level;
};
struct  Trendertok249019  {
NU8 kind;
NI16 length;
};
struct  Tinstantiation227831  {
Tsym227841* sym;
Ttypeseq227843* concretetypes;
TY227932* usedby;
NI compilesid;
};
struct Keyvaluepair148208 {
NimStringDesc* Field0;
NimStringDesc* Field1;
};
struct  Freecell30833  {
Freecell30833* next;
NI zerofield;
};
struct TY327769 {
  TGenericSeq Sup;
  TY328284 data[SEQ_DECL_SIZE];
};
struct Tnodeseq227803 {
  TGenericSeq Sup;
  Tnode227809* data[SEQ_DECL_SIZE];
};
struct Ttypeseq227843 {
  TGenericSeq Sup;
  Ttype227847* data[SEQ_DECL_SIZE];
};
struct TY227944 {
  TGenericSeq Sup;
  Tinstantiation227831* data[SEQ_DECL_SIZE];
};
struct Tsymseq227811 {
  TGenericSeq Sup;
  Tsym227841* data[SEQ_DECL_SIZE];
};
struct TY349035 {
  TGenericSeq Sup;
  Tocentry349012 data[SEQ_DECL_SIZE];
};
struct Keyvaluepairseq349056 {
  TGenericSeq Sup;
  Keyvaluepair349059 data[SEQ_DECL_SIZE];
};
struct Trendertokseq249021 {
  TGenericSeq Sup;
  Trendertok249019 data[SEQ_DECL_SIZE];
};
struct TY327774 {
  TGenericSeq Sup;
  Jsonnodeobj327754* data[SEQ_DECL_SIZE];
};
struct Rstnodeseq334009 {
  TGenericSeq Sup;
  Rstnode334011* data[SEQ_DECL_SIZE];
};
struct Keyvaluepairseq148210 {
  TGenericSeq Sup;
  Keyvaluepair148208 data[SEQ_DECL_SIZE];
};
struct TY227932 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(Tnode227809*, finddoccomment_386542)(Tnode227809* n);
N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s, NimStringDesc* prefix);
static N_INLINE(NI, safelen_228126)(Tnode227809* n);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(void, renderrsttoout_349724)(Rstgenerator349016* d, Rstnode334011* n, NimStringDesc** result);
N_NIMCALL(Rstnode334011*, parserst_386049)(NimStringDesc* text, NimStringDesc* filename, NI line, NI column, NIM_BOOL* hastoc, NU8 rstoptions);
N_NIMCALL(Rstnode334011*, rstparse_342320)(NimStringDesc* text, NimStringDesc* filename, NI line, NI column, NIM_BOOL* hastoc, NU8 options, Findfilehandler335023 findfile, Msghandler335021 msghandler);
N_NIMCALL(NimStringDesc*, docgenfindfile_386039)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, findfile_170539)(NimStringDesc* f);
N_NIMCALL(NimStringDesc*, HEX2F_121890)(NimStringDesc* head, NimStringDesc* tail);
N_NIMCALL(NimStringDesc*, nosgetCurrentDir)(void);
N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename);
N_NIMCALL(void, compilermsghandler_386023)(NimStringDesc* filename, NI line, NI col, NU8 msgkind, NimStringDesc* arg);
N_NIMCALL(void, globalerror_198107)(Tlineinfo192352 info, NU16 msg, NimStringDesc* arg);
static N_INLINE(Tlineinfo192352, newlineinfo_193278)(NimStringDesc* filename, NI line, NI col);
N_NIMCALL(Tlineinfo192352, newlineinfo_193266)(NI32 fileinfoidx, NI line, NI col);
N_NIMCALL(NI32, fileinfoidx_193253)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, tofilename_193652)(NI32 fileidx);
static N_INLINE(NI, tolinenumber_193839)(Tlineinfo192352 info);
static N_INLINE(NI, tocolumn_193849)(Tlineinfo192352 info);
N_NIMCALL(NimStringDesc*, nsuStrip)(NimStringDesc* s, NIM_BOOL leading, NIM_BOOL trailing, TY215407 chars);
N_NIMCALL(NimStringDesc*, nsuReplaceStr)(NimStringDesc* s, NimStringDesc* sub, NimStringDesc* by);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI start);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI first);
N_NIMCALL(Tnode227809*, parsefile_255041)(NI32 fileidx);
N_NIMCALL(Tdocumentor386007*, newdocumentor_386065)(NimStringDesc* filename, Stringtableobj148212* config);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP5019)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_NIMCALL(void, initrstgenerator_349096)(Rstgenerator349016* g, NU8 target, Stringtableobj148212* config, NimStringDesc* filename, NU8 options, Findfilehandler335023 findfile, Msghandler335021 msghandler);
N_NIMCALL(NIM_BOOL, nsthasKey)(Stringtableobj148212* t, NimStringDesc* key);
N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
N_NIMCALL(NimStringDesc*, getordefault_149020)(Stringtableobj148212* t, NimStringDesc* key);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Cell48946*, usrtocell_52646)(void* usr);
static N_INLINE(void, rtladdzct_54204)(Cell48946* c);
N_NOINLINE(void, addzct_52617)(Cellseq48962* s, Cell48946* c);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_NIMCALL(Stringtableobj148212*, nstnewStringTable)(NU8 mode);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_55022)(Cell48946* c);
static N_INLINE(NIM_BOOL, canbecycleroot_52667)(Cell48946* c);
static N_INLINE(void, rtladdcycleroot_53423)(Cell48946* c);
N_NOINLINE(void, incl_49665)(Cellset48958* s, Cell48946* cell);
static N_INLINE(void, decref_54604)(Cell48946* c);
N_NIMCALL(void, generatedoc_387218)(Tdocumentor386007* d, Tnode227809* n);
N_NIMCALL(void, add_178545)(Ropeobj178009** a, NimStringDesc* b);
N_NIMCALL(NimStringDesc*, gencomment_386354)(Tdocumentor386007* d, Tnode227809* n);
N_NIMCALL(void, documentraises_369955)(Tnode227809* n);
N_NIMCALL(void, genitem_387012)(Tdocumentor386007* d, Tnode227809* n, Tnode227809* namenode, NU8 k);
N_NIMCALL(NIM_BOOL, isvisible_386658)(Tnode227809* n);
static N_INLINE(NI, len_228098)(Tnode227809* n);
N_NIMCALL(NimStringDesc*, getname_386755)(Tdocumentor386007* d, Tnode227809* n, NI splitafter);
N_NIMCALL(NimStringDesc*, esc_349553)(NU8 target, NimStringDesc* s, NI splitafter);
N_NIMCALL(NimStringDesc*, renderdefinitionname_249155)(Tsym227841* s, NIM_BOOL noquotes);
static N_INLINE(Tnode227809*, HEX5BHEX5D_228244)(Tnode227809* n, NI i);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(void, internalerror_198172)(Tlineinfo192352 info, NimStringDesc* errmsg);
N_NIMCALL(Ropeobj178009*, rope_178322)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, getplaindocstring_386475)(Tnode227809* n);
N_NIMCALL(Ropeobj178009*, genreccomment_386385)(Tdocumentor386007* d, Tnode227809* n);
N_NIMCALL(void, inittokrender_249068)(Tsrcgen249023* r, Tnode227809* n, NU8 renderflags);
N_NIMCALL(void, getnexttok_249079)(Tsrcgen249023* r, NU8* kind, NimStringDesc** literal);
N_NIMCALL(void, dispa_386097)(Ropeobj178009** dest, NimStringDesc* xml, NimStringDesc* tex, Ropeobj178009** args, NI argsLen0);
N_NIMCALL(void, addf_179635)(Ropeobj178009** c, NimStringDesc* frmt, Ropeobj178009** args, NI argsLen0);
N_NIMCALL(NimStringDesc*, escape_378067)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, renderplainsymbolname_383013)(Tnode227809* n);
N_NIMCALL(NimStringDesc*, complexname_386890)(NU8 k, Tnode227809* n, NimStringDesc* basename);
N_NIMCALL(NimStringDesc*, renderparamtypes_385658)(Tnode227809* n, NimStringDesc* sep);
N_NIMCALL(NimStringDesc*, encodeurl_381004)(NimStringDesc* s);
N_NIMCALL(Ropeobj178009*, rope_178407)(NI64 i);
N_NIMCALL(NimStringDesc*, newuniqueplainsymbol_386862)(Tdocumentor386007* d, NimStringDesc* original);
N_NIMCALL(void, nstPut)(Stringtableobj148212* t, NimStringDesc* key, NimStringDesc* val);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NimStringDesc*, getconfigvar_169335)(NimStringDesc* key);
N_NIMCALL(Ropeobj178009*, ropeformatnamedvars_386162)(NimStringDesc* frmt, NimStringDesc** varnames, NI varnamesLen0, Ropeobj178009** varvalues, NI varvaluesLen0);
N_NIMCALL(void, add_178534)(Ropeobj178009** a, Ropeobj178009* b);
N_NIMCALL(void, internalerror_198191)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NI, getvaridx_386120)(NimStringDesc** varnames, NI varnamesLen0, NimStringDesc* id);
N_NIMCALL(NI, nsuCmpIgnoreStyle)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, rawmessage_196636)(NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_81016, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, nosextractFilename)(NimStringDesc* path);
N_NIMCALL(NIM_BOOL, iscallable_386911)(Tnode227809* n);
N_NIMCALL(void, setindexterm_349855)(Rstgenerator349016* d, NimStringDesc* id, NimStringDesc* term, NimStringDesc* linktitle, NimStringDesc* linkdesc);
N_NIMCALL(NimStringDesc*, docstringsummary_386921)(NimStringDesc* rsttext);
N_NIMCALL(NI, nsuFindChar)(NimStringDesc* s, NIM_CHAR sub, NI start);
N_NIMCALL(void, nsuDelete)(NimStringDesc** s, NI first, NI last);
N_NIMCALL(NI, nsuFindCharSet)(NimStringDesc* s, TY215407 chars, NI start);
N_NIMCALL(NI, sonslen_230387)(Tnode227809* n);
N_NIMCALL(NIM_BOOL, checkforfalse_387171)(Tnode227809* n);
N_NIMCALL(NIM_BOOL, identeq_200484)(Tident200021* id, NimStringDesc* name);
N_NIMCALL(Tnode227809*, lastson_230406)(Tnode227809* n);
N_NIMCALL(void, tracedeps_387191)(Tdocumentor386007* d, Tnode227809* n);
N_NIMCALL(NimStringDesc*, getmodulename_290018)(Tnode227809* n);
N_NIMCALL(void, writeoutput_389337)(Tdocumentor386007* d, NimStringDesc* filename, NimStringDesc* outext, NIM_BOOL usewarning);
N_NIMCALL(Ropeobj178009*, genoutfile_388988)(Tdocumentor386007* d);
N_NIMCALL(void, rendertocentries_355976)(Rstgenerator349016* d, NI* j, NI lvl, NimStringDesc** result);
N_NIMCALL(void, gensection_388918)(Tdocumentor386007* d, NU8 kind);
N_NIMCALL(NimStringDesc*, ntgetDateStr)(void);
N_NIMCALL(NimStringDesc*, ntgetClockStr)(void);
N_NIMCALL(void, writerope_179071)(FILE* f, Ropeobj178009* r);
N_NIMCALL(void, writerope_179106)(Ropeobj178009* head, NimStringDesc* filename, NIM_BOOL usewarning);
N_NIMCALL(NimStringDesc*, getoutfile_169355)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(void, generateindex_389318)(Tdocumentor386007* d);
N_NIMCALL(void, writeindexfile_349445)(Rstgenerator349016* g, NimStringDesc* outfile);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY122218* Result);
N_NIMCALL(void, commandrstaux_389382)(NimStringDesc* filename, NimStringDesc* outext);
N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, readfile_16872)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
N_NIMCALL(Jsonnodeobj327754*, generatejson_388143)(Tdocumentor386007* d, Tnode227809* n, Jsonnodeobj327754* jarray);
N_NIMCALL(Jsonnodeobj327754*, HEX25_328281)(TY328284* keyvals, NI keyvalsLen0);
N_NIMCALL(Jsonnodeobj327754*, HEX25_328205)(NimStringDesc* s);
N_NIMCALL(Jsonnodeobj327754*, genjsonitem_387141)(Tdocumentor386007* d, Tnode227809* n, Tnode227809* namenode, NU8 k);
N_NIMCALL(NimStringDesc*, HEX24_179132)(Ropeobj178009* r);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_88659, TNimType* typ);
static N_INLINE(void, HEX5BHEX5DHEX3D_330619)(Jsonnodeobj327754* obj, NimStringDesc* key, Jsonnodeobj327754* val);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_328661)(Jsonnodeobj327754* a, Jsonnodeobj327754* b);
N_NIMCALL(Jsonnodeobj327754*, newjarray_327956)(void);
N_NIMCALL(void, add_330247)(Jsonnodeobj327754* father, Jsonnodeobj327754* child);
N_NIMCALL(NimStringDesc*, pretty_332046)(Jsonnodeobj327754* node, NI indent);
N_NIMCALL(NimStringDesc*, mergeindexes_355541)(NimStringDesc* dir);
STRING_LITERAL(TMP2204, "##", 2);
STRING_LITERAL(TMP2205, "", 0);
STRING_LITERAL(TMP2727, "\015\012##", 4);
STRING_LITERAL(TMP2728, "\015\012", 2);
static NIM_CONST TY215407 TMP2729 = {
0x00, 0x3E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP5023, "doc.googleAnalytics", 19);
STRING_LITERAL(TMP5024, "<script>\015\012  (function(i,s,o,g,r,a,m){i[\'GoogleAnalyticsObject\']"
"=r;i[r]=i[r]||function(){\015\012  (i[r].q=i[r].q||[]).push(arguments)"
"},i[r].l=1*new Date();a=s.createElement(o),\015\012  m=s.getElementsBy"
"TagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\015\012"
"  })(window,document,\'script\',\'//www.google-analytics.com/analyt"
"ics.js\',\'ga\');\015\012\015\012  ga(\'create\', \'$1\', \'auto\');\015\012  ga(\'send\', \'p"
"ageview\');\015\012\015\012</script>\015\012    ", 412);
STRING_LITERAL(TMP5025, "doc.googleAnalytics", 19);
STRING_LITERAL(TMP5030, "`", 1);
STRING_LITERAL(TMP5031, "getName()", 9);
STRING_LITERAL(TMP5032, "<span class=\"Comment\">$1</span>", 31);
STRING_LITERAL(TMP5033, "\\spanComment{$1}", 16);
STRING_LITERAL(TMP5034, "<span class=\"Keyword\">$1</span>", 31);
STRING_LITERAL(TMP5035, "\\spanKeyword{$1}", 16);
STRING_LITERAL(TMP5036, "<span class=\"Operator\">$1</span>", 32);
STRING_LITERAL(TMP5037, "\\spanOperator{$1}", 17);
STRING_LITERAL(TMP5038, "<span class=\"StringLit\">$1</span>", 33);
STRING_LITERAL(TMP5039, "\\spanStringLit{$1}", 18);
STRING_LITERAL(TMP5040, "<span class=\"CharLit\">$1</span>", 31);
STRING_LITERAL(TMP5041, "\\spanCharLit{$1}", 16);
STRING_LITERAL(TMP5042, "<span class=\"DecNumber\">$1</span>", 33);
STRING_LITERAL(TMP5043, "\\spanDecNumber{$1}", 18);
STRING_LITERAL(TMP5044, "<span class=\"FloatNumber\">$1</span>", 35);
STRING_LITERAL(TMP5045, "\\spanFloatNumber{$1}", 20);
STRING_LITERAL(TMP5046, "<span class=\"Identifier\">$1</span>", 34);
STRING_LITERAL(TMP5047, "\\spanIdentifier{$1}", 19);
STRING_LITERAL(TMP5048, "<span class=\"Other\">$1</span>", 29);
STRING_LITERAL(TMP5049, "\\spanOther{$1}", 14);
STRING_LITERAL(TMP5059, ",", 1);
STRING_LITERAL(TMP5060, ".m,", 3);
STRING_LITERAL(TMP5061, ".e,", 3);
STRING_LITERAL(TMP5062, ".i,", 3);
STRING_LITERAL(TMP5063, ".t,", 3);
STRING_LITERAL(TMP5064, ".c,", 3);
STRING_LITERAL(TMP5070, "_", 1);
STRING_LITERAL(TMP5071, "doc.item.seesrc", 15);
STRING_LITERAL(TMP5072, "$", 1);
STRING_LITERAL(TMP5073, "ropeFormatNamedVars", 19);
STRING_LITERAL(TMP5074, "}", 1);
STRING_LITERAL(TMP5076, "path", 4);
STRING_LITERAL(TMP5077, "line", 4);
NIM_CONST TY195306 TMP5075 = {((NimStringDesc*) &TMP5076),
((NimStringDesc*) &TMP5077)}
;
STRING_LITERAL(TMP5078, "$1", 2);
STRING_LITERAL(TMP5080, "url", 3);
NIM_CONST TY195293 TMP5079 = {((NimStringDesc*) &TMP5076),
((NimStringDesc*) &TMP5077),
((NimStringDesc*) &TMP5080)}
;
STRING_LITERAL(TMP5081, "doc.item", 8);
STRING_LITERAL(TMP5083, "name", 4);
STRING_LITERAL(TMP5084, "header", 6);
STRING_LITERAL(TMP5085, "desc", 4);
STRING_LITERAL(TMP5086, "itemID", 6);
STRING_LITERAL(TMP5087, "header_plain", 12);
STRING_LITERAL(TMP5088, "itemSym", 7);
STRING_LITERAL(TMP5089, "itemSymOrID", 11);
STRING_LITERAL(TMP5090, "itemSymEnc", 10);
STRING_LITERAL(TMP5091, "itemSymOrIDEnc", 14);
STRING_LITERAL(TMP5092, "seeSrc", 6);
NIM_CONST TY387106 TMP5082 = {((NimStringDesc*) &TMP5083),
((NimStringDesc*) &TMP5084),
((NimStringDesc*) &TMP5085),
((NimStringDesc*) &TMP5086),
((NimStringDesc*) &TMP5087),
((NimStringDesc*) &TMP5088),
((NimStringDesc*) &TMP5089),
((NimStringDesc*) &TMP5090),
((NimStringDesc*) &TMP5091),
((NimStringDesc*) &TMP5092)}
;
STRING_LITERAL(TMP5093, "doc.item.toc", 12);
NIM_CONST TY387111 TMP5094 = {((NimStringDesc*) &TMP5083),
((NimStringDesc*) &TMP5084),
((NimStringDesc*) &TMP5085),
((NimStringDesc*) &TMP5086),
((NimStringDesc*) &TMP5087),
((NimStringDesc*) &TMP5088),
((NimStringDesc*) &TMP5089),
((NimStringDesc*) &TMP5090),
((NimStringDesc*) &TMP5091)}
;
STRING_LITERAL(TMP5095, " : ", 3);
STRING_LITERAL(TMP5096, "\342\200\246", 3);
static NIM_CONST TY215407 TMP5097 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x04,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP5098, "false", 5);
STRING_LITERAL(TMP5099, ", ", 2);
STRING_LITERAL(TMP5100, "<a class=\"reference external\" href=\"$1.html\">$1</a>", 51);
STRING_LITERAL(TMP5105, "Imports", 7);
STRING_LITERAL(TMP5106, "Types", 5);
STRING_LITERAL(TMP5107, "Vars", 4);
STRING_LITERAL(TMP5108, "Lets", 4);
STRING_LITERAL(TMP5109, "Consts", 6);
STRING_LITERAL(TMP5110, "Procs", 5);
STRING_LITERAL(TMP5111, "Methods", 7);
STRING_LITERAL(TMP5112, "Iterators", 9);
STRING_LITERAL(TMP5113, "Converters", 10);
STRING_LITERAL(TMP5114, "Macros", 6);
STRING_LITERAL(TMP5115, "Templates", 9);
NIM_CONST TY388924 sectionnames_388922 = {((NimStringDesc*) &TMP5105),
((NimStringDesc*) &TMP5106),
((NimStringDesc*) &TMP5107),
((NimStringDesc*) &TMP5108),
((NimStringDesc*) &TMP5109),
((NimStringDesc*) &TMP5107),
((NimStringDesc*) &TMP5110),
((NimStringDesc*) &TMP5111),
((NimStringDesc*) &TMP5112),
((NimStringDesc*) &TMP5112),
((NimStringDesc*) &TMP5113),
((NimStringDesc*) &TMP5114),
((NimStringDesc*) &TMP5115)}
;
STRING_LITERAL(TMP5116, "doc.section", 11);
STRING_LITERAL(TMP5118, "sectionid", 9);
STRING_LITERAL(TMP5119, "sectionTitle", 12);
STRING_LITERAL(TMP5120, "sectionTitleID", 14);
STRING_LITERAL(TMP5121, "content", 7);
NIM_CONST TY196829 TMP5117 = {((NimStringDesc*) &TMP5118),
((NimStringDesc*) &TMP5119),
((NimStringDesc*) &TMP5120),
((NimStringDesc*) &TMP5121)}
;
STRING_LITERAL(TMP5122, "doc.section.toc", 15);
STRING_LITERAL(TMP5123, "doc.toc", 7);
NIM_CONST TY194421 TMP5124 = {((NimStringDesc*) &TMP5121)}
;
STRING_LITERAL(TMP5125, "Module ", 7);
STRING_LITERAL(TMP5126, "doc.body_toc", 12);
STRING_LITERAL(TMP5127, "doc.body_no_toc", 15);
STRING_LITERAL(TMP5129, "title", 5);
STRING_LITERAL(TMP5130, "tableofcontents", 15);
STRING_LITERAL(TMP5131, "moduledesc", 10);
STRING_LITERAL(TMP5132, "date", 4);
STRING_LITERAL(TMP5133, "time", 4);
NIM_CONST TY453890 TMP5128 = {((NimStringDesc*) &TMP5129),
((NimStringDesc*) &TMP5130),
((NimStringDesc*) &TMP5131),
((NimStringDesc*) &TMP5132),
((NimStringDesc*) &TMP5133),
((NimStringDesc*) &TMP5121)}
;
STRING_LITERAL(TMP5134, "doc.file", 8);
STRING_LITERAL(TMP5136, "author", 6);
STRING_LITERAL(TMP5137, "version", 7);
STRING_LITERAL(TMP5138, "analytics", 9);
NIM_CONST TY387111 TMP5135 = {((NimStringDesc*) &TMP5129),
((NimStringDesc*) &TMP5130),
((NimStringDesc*) &TMP5131),
((NimStringDesc*) &TMP5132),
((NimStringDesc*) &TMP5133),
((NimStringDesc*) &TMP5121),
((NimStringDesc*) &TMP5136),
((NimStringDesc*) &TMP5137),
((NimStringDesc*) &TMP5138)}
;
STRING_LITERAL(TMP5139, "html", 4);
STRING_LITERAL(TMP5140, ".idx", 4);
STRING_LITERAL(TMP5146, "txt", 3);
STRING_LITERAL(TMP5148, "\\-", 2);
STRING_LITERAL(TMP5149, "tex", 3);
STRING_LITERAL(TMP5157, "comment", 7);
STRING_LITERAL(TMP5158, "type", 4);
STRING_LITERAL(TMP5159, "description", 11);
STRING_LITERAL(TMP5160, "code", 4);
STRING_LITERAL(TMP5170, "json", 4);
STRING_LITERAL(TMP5209, "Index", 5);
STRING_LITERAL(TMP5210, "theindex", 8);
extern NI32 gprojectmainidx_169238;
extern TNimType NTI349016; /* RstGenerator */
TNimType NTI386007; /* TDocumentor */
extern TNimType NTI178007; /* Rope */
extern TNimType NTI108; /* int */
TNimType NTI386005; /* TSections */
extern TNimType NTI149; /* string */
extern TNimType NTI148214; /* StringTableRef */
TNimType NTI386009; /* PDoc */
extern NU8 gcmd_169134;
extern Stringtableobj148212* gconfigvars_169230;
extern Gcheap51018 gch_51059;
extern NimStringDesc* gprojectfull_169236;
extern NimStringDesc* docseesrcurl_169139;
extern NU32 gglobaloptions_169132;
extern NimStringDesc* outfile_169138;
extern NimStringDesc* splitter_349489;
extern TNimType NTI227441; /* TSymKind */

static N_INLINE(NI, safelen_228126)(Tnode227809* n) {
	NI result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*n).kind >= ((NU8) 0) && (*n).kind <= ((NU8) 23));
		if (LOC3) goto LA4;
		LOC3 = (*n).kindU.S6.sons == 0;
		LA4: ;
		if (!LOC3) goto LA5;
		result = ((NI) 0);
	}
	goto LA1;
	LA5: ;
	{
		result = ((*n).kindU.S6.sons ? (*n).kindU.S6.sons->Sup.len : 0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode227809*, finddoccomment_386542)(Tnode227809* n) {
	Tnode227809* result;
{	result = 0;
	{
		if (!(n == NIM_NIL)) goto LA3;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = !((*n).comment == 0);
		if (!(LOC7)) goto LA8;
		LOC7 = nsuStartsWith((*n).comment, ((NimStringDesc*) &TMP2204));
		LA8: ;
		if (!LOC7) goto LA9;
		result = n;
		goto BeforeRet;
	}
	LA9: ;
	{
		NI i_386572;
		NI HEX3Atmp_386587;
		NI LOC12;
		NI res_386590;
		i_386572 = 0;
		HEX3Atmp_386587 = 0;
		LOC12 = 0;
		LOC12 = safelen_228126(n);
		HEX3Atmp_386587 = (NI)(LOC12 - ((NI) 1));
		res_386590 = ((NI) 0);
		{
			while (1) {
				if (!(res_386590 <= HEX3Atmp_386587)) goto LA14;
				i_386572 = res_386590;
				result = finddoccomment_386542((*n).kindU.S6.sons->data[i_386572]);
				{
					if (!!((result == NIM_NIL))) goto LA17;
					goto BeforeRet;
				}
				LA17: ;
				res_386590 += ((NI) 1);
			} LA14: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NimStringDesc*, docgenfindfile_386039)(NimStringDesc* s) {
	NimStringDesc* result;
	result = 0;
	result = findfile_170539(s);
	{
		NimStringDesc* LOC5;
		if (!((result ? result->Sup.len : 0) == ((NI) 0))) goto LA3;
		LOC5 = 0;
		LOC5 = nosgetCurrentDir();
		result = HEX2F_121890(LOC5, s);
		{
			NIM_BOOL LOC8;
			LOC8 = 0;
			LOC8 = nosexistsFile(result);
			if (!!(LOC8)) goto LA9;
			result = copyString(((NimStringDesc*) &TMP2205));
		}
		LA9: ;
	}
	LA3: ;
	return result;
}

static N_INLINE(Tlineinfo192352, newlineinfo_193278)(NimStringDesc* filename, NI line, NI col) {
	Tlineinfo192352 result;
	NI32 LOC1;
	memset((void*)(&result), 0, sizeof(result));
	LOC1 = 0;
	LOC1 = fileinfoidx_193253(filename);
	result = newlineinfo_193266(LOC1, line, col);
	return result;
}

N_NIMCALL(void, compilermsghandler_386023)(NimStringDesc* filename, NI line, NI col, NU8 msgkind, NimStringDesc* arg) {
	NU16 k;
	Tlineinfo192352 LOC11;
	k = 0;
	switch (msgkind) {
	case ((NU8) 0):
	{
		k = ((NU16) 3);
	}
	break;
	case ((NU8) 1):
	{
		k = ((NU16) 193);
	}
	break;
	case ((NU8) 2):
	{
		k = ((NU16) 196);
	}
	break;
	case ((NU8) 3):
	{
		k = ((NU16) 198);
	}
	break;
	case ((NU8) 4):
	{
		k = ((NU16) 197);
	}
	break;
	case ((NU8) 5):
	{
		k = ((NU16) 31);
	}
	break;
	case ((NU8) 6):
	{
		k = ((NU16) 245);
	}
	break;
	case ((NU8) 7):
	{
		k = ((NU16) 246);
	}
	break;
	case ((NU8) 8):
	{
		k = ((NU16) 247);
	}
	break;
	case ((NU8) 9):
	{
		k = ((NU16) 248);
	}
	break;
	}
	LOC11 = newlineinfo_193278(filename, line, col);
	globalerror_198107(LOC11, k, arg);
}

N_NIMCALL(Rstnode334011*, parserst_386049)(NimStringDesc* text, NimStringDesc* filename, NI line, NI column, NIM_BOOL* hastoc, NU8 rstoptions) {
	Rstnode334011* result;
	result = 0;
	result = rstparse_342320(text, filename, line, column, hastoc, rstoptions, docgenfindfile_386039, compilermsghandler_386023);
	return result;
}

static N_INLINE(NI, tolinenumber_193839)(Tlineinfo192352 info) {
	NI result;
	result = 0;
	result = ((NI) (info.line));
	return result;
}

static N_INLINE(NI, tocolumn_193849)(Tlineinfo192352 info) {
	NI result;
	result = 0;
	result = ((NI) (info.col));
	return result;
}

N_NIMCALL(NimStringDesc*, extractdoccomment_386609)(Tsym227841* s, Tdocumentor386007* d) {
	NimStringDesc* result;
	Tnode227809* n;
	result = 0;
	n = finddoccomment_386542((*s).ast);
	result = copyString(((NimStringDesc*) &TMP2205));
	{
		if (!!(n == 0)) goto LA3;
		{
			NIM_BOOL dummyhastoc;
			Rstgenerator349016* LOC9;
			NimStringDesc* LOC10;
			NI LOC11;
			NI LOC12;
			Rstnode334011* LOC13;
			if (!!(d == 0)) goto LA7;
			dummyhastoc = 0;
			LOC9 = 0;
			LOC9 = &d->Sup;
			LOC10 = 0;
			LOC10 = tofilename_193652((*n).info.fileindex);
			LOC11 = 0;
			LOC11 = tolinenumber_193839((*n).info);
			LOC12 = 0;
			LOC12 = tocolumn_193849((*n).info);
			LOC13 = 0;
			LOC13 = parserst_386049((*n).comment, LOC10, LOC11, LOC12, (&dummyhastoc), ((*d).Sup.options | 1));
			renderrsttoout_349724(LOC9, LOC13, (&result));
		}
		goto LA5;
		LA7: ;
		{
			NimStringDesc* LOC15;
			NimStringDesc* LOC16;
			LOC15 = 0;
			LOC15 = copyStr((*n).comment, ((NI) 2));
			LOC16 = 0;
			LOC16 = nsuReplaceStr(LOC15, ((NimStringDesc*) &TMP2727), ((NimStringDesc*) &TMP2728));
			result = nsuStrip(LOC16, NIM_TRUE, NIM_TRUE, TMP2729);
		}
		LA5: ;
	}
	LA3: ;
	return result;
}
N_NIMCALL(void, TMP5019)(void* p, NI op) {
	Tdocumentor386007* a;
	NI LOC1;
	NI LOC2;
	NI LOC3;
	a = (Tdocumentor386007*)p;
	nimGCvisit((void*)(*a).Sup.config, op);
	nimGCvisit((void*)(*a).Sup.tocpart, op);
	nimGCvisit((void*)(*a).Sup.theindex, op);
	nimGCvisit((void*)(*a).Sup.filename, op);
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < 5; LOC1++) {
	nimGCvisit((void*)(*a).Sup.meta[LOC1], op);
	}
	nimGCvisit((void*)(*a).Sup.currentsection, op);
	nimGCvisit((void*)(*a).Sup.seenindexterms.data, op);
	nimGCvisit((void*)(*a).moddesc, op);
	LOC2 = 0;
	for (LOC2 = 0; LOC2 < 26; LOC2++) {
	nimGCvisit((void*)(*a).toc[LOC2], op);
	}
	LOC3 = 0;
	for (LOC3 = 0; LOC3 < 26; LOC3++) {
	nimGCvisit((void*)(*a).section[LOC3], op);
	}
	nimGCvisit((void*)(*a).indexvalfilename, op);
	nimGCvisit((void*)(*a).analytics, op);
	nimGCvisit((void*)(*a).seensymbols, op);
}

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

static N_INLINE(void, rtladdzct_54204)(Cell48946* c) {
	addzct_52617((&gch_51059.zct), c);
}

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

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

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

static N_INLINE(void, rtladdcycleroot_53423)(Cell48946* c) {
	{
		if (!!((((NI) ((NI)((*c).refcount & ((NI) 3)))) == ((NI) 3)))) goto LA3;
		(*c).refcount = (NI)((NI)((*c).refcount & ((NI) -4)) | ((NI) 3));
		incl_49665((&gch_51059.cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_55022)(Cell48946* c) {
	(*c).refcount = (NI)((NU64)((*c).refcount) + (NU64)(((NI) 8)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_52667(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_53423(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_54604)(Cell48946* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA3;
		rtladdzct_54204(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_52667(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_53423(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		Cell48946* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_52646(src);
		incref_55022(LOC5);
	}
	LA3: ;
	{
		Cell48946* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_52646((*dest));
		decref_54604(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

N_NIMCALL(Tdocumentor386007*, newdocumentor_386065)(NimStringDesc* filename, Stringtableobj148212* config) {
	Tdocumentor386007* result;
	Rstgenerator349016* LOC1;
	NU8 LOC2;
	result = 0;
	result = (Tdocumentor386007*) newObj((&NTI386009), sizeof(Tdocumentor386007));
	(*result).Sup.Sup.m_type = (&NTI386007);
	LOC1 = 0;
	LOC1 = &result->Sup;
	LOC2 = 0;
	{
		if (!!((gcmd_169134 == ((NU8) 17)))) goto LA5;
		LOC2 = ((NU8) 0);
	}
	goto LA3;
	LA5: ;
	{
		LOC2 = ((NU8) 1);
	}
	LA3: ;
	initrstgenerator_349096(LOC1, LOC2, gconfigvars_169230, filename, 4, docgenfindfile_386039, compilermsghandler_386023);
	{
		NIM_BOOL LOC10;
		TY194421 LOC13;
		LOC10 = 0;
		LOC10 = nsthasKey(config, ((NimStringDesc*) &TMP5023));
		if (!LOC10) goto LA11;
		memset((void*)LOC13, 0, sizeof(LOC13));
		LOC13[0] = getordefault_149020(config, ((NimStringDesc*) &TMP5025));
		asgnRefNoCycle((void**) (&(*result).analytics), nsuFormatOpenArray(((NimStringDesc*) &TMP5024), LOC13, 1));
	}
	goto LA8;
	LA11: ;
	{
		NimStringDesc* LOC15;
		LOC15 = 0;
		LOC15 = (*result).analytics; (*result).analytics = copyStringRC1(((NimStringDesc*) &TMP2205));
		if (LOC15) nimGCunrefNoCycle(LOC15);
	}
	LA8: ;
	asgnRef((void**) (&(*result).seensymbols), nstnewStringTable(((NU8) 1)));
	(*result).id = ((NI) 100);
	return result;
}

N_NIMCALL(NimStringDesc*, gencomment_386354)(Tdocumentor386007* d, Tnode227809* n) {
	NimStringDesc* result;
	NIM_BOOL dummyhastoc;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP2205));
	dummyhastoc = 0;
	{
		NIM_BOOL LOC3;
		Rstgenerator349016* LOC7;
		NimStringDesc* LOC8;
		NI LOC9;
		NI LOC10;
		Rstnode334011* LOC11;
		LOC3 = 0;
		LOC3 = !(((*n).comment == NIM_NIL));
		if (!(LOC3)) goto LA4;
		LOC3 = nsuStartsWith((*n).comment, ((NimStringDesc*) &TMP2204));
		LA4: ;
		if (!LOC3) goto LA5;
		LOC7 = 0;
		LOC7 = &d->Sup;
		LOC8 = 0;
		LOC8 = tofilename_193652((*n).info.fileindex);
		LOC9 = 0;
		LOC9 = tolinenumber_193839((*n).info);
		LOC10 = 0;
		LOC10 = tocolumn_193849((*n).info);
		LOC11 = 0;
		LOC11 = parserst_386049((*n).comment, LOC8, LOC9, LOC10, (&dummyhastoc), ((*d).Sup.options | 1));
		renderrsttoout_349724(LOC7, LOC11, (&result));
	}
	LA5: ;
	return result;
}

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

N_NIMCALL(NIM_BOOL, isvisible_386658)(Tnode227809* n) {
	NIM_BOOL result;
	result = 0;
	result = NIM_FALSE;
	{
		if (!((*n).kind == ((NU8) 31))) goto LA3;
		{
			NIM_BOOL LOC7;
			NI LOC8;
			Tident200021* v;
			NIM_BOOL LOC12;
			LOC7 = 0;
			LOC8 = 0;
			LOC8 = len_228098(n);
			LOC7 = (LOC8 == ((NI) 2));
			if (!(LOC7)) goto LA9;
			LOC7 = ((*(*n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 2));
			LA9: ;
			if (!LOC7) goto LA10;
			v = (*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S5.ident;
			LOC12 = 0;
			LOC12 = ((*v).Sup.id == ((NI) 76));
			if (LOC12) goto LA13;
			LOC12 = ((*v).Sup.id == ((NI) 77));
			LA13: ;
			result = LOC12;
		}
		LA10: ;
	}
	goto LA1;
	LA3: ;
	{
		if (!((*n).kind == ((NU8) 3))) goto LA15;
		result = ((22 & (*(*n).kindU.S4.sym).flags) == 2);
	}
	goto LA1;
	LA15: ;
	{
		if (!((*n).kind == ((NU8) 43))) goto LA18;
		result = isvisible_386658((*n).kindU.S6.sons->data[((NI) 0)]);
	}
	goto LA1;
	LA18: ;
	LA1: ;
	return result;
}

static N_INLINE(Tnode227809*, HEX5BHEX5D_228244)(Tnode227809* n, NI i) {
	Tnode227809* result;
	result = 0;
	result = (*n).kindU.S6.sons->data[i];
	return result;
}

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

N_NIMCALL(NimStringDesc*, getname_386755)(Tdocumentor386007* d, Tnode227809* n, NI splitafter) {
	NimStringDesc* result;
	result = 0;
	switch ((*n).kind) {
	case ((NU8) 31):
	{
		result = getname_386755(d, (*n).kindU.S6.sons->data[((NI) 1)], splitafter);
	}
	break;
	case ((NU8) 43):
	{
		result = getname_386755(d, (*n).kindU.S6.sons->data[((NI) 0)], splitafter);
	}
	break;
	case ((NU8) 3):
	{
		NimStringDesc* LOC4;
		LOC4 = 0;
		LOC4 = renderdefinitionname_249155((*n).kindU.S4.sym, NIM_FALSE);
		result = esc_349553((*d).Sup.target, LOC4, splitafter);
	}
	break;
	case ((NU8) 2):
	{
		result = esc_349553((*d).Sup.target, (*(*n).kindU.S5.ident).s, splitafter);
	}
	break;
	case ((NU8) 53):
	{
		NimStringDesc* LOC13;
		result = esc_349553((*d).Sup.target, ((NimStringDesc*) &TMP5030), ((NI) -1));
		{
			NI i_386785;
			NI HEX3Atmp_386787;
			NI LOC8;
			NI res_386790;
			i_386785 = 0;
			HEX3Atmp_386787 = 0;
			LOC8 = 0;
			LOC8 = len_228098(n);
			HEX3Atmp_386787 = (LOC8 - 1);
			res_386790 = ((NI) 0);
			{
				while (1) {
					Tnode227809* LOC11;
					NimStringDesc* LOC12;
					if (!(res_386790 <= HEX3Atmp_386787)) goto LA10;
					i_386785 = res_386790;
					LOC11 = 0;
					LOC11 = HEX5BHEX5D_228244(n, i_386785);
					LOC12 = 0;
					LOC12 = getname_386755(d, LOC11, splitafter);
					result = resizeString(result, LOC12->Sup.len + 0);
appendString(result, LOC12);
					res_386790 += ((NI) 1);
				} LA10: ;
			}
		}
		LOC13 = 0;
		LOC13 = esc_349553((*d).Sup.target, ((NimStringDesc*) &TMP5030), ((NI) -1));
		result = resizeString(result, LOC13->Sup.len + 0);
appendString(result, LOC13);
	}
	break;
	default:
	{
		internalerror_198172((*n).info, ((NimStringDesc*) &TMP5031));
		result = copyString(((NimStringDesc*) &TMP2205));
	}
	break;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, getplaindocstring_386475)(Tnode227809* n) {
	NimStringDesc* result;
{	result = 0;
	result = copyString(((NimStringDesc*) &TMP2205));
	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = !(((*n).comment == NIM_NIL));
		if (!(LOC7)) goto LA8;
		LOC7 = nsuStartsWith((*n).comment, ((NimStringDesc*) &TMP2204));
		LA8: ;
		if (!LOC7) goto LA9;
		result = copyString((*n).comment);
	}
	LA9: ;
	{
		if (!((result ? result->Sup.len : 0) < ((NI) 1))) goto LA13;
		{
			if (!!(((*n).kind >= ((NU8) 1) && (*n).kind <= ((NU8) 23)))) goto LA17;
			{
				NI i_386517;
				NI HEX3Atmp_386520;
				NI LOC20;
				NI res_386523;
				i_386517 = 0;
				HEX3Atmp_386520 = 0;
				LOC20 = 0;
				LOC20 = len_228098(n);
				HEX3Atmp_386520 = (NI)(LOC20 - ((NI) 1));
				res_386523 = ((NI) 0);
				{
					while (1) {
						if (!(res_386523 <= HEX3Atmp_386520)) goto LA22;
						i_386517 = res_386523;
						result = getplaindocstring_386475((*n).kindU.S6.sons->data[i_386517]);
						{
							if (!(((NI) 0) < (result ? result->Sup.len : 0))) goto LA25;
							goto BeforeRet;
						}
						LA25: ;
						res_386523 += ((NI) 1);
					} LA22: ;
				}
			}
		}
		LA17: ;
	}
	LA13: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ropeobj178009*, genreccomment_386385)(Tdocumentor386007* d, Tnode227809* n) {
	Ropeobj178009* result;
	NimStringDesc* LOC5;
{	result = 0;
	{
		if (!(n == NIM_NIL)) goto LA3;
		result = NIM_NIL;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = gencomment_386354(d, n);
	result = rope_178322(LOC5);
	{
		if (!(result == NIM_NIL)) goto LA8;
		{
			if (!!(((*n).kind >= ((NU8) 1) && (*n).kind <= ((NU8) 23) || (*n).kind == ((NU8) 150)))) goto LA12;
			{
				NI i_386437;
				NI HEX3Atmp_386453;
				NI LOC15;
				NI res_386456;
				i_386437 = 0;
				HEX3Atmp_386453 = 0;
				LOC15 = 0;
				LOC15 = len_228098(n);
				HEX3Atmp_386453 = (NI)(LOC15 - ((NI) 1));
				res_386456 = ((NI) 0);
				{
					while (1) {
						if (!(res_386456 <= HEX3Atmp_386453)) goto LA17;
						i_386437 = res_386456;
						result = genreccomment_386385(d, (*n).kindU.S6.sons->data[i_386437]);
						{
							if (!!((result == NIM_NIL))) goto LA20;
							goto BeforeRet;
						}
						LA20: ;
						res_386456 += ((NI) 1);
					} LA17: ;
				}
			}
		}
		LA12: ;
	}
	goto LA6;
	LA8: ;
	{
		NimStringDesc* LOC23;
		LOC23 = 0;
		LOC23 = (*n).comment; (*n).comment = copyStringRC1(NIM_NIL);
		if (LOC23) nimGCunrefNoCycle(LOC23);
	}
	LA6: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, dispa_386097)(Ropeobj178009** dest, NimStringDesc* xml, NimStringDesc* tex, Ropeobj178009** args, NI argsLen0) {
	{
		if (!!((gcmd_169134 == ((NU8) 17)))) goto LA3;
		addf_179635(dest, xml, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		addf_179635(dest, tex, args, argsLen0);
	}
	LA1: ;
}

N_NIMCALL(NimStringDesc*, complexname_386890)(NU8 k, Tnode227809* n, NimStringDesc* basename) {
	NimStringDesc* result;
	result = 0;
	result = copyString(basename);
	switch (k) {
	case ((NU8) 12):
	{
		result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TMP5059));
	}
	break;
	case ((NU8) 17):
	{
		result = resizeString(result, 3);
appendString(result, ((NimStringDesc*) &TMP5060));
	}
	break;
	case ((NU8) 13):
	{
		result = resizeString(result, 3);
appendString(result, ((NimStringDesc*) &TMP5061));
	}
	break;
	case ((NU8) 14):
	{
		result = resizeString(result, 3);
appendString(result, ((NimStringDesc*) &TMP5062));
	}
	break;
	case ((NU8) 18):
	{
		result = resizeString(result, 3);
appendString(result, ((NimStringDesc*) &TMP5063));
	}
	break;
	case ((NU8) 16):
	{
		result = resizeString(result, 3);
appendString(result, ((NimStringDesc*) &TMP5064));
	}
	break;
	default:
	{
	}
	break;
	}
	{
		NIM_BOOL LOC10;
		NI LOC11;
		Tnode227809* LOC13;
		Tnode227809* LOC16;
		NimStringDesc* LOC17;
		LOC10 = 0;
		LOC11 = 0;
		LOC11 = len_228098(n);
		LOC10 = (((NI) 3) < LOC11);
		if (!(LOC10)) goto LA12;
		LOC13 = 0;
		LOC13 = HEX5BHEX5D_228244(n, ((NI) 3));
		LOC10 = ((*LOC13).kind == ((NU8) 76));
		LA12: ;
		if (!LOC10) goto LA14;
		LOC16 = 0;
		LOC16 = HEX5BHEX5D_228244(n, ((NI) 3));
		LOC17 = 0;
		LOC17 = renderparamtypes_385658(LOC16, ((NimStringDesc*) &TMP5059));
		result = resizeString(result, LOC17->Sup.len + 0);
appendString(result, LOC17);
	}
	LA14: ;
	return result;
}

N_NIMCALL(NimStringDesc*, newuniqueplainsymbol_386862)(Tdocumentor386007* d, NimStringDesc* original) {
	NimStringDesc* result;
	NI count;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = nsthasKey((*d).seensymbols, original);
		if (!!(LOC3)) goto LA4;
		result = copyString(original);
		nstPut((*d).seensymbols, original, ((NimStringDesc*) &TMP2205));
		goto BeforeRet;
	}
	LA4: ;
	count = ((NI) 2);
	{
		while (1) {
			NimStringDesc* LOC8;
			NimStringDesc* LOC9;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = nimIntToStr(count);
			LOC8 = rawNewString(original->Sup.len + LOC9->Sup.len + 1);
appendString(LOC8, original);
appendString(LOC8, ((NimStringDesc*) &TMP5070));
appendString(LOC8, LOC9);
			result = LOC8;
			{
				NIM_BOOL LOC12;
				LOC12 = 0;
				LOC12 = nsthasKey((*d).seensymbols, result);
				if (!!(LOC12)) goto LA13;
				nstPut((*d).seensymbols, result, ((NimStringDesc*) &TMP2205));
				goto LA6;
			}
			LA13: ;
			count += ((NI) 1);
		}
	} LA6: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NI, getvaridx_386120)(NimStringDesc** varnames, NI varnamesLen0, NimStringDesc* id) {
	NI result;
{	result = 0;
	{
		NI i_386138;
		NI HEX3Atmp_386140;
		NI res_386143;
		i_386138 = 0;
		HEX3Atmp_386140 = 0;
		HEX3Atmp_386140 = (varnamesLen0-1);
		res_386143 = ((NI) 0);
		{
			while (1) {
				if (!(res_386143 <= HEX3Atmp_386140)) goto LA3;
				i_386138 = res_386143;
				{
					NI LOC6;
					LOC6 = 0;
					LOC6 = nsuCmpIgnoreStyle(varnames[i_386138], id);
					if (!(LOC6 == ((NI) 0))) goto LA7;
					result = i_386138;
					goto BeforeRet;
				}
				LA7: ;
				res_386143 += ((NI) 1);
			} LA3: ;
		}
	}
	result = ((NI) -1);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ropeobj178009*, ropeformatnamedvars_386162)(NimStringDesc* frmt, NimStringDesc** varnames, NI varnamesLen0, Ropeobj178009** varvalues, NI varvaluesLen0) {
	Ropeobj178009* result;
	NI i;
	NI L;
	NI num;
	result = 0;
	i = ((NI) 0);
	L = (frmt ? frmt->Sup.len : 0);
	result = NIM_NIL;
	num = ((NI) 0);
	{
		while (1) {
			NI start;
			if (!(i < L)) goto LA2;
			{
				if (!((NU8)(frmt->data[i]) == (NU8)(36))) goto LA5;
				i += ((NI) 1);
				switch (((NU8)(frmt->data[i]))) {
				case 35:
				{
					add_178534(&result, varvalues[num]);
					num += ((NI) 1);
					i += ((NI) 1);
				}
				break;
				case 36:
				{
					add_178545(&result, ((NimStringDesc*) &TMP5072));
					i += ((NI) 1);
				}
				break;
				case 48 ... 57:
				{
					NI j;
					j = ((NI) 0);
					{
						while (1) {
							j = (NI)((NI)((NI)(j * ((NI) 10)) + ((NI) (((NU8)(frmt->data[i]))))) - ((NI) 48));
							i += ((NI) 1);
							{
								NIM_BOOL LOC14;
								LOC14 = 0;
								LOC14 = ((NI)((NI)(L + ((NI) 0)) - ((NI) 1)) < i);
								if (LOC14) goto LA15;
								LOC14 = !((((NU8)(frmt->data[i])) >= ((NU8)(48)) && ((NU8)(frmt->data[i])) <= ((NU8)(57))));
								LA15: ;
								if (!LOC14) goto LA16;
								goto LA10;
							}
							LA16: ;
						}
					} LA10: ;
					{
						if (!((NI)((varvaluesLen0-1) + ((NI) 1)) < j)) goto LA20;
						internalerror_198191(((NimStringDesc*) &TMP5073));
					}
					LA20: ;
					num = j;
					add_178534(&result, varvalues[(NI)(j - ((NI) 1))]);
				}
				break;
				case 65 ... 90:
				case 97 ... 122:
				case 128 ... 255:
				{
					NimStringDesc* id;
					NI idx;
					id = copyString(((NimStringDesc*) &TMP2205));
					{
						while (1) {
							id = addChar(id, frmt->data[i]);
							i += ((NI) 1);
							{
								if (!!((((NU8)(frmt->data[i])) >= ((NU8)(65)) && ((NU8)(frmt->data[i])) <= ((NU8)(90)) || ((NU8)(frmt->data[i])) == ((NU8)(95)) || ((NU8)(frmt->data[i])) >= ((NU8)(97)) && ((NU8)(frmt->data[i])) <= ((NU8)(122)) || ((NU8)(frmt->data[i])) >= ((NU8)(128)) && ((NU8)(frmt->data[i])) <= ((NU8)(255))))) goto LA27;
								goto LA23;
							}
							LA27: ;
						}
					} LA23: ;
					idx = getvaridx_386120(varnames, varnamesLen0, id);
					{
						if (!(((NI) 0) <= idx)) goto LA31;
						add_178534(&result, varvalues[idx]);
					}
					goto LA29;
					LA31: ;
					{
						rawmessage_196636(((NU16) 156), id);
					}
					LA29: ;
				}
				break;
				case 123:
				{
					NimStringDesc* id;
					NI idx;
					id = copyString(((NimStringDesc*) &TMP2205));
					i += ((NI) 1);
					{
						while (1) {
							if (!!(((NU8)(frmt->data[i]) == (NU8)(125)))) goto LA36;
							{
								if (!((NU8)(frmt->data[i]) == (NU8)(0))) goto LA39;
								rawmessage_196636(((NU16) 24), ((NimStringDesc*) &TMP5074));
							}
							LA39: ;
							id = addChar(id, frmt->data[i]);
							i += ((NI) 1);
						} LA36: ;
					}
					i += ((NI) 1);
					idx = getvaridx_386120(varnames, varnamesLen0, id);
					{
						if (!(((NI) 0) <= idx)) goto LA43;
						add_178534(&result, varvalues[idx]);
					}
					goto LA41;
					LA43: ;
					{
						rawmessage_196636(((NU16) 156), id);
					}
					LA41: ;
				}
				break;
				default:
				{
					internalerror_198191(((NimStringDesc*) &TMP5073));
				}
				break;
				}
			}
			LA5: ;
			start = i;
			{
				while (1) {
					if (!(i < L)) goto LA48;
					{
						if (!!(((NU8)(frmt->data[i]) == (NU8)(36)))) goto LA51;
						i += ((NI) 1);
					}
					goto LA49;
					LA51: ;
					{
						goto LA47;
					}
					LA49: ;
				} LA48: ;
			} LA47: ;
			{
				NimStringDesc* LOC58;
				if (!(start <= (NI)(i - ((NI) 1)))) goto LA56;
				LOC58 = 0;
				LOC58 = copyStrLast(frmt, start, (NI)(i - ((NI) 1)));
				add_178545(&result, LOC58);
			}
			LA56: ;
		} LA2: ;
	}
	return result;
}

N_NIMCALL(NIM_BOOL, iscallable_386911)(Tnode227809* n) {
	NIM_BOOL result;
	result = 0;
	switch ((*n).kind) {
	case ((NU8) 79):
	case ((NU8) 80):
	case ((NU8) 84):
	case ((NU8) 82):
	case ((NU8) 83):
	case ((NU8) 81):
	{
		result = NIM_TRUE;
	}
	break;
	default:
	{
		result = NIM_FALSE;
	}
	break;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, docstringsummary_386921)(NimStringDesc* rsttext) {
	NimStringDesc* result;
	NimStringDesc* LOC1;
	NI pos;
	NI last;
{	result = 0;
	LOC1 = 0;
	LOC1 = copyStr(rsttext, ((NI) 2));
	result = nsuStrip(LOC1, NIM_TRUE, NIM_TRUE, TMP2729);
	pos = nsuFindChar(result, 10, ((NI) 0));
	{
		if (!(((NI) 0) < pos)) goto LA4;
		nsuDelete((&result), pos, (NI)((result ? result->Sup.len : 0) - ((NI) 1)));
		result = resizeString(result, 3);
appendString(result, ((NimStringDesc*) &TMP5096));
	}
	LA4: ;
	{
		if (!(pos < ((NI) 100))) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	pos = nsuFindCharSet(result, TMP5097, ((NI) 0));
	last = (NI)((result ? result->Sup.len : 0) - ((NI) 1));
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = (((NI) 0) < pos);
		if (!(LOC12)) goto LA13;
		LOC12 = (pos < last);
		LA13: ;
		if (!LOC12) goto LA14;
		nsuDelete((&result), pos, last);
		result = resizeString(result, 3);
appendString(result, ((NimStringDesc*) &TMP5096));
	}
	LA14: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, genitem_387012)(Tdocumentor386007* d, Tnode227809* n, Tnode227809* namenode, NU8 k) {
	NimStringDesc* name;
	Ropeobj178009* namerope;
	NimStringDesc* plaindocstring;
	Ropeobj178009* result;
	NimStringDesc* literal;
	NimStringDesc* plainname;
	NU8 kind;
	Ropeobj178009* comm;
	Tsrcgen249023 r;
	Ropeobj178009* plainnamerope;
	NimStringDesc* LOC42;
	NimStringDesc* LOC43;
	NimStringDesc* cleanplainsymbol;
	NimStringDesc* complexsymbol;
	Ropeobj178009* plainsymbolrope;
	Ropeobj178009* plainsymbolencrope;
	NimStringDesc* LOC44;
	Ropeobj178009* itemidrope;
	NimStringDesc* symbolorid;
	Ropeobj178009* symboloridrope;
	Ropeobj178009* symboloridencrope;
	NimStringDesc* LOC45;
	Ropeobj178009* seesrcrope;
	NimStringDesc* docitemseesrc;
	NimStringDesc* LOC59;
	TY387108 LOC60;
	Ropeobj178009* LOC61;
	NimStringDesc* LOC62;
	TY387113 LOC63;
	NimStringDesc* LOC64;
	Ropeobj178009* LOC65;
	NimStringDesc* linktitle;
	NimStringDesc* LOC66;
	NimStringDesc* LOC67;
	NimStringDesc* LOC68;
	Rstgenerator349016* LOC79;
	NimStringDesc* LOC80;
	NimStringDesc* LOC81;
{	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isvisible_386658(namenode);
		if (!!(LOC3)) goto LA4;
		goto BeforeRet;
	}
	LA4: ;
	name = getname_386755(d, namenode, ((NI) -1));
	namerope = rope_178322(name);
	plaindocstring = getplaindocstring_386475(n);
	result = NIM_NIL;
	literal = copyString(((NimStringDesc*) &TMP2205));
	plainname = copyString(((NimStringDesc*) &TMP2205));
	kind = ((NU8) 1);
	comm = genreccomment_386385(d, n);
	memset((void*)(&r), 0, sizeof(r));
	inittokrender_249068((&r), n, 94);
	{
		while (1) {
			getnexttok_249079((&r), (&kind), (&literal));
			{
				if (!(kind == ((NU8) 1))) goto LA10;
				goto LA6;
			}
			LA10: ;
			plainname = resizeString(plainname, literal->Sup.len + 0);
appendString(plainname, literal);
		}
	} LA6: ;
	inittokrender_249068((&r), n, 14);
	{
		while (1) {
			getnexttok_249079((&r), (&kind), (&literal));
			switch (kind) {
			case ((NU8) 1):
			{
				goto LA12;
			}
			break;
			case ((NU8) 113):
			{
				TY178572 LOC16;
				NimStringDesc* LOC17;
				memset((void*)LOC16, 0, sizeof(LOC16));
				LOC17 = 0;
				LOC17 = esc_349553((*d).Sup.target, literal, ((NI) -1));
				LOC16[0] = rope_178322(LOC17);
				dispa_386097(&result, ((NimStringDesc*) &TMP5032), ((NimStringDesc*) &TMP5033), LOC16, 1);
			}
			break;
			case ((NU8) 3) ... ((NU8) 72):
			{
				TY178572 LOC19;
				memset((void*)LOC19, 0, sizeof(LOC19));
				LOC19[0] = rope_178322(literal);
				dispa_386097(&result, ((NimStringDesc*) &TMP5034), ((NimStringDesc*) &TMP5035), LOC19, 1);
			}
			break;
			case ((NU8) 112):
			{
				TY178572 LOC21;
				NimStringDesc* LOC22;
				memset((void*)LOC21, 0, sizeof(LOC21));
				LOC22 = 0;
				LOC22 = esc_349553((*d).Sup.target, literal, ((NI) -1));
				LOC21[0] = rope_178322(LOC22);
				dispa_386097(&result, ((NimStringDesc*) &TMP5036), ((NimStringDesc*) &TMP5037), LOC21, 1);
			}
			break;
			case ((NU8) 87) ... ((NU8) 89):
			{
				TY178572 LOC24;
				NimStringDesc* LOC25;
				memset((void*)LOC24, 0, sizeof(LOC24));
				LOC25 = 0;
				LOC25 = esc_349553((*d).Sup.target, literal, ((NI) -1));
				LOC24[0] = rope_178322(LOC25);
				dispa_386097(&result, ((NimStringDesc*) &TMP5038), ((NimStringDesc*) &TMP5039), LOC24, 1);
			}
			break;
			case ((NU8) 92):
			{
				TY178572 LOC27;
				NimStringDesc* LOC28;
				memset((void*)LOC27, 0, sizeof(LOC27));
				LOC28 = 0;
				LOC28 = esc_349553((*d).Sup.target, literal, ((NI) -1));
				LOC27[0] = rope_178322(LOC28);
				dispa_386097(&result, ((NimStringDesc*) &TMP5040), ((NimStringDesc*) &TMP5041), LOC27, 1);
			}
			break;
			case ((NU8) 73) ... ((NU8) 82):
			{
				TY178572 LOC30;
				NimStringDesc* LOC31;
				memset((void*)LOC30, 0, sizeof(LOC30));
				LOC31 = 0;
				LOC31 = esc_349553((*d).Sup.target, literal, ((NI) -1));
				LOC30[0] = rope_178322(LOC31);
				dispa_386097(&result, ((NimStringDesc*) &TMP5042), ((NimStringDesc*) &TMP5043), LOC30, 1);
			}
			break;
			case ((NU8) 83) ... ((NU8) 86):
			{
				TY178572 LOC33;
				NimStringDesc* LOC34;
				memset((void*)LOC33, 0, sizeof(LOC33));
				LOC34 = 0;
				LOC34 = esc_349553((*d).Sup.target, literal, ((NI) -1));
				LOC33[0] = rope_178322(LOC34);
				dispa_386097(&result, ((NimStringDesc*) &TMP5044), ((NimStringDesc*) &TMP5045), LOC33, 1);
			}
			break;
			case ((NU8) 2):
			{
				TY178572 LOC36;
				NimStringDesc* LOC37;
				memset((void*)LOC36, 0, sizeof(LOC36));
				LOC37 = 0;
				LOC37 = esc_349553((*d).Sup.target, literal, ((NI) -1));
				LOC36[0] = rope_178322(LOC37);
				dispa_386097(&result, ((NimStringDesc*) &TMP5046), ((NimStringDesc*) &TMP5047), LOC36, 1);
			}
			break;
			case ((NU8) 115):
			case ((NU8) 0):
			{
				add_178545(&result, literal);
			}
			break;
			case ((NU8) 93):
			case ((NU8) 94):
			case ((NU8) 95):
			case ((NU8) 96):
			case ((NU8) 97):
			case ((NU8) 98):
			case ((NU8) 99):
			case ((NU8) 100):
			case ((NU8) 101):
			case ((NU8) 102):
			case ((NU8) 103):
			case ((NU8) 104):
			case ((NU8) 105):
			case ((NU8) 106):
			case ((NU8) 107):
			case ((NU8) 109):
			case ((NU8) 110):
			case ((NU8) 111):
			case ((NU8) 114):
			case ((NU8) 108):
			case ((NU8) 90):
			case ((NU8) 91):
			case ((NU8) 116):
			case ((NU8) 117):
			case ((NU8) 118):
			{
				TY178572 LOC40;
				NimStringDesc* LOC41;
				memset((void*)LOC40, 0, sizeof(LOC40));
				LOC41 = 0;
				LOC41 = esc_349553((*d).Sup.target, literal, ((NI) -1));
				LOC40[0] = rope_178322(LOC41);
				dispa_386097(&result, ((NimStringDesc*) &TMP5048), ((NimStringDesc*) &TMP5049), LOC40, 1);
			}
			break;
			}
		}
	} LA12: ;
	(*d).id += ((NI) 1);
	LOC42 = 0;
	LOC42 = nsuStrip(plainname, NIM_TRUE, NIM_TRUE, TMP2729);
	LOC43 = 0;
	LOC43 = escape_378067(LOC42);
	plainnamerope = rope_178322(LOC43);
	cleanplainsymbol = renderplainsymbolname_383013(namenode);
	complexsymbol = complexname_386890(k, n, cleanplainsymbol);
	plainsymbolrope = rope_178322(cleanplainsymbol);
	LOC44 = 0;
	LOC44 = encodeurl_381004(cleanplainsymbol);
	plainsymbolencrope = rope_178322(LOC44);
	itemidrope = rope_178407(((NI64) ((*d).id)));
	symbolorid = newuniqueplainsymbol_386862(d, complexsymbol);
	symboloridrope = rope_178322(symbolorid);
	LOC45 = 0;
	LOC45 = encodeurl_381004(symbolorid);
	symboloridencrope = rope_178322(LOC45);
	seesrcrope = NIM_NIL;
	docitemseesrc = getconfigvar_169335(((NimStringDesc*) &TMP5071));
	{
		NIM_BOOL LOC48;
		Ropeobj178009* urlrope;
		TY545257 LOC52;
		NimStringDesc* LOC53;
		NimStringDesc* LOC54;
		TY178572 LOC55;
		TY517578 LOC56;
		NimStringDesc* LOC57;
		NimStringDesc* LOC58;
		LOC48 = 0;
		LOC48 = (((NI) 0) < (docitemseesrc ? docitemseesrc->Sup.len : 0));
		if (!(LOC48)) goto LA49;
		LOC48 = (((NI) 0) < (docseesrcurl_169139 ? docseesrcurl_169139->Sup.len : 0));
		LA49: ;
		if (!LOC48) goto LA50;
		memset((void*)LOC52, 0, sizeof(LOC52));
		LOC53 = 0;
		LOC53 = tofilename_193652((*n).info.fileindex);
		LOC52[0] = rope_178322(LOC53);
		LOC54 = 0;
		LOC54 = nimIntToStr(((NI) ((*n).info.line)));
		LOC52[1] = rope_178322(LOC54);
		urlrope = ropeformatnamedvars_386162(docseesrcurl_169139, TMP5075, 2, LOC52, 2);
		memset((void*)LOC55, 0, sizeof(LOC55));
		memset((void*)LOC56, 0, sizeof(LOC56));
		LOC57 = 0;
		LOC57 = tofilename_193652((*n).info.fileindex);
		LOC56[0] = rope_178322(LOC57);
		LOC58 = 0;
		LOC58 = nimIntToStr(((NI) ((*n).info.line)));
		LOC56[1] = rope_178322(LOC58);
		LOC56[2] = urlrope;
		LOC55[0] = ropeformatnamedvars_386162(docitemseesrc, TMP5079, 3, LOC56, 3);
		dispa_386097(&seesrcrope, ((NimStringDesc*) &TMP5078), ((NimStringDesc*) &TMP2205), LOC55, 1);
	}
	LA50: ;
	LOC59 = 0;
	LOC59 = getconfigvar_169335(((NimStringDesc*) &TMP5081));
	memset((void*)LOC60, 0, sizeof(LOC60));
	LOC60[0] = namerope;
	LOC60[1] = result;
	LOC60[2] = comm;
	LOC60[3] = itemidrope;
	LOC60[4] = plainnamerope;
	LOC60[5] = plainsymbolrope;
	LOC60[6] = symboloridrope;
	LOC60[7] = plainsymbolencrope;
	LOC60[8] = symboloridencrope;
	LOC60[9] = seesrcrope;
	LOC61 = 0;
	LOC61 = ropeformatnamedvars_386162(LOC59, TMP5082, 10, LOC60, 10);
	add_178534(&(*d).section[(k)- 0], LOC61);
	LOC62 = 0;
	LOC62 = getconfigvar_169335(((NimStringDesc*) &TMP5093));
	memset((void*)LOC63, 0, sizeof(LOC63));
	LOC64 = 0;
	LOC64 = getname_386755(d, namenode, (*d).Sup.splitafter);
	LOC63[0] = rope_178322(LOC64);
	LOC63[1] = result;
	LOC63[2] = comm;
	LOC63[3] = itemidrope;
	LOC63[4] = plainnamerope;
	LOC63[5] = plainsymbolrope;
	LOC63[6] = symboloridrope;
	LOC63[7] = plainsymbolencrope;
	LOC63[8] = symboloridencrope;
	LOC65 = 0;
	LOC65 = ropeformatnamedvars_386162(LOC62, TMP5094, 9, LOC63, 9);
	add_178534(&(*d).toc[(k)- 0], LOC65);
	LOC66 = 0;
	LOC67 = 0;
	LOC67 = nosextractFilename((*d).Sup.filename);
	LOC68 = 0;
	LOC68 = noschangeFileExt(LOC67, ((NimStringDesc*) &TMP2205));
	LOC66 = rawNewString(LOC68->Sup.len + 3);
appendString(LOC66, LOC68);
appendString(LOC66, ((NimStringDesc*) &TMP5095));
	linktitle = LOC66;
	{
		NIM_BOOL LOC71;
		NimStringDesc* LOC74;
		NimStringDesc* LOC75;
		LOC71 = 0;
		LOC71 = iscallable_386911(n);
		if (!LOC71) goto LA72;
		LOC74 = 0;
		LOC74 = nsuStrip(plainname, NIM_TRUE, NIM_TRUE, TMP2729);
		LOC75 = 0;
		LOC75 = escape_378067(LOC74);
		linktitle = resizeString(linktitle, LOC75->Sup.len + 0);
appendString(linktitle, LOC75);
	}
	goto LA69;
	LA72: ;
	{
		NimStringDesc* LOC77;
		NimStringDesc* LOC78;
		LOC77 = 0;
		LOC77 = nsuStrip(complexsymbol, NIM_TRUE, NIM_TRUE, TMP2729);
		LOC78 = 0;
		LOC78 = escape_378067(LOC77);
		linktitle = resizeString(linktitle, LOC78->Sup.len + 0);
appendString(linktitle, LOC78);
	}
	LA69: ;
	LOC79 = 0;
	LOC79 = &d->Sup;
	LOC80 = 0;
	LOC80 = docstringsummary_386921(plaindocstring);
	LOC81 = 0;
	LOC81 = escape_378067(LOC80);
	setindexterm_349855(LOC79, symbolorid, name, linktitle, LOC81);
	}BeforeRet: ;
}

N_NIMCALL(NIM_BOOL, checkforfalse_387171)(Tnode227809* n) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*n).kind == ((NU8) 2));
	if (!(LOC1)) goto LA2;
	LOC1 = identeq_200484((*n).kindU.S5.ident, ((NimStringDesc*) &TMP5098));
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, tracedeps_387191)(Tdocumentor386007* d, Tnode227809* n) {
	TY178572 LOC5;
	NimStringDesc* LOC6;
	{
		if (!!(((*d).section[(((NU8) 6))- 0] == NIM_NIL))) goto LA3;
		add_178545(&(*d).section[(((NU8) 6))- 0], ((NimStringDesc*) &TMP5099));
	}
	LA3: ;
	memset((void*)LOC5, 0, sizeof(LOC5));
	LOC6 = 0;
	LOC6 = getmodulename_290018(n);
	LOC5[0] = rope_178322(LOC6);
	dispa_386097(&(*d).section[(((NU8) 6))- 0], ((NimStringDesc*) &TMP5100), ((NimStringDesc*) &TMP5078), LOC5, 1);
}

N_NIMCALL(void, generatedoc_387218)(Tdocumentor386007* d, Tnode227809* n) {
	switch ((*n).kind) {
	case ((NU8) 125):
	{
		NimStringDesc* LOC2;
		LOC2 = 0;
		LOC2 = gencomment_386354(d, n);
		add_178545(&(*d).moddesc, LOC2);
	}
	break;
	case ((NU8) 79):
	{
		documentraises_369955(n);
		genitem_387012(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 12));
	}
	break;
	case ((NU8) 80):
	{
		documentraises_369955(n);
		genitem_387012(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 13));
	}
	break;
	case ((NU8) 84):
	{
		documentraises_369955(n);
		genitem_387012(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 14));
	}
	break;
	case ((NU8) 82):
	{
		genitem_387012(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 17));
	}
	break;
	case ((NU8) 83):
	{
		genitem_387012(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 18));
	}
	break;
	case ((NU8) 81):
	{
		documentraises_369955(n);
		genitem_387012(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 16));
	}
	break;
	case ((NU8) 98):
	case ((NU8) 99):
	case ((NU8) 100):
	case ((NU8) 101):
	{
		{
			NI i_388014;
			NI HEX3Atmp_388087;
			NI LOC11;
			NI res_388090;
			i_388014 = 0;
			HEX3Atmp_388087 = 0;
			LOC11 = 0;
			LOC11 = sonslen_230387(n);
			HEX3Atmp_388087 = (NI)(LOC11 - ((NI) 1));
			res_388090 = ((NI) 0);
			{
				while (1) {
					if (!(res_388090 <= HEX3Atmp_388087)) goto LA13;
					i_388014 = res_388090;
					{
						if (!!(((*(*n).kindU.S6.sons->data[i_388014]).kind == ((NU8) 125)))) goto LA16;
						genitem_387012(d, (*n).kindU.S6.sons->data[i_388014], (*(*n).kindU.S6.sons->data[i_388014]).kindU.S6.sons->data[((NI) 0)], (NU8)(((NU8) 7) + ((NI) ((NI)(((NI) ((*n).kind)) - ((NI) 98))))));
					}
					LA16: ;
					res_388090 += ((NI) 1);
				} LA13: ;
			}
		}
	}
	break;
	case ((NU8) 115):
	{
		{
			NI i_388068;
			NI HEX3Atmp_388095;
			NI LOC20;
			NI res_388098;
			i_388068 = 0;
			HEX3Atmp_388095 = 0;
			LOC20 = 0;
			LOC20 = sonslen_230387(n);
			HEX3Atmp_388095 = (NI)(LOC20 - ((NI) 1));
			res_388098 = ((NI) 0);
			{
				while (1) {
					if (!(res_388098 <= HEX3Atmp_388095)) goto LA22;
					i_388068 = res_388098;
					generatedoc_387218(d, (*n).kindU.S6.sons->data[i_388068]);
					res_388098 += ((NI) 1);
				} LA22: ;
			}
		}
	}
	break;
	case ((NU8) 93):
	{
		{
			NIM_BOOL LOC26;
			Tnode227809* LOC29;
			LOC26 = 0;
			LOC26 = checkforfalse_387171((*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)]);
			if (!!(LOC26)) goto LA27;
			LOC29 = 0;
			LOC29 = lastson_230406((*n).kindU.S6.sons->data[((NI) 0)]);
			generatedoc_387218(d, LOC29);
		}
		LA27: ;
	}
	break;
	case ((NU8) 116):
	{
		{
			NI i_388083;
			NI HEX3Atmp_388103;
			NI LOC32;
			NI res_388106;
			i_388083 = 0;
			HEX3Atmp_388103 = 0;
			LOC32 = 0;
			LOC32 = sonslen_230387(n);
			HEX3Atmp_388103 = (NI)(LOC32 - ((NI) 1));
			res_388106 = ((NI) 0);
			{
				while (1) {
					if (!(res_388106 <= HEX3Atmp_388103)) goto LA34;
					i_388083 = res_388106;
					tracedeps_387191(d, (*n).kindU.S6.sons->data[i_388083]);
					res_388106 += ((NI) 1);
				} LA34: ;
			}
		}
	}
	break;
	case ((NU8) 120):
	case ((NU8) 117):
	{
		tracedeps_387191(d, (*n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	default:
	{
	}
	break;
	}
}

N_NIMCALL(void, gensection_388918)(Tdocumentor386007* d, NU8 kind) {
	Ropeobj178009* title;
	NimStringDesc* LOC5;
	TY517575 LOC6;
	NimStringDesc* LOC7;
	TY517575 LOC8;
{	{
		if (!((*d).section[(kind)- 0] == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	title = rope_178322(sectionnames_388922[(kind)- 6]);
	LOC5 = 0;
	LOC5 = getconfigvar_169335(((NimStringDesc*) &TMP5116));
	memset((void*)LOC6, 0, sizeof(LOC6));
	LOC6[0] = rope_178407(((NI64) (kind)));
	LOC6[1] = title;
	LOC6[2] = rope_178407(((NI64) ((NI)(((NI) (kind)) + ((NI) 50)))));
	LOC6[3] = (*d).section[(kind)- 0];
	asgnRefNoCycle((void**) (&(*d).section[(kind)- 0]), ropeformatnamedvars_386162(LOC5, TMP5117, 4, LOC6, 4));
	LOC7 = 0;
	LOC7 = getconfigvar_169335(((NimStringDesc*) &TMP5122));
	memset((void*)LOC8, 0, sizeof(LOC8));
	LOC8[0] = rope_178407(((NI64) (kind)));
	LOC8[1] = title;
	LOC8[2] = rope_178407(((NI64) ((NI)(((NI) (kind)) + ((NI) 50)))));
	LOC8[3] = (*d).toc[(kind)- 0];
	asgnRefNoCycle((void**) (&(*d).toc[(kind)- 0]), ropeformatnamedvars_386162(LOC7, TMP5117, 4, LOC8, 4));
	}BeforeRet: ;
}

N_NIMCALL(Ropeobj178009*, genoutfile_388988)(Tdocumentor386007* d) {
	Ropeobj178009* result;
	Ropeobj178009* code;
	Ropeobj178009* content;
	NimStringDesc* title;
	NI j;
	NimStringDesc* tmp;
	Rstgenerator349016* LOC1;
	Ropeobj178009* toc;
	NimStringDesc* bodyname;
	NimStringDesc* LOC28;
	TY519247 LOC29;
	NimStringDesc* LOC30;
	NimStringDesc* LOC31;
	result = 0;
	code = 0;
	content = 0;
	title = copyString(((NimStringDesc*) &TMP2205));
	j = ((NI) 0);
	tmp = copyString(((NimStringDesc*) &TMP2205));
	LOC1 = 0;
	LOC1 = &d->Sup;
	rendertocentries_355976(LOC1, (&j), ((NI) 1), (&tmp));
	toc = rope_178322(tmp);
	{
		NU8 i_389223;
		NI res_389283;
		i_389223 = 0;
		res_389283 = ((NI) 0);
		{
			while (1) {
				if (!(res_389283 <= ((NI) 25))) goto LA4;
				i_389223 = ((NU8) (res_389283));
				gensection_388918(d, i_389223);
				add_178534(&toc, (*d).toc[(i_389223)- 0]);
				res_389283 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		NimStringDesc* LOC9;
		TY178572 LOC10;
		if (!!((toc == NIM_NIL))) goto LA7;
		LOC9 = 0;
		LOC9 = getconfigvar_169335(((NimStringDesc*) &TMP5123));
		memset((void*)LOC10, 0, sizeof(LOC10));
		LOC10[0] = toc;
		toc = ropeformatnamedvars_386162(LOC9, TMP5124, 1, LOC10, 1);
	}
	LA7: ;
	{
		NU8 i_389255;
		NI res_389291;
		i_389255 = 0;
		res_389291 = ((NI) 0);
		{
			while (1) {
				if (!(res_389291 <= ((NI) 25))) goto LA13;
				i_389255 = ((NU8) (res_389291));
				add_178534(&code, (*d).section[(i_389255)- 0]);
				res_389291 += ((NI) 1);
			} LA13: ;
		}
	}
	{
		Rstgenerator349016* LOC18;
		if (!!((((*d).Sup.meta[(((NU8) 1))- 0] ? (*d).Sup.meta[(((NU8) 1))- 0]->Sup.len : 0) == ((NI) 0)))) goto LA16;
		title = copyString((*d).Sup.meta[(((NU8) 1))- 0]);
		LOC18 = 0;
		LOC18 = &d->Sup;
		setindexterm_349855(LOC18, ((NimStringDesc*) &TMP2205), title, ((NimStringDesc*) &TMP2205), ((NimStringDesc*) &TMP2205));
	}
	goto LA14;
	LA16: ;
	{
		NimStringDesc* LOC20;
		NimStringDesc* LOC21;
		NimStringDesc* LOC22;
		LOC20 = 0;
		LOC21 = 0;
		LOC21 = noschangeFileExt((*d).Sup.filename, ((NimStringDesc*) &TMP2205));
		LOC22 = 0;
		LOC22 = nosextractFilename(LOC21);
		LOC20 = rawNewString(LOC22->Sup.len + 7);
appendString(LOC20, ((NimStringDesc*) &TMP5125));
appendString(LOC20, LOC22);
		title = LOC20;
	}
	LA14: ;
	{
		if (!(*d).Sup.hastoc) goto LA25;
		bodyname = copyString(((NimStringDesc*) &TMP5126));
	}
	goto LA23;
	LA25: ;
	{
		bodyname = copyString(((NimStringDesc*) &TMP5127));
	}
	LA23: ;
	LOC28 = 0;
	LOC28 = getconfigvar_169335(bodyname);
	memset((void*)LOC29, 0, sizeof(LOC29));
	LOC29[0] = rope_178322(title);
	LOC29[1] = toc;
	LOC29[2] = (*d).moddesc;
	LOC30 = 0;
	LOC30 = ntgetDateStr();
	LOC29[3] = rope_178322(LOC30);
	LOC31 = 0;
	LOC31 = ntgetClockStr();
	LOC29[4] = rope_178322(LOC31);
	LOC29[5] = code;
	content = ropeformatnamedvars_386162(LOC28, TMP5128, 6, LOC29, 6);
	{
		NimStringDesc* LOC36;
		TY387113 LOC37;
		NimStringDesc* LOC38;
		NimStringDesc* LOC39;
		if (!!(((gglobaloptions_169132 &(1<<((((NU8) 4))&31)))!=0))) goto LA34;
		LOC36 = 0;
		LOC36 = getconfigvar_169335(((NimStringDesc*) &TMP5134));
		memset((void*)LOC37, 0, sizeof(LOC37));
		LOC37[0] = rope_178322(title);
		LOC37[1] = toc;
		LOC37[2] = (*d).moddesc;
		LOC38 = 0;
		LOC38 = ntgetDateStr();
		LOC37[3] = rope_178322(LOC38);
		LOC39 = 0;
		LOC39 = ntgetClockStr();
		LOC37[4] = rope_178322(LOC39);
		LOC37[5] = content;
		LOC37[6] = rope_178322((*d).Sup.meta[(((NU8) 3))- 0]);
		LOC37[7] = rope_178322((*d).Sup.meta[(((NU8) 4))- 0]);
		LOC37[8] = rope_178322((*d).analytics);
		code = ropeformatnamedvars_386162(LOC36, TMP5135, 9, LOC37, 9);
	}
	goto LA32;
	LA34: ;
	{
		code = content;
	}
	LA32: ;
	result = code;
	return result;
}

N_NIMCALL(void, writeoutput_389337)(Tdocumentor386007* d, NimStringDesc* filename, NimStringDesc* outext, NIM_BOOL usewarning) {
	Ropeobj178009* content;
	content = genoutfile_388988(d);
	{
		if (!((gglobaloptions_169132 &(1<<((((NU8) 23))&31)))!=0)) goto LA3;
		writerope_179071(stdout, content);
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC6;
		LOC6 = 0;
		LOC6 = getoutfile_169355(filename, outext);
		writerope_179106(content, LOC6, usewarning);
	}
	LA1: ;
}

N_NIMCALL(void, generateindex_389318)(Tdocumentor386007* d) {
	{
		Rstgenerator349016* LOC5;
		NimStringDesc* LOC6;
		TY122218 LOC7;
		TY122218 LOC8;
		NimStringDesc* LOC9;
		if (!((gglobaloptions_169132 &(1<<((((NU8) 27))&31)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = &d->Sup;
		LOC6 = 0;
		memset((void*)(&LOC7), 0, sizeof(LOC7));
		nossplitFile(outfile_169138, (&LOC7));
		memset((void*)(&LOC8), 0, sizeof(LOC8));
		nossplitFile((*d).Sup.filename, (&LOC8));
		LOC9 = 0;
		LOC9 = HEX2F_121890(LOC7.Field0, LOC8.Field1);
		LOC6 = rawNewString(LOC9->Sup.len + 4);
appendString(LOC6, LOC9);
appendString(LOC6, ((NimStringDesc*) &TMP5140));
		writeindexfile_349445(LOC5, LOC6);
	}
	LA3: ;
}

N_NIMCALL(void, commanddoc_389360)(void) {
	Tnode227809* ast;
	Tdocumentor386007* d;
{	ast = parsefile_255041(gprojectmainidx_169238);
	{
		if (!(ast == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	d = newdocumentor_386065(gprojectfull_169236, gconfigvars_169230);
	(*d).Sup.hastoc = NIM_TRUE;
	generatedoc_387218(d, ast);
	writeoutput_389337(d, gprojectfull_169236, ((NimStringDesc*) &TMP5139), NIM_FALSE);
	generateindex_389318(d);
	}BeforeRet: ;
}

N_NIMCALL(void, commandrstaux_389382)(NimStringDesc* filename, NimStringDesc* outext) {
	NimStringDesc* filen;
	Tdocumentor386007* d;
	Rstnode334011* rst;
	NimStringDesc* LOC1;
	NimStringDesc* moddesc;
	Rstgenerator349016* LOC2;
	filen = nosaddFileExt(filename, ((NimStringDesc*) &TMP5146));
	d = newdocumentor_386065(filen, gconfigvars_169230);
	LOC1 = 0;
	LOC1 = readfile_16872(filen);
	rst = parserst_386049(LOC1, filen, ((NI) 0), ((NI) 1), (&(*d).Sup.hastoc), 4);
	moddesc = rawNewString(((NI) 30000));
	LOC2 = 0;
	LOC2 = &d->Sup;
	renderrsttoout_349724(LOC2, rst, (&moddesc));
	asgnRefNoCycle((void**) (&(*d).moddesc), rope_178322(moddesc));
	writeoutput_389337(d, filename, outext, NIM_FALSE);
	generateindex_389318(d);
}

N_NIMCALL(void, commandrst2html_389400)(void) {
	commandrstaux_389382(gprojectfull_169236, ((NimStringDesc*) &TMP5139));
}

N_NIMCALL(void, commandrst2tex_389408)(void) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = splitter_349489; splitter_349489 = copyStringRC1(((NimStringDesc*) &TMP5148));
	if (LOC1) nimGCunrefNoCycle(LOC1);
	commandrstaux_389382(gprojectfull_169236, ((NimStringDesc*) &TMP5149));
}

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)), (*a).Sup.len);
	LOC11 = (LOC13 == ((NI32) 0));
	LA12: ;
	result = LOC11;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

static N_INLINE(void, HEX5BHEX5DHEX3D_330619)(Jsonnodeobj327754* obj, NimStringDesc* key, Jsonnodeobj327754* val) {
	TY328284 LOC8;
	NimStringDesc* LOC9;
{	{
		NI i_330820;
		NI HEX3Atmp_330836;
		NI res_330839;
		i_330820 = 0;
		HEX3Atmp_330836 = 0;
		HEX3Atmp_330836 = (NI)(((*obj).kindU.S6.fields ? (*obj).kindU.S6.fields->Sup.len : 0) - ((NI) 1));
		res_330839 = ((NI) 0);
		{
			while (1) {
				if (!(res_330839 <= HEX3Atmp_330836)) goto LA3;
				i_330820 = res_330839;
				{
					if (!eqStrings((*obj).kindU.S6.fields->data[i_330820].Field0, key)) goto LA6;
					asgnRefNoCycle((void**) (&(*obj).kindU.S6.fields->data[i_330820].Field1), val);
					goto BeforeRet;
				}
				LA6: ;
				res_330839 += ((NI) 1);
			} LA3: ;
		}
	}
	memset((void*)(&LOC8), 0, sizeof(LOC8));
	LOC8.Field0 = copyString(key);
	LOC8.Field1 = val;
	(*obj).kindU.S6.fields = (TY327769*) incrSeqV2(&((*obj).kindU.S6.fields)->Sup, sizeof(TY328284));
	LOC9 = 0;
	LOC9 = (*obj).kindU.S6.fields->data[(*obj).kindU.S6.fields->Sup.len].Field0; (*obj).kindU.S6.fields->data[(*obj).kindU.S6.fields->Sup.len].Field0 = copyStringRC1(LOC8.Field0);
	if (LOC9) nimGCunrefNoCycle(LOC9);
	asgnRefNoCycle((void**) (&(*obj).kindU.S6.fields->data[(*obj).kindU.S6.fields->Sup.len].Field1), LOC8.Field1);
	++(*obj).kindU.S6.fields->Sup.len;
	}BeforeRet: ;
}

N_NIMCALL(Jsonnodeobj327754*, genjsonitem_387141)(Tdocumentor386007* d, Tnode227809* n, Tnode227809* namenode, NU8 k) {
	Jsonnodeobj327754* result;
	NimStringDesc* name;
	NimStringDesc* comm;
	Ropeobj178009* LOC6;
	Tsrcgen249023 r;
	TY387153 LOC7;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isvisible_386658(namenode);
		if (!!(LOC3)) goto LA4;
		goto BeforeRet;
	}
	LA4: ;
	name = getname_386755(d, namenode, ((NI) -1));
	LOC6 = 0;
	LOC6 = genreccomment_386385(d, n);
	comm = HEX24_179132(LOC6);
	memset((void*)(&r), 0, sizeof(r));
	inittokrender_249068((&r), n, 14);
	memset((void*)LOC7, 0, sizeof(LOC7));
	LOC7[0].Field0 = copyString(((NimStringDesc*) &TMP5083));
	LOC7[0].Field1 = HEX25_328205(name);
	LOC7[1].Field0 = copyString(((NimStringDesc*) &TMP5158));
	LOC7[1].Field1 = HEX25_328205(reprEnum(k, (&NTI227441)));
	result = HEX25_328281(LOC7, 2);
	{
		NIM_BOOL LOC10;
		Jsonnodeobj327754* LOC14;
		LOC10 = 0;
		LOC10 = !((comm == NIM_NIL));
		if (!(LOC10)) goto LA11;
		LOC10 = !(((comm) && (comm)->Sup.len == 0));
		LA11: ;
		if (!LOC10) goto LA12;
		LOC14 = 0;
		LOC14 = HEX25_328205(comm);
		HEX5BHEX5DHEX3D_330619(result, ((NimStringDesc*) &TMP5159), LOC14);
	}
	LA12: ;
	{
		Jsonnodeobj327754* LOC19;
		if (!!((r.buf == NIM_NIL))) goto LA17;
		LOC19 = 0;
		LOC19 = HEX25_328205(r.buf);
		HEX5BHEX5DHEX3D_330619(result, ((NimStringDesc*) &TMP5160), LOC19);
	}
	LA17: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Jsonnodeobj327754*, generatejson_388143)(Tdocumentor386007* d, Tnode227809* n, Jsonnodeobj327754* jarray) {
	Jsonnodeobj327754* result;
	result = 0;
	switch ((*n).kind) {
	case ((NU8) 125):
	{
		{
			NIM_BOOL LOC4;
			NimStringDesc* stripped;
			NimStringDesc* LOC8;
			TY388153 LOC9;
			LOC4 = 0;
			LOC4 = !(((*n).comment == NIM_NIL));
			if (!(LOC4)) goto LA5;
			LOC4 = nsuStartsWith((*n).comment, ((NimStringDesc*) &TMP2204));
			LA5: ;
			if (!LOC4) goto LA6;
			LOC8 = 0;
			LOC8 = copyStr((*n).comment, ((NI) 2));
			stripped = nsuStrip(LOC8, NIM_TRUE, NIM_TRUE, TMP2729);
			memset((void*)LOC9, 0, sizeof(LOC9));
			LOC9[0].Field0 = copyString(((NimStringDesc*) &TMP5157));
			LOC9[0].Field1 = HEX25_328205(stripped);
			result = HEX25_328281(LOC9, 1);
		}
		LA6: ;
	}
	break;
	case ((NU8) 79):
	{
		documentraises_369955(n);
		result = genjsonitem_387141(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 12));
	}
	break;
	case ((NU8) 80):
	{
		documentraises_369955(n);
		result = genjsonitem_387141(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 13));
	}
	break;
	case ((NU8) 84):
	{
		documentraises_369955(n);
		result = genjsonitem_387141(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 14));
	}
	break;
	case ((NU8) 82):
	{
		result = genjsonitem_387141(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 17));
	}
	break;
	case ((NU8) 83):
	{
		result = genjsonitem_387141(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 18));
	}
	break;
	case ((NU8) 81):
	{
		documentraises_369955(n);
		result = genjsonitem_387141(d, n, (*n).kindU.S6.sons->data[((NI) 0)], ((NU8) 16));
	}
	break;
	case ((NU8) 98):
	case ((NU8) 99):
	case ((NU8) 100):
	case ((NU8) 101):
	{
		{
			NI i_388814;
			NI HEX3Atmp_388879;
			NI LOC18;
			NI res_388882;
			i_388814 = 0;
			HEX3Atmp_388879 = 0;
			LOC18 = 0;
			LOC18 = sonslen_230387(n);
			HEX3Atmp_388879 = (NI)(LOC18 - ((NI) 1));
			res_388882 = ((NI) 0);
			{
				while (1) {
					if (!(res_388882 <= HEX3Atmp_388879)) goto LA20;
					i_388814 = res_388882;
					{
						if (!!(((*(*n).kindU.S6.sons->data[i_388814]).kind == ((NU8) 125)))) goto LA23;
						result = genjsonitem_387141(d, (*n).kindU.S6.sons->data[i_388814], (*(*n).kindU.S6.sons->data[i_388814]).kindU.S6.sons->data[((NI) 0)], (NU8)(((NU8) 7) + ((NI) ((NI)(((NI) ((*n).kind)) - ((NI) 98))))));
					}
					LA23: ;
					res_388882 += ((NI) 1);
				} LA20: ;
			}
		}
	}
	break;
	case ((NU8) 115):
	{
		{
			NIM_BOOL LOC28;
			LOC28 = 0;
			LOC28 = HEX3DHEX3D_328661(jarray, NIM_NIL);
			if (!!(LOC28)) goto LA29;
			result = jarray;
		}
		goto LA26;
		LA29: ;
		{
			result = newjarray_327956();
		}
		LA26: ;
		{
			NI i_388869;
			NI HEX3Atmp_388887;
			NI LOC33;
			NI res_388890;
			i_388869 = 0;
			HEX3Atmp_388887 = 0;
			LOC33 = 0;
			LOC33 = sonslen_230387(n);
			HEX3Atmp_388887 = (NI)(LOC33 - ((NI) 1));
			res_388890 = ((NI) 0);
			{
				while (1) {
					Jsonnodeobj327754* r;
					if (!(res_388890 <= HEX3Atmp_388887)) goto LA35;
					i_388869 = res_388890;
					r = generatejson_388143(d, (*n).kindU.S6.sons->data[i_388869], result);
					{
						NIM_BOOL LOC38;
						LOC38 = 0;
						LOC38 = HEX3DHEX3D_328661(r, NIM_NIL);
						if (!!(LOC38)) goto LA39;
						add_330247(result, r);
					}
					LA39: ;
					res_388890 += ((NI) 1);
				} LA35: ;
			}
		}
	}
	break;
	case ((NU8) 93):
	{
		{
			NIM_BOOL LOC44;
			NIM_BOOL LOC45;
			NIM_BOOL LOC47;
			Tnode227809* LOC50;
			Jsonnodeobj327754* LOC51;
			LOC44 = 0;
			LOC45 = 0;
			LOC45 = checkforfalse_387171((*(*n).kindU.S6.sons->data[((NI) 0)]).kindU.S6.sons->data[((NI) 0)]);
			LOC44 = !(LOC45);
			if (!(LOC44)) goto LA46;
			LOC47 = 0;
			LOC47 = HEX3DHEX3D_328661(jarray, NIM_NIL);
			LOC44 = !(LOC47);
			LA46: ;
			if (!LOC44) goto LA48;
			LOC50 = 0;
			LOC50 = lastson_230406((*n).kindU.S6.sons->data[((NI) 0)]);
			LOC51 = 0;
			LOC51 = generatejson_388143(d, LOC50, jarray);
		}
		LA48: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(void, commandjson_389416)(void) {
	Tnode227809* ast;
	Tdocumentor386007* d;
	Jsonnodeobj327754* json;
	Ropeobj178009* content;
	NimStringDesc* LOC5;
{	ast = parsefile_255041(gprojectmainidx_169238);
	{
		if (!(ast == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	d = newdocumentor_386065(gprojectfull_169236, gconfigvars_169230);
	(*d).Sup.hastoc = NIM_TRUE;
	json = generatejson_388143(d, ast, NIM_NIL);
	LOC5 = 0;
	LOC5 = pretty_332046(json, ((NI) 2));
	content = rope_178322(LOC5);
	{
		if (!((gglobaloptions_169132 &(1<<((((NU8) 23))&31)))!=0)) goto LA8;
		writerope_179071(stdout, content);
	}
	goto LA6;
	LA8: ;
	{
		NimStringDesc* LOC11;
		NimStringDesc* LOC12;
		LOC11 = 0;
		LOC11 = getoutfile_169355(gprojectfull_169236, ((NimStringDesc*) &TMP5170));
		printf("%s\015\012", LOC11? (LOC11)->data:"nil");
		LOC12 = 0;
		LOC12 = getoutfile_169355(gprojectfull_169236, ((NimStringDesc*) &TMP5170));
		writerope_179106(content, LOC12, NIM_FALSE);
	}
	LA6: ;
	}BeforeRet: ;
}

N_NIMCALL(void, commandbuildindex_389452)(void) {
	Ropeobj178009* content;
	NimStringDesc* LOC1;
	Ropeobj178009* code;
	NimStringDesc* LOC2;
	TY387113 LOC3;
	NimStringDesc* LOC4;
	NimStringDesc* LOC5;
	NimStringDesc* LOC6;
	LOC1 = 0;
	LOC1 = mergeindexes_355541(gprojectfull_169236);
	content = rope_178322(LOC1);
	LOC2 = 0;
	LOC2 = getconfigvar_169335(((NimStringDesc*) &TMP5134));
	memset((void*)LOC3, 0, sizeof(LOC3));
	LOC3[0] = rope_178322(((NimStringDesc*) &TMP5209));
	LOC3[1] = NIM_NIL;
	LOC3[2] = NIM_NIL;
	LOC4 = 0;
	LOC4 = ntgetDateStr();
	LOC3[3] = rope_178322(LOC4);
	LOC5 = 0;
	LOC5 = ntgetClockStr();
	LOC3[4] = rope_178322(LOC5);
	LOC3[5] = content;
	LOC3[6] = NIM_NIL;
	LOC3[7] = NIM_NIL;
	LOC3[8] = NIM_NIL;
	code = ropeformatnamedvars_386162(LOC2, TMP5135, 9, LOC3, 9);
	LOC6 = 0;
	LOC6 = getoutfile_169355(((NimStringDesc*) &TMP5210), ((NimStringDesc*) &TMP5139));
	writerope_179106(code, LOC6, NIM_FALSE);
}
NIM_EXTERNC N_NOINLINE(void, compiler_docgenInit000)(void) {
}

NIM_EXTERNC N_NOINLINE(void, compiler_docgenDatInit000)(void) {
static TNimNode* TMP5018[7];
static TNimNode TMP966[8];
NTI386007.size = sizeof(Tdocumentor386007);
NTI386007.kind = 17;
NTI386007.base = (&NTI349016);
TMP5018[0] = &TMP966[1];
TMP966[1].kind = 1;
TMP966[1].offset = offsetof(Tdocumentor386007, moddesc);
TMP966[1].typ = (&NTI178007);
TMP966[1].name = "modDesc";
TMP5018[1] = &TMP966[2];
TMP966[2].kind = 1;
TMP966[2].offset = offsetof(Tdocumentor386007, id);
TMP966[2].typ = (&NTI108);
TMP966[2].name = "id";
TMP5018[2] = &TMP966[3];
NTI386005.size = sizeof(Tsections386005);
NTI386005.kind = 16;
NTI386005.base = (&NTI178007);
NTI386005.flags = 2;
TMP966[3].kind = 1;
TMP966[3].offset = offsetof(Tdocumentor386007, toc);
TMP966[3].typ = (&NTI386005);
TMP966[3].name = "toc";
TMP5018[3] = &TMP966[4];
TMP966[4].kind = 1;
TMP966[4].offset = offsetof(Tdocumentor386007, section);
TMP966[4].typ = (&NTI386005);
TMP966[4].name = "section";
TMP5018[4] = &TMP966[5];
TMP966[5].kind = 1;
TMP966[5].offset = offsetof(Tdocumentor386007, indexvalfilename);
TMP966[5].typ = (&NTI149);
TMP966[5].name = "indexValFilename";
TMP5018[5] = &TMP966[6];
TMP966[6].kind = 1;
TMP966[6].offset = offsetof(Tdocumentor386007, analytics);
TMP966[6].typ = (&NTI149);
TMP966[6].name = "analytics";
TMP5018[6] = &TMP966[7];
TMP966[7].kind = 1;
TMP966[7].offset = offsetof(Tdocumentor386007, seensymbols);
TMP966[7].typ = (&NTI148214);
TMP966[7].name = "seenSymbols";
TMP966[0].len = 7; TMP966[0].kind = 2; TMP966[0].sons = &TMP5018[0];
NTI386007.node = &TMP966[0];
NTI386009.size = sizeof(Tdocumentor386007*);
NTI386009.kind = 22;
NTI386009.base = (&NTI386007);
NTI386009.marker = TMP5019;
}

