/* 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_TNode_bROa11lyF5vxEN9aYNbHmhw tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw;
typedef struct tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ;
typedef struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w;
typedef struct tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A;
typedef struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ;
typedef struct tySequence_qwqHTkRvwhrRyENtudHQ7g tySequence_qwqHTkRvwhrRyENtudHQ7g;
typedef struct tySequence_DfgJFJEYoj4YBAHLZPl5lQ tySequence_DfgJFJEYoj4YBAHLZPl5lQ;
typedef struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA;
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_e2Ciu0s1q49aVQ7ULXy7l9bQ tyObject_Table_e2Ciu0s1q49aVQ7ULXy7l9bQ;
typedef struct tySequence_kxu4GK0onha2t9bo86mdVAg tySequence_kxu4GK0onha2t9bo86mdVAg;
typedef struct tySequence_48JTohSgTy339bRxHzUD8KA tySequence_48JTohSgTy339bRxHzUD8KA;
typedef struct RootObj RootObj;
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_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
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_TIdObj_iIXPrEsiKHiioLj0HSkQhA tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence_Ef05srmQTDulnBdXR4Ja6Q tySequence_Ef05srmQTDulnBdXR4Ja6Q;
typedef struct tySequence_DXS6mEo7PVUFJkirsQ9bNQA tySequence_DXS6mEo7PVUFJkirsQ9bNQA;
typedef struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA;
typedef struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q;
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 NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tySequence_MvZmat48bhe9b6x9aUD58D5Q tySequence_MvZmat48bhe9b6x9aUD58D5Q;
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 tyTuple_EFqgCXJ4d8PgqOdFJmldsQ tyTuple_EFqgCXJ4d8PgqOdFJmldsQ;
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 tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA;
typedef struct tyTuple_zwpS6d6iewrdlBSTNFoyVA tyTuple_zwpS6d6iewrdlBSTNFoyVA;
struct tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A {
tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* stateVarSym;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* tmpResultSym;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* unrollFinallySym;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* curExcSym;
tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* states;
NI blockLevel;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* stateLoopLabel;
NI exitStateIdx;
NI tempVarId;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tempVars;
tySequence_qwqHTkRvwhrRyENtudHQ7g* exceptionTable;
NIM_BOOL hasExceptions;
NI curExcHandlingState;
NI nearestFinally;
};
struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA {
NI counter;
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* data;
};
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_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;
};
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;
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;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
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;
};
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 NU32 tySet_tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg;
typedef NU8 tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw;
struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw {
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
tySet_tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg flags;
tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind;
union{
struct {NI64 intVal;
} S1;
struct {NF floatVal;
} S2;
struct {NimStringDesc* strVal;
} S3;
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
} S4;
struct {tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
} S5;
struct {tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
} S6;
} _Ukind;
NimStringDesc* comment;
};
typedef NU8 tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tyArray_jlWPjgtbdjE069arIWHC9c9bg[1];
struct tyTuple_EFqgCXJ4d8PgqOdFJmldsQ {
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* Field0;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* Field1;
};
typedef tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tyArray_AB6yfoUgfWM2NtGe9bzkCmw[2];
typedef tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tyArray_T6RKPw8xfAeNaoei9aZGzXg[3];
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_zwpS6d6iewrdlBSTNFoyVA {
NI Field0;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* Field1;
};
struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ {
  TGenericSeq Sup;
  tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
};
struct tySequence_qwqHTkRvwhrRyENtudHQ7g {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
struct tySequence_DfgJFJEYoj4YBAHLZPl5lQ {
  TGenericSeq Sup;
  tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* data[SEQ_DECL_SIZE];
};
struct tySequence_9brg1xNurxcus33lU4IE1Dw {
  TGenericSeq Sup;
  tyObject_Trunk_ul49aWfv9aes8cutmeltT3gQ* data[SEQ_DECL_SIZE];
};
struct tySequence_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_Ef05srmQTDulnBdXR4Ja6Q {
  TGenericSeq Sup;
  tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* data[SEQ_DECL_SIZE];
};
struct tySequence_DXS6mEo7PVUFJkirsQ9bNQA {
  TGenericSeq Sup;
  tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA* data[SEQ_DECL_SIZE];
};
struct tySequence_MvZmat48bhe9b6x9aUD58D5Q {
  TGenericSeq Sup;
  tyTuple_zwpS6d6iewrdlBSTNFoyVA data[SEQ_DECL_SIZE];
};
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(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getEnvParam_ypCrx6fkmVfhsiJZgqHbwA)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* routine);
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);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr);
static N_INLINE(void, rtlAddZCT_MV4BBk6J1qu70IbBxwEn4w_2system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT_fCDI7oO1NNVXXURtxSzsRw)(tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, toStmtList_nuiE2KI8tXWBtjEGdOFH5g)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNodeI_I7fH85CUcZMasoPRKxPsPg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(void, add_gCCf68XrWL79bKes6htzFjQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* son);
N_LIB_PRIVATE N_NIMCALL(NI, newState_KR326D2V0A9c8rAN3F9amGLQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gotoOut);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIntLit_TuFlkTIoJNHT6fCcycYtSw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NI64 value);
N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
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*, lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL* needsSplit);
static N_INLINE(NI, len_CdME9baJhvveuPEDZE9bXoxAsigmatch)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyTuple_EFqgCXJ4d8PgqOdFJmldsQ* Result);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, add_5krzJTgr5rBc6qyWc9aphuw)(tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ** x, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** y, NI yLen_0);
N_NIMCALL(TGenericSeq*, setLengthSeqV2)(TGenericSeq* s, TNimType* typ, NI newLen);
N_LIB_PRIVATE N_NIMCALL(void, internalError_5hPl6LjCYJxMYxh9af9b9bXzw)(tyObject_ConfigRefcolonObjectType__LaK09ayL9alwKUad7rts0rTw* conf, NimStringDesc* errMsg);
static N_INLINE(NIM_BOOL, isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newTempVar_QW5USoce3qh9bXxwwKr5bhQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newEnvVar_1R4449bUoJU5f9a8XxF6z2jw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, NimStringDesc* name, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(void, addVar_ZIvdnLvRaA7wqS0zjam6gw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* father, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newSymNode_UWZXukHA5As9aCftRHbafBg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
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_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, lastSon_ab52xel9cFebv9am0xV04xXA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* n);
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*, nimIntToStr)(NI x);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
static N_INLINE(NI, safeLen_CdME9baJhvveuPEDZE9bXoxArenderer)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, addExprAssgn_8z9c7ZI6YoLC8wd85rq6foQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* output, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* input, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newEnvVarAsgn_Pdr0r9b0MHuUSo6FCs9aYHpA)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* field, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_NIMCALL(NimStringDesc*, reprEnum)(NI e, TNimType* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, convertExprBodyToAsgn_vd1QeJ9cA7AV6YltHaGpUfQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* exprBody, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* res);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNotCall_qb0UTd3LRTRUDLaWZGAI3w)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getSysMagic_F0sH3uZM4wsRv4Pi1Pzwlg)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* name, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m);
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_TSym_JpsEh5i1AcKChGYbg7aV4w*, getSysSym_9bvw79ck1FDiWpnBYh88rEfw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info, NimStringDesc* name);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasYieldsInExpressions_4rkdqTkMcgAkMWgpzNBGPQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasYields_4rkdqTkMcgAkMWgpzNBGPQ_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gotoOut);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, addGotoOut_m9cwKcZ658PIQ2DjG0Pl6cw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gotoOut);
static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw**, X5BX5D__YLEY3nLpUU2onE02S2OSlgast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** s, NI sLen_0, NI i);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformBreaksAndContinuesInWhile_HHd9a4D5LvlgvRGmwO0MWHw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* before, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* after);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformBreaksInBlock_VkT9azRLtJ0eAKoaK3PPqVw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* label, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* after);
static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, collectExceptState_eyQv3n2M3569coxZwjgCbIwclosureiters)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, callCodegenProc_PPOCfdFmaSI5Bh5AMAPlmA)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, NimStringDesc* name, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg1, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg2, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* arg3, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* optionalArgs);
static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newOr_lX4ijAVTzsRg8N1Lp9atJqQclosureiters)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNullifyCurExc_FlUh1Xo9bXJFuG43AoVOEVw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newCurExcAccess_cqBE2u681LMwPlL6VXs4dA)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNode_IgnRxkID5wXTWvTZf9ct0rA)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getFinallyNode_9bHnHV2aPwwNJRPyRaoCsuA)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformReturnsInTry_oib8dpvzVeiy5KmNWs9ajBw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newUnrollFinallyAccess_FlUh1Xo9bXJFuG43AoVOEVw_2)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIntTypeNode_IoblBePQdnK3IoXX7b1EDg)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NI64 intVal, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newTmpResultAccess_rUqQ9cA4p09aJ0JiN7bt4idg)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newEndFinallyNode_FlUh1Xo9bXJFuG43AoVOEVw_3)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getClosureIterResult_TgYaD9azNHeiJdSPcrOB6SA_2)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* iter);
N_LIB_PRIVATE N_NIMCALL(void, addElseToExcept_ZQwdGiE9bcxShuJtHMjr5sQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, deleteEmptyStates_EtZNQZ9ahFW9aGXseKeYzr0Q)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipStmtList_QLFxwP9bqmbLeEjX2wva7hQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipThroughEmptyStates_9bHnHV2aPwwNJRPyRaoCsuA_2)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* src);
N_LIB_PRIVATE N_NIMCALL(NI, skipEmptyStates_qjWOMVFFVMMUNcgF89acUNQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, NI stateIdx);
N_LIB_PRIVATE N_NIMCALL(void, delete_CLZdKKlcUPYhcUpOnWP7ag)(tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ** x, NI i);
N_LIB_PRIVATE N_NIMCALL(void, delete_9bSCVC9bGqCpBkwep0LldvIg)(tySequence_qwqHTkRvwhrRyENtudHQ7g** x, NI i);
N_LIB_PRIVATE N_NIMCALL(void, del_CLZdKKlcUPYhcUpOnWP7ag_2)(tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ** x, NI i);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformStateAssignments_oib8dpvzVeiy5KmNWs9ajBw_2)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newStateAssgn_Mi9crg20nwOahuXiRT6sVew)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, NI stateNo);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newStateAssgn_AWbFLel9cjt8d7ZAwfIyCdA)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* toValue);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newStateAccess_cqBE2u681LMwPlL6VXs4dA_2)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getStateField_UJpIDWVzs220Reaf7HOAmw)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(NI, stateFromGotoState_BmiANzOvKJz19b0RswYeNaQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
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*, wrapIntoStateLoop_oib8dpvzVeiy5KmNWs9ajBw_3)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, wrapIntoTryExcept_eyQv3n2M3569coxZwjgCbIw_2closureiters)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, getCompilerProc_Z9bI8j6Vv57IyOO09a8fpp3g)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, NimStringDesc* name);
static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newCatchBody_MnQ8Kzhxn5rtRo9btObf9b9bgclosureiters)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info);
static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, createExceptionTable_MszPr5bFWBE4wcbymAi00gclosureiters)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newArrayType_642gHRMR9a1eZ1whzH7tKfQ)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, NI n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newType_dQhKkL6uAkw83dy6l4d7iQ)(tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
N_LIB_PRIVATE N_NIMCALL(void, rawAddSon_uZzh0IWnWErsZbQ8YFaRRA)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* father, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* son);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newIntNode_v2VGJAZNfKPVngZCqEXQtA)(tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind, NI64 intVal);
extern tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
extern TNimType NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_;
extern TNimType NTI_qwqHTkRvwhrRyENtudHQ7g_;
TNimType NTI_EFqgCXJ4d8PgqOdFJmldsQ_;
extern TNimType NTI_fKfcLzXYiz5jNu3NH3Tv8Q_;
extern TNimType NTI_G4E4Gxe7oI2Cm03rkiOzQw_;
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_2, ":state", 6);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_3, ":stateLoop", 10);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_5, "lowerStmtListExprs: constr typ.isNil", 36);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_6, ":tmpSlLower", 11);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_7, "lowerStmtListExpr(nkIf): ", 25);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_8, "lowerStmtListExpr(nkTryStmt): ", 30);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_9, "lowerStmtListExpr(nkCaseStmt): ", 31);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_10, "not", 3);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_11, "true", 4);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_12, "yield in expr not lowered", 25);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_13, "transformClosureIteratorBody != s", 33);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_14, "of", 2);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_15, "getCurrentException", 19);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_16, "or", 2);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_17, ":curExc", 7);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_18, ":unrollFinally", 14);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_19, ":tmpResult", 10);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_20, "==", 2);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_21, "transformReturnsInTry != tryBody", 32);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_22, "transformClosureIteratorBody != tryBody", 39);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_23, "transformReturnsInTry != exceptBody", 35);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_24, "transformClosureIteratorBody != exceptBody", 42);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_25, "transformClosureIteratorBody != finallyBody", 43);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_26, "closure iter ", 13);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_27, "closureIterSetupExc", 19);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_28, "<", 1);
STRING_LITERAL(TM_slVvvIjx75ivXdMpHiE9c9aQ_29, "-", 1);

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);
}

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

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

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

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, toStmtList_nuiE2KI8tXWBtjEGdOFH5g)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		if (!!(((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115) || (*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126)))) goto LA3_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(result, n);
	}
	LA3_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NI, newState_KR326D2V0A9c8rAN3F9amGLQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gotoOut) {
	NI result;
	NI T1_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* resLit;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s;
	NI T2_;
	NI T3_;
	result = (NI)0;
	T1_ = ((*ctx).states ? (*ctx).states->Sup.len : 0);
	result = T1_;
	resLit = newIntLit_TuFlkTIoJNHT6fCcycYtSw((*ctx).g, (*n).info, ((NI64) (result)));
	s = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 157), (*n).info);
	add_gCCf68XrWL79bKes6htzFjQ(s, resLit);
	add_gCCf68XrWL79bKes6htzFjQ(s, n);
	unsureAsgnRef((void**) (&(*ctx).states), (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) incrSeqV3(&((*ctx).states)->Sup, (&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_)));
	T2_ = (*ctx).states->Sup.len++;
	asgnRefNoCycle((void**) (&(*ctx).states->data[T2_]), s);
	unsureAsgnRef((void**) (&(*ctx).exceptionTable), (tySequence_qwqHTkRvwhrRyENtudHQ7g*) incrSeqV3(&((*ctx).exceptionTable)->Sup, (&NTI_qwqHTkRvwhrRyENtudHQ7g_)));
	T3_ = (*ctx).exceptionTable->Sup.len++;
	(*ctx).exceptionTable->data[T3_] = (*ctx).curExcHandlingState;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T8_;
		if (!!((gotoOut == 0))) goto LA6_;
		T8_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T8_ = newIntLit_TuFlkTIoJNHT6fCcycYtSw((*ctx).g, (*gotoOut).info, ((NI64) (result)));
		add_gCCf68XrWL79bKes6htzFjQ(gotoOut, T8_);
	}
	LA6_: ;
	return result;
}

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

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

N_LIB_PRIVATE N_NIMCALL(void, exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyTuple_EFqgCXJ4d8PgqOdFJmldsQ* Result) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
	genericReset((void*)Result, (&NTI_EFqgCXJ4d8PgqOdFJmldsQ_));
	unsureAsgnRef((void**) (&(*Result).Field0), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info));
	if ((*(*Result).Field0)._Ukind.S6.sons) { nimGCunrefNoCycle((*(*Result).Field0)._Ukind.S6.sons); (*(*Result).Field0)._Ukind.S6.sons = NIM_NIL; }
	n_2 = n;
	{
		while (1) {
			NI T3_;
			NI T4_;
			if (!((*n_2).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA2;
			add_5krzJTgr5rBc6qyWc9aphuw((&(*(*Result).Field0)._Ukind.S6.sons), (*n_2)._Ukind.S6.sons->data, ((*n_2)._Ukind.S6.sons ? (*n_2)._Ukind.S6.sons->Sup.len : 0));
			T3_ = ((*(*Result).Field0)._Ukind.S6.sons ? (*(*Result).Field0)._Ukind.S6.sons->Sup.len : 0);
			asgnRefNoCycle((void**) (&(*(*Result).Field0)._Ukind.S6.sons), (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) setLengthSeqV2(&((*(*Result).Field0)._Ukind.S6.sons)->Sup, (&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_), ((NI) ((NI)(T3_ - ((NI) 1))))));
			T4_ = (NI)0;
			T4_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n_2);
			n_2 = (*n_2)._Ukind.S6.sons->data[(NI)(T4_ - ((NI) 1))];
		} LA2: ;
	}
	unsureAsgnRef((void**) (&(*Result).Field1), n_2);
}

static N_INLINE(NIM_BOOL, isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = (t == NIM_NIL);
	if (T1_) goto LA2_;
	T1_ = ((*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 63) || (*t).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 7));
	LA2_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*, newEnvVar_1R4449bUoJU5f9a8XxF6z2jw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, NimStringDesc* name, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T1_;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T1_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*(*ctx).g).cache, name);
	result = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 8), T1_, (*ctx).fn, (*(*ctx).fn).info, 0);
	asgnRefNoCycle((void**) (&(*result).typ), typ);
	{
		if (!!(((*ctx).stateVarSym == 0))) goto LA4_;
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T10_;
			if (!((*ctx).tempVars == 0)) goto LA8_;
			unsureAsgnRef((void**) (&(*ctx).tempVars), newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99), (*(*ctx).fn).info));
			T10_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T10_ = newSymNode_UWZXukHA5As9aCftRHbafBg(result);
			addVar_ZIvdnLvRaA7wqS0zjam6gw((*ctx).tempVars, T10_);
		}
		LA8_: ;
	}
	goto LA2_;
	LA4_: ;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* envParam;
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T12_;
		envParam = getEnvParam_ypCrx6fkmVfhsiJZgqHbwA((*ctx).fn);
		T12_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T12_ = lastSon_ab52xel9cFebv9am0xV04xXA((*envParam).typ);
		result = addUniqueField_Zfb4vN0tAoBMTGhlnilqlw(T12_, result, (*(*ctx).g).cache);
	}
	LA2_: ;
	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*, newTempVar_QW5USoce3qh9bXxwwKr5bhQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ) {
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* result;
	NimStringDesc* T1_;
	NimStringDesc* T2_;
	result = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T1_ = (NimStringDesc*)0;
	T2_ = (NimStringDesc*)0;
	T2_ = nimIntToStr((*ctx).tempVarId);
	T1_ = rawNewString((T2_ ? T2_->Sup.len : 0) + 11);
appendString(T1_, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_6));
appendString(T1_, T2_);
	result = newEnvVar_1R4449bUoJU5f9a8XxF6z2jw(ctx, T1_, typ);
	(*ctx).tempVarId += ((NI) 1);
	return result;
}

static N_INLINE(NI, safeLen_CdME9baJhvveuPEDZE9bXoxArenderer)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	result = (NI)0;
	{
		if (!((*n).kind >= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 0) && (*n).kind <= ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23))) goto LA3_;
		result = ((NI) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		result = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T5_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
		if (!((*ctx).stateVarSym == 0)) goto LA3_;
		T5_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T5_ = getEnvParam_ypCrx6fkmVfhsiJZgqHbwA((*ctx).fn);
		T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = newSymNode_UWZXukHA5As9aCftRHbafBg(T5_);
		result = rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA(T6_, s, (*(*ctx).fn).info);
	}
	goto LA1_;
	LA3_: ;
	{
		result = newSymNode_UWZXukHA5As9aCftRHbafBg(s);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newEnvVarAsgn_Pdr0r9b0MHuUSo6FCs9aYHpA)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* v) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)T1_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T1_[0] = newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA(ctx, s);
	T1_[1] = v;
	result = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 74), T1_, 2);
	(*result).info = (*v).info;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addExprAssgn_8z9c7ZI6YoLC8wd85rq6foQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* output, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* input, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym) {
	{
		tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T5_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* res;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
		if (!((*input).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA3_;
		nimZeroMem((void*)(&T5_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
		exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg(input, (&T5_));
		st = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		st = T5_.Field0;
		res = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		res = T5_.Field1;
		add_gCCf68XrWL79bKes6htzFjQ(output, st);
		T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = newEnvVarAsgn_Pdr0r9b0MHuUSo6FCs9aYHpA(ctx, sym, res);
		add_gCCf68XrWL79bKes6htzFjQ(output, T6_);
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T8_;
		T8_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T8_ = newEnvVarAsgn_Pdr0r9b0MHuUSo6FCs9aYHpA(ctx, sym, input);
		add_gCCf68XrWL79bKes6htzFjQ(output, T8_);
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, convertExprBodyToAsgn_vd1QeJ9cA7AV6YltHaGpUfQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* exprBody, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* res) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*exprBody).info);
	addExprAssgn_8z9c7ZI6YoLC8wd85rq6foQ(ctx, result, exprBody, res);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNotCall_qb0UTd3LRTRUDLaWZGAI3w)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* e) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T1_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)T1_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T2_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T2_ = getSysMagic_F0sH3uZM4wsRv4Pi1Pzwlg(g, (*e).info, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_10), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 102));
	T1_[0] = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(T2_, (*e).info);
	T1_[1] = e;
	result = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), T1_, 2);
	asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg(g, (*e).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1)));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, NIM_BOOL* needsSplit) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 113):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 104):
	{
		NIM_BOOL ns;
		ns = NIM_FALSE;
		{
			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 LA5;
					i = i_2;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[i], (&ns)));
					i_2 += ((NI) 1);
				} LA5: ;
			}
		}
		{
			tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T10_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex;
			if (!ns) goto LA8_;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
			nimZeroMem((void*)(&T10_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
			exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[((NI) 0)], (&T10_));
			st = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			st = T10_.Field0;
			ex = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			ex = T10_.Field1;
			add_gCCf68XrWL79bKes6htzFjQ(result, st);
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), ex);
			add_gCCf68XrWL79bKes6htzFjQ(result, n);
		}
		LA8_: ;
		(*needsSplit) = NIM_TRUE;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 38):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41):
	{
		NIM_BOOL ns_2;
		ns_2 = NIM_FALSE;
		{
			NI i_3;
			NI colontmp__2;
			NI i_4;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_4 = ((NI) 0);
			{
				while (1) {
					if (!(i_4 < colontmp__2)) goto LA14;
					i_3 = i_4;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_3]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[i_3], (&ns_2)));
					i_4 += ((NI) 1);
				} LA14: ;
			}
		}
		{
			if (!ns_2) goto LA17_;
			(*needsSplit) = NIM_TRUE;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126), (*n).info);
			{
				if (!((*n).typ == 0)) goto LA21_;
				internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*ctx).g).config, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_5));
			}
			LA21_: ;
			asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
			{
				NI i_5;
				NI colontmp__3;
				NI i_6;
				i_5 = (NI)0;
				colontmp__3 = (NI)0;
				colontmp__3 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
				i_6 = ((NI) 0);
				{
					while (1) {
						if (!(i_6 < colontmp__3)) goto LA25;
						i_5 = i_6;
						switch ((*(*n)._Ukind.S6.sons->data[i_5]).kind) {
						case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34):
						{
							{
								tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T31_;
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_2;
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_2;
								if (!((*(*(*n)._Ukind.S6.sons->data[i_5])._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA29_;
								nimZeroMem((void*)(&T31_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
								exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*(*n)._Ukind.S6.sons->data[i_5])._Ukind.S6.sons->data[((NI) 1)], (&T31_));
								st_2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								st_2 = T31_.Field0;
								ex_2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								ex_2 = T31_.Field1;
								add_gCCf68XrWL79bKes6htzFjQ(result, st_2);
								asgnRefNoCycle((void**) (&(*(*n)._Ukind.S6.sons->data[i_5])._Ukind.S6.sons->data[((NI) 1)]), ex_2);
							}
							LA29_: ;
						}
						break;
						case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126):
						{
							tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T33_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_3;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_3;
							nimZeroMem((void*)(&T33_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
							exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[i_5], (&T33_));
							st_3 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							st_3 = T33_.Field0;
							ex_3 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							ex_3 = T33_.Field1;
							add_gCCf68XrWL79bKes6htzFjQ(result, st_3);
							asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_5]), ex_3);
						}
						break;
						default:
						{
						}
						break;
						}
						i_6 += ((NI) 1);
					} LA25: ;
				}
			}
			add_gCCf68XrWL79bKes6htzFjQ(result, n);
		}
		LA17_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 48):
	{
		NIM_BOOL ns_3;
		ns_3 = NIM_FALSE;
		{
			NI i_7;
			NI colontmp__4;
			NI i_8;
			i_7 = (NI)0;
			colontmp__4 = (NI)0;
			colontmp__4 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_8 = ((NI) 0);
			{
				while (1) {
					if (!(i_8 < colontmp__4)) goto LA38;
					i_7 = i_8;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_7]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[i_7], (&ns_3)));
					i_8 += ((NI) 1);
				} LA38: ;
			}
		}
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* tmp;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s;
			NIM_BOOL isExpr;
			NIM_BOOL T43_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* curS;
			if (!ns_3) goto LA41_;
			(*needsSplit) = NIM_TRUE;
			tmp = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
			s = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T43_ = (NIM_BOOL)0;
			T43_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*n).typ);
			isExpr = !(T43_);
			{
				if (!isExpr) goto LA46_;
				tmp = newTempVar_QW5USoce3qh9bXxwwKr5bhQ(ctx, (*n).typ);
				result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126), (*n).info);
				asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
			}
			goto LA44_;
			LA46_: ;
			{
				result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
			}
			LA44_: ;
			curS = result;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch;
				branch = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				{
					NI i_9;
					NI colontmp__5;
					NI i_10;
					i_9 = (NI)0;
					colontmp__5 = (NI)0;
					colontmp__5 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
					i_10 = ((NI) 0);
					{
						while (1) {
							if (!(i_10 < colontmp__5)) goto LA52;
							i_9 = i_10;
							branch = (*n)._Ukind.S6.sons->data[i_9];
							switch ((*branch).kind) {
							case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 50):
							case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
							{
								{
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branchBody;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* newBranch;
									tyArray_jlWPjgtbdjE069arIWHC9c9bg T58_;
									if (!isExpr) goto LA56_;
									branchBody = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*branch).info);
									addExprAssgn_8z9c7ZI6YoLC8wd85rq6foQ((&(*ctx)), branchBody, (*branch)._Ukind.S6.sons->data[((NI) 0)], tmp);
									nimZeroMem((void*)T58_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
									T58_[0] = branchBody;
									newBranch = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), T58_, 1);
									add_gCCf68XrWL79bKes6htzFjQ(curS, newBranch);
								}
								goto LA54_;
								LA56_: ;
								{
									add_gCCf68XrWL79bKes6htzFjQ(curS, branch);
								}
								LA54_: ;
							}
							break;
							case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 49):
							case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86):
							{
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* newBranch_2;
								newBranch_2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								{
									tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T65_;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_4;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* res;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* elseBody;
									tyArray_jlWPjgtbdjE069arIWHC9c9bg T66_;
									tyArray_AB6yfoUgfWM2NtGe9bzkCmw T67_;
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* newIf;
									tyArray_jlWPjgtbdjE069arIWHC9c9bg T68_;
									if (!((*(*branch)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA63_;
									nimZeroMem((void*)(&T65_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
									exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*branch)._Ukind.S6.sons->data[((NI) 0)], (&T65_));
									st_4 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
									st_4 = T65_.Field0;
									res = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
									res = T65_.Field1;
									nimZeroMem((void*)T66_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
									T66_[0] = st_4;
									elseBody = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), T66_, 1);
									nimZeroMem((void*)T67_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
									T67_[0] = res;
									T67_[1] = (*branch)._Ukind.S6.sons->data[((NI) 1)];
									newBranch_2 = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), T67_, 2);
									nimZeroMem((void*)T68_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
									T68_[0] = newBranch_2;
									newIf = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92), T68_, 1);
									add_gCCf68XrWL79bKes6htzFjQ(elseBody, newIf);
									{
										tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* newElse;
										if (!((*curS).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92))) goto LA71_;
										newElse = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), (*branch).info);
										add_gCCf68XrWL79bKes6htzFjQ(newElse, elseBody);
										add_gCCf68XrWL79bKes6htzFjQ(curS, newElse);
									}
									goto LA69_;
									LA71_: ;
									{
										add_gCCf68XrWL79bKes6htzFjQ(curS, elseBody);
									}
									LA69_: ;
									curS = newIf;
								}
								goto LA61_;
								LA63_: ;
								{
									newBranch_2 = branch;
									{
										if (!((*curS).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92))) goto LA77_;
										add_gCCf68XrWL79bKes6htzFjQ(curS, newBranch_2);
									}
									goto LA75_;
									LA77_: ;
									{
										tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* newIf_2;
										tyArray_jlWPjgtbdjE069arIWHC9c9bg T80_;
										nimZeroMem((void*)T80_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
										T80_[0] = newBranch_2;
										newIf_2 = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92), T80_, 1);
										add_gCCf68XrWL79bKes6htzFjQ(curS, newIf_2);
										curS = newIf_2;
									}
									LA75_: ;
								}
								LA61_: ;
								{
									tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branchBody_2;
									if (!isExpr) goto LA83_;
									branchBody_2 = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*(*branch)._Ukind.S6.sons->data[((NI) 1)]).info);
									addExprAssgn_8z9c7ZI6YoLC8wd85rq6foQ((&(*ctx)), branchBody_2, (*branch)._Ukind.S6.sons->data[((NI) 1)], tmp);
									asgnRefNoCycle((void**) (&(*newBranch_2)._Ukind.S6.sons->data[((NI) 1)]), branchBody_2);
								}
								LA83_: ;
							}
							break;
							default:
							{
								NimStringDesc* T86_;
								T86_ = (NimStringDesc*)0;
								T86_ = rawNewString((reprEnum((NI)(*branch).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_)) ? reprEnum((NI)(*branch).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_))->Sup.len : 0) + 25);
appendString(T86_, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_7));
appendString(T86_, reprEnum((NI)(*branch).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_)));
								internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*ctx).g).config, T86_);
							}
							break;
							}
							i_10 += ((NI) 1);
						} LA52: ;
					}
				}
			}
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T91_;
				if (!isExpr) goto LA89_;
				T91_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T91_ = newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA((&(*ctx)), tmp);
				add_gCCf68XrWL79bKes6htzFjQ(result, T91_);
			}
			LA89_: ;
		}
		LA41_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 106):
	{
		NIM_BOOL ns_4;
		ns_4 = NIM_FALSE;
		{
			NI i_11;
			NI colontmp__6;
			NI i_12;
			i_11 = (NI)0;
			colontmp__6 = (NI)0;
			colontmp__6 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_12 = ((NI) 0);
			{
				while (1) {
					if (!(i_12 < colontmp__6)) goto LA95;
					i_11 = i_12;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_11]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[i_11], (&ns_4)));
					i_12 += ((NI) 1);
				} LA95: ;
			}
		}
		{
			NIM_BOOL isExpr_2;
			NIM_BOOL T100_;
			if (!ns_4) goto LA98_;
			(*needsSplit) = NIM_TRUE;
			T100_ = (NIM_BOOL)0;
			T100_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*n).typ);
			isExpr_2 = !(T100_);
			{
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* tmp_2;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T117_;
				if (!isExpr_2) goto LA103_;
				result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126), (*n).info);
				asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
				tmp_2 = newTempVar_QW5USoce3qh9bXxwwKr5bhQ(ctx, (*n).typ);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), convertExprBodyToAsgn_vd1QeJ9cA7AV6YltHaGpUfQ((&(*ctx)), (*n)._Ukind.S6.sons->data[((NI) 0)], tmp_2));
				{
					NI i_13;
					NI colontmp__7;
					NI i_14;
					i_13 = (NI)0;
					colontmp__7 = (NI)0;
					colontmp__7 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					i_14 = ((NI) 1);
					{
						while (1) {
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch_2;
							if (!(i_14 < colontmp__7)) goto LA107;
							i_13 = i_14;
							branch_2 = (*n)._Ukind.S6.sons->data[i_13];
							switch ((*branch_2).kind) {
							case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 87):
							{
								{
									if (!((*(*branch_2)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 4))) goto LA111_;
									asgnRefNoCycle((void**) (&(*branch_2)._Ukind.S6.sons->data[((NI) 1)]), convertExprBodyToAsgn_vd1QeJ9cA7AV6YltHaGpUfQ((&(*ctx)), (*branch_2)._Ukind.S6.sons->data[((NI) 1)], tmp_2));
								}
								goto LA109_;
								LA111_: ;
								{
									asgnRefNoCycle((void**) (&(*branch_2)._Ukind.S6.sons->data[((NI) 0)]), convertExprBodyToAsgn_vd1QeJ9cA7AV6YltHaGpUfQ((&(*ctx)), (*branch_2)._Ukind.S6.sons->data[((NI) 0)], tmp_2));
								}
								LA109_: ;
							}
							break;
							case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 107):
							{
							}
							break;
							default:
							{
								NimStringDesc* T116_;
								T116_ = (NimStringDesc*)0;
								T116_ = rawNewString((reprEnum((NI)(*branch_2).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_)) ? reprEnum((NI)(*branch_2).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_))->Sup.len : 0) + 30);
appendString(T116_, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_8));
appendString(T116_, reprEnum((NI)(*branch_2).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_)));
								internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*ctx).g).config, T116_);
							}
							break;
							}
							i_14 += ((NI) 1);
						} LA107: ;
					}
				}
				add_gCCf68XrWL79bKes6htzFjQ(result, n);
				T117_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T117_ = newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA((&(*ctx)), tmp_2);
				add_gCCf68XrWL79bKes6htzFjQ(result, T117_);
			}
			LA103_: ;
		}
		LA98_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 97):
	{
		NIM_BOOL ns_5;
		ns_5 = NIM_FALSE;
		{
			NI i_15;
			NI colontmp__8;
			NI i_16;
			i_15 = (NI)0;
			colontmp__8 = (NI)0;
			colontmp__8 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_16 = ((NI) 0);
			{
				while (1) {
					if (!(i_16 < colontmp__8)) goto LA121;
					i_15 = i_16;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_15]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[i_15], (&ns_5)));
					i_16 += ((NI) 1);
				} LA121: ;
			}
		}
		{
			NIM_BOOL isExpr_3;
			NIM_BOOL T126_;
			if (!ns_5) goto LA124_;
			(*needsSplit) = NIM_TRUE;
			T126_ = (NIM_BOOL)0;
			T126_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*n).typ);
			isExpr_3 = !(T126_);
			{
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* tmp_3;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T145_;
				if (!isExpr_3) goto LA129_;
				tmp_3 = newTempVar_QW5USoce3qh9bXxwwKr5bhQ(ctx, (*n).typ);
				result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126), (*n).info);
				asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
				{
					tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T135_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_5;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_4;
					if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA133_;
					nimZeroMem((void*)(&T135_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
					exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[((NI) 0)], (&T135_));
					st_5 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					st_5 = T135_.Field0;
					ex_4 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					ex_4 = T135_.Field1;
					add_gCCf68XrWL79bKes6htzFjQ(result, st_5);
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), ex_4);
				}
				LA133_: ;
				{
					NI i_17;
					NI colontmp__9;
					NI i_18;
					i_17 = (NI)0;
					colontmp__9 = (NI)0;
					colontmp__9 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					i_18 = ((NI) 1);
					{
						while (1) {
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch_3;
							if (!(i_18 < colontmp__9)) goto LA138;
							i_17 = i_18;
							branch_3 = (*n)._Ukind.S6.sons->data[i_17];
							switch ((*branch_3).kind) {
							case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85):
							{
								NI T140_;
								NI T141_;
								T140_ = (NI)0;
								T140_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(branch_3);
								T141_ = (NI)0;
								T141_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(branch_3);
								asgnRefNoCycle((void**) (&(*branch_3)._Ukind.S6.sons->data[(NI)(T140_ - ((NI) 1))]), convertExprBodyToAsgn_vd1QeJ9cA7AV6YltHaGpUfQ((&(*ctx)), (*branch_3)._Ukind.S6.sons->data[(NI)(T141_ - ((NI) 1))], tmp_3));
							}
							break;
							case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
							{
								asgnRefNoCycle((void**) (&(*branch_3)._Ukind.S6.sons->data[((NI) 0)]), convertExprBodyToAsgn_vd1QeJ9cA7AV6YltHaGpUfQ((&(*ctx)), (*branch_3)._Ukind.S6.sons->data[((NI) 0)], tmp_3));
							}
							break;
							default:
							{
								NimStringDesc* T144_;
								T144_ = (NimStringDesc*)0;
								T144_ = rawNewString((reprEnum((NI)(*branch_3).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_)) ? reprEnum((NI)(*branch_3).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_))->Sup.len : 0) + 31);
appendString(T144_, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_9));
appendString(T144_, reprEnum((NI)(*branch_3).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_)));
								internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*ctx).g).config, T144_);
							}
							break;
							}
							i_18 += ((NI) 1);
						} LA138: ;
					}
				}
				add_gCCf68XrWL79bKes6htzFjQ(result, n);
				T145_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T145_ = newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA((&(*ctx)), tmp_3);
				add_gCCf68XrWL79bKes6htzFjQ(result, T145_);
			}
			LA129_: ;
		}
		LA124_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32):
	{
		NIM_BOOL ns_6;
		ns_6 = NIM_FALSE;
		{
			NI i_19;
			NI colontmp__10;
			NI i_20;
			i_19 = (NI)0;
			colontmp__10 = (NI)0;
			colontmp__10 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_20 = ((NI) 0);
			{
				while (1) {
					if (!(i_20 < colontmp__10)) goto LA149;
					i_19 = i_20;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_19]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[i_19], (&ns_6)));
					i_20 += ((NI) 1);
				} LA149: ;
			}
		}
		{
			NIM_BOOL isExpr_4;
			NIM_BOOL T154_;
			if (!ns_6) goto LA152_;
			(*needsSplit) = NIM_TRUE;
			T154_ = (NIM_BOOL)0;
			T154_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*n).typ);
			isExpr_4 = !(T154_);
			{
				if (!isExpr_4) goto LA157_;
				result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126), (*n).info);
				asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
			}
			goto LA155_;
			LA157_: ;
			{
				result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
			}
			LA155_: ;
			{
				NIM_BOOL T162_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* cond;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* tmp_4;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T171_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* check;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ifBody;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T181_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ifBranch;
				tyArray_AB6yfoUgfWM2NtGe9bzkCmw T182_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ifNode;
				tyArray_jlWPjgtbdjE069arIWHC9c9bg T183_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T184_;
				T162_ = (NIM_BOOL)0;
				T162_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
				if (!(T162_)) goto LA163_;
				T162_ = ((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 129) || (*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 130));
				LA163_: ;
				if (!T162_) goto LA164_;
				cond = (*n)._Ukind.S6.sons->data[((NI) 1)];
				{
					tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T170_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_6;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_5;
					if (!((*cond).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA168_;
					nimZeroMem((void*)(&T170_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
					exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg(cond, (&T170_));
					st_6 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					st_6 = T170_.Field0;
					ex_5 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					ex_5 = T170_.Field1;
					add_gCCf68XrWL79bKes6htzFjQ(result, st_6);
					cond = ex_5;
				}
				LA168_: ;
				tmp_4 = newTempVar_QW5USoce3qh9bXxwwKr5bhQ(ctx, (*cond).typ);
				T171_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T171_ = newEnvVarAsgn_Pdr0r9b0MHuUSo6FCs9aYHpA((&(*ctx)), tmp_4, cond);
				add_gCCf68XrWL79bKes6htzFjQ(result, T171_);
				check = newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA((&(*ctx)), tmp_4);
				{
					if (!((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 130))) goto LA174_;
					check = newNotCall_qb0UTd3LRTRUDLaWZGAI3w((*ctx).g, check);
				}
				LA174_: ;
				cond = (*n)._Ukind.S6.sons->data[((NI) 2)];
				ifBody = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*cond).info);
				{
					tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T180_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_7;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_6;
					if (!((*cond).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA178_;
					nimZeroMem((void*)(&T180_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
					exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg(cond, (&T180_));
					st_7 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					st_7 = T180_.Field0;
					ex_6 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					ex_6 = T180_.Field1;
					add_gCCf68XrWL79bKes6htzFjQ(ifBody, st_7);
					cond = ex_6;
				}
				LA178_: ;
				T181_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T181_ = newEnvVarAsgn_Pdr0r9b0MHuUSo6FCs9aYHpA((&(*ctx)), tmp_4, cond);
				add_gCCf68XrWL79bKes6htzFjQ(ifBody, T181_);
				nimZeroMem((void*)T182_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
				T182_[0] = check;
				T182_[1] = ifBody;
				ifBranch = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), T182_, 2);
				nimZeroMem((void*)T183_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
				T183_[0] = ifBranch;
				ifNode = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92), T183_, 1);
				add_gCCf68XrWL79bKes6htzFjQ(result, ifNode);
				T184_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T184_ = newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA((&(*ctx)), tmp_4);
				add_gCCf68XrWL79bKes6htzFjQ(result, T184_);
			}
			goto LA160_;
			LA164_: ;
			{
				{
					NI i_21;
					NI colontmp__11;
					NI i_22;
					i_21 = (NI)0;
					colontmp__11 = (NI)0;
					colontmp__11 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
					i_22 = ((NI) 0);
					{
						while (1) {
							if (!(i_22 < colontmp__11)) goto LA188;
							i_21 = i_22;
							{
								tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T193_;
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_8;
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_7;
								if (!((*(*n)._Ukind.S6.sons->data[i_21]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA191_;
								nimZeroMem((void*)(&T193_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
								exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[i_21], (&T193_));
								st_8 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								st_8 = T193_.Field0;
								ex_7 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								ex_7 = T193_.Field1;
								add_gCCf68XrWL79bKes6htzFjQ(result, st_8);
								asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_21]), ex_7);
							}
							LA191_: ;
							{
								tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* tmp_5;
								tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T198_;
								if (!((*(*n)._Ukind.S6.sons->data[i_21]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27) || (*(*n)._Ukind.S6.sons->data[i_21]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 29) || (*(*n)._Ukind.S6.sons->data[i_21]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 30) || (*(*n)._Ukind.S6.sons->data[i_21]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 31) || (*(*n)._Ukind.S6.sons->data[i_21]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) || (*(*n)._Ukind.S6.sons->data[i_21]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 28) || (*(*n)._Ukind.S6.sons->data[i_21]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32))) goto LA196_;
								tmp_5 = newTempVar_QW5USoce3qh9bXxwwKr5bhQ(ctx, (*(*n)._Ukind.S6.sons->data[i_21]).typ);
								T198_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
								T198_ = newEnvVarAsgn_Pdr0r9b0MHuUSo6FCs9aYHpA((&(*ctx)), tmp_5, (*n)._Ukind.S6.sons->data[i_21]);
								add_gCCf68XrWL79bKes6htzFjQ(result, T198_);
								asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_21]), newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA((&(*ctx)), tmp_5));
							}
							LA196_: ;
							i_22 += ((NI) 1);
						} LA188: ;
					}
				}
				add_gCCf68XrWL79bKes6htzFjQ(result, n);
			}
			LA160_: ;
		}
		LA152_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 100):
	{
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* c;
			c = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i_23;
				NI colontmp__12;
				NI i_24;
				i_23 = (NI)0;
				colontmp__12 = (NI)0;
				colontmp__12 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
				i_24 = ((NI) 0);
				{
					while (1) {
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* varSect;
						NIM_BOOL ns_7;
						NI T204_;
						NI T205_;
						if (!(i_24 < colontmp__12)) goto LA203;
						i_23 = i_24;
						c = (*n)._Ukind.S6.sons->data[i_23];
						varSect = newNodeI_I7fH85CUcZMasoPRKxPsPg((*n).kind, (*n).info);
						add_gCCf68XrWL79bKes6htzFjQ(varSect, c);
						ns_7 = NIM_FALSE;
						T204_ = (NI)0;
						T204_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(c);
						T205_ = (NI)0;
						T205_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(c);
						asgnRefNoCycle((void**) (&(*c)._Ukind.S6.sons->data[(NI)(T204_ - ((NI) 1))]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*c)._Ukind.S6.sons->data[(NI)(T205_ - ((NI) 1))], (&ns_7)));
						{
							NI T210_;
							tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T211_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_9;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_8;
							NI T212_;
							if (!ns_7) goto LA208_;
							(*needsSplit) = NIM_TRUE;
							T210_ = (NI)0;
							T210_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(c);
							nimZeroMem((void*)(&T211_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
							exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*c)._Ukind.S6.sons->data[(NI)(T210_ - ((NI) 1))], (&T211_));
							st_9 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							st_9 = T211_.Field0;
							ex_8 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							ex_8 = T211_.Field1;
							add_gCCf68XrWL79bKes6htzFjQ(result, st_9);
							T212_ = (NI)0;
							T212_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(c);
							asgnRefNoCycle((void**) (&(*c)._Ukind.S6.sons->data[(NI)(T212_ - ((NI) 1))]), ex_8);
						}
						LA208_: ;
						add_gCCf68XrWL79bKes6htzFjQ(result, varSect);
						i_24 += ((NI) 1);
					} LA203: ;
				}
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 114):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 109):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 108):
	{
		NIM_BOOL ns_8;
		ns_8 = NIM_FALSE;
		{
			NI i_25;
			NI colontmp__13;
			NI i_26;
			i_25 = (NI)0;
			colontmp__13 = (NI)0;
			colontmp__13 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_26 = ((NI) 0);
			{
				while (1) {
					if (!(i_26 < colontmp__13)) goto LA216;
					i_25 = i_26;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_25]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[i_25], (&ns_8)));
					i_26 += ((NI) 1);
				} LA216: ;
			}
		}
		{
			tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T221_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_10;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_9;
			if (!ns_8) goto LA219_;
			(*needsSplit) = NIM_TRUE;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
			nimZeroMem((void*)(&T221_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
			exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[((NI) 0)], (&T221_));
			st_10 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			st_10 = T221_.Field0;
			ex_9 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			ex_9 = T221_.Field1;
			add_gCCf68XrWL79bKes6htzFjQ(result, st_10);
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), ex_9);
			add_gCCf68XrWL79bKes6htzFjQ(result, n);
		}
		LA219_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 61):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 60):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 66):
	{
		NIM_BOOL ns_9;
		ns_9 = NIM_FALSE;
		{
			NI i_27;
			NI colontmp__14;
			NI i_28;
			i_27 = (NI)0;
			colontmp__14 = (NI)0;
			colontmp__14 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_28 = ((NI) 0);
			{
				while (1) {
					if (!(i_28 < colontmp__14)) goto LA225;
					i_27 = i_28;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_27]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[i_27], (&ns_9)));
					i_28 += ((NI) 1);
				} LA225: ;
			}
		}
		{
			NI T230_;
			tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T231_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_11;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_10;
			NI T232_;
			if (!ns_9) goto LA228_;
			(*needsSplit) = NIM_TRUE;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126), (*n).info);
			asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
			T230_ = (NI)0;
			T230_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			nimZeroMem((void*)(&T231_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
			exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[(NI)(T230_ - ((NI) 1))], (&T231_));
			st_11 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			st_11 = T231_.Field0;
			ex_10 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			ex_10 = T231_.Field1;
			add_gCCf68XrWL79bKes6htzFjQ(result, st_11);
			T232_ = (NI)0;
			T232_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[(NI)(T232_ - ((NI) 1))]), ex_10);
			add_gCCf68XrWL79bKes6htzFjQ(result, n);
		}
		LA228_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 74):
	{
		NIM_BOOL ns_10;
		ns_10 = NIM_FALSE;
		{
			NI i_29;
			NI colontmp__15;
			NI i_30;
			i_29 = (NI)0;
			colontmp__15 = (NI)0;
			colontmp__15 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_30 = ((NI) 0);
			{
				while (1) {
					if (!(i_30 < colontmp__15)) goto LA236;
					i_29 = i_30;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_29]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[i_29], (&ns_10)));
					i_30 += ((NI) 1);
				} LA236: ;
			}
		}
		{
			if (!ns_10) goto LA239_;
			(*needsSplit) = NIM_TRUE;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
			{
				tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T245_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_12;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_11;
				if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA243_;
				nimZeroMem((void*)(&T245_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
				exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[((NI) 0)], (&T245_));
				st_12 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				st_12 = T245_.Field0;
				ex_11 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				ex_11 = T245_.Field1;
				add_gCCf68XrWL79bKes6htzFjQ(result, st_12);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), ex_11);
			}
			LA243_: ;
			{
				tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T250_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_13;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_12;
				if (!((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126))) goto LA248_;
				nimZeroMem((void*)(&T250_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
				exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[((NI) 1)], (&T250_));
				st_13 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				st_13 = T250_.Field0;
				ex_12 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				ex_12 = T250_.Field1;
				add_gCCf68XrWL79bKes6htzFjQ(result, st_13);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), ex_12);
			}
			LA248_: ;
			add_gCCf68XrWL79bKes6htzFjQ(result, n);
		}
		LA239_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
	{
		NIM_BOOL lhsNeedsSplit;
		NIM_BOOL rhsNeedsSplit;
		lhsNeedsSplit = NIM_FALSE;
		rhsNeedsSplit = NIM_FALSE;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[((NI) 0)], (&lhsNeedsSplit)));
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[((NI) 1)], (&rhsNeedsSplit)));
		{
			NIM_BOOL T254_;
			T254_ = (NIM_BOOL)0;
			T254_ = lhsNeedsSplit;
			if (T254_) goto LA255_;
			T254_ = rhsNeedsSplit;
			LA255_: ;
			if (!T254_) goto LA256_;
			(*needsSplit) = NIM_TRUE;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126), (*n).info);
			{
				tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T262_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_14;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_13;
				if (!lhsNeedsSplit) goto LA260_;
				nimZeroMem((void*)(&T262_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
				exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[((NI) 0)], (&T262_));
				st_14 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				st_14 = T262_.Field0;
				ex_13 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				ex_13 = T262_.Field1;
				add_gCCf68XrWL79bKes6htzFjQ(result, st_14);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), ex_13);
			}
			LA260_: ;
			{
				tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T267_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_15;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_14;
				if (!rhsNeedsSplit) goto LA265_;
				nimZeroMem((void*)(&T267_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
				exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[((NI) 1)], (&T267_));
				st_15 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				st_15 = T267_.Field0;
				ex_14 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				ex_14 = T267_.Field1;
				add_gCCf68XrWL79bKes6htzFjQ(result, st_15);
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), ex_14);
			}
			LA265_: ;
			add_gCCf68XrWL79bKes6htzFjQ(result, n);
		}
		LA256_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96):
	{
		NIM_BOOL ns_11;
		NIM_BOOL condNeedsSplit;
		NIM_BOOL bodyNeedsSplit;
		ns_11 = NIM_FALSE;
		condNeedsSplit = NIM_FALSE;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[((NI) 0)], (&condNeedsSplit)));
		bodyNeedsSplit = NIM_FALSE;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[((NI) 1)], (&bodyNeedsSplit)));
		{
			NIM_BOOL T271_;
			T271_ = (NIM_BOOL)0;
			T271_ = condNeedsSplit;
			if (T271_) goto LA272_;
			T271_ = bodyNeedsSplit;
			LA272_: ;
			if (!T271_) goto LA273_;
			(*needsSplit) = NIM_TRUE;
			{
				tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T279_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_16;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_15;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* brk;
				tyArray_jlWPjgtbdjE069arIWHC9c9bg T280_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch_4;
				tyArray_AB6yfoUgfWM2NtGe9bzkCmw T281_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* check_2;
				tyArray_jlWPjgtbdjE069arIWHC9c9bg T282_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* newBody;
				tyArray_T6RKPw8xfAeNaoei9aZGzXg T283_;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T284_;
				if (!condNeedsSplit) goto LA277_;
				nimZeroMem((void*)(&T279_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
				exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[((NI) 0)], (&T279_));
				st_16 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				st_16 = T279_.Field0;
				ex_15 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				ex_15 = T279_.Field1;
				nimZeroMem((void*)T280_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
				T280_[0] = (*(*ctx).g).emptyNode;
				brk = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 110), T280_, 1);
				nimZeroMem((void*)T281_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
				T281_[0] = newNotCall_qb0UTd3LRTRUDLaWZGAI3w((*ctx).g, ex_15);
				T281_[1] = brk;
				branch_4 = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), T281_, 2);
				nimZeroMem((void*)T282_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
				T282_[0] = branch_4;
				check_2 = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92), T282_, 1);
				nimZeroMem((void*)T283_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
				T283_[0] = st_16;
				T283_[1] = check_2;
				T283_[2] = (*n)._Ukind.S6.sons->data[((NI) 1)];
				newBody = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), T283_, 3);
				T284_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
				T284_ = getSysSym_9bvw79ck1FDiWpnBYh88rEfw((*ctx).g, (*(*n)._Ukind.S6.sons->data[((NI) 0)]).info, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_11));
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), newSymNode_UWZXukHA5As9aCftRHbafBg(T284_));
				asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), newBody);
			}
			LA277_: ;
		}
		LA273_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45):
	{
		NIM_BOOL ns_12;
		ns_12 = NIM_FALSE;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[((NI) 0)], (&ns_12)));
		{
			tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T290_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_17;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_16;
			if (!ns_12) goto LA288_;
			(*needsSplit) = NIM_TRUE;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126), (*n).info);
			asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
			nimZeroMem((void*)(&T290_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
			exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[((NI) 0)], (&T290_));
			st_17 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			st_17 = T290_.Field0;
			ex_16 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			ex_16 = T290_.Field1;
			add_gCCf68XrWL79bKes6htzFjQ(result, st_17);
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 0)]), ex_16);
			add_gCCf68XrWL79bKes6htzFjQ(result, n);
		}
		LA288_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 127):
	{
		NIM_BOOL ns_13;
		ns_13 = NIM_FALSE;
		asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[((NI) 1)], (&ns_13)));
		{
			tyTuple_EFqgCXJ4d8PgqOdFJmldsQ T296_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* st_18;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ex_17;
			if (!ns_13) goto LA294_;
			(*needsSplit) = NIM_TRUE;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126), (*n).info);
			asgnRefNoCycle((void**) (&(*result).typ), (*n).typ);
			nimZeroMem((void*)(&T296_), sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ));
			exprToStmtList_d9cvlVheNNPwJbJUFTag0Pg((*n)._Ukind.S6.sons->data[((NI) 1)], (&T296_));
			st_18 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			st_18 = T296_.Field0;
			ex_17 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			ex_17 = T296_.Field1;
			(*n).kind = ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112);
			asgnRefNoCycle((void**) (&(*n).typ), NIM_NIL);
			asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[((NI) 1)]), st_18);
			add_gCCf68XrWL79bKes6htzFjQ(result, n);
			add_gCCf68XrWL79bKes6htzFjQ(result, ex_17);
		}
		LA294_: ;
	}
	break;
	default:
	{
		{
			NI i_31;
			NI colontmp__16;
			NI i_32;
			i_31 = (NI)0;
			colontmp__16 = (NI)0;
			colontmp__16 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_32 = ((NI) 0);
			{
				while (1) {
					if (!(i_32 < colontmp__16)) goto LA300;
					i_31 = i_32;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_31]), lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ(ctx, (*n)._Ukind.S6.sons->data[i_31], needsSplit));
					i_32 += ((NI) 1);
				} LA300: ;
			}
		}
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasYields_4rkdqTkMcgAkMWgpzNBGPQ_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 104):
	{
		result = NIM_TRUE;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 113):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
	}
	break;
	default:
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* c;
			c = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
				i_2 = ((NI) 0);
				{
					while (1) {
						if (!(i_2 < colontmp_)) goto LA7;
						i = i_2;
						c = (*n)._Ukind.S6.sons->data[i];
						{
							NIM_BOOL T10_;
							T10_ = (NIM_BOOL)0;
							T10_ = hasYields_4rkdqTkMcgAkMWgpzNBGPQ_2(c);
							if (!T10_) goto LA11_;
							result = NIM_TRUE;
							goto LA4;
						}
						LA11_: ;
						i_2 += ((NI) 1);
					} LA7: ;
				}
			}
		} LA4: ;
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, hasYieldsInExpressions_4rkdqTkMcgAkMWgpzNBGPQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 113):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126):
	{
		{
			NIM_BOOL T5_;
			T5_ = (NIM_BOOL)0;
			T5_ = isEmptyType_9aw9cztYHpNdZjCV1t0mJqwgvmgen((*n).typ);
			if (!T5_) goto LA6_;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* c;
				c = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				{
					NI i;
					NI colontmp_;
					NI i_2;
					i = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
					i_2 = ((NI) 0);
					{
						while (1) {
							if (!(i_2 < colontmp_)) goto LA11;
							i = i_2;
							c = (*n)._Ukind.S6.sons->data[i];
							{
								NIM_BOOL T14_;
								T14_ = (NIM_BOOL)0;
								T14_ = hasYieldsInExpressions_4rkdqTkMcgAkMWgpzNBGPQ(c);
								if (!T14_) goto LA15_;
								result = NIM_TRUE;
								goto BeforeRet_;
							}
							LA15_: ;
							i_2 += ((NI) 1);
						} LA11: ;
					}
				}
			}
		}
		goto LA3_;
		LA6_: ;
		{
			result = hasYields_4rkdqTkMcgAkMWgpzNBGPQ_2(n);
		}
		LA3_: ;
	}
	break;
	default:
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* c_2;
			c_2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i_3;
				NI colontmp__2;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				colontmp__2 = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
				i_4 = ((NI) 0);
				{
					while (1) {
						if (!(i_4 < colontmp__2)) goto LA22;
						i_3 = i_4;
						c_2 = (*n)._Ukind.S6.sons->data[i_3];
						{
							NIM_BOOL T25_;
							T25_ = (NIM_BOOL)0;
							T25_ = hasYieldsInExpressions_4rkdqTkMcgAkMWgpzNBGPQ(c_2);
							if (!T25_) goto LA26_;
							result = NIM_TRUE;
							goto BeforeRet_;
						}
						LA26_: ;
						i_4 += ((NI) 1);
					} LA22: ;
				}
			}
		}
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}

static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw**, X5BX5D__YLEY3nLpUU2onE02S2OSlgast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** s, NI sLen_0, NI i) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw**)0;
	result = &s[(NI)(sLen_0 - i)];
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, addGotoOut_m9cwKcZ658PIQ2DjG0Pl6cw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gotoOut) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = toStmtList_nuiE2KI8tXWBtjEGdOFH5g(n);
	{
		NIM_BOOL T3_;
		NI T4_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw** T6_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NI)0;
		T4_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
		T3_ = (T4_ == ((NI) 0));
		if (T3_) goto LA5_;
		T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw**)0;
		T6_ = X5BX5D__YLEY3nLpUU2onE02S2OSlgast((*result)._Ukind.S6.sons->data, ((*result)._Ukind.S6.sons ? (*result)._Ukind.S6.sons->Sup.len : 0), ((NI) 1));
		T3_ = !(((*(*T6_)).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156)));
		LA5_: ;
		if (!T3_) goto LA7_;
		add_gCCf68XrWL79bKes6htzFjQ(result, gotoOut);
	}
	LA7_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformBreaksAndContinuesInWhile_HHd9a4D5LvlgvRGmwO0MWHw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* before, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* after) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 113):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 111):
	{
		result = before;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112):
	{
		(*ctx).blockLevel += ((NI) 1);
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), transformBreaksAndContinuesInWhile_HHd9a4D5LvlgvRGmwO0MWHw(ctx, (*result)._Ukind.S6.sons->data[((NI) 1)], before, after));
		(*ctx).blockLevel -= ((NI) 1);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 110):
	{
		{
			if (!((*ctx).blockLevel == ((NI) 0))) goto LA8_;
			result = after;
		}
		LA8_: ;
	}
	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 LA13;
					i = i_2;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), transformBreaksAndContinuesInWhile_HHd9a4D5LvlgvRGmwO0MWHw(ctx, (*n)._Ukind.S6.sons->data[i], before, after));
					i_2 += ((NI) 1);
				} LA13: ;
			}
		}
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformBreaksInBlock_VkT9azRLtJ0eAKoaK3PPqVw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* label, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* after) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 113):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96):
	{
		(*ctx).blockLevel += ((NI) 1);
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), transformBreaksInBlock_VkT9azRLtJ0eAKoaK3PPqVw(ctx, (*result)._Ukind.S6.sons->data[((NI) 1)], label, after));
		(*ctx).blockLevel -= ((NI) 1);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 110):
	{
		{
			if (!((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1))) goto LA6_;
			{
				if (!((*ctx).blockLevel == ((NI) 0))) goto LA10_;
				result = after;
			}
			LA10_: ;
		}
		goto LA4_;
		LA6_: ;
		{
			{
				NIM_BOOL T15_;
				T15_ = (NIM_BOOL)0;
				T15_ = ((*label).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
				if (!(T15_)) goto LA16_;
				T15_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S4.sym == (*label)._Ukind.S4.sym);
				LA16_: ;
				if (!T15_) goto LA17_;
				result = after;
			}
			LA17_: ;
		}
		LA4_: ;
	}
	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 LA22;
					i = i_2;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), transformBreaksInBlock_VkT9azRLtJ0eAKoaK3PPqVw(ctx, (*n)._Ukind.S6.sons->data[i], label, after));
					i_2 += ((NI) 1);
				} LA22: ;
			}
		}
	}
	break;
	}
	return result;
}

static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newOr_lX4ijAVTzsRg8N1Lp9atJqQclosureiters)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyArray_T6RKPw8xfAeNaoei9aZGzXg T1_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)T1_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
	T2_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T2_ = getSysMagic_F0sH3uZM4wsRv4Pi1Pzwlg(g, (*a).info, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_16), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 130));
	T1_[0] = newSymNode_UWZXukHA5As9aCftRHbafBg(T2_);
	T1_[1] = a;
	T1_[2] = b;
	result = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), T1_, 3);
	asgnRefNoCycle((void**) (&(*result).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg(g, (*a).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1)));
	(*result).info = (*a).info;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newCurExcAccess_cqBE2u681LMwPlL6VXs4dA)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
		if (!((*ctx).curExcSym == 0)) goto LA3_;
		T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T5_ = callCodegenProc_PPOCfdFmaSI5Bh5AMAPlmA((*ctx).g, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_15), (*(*ctx).g).emptyNode, NIM_NIL, NIM_NIL, NIM_NIL);
		unsureAsgnRef((void**) (&(*ctx).curExcSym), newEnvVar_1R4449bUoJU5f9a8XxF6z2jw(ctx, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_17), (*T5_).typ));
	}
	LA3_: ;
	result = newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA((&(*ctx)), (*ctx).curExcSym);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newNullifyCurExc_FlUh1Xo9bXJFuG43AoVOEVw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* curExc;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nilnode;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	curExc = newCurExcAccess_cqBE2u681LMwPlL6VXs4dA(ctx);
	(*curExc).info = info;
	nilnode = newNode_IgnRxkID5wXTWvTZf9ct0rA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23));
	asgnRefNoCycle((void**) (&(*nilnode).typ), (*curExc).typ);
	nimZeroMem((void*)T1_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T1_[0] = curExc;
	T1_[1] = nilnode;
	result = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), T1_, 2);
	return result;
}

static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, collectExceptState_eyQv3n2M3569coxZwjgCbIwclosureiters)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ifStmt;
	tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	ifStmt = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92), (*n).info);
	g = (*ctx).g;
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* c;
		c = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen_CdME9baJhvveuPEDZE9bXoxArenderer(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA4;
					i = i_2;
					c = (*n)._Ukind.S6.sons->data[i];
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ifBranch;
						NI T32_;
						if (!((*c).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 87))) goto LA7_;
						ifBranch = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						{
							NI T11_;
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* cond;
							T11_ = (NI)0;
							T11_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(c);
							if (!(((NI) 1) < T11_)) goto LA12_;
							cond = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							{
								NI i_3;
								NI colontmp__2;
								NI T15_;
								NI res;
								i_3 = (NI)0;
								colontmp__2 = (NI)0;
								T15_ = (NI)0;
								T15_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(c);
								colontmp__2 = (NI)(T15_ - ((NI) 2));
								res = ((NI) 0);
								{
									while (1) {
										tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nextCond;
										tyArray_T6RKPw8xfAeNaoei9aZGzXg T18_;
										tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T19_;
										if (!(res <= colontmp__2)) goto LA17;
										i_3 = res;
										nimZeroMem((void*)T18_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
										T19_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
										T19_ = getSysMagic_F0sH3uZM4wsRv4Pi1Pzwlg(g, (*c).info, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_14), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 12));
										T18_[0] = newSymNode_UWZXukHA5As9aCftRHbafBg(T19_);
										T18_[1] = callCodegenProc_PPOCfdFmaSI5Bh5AMAPlmA(g, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_15), (*(*ctx).g).emptyNode, NIM_NIL, NIM_NIL, NIM_NIL);
										T18_[2] = (*c)._Ukind.S6.sons->data[i_3];
										nextCond = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), T18_, 3);
										asgnRefNoCycle((void**) (&(*nextCond).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*ctx).g, (*c).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1)));
										(*nextCond).info = (*c).info;
										{
											if (!(cond == 0)) goto LA22_;
											cond = nextCond;
										}
										goto LA20_;
										LA22_: ;
										{
											cond = newOr_lX4ijAVTzsRg8N1Lp9atJqQclosureiters(g, cond, nextCond);
										}
										LA20_: ;
										res += ((NI) 1);
									} LA17: ;
								}
							}
							ifBranch = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), (*c).info);
							add_gCCf68XrWL79bKes6htzFjQ(ifBranch, cond);
						}
						goto LA9_;
						LA12_: ;
						{
							{
								NI T28_;
								T28_ = (NI)0;
								T28_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(ifStmt);
								if (!(T28_ == ((NI) 0))) goto LA29_;
								ifStmt = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*c).info);
								ifBranch = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*c).info);
							}
							goto LA26_;
							LA29_: ;
							{
								ifBranch = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), (*c).info);
							}
							LA26_: ;
						}
						LA9_: ;
						T32_ = (NI)0;
						T32_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(c);
						add_gCCf68XrWL79bKes6htzFjQ(ifBranch, (*c)._Ukind.S6.sons->data[(NI)(T32_ - ((NI) 1))]);
						add_gCCf68XrWL79bKes6htzFjQ(ifStmt, ifBranch);
					}
					LA7_: ;
					i_2 += ((NI) 1);
				} LA4: ;
			}
		}
	}
	{
		NI T35_;
		tyArray_AB6yfoUgfWM2NtGe9bzkCmw T38_;
		T35_ = (NI)0;
		T35_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(ifStmt);
		if (!!((T35_ == ((NI) 0)))) goto LA36_;
		nimZeroMem((void*)T38_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
		T38_[0] = newNullifyCurExc_FlUh1Xo9bXJFuG43AoVOEVw(ctx, (*n).info);
		T38_[1] = ifStmt;
		result = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), T38_, 2);
	}
	goto LA33_;
	LA36_: ;
	{
		result = (*(*ctx).g).emptyNode;
	}
	LA33_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getFinallyNode_9bHnHV2aPwwNJRPyRaoCsuA)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T1_ = (NI)0;
	T1_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
	result = (*n)._Ukind.S6.sons->data[(NI)(T1_ - ((NI) 1))];
	{
		if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 107))) goto LA4_;
		result = (*result)._Ukind.S6.sons->data[((NI) 0)];
	}
	goto LA2_;
	LA4_: ;
	{
		result = (*(*ctx).g).emptyNode;
	}
	LA2_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newUnrollFinallyAccess_FlUh1Xo9bXJFuG43AoVOEVw_2)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T5_;
		if (!((*ctx).unrollFinallySym == 0)) goto LA3_;
		T5_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
		T5_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*ctx).g, info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1));
		unsureAsgnRef((void**) (&(*ctx).unrollFinallySym), newEnvVar_1R4449bUoJU5f9a8XxF6z2jw(ctx, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_18), T5_));
	}
	LA3_: ;
	result = newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA((&(*ctx)), (*ctx).unrollFinallySym);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newTmpResultAccess_rUqQ9cA4p09aJ0JiN7bt4idg)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		if (!((*ctx).tmpResultSym == 0)) goto LA3_;
		unsureAsgnRef((void**) (&(*ctx).tmpResultSym), newEnvVar_1R4449bUoJU5f9a8XxF6z2jw(ctx, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_19), (*(*(*ctx).fn).typ).sons->data[((NI) 0)]));
	}
	LA3_: ;
	result = newEnvVarAccess_NiYatrnMPcrJZv6rvkZuTA((&(*ctx)), (*ctx).tmpResultSym);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformReturnsInTry_oib8dpvzVeiy5KmNWs9ajBw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 109):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T11_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* goto_1;
		tyArray_jlWPjgtbdjE069arIWHC9c9bg T12_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* asgn;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T3_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T4_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T5_;
			asgn = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), (*n).info);
			T3_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T3_ = newUnrollFinallyAccess_FlUh1Xo9bXJFuG43AoVOEVw_2(ctx, (*n).info);
			add_gCCf68XrWL79bKes6htzFjQ(asgn, T3_);
			T4_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T4_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*ctx).g, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1));
			T5_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T5_ = newIntTypeNode_IoblBePQdnK3IoXX7b1EDg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(1), T4_);
			add_gCCf68XrWL79bKes6htzFjQ(asgn, T5_);
			add_gCCf68XrWL79bKes6htzFjQ(result, asgn);
		}
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* asgnTmpResult;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T10_;
			if (!!(((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA8_;
			asgnTmpResult = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), (*n).info);
			T10_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T10_ = newTmpResultAccess_rUqQ9cA4p09aJ0JiN7bt4idg(ctx);
			add_gCCf68XrWL79bKes6htzFjQ(asgnTmpResult, T10_);
			add_gCCf68XrWL79bKes6htzFjQ(asgnTmpResult, (*n)._Ukind.S6.sons->data[((NI) 0)]);
			add_gCCf68XrWL79bKes6htzFjQ(result, asgnTmpResult);
		}
		LA8_: ;
		T11_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T11_ = newNullifyCurExc_FlUh1Xo9bXJFuG43AoVOEVw(ctx, (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(result, T11_);
		nimZeroMem((void*)T12_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
		T12_[0] = newIntLit_TuFlkTIoJNHT6fCcycYtSw((*ctx).g, (*n).info, ((NI64) ((*ctx).nearestFinally)));
		goto_1 = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156), T12_, 1);
		add_gCCf68XrWL79bKes6htzFjQ(result, goto_1);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 113):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
	}
	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 LA17;
					i = i_2;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), transformReturnsInTry_oib8dpvzVeiy5KmNWs9ajBw(ctx, (*n)._Ukind.S6.sons->data[i]));
					i_2 += ((NI) 1);
				} LA17: ;
			}
		}
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newEndFinallyNode_FlUh1Xo9bXJFuG43AoVOEVw_3)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* curExc;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* nilnode;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* cmp;
	tyArray_T6RKPw8xfAeNaoei9aZGzXg T1_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T2_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* asgn;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T3_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T4_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* retStmt;
	tyArray_jlWPjgtbdjE069arIWHC9c9bg T5_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branch;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T6_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* raiseStmt;
	tyArray_jlWPjgtbdjE069arIWHC9c9bg T7_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* elseBranch;
	tyArray_jlWPjgtbdjE069arIWHC9c9bg T8_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ifBody;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T9_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* elifBranch;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T10_;
	tyArray_jlWPjgtbdjE069arIWHC9c9bg T11_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	curExc = newCurExcAccess_cqBE2u681LMwPlL6VXs4dA(ctx);
	nilnode = newNode_IgnRxkID5wXTWvTZf9ct0rA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23));
	asgnRefNoCycle((void**) (&(*nilnode).typ), (*curExc).typ);
	nimZeroMem((void*)T1_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
	T2_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T2_ = getSysMagic_F0sH3uZM4wsRv4Pi1Pzwlg((*ctx).g, info, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_20), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 92));
	T1_[0] = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(T2_, info);
	T1_[1] = curExc;
	T1_[2] = nilnode;
	cmp = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), T1_, 3);
	asgnRefNoCycle((void**) (&(*cmp).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*ctx).g, info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1)));
	nimZeroMem((void*)T3_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T4_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T4_ = getClosureIterResult_TgYaD9azNHeiJdSPcrOB6SA_2((*ctx).g, (*ctx).fn);
	T3_[0] = newSymNode_NJtIrnjsE5ii9ciiIDaE0HQ(T4_, info);
	T3_[1] = newTmpResultAccess_rUqQ9cA4p09aJ0JiN7bt4idg(ctx);
	asgn = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 74), T3_, 2);
	nimZeroMem((void*)T5_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
	T5_[0] = asgn;
	retStmt = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 109), T5_, 1);
	nimZeroMem((void*)T6_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T6_[0] = cmp;
	T6_[1] = retStmt;
	branch = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), T6_, 2);
	nimZeroMem((void*)T7_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
	T7_[0] = callCodegenProc_PPOCfdFmaSI5Bh5AMAPlmA((*ctx).g, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_15), (*(*ctx).g).emptyNode, NIM_NIL, NIM_NIL, NIM_NIL);
	raiseStmt = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 108), T7_, 1);
	(*raiseStmt).info = info;
	nimZeroMem((void*)T8_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
	T8_[0] = raiseStmt;
	elseBranch = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), T8_, 1);
	nimZeroMem((void*)T9_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T9_[0] = branch;
	T9_[1] = elseBranch;
	ifBody = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92), T9_, 2);
	nimZeroMem((void*)T10_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T10_[0] = newUnrollFinallyAccess_FlUh1Xo9bXJFuG43AoVOEVw_2(ctx, info);
	T10_[1] = ifBody;
	elifBranch = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), T10_, 2);
	(*elifBranch).info = info;
	nimZeroMem((void*)T11_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
	T11_[0] = elifBranch;
	result = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92), T11_, 1);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, addElseToExcept_ZQwdGiE9bcxShuJtHMjr5sQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		NI T7_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* branchBody;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* elseBranch;
		tyArray_jlWPjgtbdjE069arIWHC9c9bg T20_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115));
		if (!(T4_)) goto LA5_;
		T4_ = ((*(*n)._Ukind.S6.sons->data[((NI) 1)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92));
		LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T7_ = (NI)0;
		T7_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch((*n)._Ukind.S6.sons->data[((NI) 1)]);
		T3_ = !(((*(*(*n)._Ukind.S6.sons->data[((NI) 1)])._Ukind.S6.sons->data[(NI)(T7_ - ((NI) 1))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88)));
		LA6_: ;
		if (!T3_) goto LA8_;
		branchBody = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
		{
			tyArray_AB6yfoUgfWM2NtGe9bzkCmw T11_;
			tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T12_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T13_;
			nimZeroMem((void*)T11_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
			T11_[0] = newUnrollFinallyAccess_FlUh1Xo9bXJFuG43AoVOEVw_2(ctx, (*n).info);
			T12_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
			T12_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*ctx).g, (*n).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1));
			T11_[1] = newIntTypeNode_IoblBePQdnK3IoXX7b1EDg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(1), T12_);
			T13_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T13_ = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), T11_, 2);
			add_gCCf68XrWL79bKes6htzFjQ(branchBody, T13_);
		}
		{
			tyArray_AB6yfoUgfWM2NtGe9bzkCmw T15_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T16_;
			nimZeroMem((void*)T15_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
			T15_[0] = newCurExcAccess_cqBE2u681LMwPlL6VXs4dA(ctx);
			T15_[1] = callCodegenProc_PPOCfdFmaSI5Bh5AMAPlmA((*ctx).g, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_15), (*(*ctx).g).emptyNode, NIM_NIL, NIM_NIL, NIM_NIL);
			T16_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T16_ = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), T15_, 2);
			add_gCCf68XrWL79bKes6htzFjQ(branchBody, T16_);
		}
		{
			tyArray_jlWPjgtbdjE069arIWHC9c9bg T18_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T19_;
			nimZeroMem((void*)T18_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
			T18_[0] = newIntLit_TuFlkTIoJNHT6fCcycYtSw((*ctx).g, (*n).info, ((NI64) ((*ctx).nearestFinally)));
			T19_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T19_ = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156), T18_, 1);
			add_gCCf68XrWL79bKes6htzFjQ(branchBody, T19_);
		}
		nimZeroMem((void*)T20_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
		T20_[0] = branchBody;
		elseBranch = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), T20_, 1);
		add_gCCf68XrWL79bKes6htzFjQ((*n)._Ukind.S6.sons->data[((NI) 1)], elseBranch);
	}
	LA8_: ;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gotoOut) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 113):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126):
	{
		result = addGotoOut_m9cwKcZ658PIQ2DjG0Pl6cw(result, gotoOut);
		{
			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 LA5;
					i = i_2;
					{
						NIM_BOOL T8_;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* go;
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s;
						NI T14_;
						T8_ = (NIM_BOOL)0;
						T8_ = hasYields_4rkdqTkMcgAkMWgpzNBGPQ_2((*n)._Ukind.S6.sons->data[i]);
						if (!T8_) goto LA9_;
						go = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156), (*(*n)._Ukind.S6.sons->data[i]).info);
						asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw(ctx, (*n)._Ukind.S6.sons->data[i], go));
						s = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*(*n)._Ukind.S6.sons->data[(NI)(i + ((NI) 1))]).info);
						{
							NI j;
							NI colontmp__2;
							NI colontmp__3;
							NI i_3;
							j = (NI)0;
							colontmp__2 = (NI)0;
							colontmp__3 = (NI)0;
							colontmp__2 = (NI)(i + ((NI) 1));
							colontmp__3 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
							i_3 = colontmp__2;
							{
								while (1) {
									if (!(i_3 < colontmp__3)) goto LA13;
									j = i_3;
									add_gCCf68XrWL79bKes6htzFjQ(s, (*n)._Ukind.S6.sons->data[j]);
									i_3 += ((NI) 1);
								} LA13: ;
							}
						}
						asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons), (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*) setLengthSeqV2(&((*n)._Ukind.S6.sons)->Sup, (&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ_), ((NI) ((NI)(i + ((NI) 1))))));
						T14_ = (NI)0;
						T14_ = newState_KR326D2V0A9c8rAN3F9amGLQ(ctx, s, go);
						(void)(T14_);
						{
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T17_;
							T17_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T17_ = transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw(ctx, s, gotoOut);
							if (!!((T17_ == s))) goto LA18_;
							internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*ctx).g).config, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_13));
						}
						LA18_: ;
						goto LA3;
					}
					LA9_: ;
					i_2 += ((NI) 1);
				} LA5: ;
			}
		} LA3: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 104):
	{
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(result, n);
		add_gCCf68XrWL79bKes6htzFjQ(result, gotoOut);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 50):
	{
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), addGotoOut_m9cwKcZ658PIQ2DjG0Pl6cw((*result)._Ukind.S6.sons->data[((NI) 0)], gotoOut));
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 0)]), transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw(ctx, (*result)._Ukind.S6.sons->data[((NI) 0)], gotoOut));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 49):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 85):
	{
		NI T23_;
		NI T24_;
		NI T25_;
		NI T26_;
		T23_ = (NI)0;
		T23_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
		T24_ = (NI)0;
		T24_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[(NI)(T23_ - ((NI) 1))]), addGotoOut_m9cwKcZ658PIQ2DjG0Pl6cw((*result)._Ukind.S6.sons->data[(NI)(T24_ - ((NI) 1))], gotoOut));
		T25_ = (NI)0;
		T25_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
		T26_ = (NI)0;
		T26_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[(NI)(T25_ - ((NI) 1))]), transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw(ctx, (*result)._Ukind.S6.sons->data[(NI)(T26_ - ((NI) 1))], gotoOut));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 97):
	{
		{
			NI i_4;
			NI colontmp__4;
			NI i_5;
			i_4 = (NI)0;
			colontmp__4 = (NI)0;
			colontmp__4 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_5 = ((NI) 0);
			{
				while (1) {
					if (!(i_5 < colontmp__4)) goto LA30;
					i_4 = i_5;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_4]), transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw(ctx, (*n)._Ukind.S6.sons->data[i_4], gotoOut));
					i_5 += ((NI) 1);
				} LA30: ;
			}
		}
		{
			NI T33_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* elseBranch;
			tyArray_jlWPjgtbdjE069arIWHC9c9bg T36_;
			T33_ = (NI)0;
			T33_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			if (!!(((*(*n)._Ukind.S6.sons->data[(NI)(T33_ - ((NI) 1))]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88)))) goto LA34_;
			nimZeroMem((void*)T36_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
			T36_[0] = gotoOut;
			elseBranch = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), T36_, 1);
			add_gCCf68XrWL79bKes6htzFjQ(n, elseBranch);
		}
		LA34_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s_2;
		NI T38_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ifNode;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* elifBranch;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* elseBranch_2;
		tyArray_jlWPjgtbdjE069arIWHC9c9bg T39_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156), (*n).info);
		s_2 = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
		T38_ = (NI)0;
		T38_ = newState_KR326D2V0A9c8rAN3F9amGLQ(ctx, s_2, result);
		(void)(T38_);
		ifNode = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92), (*n).info);
		elifBranch = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), (*n).info);
		add_gCCf68XrWL79bKes6htzFjQ(elifBranch, (*n)._Ukind.S6.sons->data[((NI) 0)]);
		body = addGotoOut_m9cwKcZ658PIQ2DjG0Pl6cw((*n)._Ukind.S6.sons->data[((NI) 1)], result);
		body = transformBreaksAndContinuesInWhile_HHd9a4D5LvlgvRGmwO0MWHw(ctx, body, result, gotoOut);
		body = transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw(ctx, body, result);
		add_gCCf68XrWL79bKes6htzFjQ(elifBranch, body);
		add_gCCf68XrWL79bKes6htzFjQ(ifNode, elifBranch);
		nimZeroMem((void*)T39_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
		T39_[0] = gotoOut;
		elseBranch_2 = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 88), T39_, 1);
		add_gCCf68XrWL79bKes6htzFjQ(ifNode, elseBranch_2);
		add_gCCf68XrWL79bKes6htzFjQ(s_2, ifNode);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112):
	{
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), addGotoOut_m9cwKcZ658PIQ2DjG0Pl6cw((*result)._Ukind.S6.sons->data[((NI) 1)], gotoOut));
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), transformBreaksInBlock_VkT9azRLtJ0eAKoaK3PPqVw(ctx, (*result)._Ukind.S6.sons->data[((NI) 1)], (*result)._Ukind.S6.sons->data[((NI) 0)], gotoOut));
		asgnRefNoCycle((void**) (&(*result)._Ukind.S6.sons->data[((NI) 1)]), transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw(ctx, (*result)._Ukind.S6.sons->data[((NI) 1)], gotoOut));
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 106):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tryBody;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* exceptBody;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* finallyBody;
		tyArray_jlWPjgtbdjE069arIWHC9c9bg T42_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T43_;
		NI tryIdx;
		NI T44_;
		NI exceptIdx;
		NI finallyIdx;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* outToFinally;
		(*ctx).hasExceptions = NIM_TRUE;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156), (*n).info);
		tryBody = toStmtList_nuiE2KI8tXWBtjEGdOFH5g((*n)._Ukind.S6.sons->data[((NI) 0)]);
		exceptBody = collectExceptState_eyQv3n2M3569coxZwjgCbIwclosureiters(ctx, n);
		nimZeroMem((void*)T42_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
		T42_[0] = getFinallyNode_9bHnHV2aPwwNJRPyRaoCsuA(ctx, n);
		finallyBody = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), T42_, 1);
		finallyBody = transformReturnsInTry_oib8dpvzVeiy5KmNWs9ajBw(ctx, finallyBody);
		T43_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T43_ = newEndFinallyNode_FlUh1Xo9bXJFuG43AoVOEVw_3(ctx, (*finallyBody).info);
		add_gCCf68XrWL79bKes6htzFjQ(finallyBody, T43_);
		T44_ = ((*ctx).states ? (*ctx).states->Sup.len : 0);
		tryIdx = T44_;
		exceptIdx = (NI)0;
		finallyIdx = (NI)0;
		{
			if (!!(((*exceptBody).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA47_;
			exceptIdx = ((NI32)-((NI)(tryIdx + ((NI) 1))));
			finallyIdx = (NI)(tryIdx + ((NI) 2));
		}
		goto LA45_;
		LA47_: ;
		{
			exceptIdx = (NI)(tryIdx + ((NI) 1));
			finallyIdx = (NI)(tryIdx + ((NI) 1));
		}
		LA45_: ;
		outToFinally = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156), (*finallyBody).info);
		{
			NI oldExcHandlingState;
			NI realTryIdx;
			NI realFinallyIdx;
			oldExcHandlingState = (*ctx).curExcHandlingState;
			(*ctx).curExcHandlingState = exceptIdx;
			realTryIdx = newState_KR326D2V0A9c8rAN3F9amGLQ(ctx, tryBody, result);
			{
				NI realExceptIdx;
				if (!!(((*exceptBody).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA53_;
				(*ctx).curExcHandlingState = finallyIdx;
				realExceptIdx = newState_KR326D2V0A9c8rAN3F9amGLQ(ctx, exceptBody, NIM_NIL);
			}
			LA53_: ;
			(*ctx).curExcHandlingState = oldExcHandlingState;
			realFinallyIdx = newState_KR326D2V0A9c8rAN3F9amGLQ(ctx, finallyBody, outToFinally);
		}
		{
			NI oldNearestFinally;
			NI oldExcHandlingState_2;
			oldNearestFinally = (*ctx).nearestFinally;
			(*ctx).nearestFinally = finallyIdx;
			oldExcHandlingState_2 = (*ctx).curExcHandlingState;
			(*ctx).curExcHandlingState = exceptIdx;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T58_;
				T58_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T58_ = transformReturnsInTry_oib8dpvzVeiy5KmNWs9ajBw(ctx, tryBody);
				if (!!((T58_ == tryBody))) goto LA59_;
				internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*ctx).g).config, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_21));
			}
			LA59_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T63_;
				T63_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T63_ = transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw(ctx, tryBody, outToFinally);
				if (!!((T63_ == tryBody))) goto LA64_;
				internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*ctx).g).config, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_22));
			}
			LA64_: ;
			(*ctx).curExcHandlingState = finallyIdx;
			addElseToExcept_ZQwdGiE9bcxShuJtHMjr5sQ(ctx, exceptBody);
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T68_;
				T68_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T68_ = transformReturnsInTry_oib8dpvzVeiy5KmNWs9ajBw(ctx, exceptBody);
				if (!!((T68_ == exceptBody))) goto LA69_;
				internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*ctx).g).config, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_23));
			}
			LA69_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T73_;
				T73_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T73_ = transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw(ctx, exceptBody, outToFinally);
				if (!!((T73_ == exceptBody))) goto LA74_;
				internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*ctx).g).config, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_24));
			}
			LA74_: ;
			(*ctx).curExcHandlingState = oldExcHandlingState_2;
			(*ctx).nearestFinally = oldNearestFinally;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T78_;
				T78_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T78_ = transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw(ctx, finallyBody, gotoOut);
				if (!!((T78_ == finallyBody))) goto LA79_;
				internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*ctx).g).config, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_25));
			}
			LA79_: ;
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 94):
	{
		NimStringDesc* T82_;
		T82_ = (NimStringDesc*)0;
		T82_ = rawNewString((reprEnum((NI)(*n).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_)) ? reprEnum((NI)(*n).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_))->Sup.len : 0) + 13);
appendString(T82_, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_26));
appendString(T82_, reprEnum((NI)(*n).kind, (&NTI_G4E4Gxe7oI2Cm03rkiOzQw_)));
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*(*ctx).g).config, T82_);
	}
	break;
	default:
	{
		{
			NI i_6;
			NI colontmp__5;
			NI i_7;
			i_6 = (NI)0;
			colontmp__5 = (NI)0;
			colontmp__5 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_7 = ((NI) 0);
			{
				while (1) {
					if (!(i_7 < colontmp__5)) goto LA86;
					i_6 = i_7;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_6]), transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw(ctx, (*n)._Ukind.S6.sons->data[i_6], gotoOut));
					i_7 += ((NI) 1);
				} LA86: ;
			}
		}
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipStmtList_QLFxwP9bqmbLeEjX2wva7hQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
{	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		while (1) {
			if (!((*result).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115))) goto LA2;
			{
				NI T5_;
				T5_ = (NI)0;
				T5_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(result);
				if (!(T5_ == ((NI) 0))) goto LA6_;
				result = (*(*ctx).g).emptyNode;
				goto BeforeRet_;
			}
			LA6_: ;
			result = (*result)._Ukind.S6.sons->data[((NI) 0)];
		} LA2: ;
	}
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NI, skipEmptyStates_qjWOMVFFVMMUNcgF89acUNQ)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, NI stateIdx) {
	NI result;
	NI maxJumps;
	NI T1_;
	NI stateIdx_2;
	result = (NI)0;
	T1_ = ((*ctx).states ? (*ctx).states->Sup.len : 0);
	maxJumps = T1_;
	stateIdx_2 = stateIdx;
	{
		while (1) {
			NI label;
			NI newLabel;
			label = stateIdx_2;
			{
				if (!(label == (*ctx).exitStateIdx)) goto LA6_;
				goto LA2;
			}
			LA6_: ;
			newLabel = label;
			{
				if (!(label == ((NI) -1))) goto LA10_;
				newLabel = (*ctx).exitStateIdx;
			}
			goto LA8_;
			LA10_: ;
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fs;
				fs = skipStmtList_QLFxwP9bqmbLeEjX2wva7hQ(ctx, (*(*ctx).states->data[label])._Ukind.S6.sons->data[((NI) 1)]);
				{
					if (!((*fs).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156))) goto LA15_;
					newLabel = ((NI) ((*(*fs)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S1.intVal));
				}
				LA15_: ;
			}
			LA8_: ;
			{
				if (!(label == newLabel)) goto LA19_;
				goto LA2;
			}
			LA19_: ;
			stateIdx_2 = newLabel;
			maxJumps -= ((NI) 1);
			{
				if (!(maxJumps == ((NI) 0))) goto LA23_;
			}
			LA23_: ;
		}
	} LA2: ;
	result = ((NI) ((*(*(*ctx).states->data[stateIdx_2])._Ukind.S6.sons->data[((NI) 0)])._Ukind.S1.intVal));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipThroughEmptyStates_9bHnHV2aPwwNJRPyRaoCsuA_2)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 113):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156):
	{
		NI T3_;
		result = copyTree_lz8T1F9c0YwEOpUnrAUYgjg_2(n);
		T3_ = (NI)0;
		T3_ = skipEmptyStates_qjWOMVFFVMMUNcgF89acUNQ((&(*ctx)), ((NI) ((*(*result)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S1.intVal)));
		(*(*result)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S1.intVal = ((NI64) (T3_));
	}
	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 LA7;
					i = i_2;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), skipThroughEmptyStates_9bHnHV2aPwwNJRPyRaoCsuA_2(ctx, (*n)._Ukind.S6.sons->data[i]));
					i_2 += ((NI) 1);
				} LA7: ;
			}
		}
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, deleteEmptyStates_EtZNQZ9ahFW9aGXseKeYzr0Q)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* goOut;
	tyArray_jlWPjgtbdjE069arIWHC9c9bg T1_;
	tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T2_;
	NI iValid;
	NI i_5;
	nimZeroMem((void*)T1_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
	nimZeroMem((void*)(&T2_), sizeof(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q));
	T1_[0] = newIntLit_TuFlkTIoJNHT6fCcycYtSw((*ctx).g, T2_, IL64(-1));
	goOut = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156), T1_, 1);
	(*ctx).exitStateIdx = newState_KR326D2V0A9c8rAN3F9amGLQ(ctx, goOut, NIM_NIL);
	iValid = ((NI) 0);
	{
		NI i;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s;
		tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* colontmp_;
		NI i_2;
		i = (NI)0;
		s = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		colontmp_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
		colontmp_ = (*ctx).states;
		i_2 = ((NI) 0);
		{
			while (1) {
				NI T6_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body;
				T6_ = (colontmp_ ? colontmp_->Sup.len : 0);
				if (!(i_2 < T6_)) goto LA5;
				i = i_2;
				s = colontmp_->data[i_2];
				body = skipStmtList_QLFxwP9bqmbLeEjX2wva7hQ((&(*ctx)), (*s)._Ukind.S6.sons->data[((NI) 1)]);
				{
					NIM_BOOL T9_;
					NIM_BOOL T10_;
					NI T12_;
					T9_ = (NIM_BOOL)0;
					T10_ = (NIM_BOOL)0;
					T10_ = ((*body).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156));
					if (!(T10_)) goto LA11_;
					T12_ = ((*ctx).states ? (*ctx).states->Sup.len : 0);
					T10_ = !((i == (NI)(T12_ - ((NI) 1))));
					LA11_: ;
					T9_ = T10_;
					if (!(T9_)) goto LA13_;
					T9_ = !((i == ((NI) 0)));
					LA13_: ;
					if (!T9_) goto LA14_;
					(*(*s)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S1.intVal = IL64(-1);
				}
				goto LA7_;
				LA14_: ;
				{
					(*(*s)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S1.intVal = ((NI64) (iValid));
					iValid += ((NI) 1);
				}
				LA7_: ;
				i_2 += ((NI) 1);
			} LA5: ;
		}
	}
	{
		NI i_3;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s_2;
		tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* colontmp__2;
		NI i_4;
		i_3 = (NI)0;
		s_2 = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		colontmp__2 = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
		colontmp__2 = (*ctx).states;
		i_4 = ((NI) 0);
		{
			while (1) {
				NI T20_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body_2;
				T20_ = (colontmp__2 ? colontmp__2->Sup.len : 0);
				if (!(i_4 < T20_)) goto LA19;
				i_3 = i_4;
				s_2 = colontmp__2->data[i_4];
				body_2 = skipStmtList_QLFxwP9bqmbLeEjX2wva7hQ((&(*ctx)), (*s_2)._Ukind.S6.sons->data[((NI) 1)]);
				{
					NIM_BOOL T23_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T27_;
					NI excHandlState;
					T23_ = (NIM_BOOL)0;
					T23_ = !(((*body_2).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156)));
					if (T23_) goto LA24_;
					T23_ = (i_3 == ((NI) 0));
					LA24_: ;
					if (!T23_) goto LA25_;
					T27_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T27_ = skipThroughEmptyStates_9bHnHV2aPwwNJRPyRaoCsuA_2(ctx, s_2);
					(void)(T27_);
					excHandlState = (*ctx).exceptionTable->data[i_3];
					{
						NI T32_;
						if (!(excHandlState < ((NI) 0))) goto LA30_;
						T32_ = (NI)0;
						T32_ = skipEmptyStates_qjWOMVFFVMMUNcgF89acUNQ((&(*ctx)), ((NI32)-(excHandlState)));
						(*ctx).exceptionTable->data[i_3] = ((NI32)-(T32_));
					}
					goto LA28_;
					LA30_: ;
					{
						if (!!((excHandlState == ((NI) 0)))) goto LA34_;
						(*ctx).exceptionTable->data[i_3] = skipEmptyStates_qjWOMVFFVMMUNcgF89acUNQ((&(*ctx)), excHandlState);
					}
					goto LA28_;
					LA34_: ;
					LA28_: ;
				}
				LA25_: ;
				i_4 += ((NI) 1);
			} LA19: ;
		}
	}
	i_5 = ((NI) 0);
	{
		while (1) {
			NI T38_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fs;
			T38_ = ((*ctx).states ? (*ctx).states->Sup.len : 0);
			if (!(i_5 < (NI)(T38_ - ((NI) 1)))) goto LA37;
			fs = skipStmtList_QLFxwP9bqmbLeEjX2wva7hQ((&(*ctx)), (*(*ctx).states->data[i_5])._Ukind.S6.sons->data[((NI) 1)]);
			{
				NIM_BOOL T41_;
				T41_ = (NIM_BOOL)0;
				T41_ = ((*fs).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156));
				if (!(T41_)) goto LA42_;
				T41_ = !((i_5 == ((NI) 0)));
				LA42_: ;
				if (!T41_) goto LA43_;
				delete_CLZdKKlcUPYhcUpOnWP7ag((&(*ctx).states), ((NI) (i_5)));
				delete_9bSCVC9bGqCpBkwep0LldvIg((&(*ctx).exceptionTable), ((NI) (i_5)));
			}
			goto LA39_;
			LA43_: ;
			{
				i_5 += ((NI) 1);
			}
			LA39_: ;
		} LA37: ;
	}
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newStateAccess_cqBE2u681LMwPlL6VXs4dA_2)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T5_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T6_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T7_;
		if (!((*ctx).stateVarSym == 0)) goto LA3_;
		T5_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T5_ = getEnvParam_ypCrx6fkmVfhsiJZgqHbwA((*ctx).fn);
		T6_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T6_ = newSymNode_UWZXukHA5As9aCftRHbafBg(T5_);
		T7_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T7_ = getStateField_UJpIDWVzs220Reaf7HOAmw((*ctx).g, (*ctx).fn);
		result = rawIndirectAccess_ZvgaZrZYDrt9acodIT5SMhA(T6_, T7_, (*(*ctx).fn).info);
	}
	goto LA1_;
	LA3_: ;
	{
		result = newSymNode_UWZXukHA5As9aCftRHbafBg((*ctx).stateVarSym);
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newStateAssgn_AWbFLel9cjt8d7ZAwfIyCdA)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* toValue) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T1_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)T1_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T1_[0] = newStateAccess_cqBE2u681LMwPlL6VXs4dA_2(ctx);
	T1_[1] = toValue;
	result = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), T1_, 2);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newStateAssgn_Mi9crg20nwOahuXiRT6sVew)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, NI stateNo) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q T1_;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T2_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T3_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&T1_), sizeof(tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q));
	T2_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T2_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*ctx).g, T1_, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31));
	T3_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T3_ = newIntTypeNode_IoblBePQdnK3IoXX7b1EDg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), ((NI64) (stateNo)), T2_);
	result = newStateAssgn_AWbFLel9cjt8d7ZAwfIyCdA(ctx, T3_);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NI, stateFromGotoState_BmiANzOvKJz19b0RswYeNaQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	result = (NI)0;
	result = ((NI) ((*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S1.intVal));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformStateAssignments_oib8dpvzVeiy5KmNWs9ajBw_2)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126):
	{
		{
			NIM_BOOL T4_;
			NI T5_;
			NI T9_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T10_;
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* retStmt;
			T4_ = (NIM_BOOL)0;
			T5_ = (NI)0;
			T5_ = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			T4_ = !((T5_ == ((NI) 0)));
			if (!(T4_)) goto LA6_;
			T4_ = ((*(*n)._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 104));
			LA6_: ;
			if (!T4_) goto LA7_;
			result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
			T9_ = (NI)0;
			T9_ = stateFromGotoState_BmiANzOvKJz19b0RswYeNaQ((*n)._Ukind.S6.sons->data[((NI) 1)]);
			T10_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			T10_ = newStateAssgn_Mi9crg20nwOahuXiRT6sVew(ctx, T9_);
			add_gCCf68XrWL79bKes6htzFjQ(result, T10_);
			retStmt = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 109), (*n).info);
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* retVal;
				tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T15_;
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T16_;
				if (!!(((*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA13_;
				a = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), (*(*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 0)]).info);
				retVal = (*(*n)._Ukind.S6.sons->data[((NI) 0)])._Ukind.S6.sons->data[((NI) 0)];
				T15_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
				T15_ = getClosureIterResult_TgYaD9azNHeiJdSPcrOB6SA_2((*ctx).g, (*ctx).fn);
				T16_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
				T16_ = newSymNode_UWZXukHA5As9aCftRHbafBg(T15_);
				addSon_gCCf68XrWL79bKes6htzFjQ_2(a, T16_);
				addSon_gCCf68XrWL79bKes6htzFjQ_2(a, retVal);
				add_gCCf68XrWL79bKes6htzFjQ(retStmt, a);
			}
			goto LA11_;
			LA13_: ;
			{
				add_gCCf68XrWL79bKes6htzFjQ(retStmt, (*(*ctx).g).emptyNode);
			}
			LA11_: ;
			add_gCCf68XrWL79bKes6htzFjQ(result, retStmt);
		}
		goto LA2_;
		LA7_: ;
		{
			{
				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 LA21;
						i = i_2;
						asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i]), transformStateAssignments_oib8dpvzVeiy5KmNWs9ajBw_2(ctx, (*n)._Ukind.S6.sons->data[i]));
						i_2 += ((NI) 1);
					} LA21: ;
				}
			}
		}
		LA2_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 51) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 52):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 79) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 81):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 83) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 84):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 98):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 113):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 159):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 109):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T24_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
		T24_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T24_ = newStateAssgn_Mi9crg20nwOahuXiRT6sVew(ctx, ((NI) -1));
		add_gCCf68XrWL79bKes6htzFjQ(result, T24_);
		add_gCCf68XrWL79bKes6htzFjQ(result, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156):
	{
		NI T26_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T27_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* breakState;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T28_;
		result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
		T26_ = (NI)0;
		T26_ = stateFromGotoState_BmiANzOvKJz19b0RswYeNaQ(n);
		T27_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T27_ = newStateAssgn_Mi9crg20nwOahuXiRT6sVew(ctx, T26_);
		add_gCCf68XrWL79bKes6htzFjQ(result, T27_);
		breakState = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 110), (*n).info);
		T28_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T28_ = newSymNode_UWZXukHA5As9aCftRHbafBg((*ctx).stateLoopLabel);
		add_gCCf68XrWL79bKes6htzFjQ(breakState, T28_);
		add_gCCf68XrWL79bKes6htzFjQ(result, breakState);
	}
	break;
	default:
	{
		{
			NI i_3;
			NI colontmp__2;
			NI i_4;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len_CdME9baJhvveuPEDZE9bXoxAsigmatch(n);
			i_4 = ((NI) 0);
			{
				while (1) {
					if (!(i_4 < colontmp__2)) goto LA32;
					i_3 = i_4;
					asgnRefNoCycle((void**) (&(*n)._Ukind.S6.sons->data[i_3]), transformStateAssignments_oib8dpvzVeiy5KmNWs9ajBw_2(ctx, (*n)._Ukind.S6.sons->data[i_3]));
					i_4 += ((NI) 1);
				} LA32: ;
			}
		}
	}
	break;
	}
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, newArrayType_642gHRMR9a1eZ1whzH7tKfQ)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, NI n, tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* rng;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T1_;
	result = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	result = newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 16), owner);
	rng = newType_dQhKkL6uAkw83dy6l4d7iQ(((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 20), owner);
	nimZeroMem((void*)T1_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T1_[0] = newIntLit_TuFlkTIoJNHT6fCcycYtSw(g, (*owner).info, IL64(0));
	T1_[1] = newIntLit_TuFlkTIoJNHT6fCcycYtSw(g, (*owner).info, ((NI64) (n)));
	asgnRefNoCycle((void**) (&(*rng).n), newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 44), T1_, 2));
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(rng, t);
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, rng);
	rawAddSon_uZzh0IWnWErsZbQ8YFaRRA(result, t);
	return result;
}

static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, createExceptionTable_MszPr5bFWBE4wcbymAi00gclosureiters)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	NI T1_;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T2_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41), (*(*ctx).fn).info);
	T1_ = ((*ctx).exceptionTable ? (*ctx).exceptionTable->Sup.len : 0);
	T2_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T2_ = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*ctx).g, (*(*ctx).fn).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 33));
	asgnRefNoCycle((void**) (&(*result).typ), newArrayType_642gHRMR9a1eZ1whzH7tKfQ((*ctx).g, T1_, T2_, (*ctx).fn));
	{
		NI i;
		tySequence_qwqHTkRvwhrRyENtudHQ7g* colontmp_;
		NI i_2;
		NI L;
		NI T4_;
		i = (NI)0;
		colontmp_ = (tySequence_qwqHTkRvwhrRyENtudHQ7g*)0;
		colontmp_ = (*ctx).exceptionTable;
		i_2 = ((NI) 0);
		T4_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T4_;
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* elem;
				if (!(i_2 < L)) goto LA6;
				i = colontmp_->data[i_2];
				elem = newIntNode_v2VGJAZNfKPVngZCqEXQtA(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), ((NI64) (i)));
				asgnRefNoCycle((void**) (&(*elem).typ), getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*ctx).g, (*(*ctx).fn).info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 33)));
				add_gCCf68XrWL79bKes6htzFjQ(result, elem);
				i_2 += ((NI) 1);
			} LA6: ;
		}
	}
	return result;
}

static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, newCatchBody_MnQ8Kzhxn5rtRo9btObf9b9bgclosureiters)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* intTyp;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* boolTyp;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), info);
	intTyp = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*ctx).g, info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 31));
	boolTyp = getSysType_VcTNc9cK1Ftuh0MFwOC9c0Tg((*ctx).g, info, ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 1));
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* getNextState;
		tyArray_AB6yfoUgfWM2NtGe9bzkCmw T2_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T3_;
		nimZeroMem((void*)T2_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
		T2_[0] = createExceptionTable_MszPr5bFWBE4wcbymAi00gclosureiters(ctx);
		T2_[1] = newStateAccess_cqBE2u681LMwPlL6VXs4dA_2(ctx);
		getNextState = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42), T2_, 2);
		asgnRefNoCycle((void**) (&(*getNextState).typ), intTyp);
		T3_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T3_ = newStateAssgn_AWbFLel9cjt8d7ZAwfIyCdA(ctx, getNextState);
		add_gCCf68XrWL79bKes6htzFjQ(result, T3_);
	}
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* cond;
		tyArray_T6RKPw8xfAeNaoei9aZGzXg T5_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T6_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* raiseStmt;
		tyArray_jlWPjgtbdjE069arIWHC9c9bg T7_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ifBranch;
		tyArray_AB6yfoUgfWM2NtGe9bzkCmw T8_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ifStmt;
		tyArray_jlWPjgtbdjE069arIWHC9c9bg T9_;
		nimZeroMem((void*)T5_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
		T6_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T6_ = getSysMagic_F0sH3uZM4wsRv4Pi1Pzwlg((*ctx).g, info, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_20), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 73));
		T5_[0] = newSymNode_UWZXukHA5As9aCftRHbafBg(T6_);
		T5_[1] = newStateAccess_cqBE2u681LMwPlL6VXs4dA_2(ctx);
		T5_[2] = newIntTypeNode_IoblBePQdnK3IoXX7b1EDg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(0), intTyp);
		cond = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), T5_, 3);
		asgnRefNoCycle((void**) (&(*cond).typ), boolTyp);
		nimZeroMem((void*)T7_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
		T7_[0] = (*(*ctx).g).emptyNode;
		raiseStmt = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 108), T7_, 1);
		nimZeroMem((void*)T8_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
		T8_[0] = cond;
		T8_[1] = raiseStmt;
		ifBranch = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), T8_, 2);
		nimZeroMem((void*)T9_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
		T9_[0] = ifBranch;
		ifStmt = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92), T9_, 1);
		add_gCCf68XrWL79bKes6htzFjQ(result, ifStmt);
	}
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* cond_2;
		tyArray_T6RKPw8xfAeNaoei9aZGzXg T11_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T12_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* asgn;
		tyArray_AB6yfoUgfWM2NtGe9bzkCmw T13_;
		nimZeroMem((void*)T11_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
		T12_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T12_ = getSysMagic_F0sH3uZM4wsRv4Pi1Pzwlg((*ctx).g, info, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_28), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 75));
		T11_[0] = newSymNode_UWZXukHA5As9aCftRHbafBg(T12_);
		T11_[1] = newIntTypeNode_IoblBePQdnK3IoXX7b1EDg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(0), intTyp);
		T11_[2] = newStateAccess_cqBE2u681LMwPlL6VXs4dA_2(ctx);
		cond_2 = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), T11_, 3);
		asgnRefNoCycle((void**) (&(*cond_2).typ), boolTyp);
		nimZeroMem((void*)T13_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
		T13_[0] = newUnrollFinallyAccess_FlUh1Xo9bXJFuG43AoVOEVw_2(ctx, info);
		T13_[1] = cond_2;
		asgn = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), T13_, 2);
		add_gCCf68XrWL79bKes6htzFjQ(result, asgn);
	}
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* cond_3;
		tyArray_T6RKPw8xfAeNaoei9aZGzXg T15_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T16_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* negateState;
		tyArray_AB6yfoUgfWM2NtGe9bzkCmw T17_;
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T18_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ifBranch_2;
		tyArray_AB6yfoUgfWM2NtGe9bzkCmw T19_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ifStmt_2;
		tyArray_jlWPjgtbdjE069arIWHC9c9bg T20_;
		nimZeroMem((void*)T15_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
		T16_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T16_ = getSysMagic_F0sH3uZM4wsRv4Pi1Pzwlg((*ctx).g, info, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_28), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 75));
		T15_[0] = newSymNode_UWZXukHA5As9aCftRHbafBg(T16_);
		T15_[1] = newStateAccess_cqBE2u681LMwPlL6VXs4dA_2(ctx);
		T15_[2] = newIntTypeNode_IoblBePQdnK3IoXX7b1EDg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6), IL64(0), intTyp);
		cond_3 = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), T15_, 3);
		asgnRefNoCycle((void**) (&(*cond_3).typ), boolTyp);
		nimZeroMem((void*)T17_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
		T18_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T18_ = getSysMagic_F0sH3uZM4wsRv4Pi1Pzwlg((*ctx).g, info, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_29), ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 99));
		T17_[0] = newSymNode_UWZXukHA5As9aCftRHbafBg(T18_);
		T17_[1] = newStateAccess_cqBE2u681LMwPlL6VXs4dA_2(ctx);
		negateState = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), T17_, 2);
		asgnRefNoCycle((void**) (&(*negateState).typ), intTyp);
		nimZeroMem((void*)T19_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
		T19_[0] = cond_3;
		T19_[1] = newStateAssgn_AWbFLel9cjt8d7ZAwfIyCdA(ctx, negateState);
		ifBranch_2 = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 86), T19_, 2);
		nimZeroMem((void*)T20_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
		T20_[0] = ifBranch_2;
		ifStmt_2 = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92), T20_, 1);
		add_gCCf68XrWL79bKes6htzFjQ(result, ifStmt_2);
	}
	{
		tyArray_AB6yfoUgfWM2NtGe9bzkCmw T22_;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T23_;
		nimZeroMem((void*)T22_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
		T22_[0] = newCurExcAccess_cqBE2u681LMwPlL6VXs4dA(ctx);
		T22_[1] = callCodegenProc_PPOCfdFmaSI5Bh5AMAPlmA((*ctx).g, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_15), (*(*ctx).g).emptyNode, NIM_NIL, NIM_NIL, NIM_NIL);
		T23_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T23_ = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73), T22_, 2);
		add_gCCf68XrWL79bKes6htzFjQ(result, T23_);
	}
	return result;
}

static N_INLINE(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, wrapIntoTryExcept_eyQv3n2M3569coxZwjgCbIw_2closureiters)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* setupExc;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T1_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T2_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* tryBody;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T3_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* exceptBranch;
	tyArray_jlWPjgtbdjE069arIWHC9c9bg T4_;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T5_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)T1_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T2_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T2_ = getCompilerProc_Z9bI8j6Vv57IyOO09a8fpp3g((*ctx).g, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_27));
	T1_[0] = newSymNode_UWZXukHA5As9aCftRHbafBg(T2_);
	T1_[1] = newCurExcAccess_cqBE2u681LMwPlL6VXs4dA(ctx);
	setupExc = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 27), T1_, 2);
	nimZeroMem((void*)T3_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T3_[0] = setupExc;
	T3_[1] = n;
	tryBody = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), T3_, 2);
	nimZeroMem((void*)T4_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
	T4_[0] = newCatchBody_MnQ8Kzhxn5rtRo9btObf9b9bgclosureiters(ctx, (*(*ctx).fn).info);
	exceptBranch = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 87), T4_, 1);
	nimZeroMem((void*)T5_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T5_[0] = tryBody;
	T5_[1] = exceptBranch;
	result = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 106), T5_, 2);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, wrapIntoStateLoop_oib8dpvzVeiy5KmNWs9ajBw_3)(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A* ctx, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* loopBody;
	tyArray_AB6yfoUgfWM2NtGe9bzkCmw T1_;
	tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T2_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* localVars;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* blockStmt;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T12_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gs;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T13_;
	NI T14_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T15_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* blockBody;
	tyArray_T6RKPw8xfAeNaoei9aZGzXg T16_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	loopBody = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
	nimZeroMem((void*)T1_, sizeof(tyArray_AB6yfoUgfWM2NtGe9bzkCmw));
	T2_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
	T2_ = getSysSym_9bvw79ck1FDiWpnBYh88rEfw((*ctx).g, (*n).info, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_11));
	T1_[0] = newSymNode_UWZXukHA5As9aCftRHbafBg(T2_);
	T1_[1] = loopBody;
	result = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96), T1_, 2);
	(*result).info = (*n).info;
	localVars = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n).info);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* varSect;
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T7_;
		if (!!(((*ctx).stateVarSym == 0))) goto LA5_;
		varSect = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99), (*n).info);
		T7_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T7_ = newSymNode_UWZXukHA5As9aCftRHbafBg((*ctx).stateVarSym);
		addVar_ZIvdnLvRaA7wqS0zjam6gw(varSect, T7_);
		add_gCCf68XrWL79bKes6htzFjQ(localVars, varSect);
		{
			if (!!(((*ctx).tempVars == 0))) goto LA10_;
			add_gCCf68XrWL79bKes6htzFjQ(localVars, (*ctx).tempVars);
		}
		LA10_: ;
	}
	LA5_: ;
	blockStmt = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112), (*n).info);
	T12_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T12_ = newSymNode_UWZXukHA5As9aCftRHbafBg((*ctx).stateLoopLabel);
	add_gCCf68XrWL79bKes6htzFjQ(blockStmt, T12_);
	gs = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156), (*n).info);
	T13_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T13_ = newStateAccess_cqBE2u681LMwPlL6VXs4dA_2(ctx);
	add_gCCf68XrWL79bKes6htzFjQ(gs, T13_);
	T14_ = ((*ctx).states ? (*ctx).states->Sup.len : 0);
	T15_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T15_ = newIntLit_TuFlkTIoJNHT6fCcycYtSw((*ctx).g, (*n).info, ((NI64) ((NI)(T14_ - ((NI) 1)))));
	add_gCCf68XrWL79bKes6htzFjQ(gs, T15_);
	nimZeroMem((void*)T16_, sizeof(tyArray_T6RKPw8xfAeNaoei9aZGzXg));
	T16_[0] = gs;
	T16_[1] = localVars;
	T16_[2] = n;
	blockBody = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), T16_, 3);
	{
		if (!(*ctx).hasExceptions) goto LA19_;
		blockBody = wrapIntoTryExcept_eyQv3n2M3569coxZwjgCbIw_2closureiters(ctx, blockBody);
	}
	LA19_: ;
	add_gCCf68XrWL79bKes6htzFjQ(blockStmt, blockBody);
	add_gCCf68XrWL79bKes6htzFjQ(loopBody, blockStmt);
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, transformClosureIterator_pOvzY9bL6Z9bAquTmdZOUhVg)(tyObject_ModuleGraphcolonObjectType__RZI3hCs0FTPYx8StfC81qQ* g, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* fn, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A ctx;
	tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T7_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n_2;
	NI T8_;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* gotoOut;
	tyArray_jlWPjgtbdjE069arIWHC9c9bg T9_;
	NIM_BOOL ns;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T15_;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	nimZeroMem((void*)(&ctx), sizeof(tyObject_Ctx_Sws9awoFPhDR7PA2lS1LQ5A));
	ctx.g = g;
	ctx.fn = fn;
	{
		tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* T3_;
		tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* T6_;
		T3_ = (tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w*)0;
		T3_ = getEnvParam_ypCrx6fkmVfhsiJZgqHbwA(fn);
		if (!(T3_ == 0)) goto LA4_;
		T6_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
		T6_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*ctx.g).cache, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_2));
		ctx.stateVarSym = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 8), T6_, fn, (*fn).info, 0);
		asgnRefNoCycle((void**) (&(*ctx.stateVarSym).typ), createClosureIterStateType_yJRvBacfewo9bdyScE2nw2g(g, fn));
	}
	LA4_: ;
	T7_ = (tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA*)0;
	T7_ = getIdent_uDz5mcDPddYz1vXwkXTNiQ((*ctx.g).cache, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_3));
	ctx.stateLoopLabel = newSym_ZQfOwiQo63qLga19cuF5r9cQ(((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 22), T7_, fn, (*fn).info, 0);
	n_2 = toStmtList_nuiE2KI8tXWBtjEGdOFH5g(n);
	T8_ = (NI)0;
	T8_ = newState_KR326D2V0A9c8rAN3F9amGLQ((&ctx), n_2, NIM_NIL);
	(void)(T8_);
	nimZeroMem((void*)T9_, sizeof(tyArray_jlWPjgtbdjE069arIWHC9c9bg));
	T9_[0] = newIntLit_TuFlkTIoJNHT6fCcycYtSw(g, (*n_2).info, IL64(-1));
	gotoOut = newTree_4bkTFXme4frVOAuq2YEc4g(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 156), T9_, 1);
	ns = NIM_FALSE;
	n_2 = lowerStmtListExprs_07BK9ckM1VeGOvUAxlv1trQ((&ctx), n_2, (&ns));
	{
		NIM_BOOL T12_;
		T12_ = (NIM_BOOL)0;
		T12_ = hasYieldsInExpressions_4rkdqTkMcgAkMWgpzNBGPQ(n_2);
		if (!T12_) goto LA13_;
		internalError_5hPl6LjCYJxMYxh9af9b9bXzw((*ctx.g).config, ((NimStringDesc*) &TM_slVvvIjx75ivXdMpHiE9c9aQ_12));
	}
	LA13_: ;
	T15_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	T15_ = transformClosureIteratorBody_k5LaXCtaUIFKCXefatVZPw((&ctx), n_2, gotoOut);
	(void)(T15_);
	deleteEmptyStates_EtZNQZ9ahFW9aGXseKeYzr0Q((&ctx));
	result = newNodeI_I7fH85CUcZMasoPRKxPsPg(((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115), (*n_2).info);
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* s;
		tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* colontmp_;
		NI i;
		NI L;
		NI T17_;
		s = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		colontmp_ = (tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
		colontmp_ = ctx.states;
		i = ((NI) 0);
		T17_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T17_;
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body;
				if (!(i < L)) goto LA19;
				s = colontmp_->data[i];
				body = (*s)._Ukind.S6.sons->data[((NI) 1)];
				del_CLZdKKlcUPYhcUpOnWP7ag_2((&(*s)._Ukind.S6.sons), ((NI) 1));
				add_gCCf68XrWL79bKes6htzFjQ(result, s);
				add_gCCf68XrWL79bKes6htzFjQ(result, body);
				i += ((NI) 1);
			} LA19: ;
		}
	}
	result = transformStateAssignments_oib8dpvzVeiy5KmNWs9ajBw_2((&ctx), result);
	result = wrapIntoStateLoop_oib8dpvzVeiy5KmNWs9ajBw_3((&ctx), result);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_closureitersInit000)(void) {
{
	TFrame FR_; FR_.len = 0;
}
}

N_LIB_PRIVATE N_NIMCALL(void, compiler_closureitersDatInit000)(void) {
static TNimNode* TM_slVvvIjx75ivXdMpHiE9c9aQ_4[2];
static TNimNode TM_slVvvIjx75ivXdMpHiE9c9aQ_0[3];
NTI_EFqgCXJ4d8PgqOdFJmldsQ_.size = sizeof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ);
NTI_EFqgCXJ4d8PgqOdFJmldsQ_.kind = 18;
NTI_EFqgCXJ4d8PgqOdFJmldsQ_.base = 0;
NTI_EFqgCXJ4d8PgqOdFJmldsQ_.flags = 2;
TM_slVvvIjx75ivXdMpHiE9c9aQ_4[0] = &TM_slVvvIjx75ivXdMpHiE9c9aQ_0[1];
TM_slVvvIjx75ivXdMpHiE9c9aQ_0[1].kind = 1;
TM_slVvvIjx75ivXdMpHiE9c9aQ_0[1].offset = offsetof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ, Field0);
TM_slVvvIjx75ivXdMpHiE9c9aQ_0[1].typ = (&NTI_fKfcLzXYiz5jNu3NH3Tv8Q_);
TM_slVvvIjx75ivXdMpHiE9c9aQ_0[1].name = "Field0";
TM_slVvvIjx75ivXdMpHiE9c9aQ_4[1] = &TM_slVvvIjx75ivXdMpHiE9c9aQ_0[2];
TM_slVvvIjx75ivXdMpHiE9c9aQ_0[2].kind = 1;
TM_slVvvIjx75ivXdMpHiE9c9aQ_0[2].offset = offsetof(tyTuple_EFqgCXJ4d8PgqOdFJmldsQ, Field1);
TM_slVvvIjx75ivXdMpHiE9c9aQ_0[2].typ = (&NTI_fKfcLzXYiz5jNu3NH3Tv8Q_);
TM_slVvvIjx75ivXdMpHiE9c9aQ_0[2].name = "Field1";
TM_slVvvIjx75ivXdMpHiE9c9aQ_0[0].len = 2; TM_slVvvIjx75ivXdMpHiE9c9aQ_0[0].kind = 2; TM_slVvvIjx75ivXdMpHiE9c9aQ_0[0].sons = &TM_slVvvIjx75ivXdMpHiE9c9aQ_4[0];
NTI_EFqgCXJ4d8PgqOdFJmldsQ_.node = &TM_slVvvIjx75ivXdMpHiE9c9aQ_0[0];
}

