text: /* Generated by Nim Compiler v0.15.0 */
  /*   (c) 2016 Andreas Rumpf */
  /* The generated code is subject to the original license. */
  #define NIM_INTBITS 32
  
  #include "nimbase.h"
  #include <string.h>
  #include <stdio.h>
  typedef struct NimStringDesc NimStringDesc;
  typedef struct TGenericSeq TGenericSeq;
  typedef struct Rstnode369011 Rstnode369011;
  typedef struct Rstnodeseq369009 Rstnodeseq369009;
  typedef struct Rstparser370500 Rstparser370500;
  typedef struct TNimObject TNimObject;
  typedef struct TNimType TNimType;
  typedef struct TNimNode TNimNode;
  typedef struct Tokenseq370123 Tokenseq370123;
  typedef struct Sharedstate370496 Sharedstate370496;
  typedef struct TY370521 TY370521;
  typedef struct Token370121 Token370121;
  typedef struct TY370510 TY370510;
  typedef struct Substitution370494 Substitution370494;
  typedef struct Cell47304 Cell47304;
  typedef struct Cellseq47320 Cellseq47320;
  typedef struct Gcheap49818 Gcheap49818;
  typedef struct Gcstack49816 Gcstack49816;
  typedef struct Memregion29485 Memregion29485;
  typedef struct Smallchunk29439 Smallchunk29439;
  typedef struct Llchunk29479 Llchunk29479;
  typedef struct Bigchunk29441 Bigchunk29441;
  typedef struct Intset29414 Intset29414;
  typedef struct Trunk29410 Trunk29410;
  typedef struct Avlnode29483 Avlnode29483;
  typedef struct Gcstat49814 Gcstat49814;
  typedef struct Cellset47316 Cellset47316;
  typedef struct Pagedesc47312 Pagedesc47312;
  typedef struct Eparseerror370502 Eparseerror370502;
  typedef struct Valueerror3646 Valueerror3646;
  typedef struct Exception Exception;
  typedef struct Lexer370125 Lexer370125;
  typedef struct Keyvaluepair153604 Keyvaluepair153604;
  typedef struct TY129506 TY129506;
  typedef struct TY136002 TY136002;
  typedef struct Basechunk29437 Basechunk29437;
  typedef struct Freecell29429 Freecell29429;
  struct  TGenericSeq  {
  NI len;
  NI reserved;
  };
  struct  NimStringDesc  {
    TGenericSeq Sup;
  NIM_CHAR data[SEQ_DECL_SIZE];
  };
  typedef NU8 Rstnodekind369005;
  struct  Rstnode369011  {
  Rstnodekind369005 kind;
  NimStringDesc* text;
  NI level;
  Rstnodeseq369009* sons;
  };
  typedef NU8 char136Set[32];
  typedef NU8 Rstparseoption370003Set;
  typedef N_NIMCALL_PTR(NimStringDesc*, Findfilehandler370013) (NimStringDesc* filename0);
  typedef NU8 Msgkind370009;
  typedef N_NIMCALL_PTR(void, Msghandler370011) (NimStringDesc* filename0, NI line0, NI col0, Msgkind370009 msgkind0, NimStringDesc* arg0);
  typedef NU8 Tnimkind3403;
  typedef NU8 Tnimtypeflag3409Set;
  typedef N_NIMCALL_PTR(void, TY3489) (void* p0, NI op0);
  typedef N_NIMCALL_PTR(void*, TY3494) (void* p0);
  struct  TNimType  {
  NI size;
  Tnimkind3403 kind;
  Tnimtypeflag3409Set flags;
  TNimType* base;
  TNimNode* node;
  void* finalizer;
  TY3489 marker;
  TY3494 deepcopy;
  };
  struct  TNimObject  {
  TNimType* m_type;
  };
  struct  Rstparser370500  {
    TNimObject Sup;
  NI idx;
  Tokenseq370123* tok;
  Sharedstate370496* s;
  TY370521* indentstack;
  NimStringDesc* filename;
  NI line;
  NI col;
  NIM_BOOL hastoc;
  };
  typedef NU8 Tnimnodekind3405;
  struct  TNimNode  {
  Tnimnodekind3405 kind;
  NI offset;
  TNimType* typ;
  NCSTRING name;
  NI len;
  TNimNode** sons;
  };
  typedef NU8 Toktype370119;
  struct  Token370121  {
  Toktype370119 kind;
  NI ival;
  NimStringDesc* symbol;
  NI line;
  NI col;
  };
  typedef NI Skiptable109518[256];
  struct  Sharedstate370496  {
  Rstparseoption370003Set options;
  NI ulevel;
  NI olevel;
  TY370510* subs;
  TY370510* refs;
  Skiptable109518 underlinetolevel;
  Skiptable109518 overlinetolevel;
  Msghandler370011 msghandler;
  Findfilehandler370013 findfile;
  };
  typedef NU8 Rstparseoption370003;
  struct  Substitution370494  {
  NimStringDesc* key;
  Rstnode369011* value;
  };
  struct  Cell47304  {
  NI refcount;
  TNimType* typ;
  };
  struct  Cellseq47320  {
  NI len;
  NI cap;
  Cell47304** d;
  };
  typedef Smallchunk29439* TY29500[512];
  typedef Trunk29410* Trunkbuckets29412[256];
  struct  Intset29414  {
  Trunkbuckets29412 data;
  };
  struct  Memregion29485  {
  NI minlargeobj;
  NI maxlargeobj;
  TY29500 freesmallchunks;
  Llchunk29479* llmem;
  NI currmem;
  NI maxmem;
  NI freemem;
  NI lastsize;
  Bigchunk29441* freechunkslist;
  Intset29414 chunkstarts;
  Avlnode29483* root;
  Avlnode29483* deleted;
  Avlnode29483* last;
  Avlnode29483* freeavlnodes;
  NIM_BOOL locked;
  };
  struct  Gcstat49814  {
  NI stackscans;
  NI cyclecollections;
  NI maxthreshold;
  NI maxstacksize;
  NI maxstackcells;
  NI cycletablesize;
  NI64 maxpause;
  };
  struct  Cellset47316  {
  NI counter;
  NI max;
  Pagedesc47312* head;
  Pagedesc47312** data;
  };
  struct  Gcheap49818  {
  Gcstack49816* stack;
  void* stackbottom;
  NI cyclethreshold;
  Cellseq47320 zct;
  Cellseq47320 decstack;
  Cellseq47320 tempstack;
  NI recgclock;
  Memregion29485 region;
  Gcstat49814 stat;
  Cellset47316 marked;
  Cellseq47320 additionalroots;
  };
  typedef NU8 Msgclass370007;
  typedef NimStringDesc* TY370059[10];
  typedef NimStringDesc* TY370610[5];
  struct  Exception  {
    TNimObject Sup;
  Exception* parent;
  NCSTRING name;
  NimStringDesc* message;
  NimStringDesc* trace;
  };
  struct  Valueerror3646  {
    Exception Sup;
  };
  struct  Eparseerror370502  {
    Valueerror3646 Sup;
  };
  typedef NimStringDesc* TY194732[1];
  struct  Lexer370125  {
    TNimObject Sup;
  NCSTRING buf;
  NI bufpos;
  NI line;
  NI col;
  NI baseindent;
  NIM_BOOL skippounds;
  };
  typedef NU8 Dirkind372609;
  typedef NimStringDesc* TY372627[13];
  typedef NU8 Dirflag375202Set;
  typedef N_NIMCALL_PTR(Rstnode369011*, Sectionparser375206) (Rstparser370500* p0);
  typedef NU8 Dirflag375202;
  struct Keyvaluepair153604 {
  NimStringDesc* Field0;
  NimStringDesc* Field1;
  };
  typedef Keyvaluepair153604 TY370082[34];
  struct TY129506 {
  NimStringDesc* Field0;
  NimStringDesc* Field1;
  NimStringDesc* Field2;
  };
  typedef NimStringDesc* TY195140[3];
  typedef NI TY374895[3];
  struct  Gcstack49816  {
  Gcstack49816* prev;
  Gcstack49816* next;
  void* starts;
  void* pos;
  NI maxstacksize;
  };
  struct  Basechunk29437  {
  NI prevsize;
  NI size;
  NIM_BOOL used;
  };
  struct  Smallchunk29439  {
    Basechunk29437 Sup;
  Smallchunk29439* next;
  Smallchunk29439* prev;
  Freecell29429* freelist;
  NI free;
  NI acc;
  NF data;
  };
  struct  Llchunk29479  {
  NI size;
  NI acc;
  Llchunk29479* next;
  };
  struct  Bigchunk29441  {
    Basechunk29437 Sup;
  Bigchunk29441* next;
  Bigchunk29441* prev;
  NI align;
  NF data;
  };
  typedef NI TY29418[16];
  struct  Trunk29410  {
  Trunk29410* next;
  NI key;
  TY29418 bits;
  };
  typedef Avlnode29483* TY29490[2];
  struct  Avlnode29483  {
  TY29490 link;
  NI key;
  NI upperbound;
  NI level;
  };
  struct  Pagedesc47312  {
  Pagedesc47312* next;
  NI key;
  TY29418 bits;
  };
  struct  Freecell29429  {
  Freecell29429* next;
  NI zerofield;
  };
  struct Tokenseq370123 {
    TGenericSeq Sup;
    Token370121 data[SEQ_DECL_SIZE];
  };
  struct TY370510 {
    TGenericSeq Sup;
    Substitution370494 data[SEQ_DECL_SIZE];
  };
  struct TY370521 {
    TGenericSeq Sup;
    NI data[SEQ_DECL_SIZE];
  };
  struct TY136002 {
    TGenericSeq Sup;
    NimStringDesc* data[SEQ_DECL_SIZE];
  };
  struct Rstnodeseq369009 {
    TGenericSeq Sup;
    Rstnode369011* data[SEQ_DECL_SIZE];
  };
  N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src0);
  N_NIMCALL(void, rstnodetorefnameaux_370923_3635346014)(Rstnode369011* n0, NimStringDesc** r0, NIM_BOOL* b0);
  N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s0, NIM_CHAR c0);
  N_NIMCALL(NI, len_369089_4150536388)(Rstnode369011* n0);
  N_NIMCALL(void, addnodesaux_370884_3635346014)(Rstnode369011* n0, NimStringDesc** result0);
  static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0);
  static N_INLINE(void, copymem_7485_1689653243)(void* dest0, void* source0, NI size0);
  N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest0, NI addlen0);
  N_NIMCALL(NimStringDesc*, addnodes_370065_3635346014)(Rstnode369011* n0);
  N_NIMCALL(NI, nsuCmpIgnoreStyle)(NimStringDesc* a0, NimStringDesc* b0);
  N_NIMCALL(NimStringDesc*, nsuStrip)(NimStringDesc* s0, NIM_BOOL leading0, NIM_BOOL trailing0, char136Set chars0);
  N_NIMCALL(void, nimGCvisit)(void* d0, NI op0);
  N_NIMCALL(void, T3635346014_10)(void* p, NI op);
  N_NIMCALL(void, T3635346014_16)(void* p, NI op);
  N_NIMCALL(void, T3635346014_17)(void* p, NI op);
  N_NIMCALL(void, T3635346014_18)(void* p, NI op);
  N_NIMCALL(void, initparser_370850_3635346014)(Rstparser370500* p0, Sharedstate370496* sharedstate0);
  N_NIMCALL(void, genericSeqAssign)(void* dest0, void* src_86404_1689653243, TNimType* mt0);
  N_NIMCALL(void*, newSeq)(TNimType* typ0, NI len0);
  N_NIMCALL(void, unsureAsgnRef)(void** dest0, void* src0);
  N_NIMCALL(Sharedstate370496*, newsharedstate_370659_3635346014)(Rstparseoption370003Set options0, Findfilehandler370013 findfile0, Msghandler370011 msghandler0);
  N_NIMCALL(void*, newObj)(TNimType* typ0, NI size0);
  static N_INLINE(void, nimGCunrefNoCycle)(void* p0);
  static N_INLINE(Cell47304*, usrtocell_51440_1689653243)(void* usr0);
  static N_INLINE(void, rtladdzct_52601_1689653243)(Cell47304* c0);
  N_NOINLINE(void, addzct_51417_1689653243)(Cellseq47320* s0, Cell47304* c0);
  N_NIMCALL(void*, newSeqRC1)(TNimType* typ0, NI len0);
  N_NIMCALL(void, defaultmsghandler_370601_3635346014)(NimStringDesc* filename0, NI line0, NI col0, Msgkind370009 msgkind0, NimStringDesc* arg0);
  N_NIMCALL(Msgclass370007, whichmsgclass_370545_3635346014)(Msgkind370009 k0);
  N_NIMCALL(NimStringDesc*, reprEnum)(NI e0, TNimType* typ0);
  N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr0, NimStringDesc* a0);
  N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr0, NimStringDesc** a0, NI a0Len0);
  N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x0);
  N_NIMCALL(void, T3635346014_38)(void* p, NI op);
  N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src0);
  N_NIMCALL(void, raiseException)(Exception* e0, NCSTRING ename0);
  static N_INLINE(void, writeline_172405_1689653243)(FILE* f0, NimStringDesc** x0, NI x0Len0);
  N_NIMCALL(void, write_14891_1689653243)(FILE* f0, NimStringDesc* s0);
  N_NIMCALL(NimStringDesc*, defaultfindfile_370655_3635346014)(NimStringDesc* filename0);
  N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename0);
  N_NIMCALL(NI, gettokens_370360_3635346014)(NimStringDesc* buffer0, NIM_BOOL skippounds0, Tokenseq370123** tokens0);
  N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq0, NI elemsize0, NI newlen0);
  N_NIMCALL(void, rawgettok_370319_3635346014)(Lexer370125* L0, Token370121* tok0);
  N_NIMCALL(void, getthing_370153_3635346014)(Lexer370125* L0, Token370121* tok0, char136Set s0);
  N_NIMCALL(void, getindent_370300_3635346014)(Lexer370125* L0, Token370121* tok0);
  N_NIMCALL(NI, getindentaux_370218_3635346014)(Lexer370125* L0, NI start0);
  N_NIMCALL(NimStringDesc*, nsuRepeatChar)(NIM_CHAR c0, NI count0);
  N_NIMCALL(NimStringDesc*, rawNewString)(NI space0);
  N_NIMCALL(void, getadornment_370191_3635346014)(Lexer370125* L0, Token370121* tok0);
  N_NIMCALL(Rstnode369011*, resolvesubs_376196_3635346014)(Rstparser370500* p0, Rstnode369011* n0);
  N_NIMCALL(NI, findsub_371014_3635346014)(Rstparser370500* p0, Rstnode369011* n0);
  static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a0, NimStringDesc* b0);
  static N_INLINE(NIM_BOOL, equalmem_7495_1689653243)(void* a0, void* b0, NI size0);
  N_NIMCALL(NimStringDesc*, getenv_136625_2125978480)(NimStringDesc* key0);
  N_NIMCALL(Rstnode369011*, newrstnode_369129_4150536388)(Rstnodekind369005 kind0, NimStringDesc* s0);
  N_NIMCALL(void, rstmessage_370724_3635346014)(Rstparser370500* p0, Msgkind370009 msgkind0, NimStringDesc* arg0);
  N_NIMCALL(Rstnode369011*, findref_371151_3635346014)(Rstparser370500* p0, NimStringDesc* key0);
  N_NIMCALL(NimStringDesc*, rstnodetorefname_370062_3635346014)(Rstnode369011* n0);
  N_NIMCALL(Rstnode369011*, newrstnode_369101_4150536388)(Rstnodekind369005 kind0);
  N_NIMCALL(void, add_369146_4150536388)(Rstnode369011* father0, Rstnode369011* son0);
  static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0);
  N_NIMCALL(Rstnode369011*, parsedoc_374257_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parsesectionwrapper_375091_3635346014)(Rstparser370500* p0);
  N_NIMCALL(void, parsesection_372697_3635346014)(Rstparser370500* p0, Rstnode369011* result0);
  N_NIMCALL(NI, currind_370801_3635346014)(Rstparser370500* p0);
  N_NIMCALL(void, pushind_370805_3635346014)(Rstparser370500* p0, NI ind0);
  N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq0, NI elemsize0);
  N_NIMCALL(void, popind_370820_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnodekind369005, whichsection_373611_3635346014)(Rstparser370500* p0);
  N_NIMCALL(NIM_BOOL, match_371327_3635346014)(Rstparser370500* p0, NI start0, NimStringDesc* expr0);
  N_NIMCALL(NIM_BOOL, allcharsinset_109382_4286263276)(NimStringDesc* s0, char136Set theset0);
  N_NIMCALL(NI, tokenafternewline_373550_3635346014)(Rstparser370500* p0);
  N_NIMCALL(NIM_BOOL, prednl_373578_3635346014)(Rstparser370500* p0);
  N_NIMCALL(NIM_BOOL, islineblock_373573_3635346014)(Rstparser370500* p0);
  N_NIMCALL(void, rstmessage_370736_3635346014)(Rstparser370500* p0, Msgkind370009 msgkind0);
  N_NIMCALL(NIM_BOOL, isdeflist_373591_3635346014)(Rstparser370500* p0);
  N_NIMCALL(NIM_BOOL, isoptionlist_373607_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parseliteralblock_373468_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parsebulletlist_374668_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parselineblock_373624_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parsedotdot_373464_3635346014)(Rstparser370500* p0);
  N_NIMCALL(NimStringDesc*, getdirective_372436_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Dirkind372609, getdirkind_372630_3635346014)(NimStringDesc* s0);
  static N_INLINE(NI, find_372635_1689653243)(TY372627 a0, NimStringDesc* item0);
  N_NIMCALL(Rstnode369011*, dirinclude_375365_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parsedirective_375344_3635346014)(Rstparser370500* p0, Dirflag375202Set flags0, Sectionparser375206 contentparser0);
  N_NIMCALL(Rstnode369011*, parsedirective_375225_3635346014)(Rstparser370500* p0, Dirflag375202Set flags0);
  N_NIMCALL(Rstnode369011*, newleaf_371177_3635346014)(Rstparser370500* p0);
  N_NIMCALL(void, parseline_372685_3635346014)(Rstparser370500* p0, Rstnode369011* father0);
  N_NIMCALL(void, parseinline_372328_3635346014)(Rstparser370500* p0, Rstnode369011* father0);
  N_NIMCALL(NIM_BOOL, isinlinemarkupstart_371286_3635346014)(Rstparser370500* p0, NimStringDesc* markup0);
  N_NIMCALL(void, parseuntil_372201_3635346014)(Rstparser370500* p0, Rstnode369011* father0, NimStringDesc* postfix0, NIM_BOOL interpretbackslash0);
  N_NIMCALL(NIM_BOOL, isinlinemarkupend_371248_3635346014)(Rstparser370500* p0, NimStringDesc* markup0);
  N_NIMCALL(void, parsebackslash_371896_3635346014)(Rstparser370500* p0, Rstnode369011* father0);
  N_NIMCALL(void, rstmessage_370729_3635346014)(Rstparser370500* p0, Msgkind370009 msgkind0, NimStringDesc* arg0, NI line0, NI col0);
  N_NIMCALL(Rstnode369011*, parsemarkdowncodeblock_372274_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parsepostfix_371538_3635346014)(Rstparser370500* p0, Rstnode369011* n0);
  N_NIMCALL(void, fixupembeddedref_371471_3635346014)(Rstnode369011* n0, Rstnode369011* a0, Rstnode369011* b0);
  N_NIMCALL(void, setref_371106_3635346014)(Rstparser370500* p0, NimStringDesc* key0, Rstnode369011* value0);
  N_NIMCALL(Rstnode369011*, parsesmiley_371607_3635346014)(Rstparser370500* p0);
  N_NIMCALL(NI, matchverbatim_371573_3635346014)(Rstparser370500* p0, NI start0, NimStringDesc* expr0);
  N_NIMCALL(NIM_BOOL, nsuContinuesWith)(NimStringDesc* s0, NimStringDesc* substr0, NI start0);
  N_NIMCALL(void, parseurl_371859_3635346014)(Rstparser370500* p0, Rstnode369011* father0);
  N_NIMCALL(NIM_BOOL, isurl_371801_3635346014)(Rstparser370500* p0, NI i0);
  static N_INLINE(NIM_BOOL, contains_371819_1689653243)(NimStringDesc** a0, NI a0Len0, NimStringDesc* item0);
  static N_INLINE(NI, find_371829_1689653243)(NimStringDesc** a0, NI a0Len0, NimStringDesc* item0);
  N_NIMCALL(Rstnode369011*, parsefields_372729_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parsefield_372702_3635346014)(Rstparser370500* p0);
  N_NIMCALL(NIM_BOOL, indfollows_375331_3635346014)(Rstparser370500* p0);
  N_NIMCALL(NimStringDesc*, findrelativefile_370719_3635346014)(Rstparser370500* p0, NimStringDesc* filename0);
  N_NIMCALL(NimStringDesc*, HEX2F_129265_2125978480)(NimStringDesc* head0, NimStringDesc* tail0);
  N_NIMCALL(void, nossplitFile)(NimStringDesc* path0, TY129506* Result);
  N_NIMCALL(NimStringDesc*, getfieldvalue_370068_3635346014)(Rstnode369011* n0, NimStringDesc* fieldname0);
  N_NIMCALL(NimStringDesc*, readfile_14868_1689653243)(NimStringDesc* filename0);
  N_NIMCALL(Rstnode369011*, dirimage_376001_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, dirfigure_376007_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, dirtitle_376013_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, dircontainer_375602_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, dircontents_376019_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, dirraw_376043_3635346014)(Rstparser370500* p0);
  N_NIMCALL(NI, nsuCmpIgnoreCase)(NimStringDesc* a0, NimStringDesc* b0);
  N_NIMCALL(void, dirrawaux_376032_3635346014)(Rstparser370500* p0, Rstnode369011** result0, Rstnodekind369005 kind0, Sectionparser375206 contentparser0);
  N_NIMCALL(Rstnode369011*, parsedirbody_375359_3635346014)(Rstparser370500* p0, Sectionparser375206 contentparser0);
  N_NIMCALL(Rstnode369011*, dircodeblock_375388_3635346014)(Rstparser370500* p0, NIM_BOOL nimextension0);
  N_NIMCALL(Rstnode369011*, dirindex_376025_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, getreferencename_371182_3635346014)(Rstparser370500* p0, NimStringDesc* endstr0);
  N_NIMCALL(Rstnode369011*, untileol_371208_3635346014)(Rstparser370500* p0);
  N_NIMCALL(void, expect_371234_3635346014)(Rstparser370500* p0, NimStringDesc* tok0);
  N_NIMCALL(void, setsub_371061_3635346014)(Rstparser370500* p0, NimStringDesc* key0, Rstnode369011* value0);
  N_NIMCALL(Rstnode369011*, parsecomment_372544_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parseenumlist_374883_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parsedefinitionlist_374807_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parsetransition_374546_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parseheadline_373728_3635346014)(Rstparser370500* p0);
  N_NIMCALL(void, parseuntilnewline_372691_3635346014)(Rstparser370500* p0, Rstnode369011* father0);
  N_NIMCALL(NI, getlevel_373533_3635346014)(NI* map0, NI* lvl0, NIM_CHAR c0);
  N_NIMCALL(Rstnode369011*, parseoverline_374596_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parsesimpletable_374261_3635346014)(Rstparser370500* p0);
  N_NIMCALL(void, getcolumns_374022_3635346014)(Rstparser370500* p0, TY370521** cols0);
  N_NIMCALL(NI, tokend_374018_3635346014)(Rstparser370500* p0);
  N_NIMCALL(Rstnode369011*, parseoptionlist_374722_3635346014)(Rstparser370500* p0);
  N_NIMCALL(void, parseparagraph_373677_3635346014)(Rstparser370500* p0, Rstnode369011* result0);
  N_NIMCALL(void, addifnotnil_369160_4150536388)(Rstnode369011* father0, Rstnode369011* son0);
  N_NIMCALL(Rstnodekind369005, sonkind_374949_3635346014)(Rstnode369011* father0, NI i0);
  STRING_LITERAL(T3635346014_2, "", 0);
  STRING_LITERAL(T3635346014_3, "\001\001", 2);
  static NIM_CONST char136Set T3635346014_4 = {
  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}
  ;
  NIM_CONST struct {
    TGenericSeq Sup;
    NI data[1];
  } T3635346014_20 = {{1, 1}, {((NI) 0)}};
  NIM_CONST TY370521* T3635346014_19 = ((TY370521*)&T3635346014_20);
  STRING_LITERAL(T3635346014_24, "cannot open \'$1\'", 16);
  STRING_LITERAL(T3635346014_25, "\'$1\' expected", 13);
  STRING_LITERAL(T3635346014_26, "grid table is not implemented", 29);
  STRING_LITERAL(T3635346014_27, "new section expected", 20);
  STRING_LITERAL(T3635346014_28, "general parse error", 19);
  STRING_LITERAL(T3635346014_29, "invalid directive: \'$1\'", 23);
  STRING_LITERAL(T3635346014_30, "redefinition of label \'$1\'", 26);
  STRING_LITERAL(T3635346014_31, "unknown substitution \'$1\'", 25);
  STRING_LITERAL(T3635346014_32, "language \'$1\' not supported", 27);
  STRING_LITERAL(T3635346014_33, "field \'$1\' not supported", 24);
  NIM_CONST TY370059 messages_370056_3635346014 = {((NimStringDesc*) &T3635346014_24),
  ((NimStringDesc*) &T3635346014_25),
  ((NimStringDesc*) &T3635346014_26),
  ((NimStringDesc*) &T3635346014_27),
  ((NimStringDesc*) &T3635346014_28),
  ((NimStringDesc*) &T3635346014_29),
  ((NimStringDesc*) &T3635346014_30),
  ((NimStringDesc*) &T3635346014_31),
  ((NimStringDesc*) &T3635346014_32),
  ((NimStringDesc*) &T3635346014_33)}
  ;
  STRING_LITERAL(T3635346014_34, "$1($2, $3) $4: $5", 17);
  STRING_LITERAL(T3635346014_39, "\012", 1);
  static NIM_CONST char136Set T3635346014_41 = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
  0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
  ;
  static NIM_CONST char136Set T3635346014_42 = {
  0x00, 0x02, 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(T3635346014_43, "#", 1);
  static NIM_CONST char136Set T3635346014_44 = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
  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(T3635346014_45, "ii", 2);
  STRING_LITERAL(T3635346014_46, " a", 2);
  STRING_LITERAL(T3635346014_47, "i", 1);
  STRING_LITERAL(T3635346014_48, "ai", 2);
  STRING_LITERAL(T3635346014_49, "::", 2);
  STRING_LITERAL(T3635346014_50, "+", 1);
  STRING_LITERAL(T3635346014_51, "*", 1);
  STRING_LITERAL(T3635346014_52, "-", 1);
  STRING_LITERAL(T3635346014_53, "|", 1);
  STRING_LITERAL(T3635346014_54, "..", 2);
  STRING_LITERAL(T3635346014_55, ":w:", 3);
  STRING_LITERAL(T3635346014_56, "(e) ", 4);
  STRING_LITERAL(T3635346014_57, "+a+", 3);
  STRING_LITERAL(T3635346014_58, "-w", 2);
  STRING_LITERAL(T3635346014_59, "--w", 3);
  STRING_LITERAL(T3635346014_60, "/w", 2);
  STRING_LITERAL(T3635346014_61, "//w", 3);
  STRING_LITERAL(T3635346014_62, "e) ", 3);
  STRING_LITERAL(T3635346014_63, "e. ", 3);
  STRING_LITERAL(T3635346014_64, "author", 6);
  STRING_LITERAL(T3635346014_65, "authors", 7);
  STRING_LITERAL(T3635346014_66, "code", 4);
  STRING_LITERAL(T3635346014_67, "code-block", 10);
  STRING_LITERAL(T3635346014_68, "container", 9);
  STRING_LITERAL(T3635346014_69, "contents", 8);
  STRING_LITERAL(T3635346014_70, "figure", 6);
  STRING_LITERAL(T3635346014_71, "image", 5);
  STRING_LITERAL(T3635346014_72, "include", 7);
  STRING_LITERAL(T3635346014_73, "index", 5);
  STRING_LITERAL(T3635346014_74, "raw", 3);
  STRING_LITERAL(T3635346014_75, "title", 5);
  NIM_CONST TY372627 Dirids_372625_3635346014 = {((NimStringDesc*) &T3635346014_2),
  ((NimStringDesc*) &T3635346014_64),
  ((NimStringDesc*) &T3635346014_65),
  ((NimStringDesc*) &T3635346014_66),
  ((NimStringDesc*) &T3635346014_67),
  ((NimStringDesc*) &T3635346014_68),
  ((NimStringDesc*) &T3635346014_69),
  ((NimStringDesc*) &T3635346014_70),
  ((NimStringDesc*) &T3635346014_71),
  ((NimStringDesc*) &T3635346014_72),
  ((NimStringDesc*) &T3635346014_73),
  ((NimStringDesc*) &T3635346014_74),
  ((NimStringDesc*) &T3635346014_75)}
  ;
  static NIM_CONST char136Set T3635346014_76 = {
  0x00, 0x00, 0x00, 0x00, 0x84, 0xA1, 0x00, 0x14,
  0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x08,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
  ;
  STRING_LITERAL(T3635346014_77, "\\", 1);
  STRING_LITERAL(T3635346014_78, "***", 3);
  static NIM_CONST char136Set T3635346014_79 = {
  0x00, 0x00, 0x00, 0x00, 0x86, 0xF2, 0x00, 0xCC,
  0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00, 0x20,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
  ;
  STRING_LITERAL(T3635346014_80, "``", 2);
  STRING_LITERAL(T3635346014_81, "\\\\", 2);
  STRING_LITERAL(T3635346014_82, " ", 1);
  STRING_LITERAL(T3635346014_83, "**", 2);
  STRING_LITERAL(T3635346014_84, "```", 3);
  STRING_LITERAL(T3635346014_85, "`", 1);
  STRING_LITERAL(T3635346014_86, "_", 1);
  STRING_LITERAL(T3635346014_87, "__", 2);
  STRING_LITERAL(T3635346014_88, ">", 1);
  STRING_LITERAL(T3635346014_89, "<", 1);
  STRING_LITERAL(T3635346014_90, "idx", 3);
  STRING_LITERAL(T3635346014_91, "literal", 7);
  STRING_LITERAL(T3635346014_92, "strong", 6);
  STRING_LITERAL(T3635346014_93, "emphasis", 8);
  STRING_LITERAL(T3635346014_94, "sub", 3);
  STRING_LITERAL(T3635346014_95, "subscript", 9);
  STRING_LITERAL(T3635346014_96, "sup", 3);
  STRING_LITERAL(T3635346014_97, "supscript", 9);
  STRING_LITERAL(T3635346014_98, ":D", 2);
  STRING_LITERAL(T3635346014_99, "icon_e_biggrin", 14);
  STRING_LITERAL(T3635346014_100, ":-D", 3);
  STRING_LITERAL(T3635346014_101, ":)", 2);
  STRING_LITERAL(T3635346014_102, "icon_e_smile", 12);
  STRING_LITERAL(T3635346014_103, ":-)", 3);
  STRING_LITERAL(T3635346014_104, ";)", 2);
  STRING_LITERAL(T3635346014_105, "icon_e_wink", 11);
  STRING_LITERAL(T3635346014_106, ";-)", 3);
  STRING_LITERAL(T3635346014_107, ":(", 2);
  STRING_LITERAL(T3635346014_108, "icon_e_sad", 10);
  STRING_LITERAL(T3635346014_109, ":-(", 3);
  STRING_LITERAL(T3635346014_110, ":o", 2);
  STRING_LITERAL(T3635346014_111, "icon_e_surprised", 16);
  STRING_LITERAL(T3635346014_112, ":-o", 3);
  STRING_LITERAL(T3635346014_113, ":shock:", 7);
  STRING_LITERAL(T3635346014_114, "icon_eek", 8);
  STRING_LITERAL(T3635346014_115, ":?", 2);
  STRING_LITERAL(T3635346014_116, "icon_e_confused", 15);
  STRING_LITERAL(T3635346014_117, ":-?", 3);
  STRING_LITERAL(T3635346014_118, ":-/", 3);
  STRING_LITERAL(T3635346014_119, "8-)", 3);
  STRING_LITERAL(T3635346014_120, "icon_cool", 9);
  STRING_LITERAL(T3635346014_121, ":lol:", 5);
  STRING_LITERAL(T3635346014_122, "icon_lol", 8);
  STRING_LITERAL(T3635346014_123, ":x", 2);
  STRING_LITERAL(T3635346014_124, "icon_mad", 8);
  STRING_LITERAL(T3635346014_125, ":-x", 3);
  STRING_LITERAL(T3635346014_126, ":P", 2);
  STRING_LITERAL(T3635346014_127, "icon_razz", 9);
  STRING_LITERAL(T3635346014_128, ":-P", 3);
  STRING_LITERAL(T3635346014_129, ":oops:", 6);
  STRING_LITERAL(T3635346014_130, "icon_redface", 12);
  STRING_LITERAL(T3635346014_131, ":cry:", 5);
  STRING_LITERAL(T3635346014_132, "icon_cry", 8);
  STRING_LITERAL(T3635346014_133, ":evil:", 6);
  STRING_LITERAL(T3635346014_134, "icon_evil", 9);
  STRING_LITERAL(T3635346014_135, ":twisted:", 9);
  STRING_LITERAL(T3635346014_136, "icon_twisted", 12);
  STRING_LITERAL(T3635346014_137, ":roll:", 6);
  STRING_LITERAL(T3635346014_138, "icon_rolleyes", 13);
  STRING_LITERAL(T3635346014_139, ":!:", 3);
  STRING_LITERAL(T3635346014_140, "icon_exclaim", 12);
  STRING_LITERAL(T3635346014_141, ":?:", 3);
  STRING_LITERAL(T3635346014_142, "icon_question", 13);
  STRING_LITERAL(T3635346014_143, ":idea:", 6);
  STRING_LITERAL(T3635346014_144, "icon_idea", 9);
  STRING_LITERAL(T3635346014_145, ":arrow:", 7);
  STRING_LITERAL(T3635346014_146, "icon_arrow", 10);
  STRING_LITERAL(T3635346014_147, ":|", 2);
  STRING_LITERAL(T3635346014_148, "icon_neutral", 12);
  STRING_LITERAL(T3635346014_149, ":-|", 3);
  STRING_LITERAL(T3635346014_150, ":mrgreen:", 9);
  STRING_LITERAL(T3635346014_151, "icon_mrgreen", 12);
  STRING_LITERAL(T3635346014_152, ":geek:", 6);
  STRING_LITERAL(T3635346014_153, "icon_e_geek", 11);
  STRING_LITERAL(T3635346014_154, ":ugeek:", 7);
  STRING_LITERAL(T3635346014_155, "icon_e_ugeek", 12);
  NIM_CONST TY370082 Smilies_370081_3635346014 = {{((NimStringDesc*) &T3635346014_98),
  ((NimStringDesc*) &T3635346014_99)}
  ,
  {((NimStringDesc*) &T3635346014_100),
  ((NimStringDesc*) &T3635346014_99)}
  ,
  {((NimStringDesc*) &T3635346014_101),
  ((NimStringDesc*) &T3635346014_102)}
  ,
  {((NimStringDesc*) &T3635346014_103),
  ((NimStringDesc*) &T3635346014_102)}
  ,
  {((NimStringDesc*) &T3635346014_104),
  ((NimStringDesc*) &T3635346014_105)}
  ,
  {((NimStringDesc*) &T3635346014_106),
  ((NimStringDesc*) &T3635346014_105)}
  ,
  {((NimStringDesc*) &T3635346014_107),
  ((NimStringDesc*) &T3635346014_108)}
  ,
  {((NimStringDesc*) &T3635346014_109),
  ((NimStringDesc*) &T3635346014_108)}
  ,
  {((NimStringDesc*) &T3635346014_110),
  ((NimStringDesc*) &T3635346014_111)}
  ,
  {((NimStringDesc*) &T3635346014_112),
  ((NimStringDesc*) &T3635346014_111)}
  ,
  {((NimStringDesc*) &T3635346014_113),
  ((NimStringDesc*) &T3635346014_114)}
  ,
  {((NimStringDesc*) &T3635346014_115),
  ((NimStringDesc*) &T3635346014_116)}
  ,
  {((NimStringDesc*) &T3635346014_117),
  ((NimStringDesc*) &T3635346014_116)}
  ,
  {((NimStringDesc*) &T3635346014_118),
  ((NimStringDesc*) &T3635346014_116)}
  ,
  {((NimStringDesc*) &T3635346014_119),
  ((NimStringDesc*) &T3635346014_120)}
  ,
  {((NimStringDesc*) &T3635346014_121),
  ((NimStringDesc*) &T3635346014_122)}
  ,
  {((NimStringDesc*) &T3635346014_123),
  ((NimStringDesc*) &T3635346014_124)}
  ,
  {((NimStringDesc*) &T3635346014_125),
  ((NimStringDesc*) &T3635346014_124)}
  ,
  {((NimStringDesc*) &T3635346014_126),
  ((NimStringDesc*) &T3635346014_127)}
  ,
  {((NimStringDesc*) &T3635346014_128),
  ((NimStringDesc*) &T3635346014_127)}
  ,
  {((NimStringDesc*) &T3635346014_129),
  ((NimStringDesc*) &T3635346014_130)}
  ,
  {((NimStringDesc*) &T3635346014_131),
  ((NimStringDesc*) &T3635346014_132)}
  ,
  {((NimStringDesc*) &T3635346014_133),
  ((NimStringDesc*) &T3635346014_134)}
  ,
  {((NimStringDesc*) &T3635346014_135),
  ((NimStringDesc*) &T3635346014_136)}
  ,
  {((NimStringDesc*) &T3635346014_137),
  ((NimStringDesc*) &T3635346014_138)}
  ,
  {((NimStringDesc*) &T3635346014_139),
  ((NimStringDesc*) &T3635346014_140)}
  ,
  {((NimStringDesc*) &T3635346014_141),
  ((NimStringDesc*) &T3635346014_142)}
  ,
  {((NimStringDesc*) &T3635346014_143),
  ((NimStringDesc*) &T3635346014_144)}
  ,
  {((NimStringDesc*) &T3635346014_145),
  ((NimStringDesc*) &T3635346014_146)}
  ,
  {((NimStringDesc*) &T3635346014_147),
  ((NimStringDesc*) &T3635346014_148)}
  ,
  {((NimStringDesc*) &T3635346014_149),
  ((NimStringDesc*) &T3635346014_148)}
  ,
  {((NimStringDesc*) &T3635346014_150),
  ((NimStringDesc*) &T3635346014_151)}
  ,
  {((NimStringDesc*) &T3635346014_152),
  ((NimStringDesc*) &T3635346014_153)}
  ,
  {((NimStringDesc*) &T3635346014_154),
  ((NimStringDesc*) &T3635346014_155)}
  }
  ;
  STRING_LITERAL(T3635346014_156, ":", 1);
  STRING_LITERAL(T3635346014_157, "//", 2);
  STRING_LITERAL(T3635346014_159, "http", 4);
  STRING_LITERAL(T3635346014_160, "https", 5);
  STRING_LITERAL(T3635346014_161, "ftp", 3);
  STRING_LITERAL(T3635346014_162, "telnet", 6);
  STRING_LITERAL(T3635346014_163, "file", 4);
  NIM_CONST TY370610 T3635346014_158 = {((NimStringDesc*) &T3635346014_159),
  ((NimStringDesc*) &T3635346014_160),
  ((NimStringDesc*) &T3635346014_161),
  ((NimStringDesc*) &T3635346014_162),
  ((NimStringDesc*) &T3635346014_163)}
  ;
  STRING_LITERAL(T3635346014_164, "html", 4);
  STRING_LITERAL(T3635346014_165, "latex", 5);
  STRING_LITERAL(T3635346014_166, "default-language", 16);
  STRING_LITERAL(T3635346014_167, "Nim", 3);
  STRING_LITERAL(T3635346014_168, " _", 2);
  STRING_LITERAL(T3635346014_169, " |", 2);
  STRING_LITERAL(T3635346014_170, "replace", 7);
  STRING_LITERAL(T3635346014_171, " [", 2);
  STRING_LITERAL(T3635346014_172, "]", 1);
  NIM_CONST TY195140 wildcards_374888_3635346014 = {((NimStringDesc*) &T3635346014_56),
  ((NimStringDesc*) &T3635346014_62),
  ((NimStringDesc*) &T3635346014_63)}
  ;
  NIM_CONST TY374895 wildpos_374893_3635346014 = {((NI) 1),
  ((NI) 0),
  ((NI) 0)}
  ;
  extern TNimType NTI3608; /* RootObj */
  TNimType NTI370500; /* RstParser */
  extern TNimType NTI104; /* int */
  TNimType NTI370121; /* Token */
  TNimType NTI370119; /* TokType */
  extern TNimType NTI138; /* string */
  TNimType NTI370123; /* TokenSeq */
  TNimType NTI370496; /* SharedState */
  TNimType NTI370003; /* RstParseOption */
  TNimType NTI370005; /* RstParseOptions */
  TNimType NTI370494; /* Substitution */
  extern TNimType NTI369007; /* PRstNode */
  TNimType NTI370510; /* seq[Substitution] */
  extern TNimType NTI109518; /* SkipTable */
  TNimType NTI370011; /* MsgHandler */
  TNimType NTI370013; /* FindFileHandler */
  TNimType NTI370498; /* PSharedState */
  TNimType NTI370521; /* seq[int] */
  extern TNimType NTI130; /* bool */
  extern Gcheap49818 gch_49858_1689653243;
  TNimType NTI370009; /* MsgKind */
  TNimType NTI370007; /* MsgClass */
  extern TNimType NTI3646; /* ValueError */
  TNimType NTI370502; /* EParseError */
  TNimType NTI370633; /* ref EParseError */
  TNimType NTI370125; /* Lexer */
  extern TNimType NTI140; /* cstring */
  extern TNimType NTI136002; /* seq[string] */
  
  N_NIMCALL(void, rstnodetorefnameaux_370923_3635346014)(Rstnode369011* n0, NimStringDesc** r0, NIM_BOOL* b0) {
  	{
  		if (!((*n0).kind == ((Rstnodekind369005) 64))) goto LA3;
  		{
  			NI i_370950_3635346014;
  			NI HEX3Atmp_370992_3635346014;
  			NI res_370995_3635346014;
  			i_370950_3635346014 = (NI)0;
  			HEX3Atmp_370992_3635346014 = (NI)0;
  			HEX3Atmp_370992_3635346014 = (NI)(((*n0).text ? (*n0).text->Sup.len : 0) - ((NI) 1));
  			res_370995_3635346014 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_370995_3635346014 <= HEX3Atmp_370992_3635346014)) goto LA7;
  					i_370950_3635346014 = res_370995_3635346014;
  					switch (((NU8)((*n0).text->data[i_370950_3635346014]))) {
  					case 48 ... 57:
  					{
  						{
  							if (!(*b0)) goto LA11;
  							(*r0) = addChar((*r0), 45);
  							(*b0) = NIM_FALSE;
  						}
  						LA11: ;
  						{
  							if (!(((*r0) ? (*r0)->Sup.len : 0) == ((NI) 0))) goto LA15;
  							(*r0) = addChar((*r0), 90);
  						}
  						LA15: ;
  						(*r0) = addChar((*r0), (*n0).text->data[i_370950_3635346014]);
  					}
  					break;
  					case 97 ... 122:
  					{
  						{
  							if (!(*b0)) goto LA20;
  							(*r0) = addChar((*r0), 45);
  							(*b0) = NIM_FALSE;
  						}
  						LA20: ;
  						(*r0) = addChar((*r0), (*n0).text->data[i_370950_3635346014]);
  					}
  					break;
  					case 65 ... 90:
  					{
  						{
  							if (!(*b0)) goto LA25;
  							(*r0) = addChar((*r0), 45);
  							(*b0) = NIM_FALSE;
  						}
  						LA25: ;
  						(*r0) = addChar((*r0), ((NIM_CHAR) (((NI) ((NI)(((NI) ((NI)(((NI) (((NU8)((*n0).text->data[i_370950_3635346014])))) - ((NI) 65)))) + ((NI) 97)))))));
  					}
  					break;
  					default:
  					{
  						{
  							if (!(((NI) 0) < ((*r0) ? (*r0)->Sup.len : 0))) goto LA30;
  							(*b0) = NIM_TRUE;
  						}
  						LA30: ;
  					}
  					break;
  					}
  					res_370995_3635346014 += ((NI) 1);
  				} LA7: ;
  			}
  		}
  	}
  	goto LA1;
  	LA3: ;
  	{
  		{
  			NI i_370990_3635346014;
  			NI HEX3Atmp_371000_3635346014;
  			NI LOC34;
  			NI res_371003_3635346014;
  			i_370990_3635346014 = (NI)0;
  			HEX3Atmp_371000_3635346014 = (NI)0;
  			LOC34 = (NI)0;
  			LOC34 = len_369089_4150536388(n0);
  			HEX3Atmp_371000_3635346014 = (NI)(LOC34 - ((NI) 1));
  			res_371003_3635346014 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_371003_3635346014 <= HEX3Atmp_371000_3635346014)) goto LA36;
  					i_370990_3635346014 = res_371003_3635346014;
  					rstnodetorefnameaux_370923_3635346014((*n0).sons->data[i_370990_3635346014], r0, b0);
  					res_371003_3635346014 += ((NI) 1);
  				} LA36: ;
  			}
  		}
  	}
  	LA1: ;
  }
  
  N_NIMCALL(NimStringDesc*, rstnodetorefname_370062_3635346014)(Rstnode369011* n0) {
  	NimStringDesc* result0;
  	NIM_BOOL b0;
  	result0 = (NimStringDesc*)0;
  	result0 = copyString(((NimStringDesc*) &T3635346014_2));
  	b0 = NIM_FALSE;
  	rstnodetorefnameaux_370923_3635346014(n0, (&result0), (&b0));
  	return result0;
  }
  
  static N_INLINE(void, copymem_7485_1689653243)(void* dest0, void* source0, NI size0) {
  	void* LOC1;
  	LOC1 = (void*)0;
  	LOC1 = memcpy(dest0, source0, ((size_t) (size0)));
  }
  
  static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0) {
  	copymem_7485_1689653243(((void*) ((&(*dest0).data[((*dest0).Sup.len)- 0]))), ((void*) ((*src0).data)), ((NI) ((NI)((*src0).Sup.len + ((NI) 1)))));
  	(*dest0).Sup.len += (*src0).Sup.len;
  }
  
  N_NIMCALL(void, addnodesaux_370884_3635346014)(Rstnode369011* n0, NimStringDesc** result0) {
  	{
  		if (!((*n0).kind == ((Rstnodekind369005) 64))) goto LA3;
  		(*result0) = resizeString((*result0), (*n0).text->Sup.len + 0);
  appendString((*result0), (*n0).text);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		{
  			NI i_370909_3635346014;
  			NI HEX3Atmp_370911_3635346014;
  			NI LOC7;
  			NI res_370914_3635346014;
  			i_370909_3635346014 = (NI)0;
  			HEX3Atmp_370911_3635346014 = (NI)0;
  			LOC7 = (NI)0;
  			LOC7 = len_369089_4150536388(n0);
  			HEX3Atmp_370911_3635346014 = (NI)(LOC7 - ((NI) 1));
  			res_370914_3635346014 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_370914_3635346014 <= HEX3Atmp_370911_3635346014)) goto LA9;
  					i_370909_3635346014 = res_370914_3635346014;
  					addnodesaux_370884_3635346014((*n0).sons->data[i_370909_3635346014], result0);
  					res_370914_3635346014 += ((NI) 1);
  				} LA9: ;
  			}
  		}
  	}
  	LA1: ;
  }
  
  N_NIMCALL(NimStringDesc*, addnodes_370065_3635346014)(Rstnode369011* n0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	result0 = copyString(((NimStringDesc*) &T3635346014_2));
  	addnodesaux_370884_3635346014(n0, (&result0));
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, getargument_370072_3635346014)(Rstnode369011* n0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	{
  		if (!((*n0).sons->data[((NI) 0)] == NIM_NIL)) goto LA3;
  		result0 = copyString(((NimStringDesc*) &T3635346014_2));
  	}
  	goto LA1;
  	LA3: ;
  	{
  		result0 = addnodes_370065_3635346014((*n0).sons->data[((NI) 0)]);
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, getfieldvalue_370068_3635346014)(Rstnode369011* n0, NimStringDesc* fieldname0) {
  	NimStringDesc* result0;
  {	result0 = (NimStringDesc*)0;
  	result0 = copyString(((NimStringDesc*) &T3635346014_2));
  	{
  		if (!((*n0).sons->data[((NI) 1)] == NIM_NIL)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!!(((*(*n0).sons->data[((NI) 1)]).kind == ((Rstnodekind369005) 13)))) goto LA7;
  		goto BeforeRet;
  	}
  	LA7: ;
  	{
  		NI i_373438_3635346014;
  		NI HEX3Atmp_373441_3635346014;
  		NI LOC10;
  		NI res_373444_3635346014;
  		i_373438_3635346014 = (NI)0;
  		HEX3Atmp_373441_3635346014 = (NI)0;
  		LOC10 = (NI)0;
  		LOC10 = len_369089_4150536388((*n0).sons->data[((NI) 1)]);
  		HEX3Atmp_373441_3635346014 = (NI)(LOC10 - ((NI) 1));
  		res_373444_3635346014 = ((NI) 0);
  		{
  			while (1) {
  				Rstnode369011* f0;
  				if (!(res_373444_3635346014 <= HEX3Atmp_373441_3635346014)) goto LA12;
  				i_373438_3635346014 = res_373444_3635346014;
  				f0 = (*(*n0).sons->data[((NI) 1)]).sons->data[i_373438_3635346014];
  				{
  					NimStringDesc* LOC15;
  					NI LOC16;
  					LOC15 = (NimStringDesc*)0;
  					LOC15 = addnodes_370065_3635346014((*f0).sons->data[((NI) 0)]);
  					LOC16 = (NI)0;
  					LOC16 = nsuCmpIgnoreStyle(LOC15, fieldname0);
  					if (!(LOC16 == ((NI) 0))) goto LA17;
  					result0 = addnodes_370065_3635346014((*f0).sons->data[((NI) 1)]);
  					{
  						if (!((result0) && (result0)->Sup.len == 0)) goto LA21;
  						result0 = copyString(((NimStringDesc*) &T3635346014_3));
  					}
  					LA21: ;
  					goto BeforeRet;
  				}
  				LA17: ;
  				res_373444_3635346014 += ((NI) 1);
  			} LA12: ;
  		}
  	}
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, getfieldvalue_372773_3635346014)(Rstnode369011* n0) {
  	NimStringDesc* result0;
  	NimStringDesc* LOC1;
  	result0 = (NimStringDesc*)0;
  	LOC1 = (NimStringDesc*)0;
  	LOC1 = addnodes_370065_3635346014((*n0).sons->data[((NI) 1)]);
  	result0 = nsuStrip(LOC1, NIM_TRUE, NIM_TRUE, T3635346014_4);
  	return result0;
  }
  N_NIMCALL(void, T3635346014_10)(void* p, NI op) {
  	Tokenseq370123* a;
  	NI LOC1;
  	a = (Tokenseq370123*)p;
  	LOC1 = (NI)0;
  	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
  	nimGCvisit((void*)a->data[LOC1].symbol, op);
  	}
  }
  N_NIMCALL(void, T3635346014_16)(void* p, NI op) {
  	TY370510* a;
  	NI LOC1;
  	a = (TY370510*)p;
  	LOC1 = (NI)0;
  	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
  	nimGCvisit((void*)a->data[LOC1].key, op);
  	nimGCvisit((void*)a->data[LOC1].value, op);
  	}
  }
  N_NIMCALL(void, T3635346014_17)(void* p, NI op) {
  	Sharedstate370496* a;
  	NI LOC1;
  	NI LOC2;
  	a = (Sharedstate370496*)p;
  	nimGCvisit((void*)(*a).subs, op);
  	nimGCvisit((void*)(*a).refs, op);
  	LOC1 = (NI)0;
  	for (LOC1 = 0; LOC1 < 256; LOC1++) {
  	}
  	LOC2 = (NI)0;
  	for (LOC2 = 0; LOC2 < 256; LOC2++) {
  	}
  }
  N_NIMCALL(void, T3635346014_18)(void* p, NI op) {
  	TY370521* a;
  	NI LOC1;
  	a = (TY370521*)p;
  	LOC1 = (NI)0;
  	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
  	}
  }
  
  N_NIMCALL(void, initparser_370850_3635346014)(Rstparser370500* p0, Sharedstate370496* sharedstate0) {
  	genericSeqAssign((&(*p0).indentstack), T3635346014_19, (&NTI370521));
  	unsureAsgnRef((void**) (&(*p0).tok), (Tokenseq370123*) newSeq((&NTI370123), 0));
  	(*p0).idx = ((NI) 0);
  	unsureAsgnRef((void**) (&(*p0).filename), copyString(((NimStringDesc*) &T3635346014_2)));
  	(*p0).hastoc = NIM_FALSE;
  	(*p0).col = ((NI) 0);
  	(*p0).line = ((NI) 1);
  	unsureAsgnRef((void**) (&(*p0).s), sharedstate0);
  }
  
  static N_INLINE(Cell47304*, usrtocell_51440_1689653243)(void* usr0) {
  	Cell47304* result0;
  	result0 = (Cell47304*)0;
  	result0 = ((Cell47304*) ((NI)((NU32)(((NI) (usr0))) - (NU32)(((NI)sizeof(Cell47304))))));
  	return result0;
  }
  
  static N_INLINE(void, rtladdzct_52601_1689653243)(Cell47304* c0) {
  	addzct_51417_1689653243((&gch_49858_1689653243.zct), c0);
  }
  
  static N_INLINE(void, nimGCunrefNoCycle)(void* p0) {
  	Cell47304* c0;
  	c0 = usrtocell_51440_1689653243(p0);
  	{
  		(*c0).refcount -= ((NI) 8);
  		if (!((NU32)((*c0).refcount) < (NU32)(((NI) 8)))) goto LA3;
  		rtladdzct_52601_1689653243(c0);
  	}
  	LA3: ;
  }
  
  N_NIMCALL(Msgclass370007, whichmsgclass_370545_3635346014)(Msgkind370009 k0) {
  	Msgclass370007 result0;
  	result0 = (Msgclass370007)0;
  	switch (((NU8)(reprEnum((NI)k0, (&NTI370009))->data[((NI) 1)]))) {
  	case 101:
  	case 69:
  	{
  		result0 = ((Msgclass370007) 2);
  	}
  	break;
  	case 119:
  	case 87:
  	{
  		result0 = ((Msgclass370007) 1);
  	}
  	break;
  	case 104:
  	case 72:
  	{
  		result0 = ((Msgclass370007) 0);
  	}
  	break;
  	default:
  	{
  	}
  	break;
  	}
  	return result0;
  }
  N_NIMCALL(void, T3635346014_38)(void* p, NI op) {
  	Eparseerror370502* a;
  	a = (Eparseerror370502*)p;
  	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
  	nimGCvisit((void*)(*a).Sup.Sup.message, op);
  	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
  }
  
  static N_INLINE(void, writeline_172405_1689653243)(FILE* f0, NimStringDesc** x0, NI x0Len0) {
  	{
  		NimStringDesc* i_172420_1689653243;
  		NI i_172428_1689653243;
  		i_172420_1689653243 = (NimStringDesc*)0;
  		i_172428_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(i_172428_1689653243 < x0Len0)) goto LA3;
  				i_172420_1689653243 = x0[i_172428_1689653243];
  				write_14891_1689653243(f0, i_172420_1689653243);
  				i_172428_1689653243 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	write_14891_1689653243(f0, ((NimStringDesc*) &T3635346014_39));
  }
  
  N_NIMCALL(void, defaultmsghandler_370601_3635346014)(NimStringDesc* filename0, NI line0, NI col0, Msgkind370009 msgkind0, NimStringDesc* arg0) {
  	Msgclass370007 mc0;
  	NimStringDesc* a0;
  	NimStringDesc* message0;
  	TY370610 LOC1;
  	mc0 = whichmsgclass_370545_3635346014(msgkind0);
  	a0 = nsuFormatSingleElem(messages_370056_3635346014[(msgkind0)- 0], arg0);
  	memset((void*)LOC1, 0, sizeof(LOC1));
  	LOC1[0] = copyString(filename0);
  	LOC1[1] = nimIntToStr(line0);
  	LOC1[2] = nimIntToStr(col0);
  	LOC1[3] = copyString(reprEnum((NI)mc0, (&NTI370007)));
  	LOC1[4] = copyString(a0);
  	message0 = nsuFormatOpenArray(((NimStringDesc*) &T3635346014_34), LOC1, 5);
  	{
  		Eparseerror370502* e_370632_3635346014;
  		NimStringDesc* LOC6;
  		if (!(mc0 == ((Msgclass370007) 2))) goto LA4;
  		e_370632_3635346014 = (Eparseerror370502*)0;
  		e_370632_3635346014 = (Eparseerror370502*) newObj((&NTI370633), sizeof(Eparseerror370502));
  		(*e_370632_3635346014).Sup.Sup.Sup.m_type = (&NTI370502);
  		LOC6 = (NimStringDesc*)0;
  		LOC6 = (*e_370632_3635346014).Sup.Sup.message; (*e_370632_3635346014).Sup.Sup.message = copyStringRC1(message0);
  		if (LOC6) nimGCunrefNoCycle(LOC6);
  		raiseException((Exception*)e_370632_3635346014, "EParseError");
  	}
  	goto LA2;
  	LA4: ;
  	{
  		TY194732 LOC8;
  		memset((void*)LOC8, 0, sizeof(LOC8));
  		LOC8[0] = copyString(message0);
  		writeline_172405_1689653243(stdout, LOC8, 1);
  	}
  	LA2: ;
  }
  
  N_NIMCALL(NimStringDesc*, defaultfindfile_370655_3635346014)(NimStringDesc* filename0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = nosexistsFile(filename0);
  		if (!LOC3) goto LA4;
  		result0 = copyString(filename0);
  	}
  	goto LA1;
  	LA4: ;
  	{
  		result0 = copyString(((NimStringDesc*) &T3635346014_2));
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(Sharedstate370496*, newsharedstate_370659_3635346014)(Rstparseoption370003Set options0, Findfilehandler370013 findfile0, Msghandler370011 msghandler0) {
  	Sharedstate370496* result0;
  	result0 = (Sharedstate370496*)0;
  	result0 = (Sharedstate370496*) newObj((&NTI370498), sizeof(Sharedstate370496));
  	if ((*result0).subs) nimGCunrefNoCycle((*result0).subs);
  	(*result0).subs = (TY370510*) newSeqRC1((&NTI370510), 0);
  	if ((*result0).refs) nimGCunrefNoCycle((*result0).refs);
  	(*result0).refs = (TY370510*) newSeqRC1((&NTI370510), 0);
  	(*result0).options = options0;
  	{
  		if (!!(msghandler0 == 0)) goto LA3;
  		(*result0).msghandler = msghandler0;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		(*result0).msghandler = defaultmsghandler_370601_3635346014;
  	}
  	LA1: ;
  	{
  		if (!!(findfile0 == 0)) goto LA8;
  		(*result0).findfile = findfile0;
  	}
  	goto LA6;
  	LA8: ;
  	{
  		(*result0).findfile = defaultfindfile_370655_3635346014;
  	}
  	LA6: ;
  	return result0;
  }
  
  N_NIMCALL(void, getthing_370153_3635346014)(Lexer370125* L0, Token370121* tok0, char136Set s0) {
  	NI pos0;
  	(*tok0).kind = ((Toktype370119) 3);
  	(*tok0).line = (*L0).line;
  	(*tok0).col = (*L0).col;
  	pos0 = (*L0).bufpos;
  	{
  		while (1) {
  			(*tok0).symbol = addChar((*tok0).symbol, (*L0).buf[pos0]);
  			pos0 += ((NI) 1);
  			{
  				if (!!(((s0[(NU)(((NU8)((*L0).buf[pos0])))>>3] &(1U<<((NU)(((NU8)((*L0).buf[pos0])))&7U)))!=0))) goto LA5;
  				goto LA1;
  			}
  			LA5: ;
  		}
  	} LA1: ;
  	(*L0).col += (NI)(pos0 - (*L0).bufpos);
  	(*L0).bufpos = pos0;
  }
  
  N_NIMCALL(NI, getindentaux_370218_3635346014)(Lexer370125* L0, NI start0) {
  	NI result0;
  	NI pos0;
  	NCSTRING buf0;
  	result0 = (NI)0;
  	pos0 = start0;
  	buf0 = (*L0).buf;
  	{
  		if (!((NU8)(buf0[pos0]) == (NU8)(13))) goto LA3;
  		{
  			if (!((NU8)(buf0[(NI)(pos0 + ((NI) 1))]) == (NU8)(10))) goto LA7;
  			pos0 += ((NI) 2);
  		}
  		goto LA5;
  		LA7: ;
  		{
  			pos0 += ((NI) 1);
  		}
  		LA5: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		if (!((NU8)(buf0[pos0]) == (NU8)(10))) goto LA11;
  		pos0 += ((NI) 1);
  	}
  	goto LA1;
  	LA11: ;
  	LA1: ;
  	{
  		if (!(*L0).skippounds) goto LA15;
  		{
  			if (!((NU8)(buf0[pos0]) == (NU8)(35))) goto LA19;
  			pos0 += ((NI) 1);
  		}
  		LA19: ;
  		{
  			if (!((NU8)(buf0[pos0]) == (NU8)(35))) goto LA23;
  			pos0 += ((NI) 1);
  		}
  		LA23: ;
  	}
  	LA15: ;
  	{
  		while (1) {
  			switch (((NU8)(buf0[pos0]))) {
  			case 32:
  			case 11:
  			case 12:
  			{
  				pos0 += ((NI) 1);
  				result0 += ((NI) 1);
  			}
  			break;
  			case 9:
  			{
  				pos0 += ((NI) 1);
  				result0 = (NI)((NI)(result0 - ((NI) ((NI)(result0 % ((NI) 8))))) + ((NI) 8));
  			}
  			break;
  			default:
  			{
  				goto LA25;
  			}
  			break;
  			}
  		}
  	} LA25: ;
  	{
  		if (!((NU8)(buf0[pos0]) == (NU8)(0))) goto LA32;
  		result0 = ((NI) 0);
  	}
  	goto LA30;
  	LA32: ;
  	{
  		NIM_BOOL LOC35;
  		LOC35 = (NIM_BOOL)0;
  		LOC35 = ((NU8)(buf0[pos0]) == (NU8)(10));
  		if (LOC35) goto LA36;
  		LOC35 = ((NU8)(buf0[pos0]) == (NU8)(13));
  		LA36: ;
  		if (!LOC35) goto LA37;
  		result0 = getindentaux_370218_3635346014(L0, pos0);
  	}
  	goto LA30;
  	LA37: ;
  	LA30: ;
  	(*L0).bufpos = pos0;
  	return result0;
  }
  
  N_NIMCALL(void, getindent_370300_3635346014)(Lexer370125* L0, Token370121* tok0) {
  	NimStringDesc* LOC1;
  	NimStringDesc* LOC2;
  	(*tok0).col = ((NI) 0);
  	(*tok0).kind = ((Toktype370119) 1);
  	(*tok0).ival = getindentaux_370218_3635346014(L0, (*L0).bufpos);
  	(*L0).line += ((NI) 1);
  	(*tok0).line = (*L0).line;
  	(*L0).col = (*tok0).ival;
  	(*tok0).ival = (((NI)((*tok0).ival - (*L0).baseindent) >= ((NI) 0)) ? (NI)((*tok0).ival - (*L0).baseindent) : ((NI) 0));
  	LOC1 = (NimStringDesc*)0;
  	LOC2 = (NimStringDesc*)0;
  	LOC2 = nsuRepeatChar(32, ((NI) ((*tok0).ival)));
  	LOC1 = rawNewString(LOC2->Sup.len + 1);
  appendString(LOC1, ((NimStringDesc*) &T3635346014_39));
  appendString(LOC1, LOC2);
  	unsureAsgnRef((void**) (&(*tok0).symbol), LOC1);
  }
  
  N_NIMCALL(void, getadornment_370191_3635346014)(Lexer370125* L0, Token370121* tok0) {
  	NI pos0;
  	NIM_CHAR c0;
  	(*tok0).kind = ((Toktype370119) 4);
  	(*tok0).line = (*L0).line;
  	(*tok0).col = (*L0).col;
  	pos0 = (*L0).bufpos;
  	c0 = (*L0).buf[pos0];
  	{
  		while (1) {
  			(*tok0).symbol = addChar((*tok0).symbol, (*L0).buf[pos0]);
  			pos0 += ((NI) 1);
  			{
  				if (!!(((NU8)((*L0).buf[pos0]) == (NU8)(c0)))) goto LA5;
  				goto LA1;
  			}
  			LA5: ;
  		}
  	} LA1: ;
  	(*L0).col += (NI)(pos0 - (*L0).bufpos);
  	(*L0).bufpos = pos0;
  }
  
  N_NIMCALL(void, rawgettok_370319_3635346014)(Lexer370125* L0, Token370121* tok0) {
  	NIM_CHAR c0;
  	unsureAsgnRef((void**) (&(*tok0).symbol), copyString(((NimStringDesc*) &T3635346014_2)));
  	(*tok0).ival = ((NI) 0);
  	c0 = (*L0).buf[(*L0).bufpos];
  	switch (((NU8)(c0))) {
  	case 97 ... 122:
  	case 65 ... 90:
  	case 128 ... 255:
  	case 48 ... 57:
  	{
  		getthing_370153_3635346014(L0, tok0, T3635346014_41);
  	}
  	break;
  	case 32:
  	case 9:
  	case 11:
  	case 12:
  	{
  		getthing_370153_3635346014(L0, tok0, T3635346014_42);
  		(*tok0).kind = ((Toktype370119) 2);
  		{
  			if (!(((NU8)((*L0).buf[(*L0).bufpos])) == ((NU8)(13)) || ((NU8)((*L0).buf[(*L0).bufpos])) == ((NU8)(10)))) goto LA5;
  			rawgettok_370319_3635346014(L0, tok0);
  		}
  		LA5: ;
  	}
  	break;
  	case 13:
  	case 10:
  	{
  		getindent_370300_3635346014(L0, tok0);
  	}
  	break;
  	case 33:
  	case 34:
  	case 35:
  	case 36:
  	case 37:
  	case 38:
  	case 39:
  	case 40:
  	case 41:
  	case 42:
  	case 43:
  	case 44:
  	case 45:
  	case 46:
  	case 47:
  	case 58:
  	case 59:
  	case 60:
  	case 61:
  	case 62:
  	case 63:
  	case 64:
  	case 91:
  	case 92:
  	case 93:
  	case 94:
  	case 95:
  	case 96:
  	case 123:
  	case 124:
  	case 125:
  	case 126:
  	{
  		getadornment_370191_3635346014(L0, tok0);
  		{
  			if (!(((*tok0).symbol ? (*tok0).symbol->Sup.len : 0) <= ((NI) 3))) goto LA11;
  			(*tok0).kind = ((Toktype370119) 5);
  		}
  		LA11: ;
  	}
  	break;
  	default:
  	{
  		(*tok0).line = (*L0).line;
  		(*tok0).col = (*L0).col;
  		{
  			if (!((NU8)(c0) == (NU8)(0))) goto LA16;
  			(*tok0).kind = ((Toktype370119) 0);
  		}
  		goto LA14;
  		LA16: ;
  		{
  			(*tok0).kind = ((Toktype370119) 6);
  			(*tok0).symbol = addChar((*tok0).symbol, c0);
  			(*L0).bufpos += ((NI) 1);
  			(*L0).col += ((NI) 1);
  		}
  		LA14: ;
  	}
  	break;
  	}
  	(*tok0).col = (((NI)((*tok0).col - (*L0).baseindent) >= ((NI) 0)) ? (NI)((*tok0).col - (*L0).baseindent) : ((NI) 0));
  }
  
  N_NIMCALL(NI, gettokens_370360_3635346014)(NimStringDesc* buffer0, NIM_BOOL skippounds0, Tokenseq370123** tokens0) {
  	NI result0;
  	Lexer370125 L0;
  	NI length0;
  	result0 = (NI)0;
  	memset((void*)(&L0), 0, sizeof(L0));
  	L0.Sup.m_type = (&NTI370125);
  	length0 = ((*tokens0) ? (*tokens0)->Sup.len : 0);
  	L0.buf = buffer0->data;
  	L0.line = ((NI) 0);
  	{
  		NIM_BOOL LOC3;
  		NIM_BOOL LOC4;
  		LOC3 = (NIM_BOOL)0;
  		LOC4 = (NIM_BOOL)0;
  		LOC4 = ((NU8)(L0.buf[((NI) 0)]) == (NU8)(239));
  		if (!(LOC4)) goto LA5;
  		LOC4 = ((NU8)(L0.buf[((NI) 1)]) == (NU8)(187));
  		LA5: ;
  		LOC3 = LOC4;
  		if (!(LOC3)) goto LA6;
  		LOC3 = ((NU8)(L0.buf[((NI) 2)]) == (NU8)(191));
  		LA6: ;
  		if (!LOC3) goto LA7;
  		L0.bufpos += ((NI) 3);
  	}
  	LA7: ;
  	L0.skippounds = skippounds0;
  	{
  		if (!skippounds0) goto LA11;
  		{
  			if (!((NU8)(L0.buf[L0.bufpos]) == (NU8)(35))) goto LA15;
  			L0.bufpos += ((NI) 1);
  			result0 += ((NI) 1);
  		}
  		LA15: ;
  		{
  			if (!((NU8)(L0.buf[L0.bufpos]) == (NU8)(35))) goto LA19;
  			L0.bufpos += ((NI) 1);
  			result0 += ((NI) 1);
  		}
  		LA19: ;
  		L0.baseindent = ((NI) 0);
  		{
  			while (1) {
  				if (!((NU8)(L0.buf[L0.bufpos]) == (NU8)(32))) goto LA22;
  				L0.bufpos += ((NI) 1);
  				L0.baseindent += ((NI) 1);
  				result0 += ((NI) 1);
  			} LA22: ;
  		}
  	}
  	LA11: ;
  	{
  		while (1) {
  			length0 += ((NI) 1);
  			(*tokens0) = (Tokenseq370123*) setLengthSeq(&((*tokens0))->Sup, sizeof(Token370121), ((NI) (length0)));
  			rawgettok_370319_3635346014((&L0), (&(*tokens0)->data[(NI)(length0 - ((NI) 1))]));
  			{
  				if (!((*tokens0)->data[(NI)(length0 - ((NI) 1))].kind == ((Toktype370119) 0))) goto LA27;
  				goto LA23;
  			}
  			LA27: ;
  		}
  	} LA23: ;
  	{
  		if (!((*tokens0)->data[((NI) 0)].kind == ((Toktype370119) 2))) goto LA31;
  		(*tokens0)->data[((NI) 0)].ival = ((*tokens0)->data[((NI) 0)].symbol ? (*tokens0)->data[((NI) 0)].symbol->Sup.len : 0);
  		(*tokens0)->data[((NI) 0)].kind = ((Toktype370119) 1);
  	}
  	LA31: ;
  	return result0;
  }
  
  static N_INLINE(NIM_BOOL, equalmem_7495_1689653243)(void* a0, void* b0, NI size0) {
  	NIM_BOOL result0;
  	int LOC1;
  	result0 = (NIM_BOOL)0;
  	LOC1 = (int)0;
  	LOC1 = memcmp(a0, b0, ((size_t) (size0)));
  	result0 = (LOC1 == ((NI32) 0));
  	return result0;
  }
  
  static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a0, NimStringDesc* b0) {
  	NIM_BOOL result0;
  	NIM_BOOL LOC11;
  {	result0 = (NIM_BOOL)0;
  	{
  		if (!(a0 == b0)) goto LA3;
  		result0 = NIM_TRUE;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		NIM_BOOL LOC7;
  		LOC7 = (NIM_BOOL)0;
  		LOC7 = (a0 == NIM_NIL);
  		if (LOC7) goto LA8;
  		LOC7 = (b0 == NIM_NIL);
  		LA8: ;
  		if (!LOC7) goto LA9;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA9: ;
  	LOC11 = (NIM_BOOL)0;
  	LOC11 = ((*a0).Sup.len == (*b0).Sup.len);
  	if (!(LOC11)) goto LA12;
  	LOC11 = equalmem_7495_1689653243(((void*) ((*a0).data)), ((void*) ((*b0).data)), ((NI) ((*a0).Sup.len)));
  	LA12: ;
  	result0 = LOC11;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NI, findsub_371014_3635346014)(Rstparser370500* p0, Rstnode369011* n0) {
  	NI result0;
  	NimStringDesc* key0;
  {	result0 = (NI)0;
  	key0 = addnodes_370065_3635346014(n0);
  	{
  		NI i_371032_3635346014;
  		NI HEX3Atmp_371046_3635346014;
  		NI res_371049_3635346014;
  		i_371032_3635346014 = (NI)0;
  		HEX3Atmp_371046_3635346014 = (NI)0;
  		HEX3Atmp_371046_3635346014 = ((*(*p0).s).subs ? ((*(*p0).s).subs->Sup.len-1) : -1);
  		res_371049_3635346014 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_371049_3635346014 <= HEX3Atmp_371046_3635346014)) goto LA3;
  				i_371032_3635346014 = res_371049_3635346014;
  				{
  					if (!eqStrings(key0, (*(*p0).s).subs->data[i_371032_3635346014].key)) goto LA6;
  					result0 = i_371032_3635346014;
  					goto BeforeRet;
  				}
  				LA6: ;
  				res_371049_3635346014 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	{
  		NI i_371044_3635346014;
  		NI HEX3Atmp_371054_3635346014;
  		NI res_371057_3635346014;
  		i_371044_3635346014 = (NI)0;
  		HEX3Atmp_371054_3635346014 = (NI)0;
  		HEX3Atmp_371054_3635346014 = ((*(*p0).s).subs ? ((*(*p0).s).subs->Sup.len-1) : -1);
  		res_371057_3635346014 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_371057_3635346014 <= HEX3Atmp_371054_3635346014)) goto LA10;
  				i_371044_3635346014 = res_371057_3635346014;
  				{
  					NI LOC13;
  					LOC13 = (NI)0;
  					LOC13 = nsuCmpIgnoreStyle(key0, (*(*p0).s).subs->data[i_371044_3635346014].key);
  					if (!(LOC13 == ((NI) 0))) goto LA14;
  					result0 = i_371044_3635346014;
  					goto BeforeRet;
  				}
  				LA14: ;
  				res_371057_3635346014 += ((NI) 1);
  			} LA10: ;
  		}
  	}
  	result0 = ((NI) -1);
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void, rstmessage_370724_3635346014)(Rstparser370500* p0, Msgkind370009 msgkind0, NimStringDesc* arg0) {
  	(*(*p0).s).msghandler((*p0).filename, (NI)((*p0).line + (*p0).tok->data[(*p0).idx].line), (NI)((*p0).col + (*p0).tok->data[(*p0).idx].col), msgkind0, arg0);
  }
  
  N_NIMCALL(Rstnode369011*, findref_371151_3635346014)(Rstparser370500* p0, NimStringDesc* key0) {
  	Rstnode369011* result0;
  {	result0 = (Rstnode369011*)0;
  	{
  		NI i_371168_3635346014;
  		NI HEX3Atmp_371170_3635346014;
  		NI res_371173_3635346014;
  		i_371168_3635346014 = (NI)0;
  		HEX3Atmp_371170_3635346014 = (NI)0;
  		HEX3Atmp_371170_3635346014 = ((*(*p0).s).refs ? ((*(*p0).s).refs->Sup.len-1) : -1);
  		res_371173_3635346014 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_371173_3635346014 <= HEX3Atmp_371170_3635346014)) goto LA3;
  				i_371168_3635346014 = res_371173_3635346014;
  				{
  					if (!eqStrings(key0, (*(*p0).s).refs->data[i_371168_3635346014].key)) goto LA6;
  					result0 = (*(*p0).s).refs->data[i_371168_3635346014].value;
  					goto BeforeRet;
  				}
  				LA6: ;
  				res_371173_3635346014 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	}BeforeRet: ;
  	return result0;
  }
  
  static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0) {
  	{
  		Cell47304* c0;
  		if (!!((src0 == NIM_NIL))) goto LA3;
  		c0 = usrtocell_51440_1689653243(src0);
  		(*c0).refcount += ((NI) 8);
  	}
  	LA3: ;
  	{
  		Cell47304* c0;
  		if (!!(((*dest0) == NIM_NIL))) goto LA7;
  		c0 = usrtocell_51440_1689653243((*dest0));
  		{
  			(*c0).refcount -= ((NI) 8);
  			if (!((NU32)((*c0).refcount) < (NU32)(((NI) 8)))) goto LA11;
  			rtladdzct_52601_1689653243(c0);
  		}
  		LA11: ;
  	}
  	LA7: ;
  	(*dest0) = src0;
  }
  
  N_NIMCALL(Rstnode369011*, resolvesubs_376196_3635346014)(Rstparser370500* p0, Rstnode369011* n0) {
  	Rstnode369011* result0;
  {	result0 = (Rstnode369011*)0;
  	result0 = n0;
  	{
  		if (!(n0 == NIM_NIL)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	switch ((*n0).kind) {
  	case ((Rstnodekind369005) 62):
  	{
  		NI x0;
  		x0 = findsub_371014_3635346014(p0, n0);
  		{
  			if (!(((NI) 0) <= x0)) goto LA8;
  			result0 = (*(*p0).s).subs->data[x0].value;
  		}
  		goto LA6;
  		LA8: ;
  		{
  			NimStringDesc* key0;
  			NimStringDesc* e0;
  			key0 = addnodes_370065_3635346014(n0);
  			e0 = getenv_136625_2125978480(key0);
  			{
  				if (!!(((e0) && (e0)->Sup.len == 0))) goto LA13;
  				result0 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), e0);
  			}
  			goto LA11;
  			LA13: ;
  			{
  				rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 7), key0);
  			}
  			LA11: ;
  		}
  		LA6: ;
  	}
  	break;
  	case ((Rstnodekind369005) 39):
  	{
  		Rstnode369011* y0;
  		NimStringDesc* LOC17;
  		LOC17 = (NimStringDesc*)0;
  		LOC17 = rstnodetorefname_370062_3635346014(n0);
  		y0 = findref_371151_3635346014(p0, LOC17);
  		{
  			if (!!((y0 == NIM_NIL))) goto LA20;
  			result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 38));
  			(*n0).kind = ((Rstnodekind369005) 0);
  			add_369146_4150536388(result0, n0);
  			add_369146_4150536388(result0, y0);
  		}
  		LA20: ;
  	}
  	break;
  	case ((Rstnodekind369005) 64):
  	{
  	}
  	break;
  	case ((Rstnodekind369005) 44):
  	{
  		(*p0).hastoc = NIM_TRUE;
  	}
  	break;
  	default:
  	{
  		{
  			NI i_376241_3635346014;
  			NI HEX3Atmp_376243_3635346014;
  			NI LOC26;
  			NI res_376246_3635346014;
  			i_376241_3635346014 = (NI)0;
  			HEX3Atmp_376243_3635346014 = (NI)0;
  			LOC26 = (NI)0;
  			LOC26 = len_369089_4150536388(n0);
  			HEX3Atmp_376243_3635346014 = (NI)(LOC26 - ((NI) 1));
  			res_376246_3635346014 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_376246_3635346014 <= HEX3Atmp_376243_3635346014)) goto LA28;
  					i_376241_3635346014 = res_376246_3635346014;
  					asgnRefNoCycle((void**) (&(*n0).sons->data[i_376241_3635346014]), resolvesubs_376196_3635346014(p0, (*n0).sons->data[i_376241_3635346014]));
  					res_376246_3635346014 += ((NI) 1);
  				} LA28: ;
  			}
  		}
  	}
  	break;
  	}
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NI, currind_370801_3635346014)(Rstparser370500* p0) {
  	NI result0;
  	result0 = (NI)0;
  	result0 = (*p0).indentstack->data[((*p0).indentstack ? ((*p0).indentstack->Sup.len-1) : -1)];
  	return result0;
  }
  
  N_NIMCALL(void, pushind_370805_3635346014)(Rstparser370500* p0, NI ind0) {
  	(*p0).indentstack = (TY370521*) incrSeqV2(&((*p0).indentstack)->Sup, sizeof(NI));
  	(*p0).indentstack->data[(*p0).indentstack->Sup.len] = ind0;
  	++(*p0).indentstack->Sup.len;
  }
  
  N_NIMCALL(void, popind_370820_3635346014)(Rstparser370500* p0) {
  	{
  		if (!(((NI) 1) < ((*p0).indentstack ? (*p0).indentstack->Sup.len : 0))) goto LA3;
  		(*p0).indentstack = (TY370521*) setLengthSeq(&((*p0).indentstack)->Sup, sizeof(NI), ((NI) ((NI)(((*p0).indentstack ? (*p0).indentstack->Sup.len : 0) - ((NI) 1)))));
  	}
  	LA3: ;
  }
  
  N_NIMCALL(NIM_BOOL, match_371327_3635346014)(Rstparser370500* p0, NI start0, NimStringDesc* expr0) {
  	NIM_BOOL result0;
  	NI i0;
  	NI j0;
  	NI last0;
  {	result0 = (NIM_BOOL)0;
  	i0 = ((NI) 0);
  	j0 = start0;
  	last0 = (NI)((expr0 ? expr0->Sup.len : 0) - ((NI) 1));
  	{
  		while (1) {
  			if (!(i0 <= last0)) goto LA2;
  			switch (((NU8)(expr0->data[i0]))) {
  			case 119:
  			{
  				result0 = ((*p0).tok->data[j0].kind == ((Toktype370119) 3));
  			}
  			break;
  			case 32:
  			{
  				result0 = ((*p0).tok->data[j0].kind == ((Toktype370119) 2));
  			}
  			break;
  			case 105:
  			{
  				result0 = ((*p0).tok->data[j0].kind == ((Toktype370119) 1));
  			}
  			break;
  			case 112:
  			{
  				result0 = ((*p0).tok->data[j0].kind == ((Toktype370119) 5));
  			}
  			break;
  			case 97:
  			{
  				result0 = ((*p0).tok->data[j0].kind == ((Toktype370119) 4));
  			}
  			break;
  			case 111:
  			{
  				result0 = ((*p0).tok->data[j0].kind == ((Toktype370119) 6));
  			}
  			break;
  			case 84:
  			{
  				result0 = NIM_TRUE;
  			}
  			break;
  			case 69:
  			{
  				result0 = ((7 &(1U<<((NU)((*p0).tok->data[j0].kind)&7U)))!=0);
  			}
  			break;
  			case 101:
  			{
  				NIM_BOOL LOC12;
  				LOC12 = (NIM_BOOL)0;
  				LOC12 = ((*p0).tok->data[j0].kind == ((Toktype370119) 3));
  				if (LOC12) goto LA13;
  				LOC12 = eqStrings((*p0).tok->data[j0].symbol, ((NimStringDesc*) &T3635346014_43));
  				LA13: ;
  				result0 = LOC12;
  				{
  					if (!result0) goto LA16;
  					switch (((NU8)((*p0).tok->data[j0].symbol->data[((NI) 0)]))) {
  					case 97 ... 122:
  					case 65 ... 90:
  					{
  						result0 = (((*p0).tok->data[j0].symbol ? (*p0).tok->data[j0].symbol->Sup.len : 0) == ((NI) 1));
  					}
  					break;
  					case 48 ... 57:
  					{
  						result0 = allcharsinset_109382_4286263276((*p0).tok->data[j0].symbol, T3635346014_44);
  					}
  					break;
  					default:
  					{
  					}
  					break;
  					}
  				}
  				LA16: ;
  			}
  			break;
  			default:
  			{
  				NIM_CHAR c0;
  				NI length0;
  				NIM_BOOL LOC26;
  				NIM_BOOL LOC27;
  				c0 = expr0->data[i0];
  				length0 = ((NI) 0);
  				{
  					while (1) {
  						NIM_BOOL LOC24;
  						LOC24 = (NIM_BOOL)0;
  						LOC24 = (i0 <= last0);
  						if (!(LOC24)) goto LA25;
  						LOC24 = ((NU8)(expr0->data[i0]) == (NU8)(c0));
  						LA25: ;
  						if (!LOC24) goto LA23;
  						i0 += ((NI) 1);
  						length0 += ((NI) 1);
  					} LA23: ;
  				}
  				i0 -= ((NI) 1);
  				LOC26 = (NIM_BOOL)0;
  				LOC27 = (NIM_BOOL)0;
  				LOC27 = ((48 &(1U<<((NU)((*p0).tok->data[j0].kind)&7U)))!=0);
  				if (!(LOC27)) goto LA28;
  				LOC27 = (((*p0).tok->data[j0].symbol ? (*p0).tok->data[j0].symbol->Sup.len : 0) == length0);
  				LA28: ;
  				LOC26 = LOC27;
  				if (!(LOC26)) goto LA29;
  				LOC26 = ((NU8)((*p0).tok->data[j0].symbol->data[((NI) 0)]) == (NU8)(c0));
  				LA29: ;
  				result0 = LOC26;
  			}
  			break;
  			}
  			{
  				if (!!(result0)) goto LA32;
  				goto BeforeRet;
  			}
  			LA32: ;
  			j0 += ((NI) 1);
  			i0 += ((NI) 1);
  		} LA2: ;
  	}
  	result0 = NIM_TRUE;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NI, tokenafternewline_373550_3635346014)(Rstparser370500* p0) {
  	NI result0;
  	result0 = (NI)0;
  	result0 = (*p0).idx;
  	{
  		while (1) {
  			switch ((*p0).tok->data[result0].kind) {
  			case ((Toktype370119) 0):
  			{
  				goto LA1;
  			}
  			break;
  			case ((Toktype370119) 1):
  			{
  				result0 += ((NI) 1);
  				goto LA1;
  			}
  			break;
  			default:
  			{
  				result0 += ((NI) 1);
  			}
  			break;
  			}
  		}
  	} LA1: ;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, prednl_373578_3635346014)(Rstparser370500* p0) {
  	NIM_BOOL result0;
  	result0 = (NIM_BOOL)0;
  	result0 = NIM_TRUE;
  	{
  		NIM_BOOL LOC5;
  		NI LOC7;
  		if (!(((NI) 0) < (*p0).idx)) goto LA3;
  		LOC5 = (NIM_BOOL)0;
  		LOC5 = ((*p0).tok->data[(NI)((*p0).idx - ((NI) 1))].kind == ((Toktype370119) 1));
  		if (!(LOC5)) goto LA6;
  		LOC7 = (NI)0;
  		LOC7 = currind_370801_3635346014(p0);
  		LOC5 = ((*p0).tok->data[(NI)((*p0).idx - ((NI) 1))].ival == LOC7);
  		LA6: ;
  		result0 = LOC5;
  	}
  	LA3: ;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, islineblock_373573_3635346014)(Rstparser370500* p0) {
  	NIM_BOOL result0;
  	NI j0;
  	NIM_BOOL LOC1;
  	NIM_BOOL LOC2;
  	result0 = (NIM_BOOL)0;
  	j0 = tokenafternewline_373550_3635346014(p0);
  	LOC1 = (NIM_BOOL)0;
  	LOC2 = (NIM_BOOL)0;
  	LOC2 = ((*p0).tok->data[(*p0).idx].col == (*p0).tok->data[j0].col);
  	if (!(LOC2)) goto LA3;
  	LOC2 = eqStrings((*p0).tok->data[j0].symbol, ((NimStringDesc*) &T3635346014_53));
  	LA3: ;
  	LOC1 = LOC2;
  	if (LOC1) goto LA4;
  	LOC1 = ((*p0).tok->data[(*p0).idx].col < (*p0).tok->data[j0].col);
  	LA4: ;
  	result0 = LOC1;
  	return result0;
  }
  
  N_NIMCALL(void, rstmessage_370736_3635346014)(Rstparser370500* p0, Msgkind370009 msgkind0) {
  	(*(*p0).s).msghandler((*p0).filename, (NI)((*p0).line + (*p0).tok->data[(*p0).idx].line), (NI)((*p0).col + (*p0).tok->data[(*p0).idx].col), msgkind0, (*p0).tok->data[(*p0).idx].symbol);
  }
  
  N_NIMCALL(NIM_BOOL, isdeflist_373591_3635346014)(Rstparser370500* p0) {
  	NIM_BOOL result0;
  	NI j0;
  	NIM_BOOL LOC1;
  	NIM_BOOL LOC2;
  	result0 = (NIM_BOOL)0;
  	j0 = tokenafternewline_373550_3635346014(p0);
  	LOC1 = (NIM_BOOL)0;
  	LOC2 = (NIM_BOOL)0;
  	LOC2 = ((*p0).tok->data[(*p0).idx].col < (*p0).tok->data[j0].col);
  	if (!(LOC2)) goto LA3;
  	LOC2 = ((104 &(1U<<((NU)((*p0).tok->data[j0].kind)&7U)))!=0);
  	LA3: ;
  	LOC1 = LOC2;
  	if (!(LOC1)) goto LA4;
  	LOC1 = !(eqStrings((*p0).tok->data[(NI)(j0 - ((NI) 2))].symbol, ((NimStringDesc*) &T3635346014_49)));
  	LA4: ;
  	result0 = LOC1;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, isoptionlist_373607_3635346014)(Rstparser370500* p0) {
  	NIM_BOOL result0;
  	NIM_BOOL LOC1;
  	NIM_BOOL LOC2;
  	NIM_BOOL LOC3;
  	result0 = (NIM_BOOL)0;
  	LOC1 = (NIM_BOOL)0;
  	LOC2 = (NIM_BOOL)0;
  	LOC3 = (NIM_BOOL)0;
  	LOC3 = match_371327_3635346014(p0, (*p0).idx, ((NimStringDesc*) &T3635346014_58));
  	if (LOC3) goto LA4;
  	LOC3 = match_371327_3635346014(p0, (*p0).idx, ((NimStringDesc*) &T3635346014_59));
  	LA4: ;
  	LOC2 = LOC3;
  	if (LOC2) goto LA5;
  	LOC2 = match_371327_3635346014(p0, (*p0).idx, ((NimStringDesc*) &T3635346014_60));
  	LA5: ;
  	LOC1 = LOC2;
  	if (LOC1) goto LA6;
  	LOC1 = match_371327_3635346014(p0, (*p0).idx, ((NimStringDesc*) &T3635346014_61));
  	LA6: ;
  	result0 = LOC1;
  	return result0;
  }
  
  N_NIMCALL(Rstnodekind369005, whichsection_373611_3635346014)(Rstparser370500* p0) {
  	Rstnodekind369005 result0;
  	result0 = (Rstnodekind369005)0;
  	switch ((*p0).tok->data[(*p0).idx].kind) {
  	case ((Toktype370119) 4):
  	{
  		{
  			NIM_BOOL LOC4;
  			LOC4 = (NIM_BOOL)0;
  			LOC4 = match_371327_3635346014(p0, (NI)((*p0).idx + ((NI) 1)), ((NimStringDesc*) &T3635346014_45));
  			if (!LOC4) goto LA5;
  			result0 = ((Rstnodekind369005) 3);
  		}
  		goto LA2;
  		LA5: ;
  		{
  			NIM_BOOL LOC8;
  			LOC8 = (NIM_BOOL)0;
  			LOC8 = match_371327_3635346014(p0, (NI)((*p0).idx + ((NI) 1)), ((NimStringDesc*) &T3635346014_46));
  			if (!LOC8) goto LA9;
  			result0 = ((Rstnodekind369005) 29);
  		}
  		goto LA2;
  		LA9: ;
  		{
  			NIM_BOOL LOC12;
  			LOC12 = (NIM_BOOL)0;
  			LOC12 = match_371327_3635346014(p0, (NI)((*p0).idx + ((NI) 1)), ((NimStringDesc*) &T3635346014_47));
  			if (!LOC12) goto LA13;
  			result0 = ((Rstnodekind369005) 2);
  		}
  		goto LA2;
  		LA13: ;
  		{
  			result0 = ((Rstnodekind369005) 64);
  		}
  		LA2: ;
  	}
  	break;
  	case ((Toktype370119) 5):
  	{
  		{
  			NI LOC19;
  			NIM_BOOL LOC20;
  			LOC19 = (NI)0;
  			LOC19 = tokenafternewline_373550_3635346014(p0);
  			LOC20 = (NIM_BOOL)0;
  			LOC20 = match_371327_3635346014(p0, LOC19, ((NimStringDesc*) &T3635346014_48));
  			if (!LOC20) goto LA21;
  			result0 = ((Rstnodekind369005) 1);
  		}
  		goto LA17;
  		LA21: ;
  		{
  			if (!eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_49))) goto LA24;
  			result0 = ((Rstnodekind369005) 24);
  		}
  		goto LA17;
  		LA24: ;
  		{
  			NIM_BOOL LOC27;
  			NIM_BOOL LOC28;
  			NIM_BOOL LOC30;
  			NIM_BOOL LOC31;
  			LOC27 = (NIM_BOOL)0;
  			LOC28 = (NIM_BOOL)0;
  			LOC28 = prednl_373578_3635346014(p0);
  			if (!(LOC28)) goto LA29;
  			LOC30 = (NIM_BOOL)0;
  			LOC31 = (NIM_BOOL)0;
  			LOC31 = eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_50));
  			if (LOC31) goto LA32;
  			LOC31 = eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_51));
  			LA32: ;
  			LOC30 = LOC31;
  			if (LOC30) goto LA33;
  			LOC30 = eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_52));
  			LA33: ;
  			LOC28 = LOC30;
  			LA29: ;
  			LOC27 = LOC28;
  			if (!(LOC27)) goto LA34;
  			LOC27 = ((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].kind == ((Toktype370119) 2));
  			LA34: ;
  			if (!LOC27) goto LA35;
  			result0 = ((Rstnodekind369005) 5);
  		}
  		goto LA17;
  		LA35: ;
  		{
  			NIM_BOOL LOC38;
  			LOC38 = (NIM_BOOL)0;
  			LOC38 = eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_53));
  			if (!(LOC38)) goto LA39;
  			LOC38 = islineblock_373573_3635346014(p0);
  			LA39: ;
  			if (!LOC38) goto LA40;
  			result0 = ((Rstnodekind369005) 26);
  		}
  		goto LA17;
  		LA40: ;
  		{
  			NIM_BOOL LOC43;
  			LOC43 = (NIM_BOOL)0;
  			LOC43 = eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_54));
  			if (!(LOC43)) goto LA44;
  			LOC43 = prednl_373578_3635346014(p0);
  			LA44: ;
  			if (!LOC43) goto LA45;
  			result0 = ((Rstnodekind369005) 40);
  		}
  		goto LA17;
  		LA45: ;
  		{
  			NIM_BOOL LOC48;
  			LOC48 = (NIM_BOOL)0;
  			LOC48 = match_371327_3635346014(p0, (*p0).idx, ((NimStringDesc*) &T3635346014_55));
  			if (!(LOC48)) goto LA49;
  			LOC48 = prednl_373578_3635346014(p0);
  			LA49: ;
  			if (!LOC48) goto LA50;
  			result0 = ((Rstnodekind369005) 13);
  		}
  		goto LA17;
  		LA50: ;
  		{
  			NIM_BOOL LOC53;
  			LOC53 = (NIM_BOOL)0;
  			LOC53 = match_371327_3635346014(p0, (*p0).idx, ((NimStringDesc*) &T3635346014_56));
  			if (!LOC53) goto LA54;
  			result0 = ((Rstnodekind369005) 7);
  		}
  		goto LA17;
  		LA54: ;
  		{
  			NIM_BOOL LOC57;
  			LOC57 = (NIM_BOOL)0;
  			LOC57 = match_371327_3635346014(p0, (*p0).idx, ((NimStringDesc*) &T3635346014_57));
  			if (!LOC57) goto LA58;
  			result0 = ((Rstnodekind369005) 30);
  			rstmessage_370736_3635346014(p0, ((Msgkind370009) 2));
  		}
  		goto LA17;
  		LA58: ;
  		{
  			NIM_BOOL LOC61;
  			LOC61 = (NIM_BOOL)0;
  			LOC61 = isdeflist_373591_3635346014(p0);
  			if (!LOC61) goto LA62;
  			result0 = ((Rstnodekind369005) 9);
  		}
  		goto LA17;
  		LA62: ;
  		{
  			NIM_BOOL LOC65;
  			LOC65 = (NIM_BOOL)0;
  			LOC65 = isoptionlist_373607_3635346014(p0);
  			if (!LOC65) goto LA66;
  			result0 = ((Rstnodekind369005) 17);
  		}
  		goto LA17;
  		LA66: ;
  		{
  			result0 = ((Rstnodekind369005) 4);
  		}
  		LA17: ;
  	}
  	break;
  	case ((Toktype370119) 3):
  	case ((Toktype370119) 6):
  	case ((Toktype370119) 2):
  	{
  		{
  			NI LOC72;
  			NIM_BOOL LOC73;
  			LOC72 = (NI)0;
  			LOC72 = tokenafternewline_373550_3635346014(p0);
  			LOC73 = (NIM_BOOL)0;
  			LOC73 = match_371327_3635346014(p0, LOC72, ((NimStringDesc*) &T3635346014_48));
  			if (!LOC73) goto LA74;
  			result0 = ((Rstnodekind369005) 1);
  		}
  		goto LA70;
  		LA74: ;
  		{
  			NIM_BOOL LOC77;
  			LOC77 = (NIM_BOOL)0;
  			LOC77 = match_371327_3635346014(p0, (*p0).idx, ((NimStringDesc*) &T3635346014_62));
  			if (LOC77) goto LA78;
  			LOC77 = match_371327_3635346014(p0, (*p0).idx, ((NimStringDesc*) &T3635346014_63));
  			LA78: ;
  			if (!LOC77) goto LA79;
  			result0 = ((Rstnodekind369005) 7);
  		}
  		goto LA70;
  		LA79: ;
  		{
  			NIM_BOOL LOC82;
  			LOC82 = (NIM_BOOL)0;
  			LOC82 = isdeflist_373591_3635346014(p0);
  			if (!LOC82) goto LA83;
  			result0 = ((Rstnodekind369005) 9);
  		}
  		goto LA70;
  		LA83: ;
  		{
  			result0 = ((Rstnodekind369005) 4);
  		}
  		LA70: ;
  	}
  	break;
  	default:
  	{
  		result0 = ((Rstnodekind369005) 64);
  	}
  	break;
  	}
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parseliteralblock_373468_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	Rstnode369011* n0;
  	result0 = (Rstnode369011*)0;
  	result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 24));
  	n0 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), ((NimStringDesc*) &T3635346014_2));
  	{
  		NI indent0;
  		if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1))) goto LA3;
  		indent0 = (*p0).tok->data[(*p0).idx].ival;
  		(*p0).idx += ((NI) 1);
  		{
  			while (1) {
  				switch ((*p0).tok->data[(*p0).idx].kind) {
  				case ((Toktype370119) 0):
  				{
  					goto LA5;
  				}
  				break;
  				case ((Toktype370119) 1):
  				{
  					{
  						if (!((*p0).tok->data[(*p0).idx].ival < indent0)) goto LA11;
  						goto LA5;
  					}
  					goto LA9;
  					LA11: ;
  					{
  						NimStringDesc* LOC14;
  						(*n0).text = resizeString((*n0).text, 1);
  appendString((*n0).text, ((NimStringDesc*) &T3635346014_39));
  						LOC14 = (NimStringDesc*)0;
  						LOC14 = nsuRepeatChar(32, ((NI) ((NI)((*p0).tok->data[(*p0).idx].ival - indent0))));
  						(*n0).text = resizeString((*n0).text, LOC14->Sup.len + 0);
  appendString((*n0).text, LOC14);
  						(*p0).idx += ((NI) 1);
  					}
  					LA9: ;
  				}
  				break;
  				default:
  				{
  					(*n0).text = resizeString((*n0).text, (*p0).tok->data[(*p0).idx].symbol->Sup.len + 0);
  appendString((*n0).text, (*p0).tok->data[(*p0).idx].symbol);
  					(*p0).idx += ((NI) 1);
  				}
  				break;
  				}
  			}
  		} LA5: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		{
  			while (1) {
  				if (!!(((3 &(1U<<((NU)((*p0).tok->data[(*p0).idx].kind)&7U)))!=0))) goto LA18;
  				(*n0).text = resizeString((*n0).text, (*p0).tok->data[(*p0).idx].symbol->Sup.len + 0);
  appendString((*n0).text, (*p0).tok->data[(*p0).idx].symbol);
  				(*p0).idx += ((NI) 1);
  			} LA18: ;
  		}
  	}
  	LA1: ;
  	add_369146_4150536388(result0, n0);
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parsebulletlist_374668_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = NIM_NIL;
  	{
  		NimStringDesc* bullet0;
  		NI col0;
  		if (!((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].kind == ((Toktype370119) 2))) goto LA3;
  		bullet0 = copyString((*p0).tok->data[(*p0).idx].symbol);
  		col0 = (*p0).tok->data[(*p0).idx].col;
  		result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 5));
  		pushind_370805_3635346014(p0, (*p0).tok->data[(NI)((*p0).idx + ((NI) 2))].col);
  		(*p0).idx += ((NI) 2);
  		{
  			while (1) {
  				Rstnode369011* item0;
  				item0 = newrstnode_369101_4150536388(((Rstnodekind369005) 6));
  				parsesection_372697_3635346014(p0, item0);
  				add_369146_4150536388(result0, item0);
  				{
  					NIM_BOOL LOC9;
  					NIM_BOOL LOC10;
  					NIM_BOOL LOC11;
  					LOC9 = (NIM_BOOL)0;
  					LOC10 = (NIM_BOOL)0;
  					LOC11 = (NIM_BOOL)0;
  					LOC11 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1));
  					if (!(LOC11)) goto LA12;
  					LOC11 = ((*p0).tok->data[(*p0).idx].ival == col0);
  					LA12: ;
  					LOC10 = LOC11;
  					if (!(LOC10)) goto LA13;
  					LOC10 = eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, bullet0);
  					LA13: ;
  					LOC9 = LOC10;
  					if (!(LOC9)) goto LA14;
  					LOC9 = ((*p0).tok->data[(NI)((*p0).idx + ((NI) 2))].kind == ((Toktype370119) 2));
  					LA14: ;
  					if (!LOC9) goto LA15;
  					(*p0).idx += ((NI) 3);
  				}
  				goto LA7;
  				LA15: ;
  				{
  					goto LA5;
  				}
  				LA7: ;
  			}
  		} LA5: ;
  		popind_370820_3635346014(p0);
  	}
  	LA3: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parselineblock_373624_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = NIM_NIL;
  	{
  		NI col0;
  		if (!((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].kind == ((Toktype370119) 2))) goto LA3;
  		col0 = (*p0).tok->data[(*p0).idx].col;
  		result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 26));
  		pushind_370805_3635346014(p0, (*p0).tok->data[(NI)((*p0).idx + ((NI) 2))].col);
  		(*p0).idx += ((NI) 2);
  		{
  			while (1) {
  				Rstnode369011* item0;
  				item0 = newrstnode_369101_4150536388(((Rstnodekind369005) 27));
  				parsesection_372697_3635346014(p0, item0);
  				add_369146_4150536388(result0, item0);
  				{
  					NIM_BOOL LOC9;
  					NIM_BOOL LOC10;
  					NIM_BOOL LOC11;
  					LOC9 = (NIM_BOOL)0;
  					LOC10 = (NIM_BOOL)0;
  					LOC11 = (NIM_BOOL)0;
  					LOC11 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1));
  					if (!(LOC11)) goto LA12;
  					LOC11 = ((*p0).tok->data[(*p0).idx].ival == col0);
  					LA12: ;
  					LOC10 = LOC11;
  					if (!(LOC10)) goto LA13;
  					LOC10 = eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_53));
  					LA13: ;
  					LOC9 = LOC10;
  					if (!(LOC9)) goto LA14;
  					LOC9 = ((*p0).tok->data[(NI)((*p0).idx + ((NI) 2))].kind == ((Toktype370119) 2));
  					LA14: ;
  					if (!LOC9) goto LA15;
  					(*p0).idx += ((NI) 3);
  				}
  				goto LA7;
  				LA15: ;
  				{
  					goto LA5;
  				}
  				LA7: ;
  			}
  		} LA5: ;
  		popind_370820_3635346014(p0);
  	}
  	LA3: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, getdirective_372436_3635346014)(Rstparser370500* p0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	{
  		NIM_BOOL LOC3;
  		NI j0;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 2));
  		if (!(LOC3)) goto LA4;
  		LOC3 = ((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].kind == ((Toktype370119) 3));
  		LA4: ;
  		if (!LOC3) goto LA5;
  		j0 = (*p0).idx;
  		(*p0).idx += ((NI) 1);
  		result0 = copyString((*p0).tok->data[(*p0).idx].symbol);
  		(*p0).idx += ((NI) 1);
  		{
  			while (1) {
  				if (!((120 &(1U<<((NU)((*p0).tok->data[(*p0).idx].kind)&7U)))!=0)) goto LA8;
  				{
  					if (!eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_49))) goto LA11;
  					goto LA7;
  				}
  				LA11: ;
  				result0 = resizeString(result0, (*p0).tok->data[(*p0).idx].symbol->Sup.len + 0);
  appendString(result0, (*p0).tok->data[(*p0).idx].symbol);
  				(*p0).idx += ((NI) 1);
  			} LA8: ;
  		} LA7: ;
  		{
  			if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 2))) goto LA15;
  			(*p0).idx += ((NI) 1);
  		}
  		LA15: ;
  		{
  			if (!eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_49))) goto LA19;
  			(*p0).idx += ((NI) 1);
  			{
  				if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 2))) goto LA23;
  				(*p0).idx += ((NI) 1);
  			}
  			LA23: ;
  		}
  		goto LA17;
  		LA19: ;
  		{
  			(*p0).idx = j0;
  			result0 = copyString(((NimStringDesc*) &T3635346014_2));
  		}
  		LA17: ;
  	}
  	goto LA1;
  	LA5: ;
  	{
  		result0 = copyString(((NimStringDesc*) &T3635346014_2));
  	}
  	LA1: ;
  	return result0;
  }
  
  static N_INLINE(NI, find_372635_1689653243)(TY372627 a0, NimStringDesc* item0) {
  	NI result0;
  {	result0 = (NI)0;
  	{
  		NimStringDesc* i_372670_1689653243;
  		NI i_372683_1689653243;
  		i_372670_1689653243 = (NimStringDesc*)0;
  		i_372683_1689653243 = ((NI) 0);
  		{
  			if (!(((NI) (i_372683_1689653243)) <= ((NI) 12))) goto LA4;
  			{
  				while (1) {
  					i_372670_1689653243 = a0[(i_372683_1689653243)- 0];
  					{
  						if (!eqStrings(i_372670_1689653243, item0)) goto LA10;
  						goto BeforeRet;
  					}
  					LA10: ;
  					result0 += ((NI) 1);
  					{
  						if (!(((NI) 12) <= ((NI) (i_372683_1689653243)))) goto LA14;
  						goto LA6;
  					}
  					LA14: ;
  					i_372683_1689653243 += ((NI) 1);
  				}
  			} LA6: ;
  		}
  		LA4: ;
  	}
  	result0 = ((NI) -1);
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(Dirkind372609, getdirkind_372630_3635346014)(NimStringDesc* s0) {
  	Dirkind372609 result0;
  	NI i0;
  	result0 = (Dirkind372609)0;
  	i0 = find_372635_1689653243(Dirids_372625_3635346014, s0);
  	{
  		if (!(((NI) 0) <= i0)) goto LA3;
  		result0 = ((Dirkind372609) (i0));
  	}
  	goto LA1;
  	LA3: ;
  	{
  		result0 = ((Dirkind372609) 0);
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, newleaf_371177_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), (*p0).tok->data[(*p0).idx].symbol);
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, isinlinemarkupstart_371286_3635346014)(Rstparser370500* p0, NimStringDesc* markup0) {
  	NIM_BOOL result0;
  	NIM_CHAR d0;
  	NIM_BOOL LOC5;
  	NIM_BOOL LOC6;
  {	result0 = (NIM_BOOL)0;
  	d0 = (NIM_CHAR)0;
  	result0 = eqStrings((*p0).tok->data[(*p0).idx].symbol, markup0);
  	{
  		if (!!(result0)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	LOC5 = (NIM_BOOL)0;
  	LOC6 = (NIM_BOOL)0;
  	LOC6 = ((*p0).idx == ((NI) 0));
  	if (LOC6) goto LA7;
  	LOC6 = ((6 &(1U<<((NU)((*p0).tok->data[(NI)((*p0).idx - ((NI) 1))].kind)&7U)))!=0);
  	LA7: ;
  	LOC5 = LOC6;
  	if (LOC5) goto LA8;
  	LOC5 = ((T3635346014_76[(NU)(((NU8)((*p0).tok->data[(NI)((*p0).idx - ((NI) 1))].symbol->data[((NI) 0)])))>>3] &(1U<<((NU)(((NU8)((*p0).tok->data[(NI)((*p0).idx - ((NI) 1))].symbol->data[((NI) 0)])))&7U)))!=0);
  	LA8: ;
  	result0 = LOC5;
  	{
  		if (!!(result0)) goto LA11;
  		goto BeforeRet;
  	}
  	LA11: ;
  	result0 = !(((7 &(1U<<((NU)((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].kind)&7U)))!=0));
  	{
  		if (!!(result0)) goto LA15;
  		goto BeforeRet;
  	}
  	LA15: ;
  	{
  		if (!(((NI) 0) < (*p0).idx)) goto LA19;
  		{
  			if (!eqStrings((*p0).tok->data[(NI)((*p0).idx - ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_77))) goto LA23;
  			result0 = NIM_FALSE;
  		}
  		goto LA21;
  		LA23: ;
  		{
  			NIM_CHAR c0;
  			c0 = (*p0).tok->data[(NI)((*p0).idx - ((NI) 1))].symbol->data[((NI) 0)];
  			switch (((NU8)(c0))) {
  			case 39:
  			case 34:
  			{
  				d0 = c0;
  			}
  			break;
  			case 40:
  			{
  				d0 = 41;
  			}
  			break;
  			case 91:
  			{
  				d0 = 93;
  			}
  			break;
  			case 123:
  			{
  				d0 = 125;
  			}
  			break;
  			case 60:
  			{
  				d0 = 62;
  			}
  			break;
  			default:
  			{
  				d0 = 0;
  			}
  			break;
  			}
  			{
  				if (!!(((NU8)(d0) == (NU8)(0)))) goto LA34;
  				result0 = !(((NU8)((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol->data[((NI) 0)]) == (NU8)(d0)));
  			}
  			LA34: ;
  		}
  		LA21: ;
  	}
  	LA19: ;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, isinlinemarkupend_371248_3635346014)(Rstparser370500* p0, NimStringDesc* markup0) {
  	NIM_BOOL result0;
  	NIM_BOOL LOC9;
  {	result0 = (NIM_BOOL)0;
  	result0 = eqStrings((*p0).tok->data[(*p0).idx].symbol, markup0);
  	{
  		if (!!(result0)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	result0 = !(((6 &(1U<<((NU)((*p0).tok->data[(NI)((*p0).idx - ((NI) 1))].kind)&7U)))!=0));
  	{
  		if (!!(result0)) goto LA7;
  		goto BeforeRet;
  	}
  	LA7: ;
  	LOC9 = (NIM_BOOL)0;
  	LOC9 = ((7 &(1U<<((NU)((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].kind)&7U)))!=0);
  	if (LOC9) goto LA10;
  	LOC9 = ((T3635346014_79[(NU)(((NU8)((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol->data[((NI) 0)])))>>3] &(1U<<((NU)(((NU8)((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol->data[((NI) 0)])))&7U)))!=0);
  	LA10: ;
  	result0 = LOC9;
  	{
  		if (!!(result0)) goto LA13;
  		goto BeforeRet;
  	}
  	LA13: ;
  	{
  		if (!(((NI) 0) < (*p0).idx)) goto LA17;
  		{
  			NIM_BOOL LOC21;
  			LOC21 = (NIM_BOOL)0;
  			LOC21 = !(eqStrings(markup0, ((NimStringDesc*) &T3635346014_80)));
  			if (!(LOC21)) goto LA22;
  			LOC21 = eqStrings((*p0).tok->data[(NI)((*p0).idx - ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_77));
  			LA22: ;
  			if (!LOC21) goto LA23;
  			result0 = NIM_FALSE;
  		}
  		LA23: ;
  	}
  	LA17: ;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void, parsebackslash_371896_3635346014)(Rstparser370500* p0, Rstnode369011* father0) {
  	{
  		Rstnode369011* LOC5;
  		if (!eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_81))) goto LA3;
  		LOC5 = (Rstnode369011*)0;
  		LOC5 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), ((NimStringDesc*) &T3635346014_77));
  		add_369146_4150536388(father0, LOC5);
  		(*p0).idx += ((NI) 1);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		if (!eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_77))) goto LA7;
  		(*p0).idx += ((NI) 1);
  		{
  			Rstnode369011* LOC13;
  			if (!!(((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 2)))) goto LA11;
  			LOC13 = (Rstnode369011*)0;
  			LOC13 = newleaf_371177_3635346014(p0);
  			add_369146_4150536388(father0, LOC13);
  		}
  		LA11: ;
  		{
  			if (!!(((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 0)))) goto LA16;
  			(*p0).idx += ((NI) 1);
  		}
  		LA16: ;
  	}
  	goto LA1;
  	LA7: ;
  	{
  		Rstnode369011* LOC19;
  		LOC19 = (Rstnode369011*)0;
  		LOC19 = newleaf_371177_3635346014(p0);
  		add_369146_4150536388(father0, LOC19);
  		(*p0).idx += ((NI) 1);
  	}
  	LA1: ;
  }
  
  N_NIMCALL(void, rstmessage_370729_3635346014)(Rstparser370500* p0, Msgkind370009 msgkind0, NimStringDesc* arg0, NI line0, NI col0) {
  	(*(*p0).s).msghandler((*p0).filename, (NI)((*p0).line + line0), (NI)((*p0).col + col0), msgkind0, arg0);
  }
  
  N_NIMCALL(void, parseuntil_372201_3635346014)(Rstparser370500* p0, Rstnode369011* father0, NimStringDesc* postfix0, NIM_BOOL interpretbackslash0) {
  	NI line0;
  	NI col0;
  	line0 = (*p0).tok->data[(*p0).idx].line;
  	col0 = (*p0).tok->data[(*p0).idx].col;
  	(*p0).idx += ((NI) 1);
  	{
  		while (1) {
  			switch ((*p0).tok->data[(*p0).idx].kind) {
  			case ((Toktype370119) 5):
  			{
  				{
  					NIM_BOOL LOC6;
  					LOC6 = (NIM_BOOL)0;
  					LOC6 = isinlinemarkupend_371248_3635346014((&(*p0)), postfix0);
  					if (!LOC6) goto LA7;
  					(*p0).idx += ((NI) 1);
  					goto LA1;
  				}
  				goto LA4;
  				LA7: ;
  				{
  					if (!interpretbackslash0) goto LA10;
  					parsebackslash_371896_3635346014(p0, father0);
  				}
  				goto LA4;
  				LA10: ;
  				{
  					Rstnode369011* LOC13;
  					LOC13 = (Rstnode369011*)0;
  					LOC13 = newleaf_371177_3635346014(p0);
  					add_369146_4150536388(father0, LOC13);
  					(*p0).idx += ((NI) 1);
  				}
  				LA4: ;
  			}
  			break;
  			case ((Toktype370119) 4):
  			case ((Toktype370119) 3):
  			case ((Toktype370119) 6):
  			{
  				Rstnode369011* LOC15;
  				LOC15 = (Rstnode369011*)0;
  				LOC15 = newleaf_371177_3635346014(p0);
  				add_369146_4150536388(father0, LOC15);
  				(*p0).idx += ((NI) 1);
  			}
  			break;
  			case ((Toktype370119) 1):
  			{
  				Rstnode369011* LOC17;
  				LOC17 = (Rstnode369011*)0;
  				LOC17 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), ((NimStringDesc*) &T3635346014_82));
  				add_369146_4150536388(father0, LOC17);
  				(*p0).idx += ((NI) 1);
  				{
  					if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1))) goto LA20;
  					rstmessage_370729_3635346014((&(*p0)), ((Msgkind370009) 1), postfix0, line0, col0);
  					goto LA1;
  				}
  				LA20: ;
  			}
  			break;
  			case ((Toktype370119) 2):
  			{
  				Rstnode369011* LOC23;
  				LOC23 = (Rstnode369011*)0;
  				LOC23 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), ((NimStringDesc*) &T3635346014_82));
  				add_369146_4150536388(father0, LOC23);
  				(*p0).idx += ((NI) 1);
  			}
  			break;
  			default:
  			{
  				rstmessage_370729_3635346014((&(*p0)), ((Msgkind370009) 1), postfix0, line0, col0);
  			}
  			break;
  			}
  		}
  	} LA1: ;
  }
  
  N_NIMCALL(Rstnode369011*, parsemarkdowncodeblock_372274_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	Rstnode369011* args0;
  	Rstnode369011* n0;
  	Rstnode369011* lb0;
  	result0 = (Rstnode369011*)0;
  	args0 = newrstnode_369101_4150536388(((Rstnodekind369005) 41));
  	{
  		Rstnode369011* LOC5;
  		if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 3))) goto LA3;
  		LOC5 = (Rstnode369011*)0;
  		LOC5 = newleaf_371177_3635346014(p0);
  		add_369146_4150536388(args0, LOC5);
  		(*p0).idx += ((NI) 1);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		args0 = NIM_NIL;
  	}
  	LA1: ;
  	n0 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), ((NimStringDesc*) &T3635346014_2));
  	{
  		while (1) {
  			switch ((*p0).tok->data[(*p0).idx].kind) {
  			case ((Toktype370119) 0):
  			{
  				rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 1), ((NimStringDesc*) &T3635346014_84));
  				goto LA7;
  			}
  			break;
  			case ((Toktype370119) 5):
  			{
  				{
  					if (!eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_84))) goto LA13;
  					(*p0).idx += ((NI) 1);
  					goto LA7;
  				}
  				goto LA11;
  				LA13: ;
  				{
  					(*n0).text = resizeString((*n0).text, (*p0).tok->data[(*p0).idx].symbol->Sup.len + 0);
  appendString((*n0).text, (*p0).tok->data[(*p0).idx].symbol);
  					(*p0).idx += ((NI) 1);
  				}
  				LA11: ;
  			}
  			break;
  			default:
  			{
  				(*n0).text = resizeString((*n0).text, (*p0).tok->data[(*p0).idx].symbol->Sup.len + 0);
  appendString((*n0).text, (*p0).tok->data[(*p0).idx].symbol);
  				(*p0).idx += ((NI) 1);
  			}
  			break;
  			}
  		}
  	} LA7: ;
  	lb0 = newrstnode_369101_4150536388(((Rstnodekind369005) 24));
  	add_369146_4150536388(lb0, n0);
  	result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 47));
  	add_369146_4150536388(result0, args0);
  	add_369146_4150536388(result0, NIM_NIL);
  	add_369146_4150536388(result0, lb0);
  	return result0;
  }
  
  N_NIMCALL(void, fixupembeddedref_371471_3635346014)(Rstnode369011* n0, Rstnode369011* a0, Rstnode369011* b0) {
  	NI sep0;
  	NI incr0;
  	sep0 = ((NI) -1);
  	{
  		NI i_371487_3635346014;
  		NI HEX3Atmp_371514_3635346014;
  		NI LOC2;
  		NI res_371517_3635346014;
  		i_371487_3635346014 = (NI)0;
  		HEX3Atmp_371514_3635346014 = (NI)0;
  		LOC2 = (NI)0;
  		LOC2 = len_369089_4150536388(n0);
  		HEX3Atmp_371514_3635346014 = (NI)(LOC2 - ((NI) 2));
  		res_371517_3635346014 = HEX3Atmp_371514_3635346014;
  		{
  			while (1) {
  				if (!(((NI) 0) <= res_371517_3635346014)) goto LA4;
  				i_371487_3635346014 = res_371517_3635346014;
  				{
  					if (!eqStrings((*(*n0).sons->data[i_371487_3635346014]).text, ((NimStringDesc*) &T3635346014_89))) goto LA7;
  					sep0 = i_371487_3635346014;
  					goto LA1;
  				}
  				LA7: ;
  				res_371517_3635346014 -= ((NI) 1);
  			} LA4: ;
  		}
  	} LA1: ;
  	{
  		NIM_BOOL LOC11;
  		LOC11 = (NIM_BOOL)0;
  		LOC11 = (((NI) 0) < sep0);
  		if (!(LOC11)) goto LA12;
  		LOC11 = ((NU8)((*(*n0).sons->data[(NI)(sep0 - ((NI) 1))]).text->data[((NI) 0)]) == (NU8)(32));
  		LA12: ;
  		if (!LOC11) goto LA13;
  		incr0 = ((NI) 2);
  	}
  	goto LA9;
  	LA13: ;
  	{
  		incr0 = ((NI) 1);
  	}
  	LA9: ;
  	{
  		NI i_371500_3635346014;
  		NI HEX3Atmp_371522_3635346014;
  		NI res_371525_3635346014;
  		i_371500_3635346014 = (NI)0;
  		HEX3Atmp_371522_3635346014 = (NI)0;
  		HEX3Atmp_371522_3635346014 = (NI)(sep0 - incr0);
  		res_371525_3635346014 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_371525_3635346014 <= HEX3Atmp_371522_3635346014)) goto LA18;
  				i_371500_3635346014 = res_371525_3635346014;
  				add_369146_4150536388(a0, (*n0).sons->data[i_371500_3635346014]);
  				res_371525_3635346014 += ((NI) 1);
  			} LA18: ;
  		}
  	}
  	{
  		NI i_371512_3635346014;
  		NI HEX3Atmp_371530_3635346014;
  		NI HEX3Atmp_371531_3635346014;
  		NI LOC20;
  		NI res_371534_3635346014;
  		i_371512_3635346014 = (NI)0;
  		HEX3Atmp_371530_3635346014 = (NI)0;
  		HEX3Atmp_371531_3635346014 = (NI)0;
  		HEX3Atmp_371530_3635346014 = (NI)(sep0 + ((NI) 1));
  		LOC20 = (NI)0;
  		LOC20 = len_369089_4150536388(n0);
  		HEX3Atmp_371531_3635346014 = (NI)(LOC20 - ((NI) 2));
  		res_371534_3635346014 = HEX3Atmp_371530_3635346014;
  		{
  			while (1) {
  				if (!(res_371534_3635346014 <= HEX3Atmp_371531_3635346014)) goto LA22;
  				i_371512_3635346014 = res_371534_3635346014;
  				add_369146_4150536388(b0, (*n0).sons->data[i_371512_3635346014]);
  				res_371534_3635346014 += ((NI) 1);
  			} LA22: ;
  		}
  	}
  }
  
  N_NIMCALL(void, setref_371106_3635346014)(Rstparser370500* p0, NimStringDesc* key0, Rstnode369011* value0) {
  	NI length0;
  	NimStringDesc* LOC14;
  {	length0 = ((*(*p0).s).refs ? (*(*p0).s).refs->Sup.len : 0);
  	{
  		NI i_371132_3635346014;
  		NI HEX3Atmp_371144_3635346014;
  		NI res_371147_3635346014;
  		i_371132_3635346014 = (NI)0;
  		HEX3Atmp_371144_3635346014 = (NI)0;
  		HEX3Atmp_371144_3635346014 = (NI)(length0 - ((NI) 1));
  		res_371147_3635346014 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_371147_3635346014 <= HEX3Atmp_371144_3635346014)) goto LA3;
  				i_371132_3635346014 = res_371147_3635346014;
  				{
  					if (!eqStrings(key0, (*(*p0).s).refs->data[i_371132_3635346014].key)) goto LA6;
  					{
  						NimStringDesc* LOC10;
  						NimStringDesc* LOC11;
  						LOC10 = (NimStringDesc*)0;
  						LOC10 = addnodes_370065_3635346014((*(*p0).s).refs->data[i_371132_3635346014].value);
  						LOC11 = (NimStringDesc*)0;
  						LOC11 = addnodes_370065_3635346014(value0);
  						if (!!(eqStrings(LOC10, LOC11))) goto LA12;
  						rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 6), key0);
  					}
  					LA12: ;
  					asgnRefNoCycle((void**) (&(*(*p0).s).refs->data[i_371132_3635346014].value), value0);
  					goto BeforeRet;
  				}
  				LA6: ;
  				res_371147_3635346014 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	(*(*p0).s).refs = (TY370510*) setLengthSeq(&((*(*p0).s).refs)->Sup, sizeof(Substitution370494), ((NI) ((NI)(length0 + ((NI) 1)))));
  	LOC14 = (NimStringDesc*)0;
  	LOC14 = (*(*p0).s).refs->data[length0].key; (*(*p0).s).refs->data[length0].key = copyStringRC1(key0);
  	if (LOC14) nimGCunrefNoCycle(LOC14);
  	asgnRefNoCycle((void**) (&(*(*p0).s).refs->data[length0].value), value0);
  	}BeforeRet: ;
  }
  
  N_NIMCALL(Rstnode369011*, parsepostfix_371538_3635346014)(Rstparser370500* p0, Rstnode369011* n0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = n0;
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = isinlinemarkupend_371248_3635346014((&(*p0)), ((NimStringDesc*) &T3635346014_86));
  		if (LOC3) goto LA4;
  		LOC3 = isinlinemarkupend_371248_3635346014((&(*p0)), ((NimStringDesc*) &T3635346014_87));
  		LA4: ;
  		if (!LOC3) goto LA5;
  		(*p0).idx += ((NI) 1);
  		{
  			NIM_BOOL LOC9;
  			Rstnode369011* a0;
  			Rstnode369011* b0;
  			LOC9 = (NIM_BOOL)0;
  			LOC9 = eqStrings((*p0).tok->data[(NI)((*p0).idx - ((NI) 2))].symbol, ((NimStringDesc*) &T3635346014_85));
  			if (!(LOC9)) goto LA10;
  			LOC9 = eqStrings((*p0).tok->data[(NI)((*p0).idx - ((NI) 3))].symbol, ((NimStringDesc*) &T3635346014_88));
  			LA10: ;
  			if (!LOC9) goto LA11;
  			a0 = newrstnode_369101_4150536388(((Rstnodekind369005) 0));
  			b0 = newrstnode_369101_4150536388(((Rstnodekind369005) 0));
  			fixupembeddedref_371471_3635346014(n0, a0, b0);
  			{
  				NI LOC15;
  				LOC15 = (NI)0;
  				LOC15 = len_369089_4150536388(a0);
  				if (!(LOC15 == ((NI) 0))) goto LA16;
  				result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 37));
  				add_369146_4150536388(result0, b0);
  			}
  			goto LA13;
  			LA16: ;
  			{
  				NimStringDesc* LOC19;
  				result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 38));
  				add_369146_4150536388(result0, a0);
  				add_369146_4150536388(result0, b0);
  				LOC19 = (NimStringDesc*)0;
  				LOC19 = rstnodetorefname_370062_3635346014(a0);
  				setref_371106_3635346014(p0, LOC19, b0);
  			}
  			LA13: ;
  		}
  		goto LA7;
  		LA11: ;
  		{
  			if (!((*n0).kind == ((Rstnodekind369005) 60))) goto LA21;
  			(*n0).kind = ((Rstnodekind369005) 39);
  		}
  		goto LA7;
  		LA21: ;
  		{
  			result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 39));
  			add_369146_4150536388(result0, n0);
  		}
  		LA7: ;
  	}
  	goto LA1;
  	LA5: ;
  	{
  		NIM_BOOL LOC25;
  		LOC25 = (NIM_BOOL)0;
  		LOC25 = match_371327_3635346014((&(*p0)), (*p0).idx, ((NimStringDesc*) &T3635346014_55));
  		if (!LOC25) goto LA26;
  		{
  			if (!eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_90))) goto LA30;
  			(*n0).kind = ((Rstnodekind369005) 56);
  		}
  		goto LA28;
  		LA30: ;
  		{
  			if (!eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_91))) goto LA33;
  			(*n0).kind = ((Rstnodekind369005) 61);
  		}
  		goto LA28;
  		LA33: ;
  		{
  			if (!eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_92))) goto LA36;
  			(*n0).kind = ((Rstnodekind369005) 58);
  		}
  		goto LA28;
  		LA36: ;
  		{
  			if (!eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_93))) goto LA39;
  			(*n0).kind = ((Rstnodekind369005) 57);
  		}
  		goto LA28;
  		LA39: ;
  		{
  			NIM_BOOL LOC42;
  			LOC42 = (NIM_BOOL)0;
  			LOC42 = eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_94));
  			if (LOC42) goto LA43;
  			LOC42 = eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_95));
  			LA43: ;
  			if (!LOC42) goto LA44;
  			(*n0).kind = ((Rstnodekind369005) 54);
  		}
  		goto LA28;
  		LA44: ;
  		{
  			NIM_BOOL LOC47;
  			LOC47 = (NIM_BOOL)0;
  			LOC47 = eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_96));
  			if (LOC47) goto LA48;
  			LOC47 = eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_97));
  			LA48: ;
  			if (!LOC47) goto LA49;
  			(*n0).kind = ((Rstnodekind369005) 55);
  		}
  		goto LA28;
  		LA49: ;
  		{
  			Rstnode369011* LOC52;
  			result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 53));
  			(*n0).kind = ((Rstnodekind369005) 0);
  			add_369146_4150536388(result0, n0);
  			LOC52 = (Rstnode369011*)0;
  			LOC52 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), (*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol);
  			add_369146_4150536388(result0, LOC52);
  		}
  		LA28: ;
  		(*p0).idx += ((NI) 3);
  	}
  	goto LA1;
  	LA26: ;
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(NI, matchverbatim_371573_3635346014)(Rstparser370500* p0, NI start0, NimStringDesc* expr0) {
  	NI result0;
  	NI j0;
  	result0 = (NI)0;
  	result0 = start0;
  	j0 = ((NI) 0);
  	{
  		while (1) {
  			NIM_BOOL LOC3;
  			NIM_BOOL LOC4;
  			LOC3 = (NIM_BOOL)0;
  			LOC4 = (NIM_BOOL)0;
  			LOC4 = (j0 < (expr0 ? expr0->Sup.len : 0));
  			if (!(LOC4)) goto LA5;
  			LOC4 = (result0 < ((*p0).tok ? (*p0).tok->Sup.len : 0));
  			LA5: ;
  			LOC3 = LOC4;
  			if (!(LOC3)) goto LA6;
  			LOC3 = nsuContinuesWith(expr0, (*p0).tok->data[result0].symbol, ((NI) (j0)));
  			LA6: ;
  			if (!LOC3) goto LA2;
  			j0 += ((*p0).tok->data[result0].symbol ? (*p0).tok->data[result0].symbol->Sup.len : 0);
  			result0 += ((NI) 1);
  		} LA2: ;
  	}
  	{
  		if (!(j0 < (expr0 ? expr0->Sup.len : 0))) goto LA9;
  		result0 = ((NI) 0);
  	}
  	LA9: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parsesmiley_371607_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  {	result0 = (Rstnode369011*)0;
  	{
  		if (!!((((NU8)((*p0).tok->data[(*p0).idx].symbol->data[((NI) 0)])) == ((NU8)(58)) || ((NU8)((*p0).tok->data[(*p0).idx].symbol->data[((NI) 0)])) == ((NU8)(59)) || ((NU8)((*p0).tok->data[(*p0).idx].symbol->data[((NI) 0)])) == ((NU8)(56))))) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		NimStringDesc* key_371648_3635346014;
  		NimStringDesc* val_371649_3635346014;
  		NI i_371654_3635346014;
  		key_371648_3635346014 = (NimStringDesc*)0;
  		val_371649_3635346014 = (NimStringDesc*)0;
  		i_371654_3635346014 = ((NI) 0);
  		{
  			if (!(((NI) (i_371654_3635346014)) <= ((NI) 33))) goto LA8;
  			{
  				while (1) {
  					NI m0;
  					key_371648_3635346014 = copyString(Smilies_370081_3635346014[(i_371654_3635346014)- 0].Field0);
  					val_371649_3635346014 = copyString(Smilies_370081_3635346014[(i_371654_3635346014)- 0].Field1);
  					m0 = matchverbatim_371573_3635346014((&(*p0)), (*p0).idx, key_371648_3635346014);
  					{
  						NimStringDesc* LOC16;
  						if (!(((NI) 0) < m0)) goto LA14;
  						(*p0).idx = m0;
  						result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 63));
  						LOC16 = (NimStringDesc*)0;
  						LOC16 = (*result0).text; (*result0).text = copyStringRC1(val_371649_3635346014);
  						if (LOC16) nimGCunrefNoCycle(LOC16);
  						goto BeforeRet;
  					}
  					LA14: ;
  					{
  						if (!(((NI) 33) <= ((NI) (i_371654_3635346014)))) goto LA19;
  						goto LA10;
  					}
  					LA19: ;
  					i_371654_3635346014 += ((NI) 1);
  				}
  			} LA10: ;
  		}
  		LA8: ;
  	}
  	}BeforeRet: ;
  	return result0;
  }
  
  static N_INLINE(NI, find_371829_1689653243)(NimStringDesc** a0, NI a0Len0, NimStringDesc* item0) {
  	NI result0;
  {	result0 = (NI)0;
  	{
  		NimStringDesc* i_371845_1689653243;
  		NI i_371858_1689653243;
  		i_371845_1689653243 = (NimStringDesc*)0;
  		i_371858_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(i_371858_1689653243 < a0Len0)) goto LA3;
  				i_371845_1689653243 = a0[i_371858_1689653243];
  				{
  					if (!eqStrings(i_371845_1689653243, item0)) goto LA6;
  					goto BeforeRet;
  				}
  				LA6: ;
  				result0 += ((NI) 1);
  				i_371858_1689653243 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	result0 = ((NI) -1);
  	}BeforeRet: ;
  	return result0;
  }
  
  static N_INLINE(NIM_BOOL, contains_371819_1689653243)(NimStringDesc** a0, NI a0Len0, NimStringDesc* item0) {
  	NIM_BOOL result0;
  	NI LOC1;
  {	result0 = (NIM_BOOL)0;
  	LOC1 = (NI)0;
  	LOC1 = find_371829_1689653243(a0, a0Len0, item0);
  	result0 = (((NI) 0) <= LOC1);
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, isurl_371801_3635346014)(Rstparser370500* p0, NI i0) {
  	NIM_BOOL result0;
  	NIM_BOOL LOC1;
  	NIM_BOOL LOC2;
  	NIM_BOOL LOC3;
  	result0 = (NIM_BOOL)0;
  	LOC1 = (NIM_BOOL)0;
  	LOC2 = (NIM_BOOL)0;
  	LOC3 = (NIM_BOOL)0;
  	LOC3 = eqStrings((*p0).tok->data[(NI)(i0 + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_156));
  	if (!(LOC3)) goto LA4;
  	LOC3 = eqStrings((*p0).tok->data[(NI)(i0 + ((NI) 2))].symbol, ((NimStringDesc*) &T3635346014_157));
  	LA4: ;
  	LOC2 = LOC3;
  	if (!(LOC2)) goto LA5;
  	LOC2 = ((*p0).tok->data[(NI)(i0 + ((NI) 3))].kind == ((Toktype370119) 3));
  	LA5: ;
  	LOC1 = LOC2;
  	if (!(LOC1)) goto LA6;
  	LOC1 = contains_371819_1689653243(T3635346014_158, 5, (*p0).tok->data[i0].symbol);
  	LA6: ;
  	result0 = LOC1;
  	return result0;
  }
  
  N_NIMCALL(void, parseurl_371859_3635346014)(Rstparser370500* p0, Rstnode369011* father0) {
  	{
  		NIM_BOOL LOC3;
  		Rstnode369011* n0;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = isurl_371801_3635346014((&(*p0)), (*p0).idx);
  		if (!LOC3) goto LA4;
  		n0 = newrstnode_369101_4150536388(((Rstnodekind369005) 37));
  		{
  			while (1) {
  				Rstnode369011* LOC15;
  				switch ((*p0).tok->data[(*p0).idx].kind) {
  				case ((Toktype370119) 3):
  				case ((Toktype370119) 4):
  				case ((Toktype370119) 6):
  				{
  				}
  				break;
  				case ((Toktype370119) 5):
  				{
  					{
  						if (!!(((120 &(1U<<((NU)((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].kind)&7U)))!=0))) goto LA12;
  						goto LA6;
  					}
  					LA12: ;
  				}
  				break;
  				default:
  				{
  					goto LA6;
  				}
  				break;
  				}
  				LOC15 = (Rstnode369011*)0;
  				LOC15 = newleaf_371177_3635346014(p0);
  				add_369146_4150536388(n0, LOC15);
  				(*p0).idx += ((NI) 1);
  			}
  		} LA6: ;
  		add_369146_4150536388(father0, n0);
  	}
  	goto LA1;
  	LA4: ;
  	{
  		Rstnode369011* n0;
  		n0 = newleaf_371177_3635346014(p0);
  		(*p0).idx += ((NI) 1);
  		{
  			if (!eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_86))) goto LA19;
  			n0 = parsepostfix_371538_3635346014(p0, n0);
  		}
  		LA19: ;
  		add_369146_4150536388(father0, n0);
  	}
  	LA1: ;
  }
  
  N_NIMCALL(void, parseinline_372328_3635346014)(Rstparser370500* p0, Rstnode369011* father0) {
  {	switch ((*p0).tok->data[(*p0).idx].kind) {
  	case ((Toktype370119) 5):
  	{
  		{
  			NIM_BOOL LOC4;
  			Rstnode369011* n0;
  			LOC4 = (NIM_BOOL)0;
  			LOC4 = isinlinemarkupstart_371286_3635346014((&(*p0)), ((NimStringDesc*) &T3635346014_78));
  			if (!LOC4) goto LA5;
  			n0 = newrstnode_369101_4150536388(((Rstnodekind369005) 59));
  			parseuntil_372201_3635346014(p0, n0, ((NimStringDesc*) &T3635346014_78), NIM_TRUE);
  			add_369146_4150536388(father0, n0);
  		}
  		goto LA2;
  		LA5: ;
  		{
  			NIM_BOOL LOC8;
  			Rstnode369011* n0;
  			LOC8 = (NIM_BOOL)0;
  			LOC8 = isinlinemarkupstart_371286_3635346014((&(*p0)), ((NimStringDesc*) &T3635346014_83));
  			if (!LOC8) goto LA9;
  			n0 = newrstnode_369101_4150536388(((Rstnodekind369005) 58));
  			parseuntil_372201_3635346014(p0, n0, ((NimStringDesc*) &T3635346014_83), NIM_TRUE);
  			add_369146_4150536388(father0, n0);
  		}
  		goto LA2;
  		LA9: ;
  		{
  			NIM_BOOL LOC12;
  			Rstnode369011* n0;
  			LOC12 = (NIM_BOOL)0;
  			LOC12 = isinlinemarkupstart_371286_3635346014((&(*p0)), ((NimStringDesc*) &T3635346014_51));
  			if (!LOC12) goto LA13;
  			n0 = newrstnode_369101_4150536388(((Rstnodekind369005) 57));
  			parseuntil_372201_3635346014(p0, n0, ((NimStringDesc*) &T3635346014_51), NIM_TRUE);
  			add_369146_4150536388(father0, n0);
  		}
  		goto LA2;
  		LA13: ;
  		{
  			NIM_BOOL LOC16;
  			Rstnode369011* LOC20;
  			LOC16 = (NIM_BOOL)0;
  			LOC16 = (((*(*p0).s).options &(1U<<((NU)(((Rstparseoption370003) 3))&7U)))!=0);
  			if (!(LOC16)) goto LA17;
  			LOC16 = eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_84));
  			LA17: ;
  			if (!LOC16) goto LA18;
  			(*p0).idx += ((NI) 1);
  			LOC20 = (Rstnode369011*)0;
  			LOC20 = parsemarkdowncodeblock_372274_3635346014(p0);
  			add_369146_4150536388(father0, LOC20);
  		}
  		goto LA2;
  		LA18: ;
  		{
  			NIM_BOOL LOC22;
  			Rstnode369011* n0;
  			LOC22 = (NIM_BOOL)0;
  			LOC22 = isinlinemarkupstart_371286_3635346014((&(*p0)), ((NimStringDesc*) &T3635346014_80));
  			if (!LOC22) goto LA23;
  			n0 = newrstnode_369101_4150536388(((Rstnodekind369005) 61));
  			parseuntil_372201_3635346014(p0, n0, ((NimStringDesc*) &T3635346014_80), NIM_FALSE);
  			add_369146_4150536388(father0, n0);
  		}
  		goto LA2;
  		LA23: ;
  		{
  			NIM_BOOL LOC26;
  			Rstnode369011* n0;
  			LOC26 = (NIM_BOOL)0;
  			LOC26 = isinlinemarkupstart_371286_3635346014((&(*p0)), ((NimStringDesc*) &T3635346014_85));
  			if (!LOC26) goto LA27;
  			n0 = newrstnode_369101_4150536388(((Rstnodekind369005) 60));
  			parseuntil_372201_3635346014(p0, n0, ((NimStringDesc*) &T3635346014_85), NIM_TRUE);
  			n0 = parsepostfix_371538_3635346014(p0, n0);
  			add_369146_4150536388(father0, n0);
  		}
  		goto LA2;
  		LA27: ;
  		{
  			NIM_BOOL LOC30;
  			Rstnode369011* n0;
  			LOC30 = (NIM_BOOL)0;
  			LOC30 = isinlinemarkupstart_371286_3635346014((&(*p0)), ((NimStringDesc*) &T3635346014_53));
  			if (!LOC30) goto LA31;
  			n0 = newrstnode_369101_4150536388(((Rstnodekind369005) 62));
  			parseuntil_372201_3635346014(p0, n0, ((NimStringDesc*) &T3635346014_53), NIM_FALSE);
  			add_369146_4150536388(father0, n0);
  		}
  		goto LA2;
  		LA31: ;
  		{
  			{
  				Rstnode369011* n0;
  				if (!(((*(*p0).s).options &(1U<<((NU)(((Rstparseoption370003) 1))&7U)))!=0)) goto LA36;
  				n0 = parsesmiley_371607_3635346014(p0);
  				{
  					if (!!((n0 == NIM_NIL))) goto LA40;
  					add_369146_4150536388(father0, n0);
  					goto BeforeRet;
  				}
  				LA40: ;
  			}
  			LA36: ;
  			parsebackslash_371896_3635346014(p0, father0);
  		}
  		LA2: ;
  	}
  	break;
  	case ((Toktype370119) 3):
  	{
  		{
  			Rstnode369011* n0;
  			if (!(((*(*p0).s).options &(1U<<((NU)(((Rstparseoption370003) 1))&7U)))!=0)) goto LA45;
  			n0 = parsesmiley_371607_3635346014(p0);
  			{
  				if (!!((n0 == NIM_NIL))) goto LA49;
  				add_369146_4150536388(father0, n0);
  				goto BeforeRet;
  			}
  			LA49: ;
  		}
  		LA45: ;
  		parseurl_371859_3635346014(p0, father0);
  	}
  	break;
  	case ((Toktype370119) 4):
  	case ((Toktype370119) 6):
  	case ((Toktype370119) 2):
  	{
  		Rstnode369011* LOC60;
  		{
  			Rstnode369011* n0;
  			if (!(((*(*p0).s).options &(1U<<((NU)(((Rstparseoption370003) 1))&7U)))!=0)) goto LA54;
  			n0 = parsesmiley_371607_3635346014(p0);
  			{
  				if (!!((n0 == NIM_NIL))) goto LA58;
  				add_369146_4150536388(father0, n0);
  				goto BeforeRet;
  			}
  			LA58: ;
  		}
  		LA54: ;
  		LOC60 = (Rstnode369011*)0;
  		LOC60 = newleaf_371177_3635346014(p0);
  		add_369146_4150536388(father0, LOC60);
  		(*p0).idx += ((NI) 1);
  	}
  	break;
  	default:
  	{
  	}
  	break;
  	}
  	}BeforeRet: ;
  }
  
  N_NIMCALL(void, parseline_372685_3635346014)(Rstparser370500* p0, Rstnode369011* father0) {
  	{
  		while (1) {
  			switch ((*p0).tok->data[(*p0).idx].kind) {
  			case ((Toktype370119) 2):
  			case ((Toktype370119) 3):
  			case ((Toktype370119) 6):
  			case ((Toktype370119) 5):
  			{
  				parseinline_372328_3635346014(p0, father0);
  			}
  			break;
  			default:
  			{
  				goto LA1;
  			}
  			break;
  			}
  		}
  	} LA1: ;
  }
  
  N_NIMCALL(Rstnode369011*, parsefield_372702_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	NI col0;
  	Rstnode369011* fieldname0;
  	Rstnode369011* fieldbody0;
  	result0 = (Rstnode369011*)0;
  	result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 14));
  	col0 = (*p0).tok->data[(*p0).idx].col;
  	fieldname0 = newrstnode_369101_4150536388(((Rstnodekind369005) 15));
  	parseuntil_372201_3635346014(p0, fieldname0, ((NimStringDesc*) &T3635346014_156), NIM_FALSE);
  	fieldbody0 = newrstnode_369101_4150536388(((Rstnodekind369005) 16));
  	{
  		if (!!(((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1)))) goto LA3;
  		parseline_372685_3635346014(p0, fieldbody0);
  	}
  	LA3: ;
  	{
  		NI indent0;
  		if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1))) goto LA7;
  		indent0 = (*p0).tok->data[(*p0).idx].ival;
  		{
  			if (!(col0 < indent0)) goto LA11;
  			pushind_370805_3635346014(p0, indent0);
  			parsesection_372697_3635346014(p0, fieldbody0);
  			popind_370820_3635346014(p0);
  		}
  		LA11: ;
  	}
  	LA7: ;
  	add_369146_4150536388(result0, fieldname0);
  	add_369146_4150536388(result0, fieldbody0);
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parsefields_372729_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	NIM_BOOL atstart0;
  	NIM_BOOL LOC1;
  	result0 = (Rstnode369011*)0;
  	result0 = NIM_NIL;
  	LOC1 = (NIM_BOOL)0;
  	LOC1 = ((*p0).idx == ((NI) 0));
  	if (!(LOC1)) goto LA2;
  	LOC1 = eqStrings((*p0).tok->data[((NI) 0)].symbol, ((NimStringDesc*) &T3635346014_156));
  	LA2: ;
  	atstart0 = LOC1;
  	{
  		NIM_BOOL LOC5;
  		NIM_BOOL LOC6;
  		NI col0;
  		LOC5 = (NIM_BOOL)0;
  		LOC6 = (NIM_BOOL)0;
  		LOC6 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1));
  		if (!(LOC6)) goto LA7;
  		LOC6 = eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_156));
  		LA7: ;
  		LOC5 = LOC6;
  		if (LOC5) goto LA8;
  		LOC5 = atstart0;
  		LA8: ;
  		if (!LOC5) goto LA9;
  		{
  			if (!atstart0) goto LA13;
  			col0 = (*p0).tok->data[(*p0).idx].col;
  		}
  		goto LA11;
  		LA13: ;
  		{
  			col0 = (*p0).tok->data[(*p0).idx].ival;
  		}
  		LA11: ;
  		result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 13));
  		{
  			if (!!(atstart0)) goto LA18;
  			(*p0).idx += ((NI) 1);
  		}
  		LA18: ;
  		{
  			while (1) {
  				Rstnode369011* LOC22;
  				LOC22 = (Rstnode369011*)0;
  				LOC22 = parsefield_372702_3635346014(p0);
  				add_369146_4150536388(result0, LOC22);
  				{
  					NIM_BOOL LOC25;
  					NIM_BOOL LOC26;
  					LOC25 = (NIM_BOOL)0;
  					LOC26 = (NIM_BOOL)0;
  					LOC26 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1));
  					if (!(LOC26)) goto LA27;
  					LOC26 = ((*p0).tok->data[(*p0).idx].ival == col0);
  					LA27: ;
  					LOC25 = LOC26;
  					if (!(LOC25)) goto LA28;
  					LOC25 = eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_156));
  					LA28: ;
  					if (!LOC25) goto LA29;
  					(*p0).idx += ((NI) 1);
  				}
  				goto LA23;
  				LA29: ;
  				{
  					goto LA20;
  				}
  				LA23: ;
  			}
  		} LA20: ;
  	}
  	LA9: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parsedirective_375225_3635346014)(Rstparser370500* p0, Dirflag375202Set flags0) {
  	Rstnode369011* result0;
  	Rstnode369011* args0;
  	Rstnode369011* options0;
  	result0 = (Rstnode369011*)0;
  	result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 40));
  	args0 = NIM_NIL;
  	options0 = NIM_NIL;
  	{
  		if (!((flags0 &(1U<<((NU)(((Dirflag375202) 0))&7U)))!=0)) goto LA3;
  		args0 = newrstnode_369101_4150536388(((Rstnodekind369005) 41));
  		{
  			if (!((flags0 &(1U<<((NU)(((Dirflag375202) 2))&7U)))!=0)) goto LA7;
  			{
  				while (1) {
  					switch ((*p0).tok->data[(*p0).idx].kind) {
  					case ((Toktype370119) 3):
  					case ((Toktype370119) 6):
  					case ((Toktype370119) 5):
  					case ((Toktype370119) 4):
  					{
  						Rstnode369011* LOC12;
  						LOC12 = (Rstnode369011*)0;
  						LOC12 = newleaf_371177_3635346014(p0);
  						add_369146_4150536388(args0, LOC12);
  						(*p0).idx += ((NI) 1);
  					}
  					break;
  					default:
  					{
  						goto LA9;
  					}
  					break;
  					}
  				}
  			} LA9: ;
  		}
  		goto LA5;
  		LA7: ;
  		{
  			if (!((flags0 &(1U<<((NU)(((Dirflag375202) 3))&7U)))!=0)) goto LA15;
  			{
  				while (1) {
  					if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 2))) goto LA18;
  					(*p0).idx += ((NI) 1);
  				} LA18: ;
  			}
  			{
  				Rstnode369011* LOC23;
  				if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 3))) goto LA21;
  				LOC23 = (Rstnode369011*)0;
  				LOC23 = newleaf_371177_3635346014(p0);
  				add_369146_4150536388(args0, LOC23);
  				(*p0).idx += ((NI) 1);
  			}
  			goto LA19;
  			LA21: ;
  			{
  				args0 = NIM_NIL;
  			}
  			LA19: ;
  		}
  		goto LA5;
  		LA15: ;
  		{
  			parseline_372685_3635346014(p0, args0);
  		}
  		LA5: ;
  	}
  	LA3: ;
  	add_369146_4150536388(result0, args0);
  	{
  		if (!((flags0 &(1U<<((NU)(((Dirflag375202) 1))&7U)))!=0)) goto LA28;
  		{
  			NIM_BOOL LOC32;
  			NIM_BOOL LOC33;
  			LOC32 = (NIM_BOOL)0;
  			LOC33 = (NIM_BOOL)0;
  			LOC33 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1));
  			if (!(LOC33)) goto LA34;
  			LOC33 = (((NI) 3) <= (*p0).tok->data[(*p0).idx].ival);
  			LA34: ;
  			LOC32 = LOC33;
  			if (!(LOC32)) goto LA35;
  			LOC32 = eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_156));
  			LA35: ;
  			if (!LOC32) goto LA36;
  			options0 = parsefields_372729_3635346014(p0);
  		}
  		LA36: ;
  	}
  	LA28: ;
  	add_369146_4150536388(result0, options0);
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, indfollows_375331_3635346014)(Rstparser370500* p0) {
  	NIM_BOOL result0;
  	NIM_BOOL LOC1;
  	NI LOC3;
  	result0 = (NIM_BOOL)0;
  	LOC1 = (NIM_BOOL)0;
  	LOC1 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1));
  	if (!(LOC1)) goto LA2;
  	LOC3 = (NI)0;
  	LOC3 = currind_370801_3635346014(p0);
  	LOC1 = (LOC3 < (*p0).tok->data[(*p0).idx].ival);
  	LA2: ;
  	result0 = LOC1;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parsedirective_375344_3635346014)(Rstparser370500* p0, Dirflag375202Set flags0, Sectionparser375206 contentparser0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = parsedirective_375225_3635346014(p0, flags0);
  	{
  		NIM_BOOL LOC3;
  		Rstnode369011* content0;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = !(contentparser0 == 0);
  		if (!(LOC3)) goto LA4;
  		LOC3 = indfollows_375331_3635346014((&(*p0)));
  		LA4: ;
  		if (!LOC3) goto LA5;
  		pushind_370805_3635346014(p0, (*p0).tok->data[(*p0).idx].ival);
  		content0 = contentparser0(p0);
  		popind_370820_3635346014(p0);
  		add_369146_4150536388(result0, content0);
  	}
  	goto LA1;
  	LA5: ;
  	{
  		add_369146_4150536388(result0, NIM_NIL);
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, findrelativefile_370719_3635346014)(Rstparser370500* p0, NimStringDesc* filename0) {
  	NimStringDesc* result0;
  	TY129506 LOC1;
  	result0 = (NimStringDesc*)0;
  	memset((void*)(&LOC1), 0, sizeof(LOC1));
  	nossplitFile((*p0).filename, (&LOC1));
  	result0 = HEX2F_129265_2125978480(LOC1.Field0, filename0);
  	{
  		NIM_BOOL LOC4;
  		LOC4 = (NIM_BOOL)0;
  		LOC4 = nosexistsFile(result0);
  		if (!!(LOC4)) goto LA5;
  		result0 = (*(*p0).s).findfile(filename0);
  	}
  	LA5: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, dirinclude_375365_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	Rstnode369011* n0;
  	NimStringDesc* filename0;
  	NimStringDesc* LOC1;
  	NimStringDesc* path0;
  	result0 = (Rstnode369011*)0;
  	result0 = NIM_NIL;
  	n0 = parsedirective_375344_3635346014(p0, 7, NIM_NIL);
  	LOC1 = (NimStringDesc*)0;
  	LOC1 = addnodes_370065_3635346014((*n0).sons->data[((NI) 0)]);
  	filename0 = nsuStrip(LOC1, NIM_TRUE, NIM_TRUE, T3635346014_4);
  	path0 = findrelativefile_370719_3635346014((&(*p0)), filename0);
  	{
  		if (!((path0) && (path0)->Sup.len == 0)) goto LA4;
  		rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 0), filename0);
  	}
  	goto LA2;
  	LA4: ;
  	{
  		{
  			NimStringDesc* LOC9;
  			NimStringDesc* LOC12;
  			Rstnode369011* LOC13;
  			LOC9 = (NimStringDesc*)0;
  			LOC9 = getfieldvalue_370068_3635346014(n0, ((NimStringDesc*) &T3635346014_91));
  			if (!!(((LOC9) && (LOC9)->Sup.len == 0))) goto LA10;
  			result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 24));
  			LOC12 = (NimStringDesc*)0;
  			LOC12 = readfile_14868_1689653243(path0);
  			LOC13 = (Rstnode369011*)0;
  			LOC13 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), LOC12);
  			add_369146_4150536388(result0, LOC13);
  		}
  		goto LA7;
  		LA10: ;
  		{
  			Rstparser370500 q0;
  			NimStringDesc* LOC15;
  			NI LOC16;
  			memset((void*)(&q0), 0, sizeof(q0));
  			q0.Sup.m_type = (&NTI370500);
  			initparser_370850_3635346014((&q0), (*p0).s);
  			q0.filename = copyString(path0);
  			LOC15 = (NimStringDesc*)0;
  			LOC15 = readfile_14868_1689653243(path0);
  			LOC16 = (NI)0;
  			LOC16 = gettokens_370360_3635346014(LOC15, NIM_FALSE, (&q0.tok));
  			q0.col += LOC16;
  			result0 = parsedoc_374257_3635346014((&q0));
  		}
  		LA7: ;
  	}
  	LA2: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, dirimage_376001_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = parsedirective_375344_3635346014(p0, 7, NIM_NIL);
  	(*result0).kind = ((Rstnodekind369005) 45);
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, dirfigure_376007_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = parsedirective_375344_3635346014(p0, 7, parsesectionwrapper_375091_3635346014);
  	(*result0).kind = ((Rstnodekind369005) 46);
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, dirtitle_376013_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = parsedirective_375344_3635346014(p0, 1, NIM_NIL);
  	(*result0).kind = ((Rstnodekind369005) 43);
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, dircontainer_375602_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = parsedirective_375344_3635346014(p0, 1, parsesectionwrapper_375091_3635346014);
  	(*result0).kind = ((Rstnodekind369005) 50);
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, dircontents_376019_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = parsedirective_375344_3635346014(p0, 1, NIM_NIL);
  	(*result0).kind = ((Rstnodekind369005) 44);
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parsedirbody_375359_3635346014)(Rstparser370500* p0, Sectionparser375206 contentparser0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = indfollows_375331_3635346014((&(*p0)));
  		if (!LOC3) goto LA4;
  		pushind_370805_3635346014(p0, (*p0).tok->data[(*p0).idx].ival);
  		result0 = contentparser0(p0);
  		popind_370820_3635346014(p0);
  	}
  	LA4: ;
  	return result0;
  }
  
  N_NIMCALL(void, dirrawaux_376032_3635346014)(Rstparser370500* p0, Rstnode369011** result0, Rstnodekind369005 kind0, Sectionparser375206 contentparser0) {
  	NimStringDesc* filename0;
  	filename0 = getfieldvalue_370068_3635346014((*result0), ((NimStringDesc*) &T3635346014_163));
  	{
  		NimStringDesc* path0;
  		if (!(((NI) 0) < (filename0 ? filename0->Sup.len : 0))) goto LA3;
  		path0 = findrelativefile_370719_3635346014((&(*p0)), filename0);
  		{
  			if (!((path0 ? path0->Sup.len : 0) == ((NI) 0))) goto LA7;
  			rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 0), filename0);
  		}
  		goto LA5;
  		LA7: ;
  		{
  			NimStringDesc* f0;
  			Rstnode369011* LOC10;
  			f0 = readfile_14868_1689653243(path0);
  			unsureAsgnRef((void**) (&(*result0)), newrstnode_369101_4150536388(kind0));
  			LOC10 = (Rstnode369011*)0;
  			LOC10 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), f0);
  			add_369146_4150536388((*result0), LOC10);
  		}
  		LA5: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		Rstnode369011* LOC12;
  		(*(*result0)).kind = kind0;
  		LOC12 = (Rstnode369011*)0;
  		LOC12 = parsedirbody_375359_3635346014(p0, contentparser0);
  		add_369146_4150536388((*result0), LOC12);
  	}
  	LA1: ;
  }
  
  N_NIMCALL(Rstnode369011*, dirraw_376043_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = parsedirective_375225_3635346014(p0, 11);
  	{
  		if (!!(((*result0).sons->data[((NI) 0)] == NIM_NIL))) goto LA3;
  		{
  			NI LOC7;
  			LOC7 = (NI)0;
  			LOC7 = nsuCmpIgnoreCase((*(*(*result0).sons->data[((NI) 0)]).sons->data[((NI) 0)]).text, ((NimStringDesc*) &T3635346014_164));
  			if (!(LOC7 == ((NI) 0))) goto LA8;
  			dirrawaux_376032_3635346014(p0, &result0, ((Rstnodekind369005) 48), parseliteralblock_373468_3635346014);
  		}
  		goto LA5;
  		LA8: ;
  		{
  			NI LOC11;
  			LOC11 = (NI)0;
  			LOC11 = nsuCmpIgnoreCase((*(*(*result0).sons->data[((NI) 0)]).sons->data[((NI) 0)]).text, ((NimStringDesc*) &T3635346014_165));
  			if (!(LOC11 == ((NI) 0))) goto LA12;
  			dirrawaux_376032_3635346014(p0, &result0, ((Rstnodekind369005) 49), parseliteralblock_373468_3635346014);
  		}
  		goto LA5;
  		LA12: ;
  		{
  			rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 5), (*(*(*result0).sons->data[((NI) 0)]).sons->data[((NI) 0)]).text);
  		}
  		LA5: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		dirrawaux_376032_3635346014(p0, &result0, ((Rstnodekind369005) 42), parsesectionwrapper_375091_3635346014);
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, dircodeblock_375388_3635346014)(Rstparser370500* p0, NIM_BOOL nimextension0) {
  	Rstnode369011* result0;
  	NimStringDesc* filename0;
  	NimStringDesc* LOC1;
  	result0 = (Rstnode369011*)0;
  	result0 = parsedirective_375344_3635346014(p0, 3, parseliteralblock_373468_3635346014);
  	LOC1 = (NimStringDesc*)0;
  	LOC1 = getfieldvalue_370068_3635346014(result0, ((NimStringDesc*) &T3635346014_163));
  	filename0 = nsuStrip(LOC1, NIM_TRUE, NIM_TRUE, T3635346014_4);
  	{
  		NimStringDesc* path0;
  		Rstnode369011* n0;
  		NimStringDesc* LOC10;
  		Rstnode369011* LOC11;
  		if (!!(((filename0) && (filename0)->Sup.len == 0))) goto LA4;
  		path0 = findrelativefile_370719_3635346014((&(*p0)), filename0);
  		{
  			if (!((path0) && (path0)->Sup.len == 0)) goto LA8;
  			rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 0), filename0);
  		}
  		LA8: ;
  		n0 = newrstnode_369101_4150536388(((Rstnodekind369005) 24));
  		LOC10 = (NimStringDesc*)0;
  		LOC10 = readfile_14868_1689653243(path0);
  		LOC11 = (Rstnode369011*)0;
  		LOC11 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), LOC10);
  		add_369146_4150536388(n0, LOC11);
  		asgnRefNoCycle((void**) (&(*result0).sons->data[((NI) 2)]), n0);
  	}
  	LA4: ;
  	{
  		Rstnode369011* extranode0;
  		Rstnode369011* LOC20;
  		Rstnode369011* LOC21;
  		Rstnode369011* LOC22;
  		Rstnode369011* LOC23;
  		if (!nimextension0) goto LA14;
  		{
  			if (!(*result0).sons->data[((NI) 1)] == 0) goto LA18;
  			asgnRefNoCycle((void**) (&(*result0).sons->data[((NI) 1)]), newrstnode_369101_4150536388(((Rstnodekind369005) 13)));
  		}
  		LA18: ;
  		extranode0 = newrstnode_369101_4150536388(((Rstnodekind369005) 14));
  		LOC20 = (Rstnode369011*)0;
  		LOC20 = newrstnode_369101_4150536388(((Rstnodekind369005) 15));
  		add_369146_4150536388(extranode0, LOC20);
  		LOC21 = (Rstnode369011*)0;
  		LOC21 = newrstnode_369101_4150536388(((Rstnodekind369005) 16));
  		add_369146_4150536388(extranode0, LOC21);
  		LOC22 = (Rstnode369011*)0;
  		LOC22 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), ((NimStringDesc*) &T3635346014_166));
  		add_369146_4150536388((*extranode0).sons->data[((NI) 0)], LOC22);
  		LOC23 = (Rstnode369011*)0;
  		LOC23 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), ((NimStringDesc*) &T3635346014_167));
  		add_369146_4150536388((*extranode0).sons->data[((NI) 1)], LOC23);
  		add_369146_4150536388((*result0).sons->data[((NI) 1)], extranode0);
  	}
  	LA14: ;
  	(*result0).kind = ((Rstnodekind369005) 47);
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, dirindex_376025_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = parsedirective_375344_3635346014(p0, 0, parsesectionwrapper_375091_3635346014);
  	(*result0).kind = ((Rstnodekind369005) 51);
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, getreferencename_371182_3635346014)(Rstparser370500* p0, NimStringDesc* endstr0) {
  	Rstnode369011* result0;
  	Rstnode369011* res0;
  	result0 = (Rstnode369011*)0;
  	res0 = newrstnode_369101_4150536388(((Rstnodekind369005) 0));
  	{
  		while (1) {
  			switch ((*p0).tok->data[(*p0).idx].kind) {
  			case ((Toktype370119) 3):
  			case ((Toktype370119) 6):
  			case ((Toktype370119) 2):
  			{
  				Rstnode369011* LOC4;
  				LOC4 = (Rstnode369011*)0;
  				LOC4 = newleaf_371177_3635346014(p0);
  				add_369146_4150536388(res0, LOC4);
  			}
  			break;
  			case ((Toktype370119) 5):
  			{
  				{
  					if (!eqStrings((*p0).tok->data[(*p0).idx].symbol, endstr0)) goto LA8;
  					(*p0).idx += ((NI) 1);
  					goto LA1;
  				}
  				goto LA6;
  				LA8: ;
  				{
  					Rstnode369011* LOC11;
  					LOC11 = (Rstnode369011*)0;
  					LOC11 = newleaf_371177_3635346014(p0);
  					add_369146_4150536388(res0, LOC11);
  				}
  				LA6: ;
  			}
  			break;
  			default:
  			{
  				rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 1), endstr0);
  				goto LA1;
  			}
  			break;
  			}
  			(*p0).idx += ((NI) 1);
  		}
  	} LA1: ;
  	result0 = res0;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, untileol_371208_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 0));
  	{
  		while (1) {
  			Rstnode369011* LOC3;
  			if (!!(((3 &(1U<<((NU)((*p0).tok->data[(*p0).idx].kind)&7U)))!=0))) goto LA2;
  			LOC3 = (Rstnode369011*)0;
  			LOC3 = newleaf_371177_3635346014(p0);
  			add_369146_4150536388(result0, LOC3);
  			(*p0).idx += ((NI) 1);
  		} LA2: ;
  	}
  	return result0;
  }
  
  N_NIMCALL(void, expect_371234_3635346014)(Rstparser370500* p0, NimStringDesc* tok0) {
  	{
  		if (!eqStrings((*p0).tok->data[(*p0).idx].symbol, tok0)) goto LA3;
  		(*p0).idx += ((NI) 1);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 1), tok0);
  	}
  	LA1: ;
  }
  
  N_NIMCALL(void, setsub_371061_3635346014)(Rstparser370500* p0, NimStringDesc* key0, Rstnode369011* value0) {
  	NI length0;
  	NimStringDesc* LOC8;
  {	length0 = ((*(*p0).s).subs ? (*(*p0).s).subs->Sup.len : 0);
  	{
  		NI i_371087_3635346014;
  		NI HEX3Atmp_371099_3635346014;
  		NI res_371102_3635346014;
  		i_371087_3635346014 = (NI)0;
  		HEX3Atmp_371099_3635346014 = (NI)0;
  		HEX3Atmp_371099_3635346014 = (NI)(length0 - ((NI) 1));
  		res_371102_3635346014 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_371102_3635346014 <= HEX3Atmp_371099_3635346014)) goto LA3;
  				i_371087_3635346014 = res_371102_3635346014;
  				{
  					if (!eqStrings(key0, (*(*p0).s).subs->data[i_371087_3635346014].key)) goto LA6;
  					asgnRefNoCycle((void**) (&(*(*p0).s).subs->data[i_371087_3635346014].value), value0);
  					goto BeforeRet;
  				}
  				LA6: ;
  				res_371102_3635346014 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	(*(*p0).s).subs = (TY370510*) setLengthSeq(&((*(*p0).s).subs)->Sup, sizeof(Substitution370494), ((NI) ((NI)(length0 + ((NI) 1)))));
  	LOC8 = (NimStringDesc*)0;
  	LOC8 = (*(*p0).s).subs->data[length0].key; (*(*p0).s).subs->data[length0].key = copyStringRC1(key0);
  	if (LOC8) nimGCunrefNoCycle(LOC8);
  	asgnRefNoCycle((void**) (&(*(*p0).s).subs->data[length0].value), value0);
  	}BeforeRet: ;
  }
  
  N_NIMCALL(Rstnode369011*, parsecomment_372544_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	switch ((*p0).tok->data[(*p0).idx].kind) {
  	case ((Toktype370119) 1):
  	case ((Toktype370119) 0):
  	{
  		{
  			NIM_BOOL LOC4;
  			LOC4 = (NIM_BOOL)0;
  			LOC4 = !(((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 0)));
  			if (!(LOC4)) goto LA5;
  			LOC4 = ((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].kind == ((Toktype370119) 1));
  			LA5: ;
  			if (!LOC4) goto LA6;
  			(*p0).idx += ((NI) 1);
  		}
  		goto LA2;
  		LA6: ;
  		{
  			NI indent0;
  			indent0 = (*p0).tok->data[(*p0).idx].ival;
  			{
  				while (1) {
  					switch ((*p0).tok->data[(*p0).idx].kind) {
  					case ((Toktype370119) 0):
  					{
  						goto LA9;
  					}
  					break;
  					case ((Toktype370119) 1):
  					{
  						{
  							if (!((*p0).tok->data[(*p0).idx].ival < indent0)) goto LA15;
  							goto LA9;
  						}
  						LA15: ;
  					}
  					break;
  					default:
  					{
  					}
  					break;
  					}
  					(*p0).idx += ((NI) 1);
  				}
  			} LA9: ;
  		}
  		LA2: ;
  	}
  	break;
  	default:
  	{
  		{
  			while (1) {
  				if (!!(((3 &(1U<<((NU)((*p0).tok->data[(*p0).idx].kind)&7U)))!=0))) goto LA20;
  				(*p0).idx += ((NI) 1);
  			} LA20: ;
  		}
  	}
  	break;
  	}
  	result0 = NIM_NIL;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parsedotdot_373464_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	NI col0;
  	NimStringDesc* d0;
  	result0 = (Rstnode369011*)0;
  	result0 = NIM_NIL;
  	col0 = (*p0).tok->data[(*p0).idx].col;
  	(*p0).idx += ((NI) 1);
  	d0 = getdirective_372436_3635346014(p0);
  	{
  		Dirkind372609 LOC5;
  		if (!!(((d0) && (d0)->Sup.len == 0))) goto LA3;
  		pushind_370805_3635346014(p0, col0);
  		LOC5 = (Dirkind372609)0;
  		LOC5 = getdirkind_372630_3635346014(d0);
  		switch (LOC5) {
  		case ((Dirkind372609) 9):
  		{
  			result0 = dirinclude_375365_3635346014(p0);
  		}
  		break;
  		case ((Dirkind372609) 8):
  		{
  			result0 = dirimage_376001_3635346014(p0);
  		}
  		break;
  		case ((Dirkind372609) 7):
  		{
  			result0 = dirfigure_376007_3635346014(p0);
  		}
  		break;
  		case ((Dirkind372609) 12):
  		{
  			result0 = dirtitle_376013_3635346014(p0);
  		}
  		break;
  		case ((Dirkind372609) 5):
  		{
  			result0 = dircontainer_375602_3635346014(p0);
  		}
  		break;
  		case ((Dirkind372609) 6):
  		{
  			result0 = dircontents_376019_3635346014(p0);
  		}
  		break;
  		case ((Dirkind372609) 11):
  		{
  			{
  				if (!(((*(*p0).s).options &(1U<<((NU)(((Rstparseoption370003) 2))&7U)))!=0)) goto LA15;
  				result0 = dirraw_376043_3635346014(p0);
  			}
  			goto LA13;
  			LA15: ;
  			{
  				rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 5), d0);
  			}
  			LA13: ;
  		}
  		break;
  		case ((Dirkind372609) 3):
  		{
  			result0 = dircodeblock_375388_3635346014(p0, NIM_FALSE);
  		}
  		break;
  		case ((Dirkind372609) 4):
  		{
  			result0 = dircodeblock_375388_3635346014(p0, NIM_TRUE);
  		}
  		break;
  		case ((Dirkind372609) 10):
  		{
  			result0 = dirindex_376025_3635346014(p0);
  		}
  		break;
  		default:
  		{
  			rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 5), d0);
  		}
  		break;
  		}
  		popind_370820_3635346014(p0);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		NIM_BOOL LOC23;
  		Rstnode369011* a0;
  		Rstnode369011* b0;
  		NimStringDesc* LOC30;
  		LOC23 = (NIM_BOOL)0;
  		LOC23 = match_371327_3635346014((&(*p0)), (*p0).idx, ((NimStringDesc*) &T3635346014_168));
  		if (!LOC23) goto LA24;
  		(*p0).idx += ((NI) 2);
  		a0 = getreferencename_371182_3635346014(p0, ((NimStringDesc*) &T3635346014_156));
  		{
  			if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 2))) goto LA28;
  			(*p0).idx += ((NI) 1);
  		}
  		LA28: ;
  		b0 = untileol_371208_3635346014(p0);
  		LOC30 = (NimStringDesc*)0;
  		LOC30 = rstnodetorefname_370062_3635346014(a0);
  		setref_371106_3635346014(p0, LOC30, b0);
  	}
  	goto LA1;
  	LA24: ;
  	{
  		NIM_BOOL LOC32;
  		Rstnode369011* a0;
  		Rstnode369011* b0;
  		NimStringDesc* LOC49;
  		LOC32 = (NIM_BOOL)0;
  		LOC32 = match_371327_3635346014((&(*p0)), (*p0).idx, ((NimStringDesc*) &T3635346014_169));
  		if (!LOC32) goto LA33;
  		(*p0).idx += ((NI) 2);
  		a0 = getreferencename_371182_3635346014(p0, ((NimStringDesc*) &T3635346014_53));
  		b0 = (Rstnode369011*)0;
  		{
  			if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 2))) goto LA37;
  			(*p0).idx += ((NI) 1);
  		}
  		LA37: ;
  		{
  			NI LOC41;
  			LOC41 = (NI)0;
  			LOC41 = nsuCmpIgnoreStyle((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_170));
  			if (!(LOC41 == ((NI) 0))) goto LA42;
  			(*p0).idx += ((NI) 1);
  			expect_371234_3635346014(p0, ((NimStringDesc*) &T3635346014_49));
  			b0 = untileol_371208_3635346014(p0);
  		}
  		goto LA39;
  		LA42: ;
  		{
  			NI LOC45;
  			LOC45 = (NI)0;
  			LOC45 = nsuCmpIgnoreStyle((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_71));
  			if (!(LOC45 == ((NI) 0))) goto LA46;
  			(*p0).idx += ((NI) 1);
  			b0 = dirimage_376001_3635346014(p0);
  		}
  		goto LA39;
  		LA46: ;
  		{
  			rstmessage_370724_3635346014((&(*p0)), ((Msgkind370009) 5), (*p0).tok->data[(*p0).idx].symbol);
  		}
  		LA39: ;
  		LOC49 = (NimStringDesc*)0;
  		LOC49 = addnodes_370065_3635346014(a0);
  		setsub_371061_3635346014(p0, LOC49, b0);
  	}
  	goto LA1;
  	LA33: ;
  	{
  		NIM_BOOL LOC51;
  		Rstnode369011* a0;
  		Rstnode369011* b0;
  		NimStringDesc* LOC58;
  		LOC51 = (NIM_BOOL)0;
  		LOC51 = match_371327_3635346014((&(*p0)), (*p0).idx, ((NimStringDesc*) &T3635346014_171));
  		if (!LOC51) goto LA52;
  		(*p0).idx += ((NI) 2);
  		a0 = getreferencename_371182_3635346014(p0, ((NimStringDesc*) &T3635346014_172));
  		{
  			if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 2))) goto LA56;
  			(*p0).idx += ((NI) 1);
  		}
  		LA56: ;
  		b0 = untileol_371208_3635346014(p0);
  		LOC58 = (NimStringDesc*)0;
  		LOC58 = rstnodetorefname_370062_3635346014(a0);
  		setref_371106_3635346014(p0, LOC58, b0);
  	}
  	goto LA1;
  	LA52: ;
  	{
  		result0 = parsecomment_372544_3635346014(p0);
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parseenumlist_374883_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	NI w0;
  	result0 = (Rstnode369011*)0;
  	result0 = NIM_NIL;
  	w0 = ((NI) 0);
  	{
  		while (1) {
  			if (!(w0 <= ((NI) 2))) goto LA2;
  			{
  				NIM_BOOL LOC5;
  				LOC5 = (NIM_BOOL)0;
  				LOC5 = match_371327_3635346014((&(*p0)), (*p0).idx, wildcards_374888_3635346014[(w0)- 0]);
  				if (!LOC5) goto LA6;
  				goto LA1;
  			}
  			LA6: ;
  			w0 += ((NI) 1);
  		} LA2: ;
  	} LA1: ;
  	{
  		NI col0;
  		NI j0;
  		if (!(w0 <= ((NI) 2))) goto LA10;
  		col0 = (*p0).tok->data[(*p0).idx].col;
  		result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 7));
  		(*p0).idx += (NI)(wildpos_374893_3635346014[(w0)- 0] + ((NI) 3));
  		j0 = tokenafternewline_373550_3635346014((&(*p0)));
  		{
  			NIM_BOOL LOC14;
  			LOC14 = (NIM_BOOL)0;
  			LOC14 = ((*p0).tok->data[j0].col == (*p0).tok->data[(*p0).idx].col);
  			if (LOC14) goto LA15;
  			LOC14 = match_371327_3635346014((&(*p0)), j0, wildcards_374888_3635346014[(w0)- 0]);
  			LA15: ;
  			if (!LOC14) goto LA16;
  			pushind_370805_3635346014(p0, (*p0).tok->data[(*p0).idx].col);
  			{
  				while (1) {
  					Rstnode369011* item0;
  					item0 = newrstnode_369101_4150536388(((Rstnodekind369005) 8));
  					parsesection_372697_3635346014(p0, item0);
  					add_369146_4150536388(result0, item0);
  					{
  						NIM_BOOL LOC22;
  						NIM_BOOL LOC23;
  						LOC22 = (NIM_BOOL)0;
  						LOC23 = (NIM_BOOL)0;
  						LOC23 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1));
  						if (!(LOC23)) goto LA24;
  						LOC23 = ((*p0).tok->data[(*p0).idx].ival == col0);
  						LA24: ;
  						LOC22 = LOC23;
  						if (!(LOC22)) goto LA25;
  						LOC22 = match_371327_3635346014((&(*p0)), (NI)((*p0).idx + ((NI) 1)), wildcards_374888_3635346014[(w0)- 0]);
  						LA25: ;
  						if (!LOC22) goto LA26;
  						(*p0).idx += (NI)(wildpos_374893_3635346014[(w0)- 0] + ((NI) 4));
  					}
  					goto LA20;
  					LA26: ;
  					{
  						goto LA18;
  					}
  					LA20: ;
  				}
  			} LA18: ;
  			popind_370820_3635346014(p0);
  		}
  		goto LA12;
  		LA16: ;
  		{
  			(*p0).idx -= (NI)(wildpos_374893_3635346014[(w0)- 0] + ((NI) 3));
  			result0 = NIM_NIL;
  		}
  		LA12: ;
  	}
  	LA10: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parsedefinitionlist_374807_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	NI j0;
  	NI LOC1;
  	result0 = (Rstnode369011*)0;
  	result0 = NIM_NIL;
  	LOC1 = (NI)0;
  	LOC1 = tokenafternewline_373550_3635346014((&(*p0)));
  	j0 = (NI)(LOC1 - ((NI) 1));
  	{
  		NIM_BOOL LOC4;
  		NIM_BOOL LOC5;
  		NIM_BOOL LOC6;
  		NI LOC9;
  		NI col0;
  		LOC4 = (NIM_BOOL)0;
  		LOC5 = (NIM_BOOL)0;
  		LOC6 = (NIM_BOOL)0;
  		LOC6 = (((NI) 1) <= j0);
  		if (!(LOC6)) goto LA7;
  		LOC6 = ((*p0).tok->data[j0].kind == ((Toktype370119) 1));
  		LA7: ;
  		LOC5 = LOC6;
  		if (!(LOC5)) goto LA8;
  		LOC9 = (NI)0;
  		LOC9 = currind_370801_3635346014((&(*p0)));
  		LOC5 = (LOC9 < (*p0).tok->data[j0].ival);
  		LA8: ;
  		LOC4 = LOC5;
  		if (!(LOC4)) goto LA10;
  		LOC4 = !(eqStrings((*p0).tok->data[(NI)(j0 - ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_49)));
  		LA10: ;
  		if (!LOC4) goto LA11;
  		col0 = (*p0).tok->data[(*p0).idx].col;
  		result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 9));
  		{
  			while (1) {
  				Rstnode369011* a0;
  				j0 = (*p0).idx;
  				a0 = newrstnode_369101_4150536388(((Rstnodekind369005) 11));
  				parseline_372685_3635346014(p0, a0);
  				{
  					NIM_BOOL LOC17;
  					NIM_BOOL LOC18;
  					NIM_BOOL LOC19;
  					NI LOC21;
  					Rstnode369011* b0;
  					Rstnode369011* c0;
  					LOC17 = (NIM_BOOL)0;
  					LOC18 = (NIM_BOOL)0;
  					LOC19 = (NIM_BOOL)0;
  					LOC19 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1));
  					if (!(LOC19)) goto LA20;
  					LOC21 = (NI)0;
  					LOC21 = currind_370801_3635346014((&(*p0)));
  					LOC19 = (LOC21 < (*p0).tok->data[(*p0).idx].ival);
  					LA20: ;
  					LOC18 = LOC19;
  					if (!(LOC18)) goto LA22;
  					LOC18 = !(eqStrings((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_49)));
  					LA22: ;
  					LOC17 = LOC18;
  					if (!(LOC17)) goto LA23;
  					LOC17 = !(((3 &(1U<<((NU)((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].kind)&7U)))!=0));
  					LA23: ;
  					if (!LOC17) goto LA24;
  					pushind_370805_3635346014(p0, (*p0).tok->data[(*p0).idx].ival);
  					b0 = newrstnode_369101_4150536388(((Rstnodekind369005) 12));
  					parsesection_372697_3635346014(p0, b0);
  					c0 = newrstnode_369101_4150536388(((Rstnodekind369005) 10));
  					add_369146_4150536388(c0, a0);
  					add_369146_4150536388(c0, b0);
  					add_369146_4150536388(result0, c0);
  					popind_370820_3635346014(p0);
  				}
  				goto LA15;
  				LA24: ;
  				{
  					(*p0).idx = j0;
  					goto LA13;
  				}
  				LA15: ;
  				{
  					NIM_BOOL LOC29;
  					NI LOC33;
  					LOC29 = (NIM_BOOL)0;
  					LOC29 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1));
  					if (!(LOC29)) goto LA30;
  					LOC29 = ((*p0).tok->data[(*p0).idx].ival == col0);
  					LA30: ;
  					if (!LOC29) goto LA31;
  					(*p0).idx += ((NI) 1);
  					LOC33 = (NI)0;
  					LOC33 = tokenafternewline_373550_3635346014((&(*p0)));
  					j0 = (NI)(LOC33 - ((NI) 1));
  					{
  						NIM_BOOL LOC36;
  						NIM_BOOL LOC37;
  						NIM_BOOL LOC38;
  						NIM_BOOL LOC39;
  						LOC36 = (NIM_BOOL)0;
  						LOC37 = (NIM_BOOL)0;
  						LOC38 = (NIM_BOOL)0;
  						LOC39 = (NIM_BOOL)0;
  						LOC39 = (((NI) 1) <= j0);
  						if (!(LOC39)) goto LA40;
  						LOC39 = ((*p0).tok->data[j0].kind == ((Toktype370119) 1));
  						LA40: ;
  						LOC38 = LOC39;
  						if (!(LOC38)) goto LA41;
  						LOC38 = (col0 < (*p0).tok->data[j0].ival);
  						LA41: ;
  						LOC37 = LOC38;
  						if (!(LOC37)) goto LA42;
  						LOC37 = !(eqStrings((*p0).tok->data[(NI)(j0 - ((NI) 1))].symbol, ((NimStringDesc*) &T3635346014_49)));
  						LA42: ;
  						LOC36 = LOC37;
  						if (!(LOC36)) goto LA43;
  						LOC36 = !(((*p0).tok->data[(NI)(j0 + ((NI) 1))].kind == ((Toktype370119) 1)));
  						LA43: ;
  						if (!LOC36) goto LA44;
  					}
  					goto LA34;
  					LA44: ;
  					{
  						goto LA13;
  					}
  					LA34: ;
  				}
  				LA31: ;
  			}
  		} LA13: ;
  		{
  			NI LOC49;
  			LOC49 = (NI)0;
  			LOC49 = len_369089_4150536388(result0);
  			if (!(LOC49 == ((NI) 0))) goto LA50;
  			result0 = NIM_NIL;
  		}
  		LA50: ;
  	}
  	LA11: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parsetransition_374546_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 3));
  	(*p0).idx += ((NI) 1);
  	{
  		if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1))) goto LA3;
  		(*p0).idx += ((NI) 1);
  	}
  	LA3: ;
  	{
  		if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1))) goto LA7;
  		(*p0).idx += ((NI) 1);
  	}
  	LA7: ;
  	return result0;
  }
  
  N_NIMCALL(void, parseuntilnewline_372691_3635346014)(Rstparser370500* p0, Rstnode369011* father0) {
  	{
  		while (1) {
  			switch ((*p0).tok->data[(*p0).idx].kind) {
  			case ((Toktype370119) 2):
  			case ((Toktype370119) 3):
  			case ((Toktype370119) 4):
  			case ((Toktype370119) 6):
  			case ((Toktype370119) 5):
  			{
  				parseinline_372328_3635346014(p0, father0);
  			}
  			break;
  			case ((Toktype370119) 0):
  			case ((Toktype370119) 1):
  			{
  				goto LA1;
  			}
  			break;
  			}
  		}
  	} LA1: ;
  }
  
  N_NIMCALL(NI, getlevel_373533_3635346014)(NI* map0, NI* lvl0, NIM_CHAR c0) {
  	NI result0;
  	result0 = (NI)0;
  	{
  		if (!(map0[(((NU8)(c0)))- 0] == ((NI) 0))) goto LA3;
  		(*lvl0) += ((NI) 1);
  		map0[(((NU8)(c0)))- 0] = (*lvl0);
  	}
  	LA3: ;
  	result0 = map0[(((NU8)(c0)))- 0];
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parseheadline_373728_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	NIM_CHAR c0;
  	result0 = (Rstnode369011*)0;
  	result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 1));
  	parseuntilnewline_372691_3635346014(p0, result0);
  	c0 = (*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].symbol->data[((NI) 0)];
  	(*p0).idx += ((NI) 2);
  	(*result0).level = getlevel_373533_3635346014((*(*p0).s).underlinetolevel, (&(*(*p0).s).ulevel), c0);
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parseoverline_374596_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	NIM_CHAR c0;
  	result0 = (Rstnode369011*)0;
  	c0 = (*p0).tok->data[(*p0).idx].symbol->data[((NI) 0)];
  	(*p0).idx += ((NI) 2);
  	result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 2));
  	{
  		while (1) {
  			parseuntilnewline_372691_3635346014(p0, result0);
  			{
  				if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1))) goto LA5;
  				(*p0).idx += ((NI) 1);
  				{
  					NI LOC9;
  					Rstnode369011* LOC12;
  					LOC9 = (NI)0;
  					LOC9 = currind_370801_3635346014((&(*p0)));
  					if (!(LOC9 < (*p0).tok->data[(NI)((*p0).idx - ((NI) 1))].ival)) goto LA10;
  					LOC12 = (Rstnode369011*)0;
  					LOC12 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), ((NimStringDesc*) &T3635346014_82));
  					add_369146_4150536388(result0, LOC12);
  				}
  				goto LA7;
  				LA10: ;
  				{
  					goto LA1;
  				}
  				LA7: ;
  			}
  			goto LA3;
  			LA5: ;
  			{
  				goto LA1;
  			}
  			LA3: ;
  		}
  	} LA1: ;
  	(*result0).level = getlevel_373533_3635346014((*(*p0).s).overlinetolevel, (&(*(*p0).s).olevel), c0);
  	{
  		if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 4))) goto LA17;
  		(*p0).idx += ((NI) 1);
  		{
  			if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1))) goto LA21;
  			(*p0).idx += ((NI) 1);
  		}
  		LA21: ;
  	}
  	LA17: ;
  	return result0;
  }
  
  N_NIMCALL(NI, tokend_374018_3635346014)(Rstparser370500* p0) {
  	NI result0;
  	result0 = (NI)0;
  	result0 = (NI)((NI)((*p0).tok->data[(*p0).idx].col + ((*p0).tok->data[(*p0).idx].symbol ? (*p0).tok->data[(*p0).idx].symbol->Sup.len : 0)) - ((NI) 1));
  	return result0;
  }
  
  N_NIMCALL(void, getcolumns_374022_3635346014)(Rstparser370500* p0, TY370521** cols0) {
  	NI L0;
  	L0 = ((NI) 0);
  	{
  		while (1) {
  			L0 += ((NI) 1);
  			(*cols0) = (TY370521*) setLengthSeq(&((*cols0))->Sup, sizeof(NI), ((NI) (L0)));
  			(*cols0)->data[(NI)(L0 - ((NI) 1))] = tokend_374018_3635346014((&(*p0)));
  			(*p0).idx += ((NI) 1);
  			{
  				if (!!(((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 2)))) goto LA5;
  				goto LA1;
  			}
  			LA5: ;
  			(*p0).idx += ((NI) 1);
  			{
  				if (!!(((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 4)))) goto LA9;
  				goto LA1;
  			}
  			LA9: ;
  		}
  	} LA1: ;
  	{
  		if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1))) goto LA13;
  		(*p0).idx += ((NI) 1);
  	}
  	LA13: ;
  	(*cols0)->data[(NI)(L0 - ((NI) 1))] = ((NI) 32000);
  }
  
  N_NIMCALL(Rstnode369011*, parsesimpletable_374261_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	TY370521* cols0;
  	TY136002* row0;
  	NI i0;
  	NI last0;
  	NI line0;
  	NIM_CHAR c0;
  	Rstparser370500 q0;
  	Rstnode369011* a0;
  	Rstnode369011* b0;
  	result0 = (Rstnode369011*)0;
  	cols0 = (TY370521*)0;
  	row0 = (TY136002*)0;
  	i0 = (NI)0;
  	last0 = (NI)0;
  	line0 = (NI)0;
  	c0 = (NIM_CHAR)0;
  	memset((void*)(&q0), 0, sizeof(q0));
  	q0.Sup.m_type = (&NTI370500);
  	a0 = (Rstnode369011*)0;
  	b0 = (Rstnode369011*)0;
  	result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 29));
  	cols0 = (TY370521*) newSeq((&NTI370521), 0);
  	row0 = (TY136002*) newSeq((&NTI136002), 0);
  	a0 = NIM_NIL;
  	c0 = (*p0).tok->data[(*p0).idx].symbol->data[((NI) 0)];
  	{
  		while (1) {
  			{
  				if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 4))) goto LA5;
  				last0 = tokenafternewline_373550_3635346014((&(*p0)));
  				{
  					if (!((3 &(1U<<((NU)((*p0).tok->data[last0].kind)&7U)))!=0)) goto LA9;
  					(*p0).idx = last0;
  					goto LA1;
  				}
  				LA9: ;
  				getcolumns_374022_3635346014(p0, (&cols0));
  				row0 = (TY136002*) setLengthSeq(&(row0)->Sup, sizeof(NimStringDesc*), ((NI) ((cols0 ? cols0->Sup.len : 0))));
  				{
  					if (!!((a0 == NIM_NIL))) goto LA13;
  					{
  						NI j_374368_3635346014;
  						NI HEX3Atmp_374513_3635346014;
  						NI LOC16;
  						NI res_374516_3635346014;
  						j_374368_3635346014 = (NI)0;
  						HEX3Atmp_374513_3635346014 = (NI)0;
  						LOC16 = (NI)0;
  						LOC16 = len_369089_4150536388(a0);
  						HEX3Atmp_374513_3635346014 = (NI)(LOC16 - ((NI) 1));
  						res_374516_3635346014 = ((NI) 0);
  						{
  							while (1) {
  								if (!(res_374516_3635346014 <= HEX3Atmp_374513_3635346014)) goto LA18;
  								j_374368_3635346014 = res_374516_3635346014;
  								(*(*a0).sons->data[j_374368_3635346014]).kind = ((Rstnodekind369005) 32);
  								res_374516_3635346014 += ((NI) 1);
  							} LA18: ;
  						}
  					}
  				}
  				LA13: ;
  			}
  			LA5: ;
  			{
  				if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 0))) goto LA21;
  				goto LA1;
  			}
  			LA21: ;
  			{
  				NI j_374389_3635346014;
  				NI HEX3Atmp_374521_3635346014;
  				NI res_374524_3635346014;
  				j_374389_3635346014 = (NI)0;
  				HEX3Atmp_374521_3635346014 = (NI)0;
  				HEX3Atmp_374521_3635346014 = (row0 ? (row0->Sup.len-1) : -1);
  				res_374524_3635346014 = ((NI) 0);
  				{
  					while (1) {
  						NimStringDesc* LOC26;
  						if (!(res_374524_3635346014 <= HEX3Atmp_374521_3635346014)) goto LA25;
  						j_374389_3635346014 = res_374524_3635346014;
  						LOC26 = (NimStringDesc*)0;
  						LOC26 = row0->data[j_374389_3635346014]; row0->data[j_374389_3635346014] = copyStringRC1(((NimStringDesc*) &T3635346014_2));
  						if (LOC26) nimGCunrefNoCycle(LOC26);
  						res_374524_3635346014 += ((NI) 1);
  					} LA25: ;
  				}
  			}
  			line0 = (*p0).tok->data[(*p0).idx].line;
  			{
  				while (1) {
  					i0 = ((NI) 0);
  					{
  						while (1) {
  							if (!!(((3 &(1U<<((NU)((*p0).tok->data[(*p0).idx].kind)&7U)))!=0))) goto LA30;
  							{
  								NI LOC33;
  								LOC33 = (NI)0;
  								LOC33 = tokend_374018_3635346014((&(*p0)));
  								if (!(LOC33 <= cols0->data[i0])) goto LA34;
  								row0->data[i0] = resizeString(row0->data[i0], (*p0).tok->data[(*p0).idx].symbol->Sup.len + 0);
  appendString(row0->data[i0], (*p0).tok->data[(*p0).idx].symbol);
  								(*p0).idx += ((NI) 1);
  							}
  							goto LA31;
  							LA34: ;
  							{
  								{
  									if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 2))) goto LA39;
  									(*p0).idx += ((NI) 1);
  								}
  								LA39: ;
  								i0 += ((NI) 1);
  							}
  							LA31: ;
  						} LA30: ;
  					}
  					{
  						if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1))) goto LA43;
  						(*p0).idx += ((NI) 1);
  					}
  					LA43: ;
  					{
  						NI LOC47;
  						LOC47 = (NI)0;
  						LOC47 = tokend_374018_3635346014((&(*p0)));
  						if (!(LOC47 <= cols0->data[((NI) 0)])) goto LA48;
  						goto LA27;
  					}
  					LA48: ;
  					{
  						if (!((17 &(1U<<((NU)((*p0).tok->data[(*p0).idx].kind)&7U)))!=0)) goto LA52;
  						goto LA27;
  					}
  					LA52: ;
  					{
  						NI j_374477_3635346014;
  						NI HEX3Atmp_374531_3635346014;
  						NI res_374534_3635346014;
  						j_374477_3635346014 = (NI)0;
  						HEX3Atmp_374531_3635346014 = (NI)0;
  						HEX3Atmp_374531_3635346014 = (row0 ? (row0->Sup.len-1) : -1);
  						res_374534_3635346014 = ((NI) 1);
  						{
  							while (1) {
  								if (!(res_374534_3635346014 <= HEX3Atmp_374531_3635346014)) goto LA56;
  								j_374477_3635346014 = res_374534_3635346014;
  								row0->data[j_374477_3635346014] = addChar(row0->data[j_374477_3635346014], 10);
  								res_374534_3635346014 += ((NI) 1);
  							} LA56: ;
  						}
  					}
  				}
  			} LA27: ;
  			a0 = newrstnode_369101_4150536388(((Rstnodekind369005) 31));
  			{
  				NI j_374489_3635346014;
  				NI HEX3Atmp_374539_3635346014;
  				NI res_374542_3635346014;
  				j_374489_3635346014 = (NI)0;
  				HEX3Atmp_374539_3635346014 = (NI)0;
  				HEX3Atmp_374539_3635346014 = (row0 ? (row0->Sup.len-1) : -1);
  				res_374542_3635346014 = ((NI) 0);
  				{
  					while (1) {
  						NI LOC60;
  						Rstnode369011* LOC61;
  						if (!(res_374542_3635346014 <= HEX3Atmp_374539_3635346014)) goto LA59;
  						j_374489_3635346014 = res_374542_3635346014;
  						initparser_370850_3635346014((&q0), (*p0).s);
  						q0.col = cols0->data[j_374489_3635346014];
  						q0.line = (NI)(line0 - ((NI) 1));
  						q0.filename = copyString((*p0).filename);
  						LOC60 = (NI)0;
  						LOC60 = gettokens_370360_3635346014(row0->data[j_374489_3635346014], NIM_FALSE, (&q0.tok));
  						q0.col += LOC60;
  						b0 = newrstnode_369101_4150536388(((Rstnodekind369005) 33));
  						LOC61 = (Rstnode369011*)0;
  						LOC61 = parsedoc_374257_3635346014((&q0));
  						add_369146_4150536388(b0, LOC61);
  						add_369146_4150536388(a0, b0);
  						res_374542_3635346014 += ((NI) 1);
  					} LA59: ;
  				}
  			}
  			add_369146_4150536388(result0, a0);
  		}
  	} LA1: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parseoptionlist_374722_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 17));
  	{
  		while (1) {
  			{
  				NIM_BOOL LOC5;
  				Rstnode369011* a0;
  				Rstnode369011* b0;
  				Rstnode369011* c0;
  				NI j0;
  				LOC5 = (NIM_BOOL)0;
  				LOC5 = isoptionlist_373607_3635346014((&(*p0)));
  				if (!LOC5) goto LA6;
  				a0 = newrstnode_369101_4150536388(((Rstnodekind369005) 19));
  				b0 = newrstnode_369101_4150536388(((Rstnodekind369005) 23));
  				c0 = newrstnode_369101_4150536388(((Rstnodekind369005) 18));
  				{
  					NIM_BOOL LOC10;
  					LOC10 = (NIM_BOOL)0;
  					LOC10 = match_371327_3635346014((&(*p0)), (*p0).idx, ((NimStringDesc*) &T3635346014_61));
  					if (!LOC10) goto LA11;
  					(*p0).idx += ((NI) 1);
  				}
  				LA11: ;
  				{
  					while (1) {
  						Rstnode369011* LOC21;
  						if (!!(((3 &(1U<<((NU)((*p0).tok->data[(*p0).idx].kind)&7U)))!=0))) goto LA14;
  						{
  							NIM_BOOL LOC17;
  							LOC17 = (NIM_BOOL)0;
  							LOC17 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 2));
  							if (!(LOC17)) goto LA18;
  							LOC17 = (((NI) 1) < ((*p0).tok->data[(*p0).idx].symbol ? (*p0).tok->data[(*p0).idx].symbol->Sup.len : 0));
  							LA18: ;
  							if (!LOC17) goto LA19;
  							(*p0).idx += ((NI) 1);
  							goto LA13;
  						}
  						LA19: ;
  						LOC21 = (Rstnode369011*)0;
  						LOC21 = newleaf_371177_3635346014(p0);
  						add_369146_4150536388(a0, LOC21);
  						(*p0).idx += ((NI) 1);
  					} LA14: ;
  				} LA13: ;
  				j0 = tokenafternewline_373550_3635346014((&(*p0)));
  				{
  					NIM_BOOL LOC24;
  					NIM_BOOL LOC25;
  					NI LOC28;
  					LOC24 = (NIM_BOOL)0;
  					LOC25 = (NIM_BOOL)0;
  					LOC25 = (((NI) 0) < j0);
  					if (!(LOC25)) goto LA26;
  					LOC25 = ((*p0).tok->data[(NI)(j0 - ((NI) 1))].kind == ((Toktype370119) 1));
  					LA26: ;
  					LOC24 = LOC25;
  					if (!(LOC24)) goto LA27;
  					LOC28 = (NI)0;
  					LOC28 = currind_370801_3635346014((&(*p0)));
  					LOC24 = (LOC28 < (*p0).tok->data[(NI)(j0 - ((NI) 1))].ival);
  					LA27: ;
  					if (!LOC24) goto LA29;
  					pushind_370805_3635346014(p0, (*p0).tok->data[(NI)(j0 - ((NI) 1))].ival);
  					parsesection_372697_3635346014(p0, b0);
  					popind_370820_3635346014(p0);
  				}
  				goto LA22;
  				LA29: ;
  				{
  					parseline_372685_3635346014(p0, b0);
  				}
  				LA22: ;
  				{
  					if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1))) goto LA34;
  					(*p0).idx += ((NI) 1);
  				}
  				LA34: ;
  				add_369146_4150536388(c0, a0);
  				add_369146_4150536388(c0, b0);
  				add_369146_4150536388(result0, c0);
  			}
  			goto LA3;
  			LA6: ;
  			{
  				goto LA1;
  			}
  			LA3: ;
  		}
  	} LA1: ;
  	return result0;
  }
  
  N_NIMCALL(void, parseparagraph_373677_3635346014)(Rstparser370500* p0, Rstnode369011* result0) {
  	{
  		while (1) {
  			switch ((*p0).tok->data[(*p0).idx].kind) {
  			case ((Toktype370119) 1):
  			{
  				{
  					if (!((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].kind == ((Toktype370119) 1))) goto LA6;
  					(*p0).idx += ((NI) 1);
  					goto LA1;
  				}
  				goto LA4;
  				LA6: ;
  				{
  					NI LOC9;
  					Rstnodekind369005 LOC12;
  					LOC9 = (NI)0;
  					LOC9 = currind_370801_3635346014((&(*p0)));
  					if (!((*p0).tok->data[(*p0).idx].ival == LOC9)) goto LA10;
  					(*p0).idx += ((NI) 1);
  					LOC12 = (Rstnodekind369005)0;
  					LOC12 = whichsection_373611_3635346014((&(*p0)));
  					switch (LOC12) {
  					case ((Rstnodekind369005) 4):
  					case ((Rstnodekind369005) 64):
  					case ((Rstnodekind369005) 1):
  					case ((Rstnodekind369005) 2):
  					case ((Rstnodekind369005) 40):
  					{
  						Rstnode369011* LOC14;
  						LOC14 = (Rstnode369011*)0;
  						LOC14 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), ((NimStringDesc*) &T3635346014_82));
  						add_369146_4150536388(result0, LOC14);
  					}
  					break;
  					case ((Rstnodekind369005) 26):
  					{
  						Rstnode369011* LOC16;
  						LOC16 = (Rstnode369011*)0;
  						LOC16 = parselineblock_373624_3635346014(p0);
  						addifnotnil_369160_4150536388(result0, LOC16);
  					}
  					break;
  					default:
  					{
  						goto LA1;
  					}
  					break;
  					}
  				}
  				goto LA4;
  				LA10: ;
  				{
  					goto LA1;
  				}
  				LA4: ;
  			}
  			break;
  			case ((Toktype370119) 5):
  			{
  				{
  					NIM_BOOL LOC22;
  					NIM_BOOL LOC23;
  					NI LOC26;
  					Rstnode369011* LOC29;
  					Rstnode369011* LOC30;
  					LOC22 = (NIM_BOOL)0;
  					LOC23 = (NIM_BOOL)0;
  					LOC23 = eqStrings((*p0).tok->data[(*p0).idx].symbol, ((NimStringDesc*) &T3635346014_49));
  					if (!(LOC23)) goto LA24;
  					LOC23 = ((*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].kind == ((Toktype370119) 1));
  					LA24: ;
  					LOC22 = LOC23;
  					if (!(LOC22)) goto LA25;
  					LOC26 = (NI)0;
  					LOC26 = currind_370801_3635346014((&(*p0)));
  					LOC22 = (LOC26 < (*p0).tok->data[(NI)((*p0).idx + ((NI) 1))].ival);
  					LA25: ;
  					if (!LOC22) goto LA27;
  					LOC29 = (Rstnode369011*)0;
  					LOC29 = newrstnode_369129_4150536388(((Rstnodekind369005) 64), ((NimStringDesc*) &T3635346014_156));
  					add_369146_4150536388(result0, LOC29);
  					(*p0).idx += ((NI) 1);
  					LOC30 = (Rstnode369011*)0;
  					LOC30 = parseliteralblock_373468_3635346014(p0);
  					add_369146_4150536388(result0, LOC30);
  					goto LA1;
  				}
  				goto LA20;
  				LA27: ;
  				{
  					parseinline_372328_3635346014(p0, result0);
  				}
  				LA20: ;
  			}
  			break;
  			case ((Toktype370119) 2):
  			case ((Toktype370119) 3):
  			case ((Toktype370119) 4):
  			case ((Toktype370119) 6):
  			{
  				parseinline_372328_3635346014(p0, result0);
  			}
  			break;
  			default:
  			{
  				goto LA1;
  			}
  			break;
  			}
  		}
  	} LA1: ;
  }
  
  N_NIMCALL(Rstnodekind369005, sonkind_374949_3635346014)(Rstnode369011* father0, NI i0) {
  	Rstnodekind369005 result0;
  	result0 = (Rstnodekind369005)0;
  	result0 = ((Rstnodekind369005) 64);
  	{
  		NI LOC3;
  		LOC3 = (NI)0;
  		LOC3 = len_369089_4150536388(father0);
  		if (!(i0 < LOC3)) goto LA4;
  		result0 = (*(*father0).sons->data[i0]).kind;
  	}
  	LA4: ;
  	return result0;
  }
  
  N_NIMCALL(void, parsesection_372697_3635346014)(Rstparser370500* p0, Rstnode369011* result0) {
  	{
  		while (1) {
  			NIM_BOOL leave0;
  			Rstnode369011* a0;
  			Rstnodekind369005 k0;
  			leave0 = NIM_FALSE;
  			{
  				while (1) {
  					if (!((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 1))) goto LA4;
  					{
  						NI LOC7;
  						LOC7 = (NI)0;
  						LOC7 = currind_370801_3635346014((&(*p0)));
  						if (!(LOC7 == (*p0).tok->data[(*p0).idx].ival)) goto LA8;
  						(*p0).idx += ((NI) 1);
  					}
  					goto LA5;
  					LA8: ;
  					{
  						NI LOC11;
  						Rstnode369011* a0;
  						LOC11 = (NI)0;
  						LOC11 = currind_370801_3635346014((&(*p0)));
  						if (!(LOC11 < (*p0).tok->data[(*p0).idx].ival)) goto LA12;
  						pushind_370805_3635346014(p0, (*p0).tok->data[(*p0).idx].ival);
  						a0 = newrstnode_369101_4150536388(((Rstnodekind369005) 28));
  						parsesection_372697_3635346014(p0, a0);
  						add_369146_4150536388(result0, a0);
  						popind_370820_3635346014(p0);
  					}
  					goto LA5;
  					LA12: ;
  					{
  						leave0 = NIM_TRUE;
  						goto LA3;
  					}
  					LA5: ;
  				} LA4: ;
  			} LA3: ;
  			{
  				NIM_BOOL LOC17;
  				LOC17 = (NIM_BOOL)0;
  				LOC17 = leave0;
  				if (LOC17) goto LA18;
  				LOC17 = ((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 0));
  				LA18: ;
  				if (!LOC17) goto LA19;
  				goto LA1;
  			}
  			LA19: ;
  			a0 = NIM_NIL;
  			k0 = whichsection_373611_3635346014((&(*p0)));
  			switch (k0) {
  			case ((Rstnodekind369005) 24):
  			{
  				(*p0).idx += ((NI) 1);
  				a0 = parseliteralblock_373468_3635346014(p0);
  			}
  			break;
  			case ((Rstnodekind369005) 5):
  			{
  				a0 = parsebulletlist_374668_3635346014(p0);
  			}
  			break;
  			case ((Rstnodekind369005) 26):
  			{
  				a0 = parselineblock_373624_3635346014(p0);
  			}
  			break;
  			case ((Rstnodekind369005) 40):
  			{
  				a0 = parsedotdot_373464_3635346014(p0);
  			}
  			break;
  			case ((Rstnodekind369005) 7):
  			{
  				a0 = parseenumlist_374883_3635346014(p0);
  			}
  			break;
  			case ((Rstnodekind369005) 64):
  			{
  				rstmessage_370736_3635346014((&(*p0)), ((Msgkind370009) 3));
  			}
  			break;
  			case ((Rstnodekind369005) 4):
  			{
  			}
  			break;
  			case ((Rstnodekind369005) 9):
  			{
  				a0 = parsedefinitionlist_374807_3635346014(p0);
  			}
  			break;
  			case ((Rstnodekind369005) 13):
  			{
  				{
  					if (!(((NI) 0) < (*p0).idx)) goto LA32;
  					(*p0).idx -= ((NI) 1);
  				}
  				LA32: ;
  				a0 = parsefields_372729_3635346014(p0);
  			}
  			break;
  			case ((Rstnodekind369005) 3):
  			{
  				a0 = parsetransition_374546_3635346014(p0);
  			}
  			break;
  			case ((Rstnodekind369005) 1):
  			{
  				a0 = parseheadline_373728_3635346014(p0);
  			}
  			break;
  			case ((Rstnodekind369005) 2):
  			{
  				a0 = parseoverline_374596_3635346014(p0);
  			}
  			break;
  			case ((Rstnodekind369005) 29):
  			{
  				a0 = parsesimpletable_374261_3635346014(p0);
  			}
  			break;
  			case ((Rstnodekind369005) 17):
  			{
  				a0 = parseoptionlist_374722_3635346014(p0);
  			}
  			break;
  			default:
  			{
  			}
  			break;
  			}
  			{
  				NIM_BOOL LOC42;
  				LOC42 = (NIM_BOOL)0;
  				LOC42 = (a0 == NIM_NIL);
  				if (!(LOC42)) goto LA43;
  				LOC42 = !((k0 == ((Rstnodekind369005) 40)));
  				LA43: ;
  				if (!LOC42) goto LA44;
  				a0 = newrstnode_369101_4150536388(((Rstnodekind369005) 4));
  				parseparagraph_373677_3635346014(p0, a0);
  			}
  			LA44: ;
  			addifnotnil_369160_4150536388(result0, a0);
  		}
  	} LA1: ;
  	{
  		NIM_BOOL LOC48;
  		Rstnodekind369005 LOC49;
  		Rstnodekind369005 LOC51;
  		LOC48 = (NIM_BOOL)0;
  		LOC49 = (Rstnodekind369005)0;
  		LOC49 = sonkind_374949_3635346014(result0, ((NI) 0));
  		LOC48 = (LOC49 == ((Rstnodekind369005) 4));
  		if (!(LOC48)) goto LA50;
  		LOC51 = (Rstnodekind369005)0;
  		LOC51 = sonkind_374949_3635346014(result0, ((NI) 1));
  		LOC48 = !((LOC51 == ((Rstnodekind369005) 4)));
  		LA50: ;
  		if (!LOC48) goto LA52;
  		(*(*result0).sons->data[((NI) 0)]).kind = ((Rstnodekind369005) 0);
  	}
  	LA52: ;
  }
  
  N_NIMCALL(Rstnode369011*, parsesectionwrapper_375091_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = newrstnode_369101_4150536388(((Rstnodekind369005) 0));
  	parsesection_372697_3635346014(p0, result0);
  	{
  		while (1) {
  			NIM_BOOL LOC3;
  			NI LOC5;
  			LOC3 = (NIM_BOOL)0;
  			LOC3 = ((*result0).kind == ((Rstnodekind369005) 0));
  			if (!(LOC3)) goto LA4;
  			LOC5 = (NI)0;
  			LOC5 = len_369089_4150536388(result0);
  			LOC3 = (LOC5 == ((NI) 1));
  			LA4: ;
  			if (!LOC3) goto LA2;
  			result0 = (*result0).sons->data[((NI) 0)];
  		} LA2: ;
  	}
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, parsedoc_374257_3635346014)(Rstparser370500* p0) {
  	Rstnode369011* result0;
  	result0 = (Rstnode369011*)0;
  	result0 = parsesectionwrapper_375091_3635346014(p0);
  	{
  		if (!!(((*p0).tok->data[(*p0).idx].kind == ((Toktype370119) 0)))) goto LA3;
  		rstmessage_370736_3635346014((&(*p0)), ((Msgkind370009) 4));
  	}
  	LA3: ;
  	return result0;
  }
  
  N_NIMCALL(Rstnode369011*, rstparse_376250_3635346014)(NimStringDesc* text0, NimStringDesc* filename0, NI line0, NI column0, NIM_BOOL* hastoc0, Rstparseoption370003Set options0, Findfilehandler370013 findfile0, Msghandler370011 msghandler0) {
  	Rstnode369011* result0;
  	Rstparser370500 p0;
  	Sharedstate370496* LOC1;
  	NI LOC2;
  	Rstnode369011* LOC3;
  	result0 = (Rstnode369011*)0;
  	memset((void*)(&p0), 0, sizeof(p0));
  	p0.Sup.m_type = (&NTI370500);
  	LOC1 = (Sharedstate370496*)0;
  	LOC1 = newsharedstate_370659_3635346014(options0, findfile0, msghandler0);
  	initparser_370850_3635346014((&p0), LOC1);
  	p0.filename = copyString(filename0);
  	p0.line = line0;
  	LOC2 = (NI)0;
  	LOC2 = gettokens_370360_3635346014(text0, ((options0 &(1U<<((NU)(((Rstparseoption370003) 0))&7U)))!=0), (&p0.tok));
  	p0.col = (NI)(column0 + LOC2);
  	LOC3 = (Rstnode369011*)0;
  	LOC3 = parsedoc_374257_3635346014((&p0));
  	result0 = resolvesubs_376196_3635346014((&p0), LOC3);
  	(*hastoc0) = p0.hastoc;
  	return result0;
  }
  NIM_EXTERNC N_NOINLINE(void, docutils_rstInit000)(void) {
  }
  
  NIM_EXTERNC N_NOINLINE(void, docutils_rstDatInit000)(void) {
  static TNimNode* T3635346014_5[8];
  static TNimNode* T3635346014_6[5];
  static TNimNode* T3635346014_7[7];
  NI T3635346014_9;
  static char* NIM_CONST T3635346014_8[7] = {
  "tkEof", 
  "tkIndent", 
  "tkWhite", 
  "tkWord", 
  "tkAdornment", 
  "tkPunct", 
  "tkOther"};
  static TNimNode* T3635346014_11[9];
  static TNimNode* T3635346014_12[4];
  NI T3635346014_14;
  static char* NIM_CONST T3635346014_13[4] = {
  "roSkipPounds", 
  "roSupportSmilies", 
  "roSupportRawDirective", 
  "roSupportMarkdown"};
  static TNimNode* T3635346014_15[2];
  static TNimNode* T3635346014_21[10];
  NI T3635346014_23;
  static char* NIM_CONST T3635346014_22[10] = {
  "meCannotOpenFile", 
  "meExpected", 
  "meGridTableNotImplemented", 
  "meNewSectionExpected", 
  "meGeneralParseError", 
  "meInvalidDirective", 
  "mwRedefinitionOfLabel", 
  "mwUnknownSubstitution", 
  "mwUnsupportedLanguage", 
  "mwUnsupportedField"};
  static TNimNode* T3635346014_35[3];
  NI T3635346014_37;
  static char* NIM_CONST T3635346014_36[3] = {
  "Hint", 
  "Warning", 
  "Error"};
  static TNimNode* T3635346014_40[6];
  static TNimNode T3635346014_0[65];
  NTI370500.size = sizeof(Rstparser370500);
  NTI370500.kind = 17;
  NTI370500.base = (&NTI3608);
  T3635346014_5[0] = &T3635346014_0[1];
  T3635346014_0[1].kind = 1;
  T3635346014_0[1].offset = offsetof(Rstparser370500, idx);
  T3635346014_0[1].typ = (&NTI104);
  T3635346014_0[1].name = "idx";
  T3635346014_5[1] = &T3635346014_0[2];
  NTI370121.size = sizeof(Token370121);
  NTI370121.kind = 18;
  NTI370121.base = 0;
  NTI370121.flags = 2;
  T3635346014_6[0] = &T3635346014_0[4];
  NTI370119.size = sizeof(Toktype370119);
  NTI370119.kind = 14;
  NTI370119.base = 0;
  NTI370119.flags = 3;
  for (T3635346014_9 = 0; T3635346014_9 < 7; T3635346014_9++) {
  T3635346014_0[T3635346014_9+5].kind = 1;
  T3635346014_0[T3635346014_9+5].offset = T3635346014_9;
  T3635346014_0[T3635346014_9+5].name = T3635346014_8[T3635346014_9];
  T3635346014_7[T3635346014_9] = &T3635346014_0[T3635346014_9+5];
  }
  T3635346014_0[12].len = 7; T3635346014_0[12].kind = 2; T3635346014_0[12].sons = &T3635346014_7[0];
  NTI370119.node = &T3635346014_0[12];
  T3635346014_0[4].kind = 1;
  T3635346014_0[4].offset = offsetof(Token370121, kind);
  T3635346014_0[4].typ = (&NTI370119);
  T3635346014_0[4].name = "kind";
  T3635346014_6[1] = &T3635346014_0[13];
  T3635346014_0[13].kind = 1;
  T3635346014_0[13].offset = offsetof(Token370121, ival);
  T3635346014_0[13].typ = (&NTI104);
  T3635346014_0[13].name = "ival";
  T3635346014_6[2] = &T3635346014_0[14];
  T3635346014_0[14].kind = 1;
  T3635346014_0[14].offset = offsetof(Token370121, symbol);
  T3635346014_0[14].typ = (&NTI138);
  T3635346014_0[14].name = "symbol";
  T3635346014_6[3] = &T3635346014_0[15];
  T3635346014_0[15].kind = 1;
  T3635346014_0[15].offset = offsetof(Token370121, line);
  T3635346014_0[15].typ = (&NTI104);
  T3635346014_0[15].name = "line";
  T3635346014_6[4] = &T3635346014_0[16];
  T3635346014_0[16].kind = 1;
  T3635346014_0[16].offset = offsetof(Token370121, col);
  T3635346014_0[16].typ = (&NTI104);
  T3635346014_0[16].name = "col";
  T3635346014_0[3].len = 5; T3635346014_0[3].kind = 2; T3635346014_0[3].sons = &T3635346014_6[0];
  NTI370121.node = &T3635346014_0[3];
  NTI370123.size = sizeof(Tokenseq370123*);
  NTI370123.kind = 24;
  NTI370123.base = (&NTI370121);
  NTI370123.flags = 2;
  NTI370123.marker = T3635346014_10;
  T3635346014_0[2].kind = 1;
  T3635346014_0[2].offset = offsetof(Rstparser370500, tok);
  T3635346014_0[2].typ = (&NTI370123);
  T3635346014_0[2].name = "tok";
  T3635346014_5[2] = &T3635346014_0[17];
  NTI370496.size = sizeof(Sharedstate370496);
  NTI370496.kind = 18;
  NTI370496.base = 0;
  NTI370496.flags = 2;
  T3635346014_11[0] = &T3635346014_0[19];
  NTI370003.size = sizeof(Rstparseoption370003);
  NTI370003.kind = 14;
  NTI370003.base = 0;
  NTI370003.flags = 3;
  for (T3635346014_14 = 0; T3635346014_14 < 4; T3635346014_14++) {
  T3635346014_0[T3635346014_14+20].kind = 1;
  T3635346014_0[T3635346014_14+20].offset = T3635346014_14;
  T3635346014_0[T3635346014_14+20].name = T3635346014_13[T3635346014_14];
  T3635346014_12[T3635346014_14] = &T3635346014_0[T3635346014_14+20];
  }
  T3635346014_0[24].len = 4; T3635346014_0[24].kind = 2; T3635346014_0[24].sons = &T3635346014_12[0];
  NTI370003.node = &T3635346014_0[24];
  NTI370005.size = sizeof(Rstparseoption370003Set);
  NTI370005.kind = 19;
  NTI370005.base = (&NTI370003);
  NTI370005.flags = 3;
  T3635346014_0[25].len = 0; T3635346014_0[25].kind = 0;
  NTI370005.node = &T3635346014_0[25];
  T3635346014_0[19].kind = 1;
  T3635346014_0[19].offset = offsetof(Sharedstate370496, options);
  T3635346014_0[19].typ = (&NTI370005);
  T3635346014_0[19].name = "options";
  T3635346014_11[1] = &T3635346014_0[26];
  T3635346014_0[26].kind = 1;
  T3635346014_0[26].offset = offsetof(Sharedstate370496, ulevel);
  T3635346014_0[26].typ = (&NTI104);
  T3635346014_0[26].name = "uLevel";
  T3635346014_11[2] = &T3635346014_0[27];
  T3635346014_0[27].kind = 1;
  T3635346014_0[27].offset = offsetof(Sharedstate370496, olevel);
  T3635346014_0[27].typ = (&NTI104);
  T3635346014_0[27].name = "oLevel";
  T3635346014_11[3] = &T3635346014_0[28];
  NTI370494.size = sizeof(Substitution370494);
  NTI370494.kind = 18;
  NTI370494.base = 0;
  NTI370494.flags = 2;
  T3635346014_15[0] = &T3635346014_0[30];
  T3635346014_0[30].kind = 1;
  T3635346014_0[30].offset = offsetof(Substitution370494, key);
  T3635346014_0[30].typ = (&NTI138);
  T3635346014_0[30].name = "key";
  T3635346014_15[1] = &T3635346014_0[31];
  T3635346014_0[31].kind = 1;
  T3635346014_0[31].offset = offsetof(Substitution370494, value);
  T3635346014_0[31].typ = (&NTI369007);
  T3635346014_0[31].name = "value";
  T3635346014_0[29].len = 2; T3635346014_0[29].kind = 2; T3635346014_0[29].sons = &T3635346014_15[0];
  NTI370494.node = &T3635346014_0[29];
  NTI370510.size = sizeof(TY370510*);
  NTI370510.kind = 24;
  NTI370510.base = (&NTI370494);
  NTI370510.flags = 2;
  NTI370510.marker = T3635346014_16;
  T3635346014_0[28].kind = 1;
  T3635346014_0[28].offset = offsetof(Sharedstate370496, subs);
  T3635346014_0[28].typ = (&NTI370510);
  T3635346014_0[28].name = "subs";
  T3635346014_11[4] = &T3635346014_0[32];
  T3635346014_0[32].kind = 1;
  T3635346014_0[32].offset = offsetof(Sharedstate370496, refs);
  T3635346014_0[32].typ = (&NTI370510);
  T3635346014_0[32].name = "refs";
  T3635346014_11[5] = &T3635346014_0[33];
  T3635346014_0[33].kind = 1;
  T3635346014_0[33].offset = offsetof(Sharedstate370496, underlinetolevel);
  T3635346014_0[33].typ = (&NTI109518);
  T3635346014_0[33].name = "underlineToLevel";
  T3635346014_11[6] = &T3635346014_0[34];
  T3635346014_0[34].kind = 1;
  T3635346014_0[34].offset = offsetof(Sharedstate370496, overlinetolevel);
  T3635346014_0[34].typ = (&NTI109518);
  T3635346014_0[34].name = "overlineToLevel";
  T3635346014_11[7] = &T3635346014_0[35];
  NTI370011.size = sizeof(Msghandler370011);
  NTI370011.kind = 25;
  NTI370011.base = 0;
  NTI370011.flags = 3;
  T3635346014_0[35].kind = 1;
  T3635346014_0[35].offset = offsetof(Sharedstate370496, msghandler);
  T3635346014_0[35].typ = (&NTI370011);
  T3635346014_0[35].name = "msgHandler";
  T3635346014_11[8] = &T3635346014_0[36];
  NTI370013.size = sizeof(Findfilehandler370013);
  NTI370013.kind = 25;
  NTI370013.base = 0;
  NTI370013.flags = 3;
  T3635346014_0[36].kind = 1;
  T3635346014_0[36].offset = offsetof(Sharedstate370496, findfile);
  T3635346014_0[36].typ = (&NTI370013);
  T3635346014_0[36].name = "findFile";
  T3635346014_0[18].len = 9; T3635346014_0[18].kind = 2; T3635346014_0[18].sons = &T3635346014_11[0];
  NTI370496.node = &T3635346014_0[18];
  NTI370498.size = sizeof(Sharedstate370496*);
  NTI370498.kind = 22;
  NTI370498.base = (&NTI370496);
  NTI370498.flags = 2;
  NTI370498.marker = T3635346014_17;
  T3635346014_0[17].kind = 1;
  T3635346014_0[17].offset = offsetof(Rstparser370500, s);
  T3635346014_0[17].typ = (&NTI370498);
  T3635346014_0[17].name = "s";
  T3635346014_5[3] = &T3635346014_0[37];
  NTI370521.size = sizeof(TY370521*);
  NTI370521.kind = 24;
  NTI370521.base = (&NTI104);
  NTI370521.flags = 2;
  NTI370521.marker = T3635346014_18;
  T3635346014_0[37].kind = 1;
  T3635346014_0[37].offset = offsetof(Rstparser370500, indentstack);
  T3635346014_0[37].typ = (&NTI370521);
  T3635346014_0[37].name = "indentStack";
  T3635346014_5[4] = &T3635346014_0[38];
  T3635346014_0[38].kind = 1;
  T3635346014_0[38].offset = offsetof(Rstparser370500, filename);
  T3635346014_0[38].typ = (&NTI138);
  T3635346014_0[38].name = "filename";
  T3635346014_5[5] = &T3635346014_0[39];
  T3635346014_0[39].kind = 1;
  T3635346014_0[39].offset = offsetof(Rstparser370500, line);
  T3635346014_0[39].typ = (&NTI104);
  T3635346014_0[39].name = "line";
  T3635346014_5[6] = &T3635346014_0[40];
  T3635346014_0[40].kind = 1;
  T3635346014_0[40].offset = offsetof(Rstparser370500, col);
  T3635346014_0[40].typ = (&NTI104);
  T3635346014_0[40].name = "col";
  T3635346014_5[7] = &T3635346014_0[41];
  T3635346014_0[41].kind = 1;
  T3635346014_0[41].offset = offsetof(Rstparser370500, hastoc);
  T3635346014_0[41].typ = (&NTI130);
  T3635346014_0[41].name = "hasToc";
  T3635346014_0[0].len = 8; T3635346014_0[0].kind = 2; T3635346014_0[0].sons = &T3635346014_5[0];
  NTI370500.node = &T3635346014_0[0];
  NTI370009.size = sizeof(Msgkind370009);
  NTI370009.kind = 14;
  NTI370009.base = 0;
  NTI370009.flags = 3;
  for (T3635346014_23 = 0; T3635346014_23 < 10; T3635346014_23++) {
  T3635346014_0[T3635346014_23+42].kind = 1;
  T3635346014_0[T3635346014_23+42].offset = T3635346014_23;
  T3635346014_0[T3635346014_23+42].name = T3635346014_22[T3635346014_23];
  T3635346014_21[T3635346014_23] = &T3635346014_0[T3635346014_23+42];
  }
  T3635346014_0[52].len = 10; T3635346014_0[52].kind = 2; T3635346014_0[52].sons = &T3635346014_21[0];
  NTI370009.node = &T3635346014_0[52];
  NTI370007.size = sizeof(Msgclass370007);
  NTI370007.kind = 14;
  NTI370007.base = 0;
  NTI370007.flags = 3;
  for (T3635346014_37 = 0; T3635346014_37 < 3; T3635346014_37++) {
  T3635346014_0[T3635346014_37+53].kind = 1;
  T3635346014_0[T3635346014_37+53].offset = T3635346014_37;
  T3635346014_0[T3635346014_37+53].name = T3635346014_36[T3635346014_37];
  T3635346014_35[T3635346014_37] = &T3635346014_0[T3635346014_37+53];
  }
  T3635346014_0[56].len = 3; T3635346014_0[56].kind = 2; T3635346014_0[56].sons = &T3635346014_35[0];
  NTI370007.node = &T3635346014_0[56];
  NTI370502.size = sizeof(Eparseerror370502);
  NTI370502.kind = 17;
  NTI370502.base = (&NTI3646);
  T3635346014_0[57].len = 0; T3635346014_0[57].kind = 2;
  NTI370502.node = &T3635346014_0[57];
  NTI370633.size = sizeof(Eparseerror370502*);
  NTI370633.kind = 22;
  NTI370633.base = (&NTI370502);
  NTI370633.marker = T3635346014_38;
  NTI370125.size = sizeof(Lexer370125);
  NTI370125.kind = 17;
  NTI370125.base = (&NTI3608);
  NTI370125.flags = 1;
  T3635346014_40[0] = &T3635346014_0[59];
  T3635346014_0[59].kind = 1;
  T3635346014_0[59].offset = offsetof(Lexer370125, buf);
  T3635346014_0[59].typ = (&NTI140);
  T3635346014_0[59].name = "buf";
  T3635346014_40[1] = &T3635346014_0[60];
  T3635346014_0[60].kind = 1;
  T3635346014_0[60].offset = offsetof(Lexer370125, bufpos);
  T3635346014_0[60].typ = (&NTI104);
  T3635346014_0[60].name = "bufpos";
  T3635346014_40[2] = &T3635346014_0[61];
  T3635346014_0[61].kind = 1;
  T3635346014_0[61].offset = offsetof(Lexer370125, line);
  T3635346014_0[61].typ = (&NTI104);
  T3635346014_0[61].name = "line";
  T3635346014_40[3] = &T3635346014_0[62];
  T3635346014_0[62].kind = 1;
  T3635346014_0[62].offset = offsetof(Lexer370125, col);
  T3635346014_0[62].typ = (&NTI104);
  T3635346014_0[62].name = "col";
  T3635346014_40[4] = &T3635346014_0[63];
  T3635346014_0[63].kind = 1;
  T3635346014_0[63].offset = offsetof(Lexer370125, baseindent);
  T3635346014_0[63].typ = (&NTI104);
  T3635346014_0[63].name = "baseIndent";
  T3635346014_40[5] = &T3635346014_0[64];
  T3635346014_0[64].kind = 1;
  T3635346014_0[64].offset = offsetof(Lexer370125, skippounds);
  T3635346014_0[64].typ = (&NTI130);
  T3635346014_0[64].name = "skipPounds";
  T3635346014_0[58].len = 6; T3635346014_0[58].kind = 2; T3635346014_0[58].sons = &T3635346014_40[0];
  NTI370125.node = &T3635346014_0[58];
  }
  
  