text: /* Generated by Nim Compiler v0.13.0 */
  /*   (c) 2015 Andreas Rumpf */
  /* The generated code is subject to the original license. */
  /* Compiled for: Linux, amd64, gcc */
  /* Command for C compiler:
     gcc -c  -w -O3 -fno-strict-aliasing  -I/home/ubuntu/nim-ci/Nim/lib -o /home/ubuntu/nim-ci/Nim/compiler/rnimcache/compiler_types.o /home/ubuntu/nim-ci/Nim/compiler/rnimcache/compiler_types.c */
  #define NIM_INTBITS 64
  
  #include "nimbase.h"
  #include <string.h>
  typedef struct Tnode293798 Tnode293798;
  typedef struct Ttype293836 Ttype293836;
  typedef struct Tlineinfo192336 Tlineinfo192336;
  typedef struct NimStringDesc NimStringDesc;
  typedef struct TGenericSeq TGenericSeq;
  typedef struct Tsym293830 Tsym293830;
  typedef struct Tident200012 Tident200012;
  typedef struct Tnodeseq293792 Tnodeseq293792;
  typedef struct Tidobj200006 Tidobj200006;
  typedef struct TNimObject TNimObject;
  typedef struct TNimType TNimType;
  typedef struct TNimNode TNimNode;
  typedef struct Ttypeseq293832 Ttypeseq293832;
  typedef struct TY293956 TY293956;
  typedef struct Tloc293812 Tloc293812;
  typedef struct Ropeobj179006 Ropeobj179006;
  typedef struct TY293925 TY293925;
  typedef struct Tstrtable293802 Tstrtable293802;
  typedef struct Tsymseq293800 Tsymseq293800;
  typedef struct Tlib293816 Tlib293816;
  typedef struct TY204019 TY204019;
  typedef struct Tsametypeclosure325233 Tsametypeclosure325233;
  typedef struct TY325246 TY325246;
  typedef struct TY325247 TY325247;
  typedef struct Intset269031 Intset269031;
  typedef struct Trunk269027 Trunk269027;
  typedef struct Trunkseq269029 Trunkseq269029;
  typedef struct Cell47305 Cell47305;
  typedef struct Cellseq47321 Cellseq47321;
  typedef struct Gcheap49818 Gcheap49818;
  typedef struct Gcstack49816 Gcstack49816;
  typedef struct Memregion29480 Memregion29480;
  typedef struct Smallchunk29437 Smallchunk29437;
  typedef struct Llchunk29474 Llchunk29474;
  typedef struct Bigchunk29439 Bigchunk29439;
  typedef struct Intset29414 Intset29414;
  typedef struct Trunk29410 Trunk29410;
  typedef struct Avlnode29478 Avlnode29478;
  typedef struct Gcstat49814 Gcstat49814;
  typedef struct Cellset47317 Cellset47317;
  typedef struct Pagedesc47313 Pagedesc47313;
  typedef struct TY293957 TY293957;
  typedef struct Tinstantiation293820 Tinstantiation293820;
  typedef struct Tlistentry147010 Tlistentry147010;
  typedef struct Basechunk29435 Basechunk29435;
  typedef struct Freecell29427 Freecell29427;
  struct  Tlineinfo192336  {
  NI16 line;
  NI16 col;
  NI32 fileindex;
  };
  struct  TGenericSeq  {
  NI len;
  NI reserved;
  };
  struct  NimStringDesc  {
    TGenericSeq Sup;
  NIM_CHAR data[SEQ_DECL_SIZE];
  };
  struct  Tnode293798  {
  Ttype293836* typ;
  Tlineinfo192336 info;
  NU16 flags;
  NU8 kind;
  union{
  struct {NI64 intval;
  } S1;
  struct {NF floatval;
  } S2;
  struct {NimStringDesc* strval;
  } S3;
  struct {Tsym293830* sym;
  } S4;
  struct {Tident200012* ident;
  } S5;
  struct {Tnodeseq293792* sons;
  } S6;
  } kindU;
  NimStringDesc* comment;
  };
  typedef N_NIMCALL_PTR(void, TY3489) (void* p, NI op);
  typedef N_NIMCALL_PTR(void*, TY3494) (void* p);
  struct  TNimType  {
  NI size;
  NU8 kind;
  NU8 flags;
  TNimType* base;
  TNimNode* node;
  void* finalizer;
  TY3489 marker;
  TY3494 deepcopy;
  };
  struct  TNimObject  {
  TNimType* m_type;
  };
  struct  Tidobj200006  {
    TNimObject Sup;
  NI id;
  };
  struct  Tloc293812  {
  NU8 k;
  NU8 s;
  NU16 flags;
  Ttype293836* t;
  Ropeobj179006* r;
  };
  struct  Ttype293836  {
    Tidobj200006 Sup;
  NU8 kind;
  NU8 callconv;
  NU32 flags;
  Ttypeseq293832* sons;
  Tnode293798* n;
  Tsym293830* owner;
  Tsym293830* sym;
  Tsym293830* destructor;
  Tsym293830* deepcopy;
  Tsym293830* assignment;
  TY293956* methods;
  NI64 size;
  NI16 align;
  NI16 locklevel;
  Tloc293812 loc;
  };
  struct  Tstrtable293802  {
  NI counter;
  Tsymseq293800* data;
  };
  struct  Tsym293830  {
    Tidobj200006 Sup;
  NU8 kind;
  union{
  struct {Ttypeseq293832* typeinstcache;
  } S1;
  struct {TY293925* procinstcache;
  Tsym293830* gcunsafetyreason;
  } S2;
  struct {TY293925* usedgenerics;
  Tstrtable293802 tab;
  } S3;
  struct {Tsym293830* guard;
  NI bitsize;
  } S4;
  } kindU;
  NU16 magic;
  Ttype293836* typ;
  Tident200012* name;
  Tlineinfo192336 info;
  Tsym293830* owner;
  NU32 flags;
  Tnode293798* ast;
  NU32 options;
  NI position;
  NI offset;
  Tloc293812 loc;
  Tlib293816* annex;
  Tnode293798* constraint;
  };
  struct  Tident200012  {
    Tidobj200006 Sup;
  NimStringDesc* s;
  Tident200012* next;
  NI h;
  };
  typedef NimStringDesc* TY323206[63];
  struct TY204019 {
  NimStringDesc* Field0;
  NI Field1;
  };
  typedef NimStringDesc* TY293016[10];
  struct  Tsametypeclosure325233  {
  NU8 cmp;
  NI reccheck;
  NU8 flags;
  TY325246* s;
  };
  struct TY325247 {
  NI Field0;
  NI Field1;
  };
  struct  TNimNode  {
  NU8 kind;
  NI offset;
  TNimType* typ;
  NCSTRING name;
  NI len;
  TNimNode** sons;
  };
  typedef N_NIMCALL_PTR(NIM_BOOL, Ttypeiter321025) (Ttype293836* t, TNimObject* closure);
  struct  Intset269031  {
  NI counter;
  NI max;
  Trunk269027* head;
  Trunkseq269029* data;
  };
  struct  Cell47305  {
  NI refcount;
  TNimType* typ;
  };
  struct  Cellseq47321  {
  NI len;
  NI cap;
  Cell47305** d;
  };
  typedef Smallchunk29437* TY29495[512];
  typedef Trunk29410* Trunkbuckets29412[256];
  struct  Intset29414  {
  Trunkbuckets29412 data;
  };
  struct  Memregion29480  {
  NI minlargeobj;
  NI maxlargeobj;
  TY29495 freesmallchunks;
  Llchunk29474* llmem;
  NI currmem;
  NI maxmem;
  NI freemem;
  NI lastsize;
  Bigchunk29439* freechunkslist;
  Intset29414 chunkstarts;
  Avlnode29478* root;
  Avlnode29478* deleted;
  Avlnode29478* last;
  Avlnode29478* freeavlnodes;
  NIM_BOOL locked;
  };
  struct  Gcstat49814  {
  NI stackscans;
  NI cyclecollections;
  NI maxthreshold;
  NI maxstacksize;
  NI maxstackcells;
  NI cycletablesize;
  NI64 maxpause;
  };
  struct  Cellset47317  {
  NI counter;
  NI max;
  Pagedesc47313* head;
  Pagedesc47313** data;
  };
  struct  Gcheap49818  {
  Gcstack49816* stack;
  void* stackbottom;
  NI cyclethreshold;
  Cellseq47321 zct;
  Cellseq47321 decstack;
  Cellseq47321 tempstack;
  NI recgclock;
  Memregion29480 region;
  Gcstat49814 stat;
  Cellset47317 marked;
  Cellseq47321 additionalroots;
  };
  typedef NimStringDesc* TY193732[1];
  typedef N_NIMCALL_PTR(NIM_BOOL, Ttypepredicate321029) (Ttype293836* t);
  struct TY293957 {
  NI Field0;
  Tsym293830* Field1;
  };
  struct  Ropeobj179006  {
    TNimObject Sup;
  Ropeobj179006* left;
  Ropeobj179006* right;
  NI length;
  NimStringDesc* data;
  };
  struct  Tlistentry147010  {
    TNimObject Sup;
  Tlistentry147010* prev;
  Tlistentry147010* next;
  };
  struct  Tlib293816  {
    Tlistentry147010 Sup;
  NU8 kind;
  NIM_BOOL generated;
  NIM_BOOL isoverriden;
  Ropeobj179006* name;
  Tnode293798* path;
  };
  typedef NI TY29419[8];
  struct  Trunk269027  {
  Trunk269027* next;
  NI key;
  TY29419 bits;
  };
  struct  Gcstack49816  {
  Gcstack49816* prev;
  Gcstack49816* next;
  void* starts;
  void* pos;
  NI maxstacksize;
  };
  struct  Basechunk29435  {
  NI prevsize;
  NI size;
  NIM_BOOL used;
  };
  struct  Smallchunk29437  {
    Basechunk29435 Sup;
  Smallchunk29437* next;
  Smallchunk29437* prev;
  Freecell29427* freelist;
  NI free;
  NI acc;
  NF data;
  };
  struct  Llchunk29474  {
  NI size;
  NI acc;
  Llchunk29474* next;
  };
  struct  Bigchunk29439  {
    Basechunk29435 Sup;
  Bigchunk29439* next;
  Bigchunk29439* prev;
  NI align;
  NF data;
  };
  struct  Trunk29410  {
  Trunk29410* next;
  NI key;
  TY29419 bits;
  };
  typedef Avlnode29478* TY29485[2];
  struct  Avlnode29478  {
  TY29485 link;
  NI key;
  NI upperbound;
  NI level;
  };
  struct  Pagedesc47313  {
  Pagedesc47313* next;
  NI key;
  TY29419 bits;
  };
  struct  Tinstantiation293820  {
  Tsym293830* sym;
  Ttypeseq293832* concretetypes;
  NI compilesid;
  };
  struct  Freecell29427  {
  Freecell29427* next;
  NI zerofield;
  };
  struct TY325246 {
    TGenericSeq Sup;
    TY325247 data[SEQ_DECL_SIZE];
  };
  struct Ttypeseq293832 {
    TGenericSeq Sup;
    Ttype293836* data[SEQ_DECL_SIZE];
  };
  struct Tnodeseq293792 {
    TGenericSeq Sup;
    Tnode293798* data[SEQ_DECL_SIZE];
  };
  struct TY293956 {
    TGenericSeq Sup;
    TY293957 data[SEQ_DECL_SIZE];
  };
  struct TY293925 {
    TGenericSeq Sup;
    Tinstantiation293820* data[SEQ_DECL_SIZE];
  };
  struct Tsymseq293800 {
    TGenericSeq Sup;
    Tsym293830* data[SEQ_DECL_SIZE];
  };
  struct Trunkseq269029 {
    TGenericSeq Sup;
    Trunk269027* data[SEQ_DECL_SIZE];
  };
  N_NIMCALL(NU8, classify_329666)(Ttype293836* t);
  N_NIMCALL(Ttype293836*, skiptypes_297099)(Ttype293836* t, NU64 kinds);
  N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
  static N_INLINE(NIM_BOOL, isintlit_321222)(Ttype293836* t);
  static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
  static N_INLINE(void, copymem_7478)(void* dest, void* source, NI size);
  N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
  N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
  static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
  static N_INLINE(void, addtypeflags_323211)(NimStringDesc** name, Ttype293836* typ);
  N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
  N_NIMCALL(NimStringDesc*, typetostring_321017)(Ttype293836* typ, NU8 prefer);
  N_NIMCALL(NI, sonslen_296327)(Ttype293836* n);
  N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
  N_NIMCALL(Ttype293836*, base_321021)(Ttype293836* t);
  N_NIMCALL(NI, len_296339)(Ttype293836* n);
  N_NIMCALL(void, internalerror_197113)(NimStringDesc* errmsg);
  N_NIMCALL(NimStringDesc*, HEX24_197185)(TY204019 x);
  N_NIMCALL(NimStringDesc*, rendertree_312044)(Tnode293798* n, NU8 renderflags);
  N_NIMCALL(NimStringDesc*, rangetostr_323024)(Tnode293798* n);
  N_NIMCALL(NimStringDesc*, valuetostring_323017)(Tnode293798* a);
  N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f);
  N_NIMCALL(NI, sonslen_296351)(Tnode293798* n);
  N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newlen);
  static N_INLINE(NI, len_294062)(Tnode293798* n);
  static N_INLINE(Tnode293798*, HEX5BHEX5D_294238)(Tnode293798* n, NI i);
  static N_INLINE(void, addsep_109376)(NimStringDesc** dest, NimStringDesc* sep, NI startlen);
  N_NIMCALL(NimStringDesc*, HEX24_296069)(NI16 x);
  N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
  N_NIMCALL(Ttype293836*, elemtype_321383)(Ttype293836* t);
  N_NIMCALL(Ttype293836*, lastson_296377)(Ttype293836* n);
  N_NIMCALL(void, initsametypeclosure_325252)(Tsametypeclosure325233* Result);
  N_NOINLINE(void, chckNil)(void* p);
  N_NIMCALL(NIM_BOOL, sametypeaux_325384)(Ttype293836* x, Ttype293836* y, Tsametypeclosure325233* c);
  N_NIMCALL(Ttype293836*, skipgenericalias_326281)(Ttype293836* t);
  N_NIMCALL(NIM_BOOL, isgenericalias_326259)(Ttype293836* t);
  static N_INLINE(NIM_BOOL, sameflags_326297)(Ttype293836* a, Ttype293836* b);
  N_NIMCALL(NIM_BOOL, exprstructuralequivalent_319311)(Tnode293798* a, Tnode293798* b, NIM_BOOL strictsymequality);
  N_NIMCALL(NIM_BOOL, containsorincl_325255)(Tsametypeclosure325233* c, Ttype293836* a, Ttype293836* b);
  static N_INLINE(NIM_BOOL, contains_325273)(TY325247* a, NI aLen0, TY325247 item);
  static N_INLINE(NI, find_325283)(TY325247* a, NI aLen0, TY325247 item);
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_325319)(TY325247 x, TY325247 y);
  N_NIMCALL(void, TMP2826)(void* p, NI op);
  N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
  N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
  N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq, NI elemsize);
  N_NIMCALL(NIM_BOOL, sameobjectstructures_326205)(Ttype293836* a, Ttype293836* b, Tsametypeclosure325233* c);
  N_NIMCALL(NIM_BOOL, sametypeornilaux_325390)(Ttype293836* a, Ttype293836* b, Tsametypeclosure325233* c);
  N_NIMCALL(NIM_BOOL, sameobjecttree_326082)(Tnode293798* a, Tnode293798* b, Tsametypeclosure325233* c);
  static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
  static N_INLINE(NIM_BOOL, equalmem_7488)(void* a, void* b, NI size);
  N_NIMCALL(NIM_BOOL, sametuple_325840)(Ttype293836* a, Ttype293836* b, Tsametypeclosure325233* c);
  N_NIMCALL(void, internalerror_197100)(Tlineinfo192336 info, NimStringDesc* errmsg);
  N_NIMCALL(NIM_BOOL, samechildrenaux_326232)(Ttype293836* a, Ttype293836* b, Tsametypeclosure325233* c);
  N_NIMCALL(NIM_BOOL, sameconstraints_325562)(Tnode293798* a, Tnode293798* b);
  N_NIMCALL(NIM_BOOL, samevalue_300168)(Tnode293798* a, Tnode293798* b);
  N_NIMCALL(NIM_BOOL, iterovertype_321038)(Ttype293836* t, Ttypeiter321025 iter, TNimObject* closure);
  N_NIMCALL(void, initintset_269885)(Intset269031* Result);
  N_NIMCALL(NIM_BOOL, iterovertypeaux_321861)(Intset269031* marker, Ttype293836* t, Ttypeiter321025 iter, TNimObject* closure);
  N_NIMCALL(NIM_BOOL, containsorincl_269862)(Intset269031* s, NI key);
  N_NIMCALL(NIM_BOOL, iterovernode_321868)(Intset269031* marker, Tnode293798* n, Ttypeiter321025 iter, TNimObject* closure);
  N_NIMCALL(NIM_BOOL, containsgenerictypeiter_329013)(Ttype293836* t, TNimObject* closure);
  N_NIMCALL(NI64, firstord_321001)(Ttype293836* t);
  N_NIMCALL(NI64, getordvalue_321118)(Tnode293798* n);
  N_NIMCALL(void, localerror_197080)(Tlineinfo192336 info, NU16 msg, NimStringDesc* arg);
  N_NIMCALL(NimStringDesc*, reprEnum)(NI e, TNimType* typ);
  N_NIMCALL(NI64, lastord_321004)(Ttype293836* t);
  N_NIMCALL(NI64, lengthord_321007)(Ttype293836* t);
  N_NIMCALL(NIM_BOOL, isordinaltype_321057)(Ttype293836* t);
  N_NIMCALL(NIM_BOOL, compatibleeffectsaux_329175)(Tnode293798* se, Tnode293798* re);
  N_NIMCALL(NI, safeinheritancediff_329152)(Ttype293836* a, Ttype293836* b);
  N_NIMCALL(NI, inheritancediff_327052)(Ttype293836* a, Ttype293836* b);
  N_NIMCALL(NIM_BOOL, sameobjecttypes_326019)(Ttype293836* a, Ttype293836* b);
  N_NIMCALL(NIM_BOOL, isemptycontainer_329730)(Ttype293836* t);
  N_NIMCALL(NI64, computesize_321121)(Ttype293836* typ);
  N_NIMCALL(NI64, computesizeaux_328657)(Ttype293836* typ, NI64* a);
  N_NIMCALL(NI64, align_328649)(NI64 address, NI64 alignment);
  N_NIMCALL(NIM_BOOL, isobjectwithtypefieldpredicate_322309)(Ttype293836* t);
  N_NIMCALL(NI64, computerecsizeaux_328662)(Tnode293798* n, NI64* a, NI64* curroffset);
  N_NIMCALL(Tnode293798*, lastson_296364)(Tnode293798* n);
  N_NIMCALL(NIM_BOOL, sametype_325432)(Ttype293836* a, Ttype293836* b, NU8 flags);
  N_NIMCALL(void, incl_269832)(Intset269031* s, NI key);
  N_NIMCALL(NIM_BOOL, contains_269811)(Intset269031* s, NI key);
  N_NIMCALL(NU8, equalparam_325485)(Tsym293830* a, Tsym293830* b);
  N_NIMCALL(NIM_BOOL, sametypeornil_325442)(Ttype293836* a, Ttype293836* b, NU8 flags);
  N_NIMCALL(Ttype293836*, typeallowedaux_327837)(Intset269031* marker, Ttype293836* typ, NU8 kind, NU8 flags_327845);
  N_NIMCALL(Ttype293836*, typeallowednode_327846)(Intset269031* marker, Tnode293798* n, NU8 kind, NU8 flags);
  N_NIMCALL(Ttype293836*, copytype_296470)(Ttype293836* t, Tsym293830* owner, NIM_BOOL keepid);
  static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
  static N_INLINE(Cell47305*, usrtocell_51440)(void* usr);
  static N_INLINE(void, rtladdzct_52601)(Cell47305* c);
  N_NOINLINE(void, addzct_51417)(Cellseq47321* s, Cell47305* c);
  N_NIMCALL(NimStringDesc*, msgkindtostring_193723)(NU16 kind);
  N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
  N_NIMCALL(Ttype293836*, taketype_329752)(Ttype293836* formal, Ttype293836* arg);
  N_NIMCALL(Tnode293798*, copytree_297822)(Tnode293798* src);
  N_NIMCALL(Tnode293798*, skipconv_329682)(Tnode293798* n);
  N_NIMCALL(NIM_BOOL, searchtypefor_322285)(Ttype293836* t, Ttypepredicate321029 predicate);
  N_NIMCALL(NIM_BOOL, searchtypeforaux_321969)(Ttype293836* t, Ttypepredicate321029 predicate, Intset269031* marker);
  N_NIMCALL(NIM_BOOL, searchtypenodeforaux_321975)(Tnode293798* n, Ttypepredicate321029 p, Intset269031* marker);
  N_NIMCALL(NIM_BOOL, isgcref_322511)(Ttype293836* t);
  N_NIMCALL(NIM_BOOL, canformacycleaux_322601)(Intset269031* marker, Ttype293836* typ, NI startid);
  N_NIMCALL(NIM_BOOL, canformacyclenode_322607)(Intset269031* marker, Tnode293798* n, NI startid);
  N_NIMCALL(NU8, analyseobjectwithtypefieldaux_322384)(Ttype293836* t, Intset269031* marker);
  N_NIMCALL(NIM_BOOL, ishiddenpointer_322582)(Ttype293836* t);
  static N_INLINE(NIM_BOOL, iscompiletimeonly_329506)(Ttype293836* t);
  N_NIMCALL(NIM_BOOL, HEX3DHEX3D_329527)(Ttypeseq293832* x, Ttypeseq293832* y);
  STRING_LITERAL(TMP2160, "", 0);
  STRING_LITERAL(TMP2161, " literal(", 9);
  STRING_LITERAL(TMP2162, ")", 1);
  STRING_LITERAL(TMP2163, " not nil", 8);
  STRING_LITERAL(TMP2164, "None", 4);
  STRING_LITERAL(TMP2165, "bool", 4);
  STRING_LITERAL(TMP2166, "Char", 4);
  STRING_LITERAL(TMP2167, "empty", 5);
  STRING_LITERAL(TMP2168, "Array Constructor [$1]", 22);
  STRING_LITERAL(TMP2169, "nil", 3);
  STRING_LITERAL(TMP2170, "untyped", 7);
  STRING_LITERAL(TMP2171, "typed", 5);
  STRING_LITERAL(TMP2172, "typeDesc", 8);
  STRING_LITERAL(TMP2173, "GenericInvocation", 17);
  STRING_LITERAL(TMP2174, "GenericBody", 11);
  STRING_LITERAL(TMP2175, "GenericInst", 11);
  STRING_LITERAL(TMP2176, "GenericParam", 12);
  STRING_LITERAL(TMP2177, "distinct $1", 11);
  STRING_LITERAL(TMP2178, "enum", 4);
  STRING_LITERAL(TMP2179, "ordinal[$1]", 11);
  STRING_LITERAL(TMP2180, "array[$1, $2]", 13);
  STRING_LITERAL(TMP2181, "object", 6);
  STRING_LITERAL(TMP2182, "tuple", 5);
  STRING_LITERAL(TMP2183, "set[$1]", 7);
  STRING_LITERAL(TMP2184, "range[$1]", 9);
  STRING_LITERAL(TMP2185, "ptr ", 4);
  STRING_LITERAL(TMP2186, "ref ", 4);
  STRING_LITERAL(TMP2187, "var ", 4);
  STRING_LITERAL(TMP2188, "seq[$1]", 7);
  STRING_LITERAL(TMP2189, "proc", 4);
  STRING_LITERAL(TMP2190, "pointer", 7);
  STRING_LITERAL(TMP2191, "OpenArray[$1]", 13);
  STRING_LITERAL(TMP2192, "string", 6);
  STRING_LITERAL(TMP2193, "CString", 7);
  STRING_LITERAL(TMP2194, "Forward", 7);
  STRING_LITERAL(TMP2195, "int", 3);
  STRING_LITERAL(TMP2196, "int8", 4);
  STRING_LITERAL(TMP2197, "int16", 5);
  STRING_LITERAL(TMP2198, "int32", 5);
  STRING_LITERAL(TMP2199, "int64", 5);
  STRING_LITERAL(TMP2200, "float", 5);
  STRING_LITERAL(TMP2201, "float32", 7);
  STRING_LITERAL(TMP2202, "float64", 7);
  STRING_LITERAL(TMP2203, "float128", 8);
  STRING_LITERAL(TMP2204, "uint", 4);
  STRING_LITERAL(TMP2205, "uint8", 5);
  STRING_LITERAL(TMP2206, "uint16", 6);
  STRING_LITERAL(TMP2207, "uint32", 6);
  STRING_LITERAL(TMP2208, "uint64", 6);
  STRING_LITERAL(TMP2209, "bignum", 6);
  STRING_LITERAL(TMP2210, "const ", 6);
  STRING_LITERAL(TMP2211, "!", 1);
  STRING_LITERAL(TMP2212, "varargs[$1]", 11);
  STRING_LITERAL(TMP2213, "iter[$1]", 8);
  STRING_LITERAL(TMP2214, "Error Type", 10);
  STRING_LITERAL(TMP2215, "BuiltInTypeClass", 16);
  STRING_LITERAL(TMP2216, "UserTypeClass", 13);
  STRING_LITERAL(TMP2217, "UserTypeClassInst", 17);
  STRING_LITERAL(TMP2218, "CompositeTypeClass", 18);
  STRING_LITERAL(TMP2219, "and", 3);
  STRING_LITERAL(TMP2220, "or", 2);
  STRING_LITERAL(TMP2221, "not", 3);
  STRING_LITERAL(TMP2222, "any", 3);
  STRING_LITERAL(TMP2223, "static", 6);
  STRING_LITERAL(TMP2224, "TypeFromExpr", 12);
  STRING_LITERAL(TMP2225, "FieldAccessor", 13);
  STRING_LITERAL(TMP2226, "void", 4);
  NIM_CONST TY323206 typetostr_323203 = {((NimStringDesc*) &TMP2164),
  ((NimStringDesc*) &TMP2165),
  ((NimStringDesc*) &TMP2166),
  ((NimStringDesc*) &TMP2167),
  ((NimStringDesc*) &TMP2168),
  ((NimStringDesc*) &TMP2169),
  ((NimStringDesc*) &TMP2170),
  ((NimStringDesc*) &TMP2171),
  ((NimStringDesc*) &TMP2172),
  ((NimStringDesc*) &TMP2173),
  ((NimStringDesc*) &TMP2174),
  ((NimStringDesc*) &TMP2175),
  ((NimStringDesc*) &TMP2176),
  ((NimStringDesc*) &TMP2177),
  ((NimStringDesc*) &TMP2178),
  ((NimStringDesc*) &TMP2179),
  ((NimStringDesc*) &TMP2180),
  ((NimStringDesc*) &TMP2181),
  ((NimStringDesc*) &TMP2182),
  ((NimStringDesc*) &TMP2183),
  ((NimStringDesc*) &TMP2184),
  ((NimStringDesc*) &TMP2185),
  ((NimStringDesc*) &TMP2186),
  ((NimStringDesc*) &TMP2187),
  ((NimStringDesc*) &TMP2188),
  ((NimStringDesc*) &TMP2189),
  ((NimStringDesc*) &TMP2190),
  ((NimStringDesc*) &TMP2191),
  ((NimStringDesc*) &TMP2192),
  ((NimStringDesc*) &TMP2193),
  ((NimStringDesc*) &TMP2194),
  ((NimStringDesc*) &TMP2195),
  ((NimStringDesc*) &TMP2196),
  ((NimStringDesc*) &TMP2197),
  ((NimStringDesc*) &TMP2198),
  ((NimStringDesc*) &TMP2199),
  ((NimStringDesc*) &TMP2200),
  ((NimStringDesc*) &TMP2201),
  ((NimStringDesc*) &TMP2202),
  ((NimStringDesc*) &TMP2203),
  ((NimStringDesc*) &TMP2204),
  ((NimStringDesc*) &TMP2205),
  ((NimStringDesc*) &TMP2206),
  ((NimStringDesc*) &TMP2207),
  ((NimStringDesc*) &TMP2208),
  ((NimStringDesc*) &TMP2209),
  ((NimStringDesc*) &TMP2210),
  ((NimStringDesc*) &TMP2211),
  ((NimStringDesc*) &TMP2212),
  ((NimStringDesc*) &TMP2213),
  ((NimStringDesc*) &TMP2214),
  ((NimStringDesc*) &TMP2215),
  ((NimStringDesc*) &TMP2216),
  ((NimStringDesc*) &TMP2217),
  ((NimStringDesc*) &TMP2218),
  ((NimStringDesc*) &TMP2219),
  ((NimStringDesc*) &TMP2220),
  ((NimStringDesc*) &TMP2221),
  ((NimStringDesc*) &TMP2222),
  ((NimStringDesc*) &TMP2223),
  ((NimStringDesc*) &TMP2224),
  ((NimStringDesc*) &TMP2225),
  ((NimStringDesc*) &TMP2226)}
  ;
  STRING_LITERAL(TMP2227, "int literal(", 12);
  STRING_LITERAL(TMP2228, ", ", 2);
  STRING_LITERAL(TMP2229, "typedesc", 8);
  STRING_LITERAL(TMP2230, "typedesc[", 9);
  STRING_LITERAL(TMP2231, "]", 1);
  STRING_LITERAL(TMP2233, "compiler/types.nim", 18);
  NIM_CONST TY204019 TMP2232 = {((NimStringDesc*) &TMP2233),
  ((NI) 456)}
  ;
  STRING_LITERAL(TMP2234, "static[", 7);
  STRING_LITERAL(TMP2235, "(", 1);
  NIM_CONST TY204019 TMP2236 = {((NimStringDesc*) &TMP2233),
  ((NI) 463)}
  ;
  STRING_LITERAL(TMP2237, "var", 3);
  STRING_LITERAL(TMP2238, "ref", 3);
  STRING_LITERAL(TMP2239, "ptr", 3);
  STRING_LITERAL(TMP2240, "seq", 3);
  STRING_LITERAL(TMP2241, "array", 5);
  STRING_LITERAL(TMP2242, "set", 3);
  STRING_LITERAL(TMP2243, "range", 5);
  STRING_LITERAL(TMP2244, "distinct", 8);
  STRING_LITERAL(TMP2245, "openarray", 9);
  STRING_LITERAL(TMP2246, "[", 1);
  STRING_LITERAL(TMP2247, " and ", 5);
  STRING_LITERAL(TMP2248, " or ", 4);
  STRING_LITERAL(TMP2249, "not ", 4);
  NIM_CONST TY204019 TMP2250 = {((NimStringDesc*) &TMP2233),
  ((NI) 494)}
  ;
  STRING_LITERAL(TMP2251, "array[", 6);
  STRING_LITERAL(TMP2252, "<invalid value>", 15);
  STRING_LITERAL(TMP2253, "..", 2);
  STRING_LITERAL(TMP2254, "Array constructor[", 18);
  STRING_LITERAL(TMP2255, "seq[", 4);
  STRING_LITERAL(TMP2256, "ordinal[", 8);
  STRING_LITERAL(TMP2257, "set[", 4);
  STRING_LITERAL(TMP2258, "openarray[", 10);
  STRING_LITERAL(TMP2259, "distinct ", 9);
  STRING_LITERAL(TMP2260, "tuple[", 6);
  STRING_LITERAL(TMP2261, ": ", 2);
  STRING_LITERAL(TMP2262, "tuple[]", 7);
  STRING_LITERAL(TMP2263, "range ", 6);
  STRING_LITERAL(TMP2264, "iterator (", 10);
  STRING_LITERAL(TMP2265, "proc (", 6);
  extern NIM_CONST TY293016 Callingconvtostr_293013;
  STRING_LITERAL(TMP2276, "noSideEffect", 12);
  STRING_LITERAL(TMP2277, "gcsafe", 6);
  STRING_LITERAL(TMP2278, "locks: ", 7);
  STRING_LITERAL(TMP2281, "{.", 2);
  STRING_LITERAL(TMP2282, ".}", 2);
  STRING_LITERAL(TMP2827, "sameTuple", 9);
  NIM_CONST TY204019 TMP2828 = {((NimStringDesc*) &TMP2233),
  ((NI) 742)}
  ;
  STRING_LITERAL(TMP2837, "invalid kind for first(", 23);
  STRING_LITERAL(TMP2838, "invalid kind for last(", 22);
  NIM_CONST NU64 abstractinst_321071 = IL64(211106232576256);
  NIM_CONST TY204019 TMP2841 = {((NimStringDesc*) &TMP2233),
  ((NI) 1392)}
  ;
  NIM_CONST TY204019 TMP2842 = {((NimStringDesc*) &TMP2233),
  ((NI) 1393)}
  ;
  STRING_LITERAL(TMP2850, "getProcHeader", 13);
  STRING_LITERAL(TMP3026, "computeRecSizeAux(record case branch)", 37);
  STRING_LITERAL(TMP3027, "getSize: ", 9);
  NIM_CONST TY204019 TMP3592 = {((NimStringDesc*) &TMP2233),
  ((NI) 1369)}
  ;
  STRING_LITERAL(TMP3607, " = ", 3);
  STRING_LITERAL(TMP3608, ") ", 2);
  STRING_LITERAL(TMP3658, "searchTypeNodeForAux(record case branch)", 40);
  STRING_LITERAL(TMP3659, "searchTypeNodeForAux()", 22);
  TNimType NTI325247; /* tuple[a: int, b: int] */
  extern TNimType NTI104; /* int */
  TNimType NTI325246; /* seq[tuple[a: int, b: int]] */
  extern NI intsize_177622;
  extern TNimType NTI293242; /* TTypeKind */
  extern NI floatsize_177623;
  extern NI ptrsize_177624;
  extern Gcheap49818 gch_49855;
  
  N_NIMCALL(NU8, classify_329666)(Ttype293836* t) {
  	NU8 result;
  	result = 0;
  	{
  		if (!(t == NIM_NIL)) goto LA3;
  		result = ((NU8) 0);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		Ttype293836* LOC6;
  		LOC6 = 0;
  		LOC6 = skiptypes_297099(t, IL64(211106242013440));
  		switch ((*LOC6).kind) {
  		case ((NU8) 36) ... ((NU8) 39):
  		{
  			result = ((NU8) 2);
  		}
  		break;
  		case ((NU8) 31) ... ((NU8) 35):
  		case ((NU8) 40) ... ((NU8) 44):
  		case ((NU8) 1):
  		case ((NU8) 2):
  		case ((NU8) 14):
  		{
  			result = ((NU8) 1);
  		}
  		break;
  		default:
  		{
  			result = ((NU8) 0);
  		}
  		break;
  		}
  	}
  	LA1: ;
  	return result;
  }
  
  N_NIMCALL(Tnode293798*, skipconv_329682)(Tnode293798* n) {
  	Tnode293798* result;
  	result = 0;
  	result = n;
  	switch ((*n).kind) {
  	case ((NU8) 67):
  	case ((NU8) 66):
  	case ((NU8) 70):
  	case ((NU8) 68):
  	case ((NU8) 69):
  	{
  		{
  			NU8 LOC4;
  			NU8 LOC5;
  			LOC4 = 0;
  			LOC4 = classify_329666((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
  			LOC5 = 0;
  			LOC5 = classify_329666((*n).typ);
  			if (!(LOC4 == LOC5)) goto LA6;
  			result = (*n).kindU.S6.sons->data[((NI) 0)];
  		}
  		LA6: ;
  	}
  	break;
  	case ((NU8) 58):
  	case ((NU8) 59):
  	case ((NU8) 60):
  	{
  		{
  			NU8 LOC11;
  			NU8 LOC12;
  			LOC11 = 0;
  			LOC11 = classify_329666((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
  			LOC12 = 0;
  			LOC12 = classify_329666((*n).typ);
  			if (!(LOC11 == LOC12)) goto LA13;
  			result = (*n).kindU.S6.sons->data[((NI) 1)];
  		}
  		LA13: ;
  	}
  	break;
  	default:
  	{
  	}
  	break;
  	}
  	return result;
  }
  
  static N_INLINE(NIM_BOOL, isintlit_321222)(Ttype293836* t) {
  	NIM_BOOL result;
  	NIM_BOOL LOC1;
  	NIM_BOOL LOC2;
  	result = 0;
  	LOC1 = 0;
  	LOC2 = 0;
  	LOC2 = ((*t).kind == ((NU8) 31));
  	if (!(LOC2)) goto LA3;
  	LOC2 = !(((*t).n == NIM_NIL));
  	LA3: ;
  	LOC1 = LOC2;
  	if (!(LOC1)) goto LA4;
  	LOC1 = ((*(*t).n).kind == ((NU8) 6));
  	LA4: ;
  	result = LOC1;
  	return result;
  }
  
  static N_INLINE(void, copymem_7478)(void* dest, void* source, NI size) {
  	void* LOC1;
  	LOC1 = 0;
  	LOC1 = memcpy(dest, source, ((size_t) (size)));
  }
  
  static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
  	copymem_7478(((void*) ((&(*dest).data[((*dest).Sup.len)- 0]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
  	(*dest).Sup.len += (*src).Sup.len;
  }
  
  static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c) {
  	(*dest).data[((*dest).Sup.len)- 0] = c;
  	(*dest).data[((NI)((*dest).Sup.len + ((NI) 1)))- 0] = 0;
  	(*dest).Sup.len += ((NI) 1);
  }
  
  static N_INLINE(void, addtypeflags_323211)(NimStringDesc** name, Ttype293836* typ) {
  	{
  		if (!(((*typ).flags &(1U<<((NU)(((NU8) 16))&31U)))!=0)) goto LA3;
  		(*name) = resizeString((*name), 8);
  appendString((*name), ((NimStringDesc*) &TMP2163));
  	}
  	LA3: ;
  }
  
  N_NIMCALL(Ttype293836*, base_321021)(Ttype293836* t) {
  	Ttype293836* result;
  	result = 0;
  	result = (*t).sons->data[((NI) 0)];
  	return result;
  }
  
  N_NIMCALL(NimStringDesc*, valuetostring_323017)(Tnode293798* a) {
  	NimStringDesc* result;
  	result = 0;
  	switch ((*a).kind) {
  	case ((NU8) 5) ... ((NU8) 15):
  	{
  		result = nimInt64ToStr((*a).kindU.S1.intval);
  	}
  	break;
  	case ((NU8) 16) ... ((NU8) 19):
  	{
  		result = nimFloatToStr((*a).kindU.S2.floatval);
  	}
  	break;
  	case ((NU8) 20) ... ((NU8) 22):
  	{
  		result = copyString((*a).kindU.S3.strval);
  	}
  	break;
  	default:
  	{
  		result = copyString(((NimStringDesc*) &TMP2252));
  	}
  	break;
  	}
  	return result;
  }
  
  N_NIMCALL(NimStringDesc*, rangetostr_323024)(Tnode293798* n) {
  	NimStringDesc* result;
  	NimStringDesc* LOC1;
  	NimStringDesc* LOC2;
  	NimStringDesc* LOC3;
  	result = 0;
  	LOC1 = 0;
  	LOC2 = 0;
  	LOC2 = valuetostring_323017((*n).kindU.S6.sons->data[((NI) 0)]);
  	LOC3 = 0;
  	LOC3 = valuetostring_323017((*n).kindU.S6.sons->data[((NI) 1)]);
  	LOC1 = rawNewString(LOC2->Sup.len + LOC3->Sup.len + 2);
  appendString(LOC1, LOC2);
  appendString(LOC1, ((NimStringDesc*) &TMP2253));
  appendString(LOC1, LOC3);
  	result = LOC1;
  	return result;
  }
  
  static N_INLINE(NI, len_294062)(Tnode293798* n) {
  	NI result;
  	result = 0;
  	{
  		if (!(*n).kindU.S6.sons == 0) goto LA3;
  		result = ((NI) 0);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		result = ((*n).kindU.S6.sons ? (*n).kindU.S6.sons->Sup.len : 0);
  	}
  	LA1: ;
  	return result;
  }
  
  static N_INLINE(Tnode293798*, HEX5BHEX5D_294238)(Tnode293798* n, NI i) {
  	Tnode293798* result;
  	result = 0;
  	result = (*n).kindU.S6.sons->data[i];
  	return result;
  }
  
  static N_INLINE(void, addsep_109376)(NimStringDesc** dest, NimStringDesc* sep, NI startlen) {
  	{
  		if (!(((NI) (startlen)) < ((*dest) ? (*dest)->Sup.len : 0))) goto LA3;
  		(*dest) = resizeString((*dest), sep->Sup.len + 0);
  appendString((*dest), sep);
  	}
  	LA3: ;
  }
  
  N_NIMCALL(NimStringDesc*, typetostring_321017)(Ttype293836* typ, NU8 prefer) {
  	NimStringDesc* result;
  	Ttype293836* t;
  {	result = 0;
  	t = typ;
  	result = copyString(((NimStringDesc*) &TMP2160));
  	{
  		if (!(t == NIM_NIL)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		NIM_BOOL LOC7;
  		NIM_BOOL LOC8;
  		LOC7 = 0;
  		LOC8 = 0;
  		LOC8 = ((25 &(1U<<((NU)(prefer)&7U)))!=0);
  		if (!(LOC8)) goto LA9;
  		LOC8 = !(((*t).sym == NIM_NIL));
  		LA9: ;
  		LOC7 = LOC8;
  		if (!(LOC7)) goto LA10;
  		LOC7 = !((((*(*t).sym).flags &(1U<<((NU)(((NU8) 29))&31U)))!=0));
  		LA10: ;
  		if (!LOC7) goto LA11;
  		{
  			NIM_BOOL LOC15;
  			NimStringDesc* LOC19;
  			NimStringDesc* LOC20;
  			LOC15 = 0;
  			LOC15 = ((*t).kind == ((NU8) 31));
  			if (!(LOC15)) goto LA16;
  			LOC15 = isintlit_321222(t);
  			LA16: ;
  			if (!LOC15) goto LA17;
  			LOC19 = 0;
  			LOC20 = 0;
  			LOC20 = nimInt64ToStr((*(*t).n).kindU.S1.intval);
  			LOC19 = rawNewString((*(*(*t).sym).name).s->Sup.len + LOC20->Sup.len + 10);
  appendString(LOC19, (*(*(*t).sym).name).s);
  appendString(LOC19, ((NimStringDesc*) &TMP2161));
  appendString(LOC19, LOC20);
  appendString(LOC19, ((NimStringDesc*) &TMP2162));
  			result = LOC19;
  		}
  		goto LA13;
  		LA17: ;
  		{
  			NIM_BOOL LOC22;
  			LOC22 = 0;
  			LOC22 = (prefer == ((NU8) 0));
  			if (LOC22) goto LA23;
  			LOC22 = (*(*t).sym).owner == 0;
  			LA23: ;
  			if (!LOC22) goto LA24;
  			result = copyString((*(*(*t).sym).name).s);
  		}
  		goto LA13;
  		LA24: ;
  		{
  			NimStringDesc* LOC27;
  			LOC27 = 0;
  			LOC27 = rawNewString((*(*(*(*t).sym).owner).name).s->Sup.len + (*(*(*t).sym).name).s->Sup.len + 1);
  appendString(LOC27, (*(*(*(*t).sym).owner).name).s);
  appendChar(LOC27, 46);
  appendString(LOC27, (*(*(*t).sym).name).s);
  			result = LOC27;
  		}
  		LA13: ;
  		addtypeflags_323211((&result), t);
  		goto BeforeRet;
  	}
  	LA11: ;
  	switch ((*t).kind) {
  	case ((NU8) 31):
  	{
  		{
  			NIM_BOOL LOC31;
  			NIM_BOOL LOC32;
  			LOC31 = 0;
  			LOC32 = 0;
  			LOC32 = isintlit_321222(t);
  			LOC31 = !(LOC32);
  			if (LOC31) goto LA33;
  			LOC31 = (prefer == ((NU8) 2));
  			LA33: ;
  			if (!LOC31) goto LA34;
  			result = copyString(typetostr_323203[((*t).kind)- 0]);
  		}
  		goto LA29;
  		LA34: ;
  		{
  			{
  				if (!(prefer == ((NU8) 4))) goto LA39;
  				result = nimInt64ToStr((*(*t).n).kindU.S1.intval);
  			}
  			goto LA37;
  			LA39: ;
  			{
  				NimStringDesc* LOC42;
  				NimStringDesc* LOC43;
  				LOC42 = 0;
  				LOC43 = 0;
  				LOC43 = nimInt64ToStr((*(*t).n).kindU.S1.intval);
  				LOC42 = rawNewString(LOC43->Sup.len + 13);
  appendString(LOC42, ((NimStringDesc*) &TMP2227));
  appendString(LOC42, LOC43);
  appendString(LOC42, ((NimStringDesc*) &TMP2162));
  				result = LOC42;
  			}
  			LA37: ;
  		}
  		LA29: ;
  	}
  	break;
  	case ((NU8) 10):
  	case ((NU8) 11):
  	case ((NU8) 9):
  	{
  		NimStringDesc* LOC45;
  		NimStringDesc* LOC46;
  		LOC45 = 0;
  		LOC46 = 0;
  		LOC46 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  		LOC45 = rawNewString(LOC46->Sup.len + 1);
  appendString(LOC45, LOC46);
  appendChar(LOC45, 91);
  		result = LOC45;
  		{
  			NI i_323360;
  			NI HEX3Atmp_323967;
  			NI LOC48;
  			NI res_323970;
  			i_323360 = 0;
  			HEX3Atmp_323967 = 0;
  			LOC48 = 0;
  			LOC48 = sonslen_296327(t);
  			HEX3Atmp_323967 = (NI)((NI)(LOC48 - ((NI) 1)) - ((NI) (!(((*t).kind == ((NU8) 9))))));
  			res_323970 = ((NI) 1);
  			{
  				while (1) {
  					NimStringDesc* LOC55;
  					if (!(res_323970 <= HEX3Atmp_323967)) goto LA50;
  					i_323360 = res_323970;
  					{
  						if (!(((NI) 1) < i_323360)) goto LA53;
  						result = resizeString(result, 2);
  appendString(result, ((NimStringDesc*) &TMP2228));
  					}
  					LA53: ;
  					LOC55 = 0;
  					LOC55 = typetostring_321017((*t).sons->data[i_323360], ((NU8) 4));
  					result = resizeString(result, LOC55->Sup.len + 0);
  appendString(result, LOC55);
  					res_323970 += ((NI) 1);
  				} LA50: ;
  			}
  		}
  		result = addChar(result, 93);
  	}
  	break;
  	case ((NU8) 8):
  	{
  		{
  			Ttype293836* LOC59;
  			LOC59 = 0;
  			LOC59 = base_321021(t);
  			if (!((*LOC59).kind == ((NU8) 0))) goto LA60;
  			result = copyString(((NimStringDesc*) &TMP2229));
  		}
  		goto LA57;
  		LA60: ;
  		{
  			NimStringDesc* LOC63;
  			Ttype293836* LOC64;
  			NimStringDesc* LOC65;
  			LOC63 = 0;
  			LOC64 = 0;
  			LOC64 = base_321021(t);
  			LOC65 = 0;
  			LOC65 = typetostring_321017(LOC64, ((NU8) 0));
  			LOC63 = rawNewString(LOC65->Sup.len + 10);
  appendString(LOC63, ((NimStringDesc*) &TMP2230));
  appendString(LOC63, LOC65);
  appendString(LOC63, ((NimStringDesc*) &TMP2231));
  			result = LOC63;
  		}
  		LA57: ;
  	}
  	break;
  	case ((NU8) 59):
  	{
  		{
  			NI LOC69;
  			NimStringDesc* LOC72;
  			LOC69 = 0;
  			LOC69 = len_296339(t);
  			if (!!((((NI) 0) < LOC69))) goto LA70;
  			LOC72 = 0;
  			LOC72 = HEX24_197185(TMP2232);
  			internalerror_197113(LOC72);
  		}
  		LA70: ;
  		{
  			NIM_BOOL LOC75;
  			LOC75 = 0;
  			LOC75 = (prefer == ((NU8) 4));
  			if (!(LOC75)) goto LA76;
  			LOC75 = !(((*t).n == NIM_NIL));
  			LA76: ;
  			if (!LOC75) goto LA77;
  			result = rendertree_312044((*t).n, 0);
  		}
  		goto LA73;
  		LA77: ;
  		{
  			NimStringDesc* LOC80;
  			NimStringDesc* LOC81;
  			LOC80 = 0;
  			LOC81 = 0;
  			LOC81 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  			LOC80 = rawNewString(LOC81->Sup.len + 8);
  appendString(LOC80, ((NimStringDesc*) &TMP2234));
  appendString(LOC80, LOC81);
  appendString(LOC80, ((NimStringDesc*) &TMP2231));
  			result = LOC80;
  			{
  				NimStringDesc* LOC86;
  				NimStringDesc* LOC87;
  				if (!!(((*t).n == NIM_NIL))) goto LA84;
  				LOC86 = 0;
  				LOC87 = 0;
  				LOC87 = rendertree_312044((*t).n, 0);
  				LOC86 = rawNewString(LOC87->Sup.len + 2);
  appendString(LOC86, ((NimStringDesc*) &TMP2235));
  appendString(LOC86, LOC87);
  appendString(LOC86, ((NimStringDesc*) &TMP2162));
  				result = resizeString(result, LOC86->Sup.len + 0);
  appendString(result, LOC86);
  			}
  			LA84: ;
  		}
  		LA73: ;
  	}
  	break;
  	case ((NU8) 52):
  	{
  		{
  			NIM_BOOL LOC91;
  			NimStringDesc* LOC95;
  			LOC91 = 0;
  			LOC91 = !(((*t).sym == NIM_NIL));
  			if (!(LOC91)) goto LA92;
  			LOC91 = !(((*(*t).sym).owner == NIM_NIL));
  			LA92: ;
  			if (!!(LOC91)) goto LA93;
  			LOC95 = 0;
  			LOC95 = HEX24_197185(TMP2236);
  			internalerror_197113(LOC95);
  		}
  		LA93: ;
  		result = copyString((*(*(*(*t).sym).owner).name).s);
  		goto BeforeRet;
  	}
  	break;
  	case ((NU8) 51):
  	{
  		Ttype293836* LOC97;
  		LOC97 = 0;
  		LOC97 = base_321021(t);
  		switch ((*LOC97).kind) {
  		case ((NU8) 23):
  		{
  			result = copyString(((NimStringDesc*) &TMP2237));
  		}
  		break;
  		case ((NU8) 22):
  		{
  			result = copyString(((NimStringDesc*) &TMP2238));
  		}
  		break;
  		case ((NU8) 21):
  		{
  			result = copyString(((NimStringDesc*) &TMP2239));
  		}
  		break;
  		case ((NU8) 24):
  		{
  			result = copyString(((NimStringDesc*) &TMP2240));
  		}
  		break;
  		case ((NU8) 16):
  		{
  			result = copyString(((NimStringDesc*) &TMP2241));
  		}
  		break;
  		case ((NU8) 19):
  		{
  			result = copyString(((NimStringDesc*) &TMP2242));
  		}
  		break;
  		case ((NU8) 20):
  		{
  			result = copyString(((NimStringDesc*) &TMP2243));
  		}
  		break;
  		case ((NU8) 13):
  		{
  			result = copyString(((NimStringDesc*) &TMP2244));
  		}
  		break;
  		case ((NU8) 25):
  		{
  			result = copyString(((NimStringDesc*) &TMP2189));
  		}
  		break;
  		case ((NU8) 17):
  		{
  			result = copyString(((NimStringDesc*) &TMP2181));
  		}
  		break;
  		case ((NU8) 18):
  		{
  			result = copyString(((NimStringDesc*) &TMP2182));
  		}
  		break;
  		case ((NU8) 27):
  		{
  			result = copyString(((NimStringDesc*) &TMP2245));
  		}
  		break;
  		default:
  		{
  			Ttype293836* LOC111;
  			LOC111 = 0;
  			LOC111 = base_321021(t);
  			result = copyString(typetostr_323203[((*LOC111).kind)- 0]);
  		}
  		break;
  		}
  	}
  	break;
  	case ((NU8) 53):
  	{
  		Ttype293836* body;
  		NimStringDesc* LOC113;
  		body = base_321021(t);
  		LOC113 = 0;
  		LOC113 = rawNewString((*(*(*body).sym).name).s->Sup.len + 1);
  appendString(LOC113, (*(*(*body).sym).name).s);
  appendString(LOC113, ((NimStringDesc*) &TMP2246));
  		result = LOC113;
  		{
  			NI i_323458;
  			NI HEX3Atmp_323975;
  			NI LOC115;
  			NI res_323978;
  			i_323458 = 0;
  			HEX3Atmp_323975 = 0;
  			LOC115 = 0;
  			LOC115 = sonslen_296327(t);
  			HEX3Atmp_323975 = (NI)(LOC115 - ((NI) 2));
  			res_323978 = ((NI) 1);
  			{
  				while (1) {
  					NimStringDesc* LOC122;
  					if (!(res_323978 <= HEX3Atmp_323975)) goto LA117;
  					i_323458 = res_323978;
  					{
  						if (!(((NI) 1) < i_323458)) goto LA120;
  						result = resizeString(result, 2);
  appendString(result, ((NimStringDesc*) &TMP2228));
  					}
  					LA120: ;
  					LOC122 = 0;
  					LOC122 = typetostring_321017((*t).sons->data[i_323458], ((NU8) 0));
  					result = resizeString(result, LOC122->Sup.len + 0);
  appendString(result, LOC122);
  					res_323978 += ((NI) 1);
  				} LA117: ;
  			}
  		}
  		result = resizeString(result, 1);
  appendString(result, ((NimStringDesc*) &TMP2231));
  	}
  	break;
  	case ((NU8) 55):
  	{
  		NimStringDesc* LOC124;
  		NimStringDesc* LOC125;
  		NimStringDesc* LOC126;
  		LOC124 = 0;
  		LOC125 = 0;
  		LOC125 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  		LOC126 = 0;
  		LOC126 = typetostring_321017((*t).sons->data[((NI) 1)], ((NU8) 0));
  		LOC124 = rawNewString(LOC125->Sup.len + LOC126->Sup.len + 5);
  appendString(LOC124, LOC125);
  appendString(LOC124, ((NimStringDesc*) &TMP2247));
  appendString(LOC124, LOC126);
  		result = LOC124;
  	}
  	break;
  	case ((NU8) 56):
  	{
  		NimStringDesc* LOC128;
  		NimStringDesc* LOC129;
  		NimStringDesc* LOC130;
  		LOC128 = 0;
  		LOC129 = 0;
  		LOC129 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  		LOC130 = 0;
  		LOC130 = typetostring_321017((*t).sons->data[((NI) 1)], ((NU8) 0));
  		LOC128 = rawNewString(LOC129->Sup.len + LOC130->Sup.len + 4);
  appendString(LOC128, LOC129);
  appendString(LOC128, ((NimStringDesc*) &TMP2248));
  appendString(LOC128, LOC130);
  		result = LOC128;
  	}
  	break;
  	case ((NU8) 57):
  	{
  		NimStringDesc* LOC132;
  		NimStringDesc* LOC133;
  		LOC132 = 0;
  		LOC133 = 0;
  		LOC133 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  		LOC132 = rawNewString(LOC133->Sup.len + 4);
  appendString(LOC132, ((NimStringDesc*) &TMP2249));
  appendString(LOC132, LOC133);
  		result = LOC132;
  	}
  	break;
  	case ((NU8) 6):
  	{
  		{
  			NI LOC137;
  			NimStringDesc* LOC140;
  			LOC137 = 0;
  			LOC137 = len_296339(t);
  			if (!!((LOC137 == ((NI) 0)))) goto LA138;
  			LOC140 = 0;
  			LOC140 = HEX24_197185(TMP2250);
  			internalerror_197113(LOC140);
  		}
  		LA138: ;
  		result = copyString(((NimStringDesc*) &TMP2170));
  	}
  	break;
  	case ((NU8) 60):
  	case ((NU8) 61):
  	{
  		result = rendertree_312044((*t).n, 0);
  	}
  	break;
  	case ((NU8) 16):
  	{
  		{
  			NimStringDesc* LOC147;
  			NimStringDesc* LOC148;
  			NimStringDesc* LOC149;
  			if (!((*(*t).sons->data[((NI) 0)]).kind == ((NU8) 20))) goto LA145;
  			LOC147 = 0;
  			LOC148 = 0;
  			LOC148 = rangetostr_323024((*(*t).sons->data[((NI) 0)]).n);
  			LOC149 = 0;
  			LOC149 = typetostring_321017((*t).sons->data[((NI) 1)], ((NU8) 0));
  			LOC147 = rawNewString(LOC148->Sup.len + LOC149->Sup.len + 9);
  appendString(LOC147, ((NimStringDesc*) &TMP2251));
  appendString(LOC147, LOC148);
  appendString(LOC147, ((NimStringDesc*) &TMP2228));
  appendString(LOC147, LOC149);
  appendChar(LOC147, 93);
  			result = LOC147;
  		}
  		goto LA143;
  		LA145: ;
  		{
  			NimStringDesc* LOC151;
  			NimStringDesc* LOC152;
  			NimStringDesc* LOC153;
  			LOC151 = 0;
  			LOC152 = 0;
  			LOC152 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  			LOC153 = 0;
  			LOC153 = typetostring_321017((*t).sons->data[((NI) 1)], ((NU8) 0));
  			LOC151 = rawNewString(LOC152->Sup.len + LOC153->Sup.len + 9);
  appendString(LOC151, ((NimStringDesc*) &TMP2251));
  appendString(LOC151, LOC152);
  appendString(LOC151, ((NimStringDesc*) &TMP2228));
  appendString(LOC151, LOC153);
  appendChar(LOC151, 93);
  			result = LOC151;
  		}
  		LA143: ;
  	}
  	break;
  	case ((NU8) 4):
  	{
  		NimStringDesc* LOC155;
  		NimStringDesc* LOC156;
  		NimStringDesc* LOC157;
  		LOC155 = 0;
  		LOC156 = 0;
  		LOC156 = rangetostr_323024((*(*t).sons->data[((NI) 0)]).n);
  		LOC157 = 0;
  		LOC157 = typetostring_321017((*t).sons->data[((NI) 1)], ((NU8) 0));
  		LOC155 = rawNewString(LOC156->Sup.len + LOC157->Sup.len + 21);
  appendString(LOC155, ((NimStringDesc*) &TMP2254));
  appendString(LOC155, LOC156);
  appendString(LOC155, ((NimStringDesc*) &TMP2228));
  appendString(LOC155, LOC157);
  appendChar(LOC155, 93);
  		result = LOC155;
  	}
  	break;
  	case ((NU8) 24):
  	{
  		NimStringDesc* LOC159;
  		NimStringDesc* LOC160;
  		LOC159 = 0;
  		LOC160 = 0;
  		LOC160 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  		LOC159 = rawNewString(LOC160->Sup.len + 5);
  appendString(LOC159, ((NimStringDesc*) &TMP2255));
  appendString(LOC159, LOC160);
  appendChar(LOC159, 93);
  		result = LOC159;
  	}
  	break;
  	case ((NU8) 15):
  	{
  		NimStringDesc* LOC162;
  		NimStringDesc* LOC163;
  		LOC162 = 0;
  		LOC163 = 0;
  		LOC163 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  		LOC162 = rawNewString(LOC163->Sup.len + 9);
  appendString(LOC162, ((NimStringDesc*) &TMP2256));
  appendString(LOC162, LOC163);
  appendChar(LOC162, 93);
  		result = LOC162;
  	}
  	break;
  	case ((NU8) 19):
  	{
  		NimStringDesc* LOC165;
  		NimStringDesc* LOC166;
  		LOC165 = 0;
  		LOC166 = 0;
  		LOC166 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  		LOC165 = rawNewString(LOC166->Sup.len + 5);
  appendString(LOC165, ((NimStringDesc*) &TMP2257));
  appendString(LOC165, LOC166);
  appendChar(LOC165, 93);
  		result = LOC165;
  	}
  	break;
  	case ((NU8) 27):
  	{
  		NimStringDesc* LOC168;
  		NimStringDesc* LOC169;
  		LOC168 = 0;
  		LOC169 = 0;
  		LOC169 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  		LOC168 = rawNewString(LOC169->Sup.len + 11);
  appendString(LOC168, ((NimStringDesc*) &TMP2258));
  appendString(LOC168, LOC169);
  appendChar(LOC168, 93);
  		result = LOC168;
  	}
  	break;
  	case ((NU8) 13):
  	{
  		NimStringDesc* LOC171;
  		NU8 LOC172;
  		NimStringDesc* LOC178;
  		LOC171 = 0;
  		LOC172 = 0;
  		{
  			if (!(prefer == ((NU8) 3))) goto LA175;
  			LOC172 = ((NU8) 3);
  		}
  		goto LA173;
  		LA175: ;
  		{
  			LOC172 = ((NU8) 0);
  		}
  		LA173: ;
  		LOC178 = 0;
  		LOC178 = typetostring_321017((*t).sons->data[((NI) 0)], LOC172);
  		LOC171 = rawNewString(LOC178->Sup.len + 9);
  appendString(LOC171, ((NimStringDesc*) &TMP2259));
  appendString(LOC171, LOC178);
  		result = LOC171;
  	}
  	break;
  	case ((NU8) 18):
  	{
  		{
  			if (!!(((*t).n == NIM_NIL))) goto LA182;
  			result = copyString(((NimStringDesc*) &TMP2260));
  			{
  				NI i_323612;
  				NI HEX3Atmp_323983;
  				NI LOC185;
  				NI res_323986;
  				i_323612 = 0;
  				HEX3Atmp_323983 = 0;
  				LOC185 = 0;
  				LOC185 = sonslen_296351((*t).n);
  				HEX3Atmp_323983 = (NI)(LOC185 - ((NI) 1));
  				res_323986 = ((NI) 0);
  				{
  					while (1) {
  						NimStringDesc* LOC188;
  						NimStringDesc* LOC189;
  						if (!(res_323986 <= HEX3Atmp_323983)) goto LA187;
  						i_323612 = res_323986;
  						LOC188 = 0;
  						LOC189 = 0;
  						LOC189 = typetostring_321017((*t).sons->data[i_323612], ((NU8) 0));
  						LOC188 = rawNewString((*(*(*(*(*t).n).kindU.S6.sons->data[i_323612]).kindU.S4.sym).name).s->Sup.len + LOC189->Sup.len + 2);
  appendString(LOC188, (*(*(*(*(*t).n).kindU.S6.sons->data[i_323612]).kindU.S4.sym).name).s);
  appendString(LOC188, ((NimStringDesc*) &TMP2261));
  appendString(LOC188, LOC189);
  						result = resizeString(result, LOC188->Sup.len + 0);
  appendString(result, LOC188);
  						{
  							NI LOC192;
  							LOC192 = 0;
  							LOC192 = sonslen_296351((*t).n);
  							if (!(i_323612 < (NI)(LOC192 - ((NI) 1)))) goto LA193;
  							result = resizeString(result, 2);
  appendString(result, ((NimStringDesc*) &TMP2228));
  						}
  						LA193: ;
  						res_323986 += ((NI) 1);
  					} LA187: ;
  				}
  			}
  			result = addChar(result, 93);
  		}
  		goto LA180;
  		LA182: ;
  		{
  			NI LOC196;
  			LOC196 = 0;
  			LOC196 = sonslen_296327(t);
  			if (!(LOC196 == ((NI) 0))) goto LA197;
  			result = copyString(((NimStringDesc*) &TMP2262));
  		}
  		goto LA180;
  		LA197: ;
  		{
  			result = copyString(((NimStringDesc*) &TMP2235));
  			{
  				NI i_323815;
  				NI HEX3Atmp_323991;
  				NI LOC201;
  				NI res_323994;
  				i_323815 = 0;
  				HEX3Atmp_323991 = 0;
  				LOC201 = 0;
  				LOC201 = sonslen_296327(t);
  				HEX3Atmp_323991 = (NI)(LOC201 - ((NI) 1));
  				res_323994 = ((NI) 0);
  				{
  					while (1) {
  						NimStringDesc* LOC204;
  						if (!(res_323994 <= HEX3Atmp_323991)) goto LA203;
  						i_323815 = res_323994;
  						LOC204 = 0;
  						LOC204 = typetostring_321017((*t).sons->data[i_323815], ((NU8) 0));
  						result = resizeString(result, LOC204->Sup.len + 0);
  appendString(result, LOC204);
  						{
  							NI LOC207;
  							LOC207 = 0;
  							LOC207 = sonslen_296327(t);
  							if (!(i_323815 < (NI)(LOC207 - ((NI) 1)))) goto LA208;
  							result = resizeString(result, 2);
  appendString(result, ((NimStringDesc*) &TMP2228));
  						}
  						LA208: ;
  						res_323994 += ((NI) 1);
  					} LA203: ;
  				}
  			}
  			result = addChar(result, 41);
  		}
  		LA180: ;
  	}
  	break;
  	case ((NU8) 21):
  	case ((NU8) 22):
  	case ((NU8) 23):
  	case ((NU8) 47):
  	case ((NU8) 46):
  	{
  		result = copyString(typetostr_323203[((*t).kind)- 0]);
  		{
  			NI LOC213;
  			LOC213 = 0;
  			LOC213 = len_296339(t);
  			if (!(((NI) 2) <= LOC213)) goto LA214;
  			result = setLengthStr(result, ((NI) ((NI)((result ? result->Sup.len : 0) - ((NI) 1)))));
  			result = addChar(result, 91);
  			{
  				NI i_323827;
  				NI HEX3Atmp_323999;
  				NI LOC217;
  				NI res_324002;
  				i_323827 = 0;
  				HEX3Atmp_323999 = 0;
  				LOC217 = 0;
  				LOC217 = sonslen_296327(t);
  				HEX3Atmp_323999 = (NI)(LOC217 - ((NI) 1));
  				res_324002 = ((NI) 0);
  				{
  					while (1) {
  						NimStringDesc* LOC220;
  						if (!(res_324002 <= HEX3Atmp_323999)) goto LA219;
  						i_323827 = res_324002;
  						LOC220 = 0;
  						LOC220 = typetostring_321017((*t).sons->data[i_323827], ((NU8) 0));
  						result = resizeString(result, LOC220->Sup.len + 0);
  appendString(result, LOC220);
  						{
  							NI LOC223;
  							LOC223 = 0;
  							LOC223 = sonslen_296327(t);
  							if (!(i_323827 < (NI)(LOC223 - ((NI) 1)))) goto LA224;
  							result = resizeString(result, 2);
  appendString(result, ((NimStringDesc*) &TMP2228));
  						}
  						LA224: ;
  						res_324002 += ((NI) 1);
  					} LA219: ;
  				}
  			}
  			result = addChar(result, 93);
  		}
  		goto LA211;
  		LA214: ;
  		{
  			NimStringDesc* LOC227;
  			LOC227 = 0;
  			LOC227 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  			result = resizeString(result, LOC227->Sup.len + 0);
  appendString(result, LOC227);
  		}
  		LA211: ;
  	}
  	break;
  	case ((NU8) 20):
  	{
  		result = copyString(((NimStringDesc*) &TMP2263));
  		{
  			NIM_BOOL LOC231;
  			NimStringDesc* LOC235;
  			LOC231 = 0;
  			LOC231 = !(((*t).n == NIM_NIL));
  			if (!(LOC231)) goto LA232;
  			LOC231 = ((*(*t).n).kind == ((NU8) 44));
  			LA232: ;
  			if (!LOC231) goto LA233;
  			LOC235 = 0;
  			LOC235 = rangetostr_323024((*t).n);
  			result = resizeString(result, LOC235->Sup.len + 0);
  appendString(result, LOC235);
  		}
  		LA233: ;
  		{
  			NimStringDesc* LOC240;
  			NimStringDesc* LOC241;
  			if (!!((prefer == ((NU8) 2)))) goto LA238;
  			LOC240 = 0;
  			LOC241 = 0;
  			LOC241 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  			LOC240 = rawNewString(LOC241->Sup.len + 2);
  appendString(LOC240, ((NimStringDesc*) &TMP2235));
  appendString(LOC240, LOC241);
  appendString(LOC240, ((NimStringDesc*) &TMP2162));
  			result = resizeString(result, LOC240->Sup.len + 0);
  appendString(result, LOC240);
  		}
  		LA238: ;
  	}
  	break;
  	case ((NU8) 25):
  	{
  		NimStringDesc* prag;
  		{
  			if (!(((*t).flags &(1U<<((NU)(((NU8) 14))&31U)))!=0)) goto LA245;
  			result = copyString(((NimStringDesc*) &TMP2264));
  		}
  		goto LA243;
  		LA245: ;
  		{
  			result = copyString(((NimStringDesc*) &TMP2265));
  		}
  		LA243: ;
  		{
  			NI i_323879;
  			NI HEX3Atmp_324007;
  			NI LOC249;
  			NI res_324010;
  			i_323879 = 0;
  			HEX3Atmp_324007 = 0;
  			LOC249 = 0;
  			LOC249 = sonslen_296327(t);
  			HEX3Atmp_324007 = (NI)(LOC249 - ((NI) 1));
  			res_324010 = ((NI) 1);
  			{
  				while (1) {
  					NimStringDesc* LOC263;
  					if (!(res_324010 <= HEX3Atmp_324007)) goto LA251;
  					i_323879 = res_324010;
  					{
  						NIM_BOOL LOC254;
  						NIM_BOOL LOC255;
  						NI LOC257;
  						Tnode293798* LOC259;
  						Tnode293798* LOC262;
  						LOC254 = 0;
  						LOC255 = 0;
  						LOC255 = !(((*t).n == NIM_NIL));
  						if (!(LOC255)) goto LA256;
  						LOC257 = 0;
  						LOC257 = len_294062((*t).n);
  						LOC255 = (i_323879 < LOC257);
  						LA256: ;
  						LOC254 = LOC255;
  						if (!(LOC254)) goto LA258;
  						LOC259 = 0;
  						LOC259 = HEX5BHEX5D_294238((*t).n, i_323879);
  						LOC254 = ((*LOC259).kind == ((NU8) 3));
  						LA258: ;
  						if (!LOC254) goto LA260;
  						LOC262 = 0;
  						LOC262 = HEX5BHEX5D_294238((*t).n, i_323879);
  						result = resizeString(result, (*(*(*LOC262).kindU.S4.sym).name).s->Sup.len + 0);
  appendString(result, (*(*(*LOC262).kindU.S4.sym).name).s);
  						result = resizeString(result, 2);
  appendString(result, ((NimStringDesc*) &TMP2261));
  					}
  					LA260: ;
  					LOC263 = 0;
  					LOC263 = typetostring_321017((*t).sons->data[i_323879], ((NU8) 0));
  					result = resizeString(result, LOC263->Sup.len + 0);
  appendString(result, LOC263);
  					{
  						NI LOC266;
  						LOC266 = 0;
  						LOC266 = sonslen_296327(t);
  						if (!(i_323879 < (NI)(LOC266 - ((NI) 1)))) goto LA267;
  						result = resizeString(result, 2);
  appendString(result, ((NimStringDesc*) &TMP2228));
  					}
  					LA267: ;
  					res_324010 += ((NI) 1);
  				} LA251: ;
  			}
  		}
  		result = addChar(result, 41);
  		{
  			NimStringDesc* LOC273;
  			NimStringDesc* LOC274;
  			if (!!(((*t).sons->data[((NI) 0)] == NIM_NIL))) goto LA271;
  			LOC273 = 0;
  			LOC274 = 0;
  			LOC274 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  			LOC273 = rawNewString(LOC274->Sup.len + 2);
  appendString(LOC273, ((NimStringDesc*) &TMP2261));
  appendString(LOC273, LOC274);
  			result = resizeString(result, LOC273->Sup.len + 0);
  appendString(result, LOC273);
  		}
  		LA271: ;
  		{
  			if (!((*t).callconv == ((NU8) 0))) goto LA277;
  			prag = copyString(((NimStringDesc*) &TMP2160));
  		}
  		goto LA275;
  		LA277: ;
  		{
  			prag = copyString(Callingconvtostr_293013[((*t).callconv)- 0]);
  		}
  		LA275: ;
  		{
  			if (!(((*t).flags &(1U<<((NU)(((NU8) 1))&31U)))!=0)) goto LA282;
  			addsep_109376((&prag), ((NimStringDesc*) &TMP2228), ((NI) 0));
  			prag = resizeString(prag, 12);
  appendString(prag, ((NimStringDesc*) &TMP2276));
  		}
  		LA282: ;
  		{
  			if (!(((*t).flags &(1U<<((NU)(((NU8) 7))&31U)))!=0)) goto LA286;
  			addsep_109376((&prag), ((NimStringDesc*) &TMP2228), ((NI) 0));
  			prag = resizeString(prag, 6);
  appendString(prag, ((NimStringDesc*) &TMP2277));
  		}
  		LA286: ;
  		{
  			NimStringDesc* LOC292;
  			NimStringDesc* LOC293;
  			if (!!((((NI) ((*t).locklevel)) == ((NI) -1)))) goto LA290;
  			addsep_109376((&prag), ((NimStringDesc*) &TMP2228), ((NI) 0));
  			LOC292 = 0;
  			LOC293 = 0;
  			LOC293 = HEX24_296069((*t).locklevel);
  			LOC292 = rawNewString(LOC293->Sup.len + 7);
  appendString(LOC292, ((NimStringDesc*) &TMP2278));
  appendString(LOC292, LOC293);
  			prag = resizeString(prag, LOC292->Sup.len + 0);
  appendString(prag, LOC292);
  		}
  		LA290: ;
  		{
  			NimStringDesc* LOC298;
  			if (!!(((prag ? prag->Sup.len : 0) == ((NI) 0)))) goto LA296;
  			LOC298 = 0;
  			LOC298 = rawNewString(prag->Sup.len + 4);
  appendString(LOC298, ((NimStringDesc*) &TMP2281));
  appendString(LOC298, prag);
  appendString(LOC298, ((NimStringDesc*) &TMP2282));
  			result = resizeString(result, LOC298->Sup.len + 0);
  appendString(result, LOC298);
  		}
  		LA296: ;
  	}
  	break;
  	case ((NU8) 48):
  	case ((NU8) 49):
  	{
  		NimStringDesc* LOC300;
  		LOC300 = 0;
  		LOC300 = typetostring_321017((*t).sons->data[((NI) 0)], ((NU8) 0));
  		result = nsuFormatSingleElem(typetostr_323203[((*t).kind)- 0], LOC300);
  	}
  	break;
  	default:
  	{
  		result = copyString(typetostr_323203[((*t).kind)- 0]);
  	}
  	break;
  	}
  	addtypeflags_323211((&result), t);
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(Ttype293836*, elemtype_321383)(Ttype293836* t) {
  	Ttype293836* result;
  	result = 0;
  	switch ((*t).kind) {
  	case ((NU8) 11):
  	case ((NU8) 13):
  	{
  		Ttype293836* LOC2;
  		LOC2 = 0;
  		LOC2 = lastson_296377(t);
  		result = elemtype_321383(LOC2);
  	}
  	break;
  	case ((NU8) 16):
  	case ((NU8) 4):
  	{
  		result = (*t).sons->data[((NI) 1)];
  	}
  	break;
  	default:
  	{
  		result = lastson_296377(t);
  	}
  	break;
  	}
  	return result;
  }
  
  N_NIMCALL(void, initsametypeclosure_325252)(Tsametypeclosure325233* Result) {
  }
  
  N_NIMCALL(NIM_BOOL, isgenericalias_326259)(Ttype293836* t) {
  	NIM_BOOL result;
  	NIM_BOOL LOC1;
  	Ttype293836* LOC3;
  {	result = 0;
  	LOC1 = 0;
  	LOC1 = ((*t).kind == ((NU8) 11));
  	if (!(LOC1)) goto LA2;
  	LOC3 = 0;
  	LOC3 = lastson_296377(t);
  	LOC1 = ((*LOC3).kind == ((NU8) 11));
  	LA2: ;
  	result = LOC1;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(Ttype293836*, skipgenericalias_326281)(Ttype293836* t) {
  	Ttype293836* result;
  {	result = 0;
  	{
  		NIM_BOOL LOC3;
  		LOC3 = 0;
  		LOC3 = isgenericalias_326259(t);
  		if (!LOC3) goto LA4;
  		result = lastson_296377(t);
  	}
  	goto LA1;
  	LA4: ;
  	{
  		result = t;
  	}
  	LA1: ;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result;
  }
  
  static N_INLINE(NIM_BOOL, sameflags_326297)(Ttype293836* a, Ttype293836* b) {
  	NIM_BOOL result;
  	result = 0;
  	result = ((344064 & (*a).flags) == (344064 & (*b).flags));
  	return result;
  }
  
  static N_INLINE(NI, find_325283)(TY325247* a, NI aLen0, TY325247 item) {
  	NI result;
  {	result = 0;
  	{
  		TY325247 i_325317;
  		NI i_325348;
  		memset((void*)(&i_325317), 0, sizeof(i_325317));
  		i_325348 = ((NI) 0);
  		{
  			while (1) {
  				if (!(i_325348 < aLen0)) goto LA3;
  				i_325317 = a[i_325348];
  				{
  					NIM_BOOL LOC6;
  					LOC6 = 0;
  					LOC6 = HEX3DHEX3D_325319(i_325317, item);
  					if (!LOC6) goto LA7;
  					goto BeforeRet;
  				}
  				LA7: ;
  				result += ((NI) 1);
  				i_325348 += ((NI) 1);
  			} LA3: ;
  		}
  	}
  	result = ((NI) -1);
  	}BeforeRet: ;
  	return result;
  }
  
  static N_INLINE(NIM_BOOL, contains_325273)(TY325247* a, NI aLen0, TY325247 item) {
  	NIM_BOOL result;
  	NI LOC1;
  {	result = 0;
  	LOC1 = 0;
  	LOC1 = find_325283(a, aLen0, item);
  	result = (((NI) 0) <= LOC1);
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result;
  }
  N_NIMCALL(void, TMP2826)(void* p, NI op) {
  	TY325246* a;
  	NI LOC1;
  	a = (TY325246*)p;
  	LOC1 = 0;
  	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
  	}
  }
  
  N_NIMCALL(NIM_BOOL, containsorincl_325255)(Tsametypeclosure325233* c, Ttype293836* a, Ttype293836* b) {
  	NIM_BOOL result;
  	NIM_BOOL LOC1;
  	TY325247 LOC3;
  	result = 0;
  	LOC1 = 0;
  	LOC1 = !((*c).s == 0);
  	if (!(LOC1)) goto LA2;
  	LOC3.Field0 = (*a).Sup.id;
  	LOC3.Field1 = (*b).Sup.id;
  	LOC1 = contains_325273((*c).s->data, (*c).s->Sup.len, LOC3);
  	LA2: ;
  	result = LOC1;
  	{
  		TY325247 LOC12;
  		if (!!(result)) goto LA6;
  		{
  			if (!(*c).s == 0) goto LA10;
  			unsureAsgnRef((void**) (&(*c).s), (TY325246*) newSeq((&NTI325246), 0));
  		}
  		LA10: ;
  		LOC12.Field0 = (*a).Sup.id;
  		LOC12.Field1 = (*b).Sup.id;
  		(*c).s = (TY325246*) incrSeqV2(&((*c).s)->Sup, sizeof(TY325247));
  		(*c).s->data[(*c).s->Sup.len] = LOC12;
  		++(*c).s->Sup.len;
  	}
  	LA6: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, sametypeornilaux_325390)(Ttype293836* a, Ttype293836* b, Tsametypeclosure325233* c) {
  	NIM_BOOL result;
  	result = 0;
  	{
  		if (!(a == b)) goto LA3;
  		result = NIM_TRUE;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		{
  			NIM_BOOL LOC8;
  			LOC8 = 0;
  			LOC8 = (a == NIM_NIL);
  			if (LOC8) goto LA9;
  			LOC8 = (b == NIM_NIL);
  			LA9: ;
  			if (!LOC8) goto LA10;
  			result = NIM_FALSE;
  		}
  		goto LA6;
  		LA10: ;
  		{
  			result = sametypeaux_325384(a, b, c);
  		}
  		LA6: ;
  	}
  	LA1: ;
  	return result;
  }
  
  static N_INLINE(NIM_BOOL, equalmem_7488)(void* a, void* b, NI size) {
  	NIM_BOOL result;
  	int LOC1;
  	result = 0;
  	LOC1 = 0;
  	LOC1 = memcmp(a, b, ((size_t) (size)));
  	result = (LOC1 == ((NI32) 0));
  	return result;
  }
  
  static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
  	NIM_BOOL result;
  	NIM_BOOL LOC11;
  {	result = 0;
  	{
  		if (!(a == b)) goto LA3;
  		result = NIM_TRUE;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		NIM_BOOL LOC7;
  		LOC7 = 0;
  		LOC7 = (a == NIM_NIL);
  		if (LOC7) goto LA8;
  		LOC7 = (b == NIM_NIL);
  		LA8: ;
  		if (!LOC7) goto LA9;
  		result = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA9: ;
  	LOC11 = 0;
  	LOC11 = ((*a).Sup.len == (*b).Sup.len);
  	if (!(LOC11)) goto LA12;
  	LOC11 = equalmem_7488(((void*) ((*a).data)), ((void*) ((*b).data)), ((NI) ((*a).Sup.len)));
  	LA12: ;
  	result = LOC11;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, sameobjecttree_326082)(Tnode293798* a, Tnode293798* b, Tsametypeclosure325233* c) {
  	NIM_BOOL result;
  {	result = 0;
  	{
  		if (!(a == b)) goto LA3;
  		result = NIM_TRUE;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		NIM_BOOL LOC6;
  		NIM_BOOL LOC7;
  		Ttype293836* x;
  		Ttype293836* y;
  		LOC6 = 0;
  		LOC7 = 0;
  		LOC7 = !((a == NIM_NIL));
  		if (!(LOC7)) goto LA8;
  		LOC7 = !((b == NIM_NIL));
  		LA8: ;
  		LOC6 = LOC7;
  		if (!(LOC6)) goto LA9;
  		LOC6 = ((*a).kind == (*b).kind);
  		LA9: ;
  		if (!LOC6) goto LA10;
  		x = (*a).typ;
  		y = (*b).typ;
  		{
  			if (!(((*c).flags &(1U<<((NU)(((NU8) 0))&7U)))!=0)) goto LA14;
  			{
  				if (!!((x == NIM_NIL))) goto LA18;
  				x = skiptypes_297099(x, 1050624);
  			}
  			LA18: ;
  			{
  				if (!!((y == NIM_NIL))) goto LA22;
  				y = skiptypes_297099(y, 1050624);
  			}
  			LA22: ;
  		}
  		LA14: ;
  		{
  			NIM_BOOL LOC26;
  			LOC26 = 0;
  			LOC26 = sametypeornilaux_325390(x, y, c);
  			if (!LOC26) goto LA27;
  			switch ((*a).kind) {
  			case ((NU8) 3):
  			{
  				result = ((*(*(*a).kindU.S4.sym).name).Sup.id == (*(*(*b).kindU.S4.sym).name).Sup.id);
  			}
  			break;
  			case ((NU8) 2):
  			{
  				result = ((*(*a).kindU.S5.ident).Sup.id == (*(*b).kindU.S5.ident).Sup.id);
  			}
  			break;
  			case ((NU8) 5) ... ((NU8) 10):
  			{
  				result = ((*a).kindU.S1.intval == (*b).kindU.S1.intval);
  			}
  			break;
  			case ((NU8) 16) ... ((NU8) 18):
  			{
  				result = ((*a).kindU.S2.floatval == (*b).kindU.S2.floatval);
  			}
  			break;
  			case ((NU8) 20) ... ((NU8) 22):
  			{
  				result = eqStrings((*a).kindU.S3.strval, (*b).kindU.S3.strval);
  			}
  			break;
  			case ((NU8) 1):
  			case ((NU8) 23):
  			case ((NU8) 4):
  			{
  				result = NIM_TRUE;
  			}
  			break;
  			default:
  			{
  				{
  					NI LOC38;
  					NI LOC39;
  					LOC38 = 0;
  					LOC38 = sonslen_296351(a);
  					LOC39 = 0;
  					LOC39 = sonslen_296351(b);
  					if (!(LOC38 == LOC39)) goto LA40;
  					{
  						NI i_326194;
  						NI HEX3Atmp_326198;
  						NI LOC43;
  						NI res_326201;
  						i_326194 = 0;
  						HEX3Atmp_326198 = 0;
  						LOC43 = 0;
  						LOC43 = sonslen_296351(a);
  						HEX3Atmp_326198 = (NI)(LOC43 - ((NI) 1));
  						res_326201 = ((NI) 0);
  						{
  							while (1) {
  								if (!(res_326201 <= HEX3Atmp_326198)) goto LA45;
  								i_326194 = res_326201;
  								{
  									NIM_BOOL LOC48;
  									LOC48 = 0;
  									LOC48 = sameobjecttree_326082((*a).kindU.S6.sons->data[i_326194], (*b).kindU.S6.sons->data[i_326194], c);
  									if (!!(LOC48)) goto LA49;
  									goto BeforeRet;
  								}
  								LA49: ;
  								res_326201 += ((NI) 1);
  							} LA45: ;
  						}
  					}
  					result = NIM_TRUE;
  				}
  				LA40: ;
  			}
  			break;
  			}
  		}
  		LA27: ;
  	}
  	goto LA1;
  	LA10: ;
  	LA1: ;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, sameobjectstructures_326205)(Ttype293836* a, Ttype293836* b, Tsametypeclosure325233* c) {
  	NIM_BOOL result;
  {	result = 0;
  	{
  		NI LOC3;
  		NI LOC4;
  		LOC3 = 0;
  		LOC3 = sonslen_296327(a);
  		LOC4 = 0;
  		LOC4 = sonslen_296327(b);
  		if (!!((LOC3 == LOC4))) goto LA5;
  		goto BeforeRet;
  	}
  	LA5: ;
  	{
  		NI i_326223;
  		NI HEX3Atmp_326225;
  		NI LOC8;
  		NI res_326228;
  		i_326223 = 0;
  		HEX3Atmp_326225 = 0;
  		LOC8 = 0;
  		LOC8 = sonslen_296327(a);
  		HEX3Atmp_326225 = (NI)(LOC8 - ((NI) 1));
  		res_326228 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_326228 <= HEX3Atmp_326225)) goto LA10;
  				i_326223 = res_326228;
  				{
  					NIM_BOOL LOC13;
  					LOC13 = 0;
  					LOC13 = sametypeornilaux_325390((*a).sons->data[i_326223], (*b).sons->data[i_326223], c);
  					if (!!(LOC13)) goto LA14;
  					goto BeforeRet;
  				}
  				LA14: ;
  				res_326228 += ((NI) 1);
  			} LA10: ;
  		}
  	}
  	{
  		NIM_BOOL LOC18;
  		LOC18 = 0;
  		LOC18 = sameobjecttree_326082((*a).n, (*b).n, c);
  		if (!!(LOC18)) goto LA19;
  		goto BeforeRet;
  	}
  	LA19: ;
  	result = NIM_TRUE;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, sametuple_325840)(Ttype293836* a, Ttype293836* b, Tsametypeclosure325233* c) {
  	NIM_BOOL result;
  {	result = 0;
  	{
  		NI LOC3;
  		NI LOC4;
  		LOC3 = 0;
  		LOC3 = sonslen_296327(a);
  		LOC4 = 0;
  		LOC4 = sonslen_296327(b);
  		if (!(LOC3 == LOC4)) goto LA5;
  		result = NIM_TRUE;
  		{
  			NI i_325858;
  			NI HEX3Atmp_325993;
  			NI LOC8;
  			NI res_325996;
  			i_325858 = 0;
  			HEX3Atmp_325993 = 0;
  			LOC8 = 0;
  			LOC8 = sonslen_296327(a);
  			HEX3Atmp_325993 = (NI)(LOC8 - ((NI) 1));
  			res_325996 = ((NI) 0);
  			{
  				while (1) {
  					Ttype293836* x;
  					Ttype293836* y;
  					if (!(res_325996 <= HEX3Atmp_325993)) goto LA10;
  					i_325858 = res_325996;
  					x = (*a).sons->data[i_325858];
  					y = (*b).sons->data[i_325858];
  					{
  						if (!(((*c).flags &(1U<<((NU)(((NU8) 0))&7U)))!=0)) goto LA13;
  						x = skiptypes_297099(x, 1050624);
  						y = skiptypes_297099(y, 1050624);
  					}
  					LA13: ;
  					result = sametypeaux_325384(x, y, c);
  					{
  						if (!!(result)) goto LA17;
  						goto BeforeRet;
  					}
  					LA17: ;
  					res_325996 += ((NI) 1);
  				} LA10: ;
  			}
  		}
  		{
  			NIM_BOOL LOC21;
  			NIM_BOOL LOC22;
  			LOC21 = 0;
  			LOC22 = 0;
  			LOC22 = !(((*a).n == NIM_NIL));
  			if (!(LOC22)) goto LA23;
  			LOC22 = !(((*b).n == NIM_NIL));
  			LA23: ;
  			LOC21 = LOC22;
  			if (!(LOC21)) goto LA24;
  			LOC21 = !((((*c).flags &(1U<<((NU)(((NU8) 0))&7U)))!=0));
  			LA24: ;
  			if (!LOC21) goto LA25;
  			{
  				NI i_325918;
  				NI HEX3Atmp_326001;
  				NI LOC28;
  				NI res_326004;
  				i_325918 = 0;
  				HEX3Atmp_326001 = 0;
  				LOC28 = 0;
  				LOC28 = sonslen_296351((*a).n);
  				HEX3Atmp_326001 = (NI)(LOC28 - ((NI) 1));
  				res_326004 = ((NI) 0);
  				{
  					while (1) {
  						if (!(res_326004 <= HEX3Atmp_326001)) goto LA30;
  						i_325918 = res_326004;
  						{
  							NIM_BOOL LOC33;
  							Tsym293830* x;
  							Tsym293830* y;
  							LOC33 = 0;
  							LOC33 = ((*(*(*a).n).kindU.S6.sons->data[i_325918]).kind == ((NU8) 3));
  							if (!(LOC33)) goto LA34;
  							LOC33 = ((*(*(*b).n).kindU.S6.sons->data[i_325918]).kind == ((NU8) 3));
  							LA34: ;
  							if (!LOC33) goto LA35;
  							x = (*(*(*a).n).kindU.S6.sons->data[i_325918]).kindU.S4.sym;
  							y = (*(*(*b).n).kindU.S6.sons->data[i_325918]).kindU.S4.sym;
  							result = ((*(*x).name).Sup.id == (*(*y).name).Sup.id);
  							{
  								if (!!(result)) goto LA39;
  								goto LA27;
  							}
  							LA39: ;
  						}
  						goto LA31;
  						LA35: ;
  						{
  							internalerror_197100((*(*a).n).info, ((NimStringDesc*) &TMP2827));
  						}
  						LA31: ;
  						res_326004 += ((NI) 1);
  					} LA30: ;
  				}
  			} LA27: ;
  		}
  		goto LA19;
  		LA25: ;
  		{
  			NIM_BOOL LOC43;
  			NIM_BOOL LOC44;
  			NIM_BOOL LOC46;
  			LOC43 = 0;
  			LOC44 = 0;
  			LOC44 = !(((*a).n == (*b).n));
  			if (!(LOC44)) goto LA45;
  			LOC46 = 0;
  			LOC46 = ((*a).n == NIM_NIL);
  			if (LOC46) goto LA47;
  			LOC46 = ((*b).n == NIM_NIL);
  			LA47: ;
  			LOC44 = LOC46;
  			LA45: ;
  			LOC43 = LOC44;
  			if (!(LOC43)) goto LA48;
  			LOC43 = !((((*c).flags &(1U<<((NU)(((NU8) 0))&7U)))!=0));
  			LA48: ;
  			if (!LOC43) goto LA49;
  			result = NIM_FALSE;
  		}
  		goto LA19;
  		LA49: ;
  		LA19: ;
  	}
  	LA5: ;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, samechildrenaux_326232)(Ttype293836* a, Ttype293836* b, Tsametypeclosure325233* c) {
  	NIM_BOOL result;
  {	result = 0;
  	{
  		NI LOC3;
  		NI LOC4;
  		LOC3 = 0;
  		LOC3 = sonslen_296327(a);
  		LOC4 = 0;
  		LOC4 = sonslen_296327(b);
  		if (!!((LOC3 == LOC4))) goto LA5;
  		result = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA5: ;
  	result = NIM_TRUE;
  	{
  		NI i_326250;
  		NI HEX3Atmp_326252;
  		NI LOC8;
  		NI res_326255;
  		i_326250 = 0;
  		HEX3Atmp_326252 = 0;
  		LOC8 = 0;
  		LOC8 = sonslen_296327(a);
  		HEX3Atmp_326252 = (NI)(LOC8 - ((NI) 1));
  		res_326255 = ((NI) 0);
  		{
  			while (1) {
  				if (!(res_326255 <= HEX3Atmp_326252)) goto LA10;
  				i_326250 = res_326255;
  				result = sametypeornilaux_325390((*a).sons->data[i_326250], (*b).sons->data[i_326250], c);
  				{
  					if (!!(result)) goto LA13;
  					goto BeforeRet;
  				}
  				LA13: ;
  				res_326255 += ((NI) 1);
  			} LA10: ;
  		}
  	}
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, sameconstraints_325562)(Tnode293798* a, Tnode293798* b) {
  	NIM_BOOL result;
  {	result = 0;
  	{
  		NIM_BOOL LOC3;
  		LOC3 = 0;
  		LOC3 = a == 0;
  		if (!(LOC3)) goto LA4;
  		LOC3 = b == 0;
  		LA4: ;
  		if (!LOC3) goto LA5;
  		result = NIM_TRUE;
  		goto BeforeRet;
  	}
  	LA5: ;
  	{
  		NI LOC9;
  		NI LOC10;
  		NimStringDesc* LOC13;
  		LOC9 = 0;
  		LOC9 = len_294062(a);
  		LOC10 = 0;
  		LOC10 = len_294062(b);
  		if (!!((LOC9 == LOC10))) goto LA11;
  		LOC13 = 0;
  		LOC13 = HEX24_197185(TMP2828);
  		internalerror_197113(LOC13);
  	}
  	LA11: ;
  	{
  		NI i_325610;
  		NI HEX3Atmp_325616;
  		NI LOC15;
  		NI res_325619;
  		i_325610 = 0;
  		HEX3Atmp_325616 = 0;
  		LOC15 = 0;
  		LOC15 = len_294062(a);
  		HEX3Atmp_325616 = (LOC15 - 1);
  		res_325619 = ((NI) 1);
  		{
  			while (1) {
  				if (!(res_325619 <= HEX3Atmp_325616)) goto LA17;
  				i_325610 = res_325619;
  				{
  					Tnode293798* LOC20;
  					Tnode293798* LOC21;
  					NIM_BOOL LOC22;
  					LOC20 = 0;
  					LOC20 = HEX5BHEX5D_294238(a, i_325610);
  					LOC21 = 0;
  					LOC21 = HEX5BHEX5D_294238(b, i_325610);
  					LOC22 = 0;
  					LOC22 = exprstructuralequivalent_319311((*(*LOC20).kindU.S4.sym).constraint, (*(*LOC21).kindU.S4.sym).constraint, NIM_FALSE);
  					if (!!(LOC22)) goto LA23;
  					result = NIM_FALSE;
  					goto BeforeRet;
  				}
  				LA23: ;
  				res_325619 += ((NI) 1);
  			} LA17: ;
  		}
  	}
  	result = NIM_TRUE;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, sametypeaux_325384)(Ttype293836* x, Ttype293836* y, Tsametypeclosure325233* c) {
  	NIM_BOOL result;
  	Ttype293836* a;
  	Ttype293836* b;
  {	result = 0;
  	{
  		if (!(x == y)) goto LA3;
  		result = NIM_TRUE;
  		goto BeforeRet;
  	}
  	LA3: ;
  	a = skiptypes_297099(x, 2048);
  	b = skiptypes_297099(y, 2048);
  	{
  		if (!!(((*a).kind == (*b).kind))) goto LA7;
  		switch ((*c).cmp) {
  		case ((NU8) 0):
  		{
  			result = NIM_FALSE;
  			goto BeforeRet;
  		}
  		break;
  		case ((NU8) 1):
  		{
  			{
  				while (1) {
  					if (!((*a).kind == ((NU8) 13))) goto LA12;
  					a = (*a).sons->data[((NI) 0)];
  				} LA12: ;
  			}
  			{
  				while (1) {
  					if (!((*b).kind == ((NU8) 13))) goto LA14;
  					b = (*b).sons->data[((NI) 0)];
  				} LA14: ;
  			}
  			{
  				if (!!(((*a).kind == (*b).kind))) goto LA17;
  				result = NIM_FALSE;
  				goto BeforeRet;
  			}
  			LA17: ;
  		}
  		break;
  		case ((NU8) 2):
  		{
  			{
  				while (1) {
  					if (!((*a).kind == ((NU8) 13))) goto LA21;
  					a = (*a).sons->data[((NI) 0)];
  				} LA21: ;
  			}
  			{
  				if (!!(((*a).kind == (*b).kind))) goto LA24;
  				result = NIM_FALSE;
  				goto BeforeRet;
  			}
  			LA24: ;
  		}
  		break;
  		}
  	}
  	LA7: ;
  	{
  		NIM_BOOL LOC28;
  		Ttype293836* lhs;
  		Ttype293836* rhs;
  		LOC28 = 0;
  		LOC28 = ((*x).kind == ((NU8) 11));
  		if (!(LOC28)) goto LA29;
  		LOC28 = !((((*c).flags &(1U<<((NU)(((NU8) 0))&7U)))!=0));
  		LA29: ;
  		if (!LOC28) goto LA30;
  		lhs = skipgenericalias_326281(x);
  		rhs = skipgenericalias_326281(y);
  		{
  			NIM_BOOL LOC34;
  			Ttype293836* LOC36;
  			Ttype293836* LOC37;
  			LOC34 = 0;
  			LOC34 = !(((*rhs).kind == ((NU8) 11)));
  			if (LOC34) goto LA35;
  			LOC36 = 0;
  			LOC36 = base_321021(lhs);
  			LOC37 = 0;
  			LOC37 = base_321021(rhs);
  			LOC34 = !((LOC36 == LOC37));
  			LA35: ;
  			if (!LOC34) goto LA38;
  			result = NIM_FALSE;
  			goto BeforeRet;
  		}
  		LA38: ;
  		{
  			NI i_326705;
  			NI HEX3Atmp_326990;
  			NI LOC41;
  			NI res_326993;
  			i_326705 = 0;
  			HEX3Atmp_326990 = 0;
  			LOC41 = 0;
  			LOC41 = len_296339(lhs);
  			HEX3Atmp_326990 = (NI)(LOC41 - ((NI) 2));
  			res_326993 = ((NI) 1);
  			{
  				while (1) {
  					Ttype293836* ff;
  					Ttype293836* aa;
  					if (!(res_326993 <= HEX3Atmp_326990)) goto LA43;
  					i_326705 = res_326993;
  					ff = (*rhs).sons->data[i_326705];
  					aa = (*lhs).sons->data[i_326705];
  					{
  						NIM_BOOL LOC46;
  						LOC46 = 0;
  						LOC46 = sametypeaux_325384(ff, aa, c);
  						if (!!(LOC46)) goto LA47;
  						result = NIM_FALSE;
  						goto BeforeRet;
  					}
  					LA47: ;
  					res_326993 += ((NI) 1);
  				} LA43: ;
  			}
  		}
  		result = NIM_TRUE;
  		goto BeforeRet;
  	}
  	LA30: ;
  	switch ((*a).kind) {
  	case ((NU8) 3):
  	case ((NU8) 2):
  	case ((NU8) 1):
  	case ((NU8) 5):
  	case ((NU8) 26):
  	case ((NU8) 28):
  	case ((NU8) 29):
  	case ((NU8) 31) ... ((NU8) 45):
  	case ((NU8) 7):
  	case ((NU8) 6):
  	case ((NU8) 62):
  	{
  		result = sameflags_326297(a, b);
  	}
  	break;
  	case ((NU8) 59):
  	case ((NU8) 60):
  	{
  		NIM_BOOL LOC51;
  		LOC51 = 0;
  		LOC51 = exprstructuralequivalent_319311((*a).n, (*b).n, NIM_FALSE);
  		if (!(LOC51)) goto LA52;
  		LOC51 = sameflags_326297(a, b);
  		LA52: ;
  		result = LOC51;
  		{
  			NIM_BOOL LOC55;
  			NIM_BOOL LOC56;
  			NI LOC58;
  			NI LOC59;
  			NI LOC61;
  			LOC55 = 0;
  			LOC56 = 0;
  			LOC56 = result;
  			if (!(LOC56)) goto LA57;
  			LOC58 = 0;
  			LOC58 = len_296339(a);
  			LOC59 = 0;
  			LOC59 = len_296339(b);
  			LOC56 = (LOC58 == LOC59);
  			LA57: ;
  			LOC55 = LOC56;
  			if (!(LOC55)) goto LA60;
  			LOC61 = 0;
  			LOC61 = len_296339(a);
  			LOC55 = (LOC61 == ((NI) 1));
  			LA60: ;
  			if (!LOC55) goto LA62;
  			{
  				if (!((*c).reccheck < ((NI) 3))) goto LA66;
  				(*c).reccheck += ((NI) 1);
  			}
  			goto LA64;
  			LA66: ;
  			{
  				{
  					NIM_BOOL LOC71;
  					LOC71 = 0;
  					LOC71 = containsorincl_325255(c, a, b);
  					if (!LOC71) goto LA72;
  					result = NIM_TRUE;
  					goto BeforeRet;
  				}
  				LA72: ;
  			}
  			LA64: ;
  			result = sametypeaux_325384((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
  		}
  		LA62: ;
  	}
  	break;
  	case ((NU8) 17):
  	{
  		{
  			if (!!(((((*a).flags | (*b).flags) &(1U<<((NU)(((NU8) 8))&31U)))!=0))) goto LA77;
  			result = ((*a).Sup.id == (*b).Sup.id);
  		}
  		goto LA75;
  		LA77: ;
  		{
  			{
  				NIM_BOOL LOC82;
  				NIM_BOOL LOC96;
  				LOC82 = 0;
  				LOC82 = ((((*a).flags & (*b).flags) &(1U<<((NU)(((NU8) 8))&31U)))!=0);
  				if (!(LOC82)) goto LA83;
  				LOC82 = ((*(*a).sym).Sup.id == (*(*b).sym).Sup.id);
  				LA83: ;
  				if (!LOC82) goto LA84;
  				{
  					if (!((*c).reccheck < ((NI) 3))) goto LA88;
  					(*c).reccheck += ((NI) 1);
  				}
  				goto LA86;
  				LA88: ;
  				{
  					{
  						NIM_BOOL LOC93;
  						LOC93 = 0;
  						LOC93 = containsorincl_325255(c, a, b);
  						if (!LOC93) goto LA94;
  						result = NIM_TRUE;
  						goto BeforeRet;
  					}
  					LA94: ;
  				}
  				LA86: ;
  				LOC96 = 0;
  				LOC96 = sameobjectstructures_326205(a, b, c);
  				if (!(LOC96)) goto LA97;
  				LOC96 = sameflags_326297(a, b);
  				LA97: ;
  				result = LOC96;
  			}
  			LA84: ;
  		}
  		LA75: ;
  	}
  	break;
  	case ((NU8) 13):
  	{
  		{
  			if (!((*c).reccheck < ((NI) 3))) goto LA101;
  			(*c).reccheck += ((NI) 1);
  		}
  		goto LA99;
  		LA101: ;
  		{
  			{
  				NIM_BOOL LOC106;
  				LOC106 = 0;
  				LOC106 = containsorincl_325255(c, a, b);
  				if (!LOC106) goto LA107;
  				result = NIM_TRUE;
  				goto BeforeRet;
  			}
  			LA107: ;
  		}
  		LA99: ;
  		{
  			if (!((*c).cmp == ((NU8) 0))) goto LA111;
  			{
  				NIM_BOOL LOC115;
  				LOC115 = 0;
  				LOC115 = sameflags_326297(a, b);
  				if (!LOC115) goto LA116;
  				{
  					if (!!(((((*a).flags | (*b).flags) &(1U<<((NU)(((NU8) 8))&31U)))!=0))) goto LA120;
  					result = ((*a).Sup.id == (*b).Sup.id);
  				}
  				goto LA118;
  				LA120: ;
  				{
  					{
  						NIM_BOOL LOC125;
  						LOC125 = 0;
  						LOC125 = ((((*a).flags & (*b).flags) &(1U<<((NU)(((NU8) 8))&31U)))!=0);
  						if (!(LOC125)) goto LA126;
  						LOC125 = ((*(*a).sym).Sup.id == (*(*b).sym).Sup.id);
  						LA126: ;
  						if (!LOC125) goto LA127;
  						result = sametypeaux_325384((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
  					}
  					LA127: ;
  				}
  				LA118: ;
  			}
  			LA116: ;
  		}
  		goto LA109;
  		LA111: ;
  		{
  			NIM_BOOL LOC130;
  			LOC130 = 0;
  			LOC130 = sametypeaux_325384((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
  			if (!(LOC130)) goto LA131;
  			LOC130 = sameflags_326297(a, b);
  			LA131: ;
  			result = LOC130;
  		}
  		LA109: ;
  	}
  	break;
  	case ((NU8) 14):
  	case ((NU8) 30):
  	{
  		NIM_BOOL LOC133;
  		LOC133 = 0;
  		LOC133 = ((*a).Sup.id == (*b).Sup.id);
  		if (!(LOC133)) goto LA134;
  		LOC133 = sameflags_326297(a, b);
  		LA134: ;
  		result = LOC133;
  	}
  	break;
  	case ((NU8) 50):
  	{
  		result = ((*b).kind == ((NU8) 50));
  	}
  	break;
  	case ((NU8) 18):
  	{
  		NIM_BOOL LOC147;
  		{
  			if (!((*c).reccheck < ((NI) 3))) goto LA139;
  			(*c).reccheck += ((NI) 1);
  		}
  		goto LA137;
  		LA139: ;
  		{
  			{
  				NIM_BOOL LOC144;
  				LOC144 = 0;
  				LOC144 = containsorincl_325255(c, a, b);
  				if (!LOC144) goto LA145;
  				result = NIM_TRUE;
  				goto BeforeRet;
  			}
  			LA145: ;
  		}
  		LA137: ;
  		LOC147 = 0;
  		LOC147 = sametuple_325840(a, b, c);
  		if (!(LOC147)) goto LA148;
  		LOC147 = sameflags_326297(a, b);
  		LA148: ;
  		result = LOC147;
  	}
  	break;
  	case ((NU8) 8):
  	{
  		{
  			if (!((*c).cmp == ((NU8) 1))) goto LA152;
  			result = NIM_FALSE;
  		}
  		goto LA150;
  		LA152: ;
  		{
  			NIM_BOOL LOC167;
  			if (!(((*c).flags &(1U<<((NU)(((NU8) 2))&7U)))!=0)) goto LA155;
  			{
  				if (!((*c).reccheck < ((NI) 3))) goto LA159;
  				(*c).reccheck += ((NI) 1);
  			}
  			goto LA157;
  			LA159: ;
  			{
  				{
  					NIM_BOOL LOC164;
  					LOC164 = 0;
  					LOC164 = containsorincl_325255(c, a, b);
  					if (!LOC164) goto LA165;
  					result = NIM_TRUE;
  					goto BeforeRet;
  				}
  				LA165: ;
  			}
  			LA157: ;
  			LOC167 = 0;
  			LOC167 = samechildrenaux_326232(x, y, c);
  			if (!(LOC167)) goto LA168;
  			LOC167 = sameflags_326297(a, b);
  			LA168: ;
  			result = LOC167;
  		}
  		goto LA150;
  		LA155: ;
  		{
  			result = sameflags_326297(a, b);
  		}
  		LA150: ;
  	}
  	break;
  	case ((NU8) 12):
  	{
  		NIM_BOOL LOC171;
  		LOC171 = 0;
  		LOC171 = samechildrenaux_326232(a, b, c);
  		if (!(LOC171)) goto LA172;
  		LOC171 = sameflags_326297(a, b);
  		LA172: ;
  		result = LOC171;
  		{
  			NIM_BOOL LOC175;
  			LOC175 = 0;
  			LOC175 = result;
  			if (!(LOC175)) goto LA176;
  			LOC175 = (((*c).flags &(1U<<((NU)(((NU8) 3))&7U)))!=0);
  			LA176: ;
  			if (!LOC175) goto LA177;
  			result = ((*(*a).sym).position == (*(*b).sym).position);
  		}
  		LA177: ;
  	}
  	break;
  	case ((NU8) 9):
  	case ((NU8) 10):
  	case ((NU8) 24):
  	case ((NU8) 27):
  	case ((NU8) 19):
  	case ((NU8) 22):
  	case ((NU8) 21):
  	case ((NU8) 23):
  	case ((NU8) 4):
  	case ((NU8) 16):
  	case ((NU8) 25):
  	case ((NU8) 46):
  	case ((NU8) 47):
  	case ((NU8) 48):
  	case ((NU8) 49):
  	case ((NU8) 15):
  	case ((NU8) 51):
  	case ((NU8) 61):
  	case ((NU8) 54):
  	case ((NU8) 52):
  	case ((NU8) 53):
  	case ((NU8) 55):
  	case ((NU8) 56):
  	case ((NU8) 57):
  	case ((NU8) 58):
  	{
  		NIM_BOOL LOC196;
  		{
  			if (!((*c).reccheck < ((NI) 3))) goto LA182;
  			(*c).reccheck += ((NI) 1);
  		}
  		goto LA180;
  		LA182: ;
  		{
  			{
  				NIM_BOOL LOC187;
  				LOC187 = 0;
  				LOC187 = containsorincl_325255(c, a, b);
  				if (!LOC187) goto LA188;
  				result = NIM_TRUE;
  				goto BeforeRet;
  			}
  			LA188: ;
  		}
  		LA180: ;
  		{
  			NIM_BOOL LOC192;
  			LOC192 = 0;
  			LOC192 = ((*a).kind == ((NU8) 52));
  			if (!(LOC192)) goto LA193;
  			LOC192 = !(((*a).n == NIM_NIL));
  			LA193: ;
  			if (!LOC192) goto LA194;
  			result = ((*a).n == (*b).n);
  			goto BeforeRet;
  		}
  		LA194: ;
  		LOC196 = 0;
  		LOC196 = samechildrenaux_326232(a, b, c);
  		if (!(LOC196)) goto LA197;
  		LOC196 = sameflags_326297(a, b);
  		LA197: ;
  		result = LOC196;
  		{
  			NIM_BOOL LOC200;
  			NIM_BOOL LOC204;
  			NIM_BOOL LOC205;
  			NIM_BOOL LOC208;
  			LOC200 = 0;
  			LOC200 = result;
  			if (!(LOC200)) goto LA201;
  			LOC200 = ((*a).kind == ((NU8) 25));
  			LA201: ;
  			if (!LOC200) goto LA202;
  			LOC204 = 0;
  			LOC205 = 0;
  			LOC205 = (((*c).flags &(1U<<((NU)(((NU8) 1))&7U)))!=0);
  			if (LOC205) goto LA206;
  			LOC205 = ((*a).callconv == (*b).callconv);
  			LA206: ;
  			LOC204 = LOC205;
  			if (!(LOC204)) goto LA207;
  			LOC208 = 0;
  			LOC208 = !((((*c).flags &(1U<<((NU)(((NU8) 4))&7U)))!=0));
  			if (LOC208) goto LA209;
  			LOC208 = sameconstraints_325562((*a).n, (*b).n);
  			LA209: ;
  			LOC204 = LOC208;
  			LA207: ;
  			result = LOC204;
  		}
  		LA202: ;
  	}
  	break;
  	case ((NU8) 20):
  	{
  		NIM_BOOL LOC221;
  		NIM_BOOL LOC222;
  		{
  			if (!((*c).reccheck < ((NI) 3))) goto LA213;
  			(*c).reccheck += ((NI) 1);
  		}
  		goto LA211;
  		LA213: ;
  		{
  			{
  				NIM_BOOL LOC218;
  				LOC218 = 0;
  				LOC218 = containsorincl_325255(c, a, b);
  				if (!LOC218) goto LA219;
  				result = NIM_TRUE;
  				goto BeforeRet;
  			}
  			LA219: ;
  		}
  		LA211: ;
  		LOC221 = 0;
  		LOC222 = 0;
  		LOC222 = sametypeornilaux_325390((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
  		if (!(LOC222)) goto LA223;
  		LOC222 = samevalue_300168((*(*a).n).kindU.S6.sons->data[((NI) 0)], (*(*b).n).kindU.S6.sons->data[((NI) 0)]);
  		LA223: ;
  		LOC221 = LOC222;
  		if (!(LOC221)) goto LA224;
  		LOC221 = samevalue_300168((*(*a).n).kindU.S6.sons->data[((NI) 1)], (*(*b).n).kindU.S6.sons->data[((NI) 1)]);
  		LA224: ;
  		result = LOC221;
  	}
  	break;
  	case ((NU8) 11):
  	{
  	}
  	break;
  	case ((NU8) 0):
  	{
  		result = NIM_FALSE;
  	}
  	break;
  	}
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, comparetypes_327014)(Ttype293836* x, Ttype293836* y, NU8 cmp, NU8 flags) {
  	NIM_BOOL result;
  	Tsametypeclosure325233 c;
  	result = 0;
  	memset((void*)(&c), 0, sizeof(c));
  	chckNil((void*)(&c));
  	memset((void*)(&c), 0, sizeof(c));
  	initsametypeclosure_325252((&c));
  	c.cmp = cmp;
  	c.flags = flags;
  	{
  		if (!(x == y)) goto LA3;
  		result = NIM_TRUE;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		NIM_BOOL LOC6;
  		LOC6 = 0;
  		LOC6 = x == 0;
  		if (LOC6) goto LA7;
  		LOC6 = y == 0;
  		LA7: ;
  		if (!LOC6) goto LA8;
  		result = NIM_FALSE;
  	}
  	goto LA1;
  	LA8: ;
  	{
  		result = sametypeaux_325384(x, y, (&c));
  	}
  	LA1: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, iterovernode_321868)(Intset269031* marker, Tnode293798* n, Ttypeiter321025 iter, TNimObject* closure) {
  	NIM_BOOL result;
  {	result = 0;
  	{
  		if (!!((n == NIM_NIL))) goto LA3;
  		switch ((*n).kind) {
  		case ((NU8) 0) ... ((NU8) 23):
  		{
  			result = iterovertypeaux_321861(marker, (*n).typ, iter, closure);
  		}
  		break;
  		default:
  		{
  			{
  				NI i_321899;
  				NI HEX3Atmp_321902;
  				NI LOC8;
  				NI res_321905;
  				i_321899 = 0;
  				HEX3Atmp_321902 = 0;
  				LOC8 = 0;
  				LOC8 = sonslen_296351(n);
  				HEX3Atmp_321902 = (NI)(LOC8 - ((NI) 1));
  				res_321905 = ((NI) 0);
  				{
  					while (1) {
  						if (!(res_321905 <= HEX3Atmp_321902)) goto LA10;
  						i_321899 = res_321905;
  						result = iterovernode_321868(marker, (*n).kindU.S6.sons->data[i_321899], iter, closure);
  						{
  							if (!result) goto LA13;
  							goto BeforeRet;
  						}
  						LA13: ;
  						res_321905 += ((NI) 1);
  					} LA10: ;
  				}
  			}
  		}
  		break;
  		}
  	}
  	LA3: ;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, iterovertypeaux_321861)(Intset269031* marker, Ttype293836* t, Ttypeiter321025 iter, TNimObject* closure) {
  	NIM_BOOL result;
  {	result = 0;
  	result = NIM_FALSE;
  	{
  		if (!(t == NIM_NIL)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	result = iter(t, closure);
  	{
  		if (!result) goto LA7;
  		goto BeforeRet;
  	}
  	LA7: ;
  	{
  		NIM_BOOL LOC11;
  		LOC11 = 0;
  		LOC11 = containsorincl_269862(marker, (*t).Sup.id);
  		if (!!(LOC11)) goto LA12;
  		switch ((*t).kind) {
  		case ((NU8) 11):
  		case ((NU8) 10):
  		{
  			Ttype293836* LOC15;
  			LOC15 = 0;
  			LOC15 = lastson_296377(t);
  			result = iterovertypeaux_321861(marker, LOC15, iter, closure);
  		}
  		break;
  		default:
  		{
  			{
  				NI i_321940;
  				NI HEX3Atmp_321954;
  				NI LOC18;
  				NI res_321957;
  				i_321940 = 0;
  				HEX3Atmp_321954 = 0;
  				LOC18 = 0;
  				LOC18 = sonslen_296327(t);
  				HEX3Atmp_321954 = (NI)(LOC18 - ((NI) 1));
  				res_321957 = ((NI) 0);
  				{
  					while (1) {
  						if (!(res_321957 <= HEX3Atmp_321954)) goto LA20;
  						i_321940 = res_321957;
  						result = iterovertypeaux_321861(marker, (*t).sons->data[i_321940], iter, closure);
  						{
  							if (!result) goto LA23;
  							goto BeforeRet;
  						}
  						LA23: ;
  						res_321957 += ((NI) 1);
  					} LA20: ;
  				}
  			}
  			{
  				if (!!(((*t).n == NIM_NIL))) goto LA27;
  				result = iterovernode_321868(marker, (*t).n, iter, closure);
  			}
  			LA27: ;
  		}
  		break;
  		}
  	}
  	LA12: ;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, iterovertype_321038)(Ttype293836* t, Ttypeiter321025 iter, TNimObject* closure) {
  	NIM_BOOL result;
  	Intset269031 marker;
  	result = 0;
  	memset((void*)(&marker), 0, sizeof(marker));
  	chckNil((void*)(&marker));
  	memset((void*)(&marker), 0, sizeof(marker));
  	initintset_269885((&marker));
  	result = iterovertypeaux_321861((&marker), t, iter, closure);
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, containsgenerictypeiter_329013)(Ttype293836* t, TNimObject* closure) {
  	NIM_BOOL result;
  {	result = 0;
  	{
  		if (!((*t).kind == ((NU8) 59))) goto LA3;
  		result = ((*t).n == NIM_NIL);
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!((*t).kind == ((NU8) 8))) goto LA7;
  		{
  			Ttype293836* LOC11;
  			LOC11 = 0;
  			LOC11 = base_321021(t);
  			if (!((*LOC11).kind == ((NU8) 0))) goto LA12;
  			result = NIM_TRUE;
  			goto BeforeRet;
  		}
  		LA12: ;
  		{
  			Ttype293836* LOC16;
  			NIM_BOOL LOC17;
  			LOC16 = 0;
  			LOC16 = base_321021(t);
  			LOC17 = 0;
  			LOC17 = containsgenerictypeiter_329013(LOC16, closure);
  			if (!LOC17) goto LA18;
  			result = NIM_TRUE;
  			goto BeforeRet;
  		}
  		LA18: ;
  		result = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA7: ;
  	{
  		if (!((IL64(1727130457096590848) &((NU64)1<<((NU)((*t).kind)&63U)))!=0)) goto LA22;
  		result = NIM_TRUE;
  		goto BeforeRet;
  	}
  	LA22: ;
  	result = NIM_FALSE;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, containsgenerictype_329092)(Ttype293836* t) {
  	NIM_BOOL result;
  	result = 0;
  	result = iterovertype_321038(t, containsgenerictypeiter_329013, NIM_NIL);
  	return result;
  }
  
  N_NIMCALL(NI64, getordvalue_321118)(Tnode293798* n) {
  	NI64 result;
  	result = 0;
  	switch ((*n).kind) {
  	case ((NU8) 5) ... ((NU8) 15):
  	{
  		result = (*n).kindU.S1.intval;
  	}
  	break;
  	case ((NU8) 23):
  	{
  		result = IL64(0);
  	}
  	break;
  	case ((NU8) 58):
  	{
  		result = getordvalue_321118((*n).kindU.S6.sons->data[((NI) 1)]);
  	}
  	break;
  	default:
  	{
  		localerror_197080((*n).info, ((NU16) 78), ((NimStringDesc*) &TMP2160));
  		result = IL64(0);
  	}
  	break;
  	}
  	return result;
  }
  
  N_NIMCALL(NI64, firstord_321001)(Ttype293836* t) {
  	NI64 result;
  	result = 0;
  	switch ((*t).kind) {
  	case ((NU8) 1):
  	case ((NU8) 2):
  	case ((NU8) 24):
  	case ((NU8) 27):
  	case ((NU8) 28):
  	case ((NU8) 48):
  	case ((NU8) 50):
  	{
  		result = IL64(0);
  	}
  	break;
  	case ((NU8) 19):
  	case ((NU8) 23):
  	{
  		result = firstord_321001((*t).sons->data[((NI) 0)]);
  	}
  	break;
  	case ((NU8) 16):
  	case ((NU8) 4):
  	{
  		result = firstord_321001((*t).sons->data[((NI) 0)]);
  	}
  	break;
  	case ((NU8) 20):
  	{
  		result = getordvalue_321118((*(*t).n).kindU.S6.sons->data[((NI) 0)]);
  	}
  	break;
  	case ((NU8) 31):
  	{
  		{
  			if (!(intsize_177622 == ((NI) 4))) goto LA8;
  			result = IL64(-2147483648);
  		}
  		goto LA6;
  		LA8: ;
  		{
  			result = (IL64(-9223372036854775807) - IL64(1));
  		}
  		LA6: ;
  	}
  	break;
  	case ((NU8) 32):
  	{
  		result = IL64(-128);
  	}
  	break;
  	case ((NU8) 33):
  	{
  		result = IL64(-32768);
  	}
  	break;
  	case ((NU8) 34):
  	{
  		result = IL64(-2147483648);
  	}
  	break;
  	case ((NU8) 35):
  	{
  		result = (IL64(-9223372036854775807) - IL64(1));
  	}
  	break;
  	case ((NU8) 40) ... ((NU8) 44):
  	{
  		result = IL64(0);
  	}
  	break;
  	case ((NU8) 14):
  	{
  		{
  			NIM_BOOL LOC19;
  			NI LOC20;
  			LOC19 = 0;
  			LOC20 = 0;
  			LOC20 = sonslen_296327(t);
  			LOC19 = (((NI) 0) < LOC20);
  			if (!(LOC19)) goto LA21;
  			LOC19 = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
  			LA21: ;
  			if (!LOC19) goto LA22;
  			result = firstord_321001((*t).sons->data[((NI) 0)]);
  		}
  		goto LA17;
  		LA22: ;
  		{
  			result = ((NI64) ((*(*(*(*t).n).kindU.S6.sons->data[((NI) 0)]).kindU.S4.sym).position));
  		}
  		LA17: ;
  	}
  	break;
  	case ((NU8) 11):
  	case ((NU8) 13):
  	case ((NU8) 46):
  	case ((NU8) 47):
  	case ((NU8) 8):
  	case ((NU8) 61):
  	{
  		Ttype293836* LOC26;
  		LOC26 = 0;
  		LOC26 = lastson_296377(t);
  		result = firstord_321001(LOC26);
  	}
  	break;
  	case ((NU8) 15):
  	{
  		{
  			NI LOC30;
  			Ttype293836* LOC33;
  			LOC30 = 0;
  			LOC30 = len_296339(t);
  			if (!(((NI) 0) < LOC30)) goto LA31;
  			LOC33 = 0;
  			LOC33 = lastson_296377(t);
  			result = firstord_321001(LOC33);
  		}
  		goto LA28;
  		LA31: ;
  		{
  			NimStringDesc* LOC35;
  			LOC35 = 0;
  			LOC35 = rawNewString(reprEnum((*t).kind, (&NTI293242))->Sup.len + 24);
  appendString(LOC35, ((NimStringDesc*) &TMP2837));
  appendString(LOC35, reprEnum((*t).kind, (&NTI293242)));
  appendChar(LOC35, 41);
  			internalerror_197113(LOC35);
  		}
  		LA28: ;
  	}
  	break;
  	default:
  	{
  		NimStringDesc* LOC37;
  		LOC37 = 0;
  		LOC37 = rawNewString(reprEnum((*t).kind, (&NTI293242))->Sup.len + 24);
  appendString(LOC37, ((NimStringDesc*) &TMP2837));
  appendString(LOC37, reprEnum((*t).kind, (&NTI293242)));
  appendChar(LOC37, 41);
  		internalerror_197113(LOC37);
  		result = IL64(0);
  	}
  	break;
  	}
  	return result;
  }
  
  N_NIMCALL(NI64, lastord_321004)(Ttype293836* t) {
  	NI64 result;
  	result = 0;
  	switch ((*t).kind) {
  	case ((NU8) 1):
  	{
  		result = IL64(1);
  	}
  	break;
  	case ((NU8) 2):
  	{
  		result = IL64(255);
  	}
  	break;
  	case ((NU8) 19):
  	case ((NU8) 23):
  	{
  		result = lastord_321004((*t).sons->data[((NI) 0)]);
  	}
  	break;
  	case ((NU8) 16):
  	case ((NU8) 4):
  	{
  		result = lastord_321004((*t).sons->data[((NI) 0)]);
  	}
  	break;
  	case ((NU8) 20):
  	{
  		result = getordvalue_321118((*(*t).n).kindU.S6.sons->data[((NI) 1)]);
  	}
  	break;
  	case ((NU8) 31):
  	{
  		{
  			if (!(intsize_177622 == ((NI) 4))) goto LA9;
  			result = IL64(2147483647);
  		}
  		goto LA7;
  		LA9: ;
  		{
  			result = IL64(9223372036854775807);
  		}
  		LA7: ;
  	}
  	break;
  	case ((NU8) 32):
  	{
  		result = IL64(127);
  	}
  	break;
  	case ((NU8) 33):
  	{
  		result = IL64(32767);
  	}
  	break;
  	case ((NU8) 34):
  	{
  		result = IL64(2147483647);
  	}
  	break;
  	case ((NU8) 35):
  	{
  		result = IL64(9223372036854775807);
  	}
  	break;
  	case ((NU8) 40):
  	{
  		{
  			if (!(intsize_177622 == ((NI) 4))) goto LA19;
  			result = IL64(4294967295);
  		}
  		goto LA17;
  		LA19: ;
  		{
  			result = IL64(9223372036854775807);
  		}
  		LA17: ;
  	}
  	break;
  	case ((NU8) 41):
  	{
  		result = IL64(255);
  	}
  	break;
  	case ((NU8) 42):
  	{
  		result = IL64(65535);
  	}
  	break;
  	case ((NU8) 43):
  	{
  		result = IL64(4294967295);
  	}
  	break;
  	case ((NU8) 44):
  	{
  		result = IL64(9223372036854775807);
  	}
  	break;
  	case ((NU8) 14):
  	{
  		NI LOC27;
  		LOC27 = 0;
  		LOC27 = sonslen_296351((*t).n);
  		result = ((NI64) ((*(*(*(*t).n).kindU.S6.sons->data[(NI)(LOC27 - ((NI) 1))]).kindU.S4.sym).position));
  	}
  	break;
  	case ((NU8) 11):
  	case ((NU8) 13):
  	case ((NU8) 46):
  	case ((NU8) 47):
  	case ((NU8) 8):
  	case ((NU8) 61):
  	{
  		Ttype293836* LOC29;
  		LOC29 = 0;
  		LOC29 = lastson_296377(t);
  		result = lastord_321004(LOC29);
  	}
  	break;
  	case ((NU8) 50):
  	{
  		result = IL64(0);
  	}
  	break;
  	case ((NU8) 15):
  	{
  		{
  			NI LOC34;
  			Ttype293836* LOC37;
  			LOC34 = 0;
  			LOC34 = len_296339(t);
  			if (!(((NI) 0) < LOC34)) goto LA35;
  			LOC37 = 0;
  			LOC37 = lastson_296377(t);
  			result = lastord_321004(LOC37);
  		}
  		goto LA32;
  		LA35: ;
  		{
  			NimStringDesc* LOC39;
  			LOC39 = 0;
  			LOC39 = rawNewString(reprEnum((*t).kind, (&NTI293242))->Sup.len + 23);
  appendString(LOC39, ((NimStringDesc*) &TMP2838));
  appendString(LOC39, reprEnum((*t).kind, (&NTI293242)));
  appendChar(LOC39, 41);
  			internalerror_197113(LOC39);
  		}
  		LA32: ;
  	}
  	break;
  	default:
  	{
  		NimStringDesc* LOC41;
  		LOC41 = 0;
  		LOC41 = rawNewString(reprEnum((*t).kind, (&NTI293242))->Sup.len + 23);
  appendString(LOC41, ((NimStringDesc*) &TMP2838));
  appendString(LOC41, reprEnum((*t).kind, (&NTI293242)));
  appendChar(LOC41, 41);
  		internalerror_197113(LOC41);
  		result = IL64(0);
  	}
  	break;
  	}
  	return result;
  }
  
  N_NIMCALL(NI64, lengthord_321007)(Ttype293836* t) {
  	NI64 result;
  	result = 0;
  	switch ((*t).kind) {
  	case ((NU8) 35):
  	case ((NU8) 34):
  	case ((NU8) 31):
  	{
  		result = lastord_321004(t);
  	}
  	break;
  	case ((NU8) 13):
  	case ((NU8) 46):
  	case ((NU8) 47):
  	{
  		result = lengthord_321007((*t).sons->data[((NI) 0)]);
  	}
  	break;
  	default:
  	{
  		NI64 last;
  		NI64 first;
  		last = lastord_321004(t);
  		first = firstord_321001(t);
  		{
  			NIM_BOOL LOC6;
  			LOC6 = 0;
  			LOC6 = (last == IL64(9223372036854775807));
  			if (!(LOC6)) goto LA7;
  			LOC6 = (first <= IL64(0));
  			LA7: ;
  			if (!LOC6) goto LA8;
  			result = last;
  		}
  		goto LA4;
  		LA8: ;
  		{
  			NI64 LOC11;
  			NI64 LOC12;
  			LOC11 = 0;
  			LOC11 = lastord_321004(t);
  			LOC12 = 0;
  			LOC12 = firstord_321001(t);
  			result = (NI64)((NI64)(LOC11 - LOC12) + IL64(1));
  		}
  		LA4: ;
  	}
  	break;
  	}
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, isordinaltype_321057)(Ttype293836* t) {
  	NIM_BOOL result;
  	NIM_BOOL LOC1;
  	NIM_BOOL LOC3;
  	result = 0;
  	LOC1 = 0;
  	LOC1 = ((IL64(15459734798342) &((NU64)1<<((NU)((*t).kind)&63U)))!=0);
  	if (LOC1) goto LA2;
  	LOC3 = 0;
  	LOC3 = ((IL64(211106233624576) &((NU64)1<<((NU)((*t).kind)&63U)))!=0);
  	if (!(LOC3)) goto LA4;
  	LOC3 = isordinaltype_321057((*t).sons->data[((NI) 0)]);
  	LA4: ;
  	LOC1 = LOC3;
  	LA2: ;
  	result = LOC1;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, sametype_325432)(Ttype293836* a, Ttype293836* b, NU8 flags) {
  	NIM_BOOL result;
  	Tsametypeclosure325233 c;
  	result = 0;
  	memset((void*)(&c), 0, sizeof(c));
  	chckNil((void*)(&c));
  	memset((void*)(&c), 0, sizeof(c));
  	initsametypeclosure_325252((&c));
  	c.flags = flags;
  	result = sametypeaux_325384(a, b, (&c));
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, sameobjecttypes_326019)(Ttype293836* a, Ttype293836* b) {
  	NIM_BOOL result;
  	result = 0;
  	{
  		if (!!(((((*a).flags | (*b).flags) &(1U<<((NU)(((NU8) 8))&31U)))!=0))) goto LA3;
  		result = ((*a).Sup.id == (*b).Sup.id);
  	}
  	goto LA1;
  	LA3: ;
  	{
  		{
  			NIM_BOOL LOC8;
  			Tsametypeclosure325233 c;
  			LOC8 = 0;
  			LOC8 = ((((*a).flags & (*b).flags) &(1U<<((NU)(((NU8) 8))&31U)))!=0);
  			if (!(LOC8)) goto LA9;
  			LOC8 = ((*(*a).sym).Sup.id == (*(*b).sym).Sup.id);
  			LA9: ;
  			if (!LOC8) goto LA10;
  			memset((void*)(&c), 0, sizeof(c));
  			chckNil((void*)(&c));
  			memset((void*)(&c), 0, sizeof(c));
  			initsametypeclosure_325252((&c));
  			result = sametypeaux_325384(a, b, (&c));
  		}
  		LA10: ;
  	}
  	LA1: ;
  	return result;
  }
  
  N_NIMCALL(NI, inheritancediff_327052)(Ttype293836* a, Ttype293836* b) {
  	NI result;
  	Ttype293836* x;
  	Ttype293836* y;
  {	result = 0;
  	{
  		NIM_BOOL LOC3;
  		NIM_BOOL LOC4;
  		LOC3 = 0;
  		LOC4 = 0;
  		LOC4 = (a == b);
  		if (LOC4) goto LA5;
  		LOC4 = ((*a).kind == ((NU8) 50));
  		LA5: ;
  		LOC3 = LOC4;
  		if (LOC3) goto LA6;
  		LOC3 = ((*b).kind == ((NU8) 50));
  		LA6: ;
  		if (!LOC3) goto LA7;
  		result = ((NI) 0);
  		goto BeforeRet;
  	}
  	LA7: ;
  	x = a;
  	result = ((NI) 0);
  	{
  		while (1) {
  			if (!!((x == NIM_NIL))) goto LA10;
  			x = skiptypes_297099(x, IL64(211106247215360));
  			{
  				NIM_BOOL LOC13;
  				LOC13 = 0;
  				LOC13 = sameobjecttypes_326019(x, b);
  				if (!LOC13) goto LA14;
  				goto BeforeRet;
  			}
  			LA14: ;
  			x = (*x).sons->data[((NI) 0)];
  			result -= ((NI) 1);
  		} LA10: ;
  	}
  	y = b;
  	result = ((NI) 0);
  	{
  		while (1) {
  			if (!!((y == NIM_NIL))) goto LA17;
  			y = skiptypes_297099(y, IL64(211106247215360));
  			{
  				NIM_BOOL LOC20;
  				LOC20 = 0;
  				LOC20 = sameobjecttypes_326019(y, a);
  				if (!LOC20) goto LA21;
  				goto BeforeRet;
  			}
  			LA21: ;
  			y = (*y).sons->data[((NI) 0)];
  			result += ((NI) 1);
  		} LA17: ;
  	}
  	result = ((NI) IL64(9223372036854775807));
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NI, safeinheritancediff_329152)(Ttype293836* a, Ttype293836* b) {
  	NI result;
  	result = 0;
  	{
  		NIM_BOOL LOC3;
  		LOC3 = 0;
  		LOC3 = ((*a).kind == ((NU8) 50));
  		if (LOC3) goto LA4;
  		LOC3 = ((*b).kind == ((NU8) 50));
  		LA4: ;
  		if (!LOC3) goto LA5;
  		result = ((NI) -1);
  	}
  	goto LA1;
  	LA5: ;
  	{
  		result = inheritancediff_327052(a, b);
  	}
  	LA1: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, compatibleeffectsaux_329175)(Tnode293798* se, Tnode293798* re) {
  	NIM_BOOL result;
  {	result = 0;
  	{
  		if (!re == 0) goto LA3;
  		result = NIM_FALSE;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		Tnode293798* r_329189;
  		r_329189 = 0;
  		{
  			NI i_329207;
  			NI HEX3Atmp_329209;
  			NI LOC7;
  			NI res_329211;
  			i_329207 = 0;
  			HEX3Atmp_329209 = 0;
  			LOC7 = 0;
  			LOC7 = len_294062(re);
  			HEX3Atmp_329209 = (LOC7 - 1);
  			res_329211 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_329211 <= HEX3Atmp_329209)) goto LA9;
  					i_329207 = res_329211;
  					r_329189 = (*re).kindU.S6.sons->data[i_329207];
  					{
  						{
  							Tnode293798* s_329191;
  							s_329191 = 0;
  							{
  								NI i_329197;
  								NI HEX3Atmp_329199;
  								NI LOC13;
  								NI res_329201;
  								i_329197 = 0;
  								HEX3Atmp_329199 = 0;
  								LOC13 = 0;
  								LOC13 = len_294062(se);
  								HEX3Atmp_329199 = (LOC13 - 1);
  								res_329201 = ((NI) 0);
  								{
  									while (1) {
  										if (!(res_329201 <= HEX3Atmp_329199)) goto LA15;
  										i_329197 = res_329201;
  										s_329191 = (*se).kindU.S6.sons->data[i_329197];
  										{
  											NI LOC18;
  											LOC18 = 0;
  											LOC18 = safeinheritancediff_329152((*r_329189).typ, (*s_329191).typ);
  											if (!(LOC18 <= ((NI) 0))) goto LA19;
  											goto LA10;
  										}
  										LA19: ;
  										res_329201 += ((NI) 1);
  									} LA15: ;
  								}
  							}
  						}
  						result = NIM_FALSE;
  						goto BeforeRet;
  					} LA10: ;
  					res_329211 += ((NI) 1);
  				} LA9: ;
  			}
  		}
  	}
  	result = NIM_TRUE;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, compatibleeffects_329214)(Ttype293836* formal, Ttype293836* actual) {
  	NIM_BOOL result;
  	Tnode293798* spec;
  	NIM_BOOL LOC46;
  {	result = 0;
  	{
  		NimStringDesc* LOC5;
  		if (!!(((*(*(*formal).n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 152)))) goto LA3;
  		LOC5 = 0;
  		LOC5 = HEX24_197185(TMP2841);
  		internalerror_197113(LOC5);
  	}
  	LA3: ;
  	{
  		NimStringDesc* LOC10;
  		if (!!(((*(*(*actual).n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 152)))) goto LA8;
  		LOC10 = 0;
  		LOC10 = HEX24_197185(TMP2842);
  		internalerror_197113(LOC10);
  	}
  	LA8: ;
  	spec = (*(*formal).n).kindU.S6.sons->data[((NI) 0)];
  	{
  		NI LOC13;
  		Tnode293798* real;
  		Tnode293798* se;
  		Tnode293798* st;
  		LOC13 = 0;
  		LOC13 = len_294062(spec);
  		if (!!((LOC13 == ((NI) 0)))) goto LA14;
  		real = (*(*actual).n).kindU.S6.sons->data[((NI) 0)];
  		se = (*spec).kindU.S6.sons->data[((NI) 0)];
  		{
  			NIM_BOOL LOC18;
  			LOC18 = 0;
  			LOC18 = !(se == 0);
  			if (!(LOC18)) goto LA19;
  			LOC18 = !(((*se).kind == ((NU8) 152)));
  			LA19: ;
  			if (!LOC18) goto LA20;
  			{
  				NI LOC24;
  				LOC24 = 0;
  				LOC24 = len_294062(real);
  				if (!(LOC24 == ((NI) 0))) goto LA25;
  				result = NIM_FALSE;
  				goto BeforeRet;
  			}
  			LA25: ;
  			result = compatibleeffectsaux_329175(se, (*real).kindU.S6.sons->data[((NI) 0)]);
  			{
  				if (!!(result)) goto LA29;
  				goto BeforeRet;
  			}
  			LA29: ;
  		}
  		LA20: ;
  		st = (*spec).kindU.S6.sons->data[((NI) 3)];
  		{
  			NIM_BOOL LOC33;
  			LOC33 = 0;
  			LOC33 = !(st == 0);
  			if (!(LOC33)) goto LA34;
  			LOC33 = !(((*st).kind == ((NU8) 152)));
  			LA34: ;
  			if (!LOC33) goto LA35;
  			{
  				NI LOC39;
  				LOC39 = 0;
  				LOC39 = len_294062(real);
  				if (!(LOC39 == ((NI) 0))) goto LA40;
  				result = NIM_FALSE;
  				goto BeforeRet;
  			}
  			LA40: ;
  			result = compatibleeffectsaux_329175(st, (*real).kindU.S6.sons->data[((NI) 3)]);
  			{
  				if (!!(result)) goto LA44;
  				goto BeforeRet;
  			}
  			LA44: ;
  		}
  		LA35: ;
  	}
  	LA14: ;
  	LOC46 = 0;
  	LOC46 = (((NI) ((*formal).locklevel)) < ((NI) 0));
  	if (LOC46) goto LA47;
  	LOC46 = (((NI) ((*actual).locklevel)) <= ((NI) ((*formal).locklevel)));
  	LA47: ;
  	result = LOC46;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NimStringDesc*, getprocheader_321324)(Tsym293830* sym, NU8 prefer) {
  	NimStringDesc* result;
  	NimStringDesc* LOC1;
  	Tnode293798* n;
  	result = 0;
  	LOC1 = 0;
  	LOC1 = rawNewString((*(*(*sym).owner).name).s->Sup.len + (*(*sym).name).s->Sup.len + 2);
  appendString(LOC1, (*(*(*sym).owner).name).s);
  appendChar(LOC1, 46);
  appendString(LOC1, (*(*sym).name).s);
  appendChar(LOC1, 40);
  	result = LOC1;
  	n = (*(*sym).typ).n;
  	{
  		NI i_321345;
  		NI HEX3Atmp_321376;
  		NI LOC3;
  		NI res_321379;
  		i_321345 = 0;
  		HEX3Atmp_321376 = 0;
  		LOC3 = 0;
  		LOC3 = sonslen_296351(n);
  		HEX3Atmp_321376 = (NI)(LOC3 - ((NI) 1));
  		res_321379 = ((NI) 1);
  		{
  			while (1) {
  				Tnode293798* p;
  				if (!(res_321379 <= HEX3Atmp_321376)) goto LA5;
  				i_321345 = res_321379;
  				p = (*n).kindU.S6.sons->data[i_321345];
  				{
  					NimStringDesc* LOC10;
  					if (!((*p).kind == ((NU8) 3))) goto LA8;
  					result = resizeString(result, (*(*(*p).kindU.S4.sym).name).s->Sup.len + 0);
  appendString(result, (*(*(*p).kindU.S4.sym).name).s);
  					result = resizeString(result, 2);
  appendString(result, ((NimStringDesc*) &TMP2261));
  					LOC10 = 0;
  					LOC10 = typetostring_321017((*(*p).kindU.S4.sym).typ, prefer);
  					result = resizeString(result, LOC10->Sup.len + 0);
  appendString(result, LOC10);
  					{
  						NI LOC13;
  						LOC13 = 0;
  						LOC13 = sonslen_296351(n);
  						if (!!((i_321345 == (NI)(LOC13 - ((NI) 1))))) goto LA14;
  						result = resizeString(result, 2);
  appendString(result, ((NimStringDesc*) &TMP2228));
  					}
  					LA14: ;
  				}
  				goto LA6;
  				LA8: ;
  				{
  					internalerror_197113(((NimStringDesc*) &TMP2850));
  				}
  				LA6: ;
  				res_321379 += ((NI) 1);
  			} LA5: ;
  		}
  	}
  	result = addChar(result, 41);
  	{
  		NimStringDesc* LOC21;
  		NimStringDesc* LOC22;
  		if (!!(((*(*n).kindU.S6.sons->data[((NI) 0)]).typ == NIM_NIL))) goto LA19;
  		LOC21 = 0;
  		LOC22 = 0;
  		LOC22 = typetostring_321017((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, prefer);
  		LOC21 = rawNewString(LOC22->Sup.len + 2);
  appendString(LOC21, ((NimStringDesc*) &TMP2261));
  appendString(LOC21, LOC22);
  		result = resizeString(result, LOC21->Sup.len + 0);
  appendString(result, LOC21);
  	}
  	LA19: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, isemptycontainer_329730)(Ttype293836* t) {
  	NIM_BOOL result;
  	result = 0;
  	switch ((*t).kind) {
  	case ((NU8) 6):
  	case ((NU8) 5):
  	{
  		result = NIM_TRUE;
  	}
  	break;
  	case ((NU8) 16):
  	case ((NU8) 4):
  	{
  		result = ((*(*t).sons->data[((NI) 1)]).kind == ((NU8) 3));
  	}
  	break;
  	case ((NU8) 19):
  	case ((NU8) 24):
  	case ((NU8) 27):
  	case ((NU8) 48):
  	{
  		result = ((*(*t).sons->data[((NI) 0)]).kind == ((NU8) 3));
  	}
  	break;
  	case ((NU8) 11):
  	{
  		Ttype293836* LOC5;
  		LOC5 = 0;
  		LOC5 = lastson_296377(t);
  		result = isemptycontainer_329730(LOC5);
  	}
  	break;
  	default:
  	{
  		result = NIM_FALSE;
  	}
  	break;
  	}
  	return result;
  }
  
  N_NIMCALL(NI64, align_328649)(NI64 address, NI64 alignment) {
  	NI64 result;
  	result = 0;
  	result = (NI64)((NI64)(address + (NI64)(alignment - IL64(1))) & (NI64)((NU64) ~((NI64)(alignment - IL64(1)))));
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, isobjectwithtypefieldpredicate_322309)(Ttype293836* t) {
  	NIM_BOOL result;
  	NIM_BOOL LOC1;
  	NIM_BOOL LOC2;
  	NIM_BOOL LOC3;
  	NIM_BOOL LOC6;
  	result = 0;
  	LOC1 = 0;
  	LOC2 = 0;
  	LOC3 = 0;
  	LOC3 = ((*t).kind == ((NU8) 17));
  	if (!(LOC3)) goto LA4;
  	LOC3 = ((*t).sons->data[((NI) 0)] == NIM_NIL);
  	LA4: ;
  	LOC2 = LOC3;
  	if (!(LOC2)) goto LA5;
  	LOC6 = 0;
  	LOC6 = !(((*t).sym == NIM_NIL));
  	if (!(LOC6)) goto LA7;
  	LOC6 = !(((134218240 & (*(*t).sym).flags) == 0));
  	LA7: ;
  	LOC2 = !(LOC6);
  	LA5: ;
  	LOC1 = LOC2;
  	if (!(LOC1)) goto LA8;
  	LOC1 = !((((*t).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0));
  	LA8: ;
  	result = LOC1;
  	return result;
  }
  
  N_NIMCALL(NI64, computerecsizeaux_328662)(Tnode293798* n, NI64* a, NI64* curroffset) {
  	NI64 result;
  	NI64 maxalign;
  	NI64 maxsize;
  	NI64 b;
  	NI64 res;
  {	result = 0;
  	maxalign = 0;
  	maxsize = 0;
  	b = 0;
  	res = 0;
  	switch ((*n).kind) {
  	case ((NU8) 139):
  	{
  		NI64 LOC13;
  		NI64 LOC14;
  		result = computerecsizeaux_328662((*n).kindU.S6.sons->data[((NI) 0)], a, curroffset);
  		maxsize = IL64(0);
  		maxalign = IL64(1);
  		{
  			NI i_328813;
  			NI HEX3Atmp_328848;
  			NI LOC3;
  			NI res_328851;
  			i_328813 = 0;
  			HEX3Atmp_328848 = 0;
  			LOC3 = 0;
  			LOC3 = sonslen_296351(n);
  			HEX3Atmp_328848 = (NI)(LOC3 - ((NI) 1));
  			res_328851 = ((NI) 1);
  			{
  				while (1) {
  					if (!(res_328851 <= HEX3Atmp_328848)) goto LA5;
  					i_328813 = res_328851;
  					switch ((*(*n).kindU.S6.sons->data[i_328813]).kind) {
  					case ((NU8) 85):
  					case ((NU8) 88):
  					{
  						Tnode293798* LOC7;
  						LOC7 = 0;
  						LOC7 = lastson_296364((*n).kindU.S6.sons->data[i_328813]);
  						res = computerecsizeaux_328662(LOC7, (&b), curroffset);
  						{
  							if (!(res < IL64(0))) goto LA10;
  							result = res;
  							goto BeforeRet;
  						}
  						LA10: ;
  						maxsize = ((maxsize >= res) ? maxsize : res);
  						maxalign = ((maxalign >= b) ? maxalign : b);
  					}
  					break;
  					default:
  					{
  						internalerror_197113(((NimStringDesc*) &TMP3026));
  					}
  					break;
  					}
  					res_328851 += ((NI) 1);
  				} LA5: ;
  			}
  		}
  		LOC13 = 0;
  		LOC13 = align_328649((*curroffset), maxalign);
  		(*curroffset) = (NI64)(LOC13 + maxsize);
  		LOC14 = 0;
  		LOC14 = align_328649(result, maxalign);
  		result = (NI64)(LOC14 + maxsize);
  		(*a) = maxalign;
  	}
  	break;
  	case ((NU8) 138):
  	{
  		result = IL64(0);
  		maxalign = IL64(1);
  		{
  			NI i_328836;
  			NI HEX3Atmp_328856;
  			NI LOC17;
  			NI res_328859;
  			i_328836 = 0;
  			HEX3Atmp_328856 = 0;
  			LOC17 = 0;
  			LOC17 = sonslen_296351(n);
  			HEX3Atmp_328856 = (NI)(LOC17 - ((NI) 1));
  			res_328859 = ((NI) 0);
  			{
  				while (1) {
  					NI64 LOC24;
  					NI64 LOC25;
  					if (!(res_328859 <= HEX3Atmp_328856)) goto LA19;
  					i_328836 = res_328859;
  					res = computerecsizeaux_328662((*n).kindU.S6.sons->data[i_328836], (&b), curroffset);
  					{
  						if (!(res < IL64(0))) goto LA22;
  						result = res;
  						goto BeforeRet;
  					}
  					LA22: ;
  					LOC24 = 0;
  					LOC24 = align_328649((*curroffset), b);
  					(*curroffset) = (NI64)(LOC24 + res);
  					LOC25 = 0;
  					LOC25 = align_328649(result, b);
  					result = (NI64)(LOC25 + res);
  					{
  						if (!(maxalign < b)) goto LA28;
  						maxalign = b;
  					}
  					LA28: ;
  					res_328859 += ((NI) 1);
  				} LA19: ;
  			}
  		}
  		(*a) = maxalign;
  	}
  	break;
  	case ((NU8) 3):
  	{
  		result = computesizeaux_328657((*(*n).kindU.S4.sym).typ, a);
  		(*(*n).kindU.S4.sym).offset = ((NI) ((*curroffset)));
  	}
  	break;
  	default:
  	{
  		(*a) = IL64(1);
  		result = IL64(-3);
  	}
  	break;
  	}
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NI64, computesizeaux_328657)(Ttype293836* typ, NI64* a) {
  	NI64 result;
  	NI64 res;
  	NI64 maxalign;
  	NI64 length;
  	NI64 curroffset;
  {	result = 0;
  	res = 0;
  	maxalign = 0;
  	length = 0;
  	curroffset = 0;
  	{
  		if (!((*typ).size == IL64(-2))) goto LA3;
  		result = IL64(-2);
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!(IL64(0) <= (*typ).size)) goto LA7;
  		result = (*typ).size;
  		(*a) = ((NI64) ((*typ).align));
  		goto BeforeRet;
  	}
  	LA7: ;
  	(*typ).size = IL64(-2);
  	switch ((*typ).kind) {
  	case ((NU8) 31):
  	case ((NU8) 40):
  	{
  		result = ((NI64) (intsize_177622));
  		(*a) = result;
  	}
  	break;
  	case ((NU8) 32):
  	case ((NU8) 41):
  	case ((NU8) 1):
  	case ((NU8) 2):
  	{
  		result = IL64(1);
  		(*a) = result;
  	}
  	break;
  	case ((NU8) 33):
  	case ((NU8) 42):
  	{
  		result = IL64(2);
  		(*a) = result;
  	}
  	break;
  	case ((NU8) 34):
  	case ((NU8) 43):
  	case ((NU8) 37):
  	{
  		result = IL64(4);
  		(*a) = result;
  	}
  	break;
  	case ((NU8) 35):
  	case ((NU8) 44):
  	case ((NU8) 38):
  	{
  		result = IL64(8);
  		(*a) = result;
  	}
  	break;
  	case ((NU8) 39):
  	{
  		result = IL64(16);
  		(*a) = result;
  	}
  	break;
  	case ((NU8) 36):
  	{
  		result = ((NI64) (floatsize_177623));
  		(*a) = result;
  	}
  	break;
  	case ((NU8) 25):
  	{
  		{
  			if (!((*typ).callconv == ((NU8) 8))) goto LA19;
  			result = ((NI64) ((NI)(((NI) 2) * ptrsize_177624)));
  		}
  		goto LA17;
  		LA19: ;
  		{
  			result = ((NI64) (ptrsize_177624));
  		}
  		LA17: ;
  		(*a) = ((NI64) (ptrsize_177624));
  	}
  	break;
  	case ((NU8) 5):
  	case ((NU8) 29):
  	case ((NU8) 28):
  	case ((NU8) 24):
  	case ((NU8) 21):
  	case ((NU8) 22):
  	case ((NU8) 23):
  	case ((NU8) 27):
  	case ((NU8) 45):
  	{
  		Ttype293836* base;
  		base = lastson_296377(typ);
  		{
  			NIM_BOOL LOC25;
  			NIM_BOOL LOC27;
  			LOC25 = 0;
  			LOC25 = (base == typ);
  			if (LOC25) goto LA26;
  			LOC27 = 0;
  			LOC27 = ((*base).kind == ((NU8) 18));
  			if (!(LOC27)) goto LA28;
  			LOC27 = ((*base).size == IL64(-2));
  			LA28: ;
  			LOC25 = LOC27;
  			LA26: ;
  			if (!LOC25) goto LA29;
  			result = IL64(-2);
  		}
  		goto LA23;
  		LA29: ;
  		{
  			result = ((NI64) (ptrsize_177624));
  		}
  		LA23: ;
  		(*a) = result;
  	}
  	break;
  	case ((NU8) 16):
  	case ((NU8) 4):
  	{
  		NI64 elemsize;
  		NI64 LOC37;
  		elemsize = computesizeaux_328657((*typ).sons->data[((NI) 1)], a);
  		{
  			if (!(elemsize < IL64(0))) goto LA35;
  			result = elemsize;
  			goto BeforeRet;
  		}
  		LA35: ;
  		LOC37 = 0;
  		LOC37 = lengthord_321007((*typ).sons->data[((NI) 0)]);
  		result = (NI64)(LOC37 * elemsize);
  	}
  	break;
  	case ((NU8) 14):
  	{
  		{
  			NI64 LOC41;
  			LOC41 = 0;
  			LOC41 = firstord_321001(typ);
  			if (!(LOC41 < IL64(0))) goto LA42;
  			result = IL64(4);
  		}
  		goto LA39;
  		LA42: ;
  		{
  			length = lastord_321004(typ);
  			{
  				if (!((NI64)(length + IL64(1)) < IL64(256))) goto LA47;
  				result = IL64(1);
  			}
  			goto LA45;
  			LA47: ;
  			{
  				if (!((NI64)(length + IL64(1)) < IL64(65536))) goto LA50;
  				result = IL64(2);
  			}
  			goto LA45;
  			LA50: ;
  			{
  				if (!((NI64)(length + IL64(1)) < IL64(4294967296))) goto LA53;
  				result = IL64(4);
  			}
  			goto LA45;
  			LA53: ;
  			{
  				result = IL64(8);
  			}
  			LA45: ;
  		}
  		LA39: ;
  		(*a) = result;
  	}
  	break;
  	case ((NU8) 19):
  	{
  		{
  			if (!((*(*typ).sons->data[((NI) 0)]).kind == ((NU8) 12))) goto LA59;
  			result = IL64(-1);
  		}
  		goto LA57;
  		LA59: ;
  		{
  			length = lengthord_321007((*typ).sons->data[((NI) 0)]);
  			{
  				if (!(length <= IL64(8))) goto LA64;
  				result = IL64(1);
  			}
  			goto LA62;
  			LA64: ;
  			{
  				if (!(length <= IL64(16))) goto LA67;
  				result = IL64(2);
  			}
  			goto LA62;
  			LA67: ;
  			{
  				if (!(length <= IL64(32))) goto LA70;
  				result = IL64(4);
  			}
  			goto LA62;
  			LA70: ;
  			{
  				if (!(length <= IL64(64))) goto LA73;
  				result = IL64(8);
  			}
  			goto LA62;
  			LA73: ;
  			{
  				NI64 LOC76;
  				NI64 LOC79;
  				LOC76 = 0;
  				LOC76 = align_328649(length, IL64(8));
  				if (!(((NI) ((NI64)(LOC76 % IL64(8)))) == ((NI) 0))) goto LA77;
  				LOC79 = 0;
  				LOC79 = align_328649(length, IL64(8));
  				result = (NI64)(LOC79 / IL64(8));
  			}
  			goto LA62;
  			LA77: ;
  			{
  				NI64 LOC81;
  				LOC81 = 0;
  				LOC81 = align_328649(length, IL64(8));
  				result = (NI64)((NI64)(LOC81 / IL64(8)) + IL64(1));
  			}
  			LA62: ;
  		}
  		LA57: ;
  		(*a) = result;
  	}
  	break;
  	case ((NU8) 20):
  	{
  		result = computesizeaux_328657((*typ).sons->data[((NI) 0)], a);
  	}
  	break;
  	case ((NU8) 18):
  	{
  		result = IL64(0);
  		maxalign = IL64(1);
  		{
  			NI i_328928;
  			NI HEX3Atmp_328963;
  			NI LOC85;
  			NI res_328966;
  			i_328928 = 0;
  			HEX3Atmp_328963 = 0;
  			LOC85 = 0;
  			LOC85 = sonslen_296327(typ);
  			HEX3Atmp_328963 = (NI)(LOC85 - ((NI) 1));
  			res_328966 = ((NI) 0);
  			{
  				while (1) {
  					NI64 LOC92;
  					if (!(res_328966 <= HEX3Atmp_328963)) goto LA87;
  					i_328928 = res_328966;
  					res = computesizeaux_328657((*typ).sons->data[i_328928], a);
  					{
  						if (!(res < IL64(0))) goto LA90;
  						result = res;
  						goto BeforeRet;
  					}
  					LA90: ;
  					maxalign = ((maxalign >= (*a)) ? maxalign : (*a));
  					LOC92 = 0;
  					LOC92 = align_328649(result, (*a));
  					result = (NI64)(LOC92 + res);
  					res_328966 += ((NI) 1);
  				} LA87: ;
  			}
  		}
  		result = align_328649(result, maxalign);
  		(*a) = maxalign;
  	}
  	break;
  	case ((NU8) 17):
  	{
  		{
  			Ttype293836* LOC98;
  			if (!!(((*typ).sons->data[((NI) 0)] == NIM_NIL))) goto LA96;
  			LOC98 = 0;
  			LOC98 = skiptypes_297099((*typ).sons->data[((NI) 0)], IL64(211106247215360));
  			result = computesizeaux_328657(LOC98, a);
  			{
  				if (!(result < IL64(0))) goto LA101;
  				goto BeforeRet;
  			}
  			LA101: ;
  			maxalign = (*a);
  		}
  		goto LA94;
  		LA96: ;
  		{
  			NIM_BOOL LOC104;
  			LOC104 = 0;
  			LOC104 = isobjectwithtypefieldpredicate_322309(typ);
  			if (!LOC104) goto LA105;
  			result = ((NI64) (intsize_177622));
  			maxalign = result;
  		}
  		goto LA94;
  		LA105: ;
  		{
  			result = IL64(0);
  			maxalign = IL64(1);
  		}
  		LA94: ;
  		curroffset = result;
  		result = computerecsizeaux_328662((*typ).n, a, (&curroffset));
  		{
  			if (!(result < IL64(0))) goto LA110;
  			goto BeforeRet;
  		}
  		LA110: ;
  		{
  			if (!((*a) < maxalign)) goto LA114;
  			(*a) = maxalign;
  		}
  		LA114: ;
  		result = align_328649(result, (*a));
  	}
  	break;
  	case ((NU8) 11):
  	case ((NU8) 13):
  	case ((NU8) 10):
  	case ((NU8) 47):
  	case ((NU8) 46):
  	case ((NU8) 49):
  	{
  		Ttype293836* LOC117;
  		LOC117 = 0;
  		LOC117 = lastson_296377(typ);
  		result = computesizeaux_328657(LOC117, a);
  	}
  	break;
  	case ((NU8) 8):
  	{
  		Ttype293836* LOC119;
  		LOC119 = 0;
  		LOC119 = base_321021(typ);
  		result = computesizeaux_328657(LOC119, a);
  	}
  	break;
  	case ((NU8) 30):
  	{
  		result = IL64(-2);
  		goto BeforeRet;
  	}
  	break;
  	case ((NU8) 59):
  	{
  		{
  			Ttype293836* LOC126;
  			if (!!(((*typ).n == NIM_NIL))) goto LA124;
  			LOC126 = 0;
  			LOC126 = lastson_296377(typ);
  			result = computesizeaux_328657(LOC126, a);
  		}
  		goto LA122;
  		LA124: ;
  		{
  			result = IL64(-1);
  		}
  		LA122: ;
  	}
  	break;
  	default:
  	{
  		result = IL64(-1);
  	}
  	break;
  	}
  	(*typ).size = result;
  	(*typ).align = ((NI16) ((*a)));
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NI64, computesize_321121)(Ttype293836* typ) {
  	NI64 result;
  	NI64 a;
  	result = 0;
  	a = IL64(1);
  	result = computesizeaux_328657(typ, (&a));
  	return result;
  }
  
  N_NIMCALL(NI64, getsize_321124)(Ttype293836* typ) {
  	NI64 result;
  	result = 0;
  	result = computesize_321121(typ);
  	{
  		NimStringDesc* LOC5;
  		if (!(result < IL64(0))) goto LA3;
  		LOC5 = 0;
  		LOC5 = rawNewString(reprEnum((*typ).kind, (&NTI293242))->Sup.len + 9);
  appendString(LOC5, ((NimStringDesc*) &TMP3027));
  appendString(LOC5, reprEnum((*typ).kind, (&NTI293242)));
  		internalerror_197113(LOC5);
  	}
  	LA3: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, sametypeornil_325442)(Ttype293836* a, Ttype293836* b, NU8 flags) {
  	NIM_BOOL result;
  	result = 0;
  	{
  		if (!(a == b)) goto LA3;
  		result = NIM_TRUE;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		{
  			NIM_BOOL LOC8;
  			LOC8 = 0;
  			LOC8 = (a == NIM_NIL);
  			if (LOC8) goto LA9;
  			LOC8 = (b == NIM_NIL);
  			LA9: ;
  			if (!LOC8) goto LA10;
  			result = NIM_FALSE;
  		}
  		goto LA6;
  		LA10: ;
  		{
  			result = sametype_325432(a, b, flags);
  		}
  		LA6: ;
  	}
  	LA1: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, enumhasholes_321060)(Ttype293836* t) {
  	NIM_BOOL result;
  	Ttype293836* b;
  	NIM_BOOL LOC3;
  	result = 0;
  	b = t;
  	{
  		while (1) {
  			if (!((IL64(211106233583616) &((NU64)1<<((NU)((*b).kind)&63U)))!=0)) goto LA2;
  			b = (*b).sons->data[((NI) 0)];
  		} LA2: ;
  	}
  	LOC3 = 0;
  	LOC3 = ((*b).kind == ((NU8) 14));
  	if (!(LOC3)) goto LA4;
  	LOC3 = (((*b).flags &(1U<<((NU)(((NU8) 5))&31U)))!=0);
  	LA4: ;
  	result = LOC3;
  	return result;
  }
  
  N_NIMCALL(Ttype293836*, commonsuperclass_327450)(Ttype293836* a, Ttype293836* b) {
  	Ttype293836* result;
  	Ttype293836* x;
  	Intset269031 ancestors;
  	Ttype293836* y;
  {	result = 0;
  	{
  		NIM_BOOL LOC3;
  		LOC3 = 0;
  		LOC3 = sameobjecttypes_326019(a, b);
  		if (!LOC3) goto LA4;
  		result = a;
  		goto BeforeRet;
  	}
  	LA4: ;
  	x = a;
  	memset((void*)(&ancestors), 0, sizeof(ancestors));
  	chckNil((void*)(&ancestors));
  	memset((void*)(&ancestors), 0, sizeof(ancestors));
  	initintset_269885((&ancestors));
  	{
  		while (1) {
  			if (!!((x == NIM_NIL))) goto LA7;
  			x = skiptypes_297099(x, IL64(211106247215360));
  			incl_269832((&ancestors), (*x).Sup.id);
  			x = (*x).sons->data[((NI) 0)];
  		} LA7: ;
  	}
  	y = b;
  	{
  		while (1) {
  			if (!!((y == NIM_NIL))) goto LA9;
  			y = skiptypes_297099(y, IL64(211106247215360));
  			{
  				NIM_BOOL LOC12;
  				LOC12 = 0;
  				LOC12 = contains_269811((&ancestors), (*y).Sup.id);
  				if (!LOC12) goto LA13;
  				result = y;
  				goto BeforeRet;
  			}
  			LA13: ;
  			y = (*y).sons->data[((NI) 0)];
  		} LA9: ;
  	}
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NU8, equalparam_325485)(Tsym293830* a, Tsym293830* b) {
  	NU8 result;
  	result = 0;
  	{
  		NIM_BOOL LOC3;
  		LOC3 = 0;
  		LOC3 = sametypeornil_325442((*a).typ, (*b).typ, 4);
  		if (!(LOC3)) goto LA4;
  		LOC3 = exprstructuralequivalent_319311((*a).constraint, (*b).constraint, NIM_FALSE);
  		LA4: ;
  		if (!LOC3) goto LA5;
  		{
  			if (!((*a).ast == (*b).ast)) goto LA9;
  			result = ((NU8) 1);
  		}
  		goto LA7;
  		LA9: ;
  		{
  			NIM_BOOL LOC12;
  			LOC12 = 0;
  			LOC12 = !(((*a).ast == NIM_NIL));
  			if (!(LOC12)) goto LA13;
  			LOC12 = !(((*b).ast == NIM_NIL));
  			LA13: ;
  			if (!LOC12) goto LA14;
  			{
  				NIM_BOOL LOC18;
  				LOC18 = 0;
  				LOC18 = exprstructuralequivalent_319311((*a).ast, (*b).ast, NIM_FALSE);
  				if (!LOC18) goto LA19;
  				result = ((NU8) 1);
  			}
  			goto LA16;
  			LA19: ;
  			{
  				result = ((NU8) 2);
  			}
  			LA16: ;
  		}
  		goto LA7;
  		LA14: ;
  		{
  			if (!!(((*a).ast == NIM_NIL))) goto LA23;
  			result = ((NU8) 1);
  		}
  		goto LA7;
  		LA23: ;
  		{
  			if (!!(((*b).ast == NIM_NIL))) goto LA26;
  			result = ((NU8) 2);
  		}
  		goto LA7;
  		LA26: ;
  		LA7: ;
  	}
  	goto LA1;
  	LA5: ;
  	{
  		result = ((NU8) 0);
  	}
  	LA1: ;
  	return result;
  }
  
  N_NIMCALL(NU8, equalparams_321053)(Tnode293798* a, Tnode293798* b) {
  	NU8 result;
  	NI length;
  {	result = 0;
  	result = ((NU8) 1);
  	length = sonslen_296351(a);
  	{
  		NI LOC3;
  		LOC3 = 0;
  		LOC3 = sonslen_296351(b);
  		if (!!((length == LOC3))) goto LA4;
  		result = ((NU8) 0);
  	}
  	goto LA1;
  	LA4: ;
  	{
  		{
  			NI i_325640;
  			NI HEX3Atmp_325833;
  			NI res_325836;
  			i_325640 = 0;
  			HEX3Atmp_325833 = 0;
  			HEX3Atmp_325833 = (NI)(length - ((NI) 1));
  			res_325836 = ((NI) 1);
  			{
  				while (1) {
  					Tsym293830* m;
  					Tsym293830* n;
  					NU8 LOC10;
  					if (!(res_325836 <= HEX3Atmp_325833)) goto LA9;
  					i_325640 = res_325836;
  					m = (*(*a).kindU.S6.sons->data[i_325640]).kindU.S4.sym;
  					n = (*(*b).kindU.S6.sons->data[i_325640]).kindU.S4.sym;
  					LOC10 = 0;
  					LOC10 = equalparam_325485(m, n);
  					switch (LOC10) {
  					case ((NU8) 0):
  					{
  						result = ((NU8) 0);
  						goto BeforeRet;
  					}
  					break;
  					case ((NU8) 1):
  					{
  					}
  					break;
  					case ((NU8) 2):
  					{
  						result = ((NU8) 2);
  					}
  					break;
  					}
  					{
  						if (!!(((*(*m).name).Sup.id == (*(*n).name).Sup.id))) goto LA16;
  						result = ((NU8) 0);
  						goto BeforeRet;
  					}
  					LA16: ;
  					res_325836 += ((NI) 1);
  				} LA9: ;
  			}
  		}
  		{
  			NIM_BOOL LOC20;
  			LOC20 = 0;
  			LOC20 = sametypeornil_325442((*(*a).kindU.S6.sons->data[((NI) 0)]).typ, (*(*b).kindU.S6.sons->data[((NI) 0)]).typ, 4);
  			if (!!(LOC20)) goto LA21;
  			{
  				NIM_BOOL LOC25;
  				LOC25 = 0;
  				LOC25 = ((*(*a).kindU.S6.sons->data[((NI) 0)]).typ == NIM_NIL);
  				if (LOC25) goto LA26;
  				LOC25 = ((*(*b).kindU.S6.sons->data[((NI) 0)]).typ == NIM_NIL);
  				LA26: ;
  				if (!LOC25) goto LA27;
  				result = ((NU8) 0);
  			}
  			goto LA23;
  			LA27: ;
  			{
  				result = ((NU8) 2);
  			}
  			LA23: ;
  		}
  		LA21: ;
  	}
  	LA1: ;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(Ttype293836*, typeallowednode_327846)(Intset269031* marker, Tnode293798* n, NU8 kind, NU8 flags) {
  	Ttype293836* result;
  {	result = 0;
  	{
  		if (!!((n == NIM_NIL))) goto LA3;
  		result = typeallowedaux_327837(marker, (*n).typ, kind, flags);
  		{
  			if (!(result == NIM_NIL)) goto LA7;
  			switch ((*n).kind) {
  			case ((NU8) 0) ... ((NU8) 23):
  			{
  			}
  			break;
  			default:
  			{
  				{
  					NIM_BOOL LOC13;
  					Tnode293798* LOC17;
  					LOC13 = 0;
  					LOC13 = ((*n).kind == ((NU8) 139));
  					if (!(LOC13)) goto LA14;
  					LOC13 = ((5120 &(1U<<((NU)(kind)&31U)))!=0);
  					LA14: ;
  					if (!LOC13) goto LA15;
  					LOC17 = 0;
  					LOC17 = HEX5BHEX5D_294238(n, ((NI) 0));
  					result = (*LOC17).typ;
  					goto BeforeRet;
  				}
  				LA15: ;
  				{
  					NI i_327911;
  					NI HEX3Atmp_327927;
  					NI LOC19;
  					NI res_327930;
  					i_327911 = 0;
  					HEX3Atmp_327927 = 0;
  					LOC19 = 0;
  					LOC19 = sonslen_296351(n);
  					HEX3Atmp_327927 = (NI)(LOC19 - ((NI) 1));
  					res_327930 = ((NI) 0);
  					{
  						while (1) {
  							Tnode293798* it;
  							if (!(res_327930 <= HEX3Atmp_327927)) goto LA21;
  							i_327911 = res_327930;
  							it = (*n).kindU.S6.sons->data[i_327911];
  							result = typeallowednode_327846(marker, it, kind, flags);
  							{
  								if (!!((result == NIM_NIL))) goto LA24;
  								goto LA18;
  							}
  							LA24: ;
  							res_327930 += ((NI) 1);
  						} LA21: ;
  					}
  				} LA18: ;
  			}
  			break;
  			}
  		}
  		LA7: ;
  	}
  	LA3: ;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(Ttype293836*, typeallowedaux_327837)(Intset269031* marker, Ttype293836* typ, NU8 kind, NU8 flags_327845) {
  	Ttype293836* result;
  	Ttype293836* t;
  {	result = 0;
  	result = NIM_NIL;
  	{
  		if (!(typ == NIM_NIL)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		NIM_BOOL LOC7;
  		LOC7 = 0;
  		LOC7 = containsorincl_269862(marker, (*typ).Sup.id);
  		if (!LOC7) goto LA8;
  		goto BeforeRet;
  	}
  	LA8: ;
  	t = skiptypes_297099(typ, IL64(211106232576000));
  	switch ((*t).kind) {
  	case ((NU8) 23):
  	{
  		Ttype293836* t2;
  		{
  			if (!((5120 &(1U<<((NU)(kind)&31U)))!=0)) goto LA13;
  			result = t;
  			goto BeforeRet;
  		}
  		LA13: ;
  		t2 = skiptypes_297099((*t).sons->data[((NI) 0)], IL64(211106232576000));
  		switch ((*t2).kind) {
  		case ((NU8) 23):
  		{
  			{
  				if (!!(((flags_327845 &(1U<<((NU)(((NU8) 1))&7U)))!=0))) goto LA18;
  				result = t2;
  			}
  			LA18: ;
  		}
  		break;
  		case ((NU8) 27):
  		{
  			{
  				if (!!((kind == ((NU8) 3)))) goto LA23;
  				result = t;
  			}
  			goto LA21;
  			LA23: ;
  			{
  				result = typeallowedaux_327837(marker, t2, kind, flags_327845);
  			}
  			LA21: ;
  		}
  		break;
  		default:
  		{
  			{
  				if (!!(((2056 &(1U<<((NU)(kind)&31U)))!=0))) goto LA29;
  				result = t;
  			}
  			goto LA27;
  			LA29: ;
  			{
  				result = typeallowedaux_327837(marker, t2, kind, flags_327845);
  			}
  			LA27: ;
  		}
  		break;
  		}
  	}
  	break;
  	case ((NU8) 25):
  	{
  		{
  			NIM_BOOL LOC35;
  			LOC35 = 0;
  			LOC35 = (kind == ((NU8) 10));
  			if (!(LOC35)) goto LA36;
  			LOC35 = ((*t).callconv == ((NU8) 8));
  			LA36: ;
  			if (!LOC35) goto LA37;
  			result = t;
  			goto BeforeRet;
  		}
  		LA37: ;
  		{
  			NI i_328311;
  			NI HEX3Atmp_328617;
  			NI LOC40;
  			NI res_328620;
  			i_328311 = 0;
  			HEX3Atmp_328617 = 0;
  			LOC40 = 0;
  			LOC40 = sonslen_296327(t);
  			HEX3Atmp_328617 = (NI)(LOC40 - ((NI) 1));
  			res_328620 = ((NI) 1);
  			{
  				while (1) {
  					if (!(res_328620 <= HEX3Atmp_328617)) goto LA42;
  					i_328311 = res_328620;
  					result = typeallowedaux_327837(marker, (*t).sons->data[i_328311], ((NU8) 3), flags_327845);
  					{
  						if (!!((result == NIM_NIL))) goto LA45;
  						goto LA39;
  					}
  					LA45: ;
  					res_328620 += ((NI) 1);
  				} LA42: ;
  			}
  		} LA39: ;
  		{
  			NIM_BOOL LOC49;
  			LOC49 = 0;
  			LOC49 = result == 0;
  			if (!(LOC49)) goto LA50;
  			LOC49 = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
  			LA50: ;
  			if (!LOC49) goto LA51;
  			result = typeallowedaux_327837(marker, (*t).sons->data[((NI) 0)], ((NU8) 11), flags_327845);
  		}
  		LA51: ;
  	}
  	break;
  	case ((NU8) 8):
  	{
  		result = NIM_NIL;
  	}
  	break;
  	case ((NU8) 6):
  	case ((NU8) 7):
  	case ((NU8) 59):
  	{
  		{
  			if (!!(((2056 &(1U<<((NU)(kind)&31U)))!=0))) goto LA57;
  			result = t;
  		}
  		LA57: ;
  	}
  	break;
  	case ((NU8) 62):
  	{
  		{
  			if (!!(((flags_327845 &(1U<<((NU)(((NU8) 0))&7U)))!=0))) goto LA62;
  			result = t;
  		}
  		LA62: ;
  	}
  	break;
  	case ((NU8) 51):
  	case ((NU8) 54):
  	case ((NU8) 52):
  	case ((NU8) 53):
  	case ((NU8) 55):
  	case ((NU8) 56):
  	case ((NU8) 57):
  	case ((NU8) 58):
  	{
  		{
  			NIM_BOOL LOC67;
  			LOC67 = 0;
  			LOC67 = (((*t).flags &(1U<<((NU)(((NU8) 23))&31U)))!=0);
  			if (LOC67) goto LA68;
  			LOC67 = !(((flags_327845 &(1U<<((NU)(((NU8) 0))&7U)))!=0));
  			LA68: ;
  			if (!!(LOC67)) goto LA69;
  			result = t;
  		}
  		LA69: ;
  	}
  	break;
  	case ((NU8) 10):
  	case ((NU8) 12):
  	case ((NU8) 9):
  	case ((NU8) 0):
  	case ((NU8) 30):
  	case ((NU8) 60):
  	case ((NU8) 61):
  	{
  		result = t;
  	}
  	break;
  	case ((NU8) 5):
  	{
  		{
  			if (!!((kind == ((NU8) 10)))) goto LA75;
  			result = t;
  		}
  		LA75: ;
  	}
  	break;
  	case ((NU8) 28):
  	case ((NU8) 1):
  	case ((NU8) 2):
  	case ((NU8) 14):
  	case ((NU8) 31) ... ((NU8) 45):
  	case ((NU8) 29):
  	case ((NU8) 26):
  	{
  		result = NIM_NIL;
  	}
  	break;
  	case ((NU8) 15):
  	{
  		{
  			if (!!((kind == ((NU8) 3)))) goto LA81;
  			result = t;
  		}
  		LA81: ;
  	}
  	break;
  	case ((NU8) 11):
  	case ((NU8) 13):
  	{
  		Ttype293836* LOC84;
  		LOC84 = 0;
  		LOC84 = lastson_296377(t);
  		result = typeallowedaux_327837(marker, LOC84, kind, flags_327845);
  	}
  	break;
  	case ((NU8) 20):
  	{
  		{
  			Ttype293836* LOC88;
  			LOC88 = 0;
  			LOC88 = skiptypes_297099((*t).sons->data[((NI) 0)], IL64(211106232576000));
  			if (!!(((IL64(16490526949380) &((NU64)1<<((NU)((*LOC88).kind)&63U)))!=0))) goto LA89;
  			result = t;
  		}
  		LA89: ;
  	}
  	break;
  	case ((NU8) 27):
  	case ((NU8) 48):
  	{
  		{
  			if (!!((kind == ((NU8) 3)))) goto LA94;
  			result = t;
  		}
  		goto LA92;
  		LA94: ;
  		{
  			result = typeallowedaux_327837(marker, (*t).sons->data[((NI) 0)], ((NU8) 8), flags_327845);
  		}
  		LA92: ;
  	}
  	break;
  	case ((NU8) 24):
  	{
  		{
  			if (!!(((*(*t).sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA100;
  			result = typeallowedaux_327837(marker, (*t).sons->data[((NI) 0)], ((NU8) 8), (flags_327845 | 2));
  		}
  		LA100: ;
  	}
  	break;
  	case ((NU8) 16):
  	{
  		{
  			if (!!(((*(*t).sons->data[((NI) 1)]).kind == ((NU8) 3)))) goto LA105;
  			result = typeallowedaux_327837(marker, (*t).sons->data[((NI) 1)], ((NU8) 8), flags_327845);
  		}
  		LA105: ;
  	}
  	break;
  	case ((NU8) 22):
  	{
  		{
  			if (!(kind == ((NU8) 10))) goto LA110;
  			result = t;
  		}
  		goto LA108;
  		LA110: ;
  		{
  			Ttype293836* LOC113;
  			LOC113 = 0;
  			LOC113 = lastson_296377(t);
  			result = typeallowedaux_327837(marker, LOC113, ((NU8) 8), (flags_327845 | 2));
  		}
  		LA108: ;
  	}
  	break;
  	case ((NU8) 21):
  	{
  		Ttype293836* LOC115;
  		LOC115 = 0;
  		LOC115 = lastson_296377(t);
  		result = typeallowedaux_327837(marker, LOC115, ((NU8) 8), (flags_327845 | 2));
  	}
  	break;
  	case ((NU8) 4):
  	case ((NU8) 19):
  	case ((NU8) 46):
  	case ((NU8) 47):
  	case ((NU8) 49):
  	{
  		{
  			NI i_328513;
  			NI HEX3Atmp_328625;
  			NI LOC118;
  			NI res_328628;
  			i_328513 = 0;
  			HEX3Atmp_328625 = 0;
  			LOC118 = 0;
  			LOC118 = sonslen_296327(t);
  			HEX3Atmp_328625 = (NI)(LOC118 - ((NI) 1));
  			res_328628 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_328628 <= HEX3Atmp_328625)) goto LA120;
  					i_328513 = res_328628;
  					result = typeallowedaux_327837(marker, (*t).sons->data[i_328513], kind, flags_327845);
  					{
  						if (!!((result == NIM_NIL))) goto LA123;
  						goto LA117;
  					}
  					LA123: ;
  					res_328628 += ((NI) 1);
  				} LA120: ;
  			}
  		} LA117: ;
  	}
  	break;
  	case ((NU8) 17):
  	case ((NU8) 18):
  	{
  		NU8 flags;
  		{
  			NIM_BOOL LOC128;
  			NIM_BOOL LOC129;
  			LOC128 = 0;
  			LOC129 = 0;
  			LOC129 = ((5120 &(1U<<((NU)(kind)&31U)))!=0);
  			if (!(LOC129)) goto LA130;
  			LOC129 = ((*t).kind == ((NU8) 17));
  			LA130: ;
  			LOC128 = LOC129;
  			if (!(LOC128)) goto LA131;
  			LOC128 = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
  			LA131: ;
  			if (!LOC128) goto LA132;
  			result = t;
  			goto BeforeRet;
  		}
  		LA132: ;
  		flags = (flags_327845 | 1);
  		{
  			NI i_328583;
  			NI HEX3Atmp_328633;
  			NI LOC135;
  			NI res_328636;
  			i_328583 = 0;
  			HEX3Atmp_328633 = 0;
  			LOC135 = 0;
  			LOC135 = sonslen_296327(t);
  			HEX3Atmp_328633 = (NI)(LOC135 - ((NI) 1));
  			res_328636 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_328636 <= HEX3Atmp_328633)) goto LA137;
  					i_328583 = res_328636;
  					result = typeallowedaux_327837(marker, (*t).sons->data[i_328583], kind, flags);
  					{
  						if (!!((result == NIM_NIL))) goto LA140;
  						goto LA134;
  					}
  					LA140: ;
  					res_328636 += ((NI) 1);
  				} LA137: ;
  			}
  		} LA134: ;
  		{
  			NIM_BOOL LOC144;
  			LOC144 = 0;
  			LOC144 = result == 0;
  			if (!(LOC144)) goto LA145;
  			LOC144 = !(((*t).n == NIM_NIL));
  			LA145: ;
  			if (!LOC144) goto LA146;
  			result = typeallowednode_327846(marker, (*t).n, kind, flags);
  		}
  		LA146: ;
  	}
  	break;
  	case ((NU8) 50):
  	case ((NU8) 3):
  	{
  		result = NIM_NIL;
  	}
  	break;
  	}
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(Ttype293836*, typeallowed_328640)(Ttype293836* t, NU8 kind) {
  	Ttype293836* result;
  	Intset269031 marker;
  	result = 0;
  	memset((void*)(&marker), 0, sizeof(marker));
  	chckNil((void*)(&marker));
  	memset((void*)(&marker), 0, sizeof(marker));
  	initintset_269885((&marker));
  	result = typeallowedaux_327837((&marker), t, kind, 0);
  	return result;
  }
  
  N_NIMCALL(Tnode293798*, skiphidden_329708)(Tnode293798* n) {
  	Tnode293798* result;
  	result = 0;
  	result = n;
  	{
  		while (1) {
  			switch ((*result).kind) {
  			case ((NU8) 58):
  			case ((NU8) 59):
  			{
  				{
  					NU8 LOC6;
  					NU8 LOC7;
  					LOC6 = 0;
  					LOC6 = classify_329666((*(*result).kindU.S6.sons->data[((NI) 1)]).typ);
  					LOC7 = 0;
  					LOC7 = classify_329666((*result).typ);
  					if (!(LOC6 == LOC7)) goto LA8;
  					result = (*result).kindU.S6.sons->data[((NI) 1)];
  				}
  				goto LA4;
  				LA8: ;
  				{
  					goto LA1;
  				}
  				LA4: ;
  			}
  			break;
  			case ((NU8) 65):
  			case ((NU8) 64):
  			{
  				result = (*result).kindU.S6.sons->data[((NI) 0)];
  			}
  			break;
  			default:
  			{
  				goto LA1;
  			}
  			break;
  			}
  		}
  	} LA1: ;
  	return result;
  }
  
  static N_INLINE(Cell47305*, usrtocell_51440)(void* usr) {
  	Cell47305* result;
  	result = 0;
  	result = ((Cell47305*) ((NI)((NU64)(((NI) (usr))) - (NU64)(((NI)sizeof(Cell47305))))));
  	return result;
  }
  
  static N_INLINE(void, rtladdzct_52601)(Cell47305* c) {
  	addzct_51417((&gch_49855.zct), c);
  }
  
  static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
  	{
  		Cell47305* c;
  		if (!!((src == NIM_NIL))) goto LA3;
  		c = usrtocell_51440(src);
  		(*c).refcount += ((NI) 8);
  	}
  	LA3: ;
  	{
  		Cell47305* c;
  		if (!!(((*dest) == NIM_NIL))) goto LA7;
  		c = usrtocell_51440((*dest));
  		{
  			(*c).refcount -= ((NI) 8);
  			if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA11;
  			rtladdzct_52601(c);
  		}
  		LA11: ;
  	}
  	LA7: ;
  	(*dest) = src;
  }
  
  N_NIMCALL(Ttype293836*, taketype_329752)(Ttype293836* formal, Ttype293836* arg) {
  	Ttype293836* result;
  	result = 0;
  	{
  		if (!((*arg).kind == ((NU8) 5))) goto LA3;
  		result = formal;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		NIM_BOOL LOC6;
  		Ttype293836* a;
  		Ttype293836* LOC10;
  		LOC6 = 0;
  		LOC6 = ((IL64(281475127705600) &((NU64)1<<((NU)((*formal).kind)&63U)))!=0);
  		if (!(LOC6)) goto LA7;
  		LOC6 = isemptycontainer_329730(arg);
  		LA7: ;
  		if (!LOC6) goto LA8;
  		LOC10 = 0;
  		LOC10 = skiptypes_297099(arg, 2048);
  		a = copytype_296470(LOC10, (*arg).owner, NIM_FALSE);
  		asgnRefNoCycle((void**) (&(*a).sons->data[((65552 &((NU64)1<<((NU)((*arg).kind)&63U)))!=0)]), (*formal).sons->data[((NI) 0)]);
  		result = a;
  	}
  	goto LA1;
  	LA8: ;
  	{
  		NIM_BOOL LOC12;
  		LOC12 = 0;
  		LOC12 = ((786432 &((NU64)1<<((NU)((*formal).kind)&63U)))!=0);
  		if (!(LOC12)) goto LA13;
  		LOC12 = ((*arg).kind == (*formal).kind);
  		LA13: ;
  		if (!LOC12) goto LA14;
  		result = formal;
  	}
  	goto LA1;
  	LA14: ;
  	{
  		result = arg;
  	}
  	LA1: ;
  	return result;
  }
  
  N_NIMCALL(Ttype293836*, baseofdistinct_329096)(Ttype293836* t) {
  	Ttype293836* result;
  	result = 0;
  	{
  		if (!((*t).kind == ((NU8) 13))) goto LA3;
  		result = (*t).sons->data[((NI) 0)];
  	}
  	goto LA1;
  	LA3: ;
  	{
  		Ttype293836* parent;
  		Ttype293836* it;
  		result = copytype_296470(t, (*t).owner, NIM_FALSE);
  		parent = NIM_NIL;
  		it = result;
  		{
  			while (1) {
  				if (!((6291456 &((NU64)1<<((NU)((*it).kind)&63U)))!=0)) goto LA7;
  				parent = it;
  				it = lastson_296377(it);
  			} LA7: ;
  		}
  		{
  			if (!((*it).kind == ((NU8) 13))) goto LA10;
  			{
  				NimStringDesc* LOC16;
  				if (!!(!((parent == NIM_NIL)))) goto LA14;
  				LOC16 = 0;
  				LOC16 = HEX24_197185(TMP3592);
  				internalerror_197113(LOC16);
  			}
  			LA14: ;
  			asgnRefNoCycle((void**) (&(*parent).sons->data[((NI) 0)]), (*it).sons->data[((NI) 0)]);
  		}
  		LA10: ;
  	}
  	LA1: ;
  	return result;
  }
  
  N_NIMCALL(void, typemismatch_329855)(Tnode293798* n, Ttype293836* formal, Ttype293836* actual) {
  	{
  		NIM_BOOL LOC3;
  		NimStringDesc* named;
  		NimStringDesc* desc;
  		NimStringDesc* x;
  		NimStringDesc* LOC13;
  		NimStringDesc* LOC14;
  		NimStringDesc* LOC15;
  		NimStringDesc* LOC16;
  		TY193732 LOC17;
  		NimStringDesc* LOC18;
  		LOC3 = 0;
  		LOC3 = !(((*formal).kind == ((NU8) 50)));
  		if (!(LOC3)) goto LA4;
  		LOC3 = !(((*actual).kind == ((NU8) 50)));
  		LA4: ;
  		if (!LOC3) goto LA5;
  		named = typetostring_321017(formal, ((NU8) 0));
  		desc = typetostring_321017(formal, ((NU8) 1));
  		{
  			if (!eqStrings(named, desc)) goto LA9;
  			x = named;
  		}
  		goto LA7;
  		LA9: ;
  		{
  			NimStringDesc* LOC12;
  			LOC12 = 0;
  			LOC12 = rawNewString(named->Sup.len + desc->Sup.len + 3);
  appendString(LOC12, named);
  appendString(LOC12, ((NimStringDesc*) &TMP3607));
  appendString(LOC12, desc);
  			x = LOC12;
  		}
  		LA7: ;
  		LOC13 = 0;
  		LOC14 = 0;
  		LOC14 = msgkindtostring_193723(((NU16) 133));
  		LOC15 = 0;
  		LOC15 = typetostring_321017(actual, ((NU8) 0));
  		LOC16 = 0;
  		LOC16 = msgkindtostring_193723(((NU16) 135));
  		memset((void*)LOC17, 0, sizeof(LOC17));
  		LOC17[0] = copyString(x);
  		LOC18 = 0;
  		LOC18 = nsuFormatOpenArray(LOC16, LOC17, 1);
  		LOC13 = rawNewString(LOC14->Sup.len + LOC15->Sup.len + LOC18->Sup.len + 2);
  appendString(LOC13, LOC14);
  appendString(LOC13, LOC15);
  appendString(LOC13, ((NimStringDesc*) &TMP3608));
  appendString(LOC13, LOC18);
  		localerror_197080((*n).info, ((NU16) 4), LOC13);
  	}
  	LA5: ;
  }
  
  N_NIMCALL(Tnode293798*, skiphiddensubconv_329818)(Tnode293798* n) {
  	Tnode293798* result;
  	result = 0;
  	{
  		Ttype293836* formal;
  		Ttype293836* arg;
  		Ttype293836* dest;
  		if (!((*n).kind == ((NU8) 59))) goto LA3;
  		formal = (*n).typ;
  		result = (*n).kindU.S6.sons->data[((NI) 1)];
  		arg = (*result).typ;
  		dest = taketype_329752(formal, arg);
  		{
  			NIM_BOOL LOC7;
  			LOC7 = 0;
  			LOC7 = (dest == arg);
  			if (!(LOC7)) goto LA8;
  			LOC7 = !(((*formal).kind == ((NU8) 6)));
  			LA8: ;
  			if (!LOC7) goto LA9;
  			result = n;
  		}
  		goto LA5;
  		LA9: ;
  		{
  			result = copytree_297822(result);
  			asgnRefNoCycle((void**) (&(*result).typ), dest);
  		}
  		LA5: ;
  	}
  	goto LA1;
  	LA3: ;
  	{
  		result = n;
  	}
  	LA1: ;
  	return result;
  }
  
  N_NIMCALL(Tnode293798*, skipconvtaketype_329725)(Tnode293798* n) {
  	Tnode293798* result;
  	result = 0;
  	result = skipconv_329682(n);
  	asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, searchtypenodeforaux_321975)(Tnode293798* n, Ttypepredicate321029 p, Intset269031* marker) {
  	NIM_BOOL result;
  {	result = 0;
  	result = NIM_FALSE;
  	switch ((*n).kind) {
  	case ((NU8) 138):
  	{
  		{
  			NI i_321993;
  			NI HEX3Atmp_322219;
  			NI LOC3;
  			NI res_322222;
  			i_321993 = 0;
  			HEX3Atmp_322219 = 0;
  			LOC3 = 0;
  			LOC3 = sonslen_296351(n);
  			HEX3Atmp_322219 = (NI)(LOC3 - ((NI) 1));
  			res_322222 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_322222 <= HEX3Atmp_322219)) goto LA5;
  					i_321993 = res_322222;
  					result = searchtypenodeforaux_321975((*n).kindU.S6.sons->data[i_321993], p, marker);
  					{
  						if (!result) goto LA8;
  						goto BeforeRet;
  					}
  					LA8: ;
  					res_322222 += ((NI) 1);
  				} LA5: ;
  			}
  		}
  	}
  	break;
  	case ((NU8) 139):
  	{
  		result = searchtypenodeforaux_321975((*n).kindU.S6.sons->data[((NI) 0)], p, marker);
  		{
  			if (!result) goto LA13;
  			goto BeforeRet;
  		}
  		LA13: ;
  		{
  			NI i_322213;
  			NI HEX3Atmp_322227;
  			NI LOC16;
  			NI res_322230;
  			i_322213 = 0;
  			HEX3Atmp_322227 = 0;
  			LOC16 = 0;
  			LOC16 = sonslen_296351(n);
  			HEX3Atmp_322227 = (NI)(LOC16 - ((NI) 1));
  			res_322230 = ((NI) 1);
  			{
  				while (1) {
  					if (!(res_322230 <= HEX3Atmp_322227)) goto LA18;
  					i_322213 = res_322230;
  					switch ((*(*n).kindU.S6.sons->data[i_322213]).kind) {
  					case ((NU8) 85):
  					case ((NU8) 88):
  					{
  						Tnode293798* LOC20;
  						LOC20 = 0;
  						LOC20 = lastson_296364((*n).kindU.S6.sons->data[i_322213]);
  						result = searchtypenodeforaux_321975(LOC20, p, marker);
  						{
  							if (!result) goto LA23;
  							goto BeforeRet;
  						}
  						LA23: ;
  					}
  					break;
  					default:
  					{
  						internalerror_197113(((NimStringDesc*) &TMP3658));
  					}
  					break;
  					}
  					res_322230 += ((NI) 1);
  				} LA18: ;
  			}
  		}
  	}
  	break;
  	case ((NU8) 3):
  	{
  		result = searchtypeforaux_321969((*(*n).kindU.S4.sym).typ, p, marker);
  	}
  	break;
  	default:
  	{
  		internalerror_197100((*n).info, ((NimStringDesc*) &TMP3659));
  	}
  	break;
  	}
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, searchtypeforaux_321969)(Ttype293836* t, Ttypepredicate321029 predicate, Intset269031* marker) {
  	NIM_BOOL result;
  {	result = 0;
  	result = NIM_FALSE;
  	{
  		if (!(t == NIM_NIL)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		NIM_BOOL LOC7;
  		LOC7 = 0;
  		LOC7 = containsorincl_269862(marker, (*t).Sup.id);
  		if (!LOC7) goto LA8;
  		goto BeforeRet;
  	}
  	LA8: ;
  	result = predicate(t);
  	{
  		if (!result) goto LA12;
  		goto BeforeRet;
  	}
  	LA12: ;
  	switch ((*t).kind) {
  	case ((NU8) 17):
  	{
  		{
  			Ttype293836* LOC19;
  			if (!!(((*t).sons->data[((NI) 0)] == NIM_NIL))) goto LA17;
  			LOC19 = 0;
  			LOC19 = skiptypes_297099((*t).sons->data[((NI) 0)], IL64(211106247215360));
  			result = searchtypeforaux_321969(LOC19, predicate, marker);
  		}
  		LA17: ;
  		{
  			if (!!(result)) goto LA22;
  			result = searchtypenodeforaux_321975((*t).n, predicate, marker);
  		}
  		LA22: ;
  	}
  	break;
  	case ((NU8) 11):
  	case ((NU8) 13):
  	{
  		Ttype293836* LOC25;
  		LOC25 = 0;
  		LOC25 = lastson_296377(t);
  		result = searchtypeforaux_321969(LOC25, predicate, marker);
  	}
  	break;
  	case ((NU8) 16):
  	case ((NU8) 4):
  	case ((NU8) 19):
  	case ((NU8) 18):
  	{
  		{
  			NI i_322276;
  			NI HEX3Atmp_322278;
  			NI LOC28;
  			NI res_322281;
  			i_322276 = 0;
  			HEX3Atmp_322278 = 0;
  			LOC28 = 0;
  			LOC28 = sonslen_296327(t);
  			HEX3Atmp_322278 = (NI)(LOC28 - ((NI) 1));
  			res_322281 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_322281 <= HEX3Atmp_322278)) goto LA30;
  					i_322276 = res_322281;
  					result = searchtypeforaux_321969((*t).sons->data[i_322276], predicate, marker);
  					{
  						if (!result) goto LA33;
  						goto BeforeRet;
  					}
  					LA33: ;
  					res_322281 += ((NI) 1);
  				} LA30: ;
  			}
  		}
  	}
  	break;
  	default:
  	{
  	}
  	break;
  	}
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, searchtypefor_322285)(Ttype293836* t, Ttypepredicate321029 predicate) {
  	NIM_BOOL result;
  	Intset269031 marker;
  	result = 0;
  	memset((void*)(&marker), 0, sizeof(marker));
  	chckNil((void*)(&marker));
  	memset((void*)(&marker), 0, sizeof(marker));
  	initintset_269885((&marker));
  	result = searchtypeforaux_321969(t, predicate, (&marker));
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, isgcref_322511)(Ttype293836* t) {
  	NIM_BOOL result;
  	NIM_BOOL LOC1;
  	NIM_BOOL LOC3;
  	result = 0;
  	LOC1 = 0;
  	LOC1 = ((289406976 &((NU64)1<<((NU)((*t).kind)&63U)))!=0);
  	if (LOC1) goto LA2;
  	LOC3 = 0;
  	LOC3 = ((*t).kind == ((NU8) 25));
  	if (!(LOC3)) goto LA4;
  	LOC3 = ((*t).callconv == ((NU8) 8));
  	LA4: ;
  	LOC1 = LOC3;
  	LA2: ;
  	result = LOC1;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, containsgarbagecollectedref_321106)(Ttype293836* typ) {
  	NIM_BOOL result;
  	result = 0;
  	result = searchtypefor_322285(typ, isgcref_322511);
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, ispureobject_321127)(Ttype293836* typ) {
  	NIM_BOOL result;
  	Ttype293836* t;
  	NIM_BOOL LOC5;
  	result = 0;
  	t = typ;
  	{
  		while (1) {
  			NIM_BOOL LOC3;
  			LOC3 = 0;
  			LOC3 = ((*t).kind == ((NU8) 17));
  			if (!(LOC3)) goto LA4;
  			LOC3 = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
  			LA4: ;
  			if (!LOC3) goto LA2;
  			t = skiptypes_297099((*t).sons->data[((NI) 0)], IL64(211106247215360));
  		} LA2: ;
  	}
  	LOC5 = 0;
  	LOC5 = !(((*t).sym == NIM_NIL));
  	if (!(LOC5)) goto LA6;
  	LOC5 = (((*(*t).sym).flags &(1U<<((NU)(((NU8) 9))&31U)))!=0);
  	LA6: ;
  	result = LOC5;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, samebackendtype_326997)(Ttype293836* x, Ttype293836* y) {
  	NIM_BOOL result;
  	Tsametypeclosure325233 c;
  	result = 0;
  	memset((void*)(&c), 0, sizeof(c));
  	chckNil((void*)(&c));
  	memset((void*)(&c), 0, sizeof(c));
  	initsametypeclosure_325252((&c));
  	c.flags |= ((NU8)1)<<((((NU8) 0))%(sizeof(NU8)*8));
  	result = sametypeaux_325384(x, y, (&c));
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, canformacyclenode_322607)(Intset269031* marker, Tnode293798* n, NI startid) {
  	NIM_BOOL result;
  {	result = 0;
  	result = NIM_FALSE;
  	{
  		if (!!((n == NIM_NIL))) goto LA3;
  		result = canformacycleaux_322601(marker, (*n).typ, startid);
  		{
  			if (!!(result)) goto LA7;
  			switch ((*n).kind) {
  			case ((NU8) 0) ... ((NU8) 23):
  			{
  			}
  			break;
  			default:
  			{
  				{
  					NI i_322637;
  					NI HEX3Atmp_322640;
  					NI LOC12;
  					NI res_322643;
  					i_322637 = 0;
  					HEX3Atmp_322640 = 0;
  					LOC12 = 0;
  					LOC12 = sonslen_296351(n);
  					HEX3Atmp_322640 = (NI)(LOC12 - ((NI) 1));
  					res_322643 = ((NI) 0);
  					{
  						while (1) {
  							if (!(res_322643 <= HEX3Atmp_322640)) goto LA14;
  							i_322637 = res_322643;
  							result = canformacyclenode_322607(marker, (*n).kindU.S6.sons->data[i_322637], startid);
  							{
  								if (!result) goto LA17;
  								goto BeforeRet;
  							}
  							LA17: ;
  							res_322643 += ((NI) 1);
  						} LA14: ;
  					}
  				}
  			}
  			break;
  			}
  		}
  		LA7: ;
  	}
  	LA3: ;
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, canformacycleaux_322601)(Intset269031* marker, Ttype293836* typ, NI startid) {
  	NIM_BOOL result;
  	Ttype293836* t;
  {	result = 0;
  	result = NIM_FALSE;
  	{
  		if (!(typ == NIM_NIL)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	{
  		if (!(((*typ).flags &(1U<<((NU)(((NU8) 4))&31U)))!=0)) goto LA7;
  		goto BeforeRet;
  	}
  	LA7: ;
  	t = skiptypes_297099(typ, IL64(211106232576000));
  	{
  		if (!(((*t).flags &(1U<<((NU)(((NU8) 4))&31U)))!=0)) goto LA11;
  		goto BeforeRet;
  	}
  	LA11: ;
  	switch ((*t).kind) {
  	case ((NU8) 18):
  	case ((NU8) 17):
  	case ((NU8) 22):
  	case ((NU8) 24):
  	case ((NU8) 16):
  	case ((NU8) 4):
  	case ((NU8) 27):
  	case ((NU8) 48):
  	{
  		{
  			NIM_BOOL LOC16;
  			LOC16 = 0;
  			LOC16 = containsorincl_269862(marker, (*t).Sup.id);
  			if (!!(LOC16)) goto LA17;
  			{
  				NI i_322711;
  				NI HEX3Atmp_322753;
  				NI LOC20;
  				NI res_322756;
  				i_322711 = 0;
  				HEX3Atmp_322753 = 0;
  				LOC20 = 0;
  				LOC20 = sonslen_296327(t);
  				HEX3Atmp_322753 = (NI)(LOC20 - ((NI) 1));
  				res_322756 = ((NI) 0);
  				{
  					while (1) {
  						if (!(res_322756 <= HEX3Atmp_322753)) goto LA22;
  						i_322711 = res_322756;
  						result = canformacycleaux_322601(marker, (*t).sons->data[i_322711], startid);
  						{
  							if (!result) goto LA25;
  							goto BeforeRet;
  						}
  						LA25: ;
  						res_322756 += ((NI) 1);
  					} LA22: ;
  				}
  			}
  			{
  				if (!!(((*t).n == NIM_NIL))) goto LA29;
  				result = canformacyclenode_322607(marker, (*t).n, startid);
  			}
  			LA29: ;
  		}
  		goto LA14;
  		LA17: ;
  		{
  			result = ((*t).Sup.id == startid);
  		}
  		LA14: ;
  		{
  			NIM_BOOL LOC34;
  			LOC34 = 0;
  			LOC34 = ((*t).kind == ((NU8) 17));
  			if (!(LOC34)) goto LA35;
  			LOC34 = !((((*t).flags &(1U<<((NU)(((NU8) 2))&31U)))!=0));
  			LA35: ;
  			if (!LOC34) goto LA36;
  			result = NIM_TRUE;
  		}
  		LA36: ;
  	}
  	break;
  	case ((NU8) 25):
  	{
  		result = ((*typ).callconv == ((NU8) 8));
  	}
  	break;
  	default:
  	{
  	}
  	break;
  	}
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, canformacycle_321112)(Ttype293836* typ) {
  	NIM_BOOL result;
  	Intset269031 marker;
  	result = 0;
  	memset((void*)(&marker), 0, sizeof(marker));
  	chckNil((void*)(&marker));
  	memset((void*)(&marker), 0, sizeof(marker));
  	initintset_269885((&marker));
  	result = canformacycleaux_322601((&marker), typ, (*typ).Sup.id);
  	return result;
  }
  
  N_NIMCALL(NU8, analyseobjectwithtypefieldaux_322384)(Ttype293836* t, Intset269031* marker) {
  	NU8 result;
  	NU8 res;
  {	result = 0;
  	res = 0;
  	result = ((NU8) 0);
  	{
  		if (!(t == NIM_NIL)) goto LA3;
  		goto BeforeRet;
  	}
  	LA3: ;
  	switch ((*t).kind) {
  	case ((NU8) 17):
  	{
  		{
  			if (!!(((*t).n == NIM_NIL))) goto LA8;
  			{
  				NIM_BOOL LOC12;
  				LOC12 = 0;
  				LOC12 = searchtypenodeforaux_321975((*t).n, isobjectwithtypefieldpredicate_322309, marker);
  				if (!LOC12) goto LA13;
  				result = ((NU8) 2);
  				goto BeforeRet;
  			}
  			LA13: ;
  		}
  		LA8: ;
  		{
  			NI i_322426;
  			NI HEX3Atmp_322490;
  			NI LOC16;
  			NI res_322493;
  			i_322426 = 0;
  			HEX3Atmp_322490 = 0;
  			LOC16 = 0;
  			LOC16 = sonslen_296327(t);
  			HEX3Atmp_322490 = (NI)(LOC16 - ((NI) 1));
  			res_322493 = ((NI) 0);
  			{
  				while (1) {
  					Ttype293836* x;
  					if (!(res_322493 <= HEX3Atmp_322490)) goto LA18;
  					i_322426 = res_322493;
  					x = (*t).sons->data[i_322426];
  					{
  						if (!!((x == NIM_NIL))) goto LA21;
  						x = skiptypes_297099(x, IL64(211106247215360));
  					}
  					LA21: ;
  					res = analyseobjectwithtypefieldaux_322384(x, marker);
  					{
  						if (!(res == ((NU8) 2))) goto LA25;
  						result = ((NU8) 2);
  						goto BeforeRet;
  					}
  					LA25: ;
  					{
  						if (!(res == ((NU8) 1))) goto LA29;
  						result = ((NU8) 1);
  					}
  					LA29: ;
  					res_322493 += ((NI) 1);
  				} LA18: ;
  			}
  		}
  		{
  			if (!(result == ((NU8) 0))) goto LA33;
  			{
  				NIM_BOOL LOC37;
  				LOC37 = 0;
  				LOC37 = isobjectwithtypefieldpredicate_322309(t);
  				if (!LOC37) goto LA38;
  				result = ((NU8) 1);
  			}
  			LA38: ;
  		}
  		LA33: ;
  	}
  	break;
  	case ((NU8) 11):
  	case ((NU8) 13):
  	case ((NU8) 46):
  	case ((NU8) 47):
  	{
  		Ttype293836* LOC41;
  		LOC41 = 0;
  		LOC41 = lastson_296377(t);
  		result = analyseobjectwithtypefieldaux_322384(LOC41, marker);
  	}
  	break;
  	case ((NU8) 16):
  	case ((NU8) 4):
  	case ((NU8) 18):
  	{
  		{
  			NI i_322478;
  			NI HEX3Atmp_322498;
  			NI LOC44;
  			NI res_322501;
  			i_322478 = 0;
  			HEX3Atmp_322498 = 0;
  			LOC44 = 0;
  			LOC44 = sonslen_296327(t);
  			HEX3Atmp_322498 = (NI)(LOC44 - ((NI) 1));
  			res_322501 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_322501 <= HEX3Atmp_322498)) goto LA46;
  					i_322478 = res_322501;
  					res = analyseobjectwithtypefieldaux_322384((*t).sons->data[i_322478], marker);
  					{
  						if (!!((res == ((NU8) 0)))) goto LA49;
  						result = ((NU8) 2);
  						goto BeforeRet;
  					}
  					LA49: ;
  					res_322501 += ((NI) 1);
  				} LA46: ;
  			}
  		}
  	}
  	break;
  	default:
  	{
  	}
  	break;
  	}
  	}BeforeRet: ;
  	return result;
  }
  
  N_NIMCALL(NU8, analyseobjectwithtypefield_321138)(Ttype293836* t) {
  	NU8 result;
  	Intset269031 marker;
  	result = 0;
  	memset((void*)(&marker), 0, sizeof(marker));
  	chckNil((void*)(&marker));
  	memset((void*)(&marker), 0, sizeof(marker));
  	initintset_269885((&marker));
  	result = analyseobjectwithtypefieldaux_322384(t, (&marker));
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, ishiddenpointer_322582)(Ttype293836* t) {
  	NIM_BOOL result;
  	result = 0;
  	result = ((285212672 &((NU64)1<<((NU)((*t).kind)&63U)))!=0);
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, containshiddenpointer_321109)(Ttype293836* typ) {
  	NIM_BOOL result;
  	result = 0;
  	result = searchtypefor_322285(typ, ishiddenpointer_322582);
  	return result;
  }
  
  static N_INLINE(NIM_BOOL, iscompiletimeonly_329506)(Ttype293836* t) {
  	NIM_BOOL result;
  	result = 0;
  	result = ((IL64(576460752303423744) &((NU64)1<<((NU)((*t).kind)&63U)))!=0);
  	return result;
  }
  
  N_NIMCALL(NIM_BOOL, containscompiletimeonly_329521)(Ttype293836* t) {
  	NIM_BOOL result;
  {	result = 0;
  	{
  		NIM_BOOL LOC3;
  		LOC3 = 0;
  		LOC3 = iscompiletimeonly_329506(t);
  		if (!LOC3) goto LA4;
  		result = NIM_TRUE;
  		goto BeforeRet;
  	}
  	LA4: ;
  	{
  		NIM_BOOL LOC8;
  		LOC8 = 0;
  		LOC8 = HEX3DHEX3D_329527((*t).sons, NIM_NIL);
  		if (!!(LOC8)) goto LA9;
  		{
  			NI i_329640;
  			NI HEX3Atmp_329654;
  			NI LOC12;
  			NI res_329657;
  			i_329640 = 0;
  			HEX3Atmp_329654 = 0;
  			LOC12 = 0;
  			LOC12 = sonslen_296327(t);
  			HEX3Atmp_329654 = (LOC12 - 1);
  			res_329657 = ((NI) 0);
  			{
  				while (1) {
  					if (!(res_329657 <= HEX3Atmp_329654)) goto LA14;
  					i_329640 = res_329657;
  					{
  						NIM_BOOL LOC17;
  						LOC17 = 0;
  						LOC17 = !(((*t).sons->data[i_329640] == NIM_NIL));
  						if (!(LOC17)) goto LA18;
  						LOC17 = iscompiletimeonly_329506((*t).sons->data[i_329640]);
  						LA18: ;
  						if (!LOC17) goto LA19;
  						result = NIM_TRUE;
  						goto BeforeRet;
  					}
  					LA19: ;
  					res_329657 += ((NI) 1);
  				} LA14: ;
  			}
  		}
  	}
  	LA9: ;
  	result = NIM_FALSE;
  	goto BeforeRet;
  	}BeforeRet: ;
  	return result;
  }
  NIM_EXTERNC N_NOINLINE(void, compiler_typesInit000)(void) {
  }
  
  NIM_EXTERNC N_NOINLINE(void, compiler_typesDatInit000)(void) {
  static TNimNode* TMP2825[2];
  static TNimNode TMP914[3];
  NTI325247.size = sizeof(TY325247);
  NTI325247.kind = 18;
  NTI325247.base = 0;
  NTI325247.flags = 3;
  TMP2825[0] = &TMP914[1];
  TMP914[1].kind = 1;
  TMP914[1].offset = offsetof(TY325247, Field0);
  TMP914[1].typ = (&NTI104);
  TMP914[1].name = "Field0";
  TMP2825[1] = &TMP914[2];
  TMP914[2].kind = 1;
  TMP914[2].offset = offsetof(TY325247, Field1);
  TMP914[2].typ = (&NTI104);
  TMP914[2].name = "Field1";
  TMP914[0].len = 2; TMP914[0].kind = 2; TMP914[0].sons = &TMP2825[0];
  NTI325247.node = &TMP914[0];
  NTI325246.size = sizeof(TY325246*);
  NTI325246.kind = 24;
  NTI325246.base = (&NTI325247);
  NTI325246.flags = 2;
  NTI325246.marker = TMP2826;
  }
  
  