/* Generated by Nim Compiler v2.2.10 */
/* Compiled for: MacOSX, arm64, clang */
/* Command for C compiler:
   clang -c  -w -ferror-limit=3 -fno-strict-aliasing -pthread -isysroot /Applications/Xcode_16.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -target arm64-apple-darwin24.2.0 -O3   -I/Users/runner/work/nightlies/nightlies/nim-2.2.10/lib -I/Users/runner/work/nightlies/nightlies/nim-2.2.10/dist/atlas/src -o /Users/runner/work/nightlies/nightlies/nim-2.2.10/dist/atlas/.nimcache/@m..@sdist@ssat@ssrc@ssat@ssat.nim.c.o /Users/runner/work/nightlies/nightlies/nim-2.2.10/dist/atlas/.nimcache/@m..@sdist@ssat@ssrc@ssat@ssat.nim.c */
#define NIM_INTBITS 64
#define NIM_EmulateOverflowChecks

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
typedef struct tyObject_Builder__aRB9aAhvvbpkLgriijozD0w tyObject_Builder__aRB9aAhvvbpkLgriijozD0w;
typedef struct tySequence__qwqHTkRvwhrRyENtudHQ7g tySequence__qwqHTkRvwhrRyENtudHQ7g;
typedef struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content tySequence__qwqHTkRvwhrRyENtudHQ7g_Content;
typedef struct tySequence__48JTohSgTy339bRxHzUD8KA tySequence__48JTohSgTy339bRxHzUD8KA;
typedef struct tySequence__48JTohSgTy339bRxHzUD8KA_Content tySequence__48JTohSgTy339bRxHzUD8KA_Content;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
typedef struct tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q;
typedef struct tySequence__YdLNCDKYeipzJx3I8Xw82Q tySequence__YdLNCDKYeipzJx3I8Xw82Q;
typedef struct tySequence__YdLNCDKYeipzJx3I8Xw82Q_Content tySequence__YdLNCDKYeipzJx3I8Xw82Q_Content;
typedef struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ;
typedef struct tyTuple__9a9cKNXc40g5ZcAEJXmiqX9aA tyTuple__9a9cKNXc40g5ZcAEJXmiqX9aA;
typedef struct tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA;
typedef struct tyObject_CatchableError__liO6E8JNJNTVmf9cnXKZiug tyObject_CatchableError__liO6E8JNJNTVmf9cnXKZiug;
typedef struct Exception Exception;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tySequence__3EvzHGO0xyXGnJBUggwfKQ tySequence__3EvzHGO0xyXGnJBUggwfKQ;
typedef struct tySequence__3EvzHGO0xyXGnJBUggwfKQ_Content tySequence__3EvzHGO0xyXGnJBUggwfKQ_Content;
typedef struct tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA;
typedef struct tyObject_GcEnv__1z8AJ0tfLlYlFBizZRHD7A tyObject_GcEnv__1z8AJ0tfLlYlFBizZRHD7A;
typedef struct tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw;
typedef struct tyTuple__N4J9cV4JZGem3ljqqj5rT0Q tyTuple__N4J9cV4JZGem3ljqqj5rT0Q;
typedef struct tyObject_CellSeq__dIiPa2COtDnavhK2KIqxCQ tyObject_CellSeq__dIiPa2COtDnavhK2KIqxCQ;
typedef struct tyTuple__EMes4DT7YbRCwj3TmsFXyA tyTuple__EMes4DT7YbRCwj3TmsFXyA;
typedef struct tyObject_StackTraceEntry__lcKzdyiD6sm3eeh28rx7fw tyObject_StackTraceEntry__lcKzdyiD6sm3eeh28rx7fw;
typedef NU8 tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg;
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
  NI len; tySequence__qwqHTkRvwhrRyENtudHQ7g_Content* p;
};
struct tySequence__48JTohSgTy339bRxHzUD8KA {
  NI len; tySequence__48JTohSgTy339bRxHzUD8KA_Content* p;
};
struct tyObject_Builder__aRB9aAhvvbpkLgriijozD0w {
	tySequence__48JTohSgTy339bRxHzUD8KA f;
	tySequence__qwqHTkRvwhrRyENtudHQ7g toPatch;
};
struct NimStrPayload {
	NI cap;
	NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
	NI len;
	NimStrPayload* p;
};
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (NimStringV2* dest_p0, NI i_p1, void* ClE_0);
void* ClE_0;
} tyProc__5zX7FKCn4nkxSAhey0G8hA;
typedef N_CLOSURE_PTR(void, TM__8ki9bWdrRbfyXE3RKL5JcJA_16) (NimStringV2* dest_p0, NI i_p1);
typedef N_CLOSURE_PTR(void, TM__8ki9bWdrRbfyXE3RKL5JcJA_35) (NimStringV2* dest_p0, NI i_p1, void* ClE_0);
struct tySequence__YdLNCDKYeipzJx3I8Xw82Q {
  NI len; tySequence__YdLNCDKYeipzJx3I8Xw82Q_Content* p;
};
struct tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q {
	tySequence__YdLNCDKYeipzJx3I8Xw82Q x;
	NIM_BOOL invalid;
};
struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ {
	NI Field0;
	NI Field1;
};
struct tyTuple__9a9cKNXc40g5ZcAEJXmiqX9aA {
	tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg Field0;
	tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg Field1;
};
struct TNimTypeV2 {
	void* destructor;
	NI size;
	NI16 align;
	NI16 depth;
	NU32* display;
	void* traceImpl;
	void* typeInfoV1;
	NI flags;
	void* vTable[SEQ_DECL_SIZE];
};
struct RootObj {
	TNimTypeV2* m_type;
};
struct tySequence__3EvzHGO0xyXGnJBUggwfKQ {
  NI len; tySequence__3EvzHGO0xyXGnJBUggwfKQ_Content* p;
};
struct Exception {
	RootObj Sup;
	Exception* parent;
	NCSTRING name;
	NimStringV2 message;
	tySequence__3EvzHGO0xyXGnJBUggwfKQ trace;
	Exception* up;
};
struct tyObject_CatchableError__liO6E8JNJNTVmf9cnXKZiug {
	Exception Sup;
};
struct tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA {
	tyObject_CatchableError__liO6E8JNJNTVmf9cnXKZiug Sup;
};
struct tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA {
	NI rc;
	NI rootIdx;
};
struct tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw {
	NI len;
	NI cap;
	tyTuple__N4J9cV4JZGem3ljqqj5rT0Q* d;
};
struct tyObject_CellSeq__dIiPa2COtDnavhK2KIqxCQ {
	NI len;
	NI cap;
	tyTuple__EMes4DT7YbRCwj3TmsFXyA* d;
};
struct tyObject_GcEnv__1z8AJ0tfLlYlFBizZRHD7A {
	tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw traceStack;
	tyObject_CellSeq__dIiPa2COtDnavhK2KIqxCQ toFree;
	NI freed;
	NI touched;
	NI edges;
	NI rcSum;
	NIM_BOOL keepThreshold;
};
struct tyTuple__N4J9cV4JZGem3ljqqj5rT0Q {
	void** Field0;
	TNimTypeV2* Field1;
};
struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content { NI cap; NI data[SEQ_DECL_SIZE]; };
struct tySequence__48JTohSgTy339bRxHzUD8KA_Content { NI cap; NI32 data[SEQ_DECL_SIZE]; };
struct tySequence__YdLNCDKYeipzJx3I8Xw82Q_Content { NI cap; NU64 data[SEQ_DECL_SIZE]; };
struct tyObject_StackTraceEntry__lcKzdyiD6sm3eeh28rx7fw {
	NCSTRING procname;
	NI line;
	NCSTRING filename;
};
struct tySequence__3EvzHGO0xyXGnJBUggwfKQ_Content { NI cap; tyObject_StackTraceEntry__lcKzdyiD6sm3eeh28rx7fw data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, add__OOZdistZsatZsrcZsatZsat_u528)(tySequence__qwqHTkRvwhrRyENtudHQ7g* x_p0, NI y_p1);
N_LIB_PRIVATE N_NIMCALL(void, add__OOZdistZsatZsrcZsatZsat_u113)(tySequence__48JTohSgTy339bRxHzUD8KA* x_p0, NI32 y_p1);
static N_INLINE(NI32, newOperation__OOZdistZsatZsrcZsatZsat_u68)(tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg k_p0, NI32 val_p1);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, openOpr__OOZdistZsatZsrcZsatZsat_u522)(tyObject_Builder__aRB9aAhvvbpkLgriijozD0w* b_p0, tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg k_p1);
static N_INLINE(NI32, newVar__OOZdistZsatZsrcZsatZsat_u24)(NI32 val_p0);
N_LIB_PRIVATE N_NIMCALL(void, closeOpr__OOZdistZsatZsrcZsatZsat_u557)(tyObject_Builder__aRB9aAhvvbpkLgriijozD0w* b_p0);
N_LIB_PRIVATE N_NIMCALL(void, patch__OOZdistZsatZsrcZsatZsat_u184)(tySequence__48JTohSgTy339bRxHzUD8KA* f_p0, NI pos_p1);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i_p0, NI n_p1);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i_p0, NI64 a_p1, NI64 b_p2);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u95)(NimStringV2 msg_p0);
static N_INLINE(NIM_BOOL, nimSubInt)(NI a_p0, NI b_p1, NI* res_p2);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
static N_INLINE(NI, pop__OOZdistZsatZsrcZsatZsat_u559)(tySequence__qwqHTkRvwhrRyENtudHQ7g* s_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___system_u8541)(NI* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, shrink__OOZdistZsatZsrcZsatZsat_u574)(tySequence__qwqHTkRvwhrRyENtudHQ7g* x_p0, NI newLen_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___OOZdistZsatZsrcZsatZsat_u275)(tySequence__48JTohSgTy339bRxHzUD8KA dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, alignedDealloc)(void* p_p0, NI align_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___OOZdistZsatZsrcZsatZsat_u272)(tySequence__48JTohSgTy339bRxHzUD8KA* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___depgraphs_u12776)(tySequence__qwqHTkRvwhrRyENtudHQ7g dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, toString__OOZdistZsatZsrcZsatZsat_u392)(NimStringV2* dest_p0, tySequence__48JTohSgTy339bRxHzUD8KA f_p1, NI n_p2, tyProc__5zX7FKCn4nkxSAhey0G8hA varRepr_p3);
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);
N_LIB_PRIVATE N_NIMCALL(NI32, varId__OOZdistZsatZsrcZsatZsat_u83)(NI32 a_p0);
static N_INLINE(void, appendString)(NimStringV2* dest_p0, NimStringV2 src_p1);
static N_INLINE(void, copyMem__system_u1755)(void* dest_p0, void* source_p1, NI size_p2);
static N_INLINE(void, nimCopyMem)(void* dest_p0, void* source_p1, NI size_p2);
static N_INLINE(NIM_BOOL, nimAddInt)(NI a_p0, NI b_p1, NI* res_p2);
static N_INLINE(void, nextChild__OOZdistZsatZsrcZsatZsat_u202)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0, NI* pos_p1);
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___OOZdistZsatZsrcZsatZsat_u468)(NimStringV2* dest_p0, NI x_p1);
static N_INLINE(void, addInt__stdZprivateZdigitsutils_u204)(NimStringV2* result_p0, NI x_p1);
N_LIB_PRIVATE N_NIMCALL(void, addInt__stdZprivateZdigitsutils_u187)(NimStringV2* result_p0, NI64 x_p1);
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1);
static N_INLINE(void, nimSetMem__system_u2188)(void* a_p0, int v_p1, NI size_p2);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, satisfiableIter__OOZdistZsatZsrcZsatZsat_u1134)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0, tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q* sout_p1, NI* iters_p2);
N_LIB_PRIVATE N_NIMCALL(NI32, freeVariable__OOZdistZsatZsrcZsatZsat_u734)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___OOZdistZsatZsrcZsatZsatvars_u187)(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q* dest_p0, tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q src_p1);
N_LIB_PRIVATE N_NIMCALL(void, trivialVars__OOZdistZsatZsrcZsatZsat_u1110)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0, NI n_p1, NU64 val_p2, tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q* sol_p3);
N_LIB_PRIVATE N_NIMCALL(void, setVar__OOZdistZsatZsrcZsatZsatvars_u262)(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q* b_p0, NI32 v_p1, NU64 val_p2);
N_LIB_PRIVATE N_NIMCALL(NU64, getVar__OOZdistZsatZsrcZsatZsatvars_u277)(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q b_p0, NI32 v_p1);
static N_INLINE(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ, sons2__OOZdistZsatZsrcZsatZsat_u218)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0, NI n_p1);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eval__OOZdistZsatZsrcZsatZsat_u1065)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0, NI n_p1, tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q s_p2);
static N_INLINE(NIM_BOOL, isTrue__OOZdistZsatZsrcZsatZsatvars_u288)(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q b_p0, NI32 v_p1);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsInvalid__OOZdistZsatZsrcZsatZsatvars_u323)(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q s_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___OOZdistZsatZsrcZsatZsatvars_u193)(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q* dest_p0, tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q src_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___OOZdistZsatZsrcZsatZsatvars_u181)(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___OOZdistZsatZsrcZsatZsatvars_u184)(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q* dest_p0);
N_LIB_PRIVATE N_NIMCALL(tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg, simplify__OOZdistZsatZsrcZsatZsat_u772)(tySequence__48JTohSgTy339bRxHzUD8KA* dest_p0, tySequence__48JTohSgTy339bRxHzUD8KA source_p1, NI n_p2, tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q sol_p3);
static N_INLINE(NI32, falseLit__OOZdistZsatZsrcZsatZsat_u78)(void);
static N_INLINE(NI32, trueLit__OOZdistZsatZsrcZsatZsat_u76)(void);
N_LIB_PRIVATE N_NIMCALL(NI, prepare__OOZdistZsatZsrcZsatZsat_u104)(tySequence__48JTohSgTy339bRxHzUD8KA* dest_p0, tySequence__48JTohSgTy339bRxHzUD8KA source_p1, NI sourcePos_p2);
N_LIB_PRIVATE N_NIMCALL(void, setLen__OOZdistZsatZsrcZsatZsat_u295)(tySequence__48JTohSgTy339bRxHzUD8KA* s_p0, NI newlen_p1);
static N_INLINE(NI32, lit__OOZdistZsatZsrcZsatZsat_u80)(tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg k_p0);
N_LIB_PRIVATE N_NIMCALL(void*, nimNewObj)(NI size_p0, NI alignment_p1);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__OOZdistZsatZsrcZsatZsat_u1991)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___OOZdistZsatZsrcZsatZsat_u1174)(tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA* dest_p0);
static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicDyn)(void* p_p0);
static N_INLINE(NI, minuspercent___system_u813)(NI x_p0, NI y_p1);
N_LIB_PRIVATE N_NOINLINE(void, rememberCycle__system_u3555)(NIM_BOOL isDestroyAction_p0, tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA* s_p1, TNimTypeV2* desc_p2);
N_LIB_PRIVATE N_NIMCALL(void, nimDestroyAndDispose)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___system_u3757)(tySequence__3EvzHGO0xyXGnJBUggwfKQ dest_p0);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqtrace___OOZdistZsatZsrcZsatZsat_u1186)(tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA* dest_p0, void* env_p1);
static N_INLINE(void, nimTraceRefDyn)(void* q_p0, void* env_p1);
static N_INLINE(void, add__system_u3076)(tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw* s_p0, void** c_p1, TNimTypeV2* t_p2);
N_LIB_PRIVATE N_NIMCALL(void, resize__system_u3084)(tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw* s_p0);
static N_INLINE(NI, pluspercent___system_u793)(NI x_p0, NI y_p1);
N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e_p0, NCSTRING ename_p1, NCSTRING procname_p2, NCSTRING filename_p3, NI line_p4);
static const struct {
  NI cap; NIM_CHAR data[29+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_2 = { 29 | NIM_STRLIT_FLAG, "sat.nim(65, 3) `k > VarForm` " };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_3 = {29, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_2};
static const struct {
  NI cap; NIM_CHAR data[61+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_6 = { 61 | NIM_STRLIT_FLAG, "sat.nim(181, 3) `b.toPatch.len == 0` missing `closeOpr` calls" };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_7 = {61, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_6};
static const struct {
  NI cap; NIM_CHAR data[28+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_8 = { 28 | NIM_STRLIT_FLAG, "sat.nim(129, 3) `f.len > 0` " };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_9 = {28, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_8};
static const struct {
  NI cap; NIM_CHAR data[29+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_10 = { 29 | NIM_STRLIT_FLAG, "sat.nim(101, 3) `n.int >= 0` " };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_11 = {29, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_10};
static const struct {
  NI cap; NIM_CHAR data[32+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_12 = { 32 | NIM_STRLIT_FLAG, "sat.nim(102, 3) `n.int < f.len` " };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_13 = {32, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_12};
static const struct {
  NI cap; NIM_CHAR data[35+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_14 = { 35 | NIM_STRLIT_FLAG, "sat.nim(45, 3) `a.kind == VarForm` " };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_15 = {35, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_14};
static const struct {
  NI cap; NIM_CHAR data[2+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_17 = { 2 | NIM_STRLIT_FLAG, "(&" };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_18 = {2, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_17};
static const struct {
  NI cap; NIM_CHAR data[2+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_19 = { 2 | NIM_STRLIT_FLAG, "(|" };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_20 = {2, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_19};
static const struct {
  NI cap; NIM_CHAR data[4+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_21 = { 4 | NIM_STRLIT_FLAG, "(1==" };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_22 = {4, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_21};
static const struct {
  NI cap; NIM_CHAR data[2+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_23 = { 2 | NIM_STRLIT_FLAG, "(~" };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_24 = {2, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_23};
static const struct {
  NI cap; NIM_CHAR data[4+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_25 = { 4 | NIM_STRLIT_FLAG, "(1>=" };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_26 = {4, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_25};
static const struct {
  NI cap; NIM_CHAR data[38+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_27 = { 38 | NIM_STRLIT_FLAG, "sat.nim(120, 11) `false` cannot happen" };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_28 = {38, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_27};
static const struct {
  NI cap; NIM_CHAR data[39+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_29 = { 39 | NIM_STRLIT_FLAG, "sat.nim(80, 3) `f[pos].kind > VarForm` " };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_30 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const struct {
  NI cap; NIM_CHAR data[29+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_43 = { 29 | NIM_STRLIT_FLAG, "sat.nim(340, 3) `n.int >= 0` " };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_44 = {29, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_43};
static const struct {
  NI cap; NIM_CHAR data[32+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_45 = { 32 | NIM_STRLIT_FLAG, "sat.nim(341, 3) `n.int < f.len` " };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_46 = {32, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_45};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_47 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_50 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_53 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_57 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_60 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const struct {
  NI cap; NIM_CHAR data[38+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_64 = { 38 | NIM_STRLIT_FLAG, "sat.nim(372, 11) `false` cannot happen" };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_65 = {38, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_64};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_67 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_70 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_73 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_76 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_81 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_89 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_94 = {39, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_29};
N_LIB_PRIVATE TNimTypeV2 NTIv2__9aocJpvK4mXRG3q1Msby3RA_;
static const struct {
  NI cap; NIM_CHAR data[28+1];
} TM__8ki9bWdrRbfyXE3RKL5JcJA_104 = { 28 | NIM_STRLIT_FLAG, "SAT iteration limit exceeded" };
static const NimStringV2 TM__8ki9bWdrRbfyXE3RKL5JcJA_105 = {28, (NimStrPayload*)&TM__8ki9bWdrRbfyXE3RKL5JcJA_104};
static NIM_CONST tyTuple__9a9cKNXc40g5ZcAEJXmiqX9aA TM__8ki9bWdrRbfyXE3RKL5JcJA_79 = {((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1),
((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0)}
;
static NIM_CONST tyTuple__9a9cKNXc40g5ZcAEJXmiqX9aA TM__8ki9bWdrRbfyXE3RKL5JcJA_80 = {((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0),
((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1)}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4198;
static NIM_CONST NU32 TM__8ki9bWdrRbfyXE3RKL5JcJA_103[4] = {3701606400, 1285336064, 599397120, 2265556480};
N_LIB_PRIVATE TNimTypeV2 NTIv2__9aocJpvK4mXRG3q1Msby3RA_ = {.destructor = (void*)rttiDestroy__OOZdistZsatZsrcZsatZsat_u1991, .size = sizeof(tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA), .align = (NI16) NIM_ALIGNOF(tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA), .depth = 3, .display = TM__8ki9bWdrRbfyXE3RKL5JcJA_103, .traceImpl = (void*)eqtrace___OOZdistZsatZsrcZsatZsat_u1186, .flags = 0};
static N_INLINE(NI32, newOperation__OOZdistZsatZsrcZsatZsat_u68)(tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg k_p0, NI32 val_p1) {
	NI32 result;
	result = (NI32)((NI32)((NU64)(val_p1) << (NU64)(((NI)3) & (32 - 1))) | ((NI32) (k_p0)));
	return result;
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
	NIM_BOOL* result;
	result = (&nimInErrorMode__system_u4198);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, openOpr__OOZdistZsatZsrcZsatZsat_u522)(tyObject_Builder__aRB9aAhvvbpkLgriijozD0w* b_p0, tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg k_p1) {
	NI T1_;
	NI32 T2_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	T1_ = (*b_p0).f.len;
	add__OOZdistZsatZsrcZsatZsat_u528((&(*b_p0).toPatch), T1_);
	T2_ = (NI32)0;
	T2_ = newOperation__OOZdistZsatZsrcZsatZsat_u68(k_p1, ((NI32)0));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	add__OOZdistZsatZsrcZsatZsat_u113((&(*b_p0).f), T2_);
	}BeforeRet_: ;
}
static N_INLINE(NI32, newVar__OOZdistZsatZsrcZsatZsat_u24)(NI32 val_p0) {
	NI32 result;
	result = (NI32)((NI32)((NU64)(val_p0) << (NU64)(((NI)3) & (32 - 1))) | ((NI32)2));
	return result;
}
static N_INLINE(NIM_BOOL, nimSubInt)(NI a_p0, NI b_p1, NI* res_p2) {
	NIM_BOOL result;
	NI r_1;
	result = (NIM_BOOL)0;
	r_1 = ((NI) ((NU)((NU64)(((NU) (a_p0))) - (NU64)(((NU) (b_p1))))));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI)0) <= (NI)(r_1 ^ a_p0));
		if (T3_) goto LA4_;
		T3_ = (((NI)0) <= (NI)(r_1 ^ (NI)((NU64) ~(b_p1))));
LA4_: ;
		if (!T3_) goto LA5_;
		(*res_p2) = r_1;
	}
	goto LA1_;
LA5_: ;
	{
		result = NIM_TRUE;
	}
LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, patch__OOZdistZsatZsrcZsatZsat_u184)(tySequence__48JTohSgTy339bRxHzUD8KA* f_p0, NI pos_p1) {
	NI pos_2;
	tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg k_1;
	NI32 distance_1;
	NI T5_;
	NI TM__8ki9bWdrRbfyXE3RKL5JcJA_4;
	NI32 T6_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	pos_2 = pos_p1;
	if (pos_2 < 0 || pos_2 >= (*f_p0).len){ raiseIndexError2(pos_2,(*f_p0).len-1); goto BeforeRet_;
	}
	if (((NI32)((*f_p0).p->data[pos_2] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)((*f_p0).p->data[pos_2] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)((*f_p0).p->data[pos_2] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
	}
	k_1 = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)((*f_p0).p->data[pos_2] & ((NI32)7))));
	{
		if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < k_1))) goto LA3_;
		failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_3);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA3_: ;
	T5_ = (*f_p0).len;
	if (nimSubInt(T5_, pos_2, &TM__8ki9bWdrRbfyXE3RKL5JcJA_4)) { raiseOverflow(); goto BeforeRet_;
	};
	if (((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_4)) < ((NI32)(-2147483647 -1)) || ((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_4)) > ((NI32)2147483647)){ raiseRangeErrorI((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_4), ((NI32)(-2147483647 -1)), ((NI32)2147483647)); goto BeforeRet_;
	}
	distance_1 = ((NI32) ((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_4)));
	if (pos_2 < 0 || pos_2 >= (*f_p0).len){ raiseIndexError2(pos_2,(*f_p0).len-1); goto BeforeRet_;
	}
	T6_ = (NI32)0;
	T6_ = newOperation__OOZdistZsatZsrcZsatZsat_u68(k_1, distance_1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	(*f_p0).p->data[pos_2] = T6_;
	}BeforeRet_: ;
}
static N_INLINE(NI, pop__OOZdistZsatZsrcZsatZsat_u559)(tySequence__qwqHTkRvwhrRyENtudHQ7g* s_p0) {
	NI result;
	NI L_1;
	NI T1_;
	NI TM__8ki9bWdrRbfyXE3RKL5JcJA_5;
{	result = (NI)0;
	T1_ = (*s_p0).len;
	if (nimSubInt(T1_, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_5)) { raiseOverflow(); goto BeforeRet_;
	};
	L_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_5);
	if (L_1 < 0 || L_1 >= (*s_p0).len){ raiseIndexError2(L_1,(*s_p0).len-1); goto BeforeRet_;
	}
	result = (*s_p0).p->data[L_1];
	eqwasMoved___system_u8541((&(*s_p0).p->data[L_1]));
	if ((L_1) < ((NI)0) || (L_1) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(L_1, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
	}
	shrink__OOZdistZsatZsrcZsatZsat_u574(s_p0, (L_1));
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, closeOpr__OOZdistZsatZsrcZsatZsat_u557)(tyObject_Builder__aRB9aAhvvbpkLgriijozD0w* b_p0) {
	tySequence__48JTohSgTy339bRxHzUD8KA* T1_;
	NI T2_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	T1_ = (tySequence__48JTohSgTy339bRxHzUD8KA*)0;
	T1_ = (&(*b_p0).f);
	T2_ = (NI)0;
	T2_ = pop__OOZdistZsatZsrcZsatZsat_u559((&(*b_p0).toPatch));
	patch__OOZdistZsatZsrcZsatZsat_u184(T1_, T2_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, addNegated__OOZdistZsatZsrcZsatZsat_u652)(tyObject_Builder__aRB9aAhvvbpkLgriijozD0w* b_p0, NI32 a_p1) {
	NI32 T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	openOpr__OOZdistZsatZsrcZsatZsat_u522(b_p0, ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)3));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	T1_ = (NI32)0;
	T1_ = newVar__OOZdistZsatZsrcZsatZsat_u24(a_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	add__OOZdistZsatZsrcZsatZsat_u113((&(*b_p0).f), T1_);
	closeOpr__OOZdistZsatZsrcZsatZsat_u557(b_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, add__OOZdistZsatZsrcZsatZsat_u638)(tyObject_Builder__aRB9aAhvvbpkLgriijozD0w* b_p0, NI32 a_p1) {
	add__OOZdistZsatZsrcZsatZsat_u113((&(*b_p0).f), a_p1);
}
N_LIB_PRIVATE N_NIMCALL(void, add__OOZdistZsatZsrcZsatZsat_u645)(tyObject_Builder__aRB9aAhvvbpkLgriijozD0w* b_p0, NI32 a_p1) {
	NI32 T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	T1_ = (NI32)0;
	T1_ = newVar__OOZdistZsatZsrcZsatZsat_u24(a_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	add__OOZdistZsatZsrcZsatZsat_u113((&(*b_p0).f), T1_);
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___OOZdistZsatZsrcZsatZsat_u275)(tySequence__48JTohSgTy339bRxHzUD8KA dest_p0) {
	if (dest_p0.p && !(dest_p0.p->cap & NIM_STRLIT_FLAG)) {
 alignedDealloc(dest_p0.p, NIM_ALIGNOF(NI32));
}
}
N_LIB_PRIVATE N_NIMCALL(void, eqsink___OOZdistZsatZsrcZsatZsat_u284)(tySequence__48JTohSgTy339bRxHzUD8KA* dest_p0, tySequence__48JTohSgTy339bRxHzUD8KA src_p1) {
	if ((*dest_p0).p != src_p1.p) {	eqdestroy___OOZdistZsatZsrcZsatZsat_u275((*dest_p0));
	}
(*dest_p0).len = src_p1.len; (*dest_p0).p = src_p1.p;
}
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___OOZdistZsatZsrcZsatZsat_u272)(tySequence__48JTohSgTy339bRxHzUD8KA* dest_p0) {
	(*dest_p0).len = 0; (*dest_p0).p = NIM_NIL;
}
N_LIB_PRIVATE N_NIMCALL(tySequence__48JTohSgTy339bRxHzUD8KA, toForm__OOZdistZsatZsrcZsatZsat_u713)(tyObject_Builder__aRB9aAhvvbpkLgriijozD0w* b_p0) {
	tySequence__48JTohSgTy339bRxHzUD8KA result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result.len = 0; result.p = NIM_NIL;
	{
		NI T3_;
		T3_ = (*b_p0).toPatch.len;
		if (!!((T3_ == ((NI)0)))) goto LA4_;
		failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_7);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA4_: ;
	result = (*b_p0).f;
	eqwasMoved___OOZdistZsatZsrcZsatZsat_u272((&(*b_p0).f));
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___depgraphs_u12776)(tySequence__qwqHTkRvwhrRyENtudHQ7g dest_p0) {
	if (dest_p0.p && !(dest_p0.p->cap & NIM_STRLIT_FLAG)) {
 alignedDealloc(dest_p0.p, NIM_ALIGNOF(NI));
}
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___depgraphs_u12757)(tyObject_Builder__aRB9aAhvvbpkLgriijozD0w* dest_p0) {
	eqdestroy___depgraphs_u12776((*dest_p0).toPatch);
	eqdestroy___OOZdistZsatZsrcZsatZsat_u275((*dest_p0).f);
}
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;
}
N_LIB_PRIVATE N_NIMCALL(NI32, varId__OOZdistZsatZsrcZsatZsat_u83)(NI32 a_p0) {
	NI32 result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI32)0;
	{
		if (((NI32)(a_p0 & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(a_p0 & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(a_p0 & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
		}
		if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(a_p0 & ((NI32)7)))) == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2)))) goto LA3_;
		failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_15);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA3_: ;
	result = (NI32)((NI64)(a_p0) >> (NU64)(((NI)3) & (32 - 1)));
	}BeforeRet_: ;
	return result;
}
static N_INLINE(void, nimCopyMem)(void* dest_p0, void* source_p1, NI size_p2) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memcpy(dest_p0, source_p1, ((size_t) (size_p2)));
}
static N_INLINE(void, copyMem__system_u1755)(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_u1755(((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(NIM_BOOL, nimAddInt)(NI a_p0, NI b_p1, NI* res_p2) {
	NIM_BOOL result;
	NI r_1;
	result = (NIM_BOOL)0;
	r_1 = ((NI) ((NU)((NU64)(((NU) (a_p0))) + (NU64)(((NU) (b_p1))))));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI)0) <= (NI)(r_1 ^ a_p0));
		if (T3_) goto LA4_;
		T3_ = (((NI)0) <= (NI)(r_1 ^ b_p1));
LA4_: ;
		if (!T3_) goto LA5_;
		(*res_p2) = r_1;
	}
	goto LA1_;
LA5_: ;
	{
		result = NIM_TRUE;
	}
LA1_: ;
	return result;
}
static N_INLINE(void, nextChild__OOZdistZsatZsrcZsatZsat_u202)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0, NI* pos_p1) {
	NI colontmpD_;
	NI colontmpD__2;
	NI32 x_1;
	NI T1_;
	NI TM__8ki9bWdrRbfyXE3RKL5JcJA_34;
{	colontmpD_ = (NI)0;
	colontmpD__2 = (NI)0;
	if ((*pos_p1) < 0 || (*pos_p1) >= f_p0.len){ raiseIndexError2((*pos_p1),f_p0.len-1); goto BeforeRet_;
	}
	x_1 = f_p0.p->data[(*pos_p1)];
	T1_ = (NI)0;
	{
		if (((NI32)(x_1 & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(x_1 & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(x_1 & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
		}
		if (!(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(x_1 & ((NI32)7)))) <= ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2))) goto LA4_;
		colontmpD_ = ((NI)1);
		T1_ = colontmpD_;
	}
	goto LA2_;
LA4_: ;
	{
		colontmpD__2 = ((NI) ((NI32)((NI64)(x_1) >> (NU64)(((NI)3) & (32 - 1)))));
		T1_ = colontmpD__2;
	}
LA2_: ;
	if (nimAddInt((*pos_p1), T1_, &TM__8ki9bWdrRbfyXE3RKL5JcJA_34)) { raiseOverflow(); goto BeforeRet_;
	};
	(*pos_p1) = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_34);
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, toString__OOZdistZsatZsrcZsatZsat_u392)(NimStringV2* dest_p0, tySequence__48JTohSgTy339bRxHzUD8KA f_p1, NI n_p2, tyProc__5zX7FKCn4nkxSAhey0G8hA varRepr_p3) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	{
		if (!!((((NI)0) <= n_p2))) goto LA3_;
		failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_11);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA3_: ;
	{
		NI T7_;
		T7_ = f_p1.len;
		if (!!((n_p2 < T7_))) goto LA8_;
		failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_13);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA8_: ;
	if (n_p2 < 0 || n_p2 >= f_p1.len){ raiseIndexError2(n_p2,f_p1.len-1); goto BeforeRet_;
	}
	if (((NI32)(f_p1.p->data[n_p2] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p1.p->data[n_p2] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p1.p->data[n_p2] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
	}
	switch (((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p1.p->data[n_p2] & ((NI32)7))))) {
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0):
	{
		nimAddCharV1((&(*dest_p0)), 70);
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1):
	{
		nimAddCharV1((&(*dest_p0)), 84);
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2):
	{
		NI32 T13_;
		if (n_p2 < 0 || n_p2 >= f_p1.len){ raiseIndexError2(n_p2,f_p1.len-1); goto BeforeRet_;
		}
		T13_ = (NI32)0;
		T13_ = varId__OOZdistZsatZsrcZsatZsat_u83(f_p1.p->data[n_p2]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		varRepr_p3.ClE_0? varRepr_p3.ClP_0(dest_p0, ((NI) (T13_)), varRepr_p3.ClE_0):((TM__8ki9bWdrRbfyXE3RKL5JcJA_16)(varRepr_p3.ClP_0))(dest_p0, ((NI) (T13_)));
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	default:
	{
		NI i_1;
		if (n_p2 < 0 || n_p2 >= f_p1.len){ raiseIndexError2(n_p2,f_p1.len-1); goto BeforeRet_;
		}
		if (((NI32)(f_p1.p->data[n_p2] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p1.p->data[n_p2] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p1.p->data[n_p2] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
		}
		switch (((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p1.p->data[n_p2] & ((NI32)7))))) {
		case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)4):
		{
			prepareAdd((&(*dest_p0)), 2);
appendString((&(*dest_p0)), TM__8ki9bWdrRbfyXE3RKL5JcJA_18);
		}
		break;
		case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)5):
		{
			prepareAdd((&(*dest_p0)), 2);
appendString((&(*dest_p0)), TM__8ki9bWdrRbfyXE3RKL5JcJA_20);
		}
		break;
		case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)6):
		{
			prepareAdd((&(*dest_p0)), 4);
appendString((&(*dest_p0)), TM__8ki9bWdrRbfyXE3RKL5JcJA_22);
		}
		break;
		case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)3):
		{
			prepareAdd((&(*dest_p0)), 2);
appendString((&(*dest_p0)), TM__8ki9bWdrRbfyXE3RKL5JcJA_24);
		}
		break;
		case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7):
		{
			prepareAdd((&(*dest_p0)), 4);
appendString((&(*dest_p0)), TM__8ki9bWdrRbfyXE3RKL5JcJA_26);
		}
		break;
		default:
		{
			{
				if (!NIM_TRUE) goto LA23_;
				failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_28);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			}
LA23_: ;
		}
		break;
		}
		i_1 = ((NI)0);
		{
			NI child_1;
			NI pos_1;
			NI last_1;
			NI TM__8ki9bWdrRbfyXE3RKL5JcJA_31;
			NI TM__8ki9bWdrRbfyXE3RKL5JcJA_32;
			child_1 = (NI)0;
			pos_1 = n_p2;
			{
				if (pos_1 < 0 || pos_1 >= f_p1.len){ raiseIndexError2(pos_1,f_p1.len-1); goto BeforeRet_;
				}
				if (((NI32)(f_p1.p->data[pos_1] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p1.p->data[pos_1] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p1.p->data[pos_1] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
				}
				if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p1.p->data[pos_1] & ((NI32)7))))))) goto LA28_;
				failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_30);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			}
LA28_: ;
			if (pos_1 < 0 || pos_1 >= f_p1.len){ raiseIndexError2(pos_1,f_p1.len-1); goto BeforeRet_;
			}
			if (nimAddInt(pos_1, ((NI) ((NI32)((NI64)(f_p1.p->data[pos_1]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_31)) { raiseOverflow(); goto BeforeRet_;
			};
			last_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_31);
			if (nimAddInt(pos_1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_32)) { raiseOverflow(); goto BeforeRet_;
			};
			pos_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_32);
			{
				while (1) {
					NI TM__8ki9bWdrRbfyXE3RKL5JcJA_33;
					if (!(pos_1 < last_1)) goto LA31;
					child_1 = pos_1;
					{
						if (!(((NI)0) < i_1)) goto LA34_;
						nimAddCharV1((&(*dest_p0)), 32);
					}
LA34_: ;
					toString__OOZdistZsatZsrcZsatZsat_u392(dest_p0, f_p1, child_1, varRepr_p3);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					if (nimAddInt(i_1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_33)) { raiseOverflow(); goto BeforeRet_;
					};
					i_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_33);
					nextChild__OOZdistZsatZsrcZsatZsat_u202(f_p1, (&pos_1));
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				} LA31: ;
			}
		}
		nimAddCharV1((&(*dest_p0)), 41);
	}
	break;
	}
	}BeforeRet_: ;
}
static N_INLINE(void, addInt__stdZprivateZdigitsutils_u204)(NimStringV2* result_p0, NI x_p1) {
	addInt__stdZprivateZdigitsutils_u187(result_p0, ((NI64) (x_p1)));
}
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___OOZdistZsatZsrcZsatZsat_u468)(NimStringV2* dest_p0, NI x_p1) {
	nimAddCharV1((&(*dest_p0)), 118);
	addInt__stdZprivateZdigitsutils_u204(dest_p0, x_p1);
}
static N_INLINE(void, nimSetMem__system_u2188)(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_u2188(p_p0, ((int)0), size_p1);
}
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___OOZdistZsatZsrcZsatZsat_u457)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0) {
	NimStringV2 result;
	tyProc__5zX7FKCn4nkxSAhey0G8hA T6_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result.len = 0; result.p = NIM_NIL;
	{
		NI T3_;
		T3_ = f_p0.len;
		if (!!((((NI)0) < T3_))) goto LA4_;
		failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_9);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA4_: ;
	nimZeroMem((void*)(&T6_), sizeof(tyProc__5zX7FKCn4nkxSAhey0G8hA));
	T6_.ClP_0 = ((TM__8ki9bWdrRbfyXE3RKL5JcJA_35) (colonanonymous___OOZdistZsatZsrcZsatZsat_u468)); T6_.ClE_0 = NIM_NIL;
	toString__OOZdistZsatZsrcZsatZsat_u392((&result), f_p0, ((NI)0), T6_);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, maxVariable__OOZdistZsatZsrcZsatZsat_u749)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0) {
	NI result;
	NI TM__8ki9bWdrRbfyXE3RKL5JcJA_37;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = ((NI)-1);
	{
		NI i_1;
		NI colontmp_;
		NI T2_;
		NI i_2;
		i_1 = (NI)0;
		colontmp_ = (NI)0;
		T2_ = f_p0.len;
		colontmp_ = T2_;
		i_2 = ((NI)0);
		{
			while (1) {
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_36;
				if (!(i_2 < colontmp_)) goto LA4;
				i_1 = i_2;
				{
					NI32 T9_;
					if (i_1 < 0 || i_1 >= f_p0.len){ raiseIndexError2(i_1,f_p0.len-1); goto BeforeRet_;
					}
					if (((NI32)(f_p0.p->data[i_1] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[i_1] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[i_1] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[i_1] & ((NI32)7)))) == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2))) goto LA7_;
					if (i_1 < 0 || i_1 >= f_p0.len){ raiseIndexError2(i_1,f_p0.len-1); goto BeforeRet_;
					}
					T9_ = (NI32)0;
					T9_ = varId__OOZdistZsatZsrcZsatZsat_u83(f_p0.p->data[i_1]);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					result = ((result >= ((NI) (T9_))) ? result : ((NI) (T9_)));
				}
LA7_: ;
				if (nimAddInt(i_2, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_36)) { raiseOverflow(); goto BeforeRet_;
				};
				i_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_36);
			} LA4: ;
		}
	}
	if (nimAddInt(result, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_37)) { raiseOverflow(); goto BeforeRet_;
	};
	result = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_37);
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI32, freeVariable__OOZdistZsatZsrcZsatZsat_u734)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0) {
	NI32 result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NI32)0;
	{
		NI i_1;
		NI colontmp_;
		NI T2_;
		NI i_2;
		i_1 = (NI)0;
		colontmp_ = (NI)0;
		T2_ = f_p0.len;
		colontmp_ = T2_;
		i_2 = ((NI)0);
		{
			while (1) {
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_39;
				if (!(i_2 < colontmp_)) goto LA4;
				i_1 = i_2;
				{
					if (i_1 < 0 || i_1 >= f_p0.len){ raiseIndexError2(i_1,f_p0.len-1); goto BeforeRet_;
					}
					if (((NI32)(f_p0.p->data[i_1] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[i_1] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[i_1] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[i_1] & ((NI32)7)))) == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2))) goto LA7_;
					if (i_1 < 0 || i_1 >= f_p0.len){ raiseIndexError2(i_1,f_p0.len-1); goto BeforeRet_;
					}
					result = varId__OOZdistZsatZsrcZsatZsat_u83(f_p0.p->data[i_1]);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					goto BeforeRet_;
				}
LA7_: ;
				if (nimAddInt(i_2, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_39)) { raiseOverflow(); goto BeforeRet_;
				};
				i_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_39);
			} LA4: ;
		}
	}
	result = ((NI32)-1);
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ, sons2__OOZdistZsatZsrcZsatZsat_u218)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0, NI n_p1) {
	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ result;
	NI p_1;
	NI TM__8ki9bWdrRbfyXE3RKL5JcJA_41;
	NI colontmp_;
	NI TM__8ki9bWdrRbfyXE3RKL5JcJA_42;
	NI colontmp__2;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	nimZeroMem((void*)(&result), sizeof(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ));
	if (nimAddInt(n_p1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_41)) { raiseOverflow(); goto BeforeRet_;
	};
	p_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_41);
	nextChild__OOZdistZsatZsrcZsatZsat_u202(f_p0, (&p_1));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	if (nimAddInt(n_p1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_42)) { raiseOverflow(); goto BeforeRet_;
	};
	colontmp_ = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_42);
	colontmp__2 = p_1;
	result.Field0 = colontmp_;
	result.Field1 = colontmp__2;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NIM_BOOL, isTrue__OOZdistZsatZsrcZsatZsatvars_u288)(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q b_p0, NI32 v_p1) {
	NIM_BOOL result;
	NU64 T1_;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	T1_ = (NU64)0;
	T1_ = getVar__OOZdistZsatZsrcZsatZsatvars_u277(b_p0, v_p1);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	result = (T1_ == 1ULL);
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, eval__OOZdistZsatZsrcZsatZsat_u1065)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0, NI n_p1, tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q s_p2) {
	NIM_BOOL result;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	{
		if (!!((((NI)0) <= n_p1))) goto LA3_;
		failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_44);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA3_: ;
	{
		NI T7_;
		T7_ = f_p0.len;
		if (!!((n_p1 < T7_))) goto LA8_;
		failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_46);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA8_: ;
	if (n_p1 < 0 || n_p1 >= f_p0.len){ raiseIndexError2(n_p1,f_p0.len-1); goto BeforeRet_;
	}
	if (((NI32)(f_p0.p->data[n_p1] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[n_p1] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[n_p1] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
	}
	switch (((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[n_p1] & ((NI32)7))))) {
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0):
	{
		result = NIM_FALSE;
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1):
	{
		result = NIM_TRUE;
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2):
	{
		NI32 v_1;
		if (n_p1 < 0 || n_p1 >= f_p0.len){ raiseIndexError2(n_p1,f_p0.len-1); goto BeforeRet_;
		}
		v_1 = varId__OOZdistZsatZsrcZsatZsat_u83(f_p0.p->data[n_p1]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		result = isTrue__OOZdistZsatZsrcZsatZsatvars_u288(s_p2, v_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	default:
	{
		if (n_p1 < 0 || n_p1 >= f_p0.len){ raiseIndexError2(n_p1,f_p0.len-1); goto BeforeRet_;
		}
		if (((NI32)(f_p0.p->data[n_p1] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[n_p1] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[n_p1] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
		}
		switch (((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[n_p1] & ((NI32)7))))) {
		case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)4):
		{
			{
				NI child_1;
				NI pos_1;
				NI last_1;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_48;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_49;
				child_1 = (NI)0;
				pos_1 = n_p1;
				{
					if (pos_1 < 0 || pos_1 >= f_p0.len){ raiseIndexError2(pos_1,f_p0.len-1); goto BeforeRet_;
					}
					if (((NI32)(f_p0.p->data[pos_1] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[pos_1] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[pos_1] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[pos_1] & ((NI32)7))))))) goto LA18_;
					failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_47);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA18_: ;
				if (pos_1 < 0 || pos_1 >= f_p0.len){ raiseIndexError2(pos_1,f_p0.len-1); goto BeforeRet_;
				}
				if (nimAddInt(pos_1, ((NI) ((NI32)((NI64)(f_p0.p->data[pos_1]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_48)) { raiseOverflow(); goto BeforeRet_;
				};
				last_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_48);
				if (nimAddInt(pos_1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_49)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_49);
				{
					while (1) {
						if (!(pos_1 < last_1)) goto LA21;
						child_1 = pos_1;
						{
							NIM_BOOL T24_;
							T24_ = (NIM_BOOL)0;
							T24_ = eval__OOZdistZsatZsrcZsatZsat_u1065(f_p0, child_1, s_p2);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							if (!!(T24_)) goto LA25_;
							result = NIM_FALSE;
							goto BeforeRet_;
						}
LA25_: ;
						nextChild__OOZdistZsatZsrcZsatZsat_u202(f_p0, (&pos_1));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					} LA21: ;
				}
			}
			result = NIM_TRUE;
			goto BeforeRet_;
		}
		break;
		case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)5):
		{
			{
				NI child_2;
				NI pos_2;
				NI last_2;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_51;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_52;
				child_2 = (NI)0;
				pos_2 = n_p1;
				{
					if (pos_2 < 0 || pos_2 >= f_p0.len){ raiseIndexError2(pos_2,f_p0.len-1); goto BeforeRet_;
					}
					if (((NI32)(f_p0.p->data[pos_2] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[pos_2] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[pos_2] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[pos_2] & ((NI32)7))))))) goto LA31_;
					failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_50);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA31_: ;
				if (pos_2 < 0 || pos_2 >= f_p0.len){ raiseIndexError2(pos_2,f_p0.len-1); goto BeforeRet_;
				}
				if (nimAddInt(pos_2, ((NI) ((NI32)((NI64)(f_p0.p->data[pos_2]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_51)) { raiseOverflow(); goto BeforeRet_;
				};
				last_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_51);
				if (nimAddInt(pos_2, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_52)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_52);
				{
					while (1) {
						if (!(pos_2 < last_2)) goto LA34;
						child_2 = pos_2;
						{
							NIM_BOOL T37_;
							T37_ = (NIM_BOOL)0;
							T37_ = eval__OOZdistZsatZsrcZsatZsat_u1065(f_p0, child_2, s_p2);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							if (!T37_) goto LA38_;
							result = NIM_TRUE;
							goto BeforeRet_;
						}
LA38_: ;
						nextChild__OOZdistZsatZsrcZsatZsat_u202(f_p0, (&pos_2));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					} LA34: ;
				}
			}
			result = NIM_FALSE;
			goto BeforeRet_;
		}
		break;
		case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)6):
		{
			NI conds_1;
			conds_1 = ((NI)0);
			{
				NI child_3;
				NI pos_3;
				NI last_3;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_54;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_55;
				child_3 = (NI)0;
				pos_3 = n_p1;
				{
					if (pos_3 < 0 || pos_3 >= f_p0.len){ raiseIndexError2(pos_3,f_p0.len-1); goto BeforeRet_;
					}
					if (((NI32)(f_p0.p->data[pos_3] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[pos_3] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[pos_3] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[pos_3] & ((NI32)7))))))) goto LA44_;
					failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_53);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA44_: ;
				if (pos_3 < 0 || pos_3 >= f_p0.len){ raiseIndexError2(pos_3,f_p0.len-1); goto BeforeRet_;
				}
				if (nimAddInt(pos_3, ((NI) ((NI32)((NI64)(f_p0.p->data[pos_3]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_54)) { raiseOverflow(); goto BeforeRet_;
				};
				last_3 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_54);
				if (nimAddInt(pos_3, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_55)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_3 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_55);
				{
					while (1) {
						if (!(pos_3 < last_3)) goto LA47;
						child_3 = pos_3;
						{
							NIM_BOOL T50_;
							NI TM__8ki9bWdrRbfyXE3RKL5JcJA_56;
							T50_ = (NIM_BOOL)0;
							T50_ = eval__OOZdistZsatZsrcZsatZsat_u1065(f_p0, child_3, s_p2);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							if (!T50_) goto LA51_;
							if (nimAddInt(conds_1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_56)) { raiseOverflow(); goto BeforeRet_;
							};
							conds_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_56);
						}
LA51_: ;
						nextChild__OOZdistZsatZsrcZsatZsat_u202(f_p0, (&pos_3));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					} LA47: ;
				}
			}
			result = (conds_1 == ((NI)1));
		}
		break;
		case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)3):
		{
			{
				NI child_4;
				NI pos_4;
				NI last_4;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_58;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_59;
				child_4 = (NI)0;
				pos_4 = n_p1;
				{
					if (pos_4 < 0 || pos_4 >= f_p0.len){ raiseIndexError2(pos_4,f_p0.len-1); goto BeforeRet_;
					}
					if (((NI32)(f_p0.p->data[pos_4] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[pos_4] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[pos_4] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[pos_4] & ((NI32)7))))))) goto LA57_;
					failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_57);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA57_: ;
				if (pos_4 < 0 || pos_4 >= f_p0.len){ raiseIndexError2(pos_4,f_p0.len-1); goto BeforeRet_;
				}
				if (nimAddInt(pos_4, ((NI) ((NI32)((NI64)(f_p0.p->data[pos_4]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_58)) { raiseOverflow(); goto BeforeRet_;
				};
				last_4 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_58);
				if (nimAddInt(pos_4, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_59)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_4 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_59);
				{
					while (1) {
						if (!(pos_4 < last_4)) goto LA60;
						child_4 = pos_4;
						{
							NIM_BOOL T63_;
							T63_ = (NIM_BOOL)0;
							T63_ = eval__OOZdistZsatZsrcZsatZsat_u1065(f_p0, child_4, s_p2);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							if (!!(T63_)) goto LA64_;
							result = NIM_TRUE;
							goto BeforeRet_;
						}
LA64_: ;
						nextChild__OOZdistZsatZsrcZsatZsat_u202(f_p0, (&pos_4));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					} LA60: ;
				}
			}
			result = NIM_FALSE;
			goto BeforeRet_;
		}
		break;
		case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7):
		{
			NI conds_2;
			conds_2 = ((NI)0);
			{
				NI child_5;
				NI pos_5;
				NI last_5;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_61;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_62;
				child_5 = (NI)0;
				pos_5 = n_p1;
				{
					if (pos_5 < 0 || pos_5 >= f_p0.len){ raiseIndexError2(pos_5,f_p0.len-1); goto BeforeRet_;
					}
					if (((NI32)(f_p0.p->data[pos_5] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[pos_5] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[pos_5] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[pos_5] & ((NI32)7))))))) goto LA70_;
					failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_60);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA70_: ;
				if (pos_5 < 0 || pos_5 >= f_p0.len){ raiseIndexError2(pos_5,f_p0.len-1); goto BeforeRet_;
				}
				if (nimAddInt(pos_5, ((NI) ((NI32)((NI64)(f_p0.p->data[pos_5]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_61)) { raiseOverflow(); goto BeforeRet_;
				};
				last_5 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_61);
				if (nimAddInt(pos_5, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_62)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_5 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_62);
				{
					while (1) {
						if (!(pos_5 < last_5)) goto LA73;
						child_5 = pos_5;
						{
							NIM_BOOL T76_;
							NI TM__8ki9bWdrRbfyXE3RKL5JcJA_63;
							T76_ = (NIM_BOOL)0;
							T76_ = eval__OOZdistZsatZsrcZsatZsat_u1065(f_p0, child_5, s_p2);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							if (!T76_) goto LA77_;
							if (nimAddInt(conds_2, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_63)) { raiseOverflow(); goto BeforeRet_;
							};
							conds_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_63);
						}
LA77_: ;
						nextChild__OOZdistZsatZsrcZsatZsat_u202(f_p0, (&pos_5));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					} LA73: ;
				}
			}
			result = (conds_2 <= ((NI)1));
		}
		break;
		default:
		{
			{
				if (!NIM_TRUE) goto LA82_;
				failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_65);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			}
LA82_: ;
		}
		break;
		}
	}
	break;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, trivialVars__OOZdistZsatZsrcZsatZsat_u1110)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0, NI n_p1, NU64 val_p2, tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q* sol_p3) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	if (n_p1 < 0 || n_p1 >= f_p0.len){ raiseIndexError2(n_p1,f_p0.len-1); goto BeforeRet_;
	}
	if (((NI32)(f_p0.p->data[n_p1] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[n_p1] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[n_p1] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
	}
	switch (((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[n_p1] & ((NI32)7))))) {
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0):
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1):
	{
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2):
	{
		NI32 v_1;
		NU64 T3_;
		if (n_p1 < 0 || n_p1 >= f_p0.len){ raiseIndexError2(n_p1,f_p0.len-1); goto BeforeRet_;
		}
		v_1 = varId__OOZdistZsatZsrcZsatZsat_u83(f_p0.p->data[n_p1]);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		T3_ = (NU64)0;
		T3_ = getVar__OOZdistZsatZsrcZsatZsatvars_u277((*sol_p3), v_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		setVar__OOZdistZsatZsrcZsatZsatvars_u262(sol_p3, v_1, (NU64)(val_p2 | T3_));
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)3):
	{
		NU64 colontmpD_;
		NU64 colontmpD__2;
		NU64 newVal_1;
		NI TM__8ki9bWdrRbfyXE3RKL5JcJA_40;
		colontmpD_ = (NU64)0;
		colontmpD__2 = (NU64)0;
		{
			if (!(val_p2 == 2ULL)) goto LA7_;
			colontmpD_ = 1ULL;
			newVal_1 = colontmpD_;
		}
		goto LA5_;
LA7_: ;
		{
			colontmpD__2 = 2ULL;
			newVal_1 = colontmpD__2;
		}
LA5_: ;
		if (nimAddInt(n_p1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_40)) { raiseOverflow(); goto BeforeRet_;
		};
		trivialVars__OOZdistZsatZsrcZsatZsat_u1110(f_p0, (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_40), newVal_1, sol_p3);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)5):
	{
		{
			tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tmpTuple_1;
			NI a_1;
			NI b_1;
			if (!(val_p2 == 1ULL)) goto LA13_;
			tmpTuple_1 = sons2__OOZdistZsatZsrcZsatZsat_u218(f_p0, n_p1);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			a_1 = tmpTuple_1.Field0;
			b_1 = tmpTuple_1.Field1;
			{
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_66;
				NIM_BOOL T17_;
				if (nimAddInt(a_1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_66)) { raiseOverflow(); goto BeforeRet_;
				};
				T17_ = (NIM_BOOL)0;
				T17_ = eval__OOZdistZsatZsrcZsatZsat_u1065(f_p0, (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_66), (*sol_p3));
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				if (!T17_) goto LA18_;
				trivialVars__OOZdistZsatZsrcZsatZsat_u1110(f_p0, b_1, 1ULL, sol_p3);
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			}
LA18_: ;
		}
LA13_: ;
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)4):
	{
		{
			if (!(val_p2 == 1ULL)) goto LA23_;
			{
				NI child_1;
				NI pos_1;
				NI last_1;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_68;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_69;
				child_1 = (NI)0;
				pos_1 = n_p1;
				{
					if (pos_1 < 0 || pos_1 >= f_p0.len){ raiseIndexError2(pos_1,f_p0.len-1); goto BeforeRet_;
					}
					if (((NI32)(f_p0.p->data[pos_1] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[pos_1] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[pos_1] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[pos_1] & ((NI32)7))))))) goto LA28_;
					failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_67);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA28_: ;
				if (pos_1 < 0 || pos_1 >= f_p0.len){ raiseIndexError2(pos_1,f_p0.len-1); goto BeforeRet_;
				}
				if (nimAddInt(pos_1, ((NI) ((NI32)((NI64)(f_p0.p->data[pos_1]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_68)) { raiseOverflow(); goto BeforeRet_;
				};
				last_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_68);
				if (nimAddInt(pos_1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_69)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_69);
				{
					while (1) {
						if (!(pos_1 < last_1)) goto LA31;
						child_1 = pos_1;
						trivialVars__OOZdistZsatZsrcZsatZsat_u1110(f_p0, child_1, val_p2, sol_p3);
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						nextChild__OOZdistZsatZsrcZsatZsat_u202(f_p0, (&pos_1));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					} LA31: ;
				}
			}
		}
LA23_: ;
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)6):
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7):
	{
		{
			NI trueAt_1;
			if (!(val_p2 == 1ULL)) goto LA35_;
			trueAt_1 = ((NI)-1);
			{
				NI ch_1;
				NI pos_2;
				NI last_2;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_71;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_72;
				ch_1 = (NI)0;
				pos_2 = n_p1;
				{
					if (pos_2 < 0 || pos_2 >= f_p0.len){ raiseIndexError2(pos_2,f_p0.len-1); goto BeforeRet_;
					}
					if (((NI32)(f_p0.p->data[pos_2] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[pos_2] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[pos_2] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[pos_2] & ((NI32)7))))))) goto LA40_;
					failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_70);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA40_: ;
				if (pos_2 < 0 || pos_2 >= f_p0.len){ raiseIndexError2(pos_2,f_p0.len-1); goto BeforeRet_;
				}
				if (nimAddInt(pos_2, ((NI) ((NI32)((NI64)(f_p0.p->data[pos_2]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_71)) { raiseOverflow(); goto BeforeRet_;
				};
				last_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_71);
				if (nimAddInt(pos_2, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_72)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_72);
				{
					while (1) {
						if (!(pos_2 < last_2)) goto LA43;
						ch_1 = pos_2;
						{
							NI32 v_2;
							if (ch_1 < 0 || ch_1 >= f_p0.len){ raiseIndexError2(ch_1,f_p0.len-1); goto BeforeRet_;
							}
							if (((NI32)(f_p0.p->data[ch_1] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[ch_1] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[ch_1] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
							}
							if (!(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[ch_1] & ((NI32)7)))) == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2))) goto LA46_;
							if (ch_1 < 0 || ch_1 >= f_p0.len){ raiseIndexError2(ch_1,f_p0.len-1); goto BeforeRet_;
							}
							v_2 = varId__OOZdistZsatZsrcZsatZsat_u83(f_p0.p->data[ch_1]);
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
							{
								NU64 T50_;
								T50_ = (NU64)0;
								T50_ = getVar__OOZdistZsatZsrcZsatZsatvars_u277((*sol_p3), v_2);
								if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
								if (!(T50_ == 1ULL)) goto LA51_;
								trueAt_1 = ch_1;
							}
LA51_: ;
						}
LA46_: ;
						nextChild__OOZdistZsatZsrcZsatZsat_u202(f_p0, (&pos_2));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					} LA43: ;
				}
			}
			{
				if (!(((NI)0) <= trueAt_1)) goto LA55_;
				{
					NI ch_2;
					NI pos_3;
					NI last_3;
					NI TM__8ki9bWdrRbfyXE3RKL5JcJA_74;
					NI TM__8ki9bWdrRbfyXE3RKL5JcJA_75;
					ch_2 = (NI)0;
					pos_3 = n_p1;
					{
						if (pos_3 < 0 || pos_3 >= f_p0.len){ raiseIndexError2(pos_3,f_p0.len-1); goto BeforeRet_;
						}
						if (((NI32)(f_p0.p->data[pos_3] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[pos_3] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[pos_3] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
						}
						if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[pos_3] & ((NI32)7))))))) goto LA60_;
						failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_73);
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					}
LA60_: ;
					if (pos_3 < 0 || pos_3 >= f_p0.len){ raiseIndexError2(pos_3,f_p0.len-1); goto BeforeRet_;
					}
					if (nimAddInt(pos_3, ((NI) ((NI32)((NI64)(f_p0.p->data[pos_3]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_74)) { raiseOverflow(); goto BeforeRet_;
					};
					last_3 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_74);
					if (nimAddInt(pos_3, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_75)) { raiseOverflow(); goto BeforeRet_;
					};
					pos_3 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_75);
					{
						while (1) {
							if (!(pos_3 < last_3)) goto LA63;
							ch_2 = pos_3;
							{
								NI32 v_3;
								if (ch_2 < 0 || ch_2 >= f_p0.len){ raiseIndexError2(ch_2,f_p0.len-1); goto BeforeRet_;
								}
								if (((NI32)(f_p0.p->data[ch_2] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[ch_2] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[ch_2] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
								}
								if (!(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[ch_2] & ((NI32)7)))) == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2))) goto LA66_;
								if (ch_2 < 0 || ch_2 >= f_p0.len){ raiseIndexError2(ch_2,f_p0.len-1); goto BeforeRet_;
								}
								v_3 = varId__OOZdistZsatZsrcZsatZsat_u83(f_p0.p->data[ch_2]);
								if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
								{
									NU64 T72_;
									if (!!((ch_2 == trueAt_1))) goto LA70_;
									T72_ = (NU64)0;
									T72_ = getVar__OOZdistZsatZsrcZsatZsatvars_u277((*sol_p3), v_3);
									if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
									setVar__OOZdistZsatZsrcZsatZsatvars_u262(sol_p3, v_3, (NU64)(2ULL | T72_));
									if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
								}
LA70_: ;
							}
LA66_: ;
							nextChild__OOZdistZsatZsrcZsatZsat_u202(f_p0, (&pos_3));
							if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						} LA63: ;
					}
				}
			}
LA55_: ;
		}
LA35_: ;
	}
	break;
	default: __builtin_unreachable();
	}
	}BeforeRet_: ;
}
static N_INLINE(NI32, falseLit__OOZdistZsatZsrcZsatZsat_u78)(void) {
	NI32 result;
	result = ((NI32)0);
	return result;
}
static N_INLINE(NI32, trueLit__OOZdistZsatZsrcZsatZsat_u76)(void) {
	NI32 result;
	result = ((NI32)1);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, prepare__OOZdistZsatZsrcZsatZsat_u104)(tySequence__48JTohSgTy339bRxHzUD8KA* dest_p0, tySequence__48JTohSgTy339bRxHzUD8KA source_p1, NI sourcePos_p2) {
	NI result;
	NI T1_;
{	T1_ = (*dest_p0).len;
	result = T1_;
	if (sourcePos_p2 < 0 || sourcePos_p2 >= source_p1.len){ raiseIndexError2(sourcePos_p2,source_p1.len-1); goto BeforeRet_;
	}
	add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), source_p1.p->data[sourcePos_p2]);
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI32, lit__OOZdistZsatZsrcZsatZsat_u80)(tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg k_p0) {
	NI32 result;
	result = ((NI32) (k_p0));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg, simplify__OOZdistZsatZsrcZsatZsat_u772)(tySequence__48JTohSgTy339bRxHzUD8KA* dest_p0, tySequence__48JTohSgTy339bRxHzUD8KA source_p1, NI n_p2, tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q sol_p3) {
	tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg result;
	NI32 s_1;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0;
	if (n_p2 < 0 || n_p2 >= source_p1.len){ raiseIndexError2(n_p2,source_p1.len-1); goto BeforeRet_;
	}
	s_1 = source_p1.p->data[n_p2];
	if (((NI32)(s_1 & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(s_1 & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(s_1 & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
	}
	result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(s_1 & ((NI32)7))));
	switch (result) {
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0):
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1):
	{
		add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), s_1);
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2):
	{
		NU64 v_1;
		NI32 T3_;
		T3_ = (NI32)0;
		T3_ = varId__OOZdistZsatZsrcZsatZsat_u83(s_1);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		v_1 = getVar__OOZdistZsatZsrcZsatZsatvars_u277(sol_p3, T3_);
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		switch (v_1) {
		case 2ULL:
		{
			NI32 T5_;
			T5_ = (NI32)0;
			T5_ = falseLit__OOZdistZsatZsrcZsatZsat_u78();
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T5_);
			result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0);
		}
		break;
		case 1ULL:
		{
			NI32 T7_;
			T7_ = (NI32)0;
			T7_ = trueLit__OOZdistZsatZsrcZsatZsat_u76();
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T7_);
			result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1);
		}
		break;
		default:
		{
			add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), s_1);
		}
		break;
		}
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)3):
	{
		NI oldLen_1;
		NI T10_;
		tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg inner_1;
		T10_ = (*dest_p0).len;
		oldLen_1 = T10_;
		inner_1 = (tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0;
		{
			NI child_1;
			NI patchPos_1;
			child_1 = (NI)0;
			patchPos_1 = prepare__OOZdistZsatZsrcZsatZsat_u104(dest_p0, source_p1, n_p2);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			{
				NI x_1;
				NI pos_1;
				NI last_1;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_77;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_78;
				x_1 = (NI)0;
				pos_1 = n_p2;
				{
					if (pos_1 < 0 || pos_1 >= source_p1.len){ raiseIndexError2(pos_1,source_p1.len-1); goto BeforeRet_;
					}
					if (((NI32)(source_p1.p->data[pos_1] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(source_p1.p->data[pos_1] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(source_p1.p->data[pos_1] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(source_p1.p->data[pos_1] & ((NI32)7))))))) goto LA15_;
					failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_76);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA15_: ;
				if (pos_1 < 0 || pos_1 >= source_p1.len){ raiseIndexError2(pos_1,source_p1.len-1); goto BeforeRet_;
				}
				if (nimAddInt(pos_1, ((NI) ((NI32)((NI64)(source_p1.p->data[pos_1]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_77)) { raiseOverflow(); goto BeforeRet_;
				};
				last_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_77);
				if (nimAddInt(pos_1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_78)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_78);
				{
					while (1) {
						if (!(pos_1 < last_1)) goto LA18;
						x_1 = pos_1;
						child_1 = x_1;
						inner_1 = simplify__OOZdistZsatZsrcZsatZsat_u772(dest_p0, source_p1, child_1, sol_p3);
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						nextChild__OOZdistZsatZsrcZsatZsat_u202(source_p1, (&pos_1));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					} LA18: ;
				}
			}
			patch__OOZdistZsatZsrcZsatZsat_u184(dest_p0, patchPos_1);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
		{
			tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg T23_;
			NI32 T29_;
			if (!(inner_1 == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || inner_1 == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1))) goto LA21_;
			if ((oldLen_1) < ((NI)0) || (oldLen_1) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(oldLen_1, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
			}
			setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), (oldLen_1));
			T23_ = (tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0;
			{
				if (!(inner_1 == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0))) goto LA26_;
				result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1);
			}
			goto LA24_;
LA26_: ;
			{
				result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0);
			}
LA24_: ;
			T29_ = (NI32)0;
			T29_ = lit__OOZdistZsatZsrcZsatZsat_u80(result);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T29_);
		}
LA21_: ;
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)4):
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)5):
	{
		tyTuple__9a9cKNXc40g5ZcAEJXmiqX9aA colontmpD_;
		tyTuple__9a9cKNXc40g5ZcAEJXmiqX9aA colontmpD__2;
		tyTuple__9a9cKNXc40g5ZcAEJXmiqX9aA tmpTuple_1;
		tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg tForm_1;
		tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg fForm_1;
		NI initialLen_1;
		NI T36_;
		NI childCount_1;
		nimZeroMem((void*)(&colontmpD_), sizeof(tyTuple__9a9cKNXc40g5ZcAEJXmiqX9aA));
		nimZeroMem((void*)(&colontmpD__2), sizeof(tyTuple__9a9cKNXc40g5ZcAEJXmiqX9aA));
		{
			if (!(result == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)4))) goto LA33_;
			colontmpD_ = TM__8ki9bWdrRbfyXE3RKL5JcJA_79;
			tmpTuple_1 = colontmpD_;
		}
		goto LA31_;
LA33_: ;
		{
			colontmpD__2 = TM__8ki9bWdrRbfyXE3RKL5JcJA_80;
			tmpTuple_1 = colontmpD__2;
		}
LA31_: ;
		tForm_1 = tmpTuple_1.Field0;
		fForm_1 = tmpTuple_1.Field1;
		T36_ = (*dest_p0).len;
		initialLen_1 = T36_;
		childCount_1 = ((NI)0);
		{
			NI child_2;
			NI patchPos_2;
			child_2 = (NI)0;
			patchPos_2 = prepare__OOZdistZsatZsrcZsatZsat_u104(dest_p0, source_p1, n_p2);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			{
				NI x_2;
				NI pos_2;
				NI last_2;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_82;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_83;
				x_2 = (NI)0;
				pos_2 = n_p2;
				{
					if (pos_2 < 0 || pos_2 >= source_p1.len){ raiseIndexError2(pos_2,source_p1.len-1); goto BeforeRet_;
					}
					if (((NI32)(source_p1.p->data[pos_2] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(source_p1.p->data[pos_2] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(source_p1.p->data[pos_2] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(source_p1.p->data[pos_2] & ((NI32)7))))))) goto LA41_;
					failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_81);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA41_: ;
				if (pos_2 < 0 || pos_2 >= source_p1.len){ raiseIndexError2(pos_2,source_p1.len-1); goto BeforeRet_;
				}
				if (nimAddInt(pos_2, ((NI) ((NI32)((NI64)(source_p1.p->data[pos_2]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_82)) { raiseOverflow(); goto BeforeRet_;
				};
				last_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_82);
				if (nimAddInt(pos_2, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_83)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_83);
				{
					while (1) {
						NI oldLen_2;
						NI T45_;
						tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg inner_2;
						if (!(pos_2 < last_2)) goto LA44;
						x_2 = pos_2;
						child_2 = x_2;
						T45_ = (*dest_p0).len;
						oldLen_2 = T45_;
						inner_2 = simplify__OOZdistZsatZsrcZsatZsat_u772(dest_p0, source_p1, child_2, sol_p3);
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						{
							if (!(inner_2 == tForm_1)) goto LA48_;
							if ((oldLen_2) < ((NI)0) || (oldLen_2) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(oldLen_2, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
							}
							setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), (oldLen_2));
						}
						goto LA46_;
LA48_: ;
						{
							if (!(inner_2 == fForm_1)) goto LA51_;
							result = fForm_1;
							goto LA37;
						}
						goto LA46_;
LA51_: ;
						{
							NI TM__8ki9bWdrRbfyXE3RKL5JcJA_84;
							if (nimAddInt(childCount_1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_84)) { raiseOverflow(); goto BeforeRet_;
							};
							childCount_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_84);
						}
LA46_: ;
						nextChild__OOZdistZsatZsrcZsatZsat_u202(source_p1, (&pos_2));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					} LA44: ;
				}
			}
			patch__OOZdistZsatZsrcZsatZsat_u184(dest_p0, patchPos_2);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		} LA37: ;
		{
			NI32 T58_;
			if (!(result == fForm_1)) goto LA56_;
			if ((initialLen_1) < ((NI)0) || (initialLen_1) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(initialLen_1, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
			}
			setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), (initialLen_1));
			T58_ = (NI32)0;
			T58_ = lit__OOZdistZsatZsrcZsatZsat_u80(result);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T58_);
		}
		goto LA54_;
LA56_: ;
		{
			NI T66_;
			NI TM__8ki9bWdrRbfyXE3RKL5JcJA_88;
			if (!(childCount_1 == ((NI)1))) goto LA60_;
			{
				NI i_1;
				NI colontmp_;
				NI T63_;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_85;
				NI i_2;
				i_1 = (NI)0;
				colontmp_ = (NI)0;
				T63_ = (*dest_p0).len;
				if (nimSubInt(T63_, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_85)) { raiseOverflow(); goto BeforeRet_;
				};
				colontmp_ = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_85);
				i_2 = initialLen_1;
				{
					while (1) {
						NI TM__8ki9bWdrRbfyXE3RKL5JcJA_86;
						NI TM__8ki9bWdrRbfyXE3RKL5JcJA_87;
						if (!(i_2 < colontmp_)) goto LA65;
						i_1 = i_2;
						if (i_1 < 0 || i_1 >= (*dest_p0).len){ raiseIndexError2(i_1,(*dest_p0).len-1); goto BeforeRet_;
						}
						if (nimAddInt(i_1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_86)) { raiseOverflow(); goto BeforeRet_;
						};
						if ((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_86) < 0 || (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_86) >= (*dest_p0).len){ raiseIndexError2((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_86),(*dest_p0).len-1); goto BeforeRet_;
						}
						(*dest_p0).p->data[i_1] = (*dest_p0).p->data[(NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_86)];
						if (nimAddInt(i_2, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_87)) { raiseOverflow(); goto BeforeRet_;
						};
						i_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_87);
					} LA65: ;
				}
			}
			T66_ = (*dest_p0).len;
			if (nimSubInt(T66_, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_88)) { raiseOverflow(); goto BeforeRet_;
			};
			if (((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_88)) < ((NI)0) || ((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_88)) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_88), ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
			}
			setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), ((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_88)));
			if (initialLen_1 < 0 || initialLen_1 >= (*dest_p0).len){ raiseIndexError2(initialLen_1,(*dest_p0).len-1); goto BeforeRet_;
			}
			if (((NI32)((*dest_p0).p->data[initialLen_1] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)((*dest_p0).p->data[initialLen_1] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)((*dest_p0).p->data[initialLen_1] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
			}
			result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)((*dest_p0).p->data[initialLen_1] & ((NI32)7))));
		}
		goto LA54_;
LA60_: ;
		{
			NI32 T70_;
			if (!(childCount_1 == ((NI)0))) goto LA68_;
			if ((initialLen_1) < ((NI)0) || (initialLen_1) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(initialLen_1, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
			}
			setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), (initialLen_1));
			result = tForm_1;
			T70_ = (NI32)0;
			T70_ = lit__OOZdistZsatZsrcZsatZsat_u80(result);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T70_);
		}
		goto LA54_;
LA68_: ;
LA54_: ;
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7):
	{
		NI initialLen_2;
		NI T72_;
		NI childCount_2;
		NI trueCount_1;
		T72_ = (*dest_p0).len;
		initialLen_2 = T72_;
		childCount_2 = ((NI)0);
		trueCount_1 = ((NI)0);
		{
			NI child_3;
			NI patchPos_3;
			child_3 = (NI)0;
			patchPos_3 = prepare__OOZdistZsatZsrcZsatZsat_u104(dest_p0, source_p1, n_p2);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			{
				NI x_3;
				NI pos_3;
				NI last_3;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_90;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_91;
				x_3 = (NI)0;
				pos_3 = n_p2;
				{
					if (pos_3 < 0 || pos_3 >= source_p1.len){ raiseIndexError2(pos_3,source_p1.len-1); goto BeforeRet_;
					}
					if (((NI32)(source_p1.p->data[pos_3] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(source_p1.p->data[pos_3] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(source_p1.p->data[pos_3] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(source_p1.p->data[pos_3] & ((NI32)7))))))) goto LA77_;
					failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_89);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA77_: ;
				if (pos_3 < 0 || pos_3 >= source_p1.len){ raiseIndexError2(pos_3,source_p1.len-1); goto BeforeRet_;
				}
				if (nimAddInt(pos_3, ((NI) ((NI32)((NI64)(source_p1.p->data[pos_3]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_90)) { raiseOverflow(); goto BeforeRet_;
				};
				last_3 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_90);
				if (nimAddInt(pos_3, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_91)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_3 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_91);
				{
					while (1) {
						NI oldLen_3;
						NI T81_;
						tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg inner_3;
						if (!(pos_3 < last_3)) goto LA80;
						x_3 = pos_3;
						child_3 = x_3;
						T81_ = (*dest_p0).len;
						oldLen_3 = T81_;
						inner_3 = simplify__OOZdistZsatZsrcZsatZsat_u772(dest_p0, source_p1, child_3, sol_p3);
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						{
							if (!(inner_3 == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0))) goto LA84_;
							if ((oldLen_3) < ((NI)0) || (oldLen_3) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(oldLen_3, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
							}
							setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), (oldLen_3));
						}
						goto LA82_;
LA84_: ;
						{
							NI TM__8ki9bWdrRbfyXE3RKL5JcJA_93;
							{
								NI TM__8ki9bWdrRbfyXE3RKL5JcJA_92;
								if (!(inner_3 == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1))) goto LA89_;
								if (nimAddInt(trueCount_1, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_92)) { raiseOverflow(); goto BeforeRet_;
								};
								trueCount_1 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_92);
							}
LA89_: ;
							if (nimAddInt(childCount_2, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_93)) { raiseOverflow(); goto BeforeRet_;
							};
							childCount_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_93);
						}
LA82_: ;
						nextChild__OOZdistZsatZsrcZsatZsat_u202(source_p1, (&pos_3));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					} LA80: ;
				}
			}
			patch__OOZdistZsatZsrcZsatZsat_u184(dest_p0, patchPos_3);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
		{
			NI32 T95_;
			if (!(((NI)2) <= trueCount_1)) goto LA93_;
			if ((initialLen_2) < ((NI)0) || (initialLen_2) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(initialLen_2, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
			}
			setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), (initialLen_2));
			T95_ = (NI32)0;
			T95_ = lit__OOZdistZsatZsrcZsatZsat_u80(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0));
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T95_);
			result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0);
		}
		goto LA91_;
LA93_: ;
		{
			if (!(trueCount_1 == childCount_2)) goto LA97_;
			if ((initialLen_2) < ((NI)0) || (initialLen_2) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(initialLen_2, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
			}
			setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), (initialLen_2));
			{
				NI32 T103_;
				if (!(trueCount_1 <= ((NI)1))) goto LA101_;
				T103_ = (NI32)0;
				T103_ = lit__OOZdistZsatZsrcZsatZsat_u80(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1));
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T103_);
				result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1);
			}
			goto LA99_;
LA101_: ;
			{
				NI32 T105_;
				T105_ = (NI32)0;
				T105_ = lit__OOZdistZsatZsrcZsatZsat_u80(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0));
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T105_);
				result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0);
			}
LA99_: ;
		}
		goto LA91_;
LA97_: ;
		{
			NI32 T109_;
			if (!(childCount_2 == ((NI)1))) goto LA107_;
			if ((initialLen_2) < ((NI)0) || (initialLen_2) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(initialLen_2, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
			}
			setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), (initialLen_2));
			T109_ = (NI32)0;
			T109_ = lit__OOZdistZsatZsrcZsatZsat_u80(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1));
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T109_);
			result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1);
		}
		goto LA91_;
LA107_: ;
LA91_: ;
	}
	break;
	case ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)6):
	{
		NI initialLen_3;
		NI T111_;
		NI childCount_3;
		NI trueCount_2;
		T111_ = (*dest_p0).len;
		initialLen_3 = T111_;
		childCount_3 = ((NI)0);
		trueCount_2 = ((NI)0);
		{
			NI child_4;
			NI patchPos_4;
			child_4 = (NI)0;
			patchPos_4 = prepare__OOZdistZsatZsrcZsatZsat_u104(dest_p0, source_p1, n_p2);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			{
				NI x_4;
				NI pos_4;
				NI last_4;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_95;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_96;
				x_4 = (NI)0;
				pos_4 = n_p2;
				{
					if (pos_4 < 0 || pos_4 >= source_p1.len){ raiseIndexError2(pos_4,source_p1.len-1); goto BeforeRet_;
					}
					if (((NI32)(source_p1.p->data[pos_4] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(source_p1.p->data[pos_4] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(source_p1.p->data[pos_4] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
					}
					if (!!((((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)2) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(source_p1.p->data[pos_4] & ((NI32)7))))))) goto LA116_;
					failedAssertImpl__stdZassertions_u95(TM__8ki9bWdrRbfyXE3RKL5JcJA_94);
					if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				}
LA116_: ;
				if (pos_4 < 0 || pos_4 >= source_p1.len){ raiseIndexError2(pos_4,source_p1.len-1); goto BeforeRet_;
				}
				if (nimAddInt(pos_4, ((NI) ((NI32)((NI64)(source_p1.p->data[pos_4]) >> (NU64)(((NI)3) & (32 - 1))))), &TM__8ki9bWdrRbfyXE3RKL5JcJA_95)) { raiseOverflow(); goto BeforeRet_;
				};
				last_4 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_95);
				if (nimAddInt(pos_4, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_96)) { raiseOverflow(); goto BeforeRet_;
				};
				pos_4 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_96);
				{
					while (1) {
						NI oldLen_4;
						NI T120_;
						tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg inner_4;
						if (!(pos_4 < last_4)) goto LA119;
						x_4 = pos_4;
						child_4 = x_4;
						T120_ = (*dest_p0).len;
						oldLen_4 = T120_;
						inner_4 = simplify__OOZdistZsatZsrcZsatZsat_u772(dest_p0, source_p1, child_4, sol_p3);
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
						{
							if (!(inner_4 == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0))) goto LA123_;
							if ((oldLen_4) < ((NI)0) || (oldLen_4) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(oldLen_4, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
							}
							setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), (oldLen_4));
						}
						goto LA121_;
LA123_: ;
						{
							NI TM__8ki9bWdrRbfyXE3RKL5JcJA_98;
							{
								NI TM__8ki9bWdrRbfyXE3RKL5JcJA_97;
								if (!(inner_4 == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1))) goto LA128_;
								if (nimAddInt(trueCount_2, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_97)) { raiseOverflow(); goto BeforeRet_;
								};
								trueCount_2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_97);
							}
LA128_: ;
							if (nimAddInt(childCount_3, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_98)) { raiseOverflow(); goto BeforeRet_;
							};
							childCount_3 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_98);
						}
LA121_: ;
						nextChild__OOZdistZsatZsrcZsatZsat_u202(source_p1, (&pos_4));
						if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
					} LA119: ;
				}
			}
			patch__OOZdistZsatZsrcZsatZsat_u184(dest_p0, patchPos_4);
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
		}
		{
			NI32 T134_;
			if (!(((NI)2) <= trueCount_2)) goto LA132_;
			if ((initialLen_3) < ((NI)0) || (initialLen_3) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(initialLen_3, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
			}
			setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), (initialLen_3));
			T134_ = (NI32)0;
			T134_ = lit__OOZdistZsatZsrcZsatZsat_u80(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0));
			if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
			add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T134_);
			result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0);
		}
		goto LA130_;
LA132_: ;
		{
			if (!(trueCount_2 == childCount_3)) goto LA136_;
			if ((initialLen_3) < ((NI)0) || (initialLen_3) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(initialLen_3, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
			}
			setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), (initialLen_3));
			{
				NI32 T142_;
				if (!!((trueCount_2 == ((NI)1)))) goto LA140_;
				T142_ = (NI32)0;
				T142_ = lit__OOZdistZsatZsrcZsatZsat_u80(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0));
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T142_);
				result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0);
			}
			goto LA138_;
LA140_: ;
			{
				NI32 T144_;
				T144_ = (NI32)0;
				T144_ = lit__OOZdistZsatZsrcZsatZsat_u80(((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1));
				if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
				add__OOZdistZsatZsrcZsatZsat_u113((&(*dest_p0)), T144_);
				result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1);
			}
LA138_: ;
		}
		goto LA130_;
LA136_: ;
		{
			NI T152_;
			NI TM__8ki9bWdrRbfyXE3RKL5JcJA_102;
			if (!(childCount_3 == ((NI)1))) goto LA146_;
			{
				NI i_3;
				NI colontmp__2;
				NI T149_;
				NI TM__8ki9bWdrRbfyXE3RKL5JcJA_99;
				NI i_4;
				i_3 = (NI)0;
				colontmp__2 = (NI)0;
				T149_ = (*dest_p0).len;
				if (nimSubInt(T149_, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_99)) { raiseOverflow(); goto BeforeRet_;
				};
				colontmp__2 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_99);
				i_4 = initialLen_3;
				{
					while (1) {
						NI TM__8ki9bWdrRbfyXE3RKL5JcJA_100;
						NI TM__8ki9bWdrRbfyXE3RKL5JcJA_101;
						if (!(i_4 < colontmp__2)) goto LA151;
						i_3 = i_4;
						if (i_3 < 0 || i_3 >= (*dest_p0).len){ raiseIndexError2(i_3,(*dest_p0).len-1); goto BeforeRet_;
						}
						if (nimAddInt(i_3, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_100)) { raiseOverflow(); goto BeforeRet_;
						};
						if ((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_100) < 0 || (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_100) >= (*dest_p0).len){ raiseIndexError2((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_100),(*dest_p0).len-1); goto BeforeRet_;
						}
						(*dest_p0).p->data[i_3] = (*dest_p0).p->data[(NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_100)];
						if (nimAddInt(i_4, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_101)) { raiseOverflow(); goto BeforeRet_;
						};
						i_4 = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_101);
					} LA151: ;
				}
			}
			T152_ = (*dest_p0).len;
			if (nimSubInt(T152_, ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_102)) { raiseOverflow(); goto BeforeRet_;
			};
			if (((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_102)) < ((NI)0) || ((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_102)) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_102), ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
			}
			setLen__OOZdistZsatZsrcZsatZsat_u295((&(*dest_p0)), ((NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_102)));
			if (initialLen_3 < 0 || initialLen_3 >= (*dest_p0).len){ raiseIndexError2(initialLen_3,(*dest_p0).len-1); goto BeforeRet_;
			}
			if (((NI32)((*dest_p0).p->data[initialLen_3] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)((*dest_p0).p->data[initialLen_3] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)((*dest_p0).p->data[initialLen_3] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
			}
			result = ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)((*dest_p0).p->data[initialLen_3] & ((NI32)7))));
		}
		goto LA130_;
LA146_: ;
LA130_: ;
	}
	break;
	default: __builtin_unreachable();
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, satisfiableIter__OOZdistZsatZsrcZsatZsat_u1134)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0, tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q* sout_p1, NI* iters_p2) {
	NIM_BOOL result;
	NI TM__8ki9bWdrRbfyXE3RKL5JcJA_38;
	NI32 v_1;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	{
		if (!((*iters_p2) == ((NI)0))) goto LA3_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
LA3_: ;
	if (nimSubInt((*iters_p2), ((NI)1), &TM__8ki9bWdrRbfyXE3RKL5JcJA_38)) { raiseOverflow(); goto BeforeRet_;
	};
	(*iters_p2) = (NI)(TM__8ki9bWdrRbfyXE3RKL5JcJA_38);
	v_1 = freeVariable__OOZdistZsatZsrcZsatZsat_u734(f_p0);
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	{
		if (!(v_1 == ((NI32)-1))) goto LA7_;
		if (((NI)0) < 0 || ((NI)0) >= f_p0.len){ raiseIndexError2(((NI)0),f_p0.len-1); goto BeforeRet_;
		}
		if (((NI32)(f_p0.p->data[((NI)0)] & ((NI32)7))) < ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0) || ((NI32)(f_p0.p->data[((NI)0)] & ((NI32)7))) > ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)){ raiseRangeErrorI((NI32)(f_p0.p->data[((NI)0)] & ((NI32)7)), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)0), ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)7)); goto BeforeRet_;
		}
		result = (((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg) ((NI32)(f_p0.p->data[((NI)0)] & ((NI32)7)))) == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1));
	}
	goto LA5_;
LA7_: ;
	{
		tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q s_1;
		tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q branchBase_1;
		tySequence__48JTohSgTy339bRxHzUD8KA falseGuess_1;
		tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg falseRes_1;
		nimZeroMem((void*)(&s_1), sizeof(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q));
		nimZeroMem((void*)(&branchBase_1), sizeof(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q));
		falseGuess_1.len = 0; falseGuess_1.p = NIM_NIL;
		eqcopy___OOZdistZsatZsrcZsatZsatvars_u187((&s_1), (*sout_p1));
		trivialVars__OOZdistZsatZsrcZsatZsat_u1110(f_p0, ((NI)0), 1ULL, (&s_1));
		if (NIM_UNLIKELY(*nimErr_)) goto LA10_;
		{
			NIM_BOOL T13_;
			T13_ = (NIM_BOOL)0;
			T13_ = containsInvalid__OOZdistZsatZsrcZsatZsatvars_u323(s_1);
			if (NIM_UNLIKELY(*nimErr_)) goto LA10_;
			if (!T13_) goto LA14_;
			eqsink___OOZdistZsatZsrcZsatZsatvars_u193((&(*sout_p1)), s_1);
			eqwasMoved___OOZdistZsatZsrcZsatZsatvars_u181((&s_1));
			result = NIM_FALSE;
			eqdestroy___OOZdistZsatZsrcZsatZsat_u275(falseGuess_1);
			eqdestroy___OOZdistZsatZsrcZsatZsatvars_u184((&branchBase_1));
			eqdestroy___OOZdistZsatZsrcZsatZsatvars_u184((&s_1));
			goto BeforeRet_;
		}
LA14_: ;
		result = NIM_FALSE;
		eqcopy___OOZdistZsatZsrcZsatZsatvars_u187((&branchBase_1), s_1);
		setVar__OOZdistZsatZsrcZsatZsatvars_u262((&s_1), v_1, 2ULL);
		if (NIM_UNLIKELY(*nimErr_)) goto LA10_;
		falseRes_1 = simplify__OOZdistZsatZsrcZsatZsat_u772((&falseGuess_1), f_p0, ((NI)0), s_1);
		if (NIM_UNLIKELY(*nimErr_)) goto LA10_;
		{
			if (!(falseRes_1 == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1))) goto LA18_;
			result = NIM_TRUE;
		}
		goto LA16_;
LA18_: ;
		{
			result = satisfiableIter__OOZdistZsatZsrcZsatZsat_u1134(falseGuess_1, (&s_1), iters_p2);
			if (NIM_UNLIKELY(*nimErr_)) goto LA10_;
			{
				if (!((*iters_p2) == ((NI)0))) goto LA23_;
				result = NIM_FALSE;
				eqdestroy___OOZdistZsatZsrcZsatZsat_u275(falseGuess_1);
				eqdestroy___OOZdistZsatZsrcZsatZsatvars_u184((&branchBase_1));
				eqdestroy___OOZdistZsatZsrcZsatZsatvars_u184((&s_1));
				goto BeforeRet_;
			}
LA23_: ;
			{
				tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q trueState_1;
				tySequence__48JTohSgTy339bRxHzUD8KA trueGuess_1;
				tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg trueRes_1;
				if (!!(result)) goto LA27_;
				nimZeroMem((void*)(&trueState_1), sizeof(tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q));
				trueGuess_1.len = 0; trueGuess_1.p = NIM_NIL;
				trueState_1 = branchBase_1;
				eqwasMoved___OOZdistZsatZsrcZsatZsatvars_u181((&branchBase_1));
				setVar__OOZdistZsatZsrcZsatZsatvars_u262((&trueState_1), v_1, 1ULL);
				if (NIM_UNLIKELY(*nimErr_)) goto LA29_;
				trueRes_1 = simplify__OOZdistZsatZsrcZsatZsat_u772((&trueGuess_1), f_p0, ((NI)0), trueState_1);
				if (NIM_UNLIKELY(*nimErr_)) goto LA29_;
				{
					if (!(trueRes_1 == ((tyEnum_FormKind__qCTCWUNIMAQ9bX4i2iWeyMg)1))) goto LA32_;
					result = NIM_TRUE;
					eqsink___OOZdistZsatZsrcZsatZsatvars_u193((&s_1), trueState_1);
					eqwasMoved___OOZdistZsatZsrcZsatZsatvars_u181((&trueState_1));
				}
				goto LA30_;
LA32_: ;
				{
					result = satisfiableIter__OOZdistZsatZsrcZsatZsat_u1134(trueGuess_1, (&trueState_1), iters_p2);
					if (NIM_UNLIKELY(*nimErr_)) goto LA29_;
					{
						if (!((*iters_p2) == ((NI)0))) goto LA37_;
						eqdestroy___OOZdistZsatZsrcZsatZsat_u275(trueGuess_1);
						eqdestroy___OOZdistZsatZsrcZsatZsatvars_u184((&trueState_1));
						eqdestroy___OOZdistZsatZsrcZsatZsat_u275(falseGuess_1);
						eqdestroy___OOZdistZsatZsrcZsatZsatvars_u184((&branchBase_1));
						eqdestroy___OOZdistZsatZsrcZsatZsatvars_u184((&s_1));
						goto BeforeRet_;
					}
LA37_: ;
					{
						if (!result) goto LA41_;
						eqsink___OOZdistZsatZsrcZsatZsatvars_u193((&s_1), trueState_1);
						eqwasMoved___OOZdistZsatZsrcZsatZsatvars_u181((&trueState_1));
					}
LA41_: ;
				}
LA30_: ;
				{
					LA29_:;
				}
				{
					eqdestroy___OOZdistZsatZsrcZsatZsat_u275(trueGuess_1);
					eqdestroy___OOZdistZsatZsrcZsatZsatvars_u184((&trueState_1));
				}
				if (NIM_UNLIKELY(*nimErr_)) goto LA10_;
			}
LA27_: ;
		}
LA16_: ;
		{
			if (!result) goto LA47_;
			eqsink___OOZdistZsatZsrcZsatZsatvars_u193((&(*sout_p1)), s_1);
			eqwasMoved___OOZdistZsatZsrcZsatZsatvars_u181((&s_1));
		}
LA47_: ;
		{
			LA10_:;
		}
		{
			eqdestroy___OOZdistZsatZsrcZsatZsat_u275(falseGuess_1);
			eqdestroy___OOZdistZsatZsrcZsatZsatvars_u184((&branchBase_1));
			eqdestroy___OOZdistZsatZsrcZsatZsatvars_u184((&s_1));
		}
		if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}
LA5_: ;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, minuspercent___system_u813)(NI x_p0, NI y_p1) {
	NI result;
	result = ((NI) ((NU)((NU64)(((NU) (x_p0))) - (NU64)(((NU) (y_p1))))));
	return result;
}
static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicDyn)(void* p_p0) {
	NIM_BOOL result;
	result = NIM_FALSE;
	{
		tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA* cell_1;
		NI T5_;
		if (!!((p_p0 == NIM_NIL))) goto LA3_;
		T5_ = (NI)0;
		T5_ = minuspercent___system_u813(((NI) (ptrdiff_t) (p_p0)), ((NI)16));
		cell_1 = ((tyObject_RefHeader__BVEqx9abcuAhztUEHxbqQJA*) (T5_));
		{
			if (!((NI)((*cell_1).rc & ((NI)-16)) == ((NI)0))) goto LA8_;
			result = NIM_TRUE;
		}
		goto LA6_;
LA8_: ;
		{
			(*cell_1).rc = minuspercent___system_u813((*cell_1).rc, ((NI)16));
		}
LA6_: ;
		rememberCycle__system_u3555(result, cell_1, (*((TNimTypeV2**) (p_p0))));
	}
LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___OOZdistZsatZsrcZsatZsat_u1174)(tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA* dest_p0) {
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = nimDecRefIsLastCyclicDyn((*dest_p0).Sup.Sup.up);
		if (!T3_) goto LA4_;
		nimDestroyAndDispose((*dest_p0).Sup.Sup.up);
	}
LA4_: ;
	eqdestroy___system_u3757((*dest_p0).Sup.Sup.trace);
	if ((*dest_p0).Sup.Sup.message.p && !((*dest_p0).Sup.Sup.message.p->cap & NIM_STRLIT_FLAG)) {
 deallocShared((*dest_p0).Sup.Sup.message.p);
}
	{
		NIM_BOOL T8_;
		T8_ = (NIM_BOOL)0;
		T8_ = nimDecRefIsLastCyclicDyn((*dest_p0).Sup.Sup.parent);
		if (!T8_) goto LA9_;
		nimDestroyAndDispose((*dest_p0).Sup.Sup.parent);
	}
LA9_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__OOZdistZsatZsrcZsatZsat_u1991)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	eqdestroy___OOZdistZsatZsrcZsatZsat_u1174(((tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA*) (dest_p0)));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	}BeforeRet_: ;
}
static N_INLINE(NI, pluspercent___system_u793)(NI x_p0, NI y_p1) {
	NI result;
	result = ((NI) ((NU)((NU64)(((NU) (x_p0))) + (NU64)(((NU) (y_p1))))));
	return result;
}
static N_INLINE(void, add__system_u3076)(tyObject_CellSeq__ssWvVk43J2HePNvNGK2tCw* s_p0, void** c_p1, TNimTypeV2* t_p2) {
	void** colontmp_;
	TNimTypeV2* colontmp__2;
	{
		if (!((*s_p0).cap <= (*s_p0).len)) goto LA3_;
		resize__system_u3084(s_p0);
	}
LA3_: ;
	colontmp_ = c_p1;
	colontmp__2 = t_p2;
	(*s_p0).d[(*s_p0).len].Field0 = colontmp_;
	(*s_p0).d[(*s_p0).len].Field1 = colontmp__2;
	(*s_p0).len = pluspercent___system_u793((*s_p0).len, ((NI)1));
}
static N_INLINE(void, nimTraceRefDyn)(void* q_p0, void* env_p1) {
	void** p_1;
	p_1 = ((void**) (q_p0));
	{
		tyObject_GcEnv__1z8AJ0tfLlYlFBizZRHD7A* j_1;
		if (!!(((*p_1) == NIM_NIL))) goto LA3_;
		j_1 = ((tyObject_GcEnv__1z8AJ0tfLlYlFBizZRHD7A*) (env_p1));
		add__system_u3076((&(*j_1).traceStack), p_1, (*((TNimTypeV2**) ((*p_1)))));
	}
LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, eqtrace___OOZdistZsatZsrcZsatZsat_u1186)(tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA* dest_p0, void* env_p1) {
	nimTraceRefDyn(&(*dest_p0).Sup.Sup.parent, env_p1);
	nimTraceRefDyn(&(*dest_p0).Sup.Sup.up, env_p1);
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, satisfiable__OOZdistZsatZsrcZsatZsat_u1164)(tySequence__48JTohSgTy339bRxHzUD8KA f_p0, tyObject_Solution__1PhBJDgAsOvN39cKpSkuZ5Q* sout_p1, NI maxIters_p2) {
	NIM_BOOL result;
	NI iters_1;
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
	result = (NIM_BOOL)0;
	iters_1 = maxIters_p2;
	result = satisfiableIter__OOZdistZsatZsrcZsatZsat_u1134(f_p0, sout_p1, (&iters_1));
	if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
	{
		tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA* T5_;
		if (!(iters_1 == ((NI)0))) goto LA3_;
		T5_ = NIM_NIL;
		T5_ = (tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA*) nimNewObj(sizeof(tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA), NIM_ALIGNOF(tyObject_SatOverflowError__9aocJpvK4mXRG3q1Msby3RA));
		(*T5_).Sup.Sup.Sup.m_type = (&NTIv2__9aocJpvK4mXRG3q1Msby3RA_);
		(*T5_).Sup.Sup.name = "SatOverflowError";
		(*T5_).Sup.Sup.message = TM__8ki9bWdrRbfyXE3RKL5JcJA_105;
		(*T5_).Sup.Sup.parent = ((Exception*) NIM_NIL);
		raiseExceptionEx((Exception*)T5_, "SatOverflowError", "satisfiable", "sat.nim", 471);
goto BeforeRet_;
	}
LA3_: ;
	}BeforeRet_: ;
	return result;
}
