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

#include "nimbase.h"
#include <string.h>
#include <math.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_Int128__Moyhy3H7f18q9axhPc7Yt9bg tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
typedef struct tyTuple__ATG1iDmQz9aj2jnkWIj37MQ tyTuple__ATG1iDmQz9aj2jnkWIj37MQ;
typedef NU32 tyArray__PPSU5X9aizf5OJq0lL4Og7A[4];
struct tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg {
	tyArray__PPSU5X9aizf5OJq0lL4Og7A udata;
};
struct NimStrPayload {
	NI cap;
	NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
	NI len;
	NimStrPayload* p;
};
struct tyTuple__ATG1iDmQz9aj2jnkWIj37MQ {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg Field0;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg Field1;
};
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(NI, cmp__int128_u372)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1);
N_LIB_PRIVATE N_NIMCALL(NI, cmp__int128_u382)(NI32 x_p0, NI32 y_p1);
N_LIB_PRIVATE N_NIMCALL(NI, cmp__int128_u388)(NU32 x_p0, NU32 y_p1);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__int128_u937)(NI64 arg_p0);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___int128_u412)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, plus___int128_u615)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, minus___int128_u638)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, bitnot__int128_u416)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0);
N_LIB_PRIVATE N_NIMCALL(void, inc__int128_u338)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg* a_p0, NU32 y_p1);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u79)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, minus___int128_u641)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1);
N_LIB_PRIVATE N_NIMCALL(NU64, bitconcat__int128_u45)(NU32 a_p0, NU32 b_p1);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, star___int128_u657)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NU32 b_p1);
N_LIB_PRIVATE N_NIMCALL(NI, abs__int128_u654)(NI32 a_p0);
static N_INLINE(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, maskUInt8__int128_u1071)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0);
static N_INLINE(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, maskUInt16__int128_u1068)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0);
static N_INLINE(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, maskUInt32__int128_u1065)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0);
static N_INLINE(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, maskUInt64__int128_u1062)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0);
N_LIB_PRIVATE N_NOINLINE(void, raiseAssert__stdZassertions_u15)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, makeInt128__int128_u691)(NU64 high_p0, NU64 low_p1);
N_LIB_PRIVATE N_NIMCALL(NU64, high64__int128_u703)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0);
N_LIB_PRIVATE N_NIMCALL(NU64, low64__int128_u706)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0);
N_LIB_PRIVATE N_NIMCALL(void, pluseq___int128_u635)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg* a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, shl__int128_u546)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NI b_p1);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__int128_u717)(NU64 arg_p0);
N_LIB_PRIVATE N_NIMCALL(void, divMod__int128_u762)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg dividend_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg divisor_p1, tyTuple__ATG1iDmQz9aj2jnkWIj37MQ* Result);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, abs__int128_u648)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lt___int128_u404)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1);
N_LIB_PRIVATE N_NIMCALL(NI, fastLog2__int128_u736)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0);
static N_INLINE(NI, fastLog2__int128_u739)(NU32 x_p0);
N_CDECL(int, __builtin_clz)(unsigned int x_p0);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lteq___int128_u408)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1);
N_LIB_PRIVATE N_NIMCALL(void, minuseq___int128_u645)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg* a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, bitor__int128_u442)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, shr__int128_u450)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NI b_p1);
N_NIMCALL(NimStringV2, rawNewString)(NI cap_p0);
N_LIB_PRIVATE N_NIMCALL(void, addInt128__int128_u821)(NimStringV2* result_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg value_p1);
static N_INLINE(void, nimAddCharV1)(NimStringV2* s_p0, NIM_CHAR c_p1);
N_LIB_PRIVATE N_NIMCALL(void, prepareAdd)(NimStringV2* s_p0, NI addLen_p1);
static N_INLINE(void, appendString)(NimStringV2* dest_p0, NimStringV2 src_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(NI64, toInt64__int128_u53)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0);
static N_INLINE(void, nimPrepareStrMutationV2)(NimStringV2* s_p0);
N_LIB_PRIVATE N_NIMCALL(void, nimPrepareStrMutationImpl__system_u2430)(NimStringV2* s_p0);
static N_INLINE(NF, abs__pureZmath_u219)(NF x_p0);
N_LIB_PRIVATE N_NIMCALL(NI32, toInt32__int128_u122)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0);
static const struct {
  NI cap; NIM_CHAR data[55+1];
} TM__nQVdjfHleOuOqvMTepKJUw_2 = { 55 | NIM_STRLIT_FLAG, "int128.nim(186, 17) `a.sdata(3) != low(int32)` overflow" };
static const NimStringV2 TM__nQVdjfHleOuOqvMTepKJUw_3 = {55, (NimStrPayload*)&TM__nQVdjfHleOuOqvMTepKJUw_2};
static const struct {
  NI cap; NIM_CHAR data[48+1];
} TM__nQVdjfHleOuOqvMTepKJUw_4 = { 48 | NIM_STRLIT_FLAG, "masking only implemented for 1, 2, 4 and 8 bytes" };
static const NimStringV2 TM__nQVdjfHleOuOqvMTepKJUw_5 = {48, (NimStrPayload*)&TM__nQVdjfHleOuOqvMTepKJUw_4};
static const struct {
  NI cap; NIM_CHAR data[40+1];
} TM__nQVdjfHleOuOqvMTepKJUw_6 = { 40 | NIM_STRLIT_FLAG, "-170141183460469231731687303715884105728" };
static const NimStringV2 TM__nQVdjfHleOuOqvMTepKJUw_7 = {40, (NimStrPayload*)&TM__nQVdjfHleOuOqvMTepKJUw_6};
static const struct {
  NI cap; NIM_CHAR data[10+1];
} TM__nQVdjfHleOuOqvMTepKJUw_8 = { 10 | NIM_STRLIT_FLAG, "0123456789" };
static const NimStringV2 TM__nQVdjfHleOuOqvMTepKJUw_9 = {10, (NimStrPayload*)&TM__nQVdjfHleOuOqvMTepKJUw_8};
N_LIB_PRIVATE NIM_CONST tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg Zero__int128_u8 = {{((NU32)0),
((NU32)0),
((NU32)0),
((NU32)0)}
}
;
N_LIB_PRIVATE NIM_CONST tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg One__int128_u9 = {{((NU32)1),
((NU32)0),
((NU32)0),
((NU32)0)}
}
;
N_LIB_PRIVATE NIM_CONST tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg NegOne__int128_u29 = {{((NU32)IL64(4294967295)),
((NU32)IL64(4294967295)),
((NU32)IL64(4294967295)),
((NU32)IL64(4294967295))}
}
;
N_LIB_PRIVATE NIM_CONST tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg Min__int128_u11 = {{((NU32)0),
((NU32)0),
((NU32)0),
((NU32)IL64(2147483648))}
}
;
N_LIB_PRIVATE NIM_CONST tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg Ten__int128_u10 = {{((NU32)10),
((NU32)0),
((NU32)0),
((NU32)0)}
}
;
extern NIM_BOOL nimInErrorMode__system_u4179;
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___int128_u412)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	NIM_BOOL result;
{	{
		if (!!((a_p0.udata[(((NI)0))- 0] == b_p1.udata[(((NI)0))- 0]))) goto LA3_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
LA3_: ;
	{
		if (!!((a_p0.udata[(((NI)1))- 0] == b_p1.udata[(((NI)1))- 0]))) goto LA7_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
LA7_: ;
	{
		if (!!((a_p0.udata[(((NI)2))- 0] == b_p1.udata[(((NI)2))- 0]))) goto LA11_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
LA11_: ;
	{
		if (!!((a_p0.udata[(((NI)3))- 0] == b_p1.udata[(((NI)3))- 0]))) goto LA15_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
LA15_: ;
	result = NIM_TRUE;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
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);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__int128_u717)(NU64 arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = ((NU32) ((NU64)(arg_p0 & 4294967295ULL)));
	result.udata[(((NI)1))- 0] = ((NU32) ((NU64)((NU64)(arg_p0) >> (NU64)(((NI)32) & (64 - 1)))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__int128_u937)(NI64 arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	NI64 tmp_1;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = Zero__int128_u8;
	tmp_1 = arg_p0;
	result.udata[(((NI)0))- 0] = ((NU32) ((NI64)(tmp_1 & IL64(4294967295))));
	(*((NI32*) ((&result.udata[(((NI)1))- 0])))) = ((NI32) ((NI64)((NI64)(tmp_1) >> (NU64)(((NI)32) & (64 - 1)))));
	{
		if (!(arg_p0 < IL64(0))) goto LA3_;
		(*((NI32*) ((&result.udata[(((NI)2))- 0])))) = ((NI32)-1);
		(*((NI32*) ((&result.udata[(((NI)3))- 0])))) = ((NI32)-1);
	}
LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__types_u1207)(NI arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = Zero__int128_u8;
	(*((NI32*) ((&result.udata[(((NI)0))- 0])))) = ((NI32) (arg_p0));
	{
		if (!(arg_p0 < ((NI)0))) goto LA3_;
		(*((NI32*) ((&result.udata[(((NI)1))- 0])))) = ((NI32)-1);
		(*((NI32*) ((&result.udata[(((NI)2))- 0])))) = ((NI32)-1);
		(*((NI32*) ((&result.udata[(((NI)3))- 0])))) = ((NI32)-1);
	}
LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__types_u1302)(NU arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = ((NU32) (arg_p0));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, cmp__int128_u372)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	NI result;
	NI tmp1_1;
	NI tmp2_1;
	NI tmp3_1;
	NI tmp4_1;
{	tmp1_1 = cmp__int128_u382((*((NI32*) ((&a_p0.udata[(((NI)3))- 0])))), (*((NI32*) ((&b_p1.udata[(((NI)3))- 0])))));
	{
		if (!!((tmp1_1 == ((NI)0)))) goto LA3_;
		result = tmp1_1;
		goto BeforeRet_;
	}
LA3_: ;
	tmp2_1 = cmp__int128_u388(a_p0.udata[(((NI)2))- 0], b_p1.udata[(((NI)2))- 0]);
	{
		if (!!((tmp2_1 == ((NI)0)))) goto LA7_;
		result = tmp2_1;
		goto BeforeRet_;
	}
LA7_: ;
	tmp3_1 = cmp__int128_u388(a_p0.udata[(((NI)1))- 0], b_p1.udata[(((NI)1))- 0]);
	{
		if (!!((tmp3_1 == ((NI)0)))) goto LA11_;
		result = tmp3_1;
		goto BeforeRet_;
	}
LA11_: ;
	tmp4_1 = cmp__int128_u388(a_p0.udata[(((NI)0))- 0], b_p1.udata[(((NI)0))- 0]);
	result = tmp4_1;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
	NIM_BOOL* result;
	result = (&nimInErrorMode__system_u4179);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lteq___int128_u408)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	NIM_BOOL result;
	NI T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	T1_ = (NI)0;
	T1_ = cmp__int128_u372(a_p0, b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = (T1_ <= ((NI)0));
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lteq___int128_u966)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NI64 b_p1) {
	NIM_BOOL result;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
	NI T2_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	T1_ = toInt128__int128_u937(b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T2_ = (NI)0;
	T2_ = cmp__int128_u372(a_p0, T1_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = (T2_ <= ((NI)0));
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lteq___int128_u973)(NI64 a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	NIM_BOOL result;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
	NI T2_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	T1_ = toInt128__int128_u937(a_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T2_ = (NI)0;
	T2_ = cmp__int128_u372(T1_, b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = (T2_ <= ((NI)0));
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___int128_u980)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NI64 b_p1) {
	NIM_BOOL result;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	T1_ = toInt128__int128_u937(b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = eqeq___int128_u412(a_p0, T1_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, plus___int128_u615)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	NU64 tmp0_1;
	NU64 tmp1_1;
	NU64 tmp2_1;
	NU64 tmp3_1;
	result = Zero__int128_u8;
	tmp0_1 = (NU64)((NU64)(((NU64) (a_p0.udata[(((NI)0))- 0]))) + (NU64)(((NU64) (b_p1.udata[(((NI)0))- 0]))));
	result.udata[(((NI)0))- 0] = ((NU32) (tmp0_1));
	tmp1_1 = (NU64)((NU64)((NU64)((NU64)(((NU64) (a_p0.udata[(((NI)1))- 0]))) + (NU64)(((NU64) (b_p1.udata[(((NI)1))- 0]))))) + (NU64)((NU64)((NU64)(tmp0_1) >> (NU64)(((NI)32) & (64 - 1)))));
	result.udata[(((NI)1))- 0] = ((NU32) (tmp1_1));
	tmp2_1 = (NU64)((NU64)((NU64)((NU64)(((NU64) (a_p0.udata[(((NI)2))- 0]))) + (NU64)(((NU64) (b_p1.udata[(((NI)2))- 0]))))) + (NU64)((NU64)((NU64)(tmp1_1) >> (NU64)(((NI)32) & (64 - 1)))));
	result.udata[(((NI)2))- 0] = ((NU32) (tmp2_1));
	tmp3_1 = (NU64)((NU64)((NU64)((NU64)(((NU64) (a_p0.udata[(((NI)3))- 0]))) + (NU64)(((NU64) (b_p1.udata[(((NI)3))- 0]))))) + (NU64)((NU64)((NU64)(tmp2_1) >> (NU64)(((NI)32) & (64 - 1)))));
	result.udata[(((NI)3))- 0] = ((NU32) (tmp3_1));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, bitnot__int128_u416)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = (NU32)((NU32) ~(a_p0.udata[(((NI)0))- 0]));
	result.udata[(((NI)1))- 0] = (NU32)((NU32) ~(a_p0.udata[(((NI)1))- 0]));
	result.udata[(((NI)2))- 0] = (NU32)((NU32) ~(a_p0.udata[(((NI)2))- 0]));
	result.udata[(((NI)3))- 0] = (NU32)((NU32) ~(a_p0.udata[(((NI)3))- 0]));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, inc__int128_u338)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg* a_p0, NU32 y_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	(*a_p0).udata[(((NI)0))- 0] += y_p1;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = NIM_UNLIKELY(((NU32)((*a_p0).udata[(((NI)0))- 0]) < (NU32)(y_p1)));
		if (!T3_) goto LA4_;
		(*a_p0).udata[(((NI)1))- 0] += ((NI)1);
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = NIM_UNLIKELY(((*a_p0).udata[(((NI)1))- 0] == ((NU32)0)));
			if (!T8_) goto LA9_;
			(*a_p0).udata[(((NI)2))- 0] += ((NI)1);
			{
				NIM_BOOL T13_;
				T13_ = (NIM_BOOL)0;
				T13_ = NIM_UNLIKELY(((*a_p0).udata[(((NI)2))- 0] == ((NU32)0)));
				if (!T13_) goto LA14_;
				(*a_p0).udata[(((NI)3))- 0] += ((NI)1);
				{
					if (!!(!(((*((NI32*) ((&(*a_p0).udata[(((NI)3))- 0])))) == ((NI32)(-2147483647 -1)))))) goto LA18_;
					failedAssertImpl__stdZassertions_u79(TM__nQVdjfHleOuOqvMTepKJUw_3);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA18_: ;
			}
LA14_: ;
		}
LA9_: ;
	}
LA4_: ;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, minus___int128_u638)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = bitnot__int128_u416(a_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	inc__int128_u338((&result), ((NU32)1));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, minus___int128_u641)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	T1_ = minus___int128_u638(b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = plus___int128_u615(a_p0, T1_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, minus___int128_u1001)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NI64 b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	T1_ = toInt128__int128_u937(b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = minus___int128_u641(a_p0, T1_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, plus___int128_u1015)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NI64 b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	T1_ = toInt128__int128_u937(b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = plus___int128_u615(a_p0, T1_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, bitconcat__int128_u45)(NU32 a_p0, NU32 b_p1) {
	NU64 result;
	result = (NU64)((NU64)((NU64)(((NU64) (a_p0))) << (NU64)(((NI)32) & (64 - 1))) | ((NU64) (b_p1)));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI64, toInt64__int128_u53)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	NI64 result;
	NU64 T6_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI64)0;
	{
		if (!((*((NI32*) ((&arg_p0.udata[(((NI)3))- 0])))) < ((NI32)0))) goto LA3_;
	}
	goto LA1_;
LA3_: ;
	{
	}
LA1_: ;
	T6_ = (NU64)0;
	T6_ = bitconcat__int128_u45(arg_p0.udata[(((NI)1))- 0], arg_p0.udata[(((NI)0))- 0]);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = ((NI64) (T6_));
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lt___int128_u959)(NI64 a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	NIM_BOOL result;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
	NI T2_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	T1_ = toInt128__int128_u937(a_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T2_ = (NI)0;
	T2_ = cmp__int128_u372(T1_, b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = (T2_ < ((NI)0));
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lt___int128_u933)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NI64 b_p1) {
	NIM_BOOL result;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
	NI T2_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	T1_ = toInt128__int128_u937(b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T2_ = (NI)0;
	T2_ = cmp__int128_u372(a_p0, T1_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = (T2_ < ((NI)0));
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI64, toInt64Checked__int128_u103)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0, NI64 onError_p1) {
	NI64 result;
	NU64 T18_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI64)0;
	{
		if (!((*((NI32*) ((&arg_p0.udata[(((NI)3))- 0])))) < ((NI32)0))) goto LA3_;
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = !(((*((NI32*) ((&arg_p0.udata[(((NI)3))- 0])))) == ((NI32)-1)));
			if (T7_) goto LA8_;
			T7_ = !(((*((NI32*) ((&arg_p0.udata[(((NI)2))- 0])))) == ((NI32)-1)));
LA8_: ;
			if (!T7_) goto LA9_;
			result = onError_p1;
			goto BeforeRet_;
		}
LA9_: ;
	}
	goto LA1_;
LA3_: ;
	{
		{
			NIM_BOOL T14_;
			T14_ = (NIM_BOOL)0;
			T14_ = !(((*((NI32*) ((&arg_p0.udata[(((NI)3))- 0])))) == ((NI32)0)));
			if (T14_) goto LA15_;
			T14_ = !(((*((NI32*) ((&arg_p0.udata[(((NI)2))- 0])))) == ((NI32)0)));
LA15_: ;
			if (!T14_) goto LA16_;
			result = onError_p1;
			goto BeforeRet_;
		}
LA16_: ;
	}
LA1_: ;
	T18_ = (NU64)0;
	T18_ = bitconcat__int128_u45(arg_p0.udata[(((NI)1))- 0], arg_p0.udata[(((NI)0))- 0]);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = ((NI64) (T18_));
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, star___int128_u657)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NU32 b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	NU64 tmp0_1;
	NU64 tmp1_1;
	NU64 tmp2_1;
	NU64 tmp3_1;
	result = Zero__int128_u8;
	tmp0_1 = (NU64)((NU64)(((NU64) (a_p0.udata[(((NI)0))- 0]))) * (NU64)(((NU64) (b_p1))));
	tmp1_1 = (NU64)((NU64)(((NU64) (a_p0.udata[(((NI)1))- 0]))) * (NU64)(((NU64) (b_p1))));
	tmp2_1 = (NU64)((NU64)(((NU64) (a_p0.udata[(((NI)2))- 0]))) * (NU64)(((NU64) (b_p1))));
	tmp3_1 = (NU64)((NU64)(((NU64) (a_p0.udata[(((NI)3))- 0]))) * (NU64)(((NU64) (b_p1))));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = NIM_UNLIKELY(((NU64)(2147483647ULL) < (NU64)(tmp3_1)));
		if (!T3_) goto LA4_;
	}
LA4_: ;
	result.udata[(((NI)0))- 0] = ((NU32) (tmp0_1));
	result.udata[(((NI)1))- 0] = (NU32)((NU32)(((NU32) (tmp1_1))) + (NU32)(((NU32) ((NU64)((NU64)(tmp0_1) >> (NU64)(((NI)32) & (64 - 1)))))));
	result.udata[(((NI)2))- 0] = (NU32)((NU32)(((NU32) (tmp2_1))) + (NU32)(((NU32) ((NU64)((NU64)(tmp1_1) >> (NU64)(((NI)32) & (64 - 1)))))));
	result.udata[(((NI)3))- 0] = (NU32)((NU32)(((NU32) (tmp3_1))) + (NU32)(((NU32) ((NU64)((NU64)(tmp2_1) >> (NU64)(((NI)32) & (64 - 1)))))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, abs__int128_u654)(NI32 a_p0) {
	NI result;
	NI32 colontmpD_;
	NI32 colontmpD__2;
	NI32 T1_;
	colontmpD_ = (NI32)0;
	colontmpD__2 = (NI32)0;
	T1_ = (NI32)0;
	{
		if (!(a_p0 < ((NI32)0))) goto LA4_;
		colontmpD_ = ((NI32)-(a_p0));
		T1_ = colontmpD_;
	}
	goto LA2_;
LA4_: ;
	{
		colontmpD__2 = a_p0;
		T1_ = colontmpD__2;
	}
LA2_: ;
	result = ((NI) (T1_));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, star___int128_u684)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NI32 b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	NI T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	T1_ = (NI)0;
	T1_ = abs__int128_u654(b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = star___int128_u657(a_p0, ((NU32) (T1_)));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	{
		if (!(b_p1 < ((NI32)0))) goto LA4_;
		result = minus___int128_u638(result);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA4_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lt___int128_u404)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	NIM_BOOL result;
	NI T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	T1_ = (NI)0;
	T1_ = cmp__int128_u372(a_p0, b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = (T1_ < ((NI)0));
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI64, castToInt64__int128_u308)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	NI64 result;
	NU64 T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI64)0;
	T1_ = (NU64)0;
	T1_ = bitconcat__int128_u45(arg_p0.udata[(((NI)1))- 0], arg_p0.udata[(((NI)0))- 0]);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = ((NI64) (T1_));
	}BeforeRet_: ;
	return result;
}
static N_INLINE(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, maskUInt8__int128_u1071)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = (NU32)(arg_p0.udata[(((NI)0))- 0] & ((NU32)255));
	result.udata[(((NI)1))- 0] = ((NU32)0);
	result.udata[(((NI)2))- 0] = ((NU32)0);
	result.udata[(((NI)3))- 0] = ((NU32)0);
	return result;
}
static N_INLINE(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, maskUInt16__int128_u1068)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = (NU32)(arg_p0.udata[(((NI)0))- 0] & ((NU32)65535));
	result.udata[(((NI)1))- 0] = ((NU32)0);
	result.udata[(((NI)2))- 0] = ((NU32)0);
	result.udata[(((NI)3))- 0] = ((NU32)0);
	return result;
}
static N_INLINE(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, maskUInt32__int128_u1065)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = arg_p0.udata[(((NI)0))- 0];
	result.udata[(((NI)1))- 0] = ((NU32)0);
	result.udata[(((NI)2))- 0] = ((NU32)0);
	result.udata[(((NI)3))- 0] = ((NU32)0);
	return result;
}
static N_INLINE(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, maskUInt64__int128_u1062)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = arg_p0.udata[(((NI)0))- 0];
	result.udata[(((NI)1))- 0] = arg_p0.udata[(((NI)1))- 0];
	result.udata[(((NI)2))- 0] = ((NU32)0);
	result.udata[(((NI)3))- 0] = ((NU32)0);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, maskBytes__int128_u1074)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0, NI numbytes_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	switch (numbytes_p1) {
	case ((NI)1):
	{
		result = maskUInt8__int128_u1071(arg_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		goto BeforeRet_;
	}
	break;
	case ((NI)2):
	{
		result = maskUInt16__int128_u1068(arg_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		goto BeforeRet_;
	}
	break;
	case ((NI)4):
	{
		result = maskUInt32__int128_u1065(arg_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		goto BeforeRet_;
	}
	break;
	case ((NI)8):
	{
		result = maskUInt64__int128_u1062(arg_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		goto BeforeRet_;
	}
	break;
	default:
	{
		raiseAssert__stdZassertions_u15(TM__nQVdjfHleOuOqvMTepKJUw_5);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, abs__int128_u648)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	{
		if (!((*((NI32*) ((&a_p0.udata[(((NI)3))- 0])))) < ((NI32)0))) goto LA4_;
		result = minus___int128_u638(a_p0);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	goto LA2_;
LA4_: ;
	{
		result = a_p0;
	}
LA2_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, makeInt128__int128_u691)(NU64 high_p0, NU64 low_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = ((NU32) (low_p1));
	result.udata[(((NI)1))- 0] = ((NU32) ((NU64)((NU64)(low_p1) >> (NU64)(((NI)32) & (64 - 1)))));
	result.udata[(((NI)2))- 0] = ((NU32) (high_p0));
	result.udata[(((NI)3))- 0] = ((NU32) ((NU64)((NU64)(high_p0) >> (NU64)(((NI)32) & (64 - 1)))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, high64__int128_u703)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0) {
	NU64 result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NU64)0;
	result = bitconcat__int128_u45(a_p0.udata[(((NI)3))- 0], a_p0.udata[(((NI)2))- 0]);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, low64__int128_u706)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0) {
	NU64 result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NU64)0;
	result = bitconcat__int128_u45(a_p0.udata[(((NI)1))- 0], a_p0.udata[(((NI)0))- 0]);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, pluseq___int128_u635)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg* a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&T1_), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	T1_ = plus___int128_u615((*a_p0), b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	(*a_p0) = T1_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, shl__int128_u546)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NI b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	NI b_2;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = Zero__int128_u8;
	b_2 = (NI)(b_p1 & ((NI)127));
	{
		NU64 T5_;
		NU64 T6_;
		NU64 T7_;
		if (!(b_2 < ((NI)32))) goto LA3_;
		result.udata[(((NI)0))- 0] = (NU32)((NU32)(a_p0.udata[(((NI)0))- 0]) << (NU32)(b_2 & (32 - 1)));
		T5_ = (NU64)0;
		T5_ = bitconcat__int128_u45(a_p0.udata[(((NI)1))- 0], a_p0.udata[(((NI)0))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)1))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T5_) << (NU64)(b_2 & (64 - 1)))) >> (NU64)(((NI)32) & (64 - 1)))));
		T6_ = (NU64)0;
		T6_ = bitconcat__int128_u45(a_p0.udata[(((NI)2))- 0], a_p0.udata[(((NI)1))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)2))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T6_) << (NU64)(b_2 & (64 - 1)))) >> (NU64)(((NI)32) & (64 - 1)))));
		T7_ = (NU64)0;
		T7_ = bitconcat__int128_u45(a_p0.udata[(((NI)3))- 0], a_p0.udata[(((NI)2))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)3))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T7_) << (NU64)(b_2 & (64 - 1)))) >> (NU64)(((NI)32) & (64 - 1)))));
	}
	goto LA1_;
LA3_: ;
	{
		NU64 T11_;
		NU64 T12_;
		if (!(b_2 < ((NI)64))) goto LA9_;
		result.udata[(((NI)0))- 0] = ((NU32)0);
		result.udata[(((NI)1))- 0] = (NU32)((NU32)(a_p0.udata[(((NI)0))- 0]) << (NU32)((NI)(b_2 & ((NI)31)) & (32 - 1)));
		T11_ = (NU64)0;
		T11_ = bitconcat__int128_u45(a_p0.udata[(((NI)1))- 0], a_p0.udata[(((NI)0))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)2))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T11_) << (NU64)((NI)(b_2 & ((NI)31)) & (64 - 1)))) >> (NU64)(((NI)32) & (64 - 1)))));
		T12_ = (NU64)0;
		T12_ = bitconcat__int128_u45(a_p0.udata[(((NI)2))- 0], a_p0.udata[(((NI)1))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)3))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T12_) << (NU64)((NI)(b_2 & ((NI)31)) & (64 - 1)))) >> (NU64)(((NI)32) & (64 - 1)))));
	}
	goto LA1_;
LA9_: ;
	{
		NU64 T16_;
		if (!(b_2 < ((NI)96))) goto LA14_;
		result.udata[(((NI)0))- 0] = ((NU32)0);
		result.udata[(((NI)1))- 0] = ((NU32)0);
		result.udata[(((NI)2))- 0] = (NU32)((NU32)(a_p0.udata[(((NI)0))- 0]) << (NU32)((NI)(b_2 & ((NI)31)) & (32 - 1)));
		T16_ = (NU64)0;
		T16_ = bitconcat__int128_u45(a_p0.udata[(((NI)1))- 0], a_p0.udata[(((NI)0))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)3))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T16_) << (NU64)((NI)(b_2 & ((NI)31)) & (64 - 1)))) >> (NU64)(((NI)32) & (64 - 1)))));
	}
	goto LA1_;
LA14_: ;
	{
		result.udata[(((NI)0))- 0] = ((NU32)0);
		result.udata[(((NI)1))- 0] = ((NU32)0);
		result.udata[(((NI)2))- 0] = ((NU32)0);
		result.udata[(((NI)3))- 0] = (NU32)((NU32)(a_p0.udata[(((NI)0))- 0]) << (NU32)((NI)(b_2 & ((NI)31)) & (32 - 1)));
	}
LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, star___int128_u709)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg lhs_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg rhs_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	NU64 a32_1;
	NU64 a00_1;
	NU64 b32_1;
	NU64 b00_1;
	NU64 T1_;
	NU64 T2_;
	NU64 T3_;
	NU64 T4_;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T5_;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T6_;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T7_;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T8_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	a32_1 = ((NU64) (lhs_p0.udata[(((NI)1))- 0]));
	a00_1 = ((NU64) (lhs_p0.udata[(((NI)0))- 0]));
	b32_1 = ((NU64) (rhs_p1.udata[(((NI)1))- 0]));
	b00_1 = ((NU64) (rhs_p1.udata[(((NI)0))- 0]));
	T1_ = (NU64)0;
	T1_ = high64__int128_u703(lhs_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T2_ = (NU64)0;
	T2_ = low64__int128_u706(rhs_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T3_ = (NU64)0;
	T3_ = low64__int128_u706(lhs_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T4_ = (NU64)0;
	T4_ = high64__int128_u703(rhs_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = makeInt128__int128_u691((NU64)((NU64)((NU64)((NU64)((NU64)((NU64)(T1_) * (NU64)(T2_))) + (NU64)((NU64)((NU64)(T3_) * (NU64)(T4_))))) + (NU64)((NU64)((NU64)(a32_1) * (NU64)(b32_1)))), (NU64)((NU64)(a00_1) * (NU64)(b00_1)));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T5_ = toInt128__int128_u717((NU64)((NU64)(a32_1) * (NU64)(b00_1)));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T6_ = shl__int128_u546(T5_, ((NI)32));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	pluseq___int128_u635((&result), T6_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T7_ = toInt128__int128_u717((NU64)((NU64)(a00_1) * (NU64)(b32_1)));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T8_ = shl__int128_u546(T7_, ((NI)32));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	pluseq___int128_u635((&result), T8_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__semfold_u257)(NI8 arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = Zero__int128_u8;
	(*((NI32*) ((&result.udata[(((NI)0))- 0])))) = ((NI32) (arg_p0));
	{
		if (!(arg_p0 < ((NI8)0))) goto LA3_;
		(*((NI32*) ((&result.udata[(((NI)1))- 0])))) = ((NI32)-1);
		(*((NI32*) ((&result.udata[(((NI)2))- 0])))) = ((NI32)-1);
		(*((NI32*) ((&result.udata[(((NI)3))- 0])))) = ((NI32)-1);
	}
LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI8, toInt8__int128_u212)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	NI8 result;
	result = (NI8)0;
	{
		if (!((*((NI32*) ((&arg_p0.udata[(((NI)3))- 0])))) < ((NI32)0))) goto LA3_;
	}
	goto LA1_;
LA3_: ;
	{
	}
LA1_: ;
	result = ((NI8) ((*((NI32*) ((&arg_p0.udata[(((NI)0))- 0]))))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__semfold_u281)(NI16 arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = Zero__int128_u8;
	(*((NI32*) ((&result.udata[(((NI)0))- 0])))) = ((NI32) (arg_p0));
	{
		if (!(arg_p0 < ((NI16)0))) goto LA3_;
		(*((NI32*) ((&result.udata[(((NI)1))- 0])))) = ((NI32)-1);
		(*((NI32*) ((&result.udata[(((NI)2))- 0])))) = ((NI32)-1);
		(*((NI32*) ((&result.udata[(((NI)3))- 0])))) = ((NI32)-1);
	}
LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI16, toInt16__int128_u167)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	NI16 result;
	result = (NI16)0;
	{
		if (!((*((NI32*) ((&arg_p0.udata[(((NI)3))- 0])))) < ((NI32)0))) goto LA3_;
	}
	goto LA1_;
LA3_: ;
	{
	}
LA1_: ;
	result = ((NI16) ((*((NI32*) ((&arg_p0.udata[(((NI)0))- 0]))))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__semfold_u305)(NI32 arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = Zero__int128_u8;
	(*((NI32*) ((&result.udata[(((NI)0))- 0])))) = arg_p0;
	{
		if (!(arg_p0 < ((NI32)0))) goto LA3_;
		(*((NI32*) ((&result.udata[(((NI)1))- 0])))) = ((NI32)-1);
		(*((NI32*) ((&result.udata[(((NI)2))- 0])))) = ((NI32)-1);
		(*((NI32*) ((&result.udata[(((NI)3))- 0])))) = ((NI32)-1);
	}
LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI32, toInt32__int128_u122)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	NI32 result;
	{
		if (!((*((NI32*) ((&arg_p0.udata[(((NI)3))- 0])))) < ((NI32)0))) goto LA3_;
	}
	goto LA1_;
LA3_: ;
	{
	}
LA1_: ;
	result = (*((NI32*) ((&arg_p0.udata[(((NI)0))- 0]))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__semfold_u350)(NU8 arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = ((NU32) (arg_p0));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU8, toUInt8__int128_u293)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	NU8 result;
	result = (NU8)0;
	result = ((NU8) (arg_p0.udata[(((NI)0))- 0]));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__semfold_u362)(NU16 arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = ((NU32) (arg_p0));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU16, toUInt16__int128_u281)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	NU16 result;
	result = (NU16)0;
	result = ((NU16) (arg_p0.udata[(((NI)0))- 0]));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__semfold_u374)(NU32 arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = arg_p0;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU32, toUInt32__int128_u269)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	NU32 result;
	result = arg_p0.udata[(((NI)0))- 0];
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, toUInt64__int128_u260)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	NU64 result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NU64)0;
	result = bitconcat__int128_u45(arg_p0.udata[(((NI)1))- 0], arg_p0.udata[(((NI)0))- 0]);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, fastLog2__int128_u739)(NU32 x_p0) {
	NI result;
	NU32 x_2;
	int T1_;
	result = (NI)0;
	x_2 = x_p0;
	T1_ = (int)0;
	T1_ = __builtin_clz(x_2);
	result = (NI)(((NI)31) - ((NI) (T1_)));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, fastLog2__int128_u736)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0) {
	NI result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = ((NI)0);
	{
		NI T5_;
		if (!!((a_p0.udata[(((NI)3))- 0] == ((NU32)0)))) goto LA3_;
		T5_ = (NI)0;
		T5_ = fastLog2__int128_u739(a_p0.udata[(((NI)3))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result = (NI)(((NI)96) + T5_);
		goto BeforeRet_;
	}
LA3_: ;
	{
		NI T10_;
		if (!!((a_p0.udata[(((NI)2))- 0] == ((NU32)0)))) goto LA8_;
		T10_ = (NI)0;
		T10_ = fastLog2__int128_u739(a_p0.udata[(((NI)2))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result = (NI)(((NI)64) + T10_);
		goto BeforeRet_;
	}
LA8_: ;
	{
		NI T15_;
		if (!!((a_p0.udata[(((NI)1))- 0] == ((NU32)0)))) goto LA13_;
		T15_ = (NI)0;
		T15_ = fastLog2__int128_u739(a_p0.udata[(((NI)1))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result = (NI)(((NI)32) + T15_);
		goto BeforeRet_;
	}
LA13_: ;
	{
		if (!!((a_p0.udata[(((NI)0))- 0] == ((NU32)0)))) goto LA18_;
		result = fastLog2__int128_u739(a_p0.udata[(((NI)0))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		goto BeforeRet_;
	}
LA18_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, minuseq___int128_u645)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg* a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&T1_), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	T1_ = minus___int128_u641((*a_p0), b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	(*a_p0) = T1_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, bitor__int128_u442)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = (NU32)(a_p0.udata[(((NI)0))- 0] | b_p1.udata[(((NI)0))- 0]);
	result.udata[(((NI)1))- 0] = (NU32)(a_p0.udata[(((NI)1))- 0] | b_p1.udata[(((NI)1))- 0]);
	result.udata[(((NI)2))- 0] = (NU32)(a_p0.udata[(((NI)2))- 0] | b_p1.udata[(((NI)2))- 0]);
	result.udata[(((NI)3))- 0] = (NU32)(a_p0.udata[(((NI)3))- 0] | b_p1.udata[(((NI)3))- 0]);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, shr__int128_u450)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, NI b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	NI b_2;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = Zero__int128_u8;
	b_2 = (NI)(b_p1 & ((NI)127));
	{
		NU64 T5_;
		NU64 T6_;
		NU64 T7_;
		if (!(b_2 < ((NI)32))) goto LA3_;
		(*((NI32*) ((&result.udata[(((NI)3))- 0])))) = (NI32)((NI32)((*((NI32*) ((&a_p0.udata[(((NI)3))- 0]))))) >> (NU32)(b_2 & (32 - 1)));
		T5_ = (NU64)0;
		T5_ = bitconcat__int128_u45(a_p0.udata[(((NI)3))- 0], a_p0.udata[(((NI)2))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)2))- 0] = ((NU32) ((NU64)((NU64)(T5_) >> (NU64)(b_2 & (64 - 1)))));
		T6_ = (NU64)0;
		T6_ = bitconcat__int128_u45(a_p0.udata[(((NI)2))- 0], a_p0.udata[(((NI)1))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)1))- 0] = ((NU32) ((NU64)((NU64)(T6_) >> (NU64)(b_2 & (64 - 1)))));
		T7_ = (NU64)0;
		T7_ = bitconcat__int128_u45(a_p0.udata[(((NI)1))- 0], a_p0.udata[(((NI)0))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)0))- 0] = ((NU32) ((NU64)((NU64)(T7_) >> (NU64)(b_2 & (64 - 1)))));
	}
	goto LA1_;
LA3_: ;
	{
		NU64 T15_;
		NU64 T16_;
		if (!(b_2 < ((NI)64))) goto LA9_;
		{
			if (!((*((NI32*) ((&a_p0.udata[(((NI)3))- 0])))) < ((NI32)0))) goto LA13_;
			(*((NI32*) ((&result.udata[(((NI)3))- 0])))) = ((NI32)-1);
		}
LA13_: ;
		(*((NI32*) ((&result.udata[(((NI)2))- 0])))) = (NI32)((NI32)((*((NI32*) ((&a_p0.udata[(((NI)3))- 0]))))) >> (NU32)((NI)(b_2 & ((NI)31)) & (32 - 1)));
		T15_ = (NU64)0;
		T15_ = bitconcat__int128_u45(a_p0.udata[(((NI)3))- 0], a_p0.udata[(((NI)2))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)1))- 0] = ((NU32) ((NU64)((NU64)(T15_) >> (NU64)((NI)(b_2 & ((NI)31)) & (64 - 1)))));
		T16_ = (NU64)0;
		T16_ = bitconcat__int128_u45(a_p0.udata[(((NI)2))- 0], a_p0.udata[(((NI)1))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)0))- 0] = ((NU32) ((NU64)((NU64)(T16_) >> (NU64)((NI)(b_2 & ((NI)31)) & (64 - 1)))));
	}
	goto LA1_;
LA9_: ;
	{
		NU64 T24_;
		if (!(b_2 < ((NI)96))) goto LA18_;
		{
			if (!((*((NI32*) ((&a_p0.udata[(((NI)3))- 0])))) < ((NI32)0))) goto LA22_;
			(*((NI32*) ((&result.udata[(((NI)3))- 0])))) = ((NI32)-1);
			(*((NI32*) ((&result.udata[(((NI)2))- 0])))) = ((NI32)-1);
		}
LA22_: ;
		(*((NI32*) ((&result.udata[(((NI)1))- 0])))) = (NI32)((NI32)((*((NI32*) ((&a_p0.udata[(((NI)3))- 0]))))) >> (NU32)((NI)(b_2 & ((NI)31)) & (32 - 1)));
		T24_ = (NU64)0;
		T24_ = bitconcat__int128_u45(a_p0.udata[(((NI)3))- 0], a_p0.udata[(((NI)2))- 0]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result.udata[(((NI)0))- 0] = ((NU32) ((NU64)((NU64)(T24_) >> (NU64)((NI)(b_2 & ((NI)31)) & (64 - 1)))));
	}
	goto LA1_;
LA18_: ;
	{
		{
			if (!((*((NI32*) ((&a_p0.udata[(((NI)3))- 0])))) < ((NI32)0))) goto LA28_;
			(*((NI32*) ((&result.udata[(((NI)3))- 0])))) = ((NI32)-1);
			(*((NI32*) ((&result.udata[(((NI)2))- 0])))) = ((NI32)-1);
			(*((NI32*) ((&result.udata[(((NI)1))- 0])))) = ((NI32)-1);
		}
LA28_: ;
		(*((NI32*) ((&result.udata[(((NI)0))- 0])))) = (NI32)((NI32)((*((NI32*) ((&a_p0.udata[(((NI)3))- 0]))))) >> (NU32)((NI)(b_2 & ((NI)31)) & (32 - 1)));
	}
LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, divMod__int128_u762)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg dividend_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg divisor_p1, tyTuple__ATG1iDmQz9aj2jnkWIj37MQ* Result) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg colontmp_;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg colontmp__2;
	NIM_BOOL isNegativeA_1;
	NIM_BOOL isNegativeB_1;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg dividend_2;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg divisor_2;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg denominator_1;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg quotient_1;
	NI shift_1;
	NI T22_;
	NI T23_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	colontmp_ = Zero__int128_u8;
	colontmp__2 = Zero__int128_u8;
	(*Result).Field0 = colontmp_;
	(*Result).Field1 = colontmp__2;
	isNegativeA_1 = ((*((NI32*) ((&dividend_p0.udata[(((NI)3))- 0])))) < ((NI32)0));
	isNegativeB_1 = ((*((NI32*) ((&divisor_p1.udata[(((NI)3))- 0])))) < ((NI32)0));
	dividend_2 = abs__int128_u648(dividend_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	divisor_2 = abs__int128_u648(divisor_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = lt___int128_u404(dividend_2, divisor_2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		if (!T3_) goto LA4_;
		(*Result).Field0 = Zero__int128_u8;
		{
			tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T10_;
			if (!isNegativeA_1) goto LA8_;
			nimZeroMem((void*)(&T10_), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
			T10_ = minus___int128_u638(dividend_2);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			(*Result).Field1 = T10_;
		}
		goto LA6_;
LA8_: ;
		{
			(*Result).Field1 = dividend_2;
		}
LA6_: ;
		goto BeforeRet_;
	}
LA4_: ;
	{
		NIM_BOOL T14_;
		T14_ = (NIM_BOOL)0;
		T14_ = eqeq___int128_u412(divisor_2, dividend_2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		if (!T14_) goto LA15_;
		{
			if (!(isNegativeA_1 != isNegativeB_1)) goto LA19_;
			(*Result).Field0 = NegOne__int128_u29;
		}
		goto LA17_;
LA19_: ;
		{
			(*Result).Field0 = One__int128_u9;
		}
LA17_: ;
		(*Result).Field1 = Zero__int128_u8;
		goto BeforeRet_;
	}
LA15_: ;
	denominator_1 = divisor_2;
	quotient_1 = Zero__int128_u8;
	T22_ = (NI)0;
	T22_ = fastLog2__int128_u736(dividend_2);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T23_ = (NI)0;
	T23_ = fastLog2__int128_u736(denominator_1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	shift_1 = (NI)(T22_ - T23_);
	denominator_1 = shl__int128_u546(denominator_1, shift_1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	{
		NI i_1;
		NI res_1;
		i_1 = (NI)0;
		res_1 = ((NI)0);
		{
			while (1) {
				if (!(res_1 <= shift_1)) goto LA26;
				i_1 = ((NI) (res_1));
				quotient_1 = shl__int128_u546(quotient_1, ((NI)1));
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				{
					NIM_BOOL T29_;
					T29_ = (NIM_BOOL)0;
					T29_ = lteq___int128_u408(denominator_1, dividend_2);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					if (!T29_) goto LA30_;
					minuseq___int128_u645((&dividend_2), denominator_1);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					quotient_1 = bitor__int128_u442(quotient_1, One__int128_u9);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA30_: ;
				denominator_1 = shr__int128_u450(denominator_1, ((NI)1));
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				res_1 += ((NI)1);
			} LA26: ;
		}
	}
	{
		tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T36_;
		if (!(isNegativeA_1 != isNegativeB_1)) goto LA34_;
		nimZeroMem((void*)(&T36_), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
		T36_ = minus___int128_u638(quotient_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		(*Result).Field0 = T36_;
	}
	goto LA32_;
LA34_: ;
	{
		(*Result).Field0 = quotient_1;
	}
LA32_: ;
	{
		tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T42_;
		if (!isNegativeA_1) goto LA40_;
		nimZeroMem((void*)(&T42_), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
		T42_ = minus___int128_u638(dividend_2);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		(*Result).Field1 = T42_;
	}
	goto LA38_;
LA40_: ;
	{
		(*Result).Field1 = dividend_2;
	}
LA38_: ;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, div__int128_u809)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	tyTuple__ATG1iDmQz9aj2jnkWIj37MQ tmpTuple_1;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_2;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	nimZeroMem((void*)(&tmpTuple_1), sizeof(tyTuple__ATG1iDmQz9aj2jnkWIj37MQ));
	divMod__int128_u762(a_p0, b_p1, (&tmpTuple_1));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	a_2 = tmpTuple_1.Field0;
	result = a_2;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, mod__int128_u815)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	tyTuple__ATG1iDmQz9aj2jnkWIj37MQ tmpTuple_1;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_2;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	nimZeroMem((void*)(&tmpTuple_1), sizeof(tyTuple__ATG1iDmQz9aj2jnkWIj37MQ));
	divMod__int128_u762(a_p0, b_p1, (&tmpTuple_1));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	b_2 = tmpTuple_1.Field1;
	result = b_2;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, bitand__int128_u438)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = (NU32)(a_p0.udata[(((NI)0))- 0] & b_p1.udata[(((NI)0))- 0]);
	result.udata[(((NI)1))- 0] = (NU32)(a_p0.udata[(((NI)1))- 0] & b_p1.udata[(((NI)1))- 0]);
	result.udata[(((NI)2))- 0] = (NU32)(a_p0.udata[(((NI)2))- 0] & b_p1.udata[(((NI)2))- 0]);
	result.udata[(((NI)3))- 0] = (NU32)(a_p0.udata[(((NI)3))- 0] & b_p1.udata[(((NI)3))- 0]);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, bitxor__int128_u446)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	result = Zero__int128_u8;
	result.udata[(((NI)0))- 0] = (NU32)(a_p0.udata[(((NI)0))- 0] ^ b_p1.udata[(((NI)0))- 0]);
	result.udata[(((NI)1))- 0] = (NU32)(a_p0.udata[(((NI)1))- 0] ^ b_p1.udata[(((NI)1))- 0]);
	result.udata[(((NI)2))- 0] = (NU32)(a_p0.udata[(((NI)2))- 0] ^ b_p1.udata[(((NI)2))- 0]);
	result.udata[(((NI)3))- 0] = (NU32)(a_p0.udata[(((NI)3))- 0] ^ b_p1.udata[(((NI)3))- 0]);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___int128_u987)(NI64 a_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg b_p1) {
	NIM_BOOL result;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	T1_ = toInt128__int128_u937(a_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = eqeq___int128_u412(T1_, b_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(void, nimAddCharV1)(NimStringV2* s_p0, NIM_CHAR c_p1) {
	prepareAdd(s_p0, ((NI)1));
	(*(*s_p0).p).data[(*s_p0).len] = c_p1;
	(*s_p0).len += ((NI)1);
	(*(*s_p0).p).data[(*s_p0).len] = 0;
}
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, appendString)(NimStringV2* dest_p0, NimStringV2 src_p1) {
	{
		if (!(((NI)0) < src_p1.len)) goto LA3_;
		copyMem__system_u1742(((void*) ((&(*(*dest_p0).p).data[(*dest_p0).len]))), ((void*) ((&(*src_p1.p).data[((NI)0)]))), (src_p1.len));
		(*dest_p0).len += src_p1.len;
		(*(*dest_p0).p).data[(*dest_p0).len] = 0;
	}
LA3_: ;
}
static N_INLINE(void, nimPrepareStrMutationV2)(NimStringV2* s_p0) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = !(((*s_p0).p == ((NimStrPayload*) NIM_NIL)));
		if (!(T3_)) goto LA4_;
		T3_ = ((NI)((*(*s_p0).p).cap & ((NI)1073741824)) == ((NI)1073741824));
LA4_: ;
		if (!T3_) goto LA5_;
		nimPrepareStrMutationImpl__system_u2430(s_p0);
	}
LA5_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, addInt128__int128_u821)(NimStringV2* result_p0, tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg value_p1) {
	NI initialSize_1;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	initialSize_1 = (*result_p0).len;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___int128_u412(value_p1, Zero__int128_u8);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		if (!T3_) goto LA4_;
		nimAddCharV1((&(*result_p0)), 48);
	}
	goto LA1_;
LA4_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = eqeq___int128_u412(value_p1, Min__int128_u11);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		if (!T7_) goto LA8_;
		prepareAdd((&(*result_p0)), 40);
appendString((&(*result_p0)), TM__nQVdjfHleOuOqvMTepKJUw_7);
	}
	goto LA1_;
LA8_: ;
	{
		NIM_BOOL isNegative_1;
		tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg value_2;
		NI i_1;
		NI j_1;
		isNegative_1 = ((*((NI32*) ((&value_p1.udata[(((NI)3))- 0])))) < ((NI32)0));
		value_2 = abs__int128_u648(value_p1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		{
			while (1) {
				NIM_BOOL T13_;
				tyTuple__ATG1iDmQz9aj2jnkWIj37MQ tmpTuple_1;
				tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg quot_1;
				tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg rem_1;
				NI64 T14_;
				T13_ = (NIM_BOOL)0;
				T13_ = lt___int128_u404(Zero__int128_u8, value_2);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				if (!T13_) goto LA12;
				nimZeroMem((void*)(&tmpTuple_1), sizeof(tyTuple__ATG1iDmQz9aj2jnkWIj37MQ));
				divMod__int128_u762(value_2, Ten__int128_u10, (&tmpTuple_1));
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				quot_1 = tmpTuple_1.Field0;
				rem_1 = tmpTuple_1.Field1;
				T14_ = (NI64)0;
				T14_ = toInt64__int128_u53(rem_1);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				nimAddCharV1((&(*result_p0)), TM__nQVdjfHleOuOqvMTepKJUw_9.p->data[T14_]);
				value_2 = quot_1;
			} LA12: ;
		}
		{
			if (!isNegative_1) goto LA17_;
			nimAddCharV1((&(*result_p0)), 45);
		}
LA17_: ;
		i_1 = initialSize_1;
		j_1 = ((*result_p0).len-1);
		{
			while (1) {
				NIM_CHAR T21_;
				if (!(i_1 < j_1)) goto LA20;
				nimPrepareStrMutationV2((&(*result_p0)));
				nimPrepareStrMutationV2((&(*result_p0)));
				T21_ = (NIM_CHAR)0;
				T21_ = (*result_p0).p->data[i_1];
				(*result_p0).p->data[i_1] = (*result_p0).p->data[j_1];
				(*result_p0).p->data[j_1] = T21_;
				i_1 += ((NI)1);
				j_1 -= ((NI)1);
			} LA20: ;
		}
	}
LA1_: ;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___int128_u36)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg a_p0) {
	NimStringV2 result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = rawNewString(((NI)41));
	addInt128__int128_u821((&result), a_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NF, toFloat64__int128_u1022)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	NF result;
	NIM_BOOL isNegative_1;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_2;
	NF a_1;
	NU64 T1_;
	NF b_1;
	NU64 T2_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NF)0;
	isNegative_1 = ((*((NI32*) ((&arg_p0.udata[(((NI)3))- 0])))) < ((NI32)0));
	arg_2 = abs__int128_u648(arg_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T1_ = (NU64)0;
	T1_ = bitconcat__int128_u45(arg_2.udata[(((NI)1))- 0], arg_2.udata[(((NI)0))- 0]);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	a_1 = ((NF) (T1_));
	T2_ = (NU64)0;
	T2_ = bitconcat__int128_u45(arg_2.udata[(((NI)3))- 0], arg_2.udata[(((NI)2))- 0]);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	b_1 = ((NF) (T2_));
	result = ((NF)(a_1) + (NF)(((NF)(1.8446744073709552e+19) * (NF)(b_1))));
	{
		if (!isNegative_1) goto LA5_;
		result = -(result);
	}
LA5_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__semfold_u691)(NIM_BOOL arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	result = Zero__int128_u8;
	(*((NI32*) ((&result.udata[(((NI)0))- 0])))) = ((NI32) (arg_p0));
	return result;
}
static N_INLINE(NF, abs__pureZmath_u219)(NF x_p0) {
	NF result;
	result = (NF)0;
	result = fabs(x_p0);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg, toInt128__int128_u1039)(NF arg_p0) {
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg result;
	NIM_BOOL isNegative_1;
	NF v0_1;
	NF T1_;
	NU64 w0_1;
	NF T2_;
	NF v1_1;
	NU64 w1_1;
	NF T3_;
	NF v2_1;
	NU64 w2_1;
	NF T4_;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg res_1;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T5_;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T6_;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T7_;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T8_;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T9_;
	tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg T10_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg));
	isNegative_1 = (arg_p0 < 0.0);
	T1_ = (NF)0;
	T1_ = abs__pureZmath_u219(arg_p0);
	v0_1 = ldexp(T1_, ((int)-100));
	T2_ = (NF)0;
	T2_ = trunc(v0_1);
	w0_1 = ((NU64) (T2_));
	v1_1 = ldexp(((NF)(v0_1) - (NF)(((NF) (w0_1)))), ((int)50));
	T3_ = (NF)0;
	T3_ = trunc(v1_1);
	w1_1 = ((NU64) (T3_));
	v2_1 = ldexp(((NF)(v1_1) - (NF)(((NF) (w1_1)))), ((int)50));
	T4_ = (NF)0;
	T4_ = trunc(v2_1);
	w2_1 = ((NU64) (T4_));
	T5_ = toInt128__int128_u717(w0_1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T6_ = shl__int128_u546(T5_, ((NI)100));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T7_ = toInt128__int128_u717(w1_1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T8_ = shl__int128_u546(T7_, ((NI)50));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T9_ = bitor__int128_u442(T6_, T8_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T10_ = toInt128__int128_u717(w2_1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	res_1 = bitor__int128_u442(T9_, T10_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	{
		if (!isNegative_1) goto LA13_;
		result = minus___int128_u638(res_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		goto BeforeRet_;
	}
	goto LA11_;
LA13_: ;
	{
		result = res_1;
		goto BeforeRet_;
	}
LA11_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, toInt__int128_u257)(tyObject_Int128__Moyhy3H7f18q9axhPc7Yt9bg arg_p0) {
	NI result;
	NI32 T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI)0;
	T1_ = (NI32)0;
	T1_ = toInt32__int128_u122(arg_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = ((NI) (T1_));
	}BeforeRet_: ;
	return result;
}
