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

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
typedef struct tyObject_TNodeTable__RKuYIY5Phq1xnepo5DZI2g tyObject_TNodeTable__RKuYIY5Phq1xnepo5DZI2g;
typedef struct tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ;
typedef struct tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg;
typedef struct tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
typedef struct tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg;
typedef struct tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA;
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_TLoc__KvQVlvKb6mbV567NQ0hMOw tyObject_TLoc__KvQVlvKb6mbV567NQ0hMOw;
typedef struct tyObject_TLib__sVuuRvQkiYNOUiPRZhmZig tyObject_TLib__sVuuRvQkiYNOUiPRZhmZig;
typedef struct tySequence__d8ZV4IMgHt9biik9cS9a0hrmg tySequence__d8ZV4IMgHt9biik9cS9a0hrmg;
typedef struct tySequence__d8ZV4IMgHt9biik9cS9a0hrmg_Content tySequence__d8ZV4IMgHt9biik9cS9a0hrmg_Content;
typedef struct tySequence__GH1mmNKNA2QP4n1tnxJf1w tySequence__GH1mmNKNA2QP4n1tnxJf1w;
typedef struct tySequence__GH1mmNKNA2QP4n1tnxJf1w_Content tySequence__GH1mmNKNA2QP4n1tnxJf1w_Content;
typedef struct tyObject_TNodePair__KE5IEbxbTGxhrXo6rzddjQ tyObject_TNodePair__KE5IEbxbTGxhrXo6rzddjQ;
struct tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA {
	NU16 line;
	NI16 col;
	NI32 fileIndex;
};
typedef NU32 tySet_tyEnum_TNodeFlag__3UjGgL9bLM4RXBnoZJs9cviw;
typedef NU8 tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw;
struct NimStrPayload {
	NI cap;
	NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
	NI len;
	NimStrPayload* p;
};
struct tySequence__9ahcSjIErJohSBBFLwuF56Q {
  NI len; tySequence__9ahcSjIErJohSBBFLwuF56Q_Content* p;
};
struct tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ {
	tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* typField;
	tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA info;
	tySet_tyEnum_TNodeFlag__3UjGgL9bLM4RXBnoZJs9cviw flags;
	tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw kind;
union{
	struct {
	NI64 intVal;
} _kind_1;
	struct {
	NF floatVal;
} _kind_2;
	struct {
	NimStringV2 strVal;
} _kind_3;
	struct {
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* sym;
} _kind_4;
	struct {
	tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA* ident;
} _kind_5;
	struct {
	tySequence__9ahcSjIErJohSBBFLwuF56Q sons;
} _kind_6;
};
};
struct tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA {
	NI32 module;
	NI32 item;
};
typedef NU8 tyEnum_TSymKind__9a75lHd9cV25XwN4jXXBmM0Q;
typedef NU16 tyEnum_TMagic__I3BbtzbLAKAfOym58MkGAg;
typedef NU64 tySet_tyEnum_TSymFlag__Ii9cPbwXR8ePKVRFOdTKpDg;
typedef NU32 tySet_tyEnum_TOption__LEwWf0yAgZkZx5Got2wGSQ;
typedef NU8 tyEnum_TLocKind__4f5UmCRM8alrCgj32FqIRQ;
typedef NU8 tyEnum_TStorageLoc__f19b6ZkRyh7BNPxlyjRbEGg;
typedef NU16 tySet_tyEnum_TLocFlag__Df76pxukl21zlyRFq9aa0Bg;
struct tyObject_TLoc__KvQVlvKb6mbV567NQ0hMOw {
	tyEnum_TLocKind__4f5UmCRM8alrCgj32FqIRQ k;
	tyEnum_TStorageLoc__f19b6ZkRyh7BNPxlyjRbEGg storage;
	tySet_tyEnum_TLocFlag__Df76pxukl21zlyRFq9aa0Bg flags;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* lode;
	NimStringV2 snippet;
};
struct tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg {
	tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA itemId;
	tyEnum_TSymKind__9a75lHd9cV25XwN4jXXBmM0Q kind;
union{
	struct {
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* gcUnsafetyReason;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* transformedBody;
} _kind_1;
	struct {
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* guard;
	NI bitsize;
	NI alignment;
} _kind_2;
};
	tyEnum_TMagic__I3BbtzbLAKAfOym58MkGAg magic;
	tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* typ;
	tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA* name;
	tyObject_TLineInfo__cGj50BJ9bj3Zx09a9bMvKs8HA info;
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* ownerField;
	tySet_tyEnum_TSymFlag__Ii9cPbwXR8ePKVRFOdTKpDg flags;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* ast;
	tySet_tyEnum_TOption__LEwWf0yAgZkZx5Got2wGSQ options;
	NI position;
	NI32 offset;
	NI32 disamb;
	tyObject_TLoc__KvQVlvKb6mbV567NQ0hMOw loc;
	tyObject_TLib__sVuuRvQkiYNOUiPRZhmZig* annex;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* constraint;
	tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* instantiatedFrom;
};
struct tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA {
	NI id;
	NimStringV2 s;
	tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA* next;
	NI h;
};
typedef NU8 tyEnum_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;
};
struct tySequence__GH1mmNKNA2QP4n1tnxJf1w {
  NI len; tySequence__GH1mmNKNA2QP4n1tnxJf1w_Content* p;
};
struct tyObject_TNodeTable__RKuYIY5Phq1xnepo5DZI2g {
	NI counter;
	tySequence__GH1mmNKNA2QP4n1tnxJf1w data;
	NIM_BOOL ignoreTypes;
};
struct tyObject_TNodePair__KE5IEbxbTGxhrXo6rzddjQ {
	NI h;
	tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* key;
	NI val;
};
typedef NU16 tySet_tyEnum_TTypeCmpFlag__1219bojhd9apB6FQkQGJbzzQ;
struct tySequence__9ahcSjIErJohSBBFLwuF56Q_Content { NI cap; tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* data[SEQ_DECL_SIZE]; };
struct tySequence__d8ZV4IMgHt9biik9cS9a0hrmg_Content { NI cap; tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* data[SEQ_DECL_SIZE]; };
struct tySequence__GH1mmNKNA2QP4n1tnxJf1w_Content { NI cap; tyObject_TNodePair__KE5IEbxbTGxhrXo6rzddjQ data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(NI, hashTree__treetab_u6)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
static N_INLINE(NI, emarkamp___pureZhashes_u5)(NI h_p0, NI val_p1);
static N_INLINE(NI, hash__pureZjson_u3377)(NI64 x_p0);
static N_INLINE(NI, hashWangYi1__pureZhashes_u140)(NU64 x_p0);
static N_INLINE(NU64, hiXorLo__pureZhashes_u81)(NU64 a_p0, NU64 b_p1);
static N_INLINE(NU64, hiXorLoFallback64__pureZhashes_u37)(NU64 a_p0, NU64 b_p1);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
static N_INLINE(NI, hash__treetab_u26)(NU64 x_p0);
N_LIB_PRIVATE N_NIMCALL(NI, hash__pureZhashes_u587)(NimStringV2 x_p0);
N_LIB_PRIVATE N_NIMCALL(NI, hash__ast_u621)(tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA x_p0);
static N_INLINE(NI, len__ast_u3190)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
static N_INLINE(NI, emarkdollar___pureZhashes_u20)(NI h_p0);
N_LIB_PRIVATE N_NIMCALL(NI, nodeTableRawGet__treetab_u86)(tyObject_TNodeTable__RKuYIY5Phq1xnepo5DZI2g t_p0, NI k_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* key_p2);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, treesEquivalent__treetab_u42)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* a_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* b_p1, NIM_BOOL ignoreTypes_p2);
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_u1837)(tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* a_p0, tyObject_TType__8qAQZfpTDk89aeclTNn4d9cg* b_p1, tySet_tyEnum_TTypeCmpFlag__1219bojhd9apB6FQkQGJbzzQ flags_p2);
static N_INLINE(NI, nextTry__astalgo_u36)(NI h_p0, NI maxHash_p1);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, mustRehash__astalgo_u33)(NI length_p0, NI counter_p1);
N_LIB_PRIVATE N_NIMCALL(tySequence__GH1mmNKNA2QP4n1tnxJf1w, newSeq__treetab_u191)(NI len_p0);
N_LIB_PRIVATE N_NIMCALL(void, nodeTableRawInsert__treetab_u133)(tySequence__GH1mmNKNA2QP4n1tnxJf1w* data_p0, NI k_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* key_p2, NI val_p3);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___ast_u3255)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** dest_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* src_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___ast_u6557)(tySequence__GH1mmNKNA2QP4n1tnxJf1w* dest_p0, tySequence__GH1mmNKNA2QP4n1tnxJf1w src_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___ast_u6545)(tySequence__GH1mmNKNA2QP4n1tnxJf1w* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_u6548)(tySequence__GH1mmNKNA2QP4n1tnxJf1w dest_p0);
extern NIM_BOOL nimInErrorMode__system_u4143;
static N_INLINE(NI, emarkamp___pureZhashes_u5)(NI h_p0, NI val_p1) {
	NI result;
	NU h_2;
	NU val_2;
	NU res_1;
	h_2 = ((NU) (h_p0));
	val_2 = ((NU) (val_p1));
	res_1 = (NU)((NU32)(h_2) + (NU32)(val_2));
	res_1 = (NU)((NU32)(res_1) + (NU32)((NU)((NU32)(res_1) << (NU32)(((NI)10) & (32 - 1)))));
	res_1 = (NU)(res_1 ^ (NU)((NU32)(res_1) >> (NU32)(((NI)6) & (32 - 1))));
	result = ((NI) (res_1));
	return result;
}
static N_INLINE(NU64, hiXorLoFallback64__pureZhashes_u37)(NU64 a_p0, NU64 b_p1) {
	NU64 result;
	NU64 colontmpD_;
	NU64 colontmpD__2;
	NU64 colontmpD__3;
	NU64 colontmpD__4;
	NU64 aH_1;
	NU64 aL_1;
	NU64 bH_1;
	NU64 bL_1;
	NU64 rHH_1;
	NU64 rHL_1;
	NU64 rLH_1;
	NU64 rLL_1;
	NU64 t_1;
	NU64 c_1;
	NU64 lo_1;
	NU64 T6_;
	NU64 hi_1;
{	colontmpD_ = (NU64)0;
	colontmpD__2 = (NU64)0;
	colontmpD__3 = (NU64)0;
	colontmpD__4 = (NU64)0;
	aH_1 = (NU64)((NU64)(a_p0) >> (NU64)(((NI)32) & (64 - 1)));
	aL_1 = (NU64)(a_p0 & 4294967295ULL);
	bH_1 = (NU64)((NU64)(b_p1) >> (NU64)(((NI)32) & (64 - 1)));
	bL_1 = (NU64)(b_p1 & 4294967295ULL);
	rHH_1 = (NU64)((NU64)(aH_1) * (NU64)(bH_1));
	rHL_1 = (NU64)((NU64)(aH_1) * (NU64)(bL_1));
	rLH_1 = (NU64)((NU64)(aL_1) * (NU64)(bH_1));
	rLL_1 = (NU64)((NU64)(aL_1) * (NU64)(bL_1));
	t_1 = (NU64)((NU64)(rLL_1) + (NU64)((NU64)((NU64)(rHL_1) << (NU64)(((NI)32) & (64 - 1)))));
	{
		if (!((NU64)(t_1) < (NU64)(rLL_1))) goto LA3_;
		colontmpD_ = 1ULL;
		c_1 = colontmpD_;
	}
	goto LA1_;
LA3_: ;
	{
		colontmpD__2 = 0ULL;
		c_1 = colontmpD__2;
	}
LA1_: ;
	lo_1 = (NU64)((NU64)(t_1) + (NU64)((NU64)((NU64)(rLH_1) << (NU64)(((NI)32) & (64 - 1)))));
	T6_ = (NU64)0;
	{
		if (!((NU64)(lo_1) < (NU64)(t_1))) goto LA9_;
		colontmpD__3 = 1ULL;
		T6_ = colontmpD__3;
	}
	goto LA7_;
LA9_: ;
	{
		colontmpD__4 = 0ULL;
		T6_ = colontmpD__4;
	}
LA7_: ;
	c_1 += T6_;
	hi_1 = (NU64)((NU64)((NU64)((NU64)((NU64)((NU64)(rHH_1) + (NU64)((NU64)((NU64)(rHL_1) >> (NU64)(((NI)32) & (64 - 1)))))) + (NU64)((NU64)((NU64)(rLH_1) >> (NU64)(((NI)32) & (64 - 1)))))) + (NU64)(c_1));
	result = (NU64)(hi_1 ^ lo_1);
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
	NIM_BOOL* result;
	result = (&nimInErrorMode__system_u4143);
	return result;
}
static N_INLINE(NU64, hiXorLo__pureZhashes_u81)(NU64 a_p0, NU64 b_p1) {
	NU64 result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NU64)0;
	result = hiXorLoFallback64__pureZhashes_u37(a_p0, b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, hashWangYi1__pureZhashes_u140)(NU64 x_p0) {
	NI result;
	NU64 T1_;
	NU64 T2_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI)0;
	T1_ = (NU64)0;
	T1_ = hiXorLo__pureZhashes_u81(11562461410679940143ULL, (NU64)(x_p0 ^ 16646288086500911323ULL));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T2_ = (NU64)0;
	T2_ = hiXorLo__pureZhashes_u81(T1_, 16952864883938283885ULL);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = ((NI) (T2_));
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, hash__pureZjson_u3377)(NI64 x_p0) {
	NI result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI)0;
	result = hashWangYi1__pureZhashes_u140(((NU64) (x_p0)));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, hash__treetab_u26)(NU64 x_p0) {
	NI result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI)0;
	result = hashWangYi1__pureZhashes_u140(((NU64) (x_p0)));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	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(NI, emarkdollar___pureZhashes_u20)(NI h_p0) {
	NI result;
	NU h_2;
	NU res_1;
	h_2 = ((NU) (h_p0));
	res_1 = (NU)((NU32)(h_2) + (NU32)((NU)((NU32)(h_2) << (NU32)(((NI)3) & (32 - 1)))));
	res_1 = (NU)(res_1 ^ (NU)((NU32)(res_1) >> (NU32)(((NI)11) & (32 - 1))));
	res_1 = (NU)((NU32)(res_1) + (NU32)((NU)((NU32)(res_1) << (NU32)(((NI)15) & (32 - 1)))));
	result = ((NI) (res_1));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, hashTree__treetab_u6)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0) {
	NI result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI)0;
	{
		if (!(n_p0 == 0)) goto LA3_;
		goto BeforeRet_;
	}
LA3_: ;
	result = (*n_p0).kind;
	switch ((*n_p0).kind) {
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)1):
	{
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3):
	{
		tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA xX60gensym1__1;
		xX60gensym1__1 = (*(*n_p0)._kind_4.sym).itemId;
		result = emarkamp___pureZhashes_u5(result, (NI)((NI)((NU32)(((NI) (xX60gensym1__1.module))) << (NU32)(((NI)20) & (32 - 1))) + ((NI) (xX60gensym1__1.item))));
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)2):
	{
		result = emarkamp___pureZhashes_u5(result, (*(*n_p0)._kind_5.ident).h);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)5) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)15):
	{
		NI T9_;
		T9_ = (NI)0;
		T9_ = hash__pureZjson_u3377((*n_p0)._kind_1.intVal);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result = emarkamp___pureZhashes_u5(result, T9_);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)16) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)18):
	{
		union { NF source; NU64 dest; } LOC11;
		NI T12_;
		LOC11.source = (*n_p0)._kind_2.floatVal;
		T12_ = (NI)0;
		T12_ = hash__treetab_u26(LOC11.dest);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result = emarkamp___pureZhashes_u5(result, T12_);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)20) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)22):
	{
		NI T14_;
		T14_ = (NI)0;
		T14_ = hash__pureZhashes_u587((*n_p0)._kind_3.strVal);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result = emarkamp___pureZhashes_u5(result, T14_);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)4):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)23):
	{
		NI T16_;
		T16_ = (NI)0;
		T16_ = hash__ast_u621((*(*n_p0).typField).itemId);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result = emarkamp___pureZhashes_u5(result, T16_);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	default:
	{
		{
			NI i_1;
			NI colontmp_;
			NI i_2;
			i_1 = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = len__ast_u3190(n_p0);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			i_2 = ((NI)0);
			{
				while (1) {
					NI T21_;
					if (!(i_2 < colontmp_)) goto LA20;
					i_1 = i_2;
					T21_ = (NI)0;
					T21_ = hashTree__treetab_u6((*n_p0)._kind_6.sons.p->data[i_1]);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					result = emarkamp___pureZhashes_u5(result, T21_);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					i_2 += ((NI)1);
				} LA20: ;
			}
		}
	}
	break;
	}
	result = emarkdollar___pureZhashes_u20(result);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}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, treesEquivalent__treetab_u42)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* a_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* b_p1, NIM_BOOL ignoreTypes_p2) {
	NIM_BOOL result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	{
		if (!(a_p0 == b_p1)) goto LA3_;
		result = NIM_TRUE;
	}
	goto LA1_;
LA3_: ;
	{
		NIM_BOOL T6_;
		NIM_BOOL T7_;
		T6_ = (NIM_BOOL)0;
		T7_ = (NIM_BOOL)0;
		T7_ = !((a_p0 == ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL)));
		if (!(T7_)) goto LA8_;
		T7_ = !((b_p1 == ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL)));
LA8_: ;
		T6_ = T7_;
		if (!(T6_)) goto LA9_;
		T6_ = ((*a_p0).kind == (*b_p1).kind);
LA9_: ;
		if (!T6_) goto LA10_;
		switch ((*a_p0).kind) {
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)1):
		{
			result = NIM_TRUE;
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3):
		{
			tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA xX60gensym7__1;
			tyObject_ItemId__N3z7uIvKCrk0S9cej5ew0nA xX60gensym9__1;
			xX60gensym7__1 = (*(*a_p0)._kind_4.sym).itemId;
			xX60gensym9__1 = (*(*b_p1)._kind_4.sym).itemId;
			result = ((NI)((NI)((NU32)(((NI) (xX60gensym7__1.module))) << (NU32)(((NI)20) & (32 - 1))) + ((NI) (xX60gensym7__1.item))) == (NI)((NI)((NU32)(((NI) (xX60gensym9__1.module))) << (NU32)(((NI)20) & (32 - 1))) + ((NI) (xX60gensym9__1.item))));
		}
		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)15):
		{
			result = ((*a_p0)._kind_1.intVal == (*b_p1)._kind_1.intVal);
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)16) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)18):
		{
			union { NF source; NU64 dest; } LOC17;
			union { NF source; NU64 dest; } LOC18;
			LOC17.source = (*a_p0)._kind_2.floatVal;
			LOC18.source = (*b_p1)._kind_2.floatVal;
			result = (LOC17.dest == LOC18.dest);
		}
		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)4):
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)23):
		{
			result = ((*a_p0).typField == (*b_p1).typField);
		}
		break;
		default:
		{
			{
				NI T24_;
				NI T25_;
				T24_ = (NI)0;
				T24_ = len__ast_u3190(a_p0);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				T25_ = (NI)0;
				T25_ = len__ast_u3190(b_p1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				if (!(T24_ == T25_)) goto LA26_;
				{
					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 LA30;
							i_1 = i_2;
							{
								NIM_BOOL T33_;
								T33_ = (NIM_BOOL)0;
								T33_ = treesEquivalent__treetab_u42((*a_p0)._kind_6.sons.p->data[i_1], (*b_p1)._kind_6.sons.p->data[i_1], ignoreTypes_p2);
								if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
								if (!!(T33_)) goto LA34_;
								goto BeforeRet_;
							}
LA34_: ;
							i_2 += ((NI)1);
						} LA30: ;
					}
				}
				result = NIM_TRUE;
			}
			goto LA22_;
LA26_: ;
			{
				result = NIM_FALSE;
			}
LA22_: ;
		}
		break;
		}
		{
			NIM_BOOL T39_;
			tySet_tyEnum_TTypeCmpFlag__1219bojhd9apB6FQkQGJbzzQ T43_;
			T39_ = (NIM_BOOL)0;
			T39_ = result;
			if (!(T39_)) goto LA40_;
			T39_ = !(ignoreTypes_p2);
LA40_: ;
			if (!T39_) goto LA41_;
			T43_ = 0;
			result = sameTypeOrNil__types_u1837((*a_p0).typField, (*b_p1).typField, T43_);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
LA41_: ;
	}
	goto LA1_;
LA10_: ;
	{
		result = NIM_FALSE;
	}
LA1_: ;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, nextTry__astalgo_u36)(NI h_p0, NI maxHash_p1) {
	NI result;
	result = (NI)((NI)((NI)(((NI)5) * h_p0) + ((NI)1)) & maxHash_p1);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, nodeTableRawGet__treetab_u86)(tyObject_TNodeTable__RKuYIY5Phq1xnepo5DZI2g t_p0, NI k_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* key_p2) {
	NI result;
	NI h_1;
	NI T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI)0;
	T1_ = (t_p0.data.len-1);
	h_1 = (NI)(k_p1 & T1_);
	{
		while (1) {
			NI T10_;
			if (!!((t_p0.data.p->data[h_1].key == ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL)))) goto LA3;
			{
				NIM_BOOL T6_;
				T6_ = (NIM_BOOL)0;
				T6_ = (t_p0.data.p->data[h_1].h == k_p1);
				if (!(T6_)) goto LA7_;
				T6_ = treesEquivalent__treetab_u42(t_p0.data.p->data[h_1].key, key_p2, t_p0.ignoreTypes);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
LA7_: ;
				if (!T6_) goto LA8_;
				result = h_1;
				goto BeforeRet_;
			}
LA8_: ;
			T10_ = (t_p0.data.len-1);
			h_1 = nextTry__astalgo_u36(h_1, T10_);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		} LA3: ;
	}
	result = ((NI)-1);
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, nodeTableRawInsert__treetab_u133)(tySequence__GH1mmNKNA2QP4n1tnxJf1w* data_p0, NI k_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* key_p2, NI val_p3) {
	NI h_1;
	NI T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	T1_ = ((*data_p0).len-1);
	h_1 = (NI)(k_p1 & T1_);
	{
		while (1) {
			NI T4_;
			if (!!(((*data_p0).p->data[h_1].key == ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL)))) goto LA3;
			T4_ = ((*data_p0).len-1);
			h_1 = nextTry__astalgo_u36(h_1, T4_);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		} LA3: ;
	}
	(*data_p0).p->data[h_1].h = k_p1;
	eqcopy___ast_u3255(&(*data_p0).p->data[h_1].key, key_p2);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	(*data_p0).p->data[h_1].val = val_p3;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(NI, nodeTableTestOrSet__treetab_u225)(tyObject_TNodeTable__RKuYIY5Phq1xnepo5DZI2g* t_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* key_p1, NI val_p2) {
	NI result;
	NI k_1;
	NI index_1;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI)0;
	k_1 = hashTree__treetab_u6(key_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	index_1 = nodeTableRawGet__treetab_u86((*t_p0), k_1, key_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	{
		if (!(((NI)0) <= index_1)) goto LA3_;
		result = (*t_p0).data.p->data[index_1].val;
	}
	goto LA1_;
LA3_: ;
	{
		{
			NI T8_;
			NIM_BOOL T9_;
			tySequence__GH1mmNKNA2QP4n1tnxJf1w n_1;
			NI T12_;
			tySequence__GH1mmNKNA2QP4n1tnxJf1w T21_;
			T8_ = (*t_p0).data.len;
			T9_ = (NIM_BOOL)0;
			T9_ = mustRehash__astalgo_u33(T8_, (*t_p0).counter);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			if (!T9_) goto LA10_;
			n_1.len = 0; n_1.p = NIM_NIL;
			T12_ = (*t_p0).data.len;
			n_1 = newSeq__treetab_u191(((NI)(T12_ * ((NI)2))));
			{
				NI i_1;
				NI colontmp_;
				NI T14_;
				NI res_1;
				i_1 = (NI)0;
				colontmp_ = (NI)0;
				T14_ = ((*t_p0).data.len-1);
				colontmp_ = T14_;
				res_1 = ((NI)0);
				{
					while (1) {
						if (!(res_1 <= colontmp_)) goto LA16;
						i_1 = ((NI) (res_1));
						{
							if (!!(((*t_p0).data.p->data[i_1].key == ((tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ*) NIM_NIL)))) goto LA19_;
							nodeTableRawInsert__treetab_u133((&n_1), (*t_p0).data.p->data[i_1].h, (*t_p0).data.p->data[i_1].key, (*t_p0).data.p->data[i_1].val);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						}
LA19_: ;
						res_1 += ((NI)1);
					} LA16: ;
				}
			}
			T21_.len = 0; T21_.p = NIM_NIL;
			T21_ = n_1;
			eqwasMoved___ast_u6545((&n_1));
			eqsink___ast_u6557((&(*t_p0).data), T21_);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			eqdestroy___ast_u6548(n_1);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
LA10_: ;
		nodeTableRawInsert__treetab_u133((&(*t_p0).data), k_1, key_p1, val_p2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result = val_p2;
		(*t_p0).counter += ((NI)1);
	}
LA1_: ;
	}BeforeRet_: ;
	return result;
}
