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

/* section: NIM_merge_HEADERS */

#include "nimbase.h"
#include <string.h>
#include <setjmp.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix

/* section: NIM_merge_FRAME_DEFINES */
#define nimfr_(x, y)
#define nimln_(x, y)

/* section: NIM_merge_FORWARD_TYPES */
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
typedef struct tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA;
typedef struct tySequence__Ef05srmQTDulnBdXR4Ja6Q tySequence__Ef05srmQTDulnBdXR4Ja6Q;
typedef struct tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw;
typedef struct tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w;
typedef struct tySequence__MvZmat48bhe9b6x9aUD58D5Q tySequence__MvZmat48bhe9b6x9aUD58D5Q;
typedef struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA;
typedef struct tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA;
typedef struct tySequence__DXS6mEo7PVUFJkirsQ9bNQA tySequence__DXS6mEo7PVUFJkirsQ9bNQA;
typedef struct tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA;
typedef struct tySequence__DfgJFJEYoj4YBAHLZPl5lQ tySequence__DfgJFJEYoj4YBAHLZPl5lQ;
typedef struct tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA;
typedef struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q;
typedef struct tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA;
typedef struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ;
typedef struct tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg;
typedef struct tySequence__8Np6tlClE5az1CyqZdN19bQ tySequence__8Np6tlClE5az1CyqZdN19bQ;
typedef struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ;
typedef struct tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg;
typedef struct tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ;
typedef struct tySequence__9brg1xNurxcus33lU4IE1Dw tySequence__9brg1xNurxcus33lU4IE1Dw;
typedef struct tyObject_Int128__9a9axPfb75jdWY25AamJewkA tyObject_Int128__9a9axPfb75jdWY25AamJewkA;
typedef struct tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw;
typedef struct tyObject_Target__9abOl5DLX8suLujOaHSvGzw tyObject_Target__9abOl5DLX8suLujOaHSvGzw;
typedef struct tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg;
typedef struct tyObject_MsgConfig__kV7r8HWT0SqOYW2k2ukC6A tyObject_MsgConfig__kV7r8HWT0SqOYW2k2ukC6A;
typedef struct tySequence__tNFrR3kRuS1FSwuiLGoSSA tySequence__tNFrR3kRuS1FSwuiLGoSSA;
typedef struct tyObject_Table__Ab4q9c36aMR4mtkEOIBzdzA tyObject_Table__Ab4q9c36aMR4mtkEOIBzdzA;
typedef struct tySequence__7lEisrXlQEzwtUKW5pzRCw tySequence__7lEisrXlQEzwtUKW5pzRCw;
typedef struct tySequence__Zi9cGbCWofbtABoHJ5RbLNQ tySequence__Zi9cGbCWofbtABoHJ5RbLNQ;
typedef struct tyObject_HashSet__CD8Dpv0WGmASelVaNSo6zg tyObject_HashSet__CD8Dpv0WGmASelVaNSo6zg;
typedef struct tySequence__4eRCaZmrYLLw2k30GPTiMw tySequence__4eRCaZmrYLLw2k30GPTiMw;
typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ tySequence__sM4lkSb7zS6F7OVMvW9cffQ;
typedef struct tySequence__pK3qSsBZwdXd6qyUMkd5Jw tySequence__pK3qSsBZwdXd6qyUMkd5Jw;
typedef struct tyObject_SuggestcolonObjectType___bkMuTTb2G70XfpzAiyNrnQ tyObject_SuggestcolonObjectType___bkMuTTb2G70XfpzAiyNrnQ;
typedef struct tyObject_ProfileDatacolonObjectType___rPBBfFL4X0b9cQ6rfMNPXig tyObject_ProfileDatacolonObjectType___rPBBfFL4X0b9cQ6rfMNPXig;
typedef struct tyTuple__kN8up2W6YKc5YA9avn5mV5w tyTuple__kN8up2W6YKc5YA9avn5mV5w;
typedef struct Exception Exception;
typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
typedef struct TSafePoint TSafePoint;
typedef struct tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw;
typedef struct tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA;
typedef struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw;
typedef struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA;
typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
typedef struct tyObject_HSlice__vOYTm9cLQaRc5TUw9atOyHnA tyObject_HSlice__vOYTm9cLQaRc5TUw9atOyHnA;
typedef struct tyTuple__zwpS6d6iewrdlBSTNFoyVA tyTuple__zwpS6d6iewrdlBSTNFoyVA;
typedef struct tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA;
typedef struct tyTuple__z822nu9bFF1AlQnLrHjdwpA tyTuple__z822nu9bFF1AlQnLrHjdwpA;
typedef struct tyTuple__xYhUhS7X82rKTqbT9bRfCnw tyTuple__xYhUhS7X82rKTqbT9bRfCnw;
typedef struct tyObject_TFileInfo__GE3hAakXKOEpch4ap3zXAw tyObject_TFileInfo__GE3hAakXKOEpch4ap3zXAw;
typedef struct tyTuple__QeWl6B6ffS4pU6WWrtcrDw tyTuple__QeWl6B6ffS4pU6WWrtcrDw;
typedef struct tyObject_Cfile__i9cKq1ZGd1wgagjUEHLVFtg tyObject_Cfile__i9cKq1ZGd1wgagjUEHLVFtg;
typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;

/* section: NIM_merge_TYPES */
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NU8 tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw;
typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw {
  RootObj Sup;
NI colonstate_;
tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw preferToplevel1;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef struct {
N_NIMCALL_PTR(tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw, ClP_0) (tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer, void* ClE_0);
void* ClE_0;
} tyProc__3iD0yymxvVOS8ZW9aQRe2MA;
typedef N_CLOSURE_PTR(tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw, TM__PpBJsMJcrcWrpLTS6mci1g_6) (tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
struct tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA {
  RootObj Sup;
NI id;
};
typedef NU8 tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA;
typedef NU64 tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw;
typedef tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* tyArray__PsPyPA45AAjHu4uDGHNjTg[6];
typedef NU8 tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg;
typedef NU8 tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw;
typedef NU16 tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA;
struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA {
tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg k;
tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw storage;
tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA flags;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* lode;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* r;
};
struct tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ {
  tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kind;
tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA callConv;
tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw flags;
tySequence__Ef05srmQTDulnBdXR4Ja6Q* sons;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym;
tyArray__PsPyPA45AAjHu4uDGHNjTg attachedOps;
tySequence__MvZmat48bhe9b6x9aUD58D5Q* methods;
NI64 size;
NI16 align;
NI16 paddingAtEnd;
NI16 lockLevel;
tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeInst;
NI uniqueId;
};
typedef NU8 tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw;
struct tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA {
NI counter;
tySequence__DfgJFJEYoj4YBAHLZPl5lQ* data;
};
typedef NU16 tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg;
struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q {
NU16 line;
NI16 col;
NI32 fileIndex;
};
typedef NU64 tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw;
typedef NU32 tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg;
struct tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w {
  tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw kind;
union{
struct {tySequence__Ef05srmQTDulnBdXR4Ja6Q* typeInstCache;
} _kind_1;
struct {tySequence__DXS6mEo7PVUFJkirsQ9bNQA* procInstCache;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* gcUnsafetyReason;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* transformedBody;
} _kind_2;
struct {tySequence__DXS6mEo7PVUFJkirsQ9bNQA* usedGenerics;
tyObject_TStrTable__f07aOS3dr28kGa5wcE29aFA tab;
} _kind_3;
struct {tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* guard;
NI bitsize;
NI alignment;
} _kind_4;
};
tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg magic;
tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* name;
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner;
tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw flags;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* ast;
tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg options;
NI position;
NI offset;
tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA* annex;
tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* constraint;
};
typedef NU8 tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw;
typedef NU32 tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg;
typedef NU8 tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw;
struct tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw {
tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg flags;
tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind;
union{
struct {NI64 intVal;
} _kind_1;
struct {NF floatVal;
} _kind_2;
struct {NimStringDesc* strVal;
} _kind_3;
struct {tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym;
} _kind_4;
struct {tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* ident;
} _kind_5;
struct {tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
} _kind_6;
};
NimStringDesc* comment;
};
struct tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA {
  tyObject_TIdObj__iIXPrEsiKHiioLj0HSkQhA Sup;
NimStringDesc* s;
tyObject_TIdent__GufRQq9c0miSybX3zBD4tyA* next;
NI h;
};
typedef struct {
N_NIMCALL_PTR(NimStringDesc*, ClP_0) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer, void* ClE_0);
void* ClE_0;
} tyProc__6Q0U7ENNigVI8bP9cBw49bHg;
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_9) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef NimStringDesc* tyArray__bbp1aDajeunm5PPjRzxB3A[64];
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_74) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_75) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_80) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef NU8 tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw;
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_83) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_85) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_86) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_87) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_90) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef NU16 tySet_tyEnum_TRenderFlag__wrPgUo1ExBlHvFnXN2nSHw;
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_92) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_95) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_106) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_108) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_110) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_111) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_113) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_115) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_120) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_121) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_122) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_124) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_125) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_127) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_128) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_129) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_131) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_133) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_135) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_137) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_138) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_140) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_147) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_148) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_154) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_156) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_158) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef N_CLOSURE_PTR(NimStringDesc*, TM__PpBJsMJcrcWrpLTS6mci1g_159) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
typedef NU8 tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg;
typedef NU8 tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw;
struct tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg {
tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg cmp;
NI recCheck;
tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw flags;
tySequence__8Np6tlClE5az1CyqZdN19bQ* s;
};
typedef NU64 tySet_tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw;
struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ {
NI Field0;
NI Field1;
};
typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__scRKBNzJ5JS9bO9a2vP7QaAA) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, RootObj* closure);
typedef NI tyArray__emiAJ8okywrJw7ZHLzlXbQ[34];
struct tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg {
NI elems;
NI counter;
NI max;
tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ* head;
tySequence__9brg1xNurxcus33lU4IE1Dw* data;
tyArray__emiAJ8okywrJw7ZHLzlXbQ a;
};
typedef NU32 tyArray__FleBT9cC2nxhgiXmSYYnEKA[4];
struct tyObject_Int128__9a9axPfb75jdWY25AamJewkA {
tyArray__FleBT9cC2nxhgiXmSYYnEKA udata;
};
typedef NU8 tyEnum_TBackend__4OBsgZ9cscH2JLUE5Wcz01g;
typedef NU8 tyEnum_TSystemCPU__XYDt7D1G3qcClFyZy1Ky9ag;
typedef NU8 tyEnum_TSystemOS__s7Mlr1t66SUqP6BKJMXLaQ;
struct tyObject_Target__9abOl5DLX8suLujOaHSvGzw {
tyEnum_TSystemCPU__XYDt7D1G3qcClFyZy1Ky9ag targetCPU;
tyEnum_TSystemCPU__XYDt7D1G3qcClFyZy1Ky9ag hostCPU;
tyEnum_TSystemOS__s7Mlr1t66SUqP6BKJMXLaQ targetOS;
tyEnum_TSystemOS__s7Mlr1t66SUqP6BKJMXLaQ hostOS;
NI intSize;
NI floatSize;
NI ptrSize;
NimStringDesc* tnl;
};
typedef NU64 tySet_tyEnum_TGlobalOption__RAfAEZqjnKMDumgyKKc1qw;
typedef NU8 tySet_tyEnum_TErrorOutput__fBf8Teueoz9aAkO5cXaxrpA;
struct tyObject_Table__Ab4q9c36aMR4mtkEOIBzdzA {
tySequence__7lEisrXlQEzwtUKW5pzRCw* data;
NI counter;
};
struct tyObject_MsgConfig__kV7r8HWT0SqOYW2k2ukC6A {
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q trackPos;
NIM_BOOL trackPosAttached;
tySet_tyEnum_TErrorOutput__fBf8Teueoz9aAkO5cXaxrpA errorOutputs;
tySequence__tNFrR3kRuS1FSwuiLGoSSA* msgContext;
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q lastError;
tyObject_Table__Ab4q9c36aMR4mtkEOIBzdzA filenameToIndexTbl;
tySequence__Zi9cGbCWofbtABoHJ5RbLNQ* fileInfos;
NI32 systemFileIdx;
};
typedef NU8 tyEnum_TCommands__VH3ghgQVwLSg3krOAoXigw;
typedef NU8 tyEnum_TGCMode__tkz389aDYNd8ykeZszCuBSw;
typedef NU8 tyEnum_ExceptionSystem__1mkAogyaDAT7g9cQjzsgKLQ;
typedef NU8 tyEnum_SymbolFilesOption__gBES9bqm1ru9ape8SeMRAFgQ;
struct tyObject_HashSet__CD8Dpv0WGmASelVaNSo6zg {
tySequence__4eRCaZmrYLLw2k30GPTiMw* data;
NI counter;
};
typedef NU16 tySet_tyEnum_Feature__01UoAKYz1MxZiuG1X2VhNQ;
typedef NU8 tySet_tyEnum_LegacyFeature__hGCD9aOrxPvpXn4Ne6W6OVA;
typedef NU8 tyEnum_IdeCmd__1Ced39bl5eePmZ1PKMPXigQ;
typedef NU8 tyEnum_TSystemCC__1eWBJUonHMOnlBwsOvpFmA;
typedef NU8 tySet_tyEnum_TMsgKind__6kx5ul0BSa9aHxHPGwkvVHg[9];
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (tyObject_SuggestcolonObjectType___bkMuTTb2G70XfpzAiyNrnQ* result, void* ClE_0);
void* ClE_0;
} tyProc__YD0MR9bJ2x4beJkZdnjXN9cA;
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (NimStringDesc* output, void* ClE_0);
void* ClE_0;
} tyProc__k2HFjxisIgDALbEUFojxaQ;
typedef NU8 tyEnum_Severity__x5BWBPGAbIH9clm5pmNp5DA;
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* config, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, NimStringDesc* msg, tyEnum_Severity__x5BWBPGAbIH9clm5pmNp5DA severity, void* ClE_0);
void* ClE_0;
} tyProc__oL9coyIA2VDTGdUcur9aL9bew;
struct tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw {
tyEnum_TBackend__4OBsgZ9cscH2JLUE5Wcz01g backend;
tyObject_Target__9abOl5DLX8suLujOaHSvGzw target;
NI linesCompiled;
tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg options;
tySet_tyEnum_TGlobalOption__RAfAEZqjnKMDumgyKKc1qw globalOptions;
tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg* macrosToExpand;
tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg* arcToExpand;
tyObject_MsgConfig__kV7r8HWT0SqOYW2k2ukC6A m;
NI evalTemplateCounter;
NI evalMacroCounter;
NI8 exitcode;
tyEnum_TCommands__VH3ghgQVwLSg3krOAoXigw cmd;
tyEnum_TGCMode__tkz389aDYNd8ykeZszCuBSw selectedGC;
tyEnum_ExceptionSystem__1mkAogyaDAT7g9cQjzsgKLQ exc;
NI verbosity;
NI numberOfProcessors;
NimStringDesc* evalExpr;
NF lastCmdTime;
tyEnum_SymbolFilesOption__gBES9bqm1ru9ape8SeMRAFgQ symbolFiles;
tyObject_HashSet__CD8Dpv0WGmASelVaNSo6zg cppDefines;
NimStringDesc* headerFile;
tySet_tyEnum_Feature__01UoAKYz1MxZiuG1X2VhNQ features;
tySet_tyEnum_LegacyFeature__hGCD9aOrxPvpXn4Ne6W6OVA legacyFeatures;
NimStringDesc* arguments;
tyEnum_IdeCmd__1Ced39bl5eePmZ1PKMPXigQ ideCmd;
NIM_BOOL oldNewlines;
tyEnum_TSystemCC__1eWBJUonHMOnlBwsOvpFmA cCompiler;
tySet_tyEnum_TMsgKind__6kx5ul0BSa9aHxHPGwkvVHg modifiedyNotes;
tySet_tyEnum_TMsgKind__6kx5ul0BSa9aHxHPGwkvVHg cmdlineNotes;
tySet_tyEnum_TMsgKind__6kx5ul0BSa9aHxHPGwkvVHg foreignPackageNotes;
tySet_tyEnum_TMsgKind__6kx5ul0BSa9aHxHPGwkvVHg notes;
tySet_tyEnum_TMsgKind__6kx5ul0BSa9aHxHPGwkvVHg warningAsErrors;
tySet_tyEnum_TMsgKind__6kx5ul0BSa9aHxHPGwkvVHg mainPackageNotes;
NI mainPackageId;
NI errorCounter;
NI hintCounter;
NI warnCounter;
NI errorMax;
NI maxLoopIterationsVM;
tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg* configVars;
tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg* symbols;
tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg* packageCache;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* nimblePaths;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* searchPaths;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* lazyPaths;
NimStringDesc* outFile;
NimStringDesc* outDir;
NimStringDesc* jsonBuildFile;
NimStringDesc* prefixDir;
NimStringDesc* libpath;
NimStringDesc* nimcacheDir;
tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg* dllOverrides;
tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg* moduleOverrides;
tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg* cfileSpecificOptions;
NimStringDesc* projectName;
NimStringDesc* projectPath;
NimStringDesc* projectFull;
NIM_BOOL projectIsStdin;
NIM_BOOL lastMsgWasDot;
NI32 projectMainIdx;
NI32 projectMainIdx2;
NimStringDesc* command;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* commandArgs;
NimStringDesc* commandLine;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* extraCmds;
NIM_BOOL keepComments;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* implicitImports;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* implicitIncludes;
NimStringDesc* docSeeSrcUrl;
NimStringDesc* docRoot;
NimStringDesc* docCmd;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* cIncludes;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* cLibs;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* cLinkedLibs;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* externalToLink;
NimStringDesc* linkOptionsCmd;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* compileOptionsCmd;
NimStringDesc* linkOptions;
NimStringDesc* compileOptions;
NimStringDesc* cCompilerPath;
tySequence__pK3qSsBZwdXd6qyUMkd5Jw* toCompile;
tyProc__YD0MR9bJ2x4beJkZdnjXN9cA suggestionResultHook;
NI suggestVersion;
NI suggestMaxResults;
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q lastLineInfo;
tyProc__k2HFjxisIgDALbEUFojxaQ writelnHook;
tyProc__oL9coyIA2VDTGdUcur9aL9bew structuredErrorHook;
NimStringDesc* cppCustomNamespace;
tyObject_ProfileDatacolonObjectType___rPBBfFL4X0b9cQ6rfMNPXig* vmProfileData;
};
struct tyTuple__kN8up2W6YKc5YA9avn5mV5w {
NimStringDesc* Field0;
NI Field1;
NI Field2;
};
typedef NU8 tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ;
typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__M46oZaFErZrJhpbqd9adDQg) (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
typedef NU8 tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng;
struct Exception {
  RootObj Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
Exception* up;
};
struct TSafePoint {
TSafePoint* prev;
NI status;
jmp_buf context;
};
typedef NU8 tyEnum_TGlobalOption__RAfAEZqjnKMDumgyKKc1qw;
struct tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw {
NI maxAlign;
NI offset;
};
struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA {
  Exception Sup;
};
struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw {
  tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
};
struct tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA {
  tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw Sup;
};
struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
void* bottom;
};
struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
NI len;
NI cap;
tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
};
typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
tyArray__0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
NI Field1;
};
typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
NI len;
tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
};
struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
NI minLargeObj;
NI maxLargeObj;
tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
NU32 flBitmap;
tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
};
struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
NI counter;
NI max;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
};
struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
NI gcThreadId;
};
typedef NU8 tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w;
typedef NU8 tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw;
struct tyObject_HSlice__vOYTm9cLQaRc5TUw9atOyHnA {
NF a;
NF b;
};
typedef NU8 tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ;
typedef NU8 tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw;
struct tyTuple__zwpS6d6iewrdlBSTNFoyVA {
NI Field0;
tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* Field1;
};
struct tyTuple__z822nu9bFF1AlQnLrHjdwpA {
tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q Field0;
NimStringDesc* Field1;
};
struct tyTuple__xYhUhS7X82rKTqbT9bRfCnw {
NI Field0;
NimStringDesc* Field1;
NI32 Field2;
};
struct tyObject_TFileInfo__GE3hAakXKOEpch4ap3zXAw {
NimStringDesc* fullPath;
NimStringDesc* projPath;
NimStringDesc* shortName;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* quotedName;
tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* quotedFullName;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* lines;
NimStringDesc* dirtyFile;
NimStringDesc* hash;
NIM_BOOL dirty;
};
struct tyTuple__QeWl6B6ffS4pU6WWrtcrDw {
NI Field0;
NimStringDesc* Field1;
};
typedef NU8 tySet_tyEnum_CfileFlag__Vl9c9ayddDuXiWtnWTsEYGsA;
struct tyObject_Cfile__i9cKq1ZGd1wgagjUEHLVFtg {
NimStringDesc* nimname;
NimStringDesc* cname;
NimStringDesc* obj;
tySet_tyEnum_CfileFlag__Vl9c9ayddDuXiWtnWTsEYGsA flags;
NimStringDesc* customArgs;
};
struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
NCSTRING procname;
NI line;
NCSTRING filename;
};

/* section: NIM_merge_SEQ_TYPES */
struct tySequence__8Np6tlClE5az1CyqZdN19bQ {
  TGenericSeq Sup;
  tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ data[SEQ_DECL_SIZE];
};
struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ {
  TGenericSeq Sup;
  tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
};
struct tySequence__Ef05srmQTDulnBdXR4Ja6Q {
  TGenericSeq Sup;
  tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* data[SEQ_DECL_SIZE];
};
struct tySequence__MvZmat48bhe9b6x9aUD58D5Q {
  TGenericSeq Sup;
  tyTuple__zwpS6d6iewrdlBSTNFoyVA data[SEQ_DECL_SIZE];
};
struct tySequence__DXS6mEo7PVUFJkirsQ9bNQA {
  TGenericSeq Sup;
  tyObject_TInstantiation__5LqgVn6Tq9ainQRK7TQAQxA* data[SEQ_DECL_SIZE];
};
struct tySequence__DfgJFJEYoj4YBAHLZPl5lQ {
  TGenericSeq Sup;
  tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* data[SEQ_DECL_SIZE];
};
struct tySequence__9brg1xNurxcus33lU4IE1Dw {
  TGenericSeq Sup;
  tyObject_Trunk__ul49aWfv9aes8cutmeltT3gQ* data[SEQ_DECL_SIZE];
};
struct tySequence__tNFrR3kRuS1FSwuiLGoSSA {
  TGenericSeq Sup;
  tyTuple__z822nu9bFF1AlQnLrHjdwpA data[SEQ_DECL_SIZE];
};
struct tySequence__7lEisrXlQEzwtUKW5pzRCw {
  TGenericSeq Sup;
  tyTuple__xYhUhS7X82rKTqbT9bRfCnw data[SEQ_DECL_SIZE];
};
struct tySequence__Zi9cGbCWofbtABoHJ5RbLNQ {
  TGenericSeq Sup;
  tyObject_TFileInfo__GE3hAakXKOEpch4ap3zXAw data[SEQ_DECL_SIZE];
};
struct tySequence__4eRCaZmrYLLw2k30GPTiMw {
  TGenericSeq Sup;
  tyTuple__QeWl6B6ffS4pU6WWrtcrDw data[SEQ_DECL_SIZE];
};
struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct tySequence__pK3qSsBZwdXd6qyUMkd5Jw {
  TGenericSeq Sup;
  tyObject_Cfile__i9cKq1ZGd1wgagjUEHLVFtg data[SEQ_DECL_SIZE];
};
struct tySequence__uB9b75OUPRENsBAu4AnoePA {
  TGenericSeq Sup;
  tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
};

/* section: NIM_merge_PROC_HEADERS */
static N_NIMCALL(void, Marker_tyRef__ik3gfZ9aJJHPxASsunXJrEA)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_LIB_PRIVATE N_CLOSURE(NimStringDesc*, typeToString__7CesF0Ee4QvGI9cfh0oqtcA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer, void* ClE_0);
N_LIB_PRIVATE N_CLOSURE(tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw, getPrefer__Ej4rXBradPyy1ddBuf8aog)(tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer, void* ClE_0);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__JE6t4x7Z3v2iVz27Nx0MRAmemory)(void* a, int v, NI size);
static N_INLINE(NIM_BOOL, isIntLit__F9ciDIanrWYqbJ4rgLlNAAgtypes)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copyMem__M04YC71iJg1N7gBF3HZTngsystem)(void* dest, void* source, NI size);
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(NIM_BOOL, equalMem__Bj9c9cm9cBM9coLsuNsT5BvZ9awsystem)(void* a, void* b, NI size);
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size);
static N_INLINE(NI, len__5mJADrRYkP3r9auuiuDZN9cQast)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
static N_INLINE(void, addTypeFlags__elsbxvFHNKtX8JO9cz8toqgtypes)(NimStringDesc** name, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, renderTree__ppjdh9aQ5L0SGPF8yz1gZ9cA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tySet_tyEnum_TRenderFlag__wrPgUo1ExBlHvFnXN2nSHw renderFlags);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, base__PfgI9ap7WOnsRfFV4znQ27w)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rangeToStr__dKqbxTgNqLs9a9bJh0nKSlQg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, valueToString__c6fJ8M9cz9bCTBCWXoRR8Z9cw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f);
static N_INLINE(NI, len__P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, reprEnum)(NI e, TNimType* typ);
static N_INLINE(void, addSep__YUPaaUWtjAGjAFdReiI2lQstrutils)(NimStringDesc** dest, NimStringDesc* sep, NI startLen);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___75vsOXLrqmx5LmVlMWaymw)(NI16 x);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, elemType__PfgI9ap7WOnsRfFV4znQ27w_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, initSameTypeClosure__YC853CO8ac9bG32yuRvSqxQ)(tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* Result);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kinds);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipGenericAlias__PfgI9ap7WOnsRfFV4znQ27w_3)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isGenericAlias__YPjOkGV9axAnGR3UfLeWZ1g)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
static N_INLINE(NIM_BOOL, sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, exprStructuralEquivalent__E1mnSzj2NONtG7h9cR3AuFA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b, NIM_BOOL strictSymEquality);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsOrIncl__DPtpJbbyEQSHvJUfVN3x0Q)(tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b);
static N_INLINE(NIM_BOOL, contains__x45kP25VwYxpJZJ8fjAWPwsystem)(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ* a, NI aLen_0, tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ item);
static N_INLINE(NI, find__jf9bJ3LaCc6IE4T5yOliwXQsystem)(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ* a, NI aLen_0, tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ item);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___fYL9a3Az3ZsTT2jDLG5BgUQ)(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ x, tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ y);
N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
static N_NIMCALL(void, Marker_tySequence__8Np6tlClE5az1CyqZdN19bQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameObjectStructures__VkawHwbvDceih9cIepw9c5NQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTypeOrNilAux__VkawHwbvDceih9cIepw9c5NQ_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameObjectTree__p2Gkr9cujTwj6KyP27x5biA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTuple__VkawHwbvDceih9cIepw9c5NQ_3)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameChildrenAux__VkawHwbvDceih9cIepw9c5NQ_4)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameConstraints__WK4tUt32lZCKwW9a889a8iZA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameValue__uOYuOsiCZAbEPMGwBL8r8g)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, iterOverType__9ak7UQEhWd9aiaIm3PB8dxmQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyProc__scRKBNzJ5JS9bO9a2vP7QaAA iter, RootObj* closure);
N_LIB_PRIVATE N_NIMCALL(void, initIntSet__n8oDZMn19bEdodSnrBQB9a1Q)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* Result);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, iterOverTypeAux__Ez5eHH3kG0Ls4PbazgzhPg)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyProc__scRKBNzJ5JS9bO9a2vP7QaAA iter, RootObj* closure);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsOrIncl__VFt0uM7bgfJ5age9alOsU9cg)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* s, NI key);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, iterOverNode__9btm5iMdQ89a3O0OqNFPhExg)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyProc__scRKBNzJ5JS9bO9a2vP7QaAA iter, RootObj* closure);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsGenericTypeIter__duror1xNU9cHuAsMzB29aTcQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, RootObj* closure);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, enumHasHoles__YPjOkGV9axAnGR3UfLeWZ1g_3)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isOrdinalType__6euCPZwUsyXzP1vAm4IthA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, NIM_BOOL allowEnumWithHoles);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, firstOrd__hjogdnp59cMX1rwmjikBhqw)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, getOrdValue__GvVg8kpCh7QA2PDTJnFJlQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Int128__9a9axPfb75jdWY25AamJewkA onError);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, toInt128__TDVoY1DSlNtMNULcUFRJzA)(NU64 arg);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, toInt128__ZBiVpGjOydV7ZjeElrE9cFQ)(NI64 arg);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, toInt128__161i7kexvUAISxPtGBRWYw)(NI arg);
N_LIB_PRIVATE N_NIMCALL(void, internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, NimStringDesc* errMsg, tyTuple__kN8up2W6YKc5YA9avn5mV5w info2);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, toInt128__swbZX3ptkqZbxXBHXbSVwg)(NU arg);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, lastOrd__hjogdnp59cMX1rwmjikBhqw_2)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NF, getFloatValue__HLIHKrKdoXbu29a1LlsOzKQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NF, firstFloat__5WwccqVm6xApk9c8p9c1efRA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw*, newPartialConfigRef__YbeeoJLQnRQK2F8DAaXI8w_2)(void);
N_LIB_PRIVATE N_NIMCALL(NF, lastFloat__5WwccqVm6xApk9c8p9c1efRA_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, lengthOrd__hjogdnp59cMX1rwmjikBhqw_3)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, plus___Sp7OcCEIFoBYolB6PB1fAg)(tyObject_Int128__9a9axPfb75jdWY25AamJewkA a, tyObject_Int128__9a9axPfb75jdWY25AamJewkA b);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, minus___Sp7OcCEIFoBYolB6PB1fAg_2)(tyObject_Int128__9a9axPfb75jdWY25AamJewkA a, tyObject_Int128__9a9axPfb75jdWY25AamJewkA b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, compatibleEffectsAux__0LGOh2tH40vyDRxMMzL9bOA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* se, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* re);
static N_INLINE(NI, safeLen__P89cqdlERShb9alU3iC0yj8w_2ast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NI, safeInheritanceDiff__1dM2iQB5qStJfnn3684ijQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b);
N_LIB_PRIVATE N_NIMCALL(NI, inheritanceDiff__1dM2iQB5qStJfnn3684ijQ_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameObjectTypes__6sVmgh7vIWM9axOIPRliopQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isEmptyContainer__YPjOkGV9axAnGR3UfLeWZ1g_4)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, typeToString__QlvraUan7WbHowhAbvDvdA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer);
N_LIB_PRIVATE N_NIMCALL(void, addDeclaredLoc__5DZFQoJWZrAjxgNR8JcoQw)(NimStringDesc** result, tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___aQsiZUvE4SFfnWyKx1JgKA)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canFormAcycleAux__D3xLdjpvwL5V45baRvp9cbQ)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, NI startId);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canFormAcycleNode__20MK9ahoGiJtBR9bKtJOLeHg)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, NI startId);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isPureObject__IVXYI9cxSeivThgKCncHRnA_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, searchTypeForAux__T2zTGEuen7MZ9b8x6nIl61A)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyProc__M46oZaFErZrJhpbqd9adDQg predicate, tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, searchTypeNodeForAux__XSB8G9curVftbRhNQYm7Dug)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyProc__M46oZaFErZrJhpbqd9adDQg p, tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, lastSon__UPSW0jLTX5qJL51YMUAHgw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, searchTypeFor__QA5oWYPirn9bgEvrXiCsgVg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyProc__M46oZaFErZrJhpbqd9adDQg predicate);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isGCRef__YPjOkGV9axAnGR3UfLeWZ1g_6)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng, classify__OP66kLszPi2spXXVeoE1Tg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(void, computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
static N_INLINE(void, popSafePoint)(void);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lt___nr9cP9b0OL9cabygV9bo19cJgZA_3)(tyObject_Int128__9a9axPfb75jdWY25AamJewkA a, NI64 b);
N_LIB_PRIVATE N_NIMCALL(NI64, toInt64Checked__AbU1iGhTiLlXhe9a0gSwe2Q)(tyObject_Int128__9a9axPfb75jdWY25AamJewkA arg, NI64 onError);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, star___byxnZkntUVTm6OMjYcCmJw)(tyObject_Int128__9a9axPfb75jdWY25AamJewkA a, NI32 b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lt___7c5Zw7H31uJfWmmhZe9aEqw_3)(tyObject_Int128__9a9axPfb75jdWY25AamJewkA a, tyObject_Int128__9a9axPfb75jdWY25AamJewkA b);
N_LIB_PRIVATE N_NIMCALL(NI64, toInt64__1szweXXq3RBN50owrYu2Xw)(tyObject_Int128__9a9axPfb75jdWY25AamJewkA arg);
N_LIB_PRIVATE N_NIMCALL(NI16, floatInt64Align__Nm9cs6Kn6ltGLynV4vNsRgw)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf);
N_LIB_PRIVATE N_NIMCALL(NI64, align__q0XhcNGvQewpW9bvKM9aZqMA)(NI64 address, NI64 alignment);
N_LIB_PRIVATE N_NIMCALL(void, align__6aPSxP9cKNSW60fbvVU666A)(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* arg, NI value);
N_LIB_PRIVATE N_NIMCALL(void, raiseIllegalTypeRecursion__ULZFsIEVstfoa5ENCnw9cLA)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, Marker_tyRef__SFgbIvdx8bC9cxnXgi8Zn1A)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y);
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y);
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT__Y66tOYFjgwJ0k4aLz4bc0Q)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y);
N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
N_LIB_PRIVATE N_NIMCALL(NI, align__Om4wKSYr7i4HlMLgvZHMKw)(NI address, NI alignment);
N_LIB_PRIVATE N_NIMCALL(void, inc__6aPSxP9cKNSW60fbvVU666A_2)(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* arg, NI value);
N_LIB_PRIVATE N_NIMCALL(NI, finish__N2YmOAWMSZMVl7ctY8EMKA)(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* arg);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass);
static N_INLINE(Exception*, nimBorrowCurrentException)(void);
static N_INLINE(void, popCurrentException)(void);
N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isObjectWithTypeFieldPredicate__YPjOkGV9axAnGR3UfLeWZ1g_7)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NOINLINE(void, liMessage__Q6JNH4uRwLyZrj0dJakHew)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w msg, NimStringDesc* arg, tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw eh, tyTuple__kN8up2W6YKc5YA9avn5mV5w info2, NIM_BOOL isRaw);
N_LIB_PRIVATE N_NIMCALL(void, computeUnionObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL packed_0, tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* accum);
N_LIB_PRIVATE N_NIMCALL(void, mergeBranch__i6hpT9aN48aGlIj1pQ2H9csQ)(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* arg, tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw value);
N_LIB_PRIVATE N_NIMCALL(void, computeObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA_2)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL packed_0, tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* accum);
N_LIB_PRIVATE N_NIMCALL(NI64, computeSubObjectAlign__Kjdj9bFtEq5KC8nrnNmr2SQ)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NI, alignmentMax__9bccw9anbIWOMaS0LoB2w3xQ)(NI a, NI b);
N_LIB_PRIVATE N_NIMCALL(void, setOffsetsToUnknown__S9cusX9cvoJODyYsPyafVB5w)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, nimLeaveFinally)(void);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, copyType__4O4aYoscFPo2FRSh4rP9ayg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* owner, NIM_BOOL keepId);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameType__3isNyHKb0U1OCnClmflXSg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw flags);
static N_INLINE(NIM_BOOL, contains__VOVNP3l9cKlKomHo2uVc1YAsystem)(tyObject_HSlice__vOYTm9cLQaRc5TUw9atOyHnA s, NF value);
static N_INLINE(tyObject_HSlice__vOYTm9cLQaRc5TUw9atOyHnA, dotdot___lKGy2iCJ5YGE3BPCWzoXSwsystem)(NF a, NF b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, floatRangeCheck__RTbq1U5r9aGXeN20T54YASg)(NF x, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, takeType__0FGAKd3dm9aUGX9cs9aj1kraA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* arg);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, copyTree__Dsjo9bte8vGxzhtcSrsTyiQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* src);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ, equalParam__UVUcjjYt8uZoqss0vG6fXw)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* a, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTypeOrNil__3isNyHKb0U1OCnClmflXSg_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw flags);
N_LIB_PRIVATE N_NIMCALL(void, incl__jENnK9c9bPE73pKmo2vYjpqg)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* s, NI key);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__R6uRTGpl30Ofaw4Ni3vawA)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* s, NI key);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTyRef__YPjOkGV9axAnGR3UfLeWZ1g_9)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ, compatibleEffects__jMDzK5tLgCQpWKRW9azac5w)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* actual);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, skipConv__BH9abOhPX8pH0DnEWlRxmlw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTupleRecursive__jUzNoQ9aEVNwWSPqp1B69aKg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* cycleDetector);
N_LIB_PRIVATE N_NIMCALL(void, assign__9aeoXSYLtfdHDeDWcO9bHVbg)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* dest, tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* src);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw, analyseObjectWithTypeFieldAux__ItqOgoANlwBn1FbcXiqfQQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isHiddenPointer__YPjOkGV9axAnGR3UfLeWZ1g_14)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);

/* section: NIM_merge_DATA */
extern TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTI__aFpjIZ5GhrcXv4WiFpqyxw_;
extern TNimType NTI__xHTZrq9aYs6boc9bCba0JbpQ_;
N_LIB_PRIVATE TNimType NTI__tnd4qt9c4xddV8oKV5zyusw_;
N_LIB_PRIVATE TNimType NTI__ik3gfZ9aJJHPxASsunXJrEA_;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_7, " literal(", 9);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_8, ")", 1);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_10, "None", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_11, "bool", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_12, "char", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_13, "empty", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_14, "Alias", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_15, "typeof(nil)", 11);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_16, "untyped", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_17, "typed", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_18, "typeDesc", 8);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_19, "GenericInvocation", 17);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_20, "GenericBody", 11);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_21, "GenericInst", 11);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_22, "GenericParam", 12);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_23, "distinct $1", 11);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_24, "enum", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_25, "ordinal[$1]", 11);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_26, "array[$1, $2]", 13);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_27, "object", 6);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_28, "tuple", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_29, "set[$1]", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_30, "range[$1]", 9);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_31, "ptr ", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_32, "ref ", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_33, "var ", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_34, "seq[$1]", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_35, "proc", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_36, "pointer", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_37, "OpenArray[$1]", 13);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_38, "string", 6);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_39, "cstring", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_40, "Forward", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_41, "int", 3);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_42, "int8", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_43, "int16", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_44, "int32", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_45, "int64", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_46, "float", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_47, "float32", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_48, "float64", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_49, "float128", 8);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_50, "uint", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_51, "uint8", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_52, "uint16", 6);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_53, "uint32", 6);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_54, "uint64", 6);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_55, "owned", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_56, "sink", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_57, "lent ", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_58, "varargs[$1]", 11);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_59, "UncheckedArray[$1]", 18);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_60, "Error Type", 10);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_61, "BuiltInTypeClass", 16);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_62, "UserTypeClass", 13);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_63, "UserTypeClassInst", 17);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_64, "CompositeTypeClass", 18);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_65, "inferred", 8);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_66, "and", 3);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_67, "or", 2);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_68, "not", 3);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_69, "any", 3);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_70, "static", 6);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_71, "TypeFromExpr", 12);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_72, "out ", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_73, "void", 4);
N_LIB_PRIVATE NIM_CONST tyArray__bbp1aDajeunm5PPjRzxB3A typeToStr__8K1bQMe7v9aG2S8LV9co9bpwQ = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_10),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_11),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_12),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_13),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_14),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_15),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_16),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_17),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_18),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_19),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_20),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_21),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_22),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_23),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_24),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_25),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_26),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_27),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_28),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_29),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_30),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_31),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_32),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_33),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_34),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_35),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_36),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_37),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_38),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_39),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_40),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_41),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_42),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_43),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_44),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_45),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_46),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_47),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_48),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_49),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_50),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_51),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_52),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_53),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_54),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_55),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_56),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_57),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_58),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_59),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_60),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_61),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_62),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_63),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_64),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_65),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_66),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_67),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_68),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_69),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_70),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_71),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_72),
((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_73)}
;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_76, "{", 1);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_77, "}", 1);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_78, ": ", 2);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_79, " or ", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_81, " not nil", 8);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_82, "int literal(", 12);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_84, ", ", 2);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_88, "typedesc", 8);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_89, "type ", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_91, "static[", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_93, "]", 1);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_94, "(", 1);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_96, "<invalid tyUserTypeClass>", 25);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_97, "var", 3);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_98, "ref", 3);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_99, "ptr", 3);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_100, "seq", 3);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_101, "array", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_102, "set", 3);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_103, "range", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_104, "distinct", 8);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_105, "openArray", 9);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_107, "inferred[", 9);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_109, "[", 1);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_112, " and ", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_114, "not ", 4);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_116, "unknown", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_117, "typeof(", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_118, "<invalid value>", 15);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_119, "..", 2);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_123, "UncheckedArray", 14);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_126, "ordinal", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_130, "distinct ", 9);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_132, "tuple[", 6);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_134, "tuple[]", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_136, ",", 1);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_139, "range ", 6);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_141, "iterator ", 9);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_142, "template ", 9);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_143, "macro ", 6);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_144, "converter ", 10);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_145, "proc ", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_146, "[*missing parameters*]", 22);
extern TNimType NTI__yjAJ8w0h1PBaSwSGJ3P7IA_;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_149, "noSideEffect", 12);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_150, "gcsafe", 6);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_151, "locks: ", 7);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_152, "{.", 2);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_153, ".}", 2);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_155, "sink ", 5);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_157, "owned ", 6);
extern TNimType NTI__1v9bKyksXWMsm0vNwmZ4EuQ_;
N_LIB_PRIVATE TNimType NTI__8Np6tlClE5az1CyqZdN19bQ_;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_160, "types.nim(1185, 32) `false` ", 28);
extern NIM_CONST tyObject_Int128__9a9axPfb75jdWY25AamJewkA Zero__1ed0M9aQUqqSQVhLxSQO9bCw;
extern NIM_CONST tyObject_Int128__9a9axPfb75jdWY25AamJewkA Max__zlJMNfqX7LwCYj0PF6ncWQ;
extern NIM_CONST tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_161, "invalid kind for firstOrd(", 26);
extern TNimType NTI__9a3YiReNVD0IJHWFKgXRe9ag_;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_163, "/home/runner/work/nightlies/nightlies/nim/compiler/types.nim", 60);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_162 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_163),
((NI) 744),
((NI) 23)}
;
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_164 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_163),
((NI) 748),
((NI) 17)}
;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_165, "invalid kind for lastOrd(", 25);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_166 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_163),
((NI) 803),
((NI) 23)}
;
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_167 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_163),
((NI) 807),
((NI) 17)}
;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_168, "invalid kind for firstFloat(", 28);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_169 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_163),
((NI) 763),
((NI) 17)}
;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_170, "invalid kind for lastFloat(", 27);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_171 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_163),
((NI) 822),
((NI) 17)}
;
N_LIB_PRIVATE NIM_CONST tySet_tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag abstractInst__dLigiD0wrfdW59cejPpTktA = IL64(36134350135273744);
extern NIM_CONST tyObject_Int128__9a9axPfb75jdWY25AamJewkA One__asIdv19bIr70QgMTVvq2zyQ;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_172, " [declared in ", 14);
extern TNimType NTI__yoNlBGx0D2tRizIdhQuENw_;
N_LIB_PRIVATE TNimType NTI__eSlcgGR6dDg1zp0Mnw4yVA_;
N_LIB_PRIVATE TNimType NTI__SFgbIvdx8bC9cxnXgi8Zn1A_;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_175, "illegal type recursion", 22);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_177, "union type may not have an object header", 40);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_179, "/home/runner/work/nightlies/nightlies/nim/compiler/sizealignoff"
"setimpl.nim", 74);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_178 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_179),
((NI) 376),
((NI) 20)}
;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_180, "Illegal use of ``case`` in union type.", 38);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_181 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_179),
((NI) 174),
((NI) 14)}
;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_182, "computeSubObjectAlign", 21);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_183 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_179),
((NI) 93),
((NI) 21)}
;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_184, "computeObjectOffsetsFoldFunction(record case branch)", 52);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_185 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_179),
((NI) 135),
((NI) 23)}
;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_186, "invalid kind for floatRangeCheck:", 33);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_187 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_163),
((NI) 839),
((NI) 17)}
;
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_188, "Defect", 6);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_189, " = ", 3);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_190, "type mismatch: got <", 20);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_191, "> but expected \'", 16);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_192, "\'", 1);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_193, "\012.raise effects differ", 22);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_194, "\012.raise effect is \'can raise any\'", 33);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_195, "\012.tag effects differ", 20);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_196, "\012.tag effect is \'any tag allowed\'", 33);
STRING_LITERAL(TM__PpBJsMJcrcWrpLTS6mci1g_197, "\012lock levels differ", 19);
static NIM_CONST tyTuple__kN8up2W6YKc5YA9avn5mV5w TM__PpBJsMJcrcWrpLTS6mci1g_198 = {((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_163),
((NI) 1493),
((NI) 14)}
;
N_LIB_PRIVATE NIM_CONST tySet_tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag abstractRange__2fNKM13XwmoacahtEcjlJg = IL64(36134350136322320);

/* section: NIM_merge_VARS */
extern tySet_tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw eqTypeFlags__9aJCM4BDGbCJ8tj1Vz9bDB7g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;
extern Exception* currException__9bVPeDJlYTi9bQApZpfH8wjg;
extern Exception* currException__9bVPeDJlYTi9bQApZpfH8wjg;
extern Exception* currException__9bVPeDJlYTi9bQApZpfH8wjg;

/* section: NIM_merge_PROCS */
static N_NIMCALL(void, Marker_tyRef__ik3gfZ9aJJHPxASsunXJrEA)(void* p, NI op) {
	tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw* a;
	a = (tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw*)p;
}
N_LIB_PRIVATE N_CLOSURE(tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw, getPrefer__Ej4rXBradPyy1ddBuf8aog)(tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer, void* ClE_0) {
	tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw result;
	tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw* colonenvP_;
	result = (tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw)0;
	colonenvP_ = (tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw*) ClE_0;
	{
		if (!((192 &((NU8)1<<((NU)((*colonenvP_).preferToplevel1)&7U)))!=0)) goto LA3_;
		result = (*colonenvP_).preferToplevel1;
	}
	goto LA1_;
	LA3_: ;
	{
		result = prefer;
	}
	LA1_: ;
	return result;
}
static N_INLINE(void, nimSetMem__JE6t4x7Z3v2iVz27Nx0MRAmemory)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__JE6t4x7Z3v2iVz27Nx0MRAmemory(p, ((int) 0), size);
}
static N_INLINE(NIM_BOOL, isIntLit__F9ciDIanrWYqbJ4rgLlNAAgtypes)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T2_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T2_ = (NIM_BOOL)0;
	T2_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31));
	if (!(T2_)) goto LA3_;
	T2_ = !(((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
	LA3_: ;
	T1_ = T2_;
	if (!(T1_)) goto LA4_;
	T1_ = ((*(*t).n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6));
	LA4_: ;
	result = T1_;
	return result;
}
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memcpy(dest, source, ((size_t) (size)));
}
static N_INLINE(void, copyMem__M04YC71iJg1N7gBF3HZTngsystem)(void* dest, void* source, NI size) {
	nimCopyMem(dest, source, size);
}
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	{
		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
		copyMem__M04YC71iJg1N7gBF3HZTngsystem(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		(*dest).Sup.len += (*src).Sup.len;
	}
	LA3_: ;
}
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size) {
	int result;
	result = (int)0;
	result = memcmp(a, b, ((size_t) (size)));
	return result;
}
static N_INLINE(NIM_BOOL, equalMem__Bj9c9cm9cBM9coLsuNsT5BvZ9awsystem)(void* a, void* b, NI size) {
	NIM_BOOL result;
	int T1_;
	result = (NIM_BOOL)0;
	T1_ = (int)0;
	T1_ = nimCmpMem(a, b, size);
	result = (T1_ == ((NI32) 0));
	return result;
}
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
	NIM_BOOL result;
	NI alen;
	NI blen;
{	result = (NIM_BOOL)0;
	alen = (a ? a->Sup.len : 0);
	blen = (b ? b->Sup.len : 0);
	{
		if (!(alen == blen)) goto LA3_;
		{
			if (!(alen == ((NI) 0))) goto LA7_;
			result = NIM_TRUE;
			goto BeforeRet_;
		}
		LA7_: ;
		result = equalMem__Bj9c9cm9cBM9coLsuNsT5BvZ9awsystem(((void*) ((&a->data[((NI) 0)]))), ((void*) ((&b->data[((NI) 0)]))), ((NI) (alen)));
		goto BeforeRet_;
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, len__5mJADrRYkP3r9auuiuDZN9cQast)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n) {
	NI result;
	NI T1_;
	result = (NI)0;
	T1_ = ((*n).sons ? (*n).sons->Sup.len : 0);
	result = T1_;
	return result;
}
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c) {
	(*dest).data[(*dest).Sup.len] = c;
	(*dest).data[(NI)((*dest).Sup.len + ((NI) 1))] = 0;
	(*dest).Sup.len += ((NI) 1);
}
static N_INLINE(void, addTypeFlags__elsbxvFHNKtX8JO9cz8toqgtypes)(NimStringDesc** name, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	{
		if (!(((*typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 17))&63U)))!=0)) goto LA3_;
		unsureAsgnRef((void**) (&(*name)), resizeString((*name), 8));
appendString((*name), ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_81));
	}
	LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, base__PfgI9ap7WOnsRfFV4znQ27w)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = (*t).sons->data[((NI) 0)];
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, valueToString__c6fJ8M9cz9bCTBCWXoRR8Z9cw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	switch ((*a).kind) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15):
	{
		result = nimInt64ToStr((*a)._kind_1.intVal);
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 16) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 19):
	{
		result = nimFloatToStr((*a)._kind_2.floatVal);
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 20) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 22):
	{
		result = copyString((*a)._kind_3.strVal);
	}
	break;
	default:
	{
		result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_118));
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rangeToStr__dKqbxTgNqLs9a9bJh0nKSlQg)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NimStringDesc* result;
	NimStringDesc* T1_;
	NimStringDesc* T2_;
	NimStringDesc* T3_;
	result = (NimStringDesc*)0;
	T1_ = (NimStringDesc*)0;
	T2_ = (NimStringDesc*)0;
	T2_ = valueToString__c6fJ8M9cz9bCTBCWXoRR8Z9cw((*n)._kind_6.sons->data[((NI) 0)]);
	T3_ = (NimStringDesc*)0;
	T3_ = valueToString__c6fJ8M9cz9bCTBCWXoRR8Z9cw((*n)._kind_6.sons->data[((NI) 1)]);
	T1_ = rawNewString((T2_ ? T2_->Sup.len : 0) + (T3_ ? T3_->Sup.len : 0) + 2);
appendString(T1_, T2_);
appendString(T1_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_119));
appendString(T1_, T3_);
	result = T1_;
	return result;
}
static N_INLINE(NI, len__P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	NI T1_;
	result = (NI)0;
	T1_ = ((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0);
	result = T1_;
	return result;
}
static N_INLINE(void, addSep__YUPaaUWtjAGjAFdReiI2lQstrutils)(NimStringDesc** dest, NimStringDesc* sep, NI startLen) {
	{
		if (!(((NI) (startLen)) < ((*dest) ? (*dest)->Sup.len : 0))) goto LA3_;
		unsureAsgnRef((void**) (&(*dest)), resizeString((*dest), (sep ? sep->Sup.len : 0) + 0));
appendString((*dest), sep);
	}
	LA3_: ;
}
N_LIB_PRIVATE N_CLOSURE(NimStringDesc*, typeToString__7CesF0Ee4QvGI9cfh0oqtcA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer, void* ClE_0) {
	NimStringDesc* result;
	tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw* colonenvP_;
	tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer_2;
	tyProc__3iD0yymxvVOS8ZW9aQRe2MA T1_;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
{	result = (NimStringDesc*)0;
	colonenvP_ = (tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw*) ClE_0;
	result = ((NimStringDesc*) NIM_NIL);
	nimZeroMem((void*)(&T1_), sizeof(tyProc__3iD0yymxvVOS8ZW9aQRe2MA));
	T1_.ClP_0 = getPrefer__Ej4rXBradPyy1ddBuf8aog; T1_.ClE_0 = colonenvP_;
	prefer_2 = T1_.ClE_0? T1_.ClP_0(prefer, T1_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_6)(T1_.ClP_0))(prefer);
	t = typ;
	{
		if (!(t == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA4_;
		goto BeforeRet_;
	}
	LA4_: ;
	{
		NIM_BOOL T8_;
		NIM_BOOL T9_;
		NIM_BOOL T10_;
		T8_ = (NIM_BOOL)0;
		T9_ = (NIM_BOOL)0;
		T10_ = (NIM_BOOL)0;
		T10_ = ((249 &((NU8)1<<((NU)(prefer_2)&7U)))!=0);
		if (!(T10_)) goto LA11_;
		T10_ = !(((*t).sym == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
		LA11_: ;
		T9_ = T10_;
		if (!(T9_)) goto LA12_;
		T9_ = !((((*(*t).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw) 33))&63U)))!=0));
		LA12_: ;
		T8_ = T9_;
		if (!(T8_)) goto LA13_;
		T8_ = !(((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24)));
		LA13_: ;
		if (!T8_) goto LA14_;
		{
			NIM_BOOL T18_;
			NimStringDesc* T22_;
			NimStringDesc* T23_;
			T18_ = (NIM_BOOL)0;
			T18_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31));
			if (!(T18_)) goto LA19_;
			T18_ = isIntLit__F9ciDIanrWYqbJ4rgLlNAAgtypes(t);
			LA19_: ;
			if (!T18_) goto LA20_;
			T22_ = (NimStringDesc*)0;
			T23_ = (NimStringDesc*)0;
			T23_ = nimInt64ToStr((*(*t).n)._kind_1.intVal);
			T22_ = rawNewString(((*(*(*t).sym).name).s ? (*(*(*t).sym).name).s->Sup.len : 0) + (T23_ ? T23_->Sup.len : 0) + 10);
appendString(T22_, (*(*(*t).sym).name).s);
appendString(T22_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_7));
appendString(T22_, T23_);
appendString(T22_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_8));
			result = T22_;
		}
		goto LA16_;
		LA20_: ;
		{
			NIM_BOOL T25_;
			tyProc__6Q0U7ENNigVI8bP9cBw49bHg T29_;
			T25_ = (NIM_BOOL)0;
			T25_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4));
			if (!(T25_)) goto LA26_;
			T25_ = !(((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4)));
			LA26_: ;
			if (!T25_) goto LA27_;
			nimZeroMem((void*)(&T29_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
			T29_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T29_.ClE_0 = colonenvP_;
			result = T29_.ClE_0? T29_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T29_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_9)(T29_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		}
		goto LA16_;
		LA27_: ;
		{
			if (!((192 &((NU8)1<<((NU)(prefer_2)&7U)))!=0)) goto LA31_;
			switch ((*t).kind) {
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 1) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 2):
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 14):
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 28) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 29):
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 44):
			{
				result = copyString(typeToStr__8K1bQMe7v9aG2S8LV9co9bpwQ[((*t).kind)- 0]);
			}
			break;
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10):
			{
				tyProc__6Q0U7ENNigVI8bP9cBw49bHg T35_;
				tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T36_;
				nimZeroMem((void*)(&T35_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
				T35_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T35_.ClE_0 = colonenvP_;
				T36_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T36_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
				result = T35_.ClE_0? T35_.ClP_0(T36_, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T35_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_74)(T35_.ClP_0))(T36_, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			}
			break;
			case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 54):
			{
				tyProc__6Q0U7ENNigVI8bP9cBw49bHg T38_;
				tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T39_;
				tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T40_;
				nimZeroMem((void*)(&T38_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
				T38_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T38_.ClE_0 = colonenvP_;
				T39_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T39_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
				T40_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T40_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(T39_);
				result = T38_.ClE_0? T38_.ClP_0(T40_, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T38_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_75)(T38_.ClP_0))(T40_, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			}
			break;
			default:
			{
				result = copyString((*(*(*t).sym).name).s);
			}
			break;
			}
			{
				NIM_BOOL T44_;
				NimStringDesc* T48_;
				T44_ = (NIM_BOOL)0;
				T44_ = (prefer_2 == ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 7));
				if (!(T44_)) goto LA45_;
				T44_ = !(eqStrings(result, (*(*(*t).sym).name).s));
				LA45_: ;
				if (!T44_) goto LA46_;
				T48_ = (NimStringDesc*)0;
				T48_ = rawNewString(((*(*(*t).sym).name).s ? (*(*(*t).sym).name).s->Sup.len : 0) + (result ? result->Sup.len : 0) + 2);
appendString(T48_, (*(*(*t).sym).name).s);
appendString(T48_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_76));
appendString(T48_, result);
appendString(T48_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_77));
				result = T48_;
			}
			LA46_: ;
		}
		goto LA16_;
		LA31_: ;
		{
			NIM_BOOL T50_;
			T50_ = (NIM_BOOL)0;
			T50_ = ((33 &((NU8)1<<((NU)(prefer_2)&7U)))!=0);
			if (T50_) goto LA51_;
			T50_ = ((*(*t).sym).owner == 0);
			LA51_: ;
			if (!T50_) goto LA52_;
			result = copyString((*(*(*t).sym).name).s);
			{
				NIM_BOOL T56_;
				NI T58_;
				NIM_BOOL first;
				T56_ = (NIM_BOOL)0;
				T56_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 12));
				if (!(T56_)) goto LA57_;
				T58_ = (NI)0;
				T58_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
				T56_ = (((NI) 0) < T58_);
				LA57_: ;
				if (!T56_) goto LA59_;
				result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_78));
				first = NIM_TRUE;
				{
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ** son;
					NI i;
					NI L;
					NI T62_;
					son = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ**)0;
					i = ((NI) 0);
					T62_ = ((*t).sons ? (*t).sons->Sup.len : 0);
					L = T62_;
					{
						while (1) {
							tyProc__6Q0U7ENNigVI8bP9cBw49bHg T69_;
							NimStringDesc* T70_;
							if (!(i < L)) goto LA64;
							son = &(*t).sons->data[i];
							{
								if (!!(first)) goto LA67_;
								result = resizeString(result, 4);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_79));
							}
							LA67_: ;
							nimZeroMem((void*)(&T69_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
							T69_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T69_.ClE_0 = colonenvP_;
							T70_ = (NimStringDesc*)0;
							T70_ = T69_.ClE_0? T69_.ClP_0((*son), ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T69_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_80)(T69_.ClP_0))((*son), ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
							result = resizeString(result, (T70_ ? T70_->Sup.len : 0) + 0);
appendString(result, T70_);
							first = NIM_FALSE;
							i += ((NI) 1);
						} LA64: ;
					}
				}
			}
			LA59_: ;
		}
		goto LA16_;
		LA52_: ;
		{
			NimStringDesc* T72_;
			T72_ = (NimStringDesc*)0;
			T72_ = rawNewString(((*(*(*(*t).sym).owner).name).s ? (*(*(*(*t).sym).owner).name).s->Sup.len : 0) + ((*(*(*t).sym).name).s ? (*(*(*t).sym).name).s->Sup.len : 0) + 1);
appendString(T72_, (*(*(*(*t).sym).owner).name).s);
appendChar(T72_, 46);
appendString(T72_, (*(*(*t).sym).name).s);
			result = T72_;
		}
		LA16_: ;
		addTypeFlags__elsbxvFHNKtX8JO9cz8toqgtypes((&result), t);
		goto BeforeRet_;
	}
	LA14_: ;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31):
	{
		{
			NIM_BOOL T76_;
			NIM_BOOL T77_;
			T76_ = (NIM_BOOL)0;
			T77_ = (NIM_BOOL)0;
			T77_ = isIntLit__F9ciDIanrWYqbJ4rgLlNAAgtypes(t);
			T76_ = !(T77_);
			if (T76_) goto LA78_;
			T76_ = (prefer_2 == ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 2));
			LA78_: ;
			if (!T76_) goto LA79_;
			result = copyString(typeToStr__8K1bQMe7v9aG2S8LV9co9bpwQ[((*t).kind)- 0]);
		}
		goto LA74_;
		LA79_: ;
		{
			{
				if (!(prefer_2 == ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 4))) goto LA84_;
				result = nimInt64ToStr((*(*t).n)._kind_1.intVal);
			}
			goto LA82_;
			LA84_: ;
			{
				NimStringDesc* T87_;
				NimStringDesc* T88_;
				T87_ = (NimStringDesc*)0;
				T88_ = (NimStringDesc*)0;
				T88_ = nimInt64ToStr((*(*t).n)._kind_1.intVal);
				T87_ = rawNewString((T88_ ? T88_->Sup.len : 0) + 13);
appendString(T87_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_82));
appendString(T87_, T88_);
appendString(T87_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_8));
				result = T87_;
			}
			LA82_: ;
		}
		LA74_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 9):
	{
		NimStringDesc* T90_;
		tyProc__6Q0U7ENNigVI8bP9cBw49bHg T91_;
		NimStringDesc* T92_;
		T90_ = (NimStringDesc*)0;
		nimZeroMem((void*)(&T91_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
		T91_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T91_.ClE_0 = colonenvP_;
		T92_ = (NimStringDesc*)0;
		T92_ = T91_.ClE_0? T91_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T91_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_83)(T91_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		T90_ = rawNewString((T92_ ? T92_->Sup.len : 0) + 1);
appendString(T90_, T92_);
appendChar(T90_, 91);
		result = T90_;
		{
			NI i_2;
			NI colontmp_;
			NI T94_;
			NI i_3;
			i_2 = (NI)0;
			colontmp_ = (NI)0;
			T94_ = (NI)0;
			T94_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			colontmp_ = (NI)(T94_ - !(((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 9))));
			i_3 = ((NI) 1);
			{
				while (1) {
					tyProc__6Q0U7ENNigVI8bP9cBw49bHg T101_;
					NimStringDesc* T102_;
					if (!(i_3 < colontmp_)) goto LA96;
					i_2 = i_3;
					{
						if (!(((NI) 1) < i_2)) goto LA99_;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84));
					}
					LA99_: ;
					nimZeroMem((void*)(&T101_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
					T101_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T101_.ClE_0 = colonenvP_;
					T102_ = (NimStringDesc*)0;
					T102_ = T101_.ClE_0? T101_.ClP_0((*t).sons->data[i_2], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 4), T101_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_85)(T101_.ClP_0))((*t).sons->data[i_2], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 4));
					result = resizeString(result, (T102_ ? T102_->Sup.len : 0) + 0);
appendString(result, T102_);
					i_3 += ((NI) 1);
				} LA96: ;
			}
		}
		result = addChar(result, 93);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10):
	{
		NimStringDesc* T104_;
		tyProc__6Q0U7ENNigVI8bP9cBw49bHg T105_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T106_;
		NimStringDesc* T107_;
		T104_ = (NimStringDesc*)0;
		nimZeroMem((void*)(&T105_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
		T105_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T105_.ClE_0 = colonenvP_;
		T106_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T106_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		T107_ = (NimStringDesc*)0;
		T107_ = T105_.ClE_0? T105_.ClP_0(T106_, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T105_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_86)(T105_.ClP_0))(T106_, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		T104_ = rawNewString((T107_ ? T107_->Sup.len : 0) + 1);
appendString(T104_, T107_);
appendChar(T104_, 91);
		result = T104_;
		{
			NI i_4;
			NI colontmp__2;
			NI T109_;
			NI i_5;
			i_4 = (NI)0;
			colontmp__2 = (NI)0;
			T109_ = (NI)0;
			T109_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			colontmp__2 = (NI)(T109_ - ((NI) 1));
			i_5 = ((NI) 0);
			{
				while (1) {
					tyProc__6Q0U7ENNigVI8bP9cBw49bHg T116_;
					NimStringDesc* T117_;
					if (!(i_5 < colontmp__2)) goto LA111;
					i_4 = i_5;
					{
						if (!(((NI) 0) < i_4)) goto LA114_;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84));
					}
					LA114_: ;
					nimZeroMem((void*)(&T116_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
					T116_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T116_.ClE_0 = colonenvP_;
					T117_ = (NimStringDesc*)0;
					T117_ = T116_.ClE_0? T116_.ClP_0((*t).sons->data[i_4], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 5), T116_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_87)(T116_.ClP_0))((*t).sons->data[i_4], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 5));
					result = resizeString(result, (T117_ ? T117_->Sup.len : 0) + 0);
appendString(result, T117_);
					i_5 += ((NI) 1);
				} LA111: ;
			}
		}
		result = addChar(result, 93);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8):
	{
		{
			if (!((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 0))) goto LA121_;
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_88));
		}
		goto LA119_;
		LA121_: ;
		{
			NimStringDesc* T124_;
			tyProc__6Q0U7ENNigVI8bP9cBw49bHg T125_;
			NimStringDesc* T126_;
			T124_ = (NimStringDesc*)0;
			nimZeroMem((void*)(&T125_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
			T125_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T125_.ClE_0 = colonenvP_;
			T126_ = (NimStringDesc*)0;
			T126_ = T125_.ClE_0? T125_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T125_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_90)(T125_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			T124_ = rawNewString((T126_ ? T126_->Sup.len : 0) + 5);
appendString(T124_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_89));
appendString(T124_, T126_);
			result = T124_;
		}
		LA119_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
	{
		{
			NIM_BOOL T130_;
			T130_ = (NIM_BOOL)0;
			T130_ = (prefer_2 == ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 4));
			if (!(T130_)) goto LA131_;
			T130_ = !(((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
			LA131_: ;
			if (!T130_) goto LA132_;
			result = renderTree__ppjdh9aQ5L0SGPF8yz1gZ9cA((*t).n, 0);
		}
		goto LA128_;
		LA132_: ;
		{
			NimStringDesc* T135_;
			NimStringDesc* T136_;
			T135_ = (NimStringDesc*)0;
			T136_ = (NimStringDesc*)0;
			{
				NI T139_;
				tyProc__6Q0U7ENNigVI8bP9cBw49bHg T142_;
				T139_ = (NI)0;
				T139_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
				if (!(((NI) 0) < T139_)) goto LA140_;
				nimZeroMem((void*)(&T142_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
				T142_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T142_.ClE_0 = colonenvP_;
				T136_ = T142_.ClE_0? T142_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T142_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_92)(T142_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			}
			goto LA137_;
			LA140_: ;
			{
				T136_ = ((NimStringDesc*) NIM_NIL);
			}
			LA137_: ;
			T135_ = rawNewString((T136_ ? T136_->Sup.len : 0) + 8);
appendString(T135_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_91));
appendString(T135_, T136_);
appendString(T135_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_93));
			result = T135_;
			{
				NimStringDesc* T148_;
				NimStringDesc* T149_;
				if (!!(((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA146_;
				T148_ = (NimStringDesc*)0;
				T149_ = (NimStringDesc*)0;
				T149_ = renderTree__ppjdh9aQ5L0SGPF8yz1gZ9cA((*t).n, 0);
				T148_ = rawNewString((T149_ ? T149_->Sup.len : 0) + 2);
appendString(T148_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_94));
appendString(T148_, T149_);
appendString(T148_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_8));
				result = resizeString(result, (T148_ ? T148_->Sup.len : 0) + 0);
appendString(result, T148_);
			}
			LA146_: ;
		}
		LA128_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52):
	{
		{
			NIM_BOOL T153_;
			T153_ = (NIM_BOOL)0;
			T153_ = !(((*t).sym == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
			if (!(T153_)) goto LA154_;
			T153_ = !(((*(*t).sym).owner == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
			LA154_: ;
			if (!T153_) goto LA155_;
			{
				tyProc__6Q0U7ENNigVI8bP9cBw49bHg T161_;
				tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T162_;
				if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0)) goto LA159_;
				nimZeroMem((void*)(&T161_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
				T161_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T161_.ClE_0 = colonenvP_;
				T162_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T162_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
				result = T161_.ClE_0? T161_.ClP_0(T162_, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T161_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_95)(T161_.ClP_0))(T162_, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
				goto BeforeRet_;
			}
			LA159_: ;
			result = copyString((*(*(*(*t).sym).owner).name).s);
			goto BeforeRet_;
		}
		goto LA151_;
		LA155_: ;
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_96));
		}
		LA151_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 51):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T165_;
		T165_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T165_ = base__PfgI9ap7WOnsRfFV4znQ27w(t);
		switch ((*T165_).kind) {
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_97));
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_98));
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 21):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_99));
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_100));
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_101));
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 19):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_102));
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_103));
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_104));
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_35));
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_27));
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_28));
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 27):
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_105));
		}
		break;
		default:
		{
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T179_;
			T179_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T179_ = base__PfgI9ap7WOnsRfFV4znQ27w(t);
			result = copyString(typeToStr__8K1bQMe7v9aG2S8LV9co9bpwQ[((*T179_).kind)- 0]);
		}
		break;
		}
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 55):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* concrete;
		{
			NI T183_;
			T183_ = ((*t).sons ? (*t).sons->Sup.len : 0);
			if (!(((NI) 1) < T183_)) goto LA184_;
			concrete = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		}
		goto LA181_;
		LA184_: ;
		{
			concrete = ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL);
		}
		LA181_: ;
		{
			tyProc__6Q0U7ENNigVI8bP9cBw49bHg T191_;
			if (!!((concrete == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA189_;
			nimZeroMem((void*)(&T191_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
			T191_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T191_.ClE_0 = colonenvP_;
			result = T191_.ClE_0? T191_.ClP_0(concrete, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T191_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_106)(T191_.ClP_0))(concrete, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		}
		goto LA187_;
		LA189_: ;
		{
			NimStringDesc* T193_;
			tyProc__6Q0U7ENNigVI8bP9cBw49bHg T194_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T195_;
			NimStringDesc* T196_;
			T193_ = (NimStringDesc*)0;
			nimZeroMem((void*)(&T194_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
			T194_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T194_.ClE_0 = colonenvP_;
			T195_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T195_ = base__PfgI9ap7WOnsRfFV4znQ27w(t);
			T196_ = (NimStringDesc*)0;
			T196_ = T194_.ClE_0? T194_.ClP_0(T195_, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T194_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_108)(T194_.ClP_0))(T195_, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			T193_ = rawNewString((T196_ ? T196_->Sup.len : 0) + 10);
appendString(T193_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_107));
appendString(T193_, T196_);
appendString(T193_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_93));
			result = T193_;
		}
		LA187_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* body;
		NimStringDesc* T198_;
		body = base__PfgI9ap7WOnsRfFV4znQ27w(t);
		T198_ = (NimStringDesc*)0;
		T198_ = rawNewString(((*(*(*body).sym).name).s ? (*(*(*body).sym).name).s->Sup.len : 0) + 1);
appendString(T198_, (*(*(*body).sym).name).s);
appendString(T198_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_109));
		result = T198_;
		{
			NI i_6;
			NI colontmp__3;
			NI T200_;
			NI i_7;
			i_6 = (NI)0;
			colontmp__3 = (NI)0;
			T200_ = (NI)0;
			T200_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			colontmp__3 = (NI)(T200_ - ((NI) 1));
			i_7 = ((NI) 1);
			{
				while (1) {
					tyProc__6Q0U7ENNigVI8bP9cBw49bHg T207_;
					NimStringDesc* T208_;
					if (!(i_7 < colontmp__3)) goto LA202;
					i_6 = i_7;
					{
						if (!(((NI) 1) < i_6)) goto LA205_;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84));
					}
					LA205_: ;
					nimZeroMem((void*)(&T207_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
					T207_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T207_.ClE_0 = colonenvP_;
					T208_ = (NimStringDesc*)0;
					T208_ = T207_.ClE_0? T207_.ClP_0((*t).sons->data[i_6], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T207_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_110)(T207_.ClP_0))((*t).sons->data[i_6], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
					result = resizeString(result, (T208_ ? T208_->Sup.len : 0) + 0);
appendString(result, T208_);
					i_7 += ((NI) 1);
				} LA202: ;
			}
		}
		result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_93));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 56):
	{
		{
			NI i_8;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son_2;
			NI i_9;
			NI L_2;
			NI T211_;
			i_8 = (NI)0;
			son_2 = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			i_9 = ((NI) 0);
			T211_ = ((*t).sons ? (*t).sons->Sup.len : 0);
			L_2 = T211_;
			{
				while (1) {
					tyProc__6Q0U7ENNigVI8bP9cBw49bHg T214_;
					NimStringDesc* T215_;
					if (!(i_9 < L_2)) goto LA213;
					i_8 = i_9;
					son_2 = (*t).sons->data[i_9];
					nimZeroMem((void*)(&T214_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
					T214_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T214_.ClE_0 = colonenvP_;
					T215_ = (NimStringDesc*)0;
					T215_ = T214_.ClE_0? T214_.ClP_0(son_2, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T214_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_111)(T214_.ClP_0))(son_2, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
					result = resizeString(result, (T215_ ? T215_->Sup.len : 0) + 0);
appendString(result, T215_);
					{
						NI T218_;
						T218_ = (((*t).sons ? (*t).sons->Sup.len : 0)-1);
						if (!(i_8 < T218_)) goto LA219_;
						result = resizeString(result, 5);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_112));
					}
					LA219_: ;
					i_9 += ((NI) 1);
				} LA213: ;
			}
		}
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 57):
	{
		{
			NI i_10;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son_3;
			NI i_11;
			NI L_3;
			NI T223_;
			i_10 = (NI)0;
			son_3 = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			i_11 = ((NI) 0);
			T223_ = ((*t).sons ? (*t).sons->Sup.len : 0);
			L_3 = T223_;
			{
				while (1) {
					tyProc__6Q0U7ENNigVI8bP9cBw49bHg T226_;
					NimStringDesc* T227_;
					if (!(i_11 < L_3)) goto LA225;
					i_10 = i_11;
					son_3 = (*t).sons->data[i_11];
					nimZeroMem((void*)(&T226_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
					T226_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T226_.ClE_0 = colonenvP_;
					T227_ = (NimStringDesc*)0;
					T227_ = T226_.ClE_0? T226_.ClP_0(son_3, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T226_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_113)(T226_.ClP_0))(son_3, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
					result = resizeString(result, (T227_ ? T227_->Sup.len : 0) + 0);
appendString(result, T227_);
					{
						NI T230_;
						T230_ = (((*t).sons ? (*t).sons->Sup.len : 0)-1);
						if (!(i_10 < T230_)) goto LA231_;
						result = resizeString(result, 4);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_79));
					}
					LA231_: ;
					i_11 += ((NI) 1);
				} LA225: ;
			}
		}
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 58):
	{
		NimStringDesc* T234_;
		tyProc__6Q0U7ENNigVI8bP9cBw49bHg T235_;
		NimStringDesc* T236_;
		T234_ = (NimStringDesc*)0;
		nimZeroMem((void*)(&T235_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
		T235_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T235_.ClE_0 = colonenvP_;
		T236_ = (NimStringDesc*)0;
		T236_ = T235_.ClE_0? T235_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T235_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_115)(T235_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		T234_ = rawNewString((T236_ ? T236_->Sup.len : 0) + 4);
appendString(T234_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_114));
appendString(T234_, T236_);
		result = T234_;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 6):
	{
		result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_16));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 61):
	{
		{
			if (!((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL))) goto LA241_;
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_116));
		}
		goto LA239_;
		LA241_: ;
		{
			NimStringDesc* T244_;
			NimStringDesc* T245_;
			T244_ = (NimStringDesc*)0;
			T245_ = (NimStringDesc*)0;
			T245_ = renderTree__ppjdh9aQ5L0SGPF8yz1gZ9cA((*t).n, 0);
			T244_ = rawNewString((T245_ ? T245_->Sup.len : 0) + 8);
appendString(T244_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_117));
appendString(T244_, T245_);
appendString(T244_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_8));
			result = T244_;
		}
		LA239_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
	{
		result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_101));
		{
			NI T249_;
			T249_ = (NI)0;
			T249_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			if (!(((NI) 0) < T249_)) goto LA250_;
			{
				NimStringDesc* T256_;
				NimStringDesc* T257_;
				tyProc__6Q0U7ENNigVI8bP9cBw49bHg T258_;
				NimStringDesc* T259_;
				if (!((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20))) goto LA254_;
				T256_ = (NimStringDesc*)0;
				T257_ = (NimStringDesc*)0;
				T257_ = rangeToStr__dKqbxTgNqLs9a9bJh0nKSlQg((*(*t).sons->data[((NI) 0)]).n);
				nimZeroMem((void*)(&T258_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
				T258_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T258_.ClE_0 = colonenvP_;
				T259_ = (NimStringDesc*)0;
				T259_ = T258_.ClE_0? T258_.ClP_0((*t).sons->data[((NI) 1)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T258_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_120)(T258_.ClP_0))((*t).sons->data[((NI) 1)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
				T256_ = rawNewString((T257_ ? T257_->Sup.len : 0) + (T259_ ? T259_->Sup.len : 0) + 4);
appendString(T256_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_109));
appendString(T256_, T257_);
appendString(T256_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84));
appendString(T256_, T259_);
appendChar(T256_, 93);
				result = resizeString(result, (T256_ ? T256_->Sup.len : 0) + 0);
appendString(result, T256_);
			}
			goto LA252_;
			LA254_: ;
			{
				NimStringDesc* T261_;
				tyProc__6Q0U7ENNigVI8bP9cBw49bHg T262_;
				NimStringDesc* T263_;
				tyProc__6Q0U7ENNigVI8bP9cBw49bHg T264_;
				NimStringDesc* T265_;
				T261_ = (NimStringDesc*)0;
				nimZeroMem((void*)(&T262_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
				T262_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T262_.ClE_0 = colonenvP_;
				T263_ = (NimStringDesc*)0;
				T263_ = T262_.ClE_0? T262_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T262_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_121)(T262_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
				nimZeroMem((void*)(&T264_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
				T264_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T264_.ClE_0 = colonenvP_;
				T265_ = (NimStringDesc*)0;
				T265_ = T264_.ClE_0? T264_.ClP_0((*t).sons->data[((NI) 1)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T264_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_122)(T264_.ClP_0))((*t).sons->data[((NI) 1)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
				T261_ = rawNewString((T263_ ? T263_->Sup.len : 0) + (T265_ ? T265_->Sup.len : 0) + 4);
appendString(T261_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_109));
appendString(T261_, T263_);
appendString(T261_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84));
appendString(T261_, T265_);
appendChar(T261_, 93);
				result = resizeString(result, (T261_ ? T261_->Sup.len : 0) + 0);
appendString(result, T261_);
			}
			LA252_: ;
		}
		LA250_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 49):
	{
		result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_123));
		{
			NI T269_;
			NimStringDesc* T272_;
			tyProc__6Q0U7ENNigVI8bP9cBw49bHg T273_;
			NimStringDesc* T274_;
			T269_ = (NI)0;
			T269_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			if (!(((NI) 0) < T269_)) goto LA270_;
			T272_ = (NimStringDesc*)0;
			nimZeroMem((void*)(&T273_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
			T273_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T273_.ClE_0 = colonenvP_;
			T274_ = (NimStringDesc*)0;
			T274_ = T273_.ClE_0? T273_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T273_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_124)(T273_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			T272_ = rawNewString((T274_ ? T274_->Sup.len : 0) + 2);
appendString(T272_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_109));
appendString(T272_, T274_);
appendChar(T272_, 93);
			result = resizeString(result, (T272_ ? T272_->Sup.len : 0) + 0);
appendString(result, T272_);
		}
		LA270_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24):
	{
		{
			NIM_BOOL T278_;
			T278_ = (NIM_BOOL)0;
			T278_ = !(((*t).sym == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
			if (!(T278_)) goto LA279_;
			T278_ = !((prefer_2 == ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 6)));
			LA279_: ;
			if (!T278_) goto LA280_;
			result = copyString((*(*(*t).sym).name).s);
		}
		goto LA276_;
		LA280_: ;
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_100));
			{
				NI T285_;
				NimStringDesc* T288_;
				tyProc__6Q0U7ENNigVI8bP9cBw49bHg T289_;
				NimStringDesc* T290_;
				T285_ = (NI)0;
				T285_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
				if (!(((NI) 0) < T285_)) goto LA286_;
				T288_ = (NimStringDesc*)0;
				nimZeroMem((void*)(&T289_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
				T289_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T289_.ClE_0 = colonenvP_;
				T290_ = (NimStringDesc*)0;
				T290_ = T289_.ClE_0? T289_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T289_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_125)(T289_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
				T288_ = rawNewString((T290_ ? T290_->Sup.len : 0) + 2);
appendString(T288_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_109));
appendString(T288_, T290_);
appendChar(T288_, 93);
				result = resizeString(result, (T288_ ? T288_->Sup.len : 0) + 0);
appendString(result, T288_);
			}
			LA286_: ;
		}
		LA276_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 15):
	{
		result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_126));
		{
			NI T294_;
			NimStringDesc* T297_;
			tyProc__6Q0U7ENNigVI8bP9cBw49bHg T298_;
			NimStringDesc* T299_;
			T294_ = (NI)0;
			T294_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			if (!(((NI) 0) < T294_)) goto LA295_;
			T297_ = (NimStringDesc*)0;
			nimZeroMem((void*)(&T298_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
			T298_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T298_.ClE_0 = colonenvP_;
			T299_ = (NimStringDesc*)0;
			T299_ = T298_.ClE_0? T298_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T298_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_127)(T298_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			T297_ = rawNewString((T299_ ? T299_->Sup.len : 0) + 2);
appendString(T297_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_109));
appendString(T297_, T299_);
appendChar(T297_, 93);
			result = resizeString(result, (T297_ ? T297_->Sup.len : 0) + 0);
appendString(result, T297_);
		}
		LA295_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 19):
	{
		result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_102));
		{
			NI T303_;
			NimStringDesc* T306_;
			tyProc__6Q0U7ENNigVI8bP9cBw49bHg T307_;
			NimStringDesc* T308_;
			T303_ = (NI)0;
			T303_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			if (!(((NI) 0) < T303_)) goto LA304_;
			T306_ = (NimStringDesc*)0;
			nimZeroMem((void*)(&T307_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
			T307_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T307_.ClE_0 = colonenvP_;
			T308_ = (NimStringDesc*)0;
			T308_ = T307_.ClE_0? T307_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T307_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_128)(T307_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			T306_ = rawNewString((T308_ ? T308_->Sup.len : 0) + 2);
appendString(T306_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_109));
appendString(T306_, T308_);
appendChar(T306_, 93);
			result = resizeString(result, (T306_ ? T306_->Sup.len : 0) + 0);
appendString(result, T306_);
		}
		LA304_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 27):
	{
		result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_105));
		{
			NI T312_;
			NimStringDesc* T315_;
			tyProc__6Q0U7ENNigVI8bP9cBw49bHg T316_;
			NimStringDesc* T317_;
			T312_ = (NI)0;
			T312_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			if (!(((NI) 0) < T312_)) goto LA313_;
			T315_ = (NimStringDesc*)0;
			nimZeroMem((void*)(&T316_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
			T316_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T316_.ClE_0 = colonenvP_;
			T317_ = (NimStringDesc*)0;
			T317_ = T316_.ClE_0? T316_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T316_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_129)(T316_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			T315_ = rawNewString((T317_ ? T317_->Sup.len : 0) + 2);
appendString(T315_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_109));
appendString(T315_, T317_);
appendChar(T315_, 93);
			result = resizeString(result, (T315_ ? T315_->Sup.len : 0) + 0);
appendString(result, T315_);
		}
		LA313_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	{
		NimStringDesc* T319_;
		tyProc__6Q0U7ENNigVI8bP9cBw49bHg T320_;
		tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw T321_;
		NimStringDesc* T327_;
		T319_ = (NimStringDesc*)0;
		nimZeroMem((void*)(&T320_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
		T320_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T320_.ClE_0 = colonenvP_;
		T321_ = (tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw)0;
		{
			if (!(prefer_2 == ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 3))) goto LA324_;
			T321_ = ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 3);
		}
		goto LA322_;
		LA324_: ;
		{
			T321_ = ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 5);
		}
		LA322_: ;
		T327_ = (NimStringDesc*)0;
		T327_ = T320_.ClE_0? T320_.ClP_0((*t).sons->data[((NI) 0)], T321_, T320_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_131)(T320_.ClP_0))((*t).sons->data[((NI) 0)], T321_);
		T319_ = rawNewString((T327_ ? T327_->Sup.len : 0) + 9);
appendString(T319_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_130));
appendString(T319_, T327_);
		result = T319_;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		{
			if (!!(((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA331_;
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_132));
			{
				NI i_12;
				NI colontmp__4;
				NI i_13;
				i_12 = (NI)0;
				colontmp__4 = (NI)0;
				colontmp__4 = len__P89cqdlERShb9alU3iC0yj8wast((*t).n);
				i_13 = ((NI) 0);
				{
					while (1) {
						NimStringDesc* T336_;
						tyProc__6Q0U7ENNigVI8bP9cBw49bHg T337_;
						NimStringDesc* T338_;
						if (!(i_13 < colontmp__4)) goto LA335;
						i_12 = i_13;
						T336_ = (NimStringDesc*)0;
						nimZeroMem((void*)(&T337_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
						T337_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T337_.ClE_0 = colonenvP_;
						T338_ = (NimStringDesc*)0;
						T338_ = T337_.ClE_0? T337_.ClP_0((*t).sons->data[i_12], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T337_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_133)(T337_.ClP_0))((*t).sons->data[i_12], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
						T336_ = rawNewString(((*(*(*(*(*t).n)._kind_6.sons->data[i_12])._kind_4.sym).name).s ? (*(*(*(*(*t).n)._kind_6.sons->data[i_12])._kind_4.sym).name).s->Sup.len : 0) + (T338_ ? T338_->Sup.len : 0) + 2);
appendString(T336_, (*(*(*(*(*t).n)._kind_6.sons->data[i_12])._kind_4.sym).name).s);
appendString(T336_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_78));
appendString(T336_, T338_);
						result = resizeString(result, (T336_ ? T336_->Sup.len : 0) + 0);
appendString(result, T336_);
						{
							NI T341_;
							T341_ = (NI)0;
							T341_ = len__P89cqdlERShb9alU3iC0yj8wast((*t).n);
							if (!(i_12 < (NI)(T341_ - ((NI) 1)))) goto LA342_;
							result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84));
						}
						LA342_: ;
						i_13 += ((NI) 1);
					} LA335: ;
				}
			}
			result = addChar(result, 93);
		}
		goto LA329_;
		LA331_: ;
		{
			NI T345_;
			T345_ = (NI)0;
			T345_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			if (!(T345_ == ((NI) 0))) goto LA346_;
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_134));
		}
		goto LA329_;
		LA346_: ;
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_94));
			{
				NI i_14;
				NI colontmp__5;
				NI i_15;
				i_14 = (NI)0;
				colontmp__5 = (NI)0;
				colontmp__5 = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
				i_15 = ((NI) 0);
				{
					while (1) {
						tyProc__6Q0U7ENNigVI8bP9cBw49bHg T352_;
						NimStringDesc* T353_;
						if (!(i_15 < colontmp__5)) goto LA351;
						i_14 = i_15;
						nimZeroMem((void*)(&T352_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
						T352_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T352_.ClE_0 = colonenvP_;
						T353_ = (NimStringDesc*)0;
						T353_ = T352_.ClE_0? T352_.ClP_0((*t).sons->data[i_14], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T352_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_135)(T352_.ClP_0))((*t).sons->data[i_14], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
						result = resizeString(result, (T353_ ? T353_->Sup.len : 0) + 0);
appendString(result, T353_);
						{
							NI T356_;
							T356_ = (NI)0;
							T356_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
							if (!(i_14 < (NI)(T356_ - ((NI) 1)))) goto LA357_;
							result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84));
						}
						goto LA354_;
						LA357_: ;
						{
							NI T360_;
							T360_ = (NI)0;
							T360_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
							if (!(T360_ == ((NI) 1))) goto LA361_;
							result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_136));
						}
						goto LA354_;
						LA361_: ;
						LA354_: ;
						i_15 += ((NI) 1);
					} LA351: ;
				}
			}
			result = addChar(result, 41);
		}
		LA329_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 21):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47):
	{
		result = copyString(typeToStr__8K1bQMe7v9aG2S8LV9co9bpwQ[((*t).kind)- 0]);
		{
			NI T366_;
			T366_ = (NI)0;
			T366_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			if (!(((NI) 2) <= T366_)) goto LA367_;
			result = setLengthStr(result, ((NI) ((NI)((result ? result->Sup.len : 0) - ((NI) 1)))));
			result = addChar(result, 91);
			{
				NI i_16;
				NI colontmp__6;
				NI i_17;
				i_16 = (NI)0;
				colontmp__6 = (NI)0;
				colontmp__6 = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
				i_17 = ((NI) 0);
				{
					while (1) {
						tyProc__6Q0U7ENNigVI8bP9cBw49bHg T372_;
						NimStringDesc* T373_;
						if (!(i_17 < colontmp__6)) goto LA371;
						i_16 = i_17;
						nimZeroMem((void*)(&T372_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
						T372_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T372_.ClE_0 = colonenvP_;
						T373_ = (NimStringDesc*)0;
						T373_ = T372_.ClE_0? T372_.ClP_0((*t).sons->data[i_16], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T372_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_137)(T372_.ClP_0))((*t).sons->data[i_16], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
						result = resizeString(result, (T373_ ? T373_->Sup.len : 0) + 0);
appendString(result, T373_);
						{
							NI T376_;
							T376_ = (NI)0;
							T376_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
							if (!(i_16 < (NI)(T376_ - ((NI) 1)))) goto LA377_;
							result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84));
						}
						LA377_: ;
						i_17 += ((NI) 1);
					} LA371: ;
				}
			}
			result = addChar(result, 93);
		}
		goto LA364_;
		LA367_: ;
		{
			tyProc__6Q0U7ENNigVI8bP9cBw49bHg T380_;
			NimStringDesc* T381_;
			nimZeroMem((void*)(&T380_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
			T380_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T380_.ClE_0 = colonenvP_;
			T381_ = (NimStringDesc*)0;
			T381_ = T380_.ClE_0? T380_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T380_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_138)(T380_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			result = resizeString(result, (T381_ ? T381_->Sup.len : 0) + 0);
appendString(result, T381_);
		}
		LA364_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20):
	{
		result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_139));
		{
			NIM_BOOL T385_;
			NimStringDesc* T389_;
			T385_ = (NIM_BOOL)0;
			T385_ = !(((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
			if (!(T385_)) goto LA386_;
			T385_ = ((*(*t).n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 44));
			LA386_: ;
			if (!T385_) goto LA387_;
			T389_ = (NimStringDesc*)0;
			T389_ = rangeToStr__dKqbxTgNqLs9a9bJh0nKSlQg((*t).n);
			result = resizeString(result, (T389_ ? T389_->Sup.len : 0) + 0);
appendString(result, T389_);
		}
		LA387_: ;
		{
			NimStringDesc* T394_;
			tyProc__6Q0U7ENNigVI8bP9cBw49bHg T395_;
			NimStringDesc* T396_;
			if (!!((prefer_2 == ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 2)))) goto LA392_;
			T394_ = (NimStringDesc*)0;
			nimZeroMem((void*)(&T395_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
			T395_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T395_.ClE_0 = colonenvP_;
			T396_ = (NimStringDesc*)0;
			T396_ = T395_.ClE_0? T395_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T395_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_140)(T395_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			T394_ = rawNewString((T396_ ? T396_->Sup.len : 0) + 2);
appendString(T394_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_94));
appendString(T394_, T396_);
appendString(T394_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_8));
			result = resizeString(result, (T394_ ? T394_->Sup.len : 0) + 0);
appendString(result, T394_);
		}
		LA392_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25):
	{
		NimStringDesc* prag;
		{
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 15))&63U)))!=0)) goto LA400_;
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_141));
		}
		goto LA398_;
		LA400_: ;
		{
			if (!!(((*t).owner == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)))) goto LA403_;
			switch ((*(*t).owner).kind) {
			case ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 18):
			{
				result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_142));
			}
			break;
			case ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 17):
			{
				result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_143));
			}
			break;
			case ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 16):
			{
				result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_144));
			}
			break;
			default:
			{
				result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_145));
			}
			break;
			}
		}
		goto LA398_;
		LA403_: ;
		{
			result = copyString(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_145));
		}
		LA398_: ;
		{
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 9))&63U)))!=0)) goto LA412_;
			result = resizeString(result, 22);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_146));
		}
		LA412_: ;
		result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_94));
		{
			NI i_18;
			NI colontmp__7;
			NI i_19;
			i_18 = (NI)0;
			colontmp__7 = (NI)0;
			colontmp__7 = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			i_19 = ((NI) 1);
			{
				while (1) {
					tyProc__6Q0U7ENNigVI8bP9cBw49bHg T426_;
					NimStringDesc* T427_;
					if (!(i_19 < colontmp__7)) goto LA416;
					i_18 = i_19;
					{
						NIM_BOOL T419_;
						NIM_BOOL T420_;
						NI T422_;
						T419_ = (NIM_BOOL)0;
						T420_ = (NIM_BOOL)0;
						T420_ = !(((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
						if (!(T420_)) goto LA421_;
						T422_ = (NI)0;
						T422_ = len__P89cqdlERShb9alU3iC0yj8wast((*t).n);
						T420_ = (i_18 < T422_);
						LA421_: ;
						T419_ = T420_;
						if (!(T419_)) goto LA423_;
						T419_ = ((*(*(*t).n)._kind_6.sons->data[i_18]).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3));
						LA423_: ;
						if (!T419_) goto LA424_;
						result = resizeString(result, ((*(*(*(*(*t).n)._kind_6.sons->data[i_18])._kind_4.sym).name).s ? (*(*(*(*(*t).n)._kind_6.sons->data[i_18])._kind_4.sym).name).s->Sup.len : 0) + 0);
appendString(result, (*(*(*(*(*t).n)._kind_6.sons->data[i_18])._kind_4.sym).name).s);
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_78));
					}
					LA424_: ;
					nimZeroMem((void*)(&T426_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
					T426_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T426_.ClE_0 = colonenvP_;
					T427_ = (NimStringDesc*)0;
					T427_ = T426_.ClE_0? T426_.ClP_0((*t).sons->data[i_18], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T426_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_147)(T426_.ClP_0))((*t).sons->data[i_18], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
					result = resizeString(result, (T427_ ? T427_->Sup.len : 0) + 0);
appendString(result, T427_);
					{
						NI T430_;
						T430_ = (NI)0;
						T430_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
						if (!(i_18 < (NI)(T430_ - ((NI) 1)))) goto LA431_;
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84));
					}
					LA431_: ;
					i_19 += ((NI) 1);
				} LA416: ;
			}
		}
		result = addChar(result, 41);
		{
			NIM_BOOL T435_;
			NI T436_;
			NimStringDesc* T440_;
			tyProc__6Q0U7ENNigVI8bP9cBw49bHg T441_;
			NimStringDesc* T442_;
			T435_ = (NIM_BOOL)0;
			T436_ = (NI)0;
			T436_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			T435_ = (((NI) 0) < T436_);
			if (!(T435_)) goto LA437_;
			T435_ = !(((*t).sons->data[((NI) 0)] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)));
			LA437_: ;
			if (!T435_) goto LA438_;
			T440_ = (NimStringDesc*)0;
			nimZeroMem((void*)(&T441_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
			T441_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T441_.ClE_0 = colonenvP_;
			T442_ = (NimStringDesc*)0;
			T442_ = T441_.ClE_0? T441_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T441_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_148)(T441_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
			T440_ = rawNewString((T442_ ? T442_->Sup.len : 0) + 2);
appendString(T440_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_78));
appendString(T440_, T442_);
			result = resizeString(result, (T440_ ? T440_->Sup.len : 0) + 0);
appendString(result, T440_);
		}
		LA438_: ;
		{
			NIM_BOOL T445_;
			T445_ = (NIM_BOOL)0;
			T445_ = ((*t).callConv == ((tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA) 0));
			if (!(T445_)) goto LA446_;
			T445_ = !((((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 42))&63U)))!=0));
			LA446_: ;
			if (!T445_) goto LA447_;
			prag = ((NimStringDesc*) NIM_NIL);
		}
		goto LA443_;
		LA447_: ;
		{
			prag = reprEnum((NI)(*t).callConv, (&NTI__yjAJ8w0h1PBaSwSGJ3P7IA_));
		}
		LA443_: ;
		{
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 1))&63U)))!=0)) goto LA452_;
			addSep__YUPaaUWtjAGjAFdReiI2lQstrutils((&prag), ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84), ((NI) 0));
			prag = resizeString(prag, 12);
appendString(prag, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_149));
		}
		LA452_: ;
		{
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 7))&63U)))!=0)) goto LA456_;
			addSep__YUPaaUWtjAGjAFdReiI2lQstrutils((&prag), ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84), ((NI) 0));
			prag = resizeString(prag, 6);
appendString(prag, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_150));
		}
		LA456_: ;
		{
			NimStringDesc* T462_;
			NimStringDesc* T463_;
			if (!!(((*t).lockLevel == ((NI) -1)))) goto LA460_;
			addSep__YUPaaUWtjAGjAFdReiI2lQstrutils((&prag), ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84), ((NI) 0));
			T462_ = (NimStringDesc*)0;
			T463_ = (NimStringDesc*)0;
			T463_ = dollar___75vsOXLrqmx5LmVlMWaymw((*t).lockLevel);
			T462_ = rawNewString((T463_ ? T463_->Sup.len : 0) + 7);
appendString(T462_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_151));
appendString(T462_, T463_);
			prag = resizeString(prag, (T462_ ? T462_->Sup.len : 0) + 0);
appendString(prag, T462_);
		}
		LA460_: ;
		{
			NimStringDesc* T468_;
			if (!!(((prag ? prag->Sup.len : 0) == ((NI) 0)))) goto LA466_;
			T468_ = (NimStringDesc*)0;
			T468_ = rawNewString((prag ? prag->Sup.len : 0) + 4);
appendString(T468_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_152));
appendString(T468_, prag);
appendString(T468_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_153));
			result = resizeString(result, (T468_ ? T468_->Sup.len : 0) + 0);
appendString(result, T468_);
		}
		LA466_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 48):
	{
		tyProc__6Q0U7ENNigVI8bP9cBw49bHg T470_;
		NimStringDesc* T471_;
		nimZeroMem((void*)(&T470_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
		T470_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T470_.ClE_0 = colonenvP_;
		T471_ = (NimStringDesc*)0;
		T471_ = T470_.ClE_0? T470_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T470_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_154)(T470_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		result = nsuFormatSingleElem(typeToStr__8K1bQMe7v9aG2S8LV9co9bpwQ[((*t).kind)- 0], T471_);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	{
		NimStringDesc* T473_;
		tyProc__6Q0U7ENNigVI8bP9cBw49bHg T474_;
		NimStringDesc* T475_;
		T473_ = (NimStringDesc*)0;
		nimZeroMem((void*)(&T474_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
		T474_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T474_.ClE_0 = colonenvP_;
		T475_ = (NimStringDesc*)0;
		T475_ = T474_.ClE_0? T474_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T474_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_156)(T474_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		T473_ = rawNewString((T475_ ? T475_->Sup.len : 0) + 5);
appendString(T473_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_155));
appendString(T473_, T475_);
		result = T473_;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 45):
	{
		NimStringDesc* T477_;
		tyProc__6Q0U7ENNigVI8bP9cBw49bHg T478_;
		NimStringDesc* T479_;
		T477_ = (NimStringDesc*)0;
		nimZeroMem((void*)(&T478_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
		T478_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T478_.ClE_0 = colonenvP_;
		T479_ = (NimStringDesc*)0;
		T479_ = T478_.ClE_0? T478_.ClP_0((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0), T478_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_158)(T478_.ClP_0))((*t).sons->data[((NI) 0)], ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		T477_ = rawNewString((T479_ ? T479_->Sup.len : 0) + 6);
appendString(T477_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_157));
appendString(T477_, T479_);
		result = T477_;
	}
	break;
	default:
	{
		result = copyString(typeToStr__8K1bQMe7v9aG2S8LV9co9bpwQ[((*t).kind)- 0]);
	}
	break;
	}
	addTypeFlags__elsbxvFHNKtX8JO9cz8toqgtypes((&result), t);
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, typeToString__QlvraUan7WbHowhAbvDvdA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer) {
	NimStringDesc* result;
	tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw* colonenv_;
	tyProc__6Q0U7ENNigVI8bP9cBw49bHg T1_;
	result = (NimStringDesc*)0;
	colonenv_ = (tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw*)0;
	colonenv_ = (tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw*) newObj((&NTI__ik3gfZ9aJJHPxASsunXJrEA_), sizeof(tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw));
	(*colonenv_).Sup.m_type = (&NTI__aFpjIZ5GhrcXv4WiFpqyxw_);
	(*colonenv_).preferToplevel1 = prefer;
	nimZeroMem((void*)(&T1_), sizeof(tyProc__6Q0U7ENNigVI8bP9cBw49bHg));
	T1_.ClP_0 = typeToString__7CesF0Ee4QvGI9cfh0oqtcA; T1_.ClE_0 = colonenv_;
	result = T1_.ClE_0? T1_.ClP_0(typ, prefer, T1_.ClE_0):((TM__PpBJsMJcrcWrpLTS6mci1g_159)(T1_.ClP_0))(typ, prefer);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, elemType__PfgI9ap7WOnsRfFV4znQ27w_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T2_;
		T2_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T2_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		result = elemType__PfgI9ap7WOnsRfFV4znQ27w_2(T2_);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
	{
		result = (*t).sons->data[((NI) 1)];
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50):
	{
		result = t;
	}
	break;
	default:
	{
		result = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, initSameTypeClosure__YC853CO8ac9bG32yuRvSqxQ)(tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* Result) {
	(*Result).cmp = 0;
	(*Result).recCheck = 0;
	unsureAsgnRef((void**)&(*Result).s, NIM_NIL);
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isGenericAlias__YPjOkGV9axAnGR3UfLeWZ1g)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T3_;
{	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11));
	if (!(T1_)) goto LA2_;
	T3_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T3_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
	T1_ = ((*T3_).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11));
	LA2_: ;
	result = T1_;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipGenericAlias__PfgI9ap7WOnsRfFV4znQ27w_3)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
{	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isGenericAlias__YPjOkGV9axAnGR3UfLeWZ1g(t);
		if (!T3_) goto LA4_;
		result = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
	}
	goto LA1_;
	LA4_: ;
	{
		result = t;
	}
	LA1_: ;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NIM_BOOL, sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((eqTypeFlags__9aJCM4BDGbCJ8tj1Vz9bDB7g & (*a).flags) == (eqTypeFlags__9aJCM4BDGbCJ8tj1Vz9bDB7g & (*b).flags));
	return result;
}
static N_INLINE(NI, find__jf9bJ3LaCc6IE4T5yOliwXQsystem)(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ* a, NI aLen_0, tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ item) {
	NI result;
{	result = (NI)0;
	result = ((NI) 0);
	{
		tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ* i;
		NI i_2;
		i = (tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ*)0;
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < aLen_0)) goto LA3;
				i = (&a[i_2]);
				{
					NIM_BOOL T6_;
					T6_ = (NIM_BOOL)0;
					T6_ = eqeq___fYL9a3Az3ZsTT2jDLG5BgUQ((*i), item);
					if (!T6_) goto LA7_;
					goto BeforeRet_;
				}
				LA7_: ;
				result += ((NI) 1);
				i_2 += ((NI) 1);
			} LA3: ;
		}
	}
	result = ((NI) -1);
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NIM_BOOL, contains__x45kP25VwYxpJZJ8fjAWPwsystem)(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ* a, NI aLen_0, tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ item) {
	NIM_BOOL result;
	NI T1_;
{	result = (NIM_BOOL)0;
	T1_ = (NI)0;
	T1_ = find__jf9bJ3LaCc6IE4T5yOliwXQsystem(a, aLen_0, item);
	result = (((NI) 0) <= T1_);
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_NIMCALL(void, Marker_tySequence__8Np6tlClE5az1CyqZdN19bQ)(void* p, NI op) {
	tySequence__8Np6tlClE5az1CyqZdN19bQ* a;
	NI T1_;
	a = (tySequence__8Np6tlClE5az1CyqZdN19bQ*)p;
	T1_ = (NI)0;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsOrIncl__DPtpJbbyEQSHvJUfVN3x0Q)(tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NI T2_;
	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ T4_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T2_ = ((*c).s ? (*c).s->Sup.len : 0);
	T1_ = (((NI) 0) < T2_);
	if (!(T1_)) goto LA3_;
	T4_.Field0 = (*a).Sup.id;
	T4_.Field1 = (*b).Sup.id;
	T1_ = contains__x45kP25VwYxpJZJ8fjAWPwsystem((*c).s->data, ((*c).s ? (*c).s->Sup.len : 0), T4_);
	LA3_: ;
	result = T1_;
	{
		tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ T9_;
		NI T10_;
		if (!!(result)) goto LA7_;
		T9_.Field0 = (*a).Sup.id;
		T9_.Field1 = (*b).Sup.id;
		unsureAsgnRef((void**) (&(*c).s), (tySequence__8Np6tlClE5az1CyqZdN19bQ*) incrSeqV3((TGenericSeq*)((*c).s), (&NTI__8Np6tlClE5az1CyqZdN19bQ_)));
		T10_ = (*c).s->Sup.len++;
		(*c).s->data[T10_] = T9_;
	}
	LA7_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTypeOrNilAux__VkawHwbvDceih9cIepw9c5NQ_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		if (!(a == b)) goto LA3_;
		result = NIM_TRUE;
	}
	goto LA1_;
	LA3_: ;
	{
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = (a == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL));
			if (T8_) goto LA9_;
			T8_ = (b == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL));
			LA9_: ;
			if (!T8_) goto LA10_;
			result = NIM_FALSE;
		}
		goto LA6_;
		LA10_: ;
		{
			result = sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw(a, b, c);
		}
		LA6_: ;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameObjectTree__p2Gkr9cujTwj6KyP27x5biA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		if (!(a == b)) goto LA3_;
		result = NIM_TRUE;
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T6_;
		NIM_BOOL T7_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y;
		T6_ = (NIM_BOOL)0;
		T7_ = (NIM_BOOL)0;
		T7_ = !((a == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
		if (!(T7_)) goto LA8_;
		T7_ = !((b == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
		LA8_: ;
		T6_ = T7_;
		if (!(T6_)) goto LA9_;
		T6_ = ((*a).kind == (*b).kind);
		LA9_: ;
		if (!T6_) goto LA10_;
		x = (*a).typ;
		y = (*b).typ;
		{
			if (!(((*c).flags &((NU8)1<<((NU)(((tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw) 0))&7U)))!=0)) goto LA14_;
			{
				if (!!((x == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA18_;
				x = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(x, 1050640);
			}
			LA18_: ;
			{
				if (!!((y == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA22_;
				y = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(y, 1050640);
			}
			LA22_: ;
		}
		LA14_: ;
		{
			NIM_BOOL T26_;
			T26_ = (NIM_BOOL)0;
			T26_ = sameTypeOrNilAux__VkawHwbvDceih9cIepw9c5NQ_2(x, y, c);
			if (!T26_) goto LA27_;
			switch ((*a).kind) {
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
			{
				result = ((*(*(*a)._kind_4.sym).name).Sup.id == (*(*(*b)._kind_4.sym).name).Sup.id);
			}
			break;
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 2):
			{
				result = ((*(*a)._kind_5.ident).Sup.id == (*(*b)._kind_5.ident).Sup.id);
			}
			break;
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 10):
			{
				result = ((*a)._kind_1.intVal == (*b)._kind_1.intVal);
			}
			break;
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 16) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 18):
			{
				result = ((*a)._kind_2.floatVal == (*b)._kind_2.floatVal);
			}
			break;
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 20) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 22):
			{
				result = eqStrings((*a)._kind_3.strVal, (*b)._kind_3.strVal);
			}
			break;
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1):
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 4):
			{
				result = NIM_TRUE;
			}
			break;
			default:
			{
				{
					NI T38_;
					NI T39_;
					T38_ = (NI)0;
					T38_ = len__P89cqdlERShb9alU3iC0yj8wast(a);
					T39_ = (NI)0;
					T39_ = len__P89cqdlERShb9alU3iC0yj8wast(b);
					if (!(T38_ == T39_)) goto LA40_;
					{
						NI i;
						NI colontmp_;
						NI i_2;
						i = (NI)0;
						colontmp_ = (NI)0;
						colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(a);
						i_2 = ((NI) 0);
						{
							while (1) {
								if (!(i_2 < colontmp_)) goto LA44;
								i = i_2;
								{
									NIM_BOOL T47_;
									T47_ = (NIM_BOOL)0;
									T47_ = sameObjectTree__p2Gkr9cujTwj6KyP27x5biA((*a)._kind_6.sons->data[i], (*b)._kind_6.sons->data[i], c);
									if (!!(T47_)) goto LA48_;
									goto BeforeRet_;
								}
								LA48_: ;
								i_2 += ((NI) 1);
							} LA44: ;
						}
					}
					result = NIM_TRUE;
				}
				LA40_: ;
			}
			break;
			}
		}
		LA27_: ;
	}
	goto LA1_;
	LA10_: ;
	LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameObjectStructures__VkawHwbvDceih9cIepw9c5NQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		NI T3_;
		NI T4_;
		T3_ = (NI)0;
		T3_ = len__5mJADrRYkP3r9auuiuDZN9cQast(a);
		T4_ = (NI)0;
		T4_ = len__5mJADrRYkP3r9auuiuDZN9cQast(b);
		if (!!((T3_ == T4_))) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(a);
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA9;
				i = i_2;
				{
					NIM_BOOL T12_;
					T12_ = (NIM_BOOL)0;
					T12_ = sameTypeOrNilAux__VkawHwbvDceih9cIepw9c5NQ_2((*a).sons->data[i], (*b).sons->data[i], c);
					if (!!(T12_)) goto LA13_;
					goto BeforeRet_;
				}
				LA13_: ;
				i_2 += ((NI) 1);
			} LA9: ;
		}
	}
	{
		NIM_BOOL T17_;
		T17_ = (NIM_BOOL)0;
		T17_ = sameObjectTree__p2Gkr9cujTwj6KyP27x5biA((*a).n, (*b).n, c);
		if (!!(T17_)) goto LA18_;
		goto BeforeRet_;
	}
	LA18_: ;
	result = NIM_TRUE;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTuple__VkawHwbvDceih9cIepw9c5NQ_3)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		NI T3_;
		NI T4_;
		T3_ = (NI)0;
		T3_ = len__5mJADrRYkP3r9auuiuDZN9cQast(a);
		T4_ = (NI)0;
		T4_ = len__5mJADrRYkP3r9auuiuDZN9cQast(b);
		if (!(T3_ == T4_)) goto LA5_;
		result = NIM_TRUE;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(a);
			i_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x;
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y;
					if (!(i_2 < colontmp_)) goto LA9;
					i = i_2;
					x = (*a).sons->data[i];
					y = (*b).sons->data[i];
					{
						if (!(((*c).flags &((NU8)1<<((NU)(((tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw) 0))&7U)))!=0)) goto LA12_;
						x = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(x, 1050640);
						y = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(y, 1050640);
					}
					LA12_: ;
					result = sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw(x, y, c);
					{
						if (!!(result)) goto LA16_;
						goto BeforeRet_;
					}
					LA16_: ;
					i_2 += ((NI) 1);
				} LA9: ;
			}
		}
		{
			NIM_BOOL T20_;
			NIM_BOOL T21_;
			T20_ = (NIM_BOOL)0;
			T21_ = (NIM_BOOL)0;
			T21_ = !(((*a).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
			if (!(T21_)) goto LA22_;
			T21_ = !(((*b).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
			LA22_: ;
			T20_ = T21_;
			if (!(T20_)) goto LA23_;
			T20_ = !((((*c).flags &((NU8)1<<((NU)(((tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw) 0))&7U)))!=0));
			LA23_: ;
			if (!T20_) goto LA24_;
			{
				NI i_3;
				NI colontmp__2;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = len__P89cqdlERShb9alU3iC0yj8wast((*a).n);
				i_4 = ((NI) 0);
				{
					while (1) {
						if (!(i_4 < colontmp__2)) goto LA28;
						i_3 = i_4;
						{
							NIM_BOOL T31_;
							tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* x_2;
							tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* y_2;
							T31_ = (NIM_BOOL)0;
							T31_ = ((*(*(*a).n)._kind_6.sons->data[i_3]).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3));
							if (!(T31_)) goto LA32_;
							T31_ = ((*(*(*b).n)._kind_6.sons->data[i_3]).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3));
							LA32_: ;
							if (!T31_) goto LA33_;
							x_2 = (*(*(*a).n)._kind_6.sons->data[i_3])._kind_4.sym;
							y_2 = (*(*(*b).n)._kind_6.sons->data[i_3])._kind_4.sym;
							result = ((*(*x_2).name).Sup.id == (*(*y_2).name).Sup.id);
							{
								if (!!(result)) goto LA37_;
								goto LA26;
							}
							LA37_: ;
						}
						goto LA29_;
						LA33_: ;
						{
							result = NIM_FALSE;
							goto BeforeRet_;
						}
						LA29_: ;
						i_4 += ((NI) 1);
					} LA28: ;
				}
			} LA26: ;
		}
		goto LA18_;
		LA24_: ;
		{
			NIM_BOOL T41_;
			NIM_BOOL T42_;
			NIM_BOOL T44_;
			T41_ = (NIM_BOOL)0;
			T42_ = (NIM_BOOL)0;
			T42_ = !(((*a).n == (*b).n));
			if (!(T42_)) goto LA43_;
			T44_ = (NIM_BOOL)0;
			T44_ = ((*a).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL));
			if (T44_) goto LA45_;
			T44_ = ((*b).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL));
			LA45_: ;
			T42_ = T44_;
			LA43_: ;
			T41_ = T42_;
			if (!(T41_)) goto LA46_;
			T41_ = !((((*c).flags &((NU8)1<<((NU)(((tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw) 0))&7U)))!=0));
			LA46_: ;
			if (!T41_) goto LA47_;
			result = NIM_FALSE;
		}
		goto LA18_;
		LA47_: ;
		LA18_: ;
	}
	LA5_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameChildrenAux__VkawHwbvDceih9cIepw9c5NQ_4)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		NI T3_;
		NI T4_;
		T3_ = (NI)0;
		T3_ = len__5mJADrRYkP3r9auuiuDZN9cQast(a);
		T4_ = (NI)0;
		T4_ = len__5mJADrRYkP3r9auuiuDZN9cQast(b);
		if (!!((T3_ == T4_))) goto LA5_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA5_: ;
	result = NIM_TRUE;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(a);
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA9;
				i = i_2;
				result = sameTypeOrNilAux__VkawHwbvDceih9cIepw9c5NQ_2((*a).sons->data[i], (*b).sons->data[i], c);
				{
					if (!!(result)) goto LA12_;
					goto BeforeRet_;
				}
				LA12_: ;
				i_2 += ((NI) 1);
			} LA9: ;
		}
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameConstraints__WK4tUt32lZCKwW9a889a8iZA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (a == 0);
		if (!(T3_)) goto LA4_;
		T3_ = (b == 0);
		LA4_: ;
		if (!T3_) goto LA5_;
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA5_: ;
	{
		NI T9_;
		NI T10_;
		T9_ = (NI)0;
		T9_ = len__P89cqdlERShb9alU3iC0yj8wast(a);
		T10_ = (NI)0;
		T10_ = len__P89cqdlERShb9alU3iC0yj8wast(b);
		if (!!((T9_ == T10_))) goto LA11_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA11_: ;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(a);
		i_2 = ((NI) 1);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA15;
				i = i_2;
				{
					NIM_BOOL T18_;
					T18_ = (NIM_BOOL)0;
					T18_ = exprStructuralEquivalent__E1mnSzj2NONtG7h9cR3AuFA((*(*(*a)._kind_6.sons->data[i])._kind_4.sym).constraint, (*(*(*b)._kind_6.sons->data[i])._kind_4.sym).constraint, NIM_FALSE);
					if (!!(T18_)) goto LA19_;
					result = NIM_FALSE;
					goto BeforeRet_;
				}
				LA19_: ;
				i_2 += ((NI) 1);
			} LA15: ;
		}
	}
	result = NIM_TRUE;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y, tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg* c) {
	NIM_BOOL result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b;
{	result = (NIM_BOOL)0;
	{
		if (!(x == y)) goto LA3_;
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA3_: ;
	a = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(x, 2064);
	{
		while (1) {
			NIM_BOOL T7_;
			NI T9_;
			T7_ = (NIM_BOOL)0;
			T7_ = ((*a).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52));
			if (!(T7_)) goto LA8_;
			T7_ = (((*a).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0);
			LA8_: ;
			if (!T7_) goto LA6;
			T9_ = (NI)0;
			T9_ = len__5mJADrRYkP3r9auuiuDZN9cQast(a);
			a = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*a).sons->data[(NI)(T9_ - ((NI) 1))], 2064);
		} LA6: ;
	}
	b = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(y, 2064);
	{
		while (1) {
			NIM_BOOL T12_;
			NI T14_;
			T12_ = (NIM_BOOL)0;
			T12_ = ((*b).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52));
			if (!(T12_)) goto LA13_;
			T12_ = (((*b).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0);
			LA13_: ;
			if (!T12_) goto LA11;
			T14_ = (NI)0;
			T14_ = len__5mJADrRYkP3r9auuiuDZN9cQast(b);
			b = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*b).sons->data[(NI)(T14_ - ((NI) 1))], 2064);
		} LA11: ;
	}
	{
		if (!!(((*a).kind == (*b).kind))) goto LA17_;
		switch ((*c).cmp) {
		case ((tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg) 0):
		{
			result = NIM_FALSE;
			goto BeforeRet_;
		}
		break;
		case ((tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg) 1):
		{
			{
				while (1) {
					if (!((*a).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13))) goto LA22;
					a = (*a).sons->data[((NI) 0)];
				} LA22: ;
			}
			{
				while (1) {
					if (!((*b).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13))) goto LA24;
					b = (*b).sons->data[((NI) 0)];
				} LA24: ;
			}
			{
				if (!!(((*a).kind == (*b).kind))) goto LA27_;
				result = NIM_FALSE;
				goto BeforeRet_;
			}
			LA27_: ;
		}
		break;
		case ((tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg) 2):
		{
			{
				while (1) {
					if (!((*a).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13))) goto LA31;
					a = (*a).sons->data[((NI) 0)];
				} LA31: ;
			}
			{
				if (!!(((*a).kind == (*b).kind))) goto LA34_;
				result = NIM_FALSE;
				goto BeforeRet_;
			}
			LA34_: ;
		}
		break;
		}
	}
	LA17_: ;
	{
		NIM_BOOL T38_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* lhs;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* rhs;
		T38_ = (NIM_BOOL)0;
		T38_ = ((*x).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11));
		if (!(T38_)) goto LA39_;
		T38_ = !((((*c).flags &((NU8)1<<((NU)(((tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw) 0))&7U)))!=0));
		LA39_: ;
		if (!T38_) goto LA40_;
		lhs = skipGenericAlias__PfgI9ap7WOnsRfFV4znQ27w_3(x);
		rhs = skipGenericAlias__PfgI9ap7WOnsRfFV4znQ27w_3(y);
		{
			NIM_BOOL T44_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T46_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T47_;
			T44_ = (NIM_BOOL)0;
			T44_ = !(((*rhs).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11)));
			if (T44_) goto LA45_;
			T46_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T46_ = base__PfgI9ap7WOnsRfFV4znQ27w(lhs);
			T47_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T47_ = base__PfgI9ap7WOnsRfFV4znQ27w(rhs);
			T44_ = !((T46_ == T47_));
			LA45_: ;
			if (!T44_) goto LA48_;
			result = NIM_FALSE;
			goto BeforeRet_;
		}
		LA48_: ;
		{
			NI i;
			NI colontmp_;
			NI T51_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			T51_ = (NI)0;
			T51_ = len__5mJADrRYkP3r9auuiuDZN9cQast(lhs);
			colontmp_ = (NI)(T51_ - ((NI) 1));
			i_2 = ((NI) 1);
			{
				while (1) {
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* ff;
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* aa;
					if (!(i_2 < colontmp_)) goto LA53;
					i = i_2;
					ff = (*rhs).sons->data[i];
					aa = (*lhs).sons->data[i];
					{
						NIM_BOOL T56_;
						T56_ = (NIM_BOOL)0;
						T56_ = sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw(ff, aa, c);
						if (!!(T56_)) goto LA57_;
						result = NIM_FALSE;
						goto BeforeRet_;
					}
					LA57_: ;
					i_2 += ((NI) 1);
				} LA53: ;
			}
		}
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA40_: ;
	switch ((*a).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 3):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 2):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 1):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 5):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 26):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 28):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 29):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 44):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 7):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 6):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 63):
	{
		result = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(a, b);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 61):
	{
		NIM_BOOL T61_;
		T61_ = (NIM_BOOL)0;
		T61_ = exprStructuralEquivalent__E1mnSzj2NONtG7h9cR3AuFA((*a).n, (*b).n, NIM_FALSE);
		if (!(T61_)) goto LA62_;
		T61_ = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(a, b);
		LA62_: ;
		result = T61_;
		{
			NIM_BOOL T65_;
			NIM_BOOL T66_;
			NI T68_;
			NI T69_;
			NI T71_;
			T65_ = (NIM_BOOL)0;
			T66_ = (NIM_BOOL)0;
			T66_ = result;
			if (!(T66_)) goto LA67_;
			T68_ = (NI)0;
			T68_ = len__5mJADrRYkP3r9auuiuDZN9cQast(a);
			T69_ = (NI)0;
			T69_ = len__5mJADrRYkP3r9auuiuDZN9cQast(b);
			T66_ = (T68_ == T69_);
			LA67_: ;
			T65_ = T66_;
			if (!(T65_)) goto LA70_;
			T71_ = (NI)0;
			T71_ = len__5mJADrRYkP3r9auuiuDZN9cQast(a);
			T65_ = (T71_ == ((NI) 1));
			LA70_: ;
			if (!T65_) goto LA72_;
			{
				if (!((*c).recCheck < ((NI) 3))) goto LA76_;
				(*c).recCheck += ((NI) 1);
			}
			goto LA74_;
			LA76_: ;
			{
				{
					NIM_BOOL T81_;
					T81_ = (NIM_BOOL)0;
					T81_ = containsOrIncl__DPtpJbbyEQSHvJUfVN3x0Q(c, a, b);
					if (!T81_) goto LA82_;
					result = NIM_TRUE;
					goto BeforeRet_;
				}
				LA82_: ;
			}
			LA74_: ;
			result = sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
		}
		LA72_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17):
	{
		{
			if (!!(((((*a).flags | (*b).flags) &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8))&63U)))!=0))) goto LA87_;
			result = ((*a).Sup.id == (*b).Sup.id);
		}
		goto LA85_;
		LA87_: ;
		{
			{
				NIM_BOOL T92_;
				NIM_BOOL T106_;
				T92_ = (NIM_BOOL)0;
				T92_ = ((((*a).flags & (*b).flags) &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8))&63U)))!=0);
				if (!(T92_)) goto LA93_;
				T92_ = ((*(*a).sym).Sup.id == (*(*b).sym).Sup.id);
				LA93_: ;
				if (!T92_) goto LA94_;
				{
					if (!((*c).recCheck < ((NI) 3))) goto LA98_;
					(*c).recCheck += ((NI) 1);
				}
				goto LA96_;
				LA98_: ;
				{
					{
						NIM_BOOL T103_;
						T103_ = (NIM_BOOL)0;
						T103_ = containsOrIncl__DPtpJbbyEQSHvJUfVN3x0Q(c, a, b);
						if (!T103_) goto LA104_;
						result = NIM_TRUE;
						goto BeforeRet_;
					}
					LA104_: ;
				}
				LA96_: ;
				T106_ = (NIM_BOOL)0;
				T106_ = sameObjectStructures__VkawHwbvDceih9cIepw9c5NQ(a, b, c);
				if (!(T106_)) goto LA107_;
				T106_ = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(a, b);
				LA107_: ;
				result = T106_;
			}
			LA94_: ;
		}
		LA85_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	{
		{
			if (!((*c).recCheck < ((NI) 3))) goto LA111_;
			(*c).recCheck += ((NI) 1);
		}
		goto LA109_;
		LA111_: ;
		{
			{
				NIM_BOOL T116_;
				T116_ = (NIM_BOOL)0;
				T116_ = containsOrIncl__DPtpJbbyEQSHvJUfVN3x0Q(c, a, b);
				if (!T116_) goto LA117_;
				result = NIM_TRUE;
				goto BeforeRet_;
			}
			LA117_: ;
		}
		LA109_: ;
		{
			if (!((*c).cmp == ((tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg) 0))) goto LA121_;
			{
				NIM_BOOL T125_;
				T125_ = (NIM_BOOL)0;
				T125_ = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(a, b);
				if (!T125_) goto LA126_;
				{
					if (!!(((((*a).flags | (*b).flags) &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8))&63U)))!=0))) goto LA130_;
					result = ((*a).Sup.id == (*b).Sup.id);
				}
				goto LA128_;
				LA130_: ;
				{
					{
						NIM_BOOL T135_;
						T135_ = (NIM_BOOL)0;
						T135_ = ((((*a).flags & (*b).flags) &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8))&63U)))!=0);
						if (!(T135_)) goto LA136_;
						T135_ = ((*(*a).sym).Sup.id == (*(*b).sym).Sup.id);
						LA136_: ;
						if (!T135_) goto LA137_;
						result = sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
					}
					LA137_: ;
				}
				LA128_: ;
			}
			LA126_: ;
		}
		goto LA119_;
		LA121_: ;
		{
			NIM_BOOL T140_;
			T140_ = (NIM_BOOL)0;
			T140_ = sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
			if (!(T140_)) goto LA141_;
			T140_ = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(a, b);
			LA141_: ;
			result = T140_;
		}
		LA119_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 14):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 30):
	{
		NIM_BOOL T143_;
		T143_ = (NIM_BOOL)0;
		T143_ = ((*a).Sup.id == (*b).Sup.id);
		if (!(T143_)) goto LA144_;
		T143_ = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(a, b);
		LA144_: ;
		result = T143_;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50):
	{
		result = ((*b).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		NIM_BOOL T157_;
		{
			if (!((*c).recCheck < ((NI) 3))) goto LA149_;
			(*c).recCheck += ((NI) 1);
		}
		goto LA147_;
		LA149_: ;
		{
			{
				NIM_BOOL T154_;
				T154_ = (NIM_BOOL)0;
				T154_ = containsOrIncl__DPtpJbbyEQSHvJUfVN3x0Q(c, a, b);
				if (!T154_) goto LA155_;
				result = NIM_TRUE;
				goto BeforeRet_;
			}
			LA155_: ;
		}
		LA147_: ;
		T157_ = (NIM_BOOL)0;
		T157_ = sameTuple__VkawHwbvDceih9cIepw9c5NQ_3(a, b, c);
		if (!(T157_)) goto LA158_;
		T157_ = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(a, b);
		LA158_: ;
		result = T157_;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8):
	{
		{
			if (!((*c).cmp == ((tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg) 1))) goto LA162_;
			result = NIM_FALSE;
		}
		goto LA160_;
		LA162_: ;
		{
			NIM_BOOL T177_;
			if (!(((*c).flags &((NU8)1<<((NU)(((tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw) 2))&7U)))!=0)) goto LA165_;
			{
				if (!((*c).recCheck < ((NI) 3))) goto LA169_;
				(*c).recCheck += ((NI) 1);
			}
			goto LA167_;
			LA169_: ;
			{
				{
					NIM_BOOL T174_;
					T174_ = (NIM_BOOL)0;
					T174_ = containsOrIncl__DPtpJbbyEQSHvJUfVN3x0Q(c, a, b);
					if (!T174_) goto LA175_;
					result = NIM_TRUE;
					goto BeforeRet_;
				}
				LA175_: ;
			}
			LA167_: ;
			T177_ = (NIM_BOOL)0;
			T177_ = sameChildrenAux__VkawHwbvDceih9cIepw9c5NQ_4(x, y, c);
			if (!(T177_)) goto LA178_;
			T177_ = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(a, b);
			LA178_: ;
			result = T177_;
		}
		goto LA160_;
		LA165_: ;
		{
			result = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(a, b);
		}
		LA160_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 12):
	{
		NIM_BOOL T181_;
		T181_ = (NIM_BOOL)0;
		T181_ = sameChildrenAux__VkawHwbvDceih9cIepw9c5NQ_4(a, b, c);
		if (!(T181_)) goto LA182_;
		T181_ = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(a, b);
		LA182_: ;
		result = T181_;
		{
			NIM_BOOL T185_;
			T185_ = (NIM_BOOL)0;
			T185_ = result;
			if (!(T185_)) goto LA186_;
			T185_ = !(((12 & (*c).flags) == 0));
			LA186_: ;
			if (!T185_) goto LA187_;
			result = ((*(*a).sym).position == (*(*b).sym).position);
		}
		LA187_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 51):
	{
		result = ((*(*a).sons->data[((NI) 0)]).kind == (*(*b).sons->data[((NI) 0)]).kind);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 9):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 27):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 19):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 21):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 49):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 48):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 15):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 54):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 56):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 57):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 58):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 59):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 45):
	{
		{
			if (!((*c).recCheck < ((NI) 3))) goto LA193_;
			(*c).recCheck += ((NI) 1);
		}
		goto LA191_;
		LA193_: ;
		{
			{
				NIM_BOOL T198_;
				T198_ = (NIM_BOOL)0;
				T198_ = containsOrIncl__DPtpJbbyEQSHvJUfVN3x0Q(c, a, b);
				if (!T198_) goto LA199_;
				result = NIM_TRUE;
				goto BeforeRet_;
			}
			LA199_: ;
		}
		LA191_: ;
		{
			NIM_BOOL T203_;
			T203_ = (NIM_BOOL)0;
			T203_ = ((*a).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52));
			if (!(T203_)) goto LA204_;
			T203_ = !(((*a).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
			LA204_: ;
			if (!T203_) goto LA205_;
			result = ((*a).n == (*b).n);
			goto BeforeRet_;
		}
		LA205_: ;
		result = sameChildrenAux__VkawHwbvDceih9cIepw9c5NQ_4(a, b, c);
		{
			if (!result) goto LA209_;
			{
				if (!(((*c).flags &((NU8)1<<((NU)(((tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw) 0))&7U)))!=0)) goto LA213_;
				result = (((*a).flags & 1048576) == ((*b).flags & 1048576));
			}
			goto LA211_;
			LA213_: ;
			{
				result = sameFlags__aVVjNzmtPf6fjiBzSvfSQgtypes(a, b);
			}
			LA211_: ;
		}
		LA209_: ;
		{
			NIM_BOOL T218_;
			T218_ = (NIM_BOOL)0;
			T218_ = result;
			if (!(T218_)) goto LA219_;
			T218_ = (((*c).flags &((NU8)1<<((NU)(((tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw) 5))&7U)))!=0);
			LA219_: ;
			if (!T218_) goto LA220_;
			result = (((*a).flags & 128) == ((*b).flags & 128));
		}
		LA220_: ;
		{
			NIM_BOOL T224_;
			NIM_BOOL T228_;
			NIM_BOOL T229_;
			NIM_BOOL T232_;
			T224_ = (NIM_BOOL)0;
			T224_ = result;
			if (!(T224_)) goto LA225_;
			T224_ = ((*a).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25));
			LA225_: ;
			if (!T224_) goto LA226_;
			T228_ = (NIM_BOOL)0;
			T229_ = (NIM_BOOL)0;
			T229_ = (((*c).flags &((NU8)1<<((NU)(((tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw) 1))&7U)))!=0);
			if (T229_) goto LA230_;
			T229_ = ((*a).callConv == (*b).callConv);
			LA230_: ;
			T228_ = T229_;
			if (!(T228_)) goto LA231_;
			T232_ = (NIM_BOOL)0;
			T232_ = !((((*c).flags &((NU8)1<<((NU)(((tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw) 4))&7U)))!=0));
			if (T232_) goto LA233_;
			T232_ = sameConstraints__WK4tUt32lZCKwW9a889a8iZA((*a).n, (*b).n);
			LA233_: ;
			T228_ = T232_;
			LA231_: ;
			result = T228_;
		}
		LA226_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20):
	{
		NIM_BOOL T245_;
		NIM_BOOL T246_;
		{
			if (!((*c).recCheck < ((NI) 3))) goto LA237_;
			(*c).recCheck += ((NI) 1);
		}
		goto LA235_;
		LA237_: ;
		{
			{
				NIM_BOOL T242_;
				T242_ = (NIM_BOOL)0;
				T242_ = containsOrIncl__DPtpJbbyEQSHvJUfVN3x0Q(c, a, b);
				if (!T242_) goto LA243_;
				result = NIM_TRUE;
				goto BeforeRet_;
			}
			LA243_: ;
		}
		LA235_: ;
		T245_ = (NIM_BOOL)0;
		T246_ = (NIM_BOOL)0;
		T246_ = sameTypeOrNilAux__VkawHwbvDceih9cIepw9c5NQ_2((*a).sons->data[((NI) 0)], (*b).sons->data[((NI) 0)], c);
		if (!(T246_)) goto LA247_;
		T246_ = sameValue__uOYuOsiCZAbEPMGwBL8r8g((*(*a).n)._kind_6.sons->data[((NI) 0)], (*(*b).n)._kind_6.sons->data[((NI) 0)]);
		LA247_: ;
		T245_ = T246_;
		if (!(T245_)) goto LA248_;
		T245_ = sameValue__uOYuOsiCZAbEPMGwBL8r8g((*(*a).n)._kind_6.sons->data[((NI) 1)], (*(*b).n)._kind_6.sons->data[((NI) 1)]);
		LA248_: ;
		result = T245_;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 55):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T260_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T261_;
		{
			if (!((*c).recCheck < ((NI) 3))) goto LA252_;
			(*c).recCheck += ((NI) 1);
		}
		goto LA250_;
		LA252_: ;
		{
			{
				NIM_BOOL T257_;
				T257_ = (NIM_BOOL)0;
				T257_ = containsOrIncl__DPtpJbbyEQSHvJUfVN3x0Q(c, a, b);
				if (!T257_) goto LA258_;
				result = NIM_TRUE;
				goto BeforeRet_;
			}
			LA258_: ;
		}
		LA250_: ;
		T260_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T260_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(a);
		T261_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T261_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(b);
		result = sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw(T260_, T261_, c);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 0):
	{
		result = NIM_FALSE;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 62):
	{
		{
			if (!NIM_TRUE) goto LA266_;
			failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_160));
		}
		LA266_: ;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, compareTypes__oyXq5u7iL4RjsT9bovvTE9cg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y, tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg cmp, tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw flags) {
	NIM_BOOL result;
	tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg c;
	result = (NIM_BOOL)0;
	nimZeroMem((void*)(&c), sizeof(tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg));
	initSameTypeClosure__YC853CO8ac9bG32yuRvSqxQ((&c));
	c.cmp = cmp;
	c.flags = flags;
	{
		if (!(x == y)) goto LA3_;
		result = NIM_TRUE;
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T6_;
		T6_ = (NIM_BOOL)0;
		T6_ = (x == 0);
		if (T6_) goto LA7_;
		T6_ = (y == 0);
		LA7_: ;
		if (!T6_) goto LA8_;
		result = NIM_FALSE;
	}
	goto LA1_;
	LA8_: ;
	{
		result = sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw(x, y, (&c));
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, iterOverNode__9btm5iMdQ89a3O0OqNFPhExg)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyProc__scRKBNzJ5JS9bO9a2vP7QaAA iter, RootObj* closure) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		if (!!((n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA3_;
		switch ((*n).kind) {
		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 0) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
		{
			result = iterOverTypeAux__Ez5eHH3kG0Ls4PbazgzhPg(marker, (*n).typ, iter, closure);
		}
		break;
		default:
		{
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
				i_2 = ((NI) 0);
				{
					while (1) {
						if (!(i_2 < colontmp_)) goto LA9;
						i = i_2;
						result = iterOverNode__9btm5iMdQ89a3O0OqNFPhExg(marker, (*n)._kind_6.sons->data[i], iter, closure);
						{
							if (!result) goto LA12_;
							goto BeforeRet_;
						}
						LA12_: ;
						i_2 += ((NI) 1);
					} LA9: ;
				}
			}
		}
		break;
		}
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, iterOverTypeAux__Ez5eHH3kG0Ls4PbazgzhPg)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyProc__scRKBNzJ5JS9bO9a2vP7QaAA iter, RootObj* closure) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	result = NIM_FALSE;
	{
		if (!(t == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	result = iter(t, closure);
	{
		if (!result) goto LA7_;
		goto BeforeRet_;
	}
	LA7_: ;
	{
		NIM_BOOL T11_;
		T11_ = (NIM_BOOL)0;
		T11_ = containsOrIncl__VFt0uM7bgfJ5age9alOsU9cg(marker, (*t).Sup.id);
		if (!!(T11_)) goto LA12_;
		switch ((*t).kind) {
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10):
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 55):
		{
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T15_;
			T15_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T15_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
			result = iterOverTypeAux__Ez5eHH3kG0Ls4PbazgzhPg(marker, T15_, iter, closure);
		}
		break;
		default:
		{
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
				i_2 = ((NI) 0);
				{
					while (1) {
						if (!(i_2 < colontmp_)) goto LA19;
						i = i_2;
						result = iterOverTypeAux__Ez5eHH3kG0Ls4PbazgzhPg(marker, (*t).sons->data[i], iter, closure);
						{
							if (!result) goto LA22_;
							goto BeforeRet_;
						}
						LA22_: ;
						i_2 += ((NI) 1);
					} LA19: ;
				}
			}
			{
				NIM_BOOL T26_;
				T26_ = (NIM_BOOL)0;
				T26_ = !(((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
				if (!(T26_)) goto LA27_;
				T26_ = !(((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25)));
				LA27_: ;
				if (!T26_) goto LA28_;
				result = iterOverNode__9btm5iMdQ89a3O0OqNFPhExg(marker, (*t).n, iter, closure);
			}
			LA28_: ;
		}
		break;
		}
	}
	LA12_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, iterOverType__9ak7UQEhWd9aiaIm3PB8dxmQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyProc__scRKBNzJ5JS9bO9a2vP7QaAA iter, RootObj* closure) {
	NIM_BOOL result;
	tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg marker;
	result = (NIM_BOOL)0;
	nimZeroMem((void*)(&marker), sizeof(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet__n8oDZMn19bEdodSnrBQB9a1Q((&marker));
	result = iterOverTypeAux__Ez5eHH3kG0Ls4PbazgzhPg((&marker), t, iter, closure);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsGenericTypeIter__duror1xNU9cHuAsMzB29aTcQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, RootObj* closure) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
	{
		result = ((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL));
		goto BeforeRet_;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8):
	{
		{
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T5_;
			T5_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T5_ = base__PfgI9ap7WOnsRfFV4znQ27w(t);
			if (!((*T5_).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 0))) goto LA6_;
			result = NIM_TRUE;
			goto BeforeRet_;
		}
		LA6_: ;
		{
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T10_;
			NIM_BOOL T11_;
			T10_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T10_ = base__PfgI9ap7WOnsRfFV4znQ27w(t);
			T11_ = (NIM_BOOL)0;
			T11_ = containsGenericTypeIter__duror1xNU9cHuAsMzB29aTcQ(T10_, closure);
			if (!T11_) goto LA12_;
			result = NIM_TRUE;
			goto BeforeRet_;
		}
		LA12_: ;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 9) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 12):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 51) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 54):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 56) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 59):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 61):
	{
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	break;
	default:
	{
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsGenericType__YPjOkGV9axAnGR3UfLeWZ1g_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = iterOverType__9ak7UQEhWd9aiaIm3PB8dxmQ(t, containsGenericTypeIter__duror1xNU9cHuAsMzB29aTcQ, ((RootObj*) NIM_NIL));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, enumHasHoles__YPjOkGV9axAnGR3UfLeWZ1g_3)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	b = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(t, IL64(70368745228304));
	T1_ = (NIM_BOOL)0;
	T1_ = ((*b).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 14));
	if (!(T1_)) goto LA2_;
	T1_ = (((*b).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 5))&63U)))!=0);
	LA2_: ;
	result = T1_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isOrdinalType__6euCPZwUsyXzP1vAm4IthA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, NIM_BOOL allowEnumWithHoles) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T2_;
	NIM_BOOL T4_;
	NIM_BOOL T5_;
	NIM_BOOL T8_;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T10_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T2_ = (NIM_BOOL)0;
	T2_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 2) || (*t).kind >= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31) && (*t).kind <= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 35) || (*t).kind >= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 40) && (*t).kind <= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 44) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 1) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 14));
	if (!(T2_)) goto LA3_;
	T4_ = (NIM_BOOL)0;
	T5_ = (NIM_BOOL)0;
	T5_ = enumHasHoles__YPjOkGV9axAnGR3UfLeWZ1g_3(t);
	T4_ = !(T5_);
	if (T4_) goto LA6_;
	T4_ = allowEnumWithHoles;
	LA6_: ;
	T2_ = T4_;
	LA3_: ;
	T1_ = T2_;
	if (T1_) goto LA7_;
	T8_ = (NIM_BOOL)0;
	T8_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 15) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13));
	if (!(T8_)) goto LA9_;
	T10_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T10_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
	T8_ = isOrdinalType__6euCPZwUsyXzP1vAm4IthA(T10_, allowEnumWithHoles);
	LA9_: ;
	T1_ = T8_;
	LA7_: ;
	result = T1_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, getOrdValue__GvVg8kpCh7QA2PDTJnFJlQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyObject_Int128__9a9axPfb75jdWY25AamJewkA onError) {
	tyObject_Int128__9a9axPfb75jdWY25AamJewkA result;
	tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw k;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__9a9axPfb75jdWY25AamJewkA));
	k = (*n).kind;
	{
		NIM_BOOL T3_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T5_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*n).typ == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)));
		if (!(T3_)) goto LA4_;
		T5_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T5_ = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*n).typ, IL64(36134350135273744));
		T3_ = ((*T5_).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 2) || (*T5_).kind >= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 40) && (*T5_).kind <= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 44));
		LA4_: ;
		if (!T3_) goto LA6_;
		k = ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 11);
	}
	LA6_: ;
	switch (k) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 11) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15):
	{
		result = toInt128__TDVoY1DSlNtMNULcUFRJzA(((NU64) ((*n)._kind_1.intVal)));
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 6) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 10):
	{
		result = toInt128__ZBiVpGjOydV7ZjeElrE9cFQ((*n)._kind_1.intVal);
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
		result = Zero__1ed0M9aQUqqSQVhLxSQO9bCw;
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 58):
	{
		result = getOrdValue__GvVg8kpCh7QA2PDTJnFJlQ((*n)._kind_6.sons->data[((NI) 1)], onError);
	}
	break;
	default:
	{
		result = onError;
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, firstOrd__hjogdnp59cMX1rwmjikBhqw)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_Int128__9a9axPfb75jdWY25AamJewkA result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__9a9axPfb75jdWY25AamJewkA));
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 1):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 2):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 27):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 28):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 48):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50):
	{
		result = Zero__1ed0M9aQUqqSQVhLxSQO9bCw;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 19):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23):
	{
		result = firstOrd__hjogdnp59cMX1rwmjikBhqw(conf, (*t).sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
	{
		result = firstOrd__hjogdnp59cMX1rwmjikBhqw(conf, (*t).sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20):
	{
		result = getOrdValue__GvVg8kpCh7QA2PDTJnFJlQ((*(*t).n)._kind_6.sons->data[((NI) 0)], Max__zlJMNfqX7LwCYj0PF6ncWQ);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31):
	{
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = !((conf == ((tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw*) NIM_NIL)));
			if (!(T8_)) goto LA9_;
			T8_ = ((*conf).target.intSize == ((NI) 4));
			LA9_: ;
			if (!T8_) goto LA10_;
			result = toInt128__ZBiVpGjOydV7ZjeElrE9cFQ(IL64(-2147483648));
		}
		goto LA6_;
		LA10_: ;
		{
			result = toInt128__ZBiVpGjOydV7ZjeElrE9cFQ((IL64(-9223372036854775807) - IL64(1)));
		}
		LA6_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 32):
	{
		result = toInt128__161i7kexvUAISxPtGBRWYw(((NI) -128));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 33):
	{
		result = toInt128__161i7kexvUAISxPtGBRWYw(((NI) -32768));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 34):
	{
		result = toInt128__ZBiVpGjOydV7ZjeElrE9cFQ(IL64(-2147483648));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 35):
	{
		result = toInt128__ZBiVpGjOydV7ZjeElrE9cFQ((IL64(-9223372036854775807) - IL64(1)));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 40) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 44):
	{
		result = Zero__1ed0M9aQUqqSQVhLxSQO9bCw;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 14):
	{
		{
			NIM_BOOL T21_;
			NI T22_;
			T21_ = (NIM_BOOL)0;
			T22_ = (NI)0;
			T22_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			T21_ = (((NI) 0) < T22_);
			if (!(T21_)) goto LA23_;
			T21_ = !(((*t).sons->data[((NI) 0)] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)));
			LA23_: ;
			if (!T21_) goto LA24_;
			result = firstOrd__hjogdnp59cMX1rwmjikBhqw(conf, (*t).sons->data[((NI) 0)]);
		}
		goto LA19_;
		LA24_: ;
		{
			{
				NI T29_;
				T29_ = (NI)0;
				T29_ = len__P89cqdlERShb9alU3iC0yj8wast((*t).n);
				if (!(((NI) 0) < T29_)) goto LA30_;
				result = toInt128__161i7kexvUAISxPtGBRWYw((*(*(*(*t).n)._kind_6.sons->data[((NI) 0)])._kind_4.sym).position);
			}
			LA30_: ;
		}
		LA19_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 55):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T33_;
		T33_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T33_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		result = firstOrd__hjogdnp59cMX1rwmjikBhqw(conf, T33_);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 15):
	{
		{
			NI T37_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T40_;
			T37_ = (NI)0;
			T37_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			if (!(((NI) 0) < T37_)) goto LA38_;
			T40_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T40_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
			result = firstOrd__hjogdnp59cMX1rwmjikBhqw(conf, T40_);
		}
		goto LA35_;
		LA38_: ;
		{
			NimStringDesc* T42_;
			T42_ = (NimStringDesc*)0;
			T42_ = rawNewString((reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)) ? reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_))->Sup.len : 0) + 27);
appendString(T42_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_161));
appendString(T42_, reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)));
appendChar(T42_, 41);
			internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw(conf, unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg, T42_, TM__PpBJsMJcrcWrpLTS6mci1g_162);
		}
		LA35_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 49):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 29):
	{
		result = Zero__1ed0M9aQUqqSQVhLxSQO9bCw;
	}
	break;
	default:
	{
		NimStringDesc* T45_;
		T45_ = (NimStringDesc*)0;
		T45_ = rawNewString((reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)) ? reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_))->Sup.len : 0) + 27);
appendString(T45_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_161));
appendString(T45_, reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)));
appendChar(T45_, 41);
		internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw(conf, unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg, T45_, TM__PpBJsMJcrcWrpLTS6mci1g_164);
		result = Zero__1ed0M9aQUqqSQVhLxSQO9bCw;
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, lastOrd__hjogdnp59cMX1rwmjikBhqw_2)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_Int128__9a9axPfb75jdWY25AamJewkA result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__9a9axPfb75jdWY25AamJewkA));
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 1):
	{
		result = toInt128__swbZX3ptkqZbxXBHXbSVwg(((NU) 1));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 2):
	{
		result = toInt128__swbZX3ptkqZbxXBHXbSVwg(((NU) 255));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 19):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23):
	{
		result = lastOrd__hjogdnp59cMX1rwmjikBhqw_2(conf, (*t).sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
	{
		result = lastOrd__hjogdnp59cMX1rwmjikBhqw_2(conf, (*t).sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20):
	{
		result = getOrdValue__GvVg8kpCh7QA2PDTJnFJlQ((*(*t).n)._kind_6.sons->data[((NI) 1)], Max__zlJMNfqX7LwCYj0PF6ncWQ);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31):
	{
		{
			NIM_BOOL T9_;
			T9_ = (NIM_BOOL)0;
			T9_ = !((conf == ((tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw*) NIM_NIL)));
			if (!(T9_)) goto LA10_;
			T9_ = ((*conf).target.intSize == ((NI) 4));
			LA10_: ;
			if (!T9_) goto LA11_;
			result = toInt128__161i7kexvUAISxPtGBRWYw(((NI) 2147483647));
		}
		goto LA7_;
		LA11_: ;
		{
			result = toInt128__TDVoY1DSlNtMNULcUFRJzA(9223372036854775807ULL);
		}
		LA7_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 32):
	{
		result = toInt128__161i7kexvUAISxPtGBRWYw(((NI) 127));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 33):
	{
		result = toInt128__161i7kexvUAISxPtGBRWYw(((NI) 32767));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 34):
	{
		result = toInt128__161i7kexvUAISxPtGBRWYw(((NI) 2147483647));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 35):
	{
		result = toInt128__TDVoY1DSlNtMNULcUFRJzA(9223372036854775807ULL);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 40):
	{
		{
			NIM_BOOL T21_;
			T21_ = (NIM_BOOL)0;
			T21_ = !((conf == ((tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw*) NIM_NIL)));
			if (!(T21_)) goto LA22_;
			T21_ = ((*conf).target.intSize == ((NI) 4));
			LA22_: ;
			if (!T21_) goto LA23_;
			result = toInt128__ZBiVpGjOydV7ZjeElrE9cFQ(IL64(4294967295));
		}
		goto LA19_;
		LA23_: ;
		{
			result = toInt128__TDVoY1DSlNtMNULcUFRJzA(18446744073709551615ULL);
		}
		LA19_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 41):
	{
		result = toInt128__161i7kexvUAISxPtGBRWYw(((NI) 255));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 42):
	{
		result = toInt128__161i7kexvUAISxPtGBRWYw(((NI) 65535));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 43):
	{
		result = toInt128__ZBiVpGjOydV7ZjeElrE9cFQ(IL64(4294967295));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 44):
	{
		result = toInt128__TDVoY1DSlNtMNULcUFRJzA(18446744073709551615ULL);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 14):
	{
		{
			NI T33_;
			NI T36_;
			T33_ = (NI)0;
			T33_ = len__P89cqdlERShb9alU3iC0yj8wast((*t).n);
			if (!(((NI) 0) < T33_)) goto LA34_;
			T36_ = (NI)0;
			T36_ = len__P89cqdlERShb9alU3iC0yj8wast((*t).n);
			result = toInt128__161i7kexvUAISxPtGBRWYw((*(*(*(*t).n)._kind_6.sons->data[(NI)(T36_ - ((NI) 1))])._kind_4.sym).position);
		}
		LA34_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 55):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T38_;
		T38_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T38_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		result = lastOrd__hjogdnp59cMX1rwmjikBhqw_2(conf, T38_);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50):
	{
		result = Zero__1ed0M9aQUqqSQVhLxSQO9bCw;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 15):
	{
		{
			NI T43_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T46_;
			T43_ = (NI)0;
			T43_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			if (!(((NI) 0) < T43_)) goto LA44_;
			T46_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T46_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
			result = lastOrd__hjogdnp59cMX1rwmjikBhqw_2(conf, T46_);
		}
		goto LA41_;
		LA44_: ;
		{
			NimStringDesc* T48_;
			T48_ = (NimStringDesc*)0;
			T48_ = rawNewString((reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)) ? reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_))->Sup.len : 0) + 26);
appendString(T48_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_165));
appendString(T48_, reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)));
appendChar(T48_, 41);
			internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw(conf, unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg, T48_, TM__PpBJsMJcrcWrpLTS6mci1g_166);
		}
		LA41_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 49):
	{
		result = Zero__1ed0M9aQUqqSQVhLxSQO9bCw;
	}
	break;
	default:
	{
		NimStringDesc* T51_;
		T51_ = (NimStringDesc*)0;
		T51_ = rawNewString((reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)) ? reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_))->Sup.len : 0) + 26);
appendString(T51_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_165));
appendString(T51_, reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)));
appendChar(T51_, 41);
		internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw(conf, unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg, T51_, TM__PpBJsMJcrcWrpLTS6mci1g_167);
		result = Zero__1ed0M9aQUqqSQVhLxSQO9bCw;
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NF, getFloatValue__HLIHKrKdoXbu29a1LlsOzKQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NF result;
	result = (NF)0;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 16) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 19):
	{
		result = (*n)._kind_2.floatVal;
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 58):
	{
		result = getFloatValue__HLIHKrKdoXbu29a1LlsOzKQ((*n)._kind_6.sons->data[((NI) 1)]);
	}
	break;
	default:
	{
		result = NAN;
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NF, firstFloat__5WwccqVm6xApk9c8p9c1efRA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NF result;
	result = (NF)0;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 36) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 39):
	{
		result = -INF;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20):
	{
		result = getFloatValue__HLIHKrKdoXbu29a1LlsOzKQ((*(*t).n)._kind_6.sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23):
	{
		result = firstFloat__5WwccqVm6xApk9c8p9c1efRA((*t).sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 55):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T5_;
		T5_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T5_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		result = firstFloat__5WwccqVm6xApk9c8p9c1efRA(T5_);
	}
	break;
	default:
	{
		tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* T7_;
		NimStringDesc* T8_;
		T7_ = (tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw*)0;
		T7_ = newPartialConfigRef__YbeeoJLQnRQK2F8DAaXI8w_2();
		T8_ = (NimStringDesc*)0;
		T8_ = rawNewString((reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)) ? reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_))->Sup.len : 0) + 29);
appendString(T8_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_168));
appendString(T8_, reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)));
appendChar(T8_, 41);
		internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw(T7_, unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg, T8_, TM__PpBJsMJcrcWrpLTS6mci1g_169);
		result = NAN;
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NF, lastFloat__5WwccqVm6xApk9c8p9c1efRA_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NF result;
	result = (NF)0;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 36) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 39):
	{
		result = INF;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23):
	{
		result = lastFloat__5WwccqVm6xApk9c8p9c1efRA_2((*t).sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20):
	{
		result = getFloatValue__HLIHKrKdoXbu29a1LlsOzKQ((*(*t).n)._kind_6.sons->data[((NI) 1)]);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 55):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T5_;
		T5_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T5_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		result = lastFloat__5WwccqVm6xApk9c8p9c1efRA_2(T5_);
	}
	break;
	default:
	{
		tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* T7_;
		NimStringDesc* T8_;
		T7_ = (tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw*)0;
		T7_ = newPartialConfigRef__YbeeoJLQnRQK2F8DAaXI8w_2();
		T8_ = (NimStringDesc*)0;
		T8_ = rawNewString((reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)) ? reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_))->Sup.len : 0) + 28);
appendString(T8_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_170));
appendString(T8_, reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)));
appendChar(T8_, 41);
		internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw(T7_, unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg, T8_, TM__PpBJsMJcrcWrpLTS6mci1g_171);
		result = NAN;
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__9a9axPfb75jdWY25AamJewkA, lengthOrd__hjogdnp59cMX1rwmjikBhqw_3)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_Int128__9a9axPfb75jdWY25AamJewkA result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__9a9axPfb75jdWY25AamJewkA));
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T3_;
		T3_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T3_ = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(t, IL64(13510798882111488));
		if (!((*T3_).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13))) goto LA4_;
		result = lengthOrd__hjogdnp59cMX1rwmjikBhqw_3(conf, (*t).sons->data[((NI) 0)]);
	}
	goto LA1_;
	LA4_: ;
	{
		tyObject_Int128__9a9axPfb75jdWY25AamJewkA last;
		tyObject_Int128__9a9axPfb75jdWY25AamJewkA first;
		tyObject_Int128__9a9axPfb75jdWY25AamJewkA T7_;
		last = lastOrd__hjogdnp59cMX1rwmjikBhqw_2(conf, t);
		first = firstOrd__hjogdnp59cMX1rwmjikBhqw(conf, t);
		T7_ = minus___Sp7OcCEIFoBYolB6PB1fAg_2(last, first);
		result = plus___Sp7OcCEIFoBYolB6PB1fAg(T7_, One__asIdv19bIr70QgMTVvq2zyQ);
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameType__3isNyHKb0U1OCnClmflXSg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw flags) {
	NIM_BOOL result;
	tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg c;
	result = (NIM_BOOL)0;
	nimZeroMem((void*)(&c), sizeof(tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg));
	initSameTypeClosure__YC853CO8ac9bG32yuRvSqxQ((&c));
	c.flags = flags;
	result = sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw(a, b, (&c));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameObjectTypes__6sVmgh7vIWM9axOIPRliopQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		if (!!(((((*a).flags | (*b).flags) &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8))&63U)))!=0))) goto LA3_;
		result = ((*a).Sup.id == (*b).Sup.id);
	}
	goto LA1_;
	LA3_: ;
	{
		{
			NIM_BOOL T8_;
			tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg c;
			T8_ = (NIM_BOOL)0;
			T8_ = ((((*a).flags & (*b).flags) &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 8))&63U)))!=0);
			if (!(T8_)) goto LA9_;
			T8_ = ((*(*a).sym).Sup.id == (*(*b).sym).Sup.id);
			LA9_: ;
			if (!T8_) goto LA10_;
			nimZeroMem((void*)(&c), sizeof(tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg));
			initSameTypeClosure__YC853CO8ac9bG32yuRvSqxQ((&c));
			result = sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw(a, b, (&c));
		}
		LA10_: ;
	}
	LA1_: ;
	return result;
}
static N_INLINE(NI, safeLen__P89cqdlERShb9alU3iC0yj8w_2ast)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	result = (NI)0;
	{
		if (!((*n).kind >= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 0) && (*n).kind <= ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23))) goto LA3_;
		result = ((NI) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		result = len__P89cqdlERShb9alU3iC0yj8wast(n);
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, inheritanceDiff__1dM2iQB5qStJfnn3684ijQ_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b) {
	NI result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y;
{	result = (NI)0;
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = (a == b);
		if (T4_) goto LA5_;
		T4_ = ((*a).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50));
		LA5_: ;
		T3_ = T4_;
		if (T3_) goto LA6_;
		T3_ = ((*b).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50));
		LA6_: ;
		if (!T3_) goto LA7_;
		result = ((NI) 0);
		goto BeforeRet_;
	}
	LA7_: ;
	x = a;
	result = ((NI) 0);
	{
		while (1) {
			if (!!((x == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA10;
			x = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(x, IL64(36275087638268176));
			{
				NIM_BOOL T13_;
				T13_ = (NIM_BOOL)0;
				T13_ = sameObjectTypes__6sVmgh7vIWM9axOIPRliopQ(x, b);
				if (!T13_) goto LA14_;
				goto BeforeRet_;
			}
			LA14_: ;
			x = (*x).sons->data[((NI) 0)];
			result -= ((NI) 1);
		} LA10: ;
	}
	y = b;
	result = ((NI) 0);
	{
		while (1) {
			if (!!((y == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA17;
			y = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(y, IL64(36275087638268176));
			{
				NIM_BOOL T20_;
				T20_ = (NIM_BOOL)0;
				T20_ = sameObjectTypes__6sVmgh7vIWM9axOIPRliopQ(y, a);
				if (!T20_) goto LA21_;
				goto BeforeRet_;
			}
			LA21_: ;
			y = (*y).sons->data[((NI) 0)];
			result += ((NI) 1);
		} LA17: ;
	}
	result = ((NI) 2147483647);
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, safeInheritanceDiff__1dM2iQB5qStJfnn3684ijQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b) {
	NI result;
	result = (NI)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*a).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50));
		if (T3_) goto LA4_;
		T3_ = ((*b).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = ((NI) -1);
	}
	goto LA1_;
	LA5_: ;
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T8_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T9_;
		T8_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T8_ = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(a, IL64(36275087638268176));
		T9_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T9_ = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(b, IL64(36275087638268176));
		result = inheritanceDiff__1dM2iQB5qStJfnn3684ijQ_2(T8_, T9_);
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, compatibleEffectsAux__0LGOh2tH40vyDRxMMzL9bOA)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* se, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* re) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		if (!(re == 0)) goto LA3_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* r;
		r = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast(re);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA8;
					i = i_2;
					r = (*re)._kind_6.sons->data[i];
					{
						{
							tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* s;
							s = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
							{
								NI i_3;
								NI colontmp__2;
								NI i_4;
								i_3 = (NI)0;
								colontmp__2 = (NI)0;
								colontmp__2 = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast(se);
								i_4 = ((NI) 0);
								{
									while (1) {
										if (!(i_4 < colontmp__2)) goto LA13;
										i_3 = i_4;
										s = (*se)._kind_6.sons->data[i_3];
										{
											NI T16_;
											T16_ = (NI)0;
											T16_ = safeInheritanceDiff__1dM2iQB5qStJfnn3684ijQ((*r).typ, (*s).typ);
											if (!(T16_ <= ((NI) 0))) goto LA17_;
											goto LA9;
										}
										LA17_: ;
										i_4 += ((NI) 1);
									} LA13: ;
								}
							}
						}
						result = NIM_FALSE;
						goto BeforeRet_;
					} LA9: ;
					i_2 += ((NI) 1);
				} LA8: ;
			}
		}
	}
	result = NIM_TRUE;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ, compatibleEffects__jMDzK5tLgCQpWKRW9azac5w)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* actual) {
	tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ result;
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* spec;
{	result = (tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*(*(*formal).n)._kind_6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 152)));
		if (T3_) goto LA4_;
		T3_ = !(((*(*(*actual).n)._kind_6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 152)));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 4);
		goto BeforeRet_;
	}
	LA5_: ;
	spec = (*(*formal).n)._kind_6.sons->data[((NI) 0)];
	{
		NI T9_;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* real;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* se;
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* st;
		T9_ = (NI)0;
		T9_ = len__P89cqdlERShb9alU3iC0yj8wast(spec);
		if (!!((T9_ == ((NI) 0)))) goto LA10_;
		real = (*(*actual).n)._kind_6.sons->data[((NI) 0)];
		se = (*spec)._kind_6.sons->data[((NI) 0)];
		{
			NIM_BOOL T14_;
			NIM_BOOL res;
			T14_ = (NIM_BOOL)0;
			T14_ = !((se == 0));
			if (!(T14_)) goto LA15_;
			T14_ = !(((*se).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 152)));
			LA15_: ;
			if (!T14_) goto LA16_;
			{
				NI T20_;
				T20_ = (NI)0;
				T20_ = len__P89cqdlERShb9alU3iC0yj8wast(real);
				if (!(T20_ == ((NI) 0))) goto LA21_;
				result = ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 2);
				goto BeforeRet_;
			}
			LA21_: ;
			res = compatibleEffectsAux__0LGOh2tH40vyDRxMMzL9bOA(se, (*real)._kind_6.sons->data[((NI) 0)]);
			{
				if (!!(res)) goto LA25_;
				result = ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 1);
				goto BeforeRet_;
			}
			LA25_: ;
		}
		LA16_: ;
		st = (*spec)._kind_6.sons->data[((NI) 3)];
		{
			NIM_BOOL T29_;
			NIM_BOOL res_2;
			T29_ = (NIM_BOOL)0;
			T29_ = !((st == 0));
			if (!(T29_)) goto LA30_;
			T29_ = !(((*st).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 152)));
			LA30_: ;
			if (!T29_) goto LA31_;
			{
				NI T35_;
				T35_ = (NI)0;
				T35_ = len__P89cqdlERShb9alU3iC0yj8wast(real);
				if (!(T35_ == ((NI) 0))) goto LA36_;
				result = ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 4);
				goto BeforeRet_;
			}
			LA36_: ;
			res_2 = compatibleEffectsAux__0LGOh2tH40vyDRxMMzL9bOA(st, (*real)._kind_6.sons->data[((NI) 3)]);
			{
				if (!!(res_2)) goto LA40_;
				result = ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 3);
				goto BeforeRet_;
			}
			LA40_: ;
		}
		LA31_: ;
	}
	LA10_: ;
	{
		NIM_BOOL T44_;
		T44_ = (NIM_BOOL)0;
		T44_ = ((*formal).lockLevel < ((NI) 0));
		if (T44_) goto LA45_;
		T44_ = ((*actual).lockLevel <= (*formal).lockLevel);
		LA45_: ;
		if (!T44_) goto LA46_;
		result = ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 0);
	}
	goto LA42_;
	LA46_: ;
	{
		result = ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 5);
	}
	LA42_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isEmptyContainer__YPjOkGV9axAnGR3UfLeWZ1g_4)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 6):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 5):
	{
		result = NIM_TRUE;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
	{
		result = ((*(*t).sons->data[((NI) 1)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 3));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 19):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 27):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 48):
	{
		result = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 3));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T5_;
		T5_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T5_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		result = isEmptyContainer__YPjOkGV9axAnGR3UfLeWZ1g_4(T5_);
	}
	break;
	default:
	{
		result = NIM_FALSE;
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, addDeclaredLoc__5DZFQoJWZrAjxgNR8JcoQw)(NimStringDesc** result, tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym) {
	NimStringDesc* T1_;
	NimStringDesc* T2_;
	T1_ = (NimStringDesc*)0;
	T2_ = (NimStringDesc*)0;
	T2_ = dollar___aQsiZUvE4SFfnWyKx1JgKA(conf, (*sym).info);
	T1_ = rawNewString((T2_ ? T2_->Sup.len : 0) + 15);
appendString(T1_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_172));
appendString(T1_, T2_);
appendString(T1_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_93));
	unsureAsgnRef((void**) (&(*result)), resizeString((*result), (T1_ ? T1_->Sup.len : 0) + 0));
appendString((*result), T1_);
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, getProcHeader__bRG2xX9ar5tfMW3c7xo9ccKQ)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer, NIM_BOOL getDeclarationPath) {
	NimStringDesc* result;
	NimStringDesc* T1_;
	result = (NimStringDesc*)0;
	T1_ = (NimStringDesc*)0;
	T1_ = rawNewString(((*(*(*sym).owner).name).s ? (*(*(*sym).owner).name).s->Sup.len : 0) + ((*(*sym).name).s ? (*(*sym).name).s->Sup.len : 0) + 1);
appendString(T1_, (*(*(*sym).owner).name).s);
appendChar(T1_, 46);
appendString(T1_, (*(*sym).name).s);
	result = T1_;
	{
		tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n;
		if (!((520192 &((NU32)1<<((NU)((*sym).kind)&31U)))!=0)) goto LA4_;
		result = addChar(result, 40);
		n = (*(*sym).typ).n;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
			i_2 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* p;
					if (!(i_2 < colontmp_)) goto LA8;
					i = i_2;
					p = (*n)._kind_6.sons->data[i];
					{
						NimStringDesc* T13_;
						if (!((*p).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA11_;
						result = resizeString(result, ((*(*(*p)._kind_4.sym).name).s ? (*(*(*p)._kind_4.sym).name).s->Sup.len : 0) + 0);
appendString(result, (*(*(*p)._kind_4.sym).name).s);
						result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_78));
						T13_ = (NimStringDesc*)0;
						T13_ = typeToString__QlvraUan7WbHowhAbvDvdA((*(*p)._kind_4.sym).typ, prefer);
						result = resizeString(result, (T13_ ? T13_->Sup.len : 0) + 0);
appendString(result, T13_);
						{
							NI T16_;
							T16_ = (NI)0;
							T16_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
							if (!!((i == (NI)(T16_ - ((NI) 1))))) goto LA17_;
							result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_84));
						}
						LA17_: ;
					}
					goto LA9_;
					LA11_: ;
					{
						NimStringDesc* T20_;
						T20_ = (NimStringDesc*)0;
						T20_ = renderTree__ppjdh9aQ5L0SGPF8yz1gZ9cA(p, 0);
						result = resizeString(result, (T20_ ? T20_->Sup.len : 0) + 0);
appendString(result, T20_);
					}
					LA9_: ;
					i_2 += ((NI) 1);
				} LA8: ;
			}
		}
		result = addChar(result, 41);
		{
			NimStringDesc* T25_;
			NimStringDesc* T26_;
			if (!!(((*(*n)._kind_6.sons->data[((NI) 0)]).typ == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA23_;
			T25_ = (NimStringDesc*)0;
			T26_ = (NimStringDesc*)0;
			T26_ = typeToString__QlvraUan7WbHowhAbvDvdA((*(*n)._kind_6.sons->data[((NI) 0)]).typ, prefer);
			T25_ = rawNewString((T26_ ? T26_->Sup.len : 0) + 2);
appendString(T25_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_78));
appendString(T25_, T26_);
			result = resizeString(result, (T25_ ? T25_->Sup.len : 0) + 0);
appendString(result, T25_);
		}
		LA23_: ;
	}
	LA4_: ;
	{
		if (!getDeclarationPath) goto LA29_;
		addDeclaredLoc__5DZFQoJWZrAjxgNR8JcoQw((&result), conf, sym);
	}
	LA29_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canFormAcycleNode__20MK9ahoGiJtBR9bKtJOLeHg)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, NI startId) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	result = NIM_FALSE;
	{
		if (!!((n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA3_;
		result = canFormAcycleAux__D3xLdjpvwL5V45baRvp9cbQ(marker, (*n).typ, startId);
		{
			if (!!(result)) goto LA7_;
			switch ((*n).kind) {
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 0) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
			{
			}
			break;
			default:
			{
				{
					NI i;
					NI colontmp_;
					NI i_2;
					i = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
					i_2 = ((NI) 0);
					{
						while (1) {
							if (!(i_2 < colontmp_)) goto LA13;
							i = i_2;
							result = canFormAcycleNode__20MK9ahoGiJtBR9bKtJOLeHg(marker, (*n)._kind_6.sons->data[i], startId);
							{
								if (!result) goto LA16_;
								goto BeforeRet_;
							}
							LA16_: ;
							i_2 += ((NI) 1);
						} LA13: ;
					}
				}
			}
			break;
			}
		}
		LA7_: ;
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canFormAcycleAux__D3xLdjpvwL5V45baRvp9cbQ)(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, NI startId) {
	NIM_BOOL result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
{	result = (NIM_BOOL)0;
	result = NIM_FALSE;
	{
		if (!(typ == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		if (!(((*typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 39))&63U)))!=0)) goto LA7_;
		goto BeforeRet_;
	}
	LA7_: ;
	t = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(typ, IL64(36134350135273488));
	{
		if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 39))&63U)))!=0)) goto LA11_;
		goto BeforeRet_;
	}
	LA11_: ;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 27):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 48):
	{
		{
			NIM_BOOL T16_;
			T16_ = (NIM_BOOL)0;
			T16_ = containsOrIncl__VFt0uM7bgfJ5age9alOsU9cg(marker, (*t).Sup.id);
			if (!!(T16_)) goto LA17_;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
				i_2 = ((NI) 0);
				{
					while (1) {
						if (!(i_2 < colontmp_)) goto LA21;
						i = i_2;
						result = canFormAcycleAux__D3xLdjpvwL5V45baRvp9cbQ(marker, (*t).sons->data[i], startId);
						{
							if (!result) goto LA24_;
							goto BeforeRet_;
						}
						LA24_: ;
						i_2 += ((NI) 1);
					} LA21: ;
				}
			}
			{
				if (!!(((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA28_;
				result = canFormAcycleNode__20MK9ahoGiJtBR9bKtJOLeHg(marker, (*t).n, startId);
			}
			LA28_: ;
		}
		goto LA14_;
		LA17_: ;
		{
			result = ((*t).Sup.id == startId);
		}
		LA14_: ;
		{
			NIM_BOOL T33_;
			T33_ = (NIM_BOOL)0;
			T33_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17));
			if (!(T33_)) goto LA34_;
			T33_ = !((((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 2))&63U)))!=0));
			LA34_: ;
			if (!T33_) goto LA35_;
			result = NIM_TRUE;
		}
		LA35_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25):
	{
		result = ((*typ).callConv == ((tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA) 9));
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canFormAcycle__IVXYI9cxSeivThgKCncHRnA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	NIM_BOOL result;
	tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg marker;
	result = (NIM_BOOL)0;
	nimZeroMem((void*)(&marker), sizeof(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet__n8oDZMn19bEdodSnrBQB9a1Q((&marker));
	result = canFormAcycleAux__D3xLdjpvwL5V45baRvp9cbQ((&marker), typ, (*typ).Sup.id);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isPureObject__IVXYI9cxSeivThgKCncHRnA_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	NIM_BOOL result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	NIM_BOOL T5_;
	result = (NIM_BOOL)0;
	t = typ;
	{
		while (1) {
			NIM_BOOL T3_;
			T3_ = (NIM_BOOL)0;
			T3_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17));
			if (!(T3_)) goto LA4_;
			T3_ = !(((*t).sons->data[((NI) 0)] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)));
			LA4_: ;
			if (!T3_) goto LA2;
			t = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*t).sons->data[((NI) 0)], IL64(36275087638268176));
		} LA2: ;
	}
	T5_ = (NIM_BOOL)0;
	T5_ = !(((*t).sym == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
	if (!(T5_)) goto LA6_;
	T5_ = (((*(*t).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw) 11))&63U)))!=0);
	LA6_: ;
	result = T5_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isFinal__YPjOkGV9axAnGR3UfLeWZ1g_5)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t_2;
	NIM_BOOL T1_;
	NIM_BOOL T2_;
	result = (NIM_BOOL)0;
	t_2 = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(t, IL64(36134350135273744));
	T1_ = (NIM_BOOL)0;
	T2_ = (NIM_BOOL)0;
	T2_ = !(((*t_2).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17)));
	if (T2_) goto LA3_;
	T2_ = (((*t_2).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 2))&63U)))!=0);
	LA3_: ;
	T1_ = T2_;
	if (T1_) goto LA4_;
	T1_ = isPureObject__IVXYI9cxSeivThgKCncHRnA_2(t_2);
	LA4_: ;
	result = T1_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, searchTypeNodeForAux__XSB8G9curVftbRhNQYm7Dug)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, tyProc__M46oZaFErZrJhpbqd9adDQg p, tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	result = NIM_FALSE;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA4;
					i = i_2;
					result = searchTypeNodeForAux__XSB8G9curVftbRhNQYm7Dug((*n)._kind_6.sons->data[i], p, marker);
					{
						if (!result) goto LA7_;
						goto BeforeRet_;
					}
					LA7_: ;
					i_2 += ((NI) 1);
				} LA4: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		result = searchTypeNodeForAux__XSB8G9curVftbRhNQYm7Dug((*n)._kind_6.sons->data[((NI) 0)], p, marker);
		{
			if (!result) goto LA12_;
			goto BeforeRet_;
		}
		LA12_: ;
		{
			NI i_3;
			NI colontmp__2;
			NI i_4;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len__P89cqdlERShb9alU3iC0yj8wast(n);
			i_4 = ((NI) 1);
			{
				while (1) {
					if (!(i_4 < colontmp__2)) goto LA16;
					i_3 = i_4;
					switch ((*(*n)._kind_6.sons->data[i_3]).kind) {
					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 85):
					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 88):
					{
						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T18_;
						T18_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
						T18_ = lastSon__UPSW0jLTX5qJL51YMUAHgw((*n)._kind_6.sons->data[i_3]);
						result = searchTypeNodeForAux__XSB8G9curVftbRhNQYm7Dug(T18_, p, marker);
						{
							if (!result) goto LA21_;
							goto BeforeRet_;
						}
						LA21_: ;
					}
					break;
					default:
					{
					}
					break;
					}
					i_4 += ((NI) 1);
				} LA16: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		result = searchTypeForAux__T2zTGEuen7MZ9b8x6nIl61A((*(*n)._kind_4.sym).typ, p, marker);
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, searchTypeForAux__T2zTGEuen7MZ9b8x6nIl61A)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyProc__M46oZaFErZrJhpbqd9adDQg predicate, tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	result = NIM_FALSE;
	{
		if (!(t == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = containsOrIncl__VFt0uM7bgfJ5age9alOsU9cg(marker, (*t).Sup.id);
		if (!T7_) goto LA8_;
		goto BeforeRet_;
	}
	LA8_: ;
	result = predicate(t);
	{
		if (!result) goto LA12_;
		goto BeforeRet_;
	}
	LA12_: ;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17):
	{
		{
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T19_;
			if (!!(((*t).sons->data[((NI) 0)] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA17_;
			T19_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T19_ = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*t).sons->data[((NI) 0)], IL64(36275087638268176));
			result = searchTypeForAux__T2zTGEuen7MZ9b8x6nIl61A(T19_, predicate, marker);
		}
		LA17_: ;
		{
			if (!!(result)) goto LA22_;
			result = searchTypeNodeForAux__XSB8G9curVftbRhNQYm7Dug((*t).n, predicate, marker);
		}
		LA22_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T25_;
		T25_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T25_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		result = searchTypeForAux__T2zTGEuen7MZ9b8x6nIl61A(T25_, predicate, marker);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 19):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA29;
					i = i_2;
					result = searchTypeForAux__T2zTGEuen7MZ9b8x6nIl61A((*t).sons->data[i], predicate, marker);
					{
						if (!result) goto LA32_;
						goto BeforeRet_;
					}
					LA32_: ;
					i_2 += ((NI) 1);
				} LA29: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, searchTypeFor__QA5oWYPirn9bgEvrXiCsgVg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyProc__M46oZaFErZrJhpbqd9adDQg predicate) {
	NIM_BOOL result;
	tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg marker;
	result = (NIM_BOOL)0;
	nimZeroMem((void*)(&marker), sizeof(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet__n8oDZMn19bEdodSnrBQB9a1Q((&marker));
	result = searchTypeForAux__T2zTGEuen7MZ9b8x6nIl61A(t, predicate, (&marker));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isGCRef__YPjOkGV9axAnGR3UfLeWZ1g_6)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T3_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 28));
	if (T1_) goto LA2_;
	T3_ = (NIM_BOOL)0;
	T3_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25));
	if (!(T3_)) goto LA4_;
	T3_ = ((*t).callConv == ((tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA) 9));
	LA4_: ;
	T1_ = T3_;
	LA2_: ;
	result = T1_;
	{
		NIM_BOOL T7_;
		NIM_BOOL T8_;
		T7_ = (NIM_BOOL)0;
		T8_ = (NIM_BOOL)0;
		T8_ = result;
		if (!(T8_)) goto LA9_;
		T8_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 28) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24));
		LA9_: ;
		T7_ = T8_;
		if (!(T7_)) goto LA10_;
		T7_ = (((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 31))&63U)))!=0);
		LA10_: ;
		if (!T7_) goto LA11_;
		result = NIM_FALSE;
	}
	LA11_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsGarbageCollectedRef__IVXYI9cxSeivThgKCncHRnA_3)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = searchTypeFor__QA5oWYPirn9bgEvrXiCsgVg(typ, isGCRef__YPjOkGV9axAnGR3UfLeWZ1g_6);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng, classify__OP66kLszPi2spXXVeoE1Tg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng result;
	result = (tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng)0;
	{
		if (!(t == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA3_;
		result = ((tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T6_;
		T6_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T6_ = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(t, IL64(36134350144710928));
		switch ((*T6_).kind) {
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 36) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 39):
		{
			result = ((tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng) 2);
		}
		break;
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 31) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 35):
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 40) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 44):
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 1):
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 2):
		case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 14):
		{
			result = ((tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng) 1);
		}
		break;
		default:
		{
			result = ((tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng) 0);
		}
		break;
		}
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, skipConv__BH9abOhPX8pH0DnEWlRxmlw)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 67):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 66):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 70):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 68):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 69):
	{
		{
			tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng T4_;
			tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng T5_;
			T4_ = (tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng)0;
			T4_ = classify__OP66kLszPi2spXXVeoE1Tg((*(*n)._kind_6.sons->data[((NI) 0)]).typ);
			T5_ = (tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng)0;
			T5_ = classify__OP66kLszPi2spXXVeoE1Tg((*n).typ);
			if (!(T4_ == T5_)) goto LA6_;
			result = (*n)._kind_6.sons->data[((NI) 0)];
		}
		LA6_: ;
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 58):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 59):
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 60):
	{
		{
			tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng T11_;
			tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng T12_;
			T11_ = (tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng)0;
			T11_ = classify__OP66kLszPi2spXXVeoE1Tg((*(*n)._kind_6.sons->data[((NI) 1)]).typ);
			T12_ = (tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng)0;
			T12_ = classify__OP66kLszPi2spXXVeoE1Tg((*n).typ);
			if (!(T11_ == T12_)) goto LA13_;
			result = (*n)._kind_6.sons->data[((NI) 1)];
		}
		LA13_: ;
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}
static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
	(*s).prev = excHandler__rqLlY5bs9atDw2OXYqJEn5g;
	excHandler__rqLlY5bs9atDw2OXYqJEn5g = s;
}
static N_INLINE(void, popSafePoint)(void) {
	excHandler__rqLlY5bs9atDw2OXYqJEn5g = (*excHandler__rqLlY5bs9atDw2OXYqJEn5g).prev;
}
N_LIB_PRIVATE N_NIMCALL(NI64, align__q0XhcNGvQewpW9bvKM9aZqMA)(NI64 address, NI64 alignment) {
	NI64 result;
	result = (NI64)0;
	result = (NI64)((NI64)(address + (NI64)(alignment - IL64(1))) & (NI64)((NU64) ~((NI64)(alignment - IL64(1)))));
	return result;
}
static N_NIMCALL(void, Marker_tyRef__SFgbIvdx8bC9cxnXgi8Zn1A)(void* p, NI op) {
	tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA* a;
	a = (tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA*)p;
	nimGCvisit((void*)(*a).Sup.Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.Sup.trace, op);
	nimGCvisit((void*)(*a).Sup.Sup.Sup.up, op);
}
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y))))));
	return result;
}
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((NU32)(((NU) (x))) < (NU32)(((NU) (y))));
	return result;
}
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	addZCT__Y66tOYFjgwJ0k4aLz4bc0Q((&gch__IcYaEuuWivYAS86vFMTS3Q.zct), c);
}
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system((*c).refcount, ((NI) 8));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem((*c).refcount, ((NI) 8));
		if (!T3_) goto LA4_;
		rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_2system(c);
	}
	LA4_: ;
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
	NI T1_;
	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = (NI)0;
	T1_ = minuspercent___dgYAo7RfdUVVpvkfKDym8w_2system(((NI) (ptrdiff_t) (usr)), ((NI) 8));
	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	return result;
}
static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(p);
	decRef__AT1eRuflKWyTTBdLjEDZbgsystem(T1_);
}
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y) {
	NI result;
	result = (NI)0;
	result = ((NI) ((NU)((NU32)(((NU) (x))) + (NU32)(((NU) (y))))));
	return result;
}
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = pluspercent___dgYAo7RfdUVVpvkfKDym8wsystem((*c).refcount, ((NI) 8));
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(src);
		incRef__AT1eRuflKWyTTBdLjEDZbg_3system(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem((*dest));
		decRef__AT1eRuflKWyTTBdLjEDZbgsystem(T10_);
	}
	LA8_: ;
	(*dest) = src;
}
N_LIB_PRIVATE N_NIMCALL(void, raiseIllegalTypeRecursion__ULZFsIEVstfoa5ENCnw9cLA)(void) {
	tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA* T1_;
	NimStringDesc* T2_;
	T1_ = (tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA*)0;
	T1_ = (tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA*) newObj((&NTI__SFgbIvdx8bC9cxnXgi8Zn1A_), sizeof(tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA));
	(*T1_).Sup.Sup.Sup.Sup.m_type = (&NTI__eSlcgGR6dDg1zp0Mnw4yVA_);
	(*T1_).Sup.Sup.Sup.name = "IllegalTypeRecursionError";
	T2_ = (NimStringDesc*)0;
	T2_ = (*T1_).Sup.Sup.Sup.message; (*T1_).Sup.Sup.Sup.message = copyStringRC1(((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_175));
	if (T2_) nimGCunrefNoCycle(T2_);
	asgnRef((void**) (&(*T1_).Sup.Sup.Sup.parent), ((Exception*) NIM_NIL));
	raiseExceptionEx((Exception*)T1_, "IllegalTypeRecursionError", "raiseIllegalTypeRecursion", "sizealignoffsetimpl.nim", 29);
}
N_LIB_PRIVATE N_NIMCALL(NI, align__Om4wKSYr7i4HlMLgvZHMKw)(NI address, NI alignment) {
	NI result;
	result = (NI)0;
	result = (NI)((NI)(address + (NI)(alignment - ((NI) 1))) & (NI)((NU32) ~((NI)(alignment - ((NI) 1)))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, align__6aPSxP9cKNSW60fbvVU666A)(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* arg, NI value) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = NIM_UNLIKELY((value == ((NI) -2)));
		if (!T3_) goto LA4_;
		raiseIllegalTypeRecursion__ULZFsIEVstfoa5ENCnw9cLA();
	}
	LA4_: ;
	{
		NIM_BOOL T8_;
		NIM_BOOL T9_;
		T8_ = (NIM_BOOL)0;
		T9_ = (NIM_BOOL)0;
		T9_ = (value == ((NI) -3));
		if (T9_) goto LA10_;
		T9_ = ((*arg).maxAlign == ((NI) -3));
		LA10_: ;
		T8_ = T9_;
		if (T8_) goto LA11_;
		T8_ = ((*arg).offset == ((NI) -3));
		LA11_: ;
		if (!T8_) goto LA12_;
		(*arg).maxAlign = ((NI) -3);
		(*arg).offset = ((NI) -3);
	}
	goto LA6_;
	LA12_: ;
	{
		(*arg).maxAlign = ((value >= (*arg).maxAlign) ? value : (*arg).maxAlign);
		(*arg).offset = align__Om4wKSYr7i4HlMLgvZHMKw((*arg).offset, value);
	}
	LA6_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, inc__6aPSxP9cKNSW60fbvVU666A_2)(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* arg, NI value) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = NIM_UNLIKELY((value == ((NI) -2)));
		if (!T3_) goto LA4_;
		raiseIllegalTypeRecursion__ULZFsIEVstfoa5ENCnw9cLA();
	}
	LA4_: ;
	{
		NIM_BOOL T8_;
		T8_ = (NIM_BOOL)0;
		T8_ = (value == ((NI) -3));
		if (T8_) goto LA9_;
		T8_ = ((*arg).offset == ((NI) -3));
		LA9_: ;
		if (!T8_) goto LA10_;
		(*arg).offset = ((NI) -3);
	}
	goto LA6_;
	LA10_: ;
	{
		(*arg).offset += value;
	}
	LA6_: ;
}
N_LIB_PRIVATE N_NIMCALL(NI, finish__N2YmOAWMSZMVl7ctY8EMKA)(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* arg) {
	NI result;
	result = (NI)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*arg).maxAlign == ((NI) -3));
		if (T3_) goto LA4_;
		T3_ = ((*arg).offset == ((NI) -3));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = ((NI) -3);
		(*arg).offset = ((NI) -3);
	}
	goto LA1_;
	LA5_: ;
	{
		NI T8_;
		T8_ = (NI)0;
		T8_ = align__Om4wKSYr7i4HlMLgvZHMKw((*arg).offset, (*arg).maxAlign);
		result = (NI)(T8_ - (*arg).offset);
		(*arg).offset += result;
	}
	LA1_: ;
	return result;
}
static N_INLINE(Exception*, nimBorrowCurrentException)(void) {
	Exception* result;
	result = (Exception*)0;
	result = currException__9bVPeDJlYTi9bQApZpfH8wjg;
	return result;
}
static N_INLINE(void, popCurrentException)(void) {
	asgnRef((void**) (&currException__9bVPeDJlYTi9bQApZpfH8wjg), (*currException__9bVPeDJlYTi9bQApZpfH8wjg).up);
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isObjectWithTypeFieldPredicate__YPjOkGV9axAnGR3UfLeWZ1g_7)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T2_;
	NIM_BOOL T3_;
	NIM_BOOL T6_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T2_ = (NIM_BOOL)0;
	T3_ = (NIM_BOOL)0;
	T3_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17));
	if (!(T3_)) goto LA4_;
	T3_ = ((*t).sons->data[((NI) 0)] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL));
	LA4_: ;
	T2_ = T3_;
	if (!(T2_)) goto LA5_;
	T6_ = (NIM_BOOL)0;
	T6_ = !(((*t).sym == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
	if (!(T6_)) goto LA7_;
	T6_ = !(((IL64(2147485696) & (*(*t).sym).flags) == 0));
	LA7_: ;
	T2_ = !(T6_);
	LA5_: ;
	T1_ = T2_;
	if (!(T1_)) goto LA8_;
	T1_ = !((((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 2))&63U)))!=0));
	LA8_: ;
	result = T1_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, mergeBranch__i6hpT9aN48aGlIj1pQ2H9csQ)(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* arg, tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw value) {
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		NIM_BOOL T5_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T5_ = (NIM_BOOL)0;
		T5_ = (value.maxAlign == ((NI) -3));
		if (T5_) goto LA6_;
		T5_ = ((*arg).maxAlign == ((NI) -3));
		LA6_: ;
		T4_ = T5_;
		if (T4_) goto LA7_;
		T4_ = (value.offset == ((NI) -3));
		LA7_: ;
		T3_ = T4_;
		if (T3_) goto LA8_;
		T3_ = ((*arg).offset == ((NI) -3));
		LA8_: ;
		if (!T3_) goto LA9_;
		(*arg).maxAlign = ((NI) -3);
		(*arg).offset = ((NI) -3);
	}
	goto LA1_;
	LA9_: ;
	{
		(*arg).offset = (((*arg).offset >= value.offset) ? (*arg).offset : value.offset);
		(*arg).maxAlign = (((*arg).maxAlign >= value.maxAlign) ? (*arg).maxAlign : value.maxAlign);
	}
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, computeUnionObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL packed_0, tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* accum) {
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		(*accum).offset = ((NI) -3);
		(*accum).maxAlign = ((NI) -3);
		liMessage__Q6JNH4uRwLyZrj0dJakHew(conf, (*n).info, ((tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w) 10), ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_180), ((tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw) 0), TM__PpBJsMJcrcWrpLTS6mci1g_181, NIM_FALSE);
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw accumRoot;
		accumRoot = (*accum);
		{
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw** child;
			tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* colontmp_;
			NI i;
			NI L;
			NI T4_;
			child = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw**)0;
			colontmp_ = (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
			colontmp_ = (*n)._kind_6.sons;
			i = ((NI) 0);
			T4_ = (colontmp_ ? colontmp_->Sup.len : 0);
			L = T4_;
			{
				while (1) {
					tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw branchAccum;
					NI T7_;
					if (!(i < L)) goto LA6;
					child = &colontmp_->data[i];
					nimZeroMem((void*)(&branchAccum), sizeof(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw));
					branchAccum.offset = accumRoot.offset;
					branchAccum.maxAlign = ((NI) 1);
					computeUnionObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA(conf, (*child), packed_0, (&branchAccum));
					T7_ = (NI)0;
					T7_ = finish__N2YmOAWMSZMVl7ctY8EMKA((&branchAccum));
					(void)(T7_);
					mergeBranch__i6hpT9aN48aGlIj1pQ2H9csQ(accum, branchAccum);
					i += ((NI) 1);
				} LA6: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		NI size;
		NI align;
		size = ((NI) -3);
		align = ((NI) -3);
		{
			if (!((*(*n)._kind_4.sym)._kind_4.bitsize == ((NI) 0))) goto LA11_;
			computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, (*(*n)._kind_4.sym).typ);
			size = ((NI) ((*(*(*n)._kind_4.sym).typ).size));
			{
				if (!packed_0) goto LA15_;
				align = ((NI) 1);
			}
			goto LA13_;
			LA15_: ;
			{
				align = ((NI) ((*(*(*n)._kind_4.sym).typ).align));
			}
			LA13_: ;
		}
		LA11_: ;
		align__6aPSxP9cKNSW60fbvVU666A(accum, align);
		{
			if (!(((NI) 0) < (*(*n)._kind_4.sym)._kind_4.alignment)) goto LA20_;
			align__6aPSxP9cKNSW60fbvVU666A(accum, (*(*n)._kind_4.sym)._kind_4.alignment);
		}
		LA20_: ;
		(*(*n)._kind_4.sym).offset = (*accum).offset;
		inc__6aPSxP9cKNSW60fbvVU666A_2(accum, size);
	}
	break;
	default:
	{
		(*accum).maxAlign = ((NI) -3);
		(*accum).offset = ((NI) -3);
	}
	break;
	}
}
N_LIB_PRIVATE N_NIMCALL(NI64, computeSubObjectAlign__Kjdj9bFtEq5KC8nrnNmr2SQ)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	NI64 result;
{	result = (NI64)0;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		result = computeSubObjectAlign__Kjdj9bFtEq5KC8nrnNmr2SQ(conf, (*n)._kind_6.sons->data[((NI) 0)]);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
			i_2 = ((NI) 1);
			{
				while (1) {
					tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* child;
					if (!(i_2 < colontmp_)) goto LA4;
					i = i_2;
					child = (*n)._kind_6.sons->data[i];
					switch ((*child).kind) {
					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 85):
					case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 88):
					{
						NI64 align;
						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T6_;
						T6_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
						T6_ = lastSon__UPSW0jLTX5qJL51YMUAHgw(child);
						align = computeSubObjectAlign__Kjdj9bFtEq5KC8nrnNmr2SQ(conf, T6_);
						{
							if (!(align < IL64(0))) goto LA9_;
							result = align;
							goto BeforeRet_;
						}
						LA9_: ;
						result = ((result >= align) ? result : align);
					}
					break;
					default:
					{
						internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw(conf, unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_182), TM__PpBJsMJcrcWrpLTS6mci1g_183);
					}
					break;
					}
					i_2 += ((NI) 1);
				} LA4: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		result = IL64(1);
		{
			NI i_3;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* child_2;
			tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* colontmp__2;
			NI i_4;
			NI L;
			NI T14_;
			i_3 = (NI)0;
			child_2 = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			colontmp__2 = (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
			colontmp__2 = (*n)._kind_6.sons;
			i_4 = ((NI) 0);
			T14_ = (colontmp__2 ? colontmp__2->Sup.len : 0);
			L = T14_;
			{
				while (1) {
					NI64 align_2;
					if (!(i_4 < L)) goto LA16;
					i_3 = i_4;
					child_2 = colontmp__2->data[i_4];
					align_2 = computeSubObjectAlign__Kjdj9bFtEq5KC8nrnNmr2SQ(conf, (*n)._kind_6.sons->data[i_3]);
					{
						if (!(align_2 < IL64(0))) goto LA19_;
						result = align_2;
						goto BeforeRet_;
					}
					LA19_: ;
					result = ((result >= align_2) ? result : align_2);
					i_4 += ((NI) 1);
				} LA16: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, (*(*n)._kind_4.sym).typ);
		result = ((NI64) ((*(*(*n)._kind_4.sym).typ).align));
	}
	break;
	default:
	{
		result = IL64(1);
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, alignmentMax__9bccw9anbIWOMaS0LoB2w3xQ)(NI a, NI b) {
	NI result;
	result = (NI)0;
	{
		NIM_BOOL T3_;
		NIM_BOOL T5_;
		T3_ = (NIM_BOOL)0;
		T3_ = (a == ((NI) -2));
		if (T3_) goto LA4_;
		T3_ = (b == ((NI) -2));
		LA4_: ;
		T5_ = (NIM_BOOL)0;
		T5_ = NIM_UNLIKELY(T3_);
		if (!T5_) goto LA6_;
		raiseIllegalTypeRecursion__ULZFsIEVstfoa5ENCnw9cLA();
	}
	LA6_: ;
	{
		NIM_BOOL T10_;
		T10_ = (NIM_BOOL)0;
		T10_ = (a == ((NI) -3));
		if (T10_) goto LA11_;
		T10_ = (b == ((NI) -3));
		LA11_: ;
		if (!T10_) goto LA12_;
		result = ((NI) -3);
	}
	goto LA8_;
	LA12_: ;
	{
		result = ((a >= b) ? a : b);
	}
	LA8_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, setOffsetsToUnknown__S9cusX9cvoJODyYsPyafVB5w)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3));
		if (!(T3_)) goto LA4_;
		T3_ = ((*(*n)._kind_4.sym).kind == ((tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw) 19));
		LA4_: ;
		if (!T3_) goto LA5_;
		(*(*n)._kind_4.sym).offset = ((NI) -3);
	}
	goto LA1_;
	LA5_: ;
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen__P89cqdlERShb9alU3iC0yj8w_2ast(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA10;
					i = i_2;
					setOffsetsToUnknown__S9cusX9cvoJODyYsPyafVB5w((*n)._kind_6.sons->data[i]);
					i_2 += ((NI) 1);
				} LA10: ;
			}
		}
	}
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, computeObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA_2)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL packed_0, tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw* accum) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*n).typ == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)));
		if (!(T3_)) goto LA4_;
		T3_ = ((*(*n).typ).size == IL64(-2));
		LA4_: ;
		if (!T3_) goto LA5_;
		raiseIllegalTypeRecursion__ULZFsIEVstfoa5ENCnw9cLA();
	}
	LA5_: ;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 139):
	{
		NI maxChildAlign;
		computeObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA_2(conf, (*n)._kind_6.sons->data[((NI) 0)], packed_0, accum);
		{
			if (!((*accum).offset == ((NI) -3))) goto LA10_;
			maxChildAlign = ((NI) -3);
		}
		goto LA8_;
		LA10_: ;
		{
			maxChildAlign = ((NI) 1);
		}
		LA8_: ;
		{
			if (!!(packed_0)) goto LA15_;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(n);
				i_2 = ((NI) 1);
				{
					while (1) {
						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* child;
						if (!(i_2 < colontmp_)) goto LA19;
						i = i_2;
						child = (*n)._kind_6.sons->data[i];
						switch ((*child).kind) {
						case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 85):
						case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 88):
						{
							NI align;
							tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T21_;
							NI64 T22_;
							T21_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
							T21_ = lastSon__UPSW0jLTX5qJL51YMUAHgw((*n)._kind_6.sons->data[i]);
							T22_ = (NI64)0;
							T22_ = computeSubObjectAlign__Kjdj9bFtEq5KC8nrnNmr2SQ(conf, T21_);
							align = ((NI) (T22_));
							maxChildAlign = alignmentMax__9bccw9anbIWOMaS0LoB2w3xQ(maxChildAlign, align);
						}
						break;
						default:
						{
							internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw(conf, unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_184), TM__PpBJsMJcrcWrpLTS6mci1g_185);
						}
						break;
						}
						i_2 += ((NI) 1);
					} LA19: ;
				}
			}
		}
		LA15_: ;
		{
			if (!(maxChildAlign == ((NI) -3))) goto LA26_;
			setOffsetsToUnknown__S9cusX9cvoJODyYsPyafVB5w(n);
			(*accum).offset = ((NI) -3);
			(*accum).maxAlign = ((NI) -3);
		}
		goto LA24_;
		LA26_: ;
		{
			tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw accumRoot;
			align__6aPSxP9cKNSW60fbvVU666A(accum, maxChildAlign);
			accumRoot = (*accum);
			{
				NI i_3;
				NI colontmp__2;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = len__P89cqdlERShb9alU3iC0yj8wast(n);
				i_4 = ((NI) 1);
				{
					while (1) {
						tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw branchAccum;
						tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* T32_;
						NI T33_;
						if (!(i_4 < colontmp__2)) goto LA31;
						i_3 = i_4;
						nimZeroMem((void*)(&branchAccum), sizeof(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw));
						branchAccum.offset = accumRoot.offset;
						branchAccum.maxAlign = ((NI) 1);
						T32_ = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
						T32_ = lastSon__UPSW0jLTX5qJL51YMUAHgw((*n)._kind_6.sons->data[i_3]);
						computeObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA_2(conf, T32_, packed_0, (&branchAccum));
						T33_ = (NI)0;
						T33_ = finish__N2YmOAWMSZMVl7ctY8EMKA((&branchAccum));
						(void)(T33_);
						mergeBranch__i6hpT9aN48aGlIj1pQ2H9csQ(accum, branchAccum);
						i_4 += ((NI) 1);
					} LA31: ;
				}
			}
		}
		LA24_: ;
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 138):
	{
		{
			NI i_5;
			tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* child_2;
			tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* colontmp__3;
			NI i_6;
			NI L;
			NI T36_;
			i_5 = (NI)0;
			child_2 = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
			colontmp__3 = (tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
			colontmp__3 = (*n)._kind_6.sons;
			i_6 = ((NI) 0);
			T36_ = (colontmp__3 ? colontmp__3->Sup.len : 0);
			L = T36_;
			{
				while (1) {
					if (!(i_6 < L)) goto LA38;
					i_5 = i_6;
					child_2 = colontmp__3->data[i_6];
					computeObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA_2(conf, child_2, packed_0, accum);
					i_6 += ((NI) 1);
				} LA38: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		NI size;
		NI align_2;
		size = ((NI) -3);
		align_2 = ((NI) -3);
		{
			if (!((*(*n)._kind_4.sym)._kind_4.bitsize == ((NI) 0))) goto LA42_;
			computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, (*(*n)._kind_4.sym).typ);
			size = ((NI) ((*(*(*n)._kind_4.sym).typ).size));
			{
				if (!packed_0) goto LA46_;
				align_2 = ((NI) 1);
			}
			goto LA44_;
			LA46_: ;
			{
				align_2 = ((NI) ((*(*(*n)._kind_4.sym).typ).align));
			}
			LA44_: ;
		}
		LA42_: ;
		align__6aPSxP9cKNSW60fbvVU666A(accum, align_2);
		{
			if (!(((NI) 0) < (*(*n)._kind_4.sym)._kind_4.alignment)) goto LA51_;
			align__6aPSxP9cKNSW60fbvVU666A(accum, (*(*n)._kind_4.sym)._kind_4.alignment);
		}
		LA51_: ;
		(*(*n)._kind_4.sym).offset = (*accum).offset;
		inc__6aPSxP9cKNSW60fbvVU666A_2(accum, size);
	}
	break;
	default:
	{
		(*accum).maxAlign = ((NI) -3);
		(*accum).offset = ((NI) -3);
	}
	break;
	}
}
N_LIB_PRIVATE N_NIMCALL(void, computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	NIM_BOOL hasSize;
	NIM_BOOL hasAlign;
	NI64 revertSize;
	NI16 revertAlign;
	TSafePoint TM__PpBJsMJcrcWrpLTS6mci1g_173;
	tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag tk;
{	hasSize = !(((*typ).size == IL64(-1)));
	hasAlign = !(((*typ).align == ((NI16) -1)));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = hasSize;
		if (!(T3_)) goto LA4_;
		T3_ = hasAlign;
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	revertSize = (*typ).size;
	revertAlign = (*typ).align;
	pushSafePoint(&TM__PpBJsMJcrcWrpLTS6mci1g_173);
	TM__PpBJsMJcrcWrpLTS6mci1g_173.status = _setjmp(TM__PpBJsMJcrcWrpLTS6mci1g_173.context);
	if (TM__PpBJsMJcrcWrpLTS6mci1g_173.status == 0) {
	{
		NIM_BOOL T9_;
		T9_ = (NIM_BOOL)0;
		T9_ = ((*typ).size == IL64(-2));
		if (T9_) goto LA10_;
		T9_ = ((*typ).align == ((NI16) -2));
		LA10_: ;
		if (!T9_) goto LA11_;
		popSafePoint();
		{
			if (!hasSize) goto LA15_;
			(*typ).size = revertSize;
		}
		LA15_: ;
		{
			if (!hasAlign) goto LA19_;
			(*typ).align = revertAlign;
		}
		LA19_: ;
		goto BeforeRet_;
	}
	LA11_: ;
	(*typ).size = IL64(-2);
	(*typ).align = ((NI16) -2);
	(*typ).paddingAtEnd = ((NI16) 0);
	tk = (*typ).kind;
	switch (tk) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25):
	{
		{
			if (!((*typ).callConv == ((tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA) 9))) goto LA24_;
			(*typ).size = ((NI64) ((NI)(((NI) 2) * (*conf).target.ptrSize)));
		}
		goto LA22_;
		LA24_: ;
		{
			(*typ).size = ((NI64) ((*conf).target.ptrSize));
		}
		LA22_: ;
		(*typ).align = ((NI16) ((*conf).target.ptrSize));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 5):
	{
		(*typ).size = ((NI64) ((*conf).target.ptrSize));
		(*typ).align = ((NI16) ((*conf).target.ptrSize));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 28):
	{
		{
			if (!(((*conf).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption__RAfAEZqjnKMDumgyKKc1qw) 40))&63U)))!=0)) goto LA31_;
			(*typ).size = ((NI64) ((NI)((*conf).target.ptrSize * ((NI) 2))));
		}
		goto LA29_;
		LA31_: ;
		{
			(*typ).size = ((NI64) ((*conf).target.ptrSize));
		}
		LA29_: ;
		(*typ).align = ((NI16) ((*conf).target.ptrSize));
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 29):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 21):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base;
		base = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
		{
			if (!(base == typ)) goto LA37_;
			(*typ).size = IL64(-2);
			(*typ).align = ((NI16) -2);
			(*typ).paddingAtEnd = ((NI16) -2);
			popSafePoint();
			{
				if (!hasSize) goto LA41_;
				(*typ).size = revertSize;
			}
			LA41_: ;
			{
				if (!hasAlign) goto LA45_;
				(*typ).align = revertAlign;
			}
			LA45_: ;
			goto BeforeRet_;
		}
		LA37_: ;
		(*typ).align = ((NI16) ((*conf).target.ptrSize));
		{
			NIM_BOOL T49_;
			T49_ = (NIM_BOOL)0;
			T49_ = ((*typ).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24));
			if (!(T49_)) goto LA50_;
			T49_ = (((*conf).globalOptions &((NU64)1<<((NU)(((tyEnum_TGlobalOption__RAfAEZqjnKMDumgyKKc1qw) 40))&63U)))!=0);
			LA50_: ;
			if (!T49_) goto LA51_;
			(*typ).size = ((NI64) ((NI)((*conf).target.ptrSize * ((NI) 2))));
		}
		goto LA47_;
		LA51_: ;
		{
			(*typ).size = ((NI64) ((*conf).target.ptrSize));
		}
		LA47_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
	{
		NI64 elemSize;
		tyObject_Int128__9a9axPfb75jdWY25AamJewkA len;
		computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, (*typ).sons->data[((NI) 1)]);
		elemSize = (*(*typ).sons->data[((NI) 1)]).size;
		len = lengthOrd__hjogdnp59cMX1rwmjikBhqw_3(conf, (*typ).sons->data[((NI) 0)]);
		{
			if (!(elemSize < IL64(0))) goto LA57_;
			(*typ).size = elemSize;
			(*typ).align = ((NI16) (elemSize));
		}
		goto LA55_;
		LA57_: ;
		{
			NIM_BOOL T60_;
			T60_ = (NIM_BOOL)0;
			T60_ = lt___nr9cP9b0OL9cabygV9bo19cJgZA_3(len, IL64(0));
			if (!T60_) goto LA61_;
			(*typ).size = IL64(-3);
			(*typ).align = ((NI16) -3);
		}
		goto LA55_;
		LA61_: ;
		{
			tyObject_Int128__9a9axPfb75jdWY25AamJewkA T64_;
			T64_ = star___byxnZkntUVTm6OMjYcCmJw(len, ((NI32) (elemSize)));
			(*typ).size = toInt64Checked__AbU1iGhTiLlXhe9a0gSwe2Q(T64_, IL64(-4));
			(*typ).align = (*(*typ).sons->data[((NI) 1)]).align;
		}
		LA55_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 49):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* base_2;
		base_2 = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
		computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, base_2);
		(*typ).size = IL64(0);
		(*typ).align = (*base_2).align;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 14):
	{
		{
			tyObject_Int128__9a9axPfb75jdWY25AamJewkA T69_;
			NIM_BOOL T70_;
			T69_ = firstOrd__hjogdnp59cMX1rwmjikBhqw(conf, typ);
			T70_ = (NIM_BOOL)0;
			T70_ = lt___7c5Zw7H31uJfWmmhZe9aEqw_3(T69_, Zero__1ed0M9aQUqqSQVhLxSQO9bCw);
			if (!T70_) goto LA71_;
			(*typ).size = IL64(4);
			(*typ).align = ((NI16) 4);
		}
		goto LA67_;
		LA71_: ;
		{
			NI64 lastOrd;
			tyObject_Int128__9a9axPfb75jdWY25AamJewkA T74_;
			T74_ = lastOrd__hjogdnp59cMX1rwmjikBhqw_2(conf, typ);
			lastOrd = toInt64__1szweXXq3RBN50owrYu2Xw(T74_);
			{
				if (!(lastOrd < IL64(256))) goto LA77_;
				(*typ).size = IL64(1);
				(*typ).align = ((NI16) 1);
			}
			goto LA75_;
			LA77_: ;
			{
				if (!(lastOrd < IL64(65536))) goto LA80_;
				(*typ).size = IL64(2);
				(*typ).align = ((NI16) 2);
			}
			goto LA75_;
			LA80_: ;
			{
				if (!(lastOrd < IL64(4294967296))) goto LA83_;
				(*typ).size = IL64(4);
				(*typ).align = ((NI16) 4);
			}
			goto LA75_;
			LA83_: ;
			{
				(*typ).size = IL64(8);
				(*typ).align = floatInt64Align__Nm9cs6Kn6ltGLynV4vNsRgw(conf);
			}
			LA75_: ;
		}
		LA67_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 19):
	{
		{
			if (!((*(*typ).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 12))) goto LA89_;
			(*typ).size = IL64(-1);
			(*typ).align = ((NI16) -1);
		}
		goto LA87_;
		LA89_: ;
		{
			NI64 length;
			tyObject_Int128__9a9axPfb75jdWY25AamJewkA T92_;
			T92_ = lengthOrd__hjogdnp59cMX1rwmjikBhqw_3(conf, (*typ).sons->data[((NI) 0)]);
			length = toInt64__1szweXXq3RBN50owrYu2Xw(T92_);
			{
				if (!(length <= IL64(8))) goto LA95_;
				(*typ).size = IL64(1);
				(*typ).align = ((NI16) 1);
			}
			goto LA93_;
			LA95_: ;
			{
				if (!(length <= IL64(16))) goto LA98_;
				(*typ).size = IL64(2);
				(*typ).align = ((NI16) 2);
			}
			goto LA93_;
			LA98_: ;
			{
				if (!(length <= IL64(32))) goto LA101_;
				(*typ).size = IL64(4);
				(*typ).align = ((NI16) 4);
			}
			goto LA93_;
			LA101_: ;
			{
				if (!(length <= IL64(64))) goto LA104_;
				(*typ).size = IL64(8);
				(*typ).align = floatInt64Align__Nm9cs6Kn6ltGLynV4vNsRgw(conf);
			}
			goto LA93_;
			LA104_: ;
			{
				NI64 T107_;
				NI64 T110_;
				T107_ = (NI64)0;
				T107_ = align__q0XhcNGvQewpW9bvKM9aZqMA(length, IL64(8));
				if (!((NI64)(T107_ % IL64(8)) == IL64(0))) goto LA108_;
				T110_ = (NI64)0;
				T110_ = align__q0XhcNGvQewpW9bvKM9aZqMA(length, IL64(8));
				(*typ).size = (NI64)(T110_ / IL64(8));
				(*typ).align = floatInt64Align__Nm9cs6Kn6ltGLynV4vNsRgw(conf);
			}
			goto LA93_;
			LA108_: ;
			{
				NI64 T112_;
				T112_ = (NI64)0;
				T112_ = align__q0XhcNGvQewpW9bvKM9aZqMA(length, IL64(8));
				(*typ).size = (NI64)((NI64)(T112_ / IL64(8)) + IL64(1));
				(*typ).align = floatInt64Align__Nm9cs6Kn6ltGLynV4vNsRgw(conf);
			}
			LA93_: ;
		}
		LA87_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20):
	{
		computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, (*typ).sons->data[((NI) 0)]);
		(*typ).size = (*(*typ).sons->data[((NI) 0)]).size;
		(*typ).align = (*(*typ).sons->data[((NI) 0)]).align;
		(*typ).paddingAtEnd = (*(*typ).sons->data[((NI) 0)]).paddingAtEnd;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		TSafePoint TM__PpBJsMJcrcWrpLTS6mci1g_174;
		tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw accum;
		NI T122_;
		NI T123_;
		pushSafePoint(&TM__PpBJsMJcrcWrpLTS6mci1g_174);
		TM__PpBJsMJcrcWrpLTS6mci1g_174.status = _setjmp(TM__PpBJsMJcrcWrpLTS6mci1g_174.context);
		if (TM__PpBJsMJcrcWrpLTS6mci1g_174.status == 0) {
		nimZeroMem((void*)(&accum), sizeof(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw));
		accum.maxAlign = ((NI) 1);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(typ);
			i_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* child;
					if (!(i_2 < colontmp_)) goto LA117;
					i = i_2;
					child = (*typ).sons->data[i];
					computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, child);
					align__6aPSxP9cKNSW60fbvVU666A((&accum), ((NI) ((*child).align)));
					{
						tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* sym;
						if (!!(((*typ).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA120_;
						sym = (*(*(*typ).n)._kind_6.sons->data[i])._kind_4.sym;
						(*sym).offset = accum.offset;
					}
					LA120_: ;
					inc__6aPSxP9cKNSW60fbvVU666A_2((&accum), ((NI) ((*child).size)));
					i_2 += ((NI) 1);
				} LA117: ;
			}
		}
		T122_ = (NI)0;
		T122_ = finish__N2YmOAWMSZMVl7ctY8EMKA((&accum));
		(*typ).paddingAtEnd = ((NI16) (T122_));
		T123_ = (NI)0;
		{
			if (!(accum.offset == ((NI) 0))) goto LA126_;
			T123_ = ((NI) 1);
		}
		goto LA124_;
		LA126_: ;
		{
			T123_ = accum.offset;
		}
		LA124_: ;
		(*typ).size = ((NI64) (T123_));
		(*typ).align = ((NI16) (accum.maxAlign));
		popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(nimBorrowCurrentException()->Sup.m_type, (&NTI__eSlcgGR6dDg1zp0Mnw4yVA_))) {
				TM__PpBJsMJcrcWrpLTS6mci1g_174.status = 0;
				(*typ).paddingAtEnd = ((NI16) -2);
				(*typ).size = IL64(-2);
				(*typ).align = ((NI16) -2);
				popCurrentException();
			}
		}
		if (TM__PpBJsMJcrcWrpLTS6mci1g_174.status != 0) reraiseException();
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17):
	{
		TSafePoint TM__PpBJsMJcrcWrpLTS6mci1g_176;
		tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw volatile accum_2;
		NI16 paddingAtEnd;
		NI T170_;
		pushSafePoint(&TM__PpBJsMJcrcWrpLTS6mci1g_176);
		TM__PpBJsMJcrcWrpLTS6mci1g_176.status = _setjmp(TM__PpBJsMJcrcWrpLTS6mci1g_176.context);
		if (TM__PpBJsMJcrcWrpLTS6mci1g_176.status == 0) {
		{
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* volatile st;
			if (!!(((*typ).sons->data[((NI) 0)] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA134_;
			st = (*typ).sons->data[((NI) 0)];
			{
				while (1) {
					NI T138_;
					if (!((IL64(36275087638268176) &((NU64)1<<((NU)((*st).kind)&63U)))!=0)) goto LA137;
					T138_ = (NI)0;
					T138_ = len__5mJADrRYkP3r9auuiuDZN9cQast(st);
					st = (*st).sons->data[(NI)(T138_ - ((NI) 1))];
				} LA137: ;
			}
			computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, st);
			{
				if (!((*conf).backend == ((tyEnum_TBackend__4OBsgZ9cscH2JLUE5Wcz01g) 2))) goto LA141_;
				nimZeroMem((void*)(&accum_2), sizeof(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw));
				accum_2.offset = (NI)(((NI) ((*st).size)) - ((NI) ((*st).paddingAtEnd)));
				accum_2.maxAlign = ((NI) ((*st).align));
			}
			goto LA139_;
			LA141_: ;
			{
				nimZeroMem((void*)(&accum_2), sizeof(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw));
				accum_2.offset = ((NI) ((*st).size));
				accum_2.maxAlign = ((NI) ((*st).align));
			}
			LA139_: ;
		}
		goto LA132_;
		LA134_: ;
		{
			NIM_BOOL T145_;
			T145_ = (NIM_BOOL)0;
			T145_ = isObjectWithTypeFieldPredicate__YPjOkGV9axAnGR3UfLeWZ1g_7(typ);
			if (!T145_) goto LA146_;
			nimZeroMem((void*)(&accum_2), sizeof(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw));
			accum_2.offset = (*conf).target.intSize;
			accum_2.maxAlign = (*conf).target.intSize;
		}
		goto LA132_;
		LA146_: ;
		{
			nimZeroMem((void*)(&accum_2), sizeof(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw));
			accum_2.maxAlign = ((NI) 1);
		}
		LA132_: ;
		{
			if (!(((*typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 1))&63U)))!=0)) goto LA151_;
			{
				tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
				if (!!((accum_2.offset == ((NI) 0)))) goto LA155_;
				{
					if (!!(((*typ).sym == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)))) goto LA159_;
					info = (*(*typ).sym).info;
				}
				goto LA157_;
				LA159_: ;
				{
					info = unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg;
				}
				LA157_: ;
				liMessage__Q6JNH4uRwLyZrj0dJakHew(conf, info, ((tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w) 10), ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_177), ((tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw) 0), TM__PpBJsMJcrcWrpLTS6mci1g_178, NIM_FALSE);
				nimZeroMem((void*)(&accum_2), sizeof(tyObject_OffsetAccum__jzd9bqLwIuw3ARaSQW79b6yw));
				accum_2.offset = ((NI) -3);
				accum_2.maxAlign = ((NI) -3);
			}
			goto LA153_;
			LA155_: ;
			{
				if (!(((*typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 23))&63U)))!=0)) goto LA163_;
				computeUnionObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA(conf, (*typ).n, NIM_TRUE, (&accum_2));
			}
			goto LA153_;
			LA163_: ;
			{
				computeUnionObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA(conf, (*typ).n, NIM_FALSE, (&accum_2));
			}
			LA153_: ;
		}
		goto LA149_;
		LA151_: ;
		{
			if (!(((*typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 23))&63U)))!=0)) goto LA167_;
			accum_2.maxAlign = ((NI) 1);
			computeObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA_2(conf, (*typ).n, NIM_TRUE, (&accum_2));
		}
		goto LA149_;
		LA167_: ;
		{
			computeObjectOffsetsFoldFunction__srlt8lwmwqpv9aEBc2fZhQA_2(conf, (*typ).n, NIM_FALSE, (&accum_2));
		}
		LA149_: ;
		T170_ = (NI)0;
		T170_ = finish__N2YmOAWMSZMVl7ctY8EMKA((&accum_2));
		paddingAtEnd = ((NI16) (T170_));
		{
			NIM_BOOL T173_;
			NIM_BOOL T174_;
			T173_ = (NIM_BOOL)0;
			T174_ = (NIM_BOOL)0;
			T174_ = !(((*typ).sym == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
			if (!(T174_)) goto LA175_;
			T174_ = (((*(*typ).sym).flags & 262208) == 64);
			LA175_: ;
			T173_ = T174_;
			if (!(T173_)) goto LA176_;
			T173_ = !((((*typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 41))&63U)))!=0));
			LA176_: ;
			if (!T173_) goto LA177_;
			(*typ).size = IL64(-3);
			(*typ).align = ((NI16) -3);
			(*typ).paddingAtEnd = ((NI16) -3);
		}
		goto LA171_;
		LA177_: ;
		{
			NI T180_;
			T180_ = (NI)0;
			{
				if (!(accum_2.offset == ((NI) 0))) goto LA183_;
				T180_ = ((NI) 1);
			}
			goto LA181_;
			LA183_: ;
			{
				T180_ = accum_2.offset;
			}
			LA181_: ;
			(*typ).size = ((NI64) (T180_));
			(*typ).align = ((NI16) (accum_2.maxAlign));
			(*typ).paddingAtEnd = paddingAtEnd;
		}
		LA171_: ;
		popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(nimBorrowCurrentException()->Sup.m_type, (&NTI__eSlcgGR6dDg1zp0Mnw4yVA_))) {
				TM__PpBJsMJcrcWrpLTS6mci1g_176.status = 0;
				(*typ).size = IL64(-2);
				(*typ).align = ((NI16) -2);
				(*typ).paddingAtEnd = ((NI16) -2);
				popCurrentException();
			}
		}
		if (TM__PpBJsMJcrcWrpLTS6mci1g_176.status != 0) reraiseException();
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 55):
	{
		{
			NI T191_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T194_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T195_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T196_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T197_;
			T191_ = (NI)0;
			T191_ = len__5mJADrRYkP3r9auuiuDZN9cQast(typ);
			if (!(((NI) 1) < T191_)) goto LA192_;
			T194_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T194_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, T194_);
			T195_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T195_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			(*typ).size = (*T195_).size;
			T196_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T196_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			(*typ).align = (*T196_).align;
			T197_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T197_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			(*typ).paddingAtEnd = (*T197_).paddingAtEnd;
		}
		LA192_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 10):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 45):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T199_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T200_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T201_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T202_;
		T199_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T199_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
		computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, T199_);
		T200_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T200_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
		(*typ).size = (*T200_).size;
		T201_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T201_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
		(*typ).align = (*T201_).align;
		T202_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T202_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
		(*typ).paddingAtEnd = (*T202_).paddingAtEnd;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 51) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 54):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 56) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 59):
	{
		{
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T208_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T209_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T210_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T211_;
			if (!(((*typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag__x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0)) goto LA206_;
			T208_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T208_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, T208_);
			T209_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T209_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			(*typ).size = (*T209_).size;
			T210_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T210_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			(*typ).align = (*T210_).align;
			T211_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T211_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			(*typ).paddingAtEnd = (*T211_).paddingAtEnd;
		}
		goto LA204_;
		LA206_: ;
		{
			(*typ).size = IL64(-3);
			(*typ).align = ((NI16) -3);
			(*typ).paddingAtEnd = ((NI16) -3);
		}
		LA204_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T214_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T215_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T216_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T217_;
		T214_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T214_ = base__PfgI9ap7WOnsRfFV4znQ27w(typ);
		computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, T214_);
		T215_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T215_ = base__PfgI9ap7WOnsRfFV4znQ27w(typ);
		(*typ).size = (*T215_).size;
		T216_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T216_ = base__PfgI9ap7WOnsRfFV4znQ27w(typ);
		(*typ).align = (*T216_).align;
		T217_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T217_ = base__PfgI9ap7WOnsRfFV4znQ27w(typ);
		(*typ).paddingAtEnd = (*T217_).paddingAtEnd;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 30):
	{
		(*typ).size = IL64(-2);
		(*typ).align = ((NI16) -2);
		(*typ).paddingAtEnd = ((NI16) -2);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
	{
		{
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T224_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T225_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T226_;
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T227_;
			if (!!(((*typ).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA222_;
			T224_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T224_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, T224_);
			T225_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T225_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			(*typ).size = (*T225_).size;
			T226_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T226_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			(*typ).align = (*T226_).align;
			T227_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T227_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(typ);
			(*typ).paddingAtEnd = (*T227_).paddingAtEnd;
		}
		goto LA220_;
		LA222_: ;
		{
			(*typ).size = IL64(-3);
			(*typ).align = ((NI16) -3);
			(*typ).paddingAtEnd = ((NI16) -3);
		}
		LA220_: ;
	}
	break;
	default:
	{
		(*typ).size = IL64(-3);
		(*typ).align = ((NI16) -3);
		(*typ).paddingAtEnd = ((NI16) -3);
	}
	break;
	}
	popSafePoint();
	}
	else {
		popSafePoint();
	}
	{
		{
			if (!hasSize) goto LA234_;
			(*typ).size = revertSize;
		}
		LA234_: ;
		{
			if (!hasAlign) goto LA238_;
			(*typ).align = revertAlign;
		}
		LA238_: ;
		if (TM__PpBJsMJcrcWrpLTS6mci1g_173.status != 0) nimLeaveFinally();
	}
	if (TM__PpBJsMJcrcWrpLTS6mci1g_173.status != 0) reraiseException();
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(NI64, getSize__vCG1GF2Iu043oALVyuJfOw)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	NI64 result;
	result = (NI64)0;
	computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, typ);
	result = (*typ).size;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isUnsigned__YPjOkGV9axAnGR3UfLeWZ1g_8)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	result = (NIM_BOOL)0;
	T1_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(t, IL64(36134350135273744));
	result = ((*T1_).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 2) || (*T1_).kind >= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 40) && (*T1_).kind <= ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 44));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, takeType__0FGAKd3dm9aUGX9cs9aj1kraA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* arg) {
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		if (!((*arg).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 5))) goto LA3_;
		result = formal;
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T6_;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T10_;
		T6_ = (NIM_BOOL)0;
		T6_ = ((*formal).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 27) || (*formal).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 48) || (*formal).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24));
		if (!(T6_)) goto LA7_;
		T6_ = isEmptyContainer__YPjOkGV9axAnGR3UfLeWZ1g_4(arg);
		LA7_: ;
		if (!T6_) goto LA8_;
		T10_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T10_ = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(arg, 2064);
		a = copyType__4O4aYoscFPo2FRSh4rP9ayg(T10_, (*arg).owner, NIM_FALSE);
		asgnRef((void**) (&(*a).sons->data[((*arg).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16))]), (*formal).sons->data[((NI) 0)]);
		result = a;
	}
	goto LA1_;
	LA8_: ;
	{
		NIM_BOOL T12_;
		T12_ = (NIM_BOOL)0;
		T12_ = ((*formal).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18) || (*formal).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 19));
		if (!(T12_)) goto LA13_;
		T12_ = ((*arg).kind == (*formal).kind);
		LA13_: ;
		if (!T12_) goto LA14_;
		result = formal;
	}
	goto LA1_;
	LA14_: ;
	{
		result = arg;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTypeOrNil__3isNyHKb0U1OCnClmflXSg_2)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b, tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw flags) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		if (!(a == b)) goto LA3_;
		result = NIM_TRUE;
	}
	goto LA1_;
	LA3_: ;
	{
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = (a == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL));
			if (T8_) goto LA9_;
			T8_ = (b == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL));
			LA9_: ;
			if (!T8_) goto LA10_;
			result = NIM_FALSE;
		}
		goto LA6_;
		LA10_: ;
		{
			result = sameType__3isNyHKb0U1OCnClmflXSg(a, b, flags);
		}
		LA6_: ;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI64, getAlign__vCG1GF2Iu043oALVyuJfOw_2)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	NI64 result;
	result = (NI64)0;
	computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, typ);
	result = ((NI64) ((*typ).align));
	return result;
}
static N_INLINE(NIM_BOOL, contains__VOVNP3l9cKlKomHo2uVc1YAsystem)(tyObject_HSlice__vOYTm9cLQaRc5TUw9atOyHnA s, NF value) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = (s.a <= value);
	if (!(T1_)) goto LA2_;
	T1_ = (value <= s.b);
	LA2_: ;
	result = T1_;
	return result;
}
static N_INLINE(tyObject_HSlice__vOYTm9cLQaRc5TUw9atOyHnA, dotdot___lKGy2iCJ5YGE3BPCWzoXSwsystem)(NF a, NF b) {
	tyObject_HSlice__vOYTm9cLQaRc5TUw9atOyHnA result;
	nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__vOYTm9cLQaRc5TUw9atOyHnA));
	nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__vOYTm9cLQaRc5TUw9atOyHnA));
	result.a = a;
	result.b = b;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, floatRangeCheck__RTbq1U5r9aGXeN20T54YASg)(NF x, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 36) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 39):
	{
		result = NIM_TRUE;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 20):
	{
		NF T3_;
		NF T4_;
		tyObject_HSlice__vOYTm9cLQaRc5TUw9atOyHnA T5_;
		T3_ = (NF)0;
		T3_ = firstFloat__5WwccqVm6xApk9c8p9c1efRA(t);
		T4_ = (NF)0;
		T4_ = lastFloat__5WwccqVm6xApk9c8p9c1efRA_2(t);
		T5_ = dotdot___lKGy2iCJ5YGE3BPCWzoXSwsystem(T3_, T4_);
		result = contains__VOVNP3l9cKlKomHo2uVc1YAsystem(T5_, x);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23):
	{
		result = floatRangeCheck__RTbq1U5r9aGXeN20T54YASg(x, (*t).sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 8):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 60):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 55):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 52) ... ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 53):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T8_;
		T8_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T8_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		result = floatRangeCheck__RTbq1U5r9aGXeN20T54YASg(x, T8_);
	}
	break;
	default:
	{
		tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* T10_;
		NimStringDesc* T11_;
		T10_ = (tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw*)0;
		T10_ = newPartialConfigRef__YbeeoJLQnRQK2F8DAaXI8w_2();
		T11_ = (NimStringDesc*)0;
		T11_ = rawNewString((reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)) ? reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_))->Sup.len : 0) + 33);
appendString(T11_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_186));
appendString(T11_, reprEnum((NI)(*t).kind, (&NTI__9a3YiReNVD0IJHWFKgXRe9ag_)));
		internalErrorImpl__PTSwZ6HM9bGBf7vF9cnDmwVw(T10_, unknownLineInfo__Adg58D2FIbt5TWh9aavBqbg, T11_, TM__PpBJsMJcrcWrpLTS6mci1g_187);
		result = NIM_FALSE;
	}
	break;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, skipHiddenSubConv__BH9abOhPX8pH0DnEWlRxmlw_2)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* arg;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* dest;
		if (!((*n).kind == ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 59))) goto LA3_;
		formal = (*n).typ;
		result = (*n)._kind_6.sons->data[((NI) 1)];
		arg = (*result).typ;
		dest = takeType__0FGAKd3dm9aUGX9cs9aj1kraA(formal, arg);
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = (dest == arg);
			if (!(T7_)) goto LA8_;
			T7_ = !(((*formal).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 6)));
			LA8_: ;
			if (!T7_) goto LA9_;
			result = n;
		}
		goto LA5_;
		LA9_: ;
		{
			result = copyTree__Dsjo9bte8vGxzhtcSrsTyiQ(result);
			asgnRef((void**) (&(*result).typ), dest);
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		result = n;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ, equalParam__UVUcjjYt8uZoqss0vG6fXw)(tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* a, tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* b) {
	tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ result;
	result = (tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = sameTypeOrNil__3isNyHKb0U1OCnClmflXSg_2((*a).typ, (*b).typ, 4);
		if (!(T3_)) goto LA4_;
		T3_ = exprStructuralEquivalent__E1mnSzj2NONtG7h9cR3AuFA((*a).constraint, (*b).constraint, NIM_FALSE);
		LA4_: ;
		if (!T3_) goto LA5_;
		{
			if (!((*a).ast == (*b).ast)) goto LA9_;
			result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 1);
		}
		goto LA7_;
		LA9_: ;
		{
			NIM_BOOL T12_;
			T12_ = (NIM_BOOL)0;
			T12_ = !(((*a).ast == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
			if (!(T12_)) goto LA13_;
			T12_ = !(((*b).ast == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
			LA13_: ;
			if (!T12_) goto LA14_;
			{
				NIM_BOOL T18_;
				T18_ = (NIM_BOOL)0;
				T18_ = exprStructuralEquivalent__E1mnSzj2NONtG7h9cR3AuFA((*a).ast, (*b).ast, NIM_FALSE);
				if (!T18_) goto LA19_;
				result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 1);
			}
			goto LA16_;
			LA19_: ;
			{
				result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 2);
			}
			LA16_: ;
		}
		goto LA7_;
		LA14_: ;
		{
			if (!!(((*a).ast == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA23_;
			result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 1);
		}
		goto LA7_;
		LA23_: ;
		{
			if (!!(((*b).ast == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA26_;
			result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 2);
		}
		goto LA7_;
		LA26_: ;
		LA7_: ;
	}
	goto LA1_;
	LA5_: ;
	{
		result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 0);
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ, equalParams__rxsP2U5qp9atwRH9aUfmAquQ)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
	tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ result;
{	result = (tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ)0;
	result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 1);
	{
		NI T3_;
		NI T4_;
		T3_ = (NI)0;
		T3_ = len__P89cqdlERShb9alU3iC0yj8wast(a);
		T4_ = (NI)0;
		T4_ = len__P89cqdlERShb9alU3iC0yj8wast(b);
		if (!!((T3_ == T4_))) goto LA5_;
		result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 0);
	}
	goto LA1_;
	LA5_: ;
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__P89cqdlERShb9alU3iC0yj8wast(a);
			i_2 = ((NI) 1);
			{
				while (1) {
					tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* m;
					tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w* n;
					tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ T11_;
					if (!(i_2 < colontmp_)) goto LA10;
					i = i_2;
					m = (*(*a)._kind_6.sons->data[i])._kind_4.sym;
					n = (*(*b)._kind_6.sons->data[i])._kind_4.sym;
					T11_ = (tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ)0;
					T11_ = equalParam__UVUcjjYt8uZoqss0vG6fXw(m, n);
					switch (T11_) {
					case ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 0):
					{
						result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 0);
						goto BeforeRet_;
					}
					break;
					case ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 1):
					{
					}
					break;
					case ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 2):
					{
						result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 2);
					}
					break;
					}
					{
						if (!!(((*(*m).name).Sup.id == (*(*n).name).Sup.id))) goto LA17_;
						result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 0);
						goto BeforeRet_;
					}
					LA17_: ;
					i_2 += ((NI) 1);
				} LA10: ;
			}
		}
		{
			NIM_BOOL T21_;
			T21_ = (NIM_BOOL)0;
			T21_ = sameTypeOrNil__3isNyHKb0U1OCnClmflXSg_2((*a).typ, (*b).typ, 4);
			if (!!(T21_)) goto LA22_;
			{
				NIM_BOOL T26_;
				T26_ = (NIM_BOOL)0;
				T26_ = ((*a).typ == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL));
				if (T26_) goto LA27_;
				T26_ = ((*b).typ == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL));
				LA27_: ;
				if (!T26_) goto LA28_;
				result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 0);
			}
			goto LA24_;
			LA28_: ;
			{
				result = ((tyEnum_TParamsEquality__fvN026oaoXOuZ9ajGPibaYQ) 2);
			}
			LA24_: ;
		}
		LA22_: ;
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, skipHidden__BH9abOhPX8pH0DnEWlRxmlw_3)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		while (1) {
			switch ((*result).kind) {
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 58):
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 59):
			{
				{
					tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng T6_;
					tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng T7_;
					T6_ = (tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng)0;
					T6_ = classify__OP66kLszPi2spXXVeoE1Tg((*(*result)._kind_6.sons->data[((NI) 1)]).typ);
					T7_ = (tyEnum_OrdinalType__ZU6odCXXrXxl9axSbawmvng)0;
					T7_ = classify__OP66kLszPi2spXXVeoE1Tg((*result).typ);
					if (!(T6_ == T7_)) goto LA8_;
					result = (*result)._kind_6.sons->data[((NI) 1)];
				}
				goto LA4_;
				LA8_: ;
				{
					goto LA1;
				}
				LA4_: ;
			}
			break;
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 65):
			case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 64):
			{
				result = (*result)._kind_6.sons->data[((NI) 0)];
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, commonSuperclass__CFsXKWHnV1O9asJrtw08whA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* a, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* b) {
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x;
	tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg ancestors;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y;
{	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = sameObjectTypes__6sVmgh7vIWM9axOIPRliopQ(a, b);
		if (!T3_) goto LA4_;
		result = a;
		goto BeforeRet_;
	}
	LA4_: ;
	x = a;
	nimZeroMem((void*)(&ancestors), sizeof(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet__n8oDZMn19bEdodSnrBQB9a1Q((&ancestors));
	{
		while (1) {
			if (!!((x == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA7;
			x = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(x, IL64(36275087638268176));
			incl__jENnK9c9bPE73pKmo2vYjpqg((&ancestors), (*x).Sup.id);
			x = (*x).sons->data[((NI) 0)];
		} LA7: ;
	}
	y = b;
	{
		while (1) {
			tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
			if (!!((y == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA9;
			t = y;
			y = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(y, IL64(36275087638268176));
			{
				NIM_BOOL T12_;
				T12_ = (NIM_BOOL)0;
				T12_ = contains__R6uRTGpl30Ofaw4Ni3vawA((&ancestors), (*y).Sup.id);
				if (!T12_) goto LA13_;
				{
					if (!!(((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11)))) goto LA17_;
					t = y;
				}
				LA17_: ;
				result = t;
				goto BeforeRet_;
			}
			LA13_: ;
			y = (*y).sons->data[((NI) 0)];
		} LA9: ;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTyRef__YPjOkGV9axAnGR3UfLeWZ1g_9)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T3_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22));
	if (T1_) goto LA2_;
	T3_ = (NIM_BOOL)0;
	T3_ = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25));
	if (!(T3_)) goto LA4_;
	T3_ = ((*t).callConv == ((tyEnum_TCallingConvention__yjAJ8w0h1PBaSwSGJ3P7IA) 9));
	LA4_: ;
	T1_ = T3_;
	LA2_: ;
	result = T1_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsTyRef__IVXYI9cxSeivThgKCncHRnA_4)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = searchTypeFor__QA5oWYPirn9bgEvrXiCsgVg(typ, isTyRef__YPjOkGV9axAnGR3UfLeWZ1g_9);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isDefectException__YPjOkGV9axAnGR3UfLeWZ1g_10)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t_2;
{	result = (NIM_BOOL)0;
	t_2 = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(t, IL64(36275087638309136));
	{
		while (1) {
			if (!((*t_2).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA2;
			{
				NIM_BOOL T5_;
				NIM_BOOL T6_;
				NIM_BOOL T7_;
				T5_ = (NIM_BOOL)0;
				T6_ = (NIM_BOOL)0;
				T7_ = (NIM_BOOL)0;
				T7_ = !(((*t_2).sym == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
				if (!(T7_)) goto LA8_;
				T7_ = !(((*(*t_2).sym).owner == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
				LA8_: ;
				T6_ = T7_;
				if (!(T6_)) goto LA9_;
				T6_ = (((*(*(*t_2).sym).owner).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw) 15))&63U)))!=0);
				LA9_: ;
				T5_ = T6_;
				if (!(T5_)) goto LA10_;
				T5_ = eqStrings((*(*(*t_2).sym).name).s, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_188));
				LA10_: ;
				if (!T5_) goto LA11_;
				result = NIM_TRUE;
				goto BeforeRet_;
			}
			LA11_: ;
			{
				if (!((*t_2).sons->data[((NI) 0)] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA15_;
				goto LA1;
			}
			LA15_: ;
			t_2 = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*t_2).sons->data[((NI) 0)], IL64(36275087638309136));
		} LA2: ;
	} LA1: ;
	result = NIM_FALSE;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isSinkTypeForParam__YPjOkGV9axAnGR3UfLeWZ1g_11)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	result = (NIM_BOOL)0;
	T1_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(t, 2064);
	result = ((*T1_).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46) || (*T1_).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 45));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, baseOfDistinct__PfgI9ap7WOnsRfFV4znQ27w_4)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	{
		if (!((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13))) goto LA3_;
		result = (*t).sons->data[((NI) 0)];
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* parent;
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* it;
		result = copyType__4O4aYoscFPo2FRSh4rP9ayg(t, (*t).owner, NIM_FALSE);
		parent = ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL);
		it = result;
		{
			while (1) {
				if (!((*it).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 21) || (*it).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22) || (*it).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 45))) goto LA7;
				parent = it;
				it = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(it);
			} LA7: ;
		}
		{
			NIM_BOOL T10_;
			T10_ = (NIM_BOOL)0;
			T10_ = ((*it).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13));
			if (!(T10_)) goto LA11_;
			T10_ = !((parent == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)));
			LA11_: ;
			if (!T10_) goto LA12_;
			asgnRef((void**) (&(*parent).sons->data[((NI) 0)]), (*it).sons->data[((NI) 0)]);
		}
		LA12_: ;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, typeMismatch__1xxyFIws27lai2cG4n31Ow)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* formal, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* actual) {
	{
		NIM_BOOL T3_;
		NimStringDesc* named;
		NimStringDesc* desc;
		NimStringDesc* x;
		NimStringDesc* msg;
		NimStringDesc* T13_;
		NimStringDesc* T14_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*formal).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50)));
		if (!(T3_)) goto LA4_;
		T3_ = !(((*actual).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 50)));
		LA4_: ;
		if (!T3_) goto LA5_;
		named = typeToString__QlvraUan7WbHowhAbvDvdA(formal, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		desc = typeToString__QlvraUan7WbHowhAbvDvdA(formal, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 1));
		{
			if (!eqStrings(named, desc)) goto LA9_;
			x = named;
		}
		goto LA7_;
		LA9_: ;
		{
			NimStringDesc* T12_;
			T12_ = (NimStringDesc*)0;
			T12_ = rawNewString((named ? named->Sup.len : 0) + (desc ? desc->Sup.len : 0) + 3);
appendString(T12_, named);
appendString(T12_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_189));
appendString(T12_, desc);
			x = T12_;
		}
		LA7_: ;
		T13_ = (NimStringDesc*)0;
		T14_ = (NimStringDesc*)0;
		T14_ = typeToString__QlvraUan7WbHowhAbvDvdA(actual, ((tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw) 0));
		T13_ = rawNewString((T14_ ? T14_->Sup.len : 0) + (x ? x->Sup.len : 0) + 37);
appendString(T13_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_190));
appendString(T13_, T14_);
appendString(T13_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_191));
appendString(T13_, x);
appendString(T13_, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_192));
		msg = T13_;
		{
			NIM_BOOL T17_;
			tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ T21_;
			T17_ = (NIM_BOOL)0;
			T17_ = ((*formal).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25));
			if (!(T17_)) goto LA18_;
			T17_ = ((*actual).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 25));
			LA18_: ;
			if (!T17_) goto LA19_;
			T21_ = (tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ)0;
			T21_ = compatibleEffects__jMDzK5tLgCQpWKRW9azac5w(formal, actual);
			switch (T21_) {
			case ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 0):
			{
			}
			break;
			case ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 1):
			{
				msg = resizeString(msg, 22);
appendString(msg, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_193));
			}
			break;
			case ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 2):
			{
				msg = resizeString(msg, 33);
appendString(msg, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_194));
			}
			break;
			case ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 3):
			{
				msg = resizeString(msg, 20);
appendString(msg, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_195));
			}
			break;
			case ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 4):
			{
				msg = resizeString(msg, 33);
appendString(msg, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_196));
			}
			break;
			case ((tyEnum_EffectsCompat__xpkKZ2yw9a7eyibhzepiEFQ) 5):
			{
				msg = resizeString(msg, 19);
appendString(msg, ((NimStringDesc*) &TM__PpBJsMJcrcWrpLTS6mci1g_197));
			}
			break;
			}
		}
		LA19_: ;
		liMessage__Q6JNH4uRwLyZrj0dJakHew(conf, info, ((tyEnum_TMsgKind__29cbg2fC1z5iM1PAI28kR5w) 10), msg, ((tyEnum_TErrorHandling__q4fXoCN3Xdcm6SS9cUkWkWw) 0), TM__PpBJsMJcrcWrpLTS6mci1g_198, NIM_FALSE);
	}
	LA5_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*, skipConvTakeType__BH9abOhPX8pH0DnEWlRxmlw_4)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*)0;
	result = skipConv__BH9abOhPX8pH0DnEWlRxmlw(n);
	asgnRef((void**) (&(*result).typ), (*n).typ);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTupleRecursive__jUzNoQ9aEVNwWSPqp1B69aKg)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* cycleDetector) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		if (!(t == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA3_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = containsOrIncl__VFt0uM7bgfJ5age9alOsU9cg(cycleDetector, (*t).Sup.id);
		if (!T7_) goto LA8_;
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA8_: ;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg cycleDetectorCopy;
		nimZeroMem((void*)(&cycleDetectorCopy), sizeof(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg));
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA13;
					i = i_2;
					assign__9aeoXSYLtfdHDeDWcO9bHVbg((&cycleDetectorCopy), (&(*cycleDetector)));
					{
						NIM_BOOL T16_;
						T16_ = (NIM_BOOL)0;
						T16_ = isTupleRecursive__jUzNoQ9aEVNwWSPqp1B69aKg((*t).sons->data[i], (&cycleDetectorCopy));
						if (!T16_) goto LA17_;
						result = NIM_TRUE;
						goto BeforeRet_;
					}
					LA17_: ;
					i_2 += ((NI) 1);
				} LA13: ;
			}
		}
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 22):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 21):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 23):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 47):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 49):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T20_;
		T20_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T20_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		result = isTupleRecursive__jUzNoQ9aEVNwWSPqp1B69aKg(T20_, cycleDetector);
		goto BeforeRet_;
	}
	break;
	default:
	{
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTupleRecursive__YPjOkGV9axAnGR3UfLeWZ1g_12)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg cycleDetector;
	result = (NIM_BOOL)0;
	nimZeroMem((void*)(&cycleDetector), sizeof(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet__n8oDZMn19bEdodSnrBQB9a1Q((&cycleDetector));
	result = isTupleRecursive__jUzNoQ9aEVNwWSPqp1B69aKg(t, (&cycleDetector));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI64, computeSize__vCG1GF2Iu043oALVyuJfOw_3)(tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	NI64 result;
	result = (NI64)0;
	computeSizeAlign__Nur2IEN9ayDXYT9aVdBUPsYQ(conf, typ);
	result = (*typ).size;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isException__YPjOkGV9axAnGR3UfLeWZ1g_13)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t_2;
{	result = (NIM_BOOL)0;
	t_2 = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(t, IL64(36134350135273744));
	{
		while (1) {
			if (!((*t_2).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17))) goto LA2;
			{
				NIM_BOOL T5_;
				T5_ = (NIM_BOOL)0;
				T5_ = !(((*t_2).sym == ((tyObject_TSym__JpsEh5i1AcKChGYbg7aV4w*) NIM_NIL)));
				if (!(T5_)) goto LA6_;
				T5_ = ((*(*t_2).sym).magic == ((tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg) 264));
				LA6_: ;
				if (!T5_) goto LA7_;
				result = NIM_TRUE;
				goto BeforeRet_;
			}
			LA7_: ;
			{
				if (!((*t_2).sons->data[((NI) 0)] == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA11_;
				goto LA1;
			}
			LA11_: ;
			t_2 = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg((*t_2).sons->data[((NI) 0)], IL64(36275087638309136));
		} LA2: ;
	} LA1: ;
	result = NIM_FALSE;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, safeSkipTypes__qgwlffIIb2pFkSZek4igDA)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag kinds) {
	tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg seen;
	result = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = t;
	nimZeroMem((void*)(&seen), sizeof(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet__n8oDZMn19bEdodSnrBQB9a1Q((&seen));
	{
		while (1) {
			NIM_BOOL T3_;
			NIM_BOOL T5_;
			T3_ = (NIM_BOOL)0;
			T3_ = ((kinds &((NU64)1<<((NU)((*result).kind)&63U)))!=0);
			if (!(T3_)) goto LA4_;
			T5_ = (NIM_BOOL)0;
			T5_ = containsOrIncl__VFt0uM7bgfJ5age9alOsU9cg((&seen), (*result).Sup.id);
			T3_ = !(T5_);
			LA4_: ;
			if (!T3_) goto LA2;
			result = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(result);
		} LA2: ;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw, analyseObjectWithTypeFieldAux__ItqOgoANlwBn1FbcXiqfQQ)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg* marker) {
	tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw result;
	tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw res;
{	result = (tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw)0;
	res = (tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw)0;
	result = ((tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw) 0);
	{
		if (!(t == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 17):
	{
		{
			if (!!(((*t).n == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA8_;
			{
				NIM_BOOL T12_;
				T12_ = (NIM_BOOL)0;
				T12_ = searchTypeNodeForAux__XSB8G9curVftbRhNQYm7Dug((*t).n, isObjectWithTypeFieldPredicate__YPjOkGV9axAnGR3UfLeWZ1g_7, marker);
				if (!T12_) goto LA13_;
				result = ((tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw) 2);
				goto BeforeRet_;
			}
			LA13_: ;
		}
		LA8_: ;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			i_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x;
					if (!(i_2 < colontmp_)) goto LA17;
					i = i_2;
					x = (*t).sons->data[i];
					{
						if (!!((x == ((tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*) NIM_NIL)))) goto LA20_;
						x = skipTypes__zsqmUNR5OZrTUna0Y9bdu9bg(x, IL64(36275087638268176));
					}
					LA20_: ;
					res = analyseObjectWithTypeFieldAux__ItqOgoANlwBn1FbcXiqfQQ(x, marker);
					{
						if (!(res == ((tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw) 2))) goto LA24_;
						result = ((tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw) 2);
						goto BeforeRet_;
					}
					LA24_: ;
					{
						if (!(res == ((tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw) 1))) goto LA28_;
						result = ((tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw) 1);
					}
					LA28_: ;
					i_2 += ((NI) 1);
				} LA17: ;
			}
		}
		{
			if (!(result == ((tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw) 0))) goto LA32_;
			{
				NIM_BOOL T36_;
				T36_ = (NIM_BOOL)0;
				T36_ = isObjectWithTypeFieldPredicate__YPjOkGV9axAnGR3UfLeWZ1g_7(t);
				if (!T36_) goto LA37_;
				result = ((tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw) 1);
			}
			LA37_: ;
		}
		LA32_: ;
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 11):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 13):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 4):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 46):
	{
		tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T40_;
		T40_ = (tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T40_ = lastSon__Bdq9aiV9buvJtPvmOc0OR5JQ(t);
		result = analyseObjectWithTypeFieldAux__ItqOgoANlwBn1FbcXiqfQQ(T40_, marker);
	}
	break;
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 16):
	case ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		{
			NI i_3;
			NI colontmp__2;
			NI i_4;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len__5mJADrRYkP3r9auuiuDZN9cQast(t);
			i_4 = ((NI) 0);
			{
				while (1) {
					if (!(i_4 < colontmp__2)) goto LA44;
					i_3 = i_4;
					res = analyseObjectWithTypeFieldAux__ItqOgoANlwBn1FbcXiqfQQ((*t).sons->data[i_3], marker);
					{
						if (!!((res == ((tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw) 0)))) goto LA47_;
						result = ((tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw) 2);
						goto BeforeRet_;
					}
					LA47_: ;
					i_4 += ((NI) 1);
				} LA44: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw, analyseObjectWithTypeField__Pldxz9alDV6810oJzh2Apog)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw result;
	tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg marker;
	result = (tyEnum_TTypeFieldResult__aBXTX9cIKT9b0yNlXSu9aPT9cw)0;
	nimZeroMem((void*)(&marker), sizeof(tyObject_IntSet__PQrmFm4BXFkFSVOUl1ojSg));
	initIntSet__n8oDZMn19bEdodSnrBQB9a1Q((&marker));
	result = analyseObjectWithTypeFieldAux__ItqOgoANlwBn1FbcXiqfQQ(t, (&marker));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, addTypeHeader__EyWxAbFrjBhTQTF47MkGkA)(NimStringDesc** result, tyObject_ConfigRefcolonObjectType___LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw prefer, NIM_BOOL getDeclarationPath) {
	NimStringDesc* T1_;
	T1_ = (NimStringDesc*)0;
	T1_ = typeToString__QlvraUan7WbHowhAbvDvdA(typ, prefer);
	unsureAsgnRef((void**) (&(*result)), resizeString((*result), (T1_ ? T1_->Sup.len : 0) + 0));
appendString((*result), T1_);
	{
		if (!getDeclarationPath) goto LA4_;
		addDeclaredLoc__5DZFQoJWZrAjxgNR8JcoQw(result, conf, (*typ).sym);
	}
	LA4_: ;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isHiddenPointer__YPjOkGV9axAnGR3UfLeWZ1g_14)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 28) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 24) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 27) || (*t).kind == ((tyEnum_TTypeKind__9a3YiReNVD0IJHWFKgXRe9ag) 48));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsHiddenPointer__IVXYI9cxSeivThgKCncHRnA_5)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = searchTypeFor__QA5oWYPirn9bgEvrXiCsgVg(typ, isHiddenPointer__YPjOkGV9axAnGR3UfLeWZ1g_14);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameBackendType__n70Tq9c0HITdaYm9cT8YLryw)(tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* x, tyObject_TType__v9ae2Dpu13OW2ZJ2U9bNMd9cQ* y) {
	NIM_BOOL result;
	tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg c;
	result = (NIM_BOOL)0;
	nimZeroMem((void*)(&c), sizeof(tyObject_TSameTypeClosure__UjPoGeLOOcdElE05vDOvTg));
	initSameTypeClosure__YC853CO8ac9bG32yuRvSqxQ((&c));
	c.flags |= ((NU8)1)<<((((tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw) 0)) & 7);
	c.cmp = ((tyEnum_TDistinctCompare__9bNKHGs63atuMFXnAleTveg) 1);
	result = sameTypeAux__RrSHrlmHOMAx2hdJYkFlvw(x, y, (&c));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_typesDatInit000)(void) {

/* section: NIM_merge_TYPE_INIT1 */
static TNimNode* TM__PpBJsMJcrcWrpLTS6mci1g_2_2[2];
static TNimNode* TM__PpBJsMJcrcWrpLTS6mci1g_3_8[8];
NI TM__PpBJsMJcrcWrpLTS6mci1g_5;
static char* NIM_CONST TM__PpBJsMJcrcWrpLTS6mci1g_4[8] = {
"preferName", 
"preferDesc", 
"preferExported", 
"preferModuleInfo", 
"preferGenericArg", 
"preferTypeName", 
"preferResolved", 
"preferMixed"};
static TNimNode TM__PpBJsMJcrcWrpLTS6mci1g_0[13];

/* section: NIM_merge_TYPE_INIT3 */
NTI__aFpjIZ5GhrcXv4WiFpqyxw_.size = sizeof(tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw);
NTI__aFpjIZ5GhrcXv4WiFpqyxw_.align = NIM_ALIGNOF(tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw);
NTI__aFpjIZ5GhrcXv4WiFpqyxw_.kind = 17;
NTI__aFpjIZ5GhrcXv4WiFpqyxw_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
NTI__aFpjIZ5GhrcXv4WiFpqyxw_.flags = 1;
TM__PpBJsMJcrcWrpLTS6mci1g_2_2[0] = &TM__PpBJsMJcrcWrpLTS6mci1g_0[1];
TM__PpBJsMJcrcWrpLTS6mci1g_0[1].kind = 1;
TM__PpBJsMJcrcWrpLTS6mci1g_0[1].offset = offsetof(tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw, colonstate_);
TM__PpBJsMJcrcWrpLTS6mci1g_0[1].typ = (&NTI__xHTZrq9aYs6boc9bCba0JbpQ_);
TM__PpBJsMJcrcWrpLTS6mci1g_0[1].name = ":state";
TM__PpBJsMJcrcWrpLTS6mci1g_2_2[1] = &TM__PpBJsMJcrcWrpLTS6mci1g_0[2];
NTI__tnd4qt9c4xddV8oKV5zyusw_.size = sizeof(tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw);
NTI__tnd4qt9c4xddV8oKV5zyusw_.align = NIM_ALIGNOF(tyEnum_TPreferedDesc__tnd4qt9c4xddV8oKV5zyusw);
NTI__tnd4qt9c4xddV8oKV5zyusw_.kind = 14;
NTI__tnd4qt9c4xddV8oKV5zyusw_.base = 0;
NTI__tnd4qt9c4xddV8oKV5zyusw_.flags = 3;
for (TM__PpBJsMJcrcWrpLTS6mci1g_5 = 0; TM__PpBJsMJcrcWrpLTS6mci1g_5 < 8; TM__PpBJsMJcrcWrpLTS6mci1g_5++) {
TM__PpBJsMJcrcWrpLTS6mci1g_0[TM__PpBJsMJcrcWrpLTS6mci1g_5+3].kind = 1;
TM__PpBJsMJcrcWrpLTS6mci1g_0[TM__PpBJsMJcrcWrpLTS6mci1g_5+3].offset = TM__PpBJsMJcrcWrpLTS6mci1g_5;
TM__PpBJsMJcrcWrpLTS6mci1g_0[TM__PpBJsMJcrcWrpLTS6mci1g_5+3].name = TM__PpBJsMJcrcWrpLTS6mci1g_4[TM__PpBJsMJcrcWrpLTS6mci1g_5];
TM__PpBJsMJcrcWrpLTS6mci1g_3_8[TM__PpBJsMJcrcWrpLTS6mci1g_5] = &TM__PpBJsMJcrcWrpLTS6mci1g_0[TM__PpBJsMJcrcWrpLTS6mci1g_5+3];
}
TM__PpBJsMJcrcWrpLTS6mci1g_0[11].len = 8; TM__PpBJsMJcrcWrpLTS6mci1g_0[11].kind = 2; TM__PpBJsMJcrcWrpLTS6mci1g_0[11].sons = &TM__PpBJsMJcrcWrpLTS6mci1g_3_8[0];
NTI__tnd4qt9c4xddV8oKV5zyusw_.node = &TM__PpBJsMJcrcWrpLTS6mci1g_0[11];
TM__PpBJsMJcrcWrpLTS6mci1g_0[2].kind = 1;
TM__PpBJsMJcrcWrpLTS6mci1g_0[2].offset = offsetof(tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw, preferToplevel1);
TM__PpBJsMJcrcWrpLTS6mci1g_0[2].typ = (&NTI__tnd4qt9c4xddV8oKV5zyusw_);
TM__PpBJsMJcrcWrpLTS6mci1g_0[2].name = "preferToplevel1";
TM__PpBJsMJcrcWrpLTS6mci1g_0[0].len = 2; TM__PpBJsMJcrcWrpLTS6mci1g_0[0].kind = 2; TM__PpBJsMJcrcWrpLTS6mci1g_0[0].sons = &TM__PpBJsMJcrcWrpLTS6mci1g_2_2[0];
NTI__aFpjIZ5GhrcXv4WiFpqyxw_.node = &TM__PpBJsMJcrcWrpLTS6mci1g_0[0];
NTI__ik3gfZ9aJJHPxASsunXJrEA_.size = sizeof(tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw*);
NTI__ik3gfZ9aJJHPxASsunXJrEA_.align = NIM_ALIGNOF(tyObject_Env_typesdotnim_typeToString___aFpjIZ5GhrcXv4WiFpqyxw*);
NTI__ik3gfZ9aJJHPxASsunXJrEA_.kind = 22;
NTI__ik3gfZ9aJJHPxASsunXJrEA_.base = (&NTI__aFpjIZ5GhrcXv4WiFpqyxw_);
NTI__ik3gfZ9aJJHPxASsunXJrEA_.marker = Marker_tyRef__ik3gfZ9aJJHPxASsunXJrEA;
NTI__8Np6tlClE5az1CyqZdN19bQ_.size = sizeof(tySequence__8Np6tlClE5az1CyqZdN19bQ*);
NTI__8Np6tlClE5az1CyqZdN19bQ_.align = NIM_ALIGNOF(tySequence__8Np6tlClE5az1CyqZdN19bQ*);
NTI__8Np6tlClE5az1CyqZdN19bQ_.kind = 24;
NTI__8Np6tlClE5az1CyqZdN19bQ_.base = (&NTI__1v9bKyksXWMsm0vNwmZ4EuQ_);
NTI__8Np6tlClE5az1CyqZdN19bQ_.flags = 2;
NTI__8Np6tlClE5az1CyqZdN19bQ_.marker = Marker_tySequence__8Np6tlClE5az1CyqZdN19bQ;
NTI__eSlcgGR6dDg1zp0Mnw4yVA_.size = sizeof(tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA);
NTI__eSlcgGR6dDg1zp0Mnw4yVA_.align = NIM_ALIGNOF(tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA);
NTI__eSlcgGR6dDg1zp0Mnw4yVA_.kind = 17;
NTI__eSlcgGR6dDg1zp0Mnw4yVA_.base = (&NTI__yoNlBGx0D2tRizIdhQuENw_);
TM__PpBJsMJcrcWrpLTS6mci1g_0[12].len = 0; TM__PpBJsMJcrcWrpLTS6mci1g_0[12].kind = 2;
NTI__eSlcgGR6dDg1zp0Mnw4yVA_.node = &TM__PpBJsMJcrcWrpLTS6mci1g_0[12];
NTI__SFgbIvdx8bC9cxnXgi8Zn1A_.size = sizeof(tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA*);
NTI__SFgbIvdx8bC9cxnXgi8Zn1A_.align = NIM_ALIGNOF(tyObject_IllegalTypeRecursionError__eSlcgGR6dDg1zp0Mnw4yVA*);
NTI__SFgbIvdx8bC9cxnXgi8Zn1A_.kind = 22;
NTI__SFgbIvdx8bC9cxnXgi8Zn1A_.base = (&NTI__eSlcgGR6dDg1zp0Mnw4yVA_);
NTI__SFgbIvdx8bC9cxnXgi8Zn1A_.marker = Marker_tyRef__SFgbIvdx8bC9cxnXgi8Zn1A;
}

