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

#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_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 tyObject_TNodeTable__RKuYIY5Phq1xnepo5DZI2g tyObject_TNodeTable__RKuYIY5Phq1xnepo5DZI2g;
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_TIdent__LG4CHFyohryWo9bzZeyjDjA {
	NI id;
	NimStringV2 s;
	tyObject_TIdent__LG4CHFyohryWo9bzZeyjDjA* next;
	NI h;
};
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 tySequence__GH1mmNKNA2QP4n1tnxJf1w {
  NI len; tySequence__GH1mmNKNA2QP4n1tnxJf1w_Content* p;
};
struct tyObject_TNodeTable__RKuYIY5Phq1xnepo5DZI2g {
	NI counter;
	tySequence__GH1mmNKNA2QP4n1tnxJf1w data;
};
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__GH1mmNKNA2QP4n1tnxJf1w_Content { NI cap; tyObject_TNodePair__KE5IEbxbTGxhrXo6rzddjQ data[SEQ_DECL_SIZE]; };
static N_INLINE(NI, emarkamp___pureZhashes_u5)(NI h_p0, NI val_p1);
N_LIB_PRIVATE N_NIMCALL(NI, toInt__system_u1677)(NF f_p0);
N_LIB_PRIVATE N_NIMCALL(NI, hash__pureZhashes_u602)(NimStringV2 x_p0);
static N_INLINE(NI, len__ast_u3175)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
N_LIB_PRIVATE N_NIMCALL(NI, hashTree__treetab_u6)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* n_p0);
static N_INLINE(NI, emarkdollar___pureZhashes_u20)(NI h_p0);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(NI, nodeTableRawGet__treetab_u75)(tyObject_TNodeTable__RKuYIY5Phq1xnepo5DZI2g t_p0, NI k_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* key_p2);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, treesEquivalent__treetab_u36)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* a_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* b_p1);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringV2 a_p0, NimStringV2 b_p1);
static N_INLINE(NIM_BOOL, equalMem__system_u1726)(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_u1840)(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_u180)(NI len_p0);
N_LIB_PRIVATE N_NIMCALL(void, nodeTableRawInsert__treetab_u122)(tySequence__GH1mmNKNA2QP4n1tnxJf1w* data_p0, NI k_p1, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* key_p2, NI val_p3);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___ast_u3240)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ** dest_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* src_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___ast_u6529)(tySequence__GH1mmNKNA2QP4n1tnxJf1w* dest_p0, tySequence__GH1mmNKNA2QP4n1tnxJf1w src_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___ast_u6517)(tySequence__GH1mmNKNA2QP4n1tnxJf1w* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___ast_u6520)(tySequence__GH1mmNKNA2QP4n1tnxJf1w dest_p0);
extern NIM_BOOL nimInErrorMode__system_u4304;
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)((NU64)(h_2) + (NU64)(val_2));
	res_1 = (NU)((NU64)(res_1) + (NU64)((NU)((NU64)(res_1) << (NU64)(((NI)10)))));
	res_1 = (NU)(res_1 ^ (NU)((NU64)(res_1) >> (NU64)(((NI)6))));
	result = ((NI) (res_1));
	return result;
}
static N_INLINE(NI, len__ast_u3175)(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)((NU64)(h_2) + (NU64)((NU)((NU64)(h_2) << (NU64)(((NI)3)))));
	res_1 = (NU)(res_1 ^ (NU)((NU64)(res_1) >> (NU64)(((NI)11))));
	res_1 = (NU)((NU64)(res_1) + (NU64)((NU)((NU64)(res_1) << (NU64)(((NI)15)))));
	result = ((NI) (res_1));
	return result;
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
	NIM_BOOL* result;
	result = (&nimInErrorMode__system_u4304);
	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):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)23):
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)4):
	{
	}
	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)3):
	{
		tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* xX60gensym0__1;
		xX60gensym0__1 = NIM_NIL;
		xX60gensym0__1 = (*n_p0)._kind_4.sym;
		result = emarkamp___pureZhashes_u5(result, (NI)((NI)((NU64)(((NI) ((*xX60gensym0__1).itemId.module))) << (NU64)(((NI)24))) + ((NI) ((*xX60gensym0__1).itemId.item))));
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)5) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)15):
	{
		{
			NIM_BOOL T11_;
			T11_ = (NIM_BOOL)0;
			T11_ = ((IL64(-9223372036854775807) - IL64(1)) <= (*n_p0)._kind_1.intVal);
			if (!(T11_)) goto LA12_;
			T11_ = ((*n_p0)._kind_1.intVal <= IL64(9223372036854775807));
LA12_: ;
			if (!T11_) goto LA13_;
			result = emarkamp___pureZhashes_u5(result, ((NI) ((*n_p0)._kind_1.intVal)));
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
LA13_: ;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)16) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)18):
	{
		{
			NIM_BOOL T18_;
			NI T22_;
			T18_ = (NIM_BOOL)0;
			T18_ = (-1000000.0 <= (*n_p0)._kind_2.floatVal);
			if (!(T18_)) goto LA19_;
			T18_ = ((*n_p0)._kind_2.floatVal <= 1000000.0);
LA19_: ;
			if (!T18_) goto LA20_;
			T22_ = (NI)0;
			T22_ = toInt__system_u1677((*n_p0)._kind_2.floatVal);
			result = emarkamp___pureZhashes_u5(result, T22_);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
LA20_: ;
	}
	break;
	case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)20) ... ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)22):
	{
		NI T24_;
		T24_ = (NI)0;
		T24_ = hash__pureZhashes_u602((*n_p0)._kind_3.strVal);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result = emarkamp___pureZhashes_u5(result, T24_);
		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_u3175(n_p0);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			i_2 = ((NI)0);
			{
				while (1) {
					NI T29_;
					if (!(i_2 < colontmp_)) goto LA28;
					i_1 = i_2;
					T29_ = (NI)0;
					T29_ = hashTree__treetab_u6((*n_p0)._kind_6.sons.p->data[i_1]);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					result = emarkamp___pureZhashes_u5(result, T29_);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					i_2 += ((NI)1);
				} LA28: ;
			}
		}
	}
	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_u1726)(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_u1726(((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_u36)(tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* a_p0, tyObject_TNode__eTSqWXWVL7LuzmZf0c6unQ* b_p1) {
	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):
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)23):
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)4):
		{
			result = NIM_TRUE;
		}
		break;
		case ((tyEnum_TNodeKind__eZrq5BxQzEyOryCcwdj4Kw)3):
		{
			tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* xX60gensym6__1;
			tyObject_TSym__lYFc3T7YHHNBnaZR9at0NSg* xX60gensym7__1;
			xX60gensym6__1 = NIM_NIL;
			xX60gensym7__1 = NIM_NIL;
			xX60gensym6__1 = (*a_p0)._kind_4.sym;
			xX60gensym7__1 = (*b_p1)._kind_4.sym;
			result = ((NI)((NI)((NU64)(((NI) ((*xX60gensym6__1).itemId.module))) << (NU64)(((NI)24))) + ((NI) ((*xX60gensym6__1).itemId.item))) == (NI)((NI)((NU64)(((NI) ((*xX60gensym7__1).itemId.module))) << (NU64)(((NI)24))) + ((NI) ((*xX60gensym7__1).itemId.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):
		{
			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;
		default:
		{
			{
				NI T21_;
				NI T22_;
				T21_ = (NI)0;
				T21_ = len__ast_u3175(a_p0);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				T22_ = (NI)0;
				T22_ = len__ast_u3175(b_p1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				if (!(T21_ == T22_)) goto LA23_;
				{
					NI i_1;
					NI colontmp_;
					NI i_2;
					i_1 = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = len__ast_u3175(a_p0);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					i_2 = ((NI)0);
					{
						while (1) {
							if (!(i_2 < colontmp_)) goto LA27;
							i_1 = i_2;
							{
								NIM_BOOL T30_;
								T30_ = (NIM_BOOL)0;
								T30_ = treesEquivalent__treetab_u36((*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 (!!(T30_)) goto LA31_;
								goto BeforeRet_;
							}
LA31_: ;
							i_2 += ((NI)1);
						} LA27: ;
					}
				}
				result = NIM_TRUE;
			}
			goto LA19_;
LA23_: ;
			{
				result = NIM_FALSE;
			}
LA19_: ;
		}
		break;
		}
		{
			tySet_tyEnum_TTypeCmpFlag__1219bojhd9apB6FQkQGJbzzQ T38_;
			if (!result) goto LA36_;
			T38_ = 0;
			result = sameTypeOrNil__types_u1840((*a_p0).typField, (*b_p1).typField, T38_);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
LA36_: ;
	}
	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_u75)(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_u36(t_p0.data.p->data[h_1].key, key_p2);
				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_u122)(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_u3240(&(*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_u214)(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_u75((*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_u180(((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_u122((&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_u6517((&n_1));
			eqsink___ast_u6529((&(*t_p0).data), T21_);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			eqdestroy___ast_u6520(n_1);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
LA10_: ;
		nodeTableRawInsert__treetab_u122((&(*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;
}
