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

#include "nimbase.h"
#include <string.h>
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Ttype223847 Ttype223847;
typedef struct Tidobj196015 Tidobj196015;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Ttypeseq223843 Ttypeseq223843;
typedef struct Tnode223809 Tnode223809;
typedef struct Tsym223841 Tsym223841;
typedef struct Tloc223823 Tloc223823;
typedef struct Ropeobj174009 Ropeobj174009;
typedef struct Tscope223835 Tscope223835;
typedef struct TY223944 TY223944;
typedef struct Tstrtable223813 Tstrtable223813;
typedef struct Tsymseq223811 Tsymseq223811;
typedef struct Tident196021 Tident196021;
typedef struct Tlineinfo188352 Tlineinfo188352;
typedef struct Tlib223827 Tlib223827;
typedef struct Tnodeseq223803 Tnodeseq223803;
typedef struct TY90959 TY90959;
typedef struct Tsametypeclosure257841 Tsametypeclosure257841;
typedef struct TY257854 TY257854;
typedef struct TY257855 TY257855;
typedef struct Intset220056 Intset220056;
typedef struct Trunk220052 Trunk220052;
typedef struct Trunkseq220054 Trunkseq220054;
typedef struct Cell48947 Cell48947;
typedef struct Cellseq48963 Cellseq48963;
typedef struct Gcheap51018 Gcheap51018;
typedef struct Gcstack51016 Gcstack51016;
typedef struct Cellset48959 Cellset48959;
typedef struct Pagedesc48955 Pagedesc48955;
typedef struct Memregion30890 Memregion30890;
typedef struct Smallchunk30842 Smallchunk30842;
typedef struct Llchunk30884 Llchunk30884;
typedef struct Bigchunk30844 Bigchunk30844;
typedef struct Intset30817 Intset30817;
typedef struct Trunk30813 Trunk30813;
typedef struct Avlnode30888 Avlnode30888;
typedef struct Gcstat51014 Gcstat51014;
typedef struct Tinstantiation223831 Tinstantiation223831;
typedef struct Tlistentry139022 Tlistentry139022;
typedef struct Basechunk30840 Basechunk30840;
typedef struct Freecell30832 Freecell30832;
typedef struct TY223932 TY223932;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef N_NIMCALL_PTR(void, TY3889) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3894) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3889 marker;
TY3894 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Tidobj196015  {
  TNimObject Sup;
NI id;
};
struct  Tloc223823  {
NU8 k;
NU8 s;
NU16 flags;
Ttype223847* t;
Ropeobj174009* r;
Ropeobj174009* heaproot;
};
struct  Ttype223847  {
  Tidobj196015 Sup;
NU8 kind;
NU8 callconv;
NU32 flags;
Ttypeseq223843* sons;
Tnode223809* n;
Tsym223841* owner;
Tsym223841* sym;
Tsym223841* destructor;
Tsym223841* deepcopy;
Tsym223841* assignment;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc223823 loc;
};
struct  Tstrtable223813  {
NI counter;
Tsymseq223811* data;
};
struct  Tlineinfo188352  {
NI16 line;
NI16 col;
NI32 fileindex;
};
struct  Tsym223841  {
  Tidobj196015 Sup;
NU8 kind;
union{
struct {Ttypeseq223843* typeinstcache;
Tscope223835* typscope;
} S1;
struct {TY223944* procinstcache;
Tsym223841* gcunsafetyreason;
} S2;
struct {TY223944* usedgenerics;
Tstrtable223813 tab;
} S3;
struct {Tsym223841* guard;
NI bitsize;
} S4;
} kindU;
NU8 magic;
Ttype223847* typ;
Tident196021* name;
Tlineinfo188352 info;
Tsym223841* owner;
NU32 flags;
Tnode223809* ast;
NU32 options;
NI position;
NI offset;
Tloc223823 loc;
Tlib223827* annex;
Tnode223809* constraint;
};
struct  Tnode223809  {
Ttype223847* typ;
Tlineinfo188352 info;
NU16 flags;
NU8 kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym223841* sym;
} S4;
struct {Tident196021* ident;
} S5;
struct {Tnodeseq223803* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
struct  Tident196021  {
  Tidobj196015 Sup;
NimStringDesc* s;
Tident196021* next;
NI h;
};
typedef NimStringDesc* TY255612[62];
struct TY90959 {
NimStringDesc* Field0;
NI Field1;
};
typedef NimStringDesc* TY223022[10];
struct  Tsametypeclosure257841  {
NU8 cmp;
NI reccheck;
NU8 flags;
TY257854* s;
};
struct TY257855 {
NI Field0;
NI Field1;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef N_NIMCALL_PTR(NIM_BOOL, Ttypeiter253046) (Ttype223847* t, TNimObject* closure);
struct  Intset220056  {
NI counter;
NI max;
Trunk220052* head;
Trunkseq220054* data;
};
struct  Cell48947  {
NI refcount;
TNimType* typ;
};
struct  Cellseq48963  {
NI len;
NI cap;
Cell48947** d;
};
struct  Cellset48959  {
NI counter;
NI max;
Pagedesc48955* head;
Pagedesc48955** data;
};
typedef Smallchunk30842* TY30905[512];
typedef Trunk30813* Trunkbuckets30815[256];
struct  Intset30817  {
Trunkbuckets30815 data;
};
struct  Memregion30890  {
NI minlargeobj;
NI maxlargeobj;
TY30905 freesmallchunks;
Llchunk30884* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk30844* freechunkslist;
Intset30817 chunkstarts;
Avlnode30888* root;
Avlnode30888* deleted;
Avlnode30888* last;
Avlnode30888* freeavlnodes;
};
struct  Gcstat51014  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap51018  {
Gcstack51016* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq48963 zct;
Cellseq48963 decstack;
Cellset48959 cycleroots;
Cellseq48963 tempstack;
NI recgclock;
Memregion30890 region;
Gcstat51014 stat;
};
typedef N_NIMCALL_PTR(NIM_BOOL, Ttypepredicate253050) (Ttype223847* t);
struct  Ropeobj174009  {
  TNimObject Sup;
Ropeobj174009* left;
Ropeobj174009* right;
NI length;
NimStringDesc* data;
};
struct  Tscope223835  {
NI depthlevel;
Tstrtable223813 symbols;
Tnodeseq223803* usingsyms;
Tscope223835* parent;
};
struct  Tlistentry139022  {
  TNimObject Sup;
Tlistentry139022* prev;
Tlistentry139022* next;
};
struct  Tlib223827  {
  Tlistentry139022 Sup;
NU8 kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj174009* name;
Tnode223809* path;
};
typedef NI TY30821[16];
struct  Trunk220052  {
Trunk220052* next;
NI key;
TY30821 bits;
};
struct  Gcstack51016  {
Gcstack51016* prev;
Gcstack51016* next;
void* starts;
void* pos;
NI maxstacksize;
};
struct  Pagedesc48955  {
Pagedesc48955* next;
NI key;
TY30821 bits;
};
struct  Basechunk30840  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk30842  {
  Basechunk30840 Sup;
Smallchunk30842* next;
Smallchunk30842* prev;
Freecell30832* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk30884  {
NI size;
NI acc;
Llchunk30884* next;
};
struct  Bigchunk30844  {
  Basechunk30840 Sup;
Bigchunk30844* next;
Bigchunk30844* prev;
NI align;
NF data;
};
struct  Trunk30813  {
Trunk30813* next;
NI key;
TY30821 bits;
};
typedef Avlnode30888* TY30895[2];
struct  Avlnode30888  {
TY30895 link;
NI key;
NI upperbound;
NI level;
};
struct  Tinstantiation223831  {
Tsym223841* sym;
Ttypeseq223843* concretetypes;
TY223932* usedby;
NI compilesid;
};
struct  Freecell30832  {
Freecell30832* next;
NI zerofield;
};
struct TY257854 {
  TGenericSeq Sup;
  TY257855 data[SEQ_DECL_SIZE];
};
struct Ttypeseq223843 {
  TGenericSeq Sup;
  Ttype223847* data[SEQ_DECL_SIZE];
};
struct TY223944 {
  TGenericSeq Sup;
  Tinstantiation223831* data[SEQ_DECL_SIZE];
};
struct Tsymseq223811 {
  TGenericSeq Sup;
  Tsym223841* data[SEQ_DECL_SIZE];
};
struct Tnodeseq223803 {
  TGenericSeq Sup;
  Tnode223809* data[SEQ_DECL_SIZE];
};
struct Trunkseq220054 {
  TGenericSeq Sup;
  Trunk220052* data[SEQ_DECL_SIZE];
};
struct TY223932 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
static N_INLINE(NIM_BOOL, isintlit_253327)(Ttype223847* t);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
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_255623)(NimStringDesc** name, Ttype223847* typ);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, typetostring_253032)(Ttype223847* typ, NU8 prefer);
N_NIMCALL(NI, sonslen_226351)(Ttype223847* n);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(Ttype223847*, base_253039)(Ttype223847* t);
N_NIMCALL(NI, len_226369)(Ttype223847* n);
N_NIMCALL(void, internalerror_194191)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_194279)(TY90959 x);
N_NIMCALL(NimStringDesc*, rendertree_245059)(Tnode223809* n, NU8 renderflags);
N_NIMCALL(NimStringDesc*, rangetostr_255451)(Tnode223809* n);
N_NIMCALL(NimStringDesc*, valuetostring_255438)(Tnode223809* a);
N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f);
N_NIMCALL(NI, sonslen_226387)(Tnode223809* n);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newlen);
static N_INLINE(NI, len_224098)(Tnode223809* n);
static N_INLINE(Tnode223809*, HEX5BHEX5D_224244)(Tnode223809* n, NI i);
static N_INLINE(void, addsep_103118)(NimStringDesc** dest, NimStringDesc* sep, NI startlen);
N_NIMCALL(NimStringDesc*, HEX24_226096)(NI16 x);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(Ttype223847*, elemtype_253522)(Ttype223847* t);
N_NIMCALL(Ttype223847*, lastson_226426)(Ttype223847* n);
N_NIMCALL(void, initsametypeclosure_257863)(Tsametypeclosure257841* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(NIM_BOOL, sametypeaux_258035)(Ttype223847* x, Ttype223847* y, Tsametypeclosure257841* c);
N_NIMCALL(Ttype223847*, skiptypes_227167)(Ttype223847* t, NU64 kinds);
N_NIMCALL(Ttype223847*, skipgenericalias_259119)(Ttype223847* t);
N_NIMCALL(NIM_BOOL, isgenericalias_259091)(Ttype223847* t);
static N_INLINE(NIM_BOOL, sameflags_259141)(Ttype223847* a, Ttype223847* b);
N_NIMCALL(NIM_BOOL, exprstructuralequivalent_252149)(Tnode223809* a, Tnode223809* b, NIM_BOOL strictsymequality);
N_NIMCALL(NIM_BOOL, containsorincl_257872)(Tsametypeclosure257841* c, Ttype223847* a, Ttype223847* b);
static N_INLINE(NIM_BOOL, contains_257890)(TY257855* a, NI aLen0, TY257855 item);
static N_INLINE(NI, find_257900)(TY257855* a, NI aLen0, TY257855 item);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_257946)(TY257855 x, TY257855 y);
N_NIMCALL(void, TMP2739)(void* p, NI op);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(NIM_BOOL, sameobjectstructures_259005)(Ttype223847* a, Ttype223847* b, Tsametypeclosure257841* c);
N_NIMCALL(NIM_BOOL, sametypeornilaux_258044)(Ttype223847* a, Ttype223847* b, Tsametypeclosure257841* c);
N_NIMCALL(NIM_BOOL, sameobjecttree_258866)(Tnode223809* a, Tnode223809* b, Tsametypeclosure257841* c);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(NIM_BOOL, sametuple_258622)(Ttype223847* a, Ttype223847* b, Tsametypeclosure257841* c);
N_NIMCALL(void, internalerror_194172)(Tlineinfo188352 info, NimStringDesc* errmsg);
N_NIMCALL(NIM_BOOL, samechildrenaux_259048)(Ttype223847* a, Ttype223847* b, Tsametypeclosure257841* c);
N_NIMCALL(NIM_BOOL, sameconstraints_258240)(Tnode223809* a, Tnode223809* b);
N_NIMCALL(NIM_BOOL, samevalue_231324)(Tnode223809* a, Tnode223809* b);
N_NIMCALL(NIM_BOOL, iterovertype_253062)(Ttype223847* t, Ttypeiter253046 iter, TNimObject* closure);
N_NIMCALL(void, initintset_220927)(Intset220056* Result);
N_NIMCALL(NIM_BOOL, iterovertypeaux_254077)(Intset220056* marker, Ttype223847* t, Ttypeiter253046 iter, TNimObject* closure);
N_NIMCALL(NIM_BOOL, containsorincl_220898)(Intset220056* s, NI key);
N_NIMCALL(NIM_BOOL, iterovernode_254087)(Intset220056* marker, Tnode223809* n, Ttypeiter253046 iter, TNimObject* closure);
N_NIMCALL(NIM_BOOL, containsgenerictypeiter_262225)(Ttype223847* t, TNimObject* closure);
N_NIMCALL(NI64, firstord_253004)(Ttype223847* t);
N_NIMCALL(NI64, getordvalue_253178)(Tnode223809* n);
N_NIMCALL(void, localerror_194128)(Tlineinfo188352 info, NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_86859, TNimType* typ);
N_NIMCALL(NI64, lastord_253010)(Ttype223847* t);
N_NIMCALL(NI64, lengthord_253016)(Ttype223847* t);
N_NIMCALL(NIM_BOOL, isordinaltype_253093)(Ttype223847* t);
N_NIMCALL(NIM_BOOL, compatibleeffectsaux_262417)(Tnode223809* se, Tnode223809* re);
N_NIMCALL(NI, safeinheritancediff_262388)(Ttype223847* a, Ttype223847* b);
N_NIMCALL(NI, inheritancediff_260091)(Ttype223847* a, Ttype223847* b);
N_NIMCALL(NIM_BOOL, sameobjecttypes_258785)(Ttype223847* a, Ttype223847* b);
N_NIMCALL(NIM_BOOL, isemptycontainer_262978)(Ttype223847* t);
N_NIMCALL(NU8, classify_262913)(Ttype223847* t);
N_NIMCALL(NI64, computesize_253184)(Ttype223847* typ);
N_NIMCALL(NI64, computesizeaux_261686)(Ttype223847* typ, NI64* a);
N_NIMCALL(NI64, align_261669)(NI64 address, NI64 alignment);
N_NIMCALL(NIM_BOOL, isobjectwithtypefieldpredicate_254556)(Ttype223847* t);
N_NIMCALL(NI64, computerecsizeaux_261694)(Tnode223809* n, NI64* a, NI64* curroffset);
N_NIMCALL(Tnode223809*, lastson_226406)(Tnode223809* n);
N_NIMCALL(NIM_BOOL, sametype_258092)(Ttype223847* a, Ttype223847* b, NU8 flags);
N_NIMCALL(NU8, equalparam_258157)(Tsym223841* a, Tsym223841* b);
N_NIMCALL(NIM_BOOL, sametypeornil_258108)(Ttype223847* a, Ttype223847* b, NU8 flags);
N_NIMCALL(Ttype223847*, typeallowedaux_260858)(Intset220056* marker, Ttype223847* typ, NU8 kind, NU8 flags_260866);
N_NIMCALL(Ttype223847*, typeallowednode_260870)(Intset220056* marker, Tnode223809* n, NU8 kind, NU8 flags);
N_NIMCALL(Ttype223847*, copytype_226542)(Ttype223847* t, Tsym223841* owner, NIM_BOOL keepid);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(Cell48947*, usrtocell_52646)(void* usr);
static N_INLINE(void, rtladdzct_54204)(Cell48947* c);
N_NOINLINE(void, addzct_52617)(Cellseq48963* s, Cell48947* c);
N_NIMCALL(Ttype223847*, taketype_263006)(Ttype223847* formal, Ttype223847* arg);
N_NIMCALL(Tnode223809*, copytree_228028)(Tnode223809* src);
N_NIMCALL(Tnode223809*, skipconv_262935)(Tnode223809* n);
N_NIMCALL(NIM_BOOL, searchtypefor_254514)(Ttype223847* t, Ttypepredicate253050 predicate);
N_NIMCALL(NIM_BOOL, searchtypeforaux_254226)(Ttype223847* t, Ttypepredicate253050 predicate, Intset220056* marker);
N_NIMCALL(NIM_BOOL, searchtypenodeforaux_254235)(Tnode223809* n, Ttypepredicate253050 p, Intset220056* marker);
N_NIMCALL(NIM_BOOL, isgcref_254783)(Ttype223847* t);
N_NIMCALL(void, incl_220856)(Intset220056* s, NI key);
N_NIMCALL(NIM_BOOL, contains_220829)(Intset220056 s, NI key);
N_NIMCALL(NIM_BOOL, canformacycleaux_254909)(Intset220056* marker, Ttype223847* typ, NI startid);
N_NIMCALL(NIM_BOOL, canformacyclenode_254918)(Intset220056* marker, Tnode223809* n, NI startid);
N_NIMCALL(NU8, analyseobjectwithtypefieldaux_254637)(Ttype223847* t, Intset220056* marker);
N_NIMCALL(NIM_BOOL, ishiddenpointer_254878)(Ttype223847* t);
static N_INLINE(NIM_BOOL, iscompiletimeonly_262712)(Ttype223847* t);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_262739)(Ttypeseq223843* x, Ttypeseq223843* y);
STRING_LITERAL(TMP2076, "", 0);
STRING_LITERAL(TMP2077, " literal(", 9);
STRING_LITERAL(TMP2078, ")", 1);
STRING_LITERAL(TMP2079, "shared ", 7);
STRING_LITERAL(TMP2080, " not nil", 8);
STRING_LITERAL(TMP2081, "None", 4);
STRING_LITERAL(TMP2082, "bool", 4);
STRING_LITERAL(TMP2083, "Char", 4);
STRING_LITERAL(TMP2084, "empty", 5);
STRING_LITERAL(TMP2085, "Array Constructor [$1]", 22);
STRING_LITERAL(TMP2086, "nil", 3);
STRING_LITERAL(TMP2087, "untyped", 7);
STRING_LITERAL(TMP2088, "typed", 5);
STRING_LITERAL(TMP2089, "typeDesc", 8);
STRING_LITERAL(TMP2090, "GenericInvocation", 17);
STRING_LITERAL(TMP2091, "GenericBody", 11);
STRING_LITERAL(TMP2092, "GenericInst", 11);
STRING_LITERAL(TMP2093, "GenericParam", 12);
STRING_LITERAL(TMP2094, "distinct $1", 11);
STRING_LITERAL(TMP2095, "enum", 4);
STRING_LITERAL(TMP2096, "ordinal[$1]", 11);
STRING_LITERAL(TMP2097, "array[$1, $2]", 13);
STRING_LITERAL(TMP2098, "object", 6);
STRING_LITERAL(TMP2099, "tuple", 5);
STRING_LITERAL(TMP2100, "set[$1]", 7);
STRING_LITERAL(TMP2101, "range[$1]", 9);
STRING_LITERAL(TMP2102, "ptr ", 4);
STRING_LITERAL(TMP2103, "ref ", 4);
STRING_LITERAL(TMP2104, "var ", 4);
STRING_LITERAL(TMP2105, "seq[$1]", 7);
STRING_LITERAL(TMP2106, "proc", 4);
STRING_LITERAL(TMP2107, "pointer", 7);
STRING_LITERAL(TMP2108, "OpenArray[$1]", 13);
STRING_LITERAL(TMP2109, "string", 6);
STRING_LITERAL(TMP2110, "CString", 7);
STRING_LITERAL(TMP2111, "Forward", 7);
STRING_LITERAL(TMP2112, "int", 3);
STRING_LITERAL(TMP2113, "int8", 4);
STRING_LITERAL(TMP2114, "int16", 5);
STRING_LITERAL(TMP2115, "int32", 5);
STRING_LITERAL(TMP2116, "int64", 5);
STRING_LITERAL(TMP2117, "float", 5);
STRING_LITERAL(TMP2118, "float32", 7);
STRING_LITERAL(TMP2119, "float64", 7);
STRING_LITERAL(TMP2120, "float128", 8);
STRING_LITERAL(TMP2121, "uint", 4);
STRING_LITERAL(TMP2122, "uint8", 5);
STRING_LITERAL(TMP2123, "uint16", 6);
STRING_LITERAL(TMP2124, "uint32", 6);
STRING_LITERAL(TMP2125, "uint64", 6);
STRING_LITERAL(TMP2126, "bignum", 6);
STRING_LITERAL(TMP2127, "const ", 6);
STRING_LITERAL(TMP2128, "!", 1);
STRING_LITERAL(TMP2129, "varargs[$1]", 11);
STRING_LITERAL(TMP2130, "iter[$1]", 8);
STRING_LITERAL(TMP2131, "Error Type", 10);
STRING_LITERAL(TMP2132, "BuiltInTypeClass", 16);
STRING_LITERAL(TMP2133, "UserTypeClass", 13);
STRING_LITERAL(TMP2134, "UserTypeClassInst", 17);
STRING_LITERAL(TMP2135, "CompositeTypeClass", 18);
STRING_LITERAL(TMP2136, "and", 3);
STRING_LITERAL(TMP2137, "or", 2);
STRING_LITERAL(TMP2138, "not", 3);
STRING_LITERAL(TMP2139, "any", 3);
STRING_LITERAL(TMP2140, "static", 6);
STRING_LITERAL(TMP2141, "TypeFromExpr", 12);
STRING_LITERAL(TMP2142, "FieldAccessor", 13);
NIM_CONST TY255612 typetostr_255609 = {((NimStringDesc*) &TMP2081),
((NimStringDesc*) &TMP2082),
((NimStringDesc*) &TMP2083),
((NimStringDesc*) &TMP2084),
((NimStringDesc*) &TMP2085),
((NimStringDesc*) &TMP2086),
((NimStringDesc*) &TMP2087),
((NimStringDesc*) &TMP2088),
((NimStringDesc*) &TMP2089),
((NimStringDesc*) &TMP2090),
((NimStringDesc*) &TMP2091),
((NimStringDesc*) &TMP2092),
((NimStringDesc*) &TMP2093),
((NimStringDesc*) &TMP2094),
((NimStringDesc*) &TMP2095),
((NimStringDesc*) &TMP2096),
((NimStringDesc*) &TMP2097),
((NimStringDesc*) &TMP2098),
((NimStringDesc*) &TMP2099),
((NimStringDesc*) &TMP2100),
((NimStringDesc*) &TMP2101),
((NimStringDesc*) &TMP2102),
((NimStringDesc*) &TMP2103),
((NimStringDesc*) &TMP2104),
((NimStringDesc*) &TMP2105),
((NimStringDesc*) &TMP2106),
((NimStringDesc*) &TMP2107),
((NimStringDesc*) &TMP2108),
((NimStringDesc*) &TMP2109),
((NimStringDesc*) &TMP2110),
((NimStringDesc*) &TMP2111),
((NimStringDesc*) &TMP2112),
((NimStringDesc*) &TMP2113),
((NimStringDesc*) &TMP2114),
((NimStringDesc*) &TMP2115),
((NimStringDesc*) &TMP2116),
((NimStringDesc*) &TMP2117),
((NimStringDesc*) &TMP2118),
((NimStringDesc*) &TMP2119),
((NimStringDesc*) &TMP2120),
((NimStringDesc*) &TMP2121),
((NimStringDesc*) &TMP2122),
((NimStringDesc*) &TMP2123),
((NimStringDesc*) &TMP2124),
((NimStringDesc*) &TMP2125),
((NimStringDesc*) &TMP2126),
((NimStringDesc*) &TMP2127),
((NimStringDesc*) &TMP2128),
((NimStringDesc*) &TMP2129),
((NimStringDesc*) &TMP2130),
((NimStringDesc*) &TMP2131),
((NimStringDesc*) &TMP2132),
((NimStringDesc*) &TMP2133),
((NimStringDesc*) &TMP2134),
((NimStringDesc*) &TMP2135),
((NimStringDesc*) &TMP2136),
((NimStringDesc*) &TMP2137),
((NimStringDesc*) &TMP2138),
((NimStringDesc*) &TMP2139),
((NimStringDesc*) &TMP2140),
((NimStringDesc*) &TMP2141),
((NimStringDesc*) &TMP2142)}
;
STRING_LITERAL(TMP2143, "int literal(", 12);
STRING_LITERAL(TMP2144, ", ", 2);
STRING_LITERAL(TMP2145, "typedesc", 8);
STRING_LITERAL(TMP2146, "typedesc[", 9);
STRING_LITERAL(TMP2147, "]", 1);
STRING_LITERAL(TMP2149, "compiler/types.nim", 18);
NIM_CONST TY90959 TMP2148 = {((NimStringDesc*) &TMP2149),
((NI) 451)}
;
STRING_LITERAL(TMP2150, "static[", 7);
STRING_LITERAL(TMP2151, "(", 1);
NIM_CONST TY90959 TMP2152 = {((NimStringDesc*) &TMP2149),
((NI) 458)}
;
STRING_LITERAL(TMP2153, "var", 3);
STRING_LITERAL(TMP2154, "ref", 3);
STRING_LITERAL(TMP2155, "ptr", 3);
STRING_LITERAL(TMP2156, "seq", 3);
STRING_LITERAL(TMP2157, "array", 5);
STRING_LITERAL(TMP2158, "set", 3);
STRING_LITERAL(TMP2159, "range", 5);
STRING_LITERAL(TMP2160, "distinct", 8);
STRING_LITERAL(TMP2161, "openarray", 9);
STRING_LITERAL(TMP2162, "[", 1);
STRING_LITERAL(TMP2163, " and ", 5);
STRING_LITERAL(TMP2164, " or ", 4);
STRING_LITERAL(TMP2165, "not ", 4);
NIM_CONST TY90959 TMP2166 = {((NimStringDesc*) &TMP2149),
((NI) 489)}
;
STRING_LITERAL(TMP2167, "array[", 6);
STRING_LITERAL(TMP2168, "<invalid value>", 15);
STRING_LITERAL(TMP2169, "..", 2);
STRING_LITERAL(TMP2170, "Array constructor[", 18);
STRING_LITERAL(TMP2171, "seq[", 4);
STRING_LITERAL(TMP2172, "ordinal[", 8);
STRING_LITERAL(TMP2173, "set[", 4);
STRING_LITERAL(TMP2174, "openarray[", 10);
STRING_LITERAL(TMP2175, "distinct ", 9);
STRING_LITERAL(TMP2176, "tuple[", 6);
STRING_LITERAL(TMP2177, ": ", 2);
STRING_LITERAL(TMP2178, "tuple[]", 7);
STRING_LITERAL(TMP2179, "range ", 6);
STRING_LITERAL(TMP2180, "iterator (", 10);
STRING_LITERAL(TMP2181, "proc (", 6);
extern NIM_CONST TY223022 Callingconvtostr_223019;
STRING_LITERAL(TMP2192, "noSideEffect", 12);
STRING_LITERAL(TMP2193, "gcsafe", 6);
STRING_LITERAL(TMP2194, "locks: ", 7);
STRING_LITERAL(TMP2197, "{.", 2);
STRING_LITERAL(TMP2198, ".}", 2);
STRING_LITERAL(TMP2740, "sameTuple", 9);
NIM_CONST TY90959 TMP2741 = {((NimStringDesc*) &TMP2149),
((NI) 731)}
;
STRING_LITERAL(TMP2751, "invalid kind for first(", 23);
STRING_LITERAL(TMP2752, "invalid kind for last(", 22);
NIM_CONST TY90959 TMP2755 = {((NimStringDesc*) &TMP2149),
((NI) 1384)}
;
NIM_CONST TY90959 TMP2756 = {((NimStringDesc*) &TMP2149),
((NI) 1385)}
;
STRING_LITERAL(TMP2764, "getProcHeader", 13);
STRING_LITERAL(TMP2924, "computeRecSizeAux(record case branch)", 37);
STRING_LITERAL(TMP2925, "getSize: ", 9);
NIM_CONST TY90959 TMP3496 = {((NimStringDesc*) &TMP2149),
((NI) 1361)}
;
STRING_LITERAL(TMP3565, "searchTypeNodeForAux(record case branch)", 40);
STRING_LITERAL(TMP3566, "searchTypeNodeForAux()", 22);
TNimType NTI257855; /* tuple[a: int, b: int] */
extern TNimType NTI108; /* int */
TNimType NTI257854; /* seq[tuple[a: int, b: int]] */
extern NI intsize_172651;
extern TNimType NTI223262; /* TTypeKind */
extern NI floatsize_172652;
extern NI ptrsize_172653;
extern Gcheap51018 gch_51059;

static N_INLINE(NIM_BOOL, isintlit_253327)(Ttype223847* 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, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	memcpy(((NCSTRING) ((&(*dest).data[((*dest).Sup.len)- 0]))), ((NCSTRING) ((*src).data)), (NI)((*src).Sup.len + ((NI) 1)));
	(*dest).Sup.len += (*src).Sup.len;
}

static N_INLINE(void, 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_255623)(NimStringDesc** name, Ttype223847* typ) {
	{
		NimStringDesc* LOC5;
		if (!(((*typ).flags &(1<<((((NU8) 15))&31)))!=0)) goto LA3;
		LOC5 = 0;
		LOC5 = rawNewString((*name)->Sup.len + 7);
appendString(LOC5, ((NimStringDesc*) &TMP2079));
appendString(LOC5, (*name));
		unsureAsgnRef((void**) (&(*name)), LOC5);
	}
	LA3: ;
	{
		if (!(((*typ).flags &(1<<((((NU8) 16))&31)))!=0)) goto LA8;
		(*name) = resizeString((*name), 8);
appendString((*name), ((NimStringDesc*) &TMP2080));
	}
	LA8: ;
}

N_NIMCALL(Ttype223847*, base_253039)(Ttype223847* t) {
	Ttype223847* result;
	result = 0;
	result = (*t).sons->data[((NI) 0)];
	return result;
}

N_NIMCALL(NimStringDesc*, valuetostring_255438)(Tnode223809* 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*) &TMP2168));
	}
	break;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, rangetostr_255451)(Tnode223809* n) {
	NimStringDesc* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = valuetostring_255438((*n).kindU.S6.sons->data[((NI) 0)]);
	LOC3 = 0;
	LOC3 = valuetostring_255438((*n).kindU.S6.sons->data[((NI) 1)]);
	LOC1 = rawNewString(LOC2->Sup.len + LOC3->Sup.len + 2);
appendString(LOC1, LOC2);
appendString(LOC1, ((NimStringDesc*) &TMP2169));
appendString(LOC1, LOC3);
	result = LOC1;
	return result;
}

static N_INLINE(NI, len_224098)(Tnode223809* 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(Tnode223809*, HEX5BHEX5D_224244)(Tnode223809* n, NI i) {
	Tnode223809* result;
	result = 0;
	result = (*n).kindU.S6.sons->data[i];
	return result;
}

static N_INLINE(void, addsep_103118)(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_253032)(Ttype223847* typ, NU8 prefer) {
	NimStringDesc* result;
	Ttype223847* t;
{	result = 0;
	t = typ;
	result = copyString(((NimStringDesc*) &TMP2076));
	{
		if (!(t == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		NIM_BOOL LOC8;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = ((25 &(1<<((prefer)&7)))!=0);
		if (!(LOC8)) goto LA9;
		LOC8 = !(((*t).sym == NIM_NIL));
		LA9: ;
		LOC7 = LOC8;
		if (!(LOC7)) goto LA10;
		LOC7 = !((((*(*t).sym).flags &(1<<((((NU8) 29))&31)))!=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_253327(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*) &TMP2077));
appendString(LOC19, LOC20);
appendString(LOC19, ((NimStringDesc*) &TMP2078));
			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_255623((&result), t);
		goto BeforeRet;
	}
	LA11: ;
	switch ((*t).kind) {
	case ((NU8) 31):
	{
		{
			NIM_BOOL LOC31;
			NIM_BOOL LOC32;
			LOC31 = 0;
			LOC32 = 0;
			LOC32 = isintlit_253327(t);
			LOC31 = !(LOC32);
			if (LOC31) goto LA33;
			LOC31 = (prefer == ((NU8) 2));
			LA33: ;
			if (!LOC31) goto LA34;
			result = copyString(typetostr_255609[((*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*) &TMP2143));
appendString(LOC42, LOC43);
appendString(LOC42, ((NimStringDesc*) &TMP2078));
				result = LOC42;
			}
			LA37: ;
		}
		LA29: ;
	}
	break;
	case ((NU8) 10):
	case ((NU8) 11):
	case ((NU8) 9):
	{
		NimStringDesc* LOC45;
		NimStringDesc* LOC46;
		LOC45 = 0;
		LOC46 = 0;
		LOC46 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
		LOC45 = rawNewString(LOC46->Sup.len + 1);
appendString(LOC45, LOC46);
appendChar(LOC45, 91);
		result = LOC45;
		{
			NI i_255789;
			NI HEX3Atmp_256349;
			NI LOC48;
			NI res_256352;
			i_255789 = 0;
			HEX3Atmp_256349 = 0;
			LOC48 = 0;
			LOC48 = sonslen_226351(t);
			HEX3Atmp_256349 = (NI)((NI)(LOC48 - ((NI) 1)) - ((NI) (!(((*t).kind == ((NU8) 9))))));
			res_256352 = ((NI) 1);
			{
				while (1) {
					NimStringDesc* LOC55;
					if (!(res_256352 <= HEX3Atmp_256349)) goto LA50;
					i_255789 = res_256352;
					{
						if (!(((NI) 1) < i_255789)) goto LA53;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2144));
					}
					LA53: ;
					LOC55 = 0;
					LOC55 = typetostring_253032((*t).sons->data[i_255789], ((NU8) 4));
					result = resizeString(result, LOC55->Sup.len + 0);
appendString(result, LOC55);
					res_256352 += ((NI) 1);
				} LA50: ;
			}
		}
		result = addChar(result, 93);
	}
	break;
	case ((NU8) 8):
	{
		{
			Ttype223847* LOC59;
			LOC59 = 0;
			LOC59 = base_253039(t);
			if (!((*LOC59).kind == ((NU8) 0))) goto LA60;
			result = copyString(((NimStringDesc*) &TMP2145));
		}
		goto LA57;
		LA60: ;
		{
			NimStringDesc* LOC63;
			Ttype223847* LOC64;
			NimStringDesc* LOC65;
			LOC63 = 0;
			LOC64 = 0;
			LOC64 = base_253039(t);
			LOC65 = 0;
			LOC65 = typetostring_253032(LOC64, ((NU8) 0));
			LOC63 = rawNewString(LOC65->Sup.len + 10);
appendString(LOC63, ((NimStringDesc*) &TMP2146));
appendString(LOC63, LOC65);
appendString(LOC63, ((NimStringDesc*) &TMP2147));
			result = LOC63;
		}
		LA57: ;
	}
	break;
	case ((NU8) 59):
	{
		{
			NI LOC69;
			NimStringDesc* LOC72;
			LOC69 = 0;
			LOC69 = len_226369(t);
			if (!!((((NI) 0) < LOC69))) goto LA70;
			LOC72 = 0;
			LOC72 = HEX24_194279(TMP2148);
			internalerror_194191(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_245059((*t).n, 0);
		}
		goto LA73;
		LA77: ;
		{
			NimStringDesc* LOC80;
			NimStringDesc* LOC81;
			LOC80 = 0;
			LOC81 = 0;
			LOC81 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
			LOC80 = rawNewString(LOC81->Sup.len + 8);
appendString(LOC80, ((NimStringDesc*) &TMP2150));
appendString(LOC80, LOC81);
appendString(LOC80, ((NimStringDesc*) &TMP2147));
			result = LOC80;
			{
				NimStringDesc* LOC86;
				NimStringDesc* LOC87;
				if (!!(((*t).n == NIM_NIL))) goto LA84;
				LOC86 = 0;
				LOC87 = 0;
				LOC87 = rendertree_245059((*t).n, 0);
				LOC86 = rawNewString(LOC87->Sup.len + 2);
appendString(LOC86, ((NimStringDesc*) &TMP2151));
appendString(LOC86, LOC87);
appendString(LOC86, ((NimStringDesc*) &TMP2078));
				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_194279(TMP2152);
			internalerror_194191(LOC95);
		}
		LA93: ;
		result = copyString((*(*(*(*t).sym).owner).name).s);
		goto BeforeRet;
	}
	break;
	case ((NU8) 51):
	{
		Ttype223847* LOC97;
		LOC97 = 0;
		LOC97 = base_253039(t);
		switch ((*LOC97).kind) {
		case ((NU8) 23):
		{
			result = copyString(((NimStringDesc*) &TMP2153));
		}
		break;
		case ((NU8) 22):
		{
			result = copyString(((NimStringDesc*) &TMP2154));
		}
		break;
		case ((NU8) 21):
		{
			result = copyString(((NimStringDesc*) &TMP2155));
		}
		break;
		case ((NU8) 24):
		{
			result = copyString(((NimStringDesc*) &TMP2156));
		}
		break;
		case ((NU8) 16):
		{
			result = copyString(((NimStringDesc*) &TMP2157));
		}
		break;
		case ((NU8) 19):
		{
			result = copyString(((NimStringDesc*) &TMP2158));
		}
		break;
		case ((NU8) 20):
		{
			result = copyString(((NimStringDesc*) &TMP2159));
		}
		break;
		case ((NU8) 13):
		{
			result = copyString(((NimStringDesc*) &TMP2160));
		}
		break;
		case ((NU8) 25):
		{
			result = copyString(((NimStringDesc*) &TMP2106));
		}
		break;
		case ((NU8) 17):
		{
			result = copyString(((NimStringDesc*) &TMP2098));
		}
		break;
		case ((NU8) 18):
		{
			result = copyString(((NimStringDesc*) &TMP2099));
		}
		break;
		case ((NU8) 27):
		{
			result = copyString(((NimStringDesc*) &TMP2161));
		}
		break;
		default:
		{
			Ttype223847* LOC111;
			LOC111 = 0;
			LOC111 = base_253039(t);
			result = copyString(typetostr_255609[((*LOC111).kind)- 0]);
		}
		break;
		}
	}
	break;
	case ((NU8) 53):
	{
		Ttype223847* body;
		NimStringDesc* LOC113;
		body = base_253039(t);
		LOC113 = 0;
		LOC113 = rawNewString((*(*(*body).sym).name).s->Sup.len + 1);
appendString(LOC113, (*(*(*body).sym).name).s);
appendString(LOC113, ((NimStringDesc*) &TMP2162));
		result = LOC113;
		{
			NI i_255888;
			NI HEX3Atmp_256357;
			NI LOC115;
			NI res_256360;
			i_255888 = 0;
			HEX3Atmp_256357 = 0;
			LOC115 = 0;
			LOC115 = sonslen_226351(t);
			HEX3Atmp_256357 = (NI)(LOC115 - ((NI) 2));
			res_256360 = ((NI) 1);
			{
				while (1) {
					NimStringDesc* LOC122;
					if (!(res_256360 <= HEX3Atmp_256357)) goto LA117;
					i_255888 = res_256360;
					{
						if (!(((NI) 1) < i_255888)) goto LA120;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2144));
					}
					LA120: ;
					LOC122 = 0;
					LOC122 = typetostring_253032((*t).sons->data[i_255888], ((NU8) 0));
					result = resizeString(result, LOC122->Sup.len + 0);
appendString(result, LOC122);
					res_256360 += ((NI) 1);
				} LA117: ;
			}
		}
		result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TMP2147));
	}
	break;
	case ((NU8) 55):
	{
		NimStringDesc* LOC124;
		NimStringDesc* LOC125;
		NimStringDesc* LOC126;
		LOC124 = 0;
		LOC125 = 0;
		LOC125 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
		LOC126 = 0;
		LOC126 = typetostring_253032((*t).sons->data[((NI) 1)], ((NU8) 0));
		LOC124 = rawNewString(LOC125->Sup.len + LOC126->Sup.len + 5);
appendString(LOC124, LOC125);
appendString(LOC124, ((NimStringDesc*) &TMP2163));
appendString(LOC124, LOC126);
		result = LOC124;
	}
	break;
	case ((NU8) 56):
	{
		NimStringDesc* LOC128;
		NimStringDesc* LOC129;
		NimStringDesc* LOC130;
		LOC128 = 0;
		LOC129 = 0;
		LOC129 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
		LOC130 = 0;
		LOC130 = typetostring_253032((*t).sons->data[((NI) 1)], ((NU8) 0));
		LOC128 = rawNewString(LOC129->Sup.len + LOC130->Sup.len + 4);
appendString(LOC128, LOC129);
appendString(LOC128, ((NimStringDesc*) &TMP2164));
appendString(LOC128, LOC130);
		result = LOC128;
	}
	break;
	case ((NU8) 57):
	{
		NimStringDesc* LOC132;
		NimStringDesc* LOC133;
		LOC132 = 0;
		LOC133 = 0;
		LOC133 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
		LOC132 = rawNewString(LOC133->Sup.len + 4);
appendString(LOC132, ((NimStringDesc*) &TMP2165));
appendString(LOC132, LOC133);
		result = LOC132;
	}
	break;
	case ((NU8) 6):
	{
		{
			NI LOC137;
			NimStringDesc* LOC140;
			LOC137 = 0;
			LOC137 = len_226369(t);
			if (!!((LOC137 == ((NI) 0)))) goto LA138;
			LOC140 = 0;
			LOC140 = HEX24_194279(TMP2166);
			internalerror_194191(LOC140);
		}
		LA138: ;
		result = copyString(((NimStringDesc*) &TMP2087));
	}
	break;
	case ((NU8) 60):
	case ((NU8) 61):
	{
		result = rendertree_245059((*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_255451((*(*t).sons->data[((NI) 0)]).n);
			LOC149 = 0;
			LOC149 = typetostring_253032((*t).sons->data[((NI) 1)], ((NU8) 0));
			LOC147 = rawNewString(LOC148->Sup.len + LOC149->Sup.len + 9);
appendString(LOC147, ((NimStringDesc*) &TMP2167));
appendString(LOC147, LOC148);
appendString(LOC147, ((NimStringDesc*) &TMP2144));
appendString(LOC147, LOC149);
appendChar(LOC147, 93);
			result = LOC147;
		}
		goto LA143;
		LA145: ;
		{
			NimStringDesc* LOC151;
			NimStringDesc* LOC152;
			NimStringDesc* LOC153;
			LOC151 = 0;
			LOC152 = 0;
			LOC152 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
			LOC153 = 0;
			LOC153 = typetostring_253032((*t).sons->data[((NI) 1)], ((NU8) 0));
			LOC151 = rawNewString(LOC152->Sup.len + LOC153->Sup.len + 9);
appendString(LOC151, ((NimStringDesc*) &TMP2167));
appendString(LOC151, LOC152);
appendString(LOC151, ((NimStringDesc*) &TMP2144));
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_255451((*(*t).sons->data[((NI) 0)]).n);
		LOC157 = 0;
		LOC157 = typetostring_253032((*t).sons->data[((NI) 1)], ((NU8) 0));
		LOC155 = rawNewString(LOC156->Sup.len + LOC157->Sup.len + 21);
appendString(LOC155, ((NimStringDesc*) &TMP2170));
appendString(LOC155, LOC156);
appendString(LOC155, ((NimStringDesc*) &TMP2144));
appendString(LOC155, LOC157);
appendChar(LOC155, 93);
		result = LOC155;
	}
	break;
	case ((NU8) 24):
	{
		NimStringDesc* LOC159;
		NimStringDesc* LOC160;
		LOC159 = 0;
		LOC160 = 0;
		LOC160 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
		LOC159 = rawNewString(LOC160->Sup.len + 5);
appendString(LOC159, ((NimStringDesc*) &TMP2171));
appendString(LOC159, LOC160);
appendChar(LOC159, 93);
		result = LOC159;
	}
	break;
	case ((NU8) 15):
	{
		NimStringDesc* LOC162;
		NimStringDesc* LOC163;
		LOC162 = 0;
		LOC163 = 0;
		LOC163 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
		LOC162 = rawNewString(LOC163->Sup.len + 9);
appendString(LOC162, ((NimStringDesc*) &TMP2172));
appendString(LOC162, LOC163);
appendChar(LOC162, 93);
		result = LOC162;
	}
	break;
	case ((NU8) 19):
	{
		NimStringDesc* LOC165;
		NimStringDesc* LOC166;
		LOC165 = 0;
		LOC166 = 0;
		LOC166 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
		LOC165 = rawNewString(LOC166->Sup.len + 5);
appendString(LOC165, ((NimStringDesc*) &TMP2173));
appendString(LOC165, LOC166);
appendChar(LOC165, 93);
		result = LOC165;
	}
	break;
	case ((NU8) 27):
	{
		NimStringDesc* LOC168;
		NimStringDesc* LOC169;
		LOC168 = 0;
		LOC169 = 0;
		LOC169 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
		LOC168 = rawNewString(LOC169->Sup.len + 11);
appendString(LOC168, ((NimStringDesc*) &TMP2174));
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_253032((*t).sons->data[((NI) 0)], LOC172);
		LOC171 = rawNewString(LOC178->Sup.len + 9);
appendString(LOC171, ((NimStringDesc*) &TMP2175));
appendString(LOC171, LOC178);
		result = LOC171;
	}
	break;
	case ((NU8) 18):
	{
		{
			if (!!(((*t).n == NIM_NIL))) goto LA182;
			result = copyString(((NimStringDesc*) &TMP2176));
			{
				NI i_256013;
				NI HEX3Atmp_256365;
				NI LOC185;
				NI res_256368;
				i_256013 = 0;
				HEX3Atmp_256365 = 0;
				LOC185 = 0;
				LOC185 = sonslen_226387((*t).n);
				HEX3Atmp_256365 = (NI)(LOC185 - ((NI) 1));
				res_256368 = ((NI) 0);
				{
					while (1) {
						NimStringDesc* LOC188;
						NimStringDesc* LOC189;
						if (!(res_256368 <= HEX3Atmp_256365)) goto LA187;
						i_256013 = res_256368;
						LOC188 = 0;
						LOC189 = 0;
						LOC189 = typetostring_253032((*t).sons->data[i_256013], ((NU8) 0));
						LOC188 = rawNewString((*(*(*(*(*t).n).kindU.S6.sons->data[i_256013]).kindU.S4.sym).name).s->Sup.len + LOC189->Sup.len + 2);
appendString(LOC188, (*(*(*(*(*t).n).kindU.S6.sons->data[i_256013]).kindU.S4.sym).name).s);
appendString(LOC188, ((NimStringDesc*) &TMP2177));
appendString(LOC188, LOC189);
						result = resizeString(result, LOC188->Sup.len + 0);
appendString(result, LOC188);
						{
							NI LOC192;
							LOC192 = 0;
							LOC192 = sonslen_226387((*t).n);
							if (!(i_256013 < (NI)(LOC192 - ((NI) 1)))) goto LA193;
							result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2144));
						}
						LA193: ;
						res_256368 += ((NI) 1);
					} LA187: ;
				}
			}
			result = addChar(result, 93);
		}
		goto LA180;
		LA182: ;
		{
			NI LOC196;
			LOC196 = 0;
			LOC196 = sonslen_226351(t);
			if (!(LOC196 == ((NI) 0))) goto LA197;
			result = copyString(((NimStringDesc*) &TMP2178));
		}
		goto LA180;
		LA197: ;
		{
			result = copyString(((NimStringDesc*) &TMP2151));
			{
				NI i_256216;
				NI HEX3Atmp_256373;
				NI LOC201;
				NI res_256376;
				i_256216 = 0;
				HEX3Atmp_256373 = 0;
				LOC201 = 0;
				LOC201 = sonslen_226351(t);
				HEX3Atmp_256373 = (NI)(LOC201 - ((NI) 1));
				res_256376 = ((NI) 0);
				{
					while (1) {
						NimStringDesc* LOC204;
						if (!(res_256376 <= HEX3Atmp_256373)) goto LA203;
						i_256216 = res_256376;
						LOC204 = 0;
						LOC204 = typetostring_253032((*t).sons->data[i_256216], ((NU8) 0));
						result = resizeString(result, LOC204->Sup.len + 0);
appendString(result, LOC204);
						{
							NI LOC207;
							LOC207 = 0;
							LOC207 = sonslen_226351(t);
							if (!(i_256216 < (NI)(LOC207 - ((NI) 1)))) goto LA208;
							result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2144));
						}
						LA208: ;
						res_256376 += ((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_255609[((*t).kind)- 0]);
		{
			NI LOC213;
			LOC213 = 0;
			LOC213 = len_226369(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_256229;
				NI HEX3Atmp_256381;
				NI LOC217;
				NI res_256384;
				i_256229 = 0;
				HEX3Atmp_256381 = 0;
				LOC217 = 0;
				LOC217 = sonslen_226351(t);
				HEX3Atmp_256381 = (NI)(LOC217 - ((NI) 1));
				res_256384 = ((NI) 0);
				{
					while (1) {
						NimStringDesc* LOC220;
						if (!(res_256384 <= HEX3Atmp_256381)) goto LA219;
						i_256229 = res_256384;
						LOC220 = 0;
						LOC220 = typetostring_253032((*t).sons->data[i_256229], ((NU8) 0));
						result = resizeString(result, LOC220->Sup.len + 0);
appendString(result, LOC220);
						{
							NI LOC223;
							LOC223 = 0;
							LOC223 = sonslen_226351(t);
							if (!(i_256229 < (NI)(LOC223 - ((NI) 1)))) goto LA224;
							result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2144));
						}
						LA224: ;
						res_256384 += ((NI) 1);
					} LA219: ;
				}
			}
			result = addChar(result, 93);
		}
		goto LA211;
		LA214: ;
		{
			NimStringDesc* LOC227;
			LOC227 = 0;
			LOC227 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
			result = resizeString(result, LOC227->Sup.len + 0);
appendString(result, LOC227);
		}
		LA211: ;
	}
	break;
	case ((NU8) 20):
	{
		NimStringDesc* LOC229;
		NimStringDesc* LOC230;
		LOC229 = 0;
		LOC230 = 0;
		LOC230 = rangetostr_255451((*t).n);
		LOC229 = rawNewString(LOC230->Sup.len + 6);
appendString(LOC229, ((NimStringDesc*) &TMP2179));
appendString(LOC229, LOC230);
		result = LOC229;
		{
			NimStringDesc* LOC235;
			NimStringDesc* LOC236;
			if (!!((prefer == ((NU8) 2)))) goto LA233;
			LOC235 = 0;
			LOC236 = 0;
			LOC236 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
			LOC235 = rawNewString(LOC236->Sup.len + 2);
appendString(LOC235, ((NimStringDesc*) &TMP2151));
appendString(LOC235, LOC236);
appendString(LOC235, ((NimStringDesc*) &TMP2078));
			result = resizeString(result, LOC235->Sup.len + 0);
appendString(result, LOC235);
		}
		LA233: ;
	}
	break;
	case ((NU8) 25):
	{
		NimStringDesc* prag;
		{
			if (!(((*t).flags &(1<<((((NU8) 14))&31)))!=0)) goto LA240;
			result = copyString(((NimStringDesc*) &TMP2180));
		}
		goto LA238;
		LA240: ;
		{
			result = copyString(((NimStringDesc*) &TMP2181));
		}
		LA238: ;
		{
			NI i_256261;
			NI HEX3Atmp_256389;
			NI LOC244;
			NI res_256392;
			i_256261 = 0;
			HEX3Atmp_256389 = 0;
			LOC244 = 0;
			LOC244 = sonslen_226351(t);
			HEX3Atmp_256389 = (NI)(LOC244 - ((NI) 1));
			res_256392 = ((NI) 1);
			{
				while (1) {
					NimStringDesc* LOC258;
					if (!(res_256392 <= HEX3Atmp_256389)) goto LA246;
					i_256261 = res_256392;
					{
						NIM_BOOL LOC249;
						NIM_BOOL LOC250;
						NI LOC252;
						Tnode223809* LOC254;
						Tnode223809* LOC257;
						LOC249 = 0;
						LOC250 = 0;
						LOC250 = !(((*t).n == NIM_NIL));
						if (!(LOC250)) goto LA251;
						LOC252 = 0;
						LOC252 = len_224098((*t).n);
						LOC250 = (i_256261 < LOC252);
						LA251: ;
						LOC249 = LOC250;
						if (!(LOC249)) goto LA253;
						LOC254 = 0;
						LOC254 = HEX5BHEX5D_224244((*t).n, i_256261);
						LOC249 = ((*LOC254).kind == ((NU8) 3));
						LA253: ;
						if (!LOC249) goto LA255;
						LOC257 = 0;
						LOC257 = HEX5BHEX5D_224244((*t).n, i_256261);
						result = resizeString(result, (*(*(*LOC257).kindU.S4.sym).name).s->Sup.len + 0);
appendString(result, (*(*(*LOC257).kindU.S4.sym).name).s);
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2177));
					}
					LA255: ;
					LOC258 = 0;
					LOC258 = typetostring_253032((*t).sons->data[i_256261], ((NU8) 0));
					result = resizeString(result, LOC258->Sup.len + 0);
appendString(result, LOC258);
					{
						NI LOC261;
						LOC261 = 0;
						LOC261 = sonslen_226351(t);
						if (!(i_256261 < (NI)(LOC261 - ((NI) 1)))) goto LA262;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2144));
					}
					LA262: ;
					res_256392 += ((NI) 1);
				} LA246: ;
			}
		}
		result = addChar(result, 41);
		{
			NimStringDesc* LOC268;
			NimStringDesc* LOC269;
			if (!!(((*t).sons->data[((NI) 0)] == NIM_NIL))) goto LA266;
			LOC268 = 0;
			LOC269 = 0;
			LOC269 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
			LOC268 = rawNewString(LOC269->Sup.len + 2);
appendString(LOC268, ((NimStringDesc*) &TMP2177));
appendString(LOC268, LOC269);
			result = resizeString(result, LOC268->Sup.len + 0);
appendString(result, LOC268);
		}
		LA266: ;
		{
			if (!((*t).callconv == ((NU8) 0))) goto LA272;
			prag = copyString(((NimStringDesc*) &TMP2076));
		}
		goto LA270;
		LA272: ;
		{
			prag = copyString(Callingconvtostr_223019[((*t).callconv)- 0]);
		}
		LA270: ;
		{
			if (!(((*t).flags &(1<<((((NU8) 1))&31)))!=0)) goto LA277;
			addsep_103118((&prag), ((NimStringDesc*) &TMP2144), ((NI) 0));
			prag = resizeString(prag, 12);
appendString(prag, ((NimStringDesc*) &TMP2192));
		}
		LA277: ;
		{
			if (!(((*t).flags &(1<<((((NU8) 7))&31)))!=0)) goto LA281;
			addsep_103118((&prag), ((NimStringDesc*) &TMP2144), ((NI) 0));
			prag = resizeString(prag, 6);
appendString(prag, ((NimStringDesc*) &TMP2193));
		}
		LA281: ;
		{
			NimStringDesc* LOC287;
			NimStringDesc* LOC288;
			if (!!((((NI) ((*t).locklevel)) == ((NI) -1)))) goto LA285;
			addsep_103118((&prag), ((NimStringDesc*) &TMP2144), ((NI) 0));
			LOC287 = 0;
			LOC288 = 0;
			LOC288 = HEX24_226096((*t).locklevel);
			LOC287 = rawNewString(LOC288->Sup.len + 7);
appendString(LOC287, ((NimStringDesc*) &TMP2194));
appendString(LOC287, LOC288);
			prag = resizeString(prag, LOC287->Sup.len + 0);
appendString(prag, LOC287);
		}
		LA285: ;
		{
			NimStringDesc* LOC293;
			if (!!(((prag ? prag->Sup.len : 0) == ((NI) 0)))) goto LA291;
			LOC293 = 0;
			LOC293 = rawNewString(prag->Sup.len + 4);
appendString(LOC293, ((NimStringDesc*) &TMP2197));
appendString(LOC293, prag);
appendString(LOC293, ((NimStringDesc*) &TMP2198));
			result = resizeString(result, LOC293->Sup.len + 0);
appendString(result, LOC293);
		}
		LA291: ;
	}
	break;
	case ((NU8) 48):
	case ((NU8) 49):
	{
		NimStringDesc* LOC295;
		LOC295 = 0;
		LOC295 = typetostring_253032((*t).sons->data[((NI) 0)], ((NU8) 0));
		result = nsuFormatSingleElem(typetostr_255609[((*t).kind)- 0], LOC295);
	}
	break;
	default:
	{
		result = copyString(typetostr_255609[((*t).kind)- 0]);
	}
	break;
	}
	addtypeflags_255623((&result), t);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, elemtype_253522)(Ttype223847* t) {
	Ttype223847* result;
	result = 0;
	switch ((*t).kind) {
	case ((NU8) 11):
	case ((NU8) 13):
	{
		Ttype223847* LOC2;
		LOC2 = 0;
		LOC2 = lastson_226426(t);
		result = elemtype_253522(LOC2);
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		result = (*t).sons->data[((NI) 1)];
	}
	break;
	default:
	{
		result = lastson_226426(t);
	}
	break;
	}
	return result;
}

N_NIMCALL(void, initsametypeclosure_257863)(Tsametypeclosure257841* Result) {
}

N_NIMCALL(NIM_BOOL, isgenericalias_259091)(Ttype223847* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	Ttype223847* LOC3;
{	result = 0;
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 11));
	if (!(LOC1)) goto LA2;
	LOC3 = 0;
	LOC3 = lastson_226426(t);
	LOC1 = ((*LOC3).kind == ((NU8) 11));
	LA2: ;
	result = LOC1;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, skipgenericalias_259119)(Ttype223847* t) {
	Ttype223847* result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isgenericalias_259091(t);
		if (!LOC3) goto LA4;
		result = lastson_226426(t);
	}
	goto LA1;
	LA4: ;
	{
		result = t;
	}
	LA1: ;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, sameflags_259141)(Ttype223847* a, Ttype223847* b) {
	NIM_BOOL result;
	result = 0;
	result = ((376832 & (*a).flags) == (376832 & (*b).flags));
	return result;
}

static N_INLINE(NI, find_257900)(TY257855* a, NI aLen0, TY257855 item) {
	NI result;
{	result = 0;
	{
		TY257855 i_257944;
		NI i_257978;
		memset((void*)(&i_257944), 0, sizeof(i_257944));
		i_257978 = ((NI) 0);
		{
			while (1) {
				if (!(i_257978 < aLen0)) goto LA3;
				i_257944 = a[i_257978];
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = HEX3DHEX3D_257946(i_257944, item);
					if (!LOC6) goto LA7;
					goto BeforeRet;
				}
				LA7: ;
				result += ((NI) 1);
				i_257978 += ((NI) 1);
			} LA3: ;
		}
	}
	result = ((NI) -1);
	}BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, contains_257890)(TY257855* a, NI aLen0, TY257855 item) {
	NIM_BOOL result;
	NI LOC1;
{	result = 0;
	LOC1 = 0;
	LOC1 = find_257900(a, aLen0, item);
	result = (((NI) 0) <= LOC1);
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}
N_NIMCALL(void, TMP2739)(void* p, NI op) {
	TY257854* a;
	NI LOC1;
	a = (TY257854*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	}
}

N_NIMCALL(NIM_BOOL, containsorincl_257872)(Tsametypeclosure257841* c, Ttype223847* a, Ttype223847* b) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	TY257855 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_257890((*c).s->data, (*c).s->Sup.len, LOC3);
	LA2: ;
	result = LOC1;
	{
		TY257855 LOC12;
		if (!!(result)) goto LA6;
		{
			if (!(*c).s == 0) goto LA10;
			unsureAsgnRef((void**) (&(*c).s), (TY257854*) newSeq((&NTI257854), 0));
		}
		LA10: ;
		LOC12.Field0 = (*a).Sup.id;
		LOC12.Field1 = (*b).Sup.id;
		(*c).s = (TY257854*) incrSeqV2(&((*c).s)->Sup, sizeof(TY257855));
		(*c).s->data[(*c).s->Sup.len] = LOC12;
		++(*c).s->Sup.len;
	}
	LA6: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sametypeornilaux_258044)(Ttype223847* a, Ttype223847* b, Tsametypeclosure257841* 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_258035(a, b, c);
		}
		LA6: ;
	}
	LA1: ;
	return result;
}

static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
	NIM_BOOL result;
	NIM_BOOL LOC11;
	int LOC13;
{	result = 0;
	{
		if (!(a == b)) goto LA3;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = (a == NIM_NIL);
		if (LOC7) goto LA8;
		LOC7 = (b == NIM_NIL);
		LA8: ;
		if (!LOC7) goto LA9;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA9: ;
	LOC11 = 0;
	LOC11 = ((*a).Sup.len == (*b).Sup.len);
	if (!(LOC11)) goto LA12;
	LOC13 = 0;
	LOC13 = memcmp(((NCSTRING) ((*a).data)), ((NCSTRING) ((*b).data)), (*a).Sup.len);
	LOC11 = (LOC13 == ((NI32) 0));
	LA12: ;
	result = LOC11;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sameobjecttree_258866)(Tnode223809* a, Tnode223809* b, Tsametypeclosure257841* c) {
	NIM_BOOL result;
{	result = 0;
	{
		if (!(a == b)) goto LA3;
		result = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		NIM_BOOL LOC7;
		Ttype223847* x;
		Ttype223847* 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 &(1<<((((NU8) 0))&7)))!=0)) goto LA14;
			{
				if (!!((x == NIM_NIL))) goto LA18;
				x = skiptypes_227167(x, 1050624);
			}
			LA18: ;
			{
				if (!!((y == NIM_NIL))) goto LA22;
				y = skiptypes_227167(y, 1050624);
			}
			LA22: ;
		}
		LA14: ;
		{
			NIM_BOOL LOC26;
			LOC26 = 0;
			LOC26 = sametypeornilaux_258044(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_226387(a);
					LOC39 = 0;
					LOC39 = sonslen_226387(b);
					if (!(LOC38 == LOC39)) goto LA40;
					{
						NI i_258979;
						NI HEX3Atmp_258983;
						NI LOC43;
						NI res_258986;
						i_258979 = 0;
						HEX3Atmp_258983 = 0;
						LOC43 = 0;
						LOC43 = sonslen_226387(a);
						HEX3Atmp_258983 = (NI)(LOC43 - ((NI) 1));
						res_258986 = ((NI) 0);
						{
							while (1) {
								if (!(res_258986 <= HEX3Atmp_258983)) goto LA45;
								i_258979 = res_258986;
								{
									NIM_BOOL LOC48;
									LOC48 = 0;
									LOC48 = sameobjecttree_258866((*a).kindU.S6.sons->data[i_258979], (*b).kindU.S6.sons->data[i_258979], c);
									if (!!(LOC48)) goto LA49;
									goto BeforeRet;
								}
								LA49: ;
								res_258986 += ((NI) 1);
							} LA45: ;
						}
					}
					result = NIM_TRUE;
				}
				LA40: ;
			}
			break;
			}
		}
		LA27: ;
	}
	goto LA1;
	LA10: ;
	LA1: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sameobjectstructures_259005)(Ttype223847* a, Ttype223847* b, Tsametypeclosure257841* c) {
	NIM_BOOL result;
{	result = 0;
	{
		NI LOC3;
		NI LOC4;
		LOC3 = 0;
		LOC3 = sonslen_226351(a);
		LOC4 = 0;
		LOC4 = sonslen_226351(b);
		if (!!((LOC3 == LOC4))) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	{
		NI i_259024;
		NI HEX3Atmp_259026;
		NI LOC8;
		NI res_259029;
		i_259024 = 0;
		HEX3Atmp_259026 = 0;
		LOC8 = 0;
		LOC8 = sonslen_226351(a);
		HEX3Atmp_259026 = (NI)(LOC8 - ((NI) 1));
		res_259029 = ((NI) 0);
		{
			while (1) {
				if (!(res_259029 <= HEX3Atmp_259026)) goto LA10;
				i_259024 = res_259029;
				{
					NIM_BOOL LOC13;
					LOC13 = 0;
					LOC13 = sametypeornilaux_258044((*a).sons->data[i_259024], (*b).sons->data[i_259024], c);
					if (!!(LOC13)) goto LA14;
					goto BeforeRet;
				}
				LA14: ;
				res_259029 += ((NI) 1);
			} LA10: ;
		}
	}
	{
		NIM_BOOL LOC18;
		LOC18 = 0;
		LOC18 = sameobjecttree_258866((*a).n, (*b).n, c);
		if (!!(LOC18)) goto LA19;
		goto BeforeRet;
	}
	LA19: ;
	result = NIM_TRUE;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sametuple_258622)(Ttype223847* a, Ttype223847* b, Tsametypeclosure257841* c) {
	NIM_BOOL result;
{	result = 0;
	{
		NI LOC3;
		NI LOC4;
		LOC3 = 0;
		LOC3 = sonslen_226351(a);
		LOC4 = 0;
		LOC4 = sonslen_226351(b);
		if (!(LOC3 == LOC4)) goto LA5;
		result = NIM_TRUE;
		{
			NI i_258641;
			NI HEX3Atmp_258732;
			NI LOC8;
			NI res_258735;
			i_258641 = 0;
			HEX3Atmp_258732 = 0;
			LOC8 = 0;
			LOC8 = sonslen_226351(a);
			HEX3Atmp_258732 = (NI)(LOC8 - ((NI) 1));
			res_258735 = ((NI) 0);
			{
				while (1) {
					Ttype223847* x;
					Ttype223847* y;
					if (!(res_258735 <= HEX3Atmp_258732)) goto LA10;
					i_258641 = res_258735;
					x = (*a).sons->data[i_258641];
					y = (*b).sons->data[i_258641];
					{
						if (!(((*c).flags &(1<<((((NU8) 0))&7)))!=0)) goto LA13;
						x = skiptypes_227167(x, 1050624);
						y = skiptypes_227167(y, 1050624);
					}
					LA13: ;
					result = sametypeaux_258035(x, y, c);
					{
						if (!!(result)) goto LA17;
						goto BeforeRet;
					}
					LA17: ;
					res_258735 += ((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 &(1<<((((NU8) 0))&7)))!=0));
			LA24: ;
			if (!LOC21) goto LA25;
			{
				NI i_258702;
				NI HEX3Atmp_258740;
				NI LOC28;
				NI res_258743;
				i_258702 = 0;
				HEX3Atmp_258740 = 0;
				LOC28 = 0;
				LOC28 = sonslen_226387((*a).n);
				HEX3Atmp_258740 = (NI)(LOC28 - ((NI) 1));
				res_258743 = ((NI) 0);
				{
					while (1) {
						if (!(res_258743 <= HEX3Atmp_258740)) goto LA30;
						i_258702 = res_258743;
						{
							NIM_BOOL LOC33;
							Tsym223841* x;
							Tsym223841* y;
							LOC33 = 0;
							LOC33 = ((*(*(*a).n).kindU.S6.sons->data[i_258702]).kind == ((NU8) 3));
							if (!(LOC33)) goto LA34;
							LOC33 = ((*(*(*b).n).kindU.S6.sons->data[i_258702]).kind == ((NU8) 3));
							LA34: ;
							if (!LOC33) goto LA35;
							x = (*(*(*a).n).kindU.S6.sons->data[i_258702]).kindU.S4.sym;
							y = (*(*(*b).n).kindU.S6.sons->data[i_258702]).kindU.S4.sym;
							result = ((*(*x).name).Sup.id == (*(*y).name).Sup.id);
							{
								if (!!(result)) goto LA39;
								goto LA27;
							}
							LA39: ;
						}
						goto LA31;
						LA35: ;
						{
							internalerror_194172((*(*a).n).info, ((NimStringDesc*) &TMP2740));
						}
						LA31: ;
						res_258743 += ((NI) 1);
					} LA30: ;
				}
			} LA27: ;
		}
		LA25: ;
	}
	LA5: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, samechildrenaux_259048)(Ttype223847* a, Ttype223847* b, Tsametypeclosure257841* c) {
	NIM_BOOL result;
{	result = 0;
	{
		NI LOC3;
		NI LOC4;
		LOC3 = 0;
		LOC3 = sonslen_226351(a);
		LOC4 = 0;
		LOC4 = sonslen_226351(b);
		if (!!((LOC3 == LOC4))) goto LA5;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA5: ;
	result = NIM_TRUE;
	{
		NI i_259067;
		NI HEX3Atmp_259069;
		NI LOC8;
		NI res_259072;
		i_259067 = 0;
		HEX3Atmp_259069 = 0;
		LOC8 = 0;
		LOC8 = sonslen_226351(a);
		HEX3Atmp_259069 = (NI)(LOC8 - ((NI) 1));
		res_259072 = ((NI) 0);
		{
			while (1) {
				if (!(res_259072 <= HEX3Atmp_259069)) goto LA10;
				i_259067 = res_259072;
				result = sametypeornilaux_258044((*a).sons->data[i_259067], (*b).sons->data[i_259067], c);
				{
					if (!!(result)) goto LA13;
					goto BeforeRet;
				}
				LA13: ;
				res_259072 += ((NI) 1);
			} LA10: ;
		}
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sameconstraints_258240)(Tnode223809* a, Tnode223809* b) {
	NIM_BOOL result;
{	result = 0;
	{
		NI LOC3;
		NI LOC4;
		NimStringDesc* LOC7;
		LOC3 = 0;
		LOC3 = len_224098(a);
		LOC4 = 0;
		LOC4 = len_224098(b);
		if (!!((LOC3 == LOC4))) goto LA5;
		LOC7 = 0;
		LOC7 = HEX24_194279(TMP2741);
		internalerror_194191(LOC7);
	}
	LA5: ;
	{
		NI i_258273;
		NI HEX3Atmp_258279;
		NI LOC9;
		NI res_258282;
		i_258273 = 0;
		HEX3Atmp_258279 = 0;
		LOC9 = 0;
		LOC9 = len_224098(a);
		HEX3Atmp_258279 = (LOC9 - 1);
		res_258282 = ((NI) 1);
		{
			while (1) {
				if (!(res_258282 <= HEX3Atmp_258279)) goto LA11;
				i_258273 = res_258282;
				{
					Tnode223809* LOC14;
					Tnode223809* LOC15;
					NIM_BOOL LOC16;
					LOC14 = 0;
					LOC14 = HEX5BHEX5D_224244(a, i_258273);
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_224244(b, i_258273);
					LOC16 = 0;
					LOC16 = exprstructuralequivalent_252149((*(*LOC14).kindU.S4.sym).constraint, (*(*LOC15).kindU.S4.sym).constraint, NIM_FALSE);
					if (!!(LOC16)) goto LA17;
					result = NIM_FALSE;
					goto BeforeRet;
				}
				LA17: ;
				res_258282 += ((NI) 1);
			} LA11: ;
		}
	}
	result = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sametypeaux_258035)(Ttype223847* x, Ttype223847* y, Tsametypeclosure257841* c) {
	NIM_BOOL result;
	Ttype223847* a;
	Ttype223847* b;
{	result = 0;
	{
		if (!(x == y)) goto LA3;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	a = skiptypes_227167(x, 2048);
	b = skiptypes_227167(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: ;
	{
		Ttype223847* lhs;
		Ttype223847* rhs;
		if (!((*x).kind == ((NU8) 11))) goto LA28;
		lhs = skipgenericalias_259119(x);
		rhs = skipgenericalias_259119(y);
		{
			NIM_BOOL LOC32;
			Ttype223847* LOC34;
			Ttype223847* LOC35;
			LOC32 = 0;
			LOC32 = !(((*rhs).kind == ((NU8) 11)));
			if (LOC32) goto LA33;
			LOC34 = 0;
			LOC34 = base_253039(lhs);
			LOC35 = 0;
			LOC35 = base_253039(rhs);
			LOC32 = !((LOC34 == LOC35));
			LA33: ;
			if (!LOC32) goto LA36;
			result = NIM_FALSE;
			goto BeforeRet;
		}
		LA36: ;
		{
			NI i_259696;
			NI HEX3Atmp_259981;
			NI LOC39;
			NI res_259984;
			i_259696 = 0;
			HEX3Atmp_259981 = 0;
			LOC39 = 0;
			LOC39 = len_226369(lhs);
			HEX3Atmp_259981 = (NI)(LOC39 - ((NI) 2));
			res_259984 = ((NI) 1);
			{
				while (1) {
					Ttype223847* ff;
					Ttype223847* aa;
					if (!(res_259984 <= HEX3Atmp_259981)) goto LA41;
					i_259696 = res_259984;
					ff = (*rhs).sons->data[i_259696];
					aa = (*lhs).sons->data[i_259696];
					{
						NIM_BOOL LOC44;
						LOC44 = 0;
						LOC44 = sametypeaux_258035(ff, aa, c);
						if (!!(LOC44)) goto LA45;
						result = NIM_FALSE;
						goto BeforeRet;
					}
					LA45: ;
					res_259984 += ((NI) 1);
				} LA41: ;
			}
		}
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA28: ;
	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):
	{
		result = sameflags_259141(a, b);
	}
	break;
	case ((NU8) 59):
	case ((NU8) 60):
	{
		NIM_BOOL LOC49;
		LOC49 = 0;
		LOC49 = exprstructuralequivalent_252149((*a).n, (*b).n, NIM_FALSE);
		if (!(LOC49)) goto LA50;
		LOC49 = sameflags_259141(a, b);
		LA50: ;
		result = LOC49;
		{
			NIM_BOOL LOC53;
			NIM_BOOL LOC54;
			NI LOC56;
			NI LOC57;
			NI LOC59;
			LOC53 = 0;
			LOC54 = 0;
			LOC54 = result;
			if (!(LOC54)) goto LA55;
			LOC56 = 0;
			LOC56 = len_226369(a);
			LOC57 = 0;
			LOC57 = len_226369(b);
			LOC54 = (LOC56 == LOC57);
			LA55: ;
			LOC53 = LOC54;
			if (!(LOC53)) goto LA58;
			LOC59 = 0;
			LOC59 = len_226369(a);
			LOC53 = (LOC59 == ((NI) 1));
			LA58: ;
			if (!LOC53) goto LA60;
			{
				if (!((*c).reccheck < ((NI) 3))) goto LA64;
				(*c).reccheck += ((NI) 1);
			}
			goto LA62;
			LA64: ;
			{
				{
					NIM_BOOL LOC69;
					LOC69 = 0;
					LOC69 = containsorincl_257872(c, a, b);
					if (!LOC69) goto LA70;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA70: ;
			}
			LA62: ;
			result = sametypeaux_258035((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
		}
		LA60: ;
	}
	break;
	case ((NU8) 17):
	{
		{
			if (!!(((((*a).flags | (*b).flags) &(1<<((((NU8) 8))&31)))!=0))) goto LA75;
			result = ((*a).Sup.id == (*b).Sup.id);
		}
		goto LA73;
		LA75: ;
		{
			{
				NIM_BOOL LOC80;
				NIM_BOOL LOC94;
				LOC80 = 0;
				LOC80 = ((((*a).flags & (*b).flags) &(1<<((((NU8) 8))&31)))!=0);
				if (!(LOC80)) goto LA81;
				LOC80 = ((*(*a).sym).Sup.id == (*(*b).sym).Sup.id);
				LA81: ;
				if (!LOC80) goto LA82;
				{
					if (!((*c).reccheck < ((NI) 3))) goto LA86;
					(*c).reccheck += ((NI) 1);
				}
				goto LA84;
				LA86: ;
				{
					{
						NIM_BOOL LOC91;
						LOC91 = 0;
						LOC91 = containsorincl_257872(c, a, b);
						if (!LOC91) goto LA92;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA92: ;
				}
				LA84: ;
				LOC94 = 0;
				LOC94 = sameobjectstructures_259005(a, b, c);
				if (!(LOC94)) goto LA95;
				LOC94 = sameflags_259141(a, b);
				LA95: ;
				result = LOC94;
			}
			LA82: ;
		}
		LA73: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			if (!((*c).reccheck < ((NI) 3))) goto LA99;
			(*c).reccheck += ((NI) 1);
		}
		goto LA97;
		LA99: ;
		{
			{
				NIM_BOOL LOC104;
				LOC104 = 0;
				LOC104 = containsorincl_257872(c, a, b);
				if (!LOC104) goto LA105;
				result = NIM_TRUE;
				goto BeforeRet;
			}
			LA105: ;
		}
		LA97: ;
		{
			if (!((*c).cmp == ((NU8) 0))) goto LA109;
			{
				NIM_BOOL LOC113;
				LOC113 = 0;
				LOC113 = sameflags_259141(a, b);
				if (!LOC113) goto LA114;
				{
					if (!!(((((*a).flags | (*b).flags) &(1<<((((NU8) 8))&31)))!=0))) goto LA118;
					result = ((*a).Sup.id == (*b).Sup.id);
				}
				goto LA116;
				LA118: ;
				{
					{
						NIM_BOOL LOC123;
						LOC123 = 0;
						LOC123 = ((((*a).flags & (*b).flags) &(1<<((((NU8) 8))&31)))!=0);
						if (!(LOC123)) goto LA124;
						LOC123 = ((*(*a).sym).Sup.id == (*(*b).sym).Sup.id);
						LA124: ;
						if (!LOC123) goto LA125;
						result = sametypeaux_258035((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
					}
					LA125: ;
				}
				LA116: ;
			}
			LA114: ;
		}
		goto LA107;
		LA109: ;
		{
			NIM_BOOL LOC128;
			LOC128 = 0;
			LOC128 = sametypeaux_258035((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
			if (!(LOC128)) goto LA129;
			LOC128 = sameflags_259141(a, b);
			LA129: ;
			result = LOC128;
		}
		LA107: ;
	}
	break;
	case ((NU8) 14):
	case ((NU8) 30):
	{
		NIM_BOOL LOC131;
		LOC131 = 0;
		LOC131 = ((*a).Sup.id == (*b).Sup.id);
		if (!(LOC131)) goto LA132;
		LOC131 = sameflags_259141(a, b);
		LA132: ;
		result = LOC131;
	}
	break;
	case ((NU8) 50):
	{
		result = ((*b).kind == ((NU8) 50));
	}
	break;
	case ((NU8) 18):
	{
		NIM_BOOL LOC145;
		{
			if (!((*c).reccheck < ((NI) 3))) goto LA137;
			(*c).reccheck += ((NI) 1);
		}
		goto LA135;
		LA137: ;
		{
			{
				NIM_BOOL LOC142;
				LOC142 = 0;
				LOC142 = containsorincl_257872(c, a, b);
				if (!LOC142) goto LA143;
				result = NIM_TRUE;
				goto BeforeRet;
			}
			LA143: ;
		}
		LA135: ;
		LOC145 = 0;
		LOC145 = sametuple_258622(a, b, c);
		if (!(LOC145)) goto LA146;
		LOC145 = sameflags_259141(a, b);
		LA146: ;
		result = LOC145;
	}
	break;
	case ((NU8) 8):
	{
		{
			if (!((*c).cmp == ((NU8) 1))) goto LA150;
			result = NIM_FALSE;
		}
		goto LA148;
		LA150: ;
		{
			NIM_BOOL LOC165;
			if (!(((*c).flags &(1<<((((NU8) 2))&7)))!=0)) goto LA153;
			{
				if (!((*c).reccheck < ((NI) 3))) goto LA157;
				(*c).reccheck += ((NI) 1);
			}
			goto LA155;
			LA157: ;
			{
				{
					NIM_BOOL LOC162;
					LOC162 = 0;
					LOC162 = containsorincl_257872(c, a, b);
					if (!LOC162) goto LA163;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA163: ;
			}
			LA155: ;
			LOC165 = 0;
			LOC165 = samechildrenaux_259048(x, y, c);
			if (!(LOC165)) goto LA166;
			LOC165 = sameflags_259141(a, b);
			LA166: ;
			result = LOC165;
		}
		goto LA148;
		LA153: ;
		{
			result = sameflags_259141(a, b);
		}
		LA148: ;
	}
	break;
	case ((NU8) 12):
	{
		NIM_BOOL LOC169;
		LOC169 = 0;
		LOC169 = samechildrenaux_259048(a, b, c);
		if (!(LOC169)) goto LA170;
		LOC169 = sameflags_259141(a, b);
		LA170: ;
		result = LOC169;
		{
			NIM_BOOL LOC173;
			LOC173 = 0;
			LOC173 = result;
			if (!(LOC173)) goto LA174;
			LOC173 = (((*c).flags &(1<<((((NU8) 3))&7)))!=0);
			LA174: ;
			if (!LOC173) goto LA175;
			result = ((*(*a).sym).position == (*(*b).sym).position);
		}
		LA175: ;
	}
	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 LOC194;
		{
			if (!((*c).reccheck < ((NI) 3))) goto LA180;
			(*c).reccheck += ((NI) 1);
		}
		goto LA178;
		LA180: ;
		{
			{
				NIM_BOOL LOC185;
				LOC185 = 0;
				LOC185 = containsorincl_257872(c, a, b);
				if (!LOC185) goto LA186;
				result = NIM_TRUE;
				goto BeforeRet;
			}
			LA186: ;
		}
		LA178: ;
		{
			NIM_BOOL LOC190;
			LOC190 = 0;
			LOC190 = ((*a).kind == ((NU8) 52));
			if (!(LOC190)) goto LA191;
			LOC190 = !(((*a).n == NIM_NIL));
			LA191: ;
			if (!LOC190) goto LA192;
			result = ((*a).n == (*b).n);
			goto BeforeRet;
		}
		LA192: ;
		LOC194 = 0;
		LOC194 = samechildrenaux_259048(a, b, c);
		if (!(LOC194)) goto LA195;
		LOC194 = sameflags_259141(a, b);
		LA195: ;
		result = LOC194;
		{
			NIM_BOOL LOC198;
			NIM_BOOL LOC202;
			NIM_BOOL LOC203;
			NIM_BOOL LOC206;
			LOC198 = 0;
			LOC198 = result;
			if (!(LOC198)) goto LA199;
			LOC198 = ((*a).kind == ((NU8) 25));
			LA199: ;
			if (!LOC198) goto LA200;
			LOC202 = 0;
			LOC203 = 0;
			LOC203 = (((*c).flags &(1<<((((NU8) 1))&7)))!=0);
			if (LOC203) goto LA204;
			LOC203 = ((*a).callconv == (*b).callconv);
			LA204: ;
			LOC202 = LOC203;
			if (!(LOC202)) goto LA205;
			LOC206 = 0;
			LOC206 = !((((*c).flags &(1<<((((NU8) 4))&7)))!=0));
			if (LOC206) goto LA207;
			LOC206 = sameconstraints_258240((*a).n, (*b).n);
			LA207: ;
			LOC202 = LOC206;
			LA205: ;
			result = LOC202;
		}
		LA200: ;
	}
	break;
	case ((NU8) 20):
	{
		NIM_BOOL LOC219;
		NIM_BOOL LOC220;
		{
			if (!((*c).reccheck < ((NI) 3))) goto LA211;
			(*c).reccheck += ((NI) 1);
		}
		goto LA209;
		LA211: ;
		{
			{
				NIM_BOOL LOC216;
				LOC216 = 0;
				LOC216 = containsorincl_257872(c, a, b);
				if (!LOC216) goto LA217;
				result = NIM_TRUE;
				goto BeforeRet;
			}
			LA217: ;
		}
		LA209: ;
		LOC219 = 0;
		LOC220 = 0;
		LOC220 = sametypeornilaux_258044((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
		if (!(LOC220)) goto LA221;
		LOC220 = samevalue_231324((*(*a).n).kindU.S6.sons->data[((NI) 0)], (*(*b).n).kindU.S6.sons->data[((NI) 0)]);
		LA221: ;
		LOC219 = LOC220;
		if (!(LOC219)) goto LA222;
		LOC219 = samevalue_231324((*(*a).n).kindU.S6.sons->data[((NI) 1)], (*(*b).n).kindU.S6.sons->data[((NI) 1)]);
		LA222: ;
		result = LOC219;
	}
	break;
	case ((NU8) 11):
	{
	}
	break;
	case ((NU8) 0):
	{
		result = NIM_FALSE;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, comparetypes_260047)(Ttype223847* x, Ttype223847* y, NU8 cmp, NU8 flags) {
	NIM_BOOL result;
	Tsametypeclosure257841 c;
	result = 0;
	memset((void*)(&c), 0, sizeof(c));
	chckNil((void*)(&c));
	memset((void*)(&c), 0, sizeof(c));
	initsametypeclosure_257863((&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_258035(x, y, (&c));
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, iterovernode_254087)(Intset220056* marker, Tnode223809* n, Ttypeiter253046 iter, TNimObject* closure) {
	NIM_BOOL result;
{	result = 0;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		switch ((*n).kind) {
		case ((NU8) 0) ... ((NU8) 23):
		{
			result = iterovertypeaux_254077(marker, (*n).typ, iter, closure);
		}
		break;
		default:
		{
			{
				NI i_254119;
				NI HEX3Atmp_254122;
				NI LOC8;
				NI res_254125;
				i_254119 = 0;
				HEX3Atmp_254122 = 0;
				LOC8 = 0;
				LOC8 = sonslen_226387(n);
				HEX3Atmp_254122 = (NI)(LOC8 - ((NI) 1));
				res_254125 = ((NI) 0);
				{
					while (1) {
						if (!(res_254125 <= HEX3Atmp_254122)) goto LA10;
						i_254119 = res_254125;
						result = iterovernode_254087(marker, (*n).kindU.S6.sons->data[i_254119], iter, closure);
						{
							if (!result) goto LA13;
							goto BeforeRet;
						}
						LA13: ;
						res_254125 += ((NI) 1);
					} LA10: ;
				}
			}
		}
		break;
		}
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, iterovertypeaux_254077)(Intset220056* marker, Ttype223847* t, Ttypeiter253046 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_220898(marker, (*t).Sup.id);
		if (!!(LOC11)) goto LA12;
		switch ((*t).kind) {
		case ((NU8) 11):
		case ((NU8) 10):
		{
			Ttype223847* LOC15;
			LOC15 = 0;
			LOC15 = lastson_226426(t);
			result = iterovertypeaux_254077(marker, LOC15, iter, closure);
		}
		break;
		default:
		{
			{
				NI i_254176;
				NI HEX3Atmp_254190;
				NI LOC18;
				NI res_254193;
				i_254176 = 0;
				HEX3Atmp_254190 = 0;
				LOC18 = 0;
				LOC18 = sonslen_226351(t);
				HEX3Atmp_254190 = (NI)(LOC18 - ((NI) 1));
				res_254193 = ((NI) 0);
				{
					while (1) {
						if (!(res_254193 <= HEX3Atmp_254190)) goto LA20;
						i_254176 = res_254193;
						result = iterovertypeaux_254077(marker, (*t).sons->data[i_254176], iter, closure);
						{
							if (!result) goto LA23;
							goto BeforeRet;
						}
						LA23: ;
						res_254193 += ((NI) 1);
					} LA20: ;
				}
			}
			{
				if (!!(((*t).n == NIM_NIL))) goto LA27;
				result = iterovernode_254087(marker, (*t).n, iter, closure);
			}
			LA27: ;
		}
		break;
		}
	}
	LA12: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, iterovertype_253062)(Ttype223847* t, Ttypeiter253046 iter, TNimObject* closure) {
	NIM_BOOL result;
	Intset220056 marker;
	result = 0;
	memset((void*)(&marker), 0, sizeof(marker));
	chckNil((void*)(&marker));
	memset((void*)(&marker), 0, sizeof(marker));
	initintset_220927((&marker));
	result = iterovertypeaux_254077((&marker), t, iter, closure);
	return result;
}

N_NIMCALL(NIM_BOOL, containsgenerictypeiter_262225)(Ttype223847* 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;
		{
			Ttype223847* LOC11;
			LOC11 = 0;
			LOC11 = base_253039(t);
			if (!((*LOC11).kind == ((NU8) 0))) goto LA12;
			result = NIM_TRUE;
			goto BeforeRet;
		}
		LA12: ;
		{
			Ttype223847* LOC16;
			NIM_BOOL LOC17;
			LOC16 = 0;
			LOC16 = base_253039(t);
			LOC17 = 0;
			LOC17 = containsgenerictypeiter_262225(LOC16, closure);
			if (!LOC17) goto LA18;
			result = NIM_TRUE;
			goto BeforeRet;
		}
		LA18: ;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA7: ;
	{
		if (!((*t).kind >= ((NU8) 9) && (*t).kind <= ((NU8) 10) || (*t).kind == ((NU8) 12) || (*t).kind >= ((NU8) 51) && (*t).kind <= ((NU8) 58) || (*t).kind == ((NU8) 60))) goto LA22;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA22: ;
	result = NIM_FALSE;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, containsgenerictype_262310)(Ttype223847* t) {
	NIM_BOOL result;
	result = 0;
	result = iterovertype_253062(t, containsgenerictypeiter_262225, NIM_NIL);
	return result;
}

N_NIMCALL(NI64, getordvalue_253178)(Tnode223809* 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_253178((*n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	default:
	{
		localerror_194128((*n).info, ((NU16) 78), ((NimStringDesc*) &TMP2076));
		result = IL64(0);
	}
	break;
	}
	return result;
}

N_NIMCALL(NI64, firstord_253004)(Ttype223847* 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_253004((*t).sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		result = firstord_253004((*t).sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 20):
	{
		result = getordvalue_253178((*(*t).n).kindU.S6.sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 31):
	{
		{
			if (!(intsize_172651 == ((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_226351(t);
			LOC19 = (((NI) 0) < LOC20);
			if (!(LOC19)) goto LA21;
			LOC19 = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
			LA21: ;
			if (!LOC19) goto LA22;
			result = firstord_253004((*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):
	{
		Ttype223847* LOC26;
		LOC26 = 0;
		LOC26 = lastson_226426(t);
		result = firstord_253004(LOC26);
	}
	break;
	case ((NU8) 15):
	{
		{
			NI LOC30;
			Ttype223847* LOC33;
			LOC30 = 0;
			LOC30 = len_226369(t);
			if (!(((NI) 0) < LOC30)) goto LA31;
			LOC33 = 0;
			LOC33 = lastson_226426(t);
			result = firstord_253004(LOC33);
		}
		goto LA28;
		LA31: ;
		{
			NimStringDesc* LOC35;
			LOC35 = 0;
			LOC35 = rawNewString(reprEnum((*t).kind, (&NTI223262))->Sup.len + 24);
appendString(LOC35, ((NimStringDesc*) &TMP2751));
appendString(LOC35, reprEnum((*t).kind, (&NTI223262)));
appendChar(LOC35, 41);
			internalerror_194191(LOC35);
		}
		LA28: ;
	}
	break;
	default:
	{
		NimStringDesc* LOC37;
		LOC37 = 0;
		LOC37 = rawNewString(reprEnum((*t).kind, (&NTI223262))->Sup.len + 24);
appendString(LOC37, ((NimStringDesc*) &TMP2751));
appendString(LOC37, reprEnum((*t).kind, (&NTI223262)));
appendChar(LOC37, 41);
		internalerror_194191(LOC37);
		result = IL64(0);
	}
	break;
	}
	return result;
}

N_NIMCALL(NI64, lastord_253010)(Ttype223847* 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_253010((*t).sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		result = lastord_253010((*t).sons->data[((NI) 0)]);
	}
	break;
	case ((NU8) 20):
	{
		result = getordvalue_253178((*(*t).n).kindU.S6.sons->data[((NI) 1)]);
	}
	break;
	case ((NU8) 31):
	{
		{
			if (!(intsize_172651 == ((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_172651 == ((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_226387((*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):
	{
		Ttype223847* LOC29;
		LOC29 = 0;
		LOC29 = lastson_226426(t);
		result = lastord_253010(LOC29);
	}
	break;
	case ((NU8) 50):
	{
		result = IL64(0);
	}
	break;
	case ((NU8) 15):
	{
		{
			NI LOC34;
			Ttype223847* LOC37;
			LOC34 = 0;
			LOC34 = len_226369(t);
			if (!(((NI) 0) < LOC34)) goto LA35;
			LOC37 = 0;
			LOC37 = lastson_226426(t);
			result = lastord_253010(LOC37);
		}
		goto LA32;
		LA35: ;
		{
			NimStringDesc* LOC39;
			LOC39 = 0;
			LOC39 = rawNewString(reprEnum((*t).kind, (&NTI223262))->Sup.len + 23);
appendString(LOC39, ((NimStringDesc*) &TMP2752));
appendString(LOC39, reprEnum((*t).kind, (&NTI223262)));
appendChar(LOC39, 41);
			internalerror_194191(LOC39);
		}
		LA32: ;
	}
	break;
	default:
	{
		NimStringDesc* LOC41;
		LOC41 = 0;
		LOC41 = rawNewString(reprEnum((*t).kind, (&NTI223262))->Sup.len + 23);
appendString(LOC41, ((NimStringDesc*) &TMP2752));
appendString(LOC41, reprEnum((*t).kind, (&NTI223262)));
appendChar(LOC41, 41);
		internalerror_194191(LOC41);
		result = IL64(0);
	}
	break;
	}
	return result;
}

N_NIMCALL(NI64, lengthord_253016)(Ttype223847* t) {
	NI64 result;
	result = 0;
	switch ((*t).kind) {
	case ((NU8) 35):
	case ((NU8) 34):
	case ((NU8) 31):
	{
		result = lastord_253010(t);
	}
	break;
	case ((NU8) 13):
	case ((NU8) 46):
	case ((NU8) 47):
	{
		result = lengthord_253016((*t).sons->data[((NI) 0)]);
	}
	break;
	default:
	{
		NI64 LOC4;
		NI64 LOC5;
		LOC4 = 0;
		LOC4 = lastord_253010(t);
		LOC5 = 0;
		LOC5 = firstord_253004(t);
		result = (NI64)((NI64)(LOC4 - LOC5) + IL64(1));
	}
	break;
	}
	return result;
}

N_NIMCALL(NIM_BOOL, isordinaltype_253093)(Ttype223847* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 2) || (*t).kind >= ((NU8) 31) && (*t).kind <= ((NU8) 35) || (*t).kind >= ((NU8) 41) && (*t).kind <= ((NU8) 43) || (*t).kind == ((NU8) 1) || (*t).kind == ((NU8) 14));
	if (LOC1) goto LA2;
	LOC3 = 0;
	LOC3 = ((*t).kind == ((NU8) 20) || (*t).kind == ((NU8) 15) || (*t).kind == ((NU8) 46) || (*t).kind == ((NU8) 47) || (*t).kind == ((NU8) 11));
	if (!(LOC3)) goto LA4;
	LOC3 = isordinaltype_253093((*t).sons->data[((NI) 0)]);
	LA4: ;
	LOC1 = LOC3;
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NIM_BOOL, sametype_258092)(Ttype223847* a, Ttype223847* b, NU8 flags) {
	NIM_BOOL result;
	Tsametypeclosure257841 c;
	result = 0;
	memset((void*)(&c), 0, sizeof(c));
	chckNil((void*)(&c));
	memset((void*)(&c), 0, sizeof(c));
	initsametypeclosure_257863((&c));
	c.flags = flags;
	result = sametypeaux_258035(a, b, (&c));
	return result;
}

N_NIMCALL(NIM_BOOL, sameobjecttypes_258785)(Ttype223847* a, Ttype223847* b) {
	NIM_BOOL result;
	result = 0;
	{
		if (!!(((((*a).flags | (*b).flags) &(1<<((((NU8) 8))&31)))!=0))) goto LA3;
		result = ((*a).Sup.id == (*b).Sup.id);
	}
	goto LA1;
	LA3: ;
	{
		{
			NIM_BOOL LOC8;
			Tsametypeclosure257841 c;
			LOC8 = 0;
			LOC8 = ((((*a).flags & (*b).flags) &(1<<((((NU8) 8))&31)))!=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_257863((&c));
			result = sametypeaux_258035(a, b, (&c));
		}
		LA10: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NI, inheritancediff_260091)(Ttype223847* a, Ttype223847* b) {
	NI result;
	Ttype223847* x;
	Ttype223847* 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_227167(x, IL64(211106247215360));
			{
				NIM_BOOL LOC13;
				LOC13 = 0;
				LOC13 = sameobjecttypes_258785(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_227167(y, IL64(211106247215360));
			{
				NIM_BOOL LOC20;
				LOC20 = 0;
				LOC20 = sameobjecttypes_258785(y, a);
				if (!LOC20) goto LA21;
				goto BeforeRet;
			}
			LA21: ;
			y = (*y).sons->data[((NI) 0)];
			result += ((NI) 1);
		} LA17: ;
	}
	result = ((NI) 2147483647);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NI, safeinheritancediff_262388)(Ttype223847* a, Ttype223847* 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_260091(a, b);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, compatibleeffectsaux_262417)(Tnode223809* se, Tnode223809* re) {
	NIM_BOOL result;
{	result = 0;
	{
		if (!re == 0) goto LA3;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	{
		Tnode223809* r_262431;
		r_262431 = 0;
		{
			NI i_262449;
			NI HEX3Atmp_262451;
			NI LOC7;
			NI res_262453;
			i_262449 = 0;
			HEX3Atmp_262451 = 0;
			LOC7 = 0;
			LOC7 = len_224098(re);
			HEX3Atmp_262451 = (LOC7 - 1);
			res_262453 = ((NI) 0);
			{
				while (1) {
					if (!(res_262453 <= HEX3Atmp_262451)) goto LA9;
					i_262449 = res_262453;
					r_262431 = (*re).kindU.S6.sons->data[i_262449];
					{
						{
							Tnode223809* s_262433;
							s_262433 = 0;
							{
								NI i_262439;
								NI HEX3Atmp_262441;
								NI LOC13;
								NI res_262443;
								i_262439 = 0;
								HEX3Atmp_262441 = 0;
								LOC13 = 0;
								LOC13 = len_224098(se);
								HEX3Atmp_262441 = (LOC13 - 1);
								res_262443 = ((NI) 0);
								{
									while (1) {
										if (!(res_262443 <= HEX3Atmp_262441)) goto LA15;
										i_262439 = res_262443;
										s_262433 = (*se).kindU.S6.sons->data[i_262439];
										{
											NI LOC18;
											LOC18 = 0;
											LOC18 = safeinheritancediff_262388((*r_262431).typ, (*s_262433).typ);
											if (!(LOC18 <= ((NI) 0))) goto LA19;
											goto LA10;
										}
										LA19: ;
										res_262443 += ((NI) 1);
									} LA15: ;
								}
							}
						}
						result = NIM_FALSE;
						goto BeforeRet;
					} LA10: ;
					res_262453 += ((NI) 1);
				} LA9: ;
			}
		}
	}
	result = NIM_TRUE;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, compatibleeffects_262489)(Ttype223847* formal, Ttype223847* actual) {
	NIM_BOOL result;
	Tnode223809* 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_194279(TMP2755);
		internalerror_194191(LOC5);
	}
	LA3: ;
	{
		NimStringDesc* LOC10;
		if (!!(((*(*(*actual).n).kindU.S6.sons->data[((NI) 0)]).kind == ((NU8) 152)))) goto LA8;
		LOC10 = 0;
		LOC10 = HEX24_194279(TMP2756);
		internalerror_194191(LOC10);
	}
	LA8: ;
	spec = (*(*formal).n).kindU.S6.sons->data[((NI) 0)];
	{
		NI LOC13;
		Tnode223809* real;
		Tnode223809* se;
		Tnode223809* st;
		LOC13 = 0;
		LOC13 = len_224098(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_224098(real);
				if (!(LOC24 == ((NI) 0))) goto LA25;
				result = NIM_FALSE;
				goto BeforeRet;
			}
			LA25: ;
			result = compatibleeffectsaux_262417(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_224098(real);
				if (!(LOC39 == ((NI) 0))) goto LA40;
				result = NIM_FALSE;
				goto BeforeRet;
			}
			LA40: ;
			result = compatibleeffectsaux_262417(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_253447)(Tsym223841* sym, NU8 prefer) {
	NimStringDesc* result;
	NimStringDesc* LOC1;
	Tnode223809* 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_253469;
		NI HEX3Atmp_253500;
		NI LOC3;
		NI res_253503;
		i_253469 = 0;
		HEX3Atmp_253500 = 0;
		LOC3 = 0;
		LOC3 = sonslen_226387(n);
		HEX3Atmp_253500 = (NI)(LOC3 - ((NI) 1));
		res_253503 = ((NI) 1);
		{
			while (1) {
				Tnode223809* p;
				if (!(res_253503 <= HEX3Atmp_253500)) goto LA5;
				i_253469 = res_253503;
				p = (*n).kindU.S6.sons->data[i_253469];
				{
					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*) &TMP2177));
					LOC10 = 0;
					LOC10 = typetostring_253032((*(*p).kindU.S4.sym).typ, prefer);
					result = resizeString(result, LOC10->Sup.len + 0);
appendString(result, LOC10);
					{
						NI LOC13;
						LOC13 = 0;
						LOC13 = sonslen_226387(n);
						if (!!((i_253469 == (NI)(LOC13 - ((NI) 1))))) goto LA14;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2144));
					}
					LA14: ;
				}
				goto LA6;
				LA8: ;
				{
					internalerror_194191(((NimStringDesc*) &TMP2764));
				}
				LA6: ;
				res_253503 += ((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_253032((*(*n).kindU.S6.sons->data[((NI) 0)]).typ, prefer);
		LOC21 = rawNewString(LOC22->Sup.len + 2);
appendString(LOC21, ((NimStringDesc*) &TMP2177));
appendString(LOC21, LOC22);
		result = resizeString(result, LOC21->Sup.len + 0);
appendString(result, LOC21);
	}
	LA19: ;
	return result;
}

N_NIMCALL(NIM_BOOL, isemptycontainer_262978)(Ttype223847* 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):
	{
		Ttype223847* LOC5;
		LOC5 = 0;
		LOC5 = lastson_226426(t);
		result = isemptycontainer_262978(LOC5);
	}
	break;
	default:
	{
		result = NIM_FALSE;
	}
	break;
	}
	return result;
}

N_NIMCALL(NU8, classify_262913)(Ttype223847* t) {
	NU8 result;
	result = 0;
	{
		if (!(t == NIM_NIL)) goto LA3;
		result = ((NU8) 0);
	}
	goto LA1;
	LA3: ;
	{
		Ttype223847* LOC6;
		LOC6 = 0;
		LOC6 = skiptypes_227167(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(Tnode223809*, skipconv_262935)(Tnode223809* n) {
	Tnode223809* 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_262913((*(*n).kindU.S6.sons->data[((NI) 0)]).typ);
			LOC5 = 0;
			LOC5 = classify_262913((*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_262913((*(*n).kindU.S6.sons->data[((NI) 1)]).typ);
			LOC12 = 0;
			LOC12 = classify_262913((*n).typ);
			if (!(LOC11 == LOC12)) goto LA13;
			result = (*n).kindU.S6.sons->data[((NI) 1)];
		}
		LA13: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(NI64, align_261669)(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_254556)(Ttype223847* 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 &(1<<((((NU8) 2))&31)))!=0));
	LA8: ;
	result = LOC1;
	return result;
}

N_NIMCALL(NI64, computerecsizeaux_261694)(Tnode223809* 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_261694((*n).kindU.S6.sons->data[((NI) 0)], a, curroffset);
		maxsize = IL64(0);
		maxalign = IL64(1);
		{
			NI i_261814;
			NI HEX3Atmp_261850;
			NI LOC3;
			NI res_261853;
			i_261814 = 0;
			HEX3Atmp_261850 = 0;
			LOC3 = 0;
			LOC3 = sonslen_226387(n);
			HEX3Atmp_261850 = (NI)(LOC3 - ((NI) 1));
			res_261853 = ((NI) 1);
			{
				while (1) {
					if (!(res_261853 <= HEX3Atmp_261850)) goto LA5;
					i_261814 = res_261853;
					switch ((*(*n).kindU.S6.sons->data[i_261814]).kind) {
					case ((NU8) 85):
					case ((NU8) 88):
					{
						Tnode223809* LOC7;
						LOC7 = 0;
						LOC7 = lastson_226406((*n).kindU.S6.sons->data[i_261814]);
						res = computerecsizeaux_261694(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_194191(((NimStringDesc*) &TMP2924));
					}
					break;
					}
					res_261853 += ((NI) 1);
				} LA5: ;
			}
		}
		LOC13 = 0;
		LOC13 = align_261669((*curroffset), maxalign);
		(*curroffset) = (NI64)(LOC13 + maxsize);
		LOC14 = 0;
		LOC14 = align_261669(result, maxalign);
		result = (NI64)(LOC14 + maxsize);
		(*a) = maxalign;
	}
	break;
	case ((NU8) 138):
	{
		result = IL64(0);
		maxalign = IL64(1);
		{
			NI i_261838;
			NI HEX3Atmp_261858;
			NI LOC17;
			NI res_261861;
			i_261838 = 0;
			HEX3Atmp_261858 = 0;
			LOC17 = 0;
			LOC17 = sonslen_226387(n);
			HEX3Atmp_261858 = (NI)(LOC17 - ((NI) 1));
			res_261861 = ((NI) 0);
			{
				while (1) {
					NI64 LOC24;
					NI64 LOC25;
					if (!(res_261861 <= HEX3Atmp_261858)) goto LA19;
					i_261838 = res_261861;
					res = computerecsizeaux_261694((*n).kindU.S6.sons->data[i_261838], (&b), curroffset);
					{
						if (!(res < IL64(0))) goto LA22;
						result = res;
						goto BeforeRet;
					}
					LA22: ;
					LOC24 = 0;
					LOC24 = align_261669((*curroffset), b);
					(*curroffset) = (NI64)(LOC24 + res);
					LOC25 = 0;
					LOC25 = align_261669(result, b);
					result = (NI64)(LOC25 + res);
					{
						if (!(maxalign < b)) goto LA28;
						maxalign = b;
					}
					LA28: ;
					res_261861 += ((NI) 1);
				} LA19: ;
			}
		}
		(*a) = maxalign;
	}
	break;
	case ((NU8) 3):
	{
		result = computesizeaux_261686((*(*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_261686)(Ttype223847* 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_172651));
		(*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_172652));
		(*a) = result;
	}
	break;
	case ((NU8) 25):
	{
		{
			if (!((*typ).callconv == ((NU8) 8))) goto LA19;
			result = ((NI64) ((NI)(((NI) 2) * ptrsize_172653)));
		}
		goto LA17;
		LA19: ;
		{
			result = ((NI64) (ptrsize_172653));
		}
		LA17: ;
		(*a) = ((NI64) (ptrsize_172653));
	}
	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):
	{
		Ttype223847* base;
		base = lastson_226426(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_172653));
		}
		LA23: ;
		(*a) = result;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		NI64 elemsize;
		NI64 LOC37;
		elemsize = computesizeaux_261686((*typ).sons->data[((NI) 1)], a);
		{
			if (!(elemsize < IL64(0))) goto LA35;
			result = elemsize;
			goto BeforeRet;
		}
		LA35: ;
		LOC37 = 0;
		LOC37 = lengthord_253016((*typ).sons->data[((NI) 0)]);
		result = (NI64)(LOC37 * elemsize);
	}
	break;
	case ((NU8) 14):
	{
		{
			NI64 LOC41;
			LOC41 = 0;
			LOC41 = firstord_253004(typ);
			if (!(LOC41 < IL64(0))) goto LA42;
			result = IL64(4);
		}
		goto LA39;
		LA42: ;
		{
			length = lastord_253010(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_253016((*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_261669(length, IL64(8));
				if (!(((NI) ((NI64)(LOC76 % IL64(8)))) == ((NI) 0))) goto LA77;
				LOC79 = 0;
				LOC79 = align_261669(length, IL64(8));
				result = (NI64)(LOC79 / IL64(8));
			}
			goto LA62;
			LA77: ;
			{
				NI64 LOC81;
				LOC81 = 0;
				LOC81 = align_261669(length, IL64(8));
				result = (NI64)((NI64)(LOC81 / IL64(8)) + IL64(1));
			}
			LA62: ;
		}
		LA57: ;
		(*a) = result;
	}
	break;
	case ((NU8) 20):
	{
		result = computesizeaux_261686((*typ).sons->data[((NI) 0)], a);
	}
	break;
	case ((NU8) 18):
	{
		result = IL64(0);
		maxalign = IL64(1);
		{
			NI i_261954;
			NI HEX3Atmp_261977;
			NI LOC85;
			NI res_261980;
			i_261954 = 0;
			HEX3Atmp_261977 = 0;
			LOC85 = 0;
			LOC85 = sonslen_226351(typ);
			HEX3Atmp_261977 = (NI)(LOC85 - ((NI) 1));
			res_261980 = ((NI) 0);
			{
				while (1) {
					NI64 LOC92;
					if (!(res_261980 <= HEX3Atmp_261977)) goto LA87;
					i_261954 = res_261980;
					res = computesizeaux_261686((*typ).sons->data[i_261954], a);
					{
						if (!(res < IL64(0))) goto LA90;
						result = res;
						goto BeforeRet;
					}
					LA90: ;
					maxalign = ((maxalign >= (*a)) ? maxalign : (*a));
					LOC92 = 0;
					LOC92 = align_261669(result, (*a));
					result = (NI64)(LOC92 + res);
					res_261980 += ((NI) 1);
				} LA87: ;
			}
		}
		result = align_261669(result, maxalign);
		(*a) = maxalign;
	}
	break;
	case ((NU8) 17):
	{
		{
			if (!!(((*typ).sons->data[((NI) 0)] == NIM_NIL))) goto LA96;
			result = computesizeaux_261686((*typ).sons->data[((NI) 0)], a);
			{
				if (!(result < IL64(0))) goto LA100;
				goto BeforeRet;
			}
			LA100: ;
			maxalign = (*a);
		}
		goto LA94;
		LA96: ;
		{
			NIM_BOOL LOC103;
			LOC103 = 0;
			LOC103 = isobjectwithtypefieldpredicate_254556(typ);
			if (!LOC103) goto LA104;
			result = ((NI64) (intsize_172651));
			maxalign = result;
		}
		goto LA94;
		LA104: ;
		{
			result = IL64(0);
			maxalign = IL64(1);
		}
		LA94: ;
		curroffset = result;
		result = computerecsizeaux_261694((*typ).n, a, (&curroffset));
		{
			if (!(result < IL64(0))) goto LA109;
			goto BeforeRet;
		}
		LA109: ;
		{
			if (!((*a) < maxalign)) goto LA113;
			(*a) = maxalign;
		}
		LA113: ;
		result = align_261669(result, (*a));
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	case ((NU8) 10):
	case ((NU8) 47):
	case ((NU8) 46):
	case ((NU8) 49):
	{
		Ttype223847* LOC116;
		LOC116 = 0;
		LOC116 = lastson_226426(typ);
		result = computesizeaux_261686(LOC116, a);
	}
	break;
	case ((NU8) 8):
	{
		Ttype223847* LOC118;
		LOC118 = 0;
		LOC118 = base_253039(typ);
		result = computesizeaux_261686(LOC118, a);
	}
	break;
	case ((NU8) 30):
	{
		result = IL64(-2);
		goto BeforeRet;
	}
	break;
	default:
	{
		result = IL64(-1);
	}
	break;
	}
	(*typ).size = result;
	(*typ).align = ((NI16) ((*a)));
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NI64, computesize_253184)(Ttype223847* typ) {
	NI64 result;
	NI64 a;
	result = 0;
	a = IL64(1);
	result = computesizeaux_261686(typ, (&a));
	return result;
}

N_NIMCALL(NI64, getsize_253190)(Ttype223847* typ) {
	NI64 result;
	result = 0;
	result = computesize_253184(typ);
	{
		NimStringDesc* LOC5;
		if (!(result < IL64(0))) goto LA3;
		LOC5 = 0;
		LOC5 = rawNewString(reprEnum((*typ).kind, (&NTI223262))->Sup.len + 9);
appendString(LOC5, ((NimStringDesc*) &TMP2925));
appendString(LOC5, reprEnum((*typ).kind, (&NTI223262)));
		internalerror_194191(LOC5);
	}
	LA3: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sametypeornil_258108)(Ttype223847* a, Ttype223847* 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_258092(a, b, flags);
		}
		LA6: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, enumhasholes_253099)(Ttype223847* t) {
	NIM_BOOL result;
	Ttype223847* b;
	NIM_BOOL LOC3;
	result = 0;
	b = t;
	{
		while (1) {
			if (!((*b).kind == ((NU8) 46) || (*b).kind == ((NU8) 47) || (*b).kind == ((NU8) 20) || (*b).kind == ((NU8) 11))) goto LA2;
			b = (*b).sons->data[((NI) 0)];
		} LA2: ;
	}
	LOC3 = 0;
	LOC3 = ((*b).kind == ((NU8) 14));
	if (!(LOC3)) goto LA4;
	LOC3 = (((*b).flags &(1<<((((NU8) 5))&31)))!=0);
	LA4: ;
	result = LOC3;
	return result;
}

N_NIMCALL(NU8, equalparam_258157)(Tsym223841* a, Tsym223841* b) {
	NU8 result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametypeornil_258108((*a).typ, (*b).typ, 4);
		if (!(LOC3)) goto LA4;
		LOC3 = exprstructuralequivalent_252149((*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_252149((*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_253086)(Tnode223809* a, Tnode223809* b) {
	NU8 result;
	NI length;
{	result = 0;
	result = ((NU8) 1);
	length = sonslen_226387(a);
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226387(b);
		if (!!((length == LOC3))) goto LA4;
		result = ((NU8) 0);
	}
	goto LA1;
	LA4: ;
	{
		{
			NI i_258319;
			NI HEX3Atmp_258433;
			NI res_258436;
			i_258319 = 0;
			HEX3Atmp_258433 = 0;
			HEX3Atmp_258433 = (NI)(length - ((NI) 1));
			res_258436 = ((NI) 1);
			{
				while (1) {
					Tsym223841* m;
					Tsym223841* n;
					NU8 LOC10;
					if (!(res_258436 <= HEX3Atmp_258433)) goto LA9;
					i_258319 = res_258436;
					m = (*(*a).kindU.S6.sons->data[i_258319]).kindU.S4.sym;
					n = (*(*b).kindU.S6.sons->data[i_258319]).kindU.S4.sym;
					LOC10 = 0;
					LOC10 = equalparam_258157(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_258436 += ((NI) 1);
				} LA9: ;
			}
		}
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = sametypeornil_258108((*(*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(Ttype223847*, typeallowednode_260870)(Intset220056* marker, Tnode223809* n, NU8 kind, NU8 flags) {
	Ttype223847* result;
{	result = 0;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		result = typeallowedaux_260858(marker, (*n).typ, kind, flags);
		{
			if (!(result == NIM_NIL)) goto LA7;
			switch ((*n).kind) {
			case ((NU8) 0) ... ((NU8) 23):
			{
			}
			break;
			default:
			{
				{
					NI i_260916;
					NI HEX3Atmp_260950;
					NI LOC12;
					NI res_260953;
					i_260916 = 0;
					HEX3Atmp_260950 = 0;
					LOC12 = 0;
					LOC12 = sonslen_226387(n);
					HEX3Atmp_260950 = (NI)(LOC12 - ((NI) 1));
					res_260953 = ((NI) 0);
					{
						while (1) {
							Tnode223809* it;
							if (!(res_260953 <= HEX3Atmp_260950)) goto LA14;
							i_260916 = res_260953;
							it = (*n).kindU.S6.sons->data[i_260916];
							{
								NIM_BOOL LOC17;
								LOC17 = 0;
								LOC17 = ((*it).kind == ((NU8) 139));
								if (!(LOC17)) goto LA18;
								LOC17 = (kind == ((NU8) 10));
								LA18: ;
								if (!LOC17) goto LA19;
								result = (*n).typ;
								goto BeforeRet;
							}
							LA19: ;
							result = typeallowednode_260870(marker, it, kind, flags);
							{
								if (!!((result == NIM_NIL))) goto LA23;
								goto LA11;
							}
							LA23: ;
							res_260953 += ((NI) 1);
						} LA14: ;
					}
				} LA11: ;
			}
			break;
			}
		}
		LA7: ;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, typeallowedaux_260858)(Intset220056* marker, Ttype223847* typ, NU8 kind, NU8 flags_260866) {
	Ttype223847* result;
	Ttype223847* t;
{	result = 0;
	result = NIM_NIL;
	{
		if (!(typ == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = containsorincl_220898(marker, (*typ).Sup.id);
		if (!LOC7) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	t = skiptypes_227167(typ, IL64(211106232576000));
	switch ((*t).kind) {
	case ((NU8) 23):
	{
		Ttype223847* t2;
		{
			if (!(kind == ((NU8) 10))) goto LA13;
			result = t;
			goto BeforeRet;
		}
		LA13: ;
		t2 = skiptypes_227167((*t).sons->data[((NI) 0)], IL64(211106232576000));
		switch ((*t2).kind) {
		case ((NU8) 23):
		{
			{
				if (!!(((flags_260866 &(1<<((((NU8) 1))&7)))!=0))) goto LA18;
				result = t2;
			}
			LA18: ;
		}
		break;
		case ((NU8) 27):
		{
			{
				if (!!((kind == ((NU8) 3)))) goto LA23;
				result = t;
			}
			goto LA21;
			LA23: ;
			{
				result = typeallowedaux_260858(marker, t2, kind, flags_260866);
			}
			LA21: ;
		}
		break;
		default:
		{
			{
				if (!!(((2056 &(1<<((kind)&31)))!=0))) goto LA29;
				result = t;
			}
			goto LA27;
			LA29: ;
			{
				result = typeallowedaux_260858(marker, t2, kind, flags_260866);
			}
			LA27: ;
		}
		break;
		}
	}
	break;
	case ((NU8) 25):
	{
		{
			NI i_261292;
			NI HEX3Atmp_261598;
			NI LOC34;
			NI res_261601;
			i_261292 = 0;
			HEX3Atmp_261598 = 0;
			LOC34 = 0;
			LOC34 = sonslen_226351(t);
			HEX3Atmp_261598 = (NI)(LOC34 - ((NI) 1));
			res_261601 = ((NI) 1);
			{
				while (1) {
					if (!(res_261601 <= HEX3Atmp_261598)) goto LA36;
					i_261292 = res_261601;
					result = typeallowedaux_260858(marker, (*t).sons->data[i_261292], ((NU8) 3), flags_260866);
					{
						if (!!((result == NIM_NIL))) goto LA39;
						goto LA33;
					}
					LA39: ;
					res_261601 += ((NI) 1);
				} LA36: ;
			}
		} LA33: ;
		{
			NIM_BOOL LOC43;
			LOC43 = 0;
			LOC43 = result == 0;
			if (!(LOC43)) goto LA44;
			LOC43 = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
			LA44: ;
			if (!LOC43) goto LA45;
			result = typeallowedaux_260858(marker, (*t).sons->data[((NI) 0)], ((NU8) 11), flags_260866);
		}
		LA45: ;
	}
	break;
	case ((NU8) 8):
	{
		result = NIM_NIL;
	}
	break;
	case ((NU8) 6):
	case ((NU8) 7):
	case ((NU8) 59):
	{
		{
			if (!!(((2056 &(1<<((kind)&31)))!=0))) goto LA51;
			result = t;
		}
		LA51: ;
	}
	break;
	case ((NU8) 3):
	{
		{
			if (!!(((flags_260866 &(1<<((((NU8) 0))&7)))!=0))) goto LA56;
			result = t;
		}
		LA56: ;
	}
	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 LOC61;
			LOC61 = 0;
			LOC61 = (((*t).flags &(1<<((((NU8) 23))&31)))!=0);
			if (LOC61) goto LA62;
			LOC61 = !(((flags_260866 &(1<<((((NU8) 0))&7)))!=0));
			LA62: ;
			if (!!(LOC61)) goto LA63;
			result = t;
		}
		LA63: ;
	}
	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 LA69;
			result = t;
		}
		LA69: ;
	}
	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 LA75;
			result = t;
		}
		LA75: ;
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	{
		Ttype223847* LOC78;
		LOC78 = 0;
		LOC78 = lastson_226426(t);
		result = typeallowedaux_260858(marker, LOC78, kind, flags_260866);
	}
	break;
	case ((NU8) 20):
	{
		{
			Ttype223847* LOC82;
			LOC82 = 0;
			LOC82 = skiptypes_227167((*t).sons->data[((NI) 0)], IL64(211106232576000));
			if (!!(((*LOC82).kind == ((NU8) 2) || (*LOC82).kind == ((NU8) 14) || (*LOC82).kind >= ((NU8) 31) && (*LOC82).kind <= ((NU8) 39) || (*LOC82).kind >= ((NU8) 41) && (*LOC82).kind <= ((NU8) 43)))) goto LA83;
			result = t;
		}
		LA83: ;
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		{
			if (!!((kind == ((NU8) 3)))) goto LA88;
			result = t;
		}
		goto LA86;
		LA88: ;
		{
			result = typeallowedaux_260858(marker, (*t).sons->data[((NI) 0)], ((NU8) 8), flags_260866);
		}
		LA86: ;
	}
	break;
	case ((NU8) 24):
	{
		{
			if (!!(((*(*t).sons->data[((NI) 0)]).kind == ((NU8) 3)))) goto LA94;
			result = typeallowedaux_260858(marker, (*t).sons->data[((NI) 0)], ((NU8) 8), (flags_260866 | 2));
		}
		LA94: ;
	}
	break;
	case ((NU8) 16):
	{
		{
			if (!!(((*(*t).sons->data[((NI) 1)]).kind == ((NU8) 3)))) goto LA99;
			result = typeallowedaux_260858(marker, (*t).sons->data[((NI) 1)], ((NU8) 8), flags_260866);
		}
		LA99: ;
	}
	break;
	case ((NU8) 22):
	{
		{
			if (!(kind == ((NU8) 10))) goto LA104;
			result = t;
		}
		goto LA102;
		LA104: ;
		{
			Ttype223847* LOC107;
			LOC107 = 0;
			LOC107 = lastson_226426(t);
			result = typeallowedaux_260858(marker, LOC107, ((NU8) 8), (flags_260866 | 2));
		}
		LA102: ;
	}
	break;
	case ((NU8) 21):
	{
		Ttype223847* LOC109;
		LOC109 = 0;
		LOC109 = lastson_226426(t);
		result = typeallowedaux_260858(marker, LOC109, ((NU8) 8), (flags_260866 | 2));
	}
	break;
	case ((NU8) 4):
	case ((NU8) 19):
	case ((NU8) 46):
	case ((NU8) 47):
	case ((NU8) 49):
	{
		{
			NI i_261495;
			NI HEX3Atmp_261606;
			NI LOC112;
			NI res_261609;
			i_261495 = 0;
			HEX3Atmp_261606 = 0;
			LOC112 = 0;
			LOC112 = sonslen_226351(t);
			HEX3Atmp_261606 = (NI)(LOC112 - ((NI) 1));
			res_261609 = ((NI) 0);
			{
				while (1) {
					if (!(res_261609 <= HEX3Atmp_261606)) goto LA114;
					i_261495 = res_261609;
					result = typeallowedaux_260858(marker, (*t).sons->data[i_261495], kind, flags_260866);
					{
						if (!!((result == NIM_NIL))) goto LA117;
						goto LA111;
					}
					LA117: ;
					res_261609 += ((NI) 1);
				} LA114: ;
			}
		} LA111: ;
	}
	break;
	case ((NU8) 17):
	case ((NU8) 18):
	{
		NU8 flags;
		{
			NIM_BOOL LOC122;
			NIM_BOOL LOC123;
			LOC122 = 0;
			LOC123 = 0;
			LOC123 = (kind == ((NU8) 10));
			if (!(LOC123)) goto LA124;
			LOC123 = ((*t).kind == ((NU8) 17));
			LA124: ;
			LOC122 = LOC123;
			if (!(LOC122)) goto LA125;
			LOC122 = !(((*t).sons->data[((NI) 0)] == NIM_NIL));
			LA125: ;
			if (!LOC122) goto LA126;
			result = t;
			goto BeforeRet;
		}
		LA126: ;
		flags = (flags_260866 | 1);
		{
			NI i_261564;
			NI HEX3Atmp_261614;
			NI LOC129;
			NI res_261617;
			i_261564 = 0;
			HEX3Atmp_261614 = 0;
			LOC129 = 0;
			LOC129 = sonslen_226351(t);
			HEX3Atmp_261614 = (NI)(LOC129 - ((NI) 1));
			res_261617 = ((NI) 0);
			{
				while (1) {
					if (!(res_261617 <= HEX3Atmp_261614)) goto LA131;
					i_261564 = res_261617;
					result = typeallowedaux_260858(marker, (*t).sons->data[i_261564], kind, flags);
					{
						if (!!((result == NIM_NIL))) goto LA134;
						goto LA128;
					}
					LA134: ;
					res_261617 += ((NI) 1);
				} LA131: ;
			}
		} LA128: ;
		{
			NIM_BOOL LOC138;
			LOC138 = 0;
			LOC138 = result == 0;
			if (!(LOC138)) goto LA139;
			LOC138 = !(((*t).n == NIM_NIL));
			LA139: ;
			if (!LOC138) goto LA140;
			result = typeallowednode_260870(marker, (*t).n, kind, flags);
		}
		LA140: ;
	}
	break;
	case ((NU8) 50):
	{
		result = NIM_NIL;
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(Ttype223847*, typeallowed_261654)(Ttype223847* t, NU8 kind) {
	Ttype223847* result;
	Intset220056 marker;
	result = 0;
	memset((void*)(&marker), 0, sizeof(marker));
	chckNil((void*)(&marker));
	memset((void*)(&marker), 0, sizeof(marker));
	initintset_220927((&marker));
	result = typeallowedaux_260858((&marker), t, kind, 0);
	return result;
}

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

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

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

N_NIMCALL(Ttype223847*, taketype_263006)(Ttype223847* formal, Ttype223847* arg) {
	Ttype223847* result;
	result = 0;
	{
		if (!((*arg).kind == ((NU8) 5))) goto LA3;
		result = formal;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		Ttype223847* a;
		Ttype223847* LOC10;
		LOC6 = 0;
		LOC6 = ((*formal).kind == ((NU8) 27) || (*formal).kind == ((NU8) 48) || (*formal).kind == ((NU8) 24));
		if (!(LOC6)) goto LA7;
		LOC6 = isemptycontainer_262978(arg);
		LA7: ;
		if (!LOC6) goto LA8;
		LOC10 = 0;
		LOC10 = skiptypes_227167(arg, 2048);
		a = copytype_226542(LOC10, (*arg).owner, NIM_FALSE);
		asgnRefNoCycle((void**) (&(*a).sons->data[((*arg).kind == ((NU8) 16) || (*arg).kind == ((NU8) 4))]), (*formal).sons->data[((NI) 0)]);
		result = a;
	}
	goto LA1;
	LA8: ;
	{
		NIM_BOOL LOC12;
		LOC12 = 0;
		LOC12 = ((*formal).kind == ((NU8) 18) || (*formal).kind == ((NU8) 19));
		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(Ttype223847*, baseofdistinct_262320)(Ttype223847* t) {
	Ttype223847* result;
	result = 0;
	{
		if (!((*t).kind == ((NU8) 13))) goto LA3;
		result = (*t).sons->data[((NI) 0)];
	}
	goto LA1;
	LA3: ;
	{
		Ttype223847* parent;
		Ttype223847* it;
		result = copytype_226542(t, (*t).owner, NIM_FALSE);
		parent = NIM_NIL;
		it = result;
		{
			while (1) {
				if (!((*it).kind == ((NU8) 21) || (*it).kind == ((NU8) 22))) goto LA7;
				parent = it;
				it = lastson_226426(it);
			} LA7: ;
		}
		{
			if (!((*it).kind == ((NU8) 13))) goto LA10;
			{
				NimStringDesc* LOC16;
				if (!!(!((parent == NIM_NIL)))) goto LA14;
				LOC16 = 0;
				LOC16 = HEX24_194279(TMP3496);
				internalerror_194191(LOC16);
			}
			LA14: ;
			asgnRefNoCycle((void**) (&(*parent).sons->data[((NI) 0)]), (*it).sons->data[((NI) 0)]);
		}
		LA10: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, skiphiddensubconv_263078)(Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	{
		Ttype223847* formal;
		Ttype223847* arg;
		Ttype223847* dest;
		if (!((*n).kind == ((NU8) 59))) goto LA3;
		formal = (*n).typ;
		result = (*n).kindU.S6.sons->data[((NI) 1)];
		arg = (*result).typ;
		dest = taketype_263006(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_228028(result);
			asgnRefNoCycle((void**) (&(*result).typ), dest);
		}
		LA5: ;
	}
	goto LA1;
	LA3: ;
	{
		result = n;
	}
	LA1: ;
	return result;
}

N_NIMCALL(Tnode223809*, skipconvtaketype_262967)(Tnode223809* n) {
	Tnode223809* result;
	result = 0;
	result = skipconv_262935(n);
	asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
	return result;
}

N_NIMCALL(NIM_BOOL, searchtypenodeforaux_254235)(Tnode223809* n, Ttypepredicate253050 p, Intset220056* marker) {
	NIM_BOOL result;
{	result = 0;
	result = NIM_FALSE;
	switch ((*n).kind) {
	case ((NU8) 138):
	{
		{
			NI i_254254;
			NI HEX3Atmp_254420;
			NI LOC3;
			NI res_254423;
			i_254254 = 0;
			HEX3Atmp_254420 = 0;
			LOC3 = 0;
			LOC3 = sonslen_226387(n);
			HEX3Atmp_254420 = (NI)(LOC3 - ((NI) 1));
			res_254423 = ((NI) 0);
			{
				while (1) {
					if (!(res_254423 <= HEX3Atmp_254420)) goto LA5;
					i_254254 = res_254423;
					result = searchtypenodeforaux_254235((*n).kindU.S6.sons->data[i_254254], p, marker);
					{
						if (!result) goto LA8;
						goto BeforeRet;
					}
					LA8: ;
					res_254423 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 139):
	{
		result = searchtypenodeforaux_254235((*n).kindU.S6.sons->data[((NI) 0)], p, marker);
		{
			if (!result) goto LA13;
			goto BeforeRet;
		}
		LA13: ;
		{
			NI i_254414;
			NI HEX3Atmp_254428;
			NI LOC16;
			NI res_254431;
			i_254414 = 0;
			HEX3Atmp_254428 = 0;
			LOC16 = 0;
			LOC16 = sonslen_226387(n);
			HEX3Atmp_254428 = (NI)(LOC16 - ((NI) 1));
			res_254431 = ((NI) 1);
			{
				while (1) {
					if (!(res_254431 <= HEX3Atmp_254428)) goto LA18;
					i_254414 = res_254431;
					switch ((*(*n).kindU.S6.sons->data[i_254414]).kind) {
					case ((NU8) 85):
					case ((NU8) 88):
					{
						Tnode223809* LOC20;
						LOC20 = 0;
						LOC20 = lastson_226406((*n).kindU.S6.sons->data[i_254414]);
						result = searchtypenodeforaux_254235(LOC20, p, marker);
						{
							if (!result) goto LA23;
							goto BeforeRet;
						}
						LA23: ;
					}
					break;
					default:
					{
						internalerror_194191(((NimStringDesc*) &TMP3565));
					}
					break;
					}
					res_254431 += ((NI) 1);
				} LA18: ;
			}
		}
	}
	break;
	case ((NU8) 3):
	{
		result = searchtypeforaux_254226((*(*n).kindU.S4.sym).typ, p, marker);
	}
	break;
	default:
	{
		internalerror_194172((*n).info, ((NimStringDesc*) &TMP3566));
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, searchtypeforaux_254226)(Ttype223847* t, Ttypepredicate253050 predicate, Intset220056* 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_220898(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):
	{
		result = searchtypeforaux_254226((*t).sons->data[((NI) 0)], predicate, marker);
		{
			if (!!(result)) goto LA17;
			result = searchtypenodeforaux_254235((*t).n, predicate, marker);
		}
		LA17: ;
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	{
		Ttype223847* LOC20;
		LOC20 = 0;
		LOC20 = lastson_226426(t);
		result = searchtypeforaux_254226(LOC20, predicate, marker);
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 19):
	case ((NU8) 18):
	{
		{
			NI i_254490;
			NI HEX3Atmp_254492;
			NI LOC23;
			NI res_254495;
			i_254490 = 0;
			HEX3Atmp_254492 = 0;
			LOC23 = 0;
			LOC23 = sonslen_226351(t);
			HEX3Atmp_254492 = (NI)(LOC23 - ((NI) 1));
			res_254495 = ((NI) 0);
			{
				while (1) {
					if (!(res_254495 <= HEX3Atmp_254492)) goto LA25;
					i_254490 = res_254495;
					result = searchtypeforaux_254226((*t).sons->data[i_254490], predicate, marker);
					{
						if (!result) goto LA28;
						goto BeforeRet;
					}
					LA28: ;
					res_254495 += ((NI) 1);
				} LA25: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, searchtypefor_254514)(Ttype223847* t, Ttypepredicate253050 predicate) {
	NIM_BOOL result;
	Intset220056 marker;
	result = 0;
	memset((void*)(&marker), 0, sizeof(marker));
	chckNil((void*)(&marker));
	memset((void*)(&marker), 0, sizeof(marker));
	initintset_220927((&marker));
	result = searchtypeforaux_254226(t, predicate, (&marker));
	return result;
}

N_NIMCALL(NIM_BOOL, isgcref_254783)(Ttype223847* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*t).kind == ((NU8) 22) || (*t).kind == ((NU8) 24) || (*t).kind == ((NU8) 28));
	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_253154)(Ttype223847* typ) {
	NIM_BOOL result;
	result = 0;
	result = searchtypefor_254514(typ, isgcref_254783);
	return result;
}

N_NIMCALL(Ttype223847*, commonsuperclass_260468)(Ttype223847* a, Ttype223847* b) {
	Ttype223847* result;
	Ttype223847* x;
	Intset220056 ancestors;
	Ttype223847* y;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sameobjecttypes_258785(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_220927((&ancestors));
	{
		while (1) {
			if (!!((x == NIM_NIL))) goto LA7;
			x = skiptypes_227167(x, IL64(211106247215360));
			incl_220856((&ancestors), (*x).Sup.id);
			x = (*x).sons->data[((NI) 0)];
		} LA7: ;
	}
	y = b;
	{
		while (1) {
			if (!!((y == NIM_NIL))) goto LA9;
			y = skiptypes_227167(y, IL64(211106247215360));
			{
				NIM_BOOL LOC12;
				LOC12 = 0;
				LOC12 = contains_220829(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(NIM_BOOL, samebackendtype_260024)(Ttype223847* x, Ttype223847* y) {
	NIM_BOOL result;
	Tsametypeclosure257841 c;
	result = 0;
	memset((void*)(&c), 0, sizeof(c));
	chckNil((void*)(&c));
	memset((void*)(&c), 0, sizeof(c));
	initsametypeclosure_257863((&c));
	c.flags |= ((NU8)1)<<((((NU8) 0))%(sizeof(NU8)*8));
	result = sametypeaux_258035(x, y, (&c));
	return result;
}

N_NIMCALL(NIM_BOOL, ispureobject_253196)(Ttype223847* typ) {
	NIM_BOOL result;
	Ttype223847* 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 = (*t).sons->data[((NI) 0)];
		} LA2: ;
	}
	LOC5 = 0;
	LOC5 = !(((*t).sym == NIM_NIL));
	if (!(LOC5)) goto LA6;
	LOC5 = (((*(*t).sym).flags &(1<<((((NU8) 9))&31)))!=0);
	LA6: ;
	result = LOC5;
	return result;
}

N_NIMCALL(NIM_BOOL, canformacyclenode_254918)(Intset220056* marker, Tnode223809* n, NI startid) {
	NIM_BOOL result;
{	result = 0;
	result = NIM_FALSE;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		result = canformacycleaux_254909(marker, (*n).typ, startid);
		{
			if (!!(result)) goto LA7;
			switch ((*n).kind) {
			case ((NU8) 0) ... ((NU8) 23):
			{
			}
			break;
			default:
			{
				{
					NI i_254949;
					NI HEX3Atmp_254952;
					NI LOC12;
					NI res_254955;
					i_254949 = 0;
					HEX3Atmp_254952 = 0;
					LOC12 = 0;
					LOC12 = sonslen_226387(n);
					HEX3Atmp_254952 = (NI)(LOC12 - ((NI) 1));
					res_254955 = ((NI) 0);
					{
						while (1) {
							if (!(res_254955 <= HEX3Atmp_254952)) goto LA14;
							i_254949 = res_254955;
							result = canformacyclenode_254918(marker, (*n).kindU.S6.sons->data[i_254949], startid);
							{
								if (!result) goto LA17;
								goto BeforeRet;
							}
							LA17: ;
							res_254955 += ((NI) 1);
						} LA14: ;
					}
				}
			}
			break;
			}
		}
		LA7: ;
	}
	LA3: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, canformacycleaux_254909)(Intset220056* marker, Ttype223847* typ, NI startid) {
	NIM_BOOL result;
	Ttype223847* t;
{	result = 0;
	result = NIM_FALSE;
	{
		if (!(typ == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(((*typ).flags &(1<<((((NU8) 4))&31)))!=0)) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	t = skiptypes_227167(typ, IL64(211106232576000));
	{
		if (!(((*t).flags &(1<<((((NU8) 4))&31)))!=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_220898(marker, (*t).Sup.id);
			if (!!(LOC16)) goto LA17;
			{
				NI i_255039;
				NI HEX3Atmp_255081;
				NI LOC20;
				NI res_255084;
				i_255039 = 0;
				HEX3Atmp_255081 = 0;
				LOC20 = 0;
				LOC20 = sonslen_226351(t);
				HEX3Atmp_255081 = (NI)(LOC20 - ((NI) 1));
				res_255084 = ((NI) 0);
				{
					while (1) {
						if (!(res_255084 <= HEX3Atmp_255081)) goto LA22;
						i_255039 = res_255084;
						result = canformacycleaux_254909(marker, (*t).sons->data[i_255039], startid);
						{
							if (!result) goto LA25;
							goto BeforeRet;
						}
						LA25: ;
						res_255084 += ((NI) 1);
					} LA22: ;
				}
			}
			{
				if (!!(((*t).n == NIM_NIL))) goto LA29;
				result = canformacyclenode_254918(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 &(1<<((((NU8) 2))&31)))!=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_253166)(Ttype223847* typ) {
	NIM_BOOL result;
	Intset220056 marker;
	result = 0;
	memset((void*)(&marker), 0, sizeof(marker));
	chckNil((void*)(&marker));
	memset((void*)(&marker), 0, sizeof(marker));
	initintset_220927((&marker));
	result = canformacycleaux_254909((&marker), typ, (*typ).Sup.id);
	return result;
}

N_NIMCALL(NU8, analyseobjectwithtypefieldaux_254637)(Ttype223847* t, Intset220056* 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_254235((*t).n, isobjectwithtypefieldpredicate_254556, marker);
				if (!LOC12) goto LA13;
				result = ((NU8) 2);
				goto BeforeRet;
			}
			LA13: ;
		}
		LA8: ;
		{
			NI i_254680;
			NI HEX3Atmp_254732;
			NI LOC16;
			NI res_254735;
			i_254680 = 0;
			HEX3Atmp_254732 = 0;
			LOC16 = 0;
			LOC16 = sonslen_226351(t);
			HEX3Atmp_254732 = (NI)(LOC16 - ((NI) 1));
			res_254735 = ((NI) 0);
			{
				while (1) {
					if (!(res_254735 <= HEX3Atmp_254732)) goto LA18;
					i_254680 = res_254735;
					res = analyseobjectwithtypefieldaux_254637((*t).sons->data[i_254680], marker);
					{
						if (!(res == ((NU8) 2))) goto LA21;
						result = ((NU8) 2);
						goto BeforeRet;
					}
					LA21: ;
					{
						if (!(res == ((NU8) 1))) goto LA25;
						result = ((NU8) 1);
					}
					LA25: ;
					res_254735 += ((NI) 1);
				} LA18: ;
			}
		}
		{
			if (!(result == ((NU8) 0))) goto LA29;
			{
				NIM_BOOL LOC33;
				LOC33 = 0;
				LOC33 = isobjectwithtypefieldpredicate_254556(t);
				if (!LOC33) goto LA34;
				result = ((NU8) 1);
			}
			LA34: ;
		}
		LA29: ;
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	case ((NU8) 46):
	case ((NU8) 47):
	{
		Ttype223847* LOC37;
		LOC37 = 0;
		LOC37 = lastson_226426(t);
		result = analyseobjectwithtypefieldaux_254637(LOC37, marker);
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 18):
	{
		{
			NI i_254720;
			NI HEX3Atmp_254740;
			NI LOC40;
			NI res_254743;
			i_254720 = 0;
			HEX3Atmp_254740 = 0;
			LOC40 = 0;
			LOC40 = sonslen_226351(t);
			HEX3Atmp_254740 = (NI)(LOC40 - ((NI) 1));
			res_254743 = ((NI) 0);
			{
				while (1) {
					if (!(res_254743 <= HEX3Atmp_254740)) goto LA42;
					i_254720 = res_254743;
					res = analyseobjectwithtypefieldaux_254637((*t).sons->data[i_254720], marker);
					{
						if (!!((res == ((NU8) 0)))) goto LA45;
						result = ((NU8) 2);
						goto BeforeRet;
					}
					LA45: ;
					res_254743 += ((NI) 1);
				} LA42: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, analyseobjectwithtypefield_253216)(Ttype223847* t) {
	NU8 result;
	Intset220056 marker;
	result = 0;
	memset((void*)(&marker), 0, sizeof(marker));
	chckNil((void*)(&marker));
	memset((void*)(&marker), 0, sizeof(marker));
	initintset_220927((&marker));
	result = analyseobjectwithtypefieldaux_254637(t, (&marker));
	return result;
}

N_NIMCALL(NIM_BOOL, ishiddenpointer_254878)(Ttype223847* t) {
	NIM_BOOL result;
	result = 0;
	result = ((*t).kind == ((NU8) 28) || (*t).kind == ((NU8) 24));
	return result;
}

N_NIMCALL(NIM_BOOL, containshiddenpointer_253160)(Ttype223847* typ) {
	NIM_BOOL result;
	result = 0;
	result = searchtypefor_254514(typ, ishiddenpointer_254878);
	return result;
}

static N_INLINE(NIM_BOOL, iscompiletimeonly_262712)(Ttype223847* t) {
	NIM_BOOL result;
	result = 0;
	result = ((*t).kind == ((NU8) 8) || (*t).kind == ((NU8) 59));
	return result;
}

N_NIMCALL(NIM_BOOL, containscompiletimeonly_262733)(Ttype223847* t) {
	NIM_BOOL result;
{	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = iscompiletimeonly_262712(t);
		if (!LOC3) goto LA4;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA4: ;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = HEX3DHEX3D_262739((*t).sons, NIM_NIL);
		if (!!(LOC8)) goto LA9;
		{
			NI i_262869;
			NI HEX3Atmp_262883;
			NI LOC12;
			NI res_262886;
			i_262869 = 0;
			HEX3Atmp_262883 = 0;
			LOC12 = 0;
			LOC12 = sonslen_226351(t);
			HEX3Atmp_262883 = (LOC12 - 1);
			res_262886 = ((NI) 0);
			{
				while (1) {
					if (!(res_262886 <= HEX3Atmp_262883)) goto LA14;
					i_262869 = res_262886;
					{
						NIM_BOOL LOC17;
						LOC17 = 0;
						LOC17 = !(((*t).sons->data[i_262869] == NIM_NIL));
						if (!(LOC17)) goto LA18;
						LOC17 = iscompiletimeonly_262712((*t).sons->data[i_262869]);
						LA18: ;
						if (!LOC17) goto LA19;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA19: ;
					res_262886 += ((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* TMP2738[2];
static TNimNode TMP890[3];
NTI257855.size = sizeof(TY257855);
NTI257855.kind = 18;
NTI257855.base = 0;
NTI257855.flags = 3;
TMP2738[0] = &TMP890[1];
TMP890[1].kind = 1;
TMP890[1].offset = offsetof(TY257855, Field0);
TMP890[1].typ = (&NTI108);
TMP890[1].name = "Field0";
TMP2738[1] = &TMP890[2];
TMP890[2].kind = 1;
TMP890[2].offset = offsetof(TY257855, Field1);
TMP890[2].typ = (&NTI108);
TMP890[2].name = "Field1";
TMP890[0].len = 2; TMP890[0].kind = 2; TMP890[0].sons = &TMP2738[0];
NTI257855.node = &TMP890[0];
NTI257854.size = sizeof(TY257854*);
NTI257854.kind = 24;
NTI257854.base = (&NTI257855);
NTI257854.flags = 2;
NTI257854.marker = TMP2739;
}

