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

#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_TContext__4jZ5gUwIaqnMfIYix46Hpw tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw;
typedef struct tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg;
typedef struct tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg;
typedef struct tySequence__9ahcSjIErJohSBBFLwuF56Q tySequence__9ahcSjIErJohSBBFLwuF56Q;
typedef struct tySequence__9ahcSjIErJohSBBFLwuF56Q_Content tySequence__9ahcSjIErJohSBBFLwuF56Q_Content;
typedef struct tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA;
typedef struct tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg;
typedef struct tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA;
typedef struct tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA;
typedef struct tyObject_TLoc__KvQVlvKb6mbV567NQ0hMOw tyObject_TLoc__KvQVlvKb6mbV567NQ0hMOw;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
typedef struct tyObject_TLib__sVuuRvQkiYNOUiPRZhmZig tyObject_TLib__sVuuRvQkiYNOUiPRZhmZig;
typedef struct tyObject_TPassContext__QQOybmyOwFn29csyFzTSLNQ tyObject_TPassContext__QQOybmyOwFn29csyFzTSLNQ;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_IdGeneratorcolonObjectType___G9bSmxY5z1At9bXNKpE9bKuug tyObject_IdGeneratorcolonObjectType___G9bSmxY5z1At9bXNKpE9bKuug;
typedef struct tyObject_TScope__x7gU4GnNOGxq5tpoU40Lww tyObject_TScope__x7gU4GnNOGxq5tpoU40Lww;
typedef struct tySequence__AE2UIxl7EbPzzBnmYsjIcw tySequence__AE2UIxl7EbPzzBnmYsjIcw;
typedef struct tySequence__AE2UIxl7EbPzzBnmYsjIcw_Content tySequence__AE2UIxl7EbPzzBnmYsjIcw_Content;
typedef struct tyObject_TProcCon__ftBtv4UEhPouLts4uXXNLQ tyObject_TProcCon__ftBtv4UEhPouLts4uXXNLQ;
typedef struct tyObject_TMatchedConcept__tvh59a8SIGC9ccJV9atmyb8kg tyObject_TMatchedConcept__tvh59a8SIGC9ccJV9atmyb8kg;
typedef struct tySequence__ZCZaCk14bTmSb6LMW9aWPVA tySequence__ZCZaCk14bTmSb6LMW9aWPVA;
typedef struct tySequence__ZCZaCk14bTmSb6LMW9aWPVA_Content tySequence__ZCZaCk14bTmSb6LMW9aWPVA_Content;
typedef struct tySequence__tsHRsYLyvTCPLlGRExqi7Q tySequence__tsHRsYLyvTCPLlGRExqi7Q;
typedef struct tySequence__tsHRsYLyvTCPLlGRExqi7Q_Content tySequence__tsHRsYLyvTCPLlGRExqi7Q_Content;
typedef struct tySequence__lAikaRQvUF0uwNAz0U4FFA tySequence__lAikaRQvUF0uwNAz0U4FFA;
typedef struct tySequence__lAikaRQvUF0uwNAz0U4FFA_Content tySequence__lAikaRQvUF0uwNAz0U4FFA_Content;
typedef struct tyObject_LayeredIdTableObj__PbmRWgwPdgBZOtiSK65Q7A tyObject_LayeredIdTableObj__PbmRWgwPdgBZOtiSK65Q7A;
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_TStrTable__Ry5QUbfaMzlI1Jpe9bUTBDg tyObject_TStrTable__Ry5QUbfaMzlI1Jpe9bUTBDg;
typedef struct tyObject_TCtx__FHLmhXedV9bg0OyLunsHRew tyObject_TCtx__FHLmhXedV9bg0OyLunsHRew;
typedef struct tySequence__4zAALtm0xUbRlYWQ2V8K7A tySequence__4zAALtm0xUbRlYWQ2V8K7A;
typedef struct tySequence__4zAALtm0xUbRlYWQ2V8K7A_Content tySequence__4zAALtm0xUbRlYWQ2V8K7A_Content;
typedef struct tyObject_IdentCachecolonObjectType___ieLwK4T49bbUIZTTVH9cycZA tyObject_IdentCachecolonObjectType___ieLwK4T49bbUIZTTVH9cycZA;
typedef struct tyObject_ModuleGraphcolonObjectType___TuJBn0NOJllZfOUYECIyKw tyObject_ModuleGraphcolonObjectType___TuJBn0NOJllZfOUYECIyKw;
typedef struct tySequence__9bffTLF0HkxjFCzZL8og4GA tySequence__9bffTLF0HkxjFCzZL8og4GA;
typedef struct tySequence__9bffTLF0HkxjFCzZL8og4GA_Content tySequence__9bffTLF0HkxjFCzZL8og4GA_Content;
typedef struct tyObject_HashSet__cx4zJRA9aTCfmpbY2J9bKwnQ tyObject_HashSet__cx4zJRA9aTCfmpbY2J9bKwnQ;
typedef struct tySequence__Bis5AbpONWcIRrPyPJS8Yw tySequence__Bis5AbpONWcIRrPyPJS8Yw;
typedef struct tySequence__Bis5AbpONWcIRrPyPJS8Yw_Content tySequence__Bis5AbpONWcIRrPyPJS8Yw_Content;
typedef struct tyObject_Table__nBRoNCTSfpfbfAeK9bNW1qw tyObject_Table__nBRoNCTSfpfbfAeK9bNW1qw;
typedef struct tySequence__E8pi9b5QNahsURYzXMjh3qw tySequence__E8pi9b5QNahsURYzXMjh3qw;
typedef struct tySequence__E8pi9b5QNahsURYzXMjh3qw_Content tySequence__E8pi9b5QNahsURYzXMjh3qw_Content;
typedef struct tyObject_Table__g77QNejuRRKraNk8K2YkoA tyObject_Table__g77QNejuRRKraNk8K2YkoA;
typedef struct tySequence__3B6hFqG0Do0FxDvnNucL7w tySequence__3B6hFqG0Do0FxDvnNucL7w;
typedef struct tySequence__3B6hFqG0Do0FxDvnNucL7w_Content tySequence__3B6hFqG0Do0FxDvnNucL7w_Content;
typedef struct tyObject_Table__toCaB3NxiVHPRVLgcez0Xg tyObject_Table__toCaB3NxiVHPRVLgcez0Xg;
typedef struct tySequence__QqvaCqCpEE1QmQZbcZLi5A tySequence__QqvaCqCpEE1QmQZbcZLi5A;
typedef struct tySequence__QqvaCqCpEE1QmQZbcZLi5A_Content tySequence__QqvaCqCpEE1QmQZbcZLi5A_Content;
typedef struct tySequence__d8ZV4IMgHt9biik9cS9a0hrmg tySequence__d8ZV4IMgHt9biik9cS9a0hrmg;
typedef struct tySequence__d8ZV4IMgHt9biik9cS9a0hrmg_Content tySequence__d8ZV4IMgHt9biik9cS9a0hrmg_Content;
typedef struct tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg;
typedef struct tyObject_RefHeader__GDnGTjNyvwISJbkIvAst3A tyObject_RefHeader__GDnGTjNyvwISJbkIvAst3A;
typedef struct tyObject_ImportedModule__NhRLdOPUbh9bmcDLjImMKWw tyObject_ImportedModule__NhRLdOPUbh9bmcDLjImMKWw;
typedef struct tyObject_TOptionEntry__KeABxBvAlGa1KroFfkcqAg tyObject_TOptionEntry__KeABxBvAlGa1KroFfkcqAg;
typedef struct tyObject_TIdTable__XZ9cFaLoittQMULJSfBpHrA tyObject_TIdTable__XZ9cFaLoittQMULJSfBpHrA;
typedef struct tySequence__7OXYQ6bHRkhJpRaiS7kiwQ tySequence__7OXYQ6bHRkhJpRaiS7kiwQ;
typedef struct tySequence__7OXYQ6bHRkhJpRaiS7kiwQ_Content tySequence__7OXYQ6bHRkhJpRaiS7kiwQ_Content;
typedef struct tyObject_TInstantiationPair__bS87nlCVAcAYxO9aJequmYw tyObject_TInstantiationPair__bS87nlCVAcAYxO9aJequmYw;
typedef struct tyObject_TInstantiation__jr8MibvPn2sQBnO7XCoZRQ tyObject_TInstantiation__jr8MibvPn2sQBnO7XCoZRQ;
typedef struct tyTuple__09aD69az7aYn14Gt61AHvLIA tyTuple__09aD69az7aYn14Gt61AHvLIA;
typedef struct tyTuple__NAaJgGVgNmlGoqmiWxdOHQ tyTuple__NAaJgGVgNmlGoqmiWxdOHQ;
typedef struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ;
typedef struct tyTuple__47w2DboNEPf69aPgubZdd7Q tyTuple__47w2DboNEPf69aPgubZdd7Q;
typedef struct tyTuple__CH9a39cWKma9c9c9cYqCyX1wBsw tyTuple__CH9a39cWKma9c9c9cYqCyX1wBsw;
typedef struct tySequence__KYLoGmc5aaHsSDjEH1FTxQ tySequence__KYLoGmc5aaHsSDjEH1FTxQ;
typedef struct tySequence__KYLoGmc5aaHsSDjEH1FTxQ_Content tySequence__KYLoGmc5aaHsSDjEH1FTxQ_Content;
typedef struct tyTuple__EbsafWGli8bW2GRJQ9apsjA tyTuple__EbsafWGli8bW2GRJQ9apsjA;
typedef struct tySequence__qwqHTkRvwhrRyENtudHQ7g tySequence__qwqHTkRvwhrRyENtudHQ7g;
typedef struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content tySequence__qwqHTkRvwhrRyENtudHQ7g_Content;
typedef struct tyObject_TIdPair__jFcUgE4X1tLOqan9b4YIIeg tyObject_TIdPair__jFcUgE4X1tLOqan9b4YIIeg;
typedef struct tyTuple__ZUrTP7BFWWFkSv3xO9crp9aQ tyTuple__ZUrTP7BFWWFkSv3xO9crp9aQ;
struct tySequence__9ahcSjIErJohSBBFLwuF56Q {
  NI len; tySequence__9ahcSjIErJohSBBFLwuF56Q_Content* p;
};
struct tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg {
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* owner;
	tySequence__9ahcSjIErJohSBBFLwuF56Q mapping;
	NI formals;
	tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c;
	NIM_BOOL subMatch;
	NIM_BOOL mappingIsFull;
};
struct tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA {
	NI32 module;
	NI32 item;
};
typedef NU8 tyEnum_TSymKind__9a75lHd9cV25XwN4jXXBmM0Q;
typedef NU16 tyEnum_TMagic__I3BbtzbLAKAfOym58MkGAg;
struct tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA {
	NU16 line;
	NI16 col;
	NI32 fileIndex;
};
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 NimStrPayload {
	NI cap;
	NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
	NI len;
	NimStrPayload* p;
};
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 TNimTypeV2 {
	void* destructor;
	NI size;
	NI16 align;
	NI16 depth;
	NU32* display;
	void* traceImpl;
	void* typeInfoV1;
	NI flags;
	void* vTable[SEQ_DECL_SIZE];
};
struct RootObj {
	TNimTypeV2* m_type;
};
struct tyObject_TPassContext__QQOybmyOwFn29csyFzTSLNQ {
	RootObj Sup;
	tyObject_IdGeneratorcolonObjectType___G9bSmxY5z1At9bXNKpE9bKuug* idgen;
};
struct tySequence__AE2UIxl7EbPzzBnmYsjIcw {
  NI len; tySequence__AE2UIxl7EbPzzBnmYsjIcw_Content* p;
};
typedef tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* tyArray__uJvLVbod8mnHGzJkQj89bWg[38];
struct tySequence__ZCZaCk14bTmSb6LMW9aWPVA {
  NI len; tySequence__ZCZaCk14bTmSb6LMW9aWPVA_Content* p;
};
struct tySequence__tsHRsYLyvTCPLlGRExqi7Q {
  NI len; tySequence__tsHRsYLyvTCPLlGRExqi7Q_Content* p;
};
struct tySequence__lAikaRQvUF0uwNAz0U4FFA {
  NI len; tySequence__lAikaRQvUF0uwNAz0U4FFA_Content* p;
};
typedef N_NIMCALL_PTR(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, tyProc__Yik7hgYZHhPeLJ5RsXTPqg) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1, tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* expectedType_p2);
typedef NU32 tySet_tyEnum_TExprFlag__LJ8tOeZrTQZuHS9cNbj1XCg;
typedef N_NIMCALL_PTR(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, tyProc__JIyBW5s9ba7hfYBnWxDVvgg) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1, tySet_tyEnum_TExprFlag__LJ8tOeZrTQZuHS9cNbj1XCg flags_p2, tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* expectedType_p3);
typedef N_NIMCALL_PTR(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, tyProc__iXlRd9cBAN0CQpA5dkyhRvw) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1, tySet_tyEnum_TExprFlag__LJ8tOeZrTQZuHS9cNbj1XCg flags_p2);
typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__7FLV9alRQFu6LOhr9bksExQQ) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* t_p1);
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClP_0) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1, void* ClE_0);
void* ClE_0;
} tyProc__0qHBYUhlP28E2DV7mVNNAg;
typedef N_NIMCALL_PTR(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, tyProc__1nD4dBuhjTAOzMZJo9bmgog) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1);
typedef NU32 tySet_tyEnum_TSymKind__9a75lHd9cV25XwN4jXXBmM0Q;
typedef N_NIMCALL_PTR(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, tyProc__209aOewTLBT6nbWmyvOQFiw) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* nOrig_p2, tySet_tyEnum_TSymKind__9a75lHd9cV25XwN4jXXBmM0Q filter_p3, tySet_tyEnum_TExprFlag__LJ8tOeZrTQZuHS9cNbj1XCg flags_p4, tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* expectedType_p5);
typedef N_NIMCALL_PTR(tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg*, tyProc__D9aXgBooMpgLrPTmha6q31w) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1, tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* prev_p2);
typedef struct {
N_NIMCALL_PTR(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, ClP_0) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_LayeredIdTableObj__PbmRWgwPdgBZOtiSK65Q7A* pt_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2, void* ClE_0);
void* ClE_0;
} tyProc__GbPSPD9bjvt0RIJnnVTczJA;
typedef struct {
N_NIMCALL_PTR(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg*, ClP_0) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* fn_p1, tyObject_LayeredIdTableObj__PbmRWgwPdgBZOtiSK65Q7A* pt_p2, tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA info_p3, void* ClE_0);
void* ClE_0;
} tyProc__iDJMP540ifFac3zJ49bj2cA;
typedef struct {
N_NIMCALL_PTR(tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg*, ClP_0) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_LayeredIdTableObj__PbmRWgwPdgBZOtiSK65Q7A* pt_p1, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* prc_p2, tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA info_p3, void* ClE_0);
void* ClE_0;
} tyProc__gq9a76bauTeymgreaiTI9cmg;
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** n_p1, tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* expectedType_p2, void* ClE_0);
void* ClE_0;
} tyProc__Gji0NjiFFDU49aJiF3QZF8A;
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;
};
struct tyObject_TStrTable__Ry5QUbfaMzlI1Jpe9bUTBDg {
	NI counter;
	tySequence__ZCZaCk14bTmSb6LMW9aWPVA data;
};
struct tySequence__4zAALtm0xUbRlYWQ2V8K7A {
  NI len; tySequence__4zAALtm0xUbRlYWQ2V8K7A_Content* p;
};
typedef NU8 tyEnum_TTypeAttachedOp__RefHoBI5deIfxIZqo3dS5Q;
typedef N_NIMCALL_PTR(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg*, tyProc__UAj9bGJLVN9cwAsTcRZFyWmg) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* dc_p1, tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* t_p2, tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA info_p3, tyEnum_TTypeAttachedOp__RefHoBI5deIfxIZqo3dS5Q op_p4, NI col_p5);
typedef NU32 tySet_tyEnum_Feature__cS3g03qGjroRW9aHnqpz8MQ;
struct tySequence__9bffTLF0HkxjFCzZL8og4GA {
  NI len; tySequence__9bffTLF0HkxjFCzZL8og4GA_Content* p;
};
struct tySequence__Bis5AbpONWcIRrPyPJS8Yw {
  NI len; tySequence__Bis5AbpONWcIRrPyPJS8Yw_Content* p;
};
struct tyObject_HashSet__cx4zJRA9aTCfmpbY2J9bKwnQ {
	tySequence__Bis5AbpONWcIRrPyPJS8Yw data;
	NI counter;
};
struct tySequence__E8pi9b5QNahsURYzXMjh3qw {
  NI len; tySequence__E8pi9b5QNahsURYzXMjh3qw_Content* p;
};
struct tyObject_Table__nBRoNCTSfpfbfAeK9bNW1qw {
	tySequence__E8pi9b5QNahsURYzXMjh3qw data;
	NI counter;
};
struct tySequence__3B6hFqG0Do0FxDvnNucL7w {
  NI len; tySequence__3B6hFqG0Do0FxDvnNucL7w_Content* p;
};
struct tyObject_Table__g77QNejuRRKraNk8K2YkoA {
	tySequence__3B6hFqG0Do0FxDvnNucL7w data;
	NI counter;
};
struct tySequence__QqvaCqCpEE1QmQZbcZLi5A {
  NI len; tySequence__QqvaCqCpEE1QmQZbcZLi5A_Content* p;
};
struct tyObject_Table__toCaB3NxiVHPRVLgcez0Xg {
	tySequence__QqvaCqCpEE1QmQZbcZLi5A data;
	NI counter;
};
typedef NU8 tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw;
typedef N_NIMCALL_PTR(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, tyProc__bvRec9bo79ajqrJt3Bkg9c33w) (tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1, tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw k_p2);
struct tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw {
	tyObject_TPassContext__QQOybmyOwFn29csyFzTSLNQ Sup;
	tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* enforceVoidContext;
	tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* voidType;
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* module;
	tyObject_TScope__x7gU4GnNOGxq5tpoU40Lww* currentScope;
	tyObject_TScope__x7gU4GnNOGxq5tpoU40Lww* moduleScope;
	tySequence__AE2UIxl7EbPzzBnmYsjIcw imports;
	tyObject_TScope__x7gU4GnNOGxq5tpoU40Lww* topLevelScope;
	tyObject_TProcCon__ftBtv4UEhPouLts4uXXNLQ* p;
	tyArray__uJvLVbod8mnHGzJkQj89bWg intTypeCache;
	tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* nilTypeCache;
	tyObject_TMatchedConcept__tvh59a8SIGC9ccJV9atmyb8kg* matchedConcept;
	tySequence__ZCZaCk14bTmSb6LMW9aWPVA friendModules;
	NI instCounter;
	NI* templInstCounter;
	NI inGenericContext;
	NI inStaticContext;
	NI inUnrolledContext;
	NI compilesContextId;
	NI compilesContextIdGenerator;
	NI inGenericInst;
	tySequence__ZCZaCk14bTmSb6LMW9aWPVA converters;
	tySequence__ZCZaCk14bTmSb6LMW9aWPVA patterns;
	tySequence__tsHRsYLyvTCPLlGRExqi7Q optionStack;
	tySequence__lAikaRQvUF0uwNAz0U4FFA libs;
	tyProc__Yik7hgYZHhPeLJ5RsXTPqg semConstExpr;
	tyProc__JIyBW5s9ba7hfYBnWxDVvgg semExpr;
	tyProc__JIyBW5s9ba7hfYBnWxDVvgg semExprWithType;
	tyProc__iXlRd9cBAN0CQpA5dkyhRvw semTryExpr;
	tyProc__Yik7hgYZHhPeLJ5RsXTPqg semTryConstExpr;
	tyProc__7FLV9alRQFu6LOhr9bksExQQ computeRequiresInit;
	tyProc__0qHBYUhlP28E2DV7mVNNAg hasUnresolvedArgs;
	tyProc__iXlRd9cBAN0CQpA5dkyhRvw semOperand;
	tyProc__1nD4dBuhjTAOzMZJo9bmgog semConstBoolExpr;
	tyProc__209aOewTLBT6nbWmyvOQFiw semOverloadedCall;
	tyProc__D9aXgBooMpgLrPTmha6q31w semTypeNode;
	tyProc__GbPSPD9bjvt0RIJnnVTczJA semInferredLambda;
	tyProc__iDJMP540ifFac3zJ49bj2cA semGenerateInstance;
	tyProc__gq9a76bauTeymgreaiTI9cmg instantiateOnlyProcType;
	tyProc__Gji0NjiFFDU49aJiF3QZF8A fitDefaultNode;
	tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA includedFiles;
	tyObject_TStrTable__Ry5QUbfaMzlI1Jpe9bUTBDg pureEnumFields;
	tyObject_TStrTable__Ry5QUbfaMzlI1Jpe9bUTBDg userPragmas;
	tyObject_TCtx__FHLmhXedV9bg0OyLunsHRew* evalContext;
	tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA unknownIdents;
	tySequence__4zAALtm0xUbRlYWQ2V8K7A generics;
	NI topStmts;
	NI lastGenericIdx;
	NI inParallelStmt;
	tyProc__UAj9bGJLVN9cwAsTcRZFyWmg instTypeBoundOp;
	tyObject_IdentCachecolonObjectType___ieLwK4T49bbUIZTTVH9cycZA* cache;
	tyObject_ModuleGraphcolonObjectType___TuJBn0NOJllZfOUYECIyKw* graph;
	tyObject_TStrTable__Ry5QUbfaMzlI1Jpe9bUTBDg signatures;
	NimStringV2 recursiveDep;
	NIM_BOOL suggestionsMade;
	NIM_BOOL isAmbiguous;
	tySet_tyEnum_Feature__cS3g03qGjroRW9aHnqpz8MQ features;
	NI inTypeContext;
	NI inConceptDecl;
	tySequence__9bffTLF0HkxjFCzZL8og4GA unusedImports;
	tyObject_HashSet__cx4zJRA9aTCfmpbY2J9bKwnQ exportIndirections;
	tyObject_Table__nBRoNCTSfpfbfAeK9bNW1qw importModuleMap;
	tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA lastTLineInfo;
	tyObject_Table__g77QNejuRRKraNk8K2YkoA sideEffects;
	NI inUncheckedAssignSection;
	tyObject_Table__toCaB3NxiVHPRVLgcez0Xg importModuleLookup;
	tySequence__9ahcSjIErJohSBBFLwuF56Q skipTypes;
	NI inTypeofContext;
	tyProc__bvRec9bo79ajqrJt3Bkg9c33w semAsgnOpr;
};
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 NU32 tySet_tyEnum_TNodeFlag__3UjGgL9bLM4RXBnoZJs9cviw;
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;
};
};
typedef NU8 tyEnum_TNodeFlag__3UjGgL9bLM4RXBnoZJs9cviw;
struct tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA {
	NI id;
	NimStringV2 s;
	tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA* next;
	NI h;
};
typedef NU16 tySet_tyEnum_TTypeCmpFlag__1219bojhd9apB6FQkQGJbzzQ;
struct tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg {
	RootObj Sup;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p0;
};
struct tyObject_RefHeader__GDnGTjNyvwISJbkIvAst3A {
	NI rc;
	NI rootIdx;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClP_0) (tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* op_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* arglist_p3, NIM_BOOL rpn_p4, void* ClE_0);
void* ClE_0;
} tyProc__ofFPKqSYZ9bsQIIdKsxxW9bQ;
typedef N_CLOSURE_PTR(NIM_BOOL, TM__1E9cVLQUjhbw81lEou89bC9bw_11) (tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* op_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* arglist_p3, NIM_BOOL rpn_p4);
typedef N_CLOSURE_PTR(NIM_BOOL, TM__1E9cVLQUjhbw81lEou89bC9bw_12) (tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* op_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* arglist_p3, NIM_BOOL rpn_p4);
typedef N_CLOSURE_PTR(NIM_BOOL, TM__1E9cVLQUjhbw81lEou89bC9bw_13) (tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* op_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* arglist_p3, NIM_BOOL rpn_p4);
typedef NU8 tyEnum_TAliasRequest__agH0cHTwuKHcbz8bKC9cyVQ;
typedef NU8 tyEnum_TAnalysisResult__Y9b4HDQn2qbT5xWKGFH75iQ;
struct tySequence__9ahcSjIErJohSBBFLwuF56Q_Content { NI cap; tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* data[SEQ_DECL_SIZE]; };
typedef NU8 tyEnum_ImportMode__rHuf2PYQqUqEBlVu227wVQ;
struct tyObject_ImportedModule__NhRLdOPUbh9bmcDLjImMKWw {
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* m;
	tyEnum_ImportMode__rHuf2PYQqUqEBlVu227wVQ mode;
union{
	struct {
	tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA imported;
} _mode_2;
	struct {
	tyObject_PackedSet__uMCH0vzAEgrsmOKwCWxFrA exceptSet;
} _mode_3;
};
};
struct tySequence__AE2UIxl7EbPzzBnmYsjIcw_Content { NI cap; tyObject_ImportedModule__NhRLdOPUbh9bmcDLjImMKWw data[SEQ_DECL_SIZE]; };
struct tySequence__ZCZaCk14bTmSb6LMW9aWPVA_Content { NI cap; tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* data[SEQ_DECL_SIZE]; };
struct tySequence__tsHRsYLyvTCPLlGRExqi7Q_Content { NI cap; tyObject_TOptionEntry__KeABxBvAlGa1KroFfkcqAg* data[SEQ_DECL_SIZE]; };
struct tySequence__lAikaRQvUF0uwNAz0U4FFA_Content { NI cap; tyObject_TLib__sVuuRvQkiYNOUiPRZhmZig* data[SEQ_DECL_SIZE]; };
struct tySequence__7OXYQ6bHRkhJpRaiS7kiwQ {
  NI len; tySequence__7OXYQ6bHRkhJpRaiS7kiwQ_Content* p;
};
struct tyObject_TIdTable__XZ9cFaLoittQMULJSfBpHrA {
	NI counter;
	tySequence__7OXYQ6bHRkhJpRaiS7kiwQ data;
};
struct tyObject_LayeredIdTableObj__PbmRWgwPdgBZOtiSK65Q7A {
	tyObject_TIdTable__XZ9cFaLoittQMULJSfBpHrA topLayer;
	tyObject_LayeredIdTableObj__PbmRWgwPdgBZOtiSK65Q7A* nextLayer;
	NI previousLen;
};
struct tySequence__ZeWVlH6DqG79b1pTDhrrUYA_Content { NI cap; tyObject_TrunkcolonObjectType___lmbdIZwAo9agPlTE1wBREkA* data[SEQ_DECL_SIZE]; };
struct tyObject_TInstantiationPair__bS87nlCVAcAYxO9aJequmYw {
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* genericSym;
	tyObject_TInstantiation__jr8MibvPn2sQBnO7XCoZRQ* inst;
};
struct tySequence__4zAALtm0xUbRlYWQ2V8K7A_Content { NI cap; tyObject_TInstantiationPair__bS87nlCVAcAYxO9aJequmYw data[SEQ_DECL_SIZE]; };
struct tyTuple__09aD69az7aYn14Gt61AHvLIA {
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* Field0;
	tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA Field1;
};
struct tySequence__9bffTLF0HkxjFCzZL8og4GA_Content { NI cap; tyTuple__09aD69az7aYn14Gt61AHvLIA data[SEQ_DECL_SIZE]; };
struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ {
	NI Field0;
	NI Field1;
};
struct tyTuple__NAaJgGVgNmlGoqmiWxdOHQ {
	NI Field0;
	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ Field1;
};
struct tySequence__Bis5AbpONWcIRrPyPJS8Yw_Content { NI cap; tyTuple__NAaJgGVgNmlGoqmiWxdOHQ data[SEQ_DECL_SIZE]; };
struct tyTuple__47w2DboNEPf69aPgubZdd7Q {
	NI Field0;
	NI Field1;
	NI Field2;
};
struct tySequence__E8pi9b5QNahsURYzXMjh3qw_Content { NI cap; tyTuple__47w2DboNEPf69aPgubZdd7Q data[SEQ_DECL_SIZE]; };
struct tySequence__KYLoGmc5aaHsSDjEH1FTxQ {
  NI len; tySequence__KYLoGmc5aaHsSDjEH1FTxQ_Content* p;
};
struct tyTuple__CH9a39cWKma9c9c9cYqCyX1wBsw {
	NI Field0;
	NI Field1;
	tySequence__KYLoGmc5aaHsSDjEH1FTxQ Field2;
};
struct tySequence__3B6hFqG0Do0FxDvnNucL7w_Content { NI cap; tyTuple__CH9a39cWKma9c9c9cYqCyX1wBsw data[SEQ_DECL_SIZE]; };
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
  NI len; tySequence__qwqHTkRvwhrRyENtudHQ7g_Content* p;
};
struct tyTuple__EbsafWGli8bW2GRJQ9apsjA {
	NI Field0;
	NI Field1;
	tySequence__qwqHTkRvwhrRyENtudHQ7g Field2;
};
struct tySequence__QqvaCqCpEE1QmQZbcZLi5A_Content { NI cap; tyTuple__EbsafWGli8bW2GRJQ9apsjA data[SEQ_DECL_SIZE]; };
struct tySequence__d8ZV4IMgHt9biik9cS9a0hrmg_Content { NI cap; tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* data[SEQ_DECL_SIZE]; };
struct tyObject_TIdPair__jFcUgE4X1tLOqan9b4YIIeg {
	tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA key;
	tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* val;
};
struct tySequence__7OXYQ6bHRkhJpRaiS7kiwQ_Content { NI cap; tyObject_TIdPair__jFcUgE4X1tLOqan9b4YIIeg data[SEQ_DECL_SIZE]; };
struct tyTuple__ZUrTP7BFWWFkSv3xO9crp9aQ {
	tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA Field0;
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* Field1;
};
struct tySequence__KYLoGmc5aaHsSDjEH1FTxQ_Content { NI cap; tyTuple__ZUrTP7BFWWFkSv3xO9crp9aQ data[SEQ_DECL_SIZE]; };
struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content { NI cap; NI 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(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg*, eqdup___ast_u4580)(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* src_p0);
N_LIB_PRIVATE N_NIMCALL(tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw*, eqdup___semdata_u4222)(tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* src_p0, NIM_BOOL cyclic_p1);
static N_INLINE(NI, paramsLen__ast_u5616)(tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* t_p0);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, matchStmtList__patterns_u299)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2);
static N_INLINE(NI, len__ast_u3190)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, flattenStmts__trees_u359)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, matchRange__patterns_u304)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2, NI i_p3);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, matches__patterns_u30)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, skipHidden__types_u3741)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
static N_INLINE(NIM_BOOL, isPatternParam__patterns_u99)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1);
static N_INLINE(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg*, owner__ast_u6254)(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* s_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___ast_u4577)(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg** dest_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* src_p1);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_u4574)(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* dest_p0);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, bindOrCheck__patterns_u128)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* param_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, getLazy__patterns_u18)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* sym_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___ast_u3255)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** dest_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* src_p1);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTrees__patterns_u49)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* a_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* b_p1);
static N_INLINE(NIM_BOOL, sameKinds__patterns_u37)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* a_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* b_p1);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw, canonKind__patterns_u34)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_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(NIM_BOOL, sameTypeOrNil__types_u1851)(tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* a_p0, tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* b_p1, tySet_tyEnum_TTypeCmpFlag__1219bojhd9apB6FQkQGJbzzQ flags_p2);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, checkTypes__patterns_u83)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, matchNodeKinds__parampatterns_u498)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, argtypeMatches__sigmatch_u5224)(tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* f_p1, tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* a_p2, NIM_BOOL fromHlo_p3);
N_LIB_PRIVATE N_NIMCALL(void, putLazy__patterns_u22)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* sym_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2);
N_LIB_PRIVATE N_NIMCALL(void, newSeq__ast_u4100)(tySequence__9ahcSjIErJohSBBFLwuF56Q* s_p0, NI len_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_u3252)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* dest_p0);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, inSymChoice__patterns_u62)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* sc_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* x_p1);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, astdef__ast_u4596)(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* s_p0);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, matchChoice__patterns_u118)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, matchNested__patterns_u155)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2, NIM_BOOL rpn_p3);
N_LIB_PRIVATE N_NIMCALL(void*, nimNewObj)(NI size_p0, NI alignment_p1);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__patterns_u636)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___patterns_u571)(tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg* 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_u3127)(tyObject_RefHeader__GDnGTjNyvwISJbkIvAst3A* s_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_u3270)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, nimRawDispose)(void* p_p0, NI alignment_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___patterns_u602)(tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg* dest_p0);
static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicStatic)(void* p_p0, TNimTypeV2* desc_p1);
N_LIB_PRIVATE N_NOINLINE(void, rememberCycle__system_u3497)(NIM_BOOL isDestroyAction_p0, tyObject_RefHeader__GDnGTjNyvwISJbkIvAst3A* s_p1, TNimTypeV2* desc_p2);
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_CLOSURE(NIM_BOOL, matchStarAux__patterns_u161)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* op_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* arglist_p3, NIM_BOOL rpn_p4, void* ClE_0);
N_LIB_PRIVATE N_NIMCALL(void, add__ast_u3215)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* father_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* son_p1);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u79)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, gather__patterns_u142)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* param_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2);
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_u4095)(tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw kind_p0, tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA info_p1, NI children_p2);
static N_INLINE(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, lastSon__ast_u5208)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
static N_INLINE(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ**, X5BX5D___ast_u5211)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** s_p0, NI s_p0Len_0, NI i_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___ast_u3705)(tySequence__9ahcSjIErJohSBBFLwuF56Q* dest_p0, tySequence__9ahcSjIErJohSBBFLwuF56Q src_p1);
N_LIB_PRIVATE N_NIMCALL(void*, newSeqPayload)(NI cap_p0, NI elemSize_p1, NI elemAlign_p2);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, extractRange__trees_u362)(tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw k_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1, NI a_p2, NI b_p3);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___patterns_u423)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* dest_p0);
static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicDyn)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, nimDestroyAndDispose)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_u3696)(tySequence__9ahcSjIErJohSBBFLwuF56Q dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_u3469)(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* dest_p0);
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, newSymNode__ast_u5171)(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* sym_p0, tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA info_p1);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, aliasAnalysisRequested__patterns_u333)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* params_p0);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TAliasRequest__agH0cHTwuKHcbz8bKC9cyVQ, whichAlias__parampatterns_u49)(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, addToArgList__patterns_u347)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* result_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1);
static N_INLINE(NI, safeLen__ast_u3197)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
N_LIB_PRIVATE N_NIMCALL(tyEnum_TAnalysisResult__Y9b4HDQn2qbT5xWKGFH75iQ, isPartOf__aliases_u120)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* a_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* b_p1);
N_LIB_PRIVATE N_NIMCALL(void, markUsed__sigmatch_u100)(tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA info_p1, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* s_p2, NIM_BOOL checkStyle_p3, NIM_BOOL isGenericInstance_p4);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___ast_u3249)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** dest_p0);
static const struct {
  NI cap; NIM_CHAR data[1+1];
} TM__1E9cVLQUjhbw81lEou89bC9bw_2 = { 1 | NIM_STRLIT_FLAG, "|" };
static const NimStringV2 TM__1E9cVLQUjhbw81lEou89bC9bw_3 = {1, (NimStrPayload*)&TM__1E9cVLQUjhbw81lEou89bC9bw_2};
static const struct {
  NI cap; NIM_CHAR data[1+1];
} TM__1E9cVLQUjhbw81lEou89bC9bw_4 = { 1 | NIM_STRLIT_FLAG, "*" };
static const NimStringV2 TM__1E9cVLQUjhbw81lEou89bC9bw_5 = {1, (NimStrPayload*)&TM__1E9cVLQUjhbw81lEou89bC9bw_4};
static const struct {
  NI cap; NIM_CHAR data[2+1];
} TM__1E9cVLQUjhbw81lEou89bC9bw_6 = { 2 | NIM_STRLIT_FLAG, "**" };
static const NimStringV2 TM__1E9cVLQUjhbw81lEou89bC9bw_7 = {2, (NimStrPayload*)&TM__1E9cVLQUjhbw81lEou89bC9bw_6};
static const struct {
  NI cap; NIM_CHAR data[1+1];
} TM__1E9cVLQUjhbw81lEou89bC9bw_8 = { 1 | NIM_STRLIT_FLAG, "~" };
static const NimStringV2 TM__1E9cVLQUjhbw81lEou89bC9bw_9 = {1, (NimStrPayload*)&TM__1E9cVLQUjhbw81lEou89bC9bw_8};
N_LIB_PRIVATE TNimTypeV2 NTIv2__xivRWb4n9cxYt05xoJ9cPSKg_;
static const struct {
  NI cap; NIM_CHAR data[45+1];
} TM__1E9cVLQUjhbw81lEou89bC9bw_14 = { 45 | NIM_STRLIT_FLAG, "patterns.nim(177, 15) `false` invalid pattern" };
static const NimStringV2 TM__1E9cVLQUjhbw81lEou89bC9bw_15 = {45, (NimStrPayload*)&TM__1E9cVLQUjhbw81lEou89bC9bw_14};
extern NIM_BOOL nimInErrorMode__system_u4143;
static NIM_CONST NU32 TM__1E9cVLQUjhbw81lEou89bC9bw_10[2] = {3701606400, 735140096};
N_LIB_PRIVATE TNimTypeV2 NTIv2__xivRWb4n9cxYt05xoJ9cPSKg_ = {.destructor = (void*)rttiDestroy__patterns_u636, .size = sizeof(tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg), .align = (NI16) NIM_ALIGNOF(tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg), .depth = 1, .display = TM__1E9cVLQUjhbw81lEou89bC9bw_10, .traceImpl = (void*)NIM_NIL, .flags = 0};
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(NI, paramsLen__ast_u5616)(tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* t_p0) {
	NI result;
	NI T1_;
	T1_ = (*t_p0).sons.len;
	result = (NI)(T1_ - ((NI)1));
	return result;
}
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;
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
	NIM_BOOL* result;
	result = (&nimInErrorMode__system_u4143);
	return result;
}
static N_INLINE(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg*, owner__ast_u6254)(tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* s_p0) {
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = NIM_NIL;
	eqcopy___ast_u4577(&result, (*s_p0).ownerField);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NIM_BOOL, isPatternParam__patterns_u99)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1) {
	NIM_BOOL result;
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* colontmpD_;
	NIM_BOOL T1_;
	NIM_BOOL T2_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	colontmpD_ = NIM_NIL;
	T1_ = (NIM_BOOL)0;
	T2_ = (NIM_BOOL)0;
	T2_ = ((*p_p1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3));
	if (!(T2_)) goto LA3_;
	T2_ = ((*(*p_p1)._kind_4.sym).kind == ((tyEnum_TSymKind__9a75lHd9cV25XwN4jXXBmM0Q)3));
LA3_: ;
	T1_ = T2_;
	if (!(T1_)) goto LA4_;
	colontmpD_ = owner__ast_u6254((*p_p1)._kind_4.sym);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T1_ = (colontmpD_ == (*c_p0).owner);
LA4_: ;
	result = T1_;
	eqdestroy___ast_u4574(colontmpD_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, getLazy__patterns_u18)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* sym_p1) {
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = NIM_NIL;
	{
		if (!(*c_p0).mappingIsFull) goto LA3_;
		eqcopy___ast_u3255(&result, (*c_p0).mapping.p->data[(*sym_p1).position]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	goto LA1_;
LA3_: ;
	{
		result = ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL);
	}
LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw, canonKind__patterns_u34)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0) {
	tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw result;
	result = (*n_p0).kind;
	switch (result) {
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)26) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)32):
	{
		result = ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)27);
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)20) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)22):
	{
		result = ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)20);
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)74):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)149):
	{
		result = ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)73);
	}
	break;
	default:
	{
	}
	break;
	}
	return result;
}
static N_INLINE(NIM_BOOL, sameKinds__patterns_u37)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* a_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* b_p1) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw T3_;
	tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw T4_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	T1_ = (NIM_BOOL)0;
	T1_ = ((*a_p0).kind == (*b_p1).kind);
	if (T1_) goto LA2_;
	T3_ = (tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)0;
	T3_ = canonKind__patterns_u34(a_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T4_ = (tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)0;
	T4_ = canonKind__patterns_u34(b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T1_ = (T3_ == T4_);
LA2_: ;
	result = T1_;
	}BeforeRet_: ;
	return result;
}
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;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTrees__patterns_u49)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* a_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* b_p1) {
	NIM_BOOL result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = sameKinds__patterns_u37(a_p0, b_p1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		if (!T3_) goto LA4_;
		switch ((*a_p0).kind) {
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3):
		{
			result = ((*a_p0)._kind_4.sym == (*b_p1)._kind_4.sym);
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)2):
		{
			result = ((*(*a_p0)._kind_5.ident).id == (*(*b_p1)._kind_5.ident).id);
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)5) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)10):
		{
			result = ((*a_p0)._kind_1.intVal == (*b_p1)._kind_1.intVal);
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)16) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)18):
		{
			result = ((*a_p0)._kind_2.floatVal == (*b_p1)._kind_2.floatVal);
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)20) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)22):
		{
			result = eqStrings((*a_p0)._kind_3.strVal, (*b_p1)._kind_3.strVal);
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)1):
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)23):
		{
			result = NIM_TRUE;
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)4):
		{
			tySet_tyEnum_TTypeCmpFlag__1219bojhd9apB6FQkQGJbzzQ T13_;
			T13_ = 0;
			result = sameTypeOrNil__types_u1851((*a_p0).typField, (*b_p1).typField, T13_);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
		break;
		default:
		{
			{
				NI T17_;
				NI T18_;
				T17_ = (NI)0;
				T17_ = len__ast_u3190(a_p0);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				T18_ = (NI)0;
				T18_ = len__ast_u3190(b_p1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				if (!(T17_ == T18_)) goto LA19_;
				{
					NI i_1;
					NI colontmp_;
					NI i_2;
					i_1 = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = len__ast_u3190(a_p0);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					i_2 = ((NI)0);
					{
						while (1) {
							if (!(i_2 < colontmp_)) goto LA23;
							i_1 = i_2;
							{
								NIM_BOOL T26_;
								T26_ = (NIM_BOOL)0;
								T26_ = sameTrees__patterns_u49((*a_p0)._kind_6.sons.p->data[i_1], (*b_p1)._kind_6.sons.p->data[i_1]);
								if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
								if (!!(T26_)) goto LA27_;
								goto BeforeRet_;
							}
LA27_: ;
							i_2 += ((NI)1);
						} LA23: ;
					}
				}
				result = NIM_TRUE;
			}
			goto LA15_;
LA19_: ;
			{
				result = NIM_FALSE;
			}
LA15_: ;
		}
		break;
		}
	}
	goto LA1_;
LA4_: ;
	{
		result = NIM_FALSE;
	}
LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, checkTypes__patterns_u83)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2) {
	NIM_BOOL result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	{
		if (!!(((*p_p1).constraint == ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL)))) goto LA3_;
		result = matchNodeKinds__parampatterns_u498((*p_p1).constraint, n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		{
			if (!!(result)) goto LA7_;
			goto BeforeRet_;
		}
LA7_: ;
	}
LA3_: ;
	{
		if (!((*n_p2).typField == 0)) goto LA11_;
		result = ((*(*p_p1).typ).kind == ((tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg)63) || (*(*p_p1).typ).kind == ((tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg)7));
	}
	goto LA9_;
LA11_: ;
	{
		result = argtypeMatches__sigmatch_u5224((*c_p0).c, (*p_p1).typ, (*n_p2).typField, NIM_TRUE);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA9_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, putLazy__patterns_u22)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* sym_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	{
		if (!!((*c_p0).mappingIsFull)) goto LA3_;
		newSeq__ast_u4100((&(*c_p0).mapping), ((*c_p0).formals));
		(*c_p0).mappingIsFull = NIM_TRUE;
	}
LA3_: ;
	eqcopy___ast_u3255(&(*c_p0).mapping.p->data[(*sym_p1).position], n_p2);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, bindOrCheck__patterns_u128)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* param_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2) {
	NIM_BOOL result;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* pp_1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	pp_1 = NIM_NIL;
	pp_1 = getLazy__patterns_u18(c_p0, param_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	{
		if (!!((pp_1 == ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL)))) goto LA4_;
		result = sameTrees__patterns_u49(pp_1, n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	}
	goto LA2_;
LA4_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = ((*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)152));
		if (T7_) goto LA8_;
		T7_ = checkTypes__patterns_u83(c_p0, param_p1, n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
LA8_: ;
		if (!T7_) goto LA9_;
		putLazy__patterns_u22(c_p0, param_p1, n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		result = NIM_TRUE;
	}
	goto LA2_;
LA9_: ;
	{
		result = NIM_FALSE;
	}
LA2_: ;
	{
		LA1_:;
	}
	{
		oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
		eqdestroy___ast_u3252(pp_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		*nimErr_ = oldNimErrFin1_;
	}
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, inSymChoice__patterns_u62)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* sc_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* x_p1) {
	NIM_BOOL result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	{
		if (!((*sc_p0).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)56))) goto LA3_;
		result = NIM_FALSE;
		{
			NI i_1;
			NI colontmp_;
			NI i_2;
			i_1 = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__ast_u3190(sc_p0);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			i_2 = ((NI)0);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA7;
					i_1 = i_2;
					{
						if (!((*(*sc_p0)._kind_6.sons.p->data[i_1])._kind_4.sym == (*x_p1)._kind_4.sym)) goto LA10_;
						result = NIM_TRUE;
						goto BeforeRet_;
					}
LA10_: ;
					i_2 += ((NI)1);
				} LA7: ;
			}
		}
	}
	goto LA1_;
LA3_: ;
	{
		if (!((*sc_p0).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)57) || (*sc_p0).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)165))) goto LA13_;
		result = ((*(*(*(*sc_p0)._kind_6.sons.p->data[((NI)0)])._kind_4.sym).name).id == (*(*(*x_p1)._kind_4.sym).name).id);
	}
	goto LA1_;
LA13_: ;
	{
		result = NIM_FALSE;
	}
LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, matchChoice__patterns_u118)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2) {
	NIM_BOOL result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = NIM_FALSE;
	{
		NI i_1;
		NI colontmp_;
		NI i_2;
		i_1 = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len__ast_u3190(p_p1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		i_2 = ((NI)1);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				i_1 = i_2;
				{
					NIM_BOOL T6_;
					T6_ = (NIM_BOOL)0;
					T6_ = matches__patterns_u30(c_p0, (*p_p1)._kind_6.sons.p->data[i_1], n_p2);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					if (!T6_) goto LA7_;
					result = NIM_TRUE;
					goto BeforeRet_;
				}
LA7_: ;
				i_2 += ((NI)1);
			} LA3: ;
		}
	}
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, minuspercent___system_u805)(NI x_p0, NI y_p1) {
	NI result;
	result = ((NI) ((NU)((NU64)(((NU) (x_p0))) - (NU64)(((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)16));
		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_u3127(cell_1);
			}
LA17_: ;
		}
LA13_: ;
	}
LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___patterns_u571)(tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg* dest_p0) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = nimDecRefIsLastDyn((*dest_p0).p0);
		if (!T3_) goto LA4_;
		eqdestroy___ast_u3270((&(*(*dest_p0).p0)));
		nimRawDispose((*dest_p0).p0, ((NI)8));
	}
LA4_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__patterns_u636)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	eqdestroy___patterns_u571((&(*((tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg*) (dest_p0)))));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicStatic)(void* p_p0, TNimTypeV2* desc_p1) {
	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)16));
		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_: ;
		rememberCycle__system_u3497(result, cell_1, desc_p1);
	}
LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___patterns_u602)(tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg* dest_p0) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = nimDecRefIsLastCyclicStatic(dest_p0, ((TNimTypeV2*) ((&NTIv2__xivRWb4n9cxYt05xoJ9cPSKg_))));
		if (!T3_) goto LA4_;
		eqdestroy___patterns_u571((&(*dest_p0)));
		nimRawDispose(dest_p0, ((NI)8));
	}
LA4_: ;
}
N_LIB_PRIVATE N_CLOSURE(NIM_BOOL, matchStarAux__patterns_u161)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* op_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* arglist_p3, NIM_BOOL rpn_p4, void* ClE_0) {
	NIM_BOOL result;
	tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg* colonenvP__1;
NIM_BOOL oldNimErrFin25_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	colonenvP__1 = (tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg*) ClE_0;
	result = NIM_TRUE;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)27) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)29) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)30) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)31) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)26) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)28) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)32));
		if (!(T3_)) goto LA4_;
		T3_ = matches__patterns_u30(c_p0, (*op_p1)._kind_6.sons.p->data[((NI)1)], (*n_p2)._kind_6.sons.p->data[((NI)0)]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
LA4_: ;
		if (!T3_) goto LA5_;
		{
			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)1);
			{
				while (1) {
					if (!(i_2 < colontmp_)) goto LA9;
					i_1 = i_2;
					{
						tyProc__ofFPKqSYZ9bsQIIdKsxxW9bQ T12_;
						NIM_BOOL T13_;
						nimZeroMem((void*)(&T12_), sizeof(tyProc__ofFPKqSYZ9bsQIIdKsxxW9bQ));
						T12_.ClP_0 = matchStarAux__patterns_u161; T12_.ClE_0 = colonenvP__1;
						T13_ = (NIM_BOOL)0;
						T13_ = T12_.ClE_0? T12_.ClP_0(c_p0, op_p1, (*n_p2)._kind_6.sons.p->data[i_1], arglist_p3, rpn_p4, T12_.ClE_0):((TM__1E9cVLQUjhbw81lEou89bC9bw_11)(T12_.ClP_0))(c_p0, op_p1, (*n_p2)._kind_6.sons.p->data[i_1], arglist_p3, rpn_p4);
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						if (!!(T13_)) goto LA14_;
						result = NIM_FALSE;
						goto BeforeRet_;
					}
LA14_: ;
					i_2 += ((NI)1);
				} LA9: ;
			}
		}
		{
			if (!rpn_p4) goto LA18_;
			add__ast_u3215(arglist_p3, (*n_p2)._kind_6.sons.p->data[((NI)0)]);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
LA18_: ;
	}
	goto LA1_;
LA5_: ;
	{
		NIM_BOOL T21_;
		tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_2;
		T21_ = (NIM_BOOL)0;
		T21_ = ((*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)58));
		if (!(T21_)) goto LA22_;
		T21_ = ((*(*n_p2)._kind_6.sons.p->data[((NI)1)]).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)41));
LA22_: ;
		if (!T21_) goto LA23_;
		n_2 = NIM_NIL;
		eqcopy___ast_u3255(&n_2, (*n_p2)._kind_6.sons.p->data[((NI)1)]);
		if (NIM_UNLIKELY(*nimErr_)) goto LA25_;
		{
			NI i_3;
			NI colontmp__2;
			NI i_4;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len__ast_u3190(n_2);
			if (NIM_UNLIKELY(*nimErr_)) goto LA25_;
			i_4 = ((NI)0);
			{
				while (1) {
					if (!(i_4 < colontmp__2)) goto LA28;
					i_3 = i_4;
					{
						tyProc__ofFPKqSYZ9bsQIIdKsxxW9bQ T31_;
						NIM_BOOL T32_;
						nimZeroMem((void*)(&T31_), sizeof(tyProc__ofFPKqSYZ9bsQIIdKsxxW9bQ));
						T31_.ClP_0 = matchStarAux__patterns_u161; T31_.ClE_0 = colonenvP__1;
						T32_ = (NIM_BOOL)0;
						T32_ = T31_.ClE_0? T31_.ClP_0(c_p0, op_p1, (*n_2)._kind_6.sons.p->data[i_3], arglist_p3, rpn_p4, T31_.ClE_0):((TM__1E9cVLQUjhbw81lEou89bC9bw_12)(T31_.ClP_0))(c_p0, op_p1, (*n_2)._kind_6.sons.p->data[i_3], arglist_p3, rpn_p4);
						if (NIM_UNLIKELY(*nimErr_)) goto LA25_;
						if (!!(T32_)) goto LA33_;
						result = NIM_FALSE;
						eqdestroy___ast_u3252(n_2);
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						goto BeforeRet_;
					}
LA33_: ;
					i_4 += ((NI)1);
				} LA28: ;
			}
		}
		{
			LA25_:;
		}
		{
			oldNimErrFin25_ = *nimErr_; *nimErr_ = NIM_FALSE;
			eqdestroy___ast_u3252(n_2);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			*nimErr_ = oldNimErrFin25_;
		}
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	goto LA1_;
LA23_: ;
	{
		NIM_BOOL T38_;
		T38_ = (NIM_BOOL)0;
		T38_ = checkTypes__patterns_u83(c_p0, (*(*(*colonenvP__1).p0)._kind_6.sons.p->data[((NI)2)])._kind_4.sym, n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		if (!T38_) goto LA39_;
		add__ast_u3215(arglist_p3, n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	goto LA1_;
LA39_: ;
	{
		result = NIM_FALSE;
	}
LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, matchNested__patterns_u155)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2, NIM_BOOL rpn_p3) {
	NIM_BOOL result;
	tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg* colonenv__1;
	tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg* T2_;
NIM_BOOL oldNimErrFin12_;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	colonenv__1 = NIM_NIL;
	T2_ = NIM_NIL;
	T2_ = (tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg*) nimNewObj(sizeof(tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg), NIM_ALIGNOF(tyObject_Env_patternsdotnim_matchNested___xivRWb4n9cxYt05xoJ9cPSKg));
	(*T2_).Sup.m_type = (&NTIv2__xivRWb4n9cxYt05xoJ9cPSKg_);
	colonenv__1 = T2_;
	eqcopy___ast_u3255(&(*colonenv__1).p0, p_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	{
		if (!!(((*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)27) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)29) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)30) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)31) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)26) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)28) || (*n_p2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)32)))) goto LA5_;
		result = NIM_FALSE;
		eqdestroy___patterns_u602(colonenv__1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		goto BeforeRet_;
	}
LA5_: ;
	{
		NIM_BOOL T9_;
		tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* arglist_1;
		T9_ = (NIM_BOOL)0;
		T9_ = matches__patterns_u30(c_p0, (*(*colonenv__1).p0)._kind_6.sons.p->data[((NI)1)], (*n_p2)._kind_6.sons.p->data[((NI)0)]);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		if (!T9_) goto LA10_;
		arglist_1 = NIM_NIL;
		arglist_1 = newNodeI__ast_u4091(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)152), (*n_p2).info);
		if (NIM_UNLIKELY(*nimErr_)) goto LA12_;
		{
			tyProc__ofFPKqSYZ9bsQIIdKsxxW9bQ T15_;
			NIM_BOOL T16_;
			nimZeroMem((void*)(&T15_), sizeof(tyProc__ofFPKqSYZ9bsQIIdKsxxW9bQ));
			T15_.ClP_0 = matchStarAux__patterns_u161; T15_.ClE_0 = colonenv__1;
			T16_ = (NIM_BOOL)0;
			T16_ = T15_.ClE_0? T15_.ClP_0(c_p0, (*colonenv__1).p0, n_p2, arglist_1, rpn_p3, T15_.ClE_0):((TM__1E9cVLQUjhbw81lEou89bC9bw_13)(T15_.ClP_0))(c_p0, (*colonenv__1).p0, n_p2, arglist_1, rpn_p3);
			if (NIM_UNLIKELY(*nimErr_)) goto LA12_;
			if (!T16_) goto LA17_;
			result = bindOrCheck__patterns_u128(c_p0, (*(*(*colonenv__1).p0)._kind_6.sons.p->data[((NI)2)])._kind_4.sym, arglist_1);
			if (NIM_UNLIKELY(*nimErr_)) goto LA12_;
		}
		goto LA13_;
LA17_: ;
		{
			result = NIM_FALSE;
		}
LA13_: ;
		{
			LA12_:;
		}
		{
			oldNimErrFin12_ = *nimErr_; *nimErr_ = NIM_FALSE;
			eqdestroy___ast_u3252(arglist_1);
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
			*nimErr_ = oldNimErrFin12_;
		}
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	}
	goto LA7_;
LA10_: ;
	{
		result = NIM_FALSE;
	}
LA7_: ;
	{
		LA1_:;
	}
	{
		oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
		eqdestroy___patterns_u602(colonenv__1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		*nimErr_ = oldNimErrFin1_;
	}
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, gather__patterns_u142)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* param_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2) {
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* pp_1;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	pp_1 = NIM_NIL;
	pp_1 = getLazy__patterns_u18(c_p0, param_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !((pp_1 == ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL)));
		if (!(T3_)) goto LA4_;
		T3_ = ((*pp_1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)152));
LA4_: ;
		if (!T3_) goto LA5_;
		add__ast_u3215(pp_1, n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	goto LA1_;
LA5_: ;
	{
		tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* T8_;
		T8_ = NIM_NIL;
		T8_ = newNodeI__ast_u4095(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)152), (*n_p2).info, ((NI)1));
		if (NIM_UNLIKELY(*nimErr_)) {eqdestroy___ast_u3252(T8_); goto BeforeRet_;}
		eqsink___ast_u3261(&pp_1, T8_);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		eqcopy___ast_u3255(&(*pp_1)._kind_6.sons.p->data[((NI)0)], n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		putLazy__patterns_u22(c_p0, param_p1, pp_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA1_: ;
	eqdestroy___ast_u3252(pp_1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
static N_INLINE(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ**, X5BX5D___ast_u5211)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** s_p0, NI s_p0Len_0, NI i_p1) {
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** result;
	result = &s_p0[(NI)(s_p0Len_0 - i_p1)];
	return result;
}
static N_INLINE(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, lastSon__ast_u5208)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0) {
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* result;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = NIM_NIL;
	T1_ = (tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ**)0;
	T1_ = X5BX5D___ast_u5211((((*n_p0)._kind_6.sons).p) ? ((*n_p0)._kind_6.sons.p->data) : NIM_NIL, (*n_p0)._kind_6.sons.len, ((NI)1));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	eqcopy___ast_u3255(&result, (*T1_));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, matches__patterns_u30)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2) {
	NIM_BOOL result;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_2;
NIM_BOOL oldNimErrFin25_;
NIM_BOOL oldNimErrFin101_;
NIM_BOOL oldNimErrFin94_;
NIM_BOOL oldNimErrFin87_;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	n_2 = NIM_NIL;
	n_2 = skipHidden__types_u3741(n_p2);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	{
		if (!(((*n_2).flags &((NU32)1<<((NU)((((tyEnum_TNodeFlag__3UjGgL9bLM4RXBnoZJs9cviw)6)))&31U)))!=0)) goto LA4_;
		result = NIM_FALSE;
	}
	goto LA2_;
LA4_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = isPatternParam__patterns_u99(c_p0, p_p1);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		if (!T7_) goto LA8_;
		result = bindOrCheck__patterns_u128(c_p0, (*p_p1)._kind_4.sym, n_2);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	}
	goto LA2_;
LA8_: ;
	{
		NIM_BOOL T11_;
		T11_ = (NIM_BOOL)0;
		T11_ = ((*n_2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3));
		if (!(T11_)) goto LA12_;
		T11_ = ((*p_p1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)2));
LA12_: ;
		if (!T11_) goto LA13_;
		result = ((*(*p_p1)._kind_5.ident).id == (*(*(*n_2)._kind_4.sym).name).id);
	}
	goto LA2_;
LA13_: ;
	{
		NIM_BOOL T16_;
		T16_ = (NIM_BOOL)0;
		T16_ = ((*n_2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3));
		if (!(T16_)) goto LA17_;
		T16_ = inSymChoice__patterns_u62(p_p1, n_2);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
LA17_: ;
		if (!T16_) goto LA18_;
		result = NIM_TRUE;
	}
	goto LA2_;
LA18_: ;
	{
		NIM_BOOL T21_;
		tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD_;
		T21_ = (NIM_BOOL)0;
		T21_ = ((*n_2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3));
		if (!(T21_)) goto LA22_;
		T21_ = ((*(*n_2)._kind_4.sym).kind == ((tyEnum_TSymKind__9a75lHd9cV25XwN4jXXBmM0Q)10));
LA22_: ;
		if (!T21_) goto LA23_;
		colontmpD_ = NIM_NIL;
		{
			if (!((*p_p1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3))) goto LA28_;
			result = ((*p_p1)._kind_4.sym == (*n_2)._kind_4.sym);
		}
		goto LA26_;
LA28_: ;
		{
			NIM_BOOL T31_;
			colontmpD_ = astdef__ast_u4596((*n_2)._kind_4.sym);
			if (NIM_UNLIKELY(*nimErr_)) goto LA25_;
			T31_ = (NIM_BOOL)0;
			T31_ = matches__patterns_u30(c_p0, p_p1, colontmpD_);
			if (NIM_UNLIKELY(*nimErr_)) goto LA25_;
			if (!T31_) goto LA32_;
			result = NIM_TRUE;
		}
		goto LA26_;
LA32_: ;
		{
			result = NIM_FALSE;
		}
LA26_: ;
		{
			LA25_:;
		}
		{
			oldNimErrFin25_ = *nimErr_; *nimErr_ = NIM_FALSE;
			eqdestroy___ast_u3252(colontmpD_);
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
			*nimErr_ = oldNimErrFin25_;
		}
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	}
	goto LA2_;
LA23_: ;
	{
		NimStringV2 opr_1;
		if (!((*p_p1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)153))) goto LA38_;
		opr_1.len = 0; opr_1.p = NIM_NIL;
		opr_1 = (*(*(*p_p1)._kind_6.sons.p->data[((NI)0)])._kind_5.ident).s;
		if (eqStrings(opr_1, TM__1E9cVLQUjhbw81lEou89bC9bw_3)) goto LA40_;
		if (eqStrings(opr_1, TM__1E9cVLQUjhbw81lEou89bC9bw_5)) goto LA41_;
		if (eqStrings(opr_1, TM__1E9cVLQUjhbw81lEou89bC9bw_7)) goto LA42_;
		if (eqStrings(opr_1, TM__1E9cVLQUjhbw81lEou89bC9bw_9)) goto LA43_;
		goto LA44_;
		LA40_: ;
		{
			result = matchChoice__patterns_u118(c_p0, p_p1, n_2);
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		}
		goto LA45_;
		LA41_: ;
		{
			result = matchNested__patterns_u155(c_p0, p_p1, n_2, NIM_FALSE);
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		}
		goto LA45_;
		LA42_: ;
		{
			result = matchNested__patterns_u155(c_p0, p_p1, n_2, NIM_TRUE);
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		}
		goto LA45_;
		LA43_: ;
		{
			NIM_BOOL T50_;
			T50_ = (NIM_BOOL)0;
			T50_ = matches__patterns_u30(c_p0, (*p_p1)._kind_6.sons.p->data[((NI)1)], n_2);
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
			result = !(T50_);
		}
		goto LA45_;
		LA44_: ;
		{
			result = NIM_FALSE;
			{
				if (!NIM_TRUE) goto LA54_;
				failedAssertImpl__stdZassertions_u79(TM__1E9cVLQUjhbw81lEou89bC9bw_15);
				if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
			}
LA54_: ;
		}
LA45_: ;
	}
	goto LA2_;
LA38_: ;
	{
		if (!((*p_p1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)40))) goto LA57_;
		{
			if (!((*(*p_p1)._kind_6.sons.p->data[((NI)1)]).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)30))) goto LA61_;
			{
				NIM_BOOL T65_;
				T65_ = (NIM_BOOL)0;
				T65_ = matches__patterns_u30(c_p0, (*p_p1)._kind_6.sons.p->data[((NI)0)], n_2);
				if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
				if (!T65_) goto LA66_;
				gather__patterns_u142(c_p0, (*(*(*p_p1)._kind_6.sons.p->data[((NI)1)])._kind_6.sons.p->data[((NI)1)])._kind_4.sym, n_2);
				if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
				result = NIM_TRUE;
			}
			goto LA63_;
LA66_: ;
			{
				result = NIM_FALSE;
			}
LA63_: ;
		}
		goto LA59_;
LA61_: ;
		{
			{
				NIM_BOOL T72_;
				T72_ = (NIM_BOOL)0;
				T72_ = matches__patterns_u30(c_p0, (*p_p1)._kind_6.sons.p->data[((NI)0)], n_2);
				if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
				if (!T72_) goto LA73_;
				result = bindOrCheck__patterns_u128(c_p0, (*(*p_p1)._kind_6.sons.p->data[((NI)1)])._kind_4.sym, n_2);
				if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
			}
			goto LA70_;
LA73_: ;
			{
				result = NIM_FALSE;
			}
LA70_: ;
		}
LA59_: ;
	}
	goto LA2_;
LA57_: ;
	{
		NIM_BOOL T77_;
		T77_ = (NIM_BOOL)0;
		T77_ = sameKinds__patterns_u37(p_p1, n_2);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		if (!T77_) goto LA78_;
		switch ((*p_p1).kind) {
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3):
		{
			result = ((*p_p1)._kind_4.sym == (*n_2)._kind_4.sym);
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)2):
		{
			result = ((*(*p_p1)._kind_5.ident).id == (*(*n_2)._kind_5.ident).id);
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)5) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)10):
		{
			result = ((*p_p1)._kind_1.intVal == (*n_2)._kind_1.intVal);
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)16) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)18):
		{
			result = ((*p_p1)._kind_2.floatVal == (*n_2)._kind_2.floatVal);
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)20) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)22):
		{
			result = eqStrings((*p_p1)._kind_3.strVal, (*n_2)._kind_3.strVal);
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)1):
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)23):
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)4):
		{
			result = NIM_TRUE;
		}
		break;
		default:
		{
			tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* v_1;
			v_1 = NIM_NIL;
			result = NIM_FALSE;
			v_1 = lastSon__ast_u5208(p_p1);
			if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
			{
				NIM_BOOL T90_;
				tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* arglist_1;
				T90_ = (NIM_BOOL)0;
				T90_ = isPatternParam__patterns_u99(c_p0, v_1);
				if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
				if (!(T90_)) goto LA91_;
				T90_ = ((*(*(*v_1)._kind_4.sym).typ).kind == ((tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg)48));
LA91_: ;
				if (!T90_) goto LA92_;
				arglist_1 = NIM_NIL;
				{
					NI T97_;
					NI T98_;
					tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD__2;
					tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD__3;
					T97_ = (NI)0;
					T97_ = len__ast_u3190(p_p1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
					T98_ = (NI)0;
					T98_ = len__ast_u3190(n_2);
					if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
					if (!(T97_ <= T98_)) goto LA99_;
					colontmpD__2 = NIM_NIL;
					colontmpD__3 = NIM_NIL;
					{
						NI i_1;
						NI colontmp_;
						NI T103_;
						NI i_2;
						i_1 = (NI)0;
						colontmp_ = (NI)0;
						T103_ = (NI)0;
						T103_ = len__ast_u3190(p_p1);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						colontmp_ = (NI)(T103_ - ((NI)1));
						i_2 = ((NI)0);
						{
							while (1) {
								if (!(i_2 < colontmp_)) goto LA105;
								i_1 = i_2;
								{
									NIM_BOOL T108_;
									T108_ = (NIM_BOOL)0;
									T108_ = matches__patterns_u30(c_p0, (*p_p1)._kind_6.sons.p->data[i_1], (*n_2)._kind_6.sons.p->data[i_1]);
									if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
									if (!!(T108_)) goto LA109_;
									eqdestroy___ast_u3252(colontmpD__3);
									if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
									eqdestroy___ast_u3252(colontmpD__2);
									if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
									eqdestroy___ast_u3252(arglist_1);
									if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
									eqdestroy___ast_u3252(v_1);
									if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
									eqdestroy___ast_u3252(n_2);
									if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
									goto BeforeRet_;
								}
LA109_: ;
								i_2 += ((NI)1);
							} LA105: ;
						}
					}
					{
						NIM_BOOL T113_;
						NIM_BOOL T114_;
						NI T115_;
						NI T116_;
						tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_3;
						tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD__4;
						NI T121_;
						T113_ = (NIM_BOOL)0;
						T114_ = (NIM_BOOL)0;
						T115_ = (NI)0;
						T115_ = len__ast_u3190(p_p1);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						T116_ = (NI)0;
						T116_ = len__ast_u3190(n_2);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						T114_ = (T115_ == T116_);
						if (!(T114_)) goto LA117_;
						colontmpD__2 = lastSon__ast_u5208(n_2);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						T114_ = ((*colontmpD__2).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)58));
LA117_: ;
						T113_ = T114_;
						if (!(T113_)) goto LA118_;
						colontmpD__3 = lastSon__ast_u5208(n_2);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						T113_ = ((*(*colontmpD__3)._kind_6.sons.p->data[((NI)1)]).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)41));
LA118_: ;
						if (!T113_) goto LA119_;
						n_3 = NIM_NIL;
						colontmpD__4 = NIM_NIL;
						colontmpD__4 = lastSon__ast_u5208(n_2);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						eqcopy___ast_u3255(&n_3, (*colontmpD__4)._kind_6.sons.p->data[((NI)1)]);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						T121_ = (NI)0;
						T121_ = len__ast_u3190(n_3);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						arglist_1 = newNodeI__ast_u4095(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)152), (*n_3).info, T121_);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						{
							NI i_3;
							NI colontmp__2;
							NI i_4;
							i_3 = (NI)0;
							colontmp__2 = (NI)0;
							colontmp__2 = len__ast_u3190(n_3);
							if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
							i_4 = ((NI)0);
							{
								while (1) {
									if (!(i_4 < colontmp__2)) goto LA124;
									i_3 = i_4;
									eqcopy___ast_u3255(&(*arglist_1)._kind_6.sons.p->data[i_3], (*n_3)._kind_6.sons.p->data[i_3]);
									if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
									i_4 += ((NI)1);
								} LA124: ;
							}
						}
						eqdestroy___ast_u3252(colontmpD__4);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						eqdestroy___ast_u3252(n_3);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
					}
					goto LA111_;
LA119_: ;
					{
						NI T126_;
						NI T127_;
						T126_ = (NI)0;
						T126_ = len__ast_u3190(n_2);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						T127_ = (NI)0;
						T127_ = len__ast_u3190(p_p1);
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						arglist_1 = newNodeI__ast_u4095(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)152), (*n_2).info, (NI)((NI)(T126_ - T127_) + ((NI)1)));
						if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
						{
							NI i_5;
							NI colontmp__3;
							NI T129_;
							NI T130_;
							NI res_1;
							i_5 = (NI)0;
							colontmp__3 = (NI)0;
							T129_ = (NI)0;
							T129_ = len__ast_u3190(n_2);
							if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
							T130_ = (NI)0;
							T130_ = len__ast_u3190(p_p1);
							if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
							colontmp__3 = (NI)(T129_ - T130_);
							res_1 = ((NI)0);
							{
								while (1) {
									NI T133_;
									if (!(res_1 <= colontmp__3)) goto LA132;
									i_5 = ((NI) (res_1));
									T133_ = (NI)0;
									T133_ = len__ast_u3190(p_p1);
									if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
									eqcopy___ast_u3255(&(*arglist_1)._kind_6.sons.p->data[i_5], (*n_2)._kind_6.sons.p->data[(NI)((NI)(i_5 + T133_) - ((NI)1))]);
									if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
									res_1 += ((NI)1);
								} LA132: ;
							}
						}
					}
LA111_: ;
					result = bindOrCheck__patterns_u128(c_p0, (*v_1)._kind_4.sym, arglist_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA101_;
					eqdestroy___ast_u3252(colontmpD__3);
					if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
					eqdestroy___ast_u3252(colontmpD__2);
					if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
					eqdestroy___ast_u3252(arglist_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
					eqdestroy___ast_u3252(v_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
					eqdestroy___ast_u3252(n_2);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					goto BeforeRet_;
					{
						LA101_:;
					}
					{
						oldNimErrFin101_ = *nimErr_; *nimErr_ = NIM_FALSE;
						eqdestroy___ast_u3252(colontmpD__3);
						if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
						eqdestroy___ast_u3252(colontmpD__2);
						if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
						*nimErr_ = oldNimErrFin101_;
					}
					if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
				}
				goto LA95_;
LA99_: ;
				{
					NI T137_;
					NI T138_;
					T137_ = (NI)0;
					T137_ = len__ast_u3190(p_p1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
					T138_ = (NI)0;
					T138_ = len__ast_u3190(n_2);
					if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
					if (!((NI)(T137_ - ((NI)1)) == T138_)) goto LA139_;
					{
						NI i_6;
						NI colontmp__4;
						NI T142_;
						NI i_7;
						i_6 = (NI)0;
						colontmp__4 = (NI)0;
						T142_ = (NI)0;
						T142_ = len__ast_u3190(p_p1);
						if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
						colontmp__4 = (NI)(T142_ - ((NI)1));
						i_7 = ((NI)0);
						{
							while (1) {
								if (!(i_7 < colontmp__4)) goto LA144;
								i_6 = i_7;
								{
									NIM_BOOL T147_;
									T147_ = (NIM_BOOL)0;
									T147_ = matches__patterns_u30(c_p0, (*p_p1)._kind_6.sons.p->data[i_6], (*n_2)._kind_6.sons.p->data[i_6]);
									if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
									if (!!(T147_)) goto LA148_;
									eqdestroy___ast_u3252(arglist_1);
									if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
									eqdestroy___ast_u3252(v_1);
									if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
									eqdestroy___ast_u3252(n_2);
									if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
									goto BeforeRet_;
								}
LA148_: ;
								i_7 += ((NI)1);
							} LA144: ;
						}
					}
					arglist_1 = newNodeI__ast_u4091(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)152), (*n_2).info);
					if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
					result = bindOrCheck__patterns_u128(c_p0, (*v_1)._kind_4.sym, arglist_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA94_;
					eqdestroy___ast_u3252(arglist_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
					eqdestroy___ast_u3252(v_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
					eqdestroy___ast_u3252(n_2);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					goto BeforeRet_;
				}
				goto LA95_;
LA139_: ;
LA95_: ;
				{
					LA94_:;
				}
				{
					oldNimErrFin94_ = *nimErr_; *nimErr_ = NIM_FALSE;
					eqdestroy___ast_u3252(arglist_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
					*nimErr_ = oldNimErrFin94_;
				}
				if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
			}
LA92_: ;
			{
				NI T154_;
				NI T155_;
				T154_ = (NI)0;
				T154_ = len__ast_u3190(p_p1);
				if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
				T155_ = (NI)0;
				T155_ = len__ast_u3190(n_2);
				if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
				if (!(T154_ == T155_)) goto LA156_;
				{
					NI i_8;
					NI colontmp__5;
					NI i_9;
					i_8 = (NI)0;
					colontmp__5 = (NI)0;
					colontmp__5 = len__ast_u3190(p_p1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
					i_9 = ((NI)0);
					{
						while (1) {
							if (!(i_9 < colontmp__5)) goto LA160;
							i_8 = i_9;
							{
								NIM_BOOL T163_;
								T163_ = (NIM_BOOL)0;
								T163_ = matches__patterns_u30(c_p0, (*p_p1)._kind_6.sons.p->data[i_8], (*n_2)._kind_6.sons.p->data[i_8]);
								if (NIM_UNLIKELY(*nimErr_)) goto LA87_;
								if (!!(T163_)) goto LA164_;
								eqdestroy___ast_u3252(v_1);
								if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
								eqdestroy___ast_u3252(n_2);
								if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
								goto BeforeRet_;
							}
LA164_: ;
							i_9 += ((NI)1);
						} LA160: ;
					}
				}
				result = NIM_TRUE;
			}
LA156_: ;
			{
				LA87_:;
			}
			{
				oldNimErrFin87_ = *nimErr_; *nimErr_ = NIM_FALSE;
				eqdestroy___ast_u3252(v_1);
				if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
				*nimErr_ = oldNimErrFin87_;
			}
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		}
		break;
		}
	}
	goto LA2_;
LA78_: ;
	{
		result = NIM_FALSE;
	}
LA2_: ;
	{
		LA1_:;
	}
	{
		oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
		eqdestroy___ast_u3252(n_2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		*nimErr_ = oldNimErrFin1_;
	}
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, matchRange__patterns_u304)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2, NI i_p3) {
	NIM_BOOL result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	{
		NI j_1;
		NI colontmp_;
		NI i_2;
		j_1 = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len__ast_u3190(p_p1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		i_2 = ((NI)0);
		{
			while (1) {
				if (!(i_2 < colontmp_)) goto LA3;
				j_1 = i_2;
				{
					NIM_BOOL T6_;
					tySequence__9ahcSjIErJohSBBFLwuF56Q T9_;
					T6_ = (NIM_BOOL)0;
					T6_ = matches__patterns_u30(c_p0, (*p_p1)._kind_6.sons.p->data[j_1], (*n_p2)._kind_6.sons.p->data[(NI)(i_p3 + j_1)]);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					if (!!(T6_)) goto LA7_;
					T9_.len = 0; T9_.p = NIM_NIL;
					T9_.len = 0; T9_.p = (tySequence__9ahcSjIErJohSBBFLwuF56Q_Content*) newSeqPayload(0, sizeof(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*), NIM_ALIGNOF(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*));
					eqsink___ast_u3705((&(*c_p0).mapping), T9_);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					(*c_p0).mappingIsFull = NIM_FALSE;
					result = NIM_FALSE;
					goto BeforeRet_;
				}
LA7_: ;
				i_2 += ((NI)1);
			} LA3: ;
		}
	}
	result = NIM_TRUE;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, matchStmtList__patterns_u299)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* c_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* p_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2) {
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* result;
NIM_BOOL oldNimErrFin11_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = NIM_NIL;
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		NI T7_;
		NI T8_;
		tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_2;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T4_ = ((*p_p1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)115));
		if (!(T4_)) goto LA5_;
		T4_ = ((*n_p2).kind == (*p_p1).kind);
LA5_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA6_;
		T7_ = (NI)0;
		T7_ = len__ast_u3190(p_p1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		T8_ = (NI)0;
		T8_ = len__ast_u3190(n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		T3_ = (T7_ < T8_);
LA6_: ;
		if (!T3_) goto LA9_;
		n_2 = NIM_NIL;
		result = ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL);
		n_2 = flattenStmts__trees_u359(n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto LA11_;
		{
			NI i_1;
			NI colontmp_;
			NI T13_;
			NI T14_;
			NI res_1;
			i_1 = (NI)0;
			colontmp_ = (NI)0;
			T13_ = (NI)0;
			T13_ = len__ast_u3190(n_2);
			if (NIM_UNLIKELY(*nimErr_)) goto LA11_;
			T14_ = (NI)0;
			T14_ = len__ast_u3190(p_p1);
			if (NIM_UNLIKELY(*nimErr_)) goto LA11_;
			colontmp_ = (NI)(T13_ - T14_);
			res_1 = ((NI)0);
			{
				while (1) {
					if (!(res_1 <= colontmp_)) goto LA16;
					i_1 = ((NI) (res_1));
					{
						NIM_BOOL T19_;
						tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* T22_;
						tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* T23_;
						NI T24_;
						tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* T25_;
						NI T26_;
						NI T27_;
						tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* T28_;
						T19_ = (NIM_BOOL)0;
						T19_ = matchRange__patterns_u304(c_p0, p_p1, n_2, i_1);
						if (NIM_UNLIKELY(*nimErr_)) goto LA11_;
						if (!T19_) goto LA20_;
						(*c_p0).subMatch = NIM_TRUE;
						T22_ = NIM_NIL;
						T22_ = newNodeI__ast_u4095(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)115), (*n_2).info, ((NI)3));
						if (NIM_UNLIKELY(*nimErr_)) {eqdestroy___ast_u3252(T22_); goto LA11_;}
						eqsink___ast_u3261(&result, T22_);
						if (NIM_UNLIKELY(*nimErr_)) goto LA11_;
						T23_ = NIM_NIL;
						T23_ = extractRange__trees_u362(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)115), n_2, ((NI)0), (NI)(i_1 - ((NI)1)));
						if (NIM_UNLIKELY(*nimErr_)) {eqdestroy___ast_u3252(T23_); goto LA11_;}
						eqsink___ast_u3261(&(*result)._kind_6.sons.p->data[((NI)0)], T23_);
						if (NIM_UNLIKELY(*nimErr_)) goto LA11_;
						T24_ = (NI)0;
						T24_ = len__ast_u3190(p_p1);
						if (NIM_UNLIKELY(*nimErr_)) goto LA11_;
						T25_ = NIM_NIL;
						T25_ = extractRange__trees_u362(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)115), n_2, i_1, (NI)((NI)(i_1 + T24_) - ((NI)1)));
						if (NIM_UNLIKELY(*nimErr_)) {eqdestroy___ast_u3252(T25_); goto LA11_;}
						eqsink___ast_u3261(&(*result)._kind_6.sons.p->data[((NI)1)], T25_);
						if (NIM_UNLIKELY(*nimErr_)) goto LA11_;
						T26_ = (NI)0;
						T26_ = len__ast_u3190(p_p1);
						if (NIM_UNLIKELY(*nimErr_)) goto LA11_;
						T27_ = (NI)0;
						T27_ = len__ast_u3190(n_2);
						if (NIM_UNLIKELY(*nimErr_)) goto LA11_;
						T28_ = NIM_NIL;
						T28_ = extractRange__trees_u362(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)115), n_2, (NI)(i_1 + T26_), (NI)(T27_ - ((NI)1)));
						if (NIM_UNLIKELY(*nimErr_)) {eqdestroy___ast_u3252(T28_); goto LA11_;}
						eqsink___ast_u3261(&(*result)._kind_6.sons.p->data[((NI)2)], T28_);
						if (NIM_UNLIKELY(*nimErr_)) goto LA11_;
						goto LA12;
					}
LA20_: ;
					res_1 += ((NI)1);
				} LA16: ;
			}
		} LA12: ;
		{
			LA11_:;
		}
		{
			oldNimErrFin11_ = *nimErr_; *nimErr_ = NIM_FALSE;
			eqdestroy___ast_u3252(n_2);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			*nimErr_ = oldNimErrFin11_;
		}
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	goto LA1_;
LA9_: ;
	{
		NIM_BOOL T32_;
		T32_ = (NIM_BOOL)0;
		T32_ = matches__patterns_u30(c_p0, p_p1, n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		if (!T32_) goto LA33_;
		eqcopy___ast_u3255(&result, n_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	goto LA1_;
LA33_: ;
	{
		result = ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL);
	}
LA1_: ;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicDyn)(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)16));
		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_: ;
		rememberCycle__system_u3497(result, cell_1, (*((TNimTypeV2**) (p_p0))));
	}
LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___patterns_u423)(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg* dest_p0) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = nimDecRefIsLastCyclicDyn((*dest_p0).c);
		if (!T3_) goto LA4_;
		nimDestroyAndDispose((*dest_p0).c);
	}
LA4_: ;
	eqdestroy___ast_u3696((*dest_p0).mapping);
	{
		NIM_BOOL T8_;
		T8_ = (NIM_BOOL)0;
		T8_ = nimDecRefIsLastDyn((*dest_p0).owner);
		if (!T8_) goto LA9_;
		eqdestroy___ast_u3469((&(*(*dest_p0).owner)));
		nimRawDispose((*dest_p0).owner, ((NI)8));
	}
LA9_: ;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, aliasAnalysisRequested__patterns_u333)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* params_p0) {
	NIM_BOOL result;
NIM_BOOL oldNimErrFin9_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = NIM_FALSE;
	{
		NI T3_;
		T3_ = (NI)0;
		T3_ = len__ast_u3190(params_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		if (!(((NI)2) <= T3_)) goto LA4_;
		{
			NI i_1;
			NI colontmp_;
			NI i_2;
			i_1 = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__ast_u3190(params_p0);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			i_2 = ((NI)1);
			{
				while (1) {
					tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* param_1;
					if (!(i_2 < colontmp_)) goto LA8;
					param_1 = NIM_NIL;
					i_1 = i_2;
					eqcopy___ast_u4577(&param_1, (*(*params_p0)._kind_6.sons.p->data[i_1])._kind_4.sym);
					if (NIM_UNLIKELY(*nimErr_)) goto LA9_;
					{
						tyEnum_TAliasRequest__agH0cHTwuKHcbz8bKC9cyVQ T12_;
						T12_ = (tyEnum_TAliasRequest__agH0cHTwuKHcbz8bKC9cyVQ)0;
						T12_ = whichAlias__parampatterns_u49(param_1);
						if (NIM_UNLIKELY(*nimErr_)) goto LA9_;
						if (!!((T12_ == ((tyEnum_TAliasRequest__agH0cHTwuKHcbz8bKC9cyVQ)1)))) goto LA13_;
						result = NIM_TRUE;
						eqdestroy___ast_u4574(param_1);
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						goto BeforeRet_;
					}
LA13_: ;
					i_2 += ((NI)1);
					{
						LA9_:;
					}
					{
						oldNimErrFin9_ = *nimErr_; *nimErr_ = NIM_FALSE;
						eqdestroy___ast_u4574(param_1);
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						*nimErr_ = oldNimErrFin9_;
					}
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				} LA8: ;
			}
		}
	}
LA4_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, addToArgList__patterns_u347)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* result_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*n_p1).typField == ((tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg*) NIM_NIL)));
		if (!(T3_)) goto LA4_;
		T3_ = !(((*(*n_p1).typField).kind == ((tyEnum_TTypeKind__DYVdhzQ9cMfgoirdzGDwSCg)7)));
LA4_: ;
		if (!T3_) goto LA5_;
		{
			if (!!(((*n_p1).kind == ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)152)))) goto LA9_;
			add__ast_u3215(result_p0, n_p1);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
		goto LA7_;
LA9_: ;
		{
			{
				NI i_1;
				NI colontmp_;
				NI i_2;
				i_1 = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = len__ast_u3190(n_p1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				i_2 = ((NI)0);
				{
					while (1) {
						if (!(i_2 < colontmp_)) goto LA14;
						i_1 = i_2;
						add__ast_u3215(result_p0, (*n_p1)._kind_6.sons.p->data[i_1]);
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						i_2 += ((NI)1);
					} LA14: ;
				}
			}
		}
LA7_: ;
	}
LA5_: ;
	}BeforeRet_: ;
}
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(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*, applyRule__patterns_u367)(tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* c_p0, tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* s_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p2) {
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* result;
	tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg ctx_1;
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* colontmpD_;
	tyObject_TContext__4jZ5gUwIaqnMfIYix46Hpw* colontmpD__2;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* m_1;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* colontmpD__3;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* params_1;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* args_1;
	NIM_BOOL requiresAA_1;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* T6_;
NIM_BOOL oldNimErrFin15_;
NIM_BOOL oldNimErrFin38_;
NIM_BOOL oldNimErrFin57_;
NIM_BOOL oldNimErrFin33_;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = NIM_NIL;
	nimZeroMem((void*)(&ctx_1), sizeof(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg));
	m_1 = NIM_NIL;
	colontmpD__3 = NIM_NIL;
	params_1 = NIM_NIL;
	args_1 = NIM_NIL;
	nimZeroMem((void*)(&ctx_1), sizeof(tyObject_TPatternContext__RVdUwF9cHEcpAckH4a4HnXg));
	colontmpD_ = eqdup___ast_u4580(s_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	ctx_1.owner = colontmpD_;
	colontmpD__2 = eqdup___semdata_u4222(c_p0, NIM_TRUE);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	ctx_1.c = colontmpD__2;
	ctx_1.formals = paramsLen__ast_u5616((*s_p1).typ);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	m_1 = matchStmtList__patterns_u299((&ctx_1), (*(*s_p1).ast)._kind_6.sons.p->data[((NI)1)], n_p2);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	{
		if (!(m_1 == 0)) goto LA4_;
		result = ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL);
		eqdestroy___ast_u3252(args_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		eqdestroy___ast_u3252(params_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		eqdestroy___ast_u3252(colontmpD__3);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		eqdestroy___ast_u3252(m_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		eqdestroy___patterns_u423((&ctx_1));
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		goto BeforeRet_;
	}
LA4_: ;
	result = newNodeI__ast_u4091(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)27), (*n_p2).info);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	colontmpD__3 = newSymNode__ast_u5171(s_p1, (*n_p2).info);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	add__ast_u3215(result, colontmpD__3);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	eqcopy___ast_u3255(&params_1, (*(*s_p1).typ).n);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	requiresAA_1 = aliasAnalysisRequested__patterns_u333(params_1);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	T6_ = NIM_NIL;
	{
		if (!requiresAA_1) goto LA9_;
		args_1 = newNodeI__ast_u4091(((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)152), (*n_p2).info);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	}
	goto LA7_;
LA9_: ;
	{
		args_1 = ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL);
	}
LA7_: ;
	{
		NI i_1;
		NI colontmp_;
		NI i_2;
		i_1 = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = len__ast_u3190(params_1);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		i_2 = ((NI)1);
		{
			while (1) {
				tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* param_1;
				tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* x_1;
				if (!(i_2 < colontmp_)) goto LA14;
				param_1 = NIM_NIL;
				x_1 = NIM_NIL;
				i_1 = i_2;
				eqcopy___ast_u4577(&param_1, (*(*params_1)._kind_6.sons.p->data[i_1])._kind_4.sym);
				if (NIM_UNLIKELY(*nimErr_)) goto LA15_;
				x_1 = getLazy__patterns_u18((&ctx_1), param_1);
				if (NIM_UNLIKELY(*nimErr_)) goto LA15_;
				{
					if (!(x_1 == 0)) goto LA18_;
					result = ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL);
					eqdestroy___ast_u3252(x_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
					eqdestroy___ast_u4574(param_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
					eqdestroy___ast_u3252(args_1);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					eqdestroy___ast_u3252(params_1);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					eqdestroy___ast_u3252(colontmpD__3);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					eqdestroy___ast_u3252(m_1);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					eqdestroy___patterns_u423((&ctx_1));
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					goto BeforeRet_;
				}
LA18_: ;
				add__ast_u3215(result, x_1);
				if (NIM_UNLIKELY(*nimErr_)) goto LA15_;
				{
					if (!requiresAA_1) goto LA22_;
					addToArgList__patterns_u347(args_1, x_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA15_;
				}
LA22_: ;
				i_2 += ((NI)1);
				{
					LA15_:;
				}
				{
					oldNimErrFin15_ = *nimErr_; *nimErr_ = NIM_FALSE;
					eqdestroy___ast_u3252(x_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
					eqdestroy___ast_u4574(param_1);
					if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
					*nimErr_ = oldNimErrFin15_;
				}
				if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
			} LA14: ;
		}
	}
	{
		if (!requiresAA_1) goto LA28_;
		{
			NI i_3;
			NI colontmp__2;
			NI i_4;
			i_3 = (NI)0;
			colontmp__2 = (NI)0;
			colontmp__2 = len__ast_u3190(params_1);
			if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
			i_4 = ((NI)1);
			{
				while (1) {
					tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* rs_1;
					tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* param_2;
					tyEnum_TAliasRequest__agH0cHTwuKHcbz8bKC9cyVQ T34_;
					if (!(i_4 < colontmp__2)) goto LA32;
					rs_1 = NIM_NIL;
					param_2 = NIM_NIL;
					i_3 = i_4;
					eqcopy___ast_u3255(&rs_1, (*result)._kind_6.sons.p->data[i_3]);
					if (NIM_UNLIKELY(*nimErr_)) goto LA33_;
					eqcopy___ast_u4577(&param_2, (*(*params_1)._kind_6.sons.p->data[i_3])._kind_4.sym);
					if (NIM_UNLIKELY(*nimErr_)) goto LA33_;
					T34_ = (tyEnum_TAliasRequest__agH0cHTwuKHcbz8bKC9cyVQ)0;
					T34_ = whichAlias__parampatterns_u49(param_2);
					if (NIM_UNLIKELY(*nimErr_)) goto LA33_;
					switch (T34_) {
					case ((tyEnum_TAliasRequest__agH0cHTwuKHcbz8bKC9cyVQ)1):
					{
					}
					break;
					case ((tyEnum_TAliasRequest__agH0cHTwuKHcbz8bKC9cyVQ)2):
					{
						NIM_BOOL ok_1;
						ok_1 = NIM_FALSE;
						{
							tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* arg_1;
							arg_1 = NIM_NIL;
							arg_1 = 0;
							{
								NI i_5;
								NI colontmp__3;
								NI i_6;
								i_5 = (NI)0;
								colontmp__3 = (NI)0;
								colontmp__3 = safeLen__ast_u3197(args_1);
								if (NIM_UNLIKELY(*nimErr_)) goto LA38_;
								i_6 = ((NI)0);
								{
									while (1) {
										if (!(i_6 < colontmp__3)) goto LA41;
										i_5 = i_6;
										eqcopy___ast_u3255(&arg_1, (*args_1)._kind_6.sons.p->data[i_5]);
										if (NIM_UNLIKELY(*nimErr_)) goto LA38_;
										{
											NIM_BOOL T44_;
											tyEnum_TAnalysisResult__Y9b4HDQn2qbT5xWKGFH75iQ T46_;
											T44_ = (NIM_BOOL)0;
											T44_ = !((arg_1 == rs_1));
											if (!(T44_)) goto LA45_;
											T46_ = (tyEnum_TAnalysisResult__Y9b4HDQn2qbT5xWKGFH75iQ)0;
											T46_ = isPartOf__aliases_u120(rs_1, arg_1);
											if (NIM_UNLIKELY(*nimErr_)) goto LA38_;
											T44_ = (T46_ == ((tyEnum_TAnalysisResult__Y9b4HDQn2qbT5xWKGFH75iQ)2));
LA45_: ;
											if (!T44_) goto LA47_;
											ok_1 = NIM_TRUE;
											eqdestroy___ast_u3252(arg_1);
											if (NIM_UNLIKELY(*nimErr_)) goto LA33_;
											goto LA37;
										}
LA47_: ;
										i_6 += ((NI)1);
									} LA41: ;
								}
							}
							{
								LA38_:;
							}
							{
								oldNimErrFin38_ = *nimErr_; *nimErr_ = NIM_FALSE;
								eqdestroy___ast_u3252(arg_1);
								if (NIM_UNLIKELY(*nimErr_)) goto LA33_;
								*nimErr_ = oldNimErrFin38_;
							}
							if (NIM_UNLIKELY(*nimErr_)) goto LA33_;
						} LA37: ;
						{
							if (!!(ok_1)) goto LA53_;
							result = ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL);
							eqdestroy___ast_u4574(param_2);
							if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
							eqdestroy___ast_u3252(rs_1);
							if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
							eqdestroy___ast_u3252(args_1);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							eqdestroy___ast_u3252(params_1);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							eqdestroy___ast_u3252(colontmpD__3);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							eqdestroy___ast_u3252(m_1);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							eqdestroy___patterns_u423((&ctx_1));
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							goto BeforeRet_;
						}
LA53_: ;
					}
					break;
					case ((tyEnum_TAliasRequest__agH0cHTwuKHcbz8bKC9cyVQ)3):
					{
						NIM_BOOL ok_2;
						ok_2 = NIM_TRUE;
						{
							tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* arg_2;
							arg_2 = NIM_NIL;
							arg_2 = 0;
							{
								NI i_7;
								NI colontmp__4;
								NI i_8;
								i_7 = (NI)0;
								colontmp__4 = (NI)0;
								colontmp__4 = safeLen__ast_u3197(args_1);
								if (NIM_UNLIKELY(*nimErr_)) goto LA57_;
								i_8 = ((NI)0);
								{
									while (1) {
										if (!(i_8 < colontmp__4)) goto LA60;
										i_7 = i_8;
										eqcopy___ast_u3255(&arg_2, (*args_1)._kind_6.sons.p->data[i_7]);
										if (NIM_UNLIKELY(*nimErr_)) goto LA57_;
										{
											NIM_BOOL T63_;
											tyEnum_TAnalysisResult__Y9b4HDQn2qbT5xWKGFH75iQ T65_;
											T63_ = (NIM_BOOL)0;
											T63_ = !((arg_2 == rs_1));
											if (!(T63_)) goto LA64_;
											T65_ = (tyEnum_TAnalysisResult__Y9b4HDQn2qbT5xWKGFH75iQ)0;
											T65_ = isPartOf__aliases_u120(rs_1, arg_2);
											if (NIM_UNLIKELY(*nimErr_)) goto LA57_;
											T63_ = !((T65_ == ((tyEnum_TAnalysisResult__Y9b4HDQn2qbT5xWKGFH75iQ)0)));
LA64_: ;
											if (!T63_) goto LA66_;
											ok_2 = NIM_FALSE;
											eqdestroy___ast_u3252(arg_2);
											if (NIM_UNLIKELY(*nimErr_)) goto LA33_;
											goto LA56;
										}
LA66_: ;
										i_8 += ((NI)1);
									} LA60: ;
								}
							}
							{
								LA57_:;
							}
							{
								oldNimErrFin57_ = *nimErr_; *nimErr_ = NIM_FALSE;
								eqdestroy___ast_u3252(arg_2);
								if (NIM_UNLIKELY(*nimErr_)) goto LA33_;
								*nimErr_ = oldNimErrFin57_;
							}
							if (NIM_UNLIKELY(*nimErr_)) goto LA33_;
						} LA56: ;
						{
							if (!!(ok_2)) goto LA72_;
							result = ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL);
							eqdestroy___ast_u4574(param_2);
							if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
							eqdestroy___ast_u3252(rs_1);
							if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
							eqdestroy___ast_u3252(args_1);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							eqdestroy___ast_u3252(params_1);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							eqdestroy___ast_u3252(colontmpD__3);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							eqdestroy___ast_u3252(m_1);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							eqdestroy___patterns_u423((&ctx_1));
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							goto BeforeRet_;
						}
LA72_: ;
					}
					break;
					default: __builtin_unreachable();
					}
					i_4 += ((NI)1);
					{
						LA33_:;
					}
					{
						oldNimErrFin33_ = *nimErr_; *nimErr_ = NIM_FALSE;
						eqdestroy___ast_u4574(param_2);
						if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
						eqdestroy___ast_u3252(rs_1);
						if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
						*nimErr_ = oldNimErrFin33_;
					}
					if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
				} LA32: ;
			}
		}
	}
LA28_: ;
	markUsed__sigmatch_u100(c_p0, (*n_p2).info, s_p1, NIM_TRUE, NIM_FALSE);
	if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	{
		if (!ctx_1.subMatch) goto LA78_;
		eqsink___ast_u3261(&(*m_1)._kind_6.sons.p->data[((NI)1)], result);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		eqwasMoved___ast_u3249(&result);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		eqsink___ast_u3261(&result, m_1);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
		eqwasMoved___ast_u3249(&m_1);
		if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
	}
LA78_: ;
	{
		LA1_:;
	}
	{
		oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
		eqdestroy___ast_u3252(args_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		eqdestroy___ast_u3252(params_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		eqdestroy___ast_u3252(colontmpD__3);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		eqdestroy___ast_u3252(m_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		eqdestroy___patterns_u423((&ctx_1));
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		*nimErr_ = oldNimErrFin1_;
	}
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
