/* 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 tySequence__9bAGqSvkAaFL9bWjsEPslrFA tySequence__9bAGqSvkAaFL9bWjsEPslrFA;
typedef struct tySequence__9bAGqSvkAaFL9bWjsEPslrFA_Content tySequence__9bAGqSvkAaFL9bWjsEPslrFA_Content;
typedef struct tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg;
typedef struct tyObject_BiTable__KR9c7QZguPO3OKZOIcphgcA tyObject_BiTable__KR9c7QZguPO3OKZOIcphgcA;
typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ tySequence__sM4lkSb7zS6F7OVMvW9cffQ;
typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ_Content tySequence__sM4lkSb7zS6F7OVMvW9cffQ_Content;
typedef struct tyObject_BiTable__9aUXwPoJbNPqj9a249c0iSmlg tyObject_BiTable__9aUXwPoJbNPqj9a249c0iSmlg;
typedef struct tySequence__IHUFRsFxZNv7YydiUO2esQ tySequence__IHUFRsFxZNv7YydiUO2esQ;
typedef struct tySequence__IHUFRsFxZNv7YydiUO2esQ_Content tySequence__IHUFRsFxZNv7YydiUO2esQ_Content;
typedef struct tyObject_NimRawSeq__Tvl1urqmI1tXqzkHPbWVJQ tyObject_NimRawSeq__Tvl1urqmI1tXqzkHPbWVJQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct tySequence__9bAGqSvkAaFL9bWjsEPslrFA {
  NI len; tySequence__9bAGqSvkAaFL9bWjsEPslrFA_Content* p;
};
struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ {
  NI len; tySequence__sM4lkSb7zS6F7OVMvW9cffQ_Content* p;
};
struct tyObject_BiTable__KR9c7QZguPO3OKZOIcphgcA {
	tySequence__sM4lkSb7zS6F7OVMvW9cffQ vals;
	tySequence__9bAGqSvkAaFL9bWjsEPslrFA keys;
};
struct tySequence__IHUFRsFxZNv7YydiUO2esQ {
  NI len; tySequence__IHUFRsFxZNv7YydiUO2esQ_Content* p;
};
struct tyObject_BiTable__9aUXwPoJbNPqj9a249c0iSmlg {
	tySequence__IHUFRsFxZNv7YydiUO2esQ vals;
	tySequence__9bAGqSvkAaFL9bWjsEPslrFA keys;
};
struct tyObject_NimRawSeq__Tvl1urqmI1tXqzkHPbWVJQ {
	NI len;
	void* p;
};
struct NimStrPayload {
	NI cap;
	NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
	NI len;
	NimStrPayload* p;
};
struct tySequence__9bAGqSvkAaFL9bWjsEPslrFA_Content { NI cap; NU32 data[SEQ_DECL_SIZE]; };
struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ_Content { NI cap; NimStringV2 data[SEQ_DECL_SIZE]; };
struct tySequence__IHUFRsFxZNv7YydiUO2esQ_Content { NI cap; NI64 data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, alignedDealloc)(void* p_p0, NI align_p1);
N_LIB_PRIVATE N_NIMCALL(void, loadSeq__icZic_u7825)(tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg* f_p0, tySequence__sM4lkSb7zS6F7OVMvW9cffQ* s_p1);
N_LIB_PRIVATE N_NIMCALL(void, loadSeq__icZic_u7861)(tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg* f_p0, tySequence__9bAGqSvkAaFL9bWjsEPslrFA* s_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___icZic_u1685)(tySequence__9bAGqSvkAaFL9bWjsEPslrFA dest_p0);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, loadSeq__icZic_u8142)(tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg* f_p0, tySequence__IHUFRsFxZNv7YydiUO2esQ* s_p1);
static N_INLINE(NIM_BOOL, sameSeqPayload)(void* x_p0, void* y_p1);
N_LIB_PRIVATE N_NIMCALL(void, setLen__icZic_u1588)(tySequence__9bAGqSvkAaFL9bWjsEPslrFA* s_p0, NI newlen_p1);
static N_INLINE(void, nimCopySeqPayload)(void* dest_p0, void* src_p1, NI elemSize_p2, NI elemAlign_p3);
N_LIB_PRIVATE N_NIMCALL(NI, align__system_u1639)(NI address_p0, NI alignment_p1);
static N_INLINE(void, copyMem__system_u1742)(void* dest_p0, void* source_p1, NI size_p2);
static N_INLINE(void, nimCopyMem)(void* dest_p0, void* source_p1, NI size_p2);
N_LIB_PRIVATE N_NIMCALL(NI, hash__pureZhashes_u587)(NimStringV2 x_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);
static N_INLINE(NI, nextTry__icZbitabs_u12)(NI h_p0, NI maxHash_p1);
static N_INLINE(NIM_BOOL, mustRehash__icZbitabs_u56)(NI length_p0, NI counter_p1);
N_LIB_PRIVATE N_NIMCALL(void, enlarge__icZic_u1573)(tyObject_BiTable__KR9c7QZguPO3OKZOIcphgcA* t_p0);
N_LIB_PRIVATE N_NIMCALL(void, newSeq__icZic_u1580)(tySequence__9bAGqSvkAaFL9bWjsEPslrFA* s_p0, NI len_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___icZiclineinfos_u100)(NU32* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, add__stdZenumutils_u71)(tySequence__sM4lkSb7zS6F7OVMvW9cffQ* x_p0, NimStringV2 y_p1);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, eqdup___system_u2697)(NimStringV2 src_p0);
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);
N_LIB_PRIVATE N_NIMCALL(void, enlarge__icZic_u3422)(tyObject_BiTable__9aUXwPoJbNPqj9a249c0iSmlg* t_p0);
N_LIB_PRIVATE N_NIMCALL(void, add__icZic_u3476)(tySequence__IHUFRsFxZNv7YydiUO2esQ* x_p0, NI64 y_p1);
N_LIB_PRIVATE N_NIMCALL(void, storeSeq__icZic_u10338)(tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg* f_p0, tySequence__sM4lkSb7zS6F7OVMvW9cffQ s_p1);
N_LIB_PRIVATE N_NIMCALL(void, storeSeq__icZic_u10371)(tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg* f_p0, tySequence__9bAGqSvkAaFL9bWjsEPslrFA s_p1);
N_LIB_PRIVATE N_NIMCALL(void, storeSeq__icZic_u10483)(tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg* f_p0, tySequence__IHUFRsFxZNv7YydiUO2esQ s_p1);
extern NIM_BOOL nimInErrorMode__system_u4143;
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___icZic_u1685)(tySequence__9bAGqSvkAaFL9bWjsEPslrFA dest_p0) {
	if (dest_p0.p && !(dest_p0.p->cap & NIM_STRLIT_FLAG)) {
 alignedDealloc(dest_p0.p, NIM_ALIGNOF(NU32));
}
}
N_LIB_PRIVATE N_NIMCALL(void, eqsink___icZic_u1694)(tySequence__9bAGqSvkAaFL9bWjsEPslrFA* dest_p0, tySequence__9bAGqSvkAaFL9bWjsEPslrFA src_p1) {
	if ((*dest_p0).p != src_p1.p) {	eqdestroy___icZic_u1685((*dest_p0));
	}
(*dest_p0).len = src_p1.len; (*dest_p0).p = src_p1.p;
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
	NIM_BOOL* result;
	result = (&nimInErrorMode__system_u4143);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, load__icZic_u7821)(tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg* f_p0, tyObject_BiTable__KR9c7QZguPO3OKZOIcphgcA* t_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	loadSeq__icZic_u7825(f_p0, (&(*t_p1).vals));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	loadSeq__icZic_u7861(f_p0, (&(*t_p1).keys));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, load__icZic_u8138)(tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg* f_p0, tyObject_BiTable__9aUXwPoJbNPqj9a249c0iSmlg* t_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	loadSeq__icZic_u8142(f_p0, (&(*t_p1).vals));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	loadSeq__icZic_u7861(f_p0, (&(*t_p1).keys));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
static N_INLINE(NIM_BOOL, sameSeqPayload)(void* x_p0, void* y_p1) {
	NIM_BOOL result;
	result = ((*((tyObject_NimRawSeq__Tvl1urqmI1tXqzkHPbWVJQ*) (x_p0))).p == (*((tyObject_NimRawSeq__Tvl1urqmI1tXqzkHPbWVJQ*) (y_p1))).p);
	return result;
}
static N_INLINE(void, nimCopyMem)(void* dest_p0, void* source_p1, NI size_p2) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memcpy(dest_p0, source_p1, ((size_t) (size_p2)));
}
static N_INLINE(void, copyMem__system_u1742)(void* dest_p0, void* source_p1, NI size_p2) {
	nimCopyMem(dest_p0, source_p1, size_p2);
}
static N_INLINE(void, nimCopySeqPayload)(void* dest_p0, void* src_p1, NI elemSize_p2, NI elemAlign_p3) {
	tyObject_NimRawSeq__Tvl1urqmI1tXqzkHPbWVJQ* d_1;
	tyObject_NimRawSeq__Tvl1urqmI1tXqzkHPbWVJQ* s_1;
	d_1 = ((tyObject_NimRawSeq__Tvl1urqmI1tXqzkHPbWVJQ*) (dest_p0));
	s_1 = ((tyObject_NimRawSeq__Tvl1urqmI1tXqzkHPbWVJQ*) (src_p1));
	{
		NI headerSize_1;
		if (!(((NI)0) < (*s_1).len)) goto LA3_;
		headerSize_1 = align__system_u1639(((NI)4), elemAlign_p3);
		copyMem__system_u1742(((void*) ((NU)((NU32)(((NU) (ptrdiff_t) ((*d_1).p))) + (NU32)(((NU) (headerSize_1)))))), ((void*) ((NU)((NU32)(((NU) (ptrdiff_t) ((*s_1).p))) + (NU32)(((NU) (headerSize_1)))))), ((NI)((*s_1).len * elemSize_p2)));
	}
LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___icZic_u1688)(tySequence__9bAGqSvkAaFL9bWjsEPslrFA* dest_p0, tySequence__9bAGqSvkAaFL9bWjsEPslrFA src_p1) {
	NI T6_;
{	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = sameSeqPayload(dest_p0, (&src_p1));
		if (!T3_) goto LA4_;
		goto BeforeRet_;
	}
LA4_: ;
	T6_ = src_p1.len;
	setLen__icZic_u1588((&(*dest_p0)), T6_);
	nimCopySeqPayload(dest_p0, (&src_p1), ((NI)4), ((NI)4));
	}BeforeRet_: ;
}
static N_INLINE(int, nimCmpMem)(void* a_p0, void* b_p1, NI size_p2) {
	int result;
	result = memcmp(a_p0, b_p1, ((size_t) (size_p2)));
	return result;
}
static N_INLINE(NIM_BOOL, equalMem__system_u1750)(void* a_p0, void* b_p1, NI size_p2) {
	NIM_BOOL result;
	int T1_;
	T1_ = (int)0;
	T1_ = nimCmpMem(a_p0, b_p1, size_p2);
	result = (T1_ == ((NI32)0));
	return result;
}
static N_INLINE(NIM_BOOL, eqStrings)(NimStringV2 a_p0, NimStringV2 b_p1) {
	NIM_BOOL result;
	NI alen_1;
	NI blen_1;
{	result = NIM_FALSE;
	alen_1 = a_p0.len;
	blen_1 = b_p1.len;
	{
		if (!(alen_1 == blen_1)) goto LA3_;
		{
			if (!(alen_1 == ((NI)0))) goto LA7_;
			result = NIM_TRUE;
			goto BeforeRet_;
		}
LA7_: ;
		result = equalMem__system_u1750(((void*) ((&a_p0.p->data[((NI)0)]))), ((void*) ((&b_p1.p->data[((NI)0)]))), (alen_1));
		goto BeforeRet_;
	}
LA3_: ;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, nextTry__icZbitabs_u12)(NI h_p0, NI maxHash_p1) {
	NI result;
	result = (NI)((NI)(h_p0 + ((NI)1)) & maxHash_p1);
	return result;
}
static N_INLINE(NIM_BOOL, mustRehash__icZbitabs_u56)(NI length_p0, NI counter_p1) {
	NIM_BOOL result;
	NIM_BOOL T1_;
	T1_ = (NIM_BOOL)0;
	T1_ = ((NI)(length_p0 * ((NI)2)) < (NI)(counter_p1 * ((NI)3)));
	if (T1_) goto LA2_;
	T1_ = ((NI)(length_p0 - counter_p1) < ((NI)4));
LA2_: ;
	result = T1_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, enlarge__icZic_u1573)(tyObject_BiTable__KR9c7QZguPO3OKZOIcphgcA* t_p0) {
	tySequence__9bAGqSvkAaFL9bWjsEPslrFA n_1;
	NI T1_;
	tySequence__9bAGqSvkAaFL9bWjsEPslrFA T2_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	n_1.len = 0; n_1.p = NIM_NIL;
	T1_ = (*t_p0).keys.len;
	newSeq__icZic_u1580((&n_1), ((NI)(T1_ * ((NI)2))));
	T2_.len = 0; T2_.p = NIM_NIL;
	T2_ = (*t_p0).keys;
	(*t_p0).keys = n_1;
	n_1 = T2_;
	{
		NI i_1;
		NI colontmp_;
		NI T4_;
		NI res_1;
		i_1 = (NI)0;
		colontmp_ = (NI)0;
		T4_ = (n_1.len-1);
		colontmp_ = T4_;
		res_1 = ((NI)0);
		{
			while (1) {
				NU32 eh_1;
				if (!(res_1 <= colontmp_)) goto LA6;
				i_1 = ((NI) (res_1));
				eh_1 = n_1.p->data[i_1];
				{
					NI j_1;
					NI T11_;
					NI T12_;
					if (!((NU32)(((NU32)0)) < (NU32)(eh_1))) goto LA9_;
					T11_ = (NI)0;
					T11_ = hash__pureZhashes_u587((*t_p0).vals.p->data[(NI)(((NI) (eh_1)) - ((NI)1))]);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					T12_ = ((*t_p0).keys.len-1);
					j_1 = (NI)(T11_ & T12_);
					{
						while (1) {
							NI T15_;
							if (!((NU32)(((NU32)0)) < (NU32)((*t_p0).keys.p->data[j_1]))) goto LA14;
							T15_ = ((*t_p0).keys.len-1);
							j_1 = nextTry__icZbitabs_u12(j_1, T15_);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						} LA14: ;
					}
					(*t_p0).keys.p->data[j_1] = n_1.p->data[i_1];
					eqwasMoved___icZiclineinfos_u100((&n_1.p->data[i_1]));
				}
LA9_: ;
				res_1 += ((NI)1);
			} LA6: ;
		}
	}
	eqdestroy___icZic_u1685(n_1);
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(NU32, getOrIncl__icZic_u1548)(tyObject_BiTable__KR9c7QZguPO3OKZOIcphgcA* t_p0, NimStringV2 v_p1) {
	NU32 result;
	NimStringV2 colontmpD_;
	NI origH_1;
	NI h_1;
	NI T1_;
	NI T35_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NU32)0;
	origH_1 = hash__pureZhashes_u587(v_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T1_ = ((*t_p0).keys.len-1);
	h_1 = (NI)(origH_1 & T1_);
	{
		NI T4_;
		T4_ = (*t_p0).keys.len;
		if (!!((T4_ == ((NI)0)))) goto LA5_;
		{
			while (1) {
				NU32 litId_1;
				NI T17_;
				litId_1 = (*t_p0).keys.p->data[h_1];
				{
					if (!!(((NU32)(((NU32)0)) < (NU32)(litId_1)))) goto LA11_;
					goto LA7;
				}
LA11_: ;
				{
					if (!eqStrings((*t_p0).vals.p->data[(NI)(((NI) ((*t_p0).keys.p->data[h_1])) - ((NI)1))], v_p1)) goto LA15_;
					result = litId_1;
					goto BeforeRet_;
				}
LA15_: ;
				T17_ = ((*t_p0).keys.len-1);
				h_1 = nextTry__icZbitabs_u12(h_1, T17_);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			}
		} LA7: ;
		{
			NI T20_;
			NI T21_;
			NIM_BOOL T22_;
			NI T25_;
			T20_ = (*t_p0).keys.len;
			T21_ = (*t_p0).vals.len;
			T22_ = (NIM_BOOL)0;
			T22_ = mustRehash__icZbitabs_u56(T20_, T21_);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			if (!T22_) goto LA23_;
			enlarge__icZic_u1573(t_p0);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			T25_ = ((*t_p0).keys.len-1);
			h_1 = (NI)(origH_1 & T25_);
			{
				while (1) {
					NU32 litId_2;
					NI T32_;
					litId_2 = (*t_p0).keys.p->data[h_1];
					{
						if (!!(((NU32)(((NU32)0)) < (NU32)(litId_2)))) goto LA30_;
						goto LA26;
					}
LA30_: ;
					T32_ = ((*t_p0).keys.len-1);
					h_1 = nextTry__icZbitabs_u12(h_1, T32_);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
			} LA26: ;
		}
LA23_: ;
	}
	goto LA2_;
LA5_: ;
	{
		NI T34_;
		setLen__icZic_u1588((&(*t_p0).keys), ((NI)16));
		T34_ = ((*t_p0).keys.len-1);
		h_1 = (NI)(origH_1 & T34_);
	}
LA2_: ;
	T35_ = (*t_p0).vals.len;
	result = ((NU32) ((NI)(T35_ + ((NI)1))));
	(*t_p0).keys.p->data[h_1] = result;
	colontmpD_ = eqdup___system_u2697(v_p1);
	add__stdZenumutils_u71((&(*t_p0).vals), colontmpD_);
	}BeforeRet_: ;
	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(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;
}
N_LIB_PRIVATE N_NIMCALL(void, enlarge__icZic_u3422)(tyObject_BiTable__9aUXwPoJbNPqj9a249c0iSmlg* t_p0) {
	tySequence__9bAGqSvkAaFL9bWjsEPslrFA n_1;
	NI T1_;
	tySequence__9bAGqSvkAaFL9bWjsEPslrFA T2_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	n_1.len = 0; n_1.p = NIM_NIL;
	T1_ = (*t_p0).keys.len;
	newSeq__icZic_u1580((&n_1), ((NI)(T1_ * ((NI)2))));
	T2_.len = 0; T2_.p = NIM_NIL;
	T2_ = (*t_p0).keys;
	(*t_p0).keys = n_1;
	n_1 = T2_;
	{
		NI i_1;
		NI colontmp_;
		NI T4_;
		NI res_1;
		i_1 = (NI)0;
		colontmp_ = (NI)0;
		T4_ = (n_1.len-1);
		colontmp_ = T4_;
		res_1 = ((NI)0);
		{
			while (1) {
				NU32 eh_1;
				if (!(res_1 <= colontmp_)) goto LA6;
				i_1 = ((NI) (res_1));
				eh_1 = n_1.p->data[i_1];
				{
					NI j_1;
					NI T11_;
					NI T12_;
					if (!((NU32)(((NU32)0)) < (NU32)(eh_1))) goto LA9_;
					T11_ = (NI)0;
					T11_ = hash__pureZjson_u3377((*t_p0).vals.p->data[(NI)(((NI) (eh_1)) - ((NI)1))]);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					T12_ = ((*t_p0).keys.len-1);
					j_1 = (NI)(T11_ & T12_);
					{
						while (1) {
							NI T15_;
							if (!((NU32)(((NU32)0)) < (NU32)((*t_p0).keys.p->data[j_1]))) goto LA14;
							T15_ = ((*t_p0).keys.len-1);
							j_1 = nextTry__icZbitabs_u12(j_1, T15_);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						} LA14: ;
					}
					(*t_p0).keys.p->data[j_1] = n_1.p->data[i_1];
					eqwasMoved___icZiclineinfos_u100((&n_1.p->data[i_1]));
				}
LA9_: ;
				res_1 += ((NI)1);
			} LA6: ;
		}
	}
	eqdestroy___icZic_u1685(n_1);
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(NU32, getOrIncl__icZic_u3394)(tyObject_BiTable__9aUXwPoJbNPqj9a249c0iSmlg* t_p0, NI64 v_p1) {
	NU32 result;
	NI origH_1;
	NI h_1;
	NI T1_;
	NI T35_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NU32)0;
	origH_1 = hash__pureZjson_u3377(v_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T1_ = ((*t_p0).keys.len-1);
	h_1 = (NI)(origH_1 & T1_);
	{
		NI T4_;
		T4_ = (*t_p0).keys.len;
		if (!!((T4_ == ((NI)0)))) goto LA5_;
		{
			while (1) {
				NU32 litId_1;
				NI T17_;
				litId_1 = (*t_p0).keys.p->data[h_1];
				{
					if (!!(((NU32)(((NU32)0)) < (NU32)(litId_1)))) goto LA11_;
					goto LA7;
				}
LA11_: ;
				{
					if (!((*t_p0).vals.p->data[(NI)(((NI) ((*t_p0).keys.p->data[h_1])) - ((NI)1))] == v_p1)) goto LA15_;
					result = litId_1;
					goto BeforeRet_;
				}
LA15_: ;
				T17_ = ((*t_p0).keys.len-1);
				h_1 = nextTry__icZbitabs_u12(h_1, T17_);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			}
		} LA7: ;
		{
			NI T20_;
			NI T21_;
			NIM_BOOL T22_;
			NI T25_;
			T20_ = (*t_p0).keys.len;
			T21_ = (*t_p0).vals.len;
			T22_ = (NIM_BOOL)0;
			T22_ = mustRehash__icZbitabs_u56(T20_, T21_);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			if (!T22_) goto LA23_;
			enlarge__icZic_u3422(t_p0);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			T25_ = ((*t_p0).keys.len-1);
			h_1 = (NI)(origH_1 & T25_);
			{
				while (1) {
					NU32 litId_2;
					NI T32_;
					litId_2 = (*t_p0).keys.p->data[h_1];
					{
						if (!!(((NU32)(((NU32)0)) < (NU32)(litId_2)))) goto LA30_;
						goto LA26;
					}
LA30_: ;
					T32_ = ((*t_p0).keys.len-1);
					h_1 = nextTry__icZbitabs_u12(h_1, T32_);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
			} LA26: ;
		}
LA23_: ;
	}
	goto LA2_;
LA5_: ;
	{
		NI T34_;
		setLen__icZic_u1588((&(*t_p0).keys), ((NI)16));
		T34_ = ((*t_p0).keys.len-1);
		h_1 = (NI)(origH_1 & T34_);
	}
LA2_: ;
	T35_ = (*t_p0).vals.len;
	result = ((NU32) ((NI)(T35_ + ((NI)1))));
	(*t_p0).keys.p->data[h_1] = result;
	add__icZic_u3476((&(*t_p0).vals), v_p1);
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, store__icZic_u10334)(tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg* f_p0, tyObject_BiTable__KR9c7QZguPO3OKZOIcphgcA t_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	storeSeq__icZic_u10338(f_p0, t_p1.vals);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	storeSeq__icZic_u10371(f_p0, t_p1.keys);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, store__icZic_u10479)(tyObject_RodFile__k9byU8W8yLbzhHX06zPe4zg* f_p0, tyObject_BiTable__9aUXwPoJbNPqj9a249c0iSmlg t_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	storeSeq__icZic_u10483(f_p0, t_p1.vals);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	storeSeq__icZic_u10371(f_p0, t_p1.keys);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(NU32, getKeyId__icZnavigator_u731)(tyObject_BiTable__KR9c7QZguPO3OKZOIcphgcA t_p0, NimStringV2 v_p1) {
	NU32 result;
	NI origH_1;
	NI h_1;
	NI T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NU32)0;
	origH_1 = hash__pureZhashes_u587(v_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T1_ = (t_p0.keys.len-1);
	h_1 = (NI)(origH_1 & T1_);
	{
		NI T4_;
		T4_ = t_p0.keys.len;
		if (!!((T4_ == ((NI)0)))) goto LA5_;
		{
			while (1) {
				NU32 litId_1;
				NI T17_;
				litId_1 = t_p0.keys.p->data[h_1];
				{
					if (!!(((NU32)(((NU32)0)) < (NU32)(litId_1)))) goto LA11_;
					goto LA7;
				}
LA11_: ;
				{
					if (!eqStrings(t_p0.vals.p->data[(NI)(((NI) (t_p0.keys.p->data[h_1])) - ((NI)1))], v_p1)) goto LA15_;
					result = litId_1;
					goto BeforeRet_;
				}
LA15_: ;
				T17_ = (t_p0.keys.len-1);
				h_1 = nextTry__icZbitabs_u12(h_1, T17_);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			}
		} LA7: ;
	}
LA5_: ;
	result = ((NU32)0);
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, len__icZic_u22498)(tyObject_BiTable__KR9c7QZguPO3OKZOIcphgcA t_p0) {
	NI result;
	NI T1_;
	T1_ = t_p0.vals.len;
	result = T1_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, len__icZic_u22553)(tyObject_BiTable__9aUXwPoJbNPqj9a249c0iSmlg t_p0) {
	NI result;
	NI T1_;
	T1_ = t_p0.vals.len;
	result = T1_;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, sizeOnDisc__icZbitabs_u123)(tyObject_BiTable__KR9c7QZguPO3OKZOIcphgcA t_p0) {
	NI result;
	NI T5_;
	result = ((NI)4);
	{
		NimStringV2* x_1;
		NI i_1;
		NI L_1;
		NI T2_;
		x_1 = (NimStringV2*)0;
		i_1 = ((NI)0);
		T2_ = t_p0.vals.len;
		L_1 = T2_;
		{
			while (1) {
				if (!(i_1 < L_1)) goto LA4;
				x_1 = (&t_p0.vals.p->data[i_1]);
				result += (NI)((*x_1).len + ((NI)4));
				i_1 += ((NI)1);
			} LA4: ;
		}
	}
	T5_ = t_p0.keys.len;
	result += (NI)(T5_ * ((NI)4));
	return result;
}
