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

#include "nimbase.h"
#include <setjmp.h>
#include <string.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
typedef struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw;
typedef struct tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw;
typedef struct tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
typedef struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w;
typedef struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA;
typedef struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ;
typedef struct tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence_Ef05srmQTDulnBdXR4Ja6Q tySequence_Ef05srmQTDulnBdXR4Ja6Q;
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_TLib_NBMxlJ6g3utqUlplqTTHkA tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA;
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_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw;
typedef struct Exception Exception;
typedef struct tySequence_uB9b75OUPRENsBAu4AnoePA tySequence_uB9b75OUPRENsBAu4AnoePA;
typedef struct TSafePoint TSafePoint;
typedef struct tyTuple_zwpS6d6iewrdlBSTNFoyVA tyTuple_zwpS6d6iewrdlBSTNFoyVA;
typedef struct tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA;
typedef struct tyObject_StackTraceEntry_oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry_oLyohQ7O2XOvGnflOss8EA;
struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q {
NU16 line;
NI16 col;
NI32 fileIndex;
};
typedef NU32 tySet_tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg;
typedef NU8 tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw;
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
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;
} S1;
struct {NF floatVal;
} S2;
struct {NimStringDesc* strVal;
} S3;
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
} S4;
struct {tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
} S5;
struct {tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
} S6;
} _Ukind;
NimStringDesc* comment;
};
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;
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_TIdObj_iIXPrEsiKHiioLj0HSkQhA {
  RootObj Sup;
NI id;
};
typedef NU8 tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA;
typedef NU64 tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
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;
tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA* dup;
};
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;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* destructor;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* deepCopy;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* assignment;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sink;
tySequence_MvZmat48bhe9b6x9aUD58D5Q* methods;
NI64 size;
NI16 align;
NI16 lockLevel;
tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeInst;
};
typedef NU16 tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg;
typedef NU8 tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw;
typedef NU32 tySet_tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg;
struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA {
NI counter;
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* data;
};
typedef NU64 tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw;
struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind;
union{
struct {tySequence_Ef05srmQTDulnBdXR4Ja6Q* typeInstCache;
} S1;
struct {tySequence_DXS6mEo7PVUFJkirsQ9bNQA* procInstCache;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* gcUnsafetyReason;
} S2;
struct {tySequence_DXS6mEo7PVUFJkirsQ9bNQA* usedGenerics;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tab;
} S3;
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* guard;
NI bitsize;
} S4;
} _Ukind;
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;
};
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_SiRwrEKZdLgxqz9a9aoVBglg[512];
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_SiRwrEKZdLgxqz9a9aoVBglg 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_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
struct Exception {
  RootObj Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
tySequence_uB9b75OUPRENsBAu4AnoePA* trace;
NU raise_id;
Exception* up;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClP_0) (Exception* e, void* ClE_0);
void* ClE_0;
} tyProc_NT9bSe2DDkjdtx7j9aov2Z6g;
struct TSafePoint {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
tyProc_NT9bSe2DDkjdtx7j9aov2Z6g raiseAction;
};
typedef NU8 tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct tyTuple_zwpS6d6iewrdlBSTNFoyVA {
NI Field0;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* Field1;
};
struct tyObject_StackTraceEntry_oLyohQ7O2XOvGnflOss8EA {
NCSTRING procname;
NI line;
NCSTRING filename;
};
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_uB9b75OUPRENsBAu4AnoePA {
  TGenericSeq Sup;
  tyObject_StackTraceEntry_oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NIM_BOOL inst, NIM_BOOL allowRecursionX);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, atomicTypeX_sbpN4OVsmhDF9bIGxmmmstw)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newSymNode_UWZXukHA5As9aCftRHbafBg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, atomicTypeX_ERjisfP9biCKlRzOH3GEuRw)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, NimStringDesc* name, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newSym_ZQfOwiQo63qLga19cuF5r9cQ)(tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw symKind, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* name, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tySet_tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg options);
N_LIB_PRIVATE N_NIMCALL(tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*, getIdent_uDz5mcDPddYz1vXwkXTNiQ)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* ic, NimStringDesc* identifier);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr);
static N_INLINE(void, rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_2system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT_fCDI7oO1NNVXXURtxSzsRw)(tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(void, add_gCCf68XrWL79bKes6htzFjQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIdentNode_mj7QetSP2JbYkbT6xy0EJA)(tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* src);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, base_BFFuB9cFDZ89c6QWZqEFAtdA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(NI, len_SWFNCiWYB89bTUPh5KptkvA_2)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lastSon_ab52xel9cFebv9am0xV04xXA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, NimStringDesc* name, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NIM_BOOL inst);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newType_dQhKkL6uAkw83dy6l4d7iQ)(tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeI_I7fH85CUcZMasoPRKxPsPg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
static N_INLINE(NI, len_CdME9baJhvveuPEDZE9bXoxAsigmatch)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, objectNode_AHGzaNMYbGutvMVBddUSng)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, copyNode_lz8T1F9c0YwEOpUnrAUYgjg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* src);
static N_INLINE(NI, safeLen_CdME9baJhvveuPEDZE9bXoxArenderer)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, slash__lXoMhn1ZYc9cAJa9bfA61msg)(NimStringDesc* head, NimStringDesc* tail);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosparentDir)(NimStringDesc* path);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, toFullPath_tdNdBP9cVqODPZCeXYb1GvA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, NI32 fileIdx);
static N_INLINE(NIM_BOOL, fileExists_yTPrfdEKg9cKCeSFUA6popQoptions)(NimStringDesc* filename);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, findFile_FW3YyNTkDpRLYCzoCgbSIQ)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, NimStringDesc* f, NIM_BOOL suppressStdlib);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readFile_T9cm5LIRX2tKEH9aREBZ8A0w)(NimStringDesc* filename);
N_LIB_PRIVATE N_NIMCALL(void, appendToModule_ZO6kFegrIXe9bUOHAHOb9cIA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNode_sa9bwmR1oPRYm27rlMD66CQ)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newStrNode_8GaTnuPqpzGLNcerzDOURQ)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NimStringDesc* strVal);
static N_INLINE(void, popSafePoint)(void);
N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass);
static N_INLINE(Exception*, getCurrentException)(void);
N_LIB_PRIVATE N_NIMCALL(void, localError_NF6kBGchnhQYPbCedyefVA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* arg);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copyMem_fPlwH3r9agN9aEHB6yCPMh0wsystem)(void* dest, void* source, NI size);
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
static N_INLINE(void, popCurrentException)(void);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef_9cAA5YuQAAC3MVbnGeV86swsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, decRef_MV4BBk6J1qu70IbBxwEn4wsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_NIMCALL(void, reraiseException)(void);
extern tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
extern TSafePoint* excHandler_rqLlY5bs9atDw2OXYqJEn5g;
extern TNimType NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_;
extern TNimType NTI_iLZrPn9anoh9ad1MmO0RczFw_;
extern Exception* currException_9bVPeDJlYTi9bQApZpfH8wjg;
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_2, "none", 4);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_3, "bool", 4);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_4, "char", 4);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_5, "nil", 3);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_6, "expr", 4);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_7, "stmt", 4);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_8, "void", 4);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_9, "empty", 5);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_10, "array", 5);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_11, "..", 2);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_12, "typeDesc", 8);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_13, "distinct", 8);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_14, "tuple", 5);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_15, "set", 3);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_16, "ptr", 3);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_17, "ref", 3);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_18, "var", 3);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_19, "lent", 4);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_20, "sink", 4);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_21, "seq", 3);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_22, "opt", 3);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_23, "proc", 4);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_24, "openArray", 9);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_25, "range", 5);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_26, "pointer", 7);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_27, "string", 6);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_28, "cstring", 7);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_29, "int", 3);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_30, "int8", 4);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_31, "int16", 5);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_32, "int32", 5);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_33, "int64", 5);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_34, "float", 5);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_35, "float32", 7);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_36, "float64", 7);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_37, "float128", 8);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_38, "uint", 4);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_39, "uint8", 5);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_40, "uint16", 6);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_41, "uint32", 6);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_42, "uint64", 6);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_43, "varargs", 7);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_44, "error", 5);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_45, "builtinTypeClass", 16);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_46, "concept", 7);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_47, "compositeTypeClass", 18);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_48, "and", 3);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_49, "or", 2);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_50, "not", 3);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_51, "anything", 8);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_52, "static", 6);
STRING_LITERAL(TM_gLSXNlwmnHPzTIXzvpQGfw_54, "cannot open file: ", 18);

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, atomicTypeX_sbpN4OVsmhDF9bIGxmmmstw)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newSymNode_UWZXukHA5As9aCftRHbafBg(s);
	(*result).info = info;
	return result;
}

static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr) {
	tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* result;
	result = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	result = ((tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*) ((NI)((NU32)(((NI) (ptrdiff_t) (usr))) - (NU32)(((NI)sizeof(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g))))));
	return result;
}

static N_INLINE(void, rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_2system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c) {
	addZCT_fCDI7oO1NNVXXURtxSzsRw((&gch_IcYaEuuWivYAS86vFMTS3Q.zct), c);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c;
		if (!!((src == NIM_NIL))) goto LA3_;
		c = usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem(src);
		(*c).refcount += ((NI) 8);
	}
	LA3_: ;
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c_2;
		if (!!(((*dest) == NIM_NIL))) goto LA7_;
		c_2 = usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem((*dest));
		{
			(*c_2).refcount -= ((NI) 8);
			if (!((NU32)((*c_2).refcount) < (NU32)(((NI) 8)))) goto LA11_;
			rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_2system(c_2);
		}
		LA11_: ;
	}
	LA7_: ;
	(*dest) = src;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, atomicTypeX_ERjisfP9biCKlRzOH3GEuRw)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, NimStringDesc* name, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ(cache, name);
	sym = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 7), T1_, (*t).owner, info, 0);
	(*sym).magic = m;
	asgnRefNoCycle((void**) (&(*sym).typ), t);
	result = newSymNode_UWZXukHA5As9aCftRHbafBg(sym);
	asgnRefNoCycle((void**) (&(*result).typ), t);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, NimStringDesc* name, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NIM_BOOL inst) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T7_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!((*t).n == 0)) goto LA4_;
		T1_ = info;
	}
	goto LA2_;
	LA4_: ;
	{
		T1_ = (*(*t).n).info;
	}
	LA2_: ;
	result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), T1_, t);
	T7_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T7_ = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, name, m, t, info);
	add_gCCf68XrWL79bKes6htzFjQ(result, T7_);
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
		i_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA10;
				i = i_2;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* void_1;
					if (!((*t).sons->data[i] == NIM_NIL)) goto LA13_;
					void_1 = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_8), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 181), t, info);
					asgnRefNoCycle((void**) (&(*void_1).typ), newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63), (*t).owner));
					add_gCCf68XrWL79bKes6htzFjQ(result, void_1);
				}
				goto LA11_;
				LA13_: ;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T16_;
					T16_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T16_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[i], info, inst, NIM_FALSE);
					add_gCCf68XrWL79bKes6htzFjQ(result, T16_);
				}
				LA11_: ;
				i_2 += ((NI) 1);
			} LA10: ;
		}
	}
	return result;
}

static N_INLINE(NI, len_CdME9baJhvveuPEDZE9bXoxAsigmatch)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	NI T1_;
	result = (NI)0;
	T1_ = ((*n)._Ukind.S6.sons ? (*n)._Ukind.S6.sons->Sup.len : 0);
	result = T1_;
	return result;
}

static N_INLINE(NI, safeLen_CdME9baJhvveuPEDZE9bXoxArenderer)(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_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, objectNode_AHGzaNMYbGutvMVBddUSng)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
		if (!((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA3_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35), (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(result, n);
		T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*(*n)._Ukind.S4.sym).typ, (*n).info, NIM_TRUE, NIM_FALSE);
		add_gCCf68XrWL79bKes6htzFjQ(result, T5_);
		T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(result, T6_);
	}
	goto LA1_;
	LA3_: ;
	{
		result = copyNode_lz8T1F9c0YwEOpUnrAUYgjg(n);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
					if (!(i_2 < colontmp_)) goto LA10;
					i = i_2;
					T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T11_ = objectNode_AHGzaNMYbGutvMVBddUSng(cache, (*n)._Ukind.S6.sons->data[i]);
					add_gCCf68XrWL79bKes6htzFjQ(result, T11_);
					i_2 += ((NI) 1);
				} LA10: ;
			}
		}
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NIM_BOOL inst, NIM_BOOL allowRecursionX) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NIM_BOOL allowRecursion;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	allowRecursion = allowRecursionX;
	{
		if (!inst) goto LA3_;
		{
			if (!!(((*t).sym == NIM_NIL))) goto LA7_;
			{
				if (!!(allowRecursion)) goto LA11_;
				result = atomicTypeX_sbpN4OVsmhDF9bIGxmmmstw((*t).sym, info);
				goto BeforeRet_;
			}
			LA11_: ;
		}
		LA7_: ;
	}
	LA3_: ;
	switch ((*t).kind) {
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 0):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_2), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_3), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 198), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 2):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_4), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 199), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_5), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 205), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 6):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_6), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 206), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_7), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 207), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_8), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 181), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 3):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_9), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16):
	{
		tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T22_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T28_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T47_;
		{
			if (!((*t).n == 0)) goto LA25_;
			T22_ = info;
		}
		goto LA23_;
		LA25_: ;
		{
			T22_ = (*(*t).n).info;
		}
		LA23_: ;
		result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), T22_, t);
		T28_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T28_ = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_10), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 170), t, info);
		add_gCCf68XrWL79bKes6htzFjQ(result, T28_);
		{
			NIM_BOOL T31_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* rng;
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T35_;
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T41_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T42_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T43_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T44_;
			T31_ = (NIM_BOOL)0;
			T31_ = inst;
			if (!(T31_)) goto LA32_;
			T31_ = ((*(*t).sons->data[((NI) 0)]).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20));
			LA32_: ;
			if (!T31_) goto LA33_;
			{
				if (!((*t).n == 0)) goto LA38_;
				T35_ = info;
			}
			goto LA36_;
			LA38_: ;
			{
				T35_ = (*(*t).n).info;
			}
			LA36_: ;
			rng = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29), T35_, t);
			T41_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T41_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_11));
			T42_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T42_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T41_, info);
			add_gCCf68XrWL79bKes6htzFjQ(rng, T42_);
			T43_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T43_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*(*(*t).sons->data[((NI) 0)]).n)._Ukind.S6.sons->data[((NI) 0)]);
			add_gCCf68XrWL79bKes6htzFjQ(rng, T43_);
			T44_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T44_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*(*(*t).sons->data[((NI) 0)]).n)._Ukind.S6.sons->data[((NI) 1)]);
			add_gCCf68XrWL79bKes6htzFjQ(rng, T44_);
			add_gCCf68XrWL79bKes6htzFjQ(result, rng);
		}
		goto LA29_;
		LA33_: ;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T46_;
			T46_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T46_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
			add_gCCf68XrWL79bKes6htzFjQ(result, T46_);
		}
		LA29_: ;
		T47_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T47_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 1)], info, inst, NIM_FALSE);
		add_gCCf68XrWL79bKes6htzFjQ(result, T47_);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8):
	{
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T51_;
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T54_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T60_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T61_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T62_;
			T51_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T51_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(t);
			if (!!((T51_ == NIM_NIL))) goto LA52_;
			{
				if (!((*t).n == 0)) goto LA57_;
				T54_ = info;
			}
			goto LA55_;
			LA57_: ;
			{
				T54_ = (*(*t).n).info;
			}
			LA55_: ;
			result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), T54_, t);
			T60_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T60_ = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_12), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 208), t, info);
			add_gCCf68XrWL79bKes6htzFjQ(result, T60_);
			T61_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T61_ = base_BFFuB9cFDZ89c6QWZqEFAtdA(t);
			T62_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T62_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, T61_, info, inst, NIM_FALSE);
			add_gCCf68XrWL79bKes6htzFjQ(result, T62_);
		}
		goto LA49_;
		LA52_: ;
		{
			result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_12), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 208), t, info);
		}
		LA49_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 9):
	{
		tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T65_;
		{
			if (!((*t).n == 0)) goto LA68_;
			T65_ = info;
		}
		goto LA66_;
		LA68_: ;
		{
			T65_ = (*(*t).n).info;
		}
		LA66_: ;
		result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), T65_, t);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
			i_2 = ((NI) 0);
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T74_;
					if (!(i_2 < colontmp_)) goto LA73;
					i = i_2;
					T74_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T74_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[i], info, inst, NIM_FALSE);
					add_gCCf68XrWL79bKes6htzFjQ(result, T74_);
					i_2 += ((NI) 1);
				} LA73: ;
			}
		}
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 11):
	{
		{
			if (!inst) goto LA78_;
			{
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T84_;
				if (!allowRecursion) goto LA82_;
				T84_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T84_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
				result = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, T84_, info, inst, NIM_TRUE);
			}
			goto LA80_;
			LA82_: ;
			{
				tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T86_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T92_;
				{
					if (!((*t).n == 0)) goto LA89_;
					T86_ = info;
				}
				goto LA87_;
				LA89_: ;
				{
					T86_ = (*(*t).n).info;
				}
				LA87_: ;
				result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), T86_, t);
				T92_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T92_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
				add_gCCf68XrWL79bKes6htzFjQ(result, T92_);
				{
					NI i_3;
					NI colontmp__2;
					NI T94_;
					NI i_4;
					i_3 = (NI)0;
					colontmp__2 = (NI)0;
					T94_ = (NI)0;
					T94_ = len_SWFNCiWYB89bTUPh5KptkvA_2(t);
					colontmp__2 = (NI)(T94_ - ((NI) 1));
					i_4 = ((NI) 1);
					{
						while (1) {
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T97_;
							if (!(i_4 < colontmp__2)) goto LA96;
							i_3 = i_4;
							T97_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T97_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[i_3], info, inst, NIM_FALSE);
							add_gCCf68XrWL79bKes6htzFjQ(result, T97_);
							i_4 += ((NI) 1);
						} LA96: ;
					}
				}
			}
			LA80_: ;
		}
		goto LA76_;
		LA78_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T99_;
			T99_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T99_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
			result = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, T99_, info, inst, allowRecursion);
		}
		LA76_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 10):
	{
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T105_;
			if (!inst) goto LA103_;
			T105_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T105_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
			result = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, T105_, info, inst, NIM_TRUE);
		}
		goto LA101_;
		LA103_: ;
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T107_;
			T107_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T107_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
			result = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, T107_, info, inst, NIM_FALSE);
		}
		LA101_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 4):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T109_;
		T109_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T109_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
		result = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, T109_, info, inst, allowRecursion);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 15):
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T111_;
		T111_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T111_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
		result = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, T111_, info, inst, NIM_FALSE);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 13):
	{
		{
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T117_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T123_;
			if (!inst) goto LA115_;
			{
				if (!((*t).n == 0)) goto LA120_;
				T117_ = info;
			}
			goto LA118_;
			LA120_: ;
			{
				T117_ = (*(*t).n).info;
			}
			LA118_: ;
			result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 146), T117_, t);
			T123_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T123_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
			add_gCCf68XrWL79bKes6htzFjQ(result, T123_);
		}
		goto LA113_;
		LA115_: ;
		{
			{
				NIM_BOOL T127_;
				T127_ = (NIM_BOOL)0;
				T127_ = allowRecursion;
				if (T127_) goto LA128_;
				T127_ = ((*t).sym == NIM_NIL);
				LA128_: ;
				if (!T127_) goto LA129_;
				result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_13), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 180), t, info, inst);
			}
			goto LA125_;
			LA129_: ;
			{
				result = atomicTypeX_sbpN4OVsmhDF9bIGxmmmstw((*t).sym, info);
			}
			LA125_: ;
		}
		LA113_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 12):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 30):
	{
		result = atomicTypeX_sbpN4OVsmhDF9bIGxmmmstw((*t).sym, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 17):
	{
		{
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T138_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T144_;
			if (!inst) goto LA136_;
			{
				if (!((*t).n == 0)) goto LA141_;
				T138_ = info;
			}
			goto LA139_;
			LA141_: ;
			{
				T138_ = (*(*t).n).info;
			}
			LA139_: ;
			result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 133), T138_, t);
			T144_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T144_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
			add_gCCf68XrWL79bKes6htzFjQ(result, T144_);
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T149_;
				if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA147_;
				T149_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T149_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
				add_gCCf68XrWL79bKes6htzFjQ(result, T149_);
			}
			goto LA145_;
			LA147_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nn;
				tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T151_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T157_;
				{
					if (!((*t).n == 0)) goto LA154_;
					T151_ = info;
				}
				goto LA152_;
				LA154_: ;
				{
					T151_ = (*(*t).n).info;
				}
				LA152_: ;
				nn = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 77), T151_, t);
				T157_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T157_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
				add_gCCf68XrWL79bKes6htzFjQ(nn, T157_);
				add_gCCf68XrWL79bKes6htzFjQ(result, nn);
			}
			LA145_: ;
			{
				NI T160_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T163_;
				T160_ = (NI)0;
				T160_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*t).n);
				if (!(((NI) 0) < T160_)) goto LA161_;
				T163_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T163_ = objectNode_AHGzaNMYbGutvMVBddUSng(cache, (*t).n);
				add_gCCf68XrWL79bKes6htzFjQ(result, T163_);
			}
			goto LA158_;
			LA161_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T165_;
				T165_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T165_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
				add_gCCf68XrWL79bKes6htzFjQ(result, T165_);
			}
			LA158_: ;
		}
		goto LA134_;
		LA136_: ;
		{
			{
				NIM_BOOL T169_;
				tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T173_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T179_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T187_;
				T169_ = (NIM_BOOL)0;
				T169_ = allowRecursion;
				if (T169_) goto LA170_;
				T169_ = ((*t).sym == NIM_NIL);
				LA170_: ;
				if (!T169_) goto LA171_;
				{
					if (!((*t).n == 0)) goto LA176_;
					T173_ = info;
				}
				goto LA174_;
				LA176_: ;
				{
					T173_ = (*(*t).n).info;
				}
				LA174_: ;
				result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 133), T173_, t);
				T179_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T179_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
				add_gCCf68XrWL79bKes6htzFjQ(result, T179_);
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T184_;
					if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA182_;
					T184_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T184_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
					add_gCCf68XrWL79bKes6htzFjQ(result, T184_);
				}
				goto LA180_;
				LA182_: ;
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T186_;
					T186_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T186_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
					add_gCCf68XrWL79bKes6htzFjQ(result, T186_);
				}
				LA180_: ;
				T187_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T187_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*t).n);
				add_gCCf68XrWL79bKes6htzFjQ(result, T187_);
			}
			goto LA167_;
			LA171_: ;
			{
				result = atomicTypeX_sbpN4OVsmhDF9bIGxmmmstw((*t).sym, info);
			}
			LA167_: ;
		}
		LA134_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 14):
	{
		tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T190_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T196_;
		{
			if (!((*t).n == 0)) goto LA193_;
			T190_ = info;
		}
		goto LA191_;
		LA193_: ;
		{
			T190_ = (*(*t).n).info;
		}
		LA191_: ;
		result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 150), T190_, t);
		T196_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T196_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
		add_gCCf68XrWL79bKes6htzFjQ(result, T196_);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* c;
			tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* colontmp__3;
			NI i_5;
			NI L;
			NI T198_;
			c = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			colontmp__3 = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
			colontmp__3 = (*(*t).n)._Ukind.S6.sons;
			i_5 = ((NI) 0);
			T198_ = (colontmp__3 ? colontmp__3->Sup.len : 0);
			L = T198_;
			{
				while (1) {
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T201_;
					if (!(i_5 < L)) goto LA200;
					c = colontmp__3->data[i_5];
					T201_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T201_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(c);
					add_gCCf68XrWL79bKes6htzFjQ(result, T201_);
					i_5 += ((NI) 1);
				} LA200: ;
			}
		}
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18):
	{
		{
			if (!inst) goto LA205_;
			{
				tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T211_;
				if (!((*t).n == 0)) goto LA209_;
				{
					if (!((*t).n == 0)) goto LA214_;
					T211_ = info;
				}
				goto LA212_;
				LA214_: ;
				{
					T211_ = (*(*t).n).info;
				}
				LA212_: ;
				result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160), T211_, t);
				{
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* subType;
					tySequence_Ef05srmQTDulnBdXR4Ja6Q* colontmp__4;
					NI i_6;
					NI L_2;
					NI T218_;
					subType = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					colontmp__4 = (tySequence_Ef05srmQTDulnBdXR4Ja6Q*)0;
					colontmp__4 = (*t).sons;
					i_6 = ((NI) 0);
					T218_ = (colontmp__4 ? colontmp__4->Sup.len : 0);
					L_2 = T218_;
					{
						while (1) {
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T221_;
							if (!(i_6 < L_2)) goto LA220;
							subType = colontmp__4->data[i_6];
							T221_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T221_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, subType, info, inst, NIM_FALSE);
							add_gCCf68XrWL79bKes6htzFjQ(result, T221_);
							i_6 += ((NI) 1);
						} LA220: ;
					}
				}
			}
			goto LA207_;
			LA209_: ;
			{
				tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T223_;
				{
					if (!((*t).n == 0)) goto LA226_;
					T223_ = info;
				}
				goto LA224_;
				LA226_: ;
				{
					T223_ = (*(*t).n).info;
				}
				LA224_: ;
				result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 134), T223_, t);
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s;
					tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* colontmp__5;
					NI i_7;
					NI L_3;
					NI T230_;
					s = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					colontmp__5 = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
					colontmp__5 = (*(*t).n)._Ukind.S6.sons;
					i_7 = ((NI) 0);
					T230_ = (colontmp__5 ? colontmp__5->Sup.len : 0);
					L_3 = T230_;
					{
						while (1) {
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* id;
							tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T233_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T239_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T240_;
							if (!(i_7 < L_3)) goto LA232;
							s = colontmp__5->data[i_7];
							{
								if (!((*t).n == 0)) goto LA236_;
								T233_ = info;
							}
							goto LA234_;
							LA236_: ;
							{
								T233_ = (*(*t).n).info;
							}
							LA234_: ;
							id = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35), T233_, t);
							add_gCCf68XrWL79bKes6htzFjQ(id, s);
							T239_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T239_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*s).typ, info, inst, NIM_FALSE);
							add_gCCf68XrWL79bKes6htzFjQ(id, T239_);
							T240_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T240_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
							add_gCCf68XrWL79bKes6htzFjQ(id, T240_);
							add_gCCf68XrWL79bKes6htzFjQ(result, id);
							i_7 += ((NI) 1);
						} LA232: ;
					}
				}
			}
			LA207_: ;
		}
		goto LA203_;
		LA205_: ;
		{
			result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_14), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 182), t, info, inst);
		}
		LA203_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 19):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_15), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 173), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 21):
	{
		{
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T248_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T254_;
			if (!inst) goto LA246_;
			{
				if (!((*t).n == 0)) goto LA251_;
				T248_ = info;
			}
			goto LA249_;
			LA251_: ;
			{
				T248_ = (*(*t).n).info;
			}
			LA249_: ;
			result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 142), T248_, t);
			T254_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T254_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
			add_gCCf68XrWL79bKes6htzFjQ(result, T254_);
		}
		goto LA244_;
		LA246_: ;
		{
			result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_16), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 178), t, info, inst);
		}
		LA244_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22):
	{
		{
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T261_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T267_;
			if (!inst) goto LA259_;
			{
				if (!((*t).n == 0)) goto LA264_;
				T261_ = info;
			}
			goto LA262_;
			LA264_: ;
			{
				T261_ = (*(*t).n).info;
			}
			LA262_: ;
			result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 141), T261_, t);
			T267_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T267_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
			add_gCCf68XrWL79bKes6htzFjQ(result, T267_);
		}
		goto LA257_;
		LA259_: ;
		{
			result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_17), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 177), t, info, inst);
		}
		LA257_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23):
	{
		{
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T274_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T280_;
			if (!inst) goto LA272_;
			{
				if (!((*t).n == 0)) goto LA277_;
				T274_ = info;
			}
			goto LA275_;
			LA277_: ;
			{
				T274_ = (*(*t).n).info;
			}
			LA275_: ;
			result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 143), T274_, t);
			T280_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T280_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], info, inst, NIM_FALSE);
			add_gCCf68XrWL79bKes6htzFjQ(result, T280_);
		}
		goto LA270_;
		LA272_: ;
		{
			result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_18), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 179), t, info, inst);
		}
		LA270_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_19), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 285), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_20), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 285), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 24):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_21), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 174), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 62):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_22), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 175), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 25):
	{
		{
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T291_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fp;
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T297_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T322_;
			if (!inst) goto LA289_;
			{
				if (!((*t).n == 0)) goto LA294_;
				T291_ = info;
			}
			goto LA292_;
			LA294_: ;
			{
				T291_ = (*(*t).n).info;
			}
			LA292_: ;
			result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 147), T291_, t);
			{
				if (!((*t).n == 0)) goto LA300_;
				T297_ = info;
			}
			goto LA298_;
			LA300_: ;
			{
				T297_ = (*(*t).n).info;
			}
			LA298_: ;
			fp = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 76), T297_, t);
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T307_;
				if (!((*t).sons->data[((NI) 0)] == NIM_NIL)) goto LA305_;
				T307_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T307_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
				add_gCCf68XrWL79bKes6htzFjQ(fp, T307_);
			}
			goto LA303_;
			LA305_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T309_;
				T309_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T309_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[((NI) 0)], (*(*(*t).n)._Ukind.S6.sons->data[((NI) 0)]).info, inst, NIM_FALSE);
				add_gCCf68XrWL79bKes6htzFjQ(fp, T309_);
			}
			LA303_: ;
			{
				NI i_8;
				NI colontmp__6;
				NI T311_;
				NI i_9;
				i_8 = (NI)0;
				colontmp__6 = (NI)0;
				T311_ = ((*t).sons ? (*t).sons->Sup.len : 0);
				colontmp__6 = T311_;
				i_9 = ((NI) 1);
				{
					while (1) {
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* id_2;
						tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T314_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T320_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T321_;
						if (!(i_9 < colontmp__6)) goto LA313;
						i_8 = i_9;
						{
							if (!((*t).n == 0)) goto LA317_;
							T314_ = info;
						}
						goto LA315_;
						LA317_: ;
						{
							T314_ = (*(*t).n).info;
						}
						LA315_: ;
						id_2 = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35), T314_, t);
						add_gCCf68XrWL79bKes6htzFjQ(id_2, (*(*t).n)._Ukind.S6.sons->data[i_8]);
						T320_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T320_ = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, (*t).sons->data[i_8], info, inst, NIM_FALSE);
						add_gCCf68XrWL79bKes6htzFjQ(id_2, T320_);
						T321_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T321_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
						add_gCCf68XrWL79bKes6htzFjQ(id_2, T321_);
						add_gCCf68XrWL79bKes6htzFjQ(fp, id_2);
						i_9 += ((NI) 1);
					} LA313: ;
				}
			}
			add_gCCf68XrWL79bKes6htzFjQ(result, fp);
			T322_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI T325_;
				T325_ = (NI)0;
				T325_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*(*t).n)._Ukind.S6.sons->data[((NI) 0)]);
				if (!(((NI) 0) < T325_)) goto LA326_;
				T322_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*(*(*t).n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 4)]);
			}
			goto LA323_;
			LA326_: ;
			{
				T322_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), info);
			}
			LA323_: ;
			add_gCCf68XrWL79bKes6htzFjQ(result, T322_);
		}
		goto LA287_;
		LA289_: ;
		{
			result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_23), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0), t, info, inst);
		}
		LA287_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_24), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 171), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20):
	{
		tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T332_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T338_;
		{
			if (!((*t).n == 0)) goto LA335_;
			T332_ = info;
		}
		goto LA333_;
		LA335_: ;
		{
			T332_ = (*(*t).n).info;
		}
		LA333_: ;
		result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), T332_, t);
		T338_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T338_ = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_25), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 172), t, info);
		add_gCCf68XrWL79bKes6htzFjQ(result, T338_);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* rng_2;
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T343_;
			tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T349_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T350_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T351_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T352_;
			if (!inst) goto LA341_;
			{
				if (!((*t).n == 0)) goto LA346_;
				T343_ = info;
			}
			goto LA344_;
			LA346_: ;
			{
				T343_ = (*(*t).n).info;
			}
			LA344_: ;
			rng_2 = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29), T343_, t);
			T349_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
			T349_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_11));
			T350_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T350_ = newIdentNode_mj7QetSP2JbYkbT6xy0EJA(T349_, info);
			add_gCCf68XrWL79bKes6htzFjQ(rng_2, T350_);
			T351_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T351_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*(*t).n)._Ukind.S6.sons->data[((NI) 0)]);
			add_gCCf68XrWL79bKes6htzFjQ(rng_2, T351_);
			T352_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T352_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*(*t).n)._Ukind.S6.sons->data[((NI) 1)]);
			add_gCCf68XrWL79bKes6htzFjQ(rng_2, T352_);
			add_gCCf68XrWL79bKes6htzFjQ(result, rng_2);
		}
		goto LA339_;
		LA341_: ;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T354_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T355_;
			T354_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T354_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*(*t).n)._Ukind.S6.sons->data[((NI) 0)]);
			add_gCCf68XrWL79bKes6htzFjQ(result, T354_);
			T355_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T355_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*(*t).n)._Ukind.S6.sons->data[((NI) 1)]);
			add_gCCf68XrWL79bKes6htzFjQ(result, T355_);
		}
		LA339_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 26):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_26), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 202), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_27), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 200), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 29):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_28), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 201), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_29), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 184), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 32):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_30), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 185), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 33):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_31), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 186), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 34):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_32), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 187), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 35):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_33), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 188), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 36):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_34), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 194), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 37):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_35), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 195), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 38):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_36), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 196), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 39):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_37), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 197), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 40):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_38), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 189), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 41):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_39), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 190), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 42):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_40), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 191), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 43):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_41), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 192), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 44):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_42), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 193), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 48):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_43), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 176), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 50):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_44), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 51):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_45), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 52):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 53):
	{
		{
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T381_;
			if (!(((*t).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 10))&63U)))!=0)) goto LA379_;
			T381_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T381_ = lastSon_ab52xel9cFebv9am0xV04xXA(t);
			result = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, T381_, info, inst, NIM_FALSE);
		}
		goto LA377_;
		LA379_: ;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T383_;
			result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_46), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0), t, info, inst);
			T383_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T383_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*t).n);
			add_gCCf68XrWL79bKes6htzFjQ(result, T383_);
		}
		LA377_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 54):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_47), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 56):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_48), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 129), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 57):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_49), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 130), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 58):
	{
		result = mapTypeToBracketX_5NBap29cvwMrU6xwIjHxS8A(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_50), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 102), t, info, inst);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 59):
	{
		result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_51), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0), t, info);
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 55):
	{
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 61):
	{
		{
			if (!inst) goto LA393_;
			{
				if (!!(((*t).n == NIM_NIL))) goto LA397_;
				result = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*t).n);
			}
			goto LA395_;
			LA397_: ;
			{
				result = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_8), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 181), t, info);
			}
			LA395_: ;
		}
		goto LA391_;
		LA393_: ;
		{
			tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T401_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T407_;
			{
				if (!((*t).n == 0)) goto LA404_;
				T401_ = info;
			}
			goto LA402_;
			LA404_: ;
			{
				T401_ = (*(*t).n).info;
			}
			LA402_: ;
			result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), T401_, t);
			T407_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T407_ = atomicTypeX_ERjisfP9biCKlRzOH3GEuRw(cache, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_52), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0), t, info);
			add_gCCf68XrWL79bKes6htzFjQ(result, T407_);
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T412_;
				if (!!(((*t).n == NIM_NIL))) goto LA410_;
				T412_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T412_ = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2((*t).n);
				add_gCCf68XrWL79bKes6htzFjQ(result, T412_);
			}
			LA410_: ;
		}
		LA391_: ;
	}
	break;
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 49):
	case ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 45):
	{
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, opMapTypeToAst_B7DYLotR9aw6o9cHZhrLIPGg)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, t, info, NIM_FALSE, NIM_TRUE);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, opMapTypeInstToAst_B7DYLotR9aw6o9cHZhrLIPGg_2)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, t, info, NIM_TRUE, NIM_FALSE);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, opMapTypeImplToAst_B7DYLotR9aw6o9cHZhrLIPGg_3)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = mapTypeToAstX_9aIygTHXLfvkdHTvOw62hGw(cache, t, info, NIM_TRUE, NIM_TRUE);
	return result;
}

static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
	(*s).hasRaiseAction = NIM_FALSE;
	(*s).prev = excHandler_rqLlY5bs9atDw2OXYqJEn5g;
	excHandler_rqLlY5bs9atDw2OXYqJEn5g = s;
}

static N_INLINE(NIM_BOOL, fileExists_yTPrfdEKg9cKCeSFUA6popQoptions)(NimStringDesc* filename) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = nosexistsFile(filename);
	return result;
}

static N_INLINE(void, popSafePoint)(void) {
	excHandler_rqLlY5bs9atDw2OXYqJEn5g = (*excHandler_rqLlY5bs9atDw2OXYqJEn5g).prev;
}

static N_INLINE(Exception*, getCurrentException)(void) {
	Exception* result;
	result = (Exception*)0;
	result = currException_9bVPeDJlYTi9bQApZpfH8wjg;
	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_fPlwH3r9agN9aEHB6yCPMh0wsystem)(void* dest, void* source, NI size) {
	nimCopyMem(dest, source, size);
}

static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	{
		if (!!((src == NIM_NIL))) goto LA3_;
		copyMem_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) ((&(*dest).data[((*dest).Sup.len)- 0]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		(*dest).Sup.len += (*src).Sup.len;
	}
	LA3_: ;
}

static N_INLINE(void, incRef_9cAA5YuQAAC3MVbnGeV86swsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c) {
	(*c).refcount = (NI)((NU32)((*c).refcount) + (NU32)(((NI) 8)));
}

static N_INLINE(void, decRef_MV4BBk6J1qu70IbBxwEn4wsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3_;
		rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_2system(c);
	}
	LA3_: ;
}

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_yB9aH5WIlwd0xkYrcdPeXrQsystem(src);
		incRef_9cAA5YuQAAC3MVbnGeV86swsystem(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem((*dest));
		decRef_MV4BBk6J1qu70IbBxwEn4wsystem(T10_);
	}
	LA8_: ;
	(*dest) = src;
}

static N_INLINE(void, popCurrentException)(void) {
	asgnRef((void**) (&currException_9bVPeDJlYTi9bQApZpfH8wjg), (*currException_9bVPeDJlYTi9bQApZpfH8wjg).up);
}

N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, opSlurp_BZteCpC7yurCSeB8YcFcgg)(NimStringDesc* file, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module, tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf) {
	NimStringDesc* volatile result;
	TSafePoint TM_gLSXNlwmnHPzTIXzvpQGfw_53;
	result = (NimStringDesc*)0;
	pushSafePoint(&TM_gLSXNlwmnHPzTIXzvpQGfw_53);
	TM_gLSXNlwmnHPzTIXzvpQGfw_53.status = _setjmp(TM_gLSXNlwmnHPzTIXzvpQGfw_53.context);
	if (TM_gLSXNlwmnHPzTIXzvpQGfw_53.status == 0) {
		NimStringDesc* volatile filename;
		NimStringDesc* T2_;
		NimStringDesc* T3_;
		tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* T9_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T10_;
		T2_ = (NimStringDesc*)0;
		T2_ = toFullPath_tdNdBP9cVqODPZCeXYb1GvA(conf, info.fileIndex);
		T3_ = (NimStringDesc*)0;
		T3_ = nosparentDir(T2_);
		filename = slash__lXoMhn1ZYc9cAJa9bfA61msg(T3_, file);
		{
			NIM_BOOL T6_;
			T6_ = (NIM_BOOL)0;
			T6_ = fileExists_yTPrfdEKg9cKCeSFUA6popQoptions(filename);
			if (!!(T6_)) goto LA7_;
			filename = findFile_FW3YyNTkDpRLYCzoCgbSIQ(conf, file, NIM_FALSE);
		}
		LA7_: ;
		result = readFile_T9cm5LIRX2tKEH9aREBZ8A0w(filename);
		T9_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
		T9_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) newSeq((&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_), 1);
		asgnRefNoCycle((void**) (&T9_->data[0]), newStrNode_8GaTnuPqpzGLNcerzDOURQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 20), filename));
		T10_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T10_ = newNode_sa9bwmR1oPRYm27rlMD66CQ(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 121), info, T9_, NIM_NIL);
		appendToModule_ZO6kFegrIXe9bUOHAHOb9cIA(module, T10_);
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI_iLZrPn9anoh9ad1MmO0RczFw_))) {
			NimStringDesc* T13_;
			TM_gLSXNlwmnHPzTIXzvpQGfw_53.status = 0;
			T13_ = (NimStringDesc*)0;
			T13_ = rawNewString((file ? file->Sup.len : 0) + 18);
appendString(T13_, ((NimStringDesc*) &TM_gLSXNlwmnHPzTIXzvpQGfw_54));
appendString(T13_, file);
			localError_NF6kBGchnhQYPbCedyefVA(conf, info, T13_);
			result = ((NimStringDesc*) NIM_NIL);
			popCurrentException();
		}
	}
	if (TM_gLSXNlwmnHPzTIXzvpQGfw_53.status != 0) reraiseException();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_vmdepsInit000)(void) {
{
	TFrame FR_; FR_.len = 0;
}
}

N_LIB_PRIVATE N_NIMCALL(void, compiler_vmdepsDatInit000)(void) {
}

