/* 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 <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_TSym_JpsEh5i1AcKChGYbg7aV4w tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w;
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_DXS6mEo7PVUFJkirsQ9bNQA tySequence_DXS6mEo7PVUFJkirsQ9bNQA;
typedef struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA;
typedef struct tySequence_DfgJFJEYoj4YBAHLZPl5lQ tySequence_DfgJFJEYoj4YBAHLZPl5lQ;
typedef struct tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
typedef struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA;
typedef struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q;
typedef struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw;
typedef struct tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA;
typedef struct tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA;
typedef struct tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA;
typedef struct tySequence_MvZmat48bhe9b6x9aUD58D5Q tySequence_MvZmat48bhe9b6x9aUD58D5Q;
typedef struct tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ;
typedef struct tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ;
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_Table_Os4it9bmHnOQtsd5CqH09aRQ tyObject_Table_Os4it9bmHnOQtsd5CqH09aRQ;
typedef struct tySequence_hLW2w9a9bDM1AHB8BIrU3BYw tySequence_hLW2w9a9bDM1AHB8BIrU3BYw;
typedef struct tyObject_Table_e2Ciu0s1q49aVQ7ULXy7l9bQ tyObject_Table_e2Ciu0s1q49aVQ7ULXy7l9bQ;
typedef struct tySequence_kxu4GK0onha2t9bo86mdVAg tySequence_kxu4GK0onha2t9bo86mdVAg;
typedef struct tySequence_48JTohSgTy339bRxHzUD8KA tySequence_48JTohSgTy339bRxHzUD8KA;
typedef struct tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw;
typedef struct tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw;
typedef struct tySequence_bWZXqEvLFwhLvAqSRoFNgQ tySequence_bWZXqEvLFwhLvAqSRoFNgQ;
typedef struct tyObject_IncrementalCtx_sdH7TnbKACuAzE7DBabnCA tyObject_IncrementalCtx_sdH7TnbKACuAzE7DBabnCA;
typedef struct tyObject_Table_0Y2brGGKD9bV6GJLXT9aUDgA tyObject_Table_0Y2brGGKD9bV6GJLXT9aUDgA;
typedef struct tySequence_23SMqauuRsbDANhthj9bWlA tySequence_23SMqauuRsbDANhthj9bWlA;
typedef struct tyObject_Table_NttoEzoiq5CiphZe81oadg tyObject_Table_NttoEzoiq5CiphZe81oadg;
typedef struct tySequence_squ9b9bUH4OLHf6cEMrt6hVA tySequence_squ9b9bUH4OLHf6cEMrt6hVA;
typedef struct tyObject_Table_nagDFX4QHx0s6Fvma9blmSg tyObject_Table_nagDFX4QHx0s6Fvma9blmSg;
typedef struct tySequence_pHNq3oXj9av2sEUdqaqeZjw tySequence_pHNq3oXj9av2sEUdqaqeZjw;
typedef struct tySequence_PzqTLBFNawCGiqTk0UORYw tySequence_PzqTLBFNawCGiqTk0UORYw;
typedef struct tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw;
typedef struct tyObject_Table_JrI9bTpOVccKpiJXKOskjFg tyObject_Table_JrI9bTpOVccKpiJXKOskjFg;
typedef struct tySequence_YuKuU17u5ApAIki23DK9bJw tySequence_YuKuU17u5ApAIki23DK9bJw;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ;
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_Target_9abOl5DLX8suLujOaHSvGzw tyObject_Target_9abOl5DLX8suLujOaHSvGzw;
typedef struct tyObject_MsgConfig_kV7r8HWT0SqOYW2k2ukC6A tyObject_MsgConfig_kV7r8HWT0SqOYW2k2ukC6A;
typedef struct tySequence_PJMRIt5QxCm6bRaVyQ5CGA tySequence_PJMRIt5QxCm6bRaVyQ5CGA;
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 tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg;
typedef struct tySequence_sM4lkSb7zS6F7OVMvW9cffQ tySequence_sM4lkSb7zS6F7OVMvW9cffQ;
typedef struct tySequence_pK3qSsBZwdXd6qyUMkd5Jw tySequence_pK3qSsBZwdXd6qyUMkd5Jw;
typedef struct tyObject_SuggestcolonObjectType__bkMuTTb2G70XfpzAiyNrnQ tyObject_SuggestcolonObjectType__bkMuTTb2G70XfpzAiyNrnQ;
typedef struct tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA;
typedef struct tyTuple_zwpS6d6iewrdlBSTNFoyVA tyTuple_zwpS6d6iewrdlBSTNFoyVA;
typedef struct tyTuple_YGgHblKlCINajXDZno8UTQ tyTuple_YGgHblKlCINajXDZno8UTQ;
typedef struct tyTuple_xDU9bZmv1ZbZkJDaATBekIQ tyTuple_xDU9bZmv1ZbZkJDaATBekIQ;
typedef struct tyTuple_quA39a2QdEQU9cSEIUSibApQ tyTuple_quA39a2QdEQU9cSEIUSibApQ;
typedef struct tyTuple_2SGm9aGCXuo7XSQ9bqD29axXw tyTuple_2SGm9aGCXuo7XSQ9bqD29axXw;
typedef struct tyTuple_F3gkSrMB1qp2Tvf9bixVXwg tyTuple_F3gkSrMB1qp2Tvf9bixVXwg;
typedef struct tyTuple_wcNatyuf8WOqAhGLhSvgiw tyTuple_wcNatyuf8WOqAhGLhSvgiw;
typedef struct tyObject_BTree_VZdzO0Tlflp7WMN4gS8oPg tyObject_BTree_VZdzO0Tlflp7WMN4gS8oPg;
typedef struct tyObject_NodecolonObjectType__dNELmBSmY7nthjhZupWO6g tyObject_NodecolonObjectType__dNELmBSmY7nthjhZupWO6g;
typedef struct tyTuple_euPCXX9bc3XzndEhYlqNS7g tyTuple_euPCXX9bc3XzndEhYlqNS7g;
typedef struct tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w;
typedef struct tyTuple_Wymbvuvlf49clEgp9bKoFN9bw tyTuple_Wymbvuvlf49clEgp9bKoFN9bw;
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 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_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;
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_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;
};
typedef NU8 tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw;
typedef NU8 tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA;
typedef NU64 tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
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 NI tyArray_emiAJ8okywrJw7ZHLzlXbQ[34];
struct tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg {
NI elems;
NI counter;
NI max;
tyObject_Trunk_ul49aWfv9aes8cutmeltT3gQ* head;
tySequence_9brg1xNurxcus33lU4IE1Dw* data;
tyArray_emiAJ8okywrJw7ZHLzlXbQ a;
};
struct tyObject_Table_Os4it9bmHnOQtsd5CqH09aRQ {
tySequence_hLW2w9a9bDM1AHB8BIrU3BYw* data;
NI counter;
};
struct tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ {
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg processed;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg capturedVars;
tyObject_Table_Os4it9bmHnOQtsd5CqH09aRQ ownerToType;
NIM_BOOL somethingToDo;
tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph;
};
typedef NU8 tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct tyObject_Table_e2Ciu0s1q49aVQ7ULXy7l9bQ {
tySequence_kxu4GK0onha2t9bo86mdVAg* data;
NI counter;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClP_0) (void* ClE_0);
void* ClE_0;
} tyProc_xdLb0cyzx3FuM6Q4NnRTpQ;
typedef tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tyArray_OLX364rHC66WkzRbMp49aQg[64];
typedef tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* tyArray_6GDJmNRiFxkWAAdMgUie8g[70];
struct tyObject_IncrementalCtx_sdH7TnbKACuAzE7DBabnCA {
char dummy;
};
typedef N_NIMCALL_PTR(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, tyProc_c6vdo1yHyj19b9bS17tijS2w) (tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m, NI32 fileIdx);
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_d5yEkT9aXkAtHvVerr7IeCQ) (tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m, NI32 fileIdx);
typedef N_NIMCALL_PTR(void, tyProc_sP1I7TbCn358eLy9bX4IphA) (tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* m, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
struct tyObject_Table_0Y2brGGKD9bV6GJLXT9aUDgA {
tySequence_23SMqauuRsbDANhthj9bWlA* data;
NI counter;
};
struct tyObject_Table_NttoEzoiq5CiphZe81oadg {
tySequence_squ9b9bUH4OLHf6cEMrt6hVA* data;
NI counter;
};
struct tyObject_Table_nagDFX4QHx0s6Fvma9blmSg {
tySequence_pHNq3oXj9av2sEUdqaqeZjw* data;
NI counter;
};
struct tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ {
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* modules;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA packageSyms;
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg deps;
NIM_BOOL suggestMode;
NIM_BOOL invalidTransitiveClosure;
tyObject_Table_e2Ciu0s1q49aVQ7ULXy7l9bQ inclToMod;
tySequence_48JTohSgTy339bRxHzUD8KA* importStack;
RootObj* backend;
tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* config;
tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache;
RootObj* vm;
tyProc_xdLb0cyzx3FuM6Q4NnRTpQ doStopCompile;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* usageSym;
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* owners;
tySequence_bWZXqEvLFwhLvAqSRoFNgQ* methods;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* systemModule;
tyArray_OLX364rHC66WkzRbMp49aQg sysTypes;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA compilerprocs;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA exposed;
tyArray_6GDJmNRiFxkWAAdMgUie8g intTypeCache;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* opContains;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* opNot;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* emptyNode;
tyObject_IncrementalCtx_sdH7TnbKACuAzE7DBabnCA incr;
tyProc_c6vdo1yHyj19b9bS17tijS2w importModuleCallback;
tyProc_d5yEkT9aXkAtHvVerr7IeCQ includeFileCallback;
tyProc_sP1I7TbCn358eLy9bX4IphA recordStmt;
tyObject_Table_0Y2brGGKD9bV6GJLXT9aUDgA cacheSeqs;
tyObject_Table_NttoEzoiq5CiphZe81oadg cacheCounters;
tyObject_Table_nagDFX4QHx0s6Fvma9blmSg cacheTables;
tySequence_PzqTLBFNawCGiqTk0UORYw* passes;
};
struct tyObject_Table_JrI9bTpOVccKpiJXKOskjFg {
tySequence_YuKuU17u5ApAIki23DK9bJw* data;
NI counter;
};
struct tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw {
tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg processed;
tyObject_Table_JrI9bTpOVccKpiJXKOskjFg envVars;
NI inContainer;
};
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;
};
struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
NimStringDesc* s;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* next;
NI h;
};
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 NU64 tySet_tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag;
typedef NimStringDesc* tyArray_24KAM9afIUgUaqBaEBB6r9bg[3];
typedef NU8 tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw;
typedef NimStringDesc* tyArray_t1sx1FVcaX4m77XqENedIQ[10];
typedef NU8 tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
typedef tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tyArray_AB6yfoUgfWM2NtGe9bzkCmw[2];
typedef NU8 tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg;
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_PJMRIt5QxCm6bRaVyQ5CGA* 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_SymbolFilesOption_gBES9bqm1ru9ape8SeMRAFgQ;
struct tyObject_HashSet_CD8Dpv0WGmASelVaNSo6zg {
tySequence_4eRCaZmrYLLw2k30GPTiMw* data;
NI counter;
};
typedef NU16 tySet_tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ;
typedef NU8 tyEnum_IdeCmd_1Ced39bl5eePmZ1PKMPXigQ;
typedef NU8 tyEnum_TSystemCC_1eWBJUonHMOnlBwsOvpFmA;
typedef NU64 tySet_tyEnum_TMsgKind_vuCAakv8v9aIe9a44eiR1GOg;
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (tyObject_SuggestcolonObjectType__bkMuTTb2G70XfpzAiyNrnQ* result, void* ClE_0);
void* ClE_0;
} tyProc_QYEVXrYc9beQ379crS3rzqRA;
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (NimStringDesc* output, void* ClE_0);
void* ClE_0;
} tyProc_Q1W5D85O9cNu3iq9cZ9alS9aWA;
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_22mgIiTBBoqNe1T0FSw9ahQ;
struct tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw {
tyObject_Target_9abOl5DLX8suLujOaHSvGzw target;
NI linesCompiled;
tySet_tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg options;
tySet_tyEnum_TGlobalOption_RAfAEZqjnKMDumgyKKc1qw globalOptions;
tyObject_MsgConfig_kV7r8HWT0SqOYW2k2ukC6A m;
NI evalTemplateCounter;
NI evalMacroCounter;
NI8 exitcode;
tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw cmd;
tyEnum_TGCMode_tkz389aDYNd8ykeZszCuBSw selectedGC;
NI verbosity;
NI numberOfProcessors;
NimStringDesc* evalExpr;
NF lastCmdTime;
tyEnum_SymbolFilesOption_gBES9bqm1ru9ape8SeMRAFgQ symbolFiles;
tyObject_HashSet_CD8Dpv0WGmASelVaNSo6zg cppDefines;
NimStringDesc* headerFile;
tySet_tyEnum_Feature_01UoAKYz1MxZiuG1X2VhNQ features;
NimStringDesc* arguments;
NIM_BOOL helpWritten;
tyEnum_IdeCmd_1Ced39bl5eePmZ1PKMPXigQ ideCmd;
NIM_BOOL oldNewlines;
tyEnum_TSystemCC_1eWBJUonHMOnlBwsOvpFmA cCompiler;
tySet_tyEnum_TMsgKind_vuCAakv8v9aIe9a44eiR1GOg enableNotes;
tySet_tyEnum_TMsgKind_vuCAakv8v9aIe9a44eiR1GOg disableNotes;
tySet_tyEnum_TMsgKind_vuCAakv8v9aIe9a44eiR1GOg foreignPackageNotes;
tySet_tyEnum_TMsgKind_vuCAakv8v9aIe9a44eiR1GOg notes;
tySet_tyEnum_TMsgKind_vuCAakv8v9aIe9a44eiR1GOg mainPackageNotes;
NI mainPackageId;
NI errorCounter;
NI hintCounter;
NI warnCounter;
NI errorMax;
tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg* configVars;
tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg* symbols;
tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg* packageCache;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* searchPaths;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* lazyPaths;
NimStringDesc* outFile;
NimStringDesc* prefixDir;
NimStringDesc* libpath;
NimStringDesc* nimcacheDir;
tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg* dllOverrides;
tyObject_StringTableObj_V5PVrt9bIxZEeV7lfvqqtNg* moduleOverrides;
NimStringDesc* projectName;
NimStringDesc* projectPath;
NimStringDesc* projectFull;
NIM_BOOL projectIsStdin;
NI32 projectMainIdx;
NimStringDesc* command;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* commandArgs;
NIM_BOOL keepComments;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* implicitImports;
tySequence_sM4lkSb7zS6F7OVMvW9cffQ* implicitIncludes;
NimStringDesc* docSeeSrcUrl;
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_QYEVXrYc9beQ379crS3rzqRA suggestionResultHook;
NI suggestVersion;
NI suggestMaxResults;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q lastLineInfo;
tyProc_Q1W5D85O9cNu3iq9cZ9alS9aWA writelnHook;
tyProc_22mgIiTBBoqNe1T0FSw9ahQ structuredErrorHook;
NimStringDesc* cppCustomNamespace;
};
struct tyTuple_zwpS6d6iewrdlBSTNFoyVA {
NI Field0;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* Field1;
};
struct tyTuple_YGgHblKlCINajXDZno8UTQ {
NI Field0;
NI Field1;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* Field2;
};
struct tyTuple_xDU9bZmv1ZbZkJDaATBekIQ {
NI Field0;
NI32 Field1;
NI32 Field2;
};
struct tyTuple_quA39a2QdEQU9cSEIUSibApQ {
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* Field0;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* Field1;
};
struct tyTuple_2SGm9aGCXuo7XSQ9bqD29axXw {
NI Field0;
NimStringDesc* Field1;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* Field2;
};
struct tyTuple_F3gkSrMB1qp2Tvf9bixVXwg {
NI Field0;
NimStringDesc* Field1;
NI64 Field2;
};
struct tyObject_BTree_VZdzO0Tlflp7WMN4gS8oPg {
tyObject_NodecolonObjectType__dNELmBSmY7nthjhZupWO6g* root;
NI entries;
};
struct tyTuple_wcNatyuf8WOqAhGLhSvgiw {
NI Field0;
NimStringDesc* Field1;
tyObject_BTree_VZdzO0Tlflp7WMN4gS8oPg Field2;
};
typedef N_NIMCALL_PTR(tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w*, tyProc_8ooe5vdoqmvpHnfXV29bP3w) (tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* module);
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_A7Sdoem70tRxSEmKrf9cmyg) (tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* topLevelStmt);
typedef N_NIMCALL_PTR(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, tyProc_EAEKmBUgKFg29agoUGtzDEQ) (tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* graph, tyObject_TPassContext_Hb6rFM0ecvtlLf2kv9aU75w* p, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
struct tyTuple_euPCXX9bc3XzndEhYlqNS7g {
tyProc_8ooe5vdoqmvpHnfXV29bP3w Field0;
tyProc_A7Sdoem70tRxSEmKrf9cmyg Field1;
tyProc_EAEKmBUgKFg29agoUGtzDEQ Field2;
NIM_BOOL Field3;
};
struct tyTuple_Wymbvuvlf49clEgp9bKoFN9bw {
NI Field0;
NI Field1;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* Field2;
};
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* cname;
NimStringDesc* obj;
tySet_tyEnum_CfileFlag_Vl9c9ayddDuXiWtnWTsEYGsA flags;
};
struct tySequence_Ef05srmQTDulnBdXR4Ja6Q {
  TGenericSeq Sup;
  tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* 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_MvZmat48bhe9b6x9aUD58D5Q {
  TGenericSeq Sup;
  tyTuple_zwpS6d6iewrdlBSTNFoyVA data[SEQ_DECL_SIZE];
};
struct tySequence_9brg1xNurxcus33lU4IE1Dw {
  TGenericSeq Sup;
  tyObject_Trunk_ul49aWfv9aes8cutmeltT3gQ* data[SEQ_DECL_SIZE];
};
struct tySequence_hLW2w9a9bDM1AHB8BIrU3BYw {
  TGenericSeq Sup;
  tyTuple_YGgHblKlCINajXDZno8UTQ data[SEQ_DECL_SIZE];
};
struct tySequence_kxu4GK0onha2t9bo86mdVAg {
  TGenericSeq Sup;
  tyTuple_xDU9bZmv1ZbZkJDaATBekIQ data[SEQ_DECL_SIZE];
};
struct tySequence_48JTohSgTy339bRxHzUD8KA {
  TGenericSeq Sup;
  NI32 data[SEQ_DECL_SIZE];
};
struct tySequence_bWZXqEvLFwhLvAqSRoFNgQ {
  TGenericSeq Sup;
  tyTuple_quA39a2QdEQU9cSEIUSibApQ data[SEQ_DECL_SIZE];
};
struct tySequence_23SMqauuRsbDANhthj9bWlA {
  TGenericSeq Sup;
  tyTuple_2SGm9aGCXuo7XSQ9bqD29axXw data[SEQ_DECL_SIZE];
};
struct tySequence_squ9b9bUH4OLHf6cEMrt6hVA {
  TGenericSeq Sup;
  tyTuple_F3gkSrMB1qp2Tvf9bixVXwg data[SEQ_DECL_SIZE];
};
struct tySequence_pHNq3oXj9av2sEUdqaqeZjw {
  TGenericSeq Sup;
  tyTuple_wcNatyuf8WOqAhGLhSvgiw data[SEQ_DECL_SIZE];
};
struct tySequence_PzqTLBFNawCGiqTk0UORYw {
  TGenericSeq Sup;
  tyTuple_euPCXX9bc3XzndEhYlqNS7g data[SEQ_DECL_SIZE];
};
struct tySequence_YuKuU17u5ApAIki23DK9bJw {
  TGenericSeq Sup;
  tyTuple_Wymbvuvlf49clEgp9bKoFN9bw data[SEQ_DECL_SIZE];
};
struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ {
  TGenericSeq Sup;
  tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
};
struct tySequence_PJMRIt5QxCm6bRaVyQ5CGA {
  TGenericSeq Sup;
  tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q 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];
};
static N_INLINE(NIM_BOOL, interestingVar_IELEC9bh3Fwz59a9beMw09cMawlambdalifting)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isGenericRoutine_fqH89bI309asBDvp00Y3VVQA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem_2Mfumf6CnyNlShDWdIgobwsystem)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, initDetectionPass_4CCBwDujiGy6YiQqoXJBmA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* Result);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_LIB_PRIVATE N_NIMCALL(void, initIntSet_a9a80eJplB17xrdZJ41Baww)(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* Result);
N_LIB_PRIVATE N_NIMCALL(void, initTable_Z0P6P58YBdVjpZlNtweBfA)(NI initialSize, tyObject_Table_Os4it9bmHnOQtsd5CqH09aRQ* Result);
N_LIB_PRIVATE N_NIMCALL(void, incl_iUpE9bYmIR0fROyJskQwN8g)(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* s, NI key);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NIMCALL(void, initLiftingPass_HXrCsX5pXNSDQAdrIHzdgg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* Result);
N_LIB_PRIVATE N_NIMCALL(void, initTable_nY9aBzJgd0qDIvm7CK9bVIcA)(NI initialSize, tyObject_Table_JrI9bTpOVccKpiJXKOskjFg* Result);
N_LIB_PRIVATE N_NIMCALL(void, X5BX5Deq__4J2KxaBA7Xsqtl1DOjhmuw)(tyObject_Table_Os4it9bmHnOQtsd5CqH09aRQ* t, NI key, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* val);
N_LIB_PRIVATE N_NIMCALL(void, detectCapturedVars_knMMYMrxMvpPAdvZhU1Tjg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* c);
N_LIB_PRIVATE N_NIMCALL(void, addClosureParam_lKI5vTqvn65UP6LyU15ZDg)(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getEnvParam_ypCrx6fkmVfhsiJZgqHbwA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* routine);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, lastSon_esDJA7239bJDiq4UrX9aHCjg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(NIM_BOOL, equalMem_DCrUjdaMvFDHaR1hs7sQGwropes)(void* a, void* b, NI size);
static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, getEnvTypeForOwner_BBRprp0HkxL5S9csRfapI8Q)(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, getOrDefault_Q456uU89bdR9cKc4yVk8z7Mw)(tyObject_Table_Os4it9bmHnOQtsd5CqH09aRQ t, NI key);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newType_dQhKkL6uAkw83dy6l4d7iQ)(tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, createEnvObj_yerah9cqA5paeC9cleB16O1w)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, createObj_hfiqaGhMR5vPI6kJc04yUw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NIM_BOOL final);
N_LIB_PRIVATE N_NIMCALL(void, rawAddField_Bitp83Rxsm0jGD3Eqxs1qg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, createStateField_TgYaD9azNHeiJdSPcrOB6SA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* iter);
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);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, createClosureIterStateType_yJRvBacfewo9bdyScE2nw2g)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* iter);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeI_I7fH85CUcZMasoPRKxPsPg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(void, addSon_gCCf68XrWL79bKes6htzFjQ_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIntNode_v2VGJAZNfKPVngZCqEXQtA)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NI64 intVal);
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_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, nilOrSysInt_GcPekesqCBcC9a6bq8ZcZKg)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g);
N_LIB_PRIVATE N_NIMCALL(void, rawAddSon_uZzh0IWnWErsZbQ8YFaRRA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son);
N_LIB_PRIVATE N_NIMCALL(void, addHiddenParam_lRSGY6ajrRDZiGy74wKKPg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* routine, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param);
static N_INLINE(NI, len_CdME9baJhvveuPEDZE9bXoxAsigmatch)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newSymNode_UWZXukHA5As9aCftRHbafBg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(void, localError_NF6kBGchnhQYPbCedyefVA)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* arg);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isInnerProc_QceDO8m9cZ0OIoTTIT9b6gPA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg)(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* s, NI key);
static N_INLINE(NIM_BOOL, interestingIterVar_IELEC9bh3Fwz59a9beMw09cMaw_2lambdalifting)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lastSon_ab52xel9cFebv9am0xV04xXA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* routine);
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);
N_LIB_PRIVATE N_NIMCALL(void, addField_9aBQ2L5yxhC7S5oG233tzIA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache);
N_LIB_PRIVATE N_NIMCALL(void, markAsClosure_pewMCU9aolg9bl79a4WiPZ4HA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NIM_BOOL, illegalCapture_IELEC9bh3Fwz59a9beMw09cMaw_3lambdalifting)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kinds);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr, NimStringDesc** a, NI aLen_0);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, typeToString_QlvraUan7WbHowhAbvDvdA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ, tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw prefer);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar__tduYJIZOMabvcOCb9bVwWCA_2)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(void, createUpField_vlqsfLq9b9cUFFP9cvYdZU3LA)(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* dest, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* dep, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, lookupInRecord_UKAypME5AMFgsArDll8WMg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* field);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, liftCapturedVars_1JM0Ep6665B6crlfoxbCuQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getOrDefault_cAkAEwfW9cxC2y2UQOZz2Aw)(tyObject_Table_JrI9bTpOVccKpiJXKOskjFg t, NI key);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newTree_4bkTFXme4frVOAuq2YEc4g)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** children, NI childrenLen_0);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, rawClosureCreation_052ZWuigreNR2S9cutQVuLw)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, setupEnvVar_052ZWuigreNR2S9cutQVuLw_2)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newEnvVar_boAyOiRoK1aByOyDiQCATw)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(void, X5BX5Deq__5EsDXhxconxyEkG2G09cLrQ)(tyObject_Table_JrI9bTpOVccKpiJXKOskjFg* t, NI key, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* val);
N_LIB_PRIVATE N_NIMCALL(void, addVar_ZIvdnLvRaA7wqS0zjam6gw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v);
N_LIB_PRIVATE N_NIMCALL(void, add_gCCf68XrWL79bKes6htzFjQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newCall_SS4raV1ef5ogLtVG9a561Dg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getSysSym_9bvw79ck1FDiWpnBYh88rEfw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* name);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains_sYBLNwnPJlAFi0nfWU79awg)(tyObject_IntSet_PQrmFm4BXFkFSVOUl1ojSg* s, NI key);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, indirectAccess_8tV19blySRgoa3CaurasypA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* b, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newAsgnStmt_34fQKQksHbjJ6cX9a0k36Kw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* le, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ri, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeI_lJ75Ni9cLabI0ssrSNczTxg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NI children);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getUpViaParam_5aTkGMxbYzGq8tgBuEAcvw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, symToClosure_1JM0Ep6665B6crlfoxbCuQ_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, makeClosure_fa9aZDXQ04CAodm0trAX6LA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* prc, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* env, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
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(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipConv_6rsSLwtlU9c53a6w69be5JlQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, closureCreationForIter_aBUE4CjNZyw9ch83XM4bSVA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* iter, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, addUniqueField_Zfb4vN0tAoBMTGhlnilqlw)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, accessViaEnvParam_8CYqf1nXlpBtnWvyO6vrCw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getFieldFromObj_sPvxCTTh2RHJtZkW3Hjqrg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, accessViaEnvVar_1JM0Ep6665B6crlfoxbCuQ_3)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c);
static N_INLINE(NIM_BOOL, liftingHarmful_DDNey2DPZ4OnXu79csWJF9aglambdalifting)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIntTypeNode_IoblBePQdnK3IoXX7b1EDg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NI64 intVal, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
TNimType NTI_CrsGUD9a6sd4xCGl64gvIdQ_;
extern TNimType NTI_PQrmFm4BXFkFSVOUl1ojSg_;
extern TNimType NTI_Os4it9bmHnOQtsd5CqH09aRQ_;
extern TNimType NTI_VaVACK0bpYmqIQ0mKcHfQQ_;
extern TNimType NTI_KfdHSsl8vyUCSI9b3inBcww_;
TNimType NTI_xciiuOR269bKYtnZXJZ4Npw_;
extern TNimType NTI_JrI9bTpOVccKpiJXKOskjFg_;
extern TNimType NTI_rR5Bzr1D5krxoo1NcNyeMA_;
extern tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_4, ":envP", 5);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_5, ":state", 6);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_6, "internal error: inconsistent environment type", 45);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_7, "internal error: could not find env param for ", 45);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_8, "\'$1\' is of type <$2> which cannot be captured as it would viola"
"te memory safety, declared here: $3", 98);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_9, "illegal capture \'$1\' because \'$2\' has the calling convention: <"
"$3>", 66);
extern NIM_CONST tyArray_t1sx1FVcaX4m77XqENedIQ CallingConvToStr_oBp2P4atsy9a7A9avgprVSeg;
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_10, "internal error: invalid up reference computed", 45);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_11, ":up", 3);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_12, "internal error: up references do not agree", 42);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_13, "internal error: could not determine closure type", 48);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_14, ":env", 4);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_15, "internalNew", 11);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_16, "could not find up reference for closure iter", 44);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_17, "internal error: cannot create up reference", 42);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_18, "internal error: taking closure of closure", 41);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_19, "internal error: cannot create up reference for iter", 51);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_20, "internal error: no environment found", 36);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_21, "internal error: environment misses: ", 36);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_22, "internal error: not part of closure object type", 47);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_23, "ignored invalid for loop", 24);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_24, "internal error: cannot generate fresh variable", 46);
STRING_LITERAL(TM_PI7oJkFuxeeTWjPTjlNxqg_25, ":result", 7);

static N_INLINE(NIM_BOOL, interestingVar_IELEC9bh3Fwz59a9beMw09cMawlambdalifting)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T2_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T2_ = (NIM_BOOL)0;
	T2_ = ((2100008 &(1U<<((NU)((*s).kind)&31U)))!=0);
	if (!(T2_)) goto LA3_;
	T2_ = !((((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 3))&63U)))!=0));
	LA3_: ;
	T1_ = T2_;
	if (!(T1_)) goto LA4_;
	T1_ = !(((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 60) || (*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 8)));
	LA4_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, semCaptureSym_gjv8Bt4Od6mrP2aUY07hoA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = interestingVar_IELEC9bh3Fwz59a9beMw09cMawlambdalifting(s);
		if (!(T3_)) goto LA4_;
		T3_ = !(((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 11)));
		LA4_: ;
		if (!T3_) goto LA5_;
		{
			NIM_BOOL T9_;
			NIM_BOOL T11_;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* o;
			T9_ = (NIM_BOOL)0;
			T9_ = !(((*owner).typ == NIM_NIL));
			if (!(T9_)) goto LA10_;
			T11_ = (NIM_BOOL)0;
			T11_ = isGenericRoutine_fqH89bI309asBDvp00Y3VVQA(owner);
			T9_ = !(T11_);
			LA10_: ;
			if (!T9_) goto LA12_;
			o = skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2(owner);
			{
				while (1) {
					NIM_BOOL T16_;
					T16_ = (NIM_BOOL)0;
					T16_ = !(((*o).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6)));
					if (!(T16_)) goto LA17_;
					T16_ = !((o == NIM_NIL));
					LA17_: ;
					if (!T16_) goto LA15;
					{
						if (!((*s).owner == o)) goto LA20_;
						{
							NIM_BOOL T24_;
							T24_ = (NIM_BOOL)0;
							T24_ = ((257 &(1U<<((NU)((*(*owner).typ).callConv)&15U)))!=0);
							if (T24_) goto LA25_;
							T24_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
							LA25_: ;
							if (!T24_) goto LA26_;
							(*(*owner).typ).callConv = ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8);
						}
						goto LA22_;
						LA26_: ;
						{
						}
						LA22_: ;
					}
					LA20_: ;
					o = skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2(o);
				} LA15: ;
			}
		}
		LA12_: ;
	}
	LA5_: ;
}

static N_INLINE(void, nimSetMem_2Mfumf6CnyNlShDWdIgobwsystem)(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_2Mfumf6CnyNlShDWdIgobwsystem(p, ((int) 0), size);
}

N_LIB_PRIVATE N_NIMCALL(void, initDetectionPass_4CCBwDujiGy6YiQqoXJBmA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* Result) {
	genericReset((void*)Result, (&NTI_CrsGUD9a6sd4xCGl64gvIdQ_));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&(*Result).processed));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&(*Result).capturedVars));
	initTable_Z0P6P58YBdVjpZlNtweBfA(((NI) 64), (&(*Result).ownerToType));
	incl_iUpE9bYmIR0fROyJskQwN8g((&(*Result).processed), (*fn).Sup.id);
	unsureAsgnRef((void**) (&(*Result).graph), g);
}

N_LIB_PRIVATE N_NIMCALL(void, initLiftingPass_HXrCsX5pXNSDQAdrIHzdgg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* Result) {
	genericReset((void*)Result, (&NTI_xciiuOR269bKYtnZXJZ4Npw_));
	initIntSet_a9a80eJplB17xrdZJ41Baww((&(*Result).processed));
	incl_iUpE9bYmIR0fROyJskQwN8g((&(*Result).processed), (*fn).Sup.id);
	initTable_nY9aBzJgd0qDIvm7CK9bVIcA(((NI) 64), (&(*Result).envVars));
}

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_DCrUjdaMvFDHaR1hs7sQGwropes)(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_DCrUjdaMvFDHaR1hs7sQGwropes(((void*) ((&a->data[((NI) 0)]))), ((void*) ((&b->data[((NI) 0)]))), ((NI) (alen)));
		goto BeforeRet_;
	}
	LA3_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getEnvParam_ypCrx6fkmVfhsiJZgqHbwA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* routine) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* hidden;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	params = (*(*routine).ast)._Ukind.S6.sons->data[((NI) 3)];
	hidden = lastSon_esDJA7239bJDiq4UrX9aHCjg(params);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*hidden).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		if (!(T3_)) goto LA4_;
		T3_ = eqStrings((*(*(*hidden)._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_4));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = (*hidden)._Ukind.S4.sym;
	}
	LA5_: ;
	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_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, createClosureIterStateType_yJRvBacfewo9bdyScE2nw2g)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* iter) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* intType;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	n = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 44), (*iter).info);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = newIntNode_v2VGJAZNfKPVngZCqEXQtA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(-1));
	addSon_gCCf68XrWL79bKes6htzFjQ_2(n, T1_);
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = newIntNode_v2VGJAZNfKPVngZCqEXQtA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(0));
	addSon_gCCf68XrWL79bKes6htzFjQ_2(n, T2_);
	result = newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20), iter);
	asgnRefNoCycle((void**) (&(*result).n), n);
	intType = nilOrSysInt_GcPekesqCBcC9a6bq8ZcZKg(g);
	{
		if (!(intType == 0)) goto LA5_;
		intType = newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31), iter);
	}
	LA5_: ;
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, intType);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, createStateField_TgYaD9azNHeiJdSPcrOB6SA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* iter) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*g).cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_5));
	result = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 19), T1_, iter, (*iter).info, 0);
	asgnRefNoCycle((void**) (&(*result).typ), createClosureIterStateType_yJRvBacfewo9bdyScE2nw2g(g, iter));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, createEnvObj_yerah9cqA5paeC9cleB16O1w)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T1_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = createObj_hfiqaGhMR5vPI6kJc04yUw(g, owner, info, NIM_FALSE);
	T1_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = createStateField_TgYaD9azNHeiJdSPcrOB6SA(g, owner);
	rawAddField_Bitp83Rxsm0jGD3Eqxs1qg(result, T1_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, getEnvTypeForOwner_BBRprp0HkxL5S9csRfapI8Q)(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = getOrDefault_Q456uU89bdR9cKc4yVk8z7Mw((*c).ownerToType, (*owner).Sup.id);
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj;
		if (!(result == 0)) goto LA3_;
		result = newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 22), owner);
		obj = createEnvObj_yerah9cqA5paeC9cleB16O1w((*c).graph, owner, info);
		rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, obj);
		X5BX5Deq__4J2KxaBA7Xsqtl1DOjhmuw((&(*c).ownerToType), (*owner).Sup.id, result);
	}
	LA3_: ;
	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;
}

N_LIB_PRIVATE N_NIMCALL(void, addHiddenParam_lRSGY6ajrRDZiGy74wKKPg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* routine, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* param) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params;
	NI T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T2_;
	params = (*(*routine).ast)._Ukind.S6.sons->data[((NI) 3)];
	T1_ = (NI)0;
	T1_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*(*routine).typ).n);
	(*param).position = (NI)(T1_ - ((NI) 1));
	T2_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T2_ = newSymNode_UWZXukHA5As9aCftRHbafBg(param);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(params, T2_);
}

N_LIB_PRIVATE N_NIMCALL(void, addClosureParam_lKI5vTqvn65UP6LyU15ZDg)(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* cp;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	cp = getEnvParam_ypCrx6fkmVfhsiJZgqHbwA(fn);
	{
		if (!((*fn).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15))) goto LA3_;
		owner = fn;
	}
	goto LA1_;
	LA3_: ;
	{
		owner = skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2(fn);
	}
	LA1_: ;
	t = getEnvTypeForOwner_BBRprp0HkxL5S9csRfapI8Q(c, owner, info);
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T10_;
		if (!(cp == NIM_NIL)) goto LA8_;
		T10_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T10_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*c).graph).cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_4));
		cp = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3), T10_, fn, (*fn).info, 0);
		(*cp).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 2))%(sizeof(NU64)*8));
		asgnRefNoCycle((void**) (&(*cp).typ), t);
		addHiddenParam_lRSGY6ajrRDZiGy74wKKPg(fn, cp);
	}
	goto LA6_;
	LA8_: ;
	{
		NIM_BOOL T12_;
		T12_ = (NIM_BOOL)0;
		T12_ = !(((*cp).typ == t));
		if (!(T12_)) goto LA13_;
		T12_ = !(((*fn).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15)));
		LA13_: ;
		if (!T12_) goto LA14_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*fn).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_6));
	}
	goto LA6_;
	LA14_: ;
	LA6_: ;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isInnerProc_QceDO8m9cZ0OIoTTIT9b6gPA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		NIM_BOOL T3_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((126976 &(1U<<((NU)((*s).kind)&31U)))!=0);
		if (!(T3_)) goto LA4_;
		T3_ = ((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0));
		LA4_: ;
		if (!T3_) goto LA5_;
		T7_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T7_ = skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2(s);
		result = ((520192 &(1U<<((NU)((*T7_).kind)&31U)))!=0);
	}
	LA5_: ;
	return result;
}

static N_INLINE(NIM_BOOL, interestingIterVar_IELEC9bh3Fwz59a9beMw09cMaw_2lambdalifting)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((2100000 &(1U<<((NU)((*s).kind)&31U)))!=0);
	if (!(T1_)) goto LA2_;
	T1_ = !((((*s).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 3))&63U)))!=0));
	LA2_: ;
	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_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_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* routine) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* params;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* hidden;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	params = (*(*routine).ast)._Ukind.S6.sons->data[((NI) 3)];
	hidden = lastSon_esDJA7239bJDiq4UrX9aHCjg(params);
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = ((*hidden).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		if (!(T4_)) goto LA5_;
		T4_ = ((*(*hidden)._Ukind.S4.sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T3_ = eqStrings((*(*(*hidden)._Ukind.S4.sym).name).s, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_4));
		LA6_: ;
		if (!T3_) goto LA7_;
		result = (*hidden)._Ukind.S4.sym;
	}
	goto LA1_;
	LA7_: ;
	{
		NimStringDesc* T10_;
		T10_ = (NimStringDesc*)0;
		T10_ = rawNewString(((*(*routine).name).s ? (*(*routine).name).s->Sup.len : 0) + 45);
appendString(T10_, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_7));
appendString(T10_, (*(*routine).name).s);
		localError_NF6kBGchnhQYPbCedyefVA((*g).config, (*routine).info, T10_);
		result = routine;
	}
	LA1_: ;
	return result;
}

static N_INLINE(NIM_BOOL, illegalCapture_IELEC9bh3Fwz59a9beMw09cMaw_3lambdalifting)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T2_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T2_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T2_ = skipTypes_7vZ9a9bub9bucX5E73hsr9cjvg((*s).typ, IL64(36099165763184912));
	T1_ = ((*T2_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23) || (*T2_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 27) || (*T2_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 48) || (*T2_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 47));
	if (T1_) goto LA3_;
	T1_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 11));
	LA3_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, markAsClosure_pewMCU9aolg9bl79a4WiPZ4HA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	s = (*n)._Ukind.S4.sym;
	{
		NIM_BOOL T3_;
		tyArray_24KAM9afIUgUaqBaEBB6r9bg T6_;
		NimStringDesc* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = illegalCapture_IELEC9bh3Fwz59a9beMw09cMaw_3lambdalifting(s);
		if (!T3_) goto LA4_;
		nimZeroMem((void*)T6_, sizeof(tyArray_24KAM9afIUgUaqBaEBB6r9bg));
		T6_[0] = copyString((*(*s).name).s);
		T6_[1] = typeToString_QlvraUan7WbHowhAbvDvdA((*s).typ, ((tyEnum_TPreferedDesc_tnd4qt9c4xddV8oKV5zyusw) 0));
		T6_[2] = dollar__tduYJIZOMabvcOCb9bVwWCA_2((*g).config, (*s).info);
		T7_ = (NimStringDesc*)0;
		T7_ = nsuFormatOpenArray(((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_8), T6_, 3);
		localError_NF6kBGchnhQYPbCedyefVA((*g).config, (*n).info, T7_);
	}
	goto LA1_;
	LA4_: ;
	{
		tyArray_24KAM9afIUgUaqBaEBB6r9bg T11_;
		NimStringDesc* T12_;
		if (!!(((257 &(1U<<((NU)((*(*owner).typ).callConv)&15U)))!=0))) goto LA9_;
		nimZeroMem((void*)T11_, sizeof(tyArray_24KAM9afIUgUaqBaEBB6r9bg));
		T11_[0] = copyString((*(*s).name).s);
		T11_[1] = copyString((*(*owner).name).s);
		T11_[2] = copyString(CallingConvToStr_oBp2P4atsy9a7A9avgprVSeg[((*(*owner).typ).callConv)- 0]);
		T12_ = (NimStringDesc*)0;
		T12_ = nsuFormatOpenArray(((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_9), T11_, 3);
		localError_NF6kBGchnhQYPbCedyefVA((*g).config, (*n).info, T12_);
	}
	goto LA1_;
	LA9_: ;
	LA1_: ;
	(*(*owner).typ).flags |= ((NU64)1)<<((((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 12))%(sizeof(NU64)*8));
	(*(*owner).typ).callConv = ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8);
}

N_LIB_PRIVATE N_NIMCALL(void, createUpField_vlqsfLq9b9cUFFP9cvYdZU3LA)(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* c, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* dest, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* dep, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* refObj;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* fieldType;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* upIdent;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* upField;
	refObj = getEnvTypeForOwner_BBRprp0HkxL5S9csRfapI8Q(c, dest, info);
	obj = lastSon_ab52xel9cFebv9am0xV04xXA(refObj);
	fieldType = getEnvTypeForOwner_BBRprp0HkxL5S9csRfapI8Q(c, dep, info);
	{
		if (!(refObj == fieldType)) goto LA3_;
		localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*dep).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_10));
	}
	LA3_: ;
	upIdent = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*c).graph).cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_11));
	upField = lookupInRecord_UKAypME5AMFgsArDll8WMg((*obj).n, upIdent);
	{
		if (!!((upField == NIM_NIL))) goto LA7_;
		{
			if (!!(((*upField).typ == fieldType))) goto LA11_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*c).graph).config, (*dep).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_12));
		}
		LA11_: ;
	}
	goto LA5_;
	LA7_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
		result = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 19), upIdent, (*obj).owner, (*(*obj).owner).info, 0);
		asgnRefNoCycle((void**) (&(*result).typ), fieldType);
		rawAddField_Bitp83Rxsm0jGD3Eqxs1qg(obj, result);
	}
	LA5_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, detectCapturedVars_knMMYMrxMvpPAdvZhU1Tjg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* c) {
{	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		NIM_BOOL innerProc;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* ow;
		s = (*n)._Ukind.S4.sym;
		{
			NIM_BOOL T4_;
			NIM_BOOL T5_;
			T4_ = (NIM_BOOL)0;
			T5_ = (NIM_BOOL)0;
			T5_ = ((126976 &(1U<<((NU)((*s).kind)&31U)))!=0);
			if (!(T5_)) goto LA6_;
			T5_ = !(((*s).typ == NIM_NIL));
			LA6_: ;
			T4_ = T5_;
			if (!(T4_)) goto LA7_;
			T4_ = ((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
			LA7_: ;
			if (!T4_) goto LA8_;
			addClosureParam_lKI5vTqvn65UP6LyU15ZDg(c, s, (*n).info);
			(*c).somethingToDo = NIM_TRUE;
		}
		LA8_: ;
		innerProc = isInnerProc_QceDO8m9cZ0OIoTTIT9b6gPA(s);
		{
			if (!innerProc) goto LA12_;
			{
				NIM_BOOL T16_;
				T16_ = (NIM_BOOL)0;
				T16_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
				if (!(T16_)) goto LA17_;
				T16_ = ((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
				LA17_: ;
				if (!T16_) goto LA18_;
				(*c).somethingToDo = NIM_TRUE;
			}
			LA18_: ;
			{
				NIM_BOOL T22_;
				T22_ = (NIM_BOOL)0;
				T22_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg((&(*c).processed), (*s).Sup.id);
				if (!!(T22_)) goto LA23_;
				detectCapturedVars_knMMYMrxMvpPAdvZhU1Tjg((*(*s).ast)._Ukind.S6.sons->data[((NI) 6)], s, c);
			}
			LA23_: ;
		}
		LA12_: ;
		ow = skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2(s);
		{
			if (!(ow == owner)) goto LA27_;
			{
				NIM_BOOL T31_;
				T31_ = (NIM_BOOL)0;
				T31_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
				if (!(T31_)) goto LA32_;
				T31_ = ((*(*owner).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
				LA32_: ;
				if (!T31_) goto LA33_;
				(*c).somethingToDo = NIM_TRUE;
				addClosureParam_lKI5vTqvn65UP6LyU15ZDg(c, owner, (*n).info);
				{
					NIM_BOOL T37_;
					T37_ = (NIM_BOOL)0;
					T37_ = interestingIterVar_IELEC9bh3Fwz59a9beMw09cMaw_2lambdalifting(s);
					if (!T37_) goto LA38_;
					{
						NIM_BOOL T42_;
						tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj;
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T45_;
						T42_ = (NIM_BOOL)0;
						T42_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg((&(*c).capturedVars), (*s).Sup.id);
						if (!!(T42_)) goto LA43_;
						T45_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
						T45_ = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA((*c).graph, owner);
						obj = lastSon_ab52xel9cFebv9am0xV04xXA((*T45_).typ);
						{
							tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T48_;
							T48_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
							T48_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*c).graph).cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_5));
							if (!((*(*s).name).Sup.id == (*T48_).Sup.id)) goto LA49_;
							(*(*(*(*obj).n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).Sup.id = ((NI32)-((*s).Sup.id));
						}
						goto LA46_;
						LA49_: ;
						{
							addField_9aBQ2L5yxhC7S5oG233tzIA(obj, s, (*(*c).graph).cache);
						}
						LA46_: ;
					}
					LA43_: ;
				}
				LA38_: ;
			}
			LA33_: ;
			goto BeforeRet_;
		}
		LA27_: ;
		{
			NIM_BOOL T54_;
			NIM_BOOL T55_;
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* w;
			T54_ = (NIM_BOOL)0;
			T55_ = (NIM_BOOL)0;
			T55_ = innerProc;
			if (!(T55_)) goto LA56_;
			T55_ = ((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
			LA56_: ;
			T54_ = T55_;
			if (T54_) goto LA57_;
			T54_ = interestingVar_IELEC9bh3Fwz59a9beMw09cMawlambdalifting(s);
			LA57_: ;
			if (!T54_) goto LA58_;
			(*c).somethingToDo = NIM_TRUE;
			markAsClosure_pewMCU9aolg9bl79a4WiPZ4HA((*c).graph, owner, n);
			addClosureParam_lKI5vTqvn65UP6LyU15ZDg(c, owner, (*n).info);
			{
				NIM_BOOL T62_;
				NIM_BOOL T64_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj_2;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T67_;
				T62_ = (NIM_BOOL)0;
				T62_ = interestingVar_IELEC9bh3Fwz59a9beMw09cMawlambdalifting(s);
				if (!(T62_)) goto LA63_;
				T64_ = (NIM_BOOL)0;
				T64_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg((&(*c).capturedVars), (*s).Sup.id);
				T62_ = !(T64_);
				LA63_: ;
				if (!T62_) goto LA65_;
				T67_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T67_ = getEnvTypeForOwner_BBRprp0HkxL5S9csRfapI8Q(c, ow, (*n).info);
				obj_2 = lastSon_ab52xel9cFebv9am0xV04xXA(T67_);
				addField_9aBQ2L5yxhC7S5oG233tzIA(obj_2, s, (*(*c).graph).cache);
			}
			LA65_: ;
			w = skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2(owner);
			{
				NIM_BOOL T70_;
				NIM_BOOL T72_;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* last;
				T70_ = (NIM_BOOL)0;
				T70_ = isInnerProc_QceDO8m9cZ0OIoTTIT9b6gPA(w);
				if (T70_) goto LA71_;
				T72_ = (NIM_BOOL)0;
				T72_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
				if (!(T72_)) goto LA73_;
				T72_ = ((*(*owner).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
				LA73_: ;
				T70_ = T72_;
				LA71_: ;
				if (!T70_) goto LA74_;
				{
					NIM_BOOL T78_;
					T78_ = (NIM_BOOL)0;
					T78_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
					if (!(T78_)) goto LA79_;
					T78_ = ((*(*owner).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
					LA79_: ;
					if (!T78_) goto LA80_;
					w = owner;
				}
				LA80_: ;
				{
					NIM_BOOL T84_;
					T84_ = (NIM_BOOL)0;
					T84_ = ((*ow).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
					if (!(T84_)) goto LA85_;
					T84_ = ((*(*ow).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
					LA85_: ;
					if (!T84_) goto LA86_;
					last = skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2(ow);
				}
				goto LA82_;
				LA86_: ;
				{
					last = ow;
				}
				LA82_: ;
				{
					while (1) {
						NIM_BOOL T91_;
						NIM_BOOL T92_;
						tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* up;
						T91_ = (NIM_BOOL)0;
						T92_ = (NIM_BOOL)0;
						T92_ = !((w == NIM_NIL));
						if (!(T92_)) goto LA93_;
						T92_ = !(((*w).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6)));
						LA93_: ;
						T91_ = T92_;
						if (!(T91_)) goto LA94_;
						T91_ = !((last == w));
						LA94_: ;
						if (!T91_) goto LA90;
						up = skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2(w);
						markAsClosure_pewMCU9aolg9bl79a4WiPZ4HA((*c).graph, w, n);
						addClosureParam_lKI5vTqvn65UP6LyU15ZDg(c, w, (*n).info);
						createUpField_vlqsfLq9b9cUFFP9cvYdZU3LA(c, w, up, (*n).info);
						w = up;
					} LA90: ;
				}
			}
			LA74_: ;
		}
		LA58_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 80):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 82):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
		{
			if (!!(((*n).typ == NIM_NIL))) goto LA100_;
			detectCapturedVars_knMMYMrxMvpPAdvZhU1Tjg((*n)._Ukind.S6.sons->data[((NI) 0)], owner, c);
		}
		LA100_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 109):
	{
		{
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73) || (*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 74))) goto LA105_;
			detectCapturedVars_knMMYMrxMvpPAdvZhU1Tjg((*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)], owner, c);
		}
		goto LA103_;
		LA105_: ;
		{
		}
		LA103_: ;
	}
	break;
	default:
	{
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA111;
					i = i_2;
					detectCapturedVars_knMMYMrxMvpPAdvZhU1Tjg((*n)._Ukind.S6.sons->data[i], owner, c);
					i_2 += ((NI) 1);
				} LA111: ;
			}
		}
	}
	break;
	}
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newEnvVar_boAyOiRoK1aByOyDiQCATw)(tyObject_IdentCachecolonObjectType__TzLHS09bRH9a0TYLs39cqcNaw* cache, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ(cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_14));
	v = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 8), T1_, owner, (*owner).info, 0);
	(*v).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 22))%(sizeof(NU64)*8));
	asgnRefNoCycle((void**) (&(*v).typ), typ);
	result = newSymNode_UWZXukHA5As9aCftRHbafBg(v);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, setupEnvVar_052ZWuigreNR2S9cutQVuLw_2)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
		if (!(T3_)) goto LA4_;
		T3_ = ((*(*owner).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA4_: ;
		if (!T3_) goto LA5_;
		T7_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T7_ = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA((*d).graph, owner);
		result = newSymNode_UWZXukHA5As9aCftRHbafBg(T7_);
		goto BeforeRet_;
	}
	LA5_: ;
	result = getOrDefault_cAkAEwfW9cxC2y2UQOZz2Aw((*c).envVars, (*owner).Sup.id);
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* envVarType;
		if (!(result == 0)) goto LA10_;
		envVarType = getOrDefault_Q456uU89bdR9cKc4yVk8z7Mw((*d).ownerToType, (*owner).Sup.id);
		{
			if (!(envVarType == 0)) goto LA14_;
			localError_NF6kBGchnhQYPbCedyefVA((*(*d).graph).config, (*owner).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_13));
		}
		LA14_: ;
		result = newEnvVar_boAyOiRoK1aByOyDiQCATw((*(*d).graph).cache, owner, envVarType);
		X5BX5Deq__5EsDXhxconxyEkG2G09cLrQ((&(*c).envVars), (*owner).Sup.id, result);
	}
	LA10_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newCall_SS4raV1ef5ogLtVG9a561Dg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), (*a).info);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = newSymNode_UWZXukHA5As9aCftRHbafBg(a);
	add_gCCf68XrWL79bKes6htzFjQ(result, T1_);
	add_gCCf68XrWL79bKes6htzFjQ(result, b);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newAsgnStmt_34fQKQksHbjJ6cX9a0k36Kw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* le, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ri, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), info, ((NI) 2));
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), le);
	asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), ri);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getUpViaParam_5aTkGMxbYzGq8tgBuEAcvw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* p;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	p = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA(g, owner);
	result = newSymNode_UWZXukHA5As9aCftRHbafBg(p);
	{
		NIM_BOOL T3_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* upField;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T7_;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T8_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
		if (!(T3_)) goto LA4_;
		T3_ = ((*(*owner).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA4_: ;
		if (!T3_) goto LA5_;
		T7_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T7_ = lastSon_ab52xel9cFebv9am0xV04xXA((*p).typ);
		T8_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T8_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*g).cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_11));
		upField = lookupInRecord_UKAypME5AMFgsArDll8WMg((*T7_).n, T8_);
		{
			if (!(upField == NIM_NIL)) goto LA11_;
			localError_NF6kBGchnhQYPbCedyefVA((*g).config, (*owner).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_16));
		}
		goto LA9_;
		LA11_: ;
		{
			result = rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA(result, upField, (*p).info);
		}
		LA9_: ;
	}
	LA5_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, rawClosureCreation_052ZWuigreNR2S9cutQVuLw)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* env;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* upField;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T25_;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T26_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*owner).info);
	env = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
		if (!(T3_)) goto LA4_;
		T3_ = ((*(*owner).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA4_: ;
		if (!T3_) goto LA5_;
		T7_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T7_ = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA((*d).graph, owner);
		env = newSymNode_UWZXukHA5As9aCftRHbafBg(T7_);
	}
	goto LA1_;
	LA5_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T13_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T14_;
		env = setupEnvVar_052ZWuigreNR2S9cutQVuLw_2(owner, d, c);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v;
			if (!((*env).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA11_;
			v = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99), (*env).info);
			addVar_ZIvdnLvRaA7wqS0zjam6gw(v, env);
			add_gCCf68XrWL79bKes6htzFjQ(result, v);
		}
		LA11_: ;
		T13_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T13_ = getSysSym_9bvw79ck1FDiWpnBYh88rEfw((*d).graph, (*env).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_15));
		T14_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T14_ = newCall_SS4raV1ef5ogLtVG9a561Dg(T13_, env);
		add_gCCf68XrWL79bKes6htzFjQ(result, T14_);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*(*owner).typ).n);
			i_2 = ((NI) 1);
			{
				while (1) {
					tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* local;
					if (!(i_2 < colontmp_)) goto LA17;
					i = i_2;
					local = (*(*(*(*owner).typ).n)._Ukind.S6.sons->data[i])._Ukind.S4.sym;
					{
						NIM_BOOL T20_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fieldAccess;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T23_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T24_;
						T20_ = (NIM_BOOL)0;
						T20_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*d).capturedVars), (*local).Sup.id);
						if (!T20_) goto LA21_;
						fieldAccess = indirectAccess_8tV19blySRgoa3CaurasypA(env, local, (*env).info);
						T23_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T23_ = newSymNode_UWZXukHA5As9aCftRHbafBg(local);
						T24_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T24_ = newAsgnStmt_34fQKQksHbjJ6cX9a0k36Kw(fieldAccess, T23_, (*env).info);
						add_gCCf68XrWL79bKes6htzFjQ(result, T24_);
					}
					LA21_: ;
					i_2 += ((NI) 1);
				} LA17: ;
			}
		}
	}
	LA1_: ;
	T25_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T25_ = lastSon_ab52xel9cFebv9am0xV04xXA((*env).typ);
	T26_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T26_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*d).graph).cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_11));
	upField = lookupInRecord_UKAypME5AMFgsArDll8WMg((*T25_).n, T26_);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* up;
		if (!!((upField == NIM_NIL))) goto LA29_;
		up = getUpViaParam_5aTkGMxbYzGq8tgBuEAcvw((*d).graph, owner);
		{
			NIM_BOOL T33_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T37_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T38_;
			T33_ = (NIM_BOOL)0;
			T33_ = !((up == NIM_NIL));
			if (!(T33_)) goto LA34_;
			T33_ = ((*upField).typ == (*up).typ);
			LA34_: ;
			if (!T33_) goto LA35_;
			T37_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T37_ = rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA(env, upField, (*env).info);
			T38_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T38_ = newAsgnStmt_34fQKQksHbjJ6cX9a0k36Kw(T37_, up, (*env).info);
			add_gCCf68XrWL79bKes6htzFjQ(result, T38_);
		}
		goto LA31_;
		LA35_: ;
		{
			localError_NF6kBGchnhQYPbCedyefVA((*(*d).graph).config, (*env).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_17));
		}
		LA31_: ;
	}
	LA29_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, makeClosure_fa9aZDXQ04CAodm0trAX6LA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* prc, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* env, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 155), info, (*prc).typ);
	T1_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = newSymNode_UWZXukHA5As9aCftRHbafBg(prc);
	add_gCCf68XrWL79bKes6htzFjQ(result, T1_);
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T6_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T7_;
		if (!(env == NIM_NIL)) goto LA4_;
		T6_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T6_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg(g, info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 5));
		T7_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T7_ = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23), info, T6_);
		add_gCCf68XrWL79bKes6htzFjQ(result, T7_);
	}
	goto LA2_;
	LA4_: ;
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
			T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T11_ = skipConv_6rsSLwtlU9c53a6w69be5JlQ(env);
			if (!((*T11_).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 155))) goto LA12_;
			localError_NF6kBGchnhQYPbCedyefVA((*g).config, info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_18));
		}
		LA12_: ;
		add_gCCf68XrWL79bKes6htzFjQ(result, env);
	}
	LA2_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, closureCreationForIter_aBUE4CjNZyw9ch83XM4bSVA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* iter, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* v;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T2_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* vnode;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T12_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T13_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* upField;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T14_;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T15_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T27_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126), (*iter).info, (*(*iter)._Ukind.S4.sym).typ);
	owner = skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2((*iter)._Ukind.S4.sym);
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*d).graph).cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_14));
	v = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 8), T1_, owner, (*iter).info, 0);
	(*v).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 22))%(sizeof(NU64)*8));
	T2_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T2_ = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA((*d).graph, (*iter)._Ukind.S4.sym);
	asgnRefNoCycle((void**) (&(*v).typ), (*T2_).typ);
	vnode = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T5_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* it;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T9_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T10_;
		T5_ = (NIM_BOOL)0;
		T5_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
		if (!(T5_)) goto LA6_;
		T5_ = ((*(*owner).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA6_: ;
		if (!T5_) goto LA7_;
		it = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA((*d).graph, owner);
		T9_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T9_ = addUniqueField_Zfb4vN0tAoBMTGhlnilqlw((*(*it).typ).sons->data[((NI) 0)], v, (*(*d).graph).cache);
		T10_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T10_ = newSymNode_UWZXukHA5As9aCftRHbafBg(it);
		vnode = indirectAccess_8tV19blySRgoa3CaurasypA(T10_, v, (*v).info);
	}
	goto LA3_;
	LA7_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* vs;
		vnode = newSymNode_UWZXukHA5As9aCftRHbafBg(v);
		vs = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99), (*iter).info);
		addVar_ZIvdnLvRaA7wqS0zjam6gw(vs, vnode);
		add_gCCf68XrWL79bKes6htzFjQ(result, vs);
	}
	LA3_: ;
	T12_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T12_ = getSysSym_9bvw79ck1FDiWpnBYh88rEfw((*d).graph, (*iter).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_15));
	T13_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T13_ = newCall_SS4raV1ef5ogLtVG9a561Dg(T12_, vnode);
	add_gCCf68XrWL79bKes6htzFjQ(result, T13_);
	T14_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T14_ = lastSon_ab52xel9cFebv9am0xV04xXA((*v).typ);
	T15_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T15_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*d).graph).cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_11));
	upField = lookupInRecord_UKAypME5AMFgsArDll8WMg((*T14_).n, T15_);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* u;
		if (!!((upField == NIM_NIL))) goto LA18_;
		u = setupEnvVar_052ZWuigreNR2S9cutQVuLw_2(owner, d, c);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T24_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T25_;
			if (!((*u).typ == (*upField).typ)) goto LA22_;
			T24_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T24_ = rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA(vnode, upField, (*iter).info);
			T25_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T25_ = newAsgnStmt_34fQKQksHbjJ6cX9a0k36Kw(T24_, u, (*iter).info);
			add_gCCf68XrWL79bKes6htzFjQ(result, T25_);
		}
		goto LA20_;
		LA22_: ;
		{
			localError_NF6kBGchnhQYPbCedyefVA((*(*d).graph).config, (*iter).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_19));
		}
		LA20_: ;
	}
	LA18_: ;
	T27_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T27_ = makeClosure_fa9aZDXQ04CAodm0trAX6LA((*d).graph, (*iter)._Ukind.S4.sym, vnode, (*iter).info);
	add_gCCf68XrWL79bKes6htzFjQ(result, T27_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, symToClosure_1JM0Ep6665B6crlfoxbCuQ_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	s = (*n)._Ukind.S4.sym;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* available;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
		if (!(s == owner)) goto LA3_;
		available = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA((*d).graph, owner);
		T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = newSymNode_UWZXukHA5As9aCftRHbafBg(available);
		result = makeClosure_fa9aZDXQ04CAodm0trAX6LA((*d).graph, s, T5_, (*n).info);
	}
	goto LA1_;
	LA3_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
		if (!(T7_)) goto LA8_;
		T7_ = ((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA8_: ;
		if (!T7_) goto LA9_;
		result = closureCreationForIter_aBUE4CjNZyw9ch83XM4bSVA(n, d, c);
	}
	goto LA1_;
	LA9_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T12_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T15_;
		T12_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T12_ = skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2(s);
		if (!(T12_ == owner)) goto LA13_;
		T15_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T15_ = setupEnvVar_052ZWuigreNR2S9cutQVuLw_2(owner, d, c);
		result = makeClosure_fa9aZDXQ04CAodm0trAX6LA((*d).graph, s, T15_, (*n).info);
	}
	goto LA1_;
	LA13_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* available_2;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* wanted;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T17_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* access;
		available_2 = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA((*d).graph, owner);
		T17_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T17_ = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA((*d).graph, s);
		wanted = (*T17_).typ;
		access = newSymNode_UWZXukHA5As9aCftRHbafBg(available_2);
		{
			while (1) {
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* upField;
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T24_;
				{
					if (!((*access).typ == wanted)) goto LA22_;
					result = makeClosure_fa9aZDXQ04CAodm0trAX6LA((*d).graph, s, access, (*n).info);
					goto BeforeRet_;
				}
				LA22_: ;
				obj = (*(*access).typ).sons->data[((NI) 0)];
				T24_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T24_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*d).graph).cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_11));
				upField = lookupInRecord_UKAypME5AMFgsArDll8WMg((*obj).n, T24_);
				{
					if (!(upField == NIM_NIL)) goto LA27_;
					localError_NF6kBGchnhQYPbCedyefVA((*(*d).graph).config, (*n).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_20));
					result = n;
					goto BeforeRet_;
				}
				LA27_: ;
				access = rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA(access, upField, (*n).info);
			}
		}
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, accessViaEnvParam_8CYqf1nXlpBtnWvyO6vrCw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* envParam;
	NimStringDesc* T16_;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	s = (*n)._Ukind.S4.sym;
	envParam = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA(g, owner);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* access;
		if (!!((envParam == 0))) goto LA3_;
		access = newSymNode_UWZXukHA5As9aCftRHbafBg(envParam);
		{
			while (1) {
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* upField;
				tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T11_;
				obj = (*(*access).typ).sons->data[((NI) 0)];
				field = getFieldFromObj_sPvxCTTh2RHJtZkW3Hjqrg(obj, s);
				{
					if (!!((field == NIM_NIL))) goto LA9_;
					result = rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA(access, field, (*n).info);
					goto BeforeRet_;
				}
				LA9_: ;
				T11_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
				T11_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*g).cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_11));
				upField = lookupInRecord_UKAypME5AMFgsArDll8WMg((*obj).n, T11_);
				{
					if (!(upField == NIM_NIL)) goto LA14_;
					goto LA5;
				}
				LA14_: ;
				access = rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA(access, upField, (*n).info);
			}
		} LA5: ;
	}
	LA3_: ;
	T16_ = (NimStringDesc*)0;
	T16_ = rawNewString(((*(*s).name).s ? (*(*s).name).s->Sup.len : 0) + 36);
appendString(T16_, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_21));
appendString(T16_, (*(*s).name).s);
	localError_NF6kBGchnhQYPbCedyefVA((*g).config, (*n).info, T16_);
	result = n;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, accessViaEnvVar_1JM0Ep6665B6crlfoxbCuQ_3)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* access;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	access = setupEnvVar_052ZWuigreNR2S9cutQVuLw_2(owner, d, c);
	obj = (*(*access).typ).sons->data[((NI) 0)];
	field = getFieldFromObj_sPvxCTTh2RHJtZkW3Hjqrg(obj, (*n)._Ukind.S4.sym);
	{
		if (!!((field == NIM_NIL))) goto LA3_;
		result = rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA(access, field, (*n).info);
	}
	goto LA1_;
	LA3_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*(*d).graph).config, (*n).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_22));
		result = n;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, liftCapturedVars_1JM0Ep6665B6crlfoxbCuQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner, tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ* d, tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw* c) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
		s = (*n)._Ukind.S4.sym;
		{
			NIM_BOOL T4_;
			T4_ = (NIM_BOOL)0;
			T4_ = isInnerProc_QceDO8m9cZ0OIoTTIT9b6gPA(s);
			if (!T4_) goto LA5_;
			{
				NIM_BOOL T9_;
				NI oldInContainer;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body;
				T9_ = (NIM_BOOL)0;
				T9_ = containsOrIncl_B0EhVMrh5BBBZOOtYjAvVg((&(*c).processed), (*s).Sup.id);
				if (!!(T9_)) goto LA10_;
				oldInContainer = (*c).inContainer;
				(*c).inContainer = ((NI) 0);
				body = liftCapturedVars_1JM0Ep6665B6crlfoxbCuQ((*(*s).ast)._Ukind.S6.sons->data[((NI) 6)], s, d, c);
				{
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T14_;
					T14_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T14_ = getOrDefault_cAkAEwfW9cxC2y2UQOZz2Aw((*c).envVars, (*s).Sup.id);
					if (!(T14_ == 0)) goto LA15_;
					asgnRefNoCycle((void**) (&(*(*s).ast)._Ukind.S6.sons->data[((NI) 6)]), body);
				}
				goto LA12_;
				LA15_: ;
				{
					tyArray_AB6yfoUgfWM2NtGe9bzkCmw T18_;
					nimZeroMem((void*)T18_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
					T18_[0] = rawClosureCreation_052ZWuigreNR2S9cutQVuLw(s, d, c);
					T18_[1] = body;
					asgnRefNoCycle((void**) (&(*(*s).ast)._Ukind.S6.sons->data[((NI) 6)]), newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), T18_, 2));
				}
				LA12_: ;
				(*c).inContainer = oldInContainer;
			}
			LA10_: ;
			{
				if (!((*(*s).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8))) goto LA21_;
				result = symToClosure_1JM0Ep6665B6crlfoxbCuQ_2(n, owner, d, c);
			}
			LA21_: ;
		}
		goto LA2_;
		LA5_: ;
		{
			NIM_BOOL T24_;
			T24_ = (NIM_BOOL)0;
			T24_ = contains_sYBLNwnPJlAFi0nfWU79awg((&(*d).capturedVars), (*s).Sup.id);
			if (!T24_) goto LA25_;
			{
				if (!!(((*s).owner == owner))) goto LA29_;
				result = accessViaEnvParam_8CYqf1nXlpBtnWvyO6vrCw((*d).graph, n, owner);
			}
			goto LA27_;
			LA29_: ;
			{
				NIM_BOOL T32_;
				NIM_BOOL T33_;
				T32_ = (NIM_BOOL)0;
				T33_ = (NIM_BOOL)0;
				T33_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
				if (!(T33_)) goto LA34_;
				T33_ = ((*(*owner).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
				LA34_: ;
				T32_ = T33_;
				if (!(T32_)) goto LA35_;
				T32_ = interestingIterVar_IELEC9bh3Fwz59a9beMw09cMaw_2lambdalifting(s);
				LA35_: ;
				if (!T32_) goto LA36_;
				result = accessViaEnvParam_8CYqf1nXlpBtnWvyO6vrCw((*d).graph, n, owner);
			}
			goto LA27_;
			LA36_: ;
			{
				result = accessViaEnvVar_1JM0Ep6665B6crlfoxbCuQ_3(n, owner, d, c);
			}
			LA27_: ;
		}
		goto LA2_;
		LA25_: ;
		LA2_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 2):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 24):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 80):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 82):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 155):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23))) goto LA44_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), liftCapturedVars_1JM0Ep6665B6crlfoxbCuQ((*n)._Ukind.S6.sons->data[((NI) 0)], owner, d, c));
			x = skipConv_6rsSLwtlU9c53a6w69be5JlQ((*n)._Ukind.S6.sons->data[((NI) 0)]);
			{
				if (!((*x).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 155))) goto LA48_;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), (*x)._Ukind.S6.sons->data[((NI) 0)]);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), (*x)._Ukind.S6.sons->data[((NI) 1)]);
			}
			LA48_: ;
		}
		LA44_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
		{
			NIM_BOOL T53_;
			NI oldInContainer_2;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* m;
			T53_ = (NIM_BOOL)0;
			T53_ = !(((*n).typ == NIM_NIL));
			if (!(T53_)) goto LA54_;
			T53_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
			LA54_: ;
			if (!T53_) goto LA55_;
			oldInContainer_2 = (*c).inContainer;
			(*c).inContainer = ((NI) 0);
			m = newSymNode_UWZXukHA5As9aCftRHbafBg((*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym);
			asgnRefNoCycle((void**) (&(*m).typ), (*n).typ);
			result = liftCapturedVars_1JM0Ep6665B6crlfoxbCuQ(m, owner, d, c);
			(*c).inContainer = oldInContainer_2;
		}
		LA55_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58):
	{
		{
			NI T60_;
			T60_ = (NI)0;
			T60_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			if (!(T60_ == ((NI) 2))) goto LA61_;
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), liftCapturedVars_1JM0Ep6665B6crlfoxbCuQ((*n)._Ukind.S6.sons->data[((NI) 1)], owner, d, c));
			{
				if (!((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 155))) goto LA65_;
				result = (*n)._Ukind.S6.sons->data[((NI) 1)];
			}
			LA65_: ;
		}
		LA61_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 109):
	{
		{
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73) || (*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 74))) goto LA70_;
			asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)]), liftCapturedVars_1JM0Ep6665B6crlfoxbCuQ((*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 1)], owner, d, c));
		}
		goto LA68_;
		LA70_: ;
		{
		}
		LA68_: ;
	}
	break;
	default:
	{
		NIM_BOOL inContainer;
		{
			NIM_BOOL T76_;
			T76_ = (NIM_BOOL)0;
			T76_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
			if (!(T76_)) goto LA77_;
			T76_ = ((*(*owner).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
			LA77_: ;
			if (!T76_) goto LA78_;
			{
				if (!(((*n).flags &(1U<<((NU)(((tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg) 8))&31U)))!=0)) goto LA82_;
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), liftCapturedVars_1JM0Ep6665B6crlfoxbCuQ((*n)._Ukind.S6.sons->data[((NI) 1)], owner, d, c));
				goto BeforeRet_;
			}
			LA82_: ;
		}
		LA78_: ;
		inContainer = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 38) || (*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41));
		{
			if (!inContainer) goto LA86_;
			(*c).inContainer += ((NI) 1);
		}
		LA86_: ;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA90;
					i = i_2;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), liftCapturedVars_1JM0Ep6665B6crlfoxbCuQ((*n)._Ukind.S6.sons->data[i], owner, d, c));
					i_2 += ((NI) 1);
				} LA90: ;
			}
		}
		{
			if (!inContainer) goto LA93_;
			(*c).inContainer -= ((NI) 1);
		}
		LA93_: ;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, liftIterToProc_t1WUr4lePynddtLnmYOFEQ)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* ptrType) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ d;
	tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw c;
	tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw oldKind;
	tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA oldCC;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&d), sizeof(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ));
	initDetectionPass_4CCBwDujiGy6YiQqoXJBmA(g, fn, (&d));
	nimZeroMem((void*)(&c), sizeof(tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw));
	initLiftingPass_HXrCsX5pXNSDQAdrIHzdgg(fn, (&c));
	oldKind = (*fn).kind;
	oldCC = (*(*fn).typ).callConv;
	(*fn).kind = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15);
	(*(*fn).typ).callConv = ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8);
	X5BX5Deq__4J2KxaBA7Xsqtl1DOjhmuw((&d.ownerToType), (*fn).Sup.id, ptrType);
	detectCapturedVars_knMMYMrxMvpPAdvZhU1Tjg(body, fn, (&d));
	result = liftCapturedVars_1JM0Ep6665B6crlfoxbCuQ(body, fn, (&d), (&c));
	(*fn).kind = oldKind;
	(*(*fn).typ).callConv = oldCC;
	return result;
}

static N_INLINE(NIM_BOOL, liftingHarmful_DDNey2DPZ4OnXu79csWJF9aglambdalifting)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	NIM_BOOL result;
	NIM_BOOL isCompileTime;
	NIM_BOOL T1_;
	NIM_BOOL T3_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = (((*owner).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 24))&63U)))!=0);
	if (T1_) goto LA2_;
	T1_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17));
	LA2_: ;
	isCompileTime = T1_;
	T3_ = (NIM_BOOL)0;
	T3_ = ((*conf).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 4));
	if (!(T3_)) goto LA4_;
	T3_ = !(isCompileTime);
	LA4_: ;
	result = T3_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, liftIterSym_8CYqf1nXlpBtnWvyO6vrCw_2)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* iter;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* hp;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* env;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T15_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T16_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T17_;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = liftingHarmful_DDNey2DPZ4OnXu79csWJF9aglambdalifting((*g).config, owner);
		if (!T3_) goto LA4_;
		result = n;
		goto BeforeRet_;
	}
	LA4_: ;
	iter = (*n)._Ukind.S4.sym;
	result = newNodeIT_XPsPiaJWaj9b3UEC2OCu8Ug(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126), (*n).info, (*n).typ);
	hp = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA(g, iter);
	env = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T8_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* it;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T12_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T13_;
		T8_ = (NIM_BOOL)0;
		T8_ = ((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
		if (!(T8_)) goto LA9_;
		T8_ = ((*(*owner).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA9_: ;
		if (!T8_) goto LA10_;
		it = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA(g, owner);
		T12_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T12_ = addUniqueField_Zfb4vN0tAoBMTGhlnilqlw((*(*it).typ).sons->data[((NI) 0)], hp, (*g).cache);
		T13_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T13_ = newSymNode_UWZXukHA5As9aCftRHbafBg(it);
		env = indirectAccess_8tV19blySRgoa3CaurasypA(T13_, hp, (*hp).info);
	}
	goto LA6_;
	LA10_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* e;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v;
		e = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 9), (*iter).name, owner, (*n).info, 0);
		asgnRefNoCycle((void**) (&(*e).typ), (*hp).typ);
		(*e).flags = (*hp).flags;
		env = newSymNode_UWZXukHA5As9aCftRHbafBg(e);
		v = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99), (*n).info);
		addVar_ZIvdnLvRaA7wqS0zjam6gw(v, env);
		add_gCCf68XrWL79bKes6htzFjQ(result, v);
	}
	LA6_: ;
	T15_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T15_ = getSysSym_9bvw79ck1FDiWpnBYh88rEfw(g, (*n).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_15));
	T16_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T16_ = newCall_SS4raV1ef5ogLtVG9a561Dg(T15_, env);
	add_gCCf68XrWL79bKes6htzFjQ(result, T16_);
	T17_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T17_ = makeClosure_fa9aZDXQ04CAodm0trAX6LA(g, iter, env, (*n).info);
	add_gCCf68XrWL79bKes6htzFjQ(result, T17_);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, liftForLoop_d1skGaYPbh4srEm2IRKTwg)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI L;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* call;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* env;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* op;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* loopBody;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* whileLoop;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T35_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v2;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* vpart;
	tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw T36_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T49_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* bs;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ibs;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* elifBranch;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* br;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = liftingHarmful_DDNey2DPZ4OnXu79csWJF9aglambdalifting((*g).config, owner);
		if (!T3_) goto LA4_;
		result = body;
		goto BeforeRet_;
	}
	LA4_: ;
	L = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(body);
	{
		NIM_BOOL T8_;
		T8_ = (NIM_BOOL)0;
		T8_ = ((*body).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 94));
		if (!(T8_)) goto LA9_;
		T8_ = ((*(*body)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*(*body)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*(*body)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*(*body)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*(*body)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*(*body)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*(*body)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32));
		LA9_: ;
		if (!!(T8_)) goto LA10_;
		localError_NF6kBGchnhQYPbCedyefVA((*g).config, (*body).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_23));
		result = body;
		goto BeforeRet_;
	}
	LA10_: ;
	call = (*body)._Ukind.S6.sons->data[(NI)(L - ((NI) 2))];
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*body).info);
	env = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	op = (*call)._Ukind.S6.sons->data[((NI) 0)];
	{
		NIM_BOOL T14_;
		NIM_BOOL T16_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* iter;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* hp;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T20_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T21_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T22_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T23_;
		T14_ = (NIM_BOOL)0;
		T14_ = ((*op).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		if (!(T14_)) goto LA15_;
		T16_ = (NIM_BOOL)0;
		T16_ = ((*(*op)._Ukind.S4.sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
		if (!(T16_)) goto LA17_;
		T16_ = ((*(*(*op)._Ukind.S4.sym).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
		LA17_: ;
		T14_ = T16_;
		LA15_: ;
		if (!T14_) goto LA18_;
		iter = (*op)._Ukind.S4.sym;
		hp = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA(g, iter);
		env = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 9), (*iter).name, owner, (*body).info, 0);
		asgnRefNoCycle((void**) (&(*env).typ), (*hp).typ);
		(*env).flags = (*hp).flags;
		v = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99), (*body).info);
		T20_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T20_ = newSymNode_UWZXukHA5As9aCftRHbafBg(env);
		addVar_ZIvdnLvRaA7wqS0zjam6gw(v, T20_);
		add_gCCf68XrWL79bKes6htzFjQ(result, v);
		T21_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T21_ = getSysSym_9bvw79ck1FDiWpnBYh88rEfw(g, (*env).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_15));
		T22_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T22_ = newSymNode_UWZXukHA5As9aCftRHbafBg(env);
		T23_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T23_ = newCall_SS4raV1ef5ogLtVG9a561Dg(T21_, T22_);
		add_gCCf68XrWL79bKes6htzFjQ(result, T23_);
	}
	goto LA12_;
	LA18_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* closure;
		if (!((*op).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA25_;
		closure = lastSon_esDJA7239bJDiq4UrX9aHCjg(op);
		{
			if (!((*closure).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 155))) goto LA29_;
			asgnRefNoCycle((void**) (&(*call)._Ukind.S6.sons->data[((NI) 0)]), closure);
			{
				NI i;
				NI colontmp_;
				NI T32_;
				NI res;
				i = (NI)0;
				colontmp_ = (NI)0;
				T32_ = (NI)0;
				T32_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(op);
				colontmp_ = (NI)(T32_ - ((NI) 2));
				res = ((NI) 0);
				{
					while (1) {
						if (!(res <= colontmp_)) goto LA34;
						i = res;
						add_gCCf68XrWL79bKes6htzFjQ(result, (*op)._Ukind.S6.sons->data[i]);
						res += ((NI) 1);
					} LA34: ;
				}
			}
		}
		LA29_: ;
	}
	goto LA12_;
	LA25_: ;
	LA12_: ;
	loopBody = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*body).info, ((NI) 3));
	whileLoop = newNodeI_lJ75Ni9cLabI0ssrSNczTxg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96), (*body).info, ((NI) 2));
	T35_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T35_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg(g, (*body).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1));
	asgnRefNoCycle((void**) (&(*whileLoop)._Ukind.S6.sons->data[((NI) 0)]), newIntTypeNode_IoblBePQdnK3IoXX7b1EDg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(1), T35_));
	asgnRefNoCycle((void**) (&(*whileLoop)._Ukind.S6.sons->data[((NI) 1)]), loopBody);
	add_gCCf68XrWL79bKes6htzFjQ(result, whileLoop);
	v2 = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 100), (*body).info);
	T36_ = (tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw)0;
	{
		if (!(L == ((NI) 3))) goto LA39_;
		T36_ = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 35);
	}
	goto LA37_;
	LA39_: ;
	{
		T36_ = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36);
	}
	LA37_: ;
	vpart = newNodeI_I7fH85CUcZMasoPRKxPsPg(T36_, (*body).info);
	{
		NI i_2;
		NI colontmp__2;
		NI res_2;
		i_2 = (NI)0;
		colontmp__2 = (NI)0;
		colontmp__2 = (NI)(L - ((NI) 3));
		res_2 = ((NI) 0);
		{
			while (1) {
				if (!(res_2 <= colontmp__2)) goto LA44;
				i_2 = res_2;
				{
					if (!((*(*body)._Ukind.S6.sons->data[i_2]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA47_;
					(*(*(*body)._Ukind.S6.sons->data[i_2])._Ukind.S4.sym).kind = ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 9);
				}
				LA47_: ;
				addSon_gCCf68XrWL79bKes6htzFjQ_2(vpart, (*body)._Ukind.S6.sons->data[i_2]);
				res_2 += ((NI) 1);
			} LA44: ;
		}
	}
	T49_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T49_ = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1), (*body).info);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(vpart, T49_);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T54_;
		if (!!((env == 0))) goto LA52_;
		T54_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T54_ = newSymNode_UWZXukHA5As9aCftRHbafBg(env);
		asgnRefNoCycle((void**) (&(*call)._Ukind.S6.sons->data[((NI) 0)]), makeClosure_fa9aZDXQ04CAodm0trAX6LA(g, (*(*call)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym, T54_, (*body).info));
	}
	LA52_: ;
	addSon_gCCf68XrWL79bKes6htzFjQ_2(vpart, call);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(v2, vpart);
	asgnRefNoCycle((void**) (&(*loopBody)._Ukind.S6.sons->data[((NI) 0)]), v2);
	bs = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 158), (*body).info);
	addSon_gCCf68XrWL79bKes6htzFjQ_2(bs, (*call)._Ukind.S6.sons->data[((NI) 0)]);
	ibs = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92), (*body).info);
	elifBranch = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), (*body).info);
	add_gCCf68XrWL79bKes6htzFjQ(elifBranch, bs);
	br = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 110), (*body).info);
	add_gCCf68XrWL79bKes6htzFjQ(br, (*g).emptyNode);
	add_gCCf68XrWL79bKes6htzFjQ(elifBranch, br);
	add_gCCf68XrWL79bKes6htzFjQ(ibs, elifBranch);
	asgnRefNoCycle((void**) (&(*loopBody)._Ukind.S6.sons->data[((NI) 1)]), ibs);
	asgnRefNoCycle((void**) (&(*loopBody)._Ukind.S6.sons->data[((NI) 2)]), (*body)._Ukind.S6.sons->data[(NI)(L - ((NI) 1))]);
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, freshVarForClosureIter_JA4vA9a9b64Ti9cPXENYI6L5g)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* envParam;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* obj;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* access;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	envParam = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA(g, owner);
	obj = lastSon_ab52xel9cFebv9am0xV04xXA((*envParam).typ);
	addField_9aBQ2L5yxhC7S5oG233tzIA(obj, s, (*g).cache);
	access = newSymNode_UWZXukHA5As9aCftRHbafBg(envParam);
	field = getFieldFromObj_sPvxCTTh2RHJtZkW3Hjqrg(obj, s);
	{
		if (!!((field == NIM_NIL))) goto LA3_;
		result = rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA(access, field, (*s).info);
	}
	goto LA1_;
	LA3_: ;
	{
		localError_NF6kBGchnhQYPbCedyefVA((*g).config, (*s).info, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_24));
		result = access;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, liftLambdas_dmTb5DSkbT8504NMz3NOoA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body, NIM_BOOL* tooEarly) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NIM_BOOL isCompileTime;
	NIM_BOOL T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (NIM_BOOL)0;
	T1_ = (((*fn).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 24))&63U)))!=0);
	if (T1_) goto LA2_;
	T1_ = ((*fn).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 17));
	LA2_: ;
	isCompileTime = T1_;
	{
		NIM_BOOL T5_;
		NIM_BOOL T6_;
		NIM_BOOL T8_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T11_;
		T5_ = (NIM_BOOL)0;
		T6_ = (NIM_BOOL)0;
		T6_ = ((*body).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1));
		if (T6_) goto LA7_;
		T8_ = (NIM_BOOL)0;
		T8_ = ((*(*g).config).cmd == ((tyEnum_TCommands_VH3ghgQVwLSg3krOAoXigw) 4));
		if (!(T8_)) goto LA9_;
		T8_ = !(isCompileTime);
		LA9_: ;
		T6_ = T8_;
		LA7_: ;
		T5_ = T6_;
		if (T5_) goto LA10_;
		T11_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T11_ = skipGenericOwner_yJlkgivdZFfxOuRjhZjB8Q_2(fn);
		T5_ = !(((*T11_).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6)));
		LA10_: ;
		if (!T5_) goto LA12_;
		result = body;
		(*tooEarly) = NIM_TRUE;
	}
	goto LA3_;
	LA12_: ;
	{
		tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ d;
		nimZeroMem((void*)(&d), sizeof(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ));
		initDetectionPass_4CCBwDujiGy6YiQqoXJBmA(g, fn, (&d));
		detectCapturedVars_knMMYMrxMvpPAdvZhU1Tjg(body, fn, (&d));
		{
			NIM_BOOL T17_;
			NIM_BOOL T19_;
			T17_ = (NIM_BOOL)0;
			T17_ = !(d.somethingToDo);
			if (!(T17_)) goto LA18_;
			T19_ = (NIM_BOOL)0;
			T19_ = ((*fn).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 15));
			if (!(T19_)) goto LA20_;
			T19_ = ((*(*fn).typ).callConv == ((tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA) 8));
			LA20_: ;
			T17_ = T19_;
			LA18_: ;
			if (!T17_) goto LA21_;
			addClosureParam_lKI5vTqvn65UP6LyU15ZDg((&d), fn, (*body).info);
			d.somethingToDo = NIM_TRUE;
		}
		LA21_: ;
		{
			tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw c;
			if (!d.somethingToDo) goto LA25_;
			nimZeroMem((void*)(&c), sizeof(tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw));
			initLiftingPass_HXrCsX5pXNSDQAdrIHzdgg(fn, (&c));
			result = liftCapturedVars_1JM0Ep6665B6crlfoxbCuQ(body, fn, (&d), (&c));
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T29_;
				tyArray_AB6yfoUgfWM2NtGe9bzkCmw T32_;
				T29_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T29_ = getOrDefault_cAkAEwfW9cxC2y2UQOZz2Aw(c.envVars, (*fn).Sup.id);
				if (!!((T29_ == NIM_NIL))) goto LA30_;
				nimZeroMem((void*)T32_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
				T32_[0] = rawClosureCreation_052ZWuigreNR2S9cutQVuLw(fn, (&d), (&c));
				T32_[1] = result;
				result = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), T32_, 2);
			}
			LA30_: ;
		}
		goto LA23_;
		LA25_: ;
		{
			result = body;
		}
		LA23_: ;
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getClosureIterResult_TgYaD9azNHeiJdSPcrOB6SA_2)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* iter) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*iter).ast);
		if (!(((NI) 7) < T3_)) goto LA4_;
		result = (*(*(*iter).ast)._Ukind.S6.sons->data[((NI) 7)])._Ukind.S4.sym;
	}
	goto LA1_;
	LA4_: ;
	{
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T7_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T8_;
		T7_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T7_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*g).cache, ((NimStringDesc*) &TM_PI7oJkFuxeeTWjPTjlNxqg_25));
		result = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 11), T7_, iter, (*iter).info, 0);
		asgnRefNoCycle((void**) (&(*result).typ), (*(*iter).typ).sons->data[((NI) 0)]);
		(*result).flags |= ((NU64)1)<<((((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 0))%(sizeof(NU64)*8));
		T8_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T8_ = newSymNode_UWZXukHA5As9aCftRHbafBg(result);
		add_gCCf68XrWL79bKes6htzFjQ((*iter).ast, T8_);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getStateField_UJpIDWVzs220Reaf7HOAmw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T1_;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = getHiddenParam_EE7nw3Cq0S1IZY9aGfs1AtA(g, owner);
	result = (*(*(*(*(*T1_).typ).sons->data[((NI) 0)]).n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_lambdaliftingInit000)(void) {
{
	TFrame FR_; FR_.len = 0;
}
}

N_LIB_PRIVATE N_NIMCALL(void, compiler_lambdaliftingDatInit000)(void) {
static TNimNode* TM_PI7oJkFuxeeTWjPTjlNxqg_2[5];
static TNimNode* TM_PI7oJkFuxeeTWjPTjlNxqg_3[3];
static TNimNode TM_PI7oJkFuxeeTWjPTjlNxqg_0[10];
NTI_CrsGUD9a6sd4xCGl64gvIdQ_.size = sizeof(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ);
NTI_CrsGUD9a6sd4xCGl64gvIdQ_.kind = 18;
NTI_CrsGUD9a6sd4xCGl64gvIdQ_.base = 0;
TM_PI7oJkFuxeeTWjPTjlNxqg_2[0] = &TM_PI7oJkFuxeeTWjPTjlNxqg_0[1];
TM_PI7oJkFuxeeTWjPTjlNxqg_0[1].kind = 1;
TM_PI7oJkFuxeeTWjPTjlNxqg_0[1].offset = offsetof(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ, processed);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[1].typ = (&NTI_PQrmFm4BXFkFSVOUl1ojSg_);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[1].name = "processed";
TM_PI7oJkFuxeeTWjPTjlNxqg_2[1] = &TM_PI7oJkFuxeeTWjPTjlNxqg_0[2];
TM_PI7oJkFuxeeTWjPTjlNxqg_0[2].kind = 1;
TM_PI7oJkFuxeeTWjPTjlNxqg_0[2].offset = offsetof(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ, capturedVars);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[2].typ = (&NTI_PQrmFm4BXFkFSVOUl1ojSg_);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[2].name = "capturedVars";
TM_PI7oJkFuxeeTWjPTjlNxqg_2[2] = &TM_PI7oJkFuxeeTWjPTjlNxqg_0[3];
TM_PI7oJkFuxeeTWjPTjlNxqg_0[3].kind = 1;
TM_PI7oJkFuxeeTWjPTjlNxqg_0[3].offset = offsetof(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ, ownerToType);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[3].typ = (&NTI_Os4it9bmHnOQtsd5CqH09aRQ_);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[3].name = "ownerToType";
TM_PI7oJkFuxeeTWjPTjlNxqg_2[3] = &TM_PI7oJkFuxeeTWjPTjlNxqg_0[4];
TM_PI7oJkFuxeeTWjPTjlNxqg_0[4].kind = 1;
TM_PI7oJkFuxeeTWjPTjlNxqg_0[4].offset = offsetof(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ, somethingToDo);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[4].typ = (&NTI_VaVACK0bpYmqIQ0mKcHfQQ_);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[4].name = "somethingToDo";
TM_PI7oJkFuxeeTWjPTjlNxqg_2[4] = &TM_PI7oJkFuxeeTWjPTjlNxqg_0[5];
TM_PI7oJkFuxeeTWjPTjlNxqg_0[5].kind = 1;
TM_PI7oJkFuxeeTWjPTjlNxqg_0[5].offset = offsetof(tyObject_DetectionPass_CrsGUD9a6sd4xCGl64gvIdQ, graph);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[5].typ = (&NTI_KfdHSsl8vyUCSI9b3inBcww_);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[5].name = "graph";
TM_PI7oJkFuxeeTWjPTjlNxqg_0[0].len = 5; TM_PI7oJkFuxeeTWjPTjlNxqg_0[0].kind = 2; TM_PI7oJkFuxeeTWjPTjlNxqg_0[0].sons = &TM_PI7oJkFuxeeTWjPTjlNxqg_2[0];
NTI_CrsGUD9a6sd4xCGl64gvIdQ_.node = &TM_PI7oJkFuxeeTWjPTjlNxqg_0[0];
NTI_xciiuOR269bKYtnZXJZ4Npw_.size = sizeof(tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw);
NTI_xciiuOR269bKYtnZXJZ4Npw_.kind = 18;
NTI_xciiuOR269bKYtnZXJZ4Npw_.base = 0;
NTI_xciiuOR269bKYtnZXJZ4Npw_.flags = 2;
TM_PI7oJkFuxeeTWjPTjlNxqg_3[0] = &TM_PI7oJkFuxeeTWjPTjlNxqg_0[7];
TM_PI7oJkFuxeeTWjPTjlNxqg_0[7].kind = 1;
TM_PI7oJkFuxeeTWjPTjlNxqg_0[7].offset = offsetof(tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw, processed);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[7].typ = (&NTI_PQrmFm4BXFkFSVOUl1ojSg_);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[7].name = "processed";
TM_PI7oJkFuxeeTWjPTjlNxqg_3[1] = &TM_PI7oJkFuxeeTWjPTjlNxqg_0[8];
TM_PI7oJkFuxeeTWjPTjlNxqg_0[8].kind = 1;
TM_PI7oJkFuxeeTWjPTjlNxqg_0[8].offset = offsetof(tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw, envVars);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[8].typ = (&NTI_JrI9bTpOVccKpiJXKOskjFg_);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[8].name = "envVars";
TM_PI7oJkFuxeeTWjPTjlNxqg_3[2] = &TM_PI7oJkFuxeeTWjPTjlNxqg_0[9];
TM_PI7oJkFuxeeTWjPTjlNxqg_0[9].kind = 1;
TM_PI7oJkFuxeeTWjPTjlNxqg_0[9].offset = offsetof(tyObject_LiftingPass_xciiuOR269bKYtnZXJZ4Npw, inContainer);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[9].typ = (&NTI_rR5Bzr1D5krxoo1NcNyeMA_);
TM_PI7oJkFuxeeTWjPTjlNxqg_0[9].name = "inContainer";
TM_PI7oJkFuxeeTWjPTjlNxqg_0[6].len = 3; TM_PI7oJkFuxeeTWjPTjlNxqg_0[6].kind = 2; TM_PI7oJkFuxeeTWjPTjlNxqg_0[6].sons = &TM_PI7oJkFuxeeTWjPTjlNxqg_3[0];
NTI_xciiuOR269bKYtnZXJZ4Npw_.node = &TM_PI7oJkFuxeeTWjPTjlNxqg_0[6];
}

