/* Generated by Nim Compiler v2.2.10 */
#define NIM_INTBITS 32

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
typedef struct tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ;
typedef struct tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ;
typedef struct tySequence__9ahcSjIErJohSBBFLwuF56Q tySequence__9ahcSjIErJohSBBFLwuF56Q;
typedef struct tySequence__9ahcSjIErJohSBBFLwuF56Q_Content tySequence__9ahcSjIErJohSBBFLwuF56Q_Content;
typedef struct tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg;
typedef struct tyObject_Con__HBl6o6u9bUIeEH0H1Fm28PQ tyObject_Con__HBl6o6u9bUIeEH0H1Fm28PQ;
typedef struct tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg;
typedef struct tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
typedef struct tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA;
typedef struct tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA;
typedef struct tyObject_TLoc__KvQVlvKb6mbV567NQ0hMOw tyObject_TLoc__KvQVlvKb6mbV567NQ0hMOw;
typedef struct tyObject_TLib__sVuuRvQkiYNOUiPRZhmZig tyObject_TLib__sVuuRvQkiYNOUiPRZhmZig;
typedef struct tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA;
typedef struct tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA;
typedef struct tySequence__ZeWVlH6DqG79b1pTDhrrUYA tySequence__ZeWVlH6DqG79b1pTDhrrUYA;
typedef struct tySequence__ZeWVlH6DqG79b1pTDhrrUYA_Content tySequence__ZeWVlH6DqG79b1pTDhrrUYA_Content;
typedef struct tyObject_RefHeader__GDnGTjNyvwISJbkIvAst3A tyObject_RefHeader__GDnGTjNyvwISJbkIvAst3A;
typedef struct tySequence__d8ZV4IMgHt9biik9cS9a0hrmg tySequence__d8ZV4IMgHt9biik9cS9a0hrmg;
typedef struct tySequence__d8ZV4IMgHt9biik9cS9a0hrmg_Content tySequence__d8ZV4IMgHt9biik9cS9a0hrmg_Content;
struct tySequence__9ahcSjIErJohSBBFLwuF56Q {
  NI len; tySequence__9ahcSjIErJohSBBFLwuF56Q_Content* p;
};
typedef NU8 tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw;
struct tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ {
	tySequence__9ahcSjIErJohSBBFLwuF56Q wasMovedLocs;
	tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw kind;
	NIM_BOOL hasReturn;
	NIM_BOOL hasBreak;
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* label;
	tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* parent;
	tySequence__9ahcSjIErJohSBBFLwuF56Q symToDel;
};
struct tyObject_Con__HBl6o6u9bUIeEH0H1Fm28PQ {
	NIM_BOOL somethingTodo;
	NI inFinally;
};
struct tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA {
	NU16 line;
	NI16 col;
	NI32 fileIndex;
};
typedef NU32 tySet_tyEnum_TNodeFlag__3UjGgL9bLM4RXBnoZJs9cviw;
struct NimStrPayload {
	NI cap;
	NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
	NI len;
	NimStrPayload* p;
};
struct tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ {
	tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* typField;
	tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA info;
	tySet_tyEnum_TNodeFlag__3UjGgL9bLM4RXBnoZJs9cviw flags;
	tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw kind;
union{
	struct {
	NI64 intVal;
} _kind_1;
	struct {
	NF floatVal;
} _kind_2;
	struct {
	NimStringV2 strVal;
} _kind_3;
	struct {
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* sym;
} _kind_4;
	struct {
	tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA* ident;
} _kind_5;
	struct {
	tySequence__9ahcSjIErJohSBBFLwuF56Q sons;
} _kind_6;
};
};
struct tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA {
	NI32 module;
	NI32 item;
};
typedef NU8 tyEnum_TSymKind__9a75lHd9cV25XwN4jXXBmM0Q;
typedef NU16 tyEnum_TMagic__I3BbtzbLAKAfOym58MkGAg;
typedef NU64 tySet_tyEnum_TSymFlag__Ii9cPbwXR8ePKVRFOdTKpDg;
typedef NU32 tySet_tyEnum_TOption__LEwWf0yAgZkZx5Got2wGSQ;
typedef NU8 tyEnum_TLocKind__4f5UmCRM8alrCgj32FqIRQ;
typedef NU8 tyEnum_TStorageLoc__f19b6ZkRyh7BNPxlyjRbEGg;
typedef NU16 tySet_tyEnum_TLocFlag__Df76pxukl21zlyRFq9aa0Bg;
struct tyObject_TLoc__KvQVlvKb6mbV567NQ0hMOw {
	tyEnum_TLocKind__4f5UmCRM8alrCgj32FqIRQ k;
	tyEnum_TStorageLoc__f19b6ZkRyh7BNPxlyjRbEGg storage;
	tySet_tyEnum_TLocFlag__Df76pxukl21zlyRFq9aa0Bg flags;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* lode;
	NimStringV2 snippet;
};
struct tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg {
	tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA itemId;
	tyEnum_TSymKind__9a75lHd9cV25XwN4jXXBmM0Q kind;
union{
	struct {
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* gcUnsafetyReason;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* transformedBody;
} _kind_1;
	struct {
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* guard;
	NI bitsize;
	NI alignment;
} _kind_2;
};
	tyEnum_TMagic__I3BbtzbLAKAfOym58MkGAg magic;
	tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* typ;
	tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA* name;
	tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA info;
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* ownerField;
	tySet_tyEnum_TSymFlag__Ii9cPbwXR8ePKVRFOdTKpDg flags;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* ast;
	tySet_tyEnum_TOption__LEwWf0yAgZkZx5Got2wGSQ options;
	NI position;
	NI32 offset;
	NI32 disamb;
	tyObject_TLoc__KvQVlvKb6mbV567NQ0hMOw loc;
	tyObject_TLib__sVuuRvQkiYNOUiPRZhmZig* annex;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* constraint;
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* instantiatedFrom;
};
struct tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA {
	NI id;
	NimStringV2 s;
	tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA* next;
	NI h;
};
typedef NU8 tyEnum_TNodeFlag__3UjGgL9bLM4RXBnoZJs9cviw;
struct tySequence__ZeWVlH6DqG79b1pTDhrrUYA {
  NI len; tySequence__ZeWVlH6DqG79b1pTDhrrUYA_Content* p;
};
typedef NI tyArray__k7D0lwfLmYccbQxUd49bbcQ[34];
struct tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA {
	NI elems;
	NI counter;
	NI max;
	tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA* head;
	tySequence__ZeWVlH6DqG79b1pTDhrrUYA data;
	tyArray__k7D0lwfLmYccbQxUd49bbcQ a;
};
typedef NU tyArray__yYbpDJlxVAahcZb4EP3s9cA[16];
struct tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA {
	tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA* next;
	NI key;
	tyArray__yYbpDJlxVAahcZb4EP3s9cA bits;
};
struct tyObject_RefHeader__GDnGTjNyvwISJbkIvAst3A {
	NI rc;
	NI rootIdx;
};
typedef NU8 tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg;
typedef NU8 tyEnum_TCallingConvention__MvGn9cvx9bNYQKo7Hhd5GM9cQ;
typedef NU64 tySet_tyEnum_TTypeFlag__HJaExo9c84N85e9br9anJmV1A;
struct tySequence__d8ZV4IMgHt9biik9cS9a0hrmg {
  NI len; tySequence__d8ZV4IMgHt9biik9cS9a0hrmg_Content* p;
};
struct tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg {
	tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA itemId;
	tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg kind;
	tyEnum_TCallingConvention__MvGn9cvx9bNYQKo7Hhd5GM9cQ callConv;
	tySet_tyEnum_TTypeFlag__HJaExo9c84N85e9br9anJmV1A flags;
	tySequence__d8ZV4IMgHt9biik9cS9a0hrmg sons;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n;
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* ownerField;
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* sym;
	NI64 size;
	NI16 align;
	NI16 paddingAtEnd;
	tyObject_TLoc__KvQVlvKb6mbV567NQ0hMOw loc;
	tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* typeInst;
	tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA uniqueId;
};
typedef NU8 tySet_tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg[9];
struct tySequence__9ahcSjIErJohSBBFLwuF56Q_Content { NI cap; tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* data[SEQ_DECL_SIZE]; };
struct tySequence__ZeWVlH6DqG79b1pTDhrrUYA_Content { NI cap; tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA* data[SEQ_DECL_SIZE]; };
struct tySequence__d8ZV4IMgHt9biik9cS9a0hrmg_Content { NI cap; tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* data[SEQ_DECL_SIZE]; };
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1);
static N_INLINE(void, nimSetMem__system_u2172)(void* a_p0, int v_p1, NI size_p2);
N_LIB_PRIVATE N_NIMCALL(void, analyse__optimizer_u237)(tyObject_Con__HBl6o6u9bUIeEH0H1Fm28PQ* c_p0, tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* b_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, nsuNormalize)(NimStringV2 s_p0);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringV2 a_p0, NimStringV2 b_p1);
static N_INLINE(NIM_BOOL, equalMem__system_u1750)(void* a_p0, void* b_p1, NI size_p2);
static N_INLINE(int, nimCmpMem)(void* a_p0, void* b_p1, NI size_p2);
N_LIB_PRIVATE N_NIMCALL(void, add__ast_u3225)(tySequence__9ahcSjIErJohSBBFLwuF56Q* x_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* y_p1);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, eqdup___ast_u3258)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* src_p0);
N_LIB_PRIVATE N_NIMCALL(void, wasMovedDestroyPair__optimizer_u212)(tyObject_Con__HBl6o6u9bUIeEH0H1Fm28PQ* c_p0, tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* b_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* d_p2);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, exprStructuralEquivalent__trees_u63)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* a_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* b_p1, NIM_BOOL strictSymEquality_p2);
static N_INLINE(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, skipHiddenAddr__ast_u7634)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___ast_u3255)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** dest_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* src_p1);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, del__optimizer_u173)(tySequence__9ahcSjIErJohSBBFLwuF56Q* x_p0, NI i_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_u3252)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___system_u2691)(NimStringV2 dest_p0);
static N_INLINE(NI, len__ast_u3190)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, canRaise__ast_u7516)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* fn_p0);
N_LIB_PRIVATE N_NIMCALL(void, returnStmt__optimizer_u106)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* b_p0);
N_LIB_PRIVATE N_NIMCALL(void, setLen__ast_u3718)(tySequence__9ahcSjIErJohSBBFLwuF56Q* s_p0, NI newlen_p1);
N_LIB_PRIVATE N_NIMCALL(void, invalidateWasMoved__optimizer_u19)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* x_p1);
N_LIB_PRIVATE N_NIMCALL(void*, newSeqPayload)(NI cap_p0, NI elemSize_p1, NI elemAlign_p2);
N_LIB_PRIVATE N_NIMCALL(void, nestedBlock__optimizer_u22)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* parent_p0, tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw kind_p1, tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* Result);
static N_INLINE(void, mergeBasicBlockInfo__optimizer_u117)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* parent_p0, tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* this_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___ast_u3699)(tySequence__9ahcSjIErJohSBBFLwuF56Q* dest_p0, tySequence__9ahcSjIErJohSBBFLwuF56Q src_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___ast_u3705)(tySequence__9ahcSjIErJohSBBFLwuF56Q* dest_p0, tySequence__9ahcSjIErJohSBBFLwuF56Q src_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___ast_u3693)(tySequence__9ahcSjIErJohSBBFLwuF56Q* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, intersect__optimizer_u160)(tySequence__9ahcSjIErJohSBBFLwuF56Q* summary_p0, tySequence__9ahcSjIErJohSBBFLwuF56Q branch_p1);
static N_INLINE(void, initIntSet__pureZcollectionsZintsets_u598)(tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA* Result);
N_LIB_PRIVATE N_NIMCALL(void, initPackedSet__pureZcollectionsZintsets_u37)(tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA* Result);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, wasMovedTarget__optimizer_u131)(tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA* matches_p0, tySequence__9ahcSjIErJohSBBFLwuF56Q branch_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* moveTarget_p2);
N_LIB_PRIVATE N_NIMCALL(void, incl__pureZcollectionsZintsets_u366)(tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA* s_p0, NI key_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___pureZcollectionsZintsets_u45)(tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA** dest_p0);
static N_INLINE(NI, pluspercent___system_u785)(NI x_p0, NI y_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___pureZcollectionsZintsets_u51)(tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA** dest_p0, tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA* src_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZcollectionsZintsets_u48)(tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___pureZcollectionsZintsets_u230)(tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___optimizer_u52)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_u3696)(tySequence__9ahcSjIErJohSBBFLwuF56Q dest_p0);
static N_INLINE(NIM_BOOL, nimDecRefIsLastDyn)(void* p_p0);
static N_INLINE(NI, minuspercent___system_u805)(NI x_p0, NI y_p1);
N_LIB_PRIVATE N_NIMCALL(void, unregisterCycle__system_u3128)(tyObject_RefHeader__GDnGTjNyvwISJbkIvAst3A* s_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_u3469)(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, nimRawDispose)(void* p_p0, NI alignment_p1);
N_LIB_PRIVATE N_NIMCALL(tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg*, skipTypes__ast_u5379)(tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* t_p0, tySet_tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg kinds_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_u3378)(tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___ast_u4577)(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg** dest_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* src_p1);
N_LIB_PRIVATE N_NIMCALL(void, breakStmt__optimizer_u82)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* b_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1);
static N_INLINE(NI, safeLen__ast_u3197)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, shallowCopy__ast_u6876)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* src_p0);
N_LIB_PRIVATE N_NIMCALL(void, opt__optimizer_u377)(tyObject_Con__HBl6o6u9bUIeEH0H1Fm28PQ c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* parent_p2, NI parentPos_p3);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___ast_u3261)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** dest_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* src_p1);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, newNodeI__ast_u4091)(tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw kind_p0, tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA info_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___ast_u3249)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** dest_p0);
static const struct {
  NI cap; NIM_CHAR data[9+1];
} TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_2 = { 9 | NIM_STRLIT_FLAG, "=wasmoved" };
static const NimStringV2 TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_3 = {9, (NimStrPayload*)&TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_2};
static const struct {
  NI cap; NIM_CHAR data[8+1];
} TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_4 = { 8 | NIM_STRLIT_FLAG, "=destroy" };
static const NimStringV2 TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_5 = {8, (NimStrPayload*)&TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_4};
static const struct {
  NI cap; NIM_CHAR data[5+1];
} TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_6 = { 5 | NIM_STRLIT_FLAG, "=sink" };
static const NimStringV2 TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_7 = {5, (NimStrPayload*)&TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_6};
static NIM_CONST tySet_tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_8 = {
0x10, 0xa8, 0x90, 0x00, 0x00, 0x60, 0x80, 0x00,
0x00}
;
extern NIM_BOOL nimInErrorMode__system_u4144;
static N_INLINE(void, nimSetMem__system_u2172)(void* a_p0, int v_p1, NI size_p2) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
	nimSetMem__system_u2172(p_p0, ((int)0), size_p1);
}
static N_INLINE(int, nimCmpMem)(void* a_p0, void* b_p1, NI size_p2) {
	int result;
	result = memcmp(a_p0, b_p1, ((size_t) (size_p2)));
	return result;
}
static N_INLINE(NIM_BOOL, equalMem__system_u1750)(void* a_p0, void* b_p1, NI size_p2) {
	NIM_BOOL result;
	int T1_;
	T1_ = (int)0;
	T1_ = nimCmpMem(a_p0, b_p1, size_p2);
	result = (T1_ == ((NI32)0));
	return result;
}
static N_INLINE(NIM_BOOL, eqStrings)(NimStringV2 a_p0, NimStringV2 b_p1) {
	NIM_BOOL result;
	NI alen_1;
	NI blen_1;
{	result = NIM_FALSE;
	alen_1 = a_p0.len;
	blen_1 = b_p1.len;
	{
		if (!(alen_1 == blen_1)) goto LA3_;
		{
			if (!(alen_1 == ((NI)0))) goto LA7_;
			result = NIM_TRUE;
			goto BeforeRet_;
		}
LA7_: ;
		result = equalMem__system_u1750(((void*) ((&a_p0.p->data[((NI)0)]))), ((void*) ((&b_p1.p->data[((NI)0)]))), (alen_1));
		goto BeforeRet_;
	}
LA3_: ;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
	NIM_BOOL* result;
	result = (&nimInErrorMode__system_u4144);
	return result;
}
static N_INLINE(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, skipHiddenAddr__ast_u7634)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0) {
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* result;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = NIM_NIL;
	T1_ = NIM_NIL;
	{
		if (!((*n_p0).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)64))) goto LA4_;
		eqcopy___ast_u3255(&result, (*n_p0)._kind_6.sons.p->data[((NI)0)]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	goto LA2_;
LA4_: ;
	{
		eqcopy___ast_u3255(&result, n_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA2_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, wasMovedDestroyPair__optimizer_u212)(tyObject_Con__HBl6o6u9bUIeEH0H1Fm28PQ* c_p0, tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* b_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* d_p2) {
	NI i_1;
NIM_BOOL oldNimErrFin4_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	i_1 = ((NI)0);
	{
		while (1) {
			NI T3_;
			tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD_;
			tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD__2;
			T3_ = (*b_p1).wasMovedLocs.len;
			if (!(i_1 < T3_)) goto LA2;
			colontmpD_ = NIM_NIL;
			colontmpD__2 = NIM_NIL;
			{
				NIM_BOOL T7_;
				colontmpD_ = skipHiddenAddr__ast_u7634((*(*b_p1).wasMovedLocs.p->data[i_1])._kind_6.sons.p->data[((NI)1)]);
				if (NIM_UNLIKELY(*nimErr_)) goto LA4_;
				colontmpD__2 = skipHiddenAddr__ast_u7634((*d_p2)._kind_6.sons.p->data[((NI)1)]);
				if (NIM_UNLIKELY(*nimErr_)) goto LA4_;
				T7_ = (NIM_BOOL)0;
				T7_ = exprStructuralEquivalent__trees_u63(colontmpD_, colontmpD__2, NIM_TRUE);
				if (NIM_UNLIKELY(*nimErr_)) goto LA4_;
				if (!T7_) goto LA8_;
				(*(*b_p1).wasMovedLocs.p->data[i_1]).flags |= ((NU32)1)<<(((((tyEnum_TNodeFlag__3UjGgL9bLM4RXBnoZJs9cviw)0))) & 31);
				(*c_p0).somethingTodo = NIM_TRUE;
				(*d_p2).flags |= ((NU32)1)<<(((((tyEnum_TNodeFlag__3UjGgL9bLM4RXBnoZJs9cviw)0))) & 31);
				del__optimizer_u173((&(*b_p1).wasMovedLocs), (i_1));
			}
			goto LA5_;
LA8_: ;
			{
				i_1 += ((NI)1);
			}
LA5_: ;
			{
				LA4_:;
			}
			{
				oldNimErrFin4_ = *nimErr_; *nimErr_ = NIM_FALSE;
				eqdestroy___ast_u3252(colontmpD__2);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				eqdestroy___ast_u3252(colontmpD_);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				*nimErr_ = oldNimErrFin4_;
			}
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		} LA2: ;
	}
	}BeforeRet_: ;
}
static N_INLINE(NI, len__ast_u3190)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0) {
	NI result;
	NI T1_;
	T1_ = (*n_p0)._kind_6.sons.len;
	result = T1_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, returnStmt__optimizer_u106)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* b_p0) {
	tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* it_1;
	(*b_p0).hasReturn = NIM_TRUE;
	it_1 = b_p0;
	{
		while (1) {
			if (!!((it_1 == ((tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ*) NIM_NIL)))) goto LA2;
			setLen__ast_u3718((&(*it_1).wasMovedLocs), ((NI)0));
			it_1 = (*it_1).parent;
		} LA2: ;
	}
}
N_LIB_PRIVATE N_NIMCALL(void, invalidateWasMoved__optimizer_u19)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* x_p1) {
	NI i_1;
NIM_BOOL oldNimErrFin4_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	i_1 = ((NI)0);
	{
		while (1) {
			NI T3_;
			tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD_;
			T3_ = (*c_p0).wasMovedLocs.len;
			if (!(i_1 < T3_)) goto LA2;
			colontmpD_ = NIM_NIL;
			{
				NIM_BOOL T7_;
				colontmpD_ = skipHiddenAddr__ast_u7634((*(*c_p0).wasMovedLocs.p->data[i_1])._kind_6.sons.p->data[((NI)1)]);
				if (NIM_UNLIKELY(*nimErr_)) goto LA4_;
				T7_ = (NIM_BOOL)0;
				T7_ = exprStructuralEquivalent__trees_u63(colontmpD_, x_p1, NIM_TRUE);
				if (NIM_UNLIKELY(*nimErr_)) goto LA4_;
				if (!T7_) goto LA8_;
				del__optimizer_u173((&(*c_p0).wasMovedLocs), (i_1));
			}
			goto LA5_;
LA8_: ;
			{
				i_1 += ((NI)1);
			}
LA5_: ;
			{
				LA4_:;
			}
			{
				oldNimErrFin4_ = *nimErr_; *nimErr_ = NIM_FALSE;
				eqdestroy___ast_u3252(colontmpD_);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				*nimErr_ = oldNimErrFin4_;
			}
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		} LA2: ;
	}
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, nestedBlock__optimizer_u22)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* parent_p0, tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw kind_p1, tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* Result) {
	nimZeroMem((void*)Result, sizeof(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ));
	(*Result).wasMovedLocs.len = 0; (*Result).wasMovedLocs.p = (tySequence__9ahcSjIErJohSBBFLwuF56Q_Content*) newSeqPayload(0, sizeof(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*), NIM_ALIGNOF(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*));
	(*Result).kind = kind_p1;
	(*Result).hasReturn = NIM_FALSE;
	(*Result).hasBreak = NIM_FALSE;
	(*Result).label = ((tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg*) NIM_NIL);
	(*Result).parent = parent_p0;
}
static N_INLINE(void, mergeBasicBlockInfo__optimizer_u117)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* parent_p0, tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* this_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	{
		if (!(*this_p1).hasReturn) goto LA3_;
		setLen__ast_u3718((&(*parent_p0).wasMovedLocs), ((NI)0));
		(*parent_p0).hasReturn = NIM_TRUE;
	}
	goto LA1_;
LA3_: ;
	{
		NI T6_;
		T6_ = (*this_p1).symToDel.len;
		if (!(((NI)0) < T6_)) goto LA7_;
		eqcopy___ast_u3699((&(*parent_p0).symToDel), (*this_p1).symToDel);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		{
			tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** i_1;
			NI i_2;
			NI L_1;
			NI T10_;
			i_1 = (tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ**)0;
			i_2 = ((NI)0);
			T10_ = (*this_p1).symToDel.len;
			L_1 = T10_;
			{
				while (1) {
					if (!(i_2 < L_1)) goto LA12;
					i_1 = &(*this_p1).symToDel.p->data[i_2];
					invalidateWasMoved__optimizer_u19(parent_p0, (*i_1));
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					i_2 += ((NI)1);
				} LA12: ;
			}
		}
	}
	goto LA1_;
LA7_: ;
LA1_: ;
	}BeforeRet_: ;
}
static N_INLINE(void, initIntSet__pureZcollectionsZintsets_u598)(tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA* Result) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)Result, sizeof(tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA));
	initPackedSet__pureZcollectionsZintsets_u37(Result);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, wasMovedTarget__optimizer_u131)(tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA* matches_p0, tySequence__9ahcSjIErJohSBBFLwuF56Q branch_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* moveTarget_p2) {
	NIM_BOOL result;
NIM_BOOL oldNimErrFin5_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = NIM_FALSE;
	{
		NI i_1;
		NI colontmp_;
		NI T2_;
		NI i_2;
		i_1 = (NI)0;
		colontmp_ = (NI)0;
		T2_ = branch_p1.len;
		colontmp_ = T2_;
		i_2 = ((NI)0);
		{
			while (1) {
				tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD_;
				if (!(i_2 < colontmp_)) goto LA4;
				colontmpD_ = NIM_NIL;
				i_1 = i_2;
				{
					NIM_BOOL T8_;
					colontmpD_ = skipHiddenAddr__ast_u7634((*branch_p1.p->data[i_1])._kind_6.sons.p->data[((NI)1)]);
					if (NIM_UNLIKELY(*nimErr_)) goto LA5_;
					T8_ = (NIM_BOOL)0;
					T8_ = exprStructuralEquivalent__trees_u63(colontmpD_, moveTarget_p2, NIM_TRUE);
					if (NIM_UNLIKELY(*nimErr_)) goto LA5_;
					if (!T8_) goto LA9_;
					result = NIM_TRUE;
					incl__pureZcollectionsZintsets_u366(matches_p0, i_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA5_;
				}
LA9_: ;
				i_2 += ((NI)1);
				{
					LA5_:;
				}
				{
					oldNimErrFin5_ = *nimErr_; *nimErr_ = NIM_FALSE;
					eqdestroy___ast_u3252(colontmpD_);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					*nimErr_ = oldNimErrFin5_;
				}
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			} LA4: ;
		}
	}
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, pluspercent___system_u785)(NI x_p0, NI y_p1) {
	NI result;
	result = ((NI) ((NU)((NU32)(((NU) (x_p0))) + (NU32)(((NU) (y_p1))))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, intersect__optimizer_u160)(tySequence__9ahcSjIErJohSBBFLwuF56Q* summary_p0, tySequence__9ahcSjIErJohSBBFLwuF56Q branch_p1) {
	tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA matches_1;
	NI i_1;
NIM_BOOL oldNimErrFin5_;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&matches_1), sizeof(tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA));
	i_1 = ((NI)0);
	initIntSet__pureZcollectionsZintsets_u598((&matches_1));
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	{
		while (1) {
			NI T4_;
			tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD_;
			T4_ = (*summary_p0).len;
			if (!(i_1 < T4_)) goto LA3;
			colontmpD_ = NIM_NIL;
			{
				NIM_BOOL T8_;
				colontmpD_ = skipHiddenAddr__ast_u7634((*(*summary_p0).p->data[i_1])._kind_6.sons.p->data[((NI)1)]);
				if (NIM_UNLIKELY(*nimErr_)) goto LA5_;
				T8_ = (NIM_BOOL)0;
				T8_ = wasMovedTarget__optimizer_u131((&matches_1), branch_p1, colontmpD_);
				if (NIM_UNLIKELY(*nimErr_)) goto LA5_;
				if (!T8_) goto LA9_;
				i_1 += ((NI)1);
			}
			goto LA6_;
LA9_: ;
			{
				del__optimizer_u173(summary_p0, (i_1));
			}
LA6_: ;
			{
				LA5_:;
			}
			{
				oldNimErrFin5_ = *nimErr_; *nimErr_ = NIM_FALSE;
				eqdestroy___ast_u3252(colontmpD_);
				if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
				*nimErr_ = oldNimErrFin5_;
			}
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		} LA3: ;
	}
	{
		NI m_1;
		m_1 = (NI)0;
		{
			if (!(matches_1.elems <= ((NI)34))) goto LA17_;
			{
				NI i_2;
				NI i_3;
				i_2 = (NI)0;
				i_3 = ((NI)0);
				{
					while (1) {
						tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD__2;
						if (!(i_3 < matches_1.elems)) goto LA21;
						i_2 = i_3;
						m_1 = matches_1.a[(i_2)- 0];
						colontmpD__2 = eqdup___ast_u3258(branch_p1.p->data[m_1]);
						if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
						add__ast_u3225((&(*summary_p0)), colontmpD__2);
						i_3 += ((NI)1);
					} LA21: ;
				}
			}
		}
		goto LA15_;
LA17_: ;
		{
			tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA* r_1;
			r_1 = NIM_NIL;
			r_1 = matches_1.head;
			eqwasMoved___pureZcollectionsZintsets_u45(&matches_1.head);
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
			{
				while (1) {
					NI i_4;
					if (!!((r_1 == ((tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA*) NIM_NIL)))) goto LA24;
					i_4 = ((NI)0);
					{
						while (1) {
							NU w_1;
							NI j_1;
							if (!(i_4 <= ((NI)15))) goto LA26;
							w_1 = (*r_1).bits[(i_4)- 0];
							j_1 = ((NI)0);
							{
								while (1) {
									if (!!((w_1 == ((NU)0)))) goto LA28;
									{
										tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD__3;
										NI T33_;
										if (!!(((NU)(w_1 & ((NU)1)) == ((NU)0)))) goto LA31_;
										T33_ = (NI)0;
										T33_ = pluspercent___system_u785((NI)((NU32)(i_4) << (NU32)(((NI)5) & (32 - 1))), j_1);
										m_1 = (NI)((NI)((NU32)((*r_1).key) << (NU32)(((NI)9) & (32 - 1))) | T33_);
										colontmpD__3 = eqdup___ast_u3258(branch_p1.p->data[m_1]);
										if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
										add__ast_u3225((&(*summary_p0)), colontmpD__3);
									}
LA31_: ;
									j_1 += ((NI)1);
									w_1 = (NU)((NU32)(w_1) >> (NU32)(((NI)1) & (32 - 1)));
								} LA28: ;
							}
							i_4 += ((NI)1);
						} LA26: ;
					}
					eqcopy___pureZcollectionsZintsets_u51(&r_1, (*r_1).next);
					if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
				} LA24: ;
			}
			eqdestroy___pureZcollectionsZintsets_u48(r_1);
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		}
LA15_: ;
	}
	{
		LA1_:;
	}
	{
		oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
		eqdestroy___pureZcollectionsZintsets_u230((&matches_1));
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		*nimErr_ = oldNimErrFin1_;
	}
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
static N_INLINE(NI, minuspercent___system_u805)(NI x_p0, NI y_p1) {
	NI result;
	result = ((NI) ((NU)((NU32)(((NU) (x_p0))) - (NU32)(((NU) (y_p1))))));
	return result;
}
static N_INLINE(NIM_BOOL, nimDecRefIsLastDyn)(void* p_p0) {
	NIM_BOOL result;
	result = NIM_FALSE;
	{
		tyObject_RefHeader__GDnGTjNyvwISJbkIvAst3A* cell_1;
		NI T5_;
		if (!!((p_p0 == NIM_NIL))) goto LA3_;
		T5_ = (NI)0;
		T5_ = minuspercent___system_u805(((NI) (ptrdiff_t) (p_p0)), ((NI)8));
		cell_1 = ((tyObject_RefHeader__GDnGTjNyvwISJbkIvAst3A*) (T5_));
		{
			if (!((NI)((*cell_1).rc & ((NI)-16)) == ((NI)0))) goto LA8_;
			result = NIM_TRUE;
		}
		goto LA6_;
LA8_: ;
		{
			(*cell_1).rc = minuspercent___system_u805((*cell_1).rc, ((NI)16));
		}
LA6_: ;
		{
			if (!result) goto LA13_;
			{
				if (!(((NI)0) < (*cell_1).rootIdx)) goto LA17_;
				unregisterCycle__system_u3128(cell_1);
			}
LA17_: ;
		}
LA13_: ;
	}
LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___optimizer_u52)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* dest_p0) {
	eqdestroy___ast_u3696((*dest_p0).symToDel);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = nimDecRefIsLastDyn((*dest_p0).label);
		if (!T3_) goto LA4_;
		eqdestroy___ast_u3469((&(*(*dest_p0).label)));
		nimRawDispose((*dest_p0).label, ((NI)8));
	}
LA4_: ;
	eqdestroy___ast_u3696((*dest_p0).wasMovedLocs);
}
N_LIB_PRIVATE N_NIMCALL(void, breakStmt__optimizer_u82)(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* b_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1) {
	tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* it_1;
	it_1 = b_p0;
	{
		while (1) {
			if (!!((it_1 == ((tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ*) NIM_NIL)))) goto LA2;
			setLen__ast_u3718((&(*it_1).wasMovedLocs), ((NI)0));
			(*it_1).hasBreak = NIM_TRUE;
			{
				if (!((*n_p1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3))) goto LA5_;
				{
					if (!((*it_1).label == (*n_p1)._kind_4.sym)) goto LA9_;
					goto LA1;
				}
LA9_: ;
			}
			goto LA3_;
LA5_: ;
			{
				{
					if (!((*it_1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)96) || (*it_1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)112) || (*it_1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)127))) goto LA14_;
					goto LA1;
				}
LA14_: ;
			}
LA3_: ;
			it_1 = (*it_1).parent;
		} LA2: ;
	} LA1: ;
}
static N_INLINE(NI, safeLen__ast_u3197)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0) {
	NI result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI)0;
	{
		if (!((*n_p0).kind >= ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)0) && (*n_p0).kind <= ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)23))) goto LA3_;
		result = ((NI)0);
	}
	goto LA1_;
LA3_: ;
	{
		result = len__ast_u3190(n_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, analyse__optimizer_u237)(tyObject_Con__HBl6o6u9bUIeEH0H1Fm28PQ* c_p0, tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ* b_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2) {
NIM_BOOL oldNimErrFin58_;
NIM_BOOL oldNimErrFin53_;
NIM_BOOL oldNimErrFin85_;
NIM_BOOL oldNimErrFin78_;
NIM_BOOL oldNimErrFin108_;
NIM_BOOL oldNimErrFin112_;
NIM_BOOL oldNimErrFin116_;
NIM_BOOL oldNimErrFin126_;
NIM_BOOL oldNimErrFin134_;
NIM_BOOL oldNimErrFin142_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	switch ((*n_p2).kind) {
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)26) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)32):
	{
		NIM_BOOL special_1;
		NIM_BOOL reverse_1;
		special_1 = NIM_FALSE;
		reverse_1 = NIM_FALSE;
		{
			tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* s_1;
			NimStringV2 name_1;
			if (!((*(*n_p2)._kind_6.sons.p->data[((NI)0)]).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3))) goto LA4_;
			s_1 = NIM_NIL;
			name_1.len = 0; name_1.p = NIM_NIL;
			s_1 = (*(*n_p2)._kind_6.sons.p->data[((NI)0)])._kind_4.sym;
			name_1 = nsuNormalize((*(*s_1).name).s);
			if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
			{
				tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD_;
				if (!eqStrings(name_1, TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_3)) goto LA9_;
				colontmpD_ = eqdup___ast_u3258(n_p2);
				if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
				add__ast_u3225((&(*b_p1).wasMovedLocs), colontmpD_);
				special_1 = NIM_TRUE;
			}
			goto LA7_;
LA9_: ;
			{
				if (!eqStrings(name_1, TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_5)) goto LA12_;
				{
					NIM_BOOL T16_;
					NIM_BOOL T18_;
					T16_ = (NIM_BOOL)0;
					T16_ = (((NI)0) < (*c_p0).inFinally);
					if (!(T16_)) goto LA17_;
					T18_ = (NIM_BOOL)0;
					T18_ = (*b_p1).hasReturn;
					if (T18_) goto LA19_;
					T18_ = (*b_p1).hasBreak;
LA19_: ;
					T16_ = T18_;
LA17_: ;
					if (!T16_) goto LA20_;
				}
				goto LA14_;
LA20_: ;
				{
					wasMovedDestroyPair__optimizer_u212(c_p0, b_p1, n_p2);
					if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
				}
LA14_: ;
				special_1 = NIM_TRUE;
			}
			goto LA7_;
LA12_: ;
			{
				if (!eqStrings(name_1, TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_7)) goto LA24_;
				reverse_1 = NIM_TRUE;
			}
			goto LA7_;
LA24_: ;
LA7_: ;
			{
				LA6_:;
			}
			{
				eqdestroy___system_u2691(name_1);
			}
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
LA4_: ;
		{
			if (!!(special_1)) goto LA30_;
			{
				if (!!(reverse_1)) goto LA34_;
				{
					NI i_1;
					NI colontmp_;
					NI i_2;
					i_1 = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = len__ast_u3190(n_p2);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					i_2 = ((NI)0);
					{
						while (1) {
							if (!(i_2 < colontmp_)) goto LA38;
							i_1 = i_2;
							analyse__optimizer_u237(c_p0, b_p1, (*n_p2)._kind_6.sons.p->data[i_1]);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							i_2 += ((NI)1);
						} LA38: ;
					}
				}
			}
			goto LA32_;
LA34_: ;
			{
				{
					NI i_3;
					NI colontmp__2;
					NI T41_;
					NI res_1;
					i_3 = (NI)0;
					colontmp__2 = (NI)0;
					T41_ = (NI)0;
					T41_ = len__ast_u3190(n_p2);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					colontmp__2 = (NI)(T41_ - ((NI)1));
					res_1 = colontmp__2;
					{
						while (1) {
							if (!(((NI)0) <= res_1)) goto LA43;
							i_3 = ((NI) (res_1));
							analyse__optimizer_u237(c_p0, b_p1, (*n_p2)._kind_6.sons.p->data[i_3]);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							res_1 -= ((NI)1);
						} LA43: ;
					}
				}
			}
LA32_: ;
			{
				NIM_BOOL T46_;
				T46_ = (NIM_BOOL)0;
				T46_ = canRaise__ast_u7516((*n_p2)._kind_6.sons.p->data[((NI)0)]);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				if (!T46_) goto LA47_;
				returnStmt__optimizer_u106(b_p1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			}
LA47_: ;
		}
LA30_: ;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3):
	{
		tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD__2;
		invalidateWasMoved__optimizer_u19(b_p1, n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		colontmpD__2 = eqdup___ast_u3258(n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		add__ast_u3225((&(*b_p1).symToDel), colontmpD__2);
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)0) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)2):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)4) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)23):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)98):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)79):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)81):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)80):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)84):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)82):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)83):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)51):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)52):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)159):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)101):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)102):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)121):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)116):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)118):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)90):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)125):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)158):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)132):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)123):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)122):
	{
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)73):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)74):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)149):
	{
		analyse__optimizer_u237(c_p0, b_p1, (*n_p2)._kind_6.sons.p->data[((NI)1)]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		analyse__optimizer_u237(c_p0, b_p1, (*n_p2)._kind_6.sons.p->data[((NI)0)]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)92):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)48):
	{
		tySequence__9ahcSjIErJohSBBFLwuF56Q wasMovedSet_1;
		NIM_BOOL isExhaustive_1;
		NI T54_;
		wasMovedSet_1.len = 0; wasMovedSet_1.p = NIM_NIL;
		T54_ = (NI)0;
		T54_ = len__ast_u3190(n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto LA53_;
		isExhaustive_1 = ((*(*n_p2)._kind_6.sons.p->data[(NI)(T54_ - ((NI)1))]).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)88) || (*(*n_p2)._kind_6.sons.p->data[(NI)(T54_ - ((NI)1))]).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)50));
		wasMovedSet_1.len = 0; wasMovedSet_1.p = (tySequence__9ahcSjIErJohSBBFLwuF56Q_Content*) newSeqPayload(0, sizeof(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*), NIM_ALIGNOF(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*));
		{
			NI i_4;
			NI colontmp__3;
			NI i_5;
			i_4 = (NI)0;
			colontmp__3 = (NI)0;
			colontmp__3 = len__ast_u3190(n_p2);
			if (NIM_UNLIKELY(*nimErr_)) goto LA53_;
			i_5 = ((NI)0);
			{
				while (1) {
					tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ branch_1;
					if (!(i_5 < colontmp__3)) goto LA57;
					nimZeroMem((void*)(&branch_1), sizeof(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ));
					i_4 = i_5;
					nestedBlock__optimizer_u22(b_p1, (*(*n_p2)._kind_6.sons.p->data[i_4]).kind, (&branch_1));
					if (NIM_UNLIKELY(*nimErr_)) goto LA58_;
					analyse__optimizer_u237(c_p0, (&branch_1), (*n_p2)._kind_6.sons.p->data[i_4]);
					if (NIM_UNLIKELY(*nimErr_)) goto LA58_;
					mergeBasicBlockInfo__optimizer_u117(b_p1, (&branch_1));
					if (NIM_UNLIKELY(*nimErr_)) goto LA58_;
					{
						if (!isExhaustive_1) goto LA61_;
						{
							tySequence__9ahcSjIErJohSBBFLwuF56Q T67_;
							if (!(i_4 == ((NI)0))) goto LA65_;
							T67_.len = 0; T67_.p = NIM_NIL;
							T67_ = branch_1.wasMovedLocs;
							eqwasMoved___ast_u3693((&branch_1.wasMovedLocs));
							eqsink___ast_u3705((&wasMovedSet_1), T67_);
							if (NIM_UNLIKELY(*nimErr_)) goto LA58_;
						}
						goto LA63_;
LA65_: ;
						{
							intersect__optimizer_u160((&wasMovedSet_1), branch_1.wasMovedLocs);
							if (NIM_UNLIKELY(*nimErr_)) goto LA58_;
						}
LA63_: ;
					}
LA61_: ;
					i_5 += ((NI)1);
					{
						LA58_:;
					}
					{
						oldNimErrFin58_ = *nimErr_; *nimErr_ = NIM_FALSE;
						eqdestroy___optimizer_u52((&branch_1));
						if (NIM_UNLIKELY(*nimErr_)) goto LA53_;
						*nimErr_ = oldNimErrFin58_;
					}
					if (NIM_UNLIKELY(*nimErr_)) goto LA53_;
				} LA57: ;
			}
		}
		{
			NI i_6;
			NI colontmp__4;
			NI T72_;
			NI i_7;
			i_6 = (NI)0;
			colontmp__4 = (NI)0;
			T72_ = wasMovedSet_1.len;
			colontmp__4 = T72_;
			i_7 = ((NI)0);
			{
				while (1) {
					tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD__3;
					if (!(i_7 < colontmp__4)) goto LA74;
					i_6 = i_7;
					colontmpD__3 = eqdup___ast_u3258(wasMovedSet_1.p->data[i_6]);
					if (NIM_UNLIKELY(*nimErr_)) goto LA53_;
					add__ast_u3225((&(*b_p1).wasMovedLocs), colontmpD__3);
					i_7 += ((NI)1);
				} LA74: ;
			}
		}
		{
			LA53_:;
		}
		{
			oldNimErrFin53_ = *nimErr_; *nimErr_ = NIM_FALSE;
			eqdestroy___ast_u3696(wasMovedSet_1);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			*nimErr_ = oldNimErrFin53_;
		}
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)97):
	{
		tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* colontmpD__4;
		tySequence__9ahcSjIErJohSBBFLwuF56Q wasMovedSet_2;
		NIM_BOOL isExhaustive_2;
		NIM_BOOL T79_;
		NI T81_;
		colontmpD__4 = NIM_NIL;
		wasMovedSet_2.len = 0; wasMovedSet_2.p = NIM_NIL;
		T79_ = (NIM_BOOL)0;
		colontmpD__4 = skipTypes__ast_u5379((*(*n_p2)._kind_6.sons.p->data[((NI)0)]).typField, TM__zdBS9bxu9aeb3QPAJFgGx9cyQ_8);
		if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
		T79_ = !(((*colontmpD__4).kind >= ((tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg)36) && (*colontmpD__4).kind <= ((tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg)39) || (*colontmpD__4).kind == ((tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg)28) || (*colontmpD__4).kind == ((tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg)29)));
		if (T79_) goto LA80_;
		T81_ = (NI)0;
		T81_ = len__ast_u3190(n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
		T79_ = ((*(*n_p2)._kind_6.sons.p->data[(NI)(T81_ - ((NI)1))]).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)88));
LA80_: ;
		isExhaustive_2 = T79_;
		analyse__optimizer_u237(c_p0, b_p1, (*n_p2)._kind_6.sons.p->data[((NI)0)]);
		if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
		wasMovedSet_2.len = 0; wasMovedSet_2.p = (tySequence__9ahcSjIErJohSBBFLwuF56Q_Content*) newSeqPayload(0, sizeof(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*), NIM_ALIGNOF(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*));
		{
			NI i_8;
			NI colontmp__5;
			NI i_9;
			i_8 = (NI)0;
			colontmp__5 = (NI)0;
			colontmp__5 = len__ast_u3190(n_p2);
			if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
			i_9 = ((NI)1);
			{
				while (1) {
					tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ branch_2;
					if (!(i_9 < colontmp__5)) goto LA84;
					nimZeroMem((void*)(&branch_2), sizeof(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ));
					i_8 = i_9;
					nestedBlock__optimizer_u22(b_p1, (*(*n_p2)._kind_6.sons.p->data[i_8]).kind, (&branch_2));
					if (NIM_UNLIKELY(*nimErr_)) goto LA85_;
					analyse__optimizer_u237(c_p0, (&branch_2), (*n_p2)._kind_6.sons.p->data[i_8]);
					if (NIM_UNLIKELY(*nimErr_)) goto LA85_;
					mergeBasicBlockInfo__optimizer_u117(b_p1, (&branch_2));
					if (NIM_UNLIKELY(*nimErr_)) goto LA85_;
					{
						if (!isExhaustive_2) goto LA88_;
						{
							tySequence__9ahcSjIErJohSBBFLwuF56Q T94_;
							if (!(i_8 == ((NI)1))) goto LA92_;
							T94_.len = 0; T94_.p = NIM_NIL;
							T94_ = branch_2.wasMovedLocs;
							eqwasMoved___ast_u3693((&branch_2.wasMovedLocs));
							eqsink___ast_u3705((&wasMovedSet_2), T94_);
							if (NIM_UNLIKELY(*nimErr_)) goto LA85_;
						}
						goto LA90_;
LA92_: ;
						{
							intersect__optimizer_u160((&wasMovedSet_2), branch_2.wasMovedLocs);
							if (NIM_UNLIKELY(*nimErr_)) goto LA85_;
						}
LA90_: ;
					}
LA88_: ;
					i_9 += ((NI)1);
					{
						LA85_:;
					}
					{
						oldNimErrFin85_ = *nimErr_; *nimErr_ = NIM_FALSE;
						eqdestroy___optimizer_u52((&branch_2));
						if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
						*nimErr_ = oldNimErrFin85_;
					}
					if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
				} LA84: ;
			}
		}
		{
			NI i_10;
			NI colontmp__6;
			NI T99_;
			NI i_11;
			i_10 = (NI)0;
			colontmp__6 = (NI)0;
			T99_ = wasMovedSet_2.len;
			colontmp__6 = T99_;
			i_11 = ((NI)0);
			{
				while (1) {
					tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD__5;
					if (!(i_11 < colontmp__6)) goto LA101;
					i_10 = i_11;
					colontmpD__5 = eqdup___ast_u3258(wasMovedSet_2.p->data[i_10]);
					if (NIM_UNLIKELY(*nimErr_)) goto LA78_;
					add__ast_u3225((&(*b_p1).wasMovedLocs), colontmpD__5);
					i_11 += ((NI)1);
				} LA101: ;
			}
		}
		{
			LA78_:;
		}
		{
			oldNimErrFin78_ = *nimErr_; *nimErr_ = NIM_FALSE;
			eqdestroy___ast_u3696(wasMovedSet_2);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			eqdestroy___ast_u3378(colontmpD__4);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			*nimErr_ = oldNimErrFin78_;
		}
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)106):
	{
		{
			NI i_12;
			NI colontmp__7;
			NI i_13;
			i_12 = (NI)0;
			colontmp__7 = (NI)0;
			colontmp__7 = len__ast_u3190(n_p2);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			i_13 = ((NI)0);
			{
				while (1) {
					tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ tryBody_1;
					if (!(i_13 < colontmp__7)) goto LA107;
					nimZeroMem((void*)(&tryBody_1), sizeof(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ));
					i_12 = i_13;
					nestedBlock__optimizer_u22(b_p1, ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)106), (&tryBody_1));
					if (NIM_UNLIKELY(*nimErr_)) goto LA108_;
					analyse__optimizer_u237(c_p0, (&tryBody_1), (*n_p2)._kind_6.sons.p->data[i_12]);
					if (NIM_UNLIKELY(*nimErr_)) goto LA108_;
					mergeBasicBlockInfo__optimizer_u117(b_p1, (&tryBody_1));
					if (NIM_UNLIKELY(*nimErr_)) goto LA108_;
					i_13 += ((NI)1);
					{
						LA108_:;
					}
					{
						oldNimErrFin108_ = *nimErr_; *nimErr_ = NIM_FALSE;
						eqdestroy___optimizer_u52((&tryBody_1));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						*nimErr_ = oldNimErrFin108_;
					}
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				} LA107: ;
			}
		}
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)96):
	{
		tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ loopBody_1;
		nimZeroMem((void*)(&loopBody_1), sizeof(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ));
		analyse__optimizer_u237(c_p0, b_p1, (*n_p2)._kind_6.sons.p->data[((NI)0)]);
		if (NIM_UNLIKELY(*nimErr_)) goto LA112_;
		nestedBlock__optimizer_u22(b_p1, ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)96), (&loopBody_1));
		if (NIM_UNLIKELY(*nimErr_)) goto LA112_;
		analyse__optimizer_u237(c_p0, (&loopBody_1), (*n_p2)._kind_6.sons.p->data[((NI)1)]);
		if (NIM_UNLIKELY(*nimErr_)) goto LA112_;
		mergeBasicBlockInfo__optimizer_u117(b_p1, (&loopBody_1));
		if (NIM_UNLIKELY(*nimErr_)) goto LA112_;
		{
			LA112_:;
		}
		{
			oldNimErrFin112_ = *nimErr_; *nimErr_ = NIM_FALSE;
			eqdestroy___optimizer_u52((&loopBody_1));
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			*nimErr_ = oldNimErrFin112_;
		}
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)112):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)127):
	{
		tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ blockBody_1;
		nimZeroMem((void*)(&blockBody_1), sizeof(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ));
		nestedBlock__optimizer_u22(b_p1, (*n_p2).kind, (&blockBody_1));
		if (NIM_UNLIKELY(*nimErr_)) goto LA116_;
		{
			if (!((*(*n_p2)._kind_6.sons.p->data[((NI)0)]).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3))) goto LA119_;
			eqcopy___ast_u4577(&blockBody_1.label, (*(*n_p2)._kind_6.sons.p->data[((NI)0)])._kind_4.sym);
			if (NIM_UNLIKELY(*nimErr_)) goto LA116_;
		}
LA119_: ;
		analyse__optimizer_u237(c_p0, (&blockBody_1), (*n_p2)._kind_6.sons.p->data[((NI)1)]);
		if (NIM_UNLIKELY(*nimErr_)) goto LA116_;
		mergeBasicBlockInfo__optimizer_u117(b_p1, (&blockBody_1));
		if (NIM_UNLIKELY(*nimErr_)) goto LA116_;
		{
			LA116_:;
		}
		{
			oldNimErrFin116_ = *nimErr_; *nimErr_ = NIM_FALSE;
			eqdestroy___optimizer_u52((&blockBody_1));
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			*nimErr_ = oldNimErrFin116_;
		}
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)110):
	{
		breakStmt__optimizer_u82(b_p1, (*n_p2)._kind_6.sons.p->data[((NI)0)]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)109):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)108):
	{
		{
			tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* child_1;
			child_1 = NIM_NIL;
			{
				NI i_14;
				NI colontmp__8;
				NI i_15;
				i_14 = (NI)0;
				colontmp__8 = (NI)0;
				colontmp__8 = safeLen__ast_u3197(n_p2);
				if (NIM_UNLIKELY(*nimErr_)) goto LA126_;
				i_15 = ((NI)0);
				{
					while (1) {
						if (!(i_15 < colontmp__8)) goto LA129;
						i_14 = i_15;
						eqcopy___ast_u3255(&child_1, (*n_p2)._kind_6.sons.p->data[i_14]);
						if (NIM_UNLIKELY(*nimErr_)) goto LA126_;
						analyse__optimizer_u237(c_p0, b_p1, child_1);
						if (NIM_UNLIKELY(*nimErr_)) goto LA126_;
						i_15 += ((NI)1);
					} LA129: ;
				}
			}
			{
				LA126_:;
			}
			{
				oldNimErrFin126_ = *nimErr_; *nimErr_ = NIM_FALSE;
				eqdestroy___ast_u3252(child_1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				*nimErr_ = oldNimErrFin126_;
			}
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
		returnStmt__optimizer_u106(b_p1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)107):
	{
		(*c_p0).inFinally += ((NI)1);
		{
			tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* child_2;
			child_2 = NIM_NIL;
			{
				NI i_16;
				NI colontmp__9;
				NI i_17;
				i_16 = (NI)0;
				colontmp__9 = (NI)0;
				colontmp__9 = safeLen__ast_u3197(n_p2);
				if (NIM_UNLIKELY(*nimErr_)) goto LA134_;
				i_17 = ((NI)0);
				{
					while (1) {
						if (!(i_17 < colontmp__9)) goto LA137;
						i_16 = i_17;
						eqcopy___ast_u3255(&child_2, (*n_p2)._kind_6.sons.p->data[i_16]);
						if (NIM_UNLIKELY(*nimErr_)) goto LA134_;
						analyse__optimizer_u237(c_p0, b_p1, child_2);
						if (NIM_UNLIKELY(*nimErr_)) goto LA134_;
						i_17 += ((NI)1);
					} LA137: ;
				}
			}
			{
				LA134_:;
			}
			{
				oldNimErrFin134_ = *nimErr_; *nimErr_ = NIM_FALSE;
				eqdestroy___ast_u3252(child_2);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				*nimErr_ = oldNimErrFin134_;
			}
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
		(*c_p0).inFinally -= ((NI)1);
	}
	break;
	default:
	{
		{
			tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* child_3;
			child_3 = NIM_NIL;
			{
				NI i_18;
				NI colontmp__10;
				NI i_19;
				i_18 = (NI)0;
				colontmp__10 = (NI)0;
				colontmp__10 = safeLen__ast_u3197(n_p2);
				if (NIM_UNLIKELY(*nimErr_)) goto LA142_;
				i_19 = ((NI)0);
				{
					while (1) {
						if (!(i_19 < colontmp__10)) goto LA145;
						i_18 = i_19;
						eqcopy___ast_u3255(&child_3, (*n_p2)._kind_6.sons.p->data[i_18]);
						if (NIM_UNLIKELY(*nimErr_)) goto LA142_;
						analyse__optimizer_u237(c_p0, b_p1, child_3);
						if (NIM_UNLIKELY(*nimErr_)) goto LA142_;
						i_19 += ((NI)1);
					} LA145: ;
				}
			}
			{
				LA142_:;
			}
			{
				oldNimErrFin142_ = *nimErr_; *nimErr_ = NIM_FALSE;
				eqdestroy___ast_u3252(child_3);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				*nimErr_ = oldNimErrFin142_;
			}
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
	}
	break;
	}
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, opt__optimizer_u377)(tyObject_Con__HBl6o6u9bUIeEH0H1Fm28PQ c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* parent_p2, NI parentPos_p3) {
NIM_BOOL oldNimErrFin8_;
NIM_BOOL oldNimErrFin16_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	switch ((*n_p1).kind) {
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)26) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)32):
	{
		{
			tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* T6_;
			if (!(((*n_p1).flags &((NU32)1<<((NU)((((tyEnum_TNodeFlag__3UjGgL9bLM4RXBnoZJs9cviw)0)))&31U)))!=0)) goto LA4_;
			T6_ = NIM_NIL;
			T6_ = newNodeI__ast_u4091(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)1), (*n_p1).info);
			if (NIM_UNLIKELY(*nimErr_)) {eqdestroy___ast_u3252(T6_); goto BeforeRet_;}
			eqsink___ast_u3261(&(*parent_p2)._kind_6.sons.p->data[parentPos_p3], T6_);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
		goto LA2_;
LA4_: ;
		{
			tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* xX60gensym42__1;
			xX60gensym42__1 = NIM_NIL;
			xX60gensym42__1 = shallowCopy__ast_u6876(n_p1);
			if (NIM_UNLIKELY(*nimErr_)) goto LA8_;
			{
				NI iX60gensym42__1;
				NI colontmp_;
				NI i_1;
				iX60gensym42__1 = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = len__ast_u3190(n_p1);
				if (NIM_UNLIKELY(*nimErr_)) goto LA8_;
				i_1 = ((NI)0);
				{
					while (1) {
						if (!(i_1 < colontmp_)) goto LA11;
						iX60gensym42__1 = i_1;
						opt__optimizer_u377(c_p0, (*n_p1)._kind_6.sons.p->data[iX60gensym42__1], xX60gensym42__1, iX60gensym42__1);
						if (NIM_UNLIKELY(*nimErr_)) goto LA8_;
						i_1 += ((NI)1);
					} LA11: ;
				}
			}
			eqsink___ast_u3261(&(*parent_p2)._kind_6.sons.p->data[parentPos_p3], xX60gensym42__1);
			if (NIM_UNLIKELY(*nimErr_)) goto LA8_;
			eqwasMoved___ast_u3249(&xX60gensym42__1);
			if (NIM_UNLIKELY(*nimErr_)) goto LA8_;
			{
				LA8_:;
			}
			{
				oldNimErrFin8_ = *nimErr_; *nimErr_ = NIM_FALSE;
				eqdestroy___ast_u3252(xX60gensym42__1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				*nimErr_ = oldNimErrFin8_;
			}
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
LA2_: ;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)0) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)23):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)98):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)79):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)81):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)80):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)84):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)82):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)83):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)51):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)52):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)159):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)101):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)102):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)121):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)116):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)118):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)90):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)125):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)158):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)132):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)123):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)122):
	{
		eqcopy___ast_u3255(&(*parent_p2)._kind_6.sons.p->data[parentPos_p3], n_p1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	default:
	{
		tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* xX60gensym46__1;
		xX60gensym46__1 = NIM_NIL;
		xX60gensym46__1 = shallowCopy__ast_u6876(n_p1);
		if (NIM_UNLIKELY(*nimErr_)) goto LA16_;
		{
			NI iX60gensym46__1;
			NI colontmp__2;
			NI i_2;
			iX60gensym46__1 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len__ast_u3190(n_p1);
			if (NIM_UNLIKELY(*nimErr_)) goto LA16_;
			i_2 = ((NI)0);
			{
				while (1) {
					if (!(i_2 < colontmp__2)) goto LA19;
					iX60gensym46__1 = i_2;
					opt__optimizer_u377(c_p0, (*n_p1)._kind_6.sons.p->data[iX60gensym46__1], xX60gensym46__1, iX60gensym46__1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA16_;
					i_2 += ((NI)1);
				} LA19: ;
			}
		}
		eqsink___ast_u3261(&(*parent_p2)._kind_6.sons.p->data[parentPos_p3], xX60gensym46__1);
		if (NIM_UNLIKELY(*nimErr_)) goto LA16_;
		eqwasMoved___ast_u3249(&xX60gensym46__1);
		if (NIM_UNLIKELY(*nimErr_)) goto LA16_;
		{
			LA16_:;
		}
		{
			oldNimErrFin16_ = *nimErr_; *nimErr_ = NIM_FALSE;
			eqdestroy___ast_u3252(xX60gensym46__1);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			*nimErr_ = oldNimErrFin16_;
		}
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	}
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, optimize__optimizer_u405)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0) {
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* result;
	tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ b_1;
	tyObject_Con__HBl6o6u9bUIeEH0H1Fm28PQ c_1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = NIM_NIL;
	nimZeroMem((void*)(&b_1), sizeof(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ));
	nimZeroMem((void*)(&c_1), sizeof(tyObject_Con__HBl6o6u9bUIeEH0H1Fm28PQ));
	nimZeroMem((void*)(&b_1), sizeof(tyObject_BasicBlock__OFvabnI1oyxK0DeWNJPoDQ));
	analyse__optimizer_u237((&c_1), (&b_1), n_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	{
		if (!c_1.somethingTodo) goto LA4_;
		result = shallowCopy__ast_u6876(n_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		{
			NI i_1;
			NI colontmp_;
			NI i_2;
			i_1 = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = safeLen__ast_u3197(n_p0);
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
			i_2 = ((NI)0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA8;
					i_1 = i_2;
					opt__optimizer_u377(c_1, (*n_p0)._kind_6.sons.p->data[i_1], result, i_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
					i_2 += ((NI)1);
				} LA8: ;
			}
		}
	}
	goto LA2_;
LA4_: ;
	{
		eqcopy___ast_u3255(&result, n_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	}
LA2_: ;
	{
		LA1_:;
	}
	{
		oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
		eqdestroy___optimizer_u52((&b_1));
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		*nimErr_ = oldNimErrFin1_;
	}
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
