/* Generated by Nim Compiler v1.6.14 */
#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
#define nimfr_(x, y)
#define nimln_(x, y)
typedef struct tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyTuple__eo2IBZqaNEX3yBdVfoiJsA tyTuple__eo2IBZqaNEX3yBdVfoiJsA;
typedef NU32 tyArray__FleBT9cC2nxhgiXmSYYnEKA[4];
struct tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ {
tyArray__FleBT9cC2nxhgiXmSYYnEKA udata;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyTuple__eo2IBZqaNEX3yBdVfoiJsA {
tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ Field0;
tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ Field1;
};
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NI, cmp__int495056_385)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b);
N_LIB_PRIVATE N_NIMCALL(NI, cmp__int495056_395)(NI32 x, NI32 y);
N_LIB_PRIVATE N_NIMCALL(NI, cmp__int495056_401)(NU32 x, NU32 y);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__int495056_909)(NI64 arg);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___int495056_425)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, plus___int495056_611)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, minus___int495056_634)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, bitnot__int495056_431)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a);
N_LIB_PRIVATE N_NIMCALL(void, inc__int495056_354)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ* a, NU32 y);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__systemZassertions_56)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, minus___int495056_637)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b);
N_LIB_PRIVATE N_NIMCALL(NU64, bitconcat__int495056_64)(NU32 a, NU32 b);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, star___int495056_653)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NU32 b);
N_LIB_PRIVATE N_NIMCALL(NI, abs__int495056_650)(NI32 a);
static N_INLINE(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, maskUInt8__int495056_1043)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg);
static N_INLINE(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, maskUInt16__int495056_1040)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg);
static N_INLINE(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, maskUInt32__int495056_1037)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg);
static N_INLINE(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, maskUInt64__int495056_1034)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, makeInt128__int495056_688)(NU64 high, NU64 low);
N_LIB_PRIVATE N_NIMCALL(NU64, high64__int495056_700)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a);
N_LIB_PRIVATE N_NIMCALL(NU64, low64__int495056_703)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a);
N_LIB_PRIVATE N_NIMCALL(void, pluseq___int495056_631)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ* a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, shl__int495056_542)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NI b);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__int495056_722)(NU64 arg);
N_LIB_PRIVATE N_NIMCALL(void, divMod__int495056_767)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ dividend, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ divisor, tyTuple__eo2IBZqaNEX3yBdVfoiJsA* Result);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, abs__int495056_644)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lt___int495056_417)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b);
N_LIB_PRIVATE N_NIMCALL(NI, fastLog2__int495056_741)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a);
static N_INLINE(NI, fastLog2__int495056_744)(NU32 x);
N_CDECL(int, __builtin_clz)(unsigned int x);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lteq___int495056_421)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b);
N_LIB_PRIVATE N_NIMCALL(void, minuseq___int495056_641)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ* a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, bitor__int495056_438)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b);
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, shr__int495056_446)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NI b);
N_LIB_PRIVATE N_NIMCALL(void, addInt128__int495056_815)(NimStringDesc** result, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ value);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copyMem__system_1733)(void* dest, void* source, NI size);
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NIMCALL(NI64, toInt64__int495056_88)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
static N_INLINE(NF, abs__pureZmath_150)(NF x);
N_LIB_PRIVATE N_NIMCALL(NI32, toInt32__int495056_138)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg);
N_LIB_PRIVATE NIM_CONST tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ Zero__int495056_7 = {{((NU32) 0),
((NU32) 0),
((NU32) 0),
((NU32) 0)}
}
;
N_LIB_PRIVATE NIM_CONST tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ Max__int495056_27 = {{((NU32) IL64(4294967295)),
((NU32) IL64(4294967295)),
((NU32) IL64(4294967295)),
((NU32) 2147483647)}
}
;
STRING_LITERAL(TM__j3e9cBE1r9bNswX4zGWzjSfQ_2, "int128.nim(186, 17) `a.sdata(3) != low(int32)` overflow", 55);
N_LIB_PRIVATE NIM_CONST tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ One__int495056_8 = {{((NU32) 1),
((NU32) 0),
((NU32) 0),
((NU32) 0)}
}
;
N_LIB_PRIVATE NIM_CONST tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ NegOne__int495056_28 = {{((NU32) IL64(4294967295)),
((NU32) IL64(4294967295)),
((NU32) IL64(4294967295)),
((NU32) IL64(4294967295))}
}
;
STRING_LITERAL(TM__j3e9cBE1r9bNswX4zGWzjSfQ_3, "0", 1);
N_LIB_PRIVATE NIM_CONST tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ Min__int495056_10 = {{((NU32) 0),
((NU32) 0),
((NU32) 0),
((NU32) IL64(2147483648))}
}
;
STRING_LITERAL(TM__j3e9cBE1r9bNswX4zGWzjSfQ_4, "-170141183460469231731687303715884105728", 40);
N_LIB_PRIVATE NIM_CONST tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ Ten__int495056_9 = {{((NU32) 10),
((NU32) 0),
((NU32) 0),
((NU32) 0)}
}
;
STRING_LITERAL(TM__j3e9cBE1r9bNswX4zGWzjSfQ_5, "0123456789", 10);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___int495056_425)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	{
		if (!!((a.udata[(((NI) 0))- 0] == b.udata[(((NI) 0))- 0]))) goto LA3_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		if (!!((a.udata[(((NI) 1))- 0] == b.udata[(((NI) 1))- 0]))) goto LA7_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA7_: ;
	{
		if (!!((a.udata[(((NI) 2))- 0] == b.udata[(((NI) 2))- 0]))) goto LA11_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA11_: ;
	{
		if (!!((a.udata[(((NI) 3))- 0] == b.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__systemZmemory_7)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__systemZmemory_7(p, ((int) 0), size);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__int495056_722)(NU64 arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	result.udata[(((NI) 0))- 0] = ((NU32) ((NU64)(arg & 4294967295ULL)));
	result.udata[(((NI) 1))- 0] = ((NU32) ((NU64)((NU64)(arg) >> (NU64)(((NI) 32)))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__int495056_909)(NI64 arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	NI64 tmp;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	tmp = arg;
	result.udata[(((NI) 0))- 0] = ((NU32) ((NI64)(tmp & IL64(4294967295))));
	(*((NI32*) ((&result.udata[(((NI) 1))- 0])))) = ((NI32) ((NI64)((NI64)(tmp) >> (NU64)(((NI) 32)))));
	{
		if (!(arg < 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__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__types_1431)(NI arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	(*((NI32*) ((&result.udata[(((NI) 0))- 0])))) = ((NI32) (arg));
	{
		if (!(arg < ((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__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__types_1534)(NU arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	result.udata[(((NI) 0))- 0] = ((NU32) (arg));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, cmp__int495056_385)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	NI result;
	NI tmp1;
	NI tmp2;
	NI tmp3;
	NI tmp4;
{	result = (NI)0;
	tmp1 = cmp__int495056_395((*((NI32*) ((&a.udata[(((NI) 3))- 0])))), (*((NI32*) ((&b.udata[(((NI) 3))- 0])))));
	{
		if (!!((tmp1 == ((NI) 0)))) goto LA3_;
		result = tmp1;
		goto BeforeRet_;
	}
	LA3_: ;
	tmp2 = cmp__int495056_401(a.udata[(((NI) 2))- 0], b.udata[(((NI) 2))- 0]);
	{
		if (!!((tmp2 == ((NI) 0)))) goto LA7_;
		result = tmp2;
		goto BeforeRet_;
	}
	LA7_: ;
	tmp3 = cmp__int495056_401(a.udata[(((NI) 1))- 0], b.udata[(((NI) 1))- 0]);
	{
		if (!!((tmp3 == ((NI) 0)))) goto LA11_;
		result = tmp3;
		goto BeforeRet_;
	}
	LA11_: ;
	tmp4 = cmp__int495056_401(a.udata[(((NI) 0))- 0], b.udata[(((NI) 0))- 0]);
	result = tmp4;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lteq___int495056_421)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	NIM_BOOL result;
	NI T1_;
	result = (NIM_BOOL)0;
	T1_ = (NI)0;
	T1_ = cmp__int495056_385(a, b);
	result = (T1_ <= ((NI) 0));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lteq___int495056_938)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NI64 b) {
	NIM_BOOL result;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T1_;
	NI T2_;
	result = (NIM_BOOL)0;
	T1_ = toInt128__int495056_909(b);
	T2_ = (NI)0;
	T2_ = cmp__int495056_385(a, T1_);
	result = (T2_ <= ((NI) 0));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lteq___int495056_945)(NI64 a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	NIM_BOOL result;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T1_;
	NI T2_;
	result = (NIM_BOOL)0;
	T1_ = toInt128__int495056_909(a);
	T2_ = (NI)0;
	T2_ = cmp__int495056_385(T1_, b);
	result = (T2_ <= ((NI) 0));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___int495056_952)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NI64 b) {
	NIM_BOOL result;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T1_;
	result = (NIM_BOOL)0;
	T1_ = toInt128__int495056_909(b);
	result = eqeq___int495056_425(a, T1_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, plus___int495056_611)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	NU64 tmp0;
	NU64 tmp1;
	NU64 tmp2;
	NU64 tmp3;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	tmp0 = (NU64)((NU64)(((NU64) (a.udata[(((NI) 0))- 0]))) + (NU64)(((NU64) (b.udata[(((NI) 0))- 0]))));
	result.udata[(((NI) 0))- 0] = ((NU32) (tmp0));
	tmp1 = (NU64)((NU64)((NU64)((NU64)(((NU64) (a.udata[(((NI) 1))- 0]))) + (NU64)(((NU64) (b.udata[(((NI) 1))- 0]))))) + (NU64)((NU64)((NU64)(tmp0) >> (NU64)(((NI) 32)))));
	result.udata[(((NI) 1))- 0] = ((NU32) (tmp1));
	tmp2 = (NU64)((NU64)((NU64)((NU64)(((NU64) (a.udata[(((NI) 2))- 0]))) + (NU64)(((NU64) (b.udata[(((NI) 2))- 0]))))) + (NU64)((NU64)((NU64)(tmp1) >> (NU64)(((NI) 32)))));
	result.udata[(((NI) 2))- 0] = ((NU32) (tmp2));
	tmp3 = (NU64)((NU64)((NU64)((NU64)(((NU64) (a.udata[(((NI) 3))- 0]))) + (NU64)(((NU64) (b.udata[(((NI) 3))- 0]))))) + (NU64)((NU64)((NU64)(tmp2) >> (NU64)(((NI) 32)))));
	result.udata[(((NI) 3))- 0] = ((NU32) (tmp3));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, bitnot__int495056_431)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	result.udata[(((NI) 0))- 0] = (NU32)((NU32) ~(a.udata[(((NI) 0))- 0]));
	result.udata[(((NI) 1))- 0] = (NU32)((NU32) ~(a.udata[(((NI) 1))- 0]));
	result.udata[(((NI) 2))- 0] = (NU32)((NU32) ~(a.udata[(((NI) 2))- 0]));
	result.udata[(((NI) 3))- 0] = (NU32)((NU32) ~(a.udata[(((NI) 3))- 0]));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, inc__int495056_354)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ* a, NU32 y) {
	(*a).udata[(((NI) 0))- 0] += y;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = NIM_UNLIKELY(((NU32)((*a).udata[(((NI) 0))- 0]) < (NU32)(y)));
		if (!T3_) goto LA4_;
		(*a).udata[(((NI) 1))- 0] += ((NI) 1);
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = NIM_UNLIKELY(((*a).udata[(((NI) 1))- 0] == ((NU32) 0)));
			if (!T8_) goto LA9_;
			(*a).udata[(((NI) 2))- 0] += ((NI) 1);
			{
				NIM_BOOL T13_;
				T13_ = (NIM_BOOL)0;
				T13_ = NIM_UNLIKELY(((*a).udata[(((NI) 2))- 0] == ((NU32) 0)));
				if (!T13_) goto LA14_;
				(*a).udata[(((NI) 3))- 0] += ((NI) 1);
				{
					if (!!(!(((*((NI32*) ((&(*a).udata[(((NI) 3))- 0])))) == ((NI32) (-2147483647 -1)))))) goto LA18_;
					failedAssertImpl__systemZassertions_56(((NimStringDesc*) &TM__j3e9cBE1r9bNswX4zGWzjSfQ_2));
				}
				LA18_: ;
			}
			LA14_: ;
		}
		LA9_: ;
	}
	LA4_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, minus___int495056_634)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	result = bitnot__int495056_431(a);
	inc__int495056_354((&result), ((NU32) 1));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, minus___int495056_637)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T1_;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	T1_ = minus___int495056_634(b);
	result = plus___int495056_611(a, T1_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, minus___int495056_973)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NI64 b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T1_;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	T1_ = toInt128__int495056_909(b);
	result = minus___int495056_637(a, T1_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, plus___int495056_987)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NI64 b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T1_;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	T1_ = toInt128__int495056_909(b);
	result = plus___int495056_611(a, T1_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, bitconcat__int495056_64)(NU32 a, NU32 b) {
	NU64 result;
	result = (NU64)0;
	result = (NU64)((NU64)((NU64)(((NU64) (a))) << (NU64)(((NI) 32))) | ((NU64) (b)));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI64, toInt64__int495056_88)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	NI64 result;
	NU64 T6_;
	result = (NI64)0;
	{
		if (!((*((NI32*) ((&arg.udata[(((NI) 3))- 0])))) < ((NI32) 0))) goto LA3_;
	}
	goto LA1_;
	LA3_: ;
	{
	}
	LA1_: ;
	T6_ = (NU64)0;
	T6_ = bitconcat__int495056_64(arg.udata[(((NI) 1))- 0], arg.udata[(((NI) 0))- 0]);
	result = ((NI64) (T6_));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lt___int495056_905)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NI64 b) {
	NIM_BOOL result;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T1_;
	NI T2_;
	result = (NIM_BOOL)0;
	T1_ = toInt128__int495056_909(b);
	T2_ = (NI)0;
	T2_ = cmp__int495056_385(a, T1_);
	result = (T2_ < ((NI) 0));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI64, toInt64Checked__int495056_119)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg, NI64 onError) {
	NI64 result;
	NU64 T18_;
{	result = (NI64)0;
	{
		if (!((*((NI32*) ((&arg.udata[(((NI) 3))- 0])))) < ((NI32) 0))) goto LA3_;
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = !(((*((NI32*) ((&arg.udata[(((NI) 3))- 0])))) == ((NI32) -1)));
			if (T7_) goto LA8_;
			T7_ = !(((*((NI32*) ((&arg.udata[(((NI) 2))- 0])))) == ((NI32) -1)));
			LA8_: ;
			if (!T7_) goto LA9_;
			result = onError;
			goto BeforeRet_;
		}
		LA9_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		{
			NIM_BOOL T14_;
			T14_ = (NIM_BOOL)0;
			T14_ = !(((*((NI32*) ((&arg.udata[(((NI) 3))- 0])))) == ((NI32) 0)));
			if (T14_) goto LA15_;
			T14_ = !(((*((NI32*) ((&arg.udata[(((NI) 2))- 0])))) == ((NI32) 0)));
			LA15_: ;
			if (!T14_) goto LA16_;
			result = onError;
			goto BeforeRet_;
		}
		LA16_: ;
	}
	LA1_: ;
	T18_ = (NU64)0;
	T18_ = bitconcat__int495056_64(arg.udata[(((NI) 1))- 0], arg.udata[(((NI) 0))- 0]);
	result = ((NI64) (T18_));
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, star___int495056_653)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NU32 b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	NU64 tmp0;
	NU64 tmp1;
	NU64 tmp2;
	NU64 tmp3;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	tmp0 = (NU64)((NU64)(((NU64) (a.udata[(((NI) 0))- 0]))) * (NU64)(((NU64) (b))));
	tmp1 = (NU64)((NU64)(((NU64) (a.udata[(((NI) 1))- 0]))) * (NU64)(((NU64) (b))));
	tmp2 = (NU64)((NU64)(((NU64) (a.udata[(((NI) 2))- 0]))) * (NU64)(((NU64) (b))));
	tmp3 = (NU64)((NU64)(((NU64) (a.udata[(((NI) 3))- 0]))) * (NU64)(((NU64) (b))));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = NIM_UNLIKELY(((NU64)(2147483647ULL) < (NU64)(tmp3)));
		if (!T3_) goto LA4_;
	}
	LA4_: ;
	result.udata[(((NI) 0))- 0] = ((NU32) (tmp0));
	result.udata[(((NI) 1))- 0] = (NU32)((NU32)(((NU32) (tmp1))) + (NU32)(((NU32) ((NU64)((NU64)(tmp0) >> (NU64)(((NI) 32)))))));
	result.udata[(((NI) 2))- 0] = (NU32)((NU32)(((NU32) (tmp2))) + (NU32)(((NU32) ((NU64)((NU64)(tmp1) >> (NU64)(((NI) 32)))))));
	result.udata[(((NI) 3))- 0] = (NU32)((NU32)(((NU32) (tmp3))) + (NU32)(((NU32) ((NU64)((NU64)(tmp2) >> (NU64)(((NI) 32)))))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, abs__int495056_650)(NI32 a) {
	NI result;
	NI32 T1_;
	result = (NI)0;
	T1_ = (NI32)0;
	{
		if (!(a < ((NI32) 0))) goto LA4_;
		T1_ = ((NI32)-(a));
	}
	goto LA2_;
	LA4_: ;
	{
		T1_ = a;
	}
	LA2_: ;
	result = ((NI) (T1_));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, star___int495056_680)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NI32 b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	NI T1_;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	T1_ = (NI)0;
	T1_ = abs__int495056_650(b);
	result = star___int495056_653(a, ((NU32) (T1_)));
	{
		if (!(b < ((NI32) 0))) goto LA4_;
		result = minus___int495056_634(result);
	}
	LA4_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lt___int495056_417)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	NIM_BOOL result;
	NI T1_;
	result = (NIM_BOOL)0;
	T1_ = (NI)0;
	T1_ = cmp__int495056_385(a, b);
	result = (T1_ < ((NI) 0));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI64, castToInt64__int495056_324)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	NI64 result;
	NU64 T1_;
	result = (NI64)0;
	T1_ = (NU64)0;
	T1_ = bitconcat__int495056_64(arg.udata[(((NI) 1))- 0], arg.udata[(((NI) 0))- 0]);
	result = ((NI64) (T1_));
	return result;
}
static N_INLINE(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, maskUInt8__int495056_1043)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	result.udata[(((NI) 0))- 0] = (NU32)(arg.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__ZSLNyYMaD8rorY4HZRFSUQ, maskUInt16__int495056_1040)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	result.udata[(((NI) 0))- 0] = (NU32)(arg.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__ZSLNyYMaD8rorY4HZRFSUQ, maskUInt32__int495056_1037)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	result.udata[(((NI) 0))- 0] = arg.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__ZSLNyYMaD8rorY4HZRFSUQ, maskUInt64__int495056_1034)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	result.udata[(((NI) 0))- 0] = arg.udata[(((NI) 0))- 0];
	result.udata[(((NI) 1))- 0] = arg.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__ZSLNyYMaD8rorY4HZRFSUQ, maskBytes__int495056_1046)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg, NI numbytes) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
{	switch (numbytes) {
	case ((NI) 1):
	{
		result = maskUInt8__int495056_1043(arg);
		goto BeforeRet_;
	}
	break;
	case ((NI) 2):
	{
		result = maskUInt16__int495056_1040(arg);
		goto BeforeRet_;
	}
	break;
	case ((NI) 4):
	{
		result = maskUInt32__int495056_1037(arg);
		goto BeforeRet_;
	}
	break;
	case ((NI) 8):
	{
		result = maskUInt64__int495056_1034(arg);
		goto BeforeRet_;
	}
	break;
	default:
	{
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, abs__int495056_644)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	{
		if (!((*((NI32*) ((&a.udata[(((NI) 3))- 0])))) < ((NI32) 0))) goto LA3_;
		result = minus___int495056_634(a);
	}
	goto LA1_;
	LA3_: ;
	{
		result = a;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, makeInt128__int495056_688)(NU64 high, NU64 low) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	result.udata[(((NI) 0))- 0] = ((NU32) (low));
	result.udata[(((NI) 1))- 0] = ((NU32) ((NU64)((NU64)(low) >> (NU64)(((NI) 32)))));
	result.udata[(((NI) 2))- 0] = ((NU32) (high));
	result.udata[(((NI) 3))- 0] = ((NU32) ((NU64)((NU64)(high) >> (NU64)(((NI) 32)))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, high64__int495056_700)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a) {
	NU64 result;
	result = (NU64)0;
	result = bitconcat__int495056_64(a.udata[(((NI) 3))- 0], a.udata[(((NI) 2))- 0]);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, low64__int495056_703)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a) {
	NU64 result;
	result = (NU64)0;
	result = bitconcat__int495056_64(a.udata[(((NI) 1))- 0], a.udata[(((NI) 0))- 0]);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, pluseq___int495056_631)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ* a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	(*a) = plus___int495056_611((*a), b);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, shl__int495056_542)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NI b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	NI b_2;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	b_2 = (NI)(b & ((NI) 127));
	{
		NU64 T5_;
		NU64 T6_;
		NU64 T7_;
		if (!(b_2 < ((NI) 32))) goto LA3_;
		result.udata[(((NI) 0))- 0] = (NU32)((NU32)(a.udata[(((NI) 0))- 0]) << (NU32)(b_2));
		T5_ = (NU64)0;
		T5_ = bitconcat__int495056_64(a.udata[(((NI) 1))- 0], a.udata[(((NI) 0))- 0]);
		result.udata[(((NI) 1))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T5_) << (NU64)(b_2))) >> (NU64)(((NI) 32)))));
		T6_ = (NU64)0;
		T6_ = bitconcat__int495056_64(a.udata[(((NI) 2))- 0], a.udata[(((NI) 1))- 0]);
		result.udata[(((NI) 2))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T6_) << (NU64)(b_2))) >> (NU64)(((NI) 32)))));
		T7_ = (NU64)0;
		T7_ = bitconcat__int495056_64(a.udata[(((NI) 3))- 0], a.udata[(((NI) 2))- 0]);
		result.udata[(((NI) 3))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T7_) << (NU64)(b_2))) >> (NU64)(((NI) 32)))));
	}
	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.udata[(((NI) 0))- 0]) << (NU32)((NI)(b_2 & ((NI) 31))));
		T11_ = (NU64)0;
		T11_ = bitconcat__int495056_64(a.udata[(((NI) 1))- 0], a.udata[(((NI) 0))- 0]);
		result.udata[(((NI) 2))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T11_) << (NU64)((NI)(b_2 & ((NI) 31))))) >> (NU64)(((NI) 32)))));
		T12_ = (NU64)0;
		T12_ = bitconcat__int495056_64(a.udata[(((NI) 2))- 0], a.udata[(((NI) 1))- 0]);
		result.udata[(((NI) 3))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T12_) << (NU64)((NI)(b_2 & ((NI) 31))))) >> (NU64)(((NI) 32)))));
	}
	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.udata[(((NI) 0))- 0]) << (NU32)((NI)(b_2 & ((NI) 31))));
		T16_ = (NU64)0;
		T16_ = bitconcat__int495056_64(a.udata[(((NI) 1))- 0], a.udata[(((NI) 0))- 0]);
		result.udata[(((NI) 3))- 0] = ((NU32) ((NU64)((NU64)((NU64)((NU64)(T16_) << (NU64)((NI)(b_2 & ((NI) 31))))) >> (NU64)(((NI) 32)))));
	}
	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.udata[(((NI) 0))- 0]) << (NU32)((NI)(b_2 & ((NI) 31))));
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, star___int495056_706)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ lhs, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ rhs) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	NU64 a;
	NU64 b;
	NU64 c;
	NU64 d;
	NU64 e;
	NU64 f;
	NU64 g;
	NU64 h;
	NU64 a32;
	NU64 a00;
	NU64 b32;
	NU64 b00;
	NU64 T1_;
	NU64 T2_;
	NU64 T3_;
	NU64 T4_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T5_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T6_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T7_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T8_;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	a = ((NU64) (lhs.udata[(((NI) 0))- 0]));
	b = ((NU64) (lhs.udata[(((NI) 1))- 0]));
	c = ((NU64) (lhs.udata[(((NI) 2))- 0]));
	d = ((NU64) (lhs.udata[(((NI) 3))- 0]));
	e = ((NU64) (rhs.udata[(((NI) 0))- 0]));
	f = ((NU64) (rhs.udata[(((NI) 1))- 0]));
	g = ((NU64) (rhs.udata[(((NI) 2))- 0]));
	h = ((NU64) (rhs.udata[(((NI) 3))- 0]));
	a32 = ((NU64) (lhs.udata[(((NI) 1))- 0]));
	a00 = ((NU64) (lhs.udata[(((NI) 0))- 0]));
	b32 = ((NU64) (rhs.udata[(((NI) 1))- 0]));
	b00 = ((NU64) (rhs.udata[(((NI) 0))- 0]));
	T1_ = (NU64)0;
	T1_ = high64__int495056_700(lhs);
	T2_ = (NU64)0;
	T2_ = low64__int495056_703(rhs);
	T3_ = (NU64)0;
	T3_ = low64__int495056_703(lhs);
	T4_ = (NU64)0;
	T4_ = high64__int495056_700(rhs);
	result = makeInt128__int495056_688((NU64)((NU64)((NU64)((NU64)((NU64)((NU64)(T1_) * (NU64)(T2_))) + (NU64)((NU64)((NU64)(T3_) * (NU64)(T4_))))) + (NU64)((NU64)((NU64)(a32) * (NU64)(b32)))), (NU64)((NU64)(a00) * (NU64)(b00)));
	T5_ = toInt128__int495056_722((NU64)((NU64)(a32) * (NU64)(b00)));
	T6_ = shl__int495056_542(T5_, ((NI) 32));
	pluseq___int495056_631((&result), T6_);
	T7_ = toInt128__int495056_722((NU64)((NU64)(a00) * (NU64)(b32)));
	T8_ = shl__int495056_542(T7_, ((NI) 32));
	pluseq___int495056_631((&result), T8_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__semfold_268)(NI8 arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	(*((NI32*) ((&result.udata[(((NI) 0))- 0])))) = ((NI32) (arg));
	{
		if (!(arg < ((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__int495056_228)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	NI8 result;
	result = (NI8)0;
	{
		if (!((*((NI32*) ((&arg.udata[(((NI) 3))- 0])))) < ((NI32) 0))) goto LA3_;
	}
	goto LA1_;
	LA3_: ;
	{
	}
	LA1_: ;
	result = ((NI8) ((*((NI32*) ((&arg.udata[(((NI) 0))- 0]))))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__semfold_292)(NI16 arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	(*((NI32*) ((&result.udata[(((NI) 0))- 0])))) = ((NI32) (arg));
	{
		if (!(arg < ((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__int495056_183)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	NI16 result;
	result = (NI16)0;
	{
		if (!((*((NI32*) ((&arg.udata[(((NI) 3))- 0])))) < ((NI32) 0))) goto LA3_;
	}
	goto LA1_;
	LA3_: ;
	{
	}
	LA1_: ;
	result = ((NI16) ((*((NI32*) ((&arg.udata[(((NI) 0))- 0]))))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__semfold_316)(NI32 arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	(*((NI32*) ((&result.udata[(((NI) 0))- 0])))) = arg;
	{
		if (!(arg < ((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__int495056_138)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	NI32 result;
	result = (NI32)0;
	{
		if (!((*((NI32*) ((&arg.udata[(((NI) 3))- 0])))) < ((NI32) 0))) goto LA3_;
	}
	goto LA1_;
	LA3_: ;
	{
	}
	LA1_: ;
	result = (*((NI32*) ((&arg.udata[(((NI) 0))- 0]))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__semfold_361)(NU8 arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	result.udata[(((NI) 0))- 0] = ((NU32) (arg));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU8, toUInt8__int495056_309)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	NU8 result;
	result = (NU8)0;
	result = ((NU8) (arg.udata[(((NI) 0))- 0]));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__semfold_373)(NU16 arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	result.udata[(((NI) 0))- 0] = ((NU32) (arg));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU16, toUInt16__int495056_297)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	NU16 result;
	result = (NU16)0;
	result = ((NU16) (arg.udata[(((NI) 0))- 0]));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__semfold_385)(NU32 arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	result.udata[(((NI) 0))- 0] = arg;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU32, toUInt32__int495056_285)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	NU32 result;
	result = (NU32)0;
	result = arg.udata[(((NI) 0))- 0];
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, toUInt64__int495056_276)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	NU64 result;
	result = (NU64)0;
	result = bitconcat__int495056_64(arg.udata[(((NI) 1))- 0], arg.udata[(((NI) 0))- 0]);
	return result;
}
static N_INLINE(NI, fastLog2__int495056_744)(NU32 x) {
	NI result;
	int T1_;
	result = (NI)0;
	T1_ = (int)0;
	T1_ = __builtin_clz(x);
	result = (NI)(((NI) 31) - ((NI) (T1_)));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, fastLog2__int495056_741)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a) {
	NI result;
{	result = (NI)0;
	{
		NI T5_;
		if (!!((a.udata[(((NI) 3))- 0] == ((NU32) 0)))) goto LA3_;
		T5_ = (NI)0;
		T5_ = fastLog2__int495056_744(a.udata[(((NI) 3))- 0]);
		result = (NI)(((NI) 96) + T5_);
		goto BeforeRet_;
	}
	LA3_: ;
	{
		NI T10_;
		if (!!((a.udata[(((NI) 2))- 0] == ((NU32) 0)))) goto LA8_;
		T10_ = (NI)0;
		T10_ = fastLog2__int495056_744(a.udata[(((NI) 2))- 0]);
		result = (NI)(((NI) 64) + T10_);
		goto BeforeRet_;
	}
	LA8_: ;
	{
		NI T15_;
		if (!!((a.udata[(((NI) 1))- 0] == ((NU32) 0)))) goto LA13_;
		T15_ = (NI)0;
		T15_ = fastLog2__int495056_744(a.udata[(((NI) 1))- 0]);
		result = (NI)(((NI) 32) + T15_);
		goto BeforeRet_;
	}
	LA13_: ;
	{
		if (!!((a.udata[(((NI) 0))- 0] == ((NU32) 0)))) goto LA18_;
		result = fastLog2__int495056_744(a.udata[(((NI) 0))- 0]);
		goto BeforeRet_;
	}
	LA18_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, minuseq___int495056_641)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ* a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	(*a) = minus___int495056_637((*a), b);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, bitor__int495056_438)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	result.udata[(((NI) 0))- 0] = (NU32)(a.udata[(((NI) 0))- 0] | b.udata[(((NI) 0))- 0]);
	result.udata[(((NI) 1))- 0] = (NU32)(a.udata[(((NI) 1))- 0] | b.udata[(((NI) 1))- 0]);
	result.udata[(((NI) 2))- 0] = (NU32)(a.udata[(((NI) 2))- 0] | b.udata[(((NI) 2))- 0]);
	result.udata[(((NI) 3))- 0] = (NU32)(a.udata[(((NI) 3))- 0] | b.udata[(((NI) 3))- 0]);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, shr__int495056_446)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, NI b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	NI b_2;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	b_2 = (NI)(b & ((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.udata[(((NI) 3))- 0]))))) >> (NU32)(b_2));
		T5_ = (NU64)0;
		T5_ = bitconcat__int495056_64(a.udata[(((NI) 3))- 0], a.udata[(((NI) 2))- 0]);
		result.udata[(((NI) 2))- 0] = ((NU32) ((NU64)((NU64)(T5_) >> (NU64)(b_2))));
		T6_ = (NU64)0;
		T6_ = bitconcat__int495056_64(a.udata[(((NI) 2))- 0], a.udata[(((NI) 1))- 0]);
		result.udata[(((NI) 1))- 0] = ((NU32) ((NU64)((NU64)(T6_) >> (NU64)(b_2))));
		T7_ = (NU64)0;
		T7_ = bitconcat__int495056_64(a.udata[(((NI) 1))- 0], a.udata[(((NI) 0))- 0]);
		result.udata[(((NI) 0))- 0] = ((NU32) ((NU64)((NU64)(T7_) >> (NU64)(b_2))));
	}
	goto LA1_;
	LA3_: ;
	{
		NU64 T15_;
		NU64 T16_;
		if (!(b_2 < ((NI) 64))) goto LA9_;
		{
			if (!((*((NI32*) ((&a.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.udata[(((NI) 3))- 0]))))) >> (NU32)((NI)(b_2 & ((NI) 31))));
		T15_ = (NU64)0;
		T15_ = bitconcat__int495056_64(a.udata[(((NI) 3))- 0], a.udata[(((NI) 2))- 0]);
		result.udata[(((NI) 1))- 0] = ((NU32) ((NU64)((NU64)(T15_) >> (NU64)((NI)(b_2 & ((NI) 31))))));
		T16_ = (NU64)0;
		T16_ = bitconcat__int495056_64(a.udata[(((NI) 2))- 0], a.udata[(((NI) 1))- 0]);
		result.udata[(((NI) 0))- 0] = ((NU32) ((NU64)((NU64)(T16_) >> (NU64)((NI)(b_2 & ((NI) 31))))));
	}
	goto LA1_;
	LA9_: ;
	{
		NU64 T24_;
		if (!(b_2 < ((NI) 96))) goto LA18_;
		{
			if (!((*((NI32*) ((&a.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.udata[(((NI) 3))- 0]))))) >> (NU32)((NI)(b_2 & ((NI) 31))));
		T24_ = (NU64)0;
		T24_ = bitconcat__int495056_64(a.udata[(((NI) 3))- 0], a.udata[(((NI) 2))- 0]);
		result.udata[(((NI) 0))- 0] = ((NU32) ((NU64)((NU64)(T24_) >> (NU64)((NI)(b_2 & ((NI) 31))))));
	}
	goto LA1_;
	LA18_: ;
	{
		{
			if (!((*((NI32*) ((&a.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.udata[(((NI) 3))- 0]))))) >> (NU32)((NI)(b_2 & ((NI) 31))));
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, divMod__int495056_767)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ dividend, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ divisor, tyTuple__eo2IBZqaNEX3yBdVfoiJsA* Result) {
	NIM_BOOL isNegativeA;
	NIM_BOOL isNegativeB;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ dividend_2;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ divisor_2;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ denominator;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ quotient;
	NI shift;
	NI T21_;
	NI T22_;
{	nimZeroMem((void*)Result, sizeof(tyTuple__eo2IBZqaNEX3yBdVfoiJsA));
	isNegativeA = ((*((NI32*) ((&dividend.udata[(((NI) 3))- 0])))) < ((NI32) 0));
	isNegativeB = ((*((NI32*) ((&divisor.udata[(((NI) 3))- 0])))) < ((NI32) 0));
	dividend_2 = abs__int495056_644(dividend);
	divisor_2 = abs__int495056_644(divisor);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = lt___int495056_417(dividend_2, divisor_2);
		if (!T3_) goto LA4_;
		(*Result).Field0 = Zero__int495056_7;
		{
			if (!isNegativeA) goto LA8_;
			(*Result).Field1 = minus___int495056_634(dividend_2);
		}
		goto LA6_;
		LA8_: ;
		{
			(*Result).Field1 = dividend_2;
		}
		LA6_: ;
		goto BeforeRet_;
	}
	LA4_: ;
	{
		NIM_BOOL T13_;
		T13_ = (NIM_BOOL)0;
		T13_ = eqeq___int495056_425(divisor_2, dividend_2);
		if (!T13_) goto LA14_;
		{
			if (!(isNegativeA != isNegativeB)) goto LA18_;
			(*Result).Field0 = NegOne__int495056_28;
		}
		goto LA16_;
		LA18_: ;
		{
			(*Result).Field0 = One__int495056_8;
		}
		LA16_: ;
		(*Result).Field1 = Zero__int495056_7;
		goto BeforeRet_;
	}
	LA14_: ;
	denominator = divisor_2;
	quotient = Zero__int495056_7;
	T21_ = (NI)0;
	T21_ = fastLog2__int495056_741(dividend_2);
	T22_ = (NI)0;
	T22_ = fastLog2__int495056_741(denominator);
	shift = (NI)(T21_ - T22_);
	denominator = shl__int495056_542(denominator, shift);
	{
		NI i;
		NI res;
		i = (NI)0;
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= shift)) goto LA25;
				i = res;
				quotient = shl__int495056_542(quotient, ((NI) 1));
				{
					NIM_BOOL T28_;
					T28_ = (NIM_BOOL)0;
					T28_ = lteq___int495056_421(denominator, dividend_2);
					if (!T28_) goto LA29_;
					minuseq___int495056_641((&dividend_2), denominator);
					quotient = bitor__int495056_438(quotient, One__int495056_8);
				}
				LA29_: ;
				denominator = shr__int495056_446(denominator, ((NI) 1));
				res += ((NI) 1);
			} LA25: ;
		}
	}
	{
		if (!(isNegativeA != isNegativeB)) goto LA33_;
		(*Result).Field0 = minus___int495056_634(quotient);
	}
	goto LA31_;
	LA33_: ;
	{
		(*Result).Field0 = quotient;
	}
	LA31_: ;
	{
		if (!isNegativeA) goto LA38_;
		(*Result).Field1 = minus___int495056_634(dividend_2);
	}
	goto LA36_;
	LA38_: ;
	{
		(*Result).Field1 = dividend_2;
	}
	LA36_: ;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, div__int495056_794)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	tyTuple__eo2IBZqaNEX3yBdVfoiJsA T1_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a_2;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b_2;
{	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	nimZeroMem((void*)(&T1_), sizeof(tyTuple__eo2IBZqaNEX3yBdVfoiJsA));
	divMod__int495056_767(a, b, (&T1_));
	nimZeroMem((void*)(&a_2), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	a_2 = T1_.Field0;
	nimZeroMem((void*)(&b_2), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	b_2 = T1_.Field1;
	result = a_2;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, mod__int495056_809)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	tyTuple__eo2IBZqaNEX3yBdVfoiJsA T1_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a_2;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b_2;
{	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	nimZeroMem((void*)(&T1_), sizeof(tyTuple__eo2IBZqaNEX3yBdVfoiJsA));
	divMod__int495056_767(a, b, (&T1_));
	nimZeroMem((void*)(&a_2), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	a_2 = T1_.Field0;
	nimZeroMem((void*)(&b_2), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	b_2 = T1_.Field1;
	result = b_2;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, bitand__int495056_434)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	result.udata[(((NI) 0))- 0] = (NU32)(a.udata[(((NI) 0))- 0] & b.udata[(((NI) 0))- 0]);
	result.udata[(((NI) 1))- 0] = (NU32)(a.udata[(((NI) 1))- 0] & b.udata[(((NI) 1))- 0]);
	result.udata[(((NI) 2))- 0] = (NU32)(a.udata[(((NI) 2))- 0] & b.udata[(((NI) 2))- 0]);
	result.udata[(((NI) 3))- 0] = (NU32)(a.udata[(((NI) 3))- 0] & b.udata[(((NI) 3))- 0]);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, bitxor__int495056_442)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	result.udata[(((NI) 0))- 0] = (NU32)(a.udata[(((NI) 0))- 0] ^ b.udata[(((NI) 0))- 0]);
	result.udata[(((NI) 1))- 0] = (NU32)(a.udata[(((NI) 1))- 0] ^ b.udata[(((NI) 1))- 0]);
	result.udata[(((NI) 2))- 0] = (NU32)(a.udata[(((NI) 2))- 0] ^ b.udata[(((NI) 2))- 0]);
	result.udata[(((NI) 3))- 0] = (NU32)(a.udata[(((NI) 3))- 0] ^ b.udata[(((NI) 3))- 0]);
	return result;
}
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memcpy(dest, source, ((size_t) (size)));
}
static N_INLINE(void, copyMem__system_1733)(void* dest, void* source, NI size) {
	nimCopyMem(dest, source, size);
}
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	{
		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
		copyMem__system_1733(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		(*dest).Sup.len += (*src).Sup.len;
	}
	LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, addInt128__int495056_815)(NimStringDesc** result, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ value) {
	NI initialSize;
	initialSize = ((*result) ? (*result)->Sup.len : 0);
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = eqeq___int495056_425(value, Zero__int495056_7);
		if (!T3_) goto LA4_;
		unsureAsgnRef((void**) (&(*result)), resizeString((*result), 1));
appendString((*result), ((NimStringDesc*) &TM__j3e9cBE1r9bNswX4zGWzjSfQ_3));
	}
	goto LA1_;
	LA4_: ;
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = eqeq___int495056_425(value, Min__int495056_10);
		if (!T7_) goto LA8_;
		unsureAsgnRef((void**) (&(*result)), resizeString((*result), 40));
appendString((*result), ((NimStringDesc*) &TM__j3e9cBE1r9bNswX4zGWzjSfQ_4));
	}
	goto LA1_;
	LA8_: ;
	{
		NIM_BOOL isNegative;
		tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ value_2;
		NI i;
		NI j;
		isNegative = ((*((NI32*) ((&value.udata[(((NI) 3))- 0])))) < ((NI32) 0));
		value_2 = abs__int495056_644(value);
		{
			while (1) {
				NIM_BOOL T13_;
				tyTuple__eo2IBZqaNEX3yBdVfoiJsA T14_;
				tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ quot;
				tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ rem;
				NI64 T15_;
				T13_ = (NIM_BOOL)0;
				T13_ = lt___int495056_417(Zero__int495056_7, value_2);
				if (!T13_) goto LA12;
				nimZeroMem((void*)(&T14_), sizeof(tyTuple__eo2IBZqaNEX3yBdVfoiJsA));
				divMod__int495056_767(value_2, Ten__int495056_9, (&T14_));
				nimZeroMem((void*)(&quot), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
				quot = T14_.Field0;
				nimZeroMem((void*)(&rem), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
				rem = T14_.Field1;
				T15_ = (NI64)0;
				T15_ = toInt64__int495056_88(rem);
				unsureAsgnRef((void**) (&(*result)), addChar((*result), ((NimStringDesc*) &TM__j3e9cBE1r9bNswX4zGWzjSfQ_5)->data[T15_]));
				value_2 = quot;
			} LA12: ;
		}
		{
			if (!isNegative) goto LA18_;
			unsureAsgnRef((void**) (&(*result)), addChar((*result), 45));
		}
		LA18_: ;
		i = initialSize;
		j = (((*result) ? (*result)->Sup.len : 0)-1);
		{
			while (1) {
				NIM_CHAR T22_;
				if (!(i < j)) goto LA21;
				T22_ = (NIM_CHAR)0;
				T22_ = (*result)->data[i];
				(*result)->data[i] = (*result)->data[j];
				(*result)->data[j] = T22_;
				i += ((NI) 1);
				j -= ((NI) 1);
			} LA21: ;
		}
	}
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___int495056_53)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ a) {
	NimStringDesc* result;
	result = NIM_NIL;
	addInt128__int495056_815((&result), a);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eqeq___int495056_959)(NI64 a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	NIM_BOOL result;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T1_;
	result = (NIM_BOOL)0;
	T1_ = toInt128__int495056_909(a);
	result = eqeq___int495056_425(T1_, b);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NF, toFloat64__int495056_994)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	NF result;
	NIM_BOOL isNegative;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg_2;
	NF a;
	NU64 T1_;
	NF b;
	NU64 T2_;
	result = (NF)0;
	isNegative = ((*((NI32*) ((&arg.udata[(((NI) 3))- 0])))) < ((NI32) 0));
	arg_2 = abs__int495056_644(arg);
	T1_ = (NU64)0;
	T1_ = bitconcat__int495056_64(arg_2.udata[(((NI) 1))- 0], arg_2.udata[(((NI) 0))- 0]);
	a = ((NF) (T1_));
	T2_ = (NU64)0;
	T2_ = bitconcat__int495056_64(arg_2.udata[(((NI) 3))- 0], arg_2.udata[(((NI) 2))- 0]);
	b = ((NF) (T2_));
	result = ((NF)(a) + (NF)(((NF)(1.8446744073709552e+19) * (NF)(b))));
	{
		if (!isNegative) goto LA5_;
		result = -(result);
	}
	LA5_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__semfold_702)(NIM_BOOL arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	(*((NI32*) ((&result.udata[(((NI) 0))- 0])))) = ((NI32) (arg));
	return result;
}
static N_INLINE(NF, abs__pureZmath_150)(NF x) {
	NF result;
	result = (NF)0;
	result = fabs(x);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ, toInt128__int495056_1011)(NF arg) {
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ result;
	NIM_BOOL isNegative;
	NF v0;
	NF T1_;
	NU64 w0;
	NF T2_;
	NF v1;
	NU64 w1;
	NF T3_;
	NF v2;
	NU64 w2;
	NF T4_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ res;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T5_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T6_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T7_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T8_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T9_;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T10_;
{	nimZeroMem((void*)(&result), sizeof(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ));
	isNegative = (arg < 0.0);
	T1_ = (NF)0;
	T1_ = abs__pureZmath_150(arg);
	v0 = ldexp(T1_, ((int) -100));
	T2_ = (NF)0;
	T2_ = trunc(v0);
	w0 = ((NU64) (T2_));
	v1 = ldexp(((NF)(v0) - (NF)(((NF) (w0)))), ((int) 50));
	T3_ = (NF)0;
	T3_ = trunc(v1);
	w1 = ((NU64) (T3_));
	v2 = ldexp(((NF)(v1) - (NF)(((NF) (w1)))), ((int) 50));
	T4_ = (NF)0;
	T4_ = trunc(v2);
	w2 = ((NU64) (T4_));
	T5_ = toInt128__int495056_722(w0);
	T6_ = shl__int495056_542(T5_, ((NI) 100));
	T7_ = toInt128__int495056_722(w1);
	T8_ = shl__int495056_542(T7_, ((NI) 50));
	T9_ = bitor__int495056_438(T6_, T8_);
	T10_ = toInt128__int495056_722(w2);
	res = bitor__int495056_438(T9_, T10_);
	{
		if (!isNegative) goto LA13_;
		result = minus___int495056_634(res);
		goto BeforeRet_;
	}
	goto LA11_;
	LA13_: ;
	{
		result = res;
		goto BeforeRet_;
	}
	LA11_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, toInt__int495056_273)(tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ arg) {
	NI result;
	NI32 T1_;
	result = (NI)0;
	T1_ = (NI32)0;
	T1_ = toInt32__int495056_138(arg);
	result = ((NI) (T1_));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lt___int495056_931)(NI64 a, tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ b) {
	NIM_BOOL result;
	tyObject_Int128__ZSLNyYMaD8rorY4HZRFSUQ T1_;
	NI T2_;
	result = (NIM_BOOL)0;
	T1_ = toInt128__int495056_909(a);
	T2_ = (NI)0;
	T2_ = cmp__int495056_385(T1_, b);
	result = (T2_ < ((NI) 0));
	return result;
}
