text: /* Generated by Nim Compiler v0.15.0 */
  /*   (c) 2016 Andreas Rumpf */
  /* The generated code is subject to the original license. */
  #define NIM_INTBITS 64
  
  #include "nimbase.h"
  #include <string.h>
  #include <sys/mman.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <setjmp.h>
  #include <signal.h>
  #include <sys/stat.h>
  #include <sys/types.h>
  #include <fcntl.h>
  typedef struct Exception Exception;
  typedef struct TNimType TNimType;
  typedef struct TNimNode TNimNode;
  typedef struct Avlnode29484 Avlnode29484;
  typedef struct Gcheap49818 Gcheap49818;
  typedef struct Gcstack49816 Gcstack49816;
  typedef struct Cellseq47320 Cellseq47320;
  typedef struct Cell47304 Cell47304;
  typedef struct Memregion29486 Memregion29486;
  typedef struct Smallchunk29440 Smallchunk29440;
  typedef struct Llchunk29480 Llchunk29480;
  typedef struct Bigchunk29442 Bigchunk29442;
  typedef struct Intset29414 Intset29414;
  typedef struct Trunk29410 Trunk29410;
  typedef struct Gcstat49814 Gcstat49814;
  typedef struct Cellset47316 Cellset47316;
  typedef struct Pagedesc47312 Pagedesc47312;
  typedef struct Basechunk29438 Basechunk29438;
  typedef struct Freecell29430 Freecell29430;
  typedef struct TGenericSeq TGenericSeq;
  typedef struct NimStringDesc NimStringDesc;
  typedef struct TSafePoint TSafePoint;
  typedef struct TNimObject TNimObject;
  typedef struct Overflowerror3640 Overflowerror3640;
  typedef struct Arithmeticerror3636 Arithmeticerror3636;
  typedef struct Systemerror3626 Systemerror3626;
  typedef struct Outofmemerror3650 Outofmemerror3650;
  typedef struct Valueerror3646 Valueerror3646;
  typedef struct Ioerror3628 Ioerror3628;
  typedef struct Reraiseerror3660 Reraiseerror3660;
  typedef struct TY203018 TY203018;
  typedef struct Assertionerror3644 Assertionerror3644;
  typedef struct TY292960 TY292960;
  typedef struct TY292961 TY292961;
  typedef struct Tsym292834 Tsym292834;
  typedef struct Ttypeseq292836 Ttypeseq292836;
  typedef struct Ttype292840 Ttype292840;
  typedef struct TY292929 TY292929;
  typedef struct Tinstantiation292824 Tinstantiation292824;
  typedef struct Tnodeseq292796 Tnodeseq292796;
  typedef struct Tnode292802 Tnode292802;
  typedef struct Rangeerror3656 Rangeerror3656;
  typedef struct Oserror3630 Oserror3630;
  typedef struct Keyerror3648 Keyerror3648;
  typedef struct Indexerror3652 Indexerror3652;
  typedef struct TY332033 TY332033;
  typedef struct TY324447 TY324447;
  typedef struct Slice90651 Slice90651;
  typedef struct Divbyzeroerror3638 Divbyzeroerror3638;
  typedef struct Candidateerrors419204 Candidateerrors419204;
  typedef struct TY419212 TY419212;
  typedef struct TY261877 TY261877;
  typedef struct Jsonnodeobj261832 Jsonnodeobj261832;
  typedef struct Indexentry384117 Indexentry384117;
  typedef struct TY587019 TY587019;
  typedef struct Tidobj199004 Tidobj199004;
  typedef struct Tstrtable292806 Tstrtable292806;
  typedef struct Tsymseq292804 Tsymseq292804;
  typedef struct Tident199010 Tident199010;
  typedef struct Tlineinfo191336 Tlineinfo191336;
  typedef struct Tloc292816 Tloc292816;
  typedef struct Ropeobj178006 Ropeobj178006;
  typedef struct Tlib292820 Tlib292820;
  typedef struct Orderedtable261852 Orderedtable261852;
  typedef struct Orderedkeyvaluepairseq261855 Orderedkeyvaluepairseq261855;
  typedef struct Tlistentry147007 Tlistentry147007;
  typedef struct Orderedkeyvaluepair261858 Orderedkeyvaluepair261858;
  typedef N_NIMCALL_PTR(NIM_BOOL, TY10610) (Exception* e0);
  typedef N_NIMCALL_PTR(NIM_BOOL, TY10615) (Exception* e0);
  typedef N_NIMCALL_PTR(void, TY10620) (void);
  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;
  };
  typedef Avlnode29484* TY29491[2];
  struct  Avlnode29484  {
  TY29491 link;
  NI key;
  NI upperbound;
  NI level;
  };
  struct  Cellseq47320  {
  NI len;
  NI cap;
  Cell47304** d;
  };
  typedef Smallchunk29440* TY29501[512];
  typedef Trunk29410* Trunkbuckets29412[256];
  struct  Intset29414  {
  Trunkbuckets29412 data;
  };
  struct  Memregion29486  {
  NI minlargeobj;
  NI maxlargeobj;
  TY29501 freesmallchunks;
  Llchunk29480* llmem;
  NI currmem;
  NI maxmem;
  NI freemem;
  NI lastsize;
  Bigchunk29442* freechunkslist;
  Intset29414 chunkstarts;
  Avlnode29484* root;
  Avlnode29484* deleted;
  Avlnode29484* last;
  Avlnode29484* 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;
  Memregion29486 region;
  Gcstat49814 stat;
  Cellset47316 marked;
  Cellseq47320 additionalroots;
  };
  struct  Basechunk29438  {
  NI prevsize;
  NI size;
  NIM_BOOL used;
  };
  struct  Smallchunk29440  {
    Basechunk29438 Sup;
  Smallchunk29440* next;
  Smallchunk29440* prev;
  Freecell29430* freelist;
  NI free;
  NI acc;
  NF data;
  };
  struct  Bigchunk29442  {
    Basechunk29438 Sup;
  Bigchunk29442* next;
  Bigchunk29442* prev;
  NI align;
  NF data;
  };
  typedef NI TY29419[8];
  struct  Trunk29410  {
  Trunk29410* next;
  NI key;
  TY29419 bits;
  };
  struct  Llchunk29480  {
  NI size;
  NI acc;
  Llchunk29480* next;
  };
  struct  TGenericSeq  {
  NI len;
  NI reserved;
  };
  struct  NimStringDesc  {
    TGenericSeq Sup;
  NIM_CHAR data[SEQ_DECL_SIZE];
  };
  struct  Freecell29430  {
  Freecell29430* next;
  NI zerofield;
  };
  typedef N_NIMCALL_PTR(void, TY18601) (NimStringDesc* msg0);
  struct  TNimObject  {
  TNimType* m_type;
  };
  struct  Exception  {
    TNimObject Sup;
  Exception* parent;
  NCSTRING name;
  NimStringDesc* message;
  NimStringDesc* trace;
  };
  typedef NU8 Walkop49810;
  struct  Cell47304  {
  NI refcount;
  TNimType* typ;
  };
  struct  Pagedesc47312  {
  Pagedesc47312* next;
  NI key;
  TY29419 bits;
  };
  typedef NU8 Tnimtypeflag3409;
  typedef NU8 Tnimnodekind3405;
  struct  TNimNode  {
  Tnimnodekind3405 kind;
  NI offset;
  TNimType* typ;
  NCSTRING name;
  NI len;
  TNimNode** sons;
  };
  typedef N_NIMCALL_PTR(void, Globalmarkerproc55802) (void);
  typedef TFrame* TY19203[128];
  typedef N_NIMCALL_PTR(void, Finalizer) (void* self0);
  typedef N_NOCONV_PTR(void, csighandlert13609) (int a0);
  typedef Globalmarkerproc55802 TY55810[7001];
  struct  Arithmeticerror3636  {
    Exception Sup;
  };
  struct  Overflowerror3640  {
    Arithmeticerror3636 Sup;
  };
  typedef struct {
  N_NIMCALL_PTR(NIM_BOOL, ClPrc) (Exception* e0, void* ClEnv);
  void* ClEnv;
  } TY17211;
  struct  TSafePoint  {
  TSafePoint* prev;
  NI status;
  jmp_buf context;
  NIM_BOOL hasRaiseAction;
  TY17211 raiseAction;
  };
  typedef N_CLOSURE_PTR(NIM_BOOL, T1689653243_8) (Exception* e0);
  struct  Systemerror3626  {
    Exception Sup;
  };
  struct  Outofmemerror3650  {
    Systemerror3626 Sup;
  };
  typedef NIM_CHAR TY20418[2001];
  struct  Valueerror3646  {
    Exception Sup;
  };
  struct  Ioerror3628  {
    Systemerror3626 Sup;
  };
  typedef NU8 Filemode13009;
  typedef NimStringDesc* TY83813[5];
  struct  Reraiseerror3660  {
    Exception Sup;
  };
  struct TY203018 {
  NimStringDesc* Field0;
  NI Field1;
  };
  typedef NF TY80219[23];
  typedef NIM_CHAR TY80614[500];
  struct  Assertionerror3644  {
    Exception Sup;
  };
  struct TY292961 {
  NI Field0;
  Tsym292834* Field1;
  };
  typedef TY292961 TY332747[1];
  typedef Ttype292840* TY333413[1];
  typedef Tinstantiation292824* TY332940[1];
  struct  Rangeerror3656  {
    Exception Sup;
  };
  struct  Oserror3630  {
    Systemerror3626 Sup;
  NI32 errorcode;
  };
  struct  Keyerror3648  {
    Valueerror3646 Sup;
  };
  struct  Indexerror3652  {
    Exception Sup;
  };
  typedef NIM_CHAR TY80165[65];
  typedef NI32 TY593234[1];
  typedef NU8 Sha1digest201005[20];
  struct TY324447 {
  NI Field0;
  NI Field1;
  };
  typedef NIM_CHAR TY87237[60];
  struct  Tinstantiation292824  {
  Tsym292834* sym;
  Ttypeseq292836* concretetypes;
  NI compilesid;
  };
  struct  Slice90651  {
  NI a;
  NI b;
  };
  struct  Divbyzeroerror3638  {
    Arithmeticerror3636 Sup;
  };
  struct TY419212 {
  Tsym292834* Field0;
  NI Field1;
  };
  typedef TY419212 TY487067[1];
  struct  Indexentry384117  {
  NimStringDesc* keyword;
  NimStringDesc* link;
  NimStringDesc* linktitle;
  NimStringDesc* linkdesc;
  };
  struct  Gcstack49816  {
  Gcstack49816* prev;
  Gcstack49816* next;
  void* starts;
  void* pos;
  NI maxstacksize;
  };
  struct  Tidobj199004  {
    TNimObject Sup;
  NI id;
  };
  typedef NU8 Tsymkind292435;
  struct  Tstrtable292806  {
  NI counter;
  Tsymseq292804* data;
  };
  typedef NU16 Tmagic292524;
  struct  Tlineinfo191336  {
  NI16 line;
  NI16 col;
  NI32 fileindex;
  };
  typedef NU32 Tsymflag292184Set;
  typedef NU32 Toption169009Set;
  typedef NU8 Tlockind292808;
  typedef NU8 Tstorageloc292812;
  typedef NU16 Tlocflag292810Set;
  struct  Tloc292816  {
  Tlockind292808 k;
  Tstorageloc292812 s;
  Tlocflag292810Set flags;
  Ttype292840* t;
  Ropeobj178006* r;
  };
  struct  Tsym292834  {
    Tidobj199004 Sup;
  Tsymkind292435 kind;
  union{
  struct {Ttypeseq292836* typeinstcache;
  } S1;
  struct {TY292929* procinstcache;
  Tsym292834* gcunsafetyreason;
  } S2;
  struct {TY292929* usedgenerics;
  Tstrtable292806 tab;
  } S3;
  struct {Tsym292834* guard;
  NI bitsize;
  } S4;
  } kindU;
  Tmagic292524 magic;
  Ttype292840* typ;
  Tident199010* name;
  Tlineinfo191336 info;
  Tsym292834* owner;
  Tsymflag292184Set flags;
  Tnode292802* ast;
  Toption169009Set options;
  NI position;
  NI offset;
  Tloc292816 loc;
  Tlib292820* annex;
  Tnode292802* constraint;
  };
  typedef NU8 Ttypekind292244;
  typedef NU8 Tcallingconvention292002;
  typedef NU32 Ttypeflag292431Set;
  struct  Ttype292840  {
    Tidobj199004 Sup;
  Ttypekind292244 kind;
  Tcallingconvention292002 callconv;
  Ttypeflag292431Set flags;
  Ttypeseq292836* sons;
  Tnode292802* n;
  Tsym292834* owner;
  Tsym292834* sym;
  Tsym292834* destructor;
  Tsym292834* deepcopy;
  Tsym292834* assignment;
  TY292960* methods;
  NI64 size;
  NI16 align;
  NI16 locklevel;
  Tloc292816 loc;
  };
  typedef NU16 Tnodeflag292427Set;
  typedef NU8 Tnodekind292020;
  struct  Tnode292802  {
  Ttype292840* typ;
  Tlineinfo191336 info;
  Tnodeflag292427Set flags;
  Tnodekind292020 kind;
  union{
  struct {NI64 intval;
  } S1;
  struct {NF floatval;
  } S2;
  struct {NimStringDesc* strval;
  } S3;
  struct {Tsym292834* sym;
  } S4;
  struct {Tident199010* ident;
  } S5;
  struct {Tnodeseq292796* sons;
  } S6;
  } kindU;
  NimStringDesc* comment;
  };
  typedef NU8 Jsonnodekind261828;
  struct  Orderedtable261852  {
  Orderedkeyvaluepairseq261855* data;
  NI counter;
  NI first;
  NI last;
  };
  struct  Jsonnodeobj261832  {
  Jsonnodekind261828 kind;
  union{
  struct {NimStringDesc* str;
  } S1;
  struct {NI64 num;
  } S2;
  struct {NF fnum;
  } S3;
  struct {NIM_BOOL bval;
  } S4;
  struct {Orderedtable261852 fields;
  } S6;
  struct {TY261877* elems;
  } S7;
  } kindU;
  };
  struct  Tident199010  {
    Tidobj199004 Sup;
  NimStringDesc* s;
  Tident199010* next;
  NI h;
  };
  struct  Ropeobj178006  {
    TNimObject Sup;
  Ropeobj178006* left;
  Ropeobj178006* right;
  NI length;
  NimStringDesc* data;
  };
  struct  Tlistentry147007  {
    TNimObject Sup;
  Tlistentry147007* prev;
  Tlistentry147007* next;
  };
  typedef NU8 Tlibkind292818;
  struct  Tlib292820  {
    Tlistentry147007 Sup;
  Tlibkind292818 kind;
  NIM_BOOL generated;
  NIM_BOOL isoverriden;
  Ropeobj178006* name;
  Tnode292802* path;
  };
  struct Orderedkeyvaluepair261858 {
  NI Field0;
  NI Field1;
  NimStringDesc* Field2;
  Jsonnodeobj261832* Field3;
  };
  struct TY292960 {
    TGenericSeq Sup;
    TY292961 data[SEQ_DECL_SIZE];
  };
  struct Ttypeseq292836 {
    TGenericSeq Sup;
    Ttype292840* data[SEQ_DECL_SIZE];
  };
  struct TY292929 {
    TGenericSeq Sup;
    Tinstantiation292824* data[SEQ_DECL_SIZE];
  };
  struct Tnodeseq292796 {
    TGenericSeq Sup;
    Tnode292802* data[SEQ_DECL_SIZE];
  };
  struct TY332033 {
    TGenericSeq Sup;
    NI32 data[SEQ_DECL_SIZE];
  };
  struct Candidateerrors419204 {
    TGenericSeq Sup;
    TY419212 data[SEQ_DECL_SIZE];
  };
  struct TY261877 {
    TGenericSeq Sup;
    Jsonnodeobj261832* data[SEQ_DECL_SIZE];
  };
  struct TY587019 {
    TGenericSeq Sup;
    int data[SEQ_DECL_SIZE];
  };
  struct Tsymseq292804 {
    TGenericSeq Sup;
    Tsym292834* data[SEQ_DECL_SIZE];
  };
  struct Orderedkeyvaluepairseq261855 {
    TGenericSeq Sup;
    Orderedkeyvaluepair261858 data[SEQ_DECL_SIZE];
  };
  static N_INLINE(void, initallocator_12401_1689653243)(void);
  static N_INLINE(void, initStackBottom)(void);
  N_NOINLINE(void, setStackBottom)(void* thestackbottom0);
  N_NIMCALL(void, initgc_12201_1689653243)(void);
  N_NIMCALL(void, init_47411_1689653243)(Cellseq47320* s0, NI cap0);
  N_NOCONV(void*, alloc0_7817_1689653243)(NI size0);
  N_NIMCALL(void*, alloc0_46016_1689653243)(Memregion29486* allocator0, NI size0);
  N_NIMCALL(void*, alloc_45840_1689653243)(Memregion29486* allocator0, NI size0);
  N_NIMCALL(void*, rawalloc_36604_1689653243)(Memregion29486* a0, NI requestedsize0);
  static N_INLINE(NI, roundup_28001_1689653243)(NI x0, NI v0);
  N_NIMCALL(Smallchunk29440*, getsmallchunk_36012_1689653243)(Memregion29486* a0);
  N_NIMCALL(Bigchunk29442*, getbigchunk_35214_1689653243)(Memregion29486* a0, NI size0);
  static N_INLINE(void, listremove_33002_1689653243)(Bigchunk29442** head0, Bigchunk29442* c0);
  N_NIMCALL(void, splitchunk_35009_1689653243)(Memregion29486* a0, Bigchunk29442* c0, NI size0);
  static N_INLINE(void, updateprevsize_32068_1689653243)(Memregion29486* a0, Bigchunk29442* c0, NI prevsize0);
  static N_INLINE(NIM_BOOL, isaccessible_32015_1689653243)(Memregion29486* a0, void* p0);
  N_NIMCALL(NIM_BOOL, contains_30732_1689653243)(Intset29414* s0, NI key0);
  N_NIMCALL(Trunk29410*, intsetget_30683_1689653243)(Intset29414* t0, NI key0);
  static N_INLINE(NI, pageindex_31176_1689653243)(void* p0);
  N_NIMCALL(void, incl_30753_1689653243)(Memregion29486* a0, Intset29414* s0, NI key0);
  N_NIMCALL(Trunk29410*, intsetput_30705_1689653243)(Memregion29486* a0, Intset29414* t0, NI key0);
  N_NIMCALL(void*, llalloc_29643_1689653243)(Memregion29486* a0, NI size0);
  static N_INLINE(void*, osallocpages_29215_1689653243)(NI size0);
  N_NOINLINE(void, raiseoutofmem_27633_1689653243)(void);
  static N_INLINE(void, inccurrmem_29602_1689653243)(Memregion29486* a0, NI bytes0);
  static N_INLINE(void, zeromem_7481_1689653243)(void* p0, NI size0);
  static N_INLINE(NI, pageindex_31171_1689653243)(Basechunk29438* c0);
  static N_INLINE(void, listadd_34223_1689653243)(Bigchunk29442** head0, Bigchunk29442* c0);
  N_NIMCALL(Bigchunk29442*, requestoschunks_31188_1689653243)(Memregion29486* a0, NI size0);
  static N_INLINE(void, listadd_37616_1689653243)(Smallchunk29440** head0, Smallchunk29440* c0);
  static N_INLINE(void, listremove_40402_1689653243)(Smallchunk29440** head0, Smallchunk29440* c0);
  N_NIMCALL(void, add_30553_1689653243)(Memregion29486* a0, Avlnode29484** t0, NI key0, NI upperbound0);
  N_NIMCALL(Avlnode29484*, allocavlnode_29827_1689653243)(Memregion29486* a0, NI key0, NI upperbound0);
  N_NIMCALL(void, skew_30534_1689653243)(Avlnode29484** t0);
  N_NIMCALL(void, split_30539_1689653243)(Avlnode29484** t0);
  N_NIMCALL(void, init_47426_1689653243)(Cellset47316* s0);
  N_NIMCALL(void, nimGCvisit)(void* d0, NI op0);
  N_NIMCALL(void, dooperation_51818_1689653243)(void* p0, Walkop49810 op0);
  static N_INLINE(Cell47304*, usrtocell_51440_1689653243)(void* usr0);
  static N_INLINE(void, decref_53001_1689653243)(Cell47304* c0);
  static N_INLINE(void, rtladdzct_52601_1689653243)(Cell47304* c0);
  N_NOINLINE(void, addzct_51417_1689653243)(Cellseq47320* s0, Cell47304* c0);
  static N_INLINE(void, add_47391_1689653243)(Cellseq47320* s0, Cell47304* c0);
  N_NOCONV(void*, alloc_7801_1689653243)(NI size0);
  static N_INLINE(void, copymem_7485_1689653243)(void* dest0, void* source0, NI size0);
  N_NOCONV(void, dealloc_7848_1689653243)(void* p0);
  N_NIMCALL(void, dealloc_46022_1689653243)(Memregion29486* allocator0, void* p0);
  N_NIMCALL(void, rawdealloc_43017_1689653243)(Memregion29486* a0, void* p0);
  static N_INLINE(Basechunk29438*, pageaddr_31181_1689653243)(void* p0);
  static N_INLINE(NIM_BOOL, issmallchunk_31069_1689653243)(Basechunk29438* c0);
  N_NIMCALL(void, freebigchunk_32203_1689653243)(Memregion29486* a0, Bigchunk29442* c_32207_1689653243);
  static N_INLINE(NIM_BOOL, chunkunused_31089_1689653243)(Basechunk29438* c0);
  N_NIMCALL(void, excl_30764_1689653243)(Intset29414* s0, NI key0);
  N_NIMCALL(void, freeoschunks_31807_1689653243)(Memregion29486* a0, void* p0, NI size0);
  static N_INLINE(void, osdeallocpages_29226_1689653243)(void* p0, NI size0);
  static N_INLINE(void, deccurrmem_29616_1689653243)(Memregion29486* a0, NI bytes0);
  N_NIMCALL(void, del_30601_1689653243)(Memregion29486* a0, Avlnode29484** t0, NI x0);
  static N_INLINE(void, deallocavlnode_30403_1689653243)(Memregion29486* a0, Avlnode29484* n0);
  N_NIMCALL(void, marks_67601_1689653243)(Gcheap49818* gch0, Cell47304* c0);
  N_NOINLINE(void, incl_48047_1689653243)(Cellset47316* s0, Cell47304* cell0);
  N_NIMCALL(Pagedesc47312*, cellsetput_47841_1689653243)(Cellset47316* t0, NI key0);
  static N_INLINE(NI, nexttry_47453_1689653243)(NI h0, NI maxhash0);
  N_NIMCALL(void, cellsetenlarge_47803_1689653243)(Cellset47316* t0);
  N_NIMCALL(void, cellsetrawinsert_47478_1689653243)(Cellset47316* t0, Pagedesc47312** data0, Pagedesc47312* desc0);
  N_NIMCALL(void, forallchildren_51814_1689653243)(Cell47304* cell0, Walkop49810 op0);
  static N_INLINE(void*, celltousr_51422_1689653243)(Cell47304* cell0);
  N_NIMCALL(void, forallchildrenaux_51822_1689653243)(void* dest0, TNimType* mt0, Walkop49810 op0);
  N_NIMCALL(void, forallslotsaux_55832_1689653243)(void* dest0, TNimNode* n0, Walkop49810 op0);
  N_NIMCALL(TNimNode*, selectbranch_27207_1689653243)(void* aa0, TNimNode* n0);
  N_NIMCALL(NI, getdiscriminant_26804_1689653243)(void* aa0, TNimNode* n0);
  N_NIMCALL(NIM_BOOL, containsorincl_48113_1689653243)(Cellset47316* s0, Cell47304* cell0);
  N_NIMCALL(Pagedesc47312*, cellsetget_47458_1689653243)(Cellset47316* t0, NI key0);
  N_NIMCALL(void, T1689653243_4)(void* p, NI op);
  N_NIMCALL(void, T1689653243_5)(void);
  N_NIMCALL(void, nimRegisterGlobalMarker)(Globalmarkerproc55802 markerproc0);
  N_NOCONV(void, signalHandler)(int sign0);
  N_NIMCALL(void, showerrormessage_18806_1689653243)(NCSTRING data0);
  N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str0);
  N_NIMCALL(NimStringDesc*, toNimStr)(NCSTRING str0, NI len0);
  N_NIMCALL(NimStringDesc*, rawNewStringNoInit)(NI space0);
  N_NIMCALL(void*, newObjNoInit)(TNimType* typ0, NI size0);
  N_NIMCALL(void*, rawnewobj_57401_1689653243)(TNimType* typ0, NI size0, Gcheap49818* gch0);
  N_NIMCALL(void, collectct_51807_1689653243)(Gcheap49818* gch0);
  N_NOINLINE(NI, stacksize_71001_1689653243)(void);
  static N_INLINE(NI, getoccupiedmem_47229_1689653243)(Memregion29486* a0);
  N_NIMCALL(void, collectctbody_74809_1689653243)(Gcheap49818* gch0);
  static N_INLINE(void, prepareforinteriorpointerchecking_44688_1689653243)(Memregion29486* a0);
  N_NIMCALL(NI, lowgauge_30412_1689653243)(Avlnode29484* n0);
  N_NIMCALL(NI, highgauge_30429_1689653243)(Avlnode29484* n0);
  N_CDECL(void, markstackandregisters_72437_1689653243)(Gcheap49818* gch0);
  static N_INLINE(void, gcmark_70010_1689653243)(Gcheap49818* gch0, void* p0);
  N_NIMCALL(void*, interiorallocatedptr_44692_1689653243)(Memregion29486* a0, void* p0);
  N_NIMCALL(Avlnode29484*, inrange_30481_1689653243)(Avlnode29484* root0, NI key0);
  N_NIMCALL(NIM_BOOL, collectzct_69407_1689653243)(Gcheap49818* gch0);
  N_NIMCALL(void, preparedealloc_52008_1689653243)(Cell47304* cell0);
  N_NIMCALL(void, collectcycles_69411_1689653243)(Gcheap49818* gch0);
  N_NIMCALL(void, cellsetreset_55828_1689653243)(Cellset47316* s0);
  N_NIMCALL(void, deinit_47434_1689653243)(Cellset47316* s0);
  N_NIMCALL(void, markglobals_67813_1689653243)(Gcheap49818* gch0);
  N_NIMCALL(void, sweep_67401_1689653243)(Gcheap49818* gch0);
  static N_INLINE(NIM_BOOL, iscell_31156_1689653243)(void* p0);
  N_NIMCALL(NIM_BOOL, contains_48008_1689653243)(Cellset47316* s0, Cell47304* cell0);
  N_NIMCALL(void, freecycliccell_66215_1689653243)(Gcheap49818* gch0, Cell47304* c0);
  N_NIMCALL(NI, getoccupiedmem_8650_1689653243)(void);
  N_NIMCALL(NI, gettotalmem_8654_1689653243)(void);
  N_NIMCALL(NI, getfreemem_8652_1689653243)(void);
  N_NIMCALL(void, unmarkstackandregisters_74602_1689653243)(Gcheap49818* gch0);
  static N_INLINE(void, addnewobjtozct_56874_1689653243)(Cell47304* res0, Gcheap49818* gch0);
  N_NIMCALL(void, writetostderr_18801_1689653243)(NCSTRING msg0);
  N_NIMCALL(void, write_14903_1689653243)(FILE* f0, NCSTRING c0);
  N_NIMCALL(void, registersignalhandler_22402_1689653243)(void);
  N_NIMCALL(NI, getRefcount)(void* p0);
  N_NIMCALL(void*, newObjRC1)(TNimType* typ0, NI size0);
  static N_INLINE(NI, addInt)(NI a0, NI b0);
  N_NOINLINE(void, raiseOverflow)(void);
  static N_INLINE(void, sysfatal_23264_1689653243)(NimStringDesc* message0) __attribute__((noreturn));
  N_NIMCALL(void, T1689653243_7)(void* p, NI op);
  N_NIMCALL(void*, newObj)(TNimType* typ0, NI size0);
  N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src0);
  static N_INLINE(void, nimGCunrefNoCycle)(void* p0);
  N_NIMCALL(void, raiseException)(Exception* e0, NCSTRING ename0);
  N_NIMCALL(void, raiseexceptionaux_20001_1689653243)(Exception* e0);
  static N_INLINE(void, pushCurrentException)(Exception* e0);
  static N_INLINE(void, asgnRef)(void** dest0, void* src0);
  static N_INLINE(void, incref_53419_1689653243)(Cell47304* c0);
  static N_INLINE(NIM_BOOL, isObjWithCache)(TNimType* obj0, TNimType* subclass0, TNimType** cache0);
  N_NOINLINE(NIM_BOOL, isobjslowpath_23136_1689653243)(TNimType* obj0, TNimType* subclass0, TNimType** cache0);
  static N_INLINE(void, quitordebug_19804_1689653243)(void);
  N_NIMCALL(NI, mulInt)(NI a0, NI b0);
  N_NOINLINE(NIM_BOOL, isonstack_51811_1689653243)(void* p0);
  static N_INLINE(void, sysfatal_23018_1689653243)(NimStringDesc* message0) __attribute__((noreturn));
  N_NIMCALL(void, T1689653243_11)(void* p, NI op);
  N_NIMCALL(void, unsureAsgnRef)(void** dest0, void* src0);
  N_NIMCALL(void, genericresetaux_85601_1689653243)(void* dest0, TNimNode* n0);
  N_NIMCALL(void, genericReset)(void* dest0, TNimType* mt0);
  N_NIMCALL(NimStringDesc*, rawNewString)(NI space0);
  N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI start_79210_1689653243, NI last0);
  static N_INLINE(NI, resize_78601_1689653243)(NI old0);
  N_NIMCALL(void*, growobj_66209_1689653243)(void* old0, NI newsize0);
  N_NIMCALL(void*, growobj_63203_1689653243)(void* old0, NI newsize0, Gcheap49818* gch0);
  N_NIMCALL(NimStringDesc*, mnewString)(NI len0);
  N_NIMCALL(NimStringDesc*, mnewString)(NI len0);
  N_NIMCALL(void, genericassignaux_85606_1689653243)(void* dest0, void* src0, TNimType* mt0, NIM_BOOL shallow0);
  N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src0);
  N_NIMCALL(void*, newSeq)(TNimType* typ0, NI len0);
  N_NIMCALL(void, genericassignaux_85612_1689653243)(void* dest0, void* src0, TNimNode* n0, NIM_BOOL shallow0);
  N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s0, NI newlen0);
  N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest0, NI addlen0);
  N_NIMCALL(NI, writebuffer_14978_1689653243)(FILE* f0, void* buffer0, NI len0);
  N_NOINLINE(void, raiseeio_81060_1689653243)(NimStringDesc* msg0) __attribute__((noreturn));
  static N_INLINE(void, sysfatal_81065_1689653243)(NimStringDesc* message0) __attribute__((noreturn));
  N_NIMCALL(void, T1689653243_13)(void* p, NI op);
  N_NIMCALL(int, getfilehandle_14990_1689653243)(FILE* f0);
  N_NIMCALL(void, close_14853_1689653243)(FILE* f0);
  N_NIMCALL(void, T1689653243_20)(void* p, NI op);
  N_NIMCALL(TNimType*, extGetCellType)(void* c0);
  N_NIMCALL(NIM_BOOL, open_14803_1689653243)(FILE** f0, NimStringDesc* filename0, Filemode13009 mode0, NI bufsize0);
  static N_INLINE(void, sysfatal_14826_1689653243)(NimStringDesc* message0, NimStringDesc* arg0) __attribute__((noreturn));
  static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0);
  static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0);
  static N_INLINE(void, sysfatal_20617_1689653243)(NimStringDesc* message0) __attribute__((noreturn));
  N_NIMCALL(void, T1689653243_22)(void* p, NI op);
  N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x0);
  static N_INLINE(void, sysfatal_91221_1689653243)(NimStringDesc* message0) __attribute__((noreturn));
  N_NIMCALL(void, T1689653243_31)(void* p, NI op);
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_332633_1689653243)(TY292960* x0, TY292960* y0);
  static N_INLINE(void*, seqtoptr_332644_1689653243)(TY292960* x0);
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_332711_1689653243)(TY292961 x0, TY292961 y0);
  N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq0, NI elemsize0);
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_328727_1689653243)(Ttypeseq292836* x0, Ttypeseq292836* y0);
  static N_INLINE(void*, seqtoptr_328738_1689653243)(Ttypeseq292836* x0);
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_295864_1689653243)(TY292929* x0, TY292929* y0);
  static N_INLINE(void*, seqtoptr_295875_1689653243)(TY292929* x0);
  N_NIMCALL(void, objectinitaux_86478_1689653243)(void* dest0, TNimNode* n0);
  N_NIMCALL(void, objectInit)(void* dest0, TNimType* typ0);
  N_NIMCALL(void*, realloc_47004_1689653243)(Memregion29486* allocator0, void* p0, NI newsize0);
  N_NIMCALL(NI, ptrsize_45613_1689653243)(void* p0);
  N_NIMCALL(void, T1689653243_33)(void* p, NI op);
  N_NIMCALL(void, T1689653243_34)(void* p, NI op);
  N_NIMCALL(void, T1689653243_35)(void* p, NI op);
  N_NIMCALL(void, genericAssign)(void* dest0, void* src0, TNimType* mt0);
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_593149_1689653243)(TY332033* x0, TY332033* y0);
  static N_INLINE(void*, seqtoptr_593160_1689653243)(TY332033* x0);
  static N_INLINE(void, pushSafePoint)(TSafePoint* s0);
  N_NIMCALL(NimStringDesc*, readall_14865_1689653243)(FILE* file0);
  N_NIMCALL(NI, rawfilesize_81874_1689653243)(FILE* file0);
  N_NIMCALL(NimStringDesc*, readallfile_81885_1689653243)(FILE* file0, NI len0);
  N_NIMCALL(NI, readbuffer_14956_1689653243)(FILE* f0, void* buffer0, NI len0);
  N_NIMCALL(NIM_BOOL, endoffile_14856_1689653243)(FILE* f0);
  N_NIMCALL(NimStringDesc*, readallbuffer_81866_1689653243)(FILE* file0);
  static N_INLINE(void, popSafePoint)(void);
  N_NIMCALL(void, reraiseException)(void);
  N_NIMCALL(void, write_14891_1689653243)(FILE* f0, NimStringDesc* s0);
  N_NIMCALL(NimStringDesc*, rawNewString)(NI cap0);
  N_NIMCALL(NIM_BOOL, readline_14915_1689653243)(FILE* f0, NimStringDesc** line0);
  static N_INLINE(void*, seqtoptr_360609_1689653243)(Tnodeseq292796* x0);
  N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq0, NI elemsize0, NI newlen0);
  static N_INLINE(void*, seqtoptr_486824_1689653243)(Candidateerrors419204* x0);
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_486891_1689653243)(TY419212 x0, TY419212 y0);
  static N_INLINE(void*, seqtoptr_486941_1689653243)(Candidateerrors419204* x0);
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_487008_1689653243)(TY419212 x0, TY419212 y0);
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_486930_1689653243)(Candidateerrors419204* x0, Candidateerrors419204* y0);
  static N_INLINE(void*, seqtoptr_262855_1689653243)(TY261877* x0);
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_262792_3111005044)(Jsonnodeobj261832* a0, Jsonnodeobj261832* b0);
  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(void, T1689653243_49)(void* p, NI op);
  static N_INLINE(void, Gcdisable_10401_1689653243)(void);
  N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x0);
  static N_INLINE(void, Gcenable_10403_1689653243)(void);
  STRING_LITERAL(T1689653243_2, "out of memory", 13);
  STRING_LITERAL(T1689653243_6, "[GC] cannot register global variable; too many global variables", 63);
  STRING_LITERAL(T1689653243_10, "over- or underflow", 18);
  STRING_LITERAL(T1689653243_12, "attempt to write to a nil address", 33);
  STRING_LITERAL(T1689653243_14, "cannot write string to file", 27);
  STRING_LITERAL(T1689653243_15, "rb", 2);
  STRING_LITERAL(T1689653243_16, "wb", 2);
  STRING_LITERAL(T1689653243_17, "w+b", 3);
  STRING_LITERAL(T1689653243_18, "r+b", 3);
  STRING_LITERAL(T1689653243_19, "ab", 2);
  NIM_CONST TY83813 Formatopen_83810_1689653243 = {((NimStringDesc*) &T1689653243_15),
  ((NimStringDesc*) &T1689653243_16),
  ((NimStringDesc*) &T1689653243_17),
  ((NimStringDesc*) &T1689653243_18),
  ((NimStringDesc*) &T1689653243_19)}
  ;
  STRING_LITERAL(T1689653243_21, "cannot open: ", 13);
  STRING_LITERAL(T1689653243_23, "no exception to reraise", 23);
  STRING_LITERAL(T1689653243_24, "(", 1);
  STRING_LITERAL(T1689653243_25, ", ", 2);
  STRING_LITERAL(T1689653243_26, "filename", 8);
  STRING_LITERAL(T1689653243_27, ": ", 2);
  STRING_LITERAL(T1689653243_28, "nil", 3);
  STRING_LITERAL(T1689653243_29, "line", 4);
  STRING_LITERAL(T1689653243_30, ")", 1);
  NIM_CONST TY80219 powtens_80218_1689653243 = {1.0000000000000000e+00,
  1.0000000000000000e+01,
  1.0000000000000000e+02,
  1.0000000000000000e+03,
  1.0000000000000000e+04,
  1.0000000000000000e+05,
  1.0000000000000000e+06,
  1.0000000000000000e+07,
  1.0000000000000000e+08,
  1.0000000000000000e+09,
  1.0000000000000000e+10,
  1.0000000000000000e+11,
  1.0000000000000000e+12,
  1.0000000000000000e+13,
  1.0000000000000000e+14,
  1.0000000000000000e+15,
  1.0000000000000000e+16,
  1.0000000000000000e+17,
  1.0000000000000000e+18,
  1.0000000000000000e+19,
  1.0000000000000000e+20,
  1.0000000000000000e+21,
  1.0000000000000000e+22}
  ;
  STRING_LITERAL(T1689653243_32, " (invalid data!)", 16);
  STRING_LITERAL(T1689653243_36, "nan", 3);
  STRING_LITERAL(T1689653243_37, "-inf", 4);
  STRING_LITERAL(T1689653243_38, "inf", 3);
  STRING_LITERAL(T1689653243_40, "error while reading from file", 29);
  STRING_LITERAL(T1689653243_41, "", 0);
  STRING_LITERAL(T1689653243_42, "EOF reached", 11);
  STRING_LITERAL(T1689653243_43, "cannot set file position", 24);
  STRING_LITERAL(T1689653243_44, "cannot retrieve file position", 29);
  STRING_LITERAL(T1689653243_46, "0", 1);
  STRING_LITERAL(T1689653243_47, "true", 4);
  STRING_LITERAL(T1689653243_48, "false", 5);
  STRING_LITERAL(T1689653243_50, "[GC] total memory: ", 19);
  STRING_LITERAL(T1689653243_51, "\012[GC] occupied memory: ", 23);
  STRING_LITERAL(T1689653243_52, "\012[GC] stack scans: ", 19);
  STRING_LITERAL(T1689653243_53, "\012[GC] stack cells: ", 19);
  STRING_LITERAL(T1689653243_54, "\012[GC] cycle collections: ", 25);
  STRING_LITERAL(T1689653243_55, "\012[GC] max threshold: ", 21);
  STRING_LITERAL(T1689653243_56, "\012[GC] zct capacity: ", 20);
  STRING_LITERAL(T1689653243_57, "\012[GC] max cycle table size: ", 28);
  STRING_LITERAL(T1689653243_58, "\012[GC] max pause time [ms]: ", 27);
  STRING_LITERAL(T1689653243_59, "\012", 1);
  STRING_LITERAL(T1689653243_60, "[GC] max stack size: ", 21);
  NIM_BOOL nimvm_5754_1689653243;
  NI nim_program_result;
  TY10610 globalraisehook_10614_1689653243;
  TY10615 localraisehook_10619_1689653243;
  TY10620 outofmemhook_10622_1689653243;
  TNimType strdesc_13003_1689653243;
  TY18601 errormessagewriter_18604_1689653243;
  TFrame* frameptr_18836_1689653243;
  TSafePoint* exchandler_18837_1689653243;
  Exception* currexception_18839_1689653243;
  TNimType NTI3608; /* RootObj */
  TNimType NTI3624; /* Exception */
  TNimType NTI140; /* cstring */
  TNimType NTI138; /* string */
  TNimType NTI10611; /* ref Exception */
  TY19203 tempframes_19204_1689653243;
  Avlnode29484 bottomdata_29520_1689653243;
  Avlnode29484* bottom_29521_1689653243;
  Gcheap49818 gch_49858_1689653243;
  NI globalmarkerslen_55807_1689653243;
  TY55810 globalmarkers_55811_1689653243;
  TNimType NTI104; /* int */
  TNimType NTI3636; /* ArithmeticError */
  TNimType NTI3640; /* OverflowError */
  TNimType NTI23271; /* ref OverflowError */
  TNimType NTI3626; /* SystemError */
  TNimType NTI3650; /* OutOfMemError */
  static TNimType* Nim_OfCheck_CACHE10[2];
  TNimType NTI142; /* pointer */
  TNimType NTI110; /* int32 */
  TNimType NTI3646; /* ValueError */
  TNimType NTI23025; /* ref ValueError */
  TNimType NTI108; /* int16 */
  TNimType NTI3628; /* IOError */
  TNimType NTI81072; /* ref IOError */
  TNimType NTI130; /* bool */
  TNimType NTI7288; /* BiggestInt */
  TNimType NTI7290; /* BiggestFloat */
  TNimType NTI3610; /* RootRef */
  TNimType NTI7408; /* cint */
  TNimType NTI116; /* uint8 */
  TNimType NTI120; /* uint32 */
  TNimType NTI3660; /* ReraiseError */
  TNimType NTI20624; /* ref ReraiseError */
  TNimType NTI3644; /* AssertionError */
  TNimType NTI91228; /* ref AssertionError */
  extern TNimType NTI292960; /* seq[(int, PSym)] */
  extern TNimType NTI292836; /* TTypeSeq */
  extern TNimType NTI292929; /* seq[PInstantiation] */
  TNimType NTI29419; /* array[0..7, int] */
  extern TNimType NTI292796; /* TNodeSeq */
  TNimType NTI3604; /* Natural */
  TNimType NTI124; /* float */
  TNimType NTI13005; /* CFile */
  TNimType NTI13007; /* File */
  TNimType NTI106; /* int8 */
  TNimType NTI3656; /* RangeError */
  TNimType NTI3630; /* OSError */
  TNimType NTI130607; /* ref OSError */
  TNimType NTI3648; /* KeyError */
  TNimType NTI191804; /* ref KeyError */
  TNimType NTI3652; /* IndexError */
  TNimType NTI143015; /* ref IndexError */
  extern TNimType NTI332033; /* seq[int32] */
  TNimType NTI136; /* char */
  TNimType NTI13011; /* FileHandle */
  extern TNimType NTI292826; /* PInstantiation */
  TNimType NTI3638; /* DivByZeroError */
  extern TNimType NTI419204; /* CandidateErrors */
  TNimType NTI587019; /* seq[SocketHandle] */
  
  static N_INLINE(void, initallocator_12401_1689653243)(void) {
  	bottom_29521_1689653243 = (&bottomdata_29520_1689653243);
  	(*bottom_29521_1689653243).link[(((NI) 0))- 0] = bottom_29521_1689653243;
  	(*bottom_29521_1689653243).link[(((NI) 1))- 0] = bottom_29521_1689653243;
  }
  
  N_NOINLINE(void, setStackBottom)(void* thestackbottom0) {
  	{
  		if (!(gch_49858_1689653243.stackbottom == NIM_NIL)) goto LA3;
  		gch_49858_1689653243.stackbottom = thestackbottom0;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		NI a0;
  		NI b0;
  		a0 = ((NI) (thestackbottom0));
  		b0 = ((NI) (gch_49858_1689653243.stackbottom));
  		gch_49858_1689653243.stackbottom = ((void*) (((a0 >= b0) ? a0 : b0)));
  	}
  	LA1: ;
  }
  
  static N_INLINE(void, initStackBottom)(void) {
  	void* volatile locals0;
  	locals0 = (void*)0;
  	locals0 = ((void*) ((&locals0)));
  	setStackBottom(locals0);
  }
  
  static N_INLINE(NI, roundup_28001_1689653243)(NI x0, NI v0) {
  	NI result0;
  	result0 = (NI)0;
  	result0 = (NI)((NI)(x0 + (NI)(v0 - ((NI) 1))) & (NI)((NU64) ~((NI)(v0 - ((NI) 1)))));
  	return result0;
  }
  
  static N_INLINE(void, listremove_33002_1689653243)(Bigchunk29442** head0, Bigchunk29442* c0) {
  	{
  		if (!(c0 == (*head0))) goto LA3;
  		(*head0) = (*c0).next;
  		{
  			if (!!(((*head0) == NIM_NIL))) goto LA7;
  			(*(*head0)).prev = NIM_NIL;
  		}
  		LA7: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		(*(*c0).prev).next = (*c0).next;
  		{
  			if (!!(((*c0).next == NIM_NIL))) goto LA12;
  			(*(*c0).next).prev = (*c0).prev;
  		}
  		LA12: ;
  	}
  	LA1: ;
  	(*c0).next = NIM_NIL;
  	(*c0).prev = NIM_NIL;
  }
  
  N_NIMCALL(Trunk29410*, intsetget_30683_1689653243)(Intset29414* t0, NI key0) {
  	Trunk29410* result0;
  	Trunk29410* it0;
  {	result0 = (Trunk29410*)0;
  	it0 = (*t0).data[((NI)(key0 & ((NI) 255)))- 0];
  	{
  		while (1) {
  			if (!!((it0 == NIM_NIL))) goto LA2;
  			{
  				if (!((*it0).key == key0)) goto LA5;
  				result0 = it0;
  				goto BeforeRet;
  			}
  			LA5: ;
  			it0 = (*it0).next;
  		} LA2: ;
  	}
  	result0 = NIM_NIL;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, contains_30732_1689653243)(Intset29414* s0, NI key0) {
  	NIM_BOOL result0;
  	Trunk29410* t0;
  	result0 = (NIM_BOOL)0;
  	t0 = intsetget_30683_1689653243(s0, (NI)((NU64)(key0) >> (NU64)(((NI) 9))));
  	{
  		NI u0;
  		if (!!((t0 == NIM_NIL))) goto LA3;
  		u0 = (NI)(key0 & ((NI) 511));
  		result0 = !(((NI)((*t0).bits[((NI)((NU64)(((NI) (u0))) >> (NU64)(((NI) 6))))- 0] & (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(((NI) (u0)) & ((NI) 63))))))) == ((NI) 0)));
  	}
  	goto LA1;
  	LA3: ;
  	{
  		result0 = NIM_FALSE;
  	}
  	LA1: ;
  	return result0;
  }
  
  static N_INLINE(NI, pageindex_31176_1689653243)(void* p0) {
  	NI result0;
  	result0 = (NI)0;
  	result0 = (NI)((NU64)(((NI) (p0))) >> (NU64)(((NI) 12)));
  	return result0;
  }
  
  static N_INLINE(NIM_BOOL, isaccessible_32015_1689653243)(Memregion29486* a0, void* p0) {
  	NIM_BOOL result0;
  	NI LOC1;
  	result0 = (NIM_BOOL)0;
  	LOC1 = (NI)0;
  	LOC1 = pageindex_31176_1689653243(p0);
  	result0 = contains_30732_1689653243((&(*a0).chunkstarts), LOC1);
  	return result0;
  }
  
  static N_INLINE(void, updateprevsize_32068_1689653243)(Memregion29486* a0, Bigchunk29442* c0, NI prevsize0) {
  	Basechunk29438* ri0;
  	ri0 = ((Basechunk29438*) ((NI)((NU64)(((NI) (c0))) + (NU64)((*c0).Sup.size))));
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = isaccessible_32015_1689653243((&(*a0)), ((void*) (ri0)));
  		if (!LOC3) goto LA4;
  		(*ri0).prevsize = prevsize0;
  	}
  	LA4: ;
  }
  
  N_NOINLINE(void, raiseoutofmem_27633_1689653243)(void) {
  	{
  		if (!!((outofmemhook_10622_1689653243 == NIM_NIL))) goto LA3;
  		outofmemhook_10622_1689653243();
  	}
  	LA3: ;
  	printf("%s\012", ((NimStringDesc*) &T1689653243_2)? (((NimStringDesc*) &T1689653243_2))->data:"nil");
  	fflush(stdout);
  	exit(((NI) 1));
  }
  
  static N_INLINE(void*, osallocpages_29215_1689653243)(NI size0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = mmap(NIM_NIL, size0, ((int) 3), ((NI32) 258), ((int) -1), ((NI) 0));
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = (result0 == NIM_NIL);
  		if (LOC3) goto LA4;
  		LOC3 = (result0 == ((void*) -1));
  		LA4: ;
  		if (!LOC3) goto LA5;
  		raiseoutofmem_27633_1689653243();
  	}
  	LA5: ;
  	return result0;
  }
  
  static N_INLINE(void, inccurrmem_29602_1689653243)(Memregion29486* a0, NI bytes0) {
  	(*a0).currmem += bytes0;
  }
  
  static N_INLINE(void, zeromem_7481_1689653243)(void* p0, NI size0) {
  	void* LOC1;
  	LOC1 = (void*)0;
  	LOC1 = memset(p0, ((int) 0), ((size_t) (size0)));
  }
  
  N_NIMCALL(void*, llalloc_29643_1689653243)(Memregion29486* a0, NI size0) {
  	void* result0;
  	result0 = (void*)0;
  	{
  		NIM_BOOL LOC3;
  		Llchunk29480* old0;
  		void* LOC7;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = ((*a0).llmem == NIM_NIL);
  		if (LOC3) goto LA4;
  		LOC3 = ((*(*a0).llmem).size < size0);
  		LA4: ;
  		if (!LOC3) goto LA5;
  		old0 = (*a0).llmem;
  		LOC7 = (void*)0;
  		LOC7 = osallocpages_29215_1689653243(((NI) 4096));
  		(*a0).llmem = ((Llchunk29480*) (LOC7));
  		inccurrmem_29602_1689653243(a0, ((NI) 4096));
  		(*(*a0).llmem).size = (NI)(((NI) 4096) - ((NI)sizeof(Llchunk29480)));
  		(*(*a0).llmem).acc = ((NI)sizeof(Llchunk29480));
  		(*(*a0).llmem).next = old0;
  	}
  	LA5: ;
  	result0 = ((void*) ((NI)(((NI) ((*a0).llmem)) + (*(*a0).llmem).acc)));
  	(*(*a0).llmem).size -= size0;
  	(*(*a0).llmem).acc += size0;
  	zeromem_7481_1689653243(result0, ((NI) (size0)));
  	return result0;
  }
  
  N_NIMCALL(Trunk29410*, intsetput_30705_1689653243)(Memregion29486* a0, Intset29414* t0, NI key0) {
  	Trunk29410* result0;
  	result0 = (Trunk29410*)0;
  	result0 = intsetget_30683_1689653243((&(*t0)), key0);
  	{
  		void* LOC5;
  		if (!(result0 == NIM_NIL)) goto LA3;
  		LOC5 = (void*)0;
  		LOC5 = llalloc_29643_1689653243(a0, ((NI)sizeof(Trunk29410)));
  		result0 = ((Trunk29410*) (LOC5));
  		(*result0).next = (*t0).data[((NI)(key0 & ((NI) 255)))- 0];
  		(*t0).data[((NI)(key0 & ((NI) 255)))- 0] = result0;
  		(*result0).key = key0;
  	}
  	LA3: ;
  	return result0;
  }
  
  N_NIMCALL(void, incl_30753_1689653243)(Memregion29486* a0, Intset29414* s0, NI key0) {
  	Trunk29410* t0;
  	NI u0;
  	t0 = intsetput_30705_1689653243(a0, s0, (NI)((NU64)(key0) >> (NU64)(((NI) 9))));
  	u0 = (NI)(key0 & ((NI) 511));
  	(*t0).bits[((NI)((NU64)(((NI) (u0))) >> (NU64)(((NI) 6))))- 0] = (NI)((*t0).bits[((NI)((NU64)(((NI) (u0))) >> (NU64)(((NI) 6))))- 0] | (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(((NI) (u0)) & ((NI) 63)))))));
  }
  
  static N_INLINE(NI, pageindex_31171_1689653243)(Basechunk29438* c0) {
  	NI result0;
  	result0 = (NI)0;
  	result0 = (NI)((NU64)(((NI) (c0))) >> (NU64)(((NI) 12)));
  	return result0;
  }
  
  static N_INLINE(void, listadd_34223_1689653243)(Bigchunk29442** head0, Bigchunk29442* c0) {
  	(*c0).next = (*head0);
  	{
  		if (!!(((*head0) == NIM_NIL))) goto LA3;
  		(*(*head0)).prev = c0;
  	}
  	LA3: ;
  	(*head0) = c0;
  }
  
  N_NIMCALL(void, splitchunk_35009_1689653243)(Memregion29486* a0, Bigchunk29442* c0, NI size0) {
  	Bigchunk29442* rest0;
  	Basechunk29438* LOC1;
  	NI LOC2;
  	rest0 = ((Bigchunk29442*) ((NI)((NU64)(((NI) (c0))) + (NU64)(size0))));
  	(*rest0).Sup.size = (NI)((*c0).Sup.size - size0);
  	(*rest0).Sup.used = NIM_FALSE;
  	(*rest0).next = NIM_NIL;
  	(*rest0).prev = NIM_NIL;
  	(*rest0).Sup.prevsize = size0;
  	updateprevsize_32068_1689653243(a0, c0, (*rest0).Sup.size);
  	(*c0).Sup.size = size0;
  	LOC1 = (Basechunk29438*)0;
  	LOC1 = &rest0->Sup;
  	LOC2 = (NI)0;
  	LOC2 = pageindex_31171_1689653243(LOC1);
  	incl_30753_1689653243(a0, (&(*a0).chunkstarts), LOC2);
  	listadd_34223_1689653243(&(*a0).freechunkslist, rest0);
  }
  
  N_NIMCALL(Bigchunk29442*, requestoschunks_31188_1689653243)(Memregion29486* a0, NI size0) {
  	Bigchunk29442* result0;
  	void* LOC1;
  	NI nxt0;
  	Basechunk29438* next0;
  	NI lastsize0;
  	NI prv0;
  	Basechunk29438* prev0;
  	result0 = (Bigchunk29442*)0;
  	inccurrmem_29602_1689653243(a0, size0);
  	(*a0).freemem += size0;
  	LOC1 = (void*)0;
  	LOC1 = osallocpages_29215_1689653243(size0);
  	result0 = ((Bigchunk29442*) (LOC1));
  	(*result0).next = NIM_NIL;
  	(*result0).prev = NIM_NIL;
  	(*result0).Sup.used = NIM_FALSE;
  	(*result0).Sup.size = size0;
  	nxt0 = (NI)((NU64)(((NI) (result0))) + (NU64)(size0));
  	next0 = ((Basechunk29438*) (nxt0));
  	{
  		NI LOC4;
  		NIM_BOOL LOC5;
  		LOC4 = (NI)0;
  		LOC4 = pageindex_31171_1689653243(next0);
  		LOC5 = (NIM_BOOL)0;
  		LOC5 = contains_30732_1689653243((&(*a0).chunkstarts), LOC4);
  		if (!LOC5) goto LA6;
  		(*next0).prevsize = size0;
  	}
  	LA6: ;
  	{
  		if (!!(((*a0).lastsize == ((NI) 0)))) goto LA10;
  		lastsize0 = (*a0).lastsize;
  	}
  	goto LA8;
  	LA10: ;
  	{
  		lastsize0 = ((NI) 4096);
  	}
  	LA8: ;
  	prv0 = (NI)((NU64)(((NI) (result0))) - (NU64)(lastsize0));
  	prev0 = ((Basechunk29438*) (prv0));
  	{
  		NIM_BOOL LOC15;
  		NI LOC16;
  		LOC15 = (NIM_BOOL)0;
  		LOC16 = (NI)0;
  		LOC16 = pageindex_31171_1689653243(prev0);
  		LOC15 = contains_30732_1689653243((&(*a0).chunkstarts), LOC16);
  		if (!(LOC15)) goto LA17;
  		LOC15 = ((*prev0).size == lastsize0);
  		LA17: ;
  		if (!LOC15) goto LA18;
  		(*result0).Sup.prevsize = lastsize0;
  	}
  	goto LA13;
  	LA18: ;
  	{
  		(*result0).Sup.prevsize = ((NI) 0);
  	}
  	LA13: ;
  	(*a0).lastsize = size0;
  	return result0;
  }
  
  N_NIMCALL(Bigchunk29442*, getbigchunk_35214_1689653243)(Memregion29486* a0, NI size0) {
  	Bigchunk29442* result0;
  	Basechunk29438* LOC16;
  	NI LOC17;
  	result0 = (Bigchunk29442*)0;
  	result0 = (*a0).freechunkslist;
  	{
  		{
  			while (1) {
  				if (!!((result0 == NIM_NIL))) goto LA3;
  				{
  					if (!((*result0).Sup.size == size0)) goto LA6;
  					listremove_33002_1689653243(&(*a0).freechunkslist, result0);
  					goto LA1;
  				}
  				goto LA4;
  				LA6: ;
  				{
  					if (!(size0 < (*result0).Sup.size)) goto LA9;
  					listremove_33002_1689653243(&(*a0).freechunkslist, result0);
  					splitchunk_35009_1689653243(a0, result0, size0);
  					goto LA1;
  				}
  				goto LA4;
  				LA9: ;
  				LA4: ;
  				result0 = (*result0).next;
  			} LA3: ;
  		}
  		{
  			if (!(size0 < ((NI) 524288))) goto LA13;
  			result0 = requestoschunks_31188_1689653243(a0, ((NI) 524288));
  			splitchunk_35009_1689653243(a0, result0, size0);
  		}
  		goto LA11;
  		LA13: ;
  		{
  			result0 = requestoschunks_31188_1689653243(a0, size0);
  		}
  		LA11: ;
  	} LA1: ;
  	(*result0).Sup.prevsize = ((NI) 0);
  	(*result0).Sup.used = NIM_TRUE;
  	LOC16 = (Basechunk29438*)0;
  	LOC16 = &result0->Sup;
  	LOC17 = (NI)0;
  	LOC17 = pageindex_31171_1689653243(LOC16);
  	incl_30753_1689653243(a0, (&(*a0).chunkstarts), LOC17);
  	(*a0).freemem -= size0;
  	return result0;
  }
  
  N_NIMCALL(Smallchunk29440*, getsmallchunk_36012_1689653243)(Memregion29486* a0) {
  	Smallchunk29440* result0;
  	Bigchunk29442* res0;
  	result0 = (Smallchunk29440*)0;
  	res0 = getbigchunk_35214_1689653243(a0, ((NI) 4096));
  	result0 = ((Smallchunk29440*) (res0));
  	return result0;
  }
  
  static N_INLINE(void, listadd_37616_1689653243)(Smallchunk29440** head0, Smallchunk29440* c0) {
  	(*c0).next = (*head0);
  	{
  		if (!!(((*head0) == NIM_NIL))) goto LA3;
  		(*(*head0)).prev = c0;
  	}
  	LA3: ;
  	(*head0) = c0;
  }
  
  static N_INLINE(void, listremove_40402_1689653243)(Smallchunk29440** head0, Smallchunk29440* c0) {
  	{
  		if (!(c0 == (*head0))) goto LA3;
  		(*head0) = (*c0).next;
  		{
  			if (!!(((*head0) == NIM_NIL))) goto LA7;
  			(*(*head0)).prev = NIM_NIL;
  		}
  		LA7: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		(*(*c0).prev).next = (*c0).next;
  		{
  			if (!!(((*c0).next == NIM_NIL))) goto LA12;
  			(*(*c0).next).prev = (*c0).prev;
  		}
  		LA12: ;
  	}
  	LA1: ;
  	(*c0).next = NIM_NIL;
  	(*c0).prev = NIM_NIL;
  }
  
  N_NIMCALL(Avlnode29484*, allocavlnode_29827_1689653243)(Memregion29486* a0, NI key0, NI upperbound0) {
  	Avlnode29484* result0;
  	result0 = (Avlnode29484*)0;
  	{
  		if (!!(((*a0).freeavlnodes == NIM_NIL))) goto LA3;
  		result0 = (*a0).freeavlnodes;
  		(*a0).freeavlnodes = (*(*a0).freeavlnodes).link[(((NI) 0))- 0];
  	}
  	goto LA1;
  	LA3: ;
  	{
  		void* LOC6;
  		LOC6 = (void*)0;
  		LOC6 = llalloc_29643_1689653243(a0, ((NI)sizeof(Avlnode29484)));
  		result0 = ((Avlnode29484*) (LOC6));
  	}
  	LA1: ;
  	(*result0).key = key0;
  	(*result0).upperbound = upperbound0;
  	(*result0).link[(((NI) 0))- 0] = bottom_29521_1689653243;
  	(*result0).link[(((NI) 1))- 0] = bottom_29521_1689653243;
  	(*result0).level = ((NI) 1);
  	return result0;
  }
  
  N_NIMCALL(void, skew_30534_1689653243)(Avlnode29484** t0) {
  	{
  		Avlnode29484* temp0;
  		if (!((*(*(*t0)).link[(((NI) 0))- 0]).level == (*(*t0)).level)) goto LA3;
  		temp0 = (*t0);
  		(*t0) = (*(*t0)).link[(((NI) 0))- 0];
  		(*temp0).link[(((NI) 0))- 0] = (*(*t0)).link[(((NI) 1))- 0];
  		(*(*t0)).link[(((NI) 1))- 0] = temp0;
  	}
  	LA3: ;
  }
  
  N_NIMCALL(void, split_30539_1689653243)(Avlnode29484** t0) {
  	{
  		Avlnode29484* temp0;
  		if (!((*(*(*(*t0)).link[(((NI) 1))- 0]).link[(((NI) 1))- 0]).level == (*(*t0)).level)) goto LA3;
  		temp0 = (*t0);
  		(*t0) = (*(*t0)).link[(((NI) 1))- 0];
  		(*temp0).link[(((NI) 1))- 0] = (*(*t0)).link[(((NI) 0))- 0];
  		(*(*t0)).link[(((NI) 0))- 0] = temp0;
  		(*(*t0)).level += ((NI) 1);
  	}
  	LA3: ;
  }
  
  N_NIMCALL(void, add_30553_1689653243)(Memregion29486* a0, Avlnode29484** t0, NI key0, NI upperbound0) {
  	{
  		if (!((*(*t0)).link[(((NI) 0))- 0] == (*t0))) goto LA3;
  		(*t0) = allocavlnode_29827_1689653243(a0, key0, upperbound0);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		{
  			if (!((NU64)(key0) < (NU64)((*(*t0)).key))) goto LA8;
  			add_30553_1689653243(a0, &(*(*t0)).link[(((NI) 0))- 0], key0, upperbound0);
  		}
  		goto LA6;
  		LA8: ;
  		{
  			if (!((NU64)((*(*t0)).key) < (NU64)(key0))) goto LA11;
  			add_30553_1689653243(a0, &(*(*t0)).link[(((NI) 1))- 0], key0, upperbound0);
  		}
  		goto LA6;
  		LA11: ;
  		{
  		}
  		LA6: ;
  		skew_30534_1689653243(t0);
  		split_30539_1689653243(t0);
  	}
  	LA1: ;
  }
  
  N_NIMCALL(void*, rawalloc_36604_1689653243)(Memregion29486* a0, NI requestedsize0) {
  	void* result0;
  	NI size0;
  	result0 = (void*)0;
  	size0 = roundup_28001_1689653243(requestedsize0, ((NI) 8));
  	{
  		NI s0;
  		Smallchunk29440* c0;
  		if (!(size0 <= (NI)(((NI) 4096) - (NI)(((NI)sizeof(Smallchunk29440)) - ((NI) 8))))) goto LA3;
  		s0 = (NI)(size0 / ((NI) 8));
  		c0 = (*a0).freesmallchunks[(s0)- 0];
  		{
  			if (!(c0 == NIM_NIL)) goto LA7;
  			c0 = getsmallchunk_36012_1689653243(a0);
  			(*c0).freelist = NIM_NIL;
  			(*c0).Sup.size = size0;
  			(*c0).acc = size0;
  			(*c0).free = (NI)((NI)(((NI) 4096) - (NI)(((NI)sizeof(Smallchunk29440)) - ((NI) 8))) - size0);
  			(*c0).next = NIM_NIL;
  			(*c0).prev = NIM_NIL;
  			listadd_37616_1689653243(&(*a0).freesmallchunks[(s0)- 0], c0);
  			result0 = ((void*) ((&(*c0).data)));
  		}
  		goto LA5;
  		LA7: ;
  		{
  			{
  				if (!((*c0).freelist == NIM_NIL)) goto LA12;
  				result0 = ((void*) ((NI)((NU64)(((NI) ((&(*c0).data)))) + (NU64)((*c0).acc))));
  				(*c0).acc += size0;
  			}
  			goto LA10;
  			LA12: ;
  			{
  				result0 = ((void*) ((*c0).freelist));
  				(*c0).freelist = (*(*c0).freelist).next;
  			}
  			LA10: ;
  			(*c0).free -= size0;
  		}
  		LA5: ;
  		{
  			if (!((*c0).free < size0)) goto LA17;
  			listremove_40402_1689653243(&(*a0).freesmallchunks[(s0)- 0], c0);
  		}
  		LA17: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		Bigchunk29442* c0;
  		size0 = roundup_28001_1689653243((NI)(requestedsize0 + (NI)(((NI)sizeof(Bigchunk29442)) - ((NI) 8))), ((NI) 4096));
  		c0 = getbigchunk_35214_1689653243(a0, size0);
  		result0 = ((void*) ((&(*c0).data)));
  		{
  			if (!((*a0).root == NIM_NIL)) goto LA22;
  			(*a0).root = bottom_29521_1689653243;
  		}
  		LA22: ;
  		add_30553_1689653243(a0, &(*a0).root, ((NI) (result0)), (NI)((NU64)(((NI) (result0))) + (NU64)(size0)));
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(void*, alloc_45840_1689653243)(Memregion29486* allocator0, NI size0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = rawalloc_36604_1689653243(allocator0, (NI)(((NI) (size0)) + ((NI)sizeof(Freecell29430))));
  	(*((Freecell29430*) (result0))).zerofield = ((NI) 1);
  	result0 = ((void*) ((NI)((NU64)(((NI) (result0))) + (NU64)(((NI)sizeof(Freecell29430))))));
  	return result0;
  }
  
  N_NIMCALL(void*, alloc0_46016_1689653243)(Memregion29486* allocator0, NI size0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = alloc_45840_1689653243(allocator0, size0);
  	zeromem_7481_1689653243(result0, size0);
  	return result0;
  }
  
  N_NOCONV(void*, alloc0_7817_1689653243)(NI size0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = alloc0_46016_1689653243((&gch_49858_1689653243.region), size0);
  	return result0;
  }
  
  N_NIMCALL(void, init_47411_1689653243)(Cellseq47320* s0, NI cap0) {
  	void* LOC1;
  	(*s0).len = ((NI) 0);
  	(*s0).cap = cap0;
  	LOC1 = (void*)0;
  	LOC1 = alloc0_7817_1689653243(((NI) ((NI)(cap0 * ((NI) 8)))));
  	(*s0).d = ((Cell47304**) (LOC1));
  }
  
  N_NIMCALL(void, init_47426_1689653243)(Cellset47316* s0) {
  	void* LOC1;
  	LOC1 = (void*)0;
  	LOC1 = alloc0_7817_1689653243(((NI) 8192));
  	(*s0).data = ((Pagedesc47312**) (LOC1));
  	(*s0).max = ((NI) 1023);
  	(*s0).counter = ((NI) 0);
  	(*s0).head = NIM_NIL;
  }
  
  N_NIMCALL(void, initgc_12201_1689653243)(void) {
  	gch_49858_1689653243.cyclethreshold = ((NI) 4194304);
  	gch_49858_1689653243.stat.stackscans = ((NI) 0);
  	gch_49858_1689653243.stat.cyclecollections = ((NI) 0);
  	gch_49858_1689653243.stat.maxthreshold = ((NI) 0);
  	gch_49858_1689653243.stat.maxstacksize = ((NI) 0);
  	gch_49858_1689653243.stat.maxstackcells = ((NI) 0);
  	gch_49858_1689653243.stat.cycletablesize = ((NI) 0);
  	init_47411_1689653243((&gch_49858_1689653243.zct), ((NI) 1024));
  	init_47411_1689653243((&gch_49858_1689653243.tempstack), ((NI) 1024));
  	init_47411_1689653243((&gch_49858_1689653243.decstack), ((NI) 1024));
  	init_47426_1689653243((&gch_49858_1689653243.marked));
  	init_47411_1689653243((&gch_49858_1689653243.additionalroots), ((NI) 1024));
  }
  
  static N_INLINE(Cell47304*, usrtocell_51440_1689653243)(void* usr0) {
  	Cell47304* result0;
  	result0 = (Cell47304*)0;
  	result0 = ((Cell47304*) ((NI)((NU64)(((NI) (usr0))) - (NU64)(((NI)sizeof(Cell47304))))));
  	return result0;
  }
  
  N_NOCONV(void*, alloc_7801_1689653243)(NI size0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = alloc_45840_1689653243((&gch_49858_1689653243.region), size0);
  	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(Basechunk29438*, pageaddr_31181_1689653243)(void* p0) {
  	Basechunk29438* result0;
  	result0 = (Basechunk29438*)0;
  	result0 = ((Basechunk29438*) ((NI)(((NI) (p0)) & ((NI) -4096))));
  	return result0;
  }
  
  static N_INLINE(NIM_BOOL, issmallchunk_31069_1689653243)(Basechunk29438* c0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	result0 = ((*c0).size <= (NI)(((NI) 4096) - (NI)(((NI)sizeof(Smallchunk29440)) - ((NI) 8))));
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  static N_INLINE(NIM_BOOL, chunkunused_31089_1689653243)(Basechunk29438* c0) {
  	NIM_BOOL result0;
  	result0 = (NIM_BOOL)0;
  	result0 = !((*c0).used);
  	return result0;
  }
  
  N_NIMCALL(void, excl_30764_1689653243)(Intset29414* s0, NI key0) {
  	Trunk29410* t0;
  	t0 = intsetget_30683_1689653243((&(*s0)), (NI)((NU64)(key0) >> (NU64)(((NI) 9))));
  	{
  		NI u0;
  		if (!!((t0 == NIM_NIL))) goto LA3;
  		u0 = (NI)(key0 & ((NI) 511));
  		(*t0).bits[((NI)((NU64)(((NI) (u0))) >> (NU64)(((NI) 6))))- 0] = (NI)((*t0).bits[((NI)((NU64)(((NI) (u0))) >> (NU64)(((NI) 6))))- 0] & (NI)((NU64) ~((NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(((NI) (u0)) & ((NI) 63)))))))));
  	}
  	LA3: ;
  }
  
  static N_INLINE(void, osdeallocpages_29226_1689653243)(void* p0, NI size0) {
  	int LOC1;
  	LOC1 = (int)0;
  	LOC1 = munmap(p0, size0);
  }
  
  static N_INLINE(void, deccurrmem_29616_1689653243)(Memregion29486* a0, NI bytes0) {
  	(*a0).maxmem = (((*a0).maxmem >= (*a0).currmem) ? (*a0).maxmem : (*a0).currmem);
  	(*a0).currmem -= bytes0;
  }
  
  N_NIMCALL(void, freeoschunks_31807_1689653243)(Memregion29486* a0, void* p0, NI size0) {
  	Basechunk29438* c0;
  	NI nxt0;
  	Basechunk29438* next0;
  	NI LOC7;
  	c0 = ((Basechunk29438*) (p0));
  	nxt0 = (NI)((NU64)(((NI) (p0))) + (NU64)((*c0).size));
  	next0 = ((Basechunk29438*) (nxt0));
  	{
  		NI LOC3;
  		NIM_BOOL LOC4;
  		LOC3 = (NI)0;
  		LOC3 = pageindex_31171_1689653243(next0);
  		LOC4 = (NIM_BOOL)0;
  		LOC4 = contains_30732_1689653243((&(*a0).chunkstarts), LOC3);
  		if (!LOC4) goto LA5;
  		(*next0).prevsize = ((NI) 0);
  	}
  	LA5: ;
  	LOC7 = (NI)0;
  	LOC7 = pageindex_31176_1689653243(p0);
  	excl_30764_1689653243((&(*a0).chunkstarts), LOC7);
  	osdeallocpages_29226_1689653243(p0, size0);
  	deccurrmem_29616_1689653243(a0, size0);
  	(*a0).freemem -= size0;
  }
  
  N_NIMCALL(void, freebigchunk_32203_1689653243)(Memregion29486* a0, Bigchunk29442* c_32207_1689653243) {
  	Bigchunk29442* c0;
  	Basechunk29438* ri0;
  	c0 = c_32207_1689653243;
  	(*a0).freemem += (*c0).Sup.size;
  	ri0 = ((Basechunk29438*) ((NI)((NU64)(((NI) (c0))) + (NU64)((*c0).Sup.size))));
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = isaccessible_32015_1689653243((&(*a0)), ((void*) (ri0)));
  		if (!(LOC3)) goto LA4;
  		LOC3 = chunkunused_31089_1689653243(ri0);
  		LA4: ;
  		if (!LOC3) goto LA5;
  		{
  			NIM_BOOL LOC9;
  			NI LOC12;
  			LOC9 = (NIM_BOOL)0;
  			LOC9 = issmallchunk_31069_1689653243(ri0);
  			if (!!(LOC9)) goto LA10;
  			listremove_33002_1689653243(&(*a0).freechunkslist, ((Bigchunk29442*) (ri0)));
  			(*c0).Sup.size += (*ri0).size;
  			LOC12 = (NI)0;
  			LOC12 = pageindex_31171_1689653243(ri0);
  			excl_30764_1689653243((&(*a0).chunkstarts), LOC12);
  		}
  		LA10: ;
  	}
  	LA5: ;
  	{
  		Basechunk29438* le0;
  		if (!!(((*c0).Sup.prevsize == ((NI) 0)))) goto LA15;
  		le0 = ((Basechunk29438*) ((NI)((NU64)(((NI) (c0))) - (NU64)((*c0).Sup.prevsize))));
  		{
  			NIM_BOOL LOC19;
  			LOC19 = (NIM_BOOL)0;
  			LOC19 = isaccessible_32015_1689653243((&(*a0)), ((void*) (le0)));
  			if (!(LOC19)) goto LA20;
  			LOC19 = chunkunused_31089_1689653243(le0);
  			LA20: ;
  			if (!LOC19) goto LA21;
  			{
  				NIM_BOOL LOC25;
  				Basechunk29438* LOC28;
  				NI LOC29;
  				LOC25 = (NIM_BOOL)0;
  				LOC25 = issmallchunk_31069_1689653243(le0);
  				if (!!(LOC25)) goto LA26;
  				listremove_33002_1689653243(&(*a0).freechunkslist, ((Bigchunk29442*) (le0)));
  				(*le0).size += (*c0).Sup.size;
  				LOC28 = (Basechunk29438*)0;
  				LOC28 = &c0->Sup;
  				LOC29 = (NI)0;
  				LOC29 = pageindex_31171_1689653243(LOC28);
  				excl_30764_1689653243((&(*a0).chunkstarts), LOC29);
  				c0 = ((Bigchunk29442*) (le0));
  			}
  			LA26: ;
  		}
  		LA21: ;
  	}
  	LA15: ;
  	{
  		NIM_BOOL LOC32;
  		NIM_BOOL LOC33;
  		Basechunk29438* LOC38;
  		NI LOC39;
  		LOC32 = (NIM_BOOL)0;
  		LOC33 = (NIM_BOOL)0;
  		LOC33 = ((*c0).Sup.size < ((NI) 1048576));
  		if (LOC33) goto LA34;
  		LOC33 = NIM_TRUE;
  		LA34: ;
  		LOC32 = LOC33;
  		if (LOC32) goto LA35;
  		LOC32 = (*a0).locked;
  		LA35: ;
  		if (!LOC32) goto LA36;
  		LOC38 = (Basechunk29438*)0;
  		LOC38 = &c0->Sup;
  		LOC39 = (NI)0;
  		LOC39 = pageindex_31171_1689653243(LOC38);
  		incl_30753_1689653243(a0, (&(*a0).chunkstarts), LOC39);
  		updateprevsize_32068_1689653243(a0, c0, (*c0).Sup.size);
  		listadd_34223_1689653243(&(*a0).freechunkslist, c0);
  		(*c0).Sup.used = NIM_FALSE;
  	}
  	goto LA30;
  	LA36: ;
  	{
  		freeoschunks_31807_1689653243(a0, ((void*) (c0)), (*c0).Sup.size);
  	}
  	LA30: ;
  }
  
  static N_INLINE(void, deallocavlnode_30403_1689653243)(Memregion29486* a0, Avlnode29484* n0) {
  	(*n0).link[(((NI) 0))- 0] = (*a0).freeavlnodes;
  	(*a0).freeavlnodes = n0;
  }
  
  N_NIMCALL(void, del_30601_1689653243)(Memregion29486* a0, Avlnode29484** t0, NI x0) {
  {	{
  		if (!((*(*t0)).link[(((NI) 0))- 0] == (*t0))) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	(*a0).last = (*t0);
  	{
  		if (!((NU64)(x0) < (NU64)((*(*t0)).key))) goto LA7;
  		del_30601_1689653243(a0, &(*(*t0)).link[(((NI) 0))- 0], x0);
  	}
  	goto LA5;
  	LA7: ;
  	{
  		(*a0).deleted = (*t0);
  		del_30601_1689653243(a0, &(*(*t0)).link[(((NI) 1))- 0], x0);
  	}
  	LA5: ;
  	{
  		NIM_BOOL LOC12;
  		NIM_BOOL LOC13;
  		LOC12 = (NIM_BOOL)0;
  		LOC13 = (NIM_BOOL)0;
  		LOC13 = ((*t0) == (*a0).last);
  		if (!(LOC13)) goto LA14;
  		LOC13 = !(((*(*a0).deleted).link[(((NI) 0))- 0] == (*a0).deleted));
  		LA14: ;
  		LOC12 = LOC13;
  		if (!(LOC12)) goto LA15;
  		LOC12 = (x0 == (*(*a0).deleted).key);
  		LA15: ;
  		if (!LOC12) goto LA16;
  		(*(*a0).deleted).key = (*(*t0)).key;
  		(*(*a0).deleted).upperbound = (*(*t0)).upperbound;
  		(*a0).deleted = bottom_29521_1689653243;
  		(*t0) = (*(*t0)).link[(((NI) 1))- 0];
  		deallocavlnode_30403_1689653243(a0, (*a0).last);
  	}
  	goto LA10;
  	LA16: ;
  	{
  		NIM_BOOL LOC19;
  		LOC19 = (NIM_BOOL)0;
  		LOC19 = ((*(*(*t0)).link[(((NI) 0))- 0]).level < (NI)((*(*t0)).level - ((NI) 1)));
  		if (LOC19) goto LA20;
  		LOC19 = ((*(*(*t0)).link[(((NI) 1))- 0]).level < (NI)((*(*t0)).level - ((NI) 1)));
  		LA20: ;
  		if (!LOC19) goto LA21;
  		(*(*t0)).level -= ((NI) 1);
  		{
  			if (!((*(*t0)).level < (*(*(*t0)).link[(((NI) 1))- 0]).level)) goto LA25;
  			(*(*(*t0)).link[(((NI) 1))- 0]).level = (*(*t0)).level;
  		}
  		LA25: ;
  		skew_30534_1689653243(t0);
  		skew_30534_1689653243(&(*(*t0)).link[(((NI) 1))- 0]);
  		skew_30534_1689653243(&(*(*(*t0)).link[(((NI) 1))- 0]).link[(((NI) 1))- 0]);
  		split_30539_1689653243(t0);
  		split_30539_1689653243(&(*(*t0)).link[(((NI) 1))- 0]);
  	}
  	goto LA10;
  	LA21: ;
  	LA10: ;
  	}BeforeRet: ;
  }
  
  N_NIMCALL(void, rawdealloc_43017_1689653243)(Memregion29486* a0, void* p0) {
  	Basechunk29438* c_43201_1689653243;
  	c_43201_1689653243 = pageaddr_31181_1689653243(p0);
  	{
  		NIM_BOOL LOC3;
  		Smallchunk29440* c0;
  		NI s0;
  		Freecell29430* f0;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = issmallchunk_31069_1689653243(c_43201_1689653243);
  		if (!LOC3) goto LA4;
  		c0 = ((Smallchunk29440*) (c_43201_1689653243));
  		s0 = (*c0).Sup.size;
  		f0 = ((Freecell29430*) (p0));
  		(*f0).zerofield = ((NI) 0);
  		(*f0).next = (*c0).freelist;
  		(*c0).freelist = f0;
  		{
  			if (!((*c0).free < s0)) goto LA8;
  			listadd_37616_1689653243(&(*a0).freesmallchunks[((NI)(s0 / ((NI) 8)))- 0], c0);
  			(*c0).free += s0;
  		}
  		goto LA6;
  		LA8: ;
  		{
  			(*c0).free += s0;
  			{
  				if (!((*c0).free == (NI)(((NI) 4096) - (NI)(((NI)sizeof(Smallchunk29440)) - ((NI) 8))))) goto LA13;
  				listremove_40402_1689653243(&(*a0).freesmallchunks[((NI)(s0 / ((NI) 8)))- 0], c0);
  				(*c0).Sup.size = ((NI) 4096);
  				freebigchunk_32203_1689653243(a0, ((Bigchunk29442*) (c0)));
  			}
  			LA13: ;
  		}
  		LA6: ;
  	}
  	goto LA1;
  	LA4: ;
  	{
  		Bigchunk29442* c0;
  		c0 = ((Bigchunk29442*) (c_43201_1689653243));
  		(*a0).deleted = bottom_29521_1689653243;
  		del_30601_1689653243(a0, &(*a0).root, ((NI) ((&(*c0).data))));
  		freebigchunk_32203_1689653243(a0, c0);
  	}
  	LA1: ;
  }
  
  N_NIMCALL(void, dealloc_46022_1689653243)(Memregion29486* allocator0, void* p0) {
  	void* x0;
  	x0 = ((void*) ((NI)((NU64)(((NI) (p0))) - (NU64)(((NI)sizeof(Freecell29430))))));
  	rawdealloc_43017_1689653243(allocator0, x0);
  }
  
  N_NOCONV(void, dealloc_7848_1689653243)(void* p0) {
  	dealloc_46022_1689653243((&gch_49858_1689653243.region), p0);
  }
  
  static N_INLINE(void, add_47391_1689653243)(Cellseq47320* s0, Cell47304* c0) {
  	{
  		Cell47304** d0;
  		void* LOC5;
  		if (!((*s0).cap <= (*s0).len)) goto LA3;
  		(*s0).cap = (NI)((NI)((*s0).cap * ((NI) 3)) / ((NI) 2));
  		LOC5 = (void*)0;
  		LOC5 = alloc_7801_1689653243(((NI) ((NI)((*s0).cap * ((NI) 8)))));
  		d0 = ((Cell47304**) (LOC5));
  		copymem_7485_1689653243(((void*) (d0)), ((void*) ((*s0).d)), ((NI) ((NI)((*s0).len * ((NI) 8)))));
  		dealloc_7848_1689653243(((void*) ((*s0).d)));
  		(*s0).d = d0;
  	}
  	LA3: ;
  	(*s0).d[((*s0).len)- 0] = c0;
  	(*s0).len += ((NI) 1);
  }
  
  N_NOINLINE(void, addzct_51417_1689653243)(Cellseq47320* s0, Cell47304* c0) {
  	{
  		if (!((NI)((*c0).refcount & ((NI) 4)) == ((NI) 0))) goto LA3;
  		(*c0).refcount = (NI)((*c0).refcount | ((NI) 4));
  		add_47391_1689653243(s0, c0);
  	}
  	LA3: ;
  }
  
  static N_INLINE(void, rtladdzct_52601_1689653243)(Cell47304* c0) {
  	addzct_51417_1689653243((&gch_49858_1689653243.zct), c0);
  }
  
  static N_INLINE(void, decref_53001_1689653243)(Cell47304* c0) {
  	{
  		(*c0).refcount -= ((NI) 8);
  		if (!((NU64)((*c0).refcount) < (NU64)(((NI) 8)))) goto LA3;
  		rtladdzct_52601_1689653243(c0);
  	}
  	LA3: ;
  }
  
  static N_INLINE(NI, nexttry_47453_1689653243)(NI h0, NI maxhash0) {
  	NI result0;
  	result0 = (NI)0;
  	result0 = (NI)((NI)((NI)(((NI) 5) * h0) + ((NI) 1)) & maxhash0);
  	return result0;
  }
  
  N_NIMCALL(void, cellsetrawinsert_47478_1689653243)(Cellset47316* t0, Pagedesc47312** data0, Pagedesc47312* desc0) {
  	NI h0;
  	h0 = (NI)(((NI) ((*desc0).key)) & (*t0).max);
  	{
  		while (1) {
  			if (!!((data0[(h0)- 0] == NIM_NIL))) goto LA2;
  			h0 = nexttry_47453_1689653243(h0, (*t0).max);
  		} LA2: ;
  	}
  	data0[(h0)- 0] = desc0;
  }
  
  N_NIMCALL(void, cellsetenlarge_47803_1689653243)(Cellset47316* t0) {
  	NI oldmax0;
  	Pagedesc47312** n0;
  	void* LOC1;
  	oldmax0 = (*t0).max;
  	(*t0).max = (NI)((NI)((NI)((*t0).max + ((NI) 1)) * ((NI) 2)) - ((NI) 1));
  	LOC1 = (void*)0;
  	LOC1 = alloc0_7817_1689653243(((NI) ((NI)((NI)((*t0).max + ((NI) 1)) * ((NI) 8)))));
  	n0 = ((Pagedesc47312**) (LOC1));
  	{
  		NI i_47819_1689653243;
  		NI res_47837_1689653243;
  		i_47819_1689653243 = (NI)0;
  		res_47837_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_47837_1689653243 <= oldmax0)) goto LA4;
  				i_47819_1689653243 = res_47837_1689653243;
  				{
  					if (!!(((*t0).data[(i_47819_1689653243)- 0] == NIM_NIL))) goto LA7;
  					cellsetrawinsert_47478_1689653243((&(*t0)), n0, (*t0).data[(i_47819_1689653243)- 0]);
  				}
  				LA7: ;
  				res_47837_1689653243 += ((NI) 1);
  			} LA4: ;
  		}
  	}
  	dealloc_7848_1689653243(((void*) ((*t0).data)));
  	(*t0).data = n0;
  }
  
  N_NIMCALL(Pagedesc47312*, cellsetput_47841_1689653243)(Cellset47316* t0, NI key0) {
  	Pagedesc47312* result0;
  	NI h0;
  	void* LOC19;
  {	result0 = (Pagedesc47312*)0;
  	h0 = (NI)(((NI) (key0)) & (*t0).max);
  	{
  		while (1) {
  			Pagedesc47312* x0;
  			x0 = (*t0).data[(h0)- 0];
  			{
  				if (!(x0 == NIM_NIL)) goto LA5;
  				goto LA1;
  			}
  			LA5: ;
  			{
  				if (!((*x0).key == key0)) goto LA9;
  				result0 = x0;
  				goto BeforeRet;
  			}
  			LA9: ;
  			h0 = nexttry_47453_1689653243(h0, (*t0).max);
  		}
  	} LA1: ;
  	{
  		NIM_BOOL LOC13;
  		LOC13 = (NIM_BOOL)0;
  		LOC13 = ((NI)((NI)((*t0).max + ((NI) 1)) * ((NI) 2)) < (NI)((*t0).counter * ((NI) 3)));
  		if (LOC13) goto LA14;
  		LOC13 = ((NI)((NI)((*t0).max + ((NI) 1)) - (*t0).counter) < ((NI) 4));
  		LA14: ;
  		if (!LOC13) goto LA15;
  		cellsetenlarge_47803_1689653243(t0);
  	}
  	LA15: ;
  	(*t0).counter += ((NI) 1);
  	h0 = (NI)(((NI) (key0)) & (*t0).max);
  	{
  		while (1) {
  			if (!!(((*t0).data[(h0)- 0] == NIM_NIL))) goto LA18;
  			h0 = nexttry_47453_1689653243(h0, (*t0).max);
  		} LA18: ;
  	}
  	LOC19 = (void*)0;
  	LOC19 = alloc0_7817_1689653243(((NI) (((NI)sizeof(Pagedesc47312)))));
  	result0 = ((Pagedesc47312*) (LOC19));
  	(*result0).next = (*t0).head;
  	(*result0).key = key0;
  	(*t0).head = result0;
  	(*t0).data[(h0)- 0] = result0;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NOINLINE(void, incl_48047_1689653243)(Cellset47316* s0, Cell47304* cell0) {
  	NI u0;
  	Pagedesc47312* t0;
  	u0 = ((NI) (cell0));
  	t0 = cellsetput_47841_1689653243(s0, (NI)((NU64)(u0) >> (NU64)(((NI) 12))));
  	u0 = (NI)((NU64)((NI)((NU64)(u0) % (NU64)(((NI) 4096)))) / (NU64)(((NI) 8)));
  	(*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] = (NI)((*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] | (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(u0 & ((NI) 63)))))));
  }
  
  static N_INLINE(void*, celltousr_51422_1689653243)(Cell47304* cell0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = ((void*) ((NI)((NU64)(((NI) (cell0))) + (NU64)(((NI)sizeof(Cell47304))))));
  	return result0;
  }
  
  N_NIMCALL(NI, getdiscriminant_26804_1689653243)(void* aa0, TNimNode* n0) {
  	NI result0;
  	NI d0;
  	NI a0;
  {	result0 = (NI)0;
  	d0 = (NI)0;
  	a0 = ((NI) (aa0));
  	switch ((*(*n0).typ).size) {
  	case ((NI) 1):
  	{
  		d0 = ((NI)(NU)(NU8)((*((NI8*) ((NI)((NU64)(a0) + (NU64)((*n0).offset)))))));
  	}
  	break;
  	case ((NI) 2):
  	{
  		d0 = ((NI)(NU)(NU16)((*((NI16*) ((NI)((NU64)(a0) + (NU64)((*n0).offset)))))));
  	}
  	break;
  	case ((NI) 4):
  	{
  		d0 = ((NI) ((*((NI32*) ((NI)((NU64)(a0) + (NU64)((*n0).offset)))))));
  	}
  	break;
  	default:
  	{
  	}
  	break;
  	}
  	result0 = d0;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(TNimNode*, selectbranch_27207_1689653243)(void* aa0, TNimNode* n0) {
  	TNimNode* result0;
  	NI discr0;
  	result0 = (TNimNode*)0;
  	discr0 = getdiscriminant_26804_1689653243(aa0, n0);
  	{
  		if (!((NU64)(discr0) < (NU64)((*n0).len))) goto LA3;
  		result0 = (*n0).sons[(discr0)- 0];
  		{
  			if (!(result0 == NIM_NIL)) goto LA7;
  			result0 = (*n0).sons[((*n0).len)- 0];
  		}
  		LA7: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		result0 = (*n0).sons[((*n0).len)- 0];
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(void, forallslotsaux_55832_1689653243)(void* dest0, TNimNode* n0, Walkop49810 op0) {
  	NI d0;
  	d0 = ((NI) (dest0));
  	switch ((*n0).kind) {
  	case ((Tnimnodekind3405) 1):
  	{
  		forallchildrenaux_51822_1689653243(((void*) ((NI)((NU64)(d0) + (NU64)((*n0).offset)))), (*n0).typ, op0);
  	}
  	break;
  	case ((Tnimnodekind3405) 2):
  	{
  		{
  			NI i_55857_1689653243;
  			NI HEX3Atmp_56006_1689653243;
  			NI res_56009_1689653243;
  			i_55857_1689653243 = (NI)0;
  			HEX3Atmp_56006_1689653243 = (NI)0;
  			HEX3Atmp_56006_1689653243 = (NI)((*n0).len - ((NI) 1));
  			res_56009_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_56009_1689653243 <= HEX3Atmp_56006_1689653243)) goto LA5;
  					i_55857_1689653243 = res_56009_1689653243;
  					{
  						if (!((*(*n0).sons[(i_55857_1689653243)- 0]).kind == ((Tnimnodekind3405) 1))) goto LA8;
  						{
  							if (!((289406976 &((NU64)1<<((NU)((*(*(*n0).sons[(i_55857_1689653243)- 0]).typ).kind)&63U)))!=0)) goto LA12;
  							dooperation_51818_1689653243((*((void**) ((NI)((NU64)(d0) + (NU64)((*(*n0).sons[(i_55857_1689653243)- 0]).offset))))), op0);
  						}
  						goto LA10;
  						LA12: ;
  						{
  							forallchildrenaux_51822_1689653243(((void*) ((NI)((NU64)(d0) + (NU64)((*(*n0).sons[(i_55857_1689653243)- 0]).offset)))), (*(*n0).sons[(i_55857_1689653243)- 0]).typ, op0);
  						}
  						LA10: ;
  					}
  					goto LA6;
  					LA8: ;
  					{
  						forallslotsaux_55832_1689653243(dest0, (*n0).sons[(i_55857_1689653243)- 0], op0);
  					}
  					LA6: ;
  					res_56009_1689653243 += ((NI) 1);
  				} LA5: ;
  			}
  		}
  	}
  	break;
  	case ((Tnimnodekind3405) 3):
  	{
  		TNimNode* m0;
  		m0 = selectbranch_27207_1689653243(dest0, n0);
  		{
  			if (!!((m0 == NIM_NIL))) goto LA19;
  			forallslotsaux_55832_1689653243(dest0, m0, op0);
  		}
  		LA19: ;
  	}
  	break;
  	case ((Tnimnodekind3405) 0):
  	{
  	}
  	break;
  	}
  }
  
  N_NIMCALL(void, forallchildrenaux_51822_1689653243)(void* dest0, TNimType* mt0, Walkop49810 op0) {
  	NI d0;
  {	d0 = ((NI) (dest0));
  	{
  		if (!(dest0 == NIM_NIL)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!!((((*mt0).flags &(1U<<((NU)(((Tnimtypeflag3409) 0))&7U)))!=0))) goto LA7;
  		switch ((*mt0).kind) {
  		case ((Tnimkind3403) 22):
  		case ((Tnimkind3403) 28):
  		case ((Tnimkind3403) 24):
  		{
  			dooperation_51818_1689653243((*((void**) (d0))), op0);
  		}
  		break;
  		case ((Tnimkind3403) 17):
  		case ((Tnimkind3403) 18):
  		{
  			forallslotsaux_55832_1689653243(dest0, (*mt0).node, op0);
  		}
  		break;
  		case ((Tnimkind3403) 16):
  		case ((Tnimkind3403) 4):
  		case ((Tnimkind3403) 27):
  		{
  			{
  				NI i_56038_1689653243;
  				NI HEX3Atmp_56061_1689653243;
  				NI res_56064_1689653243;
  				i_56038_1689653243 = (NI)0;
  				HEX3Atmp_56061_1689653243 = (NI)0;
  				HEX3Atmp_56061_1689653243 = (NI)((NI)((*mt0).size / (*(*mt0).base).size) - ((NI) 1));
  				res_56064_1689653243 = ((NI) 0);
  				{
  					while (1) {
  						if (!(res_56064_1689653243 <= HEX3Atmp_56061_1689653243)) goto LA14;
  						i_56038_1689653243 = res_56064_1689653243;
  						forallchildrenaux_51822_1689653243(((void*) ((NI)((NU64)(d0) + (NU64)((NI)((NU64)(i_56038_1689653243) * (NU64)((*(*mt0).base).size)))))), (*mt0).base, op0);
  						res_56064_1689653243 += ((NI) 1);
  					} LA14: ;
  				}
  			}
  		}
  		break;
  		default:
  		{
  		}
  		break;
  		}
  	}
  	LA7: ;
  	}BeforeRet: ;
  }
  
  N_NIMCALL(void, forallchildren_51814_1689653243)(Cell47304* cell0, Walkop49810 op0) {
  	TY3489 marker0;
  	marker0 = (*(*cell0).typ).marker;
  	{
  		void* LOC5;
  		if (!!((marker0 == NIM_NIL))) goto LA3;
  		LOC5 = (void*)0;
  		LOC5 = celltousr_51422_1689653243(cell0);
  		marker0(LOC5, ((NI) (op0)));
  	}
  	goto LA1;
  	LA3: ;
  	{
  		switch ((*(*cell0).typ).kind) {
  		case ((Tnimkind3403) 22):
  		{
  			void* LOC8;
  			LOC8 = (void*)0;
  			LOC8 = celltousr_51422_1689653243(cell0);
  			forallchildrenaux_51822_1689653243(LOC8, (*(*cell0).typ).base, op0);
  		}
  		break;
  		case ((Tnimkind3403) 24):
  		{
  			NI d0;
  			void* LOC10;
  			TGenericSeq* s0;
  			LOC10 = (void*)0;
  			LOC10 = celltousr_51422_1689653243(cell0);
  			d0 = ((NI) (LOC10));
  			s0 = ((TGenericSeq*) (d0));
  			{
  				if (!!((s0 == NIM_NIL))) goto LA13;
  				{
  					NI i_56834_1689653243;
  					NI HEX3Atmp_56867_1689653243;
  					NI res_56870_1689653243;
  					i_56834_1689653243 = (NI)0;
  					HEX3Atmp_56867_1689653243 = (NI)0;
  					HEX3Atmp_56867_1689653243 = (NI)((*s0).len - ((NI) 1));
  					res_56870_1689653243 = ((NI) 0);
  					{
  						while (1) {
  							if (!(res_56870_1689653243 <= HEX3Atmp_56867_1689653243)) goto LA17;
  							i_56834_1689653243 = res_56870_1689653243;
  							forallchildrenaux_51822_1689653243(((void*) ((NI)((NU64)((NI)((NU64)(d0) + (NU64)((NI)((NU64)(i_56834_1689653243) * (NU64)((*(*(*cell0).typ).base).size))))) + (NU64)(((NI) 16))))), (*(*cell0).typ).base, op0);
  							res_56870_1689653243 += ((NI) 1);
  						} LA17: ;
  					}
  				}
  			}
  			LA13: ;
  		}
  		break;
  		default:
  		{
  		}
  		break;
  		}
  	}
  	LA1: ;
  }
  
  N_NIMCALL(Pagedesc47312*, cellsetget_47458_1689653243)(Cellset47316* t0, NI key0) {
  	Pagedesc47312* result0;
  	NI h0;
  {	result0 = (Pagedesc47312*)0;
  	h0 = (NI)(((NI) (key0)) & (*t0).max);
  	{
  		while (1) {
  			if (!!(((*t0).data[(h0)- 0] == NIM_NIL))) goto LA2;
  			{
  				if (!((*(*t0).data[(h0)- 0]).key == key0)) goto LA5;
  				result0 = (*t0).data[(h0)- 0];
  				goto BeforeRet;
  			}
  			LA5: ;
  			h0 = nexttry_47453_1689653243(h0, (*t0).max);
  		} LA2: ;
  	}
  	result0 = NIM_NIL;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, containsorincl_48113_1689653243)(Cellset47316* s0, Cell47304* cell0) {
  	NIM_BOOL result0;
  	NI u0;
  	Pagedesc47312* t0;
  	result0 = (NIM_BOOL)0;
  	u0 = ((NI) (cell0));
  	t0 = cellsetget_47458_1689653243((&(*s0)), (NI)((NU64)(u0) >> (NU64)(((NI) 12))));
  	{
  		if (!!((t0 == NIM_NIL))) goto LA3;
  		u0 = (NI)((NU64)((NI)((NU64)(u0) % (NU64)(((NI) 4096)))) / (NU64)(((NI) 8)));
  		result0 = !(((NI)((*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] & (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(u0 & ((NI) 63))))))) == ((NI) 0)));
  		{
  			if (!!(result0)) goto LA7;
  			(*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] = (NI)((*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] | (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(u0 & ((NI) 63)))))));
  		}
  		LA7: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		incl_48047_1689653243(s0, cell0);
  		result0 = NIM_FALSE;
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(void, marks_67601_1689653243)(Gcheap49818* gch0, Cell47304* c0) {
  	incl_48047_1689653243((&(*gch0).marked), c0);
  	forallchildren_51814_1689653243(c0, ((Walkop49810) 1));
  	{
  		while (1) {
  			Cell47304* d0;
  			if (!(((NI) 0) < (*gch0).tempstack.len)) goto LA2;
  			(*gch0).tempstack.len -= ((NI) 1);
  			d0 = (*gch0).tempstack.d[((*gch0).tempstack.len)- 0];
  			{
  				NIM_BOOL LOC5;
  				LOC5 = (NIM_BOOL)0;
  				LOC5 = containsorincl_48113_1689653243((&(*gch0).marked), d0);
  				if (!!(LOC5)) goto LA6;
  				forallchildren_51814_1689653243(d0, ((Walkop49810) 1));
  			}
  			LA6: ;
  		} LA2: ;
  	}
  }
  
  N_NIMCALL(void, dooperation_51818_1689653243)(void* p0, Walkop49810 op0) {
  	Cell47304* c0;
  {	{
  		if (!(p0 == NIM_NIL)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	c0 = usrtocell_51440_1689653243(p0);
  	switch (op0) {
  	case ((Walkop49810) 2):
  	{
  		decref_53001_1689653243(c0);
  	}
  	break;
  	case ((Walkop49810) 3):
  	{
  		add_47391_1689653243((&gch_49858_1689653243.tempstack), c0);
  	}
  	break;
  	case ((Walkop49810) 0):
  	{
  		marks_67601_1689653243((&gch_49858_1689653243), c0);
  	}
  	break;
  	case ((Walkop49810) 1):
  	{
  		add_47391_1689653243((&gch_49858_1689653243.tempstack), c0);
  	}
  	break;
  	}
  	}BeforeRet: ;
  }
  
  N_NIMCALL(void, nimGCvisit)(void* d0, NI op0) {
  	dooperation_51818_1689653243(d0, ((Walkop49810) (op0)));
  }
  N_NIMCALL(void, T1689653243_4)(void* p, NI op) {
  	Exception* a;
  	a = (Exception*)p;
  	nimGCvisit((void*)(*a).parent, op);
  	nimGCvisit((void*)(*a).message, op);
  	nimGCvisit((void*)(*a).trace, op);
  }
  N_NIMCALL(void, T1689653243_5)(void) {
  	nimGCvisit((void*)currexception_18839_1689653243, 0);
  }
  
  N_NIMCALL(void, nimRegisterGlobalMarker)(Globalmarkerproc55802 markerproc0) {
  	{
  		if (!(globalmarkerslen_55807_1689653243 <= ((NI) 7000))) goto LA3;
  		globalmarkers_55811_1689653243[(globalmarkerslen_55807_1689653243)- 0] = markerproc0;
  		globalmarkerslen_55807_1689653243 += ((NI) 1);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		printf("%s\012", ((NimStringDesc*) &T1689653243_6)? (((NimStringDesc*) &T1689653243_6))->data:"nil");
  		fflush(stdout);
  		exit(((NI) 1));
  	}
  	LA1: ;
  }
  
  N_NOINLINE(NI, stacksize_71001_1689653243)(void) {
  	NI result0;
  	void* volatile stacktop0;
  	result0 = (NI)0;
  	stacktop0 = (void*)0;
  	result0 = ((NI)(((NI) ((&stacktop0))) - ((NI) (gch_49858_1689653243.stackbottom))) > 0? ((NI)(((NI) ((&stacktop0))) - ((NI) (gch_49858_1689653243.stackbottom)))) : -((NI)(((NI) ((&stacktop0))) - ((NI) (gch_49858_1689653243.stackbottom)))));
  	return result0;
  }
  
  static N_INLINE(NI, getoccupiedmem_47229_1689653243)(Memregion29486* a0) {
  	NI result0;
  	result0 = (NI)0;
  	result0 = (NI)((*a0).currmem - (*a0).freemem);
  	return result0;
  }
  
  N_NIMCALL(NI, lowgauge_30412_1689653243)(Avlnode29484* n0) {
  	NI result0;
  	Avlnode29484* it0;
  	result0 = (NI)0;
  	it0 = n0;
  	{
  		while (1) {
  			if (!!(((*it0).link[(((NI) 0))- 0] == it0))) goto LA2;
  			result0 = (*it0).key;
  			it0 = (*it0).link[(((NI) 0))- 0];
  		} LA2: ;
  	}
  	return result0;
  }
  
  N_NIMCALL(NI, highgauge_30429_1689653243)(Avlnode29484* n0) {
  	NI result0;
  	Avlnode29484* it0;
  	result0 = (NI)0;
  	result0 = ((NI) -1);
  	it0 = n0;
  	{
  		while (1) {
  			if (!!(((*it0).link[(((NI) 0))- 0] == it0))) goto LA2;
  			result0 = (*it0).upperbound;
  			it0 = (*it0).link[(((NI) 1))- 0];
  		} LA2: ;
  	}
  	return result0;
  }
  
  static N_INLINE(void, prepareforinteriorpointerchecking_44688_1689653243)(Memregion29486* a0) {
  	(*a0).minlargeobj = lowgauge_30412_1689653243((*a0).root);
  	(*a0).maxlargeobj = highgauge_30429_1689653243((*a0).root);
  }
  
  N_NIMCALL(Avlnode29484*, inrange_30481_1689653243)(Avlnode29484* root0, NI key0) {
  	Avlnode29484* result0;
  	Avlnode29484* it0;
  {	result0 = (Avlnode29484*)0;
  	it0 = root0;
  	{
  		while (1) {
  			if (!!(((*it0).link[(((NI) 0))- 0] == it0))) goto LA2;
  			{
  				NIM_BOOL LOC5;
  				LOC5 = (NIM_BOOL)0;
  				LOC5 = ((NU64)((*it0).key) <= (NU64)(key0));
  				if (!(LOC5)) goto LA6;
  				LOC5 = ((NU64)(key0) < (NU64)((*it0).upperbound));
  				LA6: ;
  				if (!LOC5) goto LA7;
  				result0 = it0;
  				goto BeforeRet;
  			}
  			LA7: ;
  			it0 = (*it0).link[(((NU64)((*it0).key) < (NU64)(key0)))- 0];
  		} LA2: ;
  	}
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void*, interiorallocatedptr_44692_1689653243)(Memregion29486* a0, void* p0) {
  	void* result0;
  	result0 = (void*)0;
  	{
  		NIM_BOOL LOC3;
  		Basechunk29438* c_44697_1689653243;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = isaccessible_32015_1689653243(a0, p0);
  		if (!LOC3) goto LA4;
  		c_44697_1689653243 = pageaddr_31181_1689653243(p0);
  		{
  			NIM_BOOL LOC8;
  			LOC8 = (NIM_BOOL)0;
  			LOC8 = chunkunused_31089_1689653243(c_44697_1689653243);
  			if (!!(LOC8)) goto LA9;
  			{
  				NIM_BOOL LOC13;
  				Smallchunk29440* c0;
  				NI offset0;
  				LOC13 = (NIM_BOOL)0;
  				LOC13 = issmallchunk_31069_1689653243(c_44697_1689653243);
  				if (!LOC13) goto LA14;
  				c0 = ((Smallchunk29440*) (c_44697_1689653243));
  				offset0 = (NI)((NU64)(((NI) ((NI)(((NI) (p0)) & ((NI) 4095))))) - (NU64)((NI)(((NI)sizeof(Smallchunk29440)) - ((NI) 8))));
  				{
  					Freecell29430* d0;
  					if (!((NU64)(offset0) < (NU64)((*c0).acc))) goto LA18;
  					d0 = ((Freecell29430*) ((NI)((NU64)((NI)((NU64)(((NI) ((&(*c0).data)))) + (NU64)(offset0))) - (NU64)((NI)((NU64)(offset0) % (NU64)((*c0).Sup.size))))));
  					{
  						if (!((NU64)(((NI) 1)) < (NU64)((*d0).zerofield))) goto LA22;
  						result0 = ((void*) (d0));
  					}
  					LA22: ;
  				}
  				LA18: ;
  			}
  			goto LA11;
  			LA14: ;
  			{
  				Bigchunk29442* c0;
  				NF* d0;
  				c0 = ((Bigchunk29442*) (c_44697_1689653243));
  				d0 = (&(*c0).data);
  				{
  					NIM_BOOL LOC27;
  					LOC27 = (NIM_BOOL)0;
  					LOC27 = (((void*) (d0)) <= p0);
  					if (!(LOC27)) goto LA28;
  					LOC27 = ((NU64)(((NI) 1)) < (NU64)((*((Freecell29430*) (d0))).zerofield));
  					LA28: ;
  					if (!LOC27) goto LA29;
  					result0 = ((void*) (d0));
  				}
  				LA29: ;
  			}
  			LA11: ;
  		}
  		LA9: ;
  	}
  	goto LA1;
  	LA4: ;
  	{
  		NI q0;
  		q0 = ((NI) (p0));
  		{
  			NIM_BOOL LOC34;
  			Avlnode29484* avlnode0;
  			LOC34 = (NIM_BOOL)0;
  			LOC34 = ((NU64)((*a0).minlargeobj) <= (NU64)(q0));
  			if (!(LOC34)) goto LA35;
  			LOC34 = ((NU64)(q0) <= (NU64)((*a0).maxlargeobj));
  			LA35: ;
  			if (!LOC34) goto LA36;
  			avlnode0 = inrange_30481_1689653243((*a0).root, q0);
  			{
  				void* k0;
  				Bigchunk29442* c0;
  				Basechunk29438* LOC42;
  				if (!!((avlnode0 == NIM_NIL))) goto LA40;
  				k0 = ((void*) ((*avlnode0).key));
  				LOC42 = (Basechunk29438*)0;
  				LOC42 = pageaddr_31181_1689653243(k0);
  				c0 = ((Bigchunk29442*) (LOC42));
  				{
  					if (!((NU64)(((NI) 1)) < (NU64)((*((Freecell29430*) (k0))).zerofield))) goto LA45;
  					result0 = k0;
  				}
  				LA45: ;
  			}
  			LA40: ;
  		}
  		LA36: ;
  	}
  	LA1: ;
  	return result0;
  }
  
  static N_INLINE(void, gcmark_70010_1689653243)(Gcheap49818* gch0, void* p0) {
  	Cell47304* cell0;
  	NI c0;
  	cell0 = usrtocell_51440_1689653243(p0);
  	c0 = ((NI) (cell0));
  	{
  		Cell47304* objstart0;
  		void* LOC5;
  		if (!((NU64)(((NI) 4096)) < (NU64)(c0))) goto LA3;
  		LOC5 = (void*)0;
  		LOC5 = interiorallocatedptr_44692_1689653243((&(*gch0).region), ((void*) (cell0)));
  		objstart0 = ((Cell47304*) (LOC5));
  		{
  			if (!!((objstart0 == NIM_NIL))) goto LA8;
  			(*objstart0).refcount = (NI)((NU64)((*objstart0).refcount) + (NU64)(((NI) 8)));
  			add_47391_1689653243((&(*gch0).decstack), objstart0);
  		}
  		LA8: ;
  	}
  	LA3: ;
  }
  
  N_CDECL(void, markstackandregisters_72437_1689653243)(Gcheap49818* gch0) {
  	jmp_buf registers0;
  	{
  		int LOC3;
  		NI max0;
  		NI sp0;
  		LOC3 = (int)0;
  		LOC3 = _setjmp(registers0);
  		if (!(LOC3 == ((NI32) 0))) goto LA4;
  		max0 = ((NI) ((*gch0).stackbottom));
  		sp0 = ((NI) ((&registers0)));
  		sp0 = (NI)(sp0 & ((NI) -8));
  		{
  			while (1) {
  				if (!((NU64)(sp0) < (NU64)((NI)(max0 - ((NI) 64))))) goto LA7;
  				gcmark_70010_1689653243(gch0, ((void**) (sp0))[(((NI) 0))- 0]);
  				gcmark_70010_1689653243(gch0, ((void**) (sp0))[(((NI) 1))- 0]);
  				gcmark_70010_1689653243(gch0, ((void**) (sp0))[(((NI) 2))- 0]);
  				gcmark_70010_1689653243(gch0, ((void**) (sp0))[(((NI) 3))- 0]);
  				gcmark_70010_1689653243(gch0, ((void**) (sp0))[(((NI) 4))- 0]);
  				gcmark_70010_1689653243(gch0, ((void**) (sp0))[(((NI) 5))- 0]);
  				gcmark_70010_1689653243(gch0, ((void**) (sp0))[(((NI) 6))- 0]);
  				gcmark_70010_1689653243(gch0, ((void**) (sp0))[(((NI) 7))- 0]);
  				sp0 = (NI)((NU64)(sp0) + (NU64)(((NI) 64)));
  			} LA7: ;
  		}
  		{
  			while (1) {
  				if (!((NU64)(sp0) <= (NU64)(max0))) goto LA9;
  				gcmark_70010_1689653243(gch0, (*((void**) (sp0))));
  				sp0 = (NI)((NU64)(sp0) + (NU64)(((NI) 8)));
  			} LA9: ;
  		}
  	}
  	LA4: ;
  }
  
  N_NIMCALL(void, preparedealloc_52008_1689653243)(Cell47304* cell0) {
  	{
  		void* LOC5;
  		if (!!(((*(*cell0).typ).finalizer == NIM_NIL))) goto LA3;
  		gch_49858_1689653243.recgclock += ((NI) 1);
  		LOC5 = (void*)0;
  		LOC5 = celltousr_51422_1689653243(cell0);
  		((Finalizer) ((*(*cell0).typ).finalizer))(LOC5);
  		gch_49858_1689653243.recgclock -= ((NI) 1);
  	}
  	LA3: ;
  }
  
  N_NIMCALL(NIM_BOOL, collectzct_69407_1689653243)(Gcheap49818* gch0) {
  	NIM_BOOL result0;
  	NI* L0;
  	result0 = (NIM_BOOL)0;
  	L0 = (&(*gch0).zct.len);
  	{
  		while (1) {
  			Cell47304* c0;
  			if (!(((NI) 0) < (*L0))) goto LA2;
  			c0 = (*gch0).zct.d[(((NI) 0))- 0];
  			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
  			(*gch0).zct.d[(((NI) 0))- 0] = (*gch0).zct.d[((NI)((*L0) - ((NI) 1)))- 0];
  			(*L0) -= ((NI) 1);
  			{
  				if (!((NU64)((*c0).refcount) < (NU64)(((NI) 8)))) goto LA5;
  				preparedealloc_52008_1689653243(c0);
  				forallchildren_51814_1689653243(c0, ((Walkop49810) 2));
  				rawdealloc_43017_1689653243((&(*gch0).region), ((void*) (c0)));
  			}
  			LA5: ;
  		} LA2: ;
  	}
  	result0 = NIM_TRUE;
  	return result0;
  }
  
  N_NIMCALL(void, deinit_47434_1689653243)(Cellset47316* s0) {
  	Pagedesc47312* it0;
  	it0 = (*s0).head;
  	{
  		while (1) {
  			Pagedesc47312* n0;
  			if (!!((it0 == NIM_NIL))) goto LA2;
  			n0 = (*it0).next;
  			dealloc_7848_1689653243(((void*) (it0)));
  			it0 = n0;
  		} LA2: ;
  	}
  	(*s0).head = NIM_NIL;
  	dealloc_7848_1689653243(((void*) ((*s0).data)));
  	(*s0).data = NIM_NIL;
  	(*s0).counter = ((NI) 0);
  }
  
  N_NIMCALL(void, cellsetreset_55828_1689653243)(Cellset47316* s0) {
  	deinit_47434_1689653243(s0);
  	init_47426_1689653243(s0);
  }
  
  N_NIMCALL(void, markglobals_67813_1689653243)(Gcheap49818* gch0) {
  	Cell47304** d0;
  	{
  		NI i_67834_1689653243;
  		NI HEX3Atmp_67855_1689653243;
  		NI res_67858_1689653243;
  		i_67834_1689653243 = (NI)0;
  		HEX3Atmp_67855_1689653243 = (NI)0;
  		HEX3Atmp_67855_1689653243 = (globalmarkerslen_55807_1689653243 - 1);
  		res_67858_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_67858_1689653243 <= HEX3Atmp_67855_1689653243)) goto LA3;
  				i_67834_1689653243 = res_67858_1689653243;
  				globalmarkers_55811_1689653243[(i_67834_1689653243)- 0]();
  				res_67858_1689653243 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	d0 = (*gch0).additionalroots.d;
  	{
  		NI i_67853_1689653243;
  		NI HEX3Atmp_67863_1689653243;
  		NI res_67866_1689653243;
  		i_67853_1689653243 = (NI)0;
  		HEX3Atmp_67863_1689653243 = (NI)0;
  		HEX3Atmp_67863_1689653243 = ((*gch0).additionalroots.len - 1);
  		res_67866_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_67866_1689653243 <= HEX3Atmp_67863_1689653243)) goto LA6;
  				i_67853_1689653243 = res_67866_1689653243;
  				marks_67601_1689653243(gch0, d0[(i_67853_1689653243)- 0]);
  				res_67866_1689653243 += ((NI) 1);
  			} LA6: ;
  		}
  	}
  }
  
  static N_INLINE(NIM_BOOL, iscell_31156_1689653243)(void* p0) {
  	NIM_BOOL result0;
  	result0 = (NIM_BOOL)0;
  	result0 = ((NU64)(((NI) 1)) < (NU64)((*((Freecell29430*) (p0))).zerofield));
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, contains_48008_1689653243)(Cellset47316* s0, Cell47304* cell0) {
  	NIM_BOOL result0;
  	NI u0;
  	Pagedesc47312* t0;
  	result0 = (NIM_BOOL)0;
  	u0 = ((NI) (cell0));
  	t0 = cellsetget_47458_1689653243(s0, (NI)((NU64)(u0) >> (NU64)(((NI) 12))));
  	{
  		if (!!((t0 == NIM_NIL))) goto LA3;
  		u0 = (NI)((NU64)((NI)((NU64)(u0) % (NU64)(((NI) 4096)))) / (NU64)(((NI) 8)));
  		result0 = !(((NI)((*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] & (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(u0 & ((NI) 63))))))) == ((NI) 0)));
  	}
  	goto LA1;
  	LA3: ;
  	{
  		result0 = NIM_FALSE;
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(void, freecycliccell_66215_1689653243)(Gcheap49818* gch0, Cell47304* c0) {
  	preparedealloc_52008_1689653243(c0);
  	rawdealloc_43017_1689653243((&(*gch0).region), ((void*) (c0)));
  }
  
  N_NIMCALL(void, sweep_67401_1689653243)(Gcheap49818* gch0) {
  	{
  		void* x_67406_1689653243;
  		x_67406_1689653243 = (void*)0;
  		(*gch0).region.locked = NIM_TRUE;
  		{
  			NI s_67418_1689653243;
  			Intset29414 HEX3Atmp_67420_1689653243;
  			s_67418_1689653243 = (NI)0;
  			memset((void*)(&HEX3Atmp_67420_1689653243), 0, sizeof(HEX3Atmp_67420_1689653243));
  			HEX3Atmp_67420_1689653243 = (*gch0).region.chunkstarts;
  			{
  				NI h_67422_1689653243;
  				NI res_67424_1689653243;
  				h_67422_1689653243 = (NI)0;
  				res_67424_1689653243 = ((NI) 0);
  				{
  					while (1) {
  						Trunk29410* r_67426_1689653243;
  						if (!(res_67424_1689653243 <= ((NI) 255))) goto LA5;
  						h_67422_1689653243 = ((NI) (res_67424_1689653243));
  						r_67426_1689653243 = HEX3Atmp_67420_1689653243.data[(h_67422_1689653243)- 0];
  						{
  							while (1) {
  								NI i_67428_1689653243;
  								if (!!((r_67426_1689653243 == NIM_NIL))) goto LA7;
  								i_67428_1689653243 = ((NI) 0);
  								{
  									while (1) {
  										NI w_67430_1689653243;
  										NI j_67432_1689653243;
  										if (!(i_67428_1689653243 <= ((NI) 7))) goto LA9;
  										w_67430_1689653243 = (*r_67426_1689653243).bits[(i_67428_1689653243)- 0];
  										j_67432_1689653243 = ((NI) 0);
  										{
  											while (1) {
  												if (!!((w_67430_1689653243 == ((NI) 0)))) goto LA11;
  												{
  													if (!!((((NI) ((NI)(w_67430_1689653243 & ((NI) 1)))) == ((NI) 0)))) goto LA14;
  													s_67418_1689653243 = (NI)((NI)((NU64)((*r_67426_1689653243).key) << (NU64)(((NI) 9))) | (NI)((NU64)((NI)((NU64)(i_67428_1689653243) << (NU64)(((NI) 6)))) + (NU64)(j_67432_1689653243)));
  													{
  														NIM_BOOL LOC18;
  														Basechunk29438* c_67434_1689653243;
  														LOC18 = (NIM_BOOL)0;
  														LOC18 = contains_30732_1689653243((&(*gch0).region.chunkstarts), s_67418_1689653243);
  														if (!LOC18) goto LA19;
  														c_67434_1689653243 = ((Basechunk29438*) ((NI)((NU64)(s_67418_1689653243) << (NU64)(((NI) 12)))));
  														{
  															NIM_BOOL LOC23;
  															LOC23 = (NIM_BOOL)0;
  															LOC23 = chunkunused_31089_1689653243(c_67434_1689653243);
  															if (!!(LOC23)) goto LA24;
  															{
  																NIM_BOOL LOC28;
  																Smallchunk29440* c_67437_1689653243;
  																NI size_67440_1689653243;
  																NI a_67442_1689653243;
  																NI limit_67445_1689653243;
  																LOC28 = (NIM_BOOL)0;
  																LOC28 = issmallchunk_31069_1689653243(c_67434_1689653243);
  																if (!LOC28) goto LA29;
  																c_67437_1689653243 = ((Smallchunk29440*) (c_67434_1689653243));
  																size_67440_1689653243 = (*c_67437_1689653243).Sup.size;
  																a_67442_1689653243 = ((NI) ((&(*c_67437_1689653243).data)));
  																limit_67445_1689653243 = (NI)(a_67442_1689653243 + (*c_67437_1689653243).acc);
  																{
  																	while (1) {
  																		if (!((NU64)(a_67442_1689653243) < (NU64)(limit_67445_1689653243))) goto LA32;
  																		x_67406_1689653243 = ((void*) (a_67442_1689653243));
  																		{
  																			NIM_BOOL LOC35;
  																			Cell47304* c0;
  																			LOC35 = (NIM_BOOL)0;
  																			LOC35 = iscell_31156_1689653243(x_67406_1689653243);
  																			if (!LOC35) goto LA36;
  																			c0 = ((Cell47304*) (x_67406_1689653243));
  																			{
  																				NIM_BOOL LOC40;
  																				LOC40 = (NIM_BOOL)0;
  																				LOC40 = contains_48008_1689653243((&(*gch0).marked), c0);
  																				if (!!(LOC40)) goto LA41;
  																				freecycliccell_66215_1689653243(gch0, c0);
  																			}
  																			LA41: ;
  																		}
  																		LA36: ;
  																		a_67442_1689653243 = (NI)((NU64)(a_67442_1689653243) + (NU64)(size_67440_1689653243));
  																	} LA32: ;
  																}
  															}
  															goto LA26;
  															LA29: ;
  															{
  																Bigchunk29442* c_67448_1689653243;
  																c_67448_1689653243 = ((Bigchunk29442*) (c_67434_1689653243));
  																x_67406_1689653243 = ((void*) ((&(*c_67448_1689653243).data)));
  																{
  																	NIM_BOOL LOC46;
  																	Cell47304* c_67451_1689653243;
  																	LOC46 = (NIM_BOOL)0;
  																	LOC46 = iscell_31156_1689653243(x_67406_1689653243);
  																	if (!LOC46) goto LA47;
  																	c_67451_1689653243 = ((Cell47304*) (x_67406_1689653243));
  																	{
  																		NIM_BOOL LOC51;
  																		LOC51 = (NIM_BOOL)0;
  																		LOC51 = contains_48008_1689653243((&(*gch0).marked), c_67451_1689653243);
  																		if (!!(LOC51)) goto LA52;
  																		freecycliccell_66215_1689653243(gch0, c_67451_1689653243);
  																	}
  																	LA52: ;
  																}
  																LA47: ;
  															}
  															LA26: ;
  														}
  														LA24: ;
  													}
  													LA19: ;
  												}
  												LA14: ;
  												j_67432_1689653243 += ((NI) 1);
  												w_67430_1689653243 = (NI)((NU64)(w_67430_1689653243) >> (NU64)(((NI) 1)));
  											} LA11: ;
  										}
  										i_67428_1689653243 += ((NI) 1);
  									} LA9: ;
  								}
  								r_67426_1689653243 = (*r_67426_1689653243).next;
  							} LA7: ;
  						}
  						res_67424_1689653243 += ((NI) 1);
  					} LA5: ;
  				}
  			}
  		}
  		(*gch0).region.locked = NIM_FALSE;
  	}
  }
  
  N_NIMCALL(void, collectcycles_69411_1689653243)(Gcheap49818* gch0) {
  	Cell47304** d0;
  	{
  		while (1) {
  			NIM_BOOL LOC3;
  			if (!(((NI) 0) < (*gch0).zct.len)) goto LA2;
  			LOC3 = (NIM_BOOL)0;
  			LOC3 = collectzct_69407_1689653243(gch0);
  		} LA2: ;
  	}
  	cellsetreset_55828_1689653243((&(*gch0).marked));
  	d0 = (*gch0).decstack.d;
  	{
  		NI i_69812_1689653243;
  		NI HEX3Atmp_70003_1689653243;
  		NI res_70006_1689653243;
  		i_69812_1689653243 = (NI)0;
  		HEX3Atmp_70003_1689653243 = (NI)0;
  		HEX3Atmp_70003_1689653243 = (NI)((*gch0).decstack.len - ((NI) 1));
  		res_70006_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_70006_1689653243 <= HEX3Atmp_70003_1689653243)) goto LA6;
  				i_69812_1689653243 = res_70006_1689653243;
  				marks_67601_1689653243(gch0, d0[(i_69812_1689653243)- 0]);
  				res_70006_1689653243 += ((NI) 1);
  			} LA6: ;
  		}
  	}
  	markglobals_67813_1689653243(gch0);
  	sweep_67401_1689653243(gch0);
  }
  
  N_NIMCALL(NI, gettotalmem_8654_1689653243)(void) {
  	NI result0;
  {	result0 = (NI)0;
  	result0 = gch_49858_1689653243.region.currmem;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NI, getfreemem_8652_1689653243)(void) {
  	NI result0;
  	result0 = (NI)0;
  	result0 = gch_49858_1689653243.region.freemem;
  	return result0;
  }
  
  N_NIMCALL(NI, getoccupiedmem_8650_1689653243)(void) {
  	NI result0;
  	NI LOC1;
  	NI LOC2;
  {	result0 = (NI)0;
  	LOC1 = (NI)0;
  	LOC1 = gettotalmem_8654_1689653243();
  	LOC2 = (NI)0;
  	LOC2 = getfreemem_8652_1689653243();
  	result0 = (NI)(LOC1 - LOC2);
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void, unmarkstackandregisters_74602_1689653243)(Gcheap49818* gch0) {
  	Cell47304** d0;
  	d0 = (*gch0).decstack.d;
  	{
  		NI i_74616_1689653243;
  		NI HEX3Atmp_74802_1689653243;
  		NI res_74805_1689653243;
  		i_74616_1689653243 = (NI)0;
  		HEX3Atmp_74802_1689653243 = (NI)0;
  		HEX3Atmp_74802_1689653243 = (NI)((*gch0).decstack.len - ((NI) 1));
  		res_74805_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_74805_1689653243 <= HEX3Atmp_74802_1689653243)) goto LA3;
  				i_74616_1689653243 = res_74805_1689653243;
  				decref_53001_1689653243(d0[(i_74616_1689653243)- 0]);
  				res_74805_1689653243 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	(*gch0).decstack.len = ((NI) 0);
  }
  
  N_NIMCALL(void, collectctbody_74809_1689653243)(Gcheap49818* gch0) {
  	NI LOC1;
  	LOC1 = (NI)0;
  	LOC1 = stacksize_71001_1689653243();
  	(*gch0).stat.maxstacksize = (((*gch0).stat.maxstacksize >= LOC1) ? (*gch0).stat.maxstacksize : LOC1);
  	prepareforinteriorpointerchecking_44688_1689653243((&(*gch0).region));
  	markstackandregisters_72437_1689653243(gch0);
  	(*gch0).stat.maxstackcells = (((*gch0).stat.maxstackcells >= (*gch0).decstack.len) ? (*gch0).stat.maxstackcells : (*gch0).decstack.len);
  	(*gch0).stat.stackscans += ((NI) 1);
  	{
  		NIM_BOOL LOC4;
  		LOC4 = (NIM_BOOL)0;
  		LOC4 = collectzct_69407_1689653243(gch0);
  		if (!LOC4) goto LA5;
  		{
  			NIM_BOOL LOC9;
  			NI LOC10;
  			NI LOC14;
  			LOC9 = (NIM_BOOL)0;
  			LOC10 = (NI)0;
  			LOC10 = getoccupiedmem_47229_1689653243((&(*gch0).region));
  			LOC9 = ((*gch0).cyclethreshold <= LOC10);
  			if (LOC9) goto LA11;
  			LOC9 = NIM_FALSE;
  			LA11: ;
  			if (!LOC9) goto LA12;
  			collectcycles_69411_1689653243(gch0);
  			(*gch0).stat.cyclecollections += ((NI) 1);
  			LOC14 = (NI)0;
  			LOC14 = getoccupiedmem_8650_1689653243();
  			(*gch0).cyclethreshold = ((((NI) 4194304) >= (NI)(LOC14 * ((NI) 2))) ? ((NI) 4194304) : (NI)(LOC14 * ((NI) 2)));
  			(*gch0).stat.maxthreshold = (((*gch0).stat.maxthreshold >= (*gch0).cyclethreshold) ? (*gch0).stat.maxthreshold : (*gch0).cyclethreshold);
  		}
  		LA12: ;
  	}
  	LA5: ;
  	unmarkstackandregisters_74602_1689653243(gch0);
  }
  
  N_NIMCALL(void, collectct_51807_1689653243)(Gcheap49818* gch0) {
  	NI stackmarkcosts0;
  	NI LOC1;
  	LOC1 = (NI)0;
  	LOC1 = stacksize_71001_1689653243();
  	stackmarkcosts0 = (((NI)(LOC1 / ((NI) 128)) >= ((NI) 500)) ? (NI)(LOC1 / ((NI) 128)) : ((NI) 500));
  	{
  		NIM_BOOL LOC4;
  		NIM_BOOL LOC5;
  		NIM_BOOL LOC6;
  		NIM_BOOL LOC8;
  		NI LOC10;
  		LOC4 = (NIM_BOOL)0;
  		LOC5 = (NIM_BOOL)0;
  		LOC6 = (NIM_BOOL)0;
  		LOC6 = (stackmarkcosts0 <= (*gch0).zct.len);
  		if (LOC6) goto LA7;
  		LOC8 = (NIM_BOOL)0;
  		LOC8 = NIM_TRUE;
  		if (!(LOC8)) goto LA9;
  		LOC10 = (NI)0;
  		LOC10 = getoccupiedmem_47229_1689653243((&(*gch0).region));
  		LOC8 = ((*gch0).cyclethreshold <= LOC10);
  		LA9: ;
  		LOC6 = LOC8;
  		LA7: ;
  		LOC5 = LOC6;
  		if (LOC5) goto LA11;
  		LOC5 = NIM_FALSE;
  		LA11: ;
  		LOC4 = LOC5;
  		if (!(LOC4)) goto LA12;
  		LOC4 = ((*gch0).recgclock == ((NI) 0));
  		LA12: ;
  		if (!LOC4) goto LA13;
  		collectctbody_74809_1689653243(gch0);
  	}
  	LA13: ;
  }
  
  static N_INLINE(void, addnewobjtozct_56874_1689653243)(Cell47304* res0, Gcheap49818* gch0) {
  	NI L0;
  	Cell47304** d0;
  {	L0 = (*gch0).zct.len;
  	d0 = (*gch0).zct.d;
  	{
  		Cell47304* c0;
  		if (!(((NI) 8) < L0)) goto LA3;
  		c0 = (Cell47304*)0;
  		c0 = d0[((NI)(L0 - ((NI) 1)))- 0];
  		{
  			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA7;
  			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
  			d0[((NI)(L0 - ((NI) 1)))- 0] = res0;
  			goto BeforeRet;
  		}
  		LA7: ;
  		c0 = d0[((NI)(L0 - ((NI) 2)))- 0];
  		{
  			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA11;
  			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
  			d0[((NI)(L0 - ((NI) 2)))- 0] = res0;
  			goto BeforeRet;
  		}
  		LA11: ;
  		c0 = d0[((NI)(L0 - ((NI) 3)))- 0];
  		{
  			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA15;
  			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
  			d0[((NI)(L0 - ((NI) 3)))- 0] = res0;
  			goto BeforeRet;
  		}
  		LA15: ;
  		c0 = d0[((NI)(L0 - ((NI) 4)))- 0];
  		{
  			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA19;
  			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
  			d0[((NI)(L0 - ((NI) 4)))- 0] = res0;
  			goto BeforeRet;
  		}
  		LA19: ;
  		c0 = d0[((NI)(L0 - ((NI) 5)))- 0];
  		{
  			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA23;
  			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
  			d0[((NI)(L0 - ((NI) 5)))- 0] = res0;
  			goto BeforeRet;
  		}
  		LA23: ;
  		c0 = d0[((NI)(L0 - ((NI) 6)))- 0];
  		{
  			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA27;
  			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
  			d0[((NI)(L0 - ((NI) 6)))- 0] = res0;
  			goto BeforeRet;
  		}
  		LA27: ;
  		c0 = d0[((NI)(L0 - ((NI) 7)))- 0];
  		{
  			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA31;
  			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
  			d0[((NI)(L0 - ((NI) 7)))- 0] = res0;
  			goto BeforeRet;
  		}
  		LA31: ;
  		c0 = d0[((NI)(L0 - ((NI) 8)))- 0];
  		{
  			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA35;
  			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
  			d0[((NI)(L0 - ((NI) 8)))- 0] = res0;
  			goto BeforeRet;
  		}
  		LA35: ;
  		add_47391_1689653243((&(*gch0).zct), res0);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		d0[(L0)- 0] = res0;
  		(*gch0).zct.len += ((NI) 1);
  	}
  	LA1: ;
  	}BeforeRet: ;
  }
  
  N_NIMCALL(void*, rawnewobj_57401_1689653243)(TNimType* typ0, NI size0, Gcheap49818* gch0) {
  	void* result0;
  	Cell47304* res0;
  	void* LOC1;
  	result0 = (void*)0;
  	collectct_51807_1689653243(gch0);
  	LOC1 = (void*)0;
  	LOC1 = rawalloc_36604_1689653243((&(*gch0).region), (NI)(size0 + ((NI)sizeof(Cell47304))));
  	res0 = ((Cell47304*) (LOC1));
  	(*res0).typ = typ0;
  	(*res0).refcount = ((NI) 4);
  	addnewobjtozct_56874_1689653243(res0, gch0);
  	result0 = celltousr_51422_1689653243(res0);
  	return result0;
  }
  
  N_NIMCALL(void*, newObjNoInit)(TNimType* typ0, NI size0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = rawnewobj_57401_1689653243(typ0, size0, (&gch_49858_1689653243));
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, rawNewStringNoInit)(NI space0) {
  	NimStringDesc* result0;
  	NI s0;
  	void* LOC5;
  	result0 = (NimStringDesc*)0;
  	s0 = space0;
  	{
  		if (!(s0 < ((NI) 7))) goto LA3;
  		s0 = ((NI) 7);
  	}
  	LA3: ;
  	LOC5 = (void*)0;
  	LOC5 = newObjNoInit((&strdesc_13003_1689653243), (NI)((NI)(((NI)sizeof(TGenericSeq)) + s0) + ((NI) 1)));
  	result0 = ((NimStringDesc*) (LOC5));
  	(*result0).Sup.reserved = s0;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, toNimStr)(NCSTRING str0, NI len0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	result0 = rawNewStringNoInit(len0);
  	(*result0).Sup.len = len0;
  	copymem_7485_1689653243(((void*) ((*result0).data)), ((void*) (str0)), ((NI) ((NI)(len0 + ((NI) 1)))));
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	{
  		if (!(((void*) (str0)) == NIM_NIL)) goto LA3;
  		result0 = NIM_NIL;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		result0 = toNimStr(str0, (str0 ? strlen(str0) : 0));
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(void, write_14903_1689653243)(FILE* f0, NCSTRING c0) {
  	int LOC1;
  	LOC1 = (int)0;
  	LOC1 = fputs(c0, f0);
  }
  
  N_NIMCALL(void, writetostderr_18801_1689653243)(NCSTRING msg0) {
  	write_14903_1689653243(stdout, msg0);
  }
  
  N_NIMCALL(void, showerrormessage_18806_1689653243)(NCSTRING data0) {
  	{
  		NimStringDesc* LOC5;
  		if (!!((errormessagewriter_18604_1689653243 == NIM_NIL))) goto LA3;
  		LOC5 = (NimStringDesc*)0;
  		LOC5 = cstrToNimstr(data0);
  		errormessagewriter_18604_1689653243(LOC5);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		writetostderr_18801_1689653243(data0);
  	}
  	LA1: ;
  }
  
  N_NOCONV(void, signalHandler)(int sign0) {
  	NCSTRING msg0;
  	msg0 = (NCSTRING)0;
  	{
  		if (!(sign0 == ((int) 2))) goto LA3;
  		msg0 = "SIGINT: Interrupted by Ctrl-C.\012";
  	}
  	goto LA1;
  	LA3: ;
  	{
  		if (!(sign0 == ((int) 11))) goto LA6;
  		msg0 = "SIGSEGV: Illegal storage access. (Attempt to read from nil?)\012";
  	}
  	goto LA1;
  	LA6: ;
  	{
  		if (!(sign0 == ((int) 6))) goto LA9;
  		msg0 = "SIGABRT: Abnormal termination.\012";
  	}
  	goto LA1;
  	LA9: ;
  	{
  		if (!(sign0 == ((int) 8))) goto LA12;
  		msg0 = "SIGFPE: Arithmetic error.\012";
  	}
  	goto LA1;
  	LA12: ;
  	{
  		if (!(sign0 == ((int) 4))) goto LA15;
  		msg0 = "SIGILL: Illegal operation.\012";
  	}
  	goto LA1;
  	LA15: ;
  	{
  		if (!(sign0 == ((int) 11))) goto LA18;
  		msg0 = "SIGBUS: Illegal storage access. (Attempt to read from nil?)\012";
  	}
  	goto LA1;
  	LA18: ;
  	{
  		{
  			{
  				if (!(sign0 == ((int) 13))) goto LA24;
  				msg0 = "SIGPIPE: Pipe closed.\012";
  				goto LA21;
  			}
  			LA24: ;
  			msg0 = "unknown signal\012";
  		} LA21: ;
  	}
  	LA1: ;
  	showerrormessage_18806_1689653243(msg0);
  	exit(((NI) 1));
  }
  
  N_NIMCALL(void, registersignalhandler_22402_1689653243)(void) {
  	csighandlert13609 LOC1;
  	csighandlert13609 LOC2;
  	csighandlert13609 LOC3;
  	csighandlert13609 LOC4;
  	csighandlert13609 LOC5;
  	csighandlert13609 LOC6;
  	csighandlert13609 LOC7;
  	LOC1 = (csighandlert13609)0;
  	LOC1 = signal(((int) 2), signalHandler);
  	LOC2 = (csighandlert13609)0;
  	LOC2 = signal(((int) 11), signalHandler);
  	LOC3 = (csighandlert13609)0;
  	LOC3 = signal(((int) 6), signalHandler);
  	LOC4 = (csighandlert13609)0;
  	LOC4 = signal(((int) 8), signalHandler);
  	LOC5 = (csighandlert13609)0;
  	LOC5 = signal(((int) 4), signalHandler);
  	LOC6 = (csighandlert13609)0;
  	LOC6 = signal(((int) 11), signalHandler);
  	LOC7 = (csighandlert13609)0;
  	LOC7 = signal(((int) 13), signalHandler);
  }
  
  N_NIMCALL(NI, getRefcount)(void* p0) {
  	NI result0;
  	Cell47304* LOC1;
  	result0 = (NI)0;
  	LOC1 = (Cell47304*)0;
  	LOC1 = usrtocell_51440_1689653243(p0);
  	result0 = (NI)((NU64)((*LOC1).refcount) >> (NU64)(((NI) 3)));
  	return result0;
  }
  
  N_NIMCALL(void*, newObjRC1)(TNimType* typ0, NI size0) {
  	void* result0;
  	Cell47304* res0;
  	void* LOC1;
  	result0 = (void*)0;
  	collectct_51807_1689653243((&gch_49858_1689653243));
  	LOC1 = (void*)0;
  	LOC1 = rawalloc_36604_1689653243((&gch_49858_1689653243.region), (NI)(size0 + ((NI)sizeof(Cell47304))));
  	res0 = ((Cell47304*) (LOC1));
  	(*res0).typ = typ0;
  	(*res0).refcount = ((NI) 8);
  	result0 = celltousr_51422_1689653243(res0);
  	zeromem_7481_1689653243(result0, ((NI) (size0)));
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	{
  		NI s0;
  		void* LOC9;
  		if (!!((src0 == NIM_NIL))) goto LA3;
  		s0 = (*src0).Sup.len;
  		{
  			if (!(s0 < ((NI) 7))) goto LA7;
  			s0 = ((NI) 7);
  		}
  		LA7: ;
  		LOC9 = (void*)0;
  		LOC9 = newObjRC1((&strdesc_13003_1689653243), (NI)((NI)(((NI)sizeof(TGenericSeq)) + s0) + ((NI) 1)));
  		result0 = ((NimStringDesc*) (LOC9));
  		(*result0).Sup.reserved = s0;
  		(*result0).Sup.len = (*src0).Sup.len;
  		copymem_7485_1689653243(((void*) ((*result0).data)), ((void*) ((*src0).data)), ((NI) ((NI)((*src0).Sup.len + ((NI) 1)))));
  	}
  	LA3: ;
  	return result0;
  }
  
  N_NIMCALL(void*, newObj)(TNimType* typ0, NI size0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = rawnewobj_57401_1689653243(typ0, size0, (&gch_49858_1689653243));
  	zeromem_7481_1689653243(result0, ((NI) (size0)));
  	return result0;
  }
  N_NIMCALL(void, T1689653243_7)(void* p, NI op) {
  	Overflowerror3640* a;
  	a = (Overflowerror3640*)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, nimGCunrefNoCycle)(void* p0) {
  	Cell47304* c0;
  	c0 = usrtocell_51440_1689653243(p0);
  	{
  		(*c0).refcount -= ((NI) 8);
  		if (!((NU64)((*c0).refcount) < (NU64)(((NI) 8)))) goto LA3;
  		rtladdzct_52601_1689653243(c0);
  	}
  	LA3: ;
  }
  
  static N_INLINE(void, incref_53419_1689653243)(Cell47304* c0) {
  	(*c0).refcount = (NI)((NU64)((*c0).refcount) + (NU64)(((NI) 8)));
  }
  
  static N_INLINE(void, asgnRef)(void** dest0, void* src0) {
  	{
  		Cell47304* LOC5;
  		if (!!((src0 == NIM_NIL))) goto LA3;
  		LOC5 = (Cell47304*)0;
  		LOC5 = usrtocell_51440_1689653243(src0);
  		incref_53419_1689653243(LOC5);
  	}
  	LA3: ;
  	{
  		Cell47304* LOC10;
  		if (!!(((*dest0) == NIM_NIL))) goto LA8;
  		LOC10 = (Cell47304*)0;
  		LOC10 = usrtocell_51440_1689653243((*dest0));
  		decref_53001_1689653243(LOC10);
  	}
  	LA8: ;
  	(*dest0) = src0;
  }
  
  static N_INLINE(void, pushCurrentException)(Exception* e0) {
  	asgnRef((void**) (&(*e0).parent), currexception_18839_1689653243);
  	asgnRef((void**) (&currexception_18839_1689653243), e0);
  }
  
  N_NOINLINE(NIM_BOOL, isobjslowpath_23136_1689653243)(TNimType* obj0, TNimType* subclass0, TNimType** cache0) {
  	NIM_BOOL result0;
  	TNimType* x0;
  {	result0 = (NIM_BOOL)0;
  	x0 = (*obj0).base;
  	{
  		while (1) {
  			if (!!((x0 == subclass0))) goto LA2;
  			{
  				if (!(x0 == NIM_NIL)) goto LA5;
  				cache0[(((NI) 0))- 0] = obj0;
  				result0 = NIM_FALSE;
  				goto BeforeRet;
  			}
  			LA5: ;
  			x0 = (*x0).base;
  		} LA2: ;
  	}
  	cache0[(((NI) 1))- 0] = obj0;
  	result0 = NIM_TRUE;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  static N_INLINE(NIM_BOOL, isObjWithCache)(TNimType* obj0, TNimType* subclass0, TNimType** cache0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		if (!(obj0 == subclass0)) goto LA3;
  		result0 = NIM_TRUE;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!((*obj0).base == subclass0)) goto LA7;
  		result0 = NIM_TRUE;
  		goto BeforeRet;
  	}
  	LA7: ;
  	{
  		if (!(cache0[(((NI) 0))- 0] == obj0)) goto LA11;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA11: ;
  	{
  		if (!(cache0[(((NI) 1))- 0] == obj0)) goto LA15;
  		result0 = NIM_TRUE;
  		goto BeforeRet;
  	}
  	LA15: ;
  	result0 = isobjslowpath_23136_1689653243(obj0, subclass0, cache0);
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  static N_INLINE(void, quitordebug_19804_1689653243)(void) {
  	exit(((NI) 1));
  }
  
  N_NIMCALL(void, raiseexceptionaux_20001_1689653243)(Exception* e0) {
  {	{
  		if (!!((localraisehook_10619_1689653243 == NIM_NIL))) goto LA3;
  		{
  			NIM_BOOL LOC7;
  			LOC7 = (NIM_BOOL)0;
  			LOC7 = localraisehook_10619_1689653243(e0);
  			if (!!(LOC7)) goto LA8;
  			goto BeforeRet;
  		}
  		LA8: ;
  	}
  	LA3: ;
  	{
  		if (!!((globalraisehook_10614_1689653243 == NIM_NIL))) goto LA12;
  		{
  			NIM_BOOL LOC16;
  			LOC16 = (NIM_BOOL)0;
  			LOC16 = globalraisehook_10614_1689653243(e0);
  			if (!!(LOC16)) goto LA17;
  			goto BeforeRet;
  		}
  		LA17: ;
  	}
  	LA12: ;
  	{
  		if (!!((exchandler_18837_1689653243 == NIM_NIL))) goto LA21;
  		{
  			NIM_BOOL LOC25;
  			LOC25 = (NIM_BOOL)0;
  			LOC25 = !((*exchandler_18837_1689653243).hasRaiseAction);
  			if (LOC25) goto LA26;
  			LOC25 = (*exchandler_18837_1689653243).raiseAction.ClEnv? (*exchandler_18837_1689653243).raiseAction.ClPrc(e0, (*exchandler_18837_1689653243).raiseAction.ClEnv):((T1689653243_8)((*exchandler_18837_1689653243).raiseAction.ClPrc))(e0);
  			LA26: ;
  			if (!LOC25) goto LA27;
  			pushCurrentException(e0);
  			_longjmp((*exchandler_18837_1689653243).context, ((int) 1));
  		}
  		LA27: ;
  	}
  	goto LA19;
  	LA21: ;
  	{
  		if (!(isObjWithCache((*e0).Sup.m_type, (&NTI3650), Nim_OfCheck_CACHE10))) goto LA30;
  		showerrormessage_18806_1689653243((*e0).name);
  		quitordebug_19804_1689653243();
  	}
  	goto LA19;
  	LA30: ;
  	{
  		TY20418 buf0;
  		NI L0;
  		memset((void*)buf0, 0, sizeof(buf0));
  		L0 = ((NI) 0);
  		{
  			if (!((NI)(L0 + ((NI) 28)) < ((NI) 2000))) goto LA35;
  			copymem_7485_1689653243(((void*) ((&buf0[(L0)- 0]))), "Error: unhandled exception: ", ((NI) 28));
  			L0 += ((NI) 28);
  		}
  		LA35: ;
  		{
  			if (!!((*e0).message == 0)) goto LA39;
  			{
  				if (!((NI)(L0 + ((*e0).message ? (*e0).message->Sup.len : 0)) < ((NI) 2000))) goto LA43;
  				copymem_7485_1689653243(((void*) ((&buf0[(L0)- 0]))), ((void*) ((*e0).message->data)), ((NI) (((*e0).message ? (*e0).message->Sup.len : 0))));
  				L0 += ((*e0).message ? (*e0).message->Sup.len : 0);
  			}
  			LA43: ;
  		}
  		LA39: ;
  		{
  			if (!((NI)(L0 + ((NI) 2)) < ((NI) 2000))) goto LA47;
  			copymem_7485_1689653243(((void*) ((&buf0[(L0)- 0]))), " [", ((NI) 2));
  			L0 += ((NI) 2);
  		}
  		LA47: ;
  		{
  			if (!((NI)(L0 + ((*e0).name ? strlen((*e0).name) : 0)) < ((NI) 2000))) goto LA51;
  			copymem_7485_1689653243(((void*) ((&buf0[(L0)- 0]))), ((void*) ((*e0).name)), ((NI) (((*e0).name ? strlen((*e0).name) : 0))));
  			L0 += ((*e0).name ? strlen((*e0).name) : 0);
  		}
  		LA51: ;
  		{
  			if (!((NI)(L0 + ((NI) 2)) < ((NI) 2000))) goto LA55;
  			copymem_7485_1689653243(((void*) ((&buf0[(L0)- 0]))), "]\012", ((NI) 2));
  			L0 += ((NI) 2);
  		}
  		LA55: ;
  		showerrormessage_18806_1689653243(((NCSTRING) (buf0)));
  		quitordebug_19804_1689653243();
  	}
  	LA19: ;
  	}BeforeRet: ;
  }
  
  N_NIMCALL(void, raiseException)(Exception* e0, NCSTRING ename0) {
  	(*e0).name = ename0;
  	raiseexceptionaux_20001_1689653243(e0);
  }
  
  static N_INLINE(void, sysfatal_23264_1689653243)(NimStringDesc* message0) {
  	Overflowerror3640* e0;
  	NimStringDesc* LOC1;
  	e0 = (Overflowerror3640*)0;
  	e0 = (Overflowerror3640*) newObj((&NTI23271), sizeof(Overflowerror3640));
  	(*e0).Sup.Sup.Sup.m_type = (&NTI3640);
  	LOC1 = (NimStringDesc*)0;
  	LOC1 = (*e0).Sup.Sup.message; (*e0).Sup.Sup.message = copyStringRC1(message0);
  	if (LOC1) nimGCunrefNoCycle(LOC1);
  	raiseException((Exception*)e0, "OverflowError");
  }
  
  N_NOINLINE(void, raiseOverflow)(void) {
  	sysfatal_23264_1689653243(((NimStringDesc*) &T1689653243_10));
  }
  
  static N_INLINE(NI, addInt)(NI a0, NI b0) {
  	NI result0;
  {	result0 = (NI)0;
  	result0 = (NI)((NU64)(a0) + (NU64)(b0));
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = (((NI) 0) <= (NI)(result0 ^ a0));
  		if (LOC3) goto LA4;
  		LOC3 = (((NI) 0) <= (NI)(result0 ^ b0));
  		LA4: ;
  		if (!LOC3) goto LA5;
  		goto BeforeRet;
  	}
  	LA5: ;
  	raiseOverflow();
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NI, mulInt)(NI a0, NI b0) {
  	NI result0;
  	NF resasfloat0;
  	NF floatprod0;
  {	result0 = (NI)0;
  	resasfloat0 = (NF)0;
  	floatprod0 = (NF)0;
  	result0 = (NI)((NU64)(a0) * (NU64)(b0));
  	floatprod0 = ((NF)(((double) (a0))) * (NF)(((double) (b0))));
  	resasfloat0 = ((double) (result0));
  	{
  		if (!(resasfloat0 == floatprod0)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!(((NF)(3.2000000000000000e+01) * (NF)((((NF)(resasfloat0) - (NF)(floatprod0)) > 0? (((NF)(resasfloat0) - (NF)(floatprod0))) : -(((NF)(resasfloat0) - (NF)(floatprod0)))))) <= (floatprod0 > 0? (floatprod0) : -(floatprod0)))) goto LA7;
  		goto BeforeRet;
  	}
  	LA7: ;
  	raiseOverflow();
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void*, newSeqRC1)(TNimType* typ0, NI len0) {
  	void* result0;
  	NI size0;
  	NI LOC1;
  	result0 = (void*)0;
  	LOC1 = (NI)0;
  	LOC1 = mulInt(len0, (*(*typ0).base).size);
  	size0 = addInt(LOC1, ((NI) 16));
  	result0 = newObjRC1(typ0, size0);
  	(*((TGenericSeq*) (result0))).len = len0;
  	(*((TGenericSeq*) (result0))).reserved = len0;
  	return result0;
  }
  
  N_NIMCALL(void*, newSeq)(TNimType* typ0, NI len0) {
  	void* result0;
  	NI size0;
  	NI LOC1;
  	result0 = (void*)0;
  	LOC1 = (NI)0;
  	LOC1 = mulInt(len0, (*(*typ0).base).size);
  	size0 = addInt(LOC1, ((NI) 16));
  	result0 = newObj(typ0, size0);
  	(*((TGenericSeq*) (result0))).len = len0;
  	(*((TGenericSeq*) (result0))).reserved = len0;
  	return result0;
  }
  
  N_NOINLINE(NIM_BOOL, isonstack_51811_1689653243)(void* p0) {
  	NIM_BOOL result0;
  	void* volatile stacktop0;
  	NI b0;
  	NI a0;
  	NI x0;
  	NIM_BOOL LOC1;
  	result0 = (NIM_BOOL)0;
  	stacktop0 = (void*)0;
  	stacktop0 = ((void*) ((&stacktop0)));
  	b0 = ((NI) (gch_49858_1689653243.stackbottom));
  	a0 = ((NI) (stacktop0));
  	x0 = ((NI) (p0));
  	LOC1 = (NIM_BOOL)0;
  	LOC1 = ((NU64)(a0) <= (NU64)(x0));
  	if (!(LOC1)) goto LA2;
  	LOC1 = ((NU64)(x0) <= (NU64)(b0));
  	LA2: ;
  	result0 = LOC1;
  	return result0;
  }
  
  N_NIMCALL(void, unsureAsgnRef)(void** dest0, void* src0) {
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = isonstack_51811_1689653243(((void*) (dest0)));
  		if (!!(LOC3)) goto LA4;
  		{
  			Cell47304* LOC10;
  			if (!!((src0 == NIM_NIL))) goto LA8;
  			LOC10 = (Cell47304*)0;
  			LOC10 = usrtocell_51440_1689653243(src0);
  			incref_53419_1689653243(LOC10);
  		}
  		LA8: ;
  		{
  			Cell47304* LOC15;
  			if (!((NU64)(((NI) 4096)) <= (NU64)(((NI) ((*dest0)))))) goto LA13;
  			LOC15 = (Cell47304*)0;
  			LOC15 = usrtocell_51440_1689653243((*dest0));
  			decref_53001_1689653243(LOC15);
  		}
  		LA13: ;
  	}
  	goto LA1;
  	LA4: ;
  	{
  	}
  	LA1: ;
  	(*dest0) = src0;
  }
  N_NIMCALL(void, T1689653243_11)(void* p, NI op) {
  	Valueerror3646* a;
  	a = (Valueerror3646*)p;
  	nimGCvisit((void*)(*a).Sup.parent, op);
  	nimGCvisit((void*)(*a).Sup.message, op);
  	nimGCvisit((void*)(*a).Sup.trace, op);
  }
  
  static N_INLINE(void, sysfatal_23018_1689653243)(NimStringDesc* message0) {
  	Valueerror3646* e0;
  	NimStringDesc* LOC1;
  	e0 = (Valueerror3646*)0;
  	e0 = (Valueerror3646*) newObj((&NTI23025), sizeof(Valueerror3646));
  	(*e0).Sup.Sup.m_type = (&NTI3646);
  	LOC1 = (NimStringDesc*)0;
  	LOC1 = (*e0).Sup.message; (*e0).Sup.message = copyStringRC1(message0);
  	if (LOC1) nimGCunrefNoCycle(LOC1);
  	raiseException((Exception*)e0, "ValueError");
  }
  
  N_NOINLINE(void, chckNil)(void* p0) {
  	{
  		if (!(p0 == NIM_NIL)) goto LA3;
  		sysfatal_23018_1689653243(((NimStringDesc*) &T1689653243_12));
  	}
  	LA3: ;
  }
  
  N_NIMCALL(void, genericresetaux_85601_1689653243)(void* dest0, TNimNode* n0) {
  	NI d0;
  	d0 = ((NI) (dest0));
  	switch ((*n0).kind) {
  	case ((Tnimnodekind3405) 0):
  	{
  	}
  	break;
  	case ((Tnimnodekind3405) 1):
  	{
  		genericReset(((void*) ((NI)((NU64)(d0) + (NU64)((*n0).offset)))), (*n0).typ);
  	}
  	break;
  	case ((Tnimnodekind3405) 2):
  	{
  		{
  			NI i_86819_1689653243;
  			NI HEX3Atmp_86845_1689653243;
  			NI res_86848_1689653243;
  			i_86819_1689653243 = (NI)0;
  			HEX3Atmp_86845_1689653243 = (NI)0;
  			HEX3Atmp_86845_1689653243 = (NI)((*n0).len - ((NI) 1));
  			res_86848_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_86848_1689653243 <= HEX3Atmp_86845_1689653243)) goto LA6;
  					i_86819_1689653243 = res_86848_1689653243;
  					genericresetaux_85601_1689653243(dest0, (*n0).sons[(i_86819_1689653243)- 0]);
  					res_86848_1689653243 += ((NI) 1);
  				} LA6: ;
  			}
  		}
  	}
  	break;
  	case ((Tnimnodekind3405) 3):
  	{
  		TNimNode* m0;
  		m0 = selectbranch_27207_1689653243(dest0, n0);
  		{
  			if (!!((m0 == NIM_NIL))) goto LA10;
  			genericresetaux_85601_1689653243(dest0, m0);
  		}
  		LA10: ;
  		zeromem_7481_1689653243(((void*) ((NI)((NU64)(d0) + (NU64)((*n0).offset)))), ((NI) ((*(*n0).typ).size)));
  	}
  	break;
  	}
  }
  
  N_NIMCALL(void, genericReset)(void* dest0, TNimType* mt0) {
  	NI d0;
  	d0 = ((NI) (dest0));
  	switch ((*mt0).kind) {
  	case ((Tnimkind3403) 28):
  	case ((Tnimkind3403) 22):
  	case ((Tnimkind3403) 24):
  	{
  		unsureAsgnRef(((void**) (dest0)), NIM_NIL);
  	}
  	break;
  	case ((Tnimkind3403) 18):
  	{
  		genericresetaux_85601_1689653243(dest0, (*mt0).node);
  	}
  	break;
  	case ((Tnimkind3403) 17):
  	{
  		TNimType** pint0;
  		genericresetaux_85601_1689653243(dest0, (*mt0).node);
  		pint0 = ((TNimType**) (dest0));
  		(*pint0) = NIM_NIL;
  	}
  	break;
  	case ((Tnimkind3403) 16):
  	case ((Tnimkind3403) 4):
  	{
  		{
  			NI i_87012_1689653243;
  			NI HEX3Atmp_87036_1689653243;
  			NI res_87039_1689653243;
  			i_87012_1689653243 = (NI)0;
  			HEX3Atmp_87036_1689653243 = (NI)0;
  			HEX3Atmp_87036_1689653243 = (NI)((NI)((*mt0).size / (*(*mt0).base).size) - ((NI) 1));
  			res_87039_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_87039_1689653243 <= HEX3Atmp_87036_1689653243)) goto LA7;
  					i_87012_1689653243 = res_87039_1689653243;
  					genericReset(((void*) ((NI)((NU64)(d0) + (NU64)((NI)((NU64)(i_87012_1689653243) * (NU64)((*(*mt0).base).size)))))), (*mt0).base);
  					res_87039_1689653243 += ((NI) 1);
  				} LA7: ;
  			}
  		}
  	}
  	break;
  	default:
  	{
  		zeromem_7481_1689653243(dest0, ((NI) ((*mt0).size)));
  	}
  	break;
  	}
  }
  
  N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	{
  		if (!!((src0 == NIM_NIL))) goto LA3;
  		{
  			if (!!(((NI)((*src0).Sup.reserved & ((NI) (IL64(-9223372036854775807) - IL64(1)))) == ((NI) 0)))) goto LA7;
  			result0 = src0;
  		}
  		goto LA5;
  		LA7: ;
  		{
  			result0 = rawNewStringNoInit((*src0).Sup.len);
  			(*result0).Sup.len = (*src0).Sup.len;
  			copymem_7485_1689653243(((void*) ((*result0).data)), ((void*) ((*src0).data)), ((NI) ((NI)((*src0).Sup.len + ((NI) 1)))));
  		}
  		LA5: ;
  	}
  	LA3: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, rawNewString)(NI space0) {
  	NimStringDesc* result0;
  	NI s0;
  	void* LOC5;
  	result0 = (NimStringDesc*)0;
  	s0 = space0;
  	{
  		if (!(s0 < ((NI) 7))) goto LA3;
  		s0 = ((NI) 7);
  	}
  	LA3: ;
  	LOC5 = (void*)0;
  	LOC5 = newObj((&strdesc_13003_1689653243), (NI)((NI)(((NI)sizeof(TGenericSeq)) + s0) + ((NI) 1)));
  	result0 = ((NimStringDesc*) (LOC5));
  	(*result0).Sup.reserved = s0;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI start_79210_1689653243, NI last0) {
  	NimStringDesc* result0;
  	NI start0;
  	NI len0;
  	result0 = (NimStringDesc*)0;
  	start0 = ((start_79210_1689653243 >= ((NI) 0)) ? start_79210_1689653243 : ((NI) 0));
  	len0 = (NI)((NI)(((last0 <= (NI)((*s0).Sup.len - ((NI) 1))) ? last0 : (NI)((*s0).Sup.len - ((NI) 1))) - start0) + ((NI) 1));
  	{
  		if (!(((NI) 0) < len0)) goto LA3;
  		result0 = rawNewStringNoInit(len0);
  		(*result0).Sup.len = len0;
  		copymem_7485_1689653243(((void*) ((*result0).data)), ((void*) ((&(*s0).data[(start0)- 0]))), ((NI) (len0)));
  		(*result0).data[(len0)- 0] = 0;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		result0 = rawNewString(len0);
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s0, NI start0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	result0 = copyStrLast(s0, start0, (NI)((*s0).Sup.len - ((NI) 1)));
  	return result0;
  }
  
  static N_INLINE(NI, resize_78601_1689653243)(NI old0) {
  	NI result0;
  	result0 = (NI)0;
  	{
  		if (!(old0 <= ((NI) 0))) goto LA3;
  		result0 = ((NI) 4);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		if (!(old0 < ((NI) 65536))) goto LA6;
  		result0 = (NI)(old0 * ((NI) 2));
  	}
  	goto LA1;
  	LA6: ;
  	{
  		result0 = (NI)((NI)(old0 * ((NI) 3)) / ((NI) 2));
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(void*, growobj_63203_1689653243)(void* old0, NI newsize0, Gcheap49818* gch0) {
  	void* result0;
  	Cell47304* ol0;
  	Cell47304* res0;
  	void* LOC1;
  	NI elemsize0;
  	NI oldsize0;
  	result0 = (void*)0;
  	collectct_51807_1689653243(gch0);
  	ol0 = usrtocell_51440_1689653243(old0);
  	LOC1 = (void*)0;
  	LOC1 = rawalloc_36604_1689653243((&(*gch0).region), (NI)(newsize0 + ((NI)sizeof(Cell47304))));
  	res0 = ((Cell47304*) (LOC1));
  	elemsize0 = ((NI) 1);
  	{
  		if (!!(((*(*ol0).typ).kind == ((Tnimkind3403) 28)))) goto LA4;
  		elemsize0 = (*(*(*ol0).typ).base).size;
  	}
  	LA4: ;
  	oldsize0 = (NI)((NI)((*((TGenericSeq*) (old0))).len * elemsize0) + ((NI) 16));
  	copymem_7485_1689653243(((void*) (res0)), ((void*) (ol0)), ((NI) ((NI)(oldsize0 + ((NI)sizeof(Cell47304))))));
  	zeromem_7481_1689653243(((void*) ((NI)((NU64)((NI)((NU64)(((NI) (res0))) + (NU64)(oldsize0))) + (NU64)(((NI)sizeof(Cell47304)))))), ((NI) ((NI)(newsize0 - oldsize0))));
  	{
  		if (!((NU64)((NI)((NU64)((*ol0).refcount) >> (NU64)(((NI) 3)))) <= (NU64)(((NI) 1)))) goto LA8;
  		{
  			NI j0;
  			Cell47304** d0;
  			if (!!(((NI)((*ol0).refcount & ((NI) 4)) == ((NI) 0)))) goto LA12;
  			j0 = (NI)((*gch0).zct.len - ((NI) 1));
  			d0 = (*gch0).zct.d;
  			{
  				while (1) {
  					if (!(((NI) 0) <= j0)) goto LA15;
  					{
  						if (!(d0[(j0)- 0] == ol0)) goto LA18;
  						d0[(j0)- 0] = res0;
  						goto LA14;
  					}
  					LA18: ;
  					j0 -= ((NI) 1);
  				} LA15: ;
  			} LA14: ;
  		}
  		LA12: ;
  		rawdealloc_43017_1689653243((&(*gch0).region), ((void*) (ol0)));
  	}
  	goto LA6;
  	LA8: ;
  	{
  		(*res0).refcount = ((NI) 8);
  		decref_53001_1689653243(ol0);
  	}
  	LA6: ;
  	result0 = celltousr_51422_1689653243(res0);
  	return result0;
  }
  
  N_NIMCALL(void*, growobj_66209_1689653243)(void* old0, NI newsize0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = growobj_63203_1689653243(old0, newsize0, (&gch_49858_1689653243));
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest0, NI addlen0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	{
  		if (!((NI)((*dest0).Sup.len + addlen0) <= (NI)((*dest0).Sup.reserved & ((NI) IL64(9223372036854775807))))) goto LA3;
  		result0 = dest0;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		NI sp0;
  		NI LOC6;
  		void* LOC7;
  		LOC6 = (NI)0;
  		LOC6 = resize_78601_1689653243((NI)((*dest0).Sup.reserved & ((NI) IL64(9223372036854775807))));
  		sp0 = ((LOC6 >= (NI)((*dest0).Sup.len + addlen0)) ? LOC6 : (NI)((*dest0).Sup.len + addlen0));
  		LOC7 = (void*)0;
  		LOC7 = growobj_66209_1689653243(((void*) (dest0)), (NI)((NI)(((NI)sizeof(TGenericSeq)) + sp0) + ((NI) 1)));
  		result0 = ((NimStringDesc*) (LOC7));
  		(*result0).Sup.reserved = sp0;
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s0, NIM_CHAR c0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	result0 = s0;
  	{
  		void* LOC5;
  		if (!((NI)((*result0).Sup.reserved & ((NI) IL64(9223372036854775807))) <= (*result0).Sup.len)) goto LA3;
  		(*result0).Sup.reserved = resize_78601_1689653243((NI)((*result0).Sup.reserved & ((NI) IL64(9223372036854775807))));
  		LOC5 = (void*)0;
  		LOC5 = growobj_66209_1689653243(((void*) (result0)), (NI)((NI)(((NI)sizeof(TGenericSeq)) + (*result0).Sup.reserved) + ((NI) 1)));
  		result0 = ((NimStringDesc*) (LOC5));
  	}
  	LA3: ;
  	(*result0).data[((*result0).Sup.len)- 0] = c0;
  	(*result0).data[((NI)((*result0).Sup.len + ((NI) 1)))- 0] = 0;
  	(*result0).Sup.len += ((NI) 1);
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, mnewString)(NI len0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	result0 = rawNewString(len0);
  	(*result0).Sup.len = len0;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, nimCharToStr)(NIM_CHAR x0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	result0 = mnewString(((NI) 1));
  	result0->data[((NI) 0)] = x0;
  	return result0;
  }
  
  N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq0, NI elemsize0) {
  	TGenericSeq* result0;
  	result0 = (TGenericSeq*)0;
  	result0 = seq0;
  	{
  		void* LOC5;
  		if (!((NI)((*result0).reserved & ((NI) IL64(9223372036854775807))) <= (*result0).len)) goto LA3;
  		(*result0).reserved = resize_78601_1689653243((NI)((*result0).reserved & ((NI) IL64(9223372036854775807))));
  		LOC5 = (void*)0;
  		LOC5 = growobj_66209_1689653243(((void*) (result0)), (NI)((NI)(elemsize0 * (*result0).reserved) + ((NI) 16)));
  		result0 = ((TGenericSeq*) (LOC5));
  	}
  	LA3: ;
  	return result0;
  }
  
  N_NIMCALL(void, genericassignaux_85612_1689653243)(void* dest0, void* src0, TNimNode* n0, NIM_BOOL shallow0) {
  	NI d0;
  	NI s0;
  	d0 = ((NI) (dest0));
  	s0 = ((NI) (src0));
  	switch ((*n0).kind) {
  	case ((Tnimnodekind3405) 1):
  	{
  		genericassignaux_85606_1689653243(((void*) ((NI)((NU64)(d0) + (NU64)((*n0).offset)))), ((void*) ((NI)((NU64)(s0) + (NU64)((*n0).offset)))), (*n0).typ, shallow0);
  	}
  	break;
  	case ((Tnimnodekind3405) 2):
  	{
  		{
  			NI i_85648_1689653243;
  			NI HEX3Atmp_85806_1689653243;
  			NI res_85809_1689653243;
  			i_85648_1689653243 = (NI)0;
  			HEX3Atmp_85806_1689653243 = (NI)0;
  			HEX3Atmp_85806_1689653243 = (NI)((*n0).len - ((NI) 1));
  			res_85809_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_85809_1689653243 <= HEX3Atmp_85806_1689653243)) goto LA5;
  					i_85648_1689653243 = res_85809_1689653243;
  					genericassignaux_85612_1689653243(dest0, src0, (*n0).sons[(i_85648_1689653243)- 0], shallow0);
  					res_85809_1689653243 += ((NI) 1);
  				} LA5: ;
  			}
  		}
  	}
  	break;
  	case ((Tnimnodekind3405) 3):
  	{
  		TNimNode* dd0;
  		TNimNode* m0;
  		dd0 = selectbranch_27207_1689653243(dest0, n0);
  		m0 = selectbranch_27207_1689653243(src0, n0);
  		{
  			NIM_BOOL LOC9;
  			LOC9 = (NIM_BOOL)0;
  			LOC9 = !((m0 == dd0));
  			if (!(LOC9)) goto LA10;
  			LOC9 = !((dd0 == NIM_NIL));
  			LA10: ;
  			if (!LOC9) goto LA11;
  			genericresetaux_85601_1689653243(dest0, dd0);
  		}
  		LA11: ;
  		copymem_7485_1689653243(((void*) ((NI)((NU64)(d0) + (NU64)((*n0).offset)))), ((void*) ((NI)((NU64)(s0) + (NU64)((*n0).offset)))), ((NI) ((*(*n0).typ).size)));
  		{
  			if (!!((m0 == NIM_NIL))) goto LA15;
  			genericassignaux_85612_1689653243(dest0, src0, m0, shallow0);
  		}
  		LA15: ;
  	}
  	break;
  	case ((Tnimnodekind3405) 0):
  	{
  	}
  	break;
  	}
  }
  
  N_NIMCALL(void, genericassignaux_85606_1689653243)(void* dest0, void* src0, TNimType* mt0, NIM_BOOL shallow0) {
  	NI d0;
  	NI s0;
  {	d0 = ((NI) (dest0));
  	s0 = ((NI) (src0));
  	switch ((*mt0).kind) {
  	case ((Tnimkind3403) 28):
  	{
  		void** x0;
  		void* s20;
  		x0 = ((void**) (dest0));
  		s20 = (*((void**) (s0)));
  		{
  			NIM_BOOL LOC4;
  			NIM_BOOL LOC5;
  			LOC4 = (NIM_BOOL)0;
  			LOC5 = (NIM_BOOL)0;
  			LOC5 = (s20 == NIM_NIL);
  			if (LOC5) goto LA6;
  			LOC5 = shallow0;
  			LA6: ;
  			LOC4 = LOC5;
  			if (LOC4) goto LA7;
  			LOC4 = !(((NI)((*((TGenericSeq*) (s20))).reserved & ((NI) (IL64(-9223372036854775807) - IL64(1)))) == ((NI) 0)));
  			LA7: ;
  			if (!LOC4) goto LA8;
  			unsureAsgnRef(x0, s20);
  		}
  		goto LA2;
  		LA8: ;
  		{
  			NimStringDesc* LOC11;
  			LOC11 = (NimStringDesc*)0;
  			LOC11 = copyString(((NimStringDesc*) (s20)));
  			unsureAsgnRef(x0, ((void*) (LOC11)));
  		}
  		LA2: ;
  	}
  	break;
  	case ((Tnimkind3403) 24):
  	{
  		void* s20;
  		TGenericSeq* seq0;
  		void** x0;
  		void* LOC21;
  		NI dst0;
  		s20 = (*((void**) (src0)));
  		seq0 = ((TGenericSeq*) (s20));
  		x0 = ((void**) (dest0));
  		{
  			NIM_BOOL LOC15;
  			NIM_BOOL LOC16;
  			LOC15 = (NIM_BOOL)0;
  			LOC16 = (NIM_BOOL)0;
  			LOC16 = (s20 == NIM_NIL);
  			if (LOC16) goto LA17;
  			LOC16 = shallow0;
  			LA17: ;
  			LOC15 = LOC16;
  			if (LOC15) goto LA18;
  			LOC15 = !(((NI)((*seq0).reserved & ((NI) (IL64(-9223372036854775807) - IL64(1)))) == ((NI) 0)));
  			LA18: ;
  			if (!LOC15) goto LA19;
  			unsureAsgnRef(x0, s20);
  			goto BeforeRet;
  		}
  		LA19: ;
  		LOC21 = (void*)0;
  		LOC21 = newSeq(mt0, (*seq0).len);
  		unsureAsgnRef(x0, LOC21);
  		dst0 = ((NI) ((*((void**) (dest0)))));
  		{
  			NI i_86211_1689653243;
  			NI HEX3Atmp_86341_1689653243;
  			NI res_86344_1689653243;
  			i_86211_1689653243 = (NI)0;
  			HEX3Atmp_86341_1689653243 = (NI)0;
  			HEX3Atmp_86341_1689653243 = (NI)((*seq0).len - ((NI) 1));
  			res_86344_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_86344_1689653243 <= HEX3Atmp_86341_1689653243)) goto LA24;
  					i_86211_1689653243 = res_86344_1689653243;
  					genericassignaux_85606_1689653243(((void*) ((NI)((NU64)((NI)((NU64)(dst0) + (NU64)((NI)((NU64)(i_86211_1689653243) * (NU64)((*(*mt0).base).size))))) + (NU64)(((NI) 16))))), ((void*) ((NI)((NU64)((NI)((NU64)(((NI) (s20))) + (NU64)((NI)((NU64)(i_86211_1689653243) * (NU64)((*(*mt0).base).size))))) + (NU64)(((NI) 16))))), (*mt0).base, shallow0);
  					res_86344_1689653243 += ((NI) 1);
  				} LA24: ;
  			}
  		}
  	}
  	break;
  	case ((Tnimkind3403) 17):
  	{
  		TNimType** pint0;
  		{
  			if (!!(((*mt0).base == NIM_NIL))) goto LA28;
  			genericassignaux_85606_1689653243(dest0, src0, (*mt0).base, shallow0);
  		}
  		LA28: ;
  		genericassignaux_85612_1689653243(dest0, src0, (*mt0).node, shallow0);
  		pint0 = ((TNimType**) (dest0));
  		(*pint0) = mt0;
  	}
  	break;
  	case ((Tnimkind3403) 18):
  	{
  		genericassignaux_85612_1689653243(dest0, src0, (*mt0).node, shallow0);
  	}
  	break;
  	case ((Tnimkind3403) 16):
  	case ((Tnimkind3403) 4):
  	{
  		{
  			NI i_86289_1689653243;
  			NI HEX3Atmp_86352_1689653243;
  			NI res_86355_1689653243;
  			i_86289_1689653243 = (NI)0;
  			HEX3Atmp_86352_1689653243 = (NI)0;
  			HEX3Atmp_86352_1689653243 = (NI)((NI)((*mt0).size / (*(*mt0).base).size) - ((NI) 1));
  			res_86355_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_86355_1689653243 <= HEX3Atmp_86352_1689653243)) goto LA34;
  					i_86289_1689653243 = res_86355_1689653243;
  					genericassignaux_85606_1689653243(((void*) ((NI)((NU64)(d0) + (NU64)((NI)((NU64)(i_86289_1689653243) * (NU64)((*(*mt0).base).size)))))), ((void*) ((NI)((NU64)(s0) + (NU64)((NI)((NU64)(i_86289_1689653243) * (NU64)((*(*mt0).base).size)))))), (*mt0).base, shallow0);
  					res_86355_1689653243 += ((NI) 1);
  				} LA34: ;
  			}
  		}
  	}
  	break;
  	case ((Tnimkind3403) 22):
  	{
  		unsureAsgnRef(((void**) (dest0)), (*((void**) (s0))));
  	}
  	break;
  	default:
  	{
  		copymem_7485_1689653243(dest0, src0, ((NI) ((*mt0).size)));
  	}
  	break;
  	}
  	}BeforeRet: ;
  }
  
  N_NIMCALL(void, genericAssign)(void* dest0, void* src0, TNimType* mt0) {
  	genericassignaux_85606_1689653243(dest0, src0, mt0, NIM_FALSE);
  }
  
  N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s0, NI newlen0) {
  	NimStringDesc* result0;
  	NI n0;
  	result0 = (NimStringDesc*)0;
  	n0 = ((newlen0 >= ((NI) 0)) ? newlen0 : ((NI) 0));
  	{
  		if (!(n0 <= (NI)((*s0).Sup.reserved & ((NI) IL64(9223372036854775807))))) goto LA3;
  		result0 = s0;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		result0 = resizeString(s0, n0);
  	}
  	LA1: ;
  	(*result0).Sup.len = n0;
  	(*result0).data[(n0)- 0] = 0;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x0) {
  	NimStringDesc* result0;
  	NI i0;
  	NI y0;
  	result0 = (NimStringDesc*)0;
  	result0 = mnewString(((NI) 32));
  	i0 = ((NI) 0);
  	y0 = x0;
  	{
  		while (1) {
  			NI d0;
  			d0 = (NI)(y0 / ((NI) 10));
  			result0->data[i0] = ((NIM_CHAR) (((NI) ((NI)(((NI)(y0 - (NI)(d0 * ((NI) 10))) > 0? ((NI)(y0 - (NI)(d0 * ((NI) 10)))) : -((NI)(y0 - (NI)(d0 * ((NI) 10))))) + ((NI) 48))))));
  			i0 += ((NI) 1);
  			y0 = d0;
  			{
  				if (!(y0 == ((NI) 0))) goto LA5;
  				goto LA1;
  			}
  			LA5: ;
  		}
  	} LA1: ;
  	{
  		if (!(x0 < ((NI) 0))) goto LA9;
  		result0->data[i0] = 45;
  		i0 += ((NI) 1);
  	}
  	LA9: ;
  	result0 = setLengthStr(result0, ((NI) (i0)));
  	{
  		NI j_80139_1689653243;
  		NI HEX3Atmp_80153_1689653243;
  		NI res_80156_1689653243;
  		j_80139_1689653243 = (NI)0;
  		HEX3Atmp_80153_1689653243 = (NI)0;
  		HEX3Atmp_80153_1689653243 = (NI)((NI)(i0 / ((NI) 2)) - ((NI) 1));
  		res_80156_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				NIM_CHAR LOC14;
  				if (!(res_80156_1689653243 <= HEX3Atmp_80153_1689653243)) goto LA13;
  				j_80139_1689653243 = res_80156_1689653243;
  				LOC14 = (NIM_CHAR)0;
  				LOC14 = result0->data[j_80139_1689653243];
  				result0->data[j_80139_1689653243] = result0->data[(NI)((NI)(i0 - j_80139_1689653243) - ((NI) 1))];
  				result0->data[(NI)((NI)(i0 - j_80139_1689653243) - ((NI) 1))] = LOC14;
  				res_80156_1689653243 += ((NI) 1);
  			} LA13: ;
  		}
  	}
  	return result0;
  }
  
  N_NIMCALL(NI, writebuffer_14978_1689653243)(FILE* f0, void* buffer0, NI len0) {
  	NI result0;
  	int LOC1;
  	result0 = (NI)0;
  	LOC1 = (int)0;
  	LOC1 = fwrite(buffer0, ((NI) 1), ((size_t) (len0)), f0);
  	result0 = ((NI) (LOC1));
  	return result0;
  }
  N_NIMCALL(void, T1689653243_13)(void* p, NI op) {
  	Ioerror3628* a;
  	a = (Ioerror3628*)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, sysfatal_81065_1689653243)(NimStringDesc* message0) {
  	Ioerror3628* e0;
  	NimStringDesc* LOC1;
  	e0 = (Ioerror3628*)0;
  	e0 = (Ioerror3628*) newObj((&NTI81072), sizeof(Ioerror3628));
  	(*e0).Sup.Sup.Sup.m_type = (&NTI3628);
  	LOC1 = (NimStringDesc*)0;
  	LOC1 = (*e0).Sup.Sup.message; (*e0).Sup.Sup.message = copyStringRC1(message0);
  	if (LOC1) nimGCunrefNoCycle(LOC1);
  	raiseException((Exception*)e0, "IOError");
  }
  
  N_NOINLINE(void, raiseeio_81060_1689653243)(NimStringDesc* msg0) {
  	sysfatal_81065_1689653243(msg0);
  }
  
  N_NIMCALL(void, write_14891_1689653243)(FILE* f0, NimStringDesc* s0) {
  	{
  		NI LOC3;
  		LOC3 = (NI)0;
  		LOC3 = writebuffer_14978_1689653243(f0, ((void*) (s0->data)), ((NI) ((s0 ? s0->Sup.len : 0))));
  		if (!!((LOC3 == (s0 ? s0->Sup.len : 0)))) goto LA4;
  		raiseeio_81060_1689653243(((NimStringDesc*) &T1689653243_14));
  	}
  	LA4: ;
  }
  
  N_NIMCALL(void, flushfile_14862_1689653243)(FILE* f0) {
  	int LOC1;
  	LOC1 = (int)0;
  	LOC1 = fflush(f0);
  }
  
  N_NIMCALL(int, getfilehandle_14990_1689653243)(FILE* f0) {
  	int result0;
  	result0 = (int)0;
  	result0 = fileno(f0);
  	return result0;
  }
  
  N_NIMCALL(void, close_14853_1689653243)(FILE* f0) {
  	int LOC1;
  	LOC1 = (int)0;
  	LOC1 = fclose(f0);
  }
  
  N_NIMCALL(NIM_BOOL, open_14803_1689653243)(FILE** f0, NimStringDesc* filename0, Filemode13009 mode0, NI bufsize0) {
  	NIM_BOOL result0;
  	void* p0;
  {	result0 = (NIM_BOOL)0;
  	p0 = fopen(filename0->data, Formatopen_83810_1689653243[(mode0)- 0]->data);
  	{
  		FILE* f20;
  		struct stat res0;
  		if (!!((p0 == NIM_NIL))) goto LA3;
  		f20 = ((FILE*) (p0));
  		memset((void*)(&res0), 0, sizeof(res0));
  		{
  			NIM_BOOL LOC7;
  			int LOC8;
  			int LOC9;
  			LOC7 = (NIM_BOOL)0;
  			LOC8 = (int)0;
  			LOC8 = getfilehandle_14990_1689653243(f20);
  			LOC9 = (int)0;
  			LOC9 = fstat(LOC8, (&res0));
  			LOC7 = (((NI32) 0) <= LOC9);
  			if (!(LOC7)) goto LA10;
  			LOC7 = S_ISDIR(res0.st_mode);
  			LA10: ;
  			if (!LOC7) goto LA11;
  			close_14853_1689653243(f20);
  			result0 = NIM_FALSE;
  			goto BeforeRet;
  		}
  		LA11: ;
  		result0 = NIM_TRUE;
  		(*f0) = ((FILE*) (p0));
  		{
  			NIM_BOOL LOC15;
  			int LOC19;
  			LOC15 = (NIM_BOOL)0;
  			LOC15 = (((NI) 0) < bufsize0);
  			if (!(LOC15)) goto LA16;
  			LOC15 = (bufsize0 <= ((NI) 2147483647));
  			LA16: ;
  			if (!LOC15) goto LA17;
  			LOC19 = (int)0;
  			LOC19 = setvbuf((*f0), NIM_NIL, _IOFBF, ((size_t) (((int) (bufsize0)))));
  		}
  		goto LA13;
  		LA17: ;
  		{
  			int LOC23;
  			if (!(bufsize0 == ((NI) 0))) goto LA21;
  			LOC23 = (int)0;
  			LOC23 = setvbuf((*f0), NIM_NIL, _IONBF, ((NI) 0));
  		}
  		goto LA13;
  		LA21: ;
  		LA13: ;
  	}
  	LA3: ;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, stacktraceavailable_19672_1689653243)(void) {
  	NIM_BOOL result0;
  	result0 = (NIM_BOOL)0;
  	result0 = NIM_FALSE;
  	return result0;
  }
  
  N_NIMCALL(void, writestacktrace_18207_1689653243)(void) {
  	showerrormessage_18806_1689653243("No stack traceback available\012");
  }
  N_NIMCALL(void, T1689653243_20)(void* p, NI op) {
  	TNimObject* a;
  	a = (TNimObject*)p;
  }
  
  N_NIMCALL(void, nimGCunref)(void* p0) {
  	Cell47304* cell0;
  	NI L0;
  	NI i0;
  	Cell47304** d0;
  	Cell47304* LOC7;
  	cell0 = usrtocell_51440_1689653243(p0);
  	L0 = (NI)(gch_49858_1689653243.additionalroots.len - ((NI) 1));
  	i0 = L0;
  	d0 = gch_49858_1689653243.additionalroots.d;
  	{
  		while (1) {
  			if (!(((NI) 0) <= i0)) goto LA2;
  			{
  				if (!(d0[(i0)- 0] == cell0)) goto LA5;
  				d0[(i0)- 0] = d0[(L0)- 0];
  				gch_49858_1689653243.additionalroots.len -= ((NI) 1);
  				goto LA1;
  			}
  			LA5: ;
  			i0 -= ((NI) 1);
  		} LA2: ;
  	} LA1: ;
  	LOC7 = (Cell47304*)0;
  	LOC7 = usrtocell_51440_1689653243(p0);
  	decref_53001_1689653243(LOC7);
  }
  
  N_NIMCALL(TNimType*, extGetCellType)(void* c0) {
  	TNimType* result0;
  	Cell47304* LOC1;
  	result0 = (TNimType*)0;
  	LOC1 = (Cell47304*)0;
  	LOC1 = usrtocell_51440_1689653243(c0);
  	result0 = (*LOC1).typ;
  	return result0;
  }
  
  N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq0, NI elemsize0, NI newlen0) {
  	TGenericSeq* result0;
  	result0 = (TGenericSeq*)0;
  	result0 = seq0;
  	{
  		NI LOC5;
  		void* LOC6;
  		if (!((NI)((*result0).reserved & ((NI) IL64(9223372036854775807))) < newlen0)) goto LA3;
  		LOC5 = (NI)0;
  		LOC5 = resize_78601_1689653243((NI)((*result0).reserved & ((NI) IL64(9223372036854775807))));
  		(*result0).reserved = ((LOC5 >= newlen0) ? LOC5 : newlen0);
  		LOC6 = (void*)0;
  		LOC6 = growobj_66209_1689653243(((void*) (result0)), (NI)((NI)(elemsize0 * (*result0).reserved) + ((NI) 16)));
  		result0 = ((TGenericSeq*) (LOC6));
  	}
  	goto LA1;
  	LA3: ;
  	{
  		if (!(newlen0 < (*result0).len)) goto LA8;
  		{
  			NI i_80010_1689653243;
  			NI HEX3Atmp_80087_1689653243;
  			NI res_80090_1689653243;
  			i_80010_1689653243 = (NI)0;
  			HEX3Atmp_80087_1689653243 = (NI)0;
  			HEX3Atmp_80087_1689653243 = (NI)((*result0).len - ((NI) 1));
  			res_80090_1689653243 = newlen0;
  			{
  				while (1) {
  					TNimType* LOC13;
  					if (!(res_80090_1689653243 <= HEX3Atmp_80087_1689653243)) goto LA12;
  					i_80010_1689653243 = res_80090_1689653243;
  					LOC13 = (TNimType*)0;
  					LOC13 = extGetCellType(((void*) (result0)));
  					forallchildrenaux_51822_1689653243(((void*) ((NI)((NU64)((NI)((NU64)(((NI) (result0))) + (NU64)(((NI) 16)))) + (NU64)((NI)((NU64)(i_80010_1689653243) * (NU64)(elemsize0)))))), (*LOC13).base, ((Walkop49810) 2));
  					res_80090_1689653243 += ((NI) 1);
  				} LA12: ;
  			}
  		}
  		zeromem_7481_1689653243(((void*) ((NI)((NU64)((NI)((NU64)(((NI) (result0))) + (NU64)(((NI) 16)))) + (NU64)((NI)((NU64)(newlen0) * (NU64)(elemsize0)))))), ((NI) ((NI)((NU64)((NI)((NU64)((*result0).len) - (NU64)(newlen0))) * (NU64)(elemsize0)))));
  	}
  	goto LA1;
  	LA8: ;
  	LA1: ;
  	(*result0).len = newlen0;
  	return result0;
  }
  
  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;
  }
  
  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 (!((NU64)((*c0).refcount) < (NU64)(((NI) 8)))) goto LA11;
  			rtladdzct_52601_1689653243(c0);
  		}
  		LA11: ;
  	}
  	LA7: ;
  	(*dest0) = src0;
  }
  
  static N_INLINE(void, sysfatal_14826_1689653243)(NimStringDesc* message0, NimStringDesc* arg0) {
  	Ioerror3628* e0;
  	NimStringDesc* LOC1;
  	e0 = (Ioerror3628*)0;
  	e0 = (Ioerror3628*) newObj((&NTI81072), sizeof(Ioerror3628));
  	(*e0).Sup.Sup.Sup.m_type = (&NTI3628);
  	LOC1 = (NimStringDesc*)0;
  	LOC1 = rawNewString(message0->Sup.len + arg0->Sup.len + 0);
  appendString(LOC1, message0);
  appendString(LOC1, arg0);
  	asgnRefNoCycle((void**) (&(*e0).Sup.Sup.message), LOC1);
  	raiseException((Exception*)e0, "IOError");
  }
  
  N_NIMCALL(FILE*, open_14817_1689653243)(NimStringDesc* filename0, Filemode13009 mode0, NI bufsize0) {
  	FILE* result0;
  	result0 = (FILE*)0;
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = open_14803_1689653243(&result0, filename0, mode0, bufsize0);
  		if (!!(LOC3)) goto LA4;
  		sysfatal_14826_1689653243(((NimStringDesc*) &T1689653243_21), filename0);
  	}
  	LA4: ;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, readline_14915_1689653243)(FILE* f0, NimStringDesc** line0) {
  	NIM_BOOL result0;
  	NI pos0;
  	int space0;
  {	result0 = (NIM_BOOL)0;
  	pos0 = ((NI) 0);
  	space0 = ((int) ((NI)((*((TGenericSeq*) ((*line0)))).reserved & ((NI) IL64(9223372036854775807)))));
  	(*line0) = setLengthStr((*line0), ((NI) (space0)));
  	{
  		while (1) {
  			void* LOC3;
  			void* m0;
  			LOC3 = (void*)0;
  			LOC3 = memset(((void*) ((&(*line0)->data[pos0]))), ((int) 10), ((size_t) (space0)));
  			{
  				NCSTRING LOC6;
  				LOC6 = (NCSTRING)0;
  				LOC6 = fgets(((NCSTRING) ((&(*line0)->data[pos0]))), space0, f0);
  				if (!(((void*) (LOC6)) == NIM_NIL)) goto LA7;
  				(*line0) = setLengthStr((*line0), ((NI) 0));
  				result0 = NIM_FALSE;
  				goto BeforeRet;
  			}
  			LA7: ;
  			m0 = memchr(((void*) ((&(*line0)->data[pos0]))), ((int) 10), ((size_t) (space0)));
  			{
  				NI last0;
  				if (!!((m0 == NIM_NIL))) goto LA11;
  				last0 = (NI)(((NI) (m0)) - ((NI) ((&(*line0)->data[((NI) 0)]))));
  				{
  					NIM_BOOL LOC15;
  					LOC15 = (NIM_BOOL)0;
  					LOC15 = (((NI) 0) < last0);
  					if (!(LOC15)) goto LA16;
  					LOC15 = ((NU8)((*line0)->data[(NI)(last0 - ((NI) 1))]) == (NU8)(13));
  					LA16: ;
  					if (!LOC15) goto LA17;
  					(*line0) = setLengthStr((*line0), ((NI) ((NI)(last0 - ((NI) 1)))));
  					result0 = NIM_TRUE;
  					goto BeforeRet;
  				}
  				goto LA13;
  				LA17: ;
  				{
  					NIM_BOOL LOC20;
  					LOC20 = (NIM_BOOL)0;
  					LOC20 = (((NI) 0) < last0);
  					if (!(LOC20)) goto LA21;
  					LOC20 = ((NU8)((*line0)->data[(NI)(last0 - ((NI) 1))]) == (NU8)(0));
  					LA21: ;
  					if (!LOC20) goto LA22;
  					{
  						NIM_BOOL LOC26;
  						LOC26 = (NIM_BOOL)0;
  						LOC26 = (last0 < (NI)((NI)(pos0 + ((NI) (space0))) - ((NI) 1)));
  						if (!(LOC26)) goto LA27;
  						LOC26 = !(((NU8)((*line0)->data[(NI)(last0 + ((NI) 1))]) == (NU8)(0)));
  						LA27: ;
  						if (!LOC26) goto LA28;
  						last0 -= ((NI) 1);
  					}
  					LA28: ;
  				}
  				goto LA13;
  				LA22: ;
  				LA13: ;
  				(*line0) = setLengthStr((*line0), ((NI) (last0)));
  				result0 = NIM_TRUE;
  				goto BeforeRet;
  			}
  			goto LA9;
  			LA11: ;
  			{
  				space0 -= ((NI) 1);
  			}
  			LA9: ;
  			pos0 += ((NI) (space0));
  			space0 = ((int) 128);
  			(*line0) = setLengthStr((*line0), ((NI) ((NI)(pos0 + ((NI) (space0))))));
  		}
  	}
  	}BeforeRet: ;
  	return result0;
  }
  N_NIMCALL(void, T1689653243_22)(void* p, NI op) {
  	Reraiseerror3660* a;
  	a = (Reraiseerror3660*)p;
  	nimGCvisit((void*)(*a).Sup.parent, op);
  	nimGCvisit((void*)(*a).Sup.message, op);
  	nimGCvisit((void*)(*a).Sup.trace, op);
  }
  
  static N_INLINE(void, sysfatal_20617_1689653243)(NimStringDesc* message0) {
  	Reraiseerror3660* e0;
  	NimStringDesc* LOC1;
  	e0 = (Reraiseerror3660*)0;
  	e0 = (Reraiseerror3660*) newObj((&NTI20624), sizeof(Reraiseerror3660));
  	(*e0).Sup.Sup.m_type = (&NTI3660);
  	LOC1 = (NimStringDesc*)0;
  	LOC1 = (*e0).Sup.message; (*e0).Sup.message = copyStringRC1(message0);
  	if (LOC1) nimGCunrefNoCycle(LOC1);
  	raiseException((Exception*)e0, "ReraiseError");
  }
  
  N_NIMCALL(void, reraiseException)(void) {
  	{
  		if (!(currexception_18839_1689653243 == NIM_NIL)) goto LA3;
  		sysfatal_20617_1689653243(((NimStringDesc*) &T1689653243_23));
  	}
  	goto LA1;
  	LA3: ;
  	{
  		raiseexceptionaux_20001_1689653243(currexception_18839_1689653243);
  	}
  	LA1: ;
  }
  
  N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj0, TNimType* subclass0) {
  	NIM_BOOL result0;
  	TNimType* x0;
  {	result0 = (NIM_BOOL)0;
  	x0 = obj0;
  	{
  		if (!(x0 == subclass0)) goto LA3;
  		result0 = NIM_TRUE;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		while (1) {
  			if (!!((x0 == subclass0))) goto LA6;
  			{
  				if (!(x0 == NIM_NIL)) goto LA9;
  				result0 = NIM_FALSE;
  				goto BeforeRet;
  			}
  			LA9: ;
  			x0 = (*x0).base;
  		} LA6: ;
  	}
  	result0 = NIM_TRUE;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, HEX24_196185_1689653243)(TY203018 x0) {
  	NimStringDesc* result0;
  	NIM_BOOL firstelement0;
  	NimStringDesc* LOC14;
  	result0 = (NimStringDesc*)0;
  	result0 = copyString(((NimStringDesc*) &T1689653243_24));
  	firstelement0 = NIM_TRUE;
  	{
  		if (!!(firstelement0)) goto LA3;
  		result0 = resizeString(result0, 2);
  appendString(result0, ((NimStringDesc*) &T1689653243_25));
  	}
  	LA3: ;
  	result0 = resizeString(result0, 8);
  appendString(result0, ((NimStringDesc*) &T1689653243_26));
  	result0 = resizeString(result0, 2);
  appendString(result0, ((NimStringDesc*) &T1689653243_27));
  	{
  		if (!x0.Field0 == 0) goto LA7;
  		result0 = resizeString(result0, 3);
  appendString(result0, ((NimStringDesc*) &T1689653243_28));
  	}
  	goto LA5;
  	LA7: ;
  	{
  		result0 = resizeString(result0, x0.Field0->Sup.len + 0);
  appendString(result0, x0.Field0);
  	}
  	LA5: ;
  	firstelement0 = NIM_FALSE;
  	{
  		if (!!(firstelement0)) goto LA12;
  		result0 = resizeString(result0, 2);
  appendString(result0, ((NimStringDesc*) &T1689653243_25));
  	}
  	LA12: ;
  	result0 = resizeString(result0, 4);
  appendString(result0, ((NimStringDesc*) &T1689653243_29));
  	result0 = resizeString(result0, 2);
  appendString(result0, ((NimStringDesc*) &T1689653243_27));
  	LOC14 = (NimStringDesc*)0;
  	LOC14 = nimIntToStr(x0.Field1);
  	result0 = resizeString(result0, LOC14->Sup.len + 0);
  appendString(result0, LOC14);
  	firstelement0 = NIM_FALSE;
  	result0 = resizeString(result0, 1);
  appendString(result0, ((NimStringDesc*) &T1689653243_30));
  	return result0;
  }
  
  N_NIMCALL(NI, nimParseBiggestFloat)(NimStringDesc* s0, NF* number0, NI start0) {
  	NI result0;
  	NI i0;
  	NF sign0;
  	NI kdigits0;
  	NI fdigits0;
  	NI exponent0;
  	NU64 integer0;
  	NU64 fraction0;
  	NI fracexponent0;
  	NI expsign0;
  	NI firstdigit0;
  	NIM_BOOL hassign0;
  	NI realexponent0;
  	NIM_BOOL expnegative0;
  	NI absexponent0;
  	TY80614 t0;
  	NI ti0;
  	NI maxlen0;
  {	result0 = (NI)0;
  	i0 = start0;
  	sign0 = 1.0000000000000000e+00;
  	kdigits0 = ((NI) 0);
  	fdigits0 = ((NI) 0);
  	exponent0 = (NI)0;
  	integer0 = (NU64)0;
  	fraction0 = (NU64)0;
  	fracexponent0 = ((NI) 0);
  	expsign0 = ((NI) 1);
  	firstdigit0 = ((NI) -1);
  	hassign0 = NIM_FALSE;
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = ((NU8)(s0->data[i0]) == (NU8)(43));
  		if (LOC3) goto LA4;
  		LOC3 = ((NU8)(s0->data[i0]) == (NU8)(45));
  		LA4: ;
  		if (!LOC3) goto LA5;
  		hassign0 = NIM_TRUE;
  		{
  			if (!((NU8)(s0->data[i0]) == (NU8)(45))) goto LA9;
  			sign0 = -1.0000000000000000e+00;
  		}
  		LA9: ;
  		i0 += ((NI) 1);
  	}
  	LA5: ;
  	{
  		NIM_BOOL LOC13;
  		LOC13 = (NIM_BOOL)0;
  		LOC13 = ((NU8)(s0->data[i0]) == (NU8)(78));
  		if (LOC13) goto LA14;
  		LOC13 = ((NU8)(s0->data[i0]) == (NU8)(110));
  		LA14: ;
  		if (!LOC13) goto LA15;
  		{
  			NIM_BOOL LOC19;
  			LOC19 = (NIM_BOOL)0;
  			LOC19 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(65));
  			if (LOC19) goto LA20;
  			LOC19 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(97));
  			LA20: ;
  			if (!LOC19) goto LA21;
  			{
  				NIM_BOOL LOC25;
  				LOC25 = (NIM_BOOL)0;
  				LOC25 = ((NU8)(s0->data[(NI)(i0 + ((NI) 2))]) == (NU8)(78));
  				if (LOC25) goto LA26;
  				LOC25 = ((NU8)(s0->data[(NI)(i0 + ((NI) 2))]) == (NU8)(110));
  				LA26: ;
  				if (!LOC25) goto LA27;
  				{
  					if (!!((((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(97)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(122)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(65)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(90)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(48)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(57)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) == ((NU8)(95))))) goto LA31;
  					(*number0) = NAN;
  					result0 = (NI)((NI)(i0 + ((NI) 3)) - start0);
  					goto BeforeRet;
  				}
  				LA31: ;
  			}
  			LA27: ;
  		}
  		LA21: ;
  		result0 = ((NI) 0);
  		goto BeforeRet;
  	}
  	LA15: ;
  	{
  		NIM_BOOL LOC35;
  		LOC35 = (NIM_BOOL)0;
  		LOC35 = ((NU8)(s0->data[i0]) == (NU8)(73));
  		if (LOC35) goto LA36;
  		LOC35 = ((NU8)(s0->data[i0]) == (NU8)(105));
  		LA36: ;
  		if (!LOC35) goto LA37;
  		{
  			NIM_BOOL LOC41;
  			LOC41 = (NIM_BOOL)0;
  			LOC41 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(78));
  			if (LOC41) goto LA42;
  			LOC41 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(110));
  			LA42: ;
  			if (!LOC41) goto LA43;
  			{
  				NIM_BOOL LOC47;
  				LOC47 = (NIM_BOOL)0;
  				LOC47 = ((NU8)(s0->data[(NI)(i0 + ((NI) 2))]) == (NU8)(70));
  				if (LOC47) goto LA48;
  				LOC47 = ((NU8)(s0->data[(NI)(i0 + ((NI) 2))]) == (NU8)(102));
  				LA48: ;
  				if (!LOC47) goto LA49;
  				{
  					if (!!((((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(97)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(122)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(65)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(90)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(48)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(57)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) == ((NU8)(95))))) goto LA53;
  					(*number0) = ((NF)(INF) * (NF)(sign0));
  					result0 = (NI)((NI)(i0 + ((NI) 3)) - start0);
  					goto BeforeRet;
  				}
  				LA53: ;
  			}
  			LA49: ;
  		}
  		LA43: ;
  		result0 = ((NI) 0);
  		goto BeforeRet;
  	}
  	LA37: ;
  	{
  		if (!(((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)))) goto LA57;
  		firstdigit0 = ((NI) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48))));
  	}
  	LA57: ;
  	{
  		while (1) {
  			if (!(((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)))) goto LA60;
  			kdigits0 += ((NI) 1);
  			integer0 = (NU64)((NU64)((NU64)((NU64)(integer0) * (NU64)(10ULL))) + (NU64)(((NU64) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48))))));
  			i0 += ((NI) 1);
  			{
  				while (1) {
  					if (!((NU8)(s0->data[i0]) == (NU8)(95))) goto LA62;
  					i0 += ((NI) 1);
  				} LA62: ;
  			}
  		} LA60: ;
  	}
  	{
  		if (!((NU8)(s0->data[i0]) == (NU8)(46))) goto LA65;
  		i0 += ((NI) 1);
  		{
  			if (!(kdigits0 <= ((NI) 0))) goto LA69;
  			{
  				while (1) {
  					if (!((NU8)(s0->data[i0]) == (NU8)(48))) goto LA72;
  					fracexponent0 += ((NI) 1);
  					i0 += ((NI) 1);
  					{
  						while (1) {
  							if (!((NU8)(s0->data[i0]) == (NU8)(95))) goto LA74;
  							i0 += ((NI) 1);
  						} LA74: ;
  					}
  				} LA72: ;
  			}
  		}
  		LA69: ;
  		{
  			NIM_BOOL LOC77;
  			LOC77 = (NIM_BOOL)0;
  			LOC77 = (firstdigit0 == ((NI) -1));
  			if (!(LOC77)) goto LA78;
  			LOC77 = (((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)));
  			LA78: ;
  			if (!LOC77) goto LA79;
  			firstdigit0 = ((NI) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48))));
  		}
  		LA79: ;
  		{
  			while (1) {
  				if (!(((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)))) goto LA82;
  				fdigits0 += ((NI) 1);
  				fracexponent0 += ((NI) 1);
  				integer0 = (NU64)((NU64)((NU64)((NU64)(integer0) * (NU64)(10ULL))) + (NU64)(((NU64) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48))))));
  				i0 += ((NI) 1);
  				{
  					while (1) {
  						if (!((NU8)(s0->data[i0]) == (NU8)(95))) goto LA84;
  						i0 += ((NI) 1);
  					} LA84: ;
  				}
  			} LA82: ;
  		}
  	}
  	LA65: ;
  	{
  		NIM_BOOL LOC87;
  		NIM_BOOL LOC89;
  		NIM_BOOL LOC91;
  		LOC87 = (NIM_BOOL)0;
  		LOC87 = ((NI)(kdigits0 + fdigits0) <= ((NI) 0));
  		if (!(LOC87)) goto LA88;
  		LOC89 = (NIM_BOOL)0;
  		LOC89 = (i0 == start0);
  		if (LOC89) goto LA90;
  		LOC91 = (NIM_BOOL)0;
  		LOC91 = (i0 == (NI)(start0 + ((NI) 1)));
  		if (!(LOC91)) goto LA92;
  		LOC91 = hassign0;
  		LA92: ;
  		LOC89 = LOC91;
  		LA90: ;
  		LOC87 = LOC89;
  		LA88: ;
  		if (!LOC87) goto LA93;
  		result0 = ((NI) 0);
  		goto BeforeRet;
  	}
  	LA93: ;
  	{
  		if (!(((NU8)(s0->data[i0])) == ((NU8)(101)) || ((NU8)(s0->data[i0])) == ((NU8)(69)))) goto LA97;
  		i0 += ((NI) 1);
  		{
  			NIM_BOOL LOC101;
  			LOC101 = (NIM_BOOL)0;
  			LOC101 = ((NU8)(s0->data[i0]) == (NU8)(43));
  			if (LOC101) goto LA102;
  			LOC101 = ((NU8)(s0->data[i0]) == (NU8)(45));
  			LA102: ;
  			if (!LOC101) goto LA103;
  			{
  				if (!((NU8)(s0->data[i0]) == (NU8)(45))) goto LA107;
  				expsign0 = ((NI) -1);
  			}
  			LA107: ;
  			i0 += ((NI) 1);
  		}
  		LA103: ;
  		{
  			if (!!((((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57))))) goto LA111;
  			result0 = ((NI) 0);
  			goto BeforeRet;
  		}
  		LA111: ;
  		{
  			while (1) {
  				if (!(((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)))) goto LA114;
  				exponent0 = (NI)((NI)(exponent0 * ((NI) 10)) + ((NI) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48)))));
  				i0 += ((NI) 1);
  				{
  					while (1) {
  						if (!((NU8)(s0->data[i0]) == (NU8)(95))) goto LA116;
  						i0 += ((NI) 1);
  					} LA116: ;
  				}
  			} LA114: ;
  		}
  	}
  	LA97: ;
  	realexponent0 = (NI)((NI)(expsign0 * exponent0) - fracexponent0);
  	expnegative0 = (realexponent0 < ((NI) 0));
  	absexponent0 = (realexponent0 > 0? (realexponent0) : -(realexponent0));
  	{
  		if (!(((NI) 999) < absexponent0)) goto LA119;
  		{
  			if (!expnegative0) goto LA123;
  			(*number0) = ((NF)(0.0) * (NF)(sign0));
  		}
  		goto LA121;
  		LA123: ;
  		{
  			(*number0) = ((NF)(INF) * (NF)(sign0));
  		}
  		LA121: ;
  		result0 = (NI)(i0 - start0);
  		goto BeforeRet;
  	}
  	LA119: ;
  	{
  		NIM_BOOL LOC128;
  		NI slop0;
  		LOC128 = (NIM_BOOL)0;
  		LOC128 = ((NI)(kdigits0 + fdigits0) <= ((NI) 16));
  		if (!(LOC128)) goto LA129;
  		LOC128 = (firstdigit0 <= ((NI) 8));
  		LA129: ;
  		if (!LOC128) goto LA130;
  		{
  			if (!(absexponent0 <= ((NI) 22))) goto LA134;
  			{
  				if (!expnegative0) goto LA138;
  				(*number0) = ((NF)(((NF)(sign0) * (NF)(((NF) (integer0))))) / (NF)(powtens_80218_1689653243[(absexponent0)- 0]));
  			}
  			goto LA136;
  			LA138: ;
  			{
  				(*number0) = ((NF)(((NF)(sign0) * (NF)(((NF) (integer0))))) * (NF)(powtens_80218_1689653243[(absexponent0)- 0]));
  			}
  			LA136: ;
  			result0 = (NI)(i0 - start0);
  			goto BeforeRet;
  		}
  		LA134: ;
  		slop0 = (NI)((NI)(((NI) 15) - kdigits0) - fdigits0);
  		{
  			NIM_BOOL LOC143;
  			LOC143 = (NIM_BOOL)0;
  			LOC143 = (absexponent0 <= (NI)(((NI) 22) + slop0));
  			if (!(LOC143)) goto LA144;
  			LOC143 = !(expnegative0);
  			LA144: ;
  			if (!LOC143) goto LA145;
  			(*number0) = ((NF)(((NF)(((NF)(sign0) * (NF)(((NF) (integer0))))) * (NF)(powtens_80218_1689653243[(slop0)- 0]))) * (NF)(powtens_80218_1689653243[((NI)(absexponent0 - slop0))- 0]));
  			result0 = (NI)(i0 - start0);
  			goto BeforeRet;
  		}
  		LA145: ;
  	}
  	LA130: ;
  	memset((void*)t0, 0, sizeof(t0));
  	ti0 = ((NI) 0);
  	maxlen0 = ((NI) 494);
  	result0 = (NI)(i0 - start0);
  	i0 = start0;
  	{
  		while (1) {
  			if (!(((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)) || ((NU8)(s0->data[i0])) == ((NU8)(43)) || ((NU8)(s0->data[i0])) == ((NU8)(45)))) goto LA148;
  			{
  				if (!(ti0 < maxlen0)) goto LA151;
  				t0[(ti0)- 0] = s0->data[i0];
  				ti0 += ((NI) 1);
  			}
  			LA151: ;
  			i0 += ((NI) 1);
  			{
  				while (1) {
  					if (!(((NU8)(s0->data[i0])) == ((NU8)(46)) || ((NU8)(s0->data[i0])) == ((NU8)(95)))) goto LA154;
  					i0 += ((NI) 1);
  				} LA154: ;
  			}
  		} LA148: ;
  	}
  	t0[(ti0)- 0] = 69;
  	ti0 += ((NI) 1);
  	{
  		if (!expnegative0) goto LA157;
  		t0[(ti0)- 0] = 45;
  	}
  	goto LA155;
  	LA157: ;
  	{
  		t0[(ti0)- 0] = 43;
  	}
  	LA155: ;
  	ti0 += ((NI) 1);
  	ti0 += ((NI) 3);
  	t0[((NI)(ti0 - ((NI) 1)))- 0] = ((NIM_CHAR) ((NI)(((NI) 48) + ((NI) ((NI)(absexponent0 % ((NI) 10)))))));
  	absexponent0 = (NI)(absexponent0 / ((NI) 10));
  	t0[((NI)(ti0 - ((NI) 2)))- 0] = ((NIM_CHAR) ((NI)(((NI) 48) + ((NI) ((NI)(absexponent0 % ((NI) 10)))))));
  	absexponent0 = (NI)(absexponent0 / ((NI) 10));
  	t0[((NI)(ti0 - ((NI) 3)))- 0] = ((NIM_CHAR) ((NI)(((NI) 48) + ((NI) ((NI)(absexponent0 % ((NI) 10)))))));
  	(*number0) = strtod(((NCSTRING) (t0)), NIM_NIL);
  	}BeforeRet: ;
  	return result0;
  }
  N_NIMCALL(void, T1689653243_31)(void* p, NI op) {
  	Assertionerror3644* a;
  	a = (Assertionerror3644*)p;
  	nimGCvisit((void*)(*a).Sup.parent, op);
  	nimGCvisit((void*)(*a).Sup.message, op);
  	nimGCvisit((void*)(*a).Sup.trace, op);
  }
  
  static N_INLINE(void, sysfatal_91221_1689653243)(NimStringDesc* message0) {
  	Assertionerror3644* e0;
  	NimStringDesc* LOC1;
  	e0 = (Assertionerror3644*)0;
  	e0 = (Assertionerror3644*) newObj((&NTI91228), sizeof(Assertionerror3644));
  	(*e0).Sup.Sup.m_type = (&NTI3644);
  	LOC1 = (NimStringDesc*)0;
  	LOC1 = (*e0).Sup.message; (*e0).Sup.message = copyStringRC1(message0);
  	if (LOC1) nimGCunrefNoCycle(LOC1);
  	raiseException((Exception*)e0, "AssertionError");
  }
  
  N_NOINLINE(void, raiseassert_91216_1689653243)(NimStringDesc* msg0) {
  	sysfatal_91221_1689653243(msg0);
  }
  
  static N_INLINE(void*, seqtoptr_332644_1689653243)(TY292960* x0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = ((void*) (x0));
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_332711_1689653243)(TY292961 x0, TY292961 y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		if (!!((x0.Field0 == y0.Field0))) goto LA3;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!!((x0.Field1 == y0.Field1))) goto LA7;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA7: ;
  	result0 = NIM_TRUE;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_332633_1689653243)(TY292960* x0, TY292960* y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		void* LOC3;
  		void* LOC4;
  		LOC3 = (void*)0;
  		LOC3 = seqtoptr_332644_1689653243(x0);
  		LOC4 = (void*)0;
  		LOC4 = seqtoptr_332644_1689653243(y0);
  		if (!(LOC3 == LOC4)) goto LA5;
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA5: ;
  	{
  		NIM_BOOL LOC8;
  		void* LOC9;
  		void* LOC11;
  		LOC8 = (NIM_BOOL)0;
  		LOC9 = (void*)0;
  		LOC9 = seqtoptr_332644_1689653243(x0);
  		LOC8 = (LOC9 == NIM_NIL);
  		if (LOC8) goto LA10;
  		LOC11 = (void*)0;
  		LOC11 = seqtoptr_332644_1689653243(y0);
  		LOC8 = (LOC11 == NIM_NIL);
  		LA10: ;
  		if (!LOC8) goto LA12;
  		result0 = NIM_FALSE;
  	}
  	goto LA1;
  	LA12: ;
  	{
  		if (!((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0))) goto LA15;
  		{
  			NI i_332709_1689653243;
  			NI HEX3Atmp_332740_1689653243;
  			NI res_332743_1689653243;
  			i_332709_1689653243 = (NI)0;
  			HEX3Atmp_332740_1689653243 = (NI)0;
  			HEX3Atmp_332740_1689653243 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
  			res_332743_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_332743_1689653243 <= HEX3Atmp_332740_1689653243)) goto LA19;
  					i_332709_1689653243 = res_332743_1689653243;
  					{
  						NIM_BOOL LOC22;
  						LOC22 = (NIM_BOOL)0;
  						LOC22 = HEX3DHEX3D_332711_1689653243(x0->data[i_332709_1689653243], y0->data[i_332709_1689653243]);
  						if (!!(LOC22)) goto LA23;
  						result0 = NIM_FALSE;
  						goto BeforeRet;
  					}
  					LA23: ;
  					res_332743_1689653243 += ((NI) 1);
  				} LA19: ;
  			}
  		}
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA15: ;
  	LA1: ;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void, safeadd_332622_1689653243)(TY292960** x0, TY292961 y0) {
  	{
  		NIM_BOOL LOC3;
  		TY332747 LOC6;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = HEX3DHEX3D_332633_1689653243((*x0), NIM_NIL);
  		if (!LOC3) goto LA4;
  		unsureAsgnRef((void**) (&(*x0)), (TY292960*) newSeq((&NTI292960), 1));
  		memset((void*)LOC6, 0, sizeof(LOC6));
  		LOC6[0].Field0 = y0.Field0;
  		LOC6[0].Field1 = y0.Field1;
  		(*x0)->data[0].Field0 = LOC6[0].Field0;
  		asgnRefNoCycle((void**) (&(*x0)->data[0].Field1), LOC6[0].Field1);
  	}
  	goto LA1;
  	LA4: ;
  	{
  		(*x0) = (TY292960*) incrSeqV2(&((*x0))->Sup, sizeof(TY292961));
  		(*x0)->data[(*x0)->Sup.len].Field0 = y0.Field0;
  		asgnRefNoCycle((void**) (&(*x0)->data[(*x0)->Sup.len].Field1), y0.Field1);
  		++(*x0)->Sup.len;
  	}
  	LA1: ;
  }
  
  static N_INLINE(void*, seqtoptr_328738_1689653243)(Ttypeseq292836* x0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = ((void*) (x0));
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_328727_1689653243)(Ttypeseq292836* x0, Ttypeseq292836* y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		void* LOC3;
  		void* LOC4;
  		LOC3 = (void*)0;
  		LOC3 = seqtoptr_328738_1689653243(x0);
  		LOC4 = (void*)0;
  		LOC4 = seqtoptr_328738_1689653243(y0);
  		if (!(LOC3 == LOC4)) goto LA5;
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA5: ;
  	{
  		NIM_BOOL LOC8;
  		void* LOC9;
  		void* LOC11;
  		LOC8 = (NIM_BOOL)0;
  		LOC9 = (void*)0;
  		LOC9 = seqtoptr_328738_1689653243(x0);
  		LOC8 = (LOC9 == NIM_NIL);
  		if (LOC8) goto LA10;
  		LOC11 = (void*)0;
  		LOC11 = seqtoptr_328738_1689653243(y0);
  		LOC8 = (LOC11 == NIM_NIL);
  		LA10: ;
  		if (!LOC8) goto LA12;
  		result0 = NIM_FALSE;
  	}
  	goto LA1;
  	LA12: ;
  	{
  		if (!((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0))) goto LA15;
  		{
  			NI i_328803_1689653243;
  			NI HEX3Atmp_328816_1689653243;
  			NI res_328819_1689653243;
  			i_328803_1689653243 = (NI)0;
  			HEX3Atmp_328816_1689653243 = (NI)0;
  			HEX3Atmp_328816_1689653243 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
  			res_328819_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_328819_1689653243 <= HEX3Atmp_328816_1689653243)) goto LA19;
  					i_328803_1689653243 = res_328819_1689653243;
  					{
  						if (!!((x0->data[i_328803_1689653243] == y0->data[i_328803_1689653243]))) goto LA22;
  						result0 = NIM_FALSE;
  						goto BeforeRet;
  					}
  					LA22: ;
  					res_328819_1689653243 += ((NI) 1);
  				} LA19: ;
  			}
  		}
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA15: ;
  	LA1: ;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void, safeadd_333392_1689653243)(Ttypeseq292836** x0, Ttype292840* y0) {
  	{
  		NIM_BOOL LOC3;
  		TY333413 LOC6;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = HEX3DHEX3D_328727_1689653243((*x0), NIM_NIL);
  		if (!LOC3) goto LA4;
  		unsureAsgnRef((void**) (&(*x0)), (Ttypeseq292836*) newSeq((&NTI292836), 1));
  		memset((void*)LOC6, 0, sizeof(LOC6));
  		LOC6[0] = y0;
  		asgnRefNoCycle((void**) (&(*x0)->data[0]), LOC6[0]);
  	}
  	goto LA1;
  	LA4: ;
  	{
  		(*x0) = (Ttypeseq292836*) incrSeqV2(&((*x0))->Sup, sizeof(Ttype292840*));
  		asgnRefNoCycle((void**) (&(*x0)->data[(*x0)->Sup.len]), y0);
  		++(*x0)->Sup.len;
  	}
  	LA1: ;
  }
  
  static N_INLINE(void*, seqtoptr_295875_1689653243)(TY292929* x0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = ((void*) (x0));
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_295864_1689653243)(TY292929* x0, TY292929* y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		void* LOC3;
  		void* LOC4;
  		LOC3 = (void*)0;
  		LOC3 = seqtoptr_295875_1689653243(x0);
  		LOC4 = (void*)0;
  		LOC4 = seqtoptr_295875_1689653243(y0);
  		if (!(LOC3 == LOC4)) goto LA5;
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA5: ;
  	{
  		NIM_BOOL LOC8;
  		void* LOC9;
  		void* LOC11;
  		LOC8 = (NIM_BOOL)0;
  		LOC9 = (void*)0;
  		LOC9 = seqtoptr_295875_1689653243(x0);
  		LOC8 = (LOC9 == NIM_NIL);
  		if (LOC8) goto LA10;
  		LOC11 = (void*)0;
  		LOC11 = seqtoptr_295875_1689653243(y0);
  		LOC8 = (LOC11 == NIM_NIL);
  		LA10: ;
  		if (!LOC8) goto LA12;
  		result0 = NIM_FALSE;
  	}
  	goto LA1;
  	LA12: ;
  	{
  		if (!((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0))) goto LA15;
  		{
  			NI i_295940_1689653243;
  			NI HEX3Atmp_295953_1689653243;
  			NI res_295956_1689653243;
  			i_295940_1689653243 = (NI)0;
  			HEX3Atmp_295953_1689653243 = (NI)0;
  			HEX3Atmp_295953_1689653243 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
  			res_295956_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_295956_1689653243 <= HEX3Atmp_295953_1689653243)) goto LA19;
  					i_295940_1689653243 = res_295956_1689653243;
  					{
  						if (!!((x0->data[i_295940_1689653243] == y0->data[i_295940_1689653243]))) goto LA22;
  						result0 = NIM_FALSE;
  						goto BeforeRet;
  					}
  					LA22: ;
  					res_295956_1689653243 += ((NI) 1);
  				} LA19: ;
  			}
  		}
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA15: ;
  	LA1: ;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void, safeadd_332919_1689653243)(TY292929** x0, Tinstantiation292824* y0) {
  	{
  		NIM_BOOL LOC3;
  		TY332940 LOC6;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = HEX3DHEX3D_295864_1689653243((*x0), NIM_NIL);
  		if (!LOC3) goto LA4;
  		unsureAsgnRef((void**) (&(*x0)), (TY292929*) newSeq((&NTI292929), 1));
  		memset((void*)LOC6, 0, sizeof(LOC6));
  		LOC6[0] = y0;
  		asgnRefNoCycle((void**) (&(*x0)->data[0]), LOC6[0]);
  	}
  	goto LA1;
  	LA4: ;
  	{
  		(*x0) = (TY292929*) incrSeqV2(&((*x0))->Sup, sizeof(Tinstantiation292824*));
  		asgnRefNoCycle((void**) (&(*x0)->data[(*x0)->Sup.len]), y0);
  		++(*x0)->Sup.len;
  	}
  	LA1: ;
  }
  
  N_NIMCALL(NimStringDesc*, reprEnum)(NI e0, TNimType* typ0) {
  	NimStringDesc* result0;
  	TNimNode* n0;
  	NimStringDesc* LOC19;
  	NimStringDesc* LOC20;
  {	result0 = (NimStringDesc*)0;
  	n0 = (*typ0).node;
  	{
  		NI o0;
  		if (!!((((*typ0).flags &(1U<<((NU)(((Tnimtypeflag3409) 2))&7U)))!=0))) goto LA3;
  		o0 = (NI)(e0 - (*(*n0).sons[(((NI) 0))- 0]).offset);
  		{
  			NIM_BOOL LOC7;
  			LOC7 = (NIM_BOOL)0;
  			LOC7 = (((NI) 0) <= o0);
  			if (!(LOC7)) goto LA8;
  			LOC7 = ((NU64)(o0) < (NU64)((*(*typ0).node).len));
  			LA8: ;
  			if (!LOC7) goto LA9;
  			result0 = cstrToNimstr((*(*n0).sons[(o0)- 0]).name);
  			goto BeforeRet;
  		}
  		LA9: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		TNimNode** s0;
  		s0 = (*n0).sons;
  		{
  			NI i_87443_1689653243;
  			NI HEX3Atmp_87445_1689653243;
  			NI res_87448_1689653243;
  			i_87443_1689653243 = (NI)0;
  			HEX3Atmp_87445_1689653243 = (NI)0;
  			HEX3Atmp_87445_1689653243 = (NI)((*n0).len - ((NI) 1));
  			res_87448_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_87448_1689653243 <= HEX3Atmp_87445_1689653243)) goto LA14;
  					i_87443_1689653243 = res_87448_1689653243;
  					{
  						if (!((*s0[(i_87443_1689653243)- 0]).offset == e0)) goto LA17;
  						result0 = cstrToNimstr((*s0[(i_87443_1689653243)- 0]).name);
  						goto BeforeRet;
  					}
  					LA17: ;
  					res_87448_1689653243 += ((NI) 1);
  				} LA14: ;
  			}
  		}
  	}
  	LA1: ;
  	LOC19 = (NimStringDesc*)0;
  	LOC20 = (NimStringDesc*)0;
  	LOC20 = nimIntToStr(e0);
  	LOC19 = rawNewString(LOC20->Sup.len + 16);
  appendString(LOC19, LOC20);
  appendString(LOC19, ((NimStringDesc*) &T1689653243_32));
  	result0 = LOC19;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(Tnodeseq292796*, HEX40_293609_1689653243)(Tnode292802** a0, NI a0Len0) {
  	Tnodeseq292796* result0;
  	result0 = (Tnodeseq292796*)0;
  	result0 = (Tnodeseq292796*) newSeq((&NTI292796), ((NI) (a0Len0)));
  	{
  		NI i_293650_1689653243;
  		NI HEX3Atmp_293652_1689653243;
  		NI res_293655_1689653243;
  		i_293650_1689653243 = (NI)0;
  		HEX3Atmp_293652_1689653243 = (NI)0;
  		HEX3Atmp_293652_1689653243 = (NI)(a0Len0 - ((NI) 1));
  		res_293655_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_293655_1689653243 <= HEX3Atmp_293652_1689653243)) goto LA3;
  				i_293650_1689653243 = res_293655_1689653243;
  				asgnRefNoCycle((void**) (&result0->data[i_293650_1689653243]), a0[i_293650_1689653243]);
  				res_293655_1689653243 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	return result0;
  }
  
  N_NIMCALL(void, objectinitaux_86478_1689653243)(void* dest0, TNimNode* n0) {
  	NI d0;
  	d0 = ((NI) (dest0));
  	switch ((*n0).kind) {
  	case ((Tnimnodekind3405) 0):
  	{
  	}
  	break;
  	case ((Tnimnodekind3405) 1):
  	{
  		objectInit(((void*) ((NI)((NU64)(d0) + (NU64)((*n0).offset)))), (*n0).typ);
  	}
  	break;
  	case ((Tnimnodekind3405) 2):
  	{
  		{
  			NI i_86619_1689653243;
  			NI HEX3Atmp_86636_1689653243;
  			NI res_86639_1689653243;
  			i_86619_1689653243 = (NI)0;
  			HEX3Atmp_86636_1689653243 = (NI)0;
  			HEX3Atmp_86636_1689653243 = (NI)((*n0).len - ((NI) 1));
  			res_86639_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_86639_1689653243 <= HEX3Atmp_86636_1689653243)) goto LA6;
  					i_86619_1689653243 = res_86639_1689653243;
  					objectinitaux_86478_1689653243(dest0, (*n0).sons[(i_86619_1689653243)- 0]);
  					res_86639_1689653243 += ((NI) 1);
  				} LA6: ;
  			}
  		}
  	}
  	break;
  	case ((Tnimnodekind3405) 3):
  	{
  		TNimNode* m0;
  		m0 = selectbranch_27207_1689653243(dest0, n0);
  		{
  			if (!!((m0 == NIM_NIL))) goto LA10;
  			objectinitaux_86478_1689653243(dest0, m0);
  		}
  		LA10: ;
  	}
  	break;
  	}
  }
  
  N_NIMCALL(void, objectInit)(void* dest0, TNimType* typ0) {
  	NI d0;
  	d0 = ((NI) (dest0));
  	switch ((*typ0).kind) {
  	case ((Tnimkind3403) 17):
  	{
  		TNimType** pint0;
  		pint0 = ((TNimType**) (dest0));
  		(*pint0) = typ0;
  		objectinitaux_86478_1689653243(dest0, (*typ0).node);
  	}
  	break;
  	case ((Tnimkind3403) 18):
  	{
  		objectinitaux_86478_1689653243(dest0, (*typ0).node);
  	}
  	break;
  	case ((Tnimkind3403) 16):
  	case ((Tnimkind3403) 4):
  	{
  		{
  			NI i_86659_1689653243;
  			NI HEX3Atmp_86673_1689653243;
  			NI res_86676_1689653243;
  			i_86659_1689653243 = (NI)0;
  			HEX3Atmp_86673_1689653243 = (NI)0;
  			HEX3Atmp_86673_1689653243 = (NI)((NI)((*typ0).size / (*(*typ0).base).size) - ((NI) 1));
  			res_86676_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_86676_1689653243 <= HEX3Atmp_86673_1689653243)) goto LA6;
  					i_86659_1689653243 = res_86676_1689653243;
  					objectInit(((void*) ((NI)((NU64)(d0) + (NU64)((NI)(i_86659_1689653243 * (*(*typ0).base).size))))), (*typ0).base);
  					res_86676_1689653243 += ((NI) 1);
  				} LA6: ;
  			}
  		}
  	}
  	break;
  	default:
  	{
  	}
  	break;
  	}
  }
  
  N_NIMCALL(NI, readbuffer_14956_1689653243)(FILE* f0, void* buffer0, NI len0) {
  	NI result0;
  	result0 = (NI)0;
  	result0 = fread(buffer0, ((NI) 1), ((size_t) (len0)), f0);
  	return result0;
  }
  
  N_NIMCALL(NI, ptrsize_45613_1689653243)(void* p0) {
  	NI result0;
  	void* x0;
  	Basechunk29438* c0;
  	result0 = (NI)0;
  	x0 = ((void*) ((NI)((NU64)(((NI) (p0))) - (NU64)(((NI)sizeof(Freecell29430))))));
  	c0 = pageaddr_31181_1689653243(p0);
  	result0 = (NI)((NU64)((*c0).size) - (NU64)(((NI)sizeof(Freecell29430))));
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = issmallchunk_31069_1689653243(c0);
  		if (!!(LOC3)) goto LA4;
  		result0 -= (NI)(((NI)sizeof(Bigchunk29442)) - ((NI) 8));
  	}
  	LA4: ;
  	return result0;
  }
  
  N_NIMCALL(void*, realloc_47004_1689653243)(Memregion29486* allocator0, void* p0, NI newsize0) {
  	void* result0;
  	result0 = (void*)0;
  	{
  		if (!(((NI) 0) < ((NI) (newsize0)))) goto LA3;
  		result0 = alloc0_46016_1689653243(allocator0, newsize0);
  		{
  			NI LOC9;
  			if (!!((p0 == NIM_NIL))) goto LA7;
  			LOC9 = (NI)0;
  			LOC9 = ptrsize_45613_1689653243(p0);
  			copymem_7485_1689653243(result0, p0, ((NI) (LOC9)));
  			dealloc_46022_1689653243(allocator0, p0);
  		}
  		LA7: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		if (!!((p0 == NIM_NIL))) goto LA11;
  		dealloc_46022_1689653243(allocator0, p0);
  	}
  	goto LA1;
  	LA11: ;
  	LA1: ;
  	return result0;
  }
  
  N_NOCONV(void*, realloc_7833_1689653243)(void* p0, NI newsize0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = realloc_47004_1689653243((&gch_49858_1689653243.region), p0, newsize0);
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x0) {
  	NimStringDesc* result0;
  	NI i0;
  	NI64 y0;
  	result0 = (NimStringDesc*)0;
  	result0 = mnewString(((NI) 32));
  	i0 = ((NI) 0);
  	y0 = x0;
  	{
  		while (1) {
  			NI64 d0;
  			d0 = (NI64)(y0 / IL64(10));
  			result0->data[i0] = ((NIM_CHAR) (((NI) ((NI)((((NI) ((NI64)(y0 - (NI64)(d0 * IL64(10))))) > 0? (((NI) ((NI64)(y0 - (NI64)(d0 * IL64(10)))))) : -(((NI) ((NI64)(y0 - (NI64)(d0 * IL64(10))))))) + ((NI) 48))))));
  			i0 += ((NI) 1);
  			y0 = d0;
  			{
  				if (!(y0 == IL64(0))) goto LA5;
  				goto LA1;
  			}
  			LA5: ;
  		}
  	} LA1: ;
  	{
  		if (!(x0 < IL64(0))) goto LA9;
  		result0->data[i0] = 45;
  		i0 += ((NI) 1);
  	}
  	LA9: ;
  	result0 = setLengthStr(result0, ((NI) (i0)));
  	{
  		NI j_80796_1689653243;
  		NI HEX3Atmp_80810_1689653243;
  		NI res_80813_1689653243;
  		j_80796_1689653243 = (NI)0;
  		HEX3Atmp_80810_1689653243 = (NI)0;
  		HEX3Atmp_80810_1689653243 = (NI)((NI)(i0 / ((NI) 2)) - ((NI) 1));
  		res_80813_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				NIM_CHAR LOC14;
  				if (!(res_80813_1689653243 <= HEX3Atmp_80810_1689653243)) goto LA13;
  				j_80796_1689653243 = res_80813_1689653243;
  				LOC14 = (NIM_CHAR)0;
  				LOC14 = result0->data[j_80796_1689653243];
  				result0->data[j_80796_1689653243] = result0->data[(NI)((NI)(i0 - j_80796_1689653243) - ((NI) 1))];
  				result0->data[(NI)((NI)(i0 - j_80796_1689653243) - ((NI) 1))] = LOC14;
  				res_80813_1689653243 += ((NI) 1);
  			} LA13: ;
  		}
  	}
  	return result0;
  }
  
  N_NIMCALL(NI64, mulInt64)(NI64 a0, NI64 b0) {
  	NI64 result0;
  	NF resasfloat0;
  	NF floatprod0;
  {	result0 = (NI64)0;
  	resasfloat0 = (NF)0;
  	floatprod0 = (NF)0;
  	result0 = (NI64)((NU64)(a0) * (NU64)(b0));
  	floatprod0 = ((double) (a0));
  	floatprod0 = ((NF)(floatprod0) * (NF)(((double) (b0))));
  	resasfloat0 = ((double) (result0));
  	{
  		if (!(resasfloat0 == floatprod0)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!(((NF)(3.2000000000000000e+01) * (NF)((((NF)(resasfloat0) - (NF)(floatprod0)) > 0? (((NF)(resasfloat0) - (NF)(floatprod0))) : -(((NF)(resasfloat0) - (NF)(floatprod0)))))) <= (floatprod0 > 0? (floatprod0) : -(floatprod0)))) goto LA7;
  		goto BeforeRet;
  	}
  	LA7: ;
  	raiseOverflow();
  	}BeforeRet: ;
  	return result0;
  }
  N_NIMCALL(void, T1689653243_33)(void* p, NI op) {
  	Oserror3630* a;
  	a = (Oserror3630*)p;
  	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
  	nimGCvisit((void*)(*a).Sup.Sup.message, op);
  	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
  }
  N_NIMCALL(void, T1689653243_34)(void* p, NI op) {
  	Keyerror3648* a;
  	a = (Keyerror3648*)p;
  	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
  	nimGCvisit((void*)(*a).Sup.Sup.message, op);
  	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
  }
  N_NIMCALL(void, T1689653243_35)(void* p, NI op) {
  	Indexerror3652* a;
  	a = (Indexerror3652*)p;
  	nimGCvisit((void*)(*a).Sup.parent, op);
  	nimGCvisit((void*)(*a).Sup.message, op);
  	nimGCvisit((void*)(*a).Sup.trace, op);
  }
  
  N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f0) {
  	NimStringDesc* result0;
  	TY80165 buf0;
  	NI n0;
  	int LOC1;
  	NIM_BOOL hasdot0;
  	result0 = (NimStringDesc*)0;
  	memset((void*)buf0, 0, sizeof(buf0));
  	LOC1 = (int)0;
  	LOC1 = sprintf(((NCSTRING) (buf0)), "%.16g", f0);
  	n0 = ((NI) (LOC1));
  	hasdot0 = NIM_FALSE;
  	{
  		NI i_80178_1689653243;
  		NI HEX3Atmp_80204_1689653243;
  		NI res_80207_1689653243;
  		i_80178_1689653243 = (NI)0;
  		HEX3Atmp_80204_1689653243 = (NI)0;
  		HEX3Atmp_80204_1689653243 = (NI)(n0 - ((NI) 1));
  		res_80207_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_80207_1689653243 <= HEX3Atmp_80204_1689653243)) goto LA4;
  				i_80178_1689653243 = res_80207_1689653243;
  				{
  					if (!((NU8)(buf0[(i_80178_1689653243)- 0]) == (NU8)(44))) goto LA7;
  					buf0[(i_80178_1689653243)- 0] = 46;
  					hasdot0 = NIM_TRUE;
  				}
  				goto LA5;
  				LA7: ;
  				{
  					if (!(((NU8)(buf0[(i_80178_1689653243)- 0])) >= ((NU8)(97)) && ((NU8)(buf0[(i_80178_1689653243)- 0])) <= ((NU8)(122)) || ((NU8)(buf0[(i_80178_1689653243)- 0])) >= ((NU8)(65)) && ((NU8)(buf0[(i_80178_1689653243)- 0])) <= ((NU8)(90)) || ((NU8)(buf0[(i_80178_1689653243)- 0])) == ((NU8)(46)))) goto LA10;
  					hasdot0 = NIM_TRUE;
  				}
  				goto LA5;
  				LA10: ;
  				LA5: ;
  				res_80207_1689653243 += ((NI) 1);
  			} LA4: ;
  		}
  	}
  	{
  		if (!!(hasdot0)) goto LA14;
  		buf0[(n0)- 0] = 46;
  		buf0[((NI)(n0 + ((NI) 1)))- 0] = 48;
  		buf0[((NI)(n0 + ((NI) 2)))- 0] = 0;
  	}
  	LA14: ;
  	{
  		if (!(((NU8)(buf0[((NI)(n0 - ((NI) 1)))- 0])) == ((NU8)(110)) || ((NU8)(buf0[((NI)(n0 - ((NI) 1)))- 0])) == ((NU8)(78)))) goto LA18;
  		result0 = copyString(((NimStringDesc*) &T1689653243_36));
  	}
  	goto LA16;
  	LA18: ;
  	{
  		if (!((NU8)(buf0[((NI)(n0 - ((NI) 1)))- 0]) == (NU8)(70))) goto LA21;
  		{
  			if (!((NU8)(buf0[(((NI) 0))- 0]) == (NU8)(45))) goto LA25;
  			result0 = copyString(((NimStringDesc*) &T1689653243_37));
  		}
  		goto LA23;
  		LA25: ;
  		{
  			result0 = copyString(((NimStringDesc*) &T1689653243_38));
  		}
  		LA23: ;
  	}
  	goto LA16;
  	LA21: ;
  	{
  		result0 = cstrToNimstr(((NCSTRING) (buf0)));
  	}
  	LA16: ;
  	return result0;
  }
  
  N_NIMCALL(void, genericSeqAssign)(void* dest0, void* src_86404_1689653243, TNimType* mt0) {
  	void* src0;
  	src0 = src_86404_1689653243;
  	genericAssign(dest0, ((void*) ((&src0))), mt0);
  }
  
  static N_INLINE(void*, seqtoptr_593160_1689653243)(TY332033* x0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = ((void*) (x0));
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_593149_1689653243)(TY332033* x0, TY332033* y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		void* LOC3;
  		void* LOC4;
  		LOC3 = (void*)0;
  		LOC3 = seqtoptr_593160_1689653243(x0);
  		LOC4 = (void*)0;
  		LOC4 = seqtoptr_593160_1689653243(y0);
  		if (!(LOC3 == LOC4)) goto LA5;
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA5: ;
  	{
  		NIM_BOOL LOC8;
  		void* LOC9;
  		void* LOC11;
  		LOC8 = (NIM_BOOL)0;
  		LOC9 = (void*)0;
  		LOC9 = seqtoptr_593160_1689653243(x0);
  		LOC8 = (LOC9 == NIM_NIL);
  		if (LOC8) goto LA10;
  		LOC11 = (void*)0;
  		LOC11 = seqtoptr_593160_1689653243(y0);
  		LOC8 = (LOC11 == NIM_NIL);
  		LA10: ;
  		if (!LOC8) goto LA12;
  		result0 = NIM_FALSE;
  	}
  	goto LA1;
  	LA12: ;
  	{
  		if (!((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0))) goto LA15;
  		{
  			NI i_593225_1689653243;
  			NI HEX3Atmp_593227_1689653243;
  			NI res_593230_1689653243;
  			i_593225_1689653243 = (NI)0;
  			HEX3Atmp_593227_1689653243 = (NI)0;
  			HEX3Atmp_593227_1689653243 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
  			res_593230_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_593230_1689653243 <= HEX3Atmp_593227_1689653243)) goto LA19;
  					i_593225_1689653243 = res_593230_1689653243;
  					{
  						if (!!((x0->data[i_593225_1689653243] == y0->data[i_593225_1689653243]))) goto LA22;
  						result0 = NIM_FALSE;
  						goto BeforeRet;
  					}
  					LA22: ;
  					res_593230_1689653243 += ((NI) 1);
  				} LA19: ;
  			}
  		}
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA15: ;
  	LA1: ;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void, safeadd_593138_1689653243)(TY332033** x0, NI32 y0) {
  	{
  		NIM_BOOL LOC3;
  		TY593234 LOC6;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = HEX3DHEX3D_593149_1689653243((*x0), NIM_NIL);
  		if (!LOC3) goto LA4;
  		unsureAsgnRef((void**) (&(*x0)), (TY332033*) newSeq((&NTI332033), 1));
  		LOC6[0] = y0;
  		(*x0)->data[0] = LOC6[0];
  	}
  	goto LA1;
  	LA4: ;
  	{
  		(*x0) = (TY332033*) incrSeqV2(&((*x0))->Sup, sizeof(NI32));
  		(*x0)->data[(*x0)->Sup.len] = y0;
  		++(*x0)->Sup.len;
  	}
  	LA1: ;
  }
  
  static N_INLINE(void, pushSafePoint)(TSafePoint* s0) {
  	(*s0).hasRaiseAction = NIM_FALSE;
  	(*s0).prev = exchandler_18837_1689653243;
  	exchandler_18837_1689653243 = s0;
  }
  
  N_NIMCALL(NI, rawfilesize_81874_1689653243)(FILE* file0) {
  	NI result0;
  	long oldpos0;
  	int LOC1;
  	int LOC2;
  	result0 = (NI)0;
  	oldpos0 = ftell(file0);
  	LOC1 = (int)0;
  	LOC1 = fseek(file0, ((NI) 0), ((int) 2));
  	result0 = ftell(file0);
  	LOC2 = (int)0;
  	LOC2 = fseek(file0, oldpos0, ((int) 0));
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, endoffile_14856_1689653243)(FILE* f0) {
  	NIM_BOOL result0;
  	int c0;
  	int LOC1;
  {	result0 = (NIM_BOOL)0;
  	c0 = fgetc(f0);
  	LOC1 = (int)0;
  	LOC1 = ungetc(c0, f0);
  	result0 = (c0 < ((NI32) 0));
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, readallbuffer_81866_1689653243)(FILE* file0) {
  	NimStringDesc* result0;
  	NimStringDesc* buffer0;
  	result0 = (NimStringDesc*)0;
  	result0 = copyString(((NimStringDesc*) &T1689653243_41));
  	buffer0 = mnewString(((NI) 4000));
  	{
  		while (1) {
  			NI bytesread0;
  			bytesread0 = readbuffer_14956_1689653243(file0, ((void*) ((&buffer0->data[((NI) 0)]))), ((NI) 4000));
  			{
  				if (!(bytesread0 == ((NI) 4000))) goto LA5;
  				result0 = resizeString(result0, buffer0->Sup.len + 0);
  appendString(result0, buffer0);
  			}
  			goto LA3;
  			LA5: ;
  			{
  				buffer0 = setLengthStr(buffer0, ((NI) (bytesread0)));
  				result0 = resizeString(result0, buffer0->Sup.len + 0);
  appendString(result0, buffer0);
  				goto LA1;
  			}
  			LA3: ;
  		}
  	} LA1: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, readallfile_81885_1689653243)(FILE* file0, NI len0) {
  	NimStringDesc* result0;
  	NI bytes0;
  	result0 = (NimStringDesc*)0;
  	result0 = mnewString(((NI) (len0)));
  	bytes0 = readbuffer_14956_1689653243(file0, ((void*) ((&result0->data[((NI) 0)]))), ((NI) (len0)));
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = endoffile_14856_1689653243(file0);
  		if (!LOC3) goto LA4;
  		{
  			if (!(bytes0 < len0)) goto LA8;
  			result0 = setLengthStr(result0, ((NI) (bytes0)));
  		}
  		LA8: ;
  	}
  	goto LA1;
  	LA4: ;
  	{
  		int LOC11;
  		LOC11 = (int)0;
  		LOC11 = ferror(file0);
  		if (!!((LOC11 == ((NI32) 0)))) goto LA12;
  		raiseeio_81060_1689653243(((NimStringDesc*) &T1689653243_40));
  	}
  	goto LA1;
  	LA12: ;
  	{
  		NimStringDesc* LOC15;
  		LOC15 = (NimStringDesc*)0;
  		LOC15 = readallbuffer_81866_1689653243(file0);
  		result0 = resizeString(result0, LOC15->Sup.len + 0);
  appendString(result0, LOC15);
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, readall_14865_1689653243)(FILE* file0) {
  	NimStringDesc* result0;
  	NI len0;
  	result0 = (NimStringDesc*)0;
  	{
  		if (!!((file0 == stdin))) goto LA3;
  		len0 = rawfilesize_81874_1689653243(file0);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		len0 = ((NI) -1);
  	}
  	LA1: ;
  	{
  		if (!(((NI) 0) < len0)) goto LA8;
  		result0 = readallfile_81885_1689653243(file0, len0);
  	}
  	goto LA6;
  	LA8: ;
  	{
  		result0 = readallbuffer_81866_1689653243(file0);
  	}
  	LA6: ;
  	return result0;
  }
  
  static N_INLINE(void, popSafePoint)(void) {
  	exchandler_18837_1689653243 = (*exchandler_18837_1689653243).prev;
  }
  
  N_NIMCALL(NimStringDesc*, readfile_14868_1689653243)(NimStringDesc* filename0) {
  	NimStringDesc* volatile result0;
  	FILE* f0;
  	result0 = (NimStringDesc*)0;
  	f0 = (FILE*)0;
  	{
  		NIM_BOOL LOC3;
  		TSafePoint T1689653243_39;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = open_14803_1689653243(&f0, filename0, ((Filemode13009) 0), ((NI) -1));
  		if (!LOC3) goto LA4;
  		pushSafePoint(&T1689653243_39);
  		T1689653243_39.status = _setjmp(T1689653243_39.context);
  		if (T1689653243_39.status == 0) {
  			result0 = readall_14865_1689653243(f0);
  			popSafePoint();
  		}
  		else {
  			popSafePoint();
  		}
  		{
  			close_14853_1689653243(f0);
  		}
  		if (T1689653243_39.status != 0) reraiseException();
  	}
  	goto LA1;
  	LA4: ;
  	{
  		sysfatal_14826_1689653243(((NimStringDesc*) &T1689653243_21), filename0);
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(NI, cmp_5683_1689653243)(NimStringDesc* x0, NimStringDesc* y0) {
  	NI result0;
  	int LOC1;
  	result0 = (NI)0;
  	LOC1 = (int)0;
  	LOC1 = strcmp(x0->data, y0->data);
  	result0 = ((NI) (LOC1));
  	return result0;
  }
  
  N_NIMCALL(NI, hashString)(NimStringDesc* s0) {
  	NI result0;
  	NI h0;
  	result0 = (NI)0;
  	h0 = ((NI) 0);
  	{
  		NI i_79440_1689653243;
  		NI HEX3Atmp_79487_1689653243;
  		NI res_79490_1689653243;
  		i_79440_1689653243 = (NI)0;
  		HEX3Atmp_79487_1689653243 = (NI)0;
  		HEX3Atmp_79487_1689653243 = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
  		res_79490_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_79490_1689653243 <= HEX3Atmp_79487_1689653243)) goto LA3;
  				i_79440_1689653243 = res_79490_1689653243;
  				h0 = (NI)((NU64)(h0) + (NU64)(((NI) (((NU8)(s0->data[i_79440_1689653243]))))));
  				h0 = (NI)((NU64)(h0) + (NU64)((NI)((NU64)(h0) << (NU64)(((NI) 10)))));
  				h0 = (NI)(h0 ^ (NI)((NU64)(h0) >> (NU64)(((NI) 6))));
  				res_79490_1689653243 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	h0 = (NI)((NU64)(h0) + (NU64)((NI)((NU64)(h0) << (NU64)(((NI) 3)))));
  	h0 = (NI)(h0 ^ (NI)((NU64)(h0) >> (NU64)(((NI) 11))));
  	h0 = (NI)((NU64)(h0) + (NU64)((NI)((NU64)(h0) << (NU64)(((NI) 15)))));
  	result0 = h0;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_202426_1689653243)(Sha1digest201005 x0, Sha1digest201005 y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		NI f_202614_1689653243;
  		NI res_202627_1689653243;
  		f_202614_1689653243 = (NI)0;
  		res_202627_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_202627_1689653243 <= ((NI) 19))) goto LA3;
  				f_202614_1689653243 = ((NI) (res_202627_1689653243));
  				{
  					if (!!((x0[(f_202614_1689653243)- 0] == y0[(f_202614_1689653243)- 0]))) goto LA6;
  					goto BeforeRet;
  				}
  				LA6: ;
  				res_202627_1689653243 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	result0 = NIM_TRUE;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void, write_14907_1689653243)(FILE* f0, NimStringDesc** a0, NI a0Len0) {
  	{
  		NimStringDesc* x_81859_1689653243;
  		NI i_81865_1689653243;
  		x_81859_1689653243 = (NimStringDesc*)0;
  		i_81865_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(i_81865_1689653243 < a0Len0)) goto LA3;
  				x_81859_1689653243 = a0[i_81865_1689653243];
  				write_14891_1689653243(f0, x_81859_1689653243);
  				i_81865_1689653243 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  }
  
  N_NIMCALL(void, Gcdisablemarkandsweep_10419_1689653243)(void) {
  	gch_49858_1689653243.cyclethreshold = ((NI) IL64(9223372036854775806));
  }
  
  N_NIMCALL(NimStringDesc*, readline_14912_1689653243)(FILE* f0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	result0 = rawNewString(((NI) 80));
  	{
  		NIM_BOOL LOC3;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = readline_14915_1689653243(f0, (&result0));
  		if (!!(LOC3)) goto LA4;
  		raiseeio_81060_1689653243(((NimStringDesc*) &T1689653243_42));
  	}
  	LA4: ;
  	return result0;
  }
  
  N_NIMCALL(void, insert_92201_1689653243)(NimStringDesc** x0, NimStringDesc* item0, NI i0) {
  	NI xl0;
  	NI j0;
  	xl0 = ((*x0) ? (*x0)->Sup.len : 0);
  	(*x0) = setLengthStr((*x0), ((NI) ((NI)(xl0 + (item0 ? item0->Sup.len : 0)))));
  	j0 = (NI)(xl0 - ((NI) 1));
  	{
  		while (1) {
  			if (!(((NI) (i0)) <= j0)) goto LA2;
  			(*x0)->data[(NI)(j0 + (item0 ? item0->Sup.len : 0))] = (*x0)->data[j0];
  			j0 -= ((NI) 1);
  		} LA2: ;
  	}
  	j0 = ((NI) 0);
  	{
  		while (1) {
  			if (!(j0 < (item0 ? item0->Sup.len : 0))) goto LA4;
  			(*x0)->data[(NI)(j0 + ((NI) (i0)))] = item0->data[j0];
  			j0 += ((NI) 1);
  		} LA4: ;
  	}
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_324520_1689653243)(TY324447 x0, TY324447 y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		if (!!((x0.Field0 == y0.Field0))) goto LA3;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!!((x0.Field1 == y0.Field1))) goto LA7;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA7: ;
  	result0 = NIM_TRUE;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void, setfilepos_14983_1689653243)(FILE* f0, NI64 pos0) {
  	{
  		int LOC3;
  		LOC3 = (int)0;
  		LOC3 = fseek(f0, ((long) (pos0)), ((int) 0));
  		if (!!((LOC3 == ((NI32) 0)))) goto LA4;
  		raiseeio_81060_1689653243(((NimStringDesc*) &T1689653243_43));
  	}
  	LA4: ;
  }
  
  N_NIMCALL(NI64, getfilepos_14987_1689653243)(FILE* f0) {
  	NI64 result0;
  	long LOC1;
  	result0 = (NI64)0;
  	LOC1 = (long)0;
  	LOC1 = ftell(f0);
  	result0 = ((NI64) (LOC1));
  	{
  		if (!(result0 < IL64(0))) goto LA4;
  		raiseeio_81060_1689653243(((NimStringDesc*) &T1689653243_44));
  	}
  	LA4: ;
  	return result0;
  }
  
  N_NIMCALL(void, writefile_14871_1689653243)(NimStringDesc* filename0, NimStringDesc* content0) {
  	FILE* f0;
  	f0 = (FILE*)0;
  	{
  		NIM_BOOL LOC3;
  		TSafePoint T1689653243_45;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = open_14803_1689653243(&f0, filename0, ((Filemode13009) 1), ((NI) -1));
  		if (!LOC3) goto LA4;
  		pushSafePoint(&T1689653243_45);
  		T1689653243_45.status = _setjmp(T1689653243_45.context);
  		if (T1689653243_45.status == 0) {
  			write_14891_1689653243(f0, content0);
  			popSafePoint();
  		}
  		else {
  			popSafePoint();
  		}
  		{
  			close_14853_1689653243(f0);
  		}
  		if (T1689653243_45.status != 0) reraiseException();
  	}
  	goto LA1;
  	LA4: ;
  	{
  		sysfatal_14826_1689653243(((NimStringDesc*) &T1689653243_21), filename0);
  	}
  	LA1: ;
  }
  
  N_NIMCALL(void, genericShallowAssign)(void* dest0, void* src0, TNimType* mt0) {
  	genericassignaux_85606_1689653243(dest0, src0, mt0, NIM_TRUE);
  }
  
  N_NIMCALL(NCSTRING*, alloccstringarray_15601_1689653243)(NimStringDesc** a0, NI a0Len0) {
  	NCSTRING* result0;
  	void* LOC1;
  	NimStringDesc** x0;
  	result0 = (NCSTRING*)0;
  	LOC1 = (void*)0;
  	LOC1 = alloc0_7817_1689653243(((NI) ((NI)((NI)(a0Len0 + ((NI) 1)) * ((NI) 8)))));
  	result0 = ((NCSTRING*) (LOC1));
  	x0 = ((NimStringDesc**) (a0));
  	{
  		NI i_15815_1689653243;
  		NI HEX3Atmp_15822_1689653243;
  		NI res_15825_1689653243;
  		i_15815_1689653243 = (NI)0;
  		HEX3Atmp_15822_1689653243 = (NI)0;
  		HEX3Atmp_15822_1689653243 = (a0Len0-1);
  		res_15825_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				void* LOC5;
  				if (!(res_15825_1689653243 <= HEX3Atmp_15822_1689653243)) goto LA4;
  				i_15815_1689653243 = res_15825_1689653243;
  				LOC5 = (void*)0;
  				LOC5 = alloc0_7817_1689653243(((NI) ((NI)((x0[(i_15815_1689653243)- 0] ? x0[(i_15815_1689653243)- 0]->Sup.len : 0) + ((NI) 1)))));
  				result0[(i_15815_1689653243)- 0] = ((NCSTRING) (LOC5));
  				copymem_7485_1689653243(((void*) (result0[(i_15815_1689653243)- 0])), ((void*) ((&x0[(i_15815_1689653243)- 0]->data[((NI) 0)]))), ((NI) ((x0[(i_15815_1689653243)- 0] ? x0[(i_15815_1689653243)- 0]->Sup.len : 0))));
  				res_15825_1689653243 += ((NI) 1);
  			} LA4: ;
  		}
  	}
  	return result0;
  }
  
  N_NIMCALL(void, dealloccstringarray_15829_1689653243)(NCSTRING* a0) {
  	NI i0;
  	i0 = ((NI) 0);
  	{
  		while (1) {
  			if (!!((((void*) (a0[(i0)- 0])) == NIM_NIL))) goto LA2;
  			dealloc_7848_1689653243(((void*) (a0[(i0)- 0])));
  			i0 += ((NI) 1);
  		} LA2: ;
  	}
  	dealloc_7848_1689653243(((void*) (a0)));
  }
  
  N_NIMCALL(NIM_BOOL, open_14811_1689653243)(FILE** f0, int filehandle0, Filemode13009 mode0) {
  	NIM_BOOL result0;
  	result0 = (NIM_BOOL)0;
  	(*f0) = fdopen(filehandle0, Formatopen_83810_1689653243[(mode0)- 0]->data);
  	result0 = !(((*f0) == NIM_NIL));
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, HEX24_8401_1689653243)(NU64 x0) {
  	NimStringDesc* result0;
  	result0 = (NimStringDesc*)0;
  	{
  		if (!(x0 == ((NI) 0))) goto LA3;
  		result0 = copyString(((NimStringDesc*) &T1689653243_46));
  	}
  	goto LA1;
  	LA3: ;
  	{
  		TY87237 buf0;
  		NI i0;
  		NU64 n0;
  		NI half0;
  		memset((void*)buf0, 0, sizeof(buf0));
  		i0 = ((NI) 0);
  		n0 = x0;
  		{
  			while (1) {
  				NU64 nn0;
  				if (!!((n0 == ((NI) 0)))) goto LA7;
  				nn0 = (NU64)((NU64)(n0) / (NU64)(10ULL));
  				buf0[(i0)- 0] = ((NIM_CHAR) ((NU64)((NU64)((NU64)((NU64)(n0) - (NU64)((NU64)((NU64)(10ULL) * (NU64)(nn0))))) + (NU64)(((NI) 48)))));
  				i0 += ((NI) 1);
  				n0 = nn0;
  			} LA7: ;
  		}
  		half0 = (NI)(i0 / ((NI) 2));
  		{
  			NI t_87322_1689653243;
  			NI HEX3Atmp_87337_1689653243;
  			NI res_87340_1689653243;
  			t_87322_1689653243 = (NI)0;
  			HEX3Atmp_87337_1689653243 = (NI)0;
  			HEX3Atmp_87337_1689653243 = (half0 - 1);
  			res_87340_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					NIM_CHAR LOC11;
  					if (!(res_87340_1689653243 <= HEX3Atmp_87337_1689653243)) goto LA10;
  					t_87322_1689653243 = res_87340_1689653243;
  					LOC11 = (NIM_CHAR)0;
  					LOC11 = buf0[(t_87322_1689653243)- 0];
  					buf0[(t_87322_1689653243)- 0] = buf0[((NI)((NI)(i0 - t_87322_1689653243) - ((NI) 1)))- 0];
  					buf0[((NI)((NI)(i0 - t_87322_1689653243) - ((NI) 1)))- 0] = LOC11;
  					res_87340_1689653243 += ((NI) 1);
  				} LA10: ;
  			}
  		}
  		result0 = cstrToNimstr(((NCSTRING) (buf0)));
  	}
  	LA1: ;
  	return result0;
  }
  
  N_NIMCALL(NI, clamp_157794_1689653243)(NI x0, NI a0, NI b0) {
  	NI result0;
  {	result0 = (NI)0;
  	{
  		if (!(x0 < a0)) goto LA3;
  		result0 = a0;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!(b0 < x0)) goto LA7;
  		result0 = b0;
  		goto BeforeRet;
  	}
  	LA7: ;
  	result0 = x0;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NimStringDesc*, nimBoolToStr)(NIM_BOOL x0) {
  	NimStringDesc* result0;
  {	result0 = (NimStringDesc*)0;
  	{
  		if (!x0) goto LA3;
  		result0 = copyString(((NimStringDesc*) &T1689653243_47));
  	}
  	goto LA1;
  	LA3: ;
  	{
  		result0 = copyString(((NimStringDesc*) &T1689653243_48));
  	}
  	LA1: ;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(Tinstantiation292824*, new_486322_1689653243)(void) {
  	Tinstantiation292824* result0;
  	Tinstantiation292824* r0;
  {	result0 = (Tinstantiation292824*)0;
  	r0 = (Tinstantiation292824*)0;
  	r0 = (Tinstantiation292824*) newObj((&NTI292826), sizeof(Tinstantiation292824));
  	result0 = r0;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  static N_INLINE(void*, seqtoptr_360609_1689653243)(Tnodeseq292796* x0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = ((void*) (x0));
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_360598_1689653243)(Tnodeseq292796* x0, Tnodeseq292796* y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		void* LOC3;
  		void* LOC4;
  		LOC3 = (void*)0;
  		LOC3 = seqtoptr_360609_1689653243(x0);
  		LOC4 = (void*)0;
  		LOC4 = seqtoptr_360609_1689653243(y0);
  		if (!(LOC3 == LOC4)) goto LA5;
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA5: ;
  	{
  		NIM_BOOL LOC8;
  		void* LOC9;
  		void* LOC11;
  		LOC8 = (NIM_BOOL)0;
  		LOC9 = (void*)0;
  		LOC9 = seqtoptr_360609_1689653243(x0);
  		LOC8 = (LOC9 == NIM_NIL);
  		if (LOC8) goto LA10;
  		LOC11 = (void*)0;
  		LOC11 = seqtoptr_360609_1689653243(y0);
  		LOC8 = (LOC11 == NIM_NIL);
  		LA10: ;
  		if (!LOC8) goto LA12;
  		result0 = NIM_FALSE;
  	}
  	goto LA1;
  	LA12: ;
  	{
  		if (!((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0))) goto LA15;
  		{
  			NI i_360674_1689653243;
  			NI HEX3Atmp_360687_1689653243;
  			NI res_360690_1689653243;
  			i_360674_1689653243 = (NI)0;
  			HEX3Atmp_360687_1689653243 = (NI)0;
  			HEX3Atmp_360687_1689653243 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
  			res_360690_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_360690_1689653243 <= HEX3Atmp_360687_1689653243)) goto LA19;
  					i_360674_1689653243 = res_360690_1689653243;
  					{
  						if (!!((x0->data[i_360674_1689653243] == y0->data[i_360674_1689653243]))) goto LA22;
  						result0 = NIM_FALSE;
  						goto BeforeRet;
  					}
  					LA22: ;
  					res_360690_1689653243 += ((NI) 1);
  				} LA19: ;
  			}
  		}
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA15: ;
  	LA1: ;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(Tnodeseq292796*, HEX5BHEX5D_444135_1689653243)(Tnodeseq292796* s0, Slice90651 x0) {
  	Tnodeseq292796* result0;
  	NI a0;
  	NI L0;
  	result0 = (Tnodeseq292796*)0;
  	a0 = x0.a;
  	L0 = (NI)((NI)(x0.b - a0) + ((NI) 1));
  	result0 = (Tnodeseq292796*) newSeq((&NTI292796), ((NI) (L0)));
  	{
  		NI i_444175_1689653243;
  		NI HEX3Atmp_444177_1689653243;
  		NI res_444180_1689653243;
  		i_444175_1689653243 = (NI)0;
  		HEX3Atmp_444177_1689653243 = (NI)0;
  		HEX3Atmp_444177_1689653243 = (L0 - 1);
  		res_444180_1689653243 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_444180_1689653243 <= HEX3Atmp_444177_1689653243)) goto LA3;
  				i_444175_1689653243 = res_444180_1689653243;
  				asgnRefNoCycle((void**) (&result0->data[i_444175_1689653243]), s0->data[(NI)(i_444175_1689653243 + a0)]);
  				res_444180_1689653243 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	return result0;
  }
  
  N_NIMCALL(void, HEX5BHEX5DHEX3D_444186_1689653243)(Tnodeseq292796** s0, Slice90651 x0, Tnode292802** b0, NI b0Len0) {
  	NI a0;
  	NI L0;
  	a0 = x0.a;
  	L0 = (NI)((NI)(x0.b - a0) + ((NI) 1));
  	{
  		if (!(L0 == b0Len0)) goto LA3;
  		{
  			NI i_444237_1689653243;
  			NI HEX3Atmp_444334_1689653243;
  			NI res_444337_1689653243;
  			i_444237_1689653243 = (NI)0;
  			HEX3Atmp_444334_1689653243 = (NI)0;
  			HEX3Atmp_444334_1689653243 = (L0 - 1);
  			res_444337_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_444337_1689653243 <= HEX3Atmp_444334_1689653243)) goto LA7;
  					i_444237_1689653243 = res_444337_1689653243;
  					asgnRefNoCycle((void**) (&(*s0)->data[(NI)(i_444237_1689653243 + a0)]), b0[i_444237_1689653243]);
  					res_444337_1689653243 += ((NI) 1);
  				} LA7: ;
  			}
  		}
  	}
  	goto LA1;
  	LA3: ;
  	{
  		NI slen_444200_1689653243;
  		NI shift_444202_1689653243;
  		NI newlen_444204_1689653243;
  		slen_444200_1689653243 = ((*s0) ? (*s0)->Sup.len : 0);
  		shift_444202_1689653243 = (NI)(b0Len0 - L0);
  		newlen_444204_1689653243 = (NI)(slen_444200_1689653243 + shift_444202_1689653243);
  		{
  			if (!(((NI) 0) < shift_444202_1689653243)) goto LA11;
  			(*s0) = (Tnodeseq292796*) setLengthSeq(&((*s0))->Sup, sizeof(Tnode292802*), ((NI) (newlen_444204_1689653243)));
  			{
  				NI i_444206_1689653243;
  				NI HEX3Atmp_444342_1689653243;
  				NI HEX3Atmp_444343_1689653243;
  				NI res_444346_1689653243;
  				i_444206_1689653243 = (NI)0;
  				HEX3Atmp_444342_1689653243 = (NI)0;
  				HEX3Atmp_444343_1689653243 = (NI)0;
  				HEX3Atmp_444342_1689653243 = (NI)(newlen_444204_1689653243 - ((NI) 1));
  				HEX3Atmp_444343_1689653243 = (NI)((NI)(a0 + shift_444202_1689653243) + ((NI) 1));
  				res_444346_1689653243 = HEX3Atmp_444342_1689653243;
  				{
  					while (1) {
  						if (!(HEX3Atmp_444343_1689653243 <= res_444346_1689653243)) goto LA15;
  						i_444206_1689653243 = res_444346_1689653243;
  						asgnRefNoCycle((void**) (&(*s0)->data[i_444206_1689653243]), (*s0)->data[(NI)(i_444206_1689653243 - shift_444202_1689653243)]);
  						res_444346_1689653243 -= ((NI) 1);
  					} LA15: ;
  				}
  			}
  		}
  		goto LA9;
  		LA11: ;
  		{
  			{
  				NI i_444208_1689653243;
  				NI HEX3Atmp_444351_1689653243;
  				NI HEX3Atmp_444352_1689653243;
  				NI res_444355_1689653243;
  				i_444208_1689653243 = (NI)0;
  				HEX3Atmp_444351_1689653243 = (NI)0;
  				HEX3Atmp_444352_1689653243 = (NI)0;
  				HEX3Atmp_444351_1689653243 = (NI)(a0 + b0Len0);
  				HEX3Atmp_444352_1689653243 = (NI)((NI)(((*s0) ? (*s0)->Sup.len : 0) - ((NI) 1)) + shift_444202_1689653243);
  				res_444355_1689653243 = HEX3Atmp_444351_1689653243;
  				{
  					while (1) {
  						if (!(res_444355_1689653243 <= HEX3Atmp_444352_1689653243)) goto LA19;
  						i_444208_1689653243 = res_444355_1689653243;
  						asgnRefNoCycle((void**) (&(*s0)->data[i_444208_1689653243]), (*s0)->data[(NI)(i_444208_1689653243 - shift_444202_1689653243)]);
  						res_444355_1689653243 += ((NI) 1);
  					} LA19: ;
  				}
  			}
  			(*s0) = (Tnodeseq292796*) setLengthSeq(&((*s0))->Sup, sizeof(Tnode292802*), ((NI) (newlen_444204_1689653243)));
  		}
  		LA9: ;
  		{
  			NI i_444210_1689653243;
  			NI HEX3Atmp_444360_1689653243;
  			NI res_444363_1689653243;
  			i_444210_1689653243 = (NI)0;
  			HEX3Atmp_444360_1689653243 = (NI)0;
  			HEX3Atmp_444360_1689653243 = (b0Len0 - 1);
  			res_444363_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_444363_1689653243 <= HEX3Atmp_444360_1689653243)) goto LA22;
  					i_444210_1689653243 = res_444363_1689653243;
  					asgnRefNoCycle((void**) (&(*s0)->data[(NI)(i_444210_1689653243 + a0)]), b0[i_444210_1689653243]);
  					res_444363_1689653243 += ((NI) 1);
  				} LA22: ;
  			}
  		}
  	}
  	LA1: ;
  }
  
  static N_INLINE(void*, seqtoptr_486824_1689653243)(Candidateerrors419204* x0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = ((void*) (x0));
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_486891_1689653243)(TY419212 x0, TY419212 y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		if (!!((x0.Field0 == y0.Field0))) goto LA3;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!!((x0.Field1 == y0.Field1))) goto LA7;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA7: ;
  	result0 = NIM_TRUE;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_486813_1689653243)(Candidateerrors419204* x0, Candidateerrors419204* y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		void* LOC3;
  		void* LOC4;
  		LOC3 = (void*)0;
  		LOC3 = seqtoptr_486824_1689653243(x0);
  		LOC4 = (void*)0;
  		LOC4 = seqtoptr_486824_1689653243(y0);
  		if (!(LOC3 == LOC4)) goto LA5;
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA5: ;
  	{
  		NIM_BOOL LOC8;
  		void* LOC9;
  		void* LOC11;
  		LOC8 = (NIM_BOOL)0;
  		LOC9 = (void*)0;
  		LOC9 = seqtoptr_486824_1689653243(x0);
  		LOC8 = (LOC9 == NIM_NIL);
  		if (LOC8) goto LA10;
  		LOC11 = (void*)0;
  		LOC11 = seqtoptr_486824_1689653243(y0);
  		LOC8 = (LOC11 == NIM_NIL);
  		LA10: ;
  		if (!LOC8) goto LA12;
  		result0 = NIM_FALSE;
  	}
  	goto LA1;
  	LA12: ;
  	{
  		if (!((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0))) goto LA15;
  		{
  			NI i_486889_1689653243;
  			NI HEX3Atmp_486920_1689653243;
  			NI res_486923_1689653243;
  			i_486889_1689653243 = (NI)0;
  			HEX3Atmp_486920_1689653243 = (NI)0;
  			HEX3Atmp_486920_1689653243 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
  			res_486923_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_486923_1689653243 <= HEX3Atmp_486920_1689653243)) goto LA19;
  					i_486889_1689653243 = res_486923_1689653243;
  					{
  						NIM_BOOL LOC22;
  						LOC22 = (NIM_BOOL)0;
  						LOC22 = HEX3DHEX3D_486891_1689653243(x0->data[i_486889_1689653243], y0->data[i_486889_1689653243]);
  						if (!!(LOC22)) goto LA23;
  						result0 = NIM_FALSE;
  						goto BeforeRet;
  					}
  					LA23: ;
  					res_486923_1689653243 += ((NI) 1);
  				} LA19: ;
  			}
  		}
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA15: ;
  	LA1: ;
  	}BeforeRet: ;
  	return result0;
  }
  
  static N_INLINE(void*, seqtoptr_486941_1689653243)(Candidateerrors419204* x0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = ((void*) (x0));
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_487008_1689653243)(TY419212 x0, TY419212 y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		if (!!((x0.Field0 == y0.Field0))) goto LA3;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!!((x0.Field1 == y0.Field1))) goto LA7;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA7: ;
  	result0 = NIM_TRUE;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_486930_1689653243)(Candidateerrors419204* x0, Candidateerrors419204* y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		void* LOC3;
  		void* LOC4;
  		LOC3 = (void*)0;
  		LOC3 = seqtoptr_486941_1689653243(x0);
  		LOC4 = (void*)0;
  		LOC4 = seqtoptr_486941_1689653243(y0);
  		if (!(LOC3 == LOC4)) goto LA5;
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA5: ;
  	{
  		NIM_BOOL LOC8;
  		void* LOC9;
  		void* LOC11;
  		LOC8 = (NIM_BOOL)0;
  		LOC9 = (void*)0;
  		LOC9 = seqtoptr_486941_1689653243(x0);
  		LOC8 = (LOC9 == NIM_NIL);
  		if (LOC8) goto LA10;
  		LOC11 = (void*)0;
  		LOC11 = seqtoptr_486941_1689653243(y0);
  		LOC8 = (LOC11 == NIM_NIL);
  		LA10: ;
  		if (!LOC8) goto LA12;
  		result0 = NIM_FALSE;
  	}
  	goto LA1;
  	LA12: ;
  	{
  		if (!((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0))) goto LA15;
  		{
  			NI i_487006_1689653243;
  			NI HEX3Atmp_487037_1689653243;
  			NI res_487040_1689653243;
  			i_487006_1689653243 = (NI)0;
  			HEX3Atmp_487037_1689653243 = (NI)0;
  			HEX3Atmp_487037_1689653243 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
  			res_487040_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_487040_1689653243 <= HEX3Atmp_487037_1689653243)) goto LA19;
  					i_487006_1689653243 = res_487040_1689653243;
  					{
  						NIM_BOOL LOC22;
  						LOC22 = (NIM_BOOL)0;
  						LOC22 = HEX3DHEX3D_487008_1689653243(x0->data[i_487006_1689653243], y0->data[i_487006_1689653243]);
  						if (!!(LOC22)) goto LA23;
  						result0 = NIM_FALSE;
  						goto BeforeRet;
  					}
  					LA23: ;
  					res_487040_1689653243 += ((NI) 1);
  				} LA19: ;
  			}
  		}
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA15: ;
  	LA1: ;
  	}BeforeRet: ;
  	return result0;
  }
  
  N_NIMCALL(void, safeadd_487046_1689653243)(Candidateerrors419204** x0, TY419212 y0) {
  	{
  		NIM_BOOL LOC3;
  		TY487067 LOC6;
  		LOC3 = (NIM_BOOL)0;
  		LOC3 = HEX3DHEX3D_486930_1689653243((*x0), NIM_NIL);
  		if (!LOC3) goto LA4;
  		unsureAsgnRef((void**) (&(*x0)), (Candidateerrors419204*) newSeq((&NTI419204), 1));
  		memset((void*)LOC6, 0, sizeof(LOC6));
  		LOC6[0].Field0 = y0.Field0;
  		LOC6[0].Field1 = y0.Field1;
  		asgnRefNoCycle((void**) (&(*x0)->data[0].Field0), LOC6[0].Field0);
  		(*x0)->data[0].Field1 = LOC6[0].Field1;
  	}
  	goto LA1;
  	LA4: ;
  	{
  		(*x0) = (Candidateerrors419204*) incrSeqV2(&((*x0))->Sup, sizeof(TY419212));
  		asgnRefNoCycle((void**) (&(*x0)->data[(*x0)->Sup.len].Field0), y0.Field0);
  		(*x0)->data[(*x0)->Sup.len].Field1 = y0.Field1;
  		++(*x0)->Sup.len;
  	}
  	LA1: ;
  }
  
  N_NIMCALL(void, insert_487567_1689653243)(Tnodeseq292796** x0, Tnode292802* item0, NI i0) {
  	NI xl_487802_1689653243;
  	NI j_487804_1689653243;
  	xl_487802_1689653243 = ((*x0) ? (*x0)->Sup.len : 0);
  	(*x0) = (Tnodeseq292796*) setLengthSeq(&((*x0))->Sup, sizeof(Tnode292802*), ((NI) ((NI)(xl_487802_1689653243 + ((NI) 1)))));
  	j_487804_1689653243 = (NI)(xl_487802_1689653243 - ((NI) 1));
  	{
  		while (1) {
  			if (!(((NI) (i0)) <= j_487804_1689653243)) goto LA2;
  			asgnRefNoCycle((void**) (&(*x0)->data[(NI)(j_487804_1689653243 + ((NI) 1))]), (*x0)->data[j_487804_1689653243]);
  			j_487804_1689653243 -= ((NI) 1);
  		} LA2: ;
  	}
  	asgnRefNoCycle((void**) (&(*x0)->data[i0]), item0);
  }
  
  N_NIMCALL(void, delete_488031_1689653243)(Tnodeseq292796** x0, NI i0) {
  	NI xl_488402_1689653243;
  	xl_488402_1689653243 = ((*x0) ? (*x0)->Sup.len : 0);
  	{
  		NI j_488404_1689653243;
  		NI HEX3Atmp_488610_1689653243;
  		NI res_488613_1689653243;
  		j_488404_1689653243 = (NI)0;
  		HEX3Atmp_488610_1689653243 = (NI)0;
  		HEX3Atmp_488610_1689653243 = (NI)(xl_488402_1689653243 - ((NI) 2));
  		res_488613_1689653243 = ((NI) (i0));
  		{
  			while (1) {
  				if (!(res_488613_1689653243 <= HEX3Atmp_488610_1689653243)) goto LA3;
  				j_488404_1689653243 = res_488613_1689653243;
  				asgnRefNoCycle((void**) (&(*x0)->data[j_488404_1689653243]), (*x0)->data[(NI)(j_488404_1689653243 + ((NI) 1))]);
  				res_488613_1689653243 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	(*x0) = (Tnodeseq292796*) setLengthSeq(&((*x0))->Sup, sizeof(Tnode292802*), ((NI) ((NI)(xl_488402_1689653243 - ((NI) 1)))));
  }
  
  N_NIMCALL(Tnodeseq292796*, newseq_519440_1689653243)(NI len0) {
  	Tnodeseq292796* result0;
  	result0 = (Tnodeseq292796*)0;
  	result0 = (Tnodeseq292796*) newSeq((&NTI292796), len0);
  	return result0;
  }
  
  N_NIMCALL(void, Gcfullcollect_10405_1689653243)(void) {
  	NI oldthreshold0;
  	oldthreshold0 = gch_49858_1689653243.cyclethreshold;
  	gch_49858_1689653243.cyclethreshold = ((NI) 0);
  	collectct_51807_1689653243((&gch_49858_1689653243));
  	gch_49858_1689653243.cyclethreshold = oldthreshold0;
  }
  
  static N_INLINE(void*, seqtoptr_262855_1689653243)(TY261877* x0) {
  	void* result0;
  	result0 = (void*)0;
  	result0 = ((void*) (x0));
  	return result0;
  }
  
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_262844_1689653243)(TY261877* x0, TY261877* y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		void* LOC3;
  		void* LOC4;
  		LOC3 = (void*)0;
  		LOC3 = seqtoptr_262855_1689653243(x0);
  		LOC4 = (void*)0;
  		LOC4 = seqtoptr_262855_1689653243(y0);
  		if (!(LOC3 == LOC4)) goto LA5;
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA5: ;
  	{
  		NIM_BOOL LOC8;
  		void* LOC9;
  		void* LOC11;
  		LOC8 = (NIM_BOOL)0;
  		LOC9 = (void*)0;
  		LOC9 = seqtoptr_262855_1689653243(x0);
  		LOC8 = (LOC9 == NIM_NIL);
  		if (LOC8) goto LA10;
  		LOC11 = (void*)0;
  		LOC11 = seqtoptr_262855_1689653243(y0);
  		LOC8 = (LOC11 == NIM_NIL);
  		LA10: ;
  		if (!LOC8) goto LA12;
  		result0 = NIM_FALSE;
  	}
  	goto LA1;
  	LA12: ;
  	{
  		if (!((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0))) goto LA15;
  		{
  			NI i_262920_1689653243;
  			NI HEX3Atmp_262922_1689653243;
  			NI res_262925_1689653243;
  			i_262920_1689653243 = (NI)0;
  			HEX3Atmp_262922_1689653243 = (NI)0;
  			HEX3Atmp_262922_1689653243 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
  			res_262925_1689653243 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_262925_1689653243 <= HEX3Atmp_262922_1689653243)) goto LA19;
  					i_262920_1689653243 = res_262925_1689653243;
  					{
  						NIM_BOOL LOC22;
  						LOC22 = (NIM_BOOL)0;
  						LOC22 = HEX3DHEX3D_262792_3111005044(x0->data[i_262920_1689653243], y0->data[i_262920_1689653243]);
  						if (!!(LOC22)) goto LA23;
  						result0 = NIM_FALSE;
  						goto BeforeRet;
  					}
  					LA23: ;
  					res_262925_1689653243 += ((NI) 1);
  				} LA19: ;
  			}
  		}
  		result0 = NIM_TRUE;
  	}
  	goto LA1;
  	LA15: ;
  	LA1: ;
  	}BeforeRet: ;
  	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(NIM_BOOL, HEX3DHEX3D_386275_1689653243)(Indexentry384117* x0, Indexentry384117* y0) {
  	NIM_BOOL result0;
  {	result0 = (NIM_BOOL)0;
  	{
  		if (!!(eqStrings((*x0).keyword, (*y0).keyword))) goto LA3;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!!(eqStrings((*x0).link, (*y0).link))) goto LA7;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA7: ;
  	{
  		if (!!(eqStrings((*x0).linktitle, (*y0).linktitle))) goto LA11;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA11: ;
  	{
  		if (!!(eqStrings((*x0).linkdesc, (*y0).linkdesc))) goto LA15;
  		result0 = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA15: ;
  	result0 = NIM_TRUE;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result0;
  }
  N_NIMCALL(void, T1689653243_49)(void* p, NI op) {
  	TY587019* a;
  	NI LOC1;
  	a = (TY587019*)p;
  	LOC1 = (NI)0;
  	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
  	}
  }
  
  static N_INLINE(void, Gcdisable_10401_1689653243)(void) {
  	gch_49858_1689653243.recgclock += ((NI) 1);
  }
  
  static N_INLINE(void, Gcenable_10403_1689653243)(void) {
  	{
  		if (!(((NI) 0) < gch_49858_1689653243.recgclock)) goto LA3;
  		gch_49858_1689653243.recgclock -= ((NI) 1);
  	}
  	LA3: ;
  }
  
  N_NIMCALL(NimStringDesc*, Gcgetstatistics_10421_1689653243)(void) {
  	NimStringDesc* result0;
  	NimStringDesc* LOC1;
  	NI LOC2;
  	NimStringDesc* LOC3;
  	NI LOC4;
  	NimStringDesc* LOC5;
  	NimStringDesc* LOC6;
  	NimStringDesc* LOC7;
  	NimStringDesc* LOC8;
  	NimStringDesc* LOC9;
  	NimStringDesc* LOC10;
  	NimStringDesc* LOC11;
  	NimStringDesc* LOC12;
  	NimStringDesc* LOC13;
  	NimStringDesc* LOC14;
  	result0 = (NimStringDesc*)0;
  	Gcdisable_10401_1689653243();
  	LOC1 = (NimStringDesc*)0;
  	LOC2 = (NI)0;
  	LOC2 = gettotalmem_8654_1689653243();
  	LOC3 = (NimStringDesc*)0;
  	LOC3 = nimIntToStr(LOC2);
  	LOC4 = (NI)0;
  	LOC4 = getoccupiedmem_8650_1689653243();
  	LOC5 = (NimStringDesc*)0;
  	LOC5 = nimIntToStr(LOC4);
  	LOC6 = (NimStringDesc*)0;
  	LOC6 = nimIntToStr(gch_49858_1689653243.stat.stackscans);
  	LOC7 = (NimStringDesc*)0;
  	LOC7 = nimIntToStr(gch_49858_1689653243.stat.maxstackcells);
  	LOC8 = (NimStringDesc*)0;
  	LOC8 = nimIntToStr(gch_49858_1689653243.stat.cyclecollections);
  	LOC9 = (NimStringDesc*)0;
  	LOC9 = nimIntToStr(gch_49858_1689653243.stat.maxthreshold);
  	LOC10 = (NimStringDesc*)0;
  	LOC10 = nimIntToStr(gch_49858_1689653243.zct.cap);
  	LOC11 = (NimStringDesc*)0;
  	LOC11 = nimIntToStr(gch_49858_1689653243.stat.cycletablesize);
  	LOC12 = (NimStringDesc*)0;
  	LOC12 = nimInt64ToStr((NI64)(gch_49858_1689653243.stat.maxpause / IL64(1000000)));
  	LOC1 = rawNewString(LOC3->Sup.len + LOC5->Sup.len + LOC6->Sup.len + LOC7->Sup.len + LOC8->Sup.len + LOC9->Sup.len + LOC10->Sup.len + LOC11->Sup.len + LOC12->Sup.len + 202);
  appendString(LOC1, ((NimStringDesc*) &T1689653243_50));
  appendString(LOC1, LOC3);
  appendString(LOC1, ((NimStringDesc*) &T1689653243_51));
  appendString(LOC1, LOC5);
  appendString(LOC1, ((NimStringDesc*) &T1689653243_52));
  appendString(LOC1, LOC6);
  appendString(LOC1, ((NimStringDesc*) &T1689653243_53));
  appendString(LOC1, LOC7);
  appendString(LOC1, ((NimStringDesc*) &T1689653243_54));
  appendString(LOC1, LOC8);
  appendString(LOC1, ((NimStringDesc*) &T1689653243_55));
  appendString(LOC1, LOC9);
  appendString(LOC1, ((NimStringDesc*) &T1689653243_56));
  appendString(LOC1, LOC10);
  appendString(LOC1, ((NimStringDesc*) &T1689653243_57));
  appendString(LOC1, LOC11);
  appendString(LOC1, ((NimStringDesc*) &T1689653243_58));
  appendString(LOC1, LOC12);
  appendString(LOC1, ((NimStringDesc*) &T1689653243_59));
  	result0 = LOC1;
  	LOC13 = (NimStringDesc*)0;
  	LOC14 = (NimStringDesc*)0;
  	LOC14 = nimIntToStr(gch_49858_1689653243.stat.maxstacksize);
  	LOC13 = rawNewString(result0->Sup.len + LOC14->Sup.len + 22);
  appendString(LOC13, result0);
  appendString(LOC13, ((NimStringDesc*) &T1689653243_60));
  appendString(LOC13, LOC14);
  appendString(LOC13, ((NimStringDesc*) &T1689653243_59));
  	result0 = LOC13;
  	Gcenable_10403_1689653243();
  	return result0;
  }
  NIM_EXTERNC N_NOINLINE(void, systemInit000)(void) {
  	TNimType LOC1;
  nimRegisterGlobalMarker(T1689653243_5);
  	nimvm_5754_1689653243 = NIM_FALSE;
  	memset((void*)(&LOC1), 0, sizeof(LOC1));
  	LOC1.size = ((NI) 8);
  	LOC1.kind = ((Tnimkind3403) 28);
  	LOC1.flags = 2;
  	strdesc_13003_1689653243 = LOC1;
  	initallocator_12401_1689653243();
  	initStackBottom();
  	initgc_12201_1689653243();
  	registersignalhandler_22402_1689653243();
  }
  
  NIM_EXTERNC N_NOINLINE(void, systemDatInit000)(void) {
  static TNimNode* T1689653243_3[4];
  static TNimNode T1689653243_0[20];
  NTI3608.size = sizeof(TNimObject);
  NTI3608.kind = 17;
  NTI3608.base = 0;
  NTI3608.flags = 1;
  T1689653243_0[0].len = 0; T1689653243_0[0].kind = 2;
  NTI3608.node = &T1689653243_0[0];
  NTI3624.size = sizeof(Exception);
  NTI3624.kind = 17;
  NTI3624.base = (&NTI3608);
  T1689653243_3[0] = &T1689653243_0[2];
  T1689653243_0[2].kind = 1;
  T1689653243_0[2].offset = offsetof(Exception, parent);
  T1689653243_0[2].typ = (&NTI10611);
  T1689653243_0[2].name = "parent";
  T1689653243_3[1] = &T1689653243_0[3];
  NTI140.size = sizeof(NCSTRING);
  NTI140.kind = 29;
  NTI140.base = 0;
  NTI140.flags = 3;
  T1689653243_0[3].kind = 1;
  T1689653243_0[3].offset = offsetof(Exception, name);
  T1689653243_0[3].typ = (&NTI140);
  T1689653243_0[3].name = "name";
  T1689653243_3[2] = &T1689653243_0[4];
  NTI138.size = sizeof(NimStringDesc*);
  NTI138.kind = 28;
  NTI138.base = 0;
  NTI138.flags = 2;
  T1689653243_0[4].kind = 1;
  T1689653243_0[4].offset = offsetof(Exception, message);
  T1689653243_0[4].typ = (&NTI138);
  T1689653243_0[4].name = "msg";
  T1689653243_3[3] = &T1689653243_0[5];
  T1689653243_0[5].kind = 1;
  T1689653243_0[5].offset = offsetof(Exception, trace);
  T1689653243_0[5].typ = (&NTI138);
  T1689653243_0[5].name = "trace";
  T1689653243_0[1].len = 4; T1689653243_0[1].kind = 2; T1689653243_0[1].sons = &T1689653243_3[0];
  NTI3624.node = &T1689653243_0[1];
  NTI10611.size = sizeof(Exception*);
  NTI10611.kind = 22;
  NTI10611.base = (&NTI3624);
  NTI10611.marker = T1689653243_4;
  NTI104.size = sizeof(NI);
  NTI104.kind = 31;
  NTI104.base = 0;
  NTI104.flags = 3;
  NTI3636.size = sizeof(Arithmeticerror3636);
  NTI3636.kind = 17;
  NTI3636.base = (&NTI3624);
  T1689653243_0[6].len = 0; T1689653243_0[6].kind = 2;
  NTI3636.node = &T1689653243_0[6];
  NTI3640.size = sizeof(Overflowerror3640);
  NTI3640.kind = 17;
  NTI3640.base = (&NTI3636);
  T1689653243_0[7].len = 0; T1689653243_0[7].kind = 2;
  NTI3640.node = &T1689653243_0[7];
  NTI23271.size = sizeof(Overflowerror3640*);
  NTI23271.kind = 22;
  NTI23271.base = (&NTI3640);
  NTI23271.marker = T1689653243_7;
  NTI3626.size = sizeof(Systemerror3626);
  NTI3626.kind = 17;
  NTI3626.base = (&NTI3624);
  T1689653243_0[8].len = 0; T1689653243_0[8].kind = 2;
  NTI3626.node = &T1689653243_0[8];
  NTI3650.size = sizeof(Outofmemerror3650);
  NTI3650.kind = 17;
  NTI3650.base = (&NTI3626);
  T1689653243_0[9].len = 0; T1689653243_0[9].kind = 2;
  NTI3650.node = &T1689653243_0[9];
  NTI142.size = sizeof(void*);
  NTI142.kind = 26;
  NTI142.base = 0;
  NTI142.flags = 3;
  NTI110.size = sizeof(NI32);
  NTI110.kind = 34;
  NTI110.base = 0;
  NTI110.flags = 3;
  NTI3646.size = sizeof(Valueerror3646);
  NTI3646.kind = 17;
  NTI3646.base = (&NTI3624);
  T1689653243_0[10].len = 0; T1689653243_0[10].kind = 2;
  NTI3646.node = &T1689653243_0[10];
  NTI23025.size = sizeof(Valueerror3646*);
  NTI23025.kind = 22;
  NTI23025.base = (&NTI3646);
  NTI23025.marker = T1689653243_11;
  NTI108.size = sizeof(NI16);
  NTI108.kind = 33;
  NTI108.base = 0;
  NTI108.flags = 3;
  NTI3628.size = sizeof(Ioerror3628);
  NTI3628.kind = 17;
  NTI3628.base = (&NTI3626);
  T1689653243_0[11].len = 0; T1689653243_0[11].kind = 2;
  NTI3628.node = &T1689653243_0[11];
  NTI81072.size = sizeof(Ioerror3628*);
  NTI81072.kind = 22;
  NTI81072.base = (&NTI3628);
  NTI81072.marker = T1689653243_13;
  NTI130.size = sizeof(NIM_BOOL);
  NTI130.kind = 1;
  NTI130.base = 0;
  NTI130.flags = 3;
  NTI7288.size = sizeof(NI64);
  NTI7288.kind = 35;
  NTI7288.base = 0;
  NTI7288.flags = 3;
  NTI7290.size = sizeof(NF);
  NTI7290.kind = 36;
  NTI7290.base = 0;
  NTI7290.flags = 3;
  NTI3610.size = sizeof(TNimObject*);
  NTI3610.kind = 22;
  NTI3610.base = (&NTI3608);
  NTI3610.marker = T1689653243_20;
  NTI7408.size = sizeof(int);
  NTI7408.kind = 34;
  NTI7408.base = 0;
  NTI7408.flags = 3;
  NTI116.size = sizeof(NU8);
  NTI116.kind = 41;
  NTI116.base = 0;
  NTI116.flags = 3;
  NTI120.size = sizeof(NU32);
  NTI120.kind = 43;
  NTI120.base = 0;
  NTI120.flags = 3;
  NTI3660.size = sizeof(Reraiseerror3660);
  NTI3660.kind = 17;
  NTI3660.base = (&NTI3624);
  T1689653243_0[12].len = 0; T1689653243_0[12].kind = 2;
  NTI3660.node = &T1689653243_0[12];
  NTI20624.size = sizeof(Reraiseerror3660*);
  NTI20624.kind = 22;
  NTI20624.base = (&NTI3660);
  NTI20624.marker = T1689653243_22;
  NTI3644.size = sizeof(Assertionerror3644);
  NTI3644.kind = 17;
  NTI3644.base = (&NTI3624);
  T1689653243_0[13].len = 0; T1689653243_0[13].kind = 2;
  NTI3644.node = &T1689653243_0[13];
  NTI91228.size = sizeof(Assertionerror3644*);
  NTI91228.kind = 22;
  NTI91228.base = (&NTI3644);
  NTI91228.marker = T1689653243_31;
  NTI29419.size = sizeof(TY29419);
  NTI29419.kind = 16;
  NTI29419.base = (&NTI104);
  NTI29419.flags = 3;
  NTI3604.size = sizeof(NI);
  NTI3604.kind = 20;
  NTI3604.base = (&NTI104);
  NTI3604.flags = 3;
  NTI124.size = sizeof(NF);
  NTI124.kind = 36;
  NTI124.base = 0;
  NTI124.flags = 3;
  NTI13005.size = sizeof(void*);
  NTI13005.kind = 18;
  NTI13005.base = 0;
  NTI13005.flags = 3;
  T1689653243_0[14].len = 0; T1689653243_0[14].kind = 2;
  NTI13005.node = &T1689653243_0[14];
  NTI13007.size = sizeof(FILE*);
  NTI13007.kind = 21;
  NTI13007.base = (&NTI13005);
  NTI13007.flags = 3;
  NTI106.size = sizeof(NI8);
  NTI106.kind = 32;
  NTI106.base = 0;
  NTI106.flags = 3;
  NTI3656.size = sizeof(Rangeerror3656);
  NTI3656.kind = 17;
  NTI3656.base = (&NTI3624);
  T1689653243_0[15].len = 0; T1689653243_0[15].kind = 2;
  NTI3656.node = &T1689653243_0[15];
  NTI3630.size = sizeof(Oserror3630);
  NTI3630.kind = 17;
  NTI3630.base = (&NTI3626);
  T1689653243_0[16].kind = 1;
  T1689653243_0[16].offset = offsetof(Oserror3630, errorcode);
  T1689653243_0[16].typ = (&NTI110);
  T1689653243_0[16].name = "errorCode";
  NTI3630.node = &T1689653243_0[16];
  NTI130607.size = sizeof(Oserror3630*);
  NTI130607.kind = 22;
  NTI130607.base = (&NTI3630);
  NTI130607.marker = T1689653243_33;
  NTI3648.size = sizeof(Keyerror3648);
  NTI3648.kind = 17;
  NTI3648.base = (&NTI3646);
  T1689653243_0[17].len = 0; T1689653243_0[17].kind = 2;
  NTI3648.node = &T1689653243_0[17];
  NTI191804.size = sizeof(Keyerror3648*);
  NTI191804.kind = 22;
  NTI191804.base = (&NTI3648);
  NTI191804.marker = T1689653243_34;
  NTI3652.size = sizeof(Indexerror3652);
  NTI3652.kind = 17;
  NTI3652.base = (&NTI3624);
  T1689653243_0[18].len = 0; T1689653243_0[18].kind = 2;
  NTI3652.node = &T1689653243_0[18];
  NTI143015.size = sizeof(Indexerror3652*);
  NTI143015.kind = 22;
  NTI143015.base = (&NTI3652);
  NTI143015.marker = T1689653243_35;
  NTI136.size = sizeof(NIM_CHAR);
  NTI136.kind = 2;
  NTI136.base = 0;
  NTI136.flags = 3;
  NTI13011.size = sizeof(int);
  NTI13011.kind = 34;
  NTI13011.base = 0;
  NTI13011.flags = 3;
  NTI3638.size = sizeof(Divbyzeroerror3638);
  NTI3638.kind = 17;
  NTI3638.base = (&NTI3636);
  T1689653243_0[19].len = 0; T1689653243_0[19].kind = 2;
  NTI3638.node = &T1689653243_0[19];
  NTI587019.size = sizeof(TY587019*);
  NTI587019.kind = 24;
  NTI587019.base = (&NTI7408);
  NTI587019.flags = 2;
  NTI587019.marker = T1689653243_49;
  }
  
  