/* Generated by Nim Compiler v0.20.0 */
/*   (c) 2019 Andreas Rumpf */
/* The generated code is subject to the original license. */
#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
#define nimfr_(x, y)
#define nimln_(x, y)
typedef struct tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg;
typedef struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw;
typedef struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w;
typedef struct tyObject_Con_eFhkbMY30pSTdER2YWz9cRw tyObject_Con_eFhkbMY30pSTdER2YWz9cRw;
typedef struct tySequence_bZP29c0SHT9aMkbSl4EFvgCg tySequence_bZP29c0SHT9aMkbSl4EFvgCg;
typedef struct tySequence_qwqHTkRvwhrRyENtudHQ7g tySequence_qwqHTkRvwhrRyENtudHQ7g;
typedef struct tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ;
typedef struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q;
typedef struct NimStringDesc NimStringDesc;
typedef struct tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA;
typedef struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ;
typedef struct tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence_Ef05srmQTDulnBdXR4Ja6Q tySequence_Ef05srmQTDulnBdXR4Ja6Q;
typedef struct tySequence_DXS6mEo7PVUFJkirsQ9bNQA tySequence_DXS6mEo7PVUFJkirsQ9bNQA;
typedef struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA;
typedef struct tySequence_DfgJFJEYoj4YBAHLZPl5lQ tySequence_DfgJFJEYoj4YBAHLZPl5lQ;
typedef struct tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA;
typedef struct tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj_OFzf0kSiPTcNreUIeJgWVA;
typedef struct tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA;
typedef struct tySequence_MvZmat48bhe9b6x9aUD58D5Q tySequence_MvZmat48bhe9b6x9aUD58D5Q;
typedef struct tyObject_TBlock_J29b9b9cJiD9aK19cdoA7IwWiyA tyObject_TBlock_J29b9b9cJiD9aK19cdoA7IwWiyA;
typedef struct tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack_7fytPA5bBsob6See21YMRA tyObject_GcStack_7fytPA5bBsob6See21YMRA;
typedef struct tyObject_MemRegion_x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion_x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk_tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk_tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk_Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk_Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk_XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk_XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet_EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet_EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk_W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk_W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode_IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks_PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple_ujsjpB2O9cjj3uDHsXbnSzg tyTuple_ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat_0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat_0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_CellSet_jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet_jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc_fublkgIY4LG3mT51LU2WHg tyObject_PageDesc_fublkgIY4LG3mT51LU2WHg;
typedef struct tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA;
typedef struct tyTuple_zwpS6d6iewrdlBSTNFoyVA tyTuple_zwpS6d6iewrdlBSTNFoyVA;
struct TGenericSeq {
NI len;
NI reserved;
};
typedef NU8 tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ;
struct tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg {
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ kind;
union{
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
NI dest;
};
};
struct tyObject_Con_eFhkbMY30pSTdER2YWz9cRw {
tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ* code;
NI inCall;
NI inTryStmt;
tySequence_bZP29c0SHT9aMkbSl4EFvgCg* blocks;
tySequence_qwqHTkRvwhrRyENtudHQ7g* tryStmtFixups;
tySequence_qwqHTkRvwhrRyENtudHQ7g* forks;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
};
struct tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q {
NU16 line;
NI16 col;
NI32 fileIndex;
};
typedef NU32 tySet_tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg;
typedef NU8 tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw;
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw {
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
tySet_tyEnum_TNodeFlag_jyh9acXHkhZANSSvPIY7ZLg flags;
tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw kind;
union{
struct {NI64 intVal;
};
struct {NF floatVal;
};
struct {NimStringDesc* strVal;
};
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
};
struct {tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* ident;
};
struct {tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
};
};
NimStringDesc* comment;
};
typedef NU8 tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw[21];
typedef NU8 tyEnum_TNimKind_jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag_v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc_ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc_WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
tyEnum_TNimKind_jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag_v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc_ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc_WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA {
  RootObj Sup;
NI id;
};
typedef NU8 tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw;
struct tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA {
NI counter;
tySequence_DfgJFJEYoj4YBAHLZPl5lQ* data;
};
typedef NU16 tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg;
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;
};
struct tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw kind;
union{
struct {tySequence_Ef05srmQTDulnBdXR4Ja6Q* typeInstCache;
};
struct {tySequence_DXS6mEo7PVUFJkirsQ9bNQA* procInstCache;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* gcUnsafetyReason;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* transformedBody;
};
struct {tySequence_DXS6mEo7PVUFJkirsQ9bNQA* usedGenerics;
tyObject_TStrTable_f07aOS3dr28kGa5wcE29aFA tab;
};
struct {tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* guard;
NI bitsize;
};
};
tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg magic;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typ;
tyObject_TIdent_GufRQq9c0miSybX3zBD4tyA* name;
tyObject_TLineInfo_WGx4rAexNXnczy1Avn646Q info;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
tySet_tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw flags;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* ast;
tySet_tyEnum_TOption_WspMeQySXNP2XoTWR5MTgg options;
NI position;
NI offset;
tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TLib_NBMxlJ6g3utqUlplqTTHkA* annex;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* constraint;
};
typedef NU8 tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef NU8 tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA;
typedef NU64 tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
typedef tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* tyArray_PsPyPA45AAjHu4uDGHNjTg[4];
struct tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ {
  tyObject_TIdObj_iIXPrEsiKHiioLj0HSkQhA Sup;
tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kind;
tyEnum_TCallingConvention_yjAJ8w0h1PBaSwSGJ3P7IA callConv;
tySet_tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw flags;
tySequence_Ef05srmQTDulnBdXR4Ja6Q* sons;
tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* sym;
tyArray_PsPyPA45AAjHu4uDGHNjTg attachedOps;
tySequence_MvZmat48bhe9b6x9aUD58D5Q* methods;
NI64 size;
NI16 align;
NI16 lockLevel;
tyObject_TLoc_EtHNvCB0bgfu9bFjzx9cb6aA loc;
tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* typeInst;
NI uniqueId;
};
typedef NU8 tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw;
typedef NU64 tySet_tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw;
struct tyObject_TBlock_J29b9b9cJiD9aK19cdoA7IwWiyA {
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* label;
tySequence_qwqHTkRvwhrRyENtudHQ7g* fixups;
};
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 NI tyArray_Bd4h7Ocx9bGTvrKzPIWNlHw[3];
struct tyTuple_zwpS6d6iewrdlBSTNFoyVA {
NI Field0;
tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* Field1;
};
struct tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ {
  TGenericSeq Sup;
  tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg data[SEQ_DECL_SIZE];
};
struct tySequence_qwqHTkRvwhrRyENtudHQ7g {
  TGenericSeq Sup;
  NI data[SEQ_DECL_SIZE];
};
struct tySequence_bZP29c0SHT9aMkbSl4EFvgCg {
  TGenericSeq Sup;
  tyObject_TBlock_J29b9b9cJiD9aK19cdoA7IwWiyA data[SEQ_DECL_SIZE];
};
struct tySequence_ehmV9bTklH2Gt9cXHV9c0HLeQ {
  TGenericSeq Sup;
  tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
};
struct tySequence_Ef05srmQTDulnBdXR4Ja6Q {
  TGenericSeq Sup;
  tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* data[SEQ_DECL_SIZE];
};
struct tySequence_DXS6mEo7PVUFJkirsQ9bNQA {
  TGenericSeq Sup;
  tyObject_TInstantiation_5LqgVn6Tq9ainQRK7TQAQxA* data[SEQ_DECL_SIZE];
};
struct tySequence_DfgJFJEYoj4YBAHLZPl5lQ {
  TGenericSeq Sup;
  tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* data[SEQ_DECL_SIZE];
};
struct tySequence_MvZmat48bhe9b6x9aUD58D5Q {
  TGenericSeq Sup;
  tyTuple_zwpS6d6iewrdlBSTNFoyVA data[SEQ_DECL_SIZE];
};
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem_JE6t4x7Z3v2iVz27Nx0MRAmemory)(void* a, int v, NI size);
N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, gen_gGw9aM0qGTbTYMOOB416xEA)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, genUse_nu33JHavvXsnRHhdnu4oxw)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getRoot_vedgqlRdnLUAAjvLVHCgqg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_NOINLINE(void, raiseFieldError)(NimStringDesc* f);
N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, Marker_tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ)(void* p, NI op);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(void, genericAssign)(void* dest, void* src, TNimType* mt);
N_LIB_PRIVATE N_NIMCALL(void, genMagic_yb09bD37nAJUr80zaRim8Tw)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m);
N_LIB_PRIVATE N_NIMCALL(void, genAndOr_gGw9aM0qGTbTYMOOB416xEA_2)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NI, forkI_zfeGGy35Zjy67bv7Php9bJg)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, patch_w9ckgqgPWsAveG527LmLpiQ)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, NI p);
static N_INLINE(NI, subInt)(NI a, NI b);
N_NOINLINE(void, raiseOverflow)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(void, joinI_eA4LiMbDDYh9avdVG63kAng)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, NI fromFork, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NI, chckRange)(NI i, NI a, NI b);
N_NOINLINE(void, raiseRangeError)(NI64 val);
N_NIMCALL(TGenericSeq*, setLengthSeqV2)(TGenericSeq* s, TNimType* typ, NI newLen);
N_LIB_PRIVATE N_NIMCALL(void, genDef_gGw9aM0qGTbTYMOOB416xEA_3)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isAnalysableFieldAccess_scxG86YRKjb7mFYULG1CyQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner);
static N_INLINE(NIM_BOOL, isSinkParam_Ye2MiAptq3GrXxTQeyXNeA_3ast)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*, skipTypes_zsqmUNR5OZrTUna0Y9bdu9bg)(tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t, tySet_tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag kinds);
static N_INLINE(NI, len_P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NI, addInt)(NI a, NI b);
N_LIB_PRIVATE N_NIMCALL(void, genCall_gGw9aM0qGTbTYMOOB416xEA_4)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canRaise_tNCnq9baNDcWeSQK8j9c0oTw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fn);
N_LIB_PRIVATE N_NIMCALL(NI, gotoI_zfeGGy35Zjy67bv7Php9bJg_2)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NI, pop_GrOL4kxIWJa7WWwx9c2b9aOAsystem)(tySequence_qwqHTkRvwhrRyENtudHQ7g** s);
N_LIB_PRIVATE N_NIMCALL(void, genIf_gGw9aM0qGTbTYMOOB416xEA_5)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, genCase_gGw9aM0qGTbTYMOOB416xEA_6)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, lastSon_UPSW0jLTX5qJL51YMUAHgw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, genWhile_gGw9aM0qGTbTYMOOB416xEA_7)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTrue_GoY2SMIM9arvGY7ylLiaRHQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_NIMCALL(void, Marker_tySequence_bZP29c0SHT9aMkbSl4EFvgCg)(void* p, NI op);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef_AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(void, decRef_AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, rtlAddZCT_AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT_Y66tOYFjgwJ0k4aLz4bc0Q)(tyObject_CellSeq_Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* c);
N_NIMCALL(void, genericSeqAssign)(void* dest, void* src, TNimType* mt);
N_LIB_PRIVATE N_NIMCALL(void, popBlock_eDAfFCByokGb4jEgPA1Mmg)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, NI oldLen);
N_LIB_PRIVATE N_NIMCALL(void, genBlock_gGw9aM0qGTbTYMOOB416xEA_8)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, genReturn_gGw9aM0qGTbTYMOOB416xEA_9)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, genJoins_gGw9aM0qGTbTYMOOB416xEA_10)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, genImplicitReturn_dyRemX06FqbT5C9cymmRLtw)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c);
N_LIB_PRIVATE N_NIMCALL(void, genRaise_gGw9aM0qGTbTYMOOB416xEA_11)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, genBreak_gGw9aM0qGTbTYMOOB416xEA_12)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, genTry_gGw9aM0qGTbTYMOOB416xEA_13)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
static N_INLINE(NI, safeLen_P89cqdlERShb9alU3iC0yj8w_2ast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(void, genVarSection_gGw9aM0qGTbTYMOOB416xEA_14)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTrees_5GE9abCZqpois6anfudFhKw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* b);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, aliases_X88oJcf8606anlqCac3FtQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* obj, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* field);
TNimType NTI_Iclb1njvAJfjjEpCLzUzZg_;
extern TNimType NTI_fKfcLzXYiz5jNu3NH3Tv8Q_;
TNimType NTI_kmjEwko0gQNypI4MTa9chwQ_;
extern TNimType NTI_K9bspPztfoWajecnwjyHuYQ_;
extern TNimType NTI_rR5Bzr1D5krxoo1NcNyeMA_;
TNimType NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_;
extern TNimType NTI_qwqHTkRvwhrRyENtudHQ7g_;
TNimType NTI_J29b9b9cJiD9aK19cdoA7IwWiyA_;
TNimType NTI_bZP29c0SHT9aMkbSl4EFvgCg_;
extern tyObject_GcHeap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_rmUZTUif19aNVU5raHE2xtA_2 = {
0xEC, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_3, "sons", 4);
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_rmUZTUif19aNVU5raHE2xtA_4 = {
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_5, "sym", 3);
TNimNode* NimDT__Iclb1njvAJfjjEpCLzUzZg_kind[6];
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_11, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/dfa.nim(275, 11) `-0x00007FFF < di"
"ff and diff < 0x00007FFF` ", 153);
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_12, "dest", 4);
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_22, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/dfa.nim(456, 11) `c.forks.len == o"
"ldLen` ", 134);
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_26, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/dfa.nim(501, 11) `c.forks.len == o"
"ldLen` ", 134);
static NIM_CONST tySet_tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw TM_rmUZTUif19aNVU5raHE2xtA_27 = {
0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_28, "intVal", 6);
NIM_CONST struct {
  TGenericSeq Sup;
  NI data[0];
} TM_rmUZTUif19aNVU5raHE2xtA_30 = {{0, 0 | NIM_STRLIT_FLAG}};
NIM_CONST tyObject_TBlock_J29b9b9cJiD9aK19cdoA7IwWiyA TM_rmUZTUif19aNVU5raHE2xtA_29 = {NIM_NIL, ((tySequence_qwqHTkRvwhrRyENtudHQ7g*)&TM_rmUZTUif19aNVU5raHE2xtA_30)};
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_33, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/lib/system/iterators.nim(190, 11) `len(a) ="
"= L` the length of the seq changed while iterating over it", 185);
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_37, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/dfa.nim(352, 15) `c.forks.len == o"
"ldForksLen` ", 139);
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_51, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/dfa.nim(542, 11) `c.forks.len == o"
"ldLen` ", 134);
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_56, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/dfa.nim(778, 14) `false` dfa const"
"ruction pass requires the elimination of \'defer\'", 175);
STRING_LITERAL(TM_rmUZTUif19aNVU5raHE2xtA_57, "/Users/travis/build/nim-lang/nightlies/nim/e7471cebae2a404f3e42"
"39f199f5a0c422484aac/compiler/dfa.nim(623, 10) `ins.kind in {def"
", use}` ", 135);

static N_INLINE(void, nimSetMem_JE6t4x7Z3v2iVz27Nx0MRAmemory)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}

static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem_JE6t4x7Z3v2iVz27Nx0MRAmemory(p, ((int) 0), size);
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, getRoot_vedgqlRdnLUAAjvLVHCgqg)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		while (1) {
			switch ((*result).kind) {
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 47):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 63) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 67):
			{
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(((NI) 0)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*result).sons ? (*result).sons->Sup.len : 0)-1);
				result = (*result).sons->data[((NI) 0)];
			}
			break;
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59):
			{
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(((NI) 1)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*result).sons ? (*result).sons->Sup.len : 0)-1);
				result = (*result).sons->data[((NI) 1)];
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	return result;
}
static N_NIMCALL(void, Marker_tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ)(void* p, NI op) {
	tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ* a;
	NI T1_;
	a = (tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*)p;
	T1_ = (NI)0;
	for (T1_ = 0; T1_ < (a ? a->Sup.len : 0); T1_++) {
	nimGCvisit((void*)a->data[T1_].n, op);
	switch (a->data[T1_].kind) {
	case ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 3):
	case ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 4):
	nimGCvisit((void*)a->data[T1_].sym, op);
	break;
	case ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 0):
	case ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 1):
	case ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 2):
	break;
	} 
	}
}

N_LIB_PRIVATE N_NIMCALL(void, genUse_nu33JHavvXsnRHhdnu4oxw)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
	n = getRoot_vedgqlRdnLUAAjvLVHCgqg(orig);
	{
		NIM_BOOL T3_;
		tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg T7_;
		NI T13_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		if (!(T3_)) goto LA4_;
		if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
		T3_ = ((2100008 &(1U<<((NU)((*(*n).sym).kind)&31U)))!=0);
		LA4_: ;
		if (!T3_) goto LA5_;
		nimZeroMem((void*)(&T7_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
		nimZeroMem((void*)(&T7_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
		T7_.n = orig;
		T7_.kind = ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 4);
		{
			if (!!((orig == n))) goto LA10_;
			T7_.sym = NIM_NIL;
		}
		goto LA8_;
		LA10_: ;
		{
			if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
			T7_.sym = (*n).sym;
		}
		LA8_: ;
		unsureAsgnRef((void**) (&(*c).code), (tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*) incrSeqV3((TGenericSeq*)((*c).code), (&NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_)));
		T13_ = (*c).code->Sup.len++;
		genericAssign((void*)(&(*c).code->data[T13_]), (void*)(&T7_), (&NTI_Iclb1njvAJfjjEpCLzUzZg_));
	}
	LA5_: ;
}

N_LIB_PRIVATE N_NIMCALL(NI, forkI_zfeGGy35Zjy67bv7Php9bJg)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	NI T1_;
	tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg T2_;
	NI T3_;
	NI T4_;
	result = (NI)0;
	T1_ = ((*c).code ? (*c).code->Sup.len : 0);
	result = T1_;
	nimZeroMem((void*)(&T2_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
	nimZeroMem((void*)(&T2_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
	T2_.n = n;
	T2_.kind = ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 1);
	T2_.dest = ((NI) 0);
	unsureAsgnRef((void**) (&(*c).code), (tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*) incrSeqV3((TGenericSeq*)((*c).code), (&NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_)));
	T3_ = (*c).code->Sup.len++;
	genericAssign((void*)(&(*c).code->data[T3_]), (void*)(&T2_), (&NTI_Iclb1njvAJfjjEpCLzUzZg_));
	unsureAsgnRef((void**) (&(*c).forks), (tySequence_qwqHTkRvwhrRyENtudHQ7g*) incrSeqV3((TGenericSeq*)((*c).forks), (&NTI_qwqHTkRvwhrRyENtudHQ7g_)));
	T4_ = (*c).forks->Sup.len++;
	(*c).forks->data[T4_] = result;
	return result;
}

static N_INLINE(NI, subInt)(NI a, NI b) {
	NI result;
{	result = (NI)0;
	result = (NI)((NU32)(a) - (NU32)(b));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(result ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(result ^ (NI)((NU32) ~(b))));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	raiseOverflow();
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, patch_w9ckgqgPWsAveG527LmLpiQ)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, NI p) {
	NI p_2;
	NI diff;
	NI T1_;
	NI TM_rmUZTUif19aNVU5raHE2xtA_10;
	p_2 = p;
	T1_ = ((*c).code ? (*c).code->Sup.len : 0);
	TM_rmUZTUif19aNVU5raHE2xtA_10 = subInt(T1_, p_2);
	diff = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_10);
	{
		NIM_BOOL T4_;
		T4_ = (NIM_BOOL)0;
		T4_ = (((NI) -32767) < diff);
		if (!(T4_)) goto LA5_;
		T4_ = (diff < ((NI) 32767));
		LA5_: ;
		if (!!(T4_)) goto LA6_;
		failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_11));
	}
	LA6_: ;
	if ((NU)(p_2) >= (NU)((*c).code ? (*c).code->Sup.len : 0)) raiseIndexError2(p_2,((*c).code ? (*c).code->Sup.len : 0)-1);
	if (!(((7 &(1U<<((NU)((*c).code->data[p_2].kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_12));
	(*c).code->data[p_2].dest = diff;
}

N_LIB_PRIVATE N_NIMCALL(void, joinI_eA4LiMbDDYh9avdVG63kAng)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, NI fromFork, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI dist;
	NI T1_;
	NI TM_rmUZTUif19aNVU5raHE2xtA_13;
	tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg T2_;
	NI T3_;
	T1_ = ((*c).code ? (*c).code->Sup.len : 0);
	TM_rmUZTUif19aNVU5raHE2xtA_13 = subInt(fromFork, T1_);
	dist = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_13);
	nimZeroMem((void*)(&T2_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
	nimZeroMem((void*)(&T2_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
	T2_.n = n;
	T2_.kind = ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 2);
	T2_.dest = dist;
	unsureAsgnRef((void**) (&(*c).code), (tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*) incrSeqV3((TGenericSeq*)((*c).code), (&NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_)));
	T3_ = (*c).code->Sup.len++;
	genericAssign((void*)(&(*c).code->data[T3_]), (void*)(&T2_), (&NTI_Iclb1njvAJfjjEpCLzUzZg_));
}

static N_INLINE(NI, chckRange)(NI i, NI a, NI b) {
	NI result;
{	result = (NI)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (a <= i);
		if (!(T3_)) goto LA4_;
		T3_ = (i <= b);
		LA4_: ;
		if (!T3_) goto LA5_;
		result = i;
		goto BeforeRet_;
	}
	goto LA1_;
	LA5_: ;
	{
		raiseRangeError(((NI64) (i)));
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, genAndOr_gGw9aM0qGTbTYMOOB416xEA_2)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI oldLen;
	NI T1_;
	NI L1;
	if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
	if ((NU)(((NI) 1)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*n).sons ? (*n).sons->Sup.len : 0)-1);
	gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 1)]);
	T1_ = ((*c).forks ? (*c).forks->Sup.len : 0);
	oldLen = T1_;
	L1 = forkI_zfeGGy35Zjy67bv7Php9bJg(c, n);
	if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
	if ((NU)(((NI) 2)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 2),((*n).sons ? (*n).sons->Sup.len : 0)-1);
	gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 2)]);
	patch_w9ckgqgPWsAveG527LmLpiQ(c, L1);
	joinI_eA4LiMbDDYh9avdVG63kAng(c, L1, n);
	unsureAsgnRef((void**) (&(*c).forks), (tySequence_qwqHTkRvwhrRyENtudHQ7g*) setLengthSeqV2(&((*c).forks)->Sup, (&NTI_qwqHTkRvwhrRyENtudHQ7g_), ((NI)chckRange(oldLen, ((NI) 0), ((NI) 2147483647)))));
}

static N_INLINE(NIM_BOOL, isSinkParam_Ye2MiAptq3GrXxTQeyXNeA_3ast)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T3_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*s).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3));
	if (!(T1_)) goto LA2_;
	T3_ = (NIM_BOOL)0;
	T3_ = ((*(*s).typ).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 46));
	if (T3_) goto LA4_;
	T3_ = (((*(*s).typ).flags &((NU64)1<<((NU)(((tyEnum_TTypeFlag_x2m5g1NpbmDig4wLT3Ylhw) 4))&63U)))!=0);
	LA4_: ;
	T1_ = T3_;
	LA2_: ;
	result = T1_;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isAnalysableFieldAccess_scxG86YRKjb7mFYULG1CyQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* orig, tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* owner) {
	NIM_BOOL result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
	NIM_BOOL T22_;
	NIM_BOOL T23_;
	NIM_BOOL T24_;
	NIM_BOOL T28_;
{	result = (NIM_BOOL)0;
	n = orig;
	{
		while (1) {
			switch ((*n).kind) {
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 46):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 66):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 67):
			{
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
				n = (*n).sons->data[((NI) 0)];
			}
			break;
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 47):
			{
				NIM_BOOL T5_;
				NIM_BOOL T6_;
				NIM_BOOL T9_;
				tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T11_;
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
				n = (*n).sons->data[((NI) 0)];
				T5_ = (NIM_BOOL)0;
				T6_ = (NIM_BOOL)0;
				T6_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
				if (!(T6_)) goto LA7_;
				if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
				T6_ = ((*(*n).sym).owner == owner);
				LA7_: ;
				T5_ = T6_;
				if (!(T5_)) goto LA8_;
				T9_ = (NIM_BOOL)0;
				if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
				T9_ = isSinkParam_Ye2MiAptq3GrXxTQeyXNeA_3ast((*n).sym);
				if (T9_) goto LA10_;
				if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
				T11_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
				T11_ = skipTypes_zsqmUNR5OZrTUna0Y9bdu9bg((*(*n).sym).typ, IL64(36099165763184912));
				T9_ = ((*T11_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 45) || (*T11_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 23));
				LA10_: ;
				T5_ = T9_;
				LA8_: ;
				result = T5_;
				goto BeforeRet_;
			}
			break;
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
				x = (*n).sons->data[((NI) 0)];
				{
					NIM_BOOL T15_;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T17_;
					T15_ = (NIM_BOOL)0;
					T15_ = !(((*x).typ == NIM_NIL));
					if (!(T15_)) goto LA16_;
					T17_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T17_ = skipTypes_zsqmUNR5OZrTUna0Y9bdu9bg((*x).typ, IL64(36134350135273744));
					T15_ = ((*T17_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18));
					LA16_: ;
					if (!T15_) goto LA18_;
					n = x;
				}
				goto LA13_;
				LA18_: ;
				{
					goto LA1;
				}
				LA13_: ;
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	T22_ = (NIM_BOOL)0;
	T23_ = (NIM_BOOL)0;
	T24_ = (NIM_BOOL)0;
	T24_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
	if (!(T24_)) goto LA25_;
	if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
	T24_ = ((*(*n).sym).owner == owner);
	LA25_: ;
	T23_ = T24_;
	if (!(T23_)) goto LA26_;
	T23_ = !(((*owner).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 6)));
	LA26_: ;
	T22_ = T23_;
	if (!(T22_)) goto LA27_;
	T28_ = (NIM_BOOL)0;
	if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
	T28_ = !(((*(*n).sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 3)));
	if (T28_) goto LA29_;
	if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
	T28_ = isSinkParam_Ye2MiAptq3GrXxTQeyXNeA_3ast((*n).sym);
	LA29_: ;
	T22_ = T28_;
	LA27_: ;
	result = T22_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, genDef_gGw9aM0qGTbTYMOOB416xEA_3)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NIM_BOOL T3_;
		tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg T7_;
		NI T8_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		if (!(T3_)) goto LA4_;
		if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
		T3_ = ((2100008 &(1U<<((NU)((*(*n).sym).kind)&31U)))!=0);
		LA4_: ;
		if (!T3_) goto LA5_;
		nimZeroMem((void*)(&T7_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
		nimZeroMem((void*)(&T7_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
		T7_.n = n;
		T7_.kind = ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 3);
		if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
		T7_.sym = (*n).sym;
		unsureAsgnRef((void**) (&(*c).code), (tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*) incrSeqV3((TGenericSeq*)((*c).code), (&NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_)));
		T8_ = (*c).code->Sup.len++;
		genericAssign((void*)(&(*c).code->data[T8_]), (void*)(&T7_), (&NTI_Iclb1njvAJfjjEpCLzUzZg_));
	}
	goto LA1_;
	LA5_: ;
	{
		NIM_BOOL T10_;
		tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg T13_;
		NI T14_;
		T10_ = (NIM_BOOL)0;
		T10_ = isAnalysableFieldAccess_scxG86YRKjb7mFYULG1CyQ(n, (*c).owner);
		if (!T10_) goto LA11_;
		nimZeroMem((void*)(&T13_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
		nimZeroMem((void*)(&T13_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
		T13_.n = n;
		T13_.kind = ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 3);
		T13_.sym = NIM_NIL;
		unsureAsgnRef((void**) (&(*c).code), (tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*) incrSeqV3((TGenericSeq*)((*c).code), (&NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_)));
		T14_ = (*c).code->Sup.len++;
		genericAssign((void*)(&(*c).code->data[T14_]), (void*)(&T13_), (&NTI_Iclb1njvAJfjjEpCLzUzZg_));
	}
	goto LA1_;
	LA11_: ;
	LA1_: ;
}

static N_INLINE(NI, len_P89cqdlERShb9alU3iC0yj8wast)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	NI T1_;
	result = (NI)0;
	if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
	T1_ = ((*n).sons ? (*n).sons->Sup.len : 0);
	result = T1_;
	return result;
}

static N_INLINE(NI, addInt)(NI a, NI b) {
	NI result;
{	result = (NI)0;
	result = (NI)((NU32)(a) + (NU32)(b));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(result ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(result ^ b));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	raiseOverflow();
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canRaise_tNCnq9baNDcWeSQK8j9c0oTw)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fn) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*fn).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		if (!(T3_)) goto LA4_;
		if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*fn).kind)>>3] &(1U<<((NU)((*fn).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
		T3_ = !(((*(*fn).sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0) || (*(*fn).sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 22) || (*(*fn).sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 23) || (*(*fn).sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 25) || (*(*fn).sym).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 26)));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = NIM_FALSE;
	}
	goto LA1_;
	LA5_: ;
	{
		result = NIM_TRUE;
	}
	LA1_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NI, gotoI_zfeGGy35Zjy67bv7Php9bJg_2)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI result;
	NI T1_;
	tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg T2_;
	NI T3_;
	result = (NI)0;
	T1_ = ((*c).code ? (*c).code->Sup.len : 0);
	result = T1_;
	nimZeroMem((void*)(&T2_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
	nimZeroMem((void*)(&T2_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
	T2_.n = n;
	T2_.kind = ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 0);
	T2_.dest = ((NI) 0);
	unsureAsgnRef((void**) (&(*c).code), (tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*) incrSeqV3((TGenericSeq*)((*c).code), (&NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_)));
	T3_ = (*c).code->Sup.len++;
	genericAssign((void*)(&(*c).code->data[T3_]), (void*)(&T2_), (&NTI_Iclb1njvAJfjjEpCLzUzZg_));
	return result;
}

static N_INLINE(NI, pop_GrOL4kxIWJa7WWwx9c2b9aOAsystem)(tySequence_qwqHTkRvwhrRyENtudHQ7g** s) {
	NI result;
	NI L;
	NI T1_;
	NI TM_rmUZTUif19aNVU5raHE2xtA_17;
	result = (NI)0;
	T1_ = ((*s) ? (*s)->Sup.len : 0);
	TM_rmUZTUif19aNVU5raHE2xtA_17 = subInt(T1_, ((NI) 1));
	L = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_17);
	if ((NU)(L) >= (NU)((*s) ? (*s)->Sup.len : 0)) raiseIndexError2(L,((*s) ? (*s)->Sup.len : 0)-1);
	result = (*s)->data[L];
	unsureAsgnRef((void**) (&(*s)), (tySequence_qwqHTkRvwhrRyENtudHQ7g*) setLengthSeqV2(&((*s))->Sup, (&NTI_qwqHTkRvwhrRyENtudHQ7g_), ((NI)chckRange(L, ((NI) 0), ((NI) 2147483647)))));
	return result;
}

N_LIB_PRIVATE N_NIMCALL(void, genCall_gGw9aM0qGTbTYMOOB416xEA_4)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* t;
	NI TM_rmUZTUif19aNVU5raHE2xtA_15;
	NI TM_rmUZTUif19aNVU5raHE2xtA_18;
	if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
	if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
	gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 0)]);
	if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
	if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
	t = (*(*n).sons->data[((NI) 0)]).typ;
	{
		if (!!((t == NIM_NIL))) goto LA3_;
		t = skipTypes_zsqmUNR5OZrTUna0Y9bdu9bg(t, IL64(36134350135273744));
	}
	LA3_: ;
	TM_rmUZTUif19aNVU5raHE2xtA_15 = addInt((*c).inCall, ((NI) 1));
	(*c).inCall = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_15);
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_P89cqdlERShb9alU3iC0yj8wast(n);
		i_2 = ((NI) 1);
		{
			while (1) {
				NI TM_rmUZTUif19aNVU5raHE2xtA_16;
				if (!(i_2 < colontmp_)) goto LA7;
				i = i_2;
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
				gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[i]);
				TM_rmUZTUif19aNVU5raHE2xtA_16 = addInt(i_2, ((NI) 1));
				i_2 = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_16);
			} LA7: ;
		}
	}
	{
		NIM_BOOL T10_;
		NI endGoto;
		NI T14_;
		NI T15_;
		NI T16_;
		T10_ = (NIM_BOOL)0;
		T10_ = (((NI) 0) < (*c).inTryStmt);
		if (!(T10_)) goto LA11_;
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		T10_ = canRaise_tNCnq9baNDcWeSQK8j9c0oTw((*n).sons->data[((NI) 0)]);
		LA11_: ;
		if (!T10_) goto LA12_;
		endGoto = forkI_zfeGGy35Zjy67bv7Php9bJg(c, n);
		T14_ = (NI)0;
		T14_ = gotoI_zfeGGy35Zjy67bv7Php9bJg_2(c, n);
		unsureAsgnRef((void**) (&(*c).tryStmtFixups), (tySequence_qwqHTkRvwhrRyENtudHQ7g*) incrSeqV3((TGenericSeq*)((*c).tryStmtFixups), (&NTI_qwqHTkRvwhrRyENtudHQ7g_)));
		T15_ = (*c).tryStmtFixups->Sup.len++;
		(*c).tryStmtFixups->data[T15_] = T14_;
		patch_w9ckgqgPWsAveG527LmLpiQ(c, endGoto);
		T16_ = (NI)0;
		T16_ = pop_GrOL4kxIWJa7WWwx9c2b9aOAsystem((&(*c).forks));
		joinI_eA4LiMbDDYh9avdVG63kAng(c, T16_, n);
	}
	LA12_: ;
	TM_rmUZTUif19aNVU5raHE2xtA_18 = subInt((*c).inCall, ((NI) 1));
	(*c).inCall = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_18);
}

N_LIB_PRIVATE N_NIMCALL(void, genMagic_yb09bD37nAJUr80zaRim8Tw)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n, tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg m) {
	switch (m) {
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 131):
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 132):
	{
		genAndOr_gGw9aM0qGTbTYMOOB416xEA_2(c, n);
	}
	break;
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 33):
	case ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 34):
	{
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 1)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		genDef_gGw9aM0qGTbTYMOOB416xEA_3(c, (*n).sons->data[((NI) 1)]);
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len_P89cqdlERShb9alU3iC0yj8wast(n);
			i_2 = ((NI) 2);
			{
				while (1) {
					NI TM_rmUZTUif19aNVU5raHE2xtA_14;
					if (!(i_2 < colontmp_)) goto LA5;
					i = i_2;
					if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
					if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[i]);
					TM_rmUZTUif19aNVU5raHE2xtA_14 = addInt(i_2, ((NI) 1));
					i_2 = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_14);
				} LA5: ;
			}
		}
	}
	break;
	default:
	{
		genCall_gGw9aM0qGTbTYMOOB416xEA_4(c, n);
	}
	break;
	}
}

N_LIB_PRIVATE N_NIMCALL(void, genIf_gGw9aM0qGTbTYMOOB416xEA_5)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI oldLen;
	NI T1_;
	tySequence_qwqHTkRvwhrRyENtudHQ7g* endings;
	T1_ = ((*c).forks ? (*c).forks->Sup.len : 0);
	oldLen = T1_;
	endings = NIM_NIL;
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_P89cqdlERShb9alU3iC0yj8wast(n);
		i_2 = ((NI) 0);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
				NI TM_rmUZTUif19aNVU5raHE2xtA_20;
				if (!(i_2 < colontmp_)) goto LA4;
				i = i_2;
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
				it = (*n).sons->data[i];
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(((NI) 0)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*it).sons ? (*it).sons->Sup.len : 0)-1);
				gen_gGw9aM0qGTbTYMOOB416xEA(c, (*it).sons->data[((NI) 0)]);
				{
					NI T7_;
					NI elsePos;
					NI T10_;
					NI T11_;
					T7_ = (NI)0;
					T7_ = len_P89cqdlERShb9alU3iC0yj8wast(it);
					if (!(T7_ == ((NI) 2))) goto LA8_;
					if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
					if ((NU)(((NI) 1)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*it).sons ? (*it).sons->Sup.len : 0)-1);
					elsePos = forkI_zfeGGy35Zjy67bv7Php9bJg(c, (*it).sons->data[((NI) 1)]);
					if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
					if ((NU)(((NI) 1)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*it).sons ? (*it).sons->Sup.len : 0)-1);
					gen_gGw9aM0qGTbTYMOOB416xEA(c, (*it).sons->data[((NI) 1)]);
					if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
					if ((NU)(((NI) 1)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*it).sons ? (*it).sons->Sup.len : 0)-1);
					T10_ = (NI)0;
					T10_ = gotoI_zfeGGy35Zjy67bv7Php9bJg_2(c, (*it).sons->data[((NI) 1)]);
					endings = (tySequence_qwqHTkRvwhrRyENtudHQ7g*) incrSeqV3((TGenericSeq*)(endings), (&NTI_qwqHTkRvwhrRyENtudHQ7g_));
					T11_ = endings->Sup.len++;
					endings->data[T11_] = T10_;
					patch_w9ckgqgPWsAveG527LmLpiQ(c, elsePos);
				}
				LA8_: ;
				TM_rmUZTUif19aNVU5raHE2xtA_20 = addInt(i_2, ((NI) 1));
				i_2 = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_20);
			} LA4: ;
		}
	}
	{
		NI i_3;
		NI colontmp__2;
		NI T13_;
		NI res;
		i_3 = (NI)0;
		colontmp__2 = (NI)0;
		T13_ = ((endings ? endings->Sup.len : 0)-1);
		colontmp__2 = T13_;
		res = colontmp__2;
		{
			while (1) {
				NI endPos;
				NI T16_;
				NI TM_rmUZTUif19aNVU5raHE2xtA_21;
				if (!(((NI) 0) <= res)) goto LA15;
				i_3 = res;
				if ((NU)(i_3) >= (NU)(endings ? endings->Sup.len : 0)) raiseIndexError2(i_3,(endings ? endings->Sup.len : 0)-1);
				endPos = endings->data[i_3];
				patch_w9ckgqgPWsAveG527LmLpiQ(c, endPos);
				T16_ = (NI)0;
				T16_ = pop_GrOL4kxIWJa7WWwx9c2b9aOAsystem((&(*c).forks));
				joinI_eA4LiMbDDYh9avdVG63kAng(c, T16_, n);
				TM_rmUZTUif19aNVU5raHE2xtA_21 = subInt(res, ((NI) 1));
				res = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_21);
			} LA15: ;
		}
	}
	{
		NI T19_;
		T19_ = ((*c).forks ? (*c).forks->Sup.len : 0);
		if (!!((T19_ == oldLen))) goto LA20_;
		failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_22));
	}
	LA20_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, genCase_gGw9aM0qGTbTYMOOB416xEA_6)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL isExhaustive;
	tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T1_;
	tySequence_qwqHTkRvwhrRyENtudHQ7g* endings;
	NI oldLen;
	NI T2_;
	if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
	if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
	T1_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
	T1_ = skipTypes_zsqmUNR5OZrTUna0Y9bdu9bg((*(*n).sons->data[((NI) 0)]).typ, IL64(36134350144710672));
	isExhaustive = !(((*T1_).kind >= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 36) && (*T1_).kind <= ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 39) || (*T1_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 28)));
	endings = NIM_NIL;
	T2_ = ((*c).forks ? (*c).forks->Sup.len : 0);
	oldLen = T2_;
	if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
	if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
	gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 0)]);
	{
		NI i;
		NI colontmp_;
		NI i_2;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len_P89cqdlERShb9alU3iC0yj8wast(n);
		i_2 = ((NI) 1);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
				NI TM_rmUZTUif19aNVU5raHE2xtA_24;
				if (!(i_2 < colontmp_)) goto LA5;
				i = i_2;
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
				it = (*n).sons->data[i];
				{
					NI T8_;
					T8_ = (NI)0;
					T8_ = len_P89cqdlERShb9alU3iC0yj8wast(it);
					if (!(T8_ == ((NI) 1))) goto LA9_;
					if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*it).kind)>>3] &(1U<<((NU)((*it).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
					if ((NU)(((NI) 0)) >= (NU)((*it).sons ? (*it).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*it).sons ? (*it).sons->Sup.len : 0)-1);
					gen_gGw9aM0qGTbTYMOOB416xEA(c, (*it).sons->data[((NI) 0)]);
				}
				goto LA6_;
				LA9_: ;
				{
					NIM_BOOL T12_;
					NI T13_;
					NI TM_rmUZTUif19aNVU5raHE2xtA_23;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T17_;
					T12_ = (NIM_BOOL)0;
					T13_ = (NI)0;
					T13_ = len_P89cqdlERShb9alU3iC0yj8wast(n);
					TM_rmUZTUif19aNVU5raHE2xtA_23 = subInt(T13_, ((NI) 1));
					T12_ = (i == (NI)(TM_rmUZTUif19aNVU5raHE2xtA_23));
					if (!(T12_)) goto LA14_;
					T12_ = isExhaustive;
					LA14_: ;
					if (!T12_) goto LA15_;
					T17_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T17_ = lastSon_UPSW0jLTX5qJL51YMUAHgw(it);
					gen_gGw9aM0qGTbTYMOOB416xEA(c, T17_);
				}
				goto LA6_;
				LA15_: ;
				{
					NI elsePos;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T19_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T20_;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T21_;
					NI T22_;
					NI T23_;
					T19_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T19_ = lastSon_UPSW0jLTX5qJL51YMUAHgw(it);
					elsePos = forkI_zfeGGy35Zjy67bv7Php9bJg(c, T19_);
					T20_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T20_ = lastSon_UPSW0jLTX5qJL51YMUAHgw(it);
					gen_gGw9aM0qGTbTYMOOB416xEA(c, T20_);
					T21_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T21_ = lastSon_UPSW0jLTX5qJL51YMUAHgw(it);
					T22_ = (NI)0;
					T22_ = gotoI_zfeGGy35Zjy67bv7Php9bJg_2(c, T21_);
					endings = (tySequence_qwqHTkRvwhrRyENtudHQ7g*) incrSeqV3((TGenericSeq*)(endings), (&NTI_qwqHTkRvwhrRyENtudHQ7g_));
					T23_ = endings->Sup.len++;
					endings->data[T23_] = T22_;
					patch_w9ckgqgPWsAveG527LmLpiQ(c, elsePos);
				}
				LA6_: ;
				TM_rmUZTUif19aNVU5raHE2xtA_24 = addInt(i_2, ((NI) 1));
				i_2 = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_24);
			} LA5: ;
		}
	}
	{
		NI i_3;
		NI colontmp__2;
		NI T25_;
		NI res;
		i_3 = (NI)0;
		colontmp__2 = (NI)0;
		T25_ = ((endings ? endings->Sup.len : 0)-1);
		colontmp__2 = T25_;
		res = colontmp__2;
		{
			while (1) {
				NI endPos;
				NI T28_;
				NI TM_rmUZTUif19aNVU5raHE2xtA_25;
				if (!(((NI) 0) <= res)) goto LA27;
				i_3 = res;
				if ((NU)(i_3) >= (NU)(endings ? endings->Sup.len : 0)) raiseIndexError2(i_3,(endings ? endings->Sup.len : 0)-1);
				endPos = endings->data[i_3];
				patch_w9ckgqgPWsAveG527LmLpiQ(c, endPos);
				T28_ = (NI)0;
				T28_ = pop_GrOL4kxIWJa7WWwx9c2b9aOAsystem((&(*c).forks));
				joinI_eA4LiMbDDYh9avdVG63kAng(c, T28_, n);
				TM_rmUZTUif19aNVU5raHE2xtA_25 = subInt(res, ((NI) 1));
				res = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_25);
			} LA27: ;
		}
	}
	{
		NI T31_;
		T31_ = ((*c).forks ? (*c).forks->Sup.len : 0);
		if (!!((T31_ == oldLen))) goto LA32_;
		failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_26));
	}
	LA32_: ;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isTrue_GoY2SMIM9arvGY7ylLiaRHQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	NIM_BOOL T2_;
	NIM_BOOL T3_;
	NIM_BOOL T7_;
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T2_ = (NIM_BOOL)0;
	T3_ = (NIM_BOOL)0;
	T3_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
	if (!(T3_)) goto LA4_;
	if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
	T3_ = ((*(*n).sym).kind == ((tyEnum_TSymKind_cNCW9acsSznmEccl1fgQwkw) 20));
	LA4_: ;
	T2_ = T3_;
	if (!(T2_)) goto LA5_;
	if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
	T2_ = !(((*(*n).sym).position == ((NI) 0)));
	LA5_: ;
	T1_ = T2_;
	if (T1_) goto LA6_;
	T7_ = (NIM_BOOL)0;
	T7_ = ((*n).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 6));
	if (!(T7_)) goto LA8_;
	if (!(((TM_rmUZTUif19aNVU5raHE2xtA_27[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_28));
	T7_ = !(((*n).intVal == IL64(0)));
	LA8_: ;
	T1_ = T7_;
	LA6_: ;
	result = T1_;
	return result;
}
static N_NIMCALL(void, Marker_tySequence_bZP29c0SHT9aMkbSl4EFvgCg)(void* p, NI op) {
	tySequence_bZP29c0SHT9aMkbSl4EFvgCg* a;
	NI T1_;
	a = (tySequence_bZP29c0SHT9aMkbSl4EFvgCg*)p;
	T1_ = (NI)0;
	for (T1_ = 0; T1_ < (a ? a->Sup.len : 0); T1_++) {
	nimGCvisit((void*)a->data[T1_].label, op);
	nimGCvisit((void*)a->data[T1_].fixups, op);
	}
}

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

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

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

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

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem(src);
		incRef_AT1eRuflKWyTTBdLjEDZbg_3system(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell_QFQqcLB3lgOdwipkv9a60xwsystem((*dest));
		decRef_AT1eRuflKWyTTBdLjEDZbgsystem(T10_);
	}
	LA8_: ;
	(*dest) = src;
}

N_LIB_PRIVATE N_NIMCALL(void, popBlock_eDAfFCByokGb4jEgPA1Mmg)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, NI oldLen) {
	{
		NI f;
		tySequence_qwqHTkRvwhrRyENtudHQ7g* colontmp_;
		NI i;
		NI L;
		NI T2_;
		f = (NI)0;
		colontmp_ = (tySequence_qwqHTkRvwhrRyENtudHQ7g*)0;
		if ((NU)(oldLen) >= (NU)((*c).blocks ? (*c).blocks->Sup.len : 0)) raiseIndexError2(oldLen,((*c).blocks ? (*c).blocks->Sup.len : 0)-1);
		colontmp_ = (*c).blocks->data[oldLen].fixups;
		i = ((NI) 0);
		T2_ = (colontmp_ ? colontmp_->Sup.len : 0);
		L = T2_;
		{
			while (1) {
				NI TM_rmUZTUif19aNVU5raHE2xtA_32;
				if (!(i < L)) goto LA4;
				if ((NU)(i) >= (NU)(colontmp_ ? colontmp_->Sup.len : 0)) raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1);
				f = colontmp_->data[i];
				patch_w9ckgqgPWsAveG527LmLpiQ(c, f);
				TM_rmUZTUif19aNVU5raHE2xtA_32 = addInt(i, ((NI) 1));
				i = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_32);
				{
					NI T7_;
					T7_ = (colontmp_ ? colontmp_->Sup.len : 0);
					if (!!((T7_ == L))) goto LA8_;
					failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_33));
				}
				LA8_: ;
			} LA4: ;
		}
	}
	unsureAsgnRef((void**) (&(*c).blocks), (tySequence_bZP29c0SHT9aMkbSl4EFvgCg*) setLengthSeqV2(&((*c).blocks)->Sup, (&NTI_bZP29c0SHT9aMkbSl4EFvgCg_), ((NI)chckRange(oldLen, ((NI) 0), ((NI) 2147483647)))));
}

N_LIB_PRIVATE N_NIMCALL(void, genWhile_gGw9aM0qGTbTYMOOB416xEA_7)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NIM_BOOL T3_;
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		T3_ = (NIM_BOOL)0;
		T3_ = isTrue_GoY2SMIM9arvGY7ylLiaRHQ((*n).sons->data[((NI) 0)]);
		if (!T3_) goto LA4_;
		{
			NI i;
			NI res;
			i = (NI)0;
			res = ((NI) 0);
			{
				while (1) {
					NI oldLen;
					NI T9_;
					NI T10_;
					NI TM_rmUZTUif19aNVU5raHE2xtA_34;
					if (!(res <= ((NI) 2))) goto LA8;
					i = res;
					T9_ = ((*c).blocks ? (*c).blocks->Sup.len : 0);
					oldLen = T9_;
					unsureAsgnRef((void**) (&(*c).blocks), (tySequence_bZP29c0SHT9aMkbSl4EFvgCg*) incrSeqV3((TGenericSeq*)((*c).blocks), (&NTI_bZP29c0SHT9aMkbSl4EFvgCg_)));
					T10_ = (*c).blocks->Sup.len++;
					asgnRef((void**) (&(*c).blocks->data[T10_].label), TM_rmUZTUif19aNVU5raHE2xtA_29.label);
					genericSeqAssign((&(*c).blocks->data[T10_].fixups), TM_rmUZTUif19aNVU5raHE2xtA_29.fixups, (&NTI_qwqHTkRvwhrRyENtudHQ7g_));
					if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
					if ((NU)(((NI) 1)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*n).sons ? (*n).sons->Sup.len : 0)-1);
					gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 1)]);
					popBlock_eDAfFCByokGb4jEgPA1Mmg(c, oldLen);
					TM_rmUZTUif19aNVU5raHE2xtA_34 = addInt(res, ((NI) 1));
					res = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_34);
				} LA8: ;
			}
		}
	}
	goto LA1_;
	LA4_: ;
	{
		NI oldForksLen;
		NI T12_;
		tyArray_Bd4h7Ocx9bGTvrKzPIWNlHw endings;
		T12_ = ((*c).forks ? (*c).forks->Sup.len : 0);
		oldForksLen = T12_;
		nimZeroMem((void*)endings, sizeof(tyArray_Bd4h7Ocx9bGTvrKzPIWNlHw));
		{
			NI i_2;
			NI res_2;
			i_2 = (NI)0;
			res_2 = ((NI) 0);
			{
				while (1) {
					NI oldLen_2;
					NI T16_;
					NI T17_;
					NI TM_rmUZTUif19aNVU5raHE2xtA_35;
					if (!(res_2 <= ((NI) 2))) goto LA15;
					i_2 = res_2;
					T16_ = ((*c).blocks ? (*c).blocks->Sup.len : 0);
					oldLen_2 = T16_;
					unsureAsgnRef((void**) (&(*c).blocks), (tySequence_bZP29c0SHT9aMkbSl4EFvgCg*) incrSeqV3((TGenericSeq*)((*c).blocks), (&NTI_bZP29c0SHT9aMkbSl4EFvgCg_)));
					T17_ = (*c).blocks->Sup.len++;
					asgnRef((void**) (&(*c).blocks->data[T17_].label), TM_rmUZTUif19aNVU5raHE2xtA_29.label);
					genericSeqAssign((&(*c).blocks->data[T17_].fixups), TM_rmUZTUif19aNVU5raHE2xtA_29.fixups, (&NTI_qwqHTkRvwhrRyENtudHQ7g_));
					if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
					if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
					gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 0)]);
					if ((NU)(i_2) > (NU)(2)) raiseIndexError2(i_2, 2);
					endings[(i_2)- 0] = forkI_zfeGGy35Zjy67bv7Php9bJg(c, n);
					if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
					if ((NU)(((NI) 1)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*n).sons ? (*n).sons->Sup.len : 0)-1);
					gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 1)]);
					popBlock_eDAfFCByokGb4jEgPA1Mmg(c, oldLen_2);
					TM_rmUZTUif19aNVU5raHE2xtA_35 = addInt(res_2, ((NI) 1));
					res_2 = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_35);
				} LA15: ;
			}
		}
		{
			NI i_3;
			NI res_3;
			i_3 = (NI)0;
			res_3 = ((NI) 2);
			{
				while (1) {
					NI endPos;
					NI T21_;
					NI TM_rmUZTUif19aNVU5raHE2xtA_36;
					if (!(((NI) 0) <= res_3)) goto LA20;
					i_3 = ((NI)chckRange(res_3, ((NI) 0), ((NI) 2)));
					endPos = endings[(i_3)- 0];
					patch_w9ckgqgPWsAveG527LmLpiQ(c, endPos);
					T21_ = (NI)0;
					T21_ = pop_GrOL4kxIWJa7WWwx9c2b9aOAsystem((&(*c).forks));
					joinI_eA4LiMbDDYh9avdVG63kAng(c, T21_, n);
					TM_rmUZTUif19aNVU5raHE2xtA_36 = subInt(res_3, ((NI) 1));
					res_3 = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_36);
				} LA20: ;
			}
		}
		{
			NI T24_;
			T24_ = ((*c).forks ? (*c).forks->Sup.len : 0);
			if (!!((T24_ == oldForksLen))) goto LA25_;
			failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_37));
		}
		LA25_: ;
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, genBlock_gGw9aM0qGTbTYMOOB416xEA_8)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI oldLen;
	NI T1_;
	tyObject_TBlock_J29b9b9cJiD9aK19cdoA7IwWiyA T2_;
	NI T3_;
	T1_ = ((*c).blocks ? (*c).blocks->Sup.len : 0);
	oldLen = T1_;
	nimZeroMem((void*)(&T2_), sizeof(tyObject_TBlock_J29b9b9cJiD9aK19cdoA7IwWiyA));
	nimZeroMem((void*)(&T2_), sizeof(tyObject_TBlock_J29b9b9cJiD9aK19cdoA7IwWiyA));
	if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
	if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
	if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*(*n).sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*n).sons->data[((NI) 0)]).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
	T2_.label = (*(*n).sons->data[((NI) 0)]).sym;
	T2_.fixups = NIM_NIL;
	unsureAsgnRef((void**) (&(*c).blocks), (tySequence_bZP29c0SHT9aMkbSl4EFvgCg*) incrSeqV3((TGenericSeq*)((*c).blocks), (&NTI_bZP29c0SHT9aMkbSl4EFvgCg_)));
	T3_ = (*c).blocks->Sup.len++;
	asgnRef((void**) (&(*c).blocks->data[T3_].label), T2_.label);
	genericSeqAssign((&(*c).blocks->data[T3_].fixups), T2_.fixups, (&NTI_qwqHTkRvwhrRyENtudHQ7g_));
	if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
	if ((NU)(((NI) 1)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*n).sons ? (*n).sons->Sup.len : 0)-1);
	gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 1)]);
	popBlock_eDAfFCByokGb4jEgPA1Mmg(c, oldLen);
}

N_LIB_PRIVATE N_NIMCALL(void, genJoins_gGw9aM0qGTbTYMOOB416xEA_10)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (((*c).forks ? (*c).forks->Sup.len : 0)-1);
		colontmp_ = T2_;
		res = colontmp_;
		{
			while (1) {
				NI TM_rmUZTUif19aNVU5raHE2xtA_38;
				if (!(((NI) 0) <= res)) goto LA4;
				i = res;
				if ((NU)(i) >= (NU)((*c).forks ? (*c).forks->Sup.len : 0)) raiseIndexError2(i,((*c).forks ? (*c).forks->Sup.len : 0)-1);
				joinI_eA4LiMbDDYh9avdVG63kAng(c, (*c).forks->data[i], n);
				TM_rmUZTUif19aNVU5raHE2xtA_38 = subInt(res, ((NI) 1));
				res = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_38);
			} LA4: ;
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(void, genImplicitReturn_dyRemX06FqbT5C9cymmRLtw)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c) {
	{
		NIM_BOOL T3_;
		NI T5_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((126976 &(1U<<((NU)((*(*c).owner).kind)&31U)))!=0);
		if (!(T3_)) goto LA4_;
		T5_ = (NI)0;
		T5_ = len_P89cqdlERShb9alU3iC0yj8wast((*(*c).owner).ast);
		T3_ = (((NI) 7) < T5_);
		LA4_: ;
		if (!T3_) goto LA6_;
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*(*(*c).owner).ast).kind)>>3] &(1U<<((NU)((*(*(*c).owner).ast).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 7)) >= (NU)((*(*(*c).owner).ast).sons ? (*(*(*c).owner).ast).sons->Sup.len : 0)) raiseIndexError2(((NI) 7),((*(*(*c).owner).ast).sons ? (*(*(*c).owner).ast).sons->Sup.len : 0)-1);
		gen_gGw9aM0qGTbTYMOOB416xEA(c, (*(*(*c).owner).ast).sons->data[((NI) 7)]);
	}
	LA6_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, genReturn_gGw9aM0qGTbTYMOOB416xEA_9)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg T6_;
	NI T7_;
	NI TM_rmUZTUif19aNVU5raHE2xtA_39;
	NI T8_;
	genJoins_gGw9aM0qGTbTYMOOB416xEA_10(c, n);
	{
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		if (!!(((*(*n).sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA3_;
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 0)]);
	}
	goto LA1_;
	LA3_: ;
	{
		genImplicitReturn_dyRemX06FqbT5C9cymmRLtw(c);
	}
	LA1_: ;
	nimZeroMem((void*)(&T6_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
	nimZeroMem((void*)(&T6_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
	T6_.n = n;
	T6_.kind = ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 0);
	T7_ = ((*c).code ? (*c).code->Sup.len : 0);
	TM_rmUZTUif19aNVU5raHE2xtA_39 = subInt(((NI) 2147483647), T7_);
	T6_.dest = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_39);
	unsureAsgnRef((void**) (&(*c).code), (tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*) incrSeqV3((TGenericSeq*)((*c).code), (&NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_)));
	T8_ = (*c).code->Sup.len++;
	genericAssign((void*)(&(*c).code->data[T8_]), (void*)(&T6_), (&NTI_Iclb1njvAJfjjEpCLzUzZg_));
}

N_LIB_PRIVATE N_NIMCALL(void, genRaise_gGw9aM0qGTbTYMOOB416xEA_11)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	genJoins_gGw9aM0qGTbTYMOOB416xEA_10(c, n);
	if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
	if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
	gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 0)]);
	{
		NI T5_;
		NI T6_;
		if (!(((NI) 0) < (*c).inTryStmt)) goto LA3_;
		T5_ = (NI)0;
		T5_ = gotoI_zfeGGy35Zjy67bv7Php9bJg_2(c, n);
		unsureAsgnRef((void**) (&(*c).tryStmtFixups), (tySequence_qwqHTkRvwhrRyENtudHQ7g*) incrSeqV3((TGenericSeq*)((*c).tryStmtFixups), (&NTI_qwqHTkRvwhrRyENtudHQ7g_)));
		T6_ = (*c).tryStmtFixups->Sup.len++;
		(*c).tryStmtFixups->data[T6_] = T5_;
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg T8_;
		NI T9_;
		NI TM_rmUZTUif19aNVU5raHE2xtA_40;
		NI T10_;
		nimZeroMem((void*)(&T8_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
		nimZeroMem((void*)(&T8_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
		T8_.n = n;
		T8_.kind = ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 0);
		T9_ = ((*c).code ? (*c).code->Sup.len : 0);
		TM_rmUZTUif19aNVU5raHE2xtA_40 = subInt(((NI) 2147483647), T9_);
		T8_.dest = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_40);
		unsureAsgnRef((void**) (&(*c).code), (tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*) incrSeqV3((TGenericSeq*)((*c).code), (&NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_)));
		T10_ = (*c).code->Sup.len++;
		genericAssign((void*)(&(*c).code->data[T10_]), (void*)(&T8_), (&NTI_Iclb1njvAJfjjEpCLzUzZg_));
	}
	LA1_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, genBreak_gGw9aM0qGTbTYMOOB416xEA_12)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI L1;
{	genJoins_gGw9aM0qGTbTYMOOB416xEA_10(c, n);
	L1 = gotoI_zfeGGy35Zjy67bv7Php9bJg_2(c, n);
	{
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		if (!((*(*n).sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA3_;
		{
			NI i;
			NI colontmp_;
			NI T6_;
			NI TM_rmUZTUif19aNVU5raHE2xtA_41;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			T6_ = ((*c).blocks ? (*c).blocks->Sup.len : 0);
			TM_rmUZTUif19aNVU5raHE2xtA_41 = subInt(T6_, ((NI) 1));
			colontmp_ = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_41);
			res = colontmp_;
			{
				while (1) {
					NI TM_rmUZTUif19aNVU5raHE2xtA_42;
					if (!(((NI) 0) <= res)) goto LA8;
					i = res;
					{
						NI T13_;
						if ((NU)(i) >= (NU)((*c).blocks ? (*c).blocks->Sup.len : 0)) raiseIndexError2(i,((*c).blocks ? (*c).blocks->Sup.len : 0)-1);
						if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
						if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
						if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*(*n).sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*n).sons->data[((NI) 0)]).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
						if (!((*c).blocks->data[i].label == (*(*n).sons->data[((NI) 0)]).sym)) goto LA11_;
						if ((NU)(i) >= (NU)((*c).blocks ? (*c).blocks->Sup.len : 0)) raiseIndexError2(i,((*c).blocks ? (*c).blocks->Sup.len : 0)-1);
						asgnRef((void**) (&(*c).blocks->data[i].fixups), (tySequence_qwqHTkRvwhrRyENtudHQ7g*) incrSeqV3((TGenericSeq*)((*c).blocks->data[i].fixups), (&NTI_qwqHTkRvwhrRyENtudHQ7g_)));
						T13_ = (*c).blocks->data[i].fixups->Sup.len++;
						(*c).blocks->data[i].fixups->data[T13_] = L1;
						goto BeforeRet_;
					}
					LA11_: ;
					TM_rmUZTUif19aNVU5raHE2xtA_42 = subInt(res, ((NI) 1));
					res = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_42);
				} LA8: ;
			}
		}
	}
	goto LA1_;
	LA3_: ;
	{
		NI T15_;
		NI T16_;
		T15_ = (((*c).blocks ? (*c).blocks->Sup.len : 0)-1);
		if ((NU)(T15_) >= (NU)((*c).blocks ? (*c).blocks->Sup.len : 0)) raiseIndexError2(T15_,((*c).blocks ? (*c).blocks->Sup.len : 0)-1);
		asgnRef((void**) (&(*c).blocks->data[T15_].fixups), (tySequence_qwqHTkRvwhrRyENtudHQ7g*) incrSeqV3((TGenericSeq*)((*c).blocks->data[T15_].fixups), (&NTI_qwqHTkRvwhrRyENtudHQ7g_)));
		T16_ = (*c).blocks->data[T15_].fixups->Sup.len++;
		(*c).blocks->data[T15_].fixups->data[T16_] = L1;
	}
	LA1_: ;
	}BeforeRet_: ;
}

N_LIB_PRIVATE N_NIMCALL(void, genTry_gGw9aM0qGTbTYMOOB416xEA_13)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	NI oldLen;
	NI T1_;
	tySequence_qwqHTkRvwhrRyENtudHQ7g* endings;
	NI TM_rmUZTUif19aNVU5raHE2xtA_43;
	NI oldFixups;
	NI T2_;
	NI TM_rmUZTUif19aNVU5raHE2xtA_44;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* fin;
	T1_ = ((*c).forks ? (*c).forks->Sup.len : 0);
	oldLen = T1_;
	endings = NIM_NIL;
	TM_rmUZTUif19aNVU5raHE2xtA_43 = addInt((*c).inTryStmt, ((NI) 1));
	(*c).inTryStmt = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_43);
	T2_ = ((*c).tryStmtFixups ? (*c).tryStmtFixups->Sup.len : 0);
	oldFixups = T2_;
	if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
	if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
	gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 0)]);
	TM_rmUZTUif19aNVU5raHE2xtA_44 = subInt((*c).inTryStmt, ((NI) 1));
	(*c).inTryStmt = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_44);
	{
		NI i;
		NI colontmp_;
		NI T4_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T4_ = (((*c).tryStmtFixups ? (*c).tryStmtFixups->Sup.len : 0)-1);
		colontmp_ = T4_;
		res = oldFixups;
		{
			while (1) {
				NI f;
				NI TM_rmUZTUif19aNVU5raHE2xtA_48;
				if (!(res <= colontmp_)) goto LA6;
				i = res;
				if ((NU)(i) >= (NU)((*c).tryStmtFixups ? (*c).tryStmtFixups->Sup.len : 0)) raiseIndexError2(i,((*c).tryStmtFixups ? (*c).tryStmtFixups->Sup.len : 0)-1);
				f = (*c).tryStmtFixups->data[i];
				patch_w9ckgqgPWsAveG527LmLpiQ(c, f);
				{
					NIM_BOOL T9_;
					NI TM_rmUZTUif19aNVU5raHE2xtA_45;
					NI TM_rmUZTUif19aNVU5raHE2xtA_46;
					NI TM_rmUZTUif19aNVU5raHE2xtA_47;
					T9_ = (NIM_BOOL)0;
					TM_rmUZTUif19aNVU5raHE2xtA_45 = subInt(f, ((NI) 1));
					T9_ = (((NI) 0) <= (NI)(TM_rmUZTUif19aNVU5raHE2xtA_45));
					if (!(T9_)) goto LA10_;
					TM_rmUZTUif19aNVU5raHE2xtA_46 = subInt(f, ((NI) 1));
					if ((NU)((NI)(TM_rmUZTUif19aNVU5raHE2xtA_46)) >= (NU)((*c).code ? (*c).code->Sup.len : 0)) raiseIndexError2((NI)(TM_rmUZTUif19aNVU5raHE2xtA_46),((*c).code ? (*c).code->Sup.len : 0)-1);
					T9_ = ((*c).code->data[(NI)(TM_rmUZTUif19aNVU5raHE2xtA_46)].kind == ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 1));
					LA10_: ;
					if (!T9_) goto LA11_;
					TM_rmUZTUif19aNVU5raHE2xtA_47 = subInt(f, ((NI) 1));
					joinI_eA4LiMbDDYh9avdVG63kAng(c, (NI)(TM_rmUZTUif19aNVU5raHE2xtA_47), n);
				}
				LA11_: ;
				TM_rmUZTUif19aNVU5raHE2xtA_48 = addInt(res, ((NI) 1));
				res = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_48);
			} LA6: ;
		}
	}
	unsureAsgnRef((void**) (&(*c).tryStmtFixups), (tySequence_qwqHTkRvwhrRyENtudHQ7g*) setLengthSeqV2(&((*c).tryStmtFixups)->Sup, (&NTI_qwqHTkRvwhrRyENtudHQ7g_), ((NI)chckRange(oldFixups, ((NI) 0), ((NI) 2147483647)))));
	{
		NI i_2;
		NI colontmp__2;
		NI i_3;
		i_2 = (NI)0;
		colontmp__2 = (NI)0;
		colontmp__2 = len_P89cqdlERShb9alU3iC0yj8wast(n);
		i_3 = ((NI) 1);
		{
			while (1) {
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* it;
				NI TM_rmUZTUif19aNVU5raHE2xtA_49;
				if (!(i_3 < colontmp__2)) goto LA15;
				i_2 = i_3;
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(i_2) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i_2,((*n).sons ? (*n).sons->Sup.len : 0)-1);
				it = (*n).sons->data[i_2];
				{
					NI blen;
					NI endExcept;
					tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T20_;
					NI T21_;
					NI T22_;
					if (!!(((*it).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 107)))) goto LA18_;
					blen = len_P89cqdlERShb9alU3iC0yj8wast(it);
					endExcept = forkI_zfeGGy35Zjy67bv7Php9bJg(c, it);
					T20_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
					T20_ = lastSon_UPSW0jLTX5qJL51YMUAHgw(it);
					gen_gGw9aM0qGTbTYMOOB416xEA(c, T20_);
					T21_ = (NI)0;
					T21_ = gotoI_zfeGGy35Zjy67bv7Php9bJg_2(c, it);
					endings = (tySequence_qwqHTkRvwhrRyENtudHQ7g*) incrSeqV3((TGenericSeq*)(endings), (&NTI_qwqHTkRvwhrRyENtudHQ7g_));
					T22_ = endings->Sup.len++;
					endings->data[T22_] = T21_;
					patch_w9ckgqgPWsAveG527LmLpiQ(c, endExcept);
				}
				LA18_: ;
				TM_rmUZTUif19aNVU5raHE2xtA_49 = addInt(i_3, ((NI) 1));
				i_3 = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_49);
			} LA15: ;
		}
	}
	{
		NI i_4;
		NI colontmp__3;
		NI T24_;
		NI res_2;
		i_4 = (NI)0;
		colontmp__3 = (NI)0;
		T24_ = ((endings ? endings->Sup.len : 0)-1);
		colontmp__3 = T24_;
		res_2 = colontmp__3;
		{
			while (1) {
				NI endPos;
				NI T27_;
				NI TM_rmUZTUif19aNVU5raHE2xtA_50;
				if (!(((NI) 0) <= res_2)) goto LA26;
				i_4 = res_2;
				if ((NU)(i_4) >= (NU)(endings ? endings->Sup.len : 0)) raiseIndexError2(i_4,(endings ? endings->Sup.len : 0)-1);
				endPos = endings->data[i_4];
				patch_w9ckgqgPWsAveG527LmLpiQ(c, endPos);
				T27_ = (NI)0;
				T27_ = pop_GrOL4kxIWJa7WWwx9c2b9aOAsystem((&(*c).forks));
				joinI_eA4LiMbDDYh9avdVG63kAng(c, T27_, n);
				TM_rmUZTUif19aNVU5raHE2xtA_50 = subInt(res_2, ((NI) 1));
				res_2 = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_50);
			} LA26: ;
		}
	}
	fin = lastSon_UPSW0jLTX5qJL51YMUAHgw(n);
	{
		if (!((*fin).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 107))) goto LA30_;
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*fin).kind)>>3] &(1U<<((NU)((*fin).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 0)) >= (NU)((*fin).sons ? (*fin).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*fin).sons ? (*fin).sons->Sup.len : 0)-1);
		gen_gGw9aM0qGTbTYMOOB416xEA(c, (*fin).sons->data[((NI) 0)]);
	}
	LA30_: ;
	{
		NI T34_;
		T34_ = ((*c).forks ? (*c).forks->Sup.len : 0);
		if (!!((T34_ == oldLen))) goto LA35_;
		failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_51));
	}
	LA35_: ;
}

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

N_LIB_PRIVATE N_NIMCALL(void, genVarSection_gGw9aM0qGTbTYMOOB416xEA_14)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* a;
		a = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		{
			NI i;
			NI colontmp_;
			NI i_2;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen_P89cqdlERShb9alU3iC0yj8w_2ast(n);
			i_2 = ((NI) 0);
			{
				while (1) {
					NI TM_rmUZTUif19aNVU5raHE2xtA_55;
					if (!(i_2 < colontmp_)) goto LA4;
					i = i_2;
					if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
					if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
					a = (*n).sons->data[i];
					{
						if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 125))) goto LA7_;
					}
					goto LA5_;
					LA7_: ;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T12_;
						if (!((*a).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 36))) goto LA10_;
						T12_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T12_ = lastSon_UPSW0jLTX5qJL51YMUAHgw(a);
						gen_gGw9aM0qGTbTYMOOB416xEA(c, T12_);
						{
							NI i_3;
							NI colontmp__2;
							NI T14_;
							NI TM_rmUZTUif19aNVU5raHE2xtA_53;
							NI res;
							i_3 = (NI)0;
							colontmp__2 = (NI)0;
							T14_ = (NI)0;
							T14_ = len_P89cqdlERShb9alU3iC0yj8wast(a);
							TM_rmUZTUif19aNVU5raHE2xtA_53 = subInt(T14_, ((NI) 3));
							colontmp__2 = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_53);
							res = ((NI) 0);
							{
								while (1) {
									NI TM_rmUZTUif19aNVU5raHE2xtA_54;
									if (!(res <= colontmp__2)) goto LA16;
									i_3 = res;
									if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
									if ((NU)(i_3) >= (NU)((*a).sons ? (*a).sons->Sup.len : 0)) raiseIndexError2(i_3,((*a).sons ? (*a).sons->Sup.len : 0)-1);
									genDef_gGw9aM0qGTbTYMOOB416xEA_3(c, (*a).sons->data[i_3]);
									TM_rmUZTUif19aNVU5raHE2xtA_54 = addInt(res, ((NI) 1));
									res = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_54);
								} LA16: ;
							}
						}
					}
					goto LA5_;
					LA10_: ;
					{
						tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T18_;
						T18_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
						T18_ = lastSon_UPSW0jLTX5qJL51YMUAHgw(a);
						gen_gGw9aM0qGTbTYMOOB416xEA(c, T18_);
						{
							tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T21_;
							T21_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
							T21_ = lastSon_UPSW0jLTX5qJL51YMUAHgw(a);
							if (!!(((*T21_).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 1)))) goto LA22_;
							if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*a).kind)>>3] &(1U<<((NU)((*a).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
							if ((NU)(((NI) 0)) >= (NU)((*a).sons ? (*a).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*a).sons ? (*a).sons->Sup.len : 0)-1);
							genDef_gGw9aM0qGTbTYMOOB416xEA_3(c, (*a).sons->data[((NI) 0)]);
						}
						LA22_: ;
					}
					LA5_: ;
					TM_rmUZTUif19aNVU5raHE2xtA_55 = addInt(i_2, ((NI) 1));
					i_2 = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_55);
				} LA4: ;
			}
		}
	}
}

N_LIB_PRIVATE N_NIMCALL(void, gen_gGw9aM0qGTbTYMOOB416xEA)(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw* c, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	switch ((*n).kind) {
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3):
	{
		genUse_nu33JHavvXsnRHhdnu4oxw(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 26) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 32):
	{
		{
			tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s;
			if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
			if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
			if (!((*(*n).sons->data[((NI) 0)]).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3))) goto LA5_;
			if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
			if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
			if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*(*n).sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*n).sons->data[((NI) 0)]).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
			s = (*(*n).sons->data[((NI) 0)]).sym;
			{
				if (!!(((*s).magic == ((tyEnum_TMagic_shZhZOdbVC5nnFvcXQAImg) 0)))) goto LA9_;
				genMagic_yb09bD37nAJUr80zaRim8Tw(c, n, (*s).magic);
			}
			goto LA7_;
			LA9_: ;
			{
				genCall_gGw9aM0qGTbTYMOOB416xEA_4(c, n);
			}
			LA7_: ;
			{
				tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg T16_;
				NI T17_;
				NI TM_rmUZTUif19aNVU5raHE2xtA_19;
				NI T18_;
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
				if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*(*n).sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*n).sons->data[((NI) 0)]).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
				if (!(((*(*(*n).sons->data[((NI) 0)]).sym).flags &((NU64)1<<((NU)(((tyEnum_TSymFlag_K9ay6LWMat9bUiT9bIbMxpDHw) 14))&63U)))!=0)) goto LA14_;
				nimZeroMem((void*)(&T16_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
				nimZeroMem((void*)(&T16_), sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg));
				T16_.n = n;
				T16_.kind = ((tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ) 0);
				T17_ = ((*c).code ? (*c).code->Sup.len : 0);
				TM_rmUZTUif19aNVU5raHE2xtA_19 = subInt(((NI) 2147483647), T17_);
				T16_.dest = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_19);
				unsureAsgnRef((void**) (&(*c).code), (tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*) incrSeqV3((TGenericSeq*)((*c).code), (&NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_)));
				T18_ = (*c).code->Sup.len++;
				genericAssign((void*)(&(*c).code->data[T18_]), (void*)(&T16_), (&NTI_Iclb1njvAJfjjEpCLzUzZg_));
			}
			LA14_: ;
		}
		goto LA3_;
		LA5_: ;
		{
			genCall_gGw9aM0qGTbTYMOOB416xEA_4(c, n);
		}
		LA3_: ;
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 5) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 23):
	{
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 73):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 74):
	{
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 1)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 1)]);
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		genDef_gGw9aM0qGTbTYMOOB416xEA_3(c, (*n).sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 47):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 63) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65):
	{
		genUse_nu33JHavvXsnRHhdnu4oxw(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 92):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 48):
	{
		genIf_gGw9aM0qGTbTYMOOB416xEA_5(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 93):
	{
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*(*n).sons->data[((NI) 0)]).kind)>>3] &(1U<<((NU)((*(*n).sons->data[((NI) 0)]).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 1)) >= (NU)((*(*n).sons->data[((NI) 0)]).sons ? (*(*n).sons->data[((NI) 0)]).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*(*n).sons->data[((NI) 0)]).sons ? (*(*n).sons->data[((NI) 0)]).sons->Sup.len : 0)-1);
		gen_gGw9aM0qGTbTYMOOB416xEA(c, (*(*n).sons->data[((NI) 0)]).sons->data[((NI) 1)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 97):
	{
		genCase_gGw9aM0qGTbTYMOOB416xEA_6(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 96):
	{
		genWhile_gGw9aM0qGTbTYMOOB416xEA_7(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 127):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 112):
	{
		genBlock_gGw9aM0qGTbTYMOOB416xEA_8(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 109):
	{
		genReturn_gGw9aM0qGTbTYMOOB416xEA_9(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 108):
	{
		genRaise_gGw9aM0qGTbTYMOOB416xEA_11(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 110):
	{
		genBreak_gGw9aM0qGTbTYMOOB416xEA_12(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 106):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 154):
	{
		genTry_gGw9aM0qGTbTYMOOB416xEA_13(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 115):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 126):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 68):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 69):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 70):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 41):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 39):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 37):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 160):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 155):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 38):
	{
		{
			tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
			x = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
			{
				NI i;
				NI colontmp_;
				NI i_2;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = safeLen_P89cqdlERShb9alU3iC0yj8w_2ast(n);
				i_2 = ((NI) 0);
				{
					while (1) {
						NI TM_rmUZTUif19aNVU5raHE2xtA_52;
						if (!(i_2 < colontmp_)) goto LA36;
						i = i_2;
						if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
						if ((NU)(i) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(i,((*n).sons ? (*n).sons->Sup.len : 0)-1);
						x = (*n).sons->data[i];
						gen_gGw9aM0qGTbTYMOOB416xEA(c, x);
						TM_rmUZTUif19aNVU5raHE2xtA_52 = addInt(i_2, ((NI) 1));
						i_2 = (NI)(TM_rmUZTUif19aNVU5raHE2xtA_52);
					} LA36: ;
				}
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 91):
	{
		tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* T38_;
		T38_ = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
		T38_ = lastSon_UPSW0jLTX5qJL51YMUAHgw(n);
		gen_gGw9aM0qGTbTYMOOB416xEA(c, T38_);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 114):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 66):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 67):
	{
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 60):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 34):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 33):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 61):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58):
	{
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 1)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 1)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 71):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 72):
	{
		if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
		if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
		gen_gGw9aM0qGTbTYMOOB416xEA(c, (*n).sons->data[((NI) 0)]);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 99):
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 100):
	{
		genVarSection_gGw9aM0qGTbTYMOOB416xEA_14(c, n);
	}
	break;
	case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 105):
	{
		{
			if (!NIM_TRUE) goto LA46_;
			failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_56));
		}
		LA46_: ;
	}
	break;
	default:
	{
	}
	break;
	}
}

N_LIB_PRIVATE N_NIMCALL(tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*, constructCfg_gYr9aUQRxyROXIIqCy8VmDg)(tyObject_TSym_JpsEh5i1AcKChGYbg7aV4w* s, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* body) {
	tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ* result;
	tyObject_Con_eFhkbMY30pSTdER2YWz9cRw c;
	result = (tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*)0;
	nimZeroMem((void*)(&c), sizeof(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw));
	chckNil((void*)(&c));
	nimZeroMem((void*)(&c), sizeof(tyObject_Con_eFhkbMY30pSTdER2YWz9cRw));
	c.code = NIM_NIL;
	c.blocks = NIM_NIL;
	c.owner = s;
	gen_gGw9aM0qGTbTYMOOB416xEA((&c), body);
	genImplicitReturn_dyRemX06FqbT5C9cymmRLtw((&c));
	result = c.code;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*, skipConvDfa_vedgqlRdnLUAAjvLVHCgqg_2)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n) {
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* result;
	result = (tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw*)0;
	result = n;
	{
		while (1) {
			switch ((*result).kind) {
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 66):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 67):
			{
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(((NI) 0)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*result).sons ? (*result).sons->Sup.len : 0)-1);
				result = (*result).sons->data[((NI) 0)];
			}
			break;
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58) ... ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59):
			{
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*result).kind)>>3] &(1U<<((NU)((*result).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(((NI) 1)) >= (NU)((*result).sons ? (*result).sons->Sup.len : 0)) raiseIndexError2(((NI) 1),((*result).sons ? (*result).sons->Sup.len : 0)-1);
				result = (*result).sons->data[((NI) 1)];
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, aliases_X88oJcf8606anlqCac3FtQ)(tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* obj, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* field) {
	NIM_BOOL result;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* n;
	tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* obj_2;
{	result = (NIM_BOOL)0;
	n = field;
	obj_2 = obj;
	{
		while (1) {
			if (!((*obj_2).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59) || (*obj_2).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58) || (*obj_2).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 66) || (*obj_2).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 67))) goto LA2;
			if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*obj_2).kind)>>3] &(1U<<((NU)((*obj_2).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
			if ((NU)(((NI) 0)) >= (NU)((*obj_2).sons ? (*obj_2).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*obj_2).sons ? (*obj_2).sons->Sup.len : 0)-1);
			obj_2 = (*obj_2).sons->data[((NI) 0)];
		} LA2: ;
	}
	{
		while (1) {
			{
				NIM_BOOL T7_;
				T7_ = (NIM_BOOL)0;
				T7_ = sameTrees_5GE9abCZqpois6anfudFhKw(obj_2, n);
				if (!T7_) goto LA8_;
				result = NIM_TRUE;
				goto BeforeRet_;
			}
			LA8_: ;
			switch ((*n).kind) {
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 45):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 46):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 59):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 58):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 66):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 67):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 65):
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 47):
			{
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
				n = (*n).sons->data[((NI) 0)];
			}
			break;
			case ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 42):
			{
				tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* x;
				if (((TM_rmUZTUif19aNVU5raHE2xtA_2[(NU)((*n).kind)>>3] &(1U<<((NU)((*n).kind)&7U)))!=0)) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_3));
				if ((NU)(((NI) 0)) >= (NU)((*n).sons ? (*n).sons->Sup.len : 0)) raiseIndexError2(((NI) 0),((*n).sons ? (*n).sons->Sup.len : 0)-1);
				x = (*n).sons->data[((NI) 0)];
				{
					NIM_BOOL T14_;
					tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ* T16_;
					T14_ = (NIM_BOOL)0;
					T14_ = !(((*x).typ == NIM_NIL));
					if (!(T14_)) goto LA15_;
					T16_ = (tyObject_TType_v9ae2Dpu13OW2ZJ2U9bNMd9cQ*)0;
					T16_ = skipTypes_zsqmUNR5OZrTUna0Y9bdu9bg((*x).typ, IL64(36134350135273744));
					T14_ = ((*T16_).kind == ((tyEnum_TTypeKind_9a3YiReNVD0IJHWFKgXRe9ag) 18));
					LA15_: ;
					if (!T14_) goto LA17_;
					n = x;
				}
				goto LA12_;
				LA17_: ;
				{
					goto LA3;
				}
				LA12_: ;
			}
			break;
			default:
			{
				goto LA3;
			}
			break;
			}
		}
	} LA3: ;
	result = NIM_FALSE;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}

N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, instrTargets_k4hRIKdFoWrNL0gwx3D39cA)(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg ins, tyObject_TNode_bROa11lyF5vxEN9aYNbHmhw* loc) {
	NIM_BOOL result;
	result = (NIM_BOOL)0;
	{
		if (!!(((24 &(1U<<((NU)(ins.kind)&7U)))!=0))) goto LA3_;
		failedAssertImpl_W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_57));
	}
	LA3_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		if (!(((24 &(1U<<((NU)(ins.kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
		T7_ = !((ins.sym == NIM_NIL));
		if (!(T7_)) goto LA8_;
		T7_ = ((*loc).kind == ((tyEnum_TNodeKind_G4E4Gxe7oI2Cm03rkiOzQw) 3));
		LA8_: ;
		if (!T7_) goto LA9_;
		if (!(((24 &(1U<<((NU)(ins.kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
		if (!(((TM_rmUZTUif19aNVU5raHE2xtA_4[(NU)((*loc).kind)>>3] &(1U<<((NU)((*loc).kind)&7U)))!=0))) raiseFieldError(((NimStringDesc*) &TM_rmUZTUif19aNVU5raHE2xtA_5));
		result = (ins.sym == (*loc).sym);
	}
	goto LA5_;
	LA9_: ;
	{
		NIM_BOOL T12_;
		T12_ = (NIM_BOOL)0;
		T12_ = (ins.n == loc);
		if (T12_) goto LA13_;
		T12_ = sameTrees_5GE9abCZqpois6anfudFhKw(ins.n, loc);
		LA13_: ;
		result = T12_;
	}
	LA5_: ;
	{
		NIM_BOOL T18_;
		if (!!(result)) goto LA16_;
		T18_ = (NIM_BOOL)0;
		T18_ = aliases_X88oJcf8606anlqCac3FtQ(ins.n, loc);
		if (T18_) goto LA19_;
		T18_ = aliases_X88oJcf8606anlqCac3FtQ(loc, ins.n);
		LA19_: ;
		result = T18_;
	}
	LA16_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, compiler_dfaDatInit000)(void) {
static TNimNode* TM_rmUZTUif19aNVU5raHE2xtA_6_2[2];
static TNimNode* TM_rmUZTUif19aNVU5raHE2xtA_7_5[5];
NI TM_rmUZTUif19aNVU5raHE2xtA_9;
static char* NIM_CONST TM_rmUZTUif19aNVU5raHE2xtA_8[5] = {
"goto", 
"fork", 
"join", 
"def", 
"use"};
static TNimNode* TM_rmUZTUif19aNVU5raHE2xtA_31_2[2];
static TNimNode TM_rmUZTUif19aNVU5raHE2xtA_0[14];
NTI_Iclb1njvAJfjjEpCLzUzZg_.size = sizeof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg);
NTI_Iclb1njvAJfjjEpCLzUzZg_.kind = 18;
NTI_Iclb1njvAJfjjEpCLzUzZg_.base = 0;
TM_rmUZTUif19aNVU5raHE2xtA_6_2[0] = &TM_rmUZTUif19aNVU5raHE2xtA_0[1];
TM_rmUZTUif19aNVU5raHE2xtA_0[1].kind = 1;
TM_rmUZTUif19aNVU5raHE2xtA_0[1].offset = offsetof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg, n);
TM_rmUZTUif19aNVU5raHE2xtA_0[1].typ = (&NTI_fKfcLzXYiz5jNu3NH3Tv8Q_);
TM_rmUZTUif19aNVU5raHE2xtA_0[1].name = "n";
TM_rmUZTUif19aNVU5raHE2xtA_6_2[1] = &TM_rmUZTUif19aNVU5raHE2xtA_0[2];
NTI_kmjEwko0gQNypI4MTa9chwQ_.size = sizeof(tyEnum_InstrKind_kmjEwko0gQNypI4MTa9chwQ);
NTI_kmjEwko0gQNypI4MTa9chwQ_.kind = 14;
NTI_kmjEwko0gQNypI4MTa9chwQ_.base = 0;
NTI_kmjEwko0gQNypI4MTa9chwQ_.flags = 3;
for (TM_rmUZTUif19aNVU5raHE2xtA_9 = 0; TM_rmUZTUif19aNVU5raHE2xtA_9 < 5; TM_rmUZTUif19aNVU5raHE2xtA_9++) {
TM_rmUZTUif19aNVU5raHE2xtA_0[TM_rmUZTUif19aNVU5raHE2xtA_9+3].kind = 1;
TM_rmUZTUif19aNVU5raHE2xtA_0[TM_rmUZTUif19aNVU5raHE2xtA_9+3].offset = TM_rmUZTUif19aNVU5raHE2xtA_9;
TM_rmUZTUif19aNVU5raHE2xtA_0[TM_rmUZTUif19aNVU5raHE2xtA_9+3].name = TM_rmUZTUif19aNVU5raHE2xtA_8[TM_rmUZTUif19aNVU5raHE2xtA_9];
TM_rmUZTUif19aNVU5raHE2xtA_7_5[TM_rmUZTUif19aNVU5raHE2xtA_9] = &TM_rmUZTUif19aNVU5raHE2xtA_0[TM_rmUZTUif19aNVU5raHE2xtA_9+3];
}
TM_rmUZTUif19aNVU5raHE2xtA_0[8].len = 5; TM_rmUZTUif19aNVU5raHE2xtA_0[8].kind = 2; TM_rmUZTUif19aNVU5raHE2xtA_0[8].sons = &TM_rmUZTUif19aNVU5raHE2xtA_7_5[0];
NTI_kmjEwko0gQNypI4MTa9chwQ_.node = &TM_rmUZTUif19aNVU5raHE2xtA_0[8];
TM_rmUZTUif19aNVU5raHE2xtA_0[2].kind = 3;
TM_rmUZTUif19aNVU5raHE2xtA_0[2].offset = offsetof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg, kind);
TM_rmUZTUif19aNVU5raHE2xtA_0[2].typ = (&NTI_kmjEwko0gQNypI4MTa9chwQ_);
TM_rmUZTUif19aNVU5raHE2xtA_0[2].name = "kind";
TM_rmUZTUif19aNVU5raHE2xtA_0[2].sons = &NimDT__Iclb1njvAJfjjEpCLzUzZg_kind[0];
TM_rmUZTUif19aNVU5raHE2xtA_0[2].len = 5;
TM_rmUZTUif19aNVU5raHE2xtA_0[9].kind = 1;
TM_rmUZTUif19aNVU5raHE2xtA_0[9].offset = offsetof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg, sym);
TM_rmUZTUif19aNVU5raHE2xtA_0[9].typ = (&NTI_K9bspPztfoWajecnwjyHuYQ_);
TM_rmUZTUif19aNVU5raHE2xtA_0[9].name = "sym";
NimDT__Iclb1njvAJfjjEpCLzUzZg_kind[3] = &TM_rmUZTUif19aNVU5raHE2xtA_0[9];
NimDT__Iclb1njvAJfjjEpCLzUzZg_kind[4] = &TM_rmUZTUif19aNVU5raHE2xtA_0[9];
TM_rmUZTUif19aNVU5raHE2xtA_0[10].kind = 1;
TM_rmUZTUif19aNVU5raHE2xtA_0[10].offset = offsetof(tyObject_Instr_Iclb1njvAJfjjEpCLzUzZg, dest);
TM_rmUZTUif19aNVU5raHE2xtA_0[10].typ = (&NTI_rR5Bzr1D5krxoo1NcNyeMA_);
TM_rmUZTUif19aNVU5raHE2xtA_0[10].name = "dest";
NimDT__Iclb1njvAJfjjEpCLzUzZg_kind[0] = &TM_rmUZTUif19aNVU5raHE2xtA_0[10];
NimDT__Iclb1njvAJfjjEpCLzUzZg_kind[1] = &TM_rmUZTUif19aNVU5raHE2xtA_0[10];
NimDT__Iclb1njvAJfjjEpCLzUzZg_kind[2] = &TM_rmUZTUif19aNVU5raHE2xtA_0[10];
TM_rmUZTUif19aNVU5raHE2xtA_0[0].len = 2; TM_rmUZTUif19aNVU5raHE2xtA_0[0].kind = 2; TM_rmUZTUif19aNVU5raHE2xtA_0[0].sons = &TM_rmUZTUif19aNVU5raHE2xtA_6_2[0];
NTI_Iclb1njvAJfjjEpCLzUzZg_.node = &TM_rmUZTUif19aNVU5raHE2xtA_0[0];
NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_.size = sizeof(tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ*);
NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_.kind = 24;
NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_.base = (&NTI_Iclb1njvAJfjjEpCLzUzZg_);
NTI_hj4BvueOlKB8Z1Qw2ZU4nQ_.marker = Marker_tySequence_hj4BvueOlKB8Z1Qw2ZU4nQ;
NTI_J29b9b9cJiD9aK19cdoA7IwWiyA_.size = sizeof(tyObject_TBlock_J29b9b9cJiD9aK19cdoA7IwWiyA);
NTI_J29b9b9cJiD9aK19cdoA7IwWiyA_.kind = 18;
NTI_J29b9b9cJiD9aK19cdoA7IwWiyA_.base = 0;
TM_rmUZTUif19aNVU5raHE2xtA_31_2[0] = &TM_rmUZTUif19aNVU5raHE2xtA_0[12];
TM_rmUZTUif19aNVU5raHE2xtA_0[12].kind = 1;
TM_rmUZTUif19aNVU5raHE2xtA_0[12].offset = offsetof(tyObject_TBlock_J29b9b9cJiD9aK19cdoA7IwWiyA, label);
TM_rmUZTUif19aNVU5raHE2xtA_0[12].typ = (&NTI_K9bspPztfoWajecnwjyHuYQ_);
TM_rmUZTUif19aNVU5raHE2xtA_0[12].name = "label";
TM_rmUZTUif19aNVU5raHE2xtA_31_2[1] = &TM_rmUZTUif19aNVU5raHE2xtA_0[13];
TM_rmUZTUif19aNVU5raHE2xtA_0[13].kind = 1;
TM_rmUZTUif19aNVU5raHE2xtA_0[13].offset = offsetof(tyObject_TBlock_J29b9b9cJiD9aK19cdoA7IwWiyA, fixups);
TM_rmUZTUif19aNVU5raHE2xtA_0[13].typ = (&NTI_qwqHTkRvwhrRyENtudHQ7g_);
TM_rmUZTUif19aNVU5raHE2xtA_0[13].name = "fixups";
TM_rmUZTUif19aNVU5raHE2xtA_0[11].len = 2; TM_rmUZTUif19aNVU5raHE2xtA_0[11].kind = 2; TM_rmUZTUif19aNVU5raHE2xtA_0[11].sons = &TM_rmUZTUif19aNVU5raHE2xtA_31_2[0];
NTI_J29b9b9cJiD9aK19cdoA7IwWiyA_.node = &TM_rmUZTUif19aNVU5raHE2xtA_0[11];
NTI_bZP29c0SHT9aMkbSl4EFvgCg_.size = sizeof(tySequence_bZP29c0SHT9aMkbSl4EFvgCg*);
NTI_bZP29c0SHT9aMkbSl4EFvgCg_.kind = 24;
NTI_bZP29c0SHT9aMkbSl4EFvgCg_.base = (&NTI_J29b9b9cJiD9aK19cdoA7IwWiyA_);
NTI_bZP29c0SHT9aMkbSl4EFvgCg_.marker = Marker_tySequence_bZP29c0SHT9aMkbSl4EFvgCg;
}

