/* Generated by Nim Compiler v0.10.2 */
/*   (c) 2014 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 ttype225852 ttype225852;
typedef struct tidobj200015 tidobj200015;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct ttypeseq225848 ttypeseq225848;
typedef struct tnode225816 tnode225816;
typedef struct tsym225846 tsym225846;
typedef struct tloc225830 tloc225830;
typedef struct trope177009 trope177009;
typedef struct tscope225840 tscope225840;
typedef struct TY225947 TY225947;
typedef struct tinstantiation225836 tinstantiation225836;
typedef struct tstrtable225820 tstrtable225820;
typedef struct tsymseq225818 tsymseq225818;
typedef struct tident200021 tident200021;
typedef struct tlineinfo195539 tlineinfo195539;
typedef struct tlib225834 tlib225834;
typedef struct tnodeseq225810 tnodeseq225810;
typedef struct TY84745 TY84745;
typedef struct tsametypeclosure268067 tsametypeclosure268067;
typedef struct TY268080 TY268080;
typedef struct TY268081 TY268081;
typedef struct intset222056 intset222056;
typedef struct ttrunk222052 ttrunk222052;
typedef struct ttrunkseq222054 ttrunkseq222054;
typedef struct tcell44935 tcell44935;
typedef struct tcellseq44951 tcellseq44951;
typedef struct tgcheap47016 tgcheap47016;
typedef struct tcellset44947 tcellset44947;
typedef struct tpagedesc44943 tpagedesc44943;
typedef struct tmemregion27210 tmemregion27210;
typedef struct tsmallchunk26440 tsmallchunk26440;
typedef struct tllchunk27204 tllchunk27204;
typedef struct tbigchunk26442 tbigchunk26442;
typedef struct tintset26417 tintset26417;
typedef struct ttrunk26413 ttrunk26413;
typedef struct tavlnode27208 tavlnode27208;
typedef struct tgcstat47014 tgcstat47014;
typedef struct TY225936 TY225936;
typedef struct tlistentry127022 tlistentry127022;
typedef struct tbasechunk26438 tbasechunk26438;
typedef struct tfreecell26430 tfreecell26430;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef N_NIMCALL_PTR(void, TY3089) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3094) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3089 marker;
TY3094 deepcopy;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tidobj200015  {
  TNimObject Sup;
NI Id;
};
struct  tloc225830  {
NU8 K;
NU8 S;
NU8 Flags;
ttype225852* T;
trope177009* R;
trope177009* Heaproot;
};
struct  ttype225852  {
  tidobj200015 Sup;
NU8 Kind;
NU8 Callconv;
NU32 Flags;
ttypeseq225848* Sons;
tnode225816* N;
tsym225846* Owner;
tsym225846* Sym;
tsym225846* Destructor;
tsym225846* Deepcopy;
NI64 Size;
NI16 Align;
NI16 Locklevel;
tloc225830 Loc;
};
struct  tstrtable225820  {
NI Counter;
tsymseq225818* Data;
};
struct  tlineinfo195539  {
NI16 Line;
NI16 Col;
NI32 Fileindex;
};
struct  tsym225846  {
  tidobj200015 Sup;
NU8 Kind;
union {
struct {ttypeseq225848* Typeinstcache;
tscope225840* Typscope;
} S1;
struct {TY225947* Procinstcache;
tscope225840* Scope;
} S2;
struct {TY225947* Usedgenerics;
tstrtable225820 Tab;
} S3;
struct {tsym225846* Guard;
} S4;
} kindU;
NU16 Magic;
ttype225852* Typ;
tident200021* Name;
tlineinfo195539 Info;
tsym225846* Owner;
NU32 Flags;
tnode225816* Ast;
NU32 Options;
NI Position;
NI Offset;
tloc225830 Loc;
tlib225834* Annex;
tnode225816* Constraint;
};
struct  tnode225816  {
ttype225852* Typ;
tlineinfo195539 Info;
NU16 Flags;
NU8 Kind;
union {
struct {NI64 Intval;
} S1;
struct {NF Floatval;
} S2;
struct {NimStringDesc* Strval;
} S3;
struct {tsym225846* Sym;
} S4;
struct {tident200021* Ident;
} S5;
struct {tnodeseq225810* Sons;
} S6;
} kindU;
NimStringDesc* Comment;
};
struct  tident200021  {
  tidobj200015 Sup;
NimStringDesc* S;
tident200021* Next;
NI H;
};
typedef NimStringDesc* TY265836[62];
struct TY84745 {
NimStringDesc* Field0;
NI Field1;
};
typedef NimStringDesc* TY225020[10];
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TY268081 {
NI Field0;
NI Field1;
};
struct  tsametypeclosure268067  {
NU8 Cmp;
NI Reccheck;
NU8 Flags;
TY268080* S;
};
typedef N_NIMCALL_PTR(NIM_BOOL, ttypeiter263045) (ttype225852* t, TNimObject* closure);
struct  intset222056  {
NI Counter;
NI Max;
ttrunk222052* Head;
ttrunkseq222054* Data;
};
struct  tcell44935  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq44951  {
NI Len;
NI Cap;
tcell44935** D;
};
struct  tcellset44947  {
NI Counter;
NI Max;
tpagedesc44943* Head;
tpagedesc44943** Data;
};
typedef tsmallchunk26440* TY27222[512];
typedef ttrunk26413* ttrunkbuckets26415[256];
struct  tintset26417  {
ttrunkbuckets26415 Data;
};
struct  tmemregion27210  {
NI Minlargeobj;
NI Maxlargeobj;
TY27222 Freesmallchunks;
tllchunk27204* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk26442* Freechunkslist;
tintset26417 Chunkstarts;
tavlnode27208* Root;
tavlnode27208* Deleted;
tavlnode27208* Last;
tavlnode27208* Freeavlnodes;
};
struct  tgcstat47014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap47016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq44951 Zct;
tcellseq44951 Decstack;
tcellset44947 Cycleroots;
tcellseq44951 Tempstack;
NI Recgclock;
tmemregion27210 Region;
tgcstat47014 Stat;
};
typedef N_NIMCALL_PTR(NIM_BOOL, ttypepredicate263049) (ttype225852* t);
struct  trope177009  {
  TNimObject Sup;
trope177009* Left;
trope177009* Right;
NI Length;
NimStringDesc* Data;
};
struct  tscope225840  {
NI Depthlevel;
tstrtable225820 Symbols;
tnodeseq225810* Usingsyms;
tscope225840* Parent;
};
struct  tinstantiation225836  {
tsym225846* Sym;
ttypeseq225848* Concretetypes;
TY225936* Usedby;
};
struct  tlistentry127022  {
  TNimObject Sup;
tlistentry127022* Prev;
tlistentry127022* Next;
};
struct  tlib225834  {
  tlistentry127022 Sup;
NU8 Kind;
NIM_BOOL Generated;
NIM_BOOL Isoverriden;
trope177009* Name;
tnode225816* Path;
};
typedef NI TY26420[16];
struct  ttrunk222052  {
ttrunk222052* Next;
NI Key;
TY26420 Bits;
};
struct  tpagedesc44943  {
tpagedesc44943* Next;
NI Key;
TY26420 Bits;
};
struct  tbasechunk26438  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk26440  {
  tbasechunk26438 Sup;
tsmallchunk26440* Next;
tsmallchunk26440* Prev;
tfreecell26430* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk27204  {
NI Size;
NI Acc;
tllchunk27204* Next;
};
struct  tbigchunk26442  {
  tbasechunk26438 Sup;
tbigchunk26442* Next;
tbigchunk26442* Prev;
NI Align;
NF Data;
};
struct  ttrunk26413  {
ttrunk26413* Next;
NI Key;
TY26420 Bits;
};
typedef tavlnode27208* TY27214[2];
struct  tavlnode27208  {
TY27214 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  tfreecell26430  {
tfreecell26430* Next;
NI Zerofield;
};
struct ttypeseq225848 {
  TGenericSeq Sup;
  ttype225852* data[SEQ_DECL_SIZE];
};
struct TY225947 {
  TGenericSeq Sup;
  tinstantiation225836* data[SEQ_DECL_SIZE];
};
struct tsymseq225818 {
  TGenericSeq Sup;
  tsym225846* data[SEQ_DECL_SIZE];
};
struct tnodeseq225810 {
  TGenericSeq Sup;
  tnode225816* data[SEQ_DECL_SIZE];
};
struct TY268080 {
  TGenericSeq Sup;
  TY268081 data[SEQ_DECL_SIZE];
};
struct ttrunkseq222054 {
  TGenericSeq Sup;
  ttrunk222052* data[SEQ_DECL_SIZE];
};
struct TY225936 {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
static N_INLINE(NIM_BOOL, isintlit_263386)(ttype225852* 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);
N_NIMCALL(NimStringDesc*, typetostring_263031)(ttype225852* typ, NU8 prefer);
static N_INLINE(NI, sonslen_226255)(ttype225852* n);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(ttype225852*, base_263038)(ttype225852* t);
N_NIMCALL(NI, len_230005)(ttype225852* n);
N_NIMCALL(void, internalerror_198006)(NimStringDesc* errmsg);
N_NIMCALL(NimStringDesc*, HEX24_198126)(TY84745 x_198130);
N_NIMCALL(NimStringDesc*, rendertree_250058)(tnode225816* n, NU8 renderflags);
N_NIMCALL(NimStringDesc*, rangetostr_265688)(tnode225816* n);
N_NIMCALL(NimStringDesc*, valuetostring_265636)(tnode225816* a);
N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f);
static N_INLINE(NI, sonslen_226249)(tnode225816* n);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newlen);
static N_INLINE(void, addsep_96466)(NimStringDesc** dest, NimStringDesc* sep, NI startlen);
N_NIMCALL(NimStringDesc*, HEX24_228488)(NI16 x);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(NI64, firstord_263004)(ttype225852* t);
N_NIMCALL(NI64, getordvalue_263187)(tnode225816* n);
N_NIMCALL(void, localerror_197955)(tlineinfo195539 info, NU16 msg, NimStringDesc* arg);
static N_INLINE(ttype225852*, lastson_226267)(ttype225852* n);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e_80907, TNimType* typ);
N_NIMCALL(NI64, lastord_263010)(ttype225852* t);
N_NIMCALL(NI64, lengthord_263016)(ttype225852* t);
N_NIMCALL(NIM_BOOL, isordinaltype_263092)(ttype225852* t);
N_NIMCALL(void, initsametypeclosure_268089)(tsametypeclosure268067* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(NIM_BOOL, sametypeaux_268279)(ttype225852* x, ttype225852* y, tsametypeclosure268067* c);
N_NIMCALL(ttype225852*, skiptypes_230245)(ttype225852* t, NU64 kinds);
N_NIMCALL(ttype225852*, skipgenericalias_269619)(ttype225852* t);
N_NIMCALL(NIM_BOOL, isgenericalias_269591)(ttype225852* t);
static N_INLINE(NIM_BOOL, sameflags_269641)(ttype225852* a, ttype225852* b);
N_NIMCALL(NIM_BOOL, exprstructuralequivalent_261184)(tnode225816* a, tnode225816* b);
N_NIMCALL(NIM_BOOL, containsorincl_268098)(tsametypeclosure268067* c, ttype225852* a, ttype225852* b);
static N_INLINE(NIM_BOOL, contains_268119)(TY268081* a_268125, NI a_268125Len0, TY268081 item_268128);
static N_INLINE(NI, find_268131)(TY268081* a_268136, NI a_268136Len0, TY268081 item_268138);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_151641)(TY268081 x_151645, TY268081 y_151647);
N_NIMCALL(void, TMP2665)(void* p, NI op);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(NIM_BOOL, sameobjectstructures_269509)(ttype225852* a, ttype225852* b, tsametypeclosure268067* c);
N_NIMCALL(NIM_BOOL, sametypeornilaux_268288)(ttype225852* a, ttype225852* b, tsametypeclosure268067* c);
N_NIMCALL(NIM_BOOL, sameobjecttree_269241)(tnode225816* a, tnode225816* b, tsametypeclosure268067* c);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(NIM_BOOL, sametuple_269074)(ttype225852* a, ttype225852* b, tsametypeclosure268067* c);
N_NIMCALL(NIM_BOOL, samechildrenaux_269550)(ttype225852* a, ttype225852* b, tsametypeclosure268067* c);
N_NIMCALL(NIM_BOOL, sameconstraints_268527)(tnode225816* a, tnode225816* b);
static N_INLINE(NI, len_226364)(tnode225816* n);
static N_INLINE(tnode225816*, HEX5BHEX5D_226698)(tnode225816* n, NI i);
N_NIMCALL(NIM_BOOL, samevalue_235350)(tnode225816* a, tnode225816* b);
N_NIMCALL(NIM_BOOL, iterovertype_263061)(ttype225852* t, ttypeiter263045 iter, TNimObject* closure);
N_NIMCALL(void, initintset_222950)(intset222056* Result);
N_NIMCALL(NIM_BOOL, iterovertypeaux_264289)(intset222056* marker, ttype225852* t, ttypeiter263045 iter, TNimObject* closure);
N_NIMCALL(NIM_BOOL, containsorincl_222916)(intset222056* s, NI key);
N_NIMCALL(NIM_BOOL, iterovernode_264299)(intset222056* marker, tnode225816* n, ttypeiter263045 iter, TNimObject* closure);
N_NIMCALL(NIM_BOOL, containsgenerictypeiter_272826)(ttype225852* t, TNimObject* closure);
N_NIMCALL(NIM_BOOL, compatibleeffectsaux_273061)(tnode225816* se, tnode225816* re);
N_NIMCALL(NI, safeinheritancediff_273032)(ttype225852* a, ttype225852* b);
N_NIMCALL(NI, inheritancediff_270588)(ttype225852* a, ttype225852* b);
N_NIMCALL(NIM_BOOL, sameobjecttypes_269146)(ttype225852* a, ttype225852* b);
N_NIMCALL(ttype225852*, elemtype_263656)(ttype225852* t);
N_NIMCALL(NU8, classify_273705)(ttype225852* t);
N_NIMCALL(NI64, computesize_263193)(ttype225852* typ);
N_NIMCALL(NI64, computesizeaux_272273)(ttype225852* typ, NI64* a);
N_NIMCALL(NI64, align_272256)(NI64 address, NI64 alignment);
N_NIMCALL(NIM_BOOL, isobjectwithtypefieldpredicate_264806)(ttype225852* t);
N_NIMCALL(NI64, computerecsizeaux_272281)(tnode225816* n, NI64* a, NI64* curroffset);
static N_INLINE(tnode225816*, lastson_226261)(tnode225816* n);
N_NIMCALL(NU8, equalparam_268431)(tsym225846* a, tsym225846* b);
N_NIMCALL(NIM_BOOL, sametypeornil_268367)(ttype225852* a, ttype225852* b, NU8 flags);
N_NIMCALL(NIM_BOOL, sametype_268351)(ttype225852* a, ttype225852* b, NU8 flags);
N_NIMCALL(NIM_BOOL, typeallowedaux_271468)(intset222056* marker, ttype225852* typ, NU8 kind, NU8 flags_271476);
N_NIMCALL(NIM_BOOL, typeallowednode_271480)(intset222056* marker, tnode225816* n, NU8 kind, NU8 flags);
N_NIMCALL(void, incl_222869)(intset222056* s, NI key);
N_NIMCALL(NIM_BOOL, contains_222837)(intset222056 s, NI key);
N_NIMCALL(ttype225852*, copytype_226195)(ttype225852* t, tsym225846* owner, NIM_BOOL keepid);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tcell44935*, usrtocell_48646)(void* usr);
static N_INLINE(void, rtladdzct_50204)(tcell44935* c);
N_NOINLINE(void, addzct_48617)(tcellseq44951* s, tcell44935* c);
N_NIMCALL(tnode225816*, skipconv_273732)(tnode225816* n);
N_NIMCALL(NIM_BOOL, searchtypefor_264764)(ttype225852* t, ttypepredicate263049 predicate);
N_NIMCALL(NIM_BOOL, searchtypeforaux_264462)(ttype225852* t, ttypepredicate263049 predicate, intset222056* marker);
N_NIMCALL(NIM_BOOL, searchtypenodeforaux_264471)(tnode225816* n, ttypepredicate263049 p, intset222056* marker);
N_NIMCALL(void, internalerror_197987)(tlineinfo195539 info, NimStringDesc* errmsg);
N_NIMCALL(NIM_BOOL, isgcref_265037)(ttype225852* t);
N_NIMCALL(NIM_BOOL, canformacycleaux_265169)(intset222056* marker, ttype225852* typ, NI startid);
N_NIMCALL(NIM_BOOL, canformacyclenode_265178)(intset222056* marker, tnode225816* n, NI startid);
N_NIMCALL(NU8, analyseobjectwithtypefieldaux_264885)(ttype225852* t, intset222056* marker);
static N_INLINE(NIM_BOOL, iscompiletimeonly_273466)(ttype225852* t);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_273497)(ttypeseq225848* x_273503, ttypeseq225848* y_273508);
STRING_LITERAL(TMP1984, "", 0);
STRING_LITERAL(TMP1985, " literal(", 9);
STRING_LITERAL(TMP1986, ")", 1);
STRING_LITERAL(TMP1987, "None", 4);
STRING_LITERAL(TMP1988, "bool", 4);
STRING_LITERAL(TMP1989, "Char", 4);
STRING_LITERAL(TMP1990, "empty", 5);
STRING_LITERAL(TMP1991, "Array Constructor [$1]", 22);
STRING_LITERAL(TMP1992, "nil", 3);
STRING_LITERAL(TMP1993, "expr", 4);
STRING_LITERAL(TMP1994, "stmt", 4);
STRING_LITERAL(TMP1995, "typeDesc", 8);
STRING_LITERAL(TMP1996, "GenericInvokation", 17);
STRING_LITERAL(TMP1997, "GenericBody", 11);
STRING_LITERAL(TMP1998, "GenericInst", 11);
STRING_LITERAL(TMP1999, "GenericParam", 12);
STRING_LITERAL(TMP2000, "distinct $1", 11);
STRING_LITERAL(TMP2001, "enum", 4);
STRING_LITERAL(TMP2002, "ordinal[$1]", 11);
STRING_LITERAL(TMP2003, "array[$1, $2]", 13);
STRING_LITERAL(TMP2004, "object", 6);
STRING_LITERAL(TMP2005, "tuple", 5);
STRING_LITERAL(TMP2006, "set[$1]", 7);
STRING_LITERAL(TMP2007, "range[$1]", 9);
STRING_LITERAL(TMP2008, "ptr ", 4);
STRING_LITERAL(TMP2009, "ref ", 4);
STRING_LITERAL(TMP2010, "var ", 4);
STRING_LITERAL(TMP2011, "seq[$1]", 7);
STRING_LITERAL(TMP2012, "proc", 4);
STRING_LITERAL(TMP2013, "pointer", 7);
STRING_LITERAL(TMP2014, "OpenArray[$1]", 13);
STRING_LITERAL(TMP2015, "string", 6);
STRING_LITERAL(TMP2016, "CString", 7);
STRING_LITERAL(TMP2017, "Forward", 7);
STRING_LITERAL(TMP2018, "int", 3);
STRING_LITERAL(TMP2019, "int8", 4);
STRING_LITERAL(TMP2020, "int16", 5);
STRING_LITERAL(TMP2021, "int32", 5);
STRING_LITERAL(TMP2022, "int64", 5);
STRING_LITERAL(TMP2023, "float", 5);
STRING_LITERAL(TMP2024, "float32", 7);
STRING_LITERAL(TMP2025, "float64", 7);
STRING_LITERAL(TMP2026, "float128", 8);
STRING_LITERAL(TMP2027, "uint", 4);
STRING_LITERAL(TMP2028, "uint8", 5);
STRING_LITERAL(TMP2029, "uint16", 6);
STRING_LITERAL(TMP2030, "uint32", 6);
STRING_LITERAL(TMP2031, "uint64", 6);
STRING_LITERAL(TMP2032, "bignum", 6);
STRING_LITERAL(TMP2033, "const ", 6);
STRING_LITERAL(TMP2034, "!", 1);
STRING_LITERAL(TMP2035, "varargs[$1]", 11);
STRING_LITERAL(TMP2036, "iter[$1]", 8);
STRING_LITERAL(TMP2037, "Error Type", 10);
STRING_LITERAL(TMP2038, "BuiltInTypeClass", 16);
STRING_LITERAL(TMP2039, "UserTypeClass", 13);
STRING_LITERAL(TMP2040, "UserTypeClassInst", 17);
STRING_LITERAL(TMP2041, "CompositeTypeClass", 18);
STRING_LITERAL(TMP2042, "and", 3);
STRING_LITERAL(TMP2043, "or", 2);
STRING_LITERAL(TMP2044, "not", 3);
STRING_LITERAL(TMP2045, "any", 3);
STRING_LITERAL(TMP2046, "static", 6);
STRING_LITERAL(TMP2047, "TypeFromExpr", 12);
STRING_LITERAL(TMP2048, "FieldAccessor", 13);
NIM_CONST TY265836 typetostr_265835 = {((NimStringDesc*) &TMP1987),
((NimStringDesc*) &TMP1988),
((NimStringDesc*) &TMP1989),
((NimStringDesc*) &TMP1990),
((NimStringDesc*) &TMP1991),
((NimStringDesc*) &TMP1992),
((NimStringDesc*) &TMP1993),
((NimStringDesc*) &TMP1994),
((NimStringDesc*) &TMP1995),
((NimStringDesc*) &TMP1996),
((NimStringDesc*) &TMP1997),
((NimStringDesc*) &TMP1998),
((NimStringDesc*) &TMP1999),
((NimStringDesc*) &TMP2000),
((NimStringDesc*) &TMP2001),
((NimStringDesc*) &TMP2002),
((NimStringDesc*) &TMP2003),
((NimStringDesc*) &TMP2004),
((NimStringDesc*) &TMP2005),
((NimStringDesc*) &TMP2006),
((NimStringDesc*) &TMP2007),
((NimStringDesc*) &TMP2008),
((NimStringDesc*) &TMP2009),
((NimStringDesc*) &TMP2010),
((NimStringDesc*) &TMP2011),
((NimStringDesc*) &TMP2012),
((NimStringDesc*) &TMP2013),
((NimStringDesc*) &TMP2014),
((NimStringDesc*) &TMP2015),
((NimStringDesc*) &TMP2016),
((NimStringDesc*) &TMP2017),
((NimStringDesc*) &TMP2018),
((NimStringDesc*) &TMP2019),
((NimStringDesc*) &TMP2020),
((NimStringDesc*) &TMP2021),
((NimStringDesc*) &TMP2022),
((NimStringDesc*) &TMP2023),
((NimStringDesc*) &TMP2024),
((NimStringDesc*) &TMP2025),
((NimStringDesc*) &TMP2026),
((NimStringDesc*) &TMP2027),
((NimStringDesc*) &TMP2028),
((NimStringDesc*) &TMP2029),
((NimStringDesc*) &TMP2030),
((NimStringDesc*) &TMP2031),
((NimStringDesc*) &TMP2032),
((NimStringDesc*) &TMP2033),
((NimStringDesc*) &TMP2034),
((NimStringDesc*) &TMP2035),
((NimStringDesc*) &TMP2036),
((NimStringDesc*) &TMP2037),
((NimStringDesc*) &TMP2038),
((NimStringDesc*) &TMP2039),
((NimStringDesc*) &TMP2040),
((NimStringDesc*) &TMP2041),
((NimStringDesc*) &TMP2042),
((NimStringDesc*) &TMP2043),
((NimStringDesc*) &TMP2044),
((NimStringDesc*) &TMP2045),
((NimStringDesc*) &TMP2046),
((NimStringDesc*) &TMP2047),
((NimStringDesc*) &TMP2048)}
;
STRING_LITERAL(TMP2049, "int literal(", 12);
STRING_LITERAL(TMP2050, ", ", 2);
STRING_LITERAL(TMP2051, "typedesc", 8);
STRING_LITERAL(TMP2052, "typedesc[", 9);
STRING_LITERAL(TMP2053, "]", 1);
STRING_LITERAL(TMP2055, "compiler/types.nim", 18);
NIM_CONST TY84745 TMP2054 = {((NimStringDesc*) &TMP2055),
442}
;
STRING_LITERAL(TMP2056, "static[", 7);
STRING_LITERAL(TMP2057, "(", 1);
NIM_CONST TY84745 TMP2058 = {((NimStringDesc*) &TMP2055),
446}
;
STRING_LITERAL(TMP2059, "var", 3);
STRING_LITERAL(TMP2060, "ref", 3);
STRING_LITERAL(TMP2061, "ptr", 3);
STRING_LITERAL(TMP2062, "seq", 3);
STRING_LITERAL(TMP2063, "array", 5);
STRING_LITERAL(TMP2064, "set", 3);
STRING_LITERAL(TMP2065, "range", 5);
STRING_LITERAL(TMP2066, "distinct", 8);
STRING_LITERAL(TMP2067, "openarray", 9);
STRING_LITERAL(TMP2068, "[", 1);
STRING_LITERAL(TMP2069, " and ", 5);
STRING_LITERAL(TMP2070, " or ", 4);
STRING_LITERAL(TMP2071, "not ", 4);
NIM_CONST TY84745 TMP2072 = {((NimStringDesc*) &TMP2055),
477}
;
STRING_LITERAL(TMP2073, "array[", 6);
STRING_LITERAL(TMP2074, "<invalid value>", 15);
STRING_LITERAL(TMP2075, "..", 2);
STRING_LITERAL(TMP2076, "Array constructor[", 18);
STRING_LITERAL(TMP2077, "seq[", 4);
STRING_LITERAL(TMP2078, "ordinal[", 8);
STRING_LITERAL(TMP2079, "set[", 4);
STRING_LITERAL(TMP2080, "openarray[", 10);
STRING_LITERAL(TMP2081, "distinct ", 9);
STRING_LITERAL(TMP2082, "tuple[", 6);
STRING_LITERAL(TMP2083, ": ", 2);
STRING_LITERAL(TMP2084, "range ", 6);
STRING_LITERAL(TMP2085, "iterator (", 10);
STRING_LITERAL(TMP2086, "proc (", 6);
extern NIM_CONST TY225020 callingconvtostr_225019;
STRING_LITERAL(TMP2097, "noSideEffect", 12);
STRING_LITERAL(TMP2098, "gcsafe", 6);
STRING_LITERAL(TMP2099, "locks: ", 7);
STRING_LITERAL(TMP2102, "{.", 2);
STRING_LITERAL(TMP2103, ".}", 2);
STRING_LITERAL(TMP2104, "shared ", 7);
STRING_LITERAL(TMP2105, " not nil", 8);
STRING_LITERAL(TMP2638, "invalid kind for first(", 23);
STRING_LITERAL(TMP2639, "invalid kind for last(", 22);
NIM_CONST TY84745 TMP2666 = {((NimStringDesc*) &TMP2055),
713}
;
NIM_CONST TY84745 TMP2680 = {((NimStringDesc*) &TMP2055),
1337}
;
NIM_CONST TY84745 TMP2681 = {((NimStringDesc*) &TMP2055),
1338}
;
STRING_LITERAL(TMP2688, "getProcHeader", 13);
STRING_LITERAL(TMP2832, "computeRecSizeAux(record case branch)", 37);
STRING_LITERAL(TMP2833, "getSize: ", 9);
NIM_CONST TY84745 TMP3227 = {((NimStringDesc*) &TMP2055),
1314}
;
STRING_LITERAL(TMP3277, "searchTypeNodeForAux(record case branch)", 40);
STRING_LITERAL(TMP3278, "searchTypeNodeForAux()", 22);
extern NI intsize_174610;
extern TNimType NTI225258; /* TTypeKind */
TNimType NTI268081; /* tuple[a: int, b: int] */
extern TNimType NTI108; /* int */
TNimType NTI268080; /* seq[tuple[a: int, b: int]] */
extern NI floatsize_174611;
extern NI ptrsize_174612;
extern tgcheap47016 gch_47044;

static N_INLINE(NIM_BOOL, isintlit_263386)(ttype225852* 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)), (NI32)((*src).Sup.len + 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[((NI32)((*dest).Sup.len + 1))- 0] = 0;
	(*dest).Sup.len += 1;
}

static N_INLINE(NI, sonslen_226255)(ttype225852* n) {
	NI result;
	result = 0;
	{
		if (!(*n).Sons == 0) goto LA3;
		result = 0;
	}
	goto LA1;
	LA3: ;
	{
		result = (*n).Sons->Sup.len;
	}
	LA1: ;
	return result;
}

N_NIMCALL(ttype225852*, base_263038)(ttype225852* t) {
	ttype225852* result;
	result = 0;
	result = (*t).Sons->data[0];
	return result;
}

N_NIMCALL(NimStringDesc*, valuetostring_265636)(tnode225816* 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*) &TMP2074));
	}
	break;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, rangetostr_265688)(tnode225816* n) {
	NimStringDesc* result;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = valuetostring_265636((*n).kindU.S6.Sons->data[0]);
	LOC3 = 0;
	LOC3 = valuetostring_265636((*n).kindU.S6.Sons->data[1]);
	LOC1 = rawNewString(LOC2->Sup.len + LOC3->Sup.len + 2);
appendString(LOC1, LOC2);
appendString(LOC1, ((NimStringDesc*) &TMP2075));
appendString(LOC1, LOC3);
	result = LOC1;
	return result;
}

static N_INLINE(NI, sonslen_226249)(tnode225816* n) {
	NI result;
	result = 0;
	{
		if (!(*n).kindU.S6.Sons == 0) goto LA3;
		result = 0;
	}
	goto LA1;
	LA3: ;
	{
		result = (*n).kindU.S6.Sons->Sup.len;
	}
	LA1: ;
	return result;
}

static N_INLINE(void, addsep_96466)(NimStringDesc** dest, NimStringDesc* sep, NI startlen) {
	{
		if (!(startlen < (*dest)->Sup.len)) goto LA3;
		(*dest) = resizeString((*dest), sep->Sup.len + 0);
appendString((*dest), sep);
	}
	LA3: ;
}

N_NIMCALL(NimStringDesc*, typetostring_263031)(ttype225852* typ, NU8 prefer) {
	NimStringDesc* result;
	ttype225852* t;
	result = 0;
	t = typ;
	result = copyString(((NimStringDesc*) &TMP1984));
	{
		if (!(t == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		NIM_BOOL LOC8;
		LOC7 = 0;
		LOC8 = 0;
		LOC8 = ((9 &(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_263386(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*) &TMP1985));
appendString(LOC19, LOC20);
appendString(LOC19, ((NimStringDesc*) &TMP1986));
			result = LOC19;
			goto BeforeRet;
		}
		LA17: ;
		{
			NIM_BOOL LOC23;
			LOC23 = 0;
			LOC23 = (prefer == ((NU8) 0));
			if (LOC23) goto LA24;
			LOC23 = (*(*t).Sym).Owner == 0;
			LA24: ;
			if (!LOC23) goto LA25;
			result = copyString((*(*(*t).Sym).Name).S);
			goto BeforeRet;
		}
		goto LA21;
		LA25: ;
		{
			NimStringDesc* LOC28;
			LOC28 = 0;
			LOC28 = rawNewString((*(*(*(*t).Sym).Owner).Name).S->Sup.len + (*(*(*t).Sym).Name).S->Sup.len + 1);
appendString(LOC28, (*(*(*(*t).Sym).Owner).Name).S);
appendChar(LOC28, 46);
appendString(LOC28, (*(*(*t).Sym).Name).S);
			result = LOC28;
			goto BeforeRet;
		}
		LA21: ;
	}
	LA11: ;
	switch ((*t).Kind) {
	case ((NU8) 31):
	{
		{
			NIM_BOOL LOC32;
			NIM_BOOL LOC33;
			LOC32 = 0;
			LOC33 = 0;
			LOC33 = isintlit_263386(t);
			LOC32 = !(LOC33);
			if (LOC32) goto LA34;
			LOC32 = (prefer == ((NU8) 2));
			LA34: ;
			if (!LOC32) goto LA35;
			result = copyString(typetostr_265835[((*t).Kind)- 0]);
		}
		goto LA30;
		LA35: ;
		{
			NimStringDesc* LOC38;
			NimStringDesc* LOC39;
			LOC38 = 0;
			LOC39 = 0;
			LOC39 = nimInt64ToStr((*(*t).N).kindU.S1.Intval);
			LOC38 = rawNewString(LOC39->Sup.len + 13);
appendString(LOC38, ((NimStringDesc*) &TMP2049));
appendString(LOC38, LOC39);
appendString(LOC38, ((NimStringDesc*) &TMP1986));
			result = LOC38;
		}
		LA30: ;
	}
	break;
	case ((NU8) 10):
	case ((NU8) 11):
	case ((NU8) 9):
	{
		NimStringDesc* LOC41;
		NimStringDesc* LOC42;
		LOC41 = 0;
		LOC42 = 0;
		LOC42 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
		LOC41 = rawNewString(LOC42->Sup.len + 1);
appendString(LOC41, LOC42);
appendChar(LOC41, 91);
		result = LOC41;
		{
			NI i_266006;
			NI HEX3Atmp_266593;
			NI LOC44;
			NI res_266596;
			i_266006 = 0;
			HEX3Atmp_266593 = 0;
			LOC44 = 0;
			LOC44 = sonslen_226255(t);
			HEX3Atmp_266593 = (NI32)((NI32)(LOC44 - 1) - ((NI) (!(((*t).Kind == ((NU8) 9))))));
			res_266596 = 1;
			{
				while (1) {
					NimStringDesc* LOC51;
					if (!(res_266596 <= HEX3Atmp_266593)) goto LA46;
					i_266006 = res_266596;
					{
						if (!(1 < i_266006)) goto LA49;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2050));
					}
					LA49: ;
					LOC51 = 0;
					LOC51 = typetostring_263031((*t).Sons->data[i_266006], ((NU8) 0));
					result = resizeString(result, LOC51->Sup.len + 0);
appendString(result, LOC51);
					res_266596 += 1;
				} LA46: ;
			}
		}
		result = addChar(result, 93);
	}
	break;
	case ((NU8) 8):
	{
		{
			ttype225852* LOC55;
			LOC55 = 0;
			LOC55 = base_263038(t);
			if (!((*LOC55).Kind == ((NU8) 0))) goto LA56;
			result = copyString(((NimStringDesc*) &TMP2051));
		}
		goto LA53;
		LA56: ;
		{
			NimStringDesc* LOC59;
			ttype225852* LOC60;
			NimStringDesc* LOC61;
			LOC59 = 0;
			LOC60 = 0;
			LOC60 = base_263038(t);
			LOC61 = 0;
			LOC61 = typetostring_263031(LOC60, ((NU8) 0));
			LOC59 = rawNewString(LOC61->Sup.len + 10);
appendString(LOC59, ((NimStringDesc*) &TMP2052));
appendString(LOC59, LOC61);
appendString(LOC59, ((NimStringDesc*) &TMP2053));
			result = LOC59;
		}
		LA53: ;
	}
	break;
	case ((NU8) 59):
	{
		NimStringDesc* LOC69;
		NimStringDesc* LOC70;
		{
			NI LOC65;
			NimStringDesc* LOC68;
			LOC65 = 0;
			LOC65 = len_230005(t);
			if (!!((0 < LOC65))) goto LA66;
			LOC68 = 0;
			LOC68 = HEX24_198126(TMP2054);
			internalerror_198006(LOC68);
		}
		LA66: ;
		LOC69 = 0;
		LOC70 = 0;
		LOC70 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
		LOC69 = rawNewString(LOC70->Sup.len + 8);
appendString(LOC69, ((NimStringDesc*) &TMP2056));
appendString(LOC69, LOC70);
appendString(LOC69, ((NimStringDesc*) &TMP2053));
		result = LOC69;
		{
			NimStringDesc* LOC75;
			NimStringDesc* LOC76;
			if (!!(((*t).N == NIM_NIL))) goto LA73;
			LOC75 = 0;
			LOC76 = 0;
			LOC76 = rendertree_250058((*t).N, 0);
			LOC75 = rawNewString(LOC76->Sup.len + 2);
appendString(LOC75, ((NimStringDesc*) &TMP2057));
appendString(LOC75, LOC76);
appendString(LOC75, ((NimStringDesc*) &TMP1986));
			result = resizeString(result, LOC75->Sup.len + 0);
appendString(result, LOC75);
		}
		LA73: ;
	}
	break;
	case ((NU8) 52):
	{
		{
			NIM_BOOL LOC80;
			NimStringDesc* LOC84;
			LOC80 = 0;
			LOC80 = !(((*t).Sym == NIM_NIL));
			if (!(LOC80)) goto LA81;
			LOC80 = !(((*(*t).Sym).Owner == NIM_NIL));
			LA81: ;
			if (!!(LOC80)) goto LA82;
			LOC84 = 0;
			LOC84 = HEX24_198126(TMP2058);
			internalerror_198006(LOC84);
		}
		LA82: ;
		result = copyString((*(*(*(*t).Sym).Owner).Name).S);
		goto BeforeRet;
	}
	break;
	case ((NU8) 51):
	{
		ttype225852* LOC86;
		LOC86 = 0;
		LOC86 = base_263038(t);
		switch ((*LOC86).Kind) {
		case ((NU8) 23):
		{
			result = copyString(((NimStringDesc*) &TMP2059));
		}
		break;
		case ((NU8) 22):
		{
			result = copyString(((NimStringDesc*) &TMP2060));
		}
		break;
		case ((NU8) 21):
		{
			result = copyString(((NimStringDesc*) &TMP2061));
		}
		break;
		case ((NU8) 24):
		{
			result = copyString(((NimStringDesc*) &TMP2062));
		}
		break;
		case ((NU8) 16):
		{
			result = copyString(((NimStringDesc*) &TMP2063));
		}
		break;
		case ((NU8) 19):
		{
			result = copyString(((NimStringDesc*) &TMP2064));
		}
		break;
		case ((NU8) 20):
		{
			result = copyString(((NimStringDesc*) &TMP2065));
		}
		break;
		case ((NU8) 13):
		{
			result = copyString(((NimStringDesc*) &TMP2066));
		}
		break;
		case ((NU8) 25):
		{
			result = copyString(((NimStringDesc*) &TMP2012));
		}
		break;
		case ((NU8) 17):
		{
			result = copyString(((NimStringDesc*) &TMP2004));
		}
		break;
		case ((NU8) 18):
		{
			result = copyString(((NimStringDesc*) &TMP2005));
		}
		break;
		case ((NU8) 27):
		{
			result = copyString(((NimStringDesc*) &TMP2067));
		}
		break;
		default:
		{
			ttype225852* LOC100;
			LOC100 = 0;
			LOC100 = base_263038(t);
			result = copyString(typetostr_265835[((*LOC100).Kind)- 0]);
		}
		break;
		}
	}
	break;
	case ((NU8) 53):
	{
		ttype225852* body;
		NimStringDesc* LOC102;
		body = base_263038(t);
		LOC102 = 0;
		LOC102 = rawNewString((*(*(*body).Sym).Name).S->Sup.len + 1);
appendString(LOC102, (*(*(*body).Sym).Name).S);
appendString(LOC102, ((NimStringDesc*) &TMP2068));
		result = LOC102;
		{
			NI i_266131;
			NI HEX3Atmp_266599;
			NI LOC104;
			NI res_266602;
			i_266131 = 0;
			HEX3Atmp_266599 = 0;
			LOC104 = 0;
			LOC104 = sonslen_226255(t);
			HEX3Atmp_266599 = (NI32)(LOC104 - 2);
			res_266602 = 1;
			{
				while (1) {
					NimStringDesc* LOC111;
					if (!(res_266602 <= HEX3Atmp_266599)) goto LA106;
					i_266131 = res_266602;
					{
						if (!(1 < i_266131)) goto LA109;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2050));
					}
					LA109: ;
					LOC111 = 0;
					LOC111 = typetostring_263031((*t).Sons->data[i_266131], ((NU8) 0));
					result = resizeString(result, LOC111->Sup.len + 0);
appendString(result, LOC111);
					res_266602 += 1;
				} LA106: ;
			}
		}
		result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TMP2053));
	}
	break;
	case ((NU8) 55):
	{
		NimStringDesc* LOC113;
		NimStringDesc* LOC114;
		NimStringDesc* LOC115;
		LOC113 = 0;
		LOC114 = 0;
		LOC114 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
		LOC115 = 0;
		LOC115 = typetostring_263031((*t).Sons->data[1], ((NU8) 0));
		LOC113 = rawNewString(LOC114->Sup.len + LOC115->Sup.len + 5);
appendString(LOC113, LOC114);
appendString(LOC113, ((NimStringDesc*) &TMP2069));
appendString(LOC113, LOC115);
		result = LOC113;
	}
	break;
	case ((NU8) 56):
	{
		NimStringDesc* LOC117;
		NimStringDesc* LOC118;
		NimStringDesc* LOC119;
		LOC117 = 0;
		LOC118 = 0;
		LOC118 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
		LOC119 = 0;
		LOC119 = typetostring_263031((*t).Sons->data[1], ((NU8) 0));
		LOC117 = rawNewString(LOC118->Sup.len + LOC119->Sup.len + 4);
appendString(LOC117, LOC118);
appendString(LOC117, ((NimStringDesc*) &TMP2070));
appendString(LOC117, LOC119);
		result = LOC117;
	}
	break;
	case ((NU8) 57):
	{
		NimStringDesc* LOC121;
		NimStringDesc* LOC122;
		LOC121 = 0;
		LOC122 = 0;
		LOC122 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
		LOC121 = rawNewString(LOC122->Sup.len + 4);
appendString(LOC121, ((NimStringDesc*) &TMP2071));
appendString(LOC121, LOC122);
		result = LOC121;
	}
	break;
	case ((NU8) 6):
	{
		{
			NI LOC126;
			NimStringDesc* LOC129;
			LOC126 = 0;
			LOC126 = len_230005(t);
			if (!!((LOC126 == 0))) goto LA127;
			LOC129 = 0;
			LOC129 = HEX24_198126(TMP2072);
			internalerror_198006(LOC129);
		}
		LA127: ;
		result = copyString(((NimStringDesc*) &TMP1993));
	}
	break;
	case ((NU8) 60):
	case ((NU8) 61):
	{
		result = rendertree_250058((*t).N, 0);
	}
	break;
	case ((NU8) 16):
	{
		{
			NimStringDesc* LOC136;
			NimStringDesc* LOC137;
			NimStringDesc* LOC138;
			if (!((*(*t).Sons->data[0]).Kind == ((NU8) 20))) goto LA134;
			LOC136 = 0;
			LOC137 = 0;
			LOC137 = rangetostr_265688((*(*t).Sons->data[0]).N);
			LOC138 = 0;
			LOC138 = typetostring_263031((*t).Sons->data[1], ((NU8) 0));
			LOC136 = rawNewString(LOC137->Sup.len + LOC138->Sup.len + 9);
appendString(LOC136, ((NimStringDesc*) &TMP2073));
appendString(LOC136, LOC137);
appendString(LOC136, ((NimStringDesc*) &TMP2050));
appendString(LOC136, LOC138);
appendChar(LOC136, 93);
			result = LOC136;
		}
		goto LA132;
		LA134: ;
		{
			NimStringDesc* LOC140;
			NimStringDesc* LOC141;
			NimStringDesc* LOC142;
			LOC140 = 0;
			LOC141 = 0;
			LOC141 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
			LOC142 = 0;
			LOC142 = typetostring_263031((*t).Sons->data[1], ((NU8) 0));
			LOC140 = rawNewString(LOC141->Sup.len + LOC142->Sup.len + 9);
appendString(LOC140, ((NimStringDesc*) &TMP2073));
appendString(LOC140, LOC141);
appendString(LOC140, ((NimStringDesc*) &TMP2050));
appendString(LOC140, LOC142);
appendChar(LOC140, 93);
			result = LOC140;
		}
		LA132: ;
	}
	break;
	case ((NU8) 4):
	{
		NimStringDesc* LOC144;
		NimStringDesc* LOC145;
		NimStringDesc* LOC146;
		LOC144 = 0;
		LOC145 = 0;
		LOC145 = rangetostr_265688((*(*t).Sons->data[0]).N);
		LOC146 = 0;
		LOC146 = typetostring_263031((*t).Sons->data[1], ((NU8) 0));
		LOC144 = rawNewString(LOC145->Sup.len + LOC146->Sup.len + 21);
appendString(LOC144, ((NimStringDesc*) &TMP2076));
appendString(LOC144, LOC145);
appendString(LOC144, ((NimStringDesc*) &TMP2050));
appendString(LOC144, LOC146);
appendChar(LOC144, 93);
		result = LOC144;
	}
	break;
	case ((NU8) 24):
	{
		NimStringDesc* LOC148;
		NimStringDesc* LOC149;
		LOC148 = 0;
		LOC149 = 0;
		LOC149 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
		LOC148 = rawNewString(LOC149->Sup.len + 5);
appendString(LOC148, ((NimStringDesc*) &TMP2077));
appendString(LOC148, LOC149);
appendChar(LOC148, 93);
		result = LOC148;
	}
	break;
	case ((NU8) 15):
	{
		NimStringDesc* LOC151;
		NimStringDesc* LOC152;
		LOC151 = 0;
		LOC152 = 0;
		LOC152 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
		LOC151 = rawNewString(LOC152->Sup.len + 9);
appendString(LOC151, ((NimStringDesc*) &TMP2078));
appendString(LOC151, LOC152);
appendChar(LOC151, 93);
		result = LOC151;
	}
	break;
	case ((NU8) 19):
	{
		NimStringDesc* LOC154;
		NimStringDesc* LOC155;
		LOC154 = 0;
		LOC155 = 0;
		LOC155 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
		LOC154 = rawNewString(LOC155->Sup.len + 5);
appendString(LOC154, ((NimStringDesc*) &TMP2079));
appendString(LOC154, LOC155);
appendChar(LOC154, 93);
		result = LOC154;
	}
	break;
	case ((NU8) 27):
	{
		NimStringDesc* LOC157;
		NimStringDesc* LOC158;
		LOC157 = 0;
		LOC158 = 0;
		LOC158 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
		LOC157 = rawNewString(LOC158->Sup.len + 11);
appendString(LOC157, ((NimStringDesc*) &TMP2080));
appendString(LOC157, LOC158);
appendChar(LOC157, 93);
		result = LOC157;
	}
	break;
	case ((NU8) 13):
	{
		NimStringDesc* LOC160;
		NU8 LOC161;
		NimStringDesc* LOC167;
		LOC160 = 0;
		LOC161 = 0;
		{
			if (!(prefer == ((NU8) 3))) goto LA164;
			LOC161 = ((NU8) 3);
		}
		goto LA162;
		LA164: ;
		{
			LOC161 = ((NU8) 0);
		}
		LA162: ;
		LOC167 = 0;
		LOC167 = typetostring_263031((*t).Sons->data[0], LOC161);
		LOC160 = rawNewString(LOC167->Sup.len + 9);
appendString(LOC160, ((NimStringDesc*) &TMP2081));
appendString(LOC160, LOC167);
		result = LOC160;
	}
	break;
	case ((NU8) 18):
	{
		result = copyString(((NimStringDesc*) &TMP2082));
		{
			if (!!(((*t).N == NIM_NIL))) goto LA171;
			{
				NI i_266213;
				NI HEX3Atmp_266605;
				NI LOC174;
				NI res_266608;
				i_266213 = 0;
				HEX3Atmp_266605 = 0;
				LOC174 = 0;
				LOC174 = sonslen_226249((*t).N);
				HEX3Atmp_266605 = (NI32)(LOC174 - 1);
				res_266608 = 0;
				{
					while (1) {
						NimStringDesc* LOC177;
						NimStringDesc* LOC178;
						if (!(res_266608 <= HEX3Atmp_266605)) goto LA176;
						i_266213 = res_266608;
						LOC177 = 0;
						LOC178 = 0;
						LOC178 = typetostring_263031((*t).Sons->data[i_266213], ((NU8) 0));
						LOC177 = rawNewString((*(*(*(*(*t).N).kindU.S6.Sons->data[i_266213]).kindU.S4.Sym).Name).S->Sup.len + LOC178->Sup.len + 2);
appendString(LOC177, (*(*(*(*(*t).N).kindU.S6.Sons->data[i_266213]).kindU.S4.Sym).Name).S);
appendString(LOC177, ((NimStringDesc*) &TMP2083));
appendString(LOC177, LOC178);
						result = resizeString(result, LOC177->Sup.len + 0);
appendString(result, LOC177);
						{
							NI LOC181;
							LOC181 = 0;
							LOC181 = sonslen_226249((*t).N);
							if (!(i_266213 < (NI32)(LOC181 - 1))) goto LA182;
							result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2050));
						}
						LA182: ;
						res_266608 += 1;
					} LA176: ;
				}
			}
		}
		goto LA169;
		LA171: ;
		{
			{
				NI i_266442;
				NI HEX3Atmp_266611;
				NI LOC186;
				NI res_266614;
				i_266442 = 0;
				HEX3Atmp_266611 = 0;
				LOC186 = 0;
				LOC186 = sonslen_226255(t);
				HEX3Atmp_266611 = (NI32)(LOC186 - 1);
				res_266614 = 0;
				{
					while (1) {
						NimStringDesc* LOC189;
						if (!(res_266614 <= HEX3Atmp_266611)) goto LA188;
						i_266442 = res_266614;
						LOC189 = 0;
						LOC189 = typetostring_263031((*t).Sons->data[i_266442], ((NU8) 0));
						result = resizeString(result, LOC189->Sup.len + 0);
appendString(result, LOC189);
						{
							NI LOC192;
							LOC192 = 0;
							LOC192 = sonslen_226255(t);
							if (!(i_266442 < (NI32)(LOC192 - 1))) goto LA193;
							result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2050));
						}
						LA193: ;
						res_266614 += 1;
					} LA188: ;
				}
			}
		}
		LA169: ;
		result = addChar(result, 93);
	}
	break;
	case ((NU8) 21):
	case ((NU8) 22):
	case ((NU8) 23):
	case ((NU8) 47):
	case ((NU8) 46):
	{
		result = copyString(typetostr_265835[((*t).Kind)- 0]);
		{
			NI LOC198;
			LOC198 = 0;
			LOC198 = len_230005(t);
			if (!(2 <= LOC198)) goto LA199;
			result = setLengthStr(result, (NI32)(result->Sup.len - 1));
			result = addChar(result, 91);
			{
				NI i_266456;
				NI HEX3Atmp_266617;
				NI LOC202;
				NI res_266620;
				i_266456 = 0;
				HEX3Atmp_266617 = 0;
				LOC202 = 0;
				LOC202 = sonslen_226255(t);
				HEX3Atmp_266617 = (NI32)(LOC202 - 1);
				res_266620 = 0;
				{
					while (1) {
						NimStringDesc* LOC205;
						if (!(res_266620 <= HEX3Atmp_266617)) goto LA204;
						i_266456 = res_266620;
						LOC205 = 0;
						LOC205 = typetostring_263031((*t).Sons->data[i_266456], ((NU8) 0));
						result = resizeString(result, LOC205->Sup.len + 0);
appendString(result, LOC205);
						{
							NI LOC208;
							LOC208 = 0;
							LOC208 = sonslen_226255(t);
							if (!(i_266456 < (NI32)(LOC208 - 1))) goto LA209;
							result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2050));
						}
						LA209: ;
						res_266620 += 1;
					} LA204: ;
				}
			}
			result = addChar(result, 93);
		}
		goto LA196;
		LA199: ;
		{
			NimStringDesc* LOC212;
			LOC212 = 0;
			LOC212 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
			result = resizeString(result, LOC212->Sup.len + 0);
appendString(result, LOC212);
		}
		LA196: ;
	}
	break;
	case ((NU8) 20):
	{
		NimStringDesc* LOC214;
		NimStringDesc* LOC215;
		LOC214 = 0;
		LOC215 = 0;
		LOC215 = rangetostr_265688((*t).N);
		LOC214 = rawNewString(LOC215->Sup.len + 6);
appendString(LOC214, ((NimStringDesc*) &TMP2084));
appendString(LOC214, LOC215);
		result = LOC214;
		{
			NimStringDesc* LOC220;
			NimStringDesc* LOC221;
			if (!!((prefer == ((NU8) 2)))) goto LA218;
			LOC220 = 0;
			LOC221 = 0;
			LOC221 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
			LOC220 = rawNewString(LOC221->Sup.len + 2);
appendString(LOC220, ((NimStringDesc*) &TMP2057));
appendString(LOC220, LOC221);
appendString(LOC220, ((NimStringDesc*) &TMP1986));
			result = resizeString(result, LOC220->Sup.len + 0);
appendString(result, LOC220);
		}
		LA218: ;
	}
	break;
	case ((NU8) 25):
	{
		NimStringDesc* prag;
		{
			if (!(((*t).Flags &(1<<((((NU8) 14))&31)))!=0)) goto LA225;
			result = copyString(((NimStringDesc*) &TMP2085));
		}
		goto LA223;
		LA225: ;
		{
			result = copyString(((NimStringDesc*) &TMP2086));
		}
		LA223: ;
		{
			NI i_266492;
			NI HEX3Atmp_266623;
			NI LOC229;
			NI res_266626;
			i_266492 = 0;
			HEX3Atmp_266623 = 0;
			LOC229 = 0;
			LOC229 = sonslen_226255(t);
			HEX3Atmp_266623 = (NI32)(LOC229 - 1);
			res_266626 = 1;
			{
				while (1) {
					NimStringDesc* LOC232;
					if (!(res_266626 <= HEX3Atmp_266623)) goto LA231;
					i_266492 = res_266626;
					LOC232 = 0;
					LOC232 = typetostring_263031((*t).Sons->data[i_266492], ((NU8) 0));
					result = resizeString(result, LOC232->Sup.len + 0);
appendString(result, LOC232);
					{
						NI LOC235;
						LOC235 = 0;
						LOC235 = sonslen_226255(t);
						if (!(i_266492 < (NI32)(LOC235 - 1))) goto LA236;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2050));
					}
					LA236: ;
					res_266626 += 1;
				} LA231: ;
			}
		}
		result = addChar(result, 41);
		{
			NimStringDesc* LOC242;
			NimStringDesc* LOC243;
			if (!!(((*t).Sons->data[0] == NIM_NIL))) goto LA240;
			LOC242 = 0;
			LOC243 = 0;
			LOC243 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
			LOC242 = rawNewString(LOC243->Sup.len + 2);
appendString(LOC242, ((NimStringDesc*) &TMP2083));
appendString(LOC242, LOC243);
			result = resizeString(result, LOC242->Sup.len + 0);
appendString(result, LOC242);
		}
		LA240: ;
		{
			if (!((*t).Callconv == ((NU8) 0))) goto LA246;
			prag = copyString(((NimStringDesc*) &TMP1984));
		}
		goto LA244;
		LA246: ;
		{
			prag = copyString(callingconvtostr_225019[((*t).Callconv)- 0]);
		}
		LA244: ;
		{
			if (!(((*t).Flags &(1<<((((NU8) 1))&31)))!=0)) goto LA251;
			addsep_96466((&prag), ((NimStringDesc*) &TMP2050), 0);
			prag = resizeString(prag, 12);
appendString(prag, ((NimStringDesc*) &TMP2097));
		}
		LA251: ;
		{
			if (!(((*t).Flags &(1<<((((NU8) 7))&31)))!=0)) goto LA255;
			addsep_96466((&prag), ((NimStringDesc*) &TMP2050), 0);
			prag = resizeString(prag, 6);
appendString(prag, ((NimStringDesc*) &TMP2098));
		}
		LA255: ;
		{
			NimStringDesc* LOC261;
			NimStringDesc* LOC262;
			if (!!((((NI) ((*t).Locklevel)) == -1))) goto LA259;
			addsep_96466((&prag), ((NimStringDesc*) &TMP2050), 0);
			LOC261 = 0;
			LOC262 = 0;
			LOC262 = HEX24_228488((*t).Locklevel);
			LOC261 = rawNewString(LOC262->Sup.len + 7);
appendString(LOC261, ((NimStringDesc*) &TMP2099));
appendString(LOC261, LOC262);
			prag = resizeString(prag, LOC261->Sup.len + 0);
appendString(prag, LOC261);
		}
		LA259: ;
		{
			NimStringDesc* LOC267;
			if (!!((prag->Sup.len == 0))) goto LA265;
			LOC267 = 0;
			LOC267 = rawNewString(prag->Sup.len + 4);
appendString(LOC267, ((NimStringDesc*) &TMP2102));
appendString(LOC267, prag);
appendString(LOC267, ((NimStringDesc*) &TMP2103));
			result = resizeString(result, LOC267->Sup.len + 0);
appendString(result, LOC267);
		}
		LA265: ;
	}
	break;
	case ((NU8) 48):
	case ((NU8) 49):
	{
		NimStringDesc* LOC269;
		LOC269 = 0;
		LOC269 = typetostring_263031((*t).Sons->data[0], ((NU8) 0));
		result = nsuFormatSingleElem(typetostr_265835[((*t).Kind)- 0], LOC269);
	}
	break;
	default:
	{
		result = copyString(typetostr_265835[((*t).Kind)- 0]);
	}
	break;
	}
	{
		NimStringDesc* LOC275;
		if (!(((*t).Flags &(1<<((((NU8) 15))&31)))!=0)) goto LA273;
		LOC275 = 0;
		LOC275 = rawNewString(result->Sup.len + 7);
appendString(LOC275, ((NimStringDesc*) &TMP2104));
appendString(LOC275, result);
		result = LOC275;
	}
	LA273: ;
	{
		if (!(((*t).Flags &(1<<((((NU8) 16))&31)))!=0)) goto LA278;
		result = resizeString(result, 8);
appendString(result, ((NimStringDesc*) &TMP2105));
	}
	LA278: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI64, getordvalue_263187)(tnode225816* 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_263187((*n).kindU.S6.Sons->data[1]);
	}
	break;
	default:
	{
		localerror_197955((*n).Info, ((NU16) 74), ((NimStringDesc*) &TMP1984));
		result = IL64(0);
	}
	break;
	}
	return result;
}

static N_INLINE(ttype225852*, lastson_226267)(ttype225852* n) {
	ttype225852* result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = sonslen_226255(n);
	result = (*n).Sons->data[(NI32)(LOC1 - 1)];
	return result;
}

N_NIMCALL(NI64, firstord_263004)(ttype225852* 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_263004((*t).Sons->data[0]);
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		result = firstord_263004((*t).Sons->data[0]);
	}
	break;
	case ((NU8) 20):
	{
		result = getordvalue_263187((*(*t).N).kindU.S6.Sons->data[0]);
	}
	break;
	case ((NU8) 31):
	{
		{
			if (!(intsize_174610 == 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_226255(t);
			LOC19 = (0 < LOC20);
			if (!(LOC19)) goto LA21;
			LOC19 = !(((*t).Sons->data[0] == NIM_NIL));
			LA21: ;
			if (!LOC19) goto LA22;
			result = firstord_263004((*t).Sons->data[0]);
		}
		goto LA17;
		LA22: ;
		{
			result = ((NI64) ((*(*(*(*t).N).kindU.S6.Sons->data[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):
	{
		ttype225852* LOC26;
		LOC26 = 0;
		LOC26 = lastson_226267(t);
		result = firstord_263004(LOC26);
	}
	break;
	case ((NU8) 15):
	{
		{
			NI LOC30;
			ttype225852* LOC33;
			LOC30 = 0;
			LOC30 = len_230005(t);
			if (!(0 < LOC30)) goto LA31;
			LOC33 = 0;
			LOC33 = lastson_226267(t);
			result = firstord_263004(LOC33);
		}
		goto LA28;
		LA31: ;
		{
			NimStringDesc* LOC35;
			LOC35 = 0;
			LOC35 = rawNewString(reprEnum((*t).Kind, (&NTI225258))->Sup.len + 24);
appendString(LOC35, ((NimStringDesc*) &TMP2638));
appendString(LOC35, reprEnum((*t).Kind, (&NTI225258)));
appendChar(LOC35, 41);
			internalerror_198006(LOC35);
		}
		LA28: ;
	}
	break;
	default:
	{
		NimStringDesc* LOC37;
		LOC37 = 0;
		LOC37 = rawNewString(reprEnum((*t).Kind, (&NTI225258))->Sup.len + 24);
appendString(LOC37, ((NimStringDesc*) &TMP2638));
appendString(LOC37, reprEnum((*t).Kind, (&NTI225258)));
appendChar(LOC37, 41);
		internalerror_198006(LOC37);
		result = IL64(0);
	}
	break;
	}
	return result;
}

N_NIMCALL(NI64, lastord_263010)(ttype225852* 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_263010((*t).Sons->data[0]);
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		result = lastord_263010((*t).Sons->data[0]);
	}
	break;
	case ((NU8) 20):
	{
		result = getordvalue_263187((*(*t).N).kindU.S6.Sons->data[1]);
	}
	break;
	case ((NU8) 31):
	{
		{
			if (!(intsize_174610 == 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_174610 == 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_226249((*t).N);
		result = ((NI64) ((*(*(*(*t).N).kindU.S6.Sons->data[(NI32)(LOC27 - 1)]).kindU.S4.Sym).Position));
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	case ((NU8) 46):
	case ((NU8) 47):
	case ((NU8) 8):
	case ((NU8) 61):
	{
		ttype225852* LOC29;
		LOC29 = 0;
		LOC29 = lastson_226267(t);
		result = lastord_263010(LOC29);
	}
	break;
	case ((NU8) 50):
	{
		result = IL64(0);
	}
	break;
	case ((NU8) 15):
	{
		{
			NI LOC34;
			ttype225852* LOC37;
			LOC34 = 0;
			LOC34 = len_230005(t);
			if (!(0 < LOC34)) goto LA35;
			LOC37 = 0;
			LOC37 = lastson_226267(t);
			result = lastord_263010(LOC37);
		}
		goto LA32;
		LA35: ;
		{
			NimStringDesc* LOC39;
			LOC39 = 0;
			LOC39 = rawNewString(reprEnum((*t).Kind, (&NTI225258))->Sup.len + 23);
appendString(LOC39, ((NimStringDesc*) &TMP2639));
appendString(LOC39, reprEnum((*t).Kind, (&NTI225258)));
appendChar(LOC39, 41);
			internalerror_198006(LOC39);
		}
		LA32: ;
	}
	break;
	default:
	{
		NimStringDesc* LOC41;
		LOC41 = 0;
		LOC41 = rawNewString(reprEnum((*t).Kind, (&NTI225258))->Sup.len + 23);
appendString(LOC41, ((NimStringDesc*) &TMP2639));
appendString(LOC41, reprEnum((*t).Kind, (&NTI225258)));
appendChar(LOC41, 41);
		internalerror_198006(LOC41);
		result = IL64(0);
	}
	break;
	}
	return result;
}

N_NIMCALL(NI64, lengthord_263016)(ttype225852* t) {
	NI64 result;
	result = 0;
	switch ((*t).Kind) {
	case ((NU8) 35):
	case ((NU8) 34):
	case ((NU8) 31):
	{
		result = lastord_263010(t);
	}
	break;
	case ((NU8) 13):
	case ((NU8) 46):
	case ((NU8) 47):
	{
		result = lengthord_263016((*t).Sons->data[0]);
	}
	break;
	default:
	{
		NI64 LOC4;
		NI64 LOC5;
		LOC4 = 0;
		LOC4 = lastord_263010(t);
		LOC5 = 0;
		LOC5 = firstord_263004(t);
		result = (NI64)((NI64)(LOC4 - LOC5) + IL64(1));
	}
	break;
	}
	return result;
}

N_NIMCALL(NIM_BOOL, isordinaltype_263092)(ttype225852* 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_263092((*t).Sons->data[0]);
	LA4: ;
	LOC1 = LOC3;
	LA2: ;
	result = LOC1;
	return result;
}

N_NIMCALL(void, initsametypeclosure_268089)(tsametypeclosure268067* Result) {
}

N_NIMCALL(NIM_BOOL, isgenericalias_269591)(ttype225852* t) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	ttype225852* LOC3;
	result = 0;
	LOC1 = 0;
	LOC1 = ((*t).Kind == ((NU8) 11));
	if (!(LOC1)) goto LA2;
	LOC3 = 0;
	LOC3 = lastson_226267(t);
	LOC1 = ((*LOC3).Kind == ((NU8) 11));
	LA2: ;
	result = LOC1;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

N_NIMCALL(ttype225852*, skipgenericalias_269619)(ttype225852* t) {
	ttype225852* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = isgenericalias_269591(t);
		if (!LOC3) goto LA4;
		result = lastson_226267(t);
	}
	goto LA1;
	LA4: ;
	{
		result = t;
	}
	LA1: ;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, sameflags_269641)(ttype225852* a, ttype225852* b) {
	NIM_BOOL result;
	result = 0;
	result = ((114688 & (*a).Flags) == (114688 & (*b).Flags));
	return result;
}

static N_INLINE(NI, find_268131)(TY268081* a_268136, NI a_268136Len0, TY268081 item_268138) {
	NI result;
	result = 0;
	{
		TY268081 i_268182;
		NI i_268207;
		memset((void*)(&i_268182), 0, sizeof(i_268182));
		i_268207 = 0;
		{
			while (1) {
				if (!(i_268207 < a_268136Len0)) goto LA3;
				i_268182 = a_268136[i_268207];
				{
					NIM_BOOL LOC6;
					LOC6 = 0;
					LOC6 = HEX3DHEX3D_151641(i_268182, item_268138);
					if (!LOC6) goto LA7;
					goto BeforeRet;
				}
				LA7: ;
				result += 1;
				i_268207 += 1;
			} LA3: ;
		}
	}
	result = -1;
	BeforeRet: ;
	return result;
}

static N_INLINE(NIM_BOOL, contains_268119)(TY268081* a_268125, NI a_268125Len0, TY268081 item_268128) {
	NIM_BOOL result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = find_268131(a_268125, a_268125Len0, item_268128);
	result = (0 <= LOC1);
	goto BeforeRet;
	BeforeRet: ;
	return result;
}
N_NIMCALL(void, TMP2665)(void* p, NI op) {
	TY268080* a;
	NI LOC1;
	a = (TY268080*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	}
}

N_NIMCALL(NIM_BOOL, containsorincl_268098)(tsametypeclosure268067* c, ttype225852* a, ttype225852* b) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	TY268081 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_268119((*c).S->data, (*c).S->Sup.len, LOC3);
	LA2: ;
	result = LOC1;
	{
		TY268081 LOC12;
		if (!!(result)) goto LA6;
		{
			if (!(*c).S == 0) goto LA10;
			unsureAsgnRef((void**) (&(*c).S), (TY268080*) newSeq((&NTI268080), 0));
		}
		LA10: ;
		LOC12.Field0 = (*a).Sup.Id;
		LOC12.Field1 = (*b).Sup.Id;
		(*c).S = (TY268080*) incrSeq(&((*c).S)->Sup, sizeof(TY268081));
		(*c).S->data[(*c).S->Sup.len-1] = LOC12;
	}
	LA6: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sametypeornilaux_268288)(ttype225852* a, ttype225852* b, tsametypeclosure268067* 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_268279(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)), (NI32)((*a).Sup.len * 1));
	LOC11 = (LOC13 == ((NI32) 0));
	LA12: ;
	result = LOC11;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sameobjecttree_269241)(tnode225816* a, tnode225816* b, tsametypeclosure268067* c) {
	NIM_BOOL result;
	result = 0;
	{
		if (!(a == b)) goto LA3;
		result = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		NIM_BOOL LOC7;
		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;
		{
			NIM_BOOL LOC14;
			LOC14 = 0;
			LOC14 = sametypeornilaux_268288((*a).Typ, (*b).Typ, c);
			if (!LOC14) goto LA15;
			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 LOC26;
					NI LOC27;
					LOC26 = 0;
					LOC26 = sonslen_226249(a);
					LOC27 = 0;
					LOC27 = sonslen_226249(b);
					if (!(LOC26 == LOC27)) goto LA28;
					{
						NI i_269459;
						NI HEX3Atmp_269489;
						NI LOC31;
						NI res_269492;
						i_269459 = 0;
						HEX3Atmp_269489 = 0;
						LOC31 = 0;
						LOC31 = sonslen_226249(a);
						HEX3Atmp_269489 = (NI32)(LOC31 - 1);
						res_269492 = 0;
						{
							while (1) {
								if (!(res_269492 <= HEX3Atmp_269489)) goto LA33;
								i_269459 = res_269492;
								{
									NIM_BOOL LOC36;
									LOC36 = 0;
									LOC36 = sameobjecttree_269241((*a).kindU.S6.Sons->data[i_269459], (*b).kindU.S6.Sons->data[i_269459], c);
									if (!!(LOC36)) goto LA37;
									goto BeforeRet;
								}
								LA37: ;
								res_269492 += 1;
							} LA33: ;
						}
					}
					result = NIM_TRUE;
				}
				LA28: ;
			}
			break;
			}
		}
		LA15: ;
	}
	goto LA1;
	LA10: ;
	LA1: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sameobjectstructures_269509)(ttype225852* a, ttype225852* b, tsametypeclosure268067* c) {
	NIM_BOOL result;
	result = 0;
	{
		NI LOC3;
		NI LOC4;
		LOC3 = 0;
		LOC3 = sonslen_226255(a);
		LOC4 = 0;
		LOC4 = sonslen_226255(b);
		if (!!((LOC3 == LOC4))) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	{
		NI i_269528;
		NI HEX3Atmp_269530;
		NI LOC8;
		NI res_269533;
		i_269528 = 0;
		HEX3Atmp_269530 = 0;
		LOC8 = 0;
		LOC8 = sonslen_226255(a);
		HEX3Atmp_269530 = (NI32)(LOC8 - 1);
		res_269533 = 0;
		{
			while (1) {
				if (!(res_269533 <= HEX3Atmp_269530)) goto LA10;
				i_269528 = res_269533;
				{
					NIM_BOOL LOC13;
					LOC13 = 0;
					LOC13 = sametypeornilaux_268288((*a).Sons->data[i_269528], (*b).Sons->data[i_269528], c);
					if (!!(LOC13)) goto LA14;
					goto BeforeRet;
				}
				LA14: ;
				res_269533 += 1;
			} LA10: ;
		}
	}
	{
		NIM_BOOL LOC18;
		LOC18 = 0;
		LOC18 = sameobjecttree_269241((*a).N, (*b).N, c);
		if (!!(LOC18)) goto LA19;
		goto BeforeRet;
	}
	LA19: ;
	result = NIM_TRUE;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sametuple_269074)(ttype225852* a, ttype225852* b, tsametypeclosure268067* c) {
	NIM_BOOL result;
	result = 0;
	{
		NI LOC3;
		NI LOC4;
		LOC3 = 0;
		LOC3 = sonslen_226255(a);
		LOC4 = 0;
		LOC4 = sonslen_226255(b);
		if (!(LOC3 == LOC4)) goto LA5;
		result = NIM_TRUE;
		{
			NI i_269093;
			NI HEX3Atmp_269112;
			NI LOC8;
			NI res_269115;
			i_269093 = 0;
			HEX3Atmp_269112 = 0;
			LOC8 = 0;
			LOC8 = sonslen_226255(a);
			HEX3Atmp_269112 = (NI32)(LOC8 - 1);
			res_269115 = 0;
			{
				while (1) {
					ttype225852* x;
					ttype225852* y;
					if (!(res_269115 <= HEX3Atmp_269112)) goto LA10;
					i_269093 = res_269115;
					x = (*a).Sons->data[i_269093];
					y = (*b).Sons->data[i_269093];
					{
						if (!(((*c).Flags &(1<<((((NU8) 0))&7)))!=0)) goto LA13;
						x = skiptypes_230245(x, 1048576);
						y = skiptypes_230245(y, 1048576);
					}
					LA13: ;
					result = sametypeaux_268279(x, y, c);
					{
						if (!!(result)) goto LA17;
						goto BeforeRet;
					}
					LA17: ;
					res_269115 += 1;
				} LA10: ;
			}
		}
	}
	LA5: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, samechildrenaux_269550)(ttype225852* a, ttype225852* b, tsametypeclosure268067* c) {
	NIM_BOOL result;
	result = 0;
	{
		NI LOC3;
		NI LOC4;
		LOC3 = 0;
		LOC3 = sonslen_226255(a);
		LOC4 = 0;
		LOC4 = sonslen_226255(b);
		if (!!((LOC3 == LOC4))) goto LA5;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA5: ;
	result = NIM_TRUE;
	{
		NI i_269569;
		NI HEX3Atmp_269571;
		NI LOC8;
		NI res_269574;
		i_269569 = 0;
		HEX3Atmp_269571 = 0;
		LOC8 = 0;
		LOC8 = sonslen_226255(a);
		HEX3Atmp_269571 = (NI32)(LOC8 - 1);
		res_269574 = 0;
		{
			while (1) {
				if (!(res_269574 <= HEX3Atmp_269571)) goto LA10;
				i_269569 = res_269574;
				result = sametypeornilaux_268288((*a).Sons->data[i_269569], (*b).Sons->data[i_269569], c);
				{
					if (!!(result)) goto LA13;
					goto BeforeRet;
				}
				LA13: ;
				res_269574 += 1;
			} LA10: ;
		}
	}
	BeforeRet: ;
	return result;
}

static N_INLINE(NI, len_226364)(tnode225816* n) {
	NI result;
	result = 0;
	{
		if (!(*n).kindU.S6.Sons == 0) goto LA3;
		result = 0;
	}
	goto LA1;
	LA3: ;
	{
		result = (*n).kindU.S6.Sons->Sup.len;
	}
	LA1: ;
	return result;
}

static N_INLINE(tnode225816*, HEX5BHEX5D_226698)(tnode225816* n, NI i) {
	tnode225816* result;
	result = 0;
	result = (*n).kindU.S6.Sons->data[i];
	return result;
}

N_NIMCALL(NIM_BOOL, sameconstraints_268527)(tnode225816* a, tnode225816* b) {
	NIM_BOOL result;
	result = 0;
	{
		NI LOC3;
		NI LOC4;
		NimStringDesc* LOC7;
		LOC3 = 0;
		LOC3 = len_226364(a);
		LOC4 = 0;
		LOC4 = len_226364(b);
		if (!!((LOC3 == LOC4))) goto LA5;
		LOC7 = 0;
		LOC7 = HEX24_198126(TMP2666);
		internalerror_198006(LOC7);
	}
	LA5: ;
	{
		NI i_268560;
		NI HEX3Atmp_268590;
		NI LOC9;
		NI res_268593;
		i_268560 = 0;
		HEX3Atmp_268590 = 0;
		LOC9 = 0;
		LOC9 = len_226364(a);
		HEX3Atmp_268590 = (LOC9 - 1);
		res_268593 = 1;
		{
			while (1) {
				if (!(res_268593 <= HEX3Atmp_268590)) goto LA11;
				i_268560 = res_268593;
				{
					tnode225816* LOC14;
					tnode225816* LOC15;
					NIM_BOOL LOC16;
					LOC14 = 0;
					LOC14 = HEX5BHEX5D_226698(a, i_268560);
					LOC15 = 0;
					LOC15 = HEX5BHEX5D_226698(b, i_268560);
					LOC16 = 0;
					LOC16 = exprstructuralequivalent_261184((*(*LOC14).kindU.S4.Sym).Constraint, (*(*LOC15).kindU.S4.Sym).Constraint);
					if (!!(LOC16)) goto LA17;
					result = NIM_FALSE;
					goto BeforeRet;
				}
				LA17: ;
				res_268593 += 1;
			} LA11: ;
		}
	}
	result = NIM_TRUE;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sametypeaux_268279)(ttype225852* x, ttype225852* y, tsametypeclosure268067* c) {
	NIM_BOOL result;
	ttype225852* a;
	ttype225852* b;
	result = 0;
	{
		if (!(x == y)) goto LA3;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	a = skiptypes_230245(x, 2048);
	b = skiptypes_230245(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[0];
				} LA12: ;
			}
			{
				while (1) {
					if (!((*b).Kind == ((NU8) 13))) goto LA14;
					b = (*b).Sons->data[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[0];
				} LA21: ;
			}
			{
				if (!!(((*a).Kind == (*b).Kind))) goto LA24;
				result = NIM_FALSE;
				goto BeforeRet;
			}
			LA24: ;
		}
		break;
		}
	}
	LA7: ;
	{
		ttype225852* lhs;
		ttype225852* rhs;
		if (!((*x).Kind == ((NU8) 11))) goto LA28;
		lhs = skipgenericalias_269619(x);
		rhs = skipgenericalias_269619(y);
		{
			NIM_BOOL LOC32;
			ttype225852* LOC34;
			ttype225852* LOC35;
			LOC32 = 0;
			LOC32 = !(((*rhs).Kind == ((NU8) 11)));
			if (LOC32) goto LA33;
			LOC34 = 0;
			LOC34 = base_263038(lhs);
			LOC35 = 0;
			LOC35 = base_263038(rhs);
			LOC32 = !((LOC34 == LOC35));
			LA33: ;
			if (!LOC32) goto LA36;
			result = NIM_FALSE;
			goto BeforeRet;
		}
		LA36: ;
		{
			NI i_270101;
			NI HEX3Atmp_270501;
			NI LOC39;
			NI res_270504;
			i_270101 = 0;
			HEX3Atmp_270501 = 0;
			LOC39 = 0;
			LOC39 = len_230005(lhs);
			HEX3Atmp_270501 = (NI32)(LOC39 - 2);
			res_270504 = 1;
			{
				while (1) {
					ttype225852* ff;
					ttype225852* aa;
					if (!(res_270504 <= HEX3Atmp_270501)) goto LA41;
					i_270101 = res_270504;
					ff = (*rhs).Sons->data[i_270101];
					aa = (*lhs).Sons->data[i_270101];
					{
						NIM_BOOL LOC44;
						LOC44 = 0;
						LOC44 = sametypeaux_268279(ff, aa, c);
						if (!!(LOC44)) goto LA45;
						result = NIM_FALSE;
						goto BeforeRet;
					}
					LA45: ;
					res_270504 += 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_269641(a, b);
	}
	break;
	case ((NU8) 59):
	case ((NU8) 60):
	{
		NIM_BOOL LOC49;
		LOC49 = 0;
		LOC49 = exprstructuralequivalent_261184((*a).N, (*b).N);
		if (!(LOC49)) goto LA50;
		LOC49 = sameflags_269641(a, b);
		LA50: ;
		result = LOC49;
	}
	break;
	case ((NU8) 17):
	{
		{
			if (!!(((((*a).Flags | (*b).Flags) &(1<<((((NU8) 8))&31)))!=0))) goto LA54;
			result = ((*a).Sup.Id == (*b).Sup.Id);
		}
		goto LA52;
		LA54: ;
		{
			{
				NIM_BOOL LOC59;
				NIM_BOOL LOC73;
				LOC59 = 0;
				LOC59 = ((((*a).Flags & (*b).Flags) &(1<<((((NU8) 8))&31)))!=0);
				if (!(LOC59)) goto LA60;
				LOC59 = ((*(*a).Sym).Sup.Id == (*(*b).Sym).Sup.Id);
				LA60: ;
				if (!LOC59) goto LA61;
				{
					if (!((*c).Reccheck < 3)) goto LA65;
					(*c).Reccheck += 1;
				}
				goto LA63;
				LA65: ;
				{
					{
						NIM_BOOL LOC70;
						LOC70 = 0;
						LOC70 = containsorincl_268098(c, a, b);
						if (!LOC70) goto LA71;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA71: ;
				}
				LA63: ;
				LOC73 = 0;
				LOC73 = sameobjectstructures_269509(a, b, c);
				if (!(LOC73)) goto LA74;
				LOC73 = sameflags_269641(a, b);
				LA74: ;
				result = LOC73;
			}
			LA61: ;
		}
		LA52: ;
	}
	break;
	case ((NU8) 13):
	{
		{
			if (!((*c).Reccheck < 3)) goto LA78;
			(*c).Reccheck += 1;
		}
		goto LA76;
		LA78: ;
		{
			{
				NIM_BOOL LOC83;
				LOC83 = 0;
				LOC83 = containsorincl_268098(c, a, b);
				if (!LOC83) goto LA84;
				result = NIM_TRUE;
				goto BeforeRet;
			}
			LA84: ;
		}
		LA76: ;
		{
			if (!((*c).Cmp == ((NU8) 0))) goto LA88;
			{
				NIM_BOOL LOC92;
				LOC92 = 0;
				LOC92 = sameflags_269641(a, b);
				if (!LOC92) goto LA93;
				{
					if (!!(((((*a).Flags | (*b).Flags) &(1<<((((NU8) 8))&31)))!=0))) goto LA97;
					result = ((*a).Sup.Id == (*b).Sup.Id);
				}
				goto LA95;
				LA97: ;
				{
					{
						NIM_BOOL LOC102;
						LOC102 = 0;
						LOC102 = ((((*a).Flags & (*b).Flags) &(1<<((((NU8) 8))&31)))!=0);
						if (!(LOC102)) goto LA103;
						LOC102 = ((*(*a).Sym).Sup.Id == (*(*b).Sym).Sup.Id);
						LA103: ;
						if (!LOC102) goto LA104;
						result = sametypeaux_268279((*a).Sons->data[0], (*b).Sons->data[0], c);
					}
					LA104: ;
				}
				LA95: ;
			}
			LA93: ;
		}
		goto LA86;
		LA88: ;
		{
			NIM_BOOL LOC107;
			LOC107 = 0;
			LOC107 = sametypeaux_268279((*a).Sons->data[0], (*b).Sons->data[0], c);
			if (!(LOC107)) goto LA108;
			LOC107 = sameflags_269641(a, b);
			LA108: ;
			result = LOC107;
		}
		LA86: ;
	}
	break;
	case ((NU8) 14):
	case ((NU8) 30):
	{
		NIM_BOOL LOC110;
		LOC110 = 0;
		LOC110 = ((*a).Sup.Id == (*b).Sup.Id);
		if (!(LOC110)) goto LA111;
		LOC110 = sameflags_269641(a, b);
		LA111: ;
		result = LOC110;
	}
	break;
	case ((NU8) 50):
	{
		result = ((*b).Kind == ((NU8) 50));
	}
	break;
	case ((NU8) 18):
	{
		NIM_BOOL LOC124;
		{
			if (!((*c).Reccheck < 3)) goto LA116;
			(*c).Reccheck += 1;
		}
		goto LA114;
		LA116: ;
		{
			{
				NIM_BOOL LOC121;
				LOC121 = 0;
				LOC121 = containsorincl_268098(c, a, b);
				if (!LOC121) goto LA122;
				result = NIM_TRUE;
				goto BeforeRet;
			}
			LA122: ;
		}
		LA114: ;
		LOC124 = 0;
		LOC124 = sametuple_269074(a, b, c);
		if (!(LOC124)) goto LA125;
		LOC124 = sameflags_269641(a, b);
		LA125: ;
		result = LOC124;
	}
	break;
	case ((NU8) 8):
	{
		{
			if (!((*c).Cmp == ((NU8) 1))) goto LA129;
			result = NIM_FALSE;
		}
		goto LA127;
		LA129: ;
		{
			NIM_BOOL LOC144;
			if (!(((*c).Flags &(1<<((((NU8) 2))&7)))!=0)) goto LA132;
			{
				if (!((*c).Reccheck < 3)) goto LA136;
				(*c).Reccheck += 1;
			}
			goto LA134;
			LA136: ;
			{
				{
					NIM_BOOL LOC141;
					LOC141 = 0;
					LOC141 = containsorincl_268098(c, a, b);
					if (!LOC141) goto LA142;
					result = NIM_TRUE;
					goto BeforeRet;
				}
				LA142: ;
			}
			LA134: ;
			LOC144 = 0;
			LOC144 = samechildrenaux_269550(x, y, c);
			if (!(LOC144)) goto LA145;
			LOC144 = sameflags_269641(a, b);
			LA145: ;
			result = LOC144;
		}
		goto LA127;
		LA132: ;
		{
			result = sameflags_269641(a, b);
		}
		LA127: ;
	}
	break;
	case ((NU8) 12):
	{
		NIM_BOOL LOC148;
		LOC148 = 0;
		LOC148 = samechildrenaux_269550(a, b, c);
		if (!(LOC148)) goto LA149;
		LOC148 = sameflags_269641(a, b);
		LA149: ;
		result = LOC148;
		{
			NIM_BOOL LOC152;
			LOC152 = 0;
			LOC152 = result;
			if (!(LOC152)) goto LA153;
			LOC152 = (((*c).Flags &(1<<((((NU8) 3))&7)))!=0);
			LA153: ;
			if (!LOC152) goto LA154;
			result = ((*(*a).Sym).Position == (*(*b).Sym).Position);
		}
		LA154: ;
	}
	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 LOC173;
		{
			if (!((*c).Reccheck < 3)) goto LA159;
			(*c).Reccheck += 1;
		}
		goto LA157;
		LA159: ;
		{
			{
				NIM_BOOL LOC164;
				LOC164 = 0;
				LOC164 = containsorincl_268098(c, a, b);
				if (!LOC164) goto LA165;
				result = NIM_TRUE;
				goto BeforeRet;
			}
			LA165: ;
		}
		LA157: ;
		{
			NIM_BOOL LOC169;
			LOC169 = 0;
			LOC169 = ((*a).Kind == ((NU8) 52));
			if (!(LOC169)) goto LA170;
			LOC169 = !(((*a).N == NIM_NIL));
			LA170: ;
			if (!LOC169) goto LA171;
			result = ((*a).N == (*b).N);
			goto BeforeRet;
		}
		LA171: ;
		LOC173 = 0;
		LOC173 = samechildrenaux_269550(a, b, c);
		if (!(LOC173)) goto LA174;
		LOC173 = sameflags_269641(a, b);
		LA174: ;
		result = LOC173;
		{
			NIM_BOOL LOC177;
			NIM_BOOL LOC181;
			NIM_BOOL LOC182;
			NIM_BOOL LOC185;
			LOC177 = 0;
			LOC177 = result;
			if (!(LOC177)) goto LA178;
			LOC177 = ((*a).Kind == ((NU8) 25));
			LA178: ;
			if (!LOC177) goto LA179;
			LOC181 = 0;
			LOC182 = 0;
			LOC182 = (((*c).Flags &(1<<((((NU8) 1))&7)))!=0);
			if (LOC182) goto LA183;
			LOC182 = ((*a).Callconv == (*b).Callconv);
			LA183: ;
			LOC181 = LOC182;
			if (!(LOC181)) goto LA184;
			LOC185 = 0;
			LOC185 = !((((*c).Flags &(1<<((((NU8) 4))&7)))!=0));
			if (LOC185) goto LA186;
			LOC185 = sameconstraints_268527((*a).N, (*b).N);
			LA186: ;
			LOC181 = LOC185;
			LA184: ;
			result = LOC181;
		}
		LA179: ;
	}
	break;
	case ((NU8) 20):
	{
		NIM_BOOL LOC198;
		NIM_BOOL LOC199;
		{
			if (!((*c).Reccheck < 3)) goto LA190;
			(*c).Reccheck += 1;
		}
		goto LA188;
		LA190: ;
		{
			{
				NIM_BOOL LOC195;
				LOC195 = 0;
				LOC195 = containsorincl_268098(c, a, b);
				if (!LOC195) goto LA196;
				result = NIM_TRUE;
				goto BeforeRet;
			}
			LA196: ;
		}
		LA188: ;
		LOC198 = 0;
		LOC199 = 0;
		LOC199 = sametypeornilaux_268288((*a).Sons->data[0], (*b).Sons->data[0], c);
		if (!(LOC199)) goto LA200;
		LOC199 = samevalue_235350((*(*a).N).kindU.S6.Sons->data[0], (*(*b).N).kindU.S6.Sons->data[0]);
		LA200: ;
		LOC198 = LOC199;
		if (!(LOC198)) goto LA201;
		LOC198 = samevalue_235350((*(*a).N).kindU.S6.Sons->data[1], (*(*b).N).kindU.S6.Sons->data[1]);
		LA201: ;
		result = LOC198;
	}
	break;
	case ((NU8) 11):
	{
	}
	break;
	case ((NU8) 0):
	{
		result = NIM_FALSE;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, sametype_268351)(ttype225852* a, ttype225852* b, NU8 flags) {
	NIM_BOOL result;
	tsametypeclosure268067 c;
	result = 0;
	memset((void*)(&c), 0, sizeof(c));
	chckNil((void*)(&c));
	memset((void*)(&c), 0, sizeof(c));
	initsametypeclosure_268089((&c));
	c.Flags = flags;
	result = sametypeaux_268279(a, b, (&c));
	return result;
}

N_NIMCALL(NIM_BOOL, sameobjecttypes_269146)(ttype225852* a, ttype225852* 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;
			tsametypeclosure268067 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_268089((&c));
			result = sametypeaux_268279(a, b, (&c));
		}
		LA10: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, comparetypes_270571)(ttype225852* x, ttype225852* y, NU8 cmp, NU8 flags) {
	NIM_BOOL result;
	tsametypeclosure268067 c;
	result = 0;
	memset((void*)(&c), 0, sizeof(c));
	chckNil((void*)(&c));
	memset((void*)(&c), 0, sizeof(c));
	initsametypeclosure_268089((&c));
	c.Cmp = cmp;
	c.Flags = flags;
	result = sametypeaux_268279(x, y, (&c));
	return result;
}

N_NIMCALL(NIM_BOOL, iterovernode_264299)(intset222056* marker, tnode225816* n, ttypeiter263045 iter, TNimObject* closure) {
	NIM_BOOL result;
	result = 0;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		switch ((*n).Kind) {
		case ((NU8) 0) ... ((NU8) 23):
		{
			result = iterovertypeaux_264289(marker, (*n).Typ, iter, closure);
		}
		break;
		default:
		{
			{
				NI i_264336;
				NI HEX3Atmp_264352;
				NI LOC8;
				NI res_264355;
				i_264336 = 0;
				HEX3Atmp_264352 = 0;
				LOC8 = 0;
				LOC8 = sonslen_226249(n);
				HEX3Atmp_264352 = (NI32)(LOC8 - 1);
				res_264355 = 0;
				{
					while (1) {
						if (!(res_264355 <= HEX3Atmp_264352)) goto LA10;
						i_264336 = res_264355;
						result = iterovernode_264299(marker, (*n).kindU.S6.Sons->data[i_264336], iter, closure);
						{
							if (!result) goto LA13;
							goto BeforeRet;
						}
						LA13: ;
						res_264355 += 1;
					} LA10: ;
				}
			}
		}
		break;
		}
	}
	LA3: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, iterovertypeaux_264289)(intset222056* marker, ttype225852* t, ttypeiter263045 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_222916(marker, (*t).Sup.Id);
		if (!!(LOC11)) goto LA12;
		switch ((*t).Kind) {
		case ((NU8) 11):
		case ((NU8) 10):
		{
			ttype225852* LOC15;
			LOC15 = 0;
			LOC15 = lastson_226267(t);
			result = iterovertypeaux_264289(marker, LOC15, iter, closure);
		}
		break;
		default:
		{
			{
				NI i_264409;
				NI HEX3Atmp_264428;
				NI LOC18;
				NI res_264431;
				i_264409 = 0;
				HEX3Atmp_264428 = 0;
				LOC18 = 0;
				LOC18 = sonslen_226255(t);
				HEX3Atmp_264428 = (NI32)(LOC18 - 1);
				res_264431 = 0;
				{
					while (1) {
						if (!(res_264431 <= HEX3Atmp_264428)) goto LA20;
						i_264409 = res_264431;
						result = iterovertypeaux_264289(marker, (*t).Sons->data[i_264409], iter, closure);
						{
							if (!result) goto LA23;
							goto BeforeRet;
						}
						LA23: ;
						res_264431 += 1;
					} LA20: ;
				}
			}
			{
				if (!!(((*t).N == NIM_NIL))) goto LA27;
				result = iterovernode_264299(marker, (*t).N, iter, closure);
			}
			LA27: ;
		}
		break;
		}
	}
	LA12: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, iterovertype_263061)(ttype225852* t, ttypeiter263045 iter, TNimObject* closure) {
	NIM_BOOL result;
	intset222056 marker;
	result = 0;
	memset((void*)(&marker), 0, sizeof(marker));
	chckNil((void*)(&marker));
	memset((void*)(&marker), 0, sizeof(marker));
	initintset_222950((&marker));
	result = iterovertypeaux_264289((&marker), t, iter, closure);
	return result;
}

N_NIMCALL(NIM_BOOL, containsgenerictypeiter_272826)(ttype225852* 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;
		{
			ttype225852* LOC11;
			LOC11 = 0;
			LOC11 = base_263038(t);
			if (!((*LOC11).Kind == ((NU8) 0))) goto LA12;
			result = NIM_TRUE;
			goto BeforeRet;
		}
		LA12: ;
		{
			ttype225852* LOC16;
			NIM_BOOL LOC17;
			LOC16 = 0;
			LOC16 = base_263038(t);
			LOC17 = 0;
			LOC17 = containsgenerictypeiter_272826(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_272929)(ttype225852* t) {
	NIM_BOOL result;
	result = 0;
	result = iterovertype_263061(t, containsgenerictypeiter_272826, NIM_NIL);
	return result;
}

N_NIMCALL(NI, inheritancediff_270588)(ttype225852* a, ttype225852* b) {
	NI result;
	ttype225852* x;
	ttype225852* 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 = 0;
		goto BeforeRet;
	}
	LA7: ;
	x = a;
	result = 0;
	{
		while (1) {
			if (!!((x == NIM_NIL))) goto LA10;
			x = skiptypes_230245(x, IL64(211106247215360));
			{
				NIM_BOOL LOC13;
				LOC13 = 0;
				LOC13 = sameobjecttypes_269146(x, b);
				if (!LOC13) goto LA14;
				goto BeforeRet;
			}
			LA14: ;
			x = (*x).Sons->data[0];
			result -= 1;
		} LA10: ;
	}
	y = b;
	result = 0;
	{
		while (1) {
			if (!!((y == NIM_NIL))) goto LA17;
			y = skiptypes_230245(y, IL64(211106247215360));
			{
				NIM_BOOL LOC20;
				LOC20 = 0;
				LOC20 = sameobjecttypes_269146(y, a);
				if (!LOC20) goto LA21;
				goto BeforeRet;
			}
			LA21: ;
			y = (*y).Sons->data[0];
			result += 1;
		} LA17: ;
	}
	result = 2147483647;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, safeinheritancediff_273032)(ttype225852* a, ttype225852* 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 = -1;
	}
	goto LA1;
	LA5: ;
	{
		result = inheritancediff_270588(a, b);
	}
	LA1: ;
	return result;
}

N_NIMCALL(NIM_BOOL, compatibleeffectsaux_273061)(tnode225816* se, tnode225816* re) {
	NIM_BOOL result;
	result = 0;
	{
		if (!re == 0) goto LA3;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	{
		tnode225816* r_273077;
		r_273077 = 0;
		{
			NI i_273093;
			NI HEX3Atmp_273095;
			NI LOC7;
			NI res_273097;
			i_273093 = 0;
			HEX3Atmp_273095 = 0;
			LOC7 = 0;
			LOC7 = len_226364(re);
			HEX3Atmp_273095 = (LOC7 - 1);
			res_273097 = 0;
			{
				while (1) {
					if (!(res_273097 <= HEX3Atmp_273095)) goto LA9;
					i_273093 = res_273097;
					r_273077 = (*re).kindU.S6.Sons->data[i_273093];
					{
						{
							tnode225816* s_273079;
							s_273079 = 0;
							{
								NI i_273085;
								NI HEX3Atmp_273087;
								NI LOC13;
								NI res_273089;
								i_273085 = 0;
								HEX3Atmp_273087 = 0;
								LOC13 = 0;
								LOC13 = len_226364(se);
								HEX3Atmp_273087 = (LOC13 - 1);
								res_273089 = 0;
								{
									while (1) {
										if (!(res_273089 <= HEX3Atmp_273087)) goto LA15;
										i_273085 = res_273089;
										s_273079 = (*se).kindU.S6.Sons->data[i_273085];
										{
											NI LOC18;
											LOC18 = 0;
											LOC18 = safeinheritancediff_273032((*r_273077).Typ, (*s_273079).Typ);
											if (!(LOC18 <= 0)) goto LA19;
											goto LA10;
										}
										LA19: ;
										res_273089 += 1;
									} LA15: ;
								}
							}
						}
						result = NIM_FALSE;
						goto BeforeRet;
					} LA10: ;
					res_273097 += 1;
				} LA9: ;
			}
		}
	}
	result = NIM_TRUE;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, compatibleeffects_273131)(ttype225852* formal, ttype225852* actual) {
	NIM_BOOL result;
	tnode225816* spec;
	NIM_BOOL LOC46;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!!(((*(*(*formal).N).kindU.S6.Sons->data[0]).Kind == ((NU8) 151)))) goto LA3;
		LOC5 = 0;
		LOC5 = HEX24_198126(TMP2680);
		internalerror_198006(LOC5);
	}
	LA3: ;
	{
		NimStringDesc* LOC10;
		if (!!(((*(*(*actual).N).kindU.S6.Sons->data[0]).Kind == ((NU8) 151)))) goto LA8;
		LOC10 = 0;
		LOC10 = HEX24_198126(TMP2681);
		internalerror_198006(LOC10);
	}
	LA8: ;
	spec = (*(*formal).N).kindU.S6.Sons->data[0];
	{
		NI LOC13;
		tnode225816* real;
		tnode225816* se;
		tnode225816* st;
		LOC13 = 0;
		LOC13 = len_226364(spec);
		if (!!((LOC13 == 0))) goto LA14;
		real = (*(*actual).N).kindU.S6.Sons->data[0];
		se = (*spec).kindU.S6.Sons->data[0];
		{
			NIM_BOOL LOC18;
			LOC18 = 0;
			LOC18 = !(se == 0);
			if (!(LOC18)) goto LA19;
			LOC18 = !(((*se).Kind == ((NU8) 151)));
			LA19: ;
			if (!LOC18) goto LA20;
			{
				NI LOC24;
				LOC24 = 0;
				LOC24 = len_226364(real);
				if (!(LOC24 == 0)) goto LA25;
				result = NIM_FALSE;
				goto BeforeRet;
			}
			LA25: ;
			result = compatibleeffectsaux_273061(se, (*real).kindU.S6.Sons->data[0]);
			{
				if (!!(result)) goto LA29;
				goto BeforeRet;
			}
			LA29: ;
		}
		LA20: ;
		st = (*spec).kindU.S6.Sons->data[3];
		{
			NIM_BOOL LOC33;
			LOC33 = 0;
			LOC33 = !(st == 0);
			if (!(LOC33)) goto LA34;
			LOC33 = !(((*st).Kind == ((NU8) 151)));
			LA34: ;
			if (!LOC33) goto LA35;
			{
				NI LOC39;
				LOC39 = 0;
				LOC39 = len_226364(real);
				if (!(LOC39 == 0)) goto LA40;
				result = NIM_FALSE;
				goto BeforeRet;
			}
			LA40: ;
			result = compatibleeffectsaux_273061(st, (*real).kindU.S6.Sons->data[3]);
			{
				if (!!(result)) goto LA44;
				goto BeforeRet;
			}
			LA44: ;
		}
		LA35: ;
	}
	LA14: ;
	LOC46 = 0;
	LOC46 = (((NI) ((*formal).Locklevel)) < 0);
	if (LOC46) goto LA47;
	LOC46 = (((NI) ((*actual).Locklevel)) <= ((NI) ((*formal).Locklevel)));
	LA47: ;
	result = LOC46;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getprocheader_263519)(tsym225846* sym, NU8 prefer) {
	NimStringDesc* result;
	NimStringDesc* LOC1;
	tnode225816* 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_263537;
		NI HEX3Atmp_263636;
		NI LOC3;
		NI res_263639;
		i_263537 = 0;
		HEX3Atmp_263636 = 0;
		LOC3 = 0;
		LOC3 = sonslen_226249(n);
		HEX3Atmp_263636 = (NI32)(LOC3 - 1);
		res_263639 = 1;
		{
			while (1) {
				tnode225816* p;
				if (!(res_263639 <= HEX3Atmp_263636)) goto LA5;
				i_263537 = res_263639;
				p = (*n).kindU.S6.Sons->data[i_263537];
				{
					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*) &TMP2083));
					LOC10 = 0;
					LOC10 = typetostring_263031((*(*p).kindU.S4.Sym).Typ, prefer);
					result = resizeString(result, LOC10->Sup.len + 0);
appendString(result, LOC10);
					{
						NI LOC13;
						LOC13 = 0;
						LOC13 = sonslen_226249(n);
						if (!!((i_263537 == (NI32)(LOC13 - 1)))) goto LA14;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TMP2050));
					}
					LA14: ;
				}
				goto LA6;
				LA8: ;
				{
					internalerror_198006(((NimStringDesc*) &TMP2688));
				}
				LA6: ;
				res_263639 += 1;
			} LA5: ;
		}
	}
	result = addChar(result, 41);
	{
		NimStringDesc* LOC21;
		NimStringDesc* LOC22;
		if (!!(((*(*n).kindU.S6.Sons->data[0]).Typ == NIM_NIL))) goto LA19;
		LOC21 = 0;
		LOC22 = 0;
		LOC22 = typetostring_263031((*(*n).kindU.S6.Sons->data[0]).Typ, prefer);
		LOC21 = rawNewString(LOC22->Sup.len + 2);
appendString(LOC21, ((NimStringDesc*) &TMP2083));
appendString(LOC21, LOC22);
		result = resizeString(result, LOC21->Sup.len + 0);
appendString(result, LOC21);
	}
	LA19: ;
	return result;
}

N_NIMCALL(ttype225852*, elemtype_263656)(ttype225852* t) {
	ttype225852* result;
	result = 0;
	switch ((*t).Kind) {
	case ((NU8) 11):
	case ((NU8) 13):
	{
		ttype225852* LOC2;
		LOC2 = 0;
		LOC2 = lastson_226267(t);
		result = elemtype_263656(LOC2);
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		result = (*t).Sons->data[1];
	}
	break;
	default:
	{
		result = (*t).Sons->data[0];
	}
	break;
	}
	return result;
}

N_NIMCALL(NU8, classify_273705)(ttype225852* t) {
	NU8 result;
	result = 0;
	{
		if (!(t == NIM_NIL)) goto LA3;
		result = ((NU8) 0);
	}
	goto LA1;
	LA3: ;
	{
		ttype225852* LOC6;
		LOC6 = 0;
		LOC6 = skiptypes_230245(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(tnode225816*, skipconv_273732)(tnode225816* n) {
	tnode225816* 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_273705((*(*n).kindU.S6.Sons->data[0]).Typ);
			LOC5 = 0;
			LOC5 = classify_273705((*n).Typ);
			if (!(LOC4 == LOC5)) goto LA6;
			result = (*n).kindU.S6.Sons->data[0];
		}
		LA6: ;
	}
	break;
	case ((NU8) 58):
	case ((NU8) 59):
	case ((NU8) 60):
	{
		{
			NU8 LOC11;
			NU8 LOC12;
			LOC11 = 0;
			LOC11 = classify_273705((*(*n).kindU.S6.Sons->data[1]).Typ);
			LOC12 = 0;
			LOC12 = classify_273705((*n).Typ);
			if (!(LOC11 == LOC12)) goto LA13;
			result = (*n).kindU.S6.Sons->data[1];
		}
		LA13: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}

N_NIMCALL(NI64, align_272256)(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_264806)(ttype225852* 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[0] == NIM_NIL);
	LA4: ;
	LOC2 = LOC3;
	if (!(LOC2)) goto LA5;
	LOC6 = 0;
	LOC6 = !(((*t).Sym == NIM_NIL));
	if (!(LOC6)) goto LA7;
	LOC6 = (((*(*t).Sym).Flags &(1<<((((NU8) 9))&31)))!=0);
	LA7: ;
	LOC2 = !(LOC6);
	LA5: ;
	LOC1 = LOC2;
	if (!(LOC1)) goto LA8;
	LOC1 = !((((*t).Flags &(1<<((((NU8) 2))&31)))!=0));
	LA8: ;
	result = LOC1;
	return result;
}

static N_INLINE(tnode225816*, lastson_226261)(tnode225816* n) {
	tnode225816* result;
	NI LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = sonslen_226249(n);
	result = (*n).kindU.S6.Sons->data[(NI32)(LOC1 - 1)];
	return result;
}

N_NIMCALL(NI64, computerecsizeaux_272281)(tnode225816* 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) 138):
	{
		NI64 LOC13;
		NI64 LOC14;
		result = computerecsizeaux_272281((*n).kindU.S6.Sons->data[0], a, curroffset);
		maxsize = IL64(0);
		maxalign = IL64(1);
		{
			NI i_272427;
			NI HEX3Atmp_272529;
			NI LOC3;
			NI res_272532;
			i_272427 = 0;
			HEX3Atmp_272529 = 0;
			LOC3 = 0;
			LOC3 = sonslen_226249(n);
			HEX3Atmp_272529 = (NI32)(LOC3 - 1);
			res_272532 = 1;
			{
				while (1) {
					if (!(res_272532 <= HEX3Atmp_272529)) goto LA5;
					i_272427 = res_272532;
					switch ((*(*n).kindU.S6.Sons->data[i_272427]).Kind) {
					case ((NU8) 85):
					case ((NU8) 88):
					{
						tnode225816* LOC7;
						LOC7 = 0;
						LOC7 = lastson_226261((*n).kindU.S6.Sons->data[i_272427]);
						res = computerecsizeaux_272281(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_198006(((NimStringDesc*) &TMP2832));
					}
					break;
					}
					res_272532 += 1;
				} LA5: ;
			}
		}
		LOC13 = 0;
		LOC13 = align_272256((*curroffset), maxalign);
		(*curroffset) = (NI64)(LOC13 + maxsize);
		LOC14 = 0;
		LOC14 = align_272256(result, maxalign);
		result = (NI64)(LOC14 + maxsize);
		(*a) = maxalign;
	}
	break;
	case ((NU8) 137):
	{
		result = IL64(0);
		maxalign = IL64(1);
		{
			NI i_272477;
			NI HEX3Atmp_272535;
			NI LOC17;
			NI res_272538;
			i_272477 = 0;
			HEX3Atmp_272535 = 0;
			LOC17 = 0;
			LOC17 = sonslen_226249(n);
			HEX3Atmp_272535 = (NI32)(LOC17 - 1);
			res_272538 = 0;
			{
				while (1) {
					NI64 LOC24;
					NI64 LOC25;
					if (!(res_272538 <= HEX3Atmp_272535)) goto LA19;
					i_272477 = res_272538;
					res = computerecsizeaux_272281((*n).kindU.S6.Sons->data[i_272477], (&b), curroffset);
					{
						if (!(res < IL64(0))) goto LA22;
						result = res;
						goto BeforeRet;
					}
					LA22: ;
					LOC24 = 0;
					LOC24 = align_272256((*curroffset), b);
					(*curroffset) = (NI64)(LOC24 + res);
					LOC25 = 0;
					LOC25 = align_272256(result, b);
					result = (NI64)(LOC25 + res);
					{
						if (!(maxalign < b)) goto LA28;
						maxalign = b;
					}
					LA28: ;
					res_272538 += 1;
				} LA19: ;
			}
		}
		(*a) = maxalign;
	}
	break;
	case ((NU8) 3):
	{
		result = computesizeaux_272273((*(*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_272273)(ttype225852* 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_174610));
		(*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_174611));
		(*a) = result;
	}
	break;
	case ((NU8) 25):
	{
		{
			if (!((*typ).Callconv == ((NU8) 8))) goto LA19;
			result = ((NI64) ((NI32)(2 * ptrsize_174612)));
		}
		goto LA17;
		LA19: ;
		{
			result = ((NI64) (ptrsize_174612));
		}
		LA17: ;
		(*a) = ((NI64) (ptrsize_174612));
	}
	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):
	{
		ttype225852* base;
		base = lastson_226267(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_174612));
		}
		LA23: ;
		(*a) = result;
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	{
		NI64 elemsize;
		NI64 LOC37;
		elemsize = computesizeaux_272273((*typ).Sons->data[1], a);
		{
			if (!(elemsize < IL64(0))) goto LA35;
			result = elemsize;
			goto BeforeRet;
		}
		LA35: ;
		LOC37 = 0;
		LOC37 = lengthord_263016((*typ).Sons->data[0]);
		result = (NI64)(LOC37 * elemsize);
	}
	break;
	case ((NU8) 14):
	{
		{
			NI64 LOC41;
			LOC41 = 0;
			LOC41 = firstord_263004(typ);
			if (!(LOC41 < IL64(0))) goto LA42;
			result = IL64(4);
		}
		goto LA39;
		LA42: ;
		{
			length = lastord_263010(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):
	{
		length = lengthord_263016((*typ).Sons->data[0]);
		{
			if (!(length <= IL64(8))) goto LA59;
			result = IL64(1);
		}
		goto LA57;
		LA59: ;
		{
			if (!(length <= IL64(16))) goto LA62;
			result = IL64(2);
		}
		goto LA57;
		LA62: ;
		{
			if (!(length <= IL64(32))) goto LA65;
			result = IL64(4);
		}
		goto LA57;
		LA65: ;
		{
			if (!(length <= IL64(64))) goto LA68;
			result = IL64(8);
		}
		goto LA57;
		LA68: ;
		{
			NI64 LOC71;
			NI64 LOC74;
			LOC71 = 0;
			LOC71 = align_272256(length, IL64(8));
			if (!(((NI) ((NI64)(LOC71 % IL64(8)))) == 0)) goto LA72;
			LOC74 = 0;
			LOC74 = align_272256(length, IL64(8));
			result = (NI64)(LOC74 / IL64(8));
		}
		goto LA57;
		LA72: ;
		{
			NI64 LOC76;
			LOC76 = 0;
			LOC76 = align_272256(length, IL64(8));
			result = (NI64)((NI64)(LOC76 / IL64(8)) + IL64(1));
		}
		LA57: ;
		(*a) = result;
	}
	break;
	case ((NU8) 20):
	{
		result = computesizeaux_272273((*typ).Sons->data[0], a);
	}
	break;
	case ((NU8) 18):
	{
		result = IL64(0);
		maxalign = IL64(1);
		{
			NI i_272634;
			NI HEX3Atmp_272668;
			NI LOC80;
			NI res_272671;
			i_272634 = 0;
			HEX3Atmp_272668 = 0;
			LOC80 = 0;
			LOC80 = sonslen_226255(typ);
			HEX3Atmp_272668 = (NI32)(LOC80 - 1);
			res_272671 = 0;
			{
				while (1) {
					NI64 LOC87;
					if (!(res_272671 <= HEX3Atmp_272668)) goto LA82;
					i_272634 = res_272671;
					res = computesizeaux_272273((*typ).Sons->data[i_272634], a);
					{
						if (!(res < IL64(0))) goto LA85;
						result = res;
						goto BeforeRet;
					}
					LA85: ;
					maxalign = ((maxalign >= (*a)) ? maxalign : (*a));
					LOC87 = 0;
					LOC87 = align_272256(result, (*a));
					result = (NI64)(LOC87 + res);
					res_272671 += 1;
				} LA82: ;
			}
		}
		result = align_272256(result, maxalign);
		(*a) = maxalign;
	}
	break;
	case ((NU8) 17):
	{
		{
			if (!!(((*typ).Sons->data[0] == NIM_NIL))) goto LA91;
			result = computesizeaux_272273((*typ).Sons->data[0], a);
			{
				if (!(result < IL64(0))) goto LA95;
				goto BeforeRet;
			}
			LA95: ;
			maxalign = (*a);
		}
		goto LA89;
		LA91: ;
		{
			NIM_BOOL LOC98;
			LOC98 = 0;
			LOC98 = isobjectwithtypefieldpredicate_264806(typ);
			if (!LOC98) goto LA99;
			result = ((NI64) (intsize_174610));
			maxalign = result;
		}
		goto LA89;
		LA99: ;
		{
			result = IL64(0);
			maxalign = IL64(1);
		}
		LA89: ;
		curroffset = result;
		result = computerecsizeaux_272281((*typ).N, a, (&curroffset));
		{
			if (!(result < IL64(0))) goto LA104;
			goto BeforeRet;
		}
		LA104: ;
		{
			if (!((*a) < maxalign)) goto LA108;
			(*a) = maxalign;
		}
		LA108: ;
		result = align_272256(result, (*a));
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	case ((NU8) 10):
	case ((NU8) 47):
	case ((NU8) 46):
	case ((NU8) 49):
	{
		ttype225852* LOC111;
		LOC111 = 0;
		LOC111 = lastson_226267(typ);
		result = computesizeaux_272273(LOC111, a);
	}
	break;
	case ((NU8) 8):
	{
		ttype225852* LOC113;
		LOC113 = 0;
		LOC113 = base_263038(typ);
		result = computesizeaux_272273(LOC113, 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_263193)(ttype225852* typ) {
	NI64 result;
	NI64 a;
	result = 0;
	a = IL64(1);
	result = computesizeaux_272273(typ, (&a));
	return result;
}

N_NIMCALL(NI64, getsize_263199)(ttype225852* typ) {
	NI64 result;
	result = 0;
	result = computesize_263193(typ);
	{
		NimStringDesc* LOC5;
		if (!(result < IL64(0))) goto LA3;
		LOC5 = 0;
		LOC5 = rawNewString(reprEnum((*typ).Kind, (&NTI225258))->Sup.len + 9);
appendString(LOC5, ((NimStringDesc*) &TMP2833));
appendString(LOC5, reprEnum((*typ).Kind, (&NTI225258)));
		internalerror_198006(LOC5);
	}
	LA3: ;
	return result;
}

N_NIMCALL(NIM_BOOL, enumhasholes_263098)(ttype225852* t) {
	NIM_BOOL result;
	ttype225852* 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[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(NIM_BOOL, sametypeornil_268367)(ttype225852* a, ttype225852* 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_268351(a, b, flags);
		}
		LA6: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(NU8, equalparam_268431)(tsym225846* a, tsym225846* b) {
	NU8 result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sametypeornil_268367((*a).Typ, (*b).Typ, 4);
		if (!(LOC3)) goto LA4;
		LOC3 = exprstructuralequivalent_261184((*a).Constraint, (*b).Constraint);
		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_261184((*a).Ast, (*b).Ast);
				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_263085)(tnode225816* a, tnode225816* b) {
	NU8 result;
	NI length;
	result = 0;
	result = ((NU8) 1);
	length = sonslen_226249(a);
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = sonslen_226249(b);
		if (!!((length == LOC3))) goto LA4;
		result = ((NU8) 0);
	}
	goto LA1;
	LA4: ;
	{
		{
			NI i_268628;
			NI HEX3Atmp_268893;
			NI res_268896;
			i_268628 = 0;
			HEX3Atmp_268893 = 0;
			HEX3Atmp_268893 = (NI32)(length - 1);
			res_268896 = 1;
			{
				while (1) {
					tsym225846* m;
					tsym225846* n;
					NU8 LOC10;
					if (!(res_268896 <= HEX3Atmp_268893)) goto LA9;
					i_268628 = res_268896;
					m = (*(*a).kindU.S6.Sons->data[i_268628]).kindU.S4.Sym;
					n = (*(*b).kindU.S6.Sons->data[i_268628]).kindU.S4.Sym;
					LOC10 = 0;
					LOC10 = equalparam_268431(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_268896 += 1;
				} LA9: ;
			}
		}
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = sametypeornil_268367((*(*a).kindU.S6.Sons->data[0]).Typ, (*(*b).kindU.S6.Sons->data[0]).Typ, 4);
			if (!!(LOC20)) goto LA21;
			{
				NIM_BOOL LOC25;
				LOC25 = 0;
				LOC25 = ((*(*a).kindU.S6.Sons->data[0]).Typ == NIM_NIL);
				if (LOC25) goto LA26;
				LOC25 = ((*(*b).kindU.S6.Sons->data[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(NIM_BOOL, typeallowednode_271480)(intset222056* marker, tnode225816* n, NU8 kind, NU8 flags) {
	NIM_BOOL result;
	result = 0;
	result = NIM_TRUE;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		result = typeallowedaux_271468(marker, (*n).Typ, kind, flags);
		{
			if (!result) goto LA7;
			switch ((*n).Kind) {
			case ((NU8) 0) ... ((NU8) 23):
			{
			}
			break;
			default:
			{
				{
					NI i_271519;
					NI HEX3Atmp_271535;
					NI LOC12;
					NI res_271538;
					i_271519 = 0;
					HEX3Atmp_271535 = 0;
					LOC12 = 0;
					LOC12 = sonslen_226249(n);
					HEX3Atmp_271535 = (NI32)(LOC12 - 1);
					res_271538 = 0;
					{
						while (1) {
							if (!(res_271538 <= HEX3Atmp_271535)) goto LA14;
							i_271519 = res_271538;
							result = typeallowednode_271480(marker, (*n).kindU.S6.Sons->data[i_271519], kind, flags);
							{
								if (!!(result)) goto LA17;
								goto LA11;
							}
							LA17: ;
							res_271538 += 1;
						} LA14: ;
					}
				} LA11: ;
			}
			break;
			}
		}
		LA7: ;
	}
	LA3: ;
	return result;
}

N_NIMCALL(NIM_BOOL, typeallowedaux_271468)(intset222056* marker, ttype225852* typ, NU8 kind, NU8 flags_271476) {
	NIM_BOOL result;
	ttype225852* t;
	result = 0;
	result = NIM_TRUE;
	{
		if (!(typ == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = containsorincl_222916(marker, (*typ).Sup.Id);
		if (!LOC7) goto LA8;
		goto BeforeRet;
	}
	LA8: ;
	t = skiptypes_230245(typ, IL64(211106232576000));
	switch ((*t).Kind) {
	case ((NU8) 23):
	{
		ttype225852* t2;
		{
			if (!(kind == ((NU8) 10))) goto LA13;
			result = NIM_FALSE;
			goto BeforeRet;
		}
		LA13: ;
		t2 = skiptypes_230245((*t).Sons->data[0], IL64(211106232576000));
		switch ((*t2).Kind) {
		case ((NU8) 23):
		{
			result = ((flags_271476 &(1<<((((NU8) 1))&7)))!=0);
		}
		break;
		case ((NU8) 27):
		{
			NIM_BOOL LOC17;
			LOC17 = 0;
			LOC17 = (kind == ((NU8) 3));
			if (!(LOC17)) goto LA18;
			LOC17 = typeallowedaux_271468(marker, t2, kind, flags_271476);
			LA18: ;
			result = LOC17;
		}
		break;
		default:
		{
			NIM_BOOL LOC20;
			LOC20 = 0;
			LOC20 = ((2056 &(1<<((kind)&31)))!=0);
			if (!(LOC20)) goto LA21;
			LOC20 = typeallowedaux_271468(marker, t2, kind, flags_271476);
			LA21: ;
			result = LOC20;
		}
		break;
		}
	}
	break;
	case ((NU8) 25):
	{
		{
			NI i_271913;
			NI HEX3Atmp_272191;
			NI LOC24;
			NI res_272194;
			i_271913 = 0;
			HEX3Atmp_272191 = 0;
			LOC24 = 0;
			LOC24 = sonslen_226255(t);
			HEX3Atmp_272191 = (NI32)(LOC24 - 1);
			res_272194 = 1;
			{
				while (1) {
					if (!(res_272194 <= HEX3Atmp_272191)) goto LA26;
					i_271913 = res_272194;
					result = typeallowedaux_271468(marker, (*t).Sons->data[i_271913], ((NU8) 3), flags_271476);
					{
						if (!!(result)) goto LA29;
						goto LA23;
					}
					LA29: ;
					res_272194 += 1;
				} LA26: ;
			}
		} LA23: ;
		{
			NIM_BOOL LOC33;
			LOC33 = 0;
			LOC33 = result;
			if (!(LOC33)) goto LA34;
			LOC33 = !(((*t).Sons->data[0] == NIM_NIL));
			LA34: ;
			if (!LOC33) goto LA35;
			result = typeallowedaux_271468(marker, (*t).Sons->data[0], ((NU8) 11), flags_271476);
		}
		LA35: ;
	}
	break;
	case ((NU8) 6):
	case ((NU8) 7):
	case ((NU8) 8):
	case ((NU8) 59):
	{
		result = NIM_TRUE;
	}
	break;
	case ((NU8) 3):
	{
		result = ((flags_271476 &(1<<((((NU8) 0))&7)))!=0);
	}
	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 LOC40;
		LOC40 = 0;
		LOC40 = (((*t).Flags &(1<<((((NU8) 23))&31)))!=0);
		if (LOC40) goto LA41;
		LOC40 = !(((flags_271476 &(1<<((((NU8) 0))&7)))!=0));
		LA41: ;
		result = LOC40;
	}
	break;
	case ((NU8) 10):
	case ((NU8) 12):
	case ((NU8) 9):
	case ((NU8) 0):
	case ((NU8) 30):
	case ((NU8) 60):
	case ((NU8) 61):
	{
		result = NIM_FALSE;
	}
	break;
	case ((NU8) 5):
	{
		result = (kind == ((NU8) 10));
	}
	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_TRUE;
	}
	break;
	case ((NU8) 15):
	{
		result = (kind == ((NU8) 3));
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	{
		ttype225852* LOC47;
		LOC47 = 0;
		LOC47 = lastson_226267(t);
		result = typeallowedaux_271468(marker, LOC47, kind, flags_271476);
	}
	break;
	case ((NU8) 20):
	{
		ttype225852* LOC49;
		LOC49 = 0;
		LOC49 = skiptypes_230245((*t).Sons->data[0], IL64(211106232576000));
		result = ((*LOC49).Kind == ((NU8) 2) || (*LOC49).Kind == ((NU8) 14) || (*LOC49).Kind >= ((NU8) 31) && (*LOC49).Kind <= ((NU8) 39));
	}
	break;
	case ((NU8) 27):
	case ((NU8) 48):
	{
		NIM_BOOL LOC51;
		LOC51 = 0;
		LOC51 = (kind == ((NU8) 3));
		if (!(LOC51)) goto LA52;
		LOC51 = typeallowedaux_271468(marker, (*t).Sons->data[0], ((NU8) 8), flags_271476);
		LA52: ;
		result = LOC51;
	}
	break;
	case ((NU8) 24):
	{
		NIM_BOOL LOC54;
		LOC54 = 0;
		LOC54 = ((*(*t).Sons->data[0]).Kind == ((NU8) 3));
		if (LOC54) goto LA55;
		LOC54 = typeallowedaux_271468(marker, (*t).Sons->data[0], ((NU8) 8), (flags_271476 | 2));
		LA55: ;
		result = LOC54;
	}
	break;
	case ((NU8) 16):
	{
		NIM_BOOL LOC57;
		LOC57 = 0;
		LOC57 = ((*(*t).Sons->data[1]).Kind == ((NU8) 3));
		if (LOC57) goto LA58;
		LOC57 = typeallowedaux_271468(marker, (*t).Sons->data[1], ((NU8) 8), flags_271476);
		LA58: ;
		result = LOC57;
	}
	break;
	case ((NU8) 22):
	{
		ttype225852* LOC64;
		{
			if (!(kind == ((NU8) 10))) goto LA62;
			result = NIM_FALSE;
			goto BeforeRet;
		}
		LA62: ;
		LOC64 = 0;
		LOC64 = lastson_226267(t);
		result = typeallowedaux_271468(marker, LOC64, ((NU8) 8), (flags_271476 | 2));
	}
	break;
	case ((NU8) 21):
	{
		ttype225852* LOC66;
		LOC66 = 0;
		LOC66 = lastson_226267(t);
		result = typeallowedaux_271468(marker, LOC66, ((NU8) 8), (flags_271476 | 2));
	}
	break;
	case ((NU8) 4):
	case ((NU8) 19):
	case ((NU8) 46):
	case ((NU8) 47):
	case ((NU8) 49):
	{
		{
			NI i_272122;
			NI HEX3Atmp_272197;
			NI LOC69;
			NI res_272200;
			i_272122 = 0;
			HEX3Atmp_272197 = 0;
			LOC69 = 0;
			LOC69 = sonslen_226255(t);
			HEX3Atmp_272197 = (NI32)(LOC69 - 1);
			res_272200 = 0;
			{
				while (1) {
					if (!(res_272200 <= HEX3Atmp_272197)) goto LA71;
					i_272122 = res_272200;
					result = typeallowedaux_271468(marker, (*t).Sons->data[i_272122], kind, flags_271476);
					{
						if (!!(result)) goto LA74;
						goto LA68;
					}
					LA74: ;
					res_272200 += 1;
				} LA71: ;
			}
		} LA68: ;
	}
	break;
	case ((NU8) 17):
	case ((NU8) 18):
	{
		NU8 flags;
		{
			NIM_BOOL LOC79;
			LOC79 = 0;
			LOC79 = (kind == ((NU8) 10));
			if (!(LOC79)) goto LA80;
			LOC79 = ((*t).Kind == ((NU8) 17));
			LA80: ;
			if (!LOC79) goto LA81;
			result = NIM_FALSE;
			goto BeforeRet;
		}
		LA81: ;
		flags = (flags_271476 | 1);
		{
			NI i_272172;
			NI HEX3Atmp_272203;
			NI LOC84;
			NI res_272206;
			i_272172 = 0;
			HEX3Atmp_272203 = 0;
			LOC84 = 0;
			LOC84 = sonslen_226255(t);
			HEX3Atmp_272203 = (NI32)(LOC84 - 1);
			res_272206 = 0;
			{
				while (1) {
					if (!(res_272206 <= HEX3Atmp_272203)) goto LA86;
					i_272172 = res_272206;
					result = typeallowedaux_271468(marker, (*t).Sons->data[i_272172], kind, flags);
					{
						if (!!(result)) goto LA89;
						goto LA83;
					}
					LA89: ;
					res_272206 += 1;
				} LA86: ;
			}
		} LA83: ;
		{
			NIM_BOOL LOC93;
			LOC93 = 0;
			LOC93 = result;
			if (!(LOC93)) goto LA94;
			LOC93 = !(((*t).N == NIM_NIL));
			LA94: ;
			if (!LOC93) goto LA95;
			result = typeallowednode_271480(marker, (*t).N, kind, flags);
		}
		LA95: ;
	}
	break;
	case ((NU8) 50):
	{
		result = NIM_TRUE;
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, typeallowed_263231)(ttype225852* t, NU8 kind) {
	NIM_BOOL result;
	intset222056 marker;
	result = 0;
	memset((void*)(&marker), 0, sizeof(marker));
	chckNil((void*)(&marker));
	memset((void*)(&marker), 0, sizeof(marker));
	initintset_222950((&marker));
	result = typeallowedaux_271468((&marker), t, kind, 0);
	return result;
}

N_NIMCALL(ttype225852*, commonsuperclass_271084)(ttype225852* a, ttype225852* b) {
	ttype225852* result;
	ttype225852* x;
	intset222056 ancestors;
	ttype225852* y;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = sameobjecttypes_269146(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_222950((&ancestors));
	{
		while (1) {
			if (!!((x == NIM_NIL))) goto LA7;
			x = skiptypes_230245(x, IL64(211106247215360));
			incl_222869((&ancestors), (*x).Sup.Id);
			x = (*x).Sons->data[0];
		} LA7: ;
	}
	y = b;
	{
		while (1) {
			if (!!((y == NIM_NIL))) goto LA9;
			y = skiptypes_230245(y, IL64(211106247215360));
			{
				NIM_BOOL LOC12;
				LOC12 = 0;
				LOC12 = contains_222837(ancestors, (*y).Sup.Id);
				if (!LOC12) goto LA13;
				result = y;
				goto BeforeRet;
			}
			LA13: ;
			y = (*y).Sons->data[0];
		} LA9: ;
	}
	BeforeRet: ;
	return result;
}

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

static N_INLINE(void, rtladdzct_50204)(tcell44935* c) {
	addzct_48617((&gch_47044.Zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tcell44935* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_48646(src);
		(*c).Refcount += 8;
	}
	LA3: ;
	{
		tcell44935* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_48646((*dest));
		{
			(*c).Refcount -= 8;
			if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA11;
			rtladdzct_50204(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

N_NIMCALL(ttype225852*, baseofdistinct_272939)(ttype225852* t) {
	ttype225852* result;
	result = 0;
	{
		if (!((*t).Kind == ((NU8) 13))) goto LA3;
		result = (*t).Sons->data[0];
	}
	goto LA1;
	LA3: ;
	{
		ttype225852* parent;
		ttype225852* it;
		result = copytype_226195(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_226267(it);
			} LA7: ;
		}
		{
			if (!((*it).Kind == ((NU8) 13))) goto LA10;
			{
				NimStringDesc* LOC16;
				if (!!(!((parent == NIM_NIL)))) goto LA14;
				LOC16 = 0;
				LOC16 = HEX24_198126(TMP3227);
				internalerror_198006(LOC16);
			}
			LA14: ;
			asgnRefNoCycle((void**) (&(*parent).Sons->data[0]), (*it).Sons->data[0]);
		}
		LA10: ;
	}
	LA1: ;
	return result;
}

N_NIMCALL(tnode225816*, skipconvtaketype_273816)(tnode225816* n) {
	tnode225816* result;
	result = 0;
	result = skipconv_273732(n);
	asgnRefNoCycle((void**) (&(*result).Typ), (*n).Typ);
	return result;
}

N_NIMCALL(NIM_BOOL, searchtypenodeforaux_264471)(tnode225816* n, ttypepredicate263049 p, intset222056* marker) {
	NIM_BOOL result;
	result = 0;
	result = NIM_FALSE;
	switch ((*n).Kind) {
	case ((NU8) 137):
	{
		{
			NI i_264490;
			NI HEX3Atmp_264671;
			NI LOC3;
			NI res_264674;
			i_264490 = 0;
			HEX3Atmp_264671 = 0;
			LOC3 = 0;
			LOC3 = sonslen_226249(n);
			HEX3Atmp_264671 = (NI32)(LOC3 - 1);
			res_264674 = 0;
			{
				while (1) {
					if (!(res_264674 <= HEX3Atmp_264671)) goto LA5;
					i_264490 = res_264674;
					result = searchtypenodeforaux_264471((*n).kindU.S6.Sons->data[i_264490], p, marker);
					{
						if (!result) goto LA8;
						goto BeforeRet;
					}
					LA8: ;
					res_264674 += 1;
				} LA5: ;
			}
		}
	}
	break;
	case ((NU8) 138):
	{
		result = searchtypenodeforaux_264471((*n).kindU.S6.Sons->data[0], p, marker);
		{
			if (!result) goto LA13;
			goto BeforeRet;
		}
		LA13: ;
		{
			NI i_264627;
			NI HEX3Atmp_264677;
			NI LOC16;
			NI res_264680;
			i_264627 = 0;
			HEX3Atmp_264677 = 0;
			LOC16 = 0;
			LOC16 = sonslen_226249(n);
			HEX3Atmp_264677 = (NI32)(LOC16 - 1);
			res_264680 = 1;
			{
				while (1) {
					if (!(res_264680 <= HEX3Atmp_264677)) goto LA18;
					i_264627 = res_264680;
					switch ((*(*n).kindU.S6.Sons->data[i_264627]).Kind) {
					case ((NU8) 85):
					case ((NU8) 88):
					{
						tnode225816* LOC20;
						LOC20 = 0;
						LOC20 = lastson_226261((*n).kindU.S6.Sons->data[i_264627]);
						result = searchtypenodeforaux_264471(LOC20, p, marker);
						{
							if (!result) goto LA23;
							goto BeforeRet;
						}
						LA23: ;
					}
					break;
					default:
					{
						internalerror_198006(((NimStringDesc*) &TMP3277));
					}
					break;
					}
					res_264680 += 1;
				} LA18: ;
			}
		}
	}
	break;
	case ((NU8) 3):
	{
		result = searchtypeforaux_264462((*(*n).kindU.S4.Sym).Typ, p, marker);
	}
	break;
	default:
	{
		internalerror_197987((*n).Info, ((NimStringDesc*) &TMP3278));
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, searchtypeforaux_264462)(ttype225852* t, ttypepredicate263049 predicate, intset222056* 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_222916(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_264462((*t).Sons->data[0], predicate, marker);
		{
			if (!!(result)) goto LA17;
			result = searchtypenodeforaux_264471((*t).N, predicate, marker);
		}
		LA17: ;
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	{
		ttype225852* LOC20;
		LOC20 = 0;
		LOC20 = lastson_226267(t);
		result = searchtypeforaux_264462(LOC20, predicate, marker);
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 19):
	case ((NU8) 18):
	{
		{
			NI i_264742;
			NI HEX3Atmp_264744;
			NI LOC23;
			NI res_264747;
			i_264742 = 0;
			HEX3Atmp_264744 = 0;
			LOC23 = 0;
			LOC23 = sonslen_226255(t);
			HEX3Atmp_264744 = (NI32)(LOC23 - 1);
			res_264747 = 0;
			{
				while (1) {
					if (!(res_264747 <= HEX3Atmp_264744)) goto LA25;
					i_264742 = res_264747;
					result = searchtypeforaux_264462((*t).Sons->data[i_264742], predicate, marker);
					{
						if (!result) goto LA28;
						goto BeforeRet;
					}
					LA28: ;
					res_264747 += 1;
				} LA25: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, searchtypefor_264764)(ttype225852* t, ttypepredicate263049 predicate) {
	NIM_BOOL result;
	intset222056 marker;
	result = 0;
	memset((void*)(&marker), 0, sizeof(marker));
	chckNil((void*)(&marker));
	memset((void*)(&marker), 0, sizeof(marker));
	initintset_222950((&marker));
	result = searchtypeforaux_264462(t, predicate, (&marker));
	return result;
}

N_NIMCALL(NIM_BOOL, isgcref_265037)(ttype225852* 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_263163)(ttype225852* typ) {
	NIM_BOOL result;
	result = 0;
	result = searchtypefor_264764(typ, isgcref_265037);
	return result;
}

N_NIMCALL(NIM_BOOL, samebackendtype_270542)(ttype225852* x, ttype225852* y) {
	NIM_BOOL result;
	tsametypeclosure268067 c;
	result = 0;
	memset((void*)(&c), 0, sizeof(c));
	chckNil((void*)(&c));
	memset((void*)(&c), 0, sizeof(c));
	initsametypeclosure_268089((&c));
	c.Flags |= ((NI8)1)<<((((NU8) 0))%(sizeof(NI8)*8));
	result = sametypeaux_268279(x, y, (&c));
	return result;
}

N_NIMCALL(NIM_BOOL, ispureobject_263205)(ttype225852* typ) {
	NIM_BOOL result;
	ttype225852* 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[0] == NIM_NIL));
			LA4: ;
			if (!LOC3) goto LA2;
			t = (*t).Sons->data[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_265178)(intset222056* marker, tnode225816* n, NI startid) {
	NIM_BOOL result;
	result = 0;
	result = NIM_FALSE;
	{
		if (!!((n == NIM_NIL))) goto LA3;
		result = canformacycleaux_265169(marker, (*n).Typ, startid);
		{
			if (!!(result)) goto LA7;
			switch ((*n).Kind) {
			case ((NU8) 0) ... ((NU8) 23):
			{
			}
			break;
			default:
			{
				{
					NI i_265214;
					NI HEX3Atmp_265230;
					NI LOC12;
					NI res_265233;
					i_265214 = 0;
					HEX3Atmp_265230 = 0;
					LOC12 = 0;
					LOC12 = sonslen_226249(n);
					HEX3Atmp_265230 = (NI32)(LOC12 - 1);
					res_265233 = 0;
					{
						while (1) {
							if (!(res_265233 <= HEX3Atmp_265230)) goto LA14;
							i_265214 = res_265233;
							result = canformacyclenode_265178(marker, (*n).kindU.S6.Sons->data[i_265214], startid);
							{
								if (!result) goto LA17;
								goto BeforeRet;
							}
							LA17: ;
							res_265233 += 1;
						} LA14: ;
					}
				}
			}
			break;
			}
		}
		LA7: ;
	}
	LA3: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NIM_BOOL, canformacycleaux_265169)(intset222056* marker, ttype225852* typ, NI startid) {
	NIM_BOOL result;
	ttype225852* 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_230245(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_222916(marker, (*t).Sup.Id);
			if (!!(LOC16)) goto LA17;
			{
				NI i_265331;
				NI HEX3Atmp_265381;
				NI LOC20;
				NI res_265384;
				i_265331 = 0;
				HEX3Atmp_265381 = 0;
				LOC20 = 0;
				LOC20 = sonslen_226255(t);
				HEX3Atmp_265381 = (NI32)(LOC20 - 1);
				res_265384 = 0;
				{
					while (1) {
						if (!(res_265384 <= HEX3Atmp_265381)) goto LA22;
						i_265331 = res_265384;
						result = canformacycleaux_265169(marker, (*t).Sons->data[i_265331], startid);
						{
							if (!result) goto LA25;
							goto BeforeRet;
						}
						LA25: ;
						res_265384 += 1;
					} LA22: ;
				}
			}
			{
				if (!!(((*t).N == NIM_NIL))) goto LA29;
				result = canformacyclenode_265178(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_263175)(ttype225852* typ) {
	NIM_BOOL result;
	intset222056 marker;
	result = 0;
	memset((void*)(&marker), 0, sizeof(marker));
	chckNil((void*)(&marker));
	memset((void*)(&marker), 0, sizeof(marker));
	initintset_222950((&marker));
	result = canformacycleaux_265169((&marker), typ, (*typ).Sup.Id);
	return result;
}

N_NIMCALL(NU8, analyseobjectwithtypefieldaux_264885)(ttype225852* t, intset222056* 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_264471((*t).N, isobjectwithtypefieldpredicate_264806, marker);
				if (!LOC12) goto LA13;
				result = ((NU8) 2);
				goto BeforeRet;
			}
			LA13: ;
		}
		LA8: ;
		{
			NI i_264938;
			NI HEX3Atmp_264990;
			NI LOC16;
			NI res_264993;
			i_264938 = 0;
			HEX3Atmp_264990 = 0;
			LOC16 = 0;
			LOC16 = sonslen_226255(t);
			HEX3Atmp_264990 = (NI32)(LOC16 - 1);
			res_264993 = 0;
			{
				while (1) {
					if (!(res_264993 <= HEX3Atmp_264990)) goto LA18;
					i_264938 = res_264993;
					res = analyseobjectwithtypefieldaux_264885((*t).Sons->data[i_264938], marker);
					{
						if (!(res == ((NU8) 2))) goto LA21;
						result = ((NU8) 2);
						goto BeforeRet;
					}
					LA21: ;
					{
						if (!(res == ((NU8) 1))) goto LA25;
						result = ((NU8) 1);
					}
					LA25: ;
					res_264993 += 1;
				} LA18: ;
			}
		}
		{
			if (!(result == ((NU8) 0))) goto LA29;
			{
				NIM_BOOL LOC33;
				LOC33 = 0;
				LOC33 = isobjectwithtypefieldpredicate_264806(t);
				if (!LOC33) goto LA34;
				result = ((NU8) 1);
			}
			LA34: ;
		}
		LA29: ;
	}
	break;
	case ((NU8) 11):
	case ((NU8) 13):
	case ((NU8) 46):
	case ((NU8) 47):
	{
		ttype225852* LOC37;
		LOC37 = 0;
		LOC37 = lastson_226267(t);
		result = analyseobjectwithtypefieldaux_264885(LOC37, marker);
	}
	break;
	case ((NU8) 16):
	case ((NU8) 4):
	case ((NU8) 18):
	{
		{
			NI i_264978;
			NI HEX3Atmp_264996;
			NI LOC40;
			NI res_264999;
			i_264978 = 0;
			HEX3Atmp_264996 = 0;
			LOC40 = 0;
			LOC40 = sonslen_226255(t);
			HEX3Atmp_264996 = (NI32)(LOC40 - 1);
			res_264999 = 0;
			{
				while (1) {
					if (!(res_264999 <= HEX3Atmp_264996)) goto LA42;
					i_264978 = res_264999;
					res = analyseobjectwithtypefieldaux_264885((*t).Sons->data[i_264978], marker);
					{
						if (!!((res == ((NU8) 0)))) goto LA45;
						result = ((NU8) 2);
						goto BeforeRet;
					}
					LA45: ;
					res_264999 += 1;
				} LA42: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	BeforeRet: ;
	return result;
}

N_NIMCALL(NU8, analyseobjectwithtypefield_263225)(ttype225852* t) {
	NU8 result;
	intset222056 marker;
	result = 0;
	memset((void*)(&marker), 0, sizeof(marker));
	chckNil((void*)(&marker));
	memset((void*)(&marker), 0, sizeof(marker));
	initintset_222950((&marker));
	result = analyseobjectwithtypefieldaux_264885(t, (&marker));
	return result;
}

static N_INLINE(NIM_BOOL, iscompiletimeonly_273466)(ttype225852* t) {
	NIM_BOOL result;
	result = 0;
	result = ((*t).Kind == ((NU8) 8) || (*t).Kind == ((NU8) 59));
	return result;
}

N_NIMCALL(NIM_BOOL, containscompiletimeonly_273490)(ttype225852* t) {
	NIM_BOOL result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = iscompiletimeonly_273466(t);
		if (!LOC3) goto LA4;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA4: ;
	{
		NIM_BOOL LOC8;
		LOC8 = 0;
		LOC8 = HEX3DHEX3D_273497((*t).Sons, NIM_NIL);
		if (!!(LOC8)) goto LA9;
		{
			NI i_273658;
			NI HEX3Atmp_273677;
			NI LOC12;
			NI res_273680;
			i_273658 = 0;
			HEX3Atmp_273677 = 0;
			LOC12 = 0;
			LOC12 = sonslen_226255(t);
			HEX3Atmp_273677 = (LOC12 - 1);
			res_273680 = 0;
			{
				while (1) {
					if (!(res_273680 <= HEX3Atmp_273677)) goto LA14;
					i_273658 = res_273680;
					{
						NIM_BOOL LOC17;
						LOC17 = 0;
						LOC17 = !(((*t).Sons->data[i_273658] == NIM_NIL));
						if (!(LOC17)) goto LA18;
						LOC17 = iscompiletimeonly_273466((*t).Sons->data[i_273658]);
						LA18: ;
						if (!LOC17) goto LA19;
						result = NIM_TRUE;
						goto BeforeRet;
					}
					LA19: ;
					res_273680 += 1;
				} LA14: ;
			}
		}
	}
	LA9: ;
	result = NIM_FALSE;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}
NIM_EXTERNC N_NOINLINE(void, HEX00_typesInit)(void) {
}

NIM_EXTERNC N_NOINLINE(void, HEX00_typesDatInit)(void) {
static TNimNode* TMP2664[2];
static TNimNode TMP809[3];
NTI268081.size = sizeof(TY268081);
NTI268081.kind = 18;
NTI268081.base = 0;
NTI268081.flags = 3;
TMP2664[0] = &TMP809[1];
TMP809[1].kind = 1;
TMP809[1].offset = offsetof(TY268081, Field0);
TMP809[1].typ = (&NTI108);
TMP809[1].name = "Field0";
TMP2664[1] = &TMP809[2];
TMP809[2].kind = 1;
TMP809[2].offset = offsetof(TY268081, Field1);
TMP809[2].typ = (&NTI108);
TMP809[2].name = "Field1";
TMP809[0].len = 2; TMP809[0].kind = 2; TMP809[0].sons = &TMP2664[0];
NTI268081.node = &TMP809[0];
NTI268080.size = sizeof(TY268080*);
NTI268080.kind = 24;
NTI268080.base = (&NTI268081);
NTI268080.flags = 2;
NTI268080.marker = TMP2665;
}

