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

#include "nimbase.h"
#include <string.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <stdio.h>
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Cell47505 Cell47505;
typedef struct TNimType TNimType;
typedef struct Cellseq47521 Cellseq47521;
typedef struct Gcheap49818 Gcheap49818;
typedef struct Gcstack49816 Gcstack49816;
typedef struct Cellset47517 Cellset47517;
typedef struct Pagedesc47513 Pagedesc47513;
typedef struct Memregion29688 Memregion29688;
typedef struct Smallchunk29640 Smallchunk29640;
typedef struct Llchunk29682 Llchunk29682;
typedef struct Bigchunk29642 Bigchunk29642;
typedef struct Intset29614 Intset29614;
typedef struct Trunk29610 Trunk29610;
typedef struct Avlnode29686 Avlnode29686;
typedef struct Gcstat49814 Gcstat49814;
typedef struct Rstgenerator326010 Rstgenerator326010;
typedef struct Rstnode313008 Rstnode313008;
typedef struct Rstnodeseq313006 Rstnodeseq313006;
typedef struct TNimObject TNimObject;
typedef struct TNimNode TNimNode;
typedef struct Stringtableobj140209 Stringtableobj140209;
typedef struct TY326029 TY326029;
typedef struct Table326047 Table326047;
typedef struct Keyvaluepairseq326050 Keyvaluepairseq326050;
typedef struct Tocentry326006 Tocentry326006;
typedef struct Codeblockparams326014 Codeblockparams326014;
typedef struct Keyvaluepair140205 Keyvaluepair140205;
typedef struct Generaltokenizer321008 Generaltokenizer321008;
typedef struct TY118706 TY118706;
typedef struct TY329850 TY329850;
typedef struct TY125202 TY125202;
typedef struct TY329853 TY329853;
typedef struct Indexentry327126 Indexentry327126;
typedef struct Table327139 Table327139;
typedef struct Keyvaluepairseq327142 Keyvaluepairseq327142;
typedef struct Keyvaluepair327145 Keyvaluepair327145;
typedef struct TY327582 TY327582;
typedef struct TY327583 TY327583;
typedef struct Slice88080 Slice88080;
typedef struct Basechunk29638 Basechunk29638;
typedef struct Freecell29630 Freecell29630;
typedef struct Keyvaluepairseq140207 Keyvaluepairseq140207;
typedef struct Keyvaluepair326053 Keyvaluepair326053;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Cell47505  {
NI refcount;
TNimType* typ;
};
struct  Cellseq47521  {
NI len;
NI cap;
Cell47505** d;
};
struct  Cellset47517  {
NI counter;
NI max;
Pagedesc47513* head;
Pagedesc47513** data;
};
typedef Smallchunk29640* TY29703[512];
typedef Trunk29610* Trunkbuckets29612[256];
struct  Intset29614  {
Trunkbuckets29612 data;
};
struct  Memregion29688  {
NI minlargeobj;
NI maxlargeobj;
TY29703 freesmallchunks;
Llchunk29682* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk29642* freechunkslist;
Intset29614 chunkstarts;
Avlnode29686* root;
Avlnode29686* deleted;
Avlnode29686* last;
Avlnode29686* freeavlnodes;
};
struct  Gcstat49814  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap49818  {
Gcstack49816* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq47521 zct;
Cellseq47521 decstack;
Cellset47517 cycleroots;
Cellseq47521 tempstack;
NI recgclock;
Memregion29688 region;
Gcstat49814 stat;
};
struct  Rstnode313008  {
NU8 kind;
NimStringDesc* text;
NI level;
Rstnodeseq313006* sons;
};
typedef N_NIMCALL_PTR(void, TY3489) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3494) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3489 marker;
TY3494 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
typedef N_NIMCALL_PTR(NimStringDesc*, Findfilehandler314014) (NimStringDesc* filename);
typedef N_NIMCALL_PTR(void, Msghandler314012) (NimStringDesc* filename, NI line, NI col, NU8 msgkind, NimStringDesc* arg);
typedef NimStringDesc* TY326039[5];
struct  Table326047  {
Keyvaluepairseq326050* data;
NI counter;
};
struct  Rstgenerator326010  {
  TNimObject Sup;
NU8 target;
Stringtableobj140209* config;
NI splitafter;
NI listingcounter;
TY326029* tocpart;
NIM_BOOL hastoc;
NimStringDesc* theindex;
NU8 options;
Findfilehandler314014 findfile;
Msghandler314012 msghandler;
NimStringDesc* filename;
TY326039 meta;
NimStringDesc* currentsection;
Table326047 seenindexterms;
};
struct  Tocentry326006  {
Rstnode313008* n;
NimStringDesc* refname;
NimStringDesc* header;
};
typedef NimStringDesc* TY185781[4];
typedef NimStringDesc* TY183752[1];
typedef NU8 TY202404[32];
typedef NimStringDesc* TY184169[2];
struct  Codeblockparams326014  {
NIM_BOOL numberlines;
NI startline;
NimStringDesc* langstr;
NU8 lang;
};
struct Keyvaluepair140205 {
NimStringDesc* Field0;
NimStringDesc* Field1;
};
typedef NimStringDesc* TY238694[1];
struct  Generaltokenizer321008  {
  TNimObject Sup;
NU8 kind;
NI start;
NI length;
NCSTRING buf;
NI pos;
NU8 state;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef NimStringDesc* TY321069[33];
struct TY118706 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
struct  Indexentry327126  {
NimStringDesc* keyword;
NimStringDesc* link;
NimStringDesc* linktitle;
NimStringDesc* linkdesc;
};
struct  Table327139  {
Keyvaluepairseq327142* data;
NI counter;
};
struct TY329850 {
TY125202* Field0;
TY329853* Field1;
Table327139 Field2;
};
typedef NIM_CHAR TY110371[256];
typedef struct {
N_NIMCALL_PTR(NI, ClPrc) (NimStringDesc* x_330475, NimStringDesc* y_330477, void* ClEnv);
void* ClEnv;
} TY330473;
typedef N_CLOSURE_PTR(NI, TMP5199) (NimStringDesc* x_330462, NimStringDesc* y_330464, void* ClEnv);
struct Keyvaluepair327145 {
NI Field0;
Indexentry327126 Field1;
TY329853* Field2;
};
typedef struct {
N_NIMCALL_PTR(NI, ClPrc) (Indexentry327126* x_328575, Indexentry327126* y_328577, void* ClEnv);
void* ClEnv;
} TY328573;
typedef N_CLOSURE_PTR(NI, TMP5203) (Indexentry327126* x_329720, Indexentry327126* y_329722, void* ClEnv);
typedef N_CLOSURE_PTR(NI, TMP5213) (Indexentry327126* x_328562, Indexentry327126* y_328564, void* ClEnv);
struct TY327583 {
NI Field0;
NimStringDesc* Field1;
};
struct  Slice88080  {
NI a;
NI b;
};
typedef NimStringDesc* TY184156[3];
struct  Gcstack49816  {
Gcstack49816* prev;
Gcstack49816* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY29619[8];
struct  Pagedesc47513  {
Pagedesc47513* next;
NI key;
TY29619 bits;
};
struct  Basechunk29638  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk29640  {
  Basechunk29638 Sup;
Smallchunk29640* next;
Smallchunk29640* prev;
Freecell29630* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk29682  {
NI size;
NI acc;
Llchunk29682* next;
};
struct  Bigchunk29642  {
  Basechunk29638 Sup;
Bigchunk29642* next;
Bigchunk29642* prev;
NI align;
NF data;
};
struct  Trunk29610  {
Trunk29610* next;
NI key;
TY29619 bits;
};
typedef Avlnode29686* TY29693[2];
struct  Avlnode29686  {
TY29693 link;
NI key;
NI upperbound;
NI level;
};
struct  Stringtableobj140209  {
  TNimObject Sup;
NI counter;
Keyvaluepairseq140207* data;
NU8 mode;
};
struct Keyvaluepair326053 {
NI Field0;
NimStringDesc* Field1;
NI Field2;
};
struct  Freecell29630  {
Freecell29630* next;
NI zerofield;
};
struct TY326029 {
  TGenericSeq Sup;
  Tocentry326006 data[SEQ_DECL_SIZE];
};
struct Rstnodeseq313006 {
  TGenericSeq Sup;
  Rstnode313008* data[SEQ_DECL_SIZE];
};
struct TY125202 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct TY329853 {
  TGenericSeq Sup;
  Indexentry327126 data[SEQ_DECL_SIZE];
};
struct TY327582 {
  TGenericSeq Sup;
  TY327583 data[SEQ_DECL_SIZE];
};
struct Keyvaluepairseq326050 {
  TGenericSeq Sup;
  Keyvaluepair326053 data[SEQ_DECL_SIZE];
};
struct Keyvaluepairseq327142 {
  TGenericSeq Sup;
  Keyvaluepair327145 data[SEQ_DECL_SIZE];
};
struct Keyvaluepairseq140207 {
  TGenericSeq Sup;
  Keyvaluepair140205 data[SEQ_DECL_SIZE];
};
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
static N_INLINE(Cell47505*, usrtocell_51440)(void* usr);
static N_INLINE(void, rtladdzct_53001)(Cell47505* c);
N_NOINLINE(void, addzct_51417)(Cellseq47521* s, Cell47505* c);
N_NIMCALL(void, renderaux_326606)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result);
N_NIMCALL(NI, len_313081)(Rstnode313008* n);
N_NIMCALL(void, renderrsttoout_326599)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result);
N_NIMCALL(void, renderheadline_332043)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(NimStringDesc*, rstnodetorefname_314049)(Rstnode313008* n);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq, NI elemsize, NI newlen);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
N_NIMCALL(void, dispa_326576)(NU8 target, NimStringDesc** dest, NimStringDesc* xml, NimStringDesc* tex, NimStringDesc** args, NI argsLen0);
N_NIMCALL(void, nsuAddf)(NimStringDesc** s, NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x);
N_NIMCALL(void, setindexterm_326683)(Rstgenerator326010* d, NimStringDesc* id, NimStringDesc* term, NimStringDesc* linktitle, NimStringDesc* linkdesc);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, nosextractFilename)(NimStringDesc* path);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, quoteindexcolumn_326675)(NimStringDesc* text);
N_NIMCALL(NimStringDesc*, nsuReplaceStr)(NimStringDesc* s, NimStringDesc* sub, NimStringDesc* by);
N_NIMCALL(void, insert_89401)(NimStringDesc** x, NimStringDesc* item, NI i);
N_NIMCALL(NimStringDesc*, striptochtml_332035)(NimStringDesc* s);
N_NIMCALL(NI, nsuFindChar)(NimStringDesc* s, NIM_CHAR sub, NI start);
N_NIMCALL(void, nsuDelete)(NimStringDesc** s, NI first, NI last);
N_NIMCALL(NimStringDesc*, nsuRepeatChar)(NIM_CHAR c, NI count);
N_NIMCALL(void, renderoverline_332221)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result);
N_NIMCALL(void, renderaux_326632)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc* frmta, NimStringDesc* frmtb, NimStringDesc** result);
N_NIMCALL(void, renderfield_333874)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result);
N_NIMCALL(NimStringDesc*, addnodes_314052)(Rstnode313008* n);
N_NIMCALL(NimStringDesc*, esc_326484)(NU8 target, NimStringDesc* s, NI splitafter);
N_NIMCALL(NI, nextsplitpoint_326449)(NimStringDesc* s, NI start);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(void, escchar_326443)(NU8 target, NimStringDesc** dest, NIM_CHAR c);
N_NIMCALL(void, addxmlchar_326426)(NimStringDesc** dest, NIM_CHAR c);
N_NIMCALL(void, addtexchar_326436)(NimStringDesc** dest, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, nsuStrip)(NimStringDesc* s, NIM_BOOL leading, NIM_BOOL trailing, TY202404 chars);
N_NIMCALL(NI, nsuCmpIgnoreStyle)(NimStringDesc* a, NimStringDesc* b);
N_NOINLINE(void, raiseassert_88493)(NimStringDesc* msg);
N_NIMCALL(NimStringDesc*, texcolumns_333850)(Rstnode313008* n);
N_NIMCALL(Rstnode313008*, lastson_313126)(Rstnode313008* n);
N_NIMCALL(void, renderimage_332335)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result);
N_NIMCALL(NimStringDesc*, getfieldvalue_314055)(Rstnode313008* n, NimStringDesc* fieldname);
N_NIMCALL(NIM_BOOL, allcharsinset_100325)(NimStringDesc* s, TY202404 theset);
N_NIMCALL(NimStringDesc*, dispf_326559)(NU8 target, NimStringDesc* xml, NimStringDesc* tex, NimStringDesc** args, NI argsLen0);
N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
N_NIMCALL(NimStringDesc*, getargument_314059)(Rstnode313008* n);
N_NIMCALL(void, rendercodeblock_333421)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result);
N_NIMCALL(void, parsecodeblockparams_332612)(Rstgenerator326010* d, Rstnode313008* n, Codeblockparams326014* Result);
N_NIMCALL(void, init_326074)(Codeblockparams326014* p);
N_NIMCALL(void, parsecodeblockfield_332603)(Rstgenerator326010* d, Rstnode313008* n, Codeblockparams326014* params);
N_NIMCALL(NimStringDesc*, nsuToLowerStr)(NimStringDesc* s);
N_NIMCALL(NI, npuParseInt)(NimStringDesc* s, NI* number, NI start);
N_NIMCALL(NimStringDesc*, getfieldvalue_316772)(Rstnode313008* n);
N_NIMCALL(NU8, getsourcelanguage_321075)(NimStringDesc* name);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, buildlineshtmltable_333211)(Rstgenerator326010* d, Codeblockparams326014* params, NimStringDesc* code, Keyvaluepair140205* Result);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(NimStringDesc*, getordefault_140814)(Stringtableobj140209* t, NimStringDesc* key);
N_NIMCALL(NI, nsuCountLines)(NimStringDesc* s);
N_NIMCALL(void, initgeneraltokenizer_321253)(Generaltokenizer321008* g, NimStringDesc* buf);
N_NIMCALL(void, getnexttoken_323458)(Generaltokenizer321008* g, NU8 lang);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_79810, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(void, deinitgeneraltokenizer_321258)(Generaltokenizer321008* g);
N_NIMCALL(void, rendercontainer_333837)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result);
N_NIMCALL(void, renderindexterm_326846)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result);
N_NIMCALL(NIM_BOOL, haskey_326854)(Table326047 t, NimStringDesc* key);
N_NIMCALL(void, HEX5BHEX5DHEX3D_326915)(Table326047* t, NimStringDesc* key, NI val);
N_NIMCALL(NI, getordefault_326886)(Table326047 t, NimStringDesc* key);
N_NIMCALL(void, rendersmiley_332595)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP5034)(void* p, NI op);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY118706* Result);
N_NIMCALL(void, inittable_326106)(NI initialsize, Table326047* Result);
N_NIMCALL(NI, nsuParseInt)(NimStringDesc* s);
N_NIMCALL(void, rendertocentry_332302)(Rstgenerator326010* d, Tocentry326006* e, NimStringDesc** result);
N_NIMCALL(void, rendertocentries_332310)(Rstgenerator326010* d, NI* j, NI lvl, NimStringDesc** result);
N_NIMCALL(void, writefile_15469)(NimStringDesc* filename, NimStringDesc* content);
N_NIMCALL(void, readindexdir_329847)(NimStringDesc* dir, TY329850* Result);
N_NIMCALL(void, inittable_329875)(NI initialsize, Table327139* Result);
N_NIMCALL(void, TMP5191)(void* p, NI op);
N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str);
N_NIMCALL(NimStringDesc*, HEX2F_118465)(NimStringDesc* head, NimStringDesc* tail);
static N_INLINE(NIM_BOOL, direxists_121808)(NimStringDesc* dir);
N_NIMCALL(NIM_BOOL, nosexistsDir)(NimStringDesc* dir);
N_NIMCALL(NIM_BOOL, nsuEndsWith)(NimStringDesc* s, NimStringDesc* suffix);
N_NIMCALL(FILE*, open_15417)(NimStringDesc* filename, NU8 mode, NI bufsize);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
N_NIMCALL(NIM_BOOL, readline_15513)(FILE* f, NimStringDesc** line);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI start);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI first);
N_NIMCALL(NIM_BOOL, isdocumentationtitle_327515)(NimStringDesc* hyperlink);
N_NIMCALL(TY125202*, nsuSplitChar)(NimStringDesc* s, NIM_CHAR sep);
N_NIMCALL(NimStringDesc*, unquoteindexcolumn_326679)(NimStringDesc* text);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(NI, len_330259)(Table327139 t);
N_NIMCALL(void, HEX5BHEX5DHEX3D_330268)(Table327139* t, Indexentry327126* key, TY329853* val);
static N_INLINE(NI, HEX21HEX26_137004)(NI h, NI val);
N_NIMCALL(NI, hash_137827)(NimStringDesc* x);
static N_INLINE(NimStringDesc*, or_326594)(NimStringDesc* x, NimStringDesc* y);
static N_INLINE(NI, HEX21HEX24_137027)(NI h);
N_NIMCALL(void, sort_330466)(NimStringDesc** a, NI aLen0, TY330473 cmp, NU8 order);
N_NIMCALL(NI, cmp_5680)(NimStringDesc* x, NimStringDesc* y);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src_84004, TNimType* mt);
N_NIMCALL(NimStringDesc*, generatedocumentationjumps_329317)(Table327139 docs);
static N_INLINE(NIM_BOOL, isfilled_163263)(NI hcode);
N_NIMCALL(void, sort_328566)(Indexentry327126* a, NI aLen0, TY328573 cmp, NU8 order);
N_NIMCALL(NI, cmp_327159)(Indexentry327126* a, Indexentry327126* b);
N_NIMCALL(NimStringDesc*, nsuJoinSep)(NimStringDesc** a, NI aLen0, NimStringDesc* sep);
N_NIMCALL(NimStringDesc*, generatemodulejumps_329798)(TY125202* modules);
N_NIMCALL(NimStringDesc*, generatedocumentationindex_328010)(Table327139 docs);
N_NIMCALL(NimStringDesc*, generatedocumentationtoc_327576)(TY329853* entries);
N_NIMCALL(void, TMP5215)(void* p, NI op);
N_NIMCALL(void, striptoclevel_327519)(NimStringDesc* s, TY327583* Result);
static N_INLINE(NimStringDesc*, HEX5BHEX5D_88073)(NimStringDesc* s, Slice88080 x);
static N_INLINE(Slice88080, HEX2EHEX2E_102424)(NI a, NI b);
N_NIMCALL(NimStringDesc*, indenttolevel_327570)(NI* level, NI newlevel);
N_NIMCALL(NimStringDesc*, nsuRepeatStr)(NimStringDesc* s, NI n);
N_NIMCALL(TY329853*, getordefault_329246)(Table327139 t, Indexentry327126* key);
N_NIMCALL(void, sortindex_327414)(Indexentry327126* a, NI aLen0);
N_NIMCALL(void, HEX3CHEX2D_327409)(Indexentry327126* a, Indexentry327126* b);
N_NIMCALL(NimStringDesc*, generatesymbolindex_327457)(TY329853* symbols);
STRING_LITERAL(TMP981, "<wbr />", 7);
STRING_LITERAL(TMP2243, "", 0);
STRING_LITERAL(TMP2245, "-", 1);
STRING_LITERAL(TMP2246, "\012<h$1><a class=\"toc-backref\" id=\"$2\" href=\"#$2\">$3</a></h$1>", 60);
STRING_LITERAL(TMP2247, "\\rsth$4{$3}\\label{$2}\012", 22);
STRING_LITERAL(TMP2248, "\012<h$1 id=\"$2\">$3</h$1>", 22);
STRING_LITERAL(TMP2249, "html", 4);
STRING_LITERAL(TMP2250, "\\", 1);
STRING_LITERAL(TMP2251, "\\\\", 2);
STRING_LITERAL(TMP2252, "\012", 1);
STRING_LITERAL(TMP2253, "\\n", 2);
STRING_LITERAL(TMP2254, "\011", 1);
STRING_LITERAL(TMP2255, "\\t", 2);
STRING_LITERAL(TMP2256, "<h$1 id=\"$2\"><center>$3</center></h$1>", 38);
STRING_LITERAL(TMP2257, "\\rstov$4{$3}\\label{$2}\012", 23);
STRING_LITERAL(TMP2258, "<hr />\012", 7);
STRING_LITERAL(TMP2259, "\\hrule\012", 7);
STRING_LITERAL(TMP2260, "<p>$1</p>\012", 10);
STRING_LITERAL(TMP2261, "$1\012\012", 4);
STRING_LITERAL(TMP2262, "<ul class=\"simple\">$1</ul>\012", 27);
STRING_LITERAL(TMP2263, "\\begin{itemize}$1\\end{itemize}\012", 31);
STRING_LITERAL(TMP2264, "<li>$1</li>\012", 12);
STRING_LITERAL(TMP2265, "\\item $1\012", 9);
STRING_LITERAL(TMP2266, "<ol class=\"simple\">$1</ol>\012", 27);
STRING_LITERAL(TMP2267, "\\begin{enumerate}$1\\end{enumerate}\012", 35);
STRING_LITERAL(TMP2268, "<dl class=\"docutils\">$1</dl>\012", 29);
STRING_LITERAL(TMP2269, "\\begin{description}$1\\end{description}\012", 39);
STRING_LITERAL(TMP2270, "<dt>$1</dt>\012", 12);
STRING_LITERAL(TMP2271, "\\item[$1] ", 10);
STRING_LITERAL(TMP2272, "<dd>$1</dd>\012", 12);
STRING_LITERAL(TMP2273, "$1\012", 3);
STRING_LITERAL(TMP2274, "<table class=\"docinfo\" frame=\"void\" rules=\"none\"><col class=\"do"
"cinfo-name\" /><col class=\"docinfo-content\" /><tbody valign=\"top\""
">$1</tbody></table>", 146);
STRING_LITERAL(TMP2275, " ", 1);
STRING_LITERAL(TMP2276, "&amp;", 5);
STRING_LITERAL(TMP2277, "&lt;", 4);
STRING_LITERAL(TMP2278, "&gt;", 4);
STRING_LITERAL(TMP2279, "&quot;", 6);
STRING_LITERAL(TMP2280, "\\_", 2);
STRING_LITERAL(TMP2281, "\\symbol{123}", 12);
STRING_LITERAL(TMP2282, "\\symbol{125}", 12);
STRING_LITERAL(TMP2283, "\\symbol{91}", 11);
STRING_LITERAL(TMP2284, "\\symbol{93}", 11);
STRING_LITERAL(TMP2285, "\\symbol{92}", 11);
STRING_LITERAL(TMP2286, "\\$", 2);
STRING_LITERAL(TMP2287, "\\&", 2);
STRING_LITERAL(TMP2288, "\\#", 2);
STRING_LITERAL(TMP2289, "\\%", 2);
STRING_LITERAL(TMP2290, "\\symbol{126}", 12);
STRING_LITERAL(TMP2291, "\\symbol{64}", 11);
STRING_LITERAL(TMP2292, "\\symbol{94}", 11);
STRING_LITERAL(TMP2293, "\\symbol{96}", 11);
static NIM_CONST TY202404 TMP2294 = {
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(TMP2295, "author", 6);
STRING_LITERAL(TMP2296, "authors", 7);
STRING_LITERAL(TMP2297, "version", 7);
STRING_LITERAL(TMP2298, "<tr>$1</tr>\012", 12);
STRING_LITERAL(TMP2299, "$1", 2);
STRING_LITERAL(TMP2300, "<th class=\"docinfo-name\">$1:</th>", 33);
STRING_LITERAL(TMP2301, "\\item[$1:]", 10);
STRING_LITERAL(TMP2302, "<td>$1</td>", 11);
STRING_LITERAL(TMP2303, " $1\012", 4);
STRING_LITERAL(TMP2304, "<table frame=\"void\">$1</table>", 30);
STRING_LITERAL(TMP2305, "\\begin{description}\012$1\\end{description}\012", 40);
STRING_LITERAL(TMP2306, "<th align=\"left\">$1</th>", 24);
STRING_LITERAL(TMP2307, "\\item[$1]", 9);
STRING_LITERAL(TMP2308, "<td align=\"left\">$1</td>\012", 25);
STRING_LITERAL(TMP2310, "false renderRstToOut", 20);
STRING_LITERAL(TMP2311, "<pre>$1</pre>\012", 14);
STRING_LITERAL(TMP2312, "\\begin{rstpre}\012$1\012\\end{rstpre}\012", 31);
STRING_LITERAL(TMP2313, "<p>$1</p>", 9);
STRING_LITERAL(TMP2314, "$1<br />", 8);
STRING_LITERAL(TMP2315, "$1\\\\\012", 5);
STRING_LITERAL(TMP2316, "<blockquote><p>$1</p></blockquote>\012", 35);
STRING_LITERAL(TMP2317, "\\begin{quote}$1\\end{quote}\012", 27);
STRING_LITERAL(TMP2318, "<table border=\"1\" class=\"docutils\">$1</table>", 45);
STRING_LITERAL(TMP2319, "\\begin{table}\\begin{rsttab}{", 28);
STRING_LITERAL(TMP2320, "|X", 2);
STRING_LITERAL(TMP2321, "|}\012\\hline\012$1\\end{rsttab}\\end{table}", 35);
STRING_LITERAL(TMP2322, " & ", 3);
STRING_LITERAL(TMP2323, "\\\\\012\\hline\012", 10);
STRING_LITERAL(TMP2324, "<tr>", 4);
STRING_LITERAL(TMP2325, "</tr>\012", 6);
STRING_LITERAL(TMP2326, "<th>$1</th>", 11);
STRING_LITERAL(TMP2327, "\\textbf{$1}", 11);
STRING_LITERAL(TMP2328, "<a class=\"reference external\" href=\"#$2\">$1</a>", 47);
STRING_LITERAL(TMP2329, "$1\\ref{$2}", 10);
STRING_LITERAL(TMP2330, "<a class=\"reference external\" href=\"$1\">$1</a>", 46);
STRING_LITERAL(TMP2331, "\\href{$1}{$1}", 13);
STRING_LITERAL(TMP2332, "<a class=\"reference external\" href=\"$2\">$1</a>", 46);
STRING_LITERAL(TMP2333, "\\href{$2}{$1}", 13);
STRING_LITERAL(TMP2335, "scale", 5);
static NIM_CONST TY202404 TMP2336 = {
0x00, 0x3E, 0x00, 0x00, 0x21, 0xC0, 0xFF, 0x07,
0xFE, 0xFF, 0xFF, 0x97, 0xFE, 0xFF, 0xFF, 0x07,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
;
STRING_LITERAL(TMP2337, " scale=\"$1\"", 11);
STRING_LITERAL(TMP2338, " scale=$1", 9);
STRING_LITERAL(TMP2339, "height", 6);
STRING_LITERAL(TMP2340, " height=\"$1\"", 12);
STRING_LITERAL(TMP2341, " height=$1", 10);
STRING_LITERAL(TMP2342, "width", 5);
STRING_LITERAL(TMP2343, " width=\"$1\"", 11);
STRING_LITERAL(TMP2344, " width=$1", 9);
STRING_LITERAL(TMP2345, "alt", 3);
STRING_LITERAL(TMP2346, " alt=\"$1\"", 9);
STRING_LITERAL(TMP2347, "align", 5);
STRING_LITERAL(TMP2348, " align=\"$1\"", 11);
STRING_LITERAL(TMP2349, "[$1]", 4);
STRING_LITERAL(TMP2350, "<img src=\"$1\"$2 />", 18);
STRING_LITERAL(TMP2351, "\\includegraphics$2{$1}", 22);
STRING_LITERAL(TMP2352, "number-lines", 12);
STRING_LITERAL(TMP2353, "file", 4);
STRING_LITERAL(TMP2354, "default-language", 16);
STRING_LITERAL(TMP2363, "doc.listing_start", 17);
STRING_LITERAL(TMP2364, "doc.listing_end", 15);
STRING_LITERAL(TMP2365, "<table class=\"line-nums-table\"><tbody><tr><td class=\"blob-line-"
"nums\"><pre class=\"line-nums\">", 92);
STRING_LITERAL(TMP2366, "</pre></td><td>", 15);
STRING_LITERAL(TMP2367, "</td></tr></tbody></table>", 26);
STRING_LITERAL(TMP2368, "doc.listing_button", 18);
STRING_LITERAL(TMP2369, "\\begin{rstpre}\012", 15);
STRING_LITERAL(TMP2531, "<span class=\"$2\">$1</span>", 26);
STRING_LITERAL(TMP2532, "\\span$2{$1}", 11);
extern NIM_CONST TY321069 tokenclasstostr_321066;
STRING_LITERAL(TMP2566, "\012\\end{rstpre}\012", 14);
STRING_LITERAL(TMP2567, "<div>$1</div>", 13);
STRING_LITERAL(TMP2568, "<div class=\"$1\">$2</div>", 24);
STRING_LITERAL(TMP2569, "$2", 2);
STRING_LITERAL(TMP2570, "|$1|", 4);
STRING_LITERAL(TMP2571, "<sub>$1</sub>", 13);
STRING_LITERAL(TMP2572, "\\rstsub{$1}", 11);
STRING_LITERAL(TMP2573, "<sup>$1</sup>", 13);
STRING_LITERAL(TMP2574, "\\rstsup{$1}", 11);
STRING_LITERAL(TMP2575, "<em>$1</em>", 11);
STRING_LITERAL(TMP2576, "\\emph{$1}", 9);
STRING_LITERAL(TMP2577, "<strong>$1</strong>", 19);
STRING_LITERAL(TMP2578, "<strong><em>$1</em></strong>", 28);
STRING_LITERAL(TMP2579, "\\textbf{emph{$1}}", 17);
STRING_LITERAL(TMP2580, "<cite>$1</cite>", 15);
STRING_LITERAL(TMP2583, "<span id=\"$1\">$2</span>", 23);
STRING_LITERAL(TMP2584, "$2\\label{$1}", 12);
STRING_LITERAL(TMP2585, "<tt class=\"docutils literal\"><span class=\"pre\">$1</span></tt>", 61);
STRING_LITERAL(TMP2586, "\\texttt{$1}", 11);
STRING_LITERAL(TMP2587, "<img src=\"$1\" width=\"15\"\012        height=\"17\" hspace=\"2\" vspace="
"\"2\" class=\"smiley\" />", 84);
STRING_LITERAL(TMP2588, "\\includegraphics{$1}", 20);
STRING_LITERAL(TMP2589, "doc.smiley_format", 17);
STRING_LITERAL(TMP5038, ".nim", 4);
STRING_LITERAL(TMP5039, "Module ", 7);
STRING_LITERAL(TMP5040, "split.item.toc", 14);
STRING_LITERAL(TMP5119, "<li><a class=\"reference\" id=\"$1_toc\" href=\"#$1\">$2</a></li>\012", 60);
STRING_LITERAL(TMP5120, "\\item\\label{$1_toc} $2\\ref{$1}\012", 31);
STRING_LITERAL(TMP5121, "<ul class=\"simple\">$1</ul>", 26);
STRING_LITERAL(TMP5122, "\\begin{enumerate}$1\\end{enumerate}", 34);
STRING_LITERAL(TMP5193, ".", 1);
STRING_LITERAL(TMP5194, "..", 2);
STRING_LITERAL(TMP5195, ".idx", 4);
STRING_LITERAL(TMP5196, "doc_toc_", 8);
STRING_LITERAL(TMP5200, "Documents: ", 11);
STRING_LITERAL(TMP5204, "<a href=\"", 9);
STRING_LITERAL(TMP5205, "\">", 2);
STRING_LITERAL(TMP5206, "</a>", 4);
STRING_LITERAL(TMP5207, ", ", 2);
STRING_LITERAL(TMP5208, ".<br/>", 6);
STRING_LITERAL(TMP5209, "<p />", 5);
STRING_LITERAL(TMP5210, "Modules: ", 9);
STRING_LITERAL(TMP5211, ".html\">", 7);
STRING_LITERAL(TMP5212, "<h2>Documentation files</h2>\012", 29);
STRING_LITERAL(TMP5216, "<ul>\012", 5);
STRING_LITERAL(TMP5217, "<ul>", 4);
STRING_LITERAL(TMP5218, "</ul>", 5);
STRING_LITERAL(TMP5219, "<li><a href=\"", 13);
STRING_LITERAL(TMP5220, "</a>\012", 5);
STRING_LITERAL(TMP5221, "</ul>\012", 6);
STRING_LITERAL(TMP5222, "<ul><li><a href=\"", 17);
STRING_LITERAL(TMP5223, "<h2>API symbols</h2>\012", 21);
STRING_LITERAL(TMP5224, "<dt><a name=\"$2\" href=\"#$2\"><span>$1:</span></a></dt><ul class="
"\"simple\"><dd>\012", 77);
STRING_LITERAL(TMP5225, "<li><a class=\"reference external\"\012          title=\"$3\" href=\"$1"
"\">$2</a></li>\012          ", 87);
STRING_LITERAL(TMP5226, "<li><a class=\"reference external\" href=\"$1\">$2</a></li>\012       "
"   ", 66);
STRING_LITERAL(TMP5227, "</ul></dd>\012", 11);
NimStringDesc* splitter_326441;
extern Gcheap49818 gch_49859;
extern TNimType NTI321008; /* GeneralTokenizer */
extern TNimType NTI3608; /* RootObj */
TNimType NTI326010; /* RstGenerator */
TNimType NTI326004; /* OutputTarget */
extern TNimType NTI140211; /* StringTableRef */
extern TNimType NTI104; /* int */
TNimType NTI326006; /* TocEntry */
extern TNimType NTI313004; /* PRstNode */
extern TNimType NTI138; /* string */
TNimType NTI326029; /* seq[TocEntry] */
extern TNimType NTI130; /* bool */
extern TNimType NTI314006; /* RstParseOptions */
extern TNimType NTI314014; /* FindFileHandler */
extern TNimType NTI314012; /* MsgHandler */
TNimType NTI326039; /* array[MetaEnum, string] */
extern TNimType NTI326047; /* Table */
extern TNimType NTI125202; /* seq[string] */
TNimType NTI327126; /* IndexEntry */
TNimType NTI329853; /* seq[IndexEntry] */
extern TNimType NTI327142; /* KeyValuePairSeq */
TNimType NTI327583; /* tuple[level: int, text: string] */
TNimType NTI327582; /* seq[tuple[level: int, text: string]] */

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

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

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

N_NIMCALL(void, renderaux_326606)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result) {
	{
		NI i_326623;
		NI HEX3Atmp_326625;
		NI LOC2;
		NI res_326628;
		i_326623 = 0;
		HEX3Atmp_326625 = 0;
		LOC2 = 0;
		LOC2 = len_313081(n);
		HEX3Atmp_326625 = (NI)(LOC2 - ((NI) 1));
		res_326628 = ((NI) 0);
		{
			while (1) {
				if (!(res_326628 <= HEX3Atmp_326625)) goto LA4;
				i_326623 = res_326628;
				renderrsttoout_326599(d, (*n).sons->data[i_326623], result);
				res_326628 += ((NI) 1);
			} LA4: ;
		}
	}
}

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;
}

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

N_NIMCALL(void, dispa_326576)(NU8 target, NimStringDesc** dest, NimStringDesc* xml, NimStringDesc* tex, NimStringDesc** args, NI argsLen0) {
	{
		if (!!((target == ((NU8) 1)))) goto LA3;
		nsuAddf(dest, xml, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		nsuAddf(dest, tex, args, argsLen0);
	}
	LA1: ;
}

static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c) {
	(*dest).data[((*dest).Sup.len)- 0] = c;
	(*dest).data[((NI)((*dest).Sup.len + ((NI) 1)))- 0] = 0;
	(*dest).Sup.len += ((NI) 1);
}

N_NIMCALL(NimStringDesc*, quoteindexcolumn_326675)(NimStringDesc* text) {
	NimStringDesc* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = nsuReplaceStr(text, ((NimStringDesc*) &TMP2250), ((NimStringDesc*) &TMP2251));
	LOC2 = 0;
	LOC2 = nsuReplaceStr(LOC1, ((NimStringDesc*) &TMP2252), ((NimStringDesc*) &TMP2253));
	result = nsuReplaceStr(LOC2, ((NimStringDesc*) &TMP2254), ((NimStringDesc*) &TMP2255));
	return result;
}

N_NIMCALL(void, setindexterm_326683)(Rstgenerator326010* d, NimStringDesc* id, NimStringDesc* term, NimStringDesc* linktitle, NimStringDesc* linkdesc) {
	NimStringDesc* entry;
	NIM_BOOL istitle;
	NimStringDesc* htmlfile;
	NimStringDesc* LOC1;
	entry = copyString(term);
	istitle = NIM_FALSE;
	entry = addChar(entry, 9);
	LOC1 = 0;
	LOC1 = nosextractFilename((*d).filename);
	htmlfile = noschangeFileExt(LOC1, ((NimStringDesc*) &TMP2249));
	entry = resizeString(entry, htmlfile->Sup.len + 0);
appendString(entry, htmlfile);
	{
		if (!(((NI) 0) < (id ? id->Sup.len : 0))) goto LA4;
		entry = addChar(entry, 35);
		entry = resizeString(entry, id->Sup.len + 0);
appendString(entry, id);
	}
	goto LA2;
	LA4: ;
	{
		istitle = NIM_TRUE;
	}
	LA2: ;
	{
		NIM_BOOL LOC9;
		NimStringDesc* LOC13;
		NimStringDesc* LOC14;
		NimStringDesc* LOC15;
		NimStringDesc* LOC16;
		LOC9 = 0;
		LOC9 = (((NI) 0) < (linktitle ? linktitle->Sup.len : 0));
		if (LOC9) goto LA10;
		LOC9 = (((NI) 0) < (linkdesc ? linkdesc->Sup.len : 0));
		LA10: ;
		if (!LOC9) goto LA11;
		LOC13 = 0;
		LOC14 = 0;
		LOC14 = quoteindexcolumn_326675(linktitle);
		LOC13 = rawNewString(LOC14->Sup.len + 1);
appendChar(LOC13, 9);
appendString(LOC13, LOC14);
		entry = resizeString(entry, LOC13->Sup.len + 0);
appendString(entry, LOC13);
		LOC15 = 0;
		LOC16 = 0;
		LOC16 = quoteindexcolumn_326675(linkdesc);
		LOC15 = rawNewString(LOC16->Sup.len + 1);
appendChar(LOC15, 9);
appendString(LOC15, LOC16);
		entry = resizeString(entry, LOC15->Sup.len + 0);
appendString(entry, LOC15);
	}
	LA11: ;
	entry = resizeString(entry, 1);
appendString(entry, ((NimStringDesc*) &TMP2252));
	{
		if (!istitle) goto LA19;
		insert_89401((&(*d).theindex), entry, ((NI) 0));
	}
	goto LA17;
	LA19: ;
	{
		(*d).theindex = resizeString((*d).theindex, entry->Sup.len + 0);
appendString((*d).theindex, entry);
	}
	LA17: ;
}

N_NIMCALL(NimStringDesc*, striptochtml_332035)(NimStringDesc* s) {
	NimStringDesc* result;
	NI first;
{	result = 0;
	result = copyString(s);
	first = nsuFindChar(result, 60, ((NI) 0));
	{
		while (1) {
			NI last;
			if (!(((NI) 0) <= first)) goto LA2;
			last = nsuFindChar(result, 62, ((NI) (first)));
			{
				if (!(last < ((NI) 0))) goto LA5;
				goto BeforeRet;
			}
			LA5: ;
			nsuDelete((&result), first, last);
			first = nsuFindChar(result, 60, ((NI) (first)));
		} LA2: ;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, renderheadline_332043)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result) {
	NimStringDesc* tmp;
	NimStringDesc* sectionprefix;
	NimStringDesc* refname;
	NimStringDesc* LOC14;
	NimStringDesc* LOC15;
	NimStringDesc* LOC25;
	NimStringDesc* LOC26;
	NimStringDesc* LOC27;
	tmp = copyString(((NimStringDesc*) &TMP2243));
	{
		NI i_332061;
		NI HEX3Atmp_332206;
		NI LOC2;
		NI res_332209;
		i_332061 = 0;
		HEX3Atmp_332206 = 0;
		LOC2 = 0;
		LOC2 = len_313081(n);
		HEX3Atmp_332206 = (NI)(LOC2 - ((NI) 1));
		res_332209 = ((NI) 0);
		{
			while (1) {
				if (!(res_332209 <= HEX3Atmp_332206)) goto LA4;
				i_332061 = res_332209;
				renderrsttoout_326599(d, (*n).sons->data[i_332061], (&tmp));
				res_332209 += ((NI) 1);
			} LA4: ;
		}
	}
	unsureAsgnRef((void**) (&(*d).currentsection), copyString(tmp));
	sectionprefix = copyString(((NimStringDesc*) &TMP2243));
	{
		NI i_332074;
		NI HEX3Atmp_332214;
		NI res_332217;
		i_332074 = 0;
		HEX3Atmp_332214 = 0;
		HEX3Atmp_332214 = ((*d).tocpart ? ((*d).tocpart->Sup.len-1) : -1);
		res_332217 = HEX3Atmp_332214;
		{
			while (1) {
				Rstnode313008* n2;
				if (!(((NI) 0) <= res_332217)) goto LA7;
				i_332074 = res_332217;
				n2 = (*d).tocpart->data[i_332074].n;
				{
					NimStringDesc* LOC12;
					NimStringDesc* LOC13;
					if (!((*n2).level < (*n).level)) goto LA10;
					LOC12 = 0;
					LOC13 = 0;
					LOC13 = rstnodetorefname_314049(n2);
					LOC12 = rawNewString(LOC13->Sup.len + 1);
appendString(LOC12, LOC13);
appendString(LOC12, ((NimStringDesc*) &TMP2245));
					sectionprefix = LOC12;
					goto LA5;
				}
				LA10: ;
				res_332217 -= ((NI) 1);
			} LA7: ;
		}
	} LA5: ;
	LOC14 = 0;
	LOC15 = 0;
	LOC15 = rstnodetorefname_314049(n);
	LOC14 = rawNewString(sectionprefix->Sup.len + LOC15->Sup.len + 0);
appendString(LOC14, sectionprefix);
appendString(LOC14, LOC15);
	refname = LOC14;
	{
		NI length;
		NimStringDesc* LOC20;
		NimStringDesc* LOC21;
		TY185781 LOC22;
		if (!(*d).hastoc) goto LA18;
		length = ((*d).tocpart ? (*d).tocpart->Sup.len : 0);
		(*d).tocpart = (TY326029*) setLengthSeq(&((*d).tocpart)->Sup, sizeof(Tocentry326006), ((NI) ((NI)(length + ((NI) 1)))));
		LOC20 = 0;
		LOC20 = (*d).tocpart->data[length].refname; (*d).tocpart->data[length].refname = copyStringRC1(refname);
		if (LOC20) nimGCunrefNoCycle(LOC20);
		asgnRefNoCycle((void**) (&(*d).tocpart->data[length].n), n);
		LOC21 = 0;
		LOC21 = (*d).tocpart->data[length].header; (*d).tocpart->data[length].header = copyStringRC1(tmp);
		if (LOC21) nimGCunrefNoCycle(LOC21);
		memset((void*)LOC22, 0, sizeof(LOC22));
		LOC22[0] = nimIntToStr((*n).level);
		LOC22[1] = copyString((*d).tocpart->data[length].refname);
		LOC22[2] = copyString(tmp);
		LOC22[3] = nimCharToStr(((NIM_CHAR) (((NI) ((NI)((NI)((*n).level - ((NI) 1)) + ((NI) 65)))))));
		dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2246), ((NimStringDesc*) &TMP2247), LOC22, 4);
	}
	goto LA16;
	LA18: ;
	{
		TY185781 LOC24;
		memset((void*)LOC24, 0, sizeof(LOC24));
		LOC24[0] = nimIntToStr((*n).level);
		LOC24[1] = copyString(refname);
		LOC24[2] = copyString(tmp);
		LOC24[3] = nimCharToStr(((NIM_CHAR) (((NI) ((NI)((NI)((*n).level - ((NI) 1)) + ((NI) 65)))))));
		dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2248), ((NimStringDesc*) &TMP2247), LOC24, 4);
	}
	LA16: ;
	LOC25 = 0;
	LOC25 = striptochtml_332035(tmp);
	LOC26 = 0;
	LOC27 = 0;
	LOC27 = nsuRepeatChar(32, ((NI) (((((NI) 0) >= (*n).level) ? ((NI) 0) : (*n).level))));
	LOC26 = rawNewString(LOC27->Sup.len + tmp->Sup.len + 0);
appendString(LOC26, LOC27);
appendString(LOC26, tmp);
	setindexterm_326683(d, refname, LOC25, LOC26, ((NimStringDesc*) &TMP2243));
}

N_NIMCALL(void, renderoverline_332221)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result) {
	{
		if (!(((*d).meta[(((NU8) 1))- 0] ? (*d).meta[(((NU8) 1))- 0]->Sup.len : 0) == ((NI) 0))) goto LA3;
		{
			NI i_332238;
			NI HEX3Atmp_332279;
			NI LOC6;
			NI res_332282;
			i_332238 = 0;
			HEX3Atmp_332279 = 0;
			LOC6 = 0;
			LOC6 = len_313081(n);
			HEX3Atmp_332279 = (NI)(LOC6 - ((NI) 1));
			res_332282 = ((NI) 0);
			{
				while (1) {
					if (!(res_332282 <= HEX3Atmp_332279)) goto LA8;
					i_332238 = res_332282;
					renderrsttoout_326599(d, (*n).sons->data[i_332238], (&(*d).meta[(((NU8) 1))- 0]));
					res_332282 += ((NI) 1);
				} LA8: ;
			}
		}
		unsureAsgnRef((void**) (&(*d).currentsection), copyString((*d).meta[(((NU8) 1))- 0]));
	}
	goto LA1;
	LA3: ;
	{
		if (!(((*d).meta[(((NU8) 2))- 0] ? (*d).meta[(((NU8) 2))- 0]->Sup.len : 0) == ((NI) 0))) goto LA10;
		{
			NI i_332251;
			NI HEX3Atmp_332287;
			NI LOC13;
			NI res_332290;
			i_332251 = 0;
			HEX3Atmp_332287 = 0;
			LOC13 = 0;
			LOC13 = len_313081(n);
			HEX3Atmp_332287 = (NI)(LOC13 - ((NI) 1));
			res_332290 = ((NI) 0);
			{
				while (1) {
					if (!(res_332290 <= HEX3Atmp_332287)) goto LA15;
					i_332251 = res_332290;
					renderrsttoout_326599(d, (*n).sons->data[i_332251], (&(*d).meta[(((NU8) 2))- 0]));
					res_332290 += ((NI) 1);
				} LA15: ;
			}
		}
		unsureAsgnRef((void**) (&(*d).currentsection), copyString((*d).meta[(((NU8) 2))- 0]));
	}
	goto LA1;
	LA10: ;
	{
		NimStringDesc* tmp;
		TY185781 LOC21;
		tmp = copyString(((NimStringDesc*) &TMP2243));
		{
			NI i_332265;
			NI HEX3Atmp_332295;
			NI LOC18;
			NI res_332298;
			i_332265 = 0;
			HEX3Atmp_332295 = 0;
			LOC18 = 0;
			LOC18 = len_313081(n);
			HEX3Atmp_332295 = (NI)(LOC18 - ((NI) 1));
			res_332298 = ((NI) 0);
			{
				while (1) {
					if (!(res_332298 <= HEX3Atmp_332295)) goto LA20;
					i_332265 = res_332298;
					renderrsttoout_326599(d, (*n).sons->data[i_332265], (&tmp));
					res_332298 += ((NI) 1);
				} LA20: ;
			}
		}
		unsureAsgnRef((void**) (&(*d).currentsection), copyString(tmp));
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = nimIntToStr((*n).level);
		LOC21[1] = rstnodetorefname_314049(n);
		LOC21[2] = copyString(tmp);
		LOC21[3] = nimCharToStr(((NIM_CHAR) (((NI) ((NI)((NI)((*n).level - ((NI) 1)) + ((NI) 65)))))));
		dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2256), ((NimStringDesc*) &TMP2257), LOC21, 4);
	}
	LA1: ;
}

N_NIMCALL(void, renderaux_326632)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc* frmta, NimStringDesc* frmtb, NimStringDesc** result) {
	NimStringDesc* tmp;
	tmp = copyString(((NimStringDesc*) &TMP2243));
	{
		NI i_326652;
		NI HEX3Atmp_326668;
		NI LOC2;
		NI res_326671;
		i_326652 = 0;
		HEX3Atmp_326668 = 0;
		LOC2 = 0;
		LOC2 = len_313081(n);
		HEX3Atmp_326668 = (NI)(LOC2 - ((NI) 1));
		res_326671 = ((NI) 0);
		{
			while (1) {
				if (!(res_326671 <= HEX3Atmp_326668)) goto LA4;
				i_326652 = res_326671;
				renderrsttoout_326599(d, (*n).sons->data[i_326652], (&tmp));
				res_326671 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		TY183752 LOC9;
		if (!!(((*d).target == ((NU8) 1)))) goto LA7;
		memset((void*)LOC9, 0, sizeof(LOC9));
		LOC9[0] = copyString(tmp);
		nsuAddf(result, frmta, LOC9, 1);
	}
	goto LA5;
	LA7: ;
	{
		TY183752 LOC11;
		memset((void*)LOC11, 0, sizeof(LOC11));
		LOC11[0] = copyString(tmp);
		nsuAddf(result, frmtb, LOC11, 1);
	}
	LA5: ;
}

N_NIMCALL(NI, nextsplitpoint_326449)(NimStringDesc* s, NI start) {
	NI result;
{	result = 0;
	result = start;
	{
		while (1) {
			if (!(result < (NI)((s ? s->Sup.len : 0) + ((NI) 0)))) goto LA2;
			switch (((NU8)(s->data[result]))) {
			case 95:
			{
				goto BeforeRet;
			}
			break;
			case 97 ... 122:
			{
				{
					if (!((NI)(result + ((NI) 1)) < (NI)((s ? s->Sup.len : 0) + ((NI) 0)))) goto LA7;
					{
						if (!(((NU8)(s->data[(NI)(result + ((NI) 1))])) >= ((NU8)(65)) && ((NU8)(s->data[(NI)(result + ((NI) 1))])) <= ((NU8)(90)))) goto LA11;
						goto BeforeRet;
					}
					LA11: ;
				}
				LA7: ;
			}
			break;
			default:
			{
			}
			break;
			}
			result += ((NI) 1);
		} LA2: ;
	}
	result -= ((NI) 1);
	}BeforeRet: ;
	return result;
}

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;
}

N_NIMCALL(void, addxmlchar_326426)(NimStringDesc** dest, NIM_CHAR c) {
	switch (((NU8)(c))) {
	case 38:
	{
		(*dest) = resizeString((*dest), 5);
appendString((*dest), ((NimStringDesc*) &TMP2276));
	}
	break;
	case 60:
	{
		(*dest) = resizeString((*dest), 4);
appendString((*dest), ((NimStringDesc*) &TMP2277));
	}
	break;
	case 62:
	{
		(*dest) = resizeString((*dest), 4);
appendString((*dest), ((NimStringDesc*) &TMP2278));
	}
	break;
	case 34:
	{
		(*dest) = resizeString((*dest), 6);
appendString((*dest), ((NimStringDesc*) &TMP2279));
	}
	break;
	default:
	{
		(*dest) = addChar((*dest), c);
	}
	break;
	}
}

N_NIMCALL(void, addtexchar_326436)(NimStringDesc** dest, NIM_CHAR c) {
	switch (((NU8)(c))) {
	case 95:
	{
		(*dest) = resizeString((*dest), 2);
appendString((*dest), ((NimStringDesc*) &TMP2280));
	}
	break;
	case 123:
	{
		(*dest) = resizeString((*dest), 12);
appendString((*dest), ((NimStringDesc*) &TMP2281));
	}
	break;
	case 125:
	{
		(*dest) = resizeString((*dest), 12);
appendString((*dest), ((NimStringDesc*) &TMP2282));
	}
	break;
	case 91:
	{
		(*dest) = resizeString((*dest), 11);
appendString((*dest), ((NimStringDesc*) &TMP2283));
	}
	break;
	case 93:
	{
		(*dest) = resizeString((*dest), 11);
appendString((*dest), ((NimStringDesc*) &TMP2284));
	}
	break;
	case 92:
	{
		(*dest) = resizeString((*dest), 11);
appendString((*dest), ((NimStringDesc*) &TMP2285));
	}
	break;
	case 36:
	{
		(*dest) = resizeString((*dest), 2);
appendString((*dest), ((NimStringDesc*) &TMP2286));
	}
	break;
	case 38:
	{
		(*dest) = resizeString((*dest), 2);
appendString((*dest), ((NimStringDesc*) &TMP2287));
	}
	break;
	case 35:
	{
		(*dest) = resizeString((*dest), 2);
appendString((*dest), ((NimStringDesc*) &TMP2288));
	}
	break;
	case 37:
	{
		(*dest) = resizeString((*dest), 2);
appendString((*dest), ((NimStringDesc*) &TMP2289));
	}
	break;
	case 126:
	{
		(*dest) = resizeString((*dest), 12);
appendString((*dest), ((NimStringDesc*) &TMP2290));
	}
	break;
	case 64:
	{
		(*dest) = resizeString((*dest), 11);
appendString((*dest), ((NimStringDesc*) &TMP2291));
	}
	break;
	case 94:
	{
		(*dest) = resizeString((*dest), 11);
appendString((*dest), ((NimStringDesc*) &TMP2292));
	}
	break;
	case 96:
	{
		(*dest) = resizeString((*dest), 11);
appendString((*dest), ((NimStringDesc*) &TMP2293));
	}
	break;
	default:
	{
		(*dest) = addChar((*dest), c);
	}
	break;
	}
}

static N_INLINE(void, escchar_326443)(NU8 target, NimStringDesc** dest, NIM_CHAR c) {
	switch (target) {
	case ((NU8) 0):
	{
		addxmlchar_326426(dest, c);
	}
	break;
	case ((NU8) 1):
	{
		addtexchar_326436(dest, c);
	}
	break;
	}
}

N_NIMCALL(NimStringDesc*, esc_326484)(NU8 target, NimStringDesc* s, NI splitafter) {
	NimStringDesc* result;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP2243));
	{
		NI partlen;
		NI j;
		if (!(((NI) 0) <= splitafter)) goto LA3;
		partlen = ((NI) 0);
		j = ((NI) 0);
		{
			while (1) {
				NI k;
				if (!(j < (s ? s->Sup.len : 0))) goto LA6;
				k = nextsplitpoint_326449(s, j);
				{
					NIM_BOOL LOC9;
					LOC9 = 0;
					LOC9 = !(eqStrings(splitter_326441, ((NimStringDesc*) &TMP2275)));
					if (LOC9) goto LA10;
					LOC9 = (splitafter < (NI)((NI)((NI)(partlen + k) - j) + ((NI) 1)));
					LA10: ;
					if (!LOC9) goto LA11;
					partlen = ((NI) 0);
					result = resizeString(result, splitter_326441->Sup.len + 0);
appendString(result, splitter_326441);
				}
				LA11: ;
				{
					NI i_326504;
					NI res_326532;
					i_326504 = 0;
					res_326532 = j;
					{
						while (1) {
							if (!(res_326532 <= k)) goto LA15;
							i_326504 = res_326532;
							escchar_326443(target, (&result), s->data[i_326504]);
							res_326532 += ((NI) 1);
						} LA15: ;
					}
				}
				partlen += (NI)((NI)(k - j) + ((NI) 1));
				j = (NI)(k + ((NI) 1));
			} LA6: ;
		}
	}
	goto LA1;
	LA3: ;
	{
		{
			NI i_326526;
			NI HEX3Atmp_326537;
			NI res_326540;
			i_326526 = 0;
			HEX3Atmp_326537 = 0;
			HEX3Atmp_326537 = (NI)((s ? s->Sup.len : 0) - ((NI) 1));
			res_326540 = ((NI) 0);
			{
				while (1) {
					if (!(res_326540 <= HEX3Atmp_326537)) goto LA19;
					i_326526 = res_326540;
					escchar_326443(target, (&result), s->data[i_326526]);
					res_326540 += ((NI) 1);
				} LA19: ;
			}
		}
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, renderfield_333874)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result) {
	NIM_BOOL b;
	b = NIM_FALSE;
	{
		NimStringDesc* fieldname;
		NimStringDesc* fieldval;
		NimStringDesc* LOC5;
		NimStringDesc* LOC6;
		if (!((*d).target == ((NU8) 1))) goto LA3;
		fieldname = addnodes_314052((*n).sons->data[((NI) 0)]);
		LOC5 = 0;
		LOC5 = addnodes_314052((*n).sons->data[((NI) 1)]);
		LOC6 = 0;
		LOC6 = nsuStrip(LOC5, NIM_TRUE, NIM_TRUE, TMP2294);
		fieldval = esc_326484((*d).target, LOC6, ((NI) -1));
		{
			NIM_BOOL LOC9;
			NI LOC10;
			NI LOC12;
			LOC9 = 0;
			LOC10 = 0;
			LOC10 = nsuCmpIgnoreStyle(fieldname, ((NimStringDesc*) &TMP2295));
			LOC9 = (LOC10 == ((NI) 0));
			if (LOC9) goto LA11;
			LOC12 = 0;
			LOC12 = nsuCmpIgnoreStyle(fieldname, ((NimStringDesc*) &TMP2296));
			LOC9 = (LOC12 == ((NI) 0));
			LA11: ;
			if (!LOC9) goto LA13;
			{
				if (!(((*d).meta[(((NU8) 3))- 0] ? (*d).meta[(((NU8) 3))- 0]->Sup.len : 0) == ((NI) 0))) goto LA17;
				unsureAsgnRef((void**) (&(*d).meta[(((NU8) 3))- 0]), copyString(fieldval));
				b = NIM_TRUE;
			}
			LA17: ;
		}
		goto LA7;
		LA13: ;
		{
			NI LOC20;
			LOC20 = 0;
			LOC20 = nsuCmpIgnoreStyle(fieldname, ((NimStringDesc*) &TMP2297));
			if (!(LOC20 == ((NI) 0))) goto LA21;
			{
				if (!(((*d).meta[(((NU8) 4))- 0] ? (*d).meta[(((NU8) 4))- 0]->Sup.len : 0) == ((NI) 0))) goto LA25;
				unsureAsgnRef((void**) (&(*d).meta[(((NU8) 4))- 0]), copyString(fieldval));
				b = NIM_TRUE;
			}
			LA25: ;
		}
		goto LA7;
		LA21: ;
		LA7: ;
	}
	LA3: ;
	{
		if (!!(b)) goto LA29;
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2298), ((NimStringDesc*) &TMP2299), result);
	}
	LA29: ;
}

N_NIMCALL(NimStringDesc*, texcolumns_333850)(Rstnode313008* n) {
	NimStringDesc* result;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP2243));
	{
		NI i_333865;
		NI HEX3Atmp_333867;
		NI res_333870;
		i_333865 = 0;
		HEX3Atmp_333867 = 0;
		HEX3Atmp_333867 = len_313081(n);
		res_333870 = ((NI) 1);
		{
			while (1) {
				if (!(res_333870 <= HEX3Atmp_333867)) goto LA3;
				i_333865 = res_333870;
				result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2320));
				res_333870 += ((NI) 1);
			} LA3: ;
		}
	}
	return result;
}

N_NIMCALL(NimStringDesc*, dispf_326559)(NU8 target, NimStringDesc* xml, NimStringDesc* tex, NimStringDesc** args, NI argsLen0) {
	NimStringDesc* result;
	result = 0;
	{
		if (!!((target == ((NU8) 1)))) goto LA3;
		result = nsuFormatOpenArray(xml, args, argsLen0);
	}
	goto LA1;
	LA3: ;
	{
		result = nsuFormatOpenArray(tex, args, argsLen0);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, renderimage_332335)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result) {
	NimStringDesc* options;
	NimStringDesc* s;
	NimStringDesc* arg;
	options = copyString(((NimStringDesc*) &TMP2243));
	s = getfieldvalue_314055(n, ((NimStringDesc*) &TMP2335));
	{
		NIM_BOOL LOC3;
		TY183752 LOC7;
		LOC3 = 0;
		LOC3 = (((NI) 0) < (s ? s->Sup.len : 0));
		if (!(LOC3)) goto LA4;
		LOC3 = allcharsinset_100325(s, TMP2336);
		LA4: ;
		if (!LOC3) goto LA5;
		memset((void*)LOC7, 0, sizeof(LOC7));
		LOC7[0] = nsuStrip(s, NIM_TRUE, NIM_TRUE, TMP2294);
		dispa_326576((*d).target, (&options), ((NimStringDesc*) &TMP2337), ((NimStringDesc*) &TMP2338), LOC7, 1);
	}
	LA5: ;
	s = getfieldvalue_314055(n, ((NimStringDesc*) &TMP2339));
	{
		NIM_BOOL LOC10;
		TY183752 LOC14;
		LOC10 = 0;
		LOC10 = (((NI) 0) < (s ? s->Sup.len : 0));
		if (!(LOC10)) goto LA11;
		LOC10 = allcharsinset_100325(s, TMP2336);
		LA11: ;
		if (!LOC10) goto LA12;
		memset((void*)LOC14, 0, sizeof(LOC14));
		LOC14[0] = nsuStrip(s, NIM_TRUE, NIM_TRUE, TMP2294);
		dispa_326576((*d).target, (&options), ((NimStringDesc*) &TMP2340), ((NimStringDesc*) &TMP2341), LOC14, 1);
	}
	LA12: ;
	s = getfieldvalue_314055(n, ((NimStringDesc*) &TMP2342));
	{
		NIM_BOOL LOC17;
		TY183752 LOC21;
		LOC17 = 0;
		LOC17 = (((NI) 0) < (s ? s->Sup.len : 0));
		if (!(LOC17)) goto LA18;
		LOC17 = allcharsinset_100325(s, TMP2336);
		LA18: ;
		if (!LOC17) goto LA19;
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = nsuStrip(s, NIM_TRUE, NIM_TRUE, TMP2294);
		dispa_326576((*d).target, (&options), ((NimStringDesc*) &TMP2343), ((NimStringDesc*) &TMP2344), LOC21, 1);
	}
	LA19: ;
	s = getfieldvalue_314055(n, ((NimStringDesc*) &TMP2345));
	{
		NIM_BOOL LOC24;
		TY183752 LOC28;
		LOC24 = 0;
		LOC24 = (((NI) 0) < (s ? s->Sup.len : 0));
		if (!(LOC24)) goto LA25;
		LOC24 = allcharsinset_100325(s, TMP2336);
		LA25: ;
		if (!LOC24) goto LA26;
		memset((void*)LOC28, 0, sizeof(LOC28));
		LOC28[0] = nsuStrip(s, NIM_TRUE, NIM_TRUE, TMP2294);
		dispa_326576((*d).target, (&options), ((NimStringDesc*) &TMP2346), ((NimStringDesc*) &TMP2243), LOC28, 1);
	}
	LA26: ;
	s = getfieldvalue_314055(n, ((NimStringDesc*) &TMP2347));
	{
		NIM_BOOL LOC31;
		TY183752 LOC35;
		LOC31 = 0;
		LOC31 = (((NI) 0) < (s ? s->Sup.len : 0));
		if (!(LOC31)) goto LA32;
		LOC31 = allcharsinset_100325(s, TMP2336);
		LA32: ;
		if (!LOC31) goto LA33;
		memset((void*)LOC35, 0, sizeof(LOC35));
		LOC35[0] = nsuStrip(s, NIM_TRUE, NIM_TRUE, TMP2294);
		dispa_326576((*d).target, (&options), ((NimStringDesc*) &TMP2348), ((NimStringDesc*) &TMP2243), LOC35, 1);
	}
	LA33: ;
	{
		TY183752 LOC40;
		if (!(((NI) 0) < (options ? options->Sup.len : 0))) goto LA38;
		memset((void*)LOC40, 0, sizeof(LOC40));
		LOC40[0] = copyString(options);
		options = dispf_326559((*d).target, ((NimStringDesc*) &TMP2299), ((NimStringDesc*) &TMP2349), LOC40, 1);
	}
	LA38: ;
	arg = getargument_314059(n);
	{
		NIM_BOOL LOC43;
		TY184169 LOC47;
		LOC43 = 0;
		LOC43 = (((NI) 0) < (arg ? arg->Sup.len : 0));
		if (!(LOC43)) goto LA44;
		LOC43 = allcharsinset_100325(arg, TMP2336);
		LA44: ;
		if (!LOC43) goto LA45;
		memset((void*)LOC47, 0, sizeof(LOC47));
		LOC47[0] = copyString(arg);
		LOC47[1] = copyString(options);
		dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2350), ((NimStringDesc*) &TMP2351), LOC47, 2);
	}
	LA45: ;
	{
		NI LOC50;
		LOC50 = 0;
		LOC50 = len_313081(n);
		if (!(((NI) 3) <= LOC50)) goto LA51;
		renderrsttoout_326599(d, (*n).sons->data[((NI) 2)], result);
	}
	LA51: ;
}

N_NIMCALL(void, init_326074)(Codeblockparams326014* p) {
	(*p).startline = ((NI) 1);
	(*p).lang = ((NU8) 0);
	unsureAsgnRef((void**) (&(*p).langstr), copyString(((NimStringDesc*) &TMP2243)));
}

N_NIMCALL(void, parsecodeblockfield_332603)(Rstgenerator326010* d, Rstnode313008* n, Codeblockparams326014* params) {
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	LOC1 = 0;
	LOC1 = getargument_314059(n);
	LOC2 = 0;
	LOC2 = nsuToLowerStr(LOC1);
	if (eqStrings(LOC2, ((NimStringDesc*) &TMP2352))) goto LA3;
	if (eqStrings(LOC2, ((NimStringDesc*) &TMP2353))) goto LA4;
	if (eqStrings(LOC2, ((NimStringDesc*) &TMP2354))) goto LA5;
	goto LA6;
	LA3: ;
	{
		NI number;
		(*params).numberlines = NIM_TRUE;
		number = 0;
		{
			NimStringDesc* LOC11;
			NI LOC12;
			LOC11 = 0;
			LOC11 = getfieldvalue_316772(n);
			LOC12 = 0;
			LOC12 = npuParseInt(LOC11, (&number), ((NI) 0));
			if (!(((NI) 0) < LOC12)) goto LA13;
			(*params).startline = number;
		}
		LA13: ;
	}
	goto LA7;
	LA4: ;
	{
	}
	goto LA7;
	LA5: ;
	{
		NimStringDesc* LOC17;
		LOC17 = 0;
		LOC17 = getfieldvalue_316772(n);
		unsureAsgnRef((void**) (&(*params).langstr), nsuStrip(LOC17, NIM_TRUE, NIM_TRUE, TMP2294));
		(*params).lang = getsourcelanguage_321075((*params).langstr);
	}
	goto LA7;
	LA6: ;
	{
		NimStringDesc* LOC19;
		LOC19 = 0;
		LOC19 = getargument_314059(n);
		(*d).msghandler((*d).filename, ((NI) 1), ((NI) 0), ((NU8) 9), LOC19);
	}
	LA7: ;
}

N_NIMCALL(void, parsecodeblockparams_332612)(Rstgenerator326010* d, Rstnode313008* n, Codeblockparams326014* Result) {
	NimStringDesc* LOC12;
{	init_326074(Result);
	{
		if (!n == 0) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!!((*n).sons->data[((NI) 1)] == 0)) goto LA7;
		{
			Rstnode313008* son_333202;
			Rstnodeseq313006* HEX3Atmp_333205;
			NI i_333208;
			NI L_333210;
			son_333202 = 0;
			HEX3Atmp_333205 = 0;
			HEX3Atmp_333205 = (*(*n).sons->data[((NI) 1)]).sons;
			i_333208 = ((NI) 0);
			L_333210 = (HEX3Atmp_333205 ? HEX3Atmp_333205->Sup.len : 0);
			{
				while (1) {
					if (!(i_333208 < L_333210)) goto LA11;
					son_333202 = HEX3Atmp_333205->data[i_333208];
					parsecodeblockfield_332603(d, son_333202, Result);
					i_333208 += ((NI) 1);
				} LA11: ;
			}
		}
	}
	LA7: ;
	LOC12 = 0;
	LOC12 = getargument_314059(n);
	unsureAsgnRef((void**) (&(*Result).langstr), nsuStrip(LOC12, NIM_TRUE, NIM_TRUE, TMP2294));
	{
		if (!!((((*Result).langstr) && ((*Result).langstr)->Sup.len == 0))) goto LA15;
		(*Result).lang = getsourcelanguage_321075((*Result).langstr);
	}
	LA15: ;
	}BeforeRet: ;
}

N_NIMCALL(void, buildlineshtmltable_333211)(Rstgenerator326010* d, Codeblockparams326014* params, NimStringDesc* code, Keyvaluepair140205* Result) {
	NimStringDesc* id;
	NI codelines;
	NimStringDesc* LOC7;
	NI LOC8;
	NI line;
	NimStringDesc* LOC13;
	NimStringDesc* LOC14;
	NimStringDesc* LOC15;
	NimStringDesc* LOC16;
	NimStringDesc* LOC17;
	NimStringDesc* LOC18;
	NimStringDesc* LOC19;
	NimStringDesc* LOC20;
{	(*d).listingcounter += ((NI) 1);
	id = nimIntToStr((*d).listingcounter);
	{
		NimStringDesc* LOC5;
		NimStringDesc* LOC6;
		if (!!((*params).numberlines)) goto LA3;
		LOC5 = 0;
		LOC5 = getordefault_140814((*d).config, ((NimStringDesc*) &TMP2363));
		unsureAsgnRef((void**) (&(*Result).Field0), nsuFormatSingleElem(LOC5, id));
		LOC6 = 0;
		LOC6 = getordefault_140814((*d).config, ((NimStringDesc*) &TMP2364));
		unsureAsgnRef((void**) (&(*Result).Field1), nsuFormatSingleElem(LOC6, id));
		goto BeforeRet;
	}
	LA3: ;
	LOC7 = 0;
	LOC7 = nsuStrip(code, NIM_TRUE, NIM_TRUE, TMP2294);
	LOC8 = 0;
	LOC8 = nsuCountLines(LOC7);
	codelines = (NI)(((NI) 1) + LOC8);
	unsureAsgnRef((void**) (&(*Result).Field0), copyString(((NimStringDesc*) &TMP2365)));
	line = (*params).startline;
	{
		while (1) {
			NimStringDesc* LOC11;
			NimStringDesc* LOC12;
			if (!(((NI) 0) < codelines)) goto LA10;
			LOC11 = 0;
			LOC12 = 0;
			LOC12 = nimIntToStr(line);
			LOC11 = rawNewString(LOC12->Sup.len + 1);
appendString(LOC11, LOC12);
appendString(LOC11, ((NimStringDesc*) &TMP2252));
			(*Result).Field0 = resizeString((*Result).Field0, LOC11->Sup.len + 0);
appendString((*Result).Field0, LOC11);
			line += ((NI) 1);
			codelines -= ((NI) 1);
		} LA10: ;
	}
	LOC13 = 0;
	LOC14 = 0;
	LOC14 = getordefault_140814((*d).config, ((NimStringDesc*) &TMP2363));
	LOC15 = 0;
	LOC15 = nsuFormatSingleElem(LOC14, id);
	LOC13 = rawNewString(LOC15->Sup.len + 15);
appendString(LOC13, ((NimStringDesc*) &TMP2366));
appendString(LOC13, LOC15);
	(*Result).Field0 = resizeString((*Result).Field0, LOC13->Sup.len + 0);
appendString((*Result).Field0, LOC13);
	LOC16 = 0;
	LOC17 = 0;
	LOC17 = getordefault_140814((*d).config, ((NimStringDesc*) &TMP2364));
	LOC18 = 0;
	LOC18 = nsuFormatSingleElem(LOC17, id);
	LOC19 = 0;
	LOC19 = getordefault_140814((*d).config, ((NimStringDesc*) &TMP2368));
	LOC20 = 0;
	LOC20 = nsuFormatSingleElem(LOC19, id);
	LOC16 = rawNewString(LOC18->Sup.len + LOC20->Sup.len + 26);
appendString(LOC16, LOC18);
appendString(LOC16, ((NimStringDesc*) &TMP2367));
appendString(LOC16, LOC20);
	unsureAsgnRef((void**) (&(*Result).Field1), LOC16);
	}BeforeRet: ;
}

N_NIMCALL(void, rendercodeblock_333421)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result) {
	Codeblockparams326014 params;
	Rstnode313008* m;
	Keyvaluepair140205 LOC5;
	NimStringDesc* blockstart;
	NimStringDesc* blockend;
	TY238694 LOC6;
	TY238694 LOC27;
{	{
		if (!((*n).sons->data[((NI) 2)] == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	memset((void*)(&params), 0, sizeof(params));
	chckNil((void*)(&params));
	memset((void*)(&params), 0, sizeof(params));
	parsecodeblockparams_332612(d, n, (&params));
	m = (*(*n).sons->data[((NI) 2)]).sons->data[((NI) 0)];
	memset((void*)(&LOC5), 0, sizeof(LOC5));
	buildlineshtmltable_333211(d, (&params), (*m).text, (&LOC5));
	blockstart = 0;
	blockstart = LOC5.Field0;
	blockend = 0;
	blockend = LOC5.Field1;
	memset((void*)LOC6, 0, sizeof(LOC6));
	dispa_326576((*d).target, result, blockstart, ((NimStringDesc*) &TMP2369), LOC6, 0);
	{
		if (!(params.lang == ((NU8) 0))) goto LA9;
		{
			if (!(((NI) 0) < (params.langstr ? params.langstr->Sup.len : 0))) goto LA13;
			(*d).msghandler((*d).filename, ((NI) 1), ((NI) 0), ((NU8) 8), params.langstr);
		}
		LA13: ;
		{
			NIM_CHAR letter_333816;
			NimStringDesc* HEX3Atmp_333828;
			NI i_333831;
			NI L_333833;
			letter_333816 = 0;
			HEX3Atmp_333828 = 0;
			HEX3Atmp_333828 = (*m).text;
			i_333831 = ((NI) 0);
			L_333833 = (HEX3Atmp_333828 ? HEX3Atmp_333828->Sup.len : 0);
			{
				while (1) {
					if (!(i_333831 < L_333833)) goto LA17;
					letter_333816 = HEX3Atmp_333828->data[i_333831];
					escchar_326443((*d).target, result, letter_333816);
					i_333831 += ((NI) 1);
				} LA17: ;
			}
		}
	}
	goto LA7;
	LA9: ;
	{
		Generaltokenizer321008 g;
		memset((void*)(&g), 0, sizeof(g));
		g.Sup.m_type = (&NTI321008);
		initgeneraltokenizer_321253((&g), (*m).text);
		{
			while (1) {
				getnexttoken_323458((&g), params.lang);
				switch (g.kind) {
				case ((NU8) 0):
				{
					goto LA19;
				}
				break;
				case ((NU8) 1):
				case ((NU8) 2):
				{
					NimStringDesc* LOC23;
					LOC23 = 0;
					LOC23 = copyStrLast((*m).text, g.start, (NI)((NI)(g.length + g.start) - ((NI) 1)));
					(*result) = resizeString((*result), LOC23->Sup.len + 0);
appendString((*result), LOC23);
				}
				break;
				default:
				{
					TY184169 LOC25;
					NimStringDesc* LOC26;
					memset((void*)LOC25, 0, sizeof(LOC25));
					LOC26 = 0;
					LOC26 = copyStrLast((*m).text, g.start, (NI)((NI)(g.length + g.start) - ((NI) 1)));
					LOC25[0] = esc_326484((*d).target, LOC26, ((NI) -1));
					LOC25[1] = copyString(tokenclasstostr_321066[(g.kind)- 0]);
					dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2531), ((NimStringDesc*) &TMP2532), LOC25, 2);
				}
				break;
				}
			}
		} LA19: ;
		deinitgeneraltokenizer_321258((&g));
	}
	LA7: ;
	memset((void*)LOC27, 0, sizeof(LOC27));
	dispa_326576((*d).target, result, blockend, ((NimStringDesc*) &TMP2566), LOC27, 0);
	}BeforeRet: ;
}

N_NIMCALL(void, rendercontainer_333837)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result) {
	NimStringDesc* tmp;
	NimStringDesc* arg;
	NimStringDesc* LOC1;
	tmp = copyString(((NimStringDesc*) &TMP2243));
	renderrsttoout_326599(d, (*n).sons->data[((NI) 2)], (&tmp));
	LOC1 = 0;
	LOC1 = getargument_314059(n);
	arg = nsuStrip(LOC1, NIM_TRUE, NIM_TRUE, TMP2294);
	{
		TY183752 LOC6;
		if (!((arg) && (arg)->Sup.len == 0)) goto LA4;
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = copyString(tmp);
		dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2567), ((NimStringDesc*) &TMP2299), LOC6, 1);
	}
	goto LA2;
	LA4: ;
	{
		TY184169 LOC8;
		memset((void*)LOC8, 0, sizeof(LOC8));
		LOC8[0] = copyString(arg);
		LOC8[1] = copyString(tmp);
		dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2568), ((NimStringDesc*) &TMP2569), LOC8, 2);
	}
	LA2: ;
}

N_NIMCALL(void, renderindexterm_326846)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result) {
	NimStringDesc* refname;
	NimStringDesc* id;
	NimStringDesc* LOC8;
	NI LOC9;
	NimStringDesc* LOC10;
	NimStringDesc* term;
	TY184169 LOC11;
	refname = rstnodetorefname_314049(n);
	{
		NIM_BOOL LOC3;
		NI LOC6;
		LOC3 = 0;
		LOC3 = haskey_326854((*d).seenindexterms, refname);
		if (!LOC3) goto LA4;
		LOC6 = 0;
		LOC6 = getordefault_326886((*d).seenindexterms, refname);
		HEX5BHEX5DHEX3D_326915((&(*d).seenindexterms), refname, (NI)(LOC6 + ((NI) 1)));
	}
	goto LA1;
	LA4: ;
	{
		HEX5BHEX5DHEX3D_326915((&(*d).seenindexterms), refname, ((NI) 1));
	}
	LA1: ;
	LOC8 = 0;
	LOC9 = 0;
	LOC9 = getordefault_326886((*d).seenindexterms, refname);
	LOC10 = 0;
	LOC10 = nimIntToStr(LOC9);
	LOC8 = rawNewString(refname->Sup.len + LOC10->Sup.len + 1);
appendString(LOC8, refname);
appendChar(LOC8, 95);
appendString(LOC8, LOC10);
	id = LOC8;
	term = copyString(((NimStringDesc*) &TMP2243));
	renderaux_326606(d, n, (&term));
	setindexterm_326683(d, id, term, (*d).currentsection, ((NimStringDesc*) &TMP2243));
	memset((void*)LOC11, 0, sizeof(LOC11));
	LOC11[0] = copyString(id);
	LOC11[1] = copyString(term);
	dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2583), ((NimStringDesc*) &TMP2584), LOC11, 2);
}

N_NIMCALL(void, rendersmiley_332595)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result) {
	TY183752 LOC1;
	NimStringDesc* LOC2;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC2 = 0;
	LOC2 = getordefault_140814((*d).config, ((NimStringDesc*) &TMP2589));
	LOC1[0] = nsuFormatSingleElem(LOC2, (*n).text);
	dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2587), ((NimStringDesc*) &TMP2588), LOC1, 1);
}

N_NIMCALL(void, renderrsttoout_326599)(Rstgenerator326010* d, Rstnode313008* n, NimStringDesc** result) {
{	{
		if (!(n == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	switch ((*n).kind) {
	case ((NU8) 0):
	{
		renderaux_326606(d, n, result);
	}
	break;
	case ((NU8) 1):
	{
		renderheadline_332043(d, n, result);
	}
	break;
	case ((NU8) 2):
	{
		renderoverline_332221(d, n, result);
	}
	break;
	case ((NU8) 3):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2258), ((NimStringDesc*) &TMP2259), result);
	}
	break;
	case ((NU8) 4):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2260), ((NimStringDesc*) &TMP2261), result);
	}
	break;
	case ((NU8) 5):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2262), ((NimStringDesc*) &TMP2263), result);
	}
	break;
	case ((NU8) 6):
	case ((NU8) 8):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2264), ((NimStringDesc*) &TMP2265), result);
	}
	break;
	case ((NU8) 7):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2266), ((NimStringDesc*) &TMP2267), result);
	}
	break;
	case ((NU8) 9):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2268), ((NimStringDesc*) &TMP2269), result);
	}
	break;
	case ((NU8) 10):
	{
		renderaux_326606(d, n, result);
	}
	break;
	case ((NU8) 11):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2270), ((NimStringDesc*) &TMP2271), result);
	}
	break;
	case ((NU8) 12):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2272), ((NimStringDesc*) &TMP2273), result);
	}
	break;
	case ((NU8) 13):
	{
		NimStringDesc* tmp;
		tmp = copyString(((NimStringDesc*) &TMP2243));
		{
			NI i_333922;
			NI HEX3Atmp_333983;
			NI LOC19;
			NI res_333986;
			i_333922 = 0;
			HEX3Atmp_333983 = 0;
			LOC19 = 0;
			LOC19 = len_313081(n);
			HEX3Atmp_333983 = (NI)(LOC19 - ((NI) 1));
			res_333986 = ((NI) 0);
			{
				while (1) {
					if (!(res_333986 <= HEX3Atmp_333983)) goto LA21;
					i_333922 = res_333986;
					renderrsttoout_326599(d, (*n).sons->data[i_333922], (&tmp));
					res_333986 += ((NI) 1);
				} LA21: ;
			}
		}
		{
			TY183752 LOC26;
			if (!!(((tmp ? tmp->Sup.len : 0) == ((NI) 0)))) goto LA24;
			memset((void*)LOC26, 0, sizeof(LOC26));
			LOC26[0] = copyString(tmp);
			dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2274), ((NimStringDesc*) &TMP2269), LOC26, 1);
		}
		LA24: ;
	}
	break;
	case ((NU8) 14):
	{
		renderfield_333874(d, n, result);
	}
	break;
	case ((NU8) 15):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2300), ((NimStringDesc*) &TMP2301), result);
	}
	break;
	case ((NU8) 16):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2302), ((NimStringDesc*) &TMP2303), result);
	}
	break;
	case ((NU8) 51):
	{
		renderrsttoout_326599(d, (*n).sons->data[((NI) 2)], result);
	}
	break;
	case ((NU8) 17):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2304), ((NimStringDesc*) &TMP2305), result);
	}
	break;
	case ((NU8) 18):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2298), ((NimStringDesc*) &TMP2299), result);
	}
	break;
	case ((NU8) 19):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2306), ((NimStringDesc*) &TMP2307), result);
	}
	break;
	case ((NU8) 23):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2308), ((NimStringDesc*) &TMP2303), result);
	}
	break;
	case ((NU8) 20):
	case ((NU8) 21):
	case ((NU8) 22):
	{
		{
			if (!NIM_TRUE) goto LA38;
			raiseassert_88493(((NimStringDesc*) &TMP2310));
		}
		LA38: ;
	}
	break;
	case ((NU8) 24):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2311), ((NimStringDesc*) &TMP2312), result);
	}
	break;
	case ((NU8) 25):
	{
		{
			if (!NIM_TRUE) goto LA44;
			raiseassert_88493(((NimStringDesc*) &TMP2310));
		}
		LA44: ;
	}
	break;
	case ((NU8) 26):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2313), ((NimStringDesc*) &TMP2261), result);
	}
	break;
	case ((NU8) 27):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2314), ((NimStringDesc*) &TMP2315), result);
	}
	break;
	case ((NU8) 28):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2316), ((NimStringDesc*) &TMP2317), result);
	}
	break;
	case ((NU8) 29):
	case ((NU8) 30):
	{
		NimStringDesc* LOC50;
		NimStringDesc* LOC51;
		LOC50 = 0;
		LOC51 = 0;
		LOC51 = texcolumns_333850(n);
		LOC50 = rawNewString(LOC51->Sup.len + 63);
appendString(LOC50, ((NimStringDesc*) &TMP2319));
appendString(LOC50, LOC51);
appendString(LOC50, ((NimStringDesc*) &TMP2321));
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2318), LOC50, result);
	}
	break;
	case ((NU8) 31):
	{
		{
			NI LOC55;
			LOC55 = 0;
			LOC55 = len_313081(n);
			if (!(((NI) 1) <= LOC55)) goto LA56;
			{
				if (!((*d).target == ((NU8) 1))) goto LA60;
				renderrsttoout_326599(d, (*n).sons->data[((NI) 0)], result);
				{
					NI i_333946;
					NI HEX3Atmp_333991;
					NI LOC63;
					NI res_333994;
					i_333946 = 0;
					HEX3Atmp_333991 = 0;
					LOC63 = 0;
					LOC63 = len_313081(n);
					HEX3Atmp_333991 = (NI)(LOC63 - ((NI) 1));
					res_333994 = ((NI) 1);
					{
						while (1) {
							if (!(res_333994 <= HEX3Atmp_333991)) goto LA65;
							i_333946 = res_333994;
							(*result) = resizeString((*result), 3);
appendString((*result), ((NimStringDesc*) &TMP2322));
							renderrsttoout_326599(d, (*n).sons->data[i_333946], result);
							res_333994 += ((NI) 1);
						} LA65: ;
					}
				}
				(*result) = resizeString((*result), 10);
appendString((*result), ((NimStringDesc*) &TMP2323));
			}
			goto LA58;
			LA60: ;
			{
				(*result) = resizeString((*result), 4);
appendString((*result), ((NimStringDesc*) &TMP2324));
				renderaux_326606(d, n, result);
				(*result) = resizeString((*result), 6);
appendString((*result), ((NimStringDesc*) &TMP2325));
			}
			LA58: ;
		}
		LA56: ;
	}
	break;
	case ((NU8) 33):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2302), ((NimStringDesc*) &TMP2299), result);
	}
	break;
	case ((NU8) 32):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2326), ((NimStringDesc*) &TMP2327), result);
	}
	break;
	case ((NU8) 34):
	{
		{
			if (!NIM_TRUE) goto LA72;
			raiseassert_88493(((NimStringDesc*) &TMP2310));
		}
		LA72: ;
	}
	break;
	case ((NU8) 35):
	{
		{
			if (!NIM_TRUE) goto LA77;
			raiseassert_88493(((NimStringDesc*) &TMP2310));
		}
		LA77: ;
	}
	break;
	case ((NU8) 36):
	{
		{
			if (!NIM_TRUE) goto LA82;
			raiseassert_88493(((NimStringDesc*) &TMP2310));
		}
		LA82: ;
	}
	break;
	case ((NU8) 39):
	{
		NimStringDesc* tmp;
		TY184169 LOC85;
		tmp = copyString(((NimStringDesc*) &TMP2243));
		renderaux_326606(d, n, (&tmp));
		memset((void*)LOC85, 0, sizeof(LOC85));
		LOC85[0] = copyString(tmp);
		LOC85[1] = rstnodetorefname_314049(n);
		dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2328), ((NimStringDesc*) &TMP2329), LOC85, 2);
	}
	break;
	case ((NU8) 37):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2330), ((NimStringDesc*) &TMP2331), result);
	}
	break;
	case ((NU8) 38):
	{
		NimStringDesc* tmp0;
		NimStringDesc* tmp1;
		TY184169 LOC88;
		tmp0 = copyString(((NimStringDesc*) &TMP2243));
		tmp1 = copyString(((NimStringDesc*) &TMP2243));
		renderrsttoout_326599(d, (*n).sons->data[((NI) 0)], (&tmp0));
		renderrsttoout_326599(d, (*n).sons->data[((NI) 1)], (&tmp1));
		memset((void*)LOC88, 0, sizeof(LOC88));
		LOC88[0] = copyString(tmp0);
		LOC88[1] = copyString(tmp1);
		dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2332), ((NimStringDesc*) &TMP2333), LOC88, 2);
	}
	break;
	case ((NU8) 41):
	case ((NU8) 42):
	{
		renderaux_326606(d, n, result);
	}
	break;
	case ((NU8) 48):
	{
		{
			Rstnode313008* LOC95;
			NimStringDesc* LOC96;
			if (!!(((*d).target == ((NU8) 1)))) goto LA93;
			LOC95 = 0;
			LOC95 = lastson_313126(n);
			LOC96 = 0;
			LOC96 = addnodes_314052(LOC95);
			(*result) = resizeString((*result), LOC96->Sup.len + 0);
appendString((*result), LOC96);
		}
		LA93: ;
	}
	break;
	case ((NU8) 49):
	{
		{
			Rstnode313008* LOC102;
			NimStringDesc* LOC103;
			if (!((*d).target == ((NU8) 1))) goto LA100;
			LOC102 = 0;
			LOC102 = lastson_313126(n);
			LOC103 = 0;
			LOC103 = addnodes_314052(LOC102);
			(*result) = resizeString((*result), LOC103->Sup.len + 0);
appendString((*result), LOC103);
		}
		LA100: ;
	}
	break;
	case ((NU8) 45):
	case ((NU8) 46):
	{
		renderimage_332335(d, n, result);
	}
	break;
	case ((NU8) 47):
	{
		rendercodeblock_333421(d, n, result);
	}
	break;
	case ((NU8) 50):
	{
		rendercontainer_333837(d, n, result);
	}
	break;
	case ((NU8) 62):
	case ((NU8) 52):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2570), ((NimStringDesc*) &TMP2570), result);
	}
	break;
	case ((NU8) 40):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2243), ((NimStringDesc*) &TMP2243), result);
	}
	break;
	case ((NU8) 53):
	{
		NimStringDesc* tmp0;
		NimStringDesc* tmp1;
		TY184169 LOC110;
		tmp0 = copyString(((NimStringDesc*) &TMP2243));
		tmp1 = copyString(((NimStringDesc*) &TMP2243));
		renderrsttoout_326599(d, (*n).sons->data[((NI) 0)], (&tmp0));
		renderrsttoout_326599(d, (*n).sons->data[((NI) 1)], (&tmp1));
		memset((void*)LOC110, 0, sizeof(LOC110));
		LOC110[0] = copyString(tmp0);
		LOC110[1] = copyString(tmp1);
		dispa_326576((*d).target, result, ((NimStringDesc*) &TMP2531), ((NimStringDesc*) &TMP2532), LOC110, 2);
	}
	break;
	case ((NU8) 54):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2571), ((NimStringDesc*) &TMP2572), result);
	}
	break;
	case ((NU8) 55):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2573), ((NimStringDesc*) &TMP2574), result);
	}
	break;
	case ((NU8) 57):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2575), ((NimStringDesc*) &TMP2576), result);
	}
	break;
	case ((NU8) 58):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2577), ((NimStringDesc*) &TMP2327), result);
	}
	break;
	case ((NU8) 59):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2578), ((NimStringDesc*) &TMP2579), result);
	}
	break;
	case ((NU8) 60):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2580), ((NimStringDesc*) &TMP2576), result);
	}
	break;
	case ((NU8) 56):
	{
		renderindexterm_326846(d, n, result);
	}
	break;
	case ((NU8) 61):
	{
		renderaux_326632(d, n, ((NimStringDesc*) &TMP2585), ((NimStringDesc*) &TMP2586), result);
	}
	break;
	case ((NU8) 63):
	{
		rendersmiley_332595(d, n, result);
	}
	break;
	case ((NU8) 64):
	{
		NimStringDesc* LOC121;
		LOC121 = 0;
		LOC121 = esc_326484((*d).target, (*n).text, ((NI) -1));
		(*result) = resizeString((*result), LOC121->Sup.len + 0);
appendString((*result), LOC121);
	}
	break;
	case ((NU8) 44):
	{
		(*d).hastoc = NIM_TRUE;
	}
	break;
	case ((NU8) 43):
	{
		unsureAsgnRef((void**) (&(*d).meta[(((NU8) 1))- 0]), copyString(((NimStringDesc*) &TMP2243)));
		renderrsttoout_326599(d, (*n).sons->data[((NI) 0)], (&(*d).meta[(((NU8) 1))- 0]));
	}
	break;
	}
	}BeforeRet: ;
}
N_NIMCALL(void, TMP5034)(void* p, NI op) {
	TY326029* a;
	NI LOC1;
	a = (TY326029*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].n, op);
	nimGCvisit((void*)a->data[LOC1].refname, op);
	nimGCvisit((void*)a->data[LOC1].header, op);
	}
}

N_NIMCALL(void, initrstgenerator_326078)(Rstgenerator326010* g, NU8 target, Stringtableobj140209* config, NimStringDesc* filename, NU8 options, Findfilehandler314014 findfile, Msghandler314012 msghandler) {
	TY118706 fileparts;
	NimStringDesc* s;
	unsureAsgnRef((void**) (&(*g).config), config);
	(*g).target = target;
	unsureAsgnRef((void**) (&(*g).tocpart), (TY326029*) newSeq((&NTI326029), 0));
	unsureAsgnRef((void**) (&(*g).filename), copyString(filename));
	(*g).splitafter = ((NI) 20);
	unsureAsgnRef((void**) (&(*g).theindex), copyString(((NimStringDesc*) &TMP2243)));
	(*g).options = options;
	(*g).findfile = findfile;
	unsureAsgnRef((void**) (&(*g).currentsection), copyString(((NimStringDesc*) &TMP2243)));
	memset((void*)(&fileparts), 0, sizeof(fileparts));
	chckNil((void*)(&fileparts));
	memset((void*)(&fileparts), 0, sizeof(fileparts));
	nossplitFile(filename, (&fileparts));
	{
		NimStringDesc* LOC5;
		if (!eqStrings(fileparts.Field2, ((NimStringDesc*) &TMP5038))) goto LA3;
		LOC5 = 0;
		LOC5 = rawNewString(fileparts.Field1->Sup.len + 7);
appendString(LOC5, ((NimStringDesc*) &TMP5039));
appendString(LOC5, fileparts.Field1);
		unsureAsgnRef((void**) (&(*g).currentsection), LOC5);
	}
	LA3: ;
	inittable_326106(((NI) 64), (&(*g).seenindexterms));
	(*g).msghandler = msghandler;
	s = getordefault_140814(config, ((NimStringDesc*) &TMP5040));
	{
		if (!!(((s) && (s)->Sup.len == 0))) goto LA8;
		(*g).splitafter = nsuParseInt(s);
	}
	LA8: ;
	{
		NU8 i_326414;
		NI res_326418;
		i_326414 = 0;
		res_326418 = ((NI) 0);
		{
			while (1) {
				if (!(res_326418 <= ((NI) 4))) goto LA12;
				i_326414 = ((NU8) (res_326418));
				unsureAsgnRef((void**) (&(*g).meta[(i_326414)- 0]), copyString(((NimStringDesc*) &TMP2243)));
				res_326418 += ((NI) 1);
			} LA12: ;
		}
	}
}

N_NIMCALL(void, rendertocentry_332302)(Rstgenerator326010* d, Tocentry326006* e, NimStringDesc** result) {
	TY184169 LOC1;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = copyString((*e).refname);
	LOC1[1] = copyString((*e).header);
	dispa_326576((*d).target, result, ((NimStringDesc*) &TMP5119), ((NimStringDesc*) &TMP5120), LOC1, 2);
}

N_NIMCALL(void, rendertocentries_332310)(Rstgenerator326010* d, NI* j, NI lvl, NimStringDesc** result) {
	NimStringDesc* tmp;
	tmp = copyString(((NimStringDesc*) &TMP2243));
	{
		while (1) {
			NI a;
			if (!((*j) <= ((*d).tocpart ? ((*d).tocpart->Sup.len-1) : -1))) goto LA2;
			a = ((*(*d).tocpart->data[(*j)].n).level > 0? ((*(*d).tocpart->data[(*j)].n).level) : -((*(*d).tocpart->data[(*j)].n).level));
			{
				if (!(a == lvl)) goto LA5;
				rendertocentry_332302(d, (&(*d).tocpart->data[(*j)]), (&tmp));
				(*j) += ((NI) 1);
			}
			goto LA3;
			LA5: ;
			{
				if (!(lvl < a)) goto LA8;
				rendertocentries_332310(d, j, a, (&tmp));
			}
			goto LA3;
			LA8: ;
			{
				goto LA1;
			}
			LA3: ;
		} LA2: ;
	} LA1: ;
	{
		TY183752 LOC15;
		if (!(((NI) 1) < lvl)) goto LA13;
		memset((void*)LOC15, 0, sizeof(LOC15));
		LOC15[0] = copyString(tmp);
		dispa_326576((*d).target, result, ((NimStringDesc*) &TMP5121), ((NimStringDesc*) &TMP5122), LOC15, 1);
	}
	goto LA11;
	LA13: ;
	{
		(*result) = resizeString((*result), tmp->Sup.len + 0);
appendString((*result), tmp);
	}
	LA11: ;
}

N_NIMCALL(void, writeindexfile_326421)(Rstgenerator326010* g, NimStringDesc* outfile) {
	{
		if (!(((NI) 0) < ((*g).theindex ? (*g).theindex->Sup.len : 0))) goto LA3;
		writefile_15469(outfile, (*g).theindex);
	}
	LA3: ;
}
N_NIMCALL(void, TMP5191)(void* p, NI op) {
	TY329853* a;
	NI LOC1;
	a = (TY329853*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].keyword, op);
	nimGCvisit((void*)a->data[LOC1].link, op);
	nimGCvisit((void*)a->data[LOC1].linktitle, op);
	nimGCvisit((void*)a->data[LOC1].linkdesc, op);
	}
}

static N_INLINE(NIM_BOOL, direxists_121808)(NimStringDesc* dir) {
	NIM_BOOL result;
	result = 0;
	result = nosexistsDir(dir);
	return result;
}

N_NIMCALL(NIM_BOOL, isdocumentationtitle_327515)(NimStringDesc* hyperlink) {
	NIM_BOOL result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = nsuFindChar(hyperlink, 35, ((NI) 0));
	result = (LOC1 < ((NI) 0));
	return result;
}

N_NIMCALL(NimStringDesc*, unquoteindexcolumn_326679)(NimStringDesc* text) {
	NimStringDesc* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	result = 0;
	LOC1 = 0;
	LOC1 = nsuReplaceStr(text, ((NimStringDesc*) &TMP2255), ((NimStringDesc*) &TMP2254));
	LOC2 = 0;
	LOC2 = nsuReplaceStr(LOC1, ((NimStringDesc*) &TMP2253), ((NimStringDesc*) &TMP2252));
	result = nsuReplaceStr(LOC2, ((NimStringDesc*) &TMP2251), ((NimStringDesc*) &TMP2250));
	return result;
}

static N_INLINE(NI, HEX21HEX26_137004)(NI h, NI val) {
	NI result;
	result = 0;
	result = (NI)((NU64)(h) + (NU64)(val));
	result = (NI)((NU64)(result) + (NU64)((NI)((NU64)(result) << (NU64)(((NI) 10)))));
	result = (NI)(result ^ (NI)((NU64)(result) >> (NU64)(((NI) 6))));
	return result;
}

static N_INLINE(NimStringDesc*, or_326594)(NimStringDesc* x, NimStringDesc* y) {
	NimStringDesc* result;
	result = 0;
	{
		if (!x == 0) goto LA3;
		result = copyString(y);
	}
	goto LA1;
	LA3: ;
	{
		result = copyString(x);
	}
	LA1: ;
	return result;
}

static N_INLINE(NI, HEX21HEX24_137027)(NI h) {
	NI result;
	result = 0;
	result = (NI)((NU64)(h) + (NU64)((NI)((NU64)(h) << (NU64)(((NI) 3)))));
	result = (NI)(result ^ (NI)((NU64)(result) >> (NU64)(((NI) 11))));
	result = (NI)((NU64)(result) + (NU64)((NI)((NU64)(result) << (NU64)(((NI) 15)))));
	return result;
}

N_NIMCALL(NI, hash_327164)(Indexentry327126* x) {
	NI result;
	NI LOC1;
	NI LOC2;
	NimStringDesc* LOC3;
	NI LOC4;
	NimStringDesc* LOC5;
	NI LOC6;
	result = 0;
	LOC1 = 0;
	LOC1 = hash_137827((*x).keyword);
	LOC2 = 0;
	LOC2 = hash_137827((*x).link);
	result = HEX21HEX26_137004(LOC1, LOC2);
	LOC3 = 0;
	LOC3 = or_326594((*x).linktitle, ((NimStringDesc*) &TMP2243));
	LOC4 = 0;
	LOC4 = hash_137827(LOC3);
	result = HEX21HEX26_137004(result, LOC4);
	LOC5 = 0;
	LOC5 = or_326594((*x).linkdesc, ((NimStringDesc*) &TMP2243));
	LOC6 = 0;
	LOC6 = hash_137827(LOC5);
	result = HEX21HEX26_137004(result, LOC6);
	result = HEX21HEX24_137027(result);
	return result;
}

N_NIMCALL(void, readindexdir_329847)(NimStringDesc* dir, TY329850* Result) {
	NI L;
	TY330473 LOC169;
	unsureAsgnRef((void**) (&(*Result).Field0), (TY125202*) newSeq((&NTI125202), 0));
	inittable_329875(((NI) 32), (&(*Result).Field2));
	unsureAsgnRef((void**) (&(*Result).Field1), (TY329853*) newSeq((&NTI329853), ((NI) 15000)));
	(*Result).Field1 = (TY329853*) setLengthSeq(&((*Result).Field1)->Sup, sizeof(Indexentry327126), ((NI) 0));
	L = ((NI) 0);
	{
		NU8 kind_330033;
		NimStringDesc* path_330034;
		DIR* d_331870;
		kind_330033 = 0;
		path_330034 = 0;
		d_331870 = opendir(dir->data);
		{
			int LOC168;
			if (!!((d_331870 == NIM_NIL))) goto LA4;
			{
				while (1) {
					{
						struct dirent* x_331872;
						NimStringDesc* y_331874;
						x_331872 = readdir(d_331870);
						{
							if (!(x_331872 == NIM_NIL)) goto LA11;
							goto LA6;
						}
						LA11: ;
						y_331874 = cstrToNimstr(((NCSTRING) ((*x_331872).d_name)));
						{
							NIM_BOOL LOC15;
							struct stat s_331876;
							NU8 k_331878;
							LOC15 = 0;
							LOC15 = !(eqStrings(y_331874, ((NimStringDesc*) &TMP5193)));
							if (!(LOC15)) goto LA16;
							LOC15 = !(eqStrings(y_331874, ((NimStringDesc*) &TMP5194)));
							LA16: ;
							if (!LOC15) goto LA17;
							memset((void*)(&s_331876), 0, sizeof(s_331876));
							{
								if (!NIM_TRUE) goto LA21;
								y_331874 = HEX2F_118465(dir, y_331874);
							}
							LA21: ;
							k_331878 = ((NU8) 0);
							{
								if (!!(((*x_331872).d_type == ((NI8) 0)))) goto LA25;
								{
									if (!((*x_331872).d_type == ((NI8) 4))) goto LA29;
									k_331878 = ((NU8) 2);
								}
								LA29: ;
								{
									if (!((*x_331872).d_type == ((NI8) 10))) goto LA33;
									{
										NIM_BOOL LOC37;
										LOC37 = 0;
										LOC37 = direxists_121808(y_331874);
										if (!LOC37) goto LA38;
										k_331878 = ((NU8) 3);
									}
									goto LA35;
									LA38: ;
									{
										k_331878 = (NU8)(k_331878 + ((NI) 1));
									}
									LA35: ;
								}
								LA33: ;
								kind_330033 = k_331878;
								path_330034 = y_331874;
								{
									NIM_BOOL LOC43;
									TY329853* fileentries_331880;
									Indexentry327126 title_331882;
									NI F_331884;
									LOC43 = 0;
									LOC43 = (kind_330033 == ((NU8) 0));
									if (!(LOC43)) goto LA44;
									LOC43 = nsuEndsWith(path_330034, ((NimStringDesc*) &TMP5195));
									LA44: ;
									if (!LOC43) goto LA45;
									fileentries_331880 = 0;
									memset((void*)(&title_331882), 0, sizeof(title_331882));
									F_331884 = ((NI) 0);
									fileentries_331880 = (TY329853*) newSeq((&NTI329853), ((NI) 500));
									fileentries_331880 = (TY329853*) setLengthSeq(&(fileentries_331880)->Sup, sizeof(Indexentry327126), ((NI) 0));
									{
										NimStringDesc* line_331886;
										FILE* f_331888;
										NimStringDesc* res_331890;
										line_331886 = 0;
										f_331888 = open_15417(path_330034, ((NU8) 0), ((NI) 8000));
										res_331890 = rawNewString(((NI) 80));
										{
											while (1) {
												NIM_BOOL LOC50;
												LOC50 = 0;
												LOC50 = readline_15513(f_331888, (&res_331890));
												if (!LOC50) goto LA49;
												line_331886 = res_331890;
												{
													NI s_331893;
													s_331893 = nsuFindChar(line_331886, 9, ((NI) 0));
													{
														if (!(s_331893 < ((NI) 0))) goto LA54;
														goto LA51;
													}
													LA54: ;
													fileentries_331880 = (TY329853*) setLengthSeq(&(fileentries_331880)->Sup, sizeof(Indexentry327126), ((NI) ((NI)(F_331884 + ((NI) 1)))));
													asgnRefNoCycle((void**) (&fileentries_331880->data[F_331884].keyword), copyStrLast(line_331886, ((NI) 0), (NI)(s_331893 - ((NI) 1))));
													asgnRefNoCycle((void**) (&fileentries_331880->data[F_331884].link), copyStr(line_331886, (NI)(s_331893 + ((NI) 1))));
													{
														NIM_BOOL LOC58;
														LOC58 = 0;
														LOC58 = title_331882.keyword == 0;
														if (!(LOC58)) goto LA59;
														LOC58 = isdocumentationtitle_327515(fileentries_331880->data[F_331884].link);
														LA59: ;
														if (!LOC58) goto LA60;
														title_331882.keyword = copyString(fileentries_331880->data[F_331884].keyword);
														title_331882.link = copyString(fileentries_331880->data[F_331884].link);
													}
													LA60: ;
													{
														NI LOC64;
														TY125202* extracols_331895;
														NimStringDesc* LOC67;
														LOC64 = 0;
														LOC64 = nsuFindChar(fileentries_331880->data[F_331884].link, 9, ((NI) 0));
														if (!(((NI) 0) < LOC64)) goto LA65;
														extracols_331895 = nsuSplitChar(fileentries_331880->data[F_331884].link, 9);
														LOC67 = 0;
														LOC67 = fileentries_331880->data[F_331884].link; fileentries_331880->data[F_331884].link = copyStringRC1(extracols_331895->data[((NI) 0)]);
														if (LOC67) nimGCunrefNoCycle(LOC67);
														asgnRefNoCycle((void**) (&fileentries_331880->data[F_331884].linktitle), unquoteindexcolumn_326679(extracols_331895->data[((NI) 1)]));
														asgnRefNoCycle((void**) (&fileentries_331880->data[F_331884].linkdesc), unquoteindexcolumn_326679(extracols_331895->data[((NI) 2)]));
													}
													goto LA62;
													LA65: ;
													{
														NimStringDesc* LOC69;
														NimStringDesc* LOC70;
														LOC69 = 0;
														LOC69 = fileentries_331880->data[F_331884].linktitle; fileentries_331880->data[F_331884].linktitle = copyStringRC1(NIM_NIL);
														if (LOC69) nimGCunrefNoCycle(LOC69);
														LOC70 = 0;
														LOC70 = fileentries_331880->data[F_331884].linkdesc; fileentries_331880->data[F_331884].linkdesc = copyStringRC1(NIM_NIL);
														if (LOC70) nimGCunrefNoCycle(LOC70);
													}
													LA62: ;
													F_331884 += ((NI) 1);
												} LA51: ;
											} LA49: ;
										}
										fclose(f_331888);
									}
									{
										TY118706 LOC91;
										NimStringDesc* LOC92;
										if (!title_331882.keyword == 0) goto LA73;
										{
											NI i_331897;
											NI HEX3Atmp_331899;
											NI res_331901;
											i_331897 = 0;
											HEX3Atmp_331899 = 0;
											HEX3Atmp_331899 = (F_331884 - 1);
											res_331901 = ((NI) 0);
											{
												while (1) {
													if (!(res_331901 <= HEX3Atmp_331899)) goto LA77;
													i_331897 = res_331901;
													{
														NimStringDesc* toc_331903;
														NimStringDesc* LOC87;
														NimStringDesc* LOC88;
														NimStringDesc* LOC89;
														NimStringDesc* LOC90;
														toc_331903 = fileentries_331880->data[i_331897].linktitle;
														{
															NIM_BOOL LOC81;
															NIM_BOOL LOC82;
															LOC81 = 0;
															LOC82 = 0;
															LOC82 = !(toc_331903 == 0);
															if (!(LOC82)) goto LA83;
															LOC82 = (((NI) 0) < (toc_331903 ? toc_331903->Sup.len : 0));
															LA83: ;
															LOC81 = LOC82;
															if (!(LOC81)) goto LA84;
															LOC81 = ((NU8)(toc_331903->data[((NI) 0)]) == (NU8)(32));
															LA84: ;
															if (!LOC81) goto LA85;
															goto LA78;
														}
														LA85: ;
														(*Result).Field1 = (TY329853*) setLengthSeq(&((*Result).Field1)->Sup, sizeof(Indexentry327126), ((NI) ((NI)(L + ((NI) 1)))));
														LOC87 = 0;
														LOC87 = (*Result).Field1->data[L].keyword; (*Result).Field1->data[L].keyword = copyStringRC1(fileentries_331880->data[i_331897].keyword);
														if (LOC87) nimGCunrefNoCycle(LOC87);
														LOC88 = 0;
														LOC88 = (*Result).Field1->data[L].link; (*Result).Field1->data[L].link = copyStringRC1(fileentries_331880->data[i_331897].link);
														if (LOC88) nimGCunrefNoCycle(LOC88);
														LOC89 = 0;
														LOC89 = (*Result).Field1->data[L].linktitle; (*Result).Field1->data[L].linktitle = copyStringRC1(fileentries_331880->data[i_331897].linktitle);
														if (LOC89) nimGCunrefNoCycle(LOC89);
														LOC90 = 0;
														LOC90 = (*Result).Field1->data[L].linkdesc; (*Result).Field1->data[L].linkdesc = copyStringRC1(fileentries_331880->data[i_331897].linkdesc);
														if (LOC90) nimGCunrefNoCycle(LOC90);
														L += ((NI) 1);
													} LA78: ;
													res_331901 += ((NI) 1);
												} LA77: ;
											}
										}
										memset((void*)(&LOC91), 0, sizeof(LOC91));
										nossplitFile(path_330034, (&LOC91));
										(*Result).Field0 = (TY125202*) incrSeqV2(&((*Result).Field0)->Sup, sizeof(NimStringDesc*));
										LOC92 = 0;
										LOC92 = (*Result).Field0->data[(*Result).Field0->Sup.len]; (*Result).Field0->data[(*Result).Field0->Sup.len] = copyStringRC1(LOC91.Field1);
										if (LOC92) nimGCunrefNoCycle(LOC92);
										++(*Result).Field0->Sup.len;
									}
									goto LA71;
									LA73: ;
									{
										NimStringDesc* LOC94;
										NI LOC95;
										NimStringDesc* LOC96;
										LOC94 = 0;
										LOC95 = 0;
										LOC95 = len_330259((*Result).Field2);
										LOC96 = 0;
										LOC96 = nimIntToStr(LOC95);
										LOC94 = rawNewString(LOC96->Sup.len + 8);
appendString(LOC94, ((NimStringDesc*) &TMP5196));
appendString(LOC94, LOC96);
										title_331882.linktitle = LOC94;
										HEX5BHEX5DHEX3D_330268((&(*Result).Field2), (&title_331882), fileentries_331880);
									}
									LA71: ;
								}
								LA45: ;
								goto LA8;
							}
							LA25: ;
							{
								int LOC99;
								LOC99 = 0;
								LOC99 = lstat(y_331874->data, (&s_331876));
								if (!(LOC99 < ((NI32) 0))) goto LA100;
								goto LA6;
							}
							LA100: ;
							{
								NIM_BOOL LOC104;
								LOC104 = 0;
								LOC104 = S_ISDIR(s_331876.st_mode);
								if (!LOC104) goto LA105;
								k_331878 = ((NU8) 2);
							}
							LA105: ;
							{
								NIM_BOOL LOC109;
								LOC109 = 0;
								LOC109 = S_ISLNK(s_331876.st_mode);
								if (!LOC109) goto LA110;
								k_331878 = (NU8)(k_331878 + ((NI) 1));
							}
							LA110: ;
							kind_330033 = k_331878;
							path_330034 = y_331874;
							{
								NIM_BOOL LOC114;
								TY329853* fileentries_331905;
								Indexentry327126 title_331907;
								NI F_331909;
								LOC114 = 0;
								LOC114 = (kind_330033 == ((NU8) 0));
								if (!(LOC114)) goto LA115;
								LOC114 = nsuEndsWith(path_330034, ((NimStringDesc*) &TMP5195));
								LA115: ;
								if (!LOC114) goto LA116;
								fileentries_331905 = 0;
								memset((void*)(&title_331907), 0, sizeof(title_331907));
								F_331909 = ((NI) 0);
								fileentries_331905 = (TY329853*) newSeq((&NTI329853), ((NI) 500));
								fileentries_331905 = (TY329853*) setLengthSeq(&(fileentries_331905)->Sup, sizeof(Indexentry327126), ((NI) 0));
								{
									NimStringDesc* line_331911;
									FILE* f_331913;
									NimStringDesc* res_331915;
									line_331911 = 0;
									f_331913 = open_15417(path_330034, ((NU8) 0), ((NI) 8000));
									res_331915 = rawNewString(((NI) 80));
									{
										while (1) {
											NIM_BOOL LOC121;
											LOC121 = 0;
											LOC121 = readline_15513(f_331913, (&res_331915));
											if (!LOC121) goto LA120;
											line_331911 = res_331915;
											{
												NI s_331918;
												s_331918 = nsuFindChar(line_331911, 9, ((NI) 0));
												{
													if (!(s_331918 < ((NI) 0))) goto LA125;
													goto LA122;
												}
												LA125: ;
												fileentries_331905 = (TY329853*) setLengthSeq(&(fileentries_331905)->Sup, sizeof(Indexentry327126), ((NI) ((NI)(F_331909 + ((NI) 1)))));
												asgnRefNoCycle((void**) (&fileentries_331905->data[F_331909].keyword), copyStrLast(line_331911, ((NI) 0), (NI)(s_331918 - ((NI) 1))));
												asgnRefNoCycle((void**) (&fileentries_331905->data[F_331909].link), copyStr(line_331911, (NI)(s_331918 + ((NI) 1))));
												{
													NIM_BOOL LOC129;
													LOC129 = 0;
													LOC129 = title_331907.keyword == 0;
													if (!(LOC129)) goto LA130;
													LOC129 = isdocumentationtitle_327515(fileentries_331905->data[F_331909].link);
													LA130: ;
													if (!LOC129) goto LA131;
													title_331907.keyword = copyString(fileentries_331905->data[F_331909].keyword);
													title_331907.link = copyString(fileentries_331905->data[F_331909].link);
												}
												LA131: ;
												{
													NI LOC135;
													TY125202* extracols_331920;
													NimStringDesc* LOC138;
													LOC135 = 0;
													LOC135 = nsuFindChar(fileentries_331905->data[F_331909].link, 9, ((NI) 0));
													if (!(((NI) 0) < LOC135)) goto LA136;
													extracols_331920 = nsuSplitChar(fileentries_331905->data[F_331909].link, 9);
													LOC138 = 0;
													LOC138 = fileentries_331905->data[F_331909].link; fileentries_331905->data[F_331909].link = copyStringRC1(extracols_331920->data[((NI) 0)]);
													if (LOC138) nimGCunrefNoCycle(LOC138);
													asgnRefNoCycle((void**) (&fileentries_331905->data[F_331909].linktitle), unquoteindexcolumn_326679(extracols_331920->data[((NI) 1)]));
													asgnRefNoCycle((void**) (&fileentries_331905->data[F_331909].linkdesc), unquoteindexcolumn_326679(extracols_331920->data[((NI) 2)]));
												}
												goto LA133;
												LA136: ;
												{
													NimStringDesc* LOC140;
													NimStringDesc* LOC141;
													LOC140 = 0;
													LOC140 = fileentries_331905->data[F_331909].linktitle; fileentries_331905->data[F_331909].linktitle = copyStringRC1(NIM_NIL);
													if (LOC140) nimGCunrefNoCycle(LOC140);
													LOC141 = 0;
													LOC141 = fileentries_331905->data[F_331909].linkdesc; fileentries_331905->data[F_331909].linkdesc = copyStringRC1(NIM_NIL);
													if (LOC141) nimGCunrefNoCycle(LOC141);
												}
												LA133: ;
												F_331909 += ((NI) 1);
											} LA122: ;
										} LA120: ;
									}
									fclose(f_331913);
								}
								{
									TY118706 LOC162;
									NimStringDesc* LOC163;
									if (!title_331907.keyword == 0) goto LA144;
									{
										NI i_331922;
										NI HEX3Atmp_331924;
										NI res_331926;
										i_331922 = 0;
										HEX3Atmp_331924 = 0;
										HEX3Atmp_331924 = (F_331909 - 1);
										res_331926 = ((NI) 0);
										{
											while (1) {
												if (!(res_331926 <= HEX3Atmp_331924)) goto LA148;
												i_331922 = res_331926;
												{
													NimStringDesc* toc_331928;
													NimStringDesc* LOC158;
													NimStringDesc* LOC159;
													NimStringDesc* LOC160;
													NimStringDesc* LOC161;
													toc_331928 = fileentries_331905->data[i_331922].linktitle;
													{
														NIM_BOOL LOC152;
														NIM_BOOL LOC153;
														LOC152 = 0;
														LOC153 = 0;
														LOC153 = !(toc_331928 == 0);
														if (!(LOC153)) goto LA154;
														LOC153 = (((NI) 0) < (toc_331928 ? toc_331928->Sup.len : 0));
														LA154: ;
														LOC152 = LOC153;
														if (!(LOC152)) goto LA155;
														LOC152 = ((NU8)(toc_331928->data[((NI) 0)]) == (NU8)(32));
														LA155: ;
														if (!LOC152) goto LA156;
														goto LA149;
													}
													LA156: ;
													(*Result).Field1 = (TY329853*) setLengthSeq(&((*Result).Field1)->Sup, sizeof(Indexentry327126), ((NI) ((NI)(L + ((NI) 1)))));
													LOC158 = 0;
													LOC158 = (*Result).Field1->data[L].keyword; (*Result).Field1->data[L].keyword = copyStringRC1(fileentries_331905->data[i_331922].keyword);
													if (LOC158) nimGCunrefNoCycle(LOC158);
													LOC159 = 0;
													LOC159 = (*Result).Field1->data[L].link; (*Result).Field1->data[L].link = copyStringRC1(fileentries_331905->data[i_331922].link);
													if (LOC159) nimGCunrefNoCycle(LOC159);
													LOC160 = 0;
													LOC160 = (*Result).Field1->data[L].linktitle; (*Result).Field1->data[L].linktitle = copyStringRC1(fileentries_331905->data[i_331922].linktitle);
													if (LOC160) nimGCunrefNoCycle(LOC160);
													LOC161 = 0;
													LOC161 = (*Result).Field1->data[L].linkdesc; (*Result).Field1->data[L].linkdesc = copyStringRC1(fileentries_331905->data[i_331922].linkdesc);
													if (LOC161) nimGCunrefNoCycle(LOC161);
													L += ((NI) 1);
												} LA149: ;
												res_331926 += ((NI) 1);
											} LA148: ;
										}
									}
									memset((void*)(&LOC162), 0, sizeof(LOC162));
									nossplitFile(path_330034, (&LOC162));
									(*Result).Field0 = (TY125202*) incrSeqV2(&((*Result).Field0)->Sup, sizeof(NimStringDesc*));
									LOC163 = 0;
									LOC163 = (*Result).Field0->data[(*Result).Field0->Sup.len]; (*Result).Field0->data[(*Result).Field0->Sup.len] = copyStringRC1(LOC162.Field1);
									if (LOC163) nimGCunrefNoCycle(LOC163);
									++(*Result).Field0->Sup.len;
								}
								goto LA142;
								LA144: ;
								{
									NimStringDesc* LOC165;
									NI LOC166;
									NimStringDesc* LOC167;
									LOC165 = 0;
									LOC166 = 0;
									LOC166 = len_330259((*Result).Field2);
									LOC167 = 0;
									LOC167 = nimIntToStr(LOC166);
									LOC165 = rawNewString(LOC167->Sup.len + 8);
appendString(LOC165, ((NimStringDesc*) &TMP5196));
appendString(LOC165, LOC167);
									title_331907.linktitle = LOC165;
									HEX5BHEX5DHEX3D_330268((&(*Result).Field2), (&title_331907), fileentries_331905);
								}
								LA142: ;
							}
							LA116: ;
						}
						LA17: ;
					} LA8: ;
				}
			} LA6: ;
			LOC168 = 0;
			LOC168 = closedir(d_331870);
		}
		LA4: ;
	}
	memset((void*)(&LOC169), 0, sizeof(LOC169));
	LOC169.ClPrc = ((TMP5199) (cmp_5680)); LOC169.ClEnv = NIM_NIL;
	sort_330466((*Result).Field0->data, (*Result).Field0->Sup.len, LOC169, ((NU8) 1));
}

static N_INLINE(NIM_BOOL, isfilled_163263)(NI hcode) {
	NIM_BOOL result;
	result = 0;
	result = !((hcode == ((NI) 0)));
	return result;
}

N_NIMCALL(void, HEX3CHEX2D_327409)(Indexentry327126* a, Indexentry327126* b) {
	unsureAsgnRef((void**) (&(*a).keyword), (*b).keyword);
	unsureAsgnRef((void**) (&(*a).link), (*b).link);
	{
		if (!(*b).linktitle == 0) goto LA3;
		unsureAsgnRef((void**) (&(*a).linktitle), copyString(NIM_NIL));
	}
	goto LA1;
	LA3: ;
	{
		unsureAsgnRef((void**) (&(*a).linktitle), (*b).linktitle);
	}
	LA1: ;
	{
		if (!(*b).linkdesc == 0) goto LA8;
		unsureAsgnRef((void**) (&(*a).linkdesc), copyString(NIM_NIL));
	}
	goto LA6;
	LA8: ;
	{
		unsureAsgnRef((void**) (&(*a).linkdesc), (*b).linkdesc);
	}
	LA6: ;
}

N_NIMCALL(NI, cmp_327159)(Indexentry327126* a, Indexentry327126* b) {
	NI result;
	result = 0;
	result = nsuCmpIgnoreStyle((*a).keyword, (*b).keyword);
	{
		if (!(result == ((NI) 0))) goto LA3;
		result = nsuCmpIgnoreStyle((*a).link, (*b).link);
	}
	LA3: ;
	return result;
}

N_NIMCALL(NimStringDesc*, generatedocumentationjumps_329317)(Table327139 docs) {
	NimStringDesc* result_329320;
	TY329853* titles;
	TY329853* result_329324;
	TY328573 LOC14;
	TY125202* chunks;
	NimStringDesc* LOC20;
	NimStringDesc* LOC21;
	result_329320 = 0;
	result_329320 = copyString(((NimStringDesc*) &TMP5200));
	result_329324 = (TY329853*) newSeq((&NTI329853), 0);
	{
		Indexentry327126 x_329328;
		memset((void*)(&x_329328), 0, sizeof(x_329328));
		{
			NI h_329784;
			NI HEX3Atmp_329786;
			NI res_329788;
			h_329784 = 0;
			HEX3Atmp_329786 = 0;
			HEX3Atmp_329786 = (docs.data ? (docs.data->Sup.len-1) : -1);
			res_329788 = ((NI) 0);
			{
				while (1) {
					if (!(res_329788 <= HEX3Atmp_329786)) goto LA4;
					h_329784 = res_329788;
					{
						NIM_BOOL LOC7;
						NimStringDesc* LOC10;
						NimStringDesc* LOC11;
						NimStringDesc* LOC12;
						NimStringDesc* LOC13;
						LOC7 = 0;
						LOC7 = isfilled_163263(docs.data->data[h_329784].Field0);
						if (!LOC7) goto LA8;
						x_329328.keyword = docs.data->data[h_329784].Field1.keyword;
						x_329328.link = docs.data->data[h_329784].Field1.link;
						x_329328.linktitle = docs.data->data[h_329784].Field1.linktitle;
						x_329328.linkdesc = docs.data->data[h_329784].Field1.linkdesc;
						result_329324 = (TY329853*) incrSeqV2(&(result_329324)->Sup, sizeof(Indexentry327126));
						LOC10 = 0;
						LOC10 = result_329324->data[result_329324->Sup.len].keyword; result_329324->data[result_329324->Sup.len].keyword = copyStringRC1(x_329328.keyword);
						if (LOC10) nimGCunrefNoCycle(LOC10);
						LOC11 = 0;
						LOC11 = result_329324->data[result_329324->Sup.len].link; result_329324->data[result_329324->Sup.len].link = copyStringRC1(x_329328.link);
						if (LOC11) nimGCunrefNoCycle(LOC11);
						LOC12 = 0;
						LOC12 = result_329324->data[result_329324->Sup.len].linktitle; result_329324->data[result_329324->Sup.len].linktitle = copyStringRC1(x_329328.linktitle);
						if (LOC12) nimGCunrefNoCycle(LOC12);
						LOC13 = 0;
						LOC13 = result_329324->data[result_329324->Sup.len].linkdesc; result_329324->data[result_329324->Sup.len].linkdesc = copyStringRC1(x_329328.linkdesc);
						if (LOC13) nimGCunrefNoCycle(LOC13);
						++result_329324->Sup.len;
					}
					LA8: ;
					res_329788 += ((NI) 1);
				} LA4: ;
			}
		}
	}
	genericSeqAssign((&titles), result_329324, (&NTI329853));
	memset((void*)(&LOC14), 0, sizeof(LOC14));
	LOC14.ClPrc = ((TMP5203) (cmp_327159)); LOC14.ClEnv = NIM_NIL;
	sort_328566(titles->data, titles->Sup.len, LOC14, ((NU8) 1));
	chunks = (TY125202*) newSeq((&NTI125202), 0);
	{
		Indexentry327126 title_329766;
		NI i_329795;
		NI L_329797;
		memset((void*)(&title_329766), 0, sizeof(title_329766));
		i_329795 = ((NI) 0);
		L_329797 = (titles ? titles->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* LOC18;
				NimStringDesc* LOC19;
				if (!(i_329795 < L_329797)) goto LA17;
				title_329766.keyword = titles->data[i_329795].keyword;
				title_329766.link = titles->data[i_329795].link;
				title_329766.linktitle = titles->data[i_329795].linktitle;
				title_329766.linkdesc = titles->data[i_329795].linkdesc;
				LOC18 = 0;
				LOC18 = rawNewString(title_329766.link->Sup.len + title_329766.keyword->Sup.len + 15);
appendString(LOC18, ((NimStringDesc*) &TMP5204));
appendString(LOC18, title_329766.link);
appendString(LOC18, ((NimStringDesc*) &TMP5205));
appendString(LOC18, title_329766.keyword);
appendString(LOC18, ((NimStringDesc*) &TMP5206));
				chunks = (TY125202*) incrSeqV2(&(chunks)->Sup, sizeof(NimStringDesc*));
				LOC19 = 0;
				LOC19 = chunks->data[chunks->Sup.len]; chunks->data[chunks->Sup.len] = copyStringRC1(LOC18);
				if (LOC19) nimGCunrefNoCycle(LOC19);
				++chunks->Sup.len;
				i_329795 += ((NI) 1);
			} LA17: ;
		}
	}
	LOC20 = 0;
	LOC21 = 0;
	LOC21 = nsuJoinSep(chunks->data, chunks->Sup.len, ((NimStringDesc*) &TMP5207));
	LOC20 = rawNewString(LOC21->Sup.len + 6);
appendString(LOC20, LOC21);
appendString(LOC20, ((NimStringDesc*) &TMP5208));
	result_329320 = resizeString(result_329320, LOC20->Sup.len + 0);
appendString(result_329320, LOC20);
	return result_329320;
}

N_NIMCALL(NimStringDesc*, generatemodulejumps_329798)(TY125202* modules) {
	NimStringDesc* result;
	TY125202* chunks;
	NimStringDesc* LOC6;
	NimStringDesc* LOC7;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP5210));
	chunks = (TY125202*) newSeq((&NTI125202), 0);
	{
		NimStringDesc* name_329829;
		NI i_329844;
		NI L_329846;
		name_329829 = 0;
		i_329844 = ((NI) 0);
		L_329846 = (modules ? modules->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* LOC4;
				NimStringDesc* LOC5;
				if (!(i_329844 < L_329846)) goto LA3;
				name_329829 = modules->data[i_329844];
				LOC4 = 0;
				LOC4 = rawNewString(name_329829->Sup.len + name_329829->Sup.len + 20);
appendString(LOC4, ((NimStringDesc*) &TMP5204));
appendString(LOC4, name_329829);
appendString(LOC4, ((NimStringDesc*) &TMP5211));
appendString(LOC4, name_329829);
appendString(LOC4, ((NimStringDesc*) &TMP5206));
				chunks = (TY125202*) incrSeqV2(&(chunks)->Sup, sizeof(NimStringDesc*));
				LOC5 = 0;
				LOC5 = chunks->data[chunks->Sup.len]; chunks->data[chunks->Sup.len] = copyStringRC1(LOC4);
				if (LOC5) nimGCunrefNoCycle(LOC5);
				++chunks->Sup.len;
				i_329844 += ((NI) 1);
			} LA3: ;
		}
	}
	LOC6 = 0;
	LOC7 = 0;
	LOC7 = nsuJoinSep(chunks->data, chunks->Sup.len, ((NimStringDesc*) &TMP5207));
	LOC6 = rawNewString(LOC7->Sup.len + 6);
appendString(LOC6, LOC7);
appendString(LOC6, ((NimStringDesc*) &TMP5208));
	result = resizeString(result, LOC6->Sup.len + 0);
appendString(result, LOC6);
	return result;
}
N_NIMCALL(void, TMP5215)(void* p, NI op) {
	TY327582* a;
	NI LOC1;
	a = (TY327582*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1].Field1, op);
	}
}

static N_INLINE(NimStringDesc*, HEX5BHEX5D_88073)(NimStringDesc* s, Slice88080 x) {
	NimStringDesc* result;
	result = 0;
	result = copyStrLast(s, x.a, x.b);
	return result;
}

static N_INLINE(Slice88080, HEX2EHEX2E_102424)(NI a, NI b) {
	Slice88080 result;
	memset((void*)(&result), 0, sizeof(result));
	result.a = a;
	result.b = b;
	return result;
}

N_NIMCALL(void, striptoclevel_327519)(NimStringDesc* s, TY327583* Result) {
	Slice88080 LOC8;
	{
		NI c_327543;
		NI HEX3Atmp_327563;
		NI res_327566;
		c_327543 = 0;
		HEX3Atmp_327563 = 0;
		HEX3Atmp_327563 = ((s ? s->Sup.len : 0) - 1);
		res_327566 = ((NI) 0);
		{
			while (1) {
				if (!(res_327566 <= HEX3Atmp_327563)) goto LA3;
				c_327543 = res_327566;
				(*Result).Field0 = c_327543;
				{
					if (!!(((NU8)(s->data[c_327543]) == (NU8)(32)))) goto LA6;
					goto LA1;
				}
				LA6: ;
				res_327566 += ((NI) 1);
			} LA3: ;
		}
	} LA1: ;
	LOC8 = HEX2EHEX2E_102424((*Result).Field0, ((s ? s->Sup.len : 0) - 1));
	unsureAsgnRef((void**) (&(*Result).Field1), HEX5BHEX5D_88073(s, LOC8));
}

N_NIMCALL(NimStringDesc*, indenttolevel_327570)(NI* level, NI newlevel) {
	NimStringDesc* result;
{	result = 0;
	result = copyString(((NimStringDesc*) &TMP2243));
	{
		if (!((*level) == newlevel)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*level) < newlevel)) goto LA7;
		result = nsuRepeatStr(((NimStringDesc*) &TMP5217), ((NI) ((NI)(newlevel - (*level)))));
	}
	goto LA5;
	LA7: ;
	{
		result = nsuRepeatStr(((NimStringDesc*) &TMP5218), ((NI) ((NI)((*level) - newlevel))));
	}
	LA5: ;
	(*level) = newlevel;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NimStringDesc*, generatedocumentationtoc_327576)(TY329853* entries) {
	NimStringDesc* result;
	NimStringDesc* titleref;
	TY327582* levels;
	NI L;
	NI level;
	NimStringDesc* LOC23;
	NimStringDesc* LOC24;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP2243));
	titleref = 0;
	levels = 0;
	L = ((NI) 0);
	level = ((NI) 1);
	levels = (TY327582*) newSeq((&NTI327582), ((NI) ((entries ? entries->Sup.len : 0))));
	{
		Indexentry327126 entry_327802;
		NI i_328006;
		NI L_328008;
		memset((void*)(&entry_327802), 0, sizeof(entry_327802));
		i_328006 = ((NI) 0);
		L_328008 = (entries ? entries->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* LOC4;
				TY327583 LOC5;
				NI rawlevel;
				NimStringDesc* rawtext;
				if (!(i_328006 < L_328008)) goto LA3;
				entry_327802.keyword = entries->data[i_328006].keyword;
				entry_327802.link = entries->data[i_328006].link;
				entry_327802.linktitle = entries->data[i_328006].linktitle;
				entry_327802.linkdesc = entries->data[i_328006].linkdesc;
				LOC4 = 0;
				LOC4 = or_326594(entry_327802.linktitle, entry_327802.keyword);
				memset((void*)(&LOC5), 0, sizeof(LOC5));
				striptoclevel_327519(LOC4, (&LOC5));
				rawlevel = 0;
				rawlevel = LOC5.Field0;
				rawtext = 0;
				rawtext = LOC5.Field1;
				{
					NimStringDesc* LOC10;
					if (!(rawlevel < ((NI) 1))) goto LA8;
					levels->data[L].Field0 = (NI)(level + ((NI) 1));
					LOC10 = 0;
					LOC10 = levels->data[L].Field1; levels->data[L].Field1 = copyStringRC1(entry_327802.keyword);
					if (LOC10) nimGCunrefNoCycle(LOC10);
				}
				goto LA6;
				LA8: ;
				{
					NimStringDesc* LOC12;
					level = rawlevel;
					levels->data[L].Field0 = rawlevel;
					LOC12 = 0;
					LOC12 = levels->data[L].Field1; levels->data[L].Field1 = copyStringRC1(rawtext);
					if (LOC12) nimGCunrefNoCycle(LOC12);
				}
				LA6: ;
				L += ((NI) 1);
				i_328006 += ((NI) 1);
			} LA3: ;
		}
	}
	result = copyString(((NimStringDesc*) &TMP5216));
	level = ((NI) 1);
	L = ((NI) 0);
	{
		while (1) {
			NimStringDesc* link;
			if (!(L < (entries ? entries->Sup.len : 0))) goto LA14;
			link = entries->data[L].link;
			{
				NIM_BOOL LOC17;
				LOC17 = 0;
				LOC17 = isdocumentationtitle_327515(link);
				if (!LOC17) goto LA18;
				titleref = copyString(link);
			}
			goto LA15;
			LA18: ;
			{
				NimStringDesc* LOC21;
				NimStringDesc* LOC22;
				LOC21 = 0;
				LOC21 = indenttolevel_327570((&level), levels->data[L].Field0);
				result = resizeString(result, LOC21->Sup.len + 0);
appendString(result, LOC21);
				LOC22 = 0;
				LOC22 = rawNewString(link->Sup.len + levels->data[L].Field1->Sup.len + 20);
appendString(LOC22, ((NimStringDesc*) &TMP5219));
appendString(LOC22, link);
appendString(LOC22, ((NimStringDesc*) &TMP5205));
appendString(LOC22, levels->data[L].Field1);
appendString(LOC22, ((NimStringDesc*) &TMP5220));
				result = resizeString(result, LOC22->Sup.len + 0);
appendString(result, LOC22);
			}
			LA15: ;
			L += ((NI) 1);
		} LA14: ;
	}
	LOC23 = 0;
	LOC24 = 0;
	LOC24 = indenttolevel_327570((&level), ((NI) 1));
	LOC23 = rawNewString(LOC24->Sup.len + 6);
appendString(LOC23, LOC24);
appendString(LOC23, ((NimStringDesc*) &TMP5221));
	result = resizeString(result, LOC23->Sup.len + 0);
appendString(result, LOC23);
	return result;
}

N_NIMCALL(NimStringDesc*, generatedocumentationindex_328010)(Table327139 docs) {
	NimStringDesc* result_328013;
	TY329853* titles;
	TY329853* result_328017;
	TY328573 LOC14;
	result_328013 = 0;
	result_328013 = copyString(((NimStringDesc*) &TMP2243));
	result_328017 = (TY329853*) newSeq((&NTI329853), 0);
	{
		Indexentry327126 x_328021;
		memset((void*)(&x_328021), 0, sizeof(x_328021));
		{
			NI h_329304;
			NI HEX3Atmp_329306;
			NI res_329308;
			h_329304 = 0;
			HEX3Atmp_329306 = 0;
			HEX3Atmp_329306 = (docs.data ? (docs.data->Sup.len-1) : -1);
			res_329308 = ((NI) 0);
			{
				while (1) {
					if (!(res_329308 <= HEX3Atmp_329306)) goto LA4;
					h_329304 = res_329308;
					{
						NIM_BOOL LOC7;
						NimStringDesc* LOC10;
						NimStringDesc* LOC11;
						NimStringDesc* LOC12;
						NimStringDesc* LOC13;
						LOC7 = 0;
						LOC7 = isfilled_163263(docs.data->data[h_329304].Field0);
						if (!LOC7) goto LA8;
						x_328021.keyword = docs.data->data[h_329304].Field1.keyword;
						x_328021.link = docs.data->data[h_329304].Field1.link;
						x_328021.linktitle = docs.data->data[h_329304].Field1.linktitle;
						x_328021.linkdesc = docs.data->data[h_329304].Field1.linkdesc;
						result_328017 = (TY329853*) incrSeqV2(&(result_328017)->Sup, sizeof(Indexentry327126));
						LOC10 = 0;
						LOC10 = result_328017->data[result_328017->Sup.len].keyword; result_328017->data[result_328017->Sup.len].keyword = copyStringRC1(x_328021.keyword);
						if (LOC10) nimGCunrefNoCycle(LOC10);
						LOC11 = 0;
						LOC11 = result_328017->data[result_328017->Sup.len].link; result_328017->data[result_328017->Sup.len].link = copyStringRC1(x_328021.link);
						if (LOC11) nimGCunrefNoCycle(LOC11);
						LOC12 = 0;
						LOC12 = result_328017->data[result_328017->Sup.len].linktitle; result_328017->data[result_328017->Sup.len].linktitle = copyStringRC1(x_328021.linktitle);
						if (LOC12) nimGCunrefNoCycle(LOC12);
						LOC13 = 0;
						LOC13 = result_328017->data[result_328017->Sup.len].linkdesc; result_328017->data[result_328017->Sup.len].linkdesc = copyStringRC1(x_328021.linkdesc);
						if (LOC13) nimGCunrefNoCycle(LOC13);
						++result_328017->Sup.len;
					}
					LA8: ;
					res_329308 += ((NI) 1);
				} LA4: ;
			}
		}
	}
	genericSeqAssign((&titles), result_328017, (&NTI329853));
	memset((void*)(&LOC14), 0, sizeof(LOC14));
	LOC14.ClPrc = ((TMP5213) (cmp_327159)); LOC14.ClEnv = NIM_NIL;
	sort_328566(titles->data, titles->Sup.len, LOC14, ((NU8) 1));
	{
		Indexentry327126 title_329244;
		NI i_329314;
		NI L_329316;
		memset((void*)(&title_329244), 0, sizeof(title_329244));
		i_329314 = ((NI) 0);
		L_329316 = (titles ? titles->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* toclist;
				TY329853* LOC18;
				NimStringDesc* LOC19;
				if (!(i_329314 < L_329316)) goto LA17;
				title_329244.keyword = titles->data[i_329314].keyword;
				title_329244.link = titles->data[i_329314].link;
				title_329244.linktitle = titles->data[i_329314].linktitle;
				title_329244.linkdesc = titles->data[i_329314].linkdesc;
				LOC18 = 0;
				LOC18 = getordefault_329246(docs, (&title_329244));
				toclist = generatedocumentationtoc_327576(LOC18);
				LOC19 = 0;
				LOC19 = rawNewString(title_329244.link->Sup.len + title_329244.keyword->Sup.len + toclist->Sup.len + 30);
appendString(LOC19, ((NimStringDesc*) &TMP5222));
appendString(LOC19, title_329244.link);
appendString(LOC19, ((NimStringDesc*) &TMP5205));
appendString(LOC19, title_329244.keyword);
appendString(LOC19, ((NimStringDesc*) &TMP5220));
appendString(LOC19, toclist);
appendString(LOC19, ((NimStringDesc*) &TMP5221));
				result_328013 = resizeString(result_328013, LOC19->Sup.len + 0);
appendString(result_328013, LOC19);
				i_329314 += ((NI) 1);
			} LA17: ;
		}
	}
	return result_328013;
}

N_NIMCALL(void, sortindex_327414)(Indexentry327126* a, NI aLen0) {
	NI n;
	NI h;
	n = aLen0;
	h = ((NI) 1);
	{
		while (1) {
			h = (NI)((NI)(((NI) 3) * h) + ((NI) 1));
			{
				if (!(n < h)) goto LA5;
				goto LA1;
			}
			LA5: ;
		}
	} LA1: ;
	{
		while (1) {
			h = (NI)(h / ((NI) 3));
			{
				NI i_327439;
				NI HEX3Atmp_327450;
				NI res_327453;
				i_327439 = 0;
				HEX3Atmp_327450 = 0;
				HEX3Atmp_327450 = (NI)(n - ((NI) 1));
				res_327453 = h;
				{
					while (1) {
						Indexentry327126 v;
						NI j;
						if (!(res_327453 <= HEX3Atmp_327450)) goto LA11;
						i_327439 = res_327453;
						memset((void*)(&v), 0, sizeof(v));
						HEX3CHEX2D_327409((&v), (&a[i_327439]));
						j = i_327439;
						{
							while (1) {
								NI LOC14;
								LOC14 = 0;
								LOC14 = cmp_327159((&a[(NI)(j - h)]), (&v));
								if (!(((NI) 0) <= LOC14)) goto LA13;
								HEX3CHEX2D_327409((&a[j]), (&a[(NI)(j - h)]));
								j = (NI)(j - h);
								{
									if (!(j < h)) goto LA17;
									goto LA12;
								}
								LA17: ;
							} LA13: ;
						} LA12: ;
						HEX3CHEX2D_327409((&a[j]), (&v));
						res_327453 += ((NI) 1);
					} LA11: ;
				}
			}
			{
				if (!(h == ((NI) 1))) goto LA21;
				goto LA7;
			}
			LA21: ;
		}
	} LA7: ;
}

N_NIMCALL(NimStringDesc*, generatesymbolindex_327457)(TY329853* symbols) {
	NimStringDesc* result;
	NI i;
	result = 0;
	result = copyString(((NimStringDesc*) &TMP2243));
	i = ((NI) 0);
	{
		while (1) {
			NimStringDesc* keyword;
			NimStringDesc* cleanedkeyword;
			Slice88080 LOC3;
			TY184169 LOC4;
			NI j;
			if (!(i < (symbols ? symbols->Sup.len : 0))) goto LA2;
			keyword = symbols->data[i].keyword;
			LOC3 = HEX2EHEX2E_102424(((NI) 1), (NI)((keyword ? (keyword->Sup.len-1) : -1) - ((NI) 1)));
			cleanedkeyword = HEX5BHEX5D_88073(keyword, LOC3);
			memset((void*)LOC4, 0, sizeof(LOC4));
			LOC4[0] = copyString(keyword);
			LOC4[1] = copyString(cleanedkeyword);
			nsuAddf((&result), ((NimStringDesc*) &TMP5224), LOC4, 2);
			j = i;
			{
				while (1) {
					NIM_BOOL LOC7;
					NimStringDesc* url;
					NimStringDesc* text;
					NimStringDesc* desc;
					LOC7 = 0;
					LOC7 = (j < (symbols ? symbols->Sup.len : 0));
					if (!(LOC7)) goto LA8;
					LOC7 = eqStrings(keyword, symbols->data[j].keyword);
					LA8: ;
					if (!LOC7) goto LA6;
					url = symbols->data[j].link;
					{
						if (!!(symbols->data[j].linktitle == 0)) goto LA11;
						text = symbols->data[j].linktitle;
					}
					goto LA9;
					LA11: ;
					{
						text = url;
					}
					LA9: ;
					{
						if (!!(symbols->data[j].linkdesc == 0)) goto LA16;
						desc = symbols->data[j].linkdesc;
					}
					goto LA14;
					LA16: ;
					{
						desc = copyString(((NimStringDesc*) &TMP2243));
					}
					LA14: ;
					{
						TY184156 LOC23;
						if (!(((NI) 0) < (desc ? desc->Sup.len : 0))) goto LA21;
						memset((void*)LOC23, 0, sizeof(LOC23));
						LOC23[0] = copyString(url);
						LOC23[1] = copyString(text);
						LOC23[2] = copyString(desc);
						nsuAddf((&result), ((NimStringDesc*) &TMP5225), LOC23, 3);
					}
					goto LA19;
					LA21: ;
					{
						TY184169 LOC25;
						memset((void*)LOC25, 0, sizeof(LOC25));
						LOC25[0] = copyString(url);
						LOC25[1] = copyString(text);
						nsuAddf((&result), ((NimStringDesc*) &TMP5226), LOC25, 2);
					}
					LA19: ;
					j += ((NI) 1);
				} LA6: ;
			}
			result = resizeString(result, 11);
appendString(result, ((NimStringDesc*) &TMP5227));
			i = j;
		} LA2: ;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, mergeindexes_331929)(NimStringDesc* dir) {
	NimStringDesc* result;
	TY329850 LOC1;
	TY125202* modules;
	TY329853* symbols;
	Table327139 docs;
	result = 0;
	memset((void*)(&LOC1), 0, sizeof(LOC1));
	readindexdir_329847(dir, (&LOC1));
	modules = 0;
	genericSeqAssign((&modules), LOC1.Field0, (&NTI125202));
	symbols = 0;
	genericSeqAssign((&symbols), LOC1.Field1, (&NTI329853));
	memset((void*)(&docs), 0, sizeof(docs));
	genericSeqAssign((&docs.data), LOC1.Field2.data, (&NTI327142));
	docs.counter = LOC1.Field2.counter;
	result = copyString(((NimStringDesc*) &TMP2243));
	{
		NI LOC4;
		NimStringDesc* LOC7;
		LOC4 = 0;
		LOC4 = len_330259(docs);
		if (!(((NI) 0) < LOC4)) goto LA5;
		LOC7 = 0;
		LOC7 = generatedocumentationjumps_329317(docs);
		result = resizeString(result, LOC7->Sup.len + 0);
appendString(result, LOC7);
		result = resizeString(result, 5);
appendString(result, ((NimStringDesc*) &TMP5209));
	}
	LA5: ;
	{
		NimStringDesc* LOC12;
		if (!(((NI) 0) < (modules ? modules->Sup.len : 0))) goto LA10;
		LOC12 = 0;
		LOC12 = generatemodulejumps_329798(modules);
		result = resizeString(result, LOC12->Sup.len + 0);
appendString(result, LOC12);
		result = resizeString(result, 5);
appendString(result, ((NimStringDesc*) &TMP5209));
	}
	LA10: ;
	{
		NI LOC15;
		NimStringDesc* LOC18;
		LOC15 = 0;
		LOC15 = len_330259(docs);
		if (!(((NI) 0) < LOC15)) goto LA16;
		result = resizeString(result, 29);
appendString(result, ((NimStringDesc*) &TMP5212));
		LOC18 = 0;
		LOC18 = generatedocumentationindex_328010(docs);
		result = resizeString(result, LOC18->Sup.len + 0);
appendString(result, LOC18);
	}
	LA16: ;
	{
		NimStringDesc* LOC23;
		if (!(((NI) 0) < (symbols ? symbols->Sup.len : 0))) goto LA21;
		sortindex_327414(symbols->data, symbols->Sup.len);
		result = resizeString(result, 21);
appendString(result, ((NimStringDesc*) &TMP5223));
		LOC23 = 0;
		LOC23 = generatesymbolindex_327457(symbols);
		result = resizeString(result, LOC23->Sup.len + 0);
appendString(result, LOC23);
	}
	LA21: ;
	return result;
}
NIM_EXTERNC N_NOINLINE(void, docutils_rstgenInit000)(void) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = splitter_326441; splitter_326441 = copyStringRC1(((NimStringDesc*) &TMP981));
	if (LOC1) nimGCunrefNoCycle(LOC1);
}

NIM_EXTERNC N_NOINLINE(void, docutils_rstgenDatInit000)(void) {
static TNimNode* TMP5029[14];
static TNimNode* TMP5030[2];
NI TMP5032;
static char* NIM_CONST TMP5031[2] = {
"outHtml", 
"outLatex"};
static TNimNode* TMP5033[3];
static TNimNode* TMP5190[4];
static TNimNode* TMP5214[2];
static TNimNode TMP973[30];
NTI326010.size = sizeof(Rstgenerator326010);
NTI326010.kind = 17;
NTI326010.base = (&NTI3608);
TMP5029[0] = &TMP973[1];
NTI326004.size = sizeof(NU8);
NTI326004.kind = 14;
NTI326004.base = 0;
NTI326004.flags = 3;
for (TMP5032 = 0; TMP5032 < 2; TMP5032++) {
TMP973[TMP5032+2].kind = 1;
TMP973[TMP5032+2].offset = TMP5032;
TMP973[TMP5032+2].name = TMP5031[TMP5032];
TMP5030[TMP5032] = &TMP973[TMP5032+2];
}
TMP973[4].len = 2; TMP973[4].kind = 2; TMP973[4].sons = &TMP5030[0];
NTI326004.node = &TMP973[4];
TMP973[1].kind = 1;
TMP973[1].offset = offsetof(Rstgenerator326010, target);
TMP973[1].typ = (&NTI326004);
TMP973[1].name = "target";
TMP5029[1] = &TMP973[5];
TMP973[5].kind = 1;
TMP973[5].offset = offsetof(Rstgenerator326010, config);
TMP973[5].typ = (&NTI140211);
TMP973[5].name = "config";
TMP5029[2] = &TMP973[6];
TMP973[6].kind = 1;
TMP973[6].offset = offsetof(Rstgenerator326010, splitafter);
TMP973[6].typ = (&NTI104);
TMP973[6].name = "splitAfter";
TMP5029[3] = &TMP973[7];
TMP973[7].kind = 1;
TMP973[7].offset = offsetof(Rstgenerator326010, listingcounter);
TMP973[7].typ = (&NTI104);
TMP973[7].name = "listingCounter";
TMP5029[4] = &TMP973[8];
NTI326006.size = sizeof(Tocentry326006);
NTI326006.kind = 18;
NTI326006.base = 0;
NTI326006.flags = 2;
TMP5033[0] = &TMP973[10];
TMP973[10].kind = 1;
TMP973[10].offset = offsetof(Tocentry326006, n);
TMP973[10].typ = (&NTI313004);
TMP973[10].name = "n";
TMP5033[1] = &TMP973[11];
TMP973[11].kind = 1;
TMP973[11].offset = offsetof(Tocentry326006, refname);
TMP973[11].typ = (&NTI138);
TMP973[11].name = "refname";
TMP5033[2] = &TMP973[12];
TMP973[12].kind = 1;
TMP973[12].offset = offsetof(Tocentry326006, header);
TMP973[12].typ = (&NTI138);
TMP973[12].name = "header";
TMP973[9].len = 3; TMP973[9].kind = 2; TMP973[9].sons = &TMP5033[0];
NTI326006.node = &TMP973[9];
NTI326029.size = sizeof(TY326029*);
NTI326029.kind = 24;
NTI326029.base = (&NTI326006);
NTI326029.flags = 2;
NTI326029.marker = TMP5034;
TMP973[8].kind = 1;
TMP973[8].offset = offsetof(Rstgenerator326010, tocpart);
TMP973[8].typ = (&NTI326029);
TMP973[8].name = "tocPart";
TMP5029[5] = &TMP973[13];
TMP973[13].kind = 1;
TMP973[13].offset = offsetof(Rstgenerator326010, hastoc);
TMP973[13].typ = (&NTI130);
TMP973[13].name = "hasToc";
TMP5029[6] = &TMP973[14];
TMP973[14].kind = 1;
TMP973[14].offset = offsetof(Rstgenerator326010, theindex);
TMP973[14].typ = (&NTI138);
TMP973[14].name = "theIndex";
TMP5029[7] = &TMP973[15];
TMP973[15].kind = 1;
TMP973[15].offset = offsetof(Rstgenerator326010, options);
TMP973[15].typ = (&NTI314006);
TMP973[15].name = "options";
TMP5029[8] = &TMP973[16];
TMP973[16].kind = 1;
TMP973[16].offset = offsetof(Rstgenerator326010, findfile);
TMP973[16].typ = (&NTI314014);
TMP973[16].name = "findFile";
TMP5029[9] = &TMP973[17];
TMP973[17].kind = 1;
TMP973[17].offset = offsetof(Rstgenerator326010, msghandler);
TMP973[17].typ = (&NTI314012);
TMP973[17].name = "msgHandler";
TMP5029[10] = &TMP973[18];
TMP973[18].kind = 1;
TMP973[18].offset = offsetof(Rstgenerator326010, filename);
TMP973[18].typ = (&NTI138);
TMP973[18].name = "filename";
TMP5029[11] = &TMP973[19];
NTI326039.size = sizeof(TY326039);
NTI326039.kind = 16;
NTI326039.base = (&NTI138);
NTI326039.flags = 2;
TMP973[19].kind = 1;
TMP973[19].offset = offsetof(Rstgenerator326010, meta);
TMP973[19].typ = (&NTI326039);
TMP973[19].name = "meta";
TMP5029[12] = &TMP973[20];
TMP973[20].kind = 1;
TMP973[20].offset = offsetof(Rstgenerator326010, currentsection);
TMP973[20].typ = (&NTI138);
TMP973[20].name = "currentSection";
TMP5029[13] = &TMP973[21];
TMP973[21].kind = 1;
TMP973[21].offset = offsetof(Rstgenerator326010, seenindexterms);
TMP973[21].typ = (&NTI326047);
TMP973[21].name = "seenIndexTerms";
TMP973[0].len = 14; TMP973[0].kind = 2; TMP973[0].sons = &TMP5029[0];
NTI326010.node = &TMP973[0];
NTI327126.size = sizeof(Indexentry327126);
NTI327126.kind = 18;
NTI327126.base = 0;
NTI327126.flags = 2;
TMP5190[0] = &TMP973[23];
TMP973[23].kind = 1;
TMP973[23].offset = offsetof(Indexentry327126, keyword);
TMP973[23].typ = (&NTI138);
TMP973[23].name = "keyword";
TMP5190[1] = &TMP973[24];
TMP973[24].kind = 1;
TMP973[24].offset = offsetof(Indexentry327126, link);
TMP973[24].typ = (&NTI138);
TMP973[24].name = "link";
TMP5190[2] = &TMP973[25];
TMP973[25].kind = 1;
TMP973[25].offset = offsetof(Indexentry327126, linktitle);
TMP973[25].typ = (&NTI138);
TMP973[25].name = "linkTitle";
TMP5190[3] = &TMP973[26];
TMP973[26].kind = 1;
TMP973[26].offset = offsetof(Indexentry327126, linkdesc);
TMP973[26].typ = (&NTI138);
TMP973[26].name = "linkDesc";
TMP973[22].len = 4; TMP973[22].kind = 2; TMP973[22].sons = &TMP5190[0];
NTI327126.node = &TMP973[22];
NTI329853.size = sizeof(TY329853*);
NTI329853.kind = 24;
NTI329853.base = (&NTI327126);
NTI329853.flags = 2;
NTI329853.marker = TMP5191;
NTI327583.size = sizeof(TY327583);
NTI327583.kind = 18;
NTI327583.base = 0;
NTI327583.flags = 2;
TMP5214[0] = &TMP973[28];
TMP973[28].kind = 1;
TMP973[28].offset = offsetof(TY327583, Field0);
TMP973[28].typ = (&NTI104);
TMP973[28].name = "Field0";
TMP5214[1] = &TMP973[29];
TMP973[29].kind = 1;
TMP973[29].offset = offsetof(TY327583, Field1);
TMP973[29].typ = (&NTI138);
TMP973[29].name = "Field1";
TMP973[27].len = 2; TMP973[27].kind = 2; TMP973[27].sons = &TMP5214[0];
NTI327583.node = &TMP973[27];
NTI327582.size = sizeof(TY327582*);
NTI327582.kind = 24;
NTI327582.base = (&NTI327583);
NTI327582.flags = 2;
NTI327582.marker = TMP5215;
}

