/* Generated by Nim Compiler v1.0.6 */
/*   (c) 2019 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 64

#include "nimbase.h"
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _GNU_SOURCE
#include <pthread.h>
#include <sys/types.h>
                          #include <pthread.h>
#include <sys/mman.h>
#include <setjmp.h>
#include <signal.h>
#include <pthread.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
#define nimfr_(x, y)
#define nimln_(x, y)
typedef struct tyObject_GcThread__hgJQSlfXDOK3SwSHjeZBXg tyObject_GcThread__hgJQSlfXDOK3SwSHjeZBXg;
typedef struct Exception Exception;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_SharedList__JI9cx34TL8n3aOKF6tSMBUw tyObject_SharedList__JI9cx34TL8n3aOKF6tSMBUw;
typedef struct tyObject_SharedListNodecolonObjectType___KGw0YAw6W9aSz3Sr9aXGu7zg tyObject_SharedListNodecolonObjectType___KGw0YAw6W9aSz3Sr9aXGu7zg;
typedef struct tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w;
typedef struct tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ;
typedef struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ;
typedef struct tySequence__WF89a8QyKeDCh4DYWTmSiBg tySequence__WF89a8QyKeDCh4DYWTmSiBg;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyTuple__JfHvHzMrhKkWAUvQKe0i1A tyTuple__JfHvHzMrhKkWAUvQKe0i1A;
typedef struct tyObject_Env_systemdotnim___diB2NTuAIWY0FO9c5IUJRGg tyObject_Env_systemdotnim___diB2NTuAIWY0FO9c5IUJRGg;
typedef struct RootObj RootObj;
typedef struct NimStringDesc NimStringDesc;
typedef struct TSafePoint TSafePoint;
typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
typedef struct GcFrameHeader GcFrameHeader;
typedef struct tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA;
typedef struct tyObject_AssertionError__G9cUlLvU4AFC26wbFxLFkFA tyObject_AssertionError__G9cUlLvU4AFC26wbFxLFkFA;
typedef struct tyObject_OverflowError__Ss6DFlX5iSZpHRZDmP74bg tyObject_OverflowError__Ss6DFlX5iSZpHRZDmP74bg;
typedef struct tyObject_ArithmeticError__XIT9aewsXycM2U5B437NUDA tyObject_ArithmeticError__XIT9aewsXycM2U5B437NUDA;
typedef struct tyObject_IndexError__K39aEGuwNdydKn2WFEpUygg tyObject_IndexError__K39aEGuwNdydKn2WFEpUygg;
typedef struct tyObject_RangeError__8inKGns6i1OoXN9aLZwcSOw tyObject_RangeError__8inKGns6i1OoXN9aLZwcSOw;
typedef struct tyObject_ReraiseError__Wyd9avMRCq0gsOu9adFoIjCA tyObject_ReraiseError__Wyd9avMRCq0gsOu9adFoIjCA;
typedef struct tyObject_NilAccessError__GOcOTSJVFwA9bjh66gBCclQ tyObject_NilAccessError__GOcOTSJVFwA9bjh66gBCclQ;
typedef struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA;
typedef struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw;
typedef struct tyObject_TimezonecolonObjectType___F8OvqlxXyGXRSiK9c1fCDVw tyObject_TimezonecolonObjectType___F8OvqlxXyGXRSiK9c1fCDVw;
typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ tySequence__sM4lkSb7zS6F7OVMvW9cffQ;
typedef NF tyArray__iV2wVpdhi9coq9cstlcqapXg[2001];
struct tyObject_GcThread__hgJQSlfXDOK3SwSHjeZBXg {
tyArray__iV2wVpdhi9coq9cstlcqapXg tls;
};
typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__9axCnCRMUx32AHzFgBrzSMg) (Exception* e);
typedef N_NIMCALL_PTR(void, tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ) (void);
typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
void* bottom;
};
struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
NI len;
NI cap;
tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SiRwrEKZdLgxqz9a9aoVBglg[512];
typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
};
typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
tyArray__0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
NI Field1;
};
typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
NI len;
tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
};
struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
NI minLargeObj;
NI maxLargeObj;
tyArray__SiRwrEKZdLgxqz9a9aoVBglg freeSmallChunks;
NU32 flBitmap;
tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
};
struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
NI collections;
NI maxThreshold;
NI maxStackSize;
NI freedObjects;
};
struct tyObject_SharedList__JI9cx34TL8n3aOKF6tSMBUw {
tyObject_SharedListNodecolonObjectType___KGw0YAw6W9aSz3Sr9aXGu7zg* head;
tyObject_SharedListNodecolonObjectType___KGw0YAw6W9aSz3Sr9aXGu7zg* tail;
pthread_mutex_t lock;
};
struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_SharedList__JI9cx34TL8n3aOKF6tSMBUw toDispose;
NI gcThreadId;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
};
typedef tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* tyUncheckedArray__qYl1ErvQvkPpq9bTvm2UvTg[1];
struct tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w {
NI prevSize;
NI size;
};
struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ {
  tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w Sup;
tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* next;
tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* prev;
tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ* freeList;
NI free;
NI acc;
NF data;
};
typedef NI8 tyArray__mkmEeKAWtk2yS9bBb1lUWXA[256];
struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg {
  tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w Sup;
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* next;
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* prev;
NF data;
};
struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw {
NI size;
NI acc;
tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* next;
};
typedef NU tyArray__VqSA39cBDWnwnJySTumCdjw[8];
struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw {
tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* next;
NI key;
tyArray__VqSA39cBDWnwnJySTumCdjw bits;
};
struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ {
NI Field0;
NI Field1;
};
struct tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ {
tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ* next;
NI zeroField;
};
struct TGenericSeq {
NI len;
NI reserved;
};
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (void* ClE_0);
void* ClE_0;
} tyProc__IIomJ6ptE6vfJ5zRbATgkQ;
struct tyTuple__JfHvHzMrhKkWAUvQKe0i1A {
void* Field0;
tyObject_Env_systemdotnim___diB2NTuAIWY0FO9c5IUJRGg* Field1;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_Env_systemdotnim___diB2NTuAIWY0FO9c5IUJRGg {
  RootObj Sup;
};
typedef NU8 tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ;
struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
typedef void* tyArray__Rrw59cMvNu8cDA9cQDh4v2oA[100];
struct tyObject_SharedListNodecolonObjectType___KGw0YAw6W9aSz3Sr9aXGu7zg {
tyObject_SharedListNodecolonObjectType___KGw0YAw6W9aSz3Sr9aXGu7zg* next;
NI dataLen;
tyArray__Rrw59cMvNu8cDA9cQDh4v2oA d;
};
typedef NU8 tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef N_NIMCALL_PTR(void, tyProc__W6IXMh2CA4X1rFYGjUb4yg) (NimStringDesc* msg);
struct Exception {
  RootObj Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
NU raiseId;
Exception* up;
};
struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
NCSTRING procname;
NI line;
NCSTRING filename;
};
typedef N_NIMCALL_PTR(void, Finalizer) (void* self);
typedef N_NOCONV_PTR(void, tyProc__lfH2drpqP9aSEAAjWgrYv8Q) (int a);
typedef tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ tyArray__9aTRall1siQT9bXabu2aKXUg[3500];
struct tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA {
  Exception Sup;
};
struct tyObject_AssertionError__G9cUlLvU4AFC26wbFxLFkFA {
  tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
};
struct tyObject_ArithmeticError__XIT9aewsXycM2U5B437NUDA {
  tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
};
struct tyObject_OverflowError__Ss6DFlX5iSZpHRZDmP74bg {
  tyObject_ArithmeticError__XIT9aewsXycM2U5B437NUDA Sup;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClP_0) (Exception* e, void* ClE_0);
void* ClE_0;
} tyProc__NT9bSe2DDkjdtx7j9aov2Z6g;
struct TSafePoint {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
tyProc__NT9bSe2DDkjdtx7j9aov2Z6g raiseAction;
};
typedef N_CLOSURE_PTR(NIM_BOOL, TM__Q5wkpxktOdTGvlSRo9bzt9aw_8) (Exception* e);
typedef NIM_CHAR tyArray__gpc2RrLEcWgv7ONpLYNHOw[2001];
struct tyObject_IndexError__K39aEGuwNdydKn2WFEpUygg {
  tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
};
struct tyObject_RangeError__8inKGns6i1OoXN9aLZwcSOw {
  tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
};
struct tyObject_ReraiseError__Wyd9avMRCq0gsOu9adFoIjCA {
  tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
};
struct tyObject_NilAccessError__GOcOTSJVFwA9bjh66gBCclQ {
  tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
};
struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA {
  Exception Sup;
};
struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw {
  tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
};
struct tySequence__WF89a8QyKeDCh4DYWTmSiBg {
  TGenericSeq Sup;
  tyProc__IIomJ6ptE6vfJ5zRbATgkQ data[SEQ_DECL_SIZE];
};
struct tySequence__uB9b75OUPRENsBAu4AnoePA {
  TGenericSeq Sup;
  tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
};
struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
typedef struct {tyProc__9axCnCRMUx32AHzFgBrzSMg localRaiseHook__EIvMhANBvB9cp2Ezvt29cADg;
tySequence__WF89a8QyKeDCh4DYWTmSiBg* threadDestructionHandlers__8OmU3x0fNdA0DLtOmU3kWw;
NI threadId__wzrdPYhtL9czkCWS4o9an9cRw;
TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
Exception* currException__9bVPeDJlYTi9bQApZpfH8wjg;
NU raiseCounter__riK0d3t9bHYm6l5Rp6xbpRg;
GcFrameHeader* gcFramePtr__ot48iojqko9aFxGhyjjjVaA;
tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;
tyObject_TimezonecolonObjectType___F8OvqlxXyGXRSiK9c1fCDVw* utcInstance__oeKVHn4dFpBJO35HhEkelw;
tyObject_TimezonecolonObjectType___F8OvqlxXyGXRSiK9c1fCDVw* localInstance__cLtN9cK9bCe6IPhJ3UFNLNKA;
NIM_BOOL envComputed__LLyFo9bsdu1ZXMDvAe8DhrQ;
tySequence__sM4lkSb7zS6F7OVMvW9cffQ* environment__mlhK49b6YMgc9cgrcYkKq9a3g;
NIM_BOOL pyThreadFrameInited__0LBR4zzVR5uWvgtv8SrMjg;
NIM_BOOL gcInited__uuy3PWTwb5gov9ao9bXJYBPg;
} NimThreadVars;
N_NOCONV(NI, NimThreadVarsSize)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, initGC__amVlU9ajqZ06ujoesRBHcDg)(void);
static N_INLINE(void*, GetThreadLocalVars)(void);
static N_INLINE(void*, threadVarGetValue__lkcYbr6A37jd9cYTDiZRxdAsystem)(pthread_key_t s);
N_LIB_PRIVATE N_NIMCALL(void, init__wKM37ZoL6WtPOU9bn6Ug18A)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, NI cap);
N_LIB_PRIVATE N_NOCONV(void*, alloc0__WrVG9abV9chlTLqkiXYLKwUg)(NI size);
N_LIB_PRIVATE N_NIMCALL(void*, alloc0__UxtcZ3QOXKsB7mMchxUf9cg)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, NI size);
N_LIB_PRIVATE N_NIMCALL(void*, alloc__UxtcZ3QOXKsB7mMchxUf9cg_2)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, NI size);
N_LIB_PRIVATE N_NIMCALL(void*, rawAlloc__mE4QEVyMvGRVliDWDngZCQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI requestedSize);
static N_INLINE(NI, roundup__ix09bNPnFKmnm9c9bTyF5mHpAsystem)(NI x, NI v);
N_LIB_PRIVATE N_NIMCALL(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*, getSmallChunk__0ixBBlKB5QN59bxrmztRmCw)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a);
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, getBigChunk__stlXHMKRKFIGOvq8t4ynRQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size);
static N_INLINE(void, mappingSearch__x0o9aLs0rybi5SymOs9ciTLQsystem)(NI* r, NI* fl, NI* sl);
static N_INLINE(NI, msbit__NR8XkKls428clCUr82szCgsystem)(NU32 x);
static N_INLINE(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, findSuitableBlock__asVN3MOMG2rBAqS7SmK0xQsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI* fl, NI* sl);
static N_INLINE(NI, lsbit__NR8XkKls428clCUr82szCg_2system)(NU32 x);
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, requestOsChunks__stlXHMKRKFIGOvq8t4ynRQ_2)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size);
static N_INLINE(void*, osAllocPages__HMOhWrY1QMa49a2BcJwSDZQsystem)(NI size);
N_LIB_PRIVATE N_NOINLINE(void, raiseOutOfMem__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, rawWrite)(FILE* f, NCSTRING s);
static N_INLINE(size_t, nimCStrLen)(NCSTRING a);
static N_INLINE(void*, osTryAllocPages__HMOhWrY1QMa49a2BcJwSDZQ_2system)(NI size);
static N_INLINE(void, incCurrMem__JPUl8p4328ZL9bXnEtbaZcAsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI bytes);
N_LIB_PRIVATE N_NIMCALL(void, addHeapLink__LIRFHBfc9aX3C5dmMmLnpwA)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* p, NI size);
N_LIB_PRIVATE N_NIMCALL(void*, llAlloc__ovw3NMWXeZ0Qi9cGYq1E2Tg)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size);
static N_INLINE(void, zeroMem__FsvhfMqbswETmyMWtamDewsystem)(void* p, NI size);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__9b5xR7VBZVwQDvk5Nr9bDKdQ)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key);
N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*, intSetGet__O3FRrWKKUdi8uRTGxiPdIg)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* t, NI key);
static N_INLINE(NI, pageIndex__D8ZW0myZd7Fa6ncDvW9a9cMQsystem)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c);
N_LIB_PRIVATE N_NIMCALL(void, splitChunk__BqFVAuadgXfvAiq8B9cBjqQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI size);
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, splitChunk2__gSNzk4aToVCSTE1opfEv2A)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI size);
static N_INLINE(void, updatePrevSize__9b5Bu9akw7RalDC4isB4QVbgsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI prevSize);
static N_INLINE(NIM_BOOL, isAccessible__EZspgz843pJ9adnD0ZpJO6wsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p);
static N_INLINE(NI, pageIndex__cMO7rAWQ0KzYXPVgB0ZR3gsystem)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, incl__tSnfTXv7GxXoDyFDm9bvzqg)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key);
N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*, intSetPut__Cw86Sj6YgVACdT20AkWjcA)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* t, NI key);
N_LIB_PRIVATE N_NIMCALL(void, addChunkToMatrix__YSJZJgeU5UU2aa8GNvs3WA)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b);
static N_INLINE(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ, mappingInsert__SRLfEtcWb2dn0ht85HEwbQsystem)(NI r);
static N_INLINE(void, setBit__I4TSeZGFKfrVTL1oqiweCgsystem)(NI nr, NU32* dest);
N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix2__XFftAAJrARamxGOKUFQy9aw)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b, NI fl, NI sl);
static N_INLINE(void, clearBit__I4TSeZGFKfrVTL1oqiweCg_2system)(NI nr, NU32* dest);
static N_INLINE(void, listAdd__G9cCXZ1ju0DgzqrqBg9acaKQsystem)(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ** head, tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c);
static N_INLINE(void, listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2system)(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ** head, tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, getHugeChunk__stlXHMKRKFIGOvq8t4ynRQ_3)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size);
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, getBottom__3mqnVBLDtYhZizqw9bvHELA)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a);
N_LIB_PRIVATE N_NIMCALL(void, add__3D9aOyz4rDquPZKBlqn0xig)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t, NI key, NI upperBound);
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, allocAvlNode__Du8pyfSfDLyN9aoS2IcBsHg)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI key, NI upperBound);
N_LIB_PRIVATE N_NIMCALL(void, skew__NJo8pxZdXEAIa7wkHls9cOw)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t);
N_LIB_PRIVATE N_NIMCALL(void, split__NJo8pxZdXEAIa7wkHls9cOw_2)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t);
N_LIB_PRIVATE N_NIMCALL(void, init__rlyb6Y54ONML4HcId0P2OA)(tyObject_SharedList__JI9cx34TL8n3aOKF6tSMBUw* t);
static N_INLINE(NI, atomicInc__v6qORsZ9azlHHhOL1JYACRAsystem)(NI* memLoc, NI x);
static N_NIMCALL(void, Marker_tyRef__HsJiUUcO9cHBdUCi0HwkSTA)(void* p, NI op);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_LIB_PRIVATE N_NIMCALL(void, doOperation__sl6eqhLncFedgwzv6TlMVw)(void* p, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
N_LIB_PRIVATE N_NIMCALL(void, mark__SOJE9bROCOc8iabVsKM64Sg)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(void, acquire__9bDG9bIkA6DtNcXVdL7bnLvg)(pthread_mutex_t* lock);
N_NIMCALL(void, nimGCunref)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, release__9bDG9bIkA6DtNcXVdL7bnLvg_2)(pthread_mutex_t* lock);
N_LIB_PRIVATE N_NIMCALL(void, forAllChildren__XCvXrotwhq0gugZtuZTNPQ)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op);
static N_INLINE(void*, cellToUsr__oh8PwD5vOIN9awo20FR9c8qAsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell);
N_LIB_PRIVATE N_NIMCALL(void, forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw)(void* dest, TNimType* mt, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op);
N_LIB_PRIVATE N_NIMCALL(void, forAllSlotsAux__ld9axHPi9bpxevVrdgKiDF5Q)(void* dest, TNimNode* n, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op);
N_LIB_PRIVATE N_NIMCALL(TNimNode*, selectBranch__2us2RQByTh81i9aW4EEgfmw)(void* aa, TNimNode* n);
N_LIB_PRIVATE N_NIMCALL(NU, getDiscriminant__7LnhHf25BuMRNdnPtDbjcw)(void* aa, TNimNode* n);
static N_INLINE(void, add__W9aRfhn7HvnQTPAb8ajo1uwsystem)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOCONV(void*, alloc__WrVG9abV9chlTLqkiXYLKwUg_2)(NI size);
static N_INLINE(void, copyMem__i80o3k0SgEI5gTRCzYdyWAsystem)(void* dest, void* source, NI size);
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
N_LIB_PRIVATE N_NOCONV(void, dealloc__lmwgHsdhTsrQaepFju8wew)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, dealloc__Jg1OaY9ahkT3MBopLAXRSGw)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, void* p);
N_LIB_PRIVATE N_NIMCALL(void, rawDealloc__K7uQ6aTKvW6OnOV8EMoNNQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p);
static N_INLINE(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*, pageAddr__JNTkgd9cRu9a9bEvn7wS0U8EAsystem)(void* p);
static N_INLINE(NIM_BOOL, isSmallChunk__2Ih49c9ai3KYJhUe3C8xg07wsystem)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c);
N_LIB_PRIVATE N_NIMCALL(void, freeBigChunk__IPvsryqksLyNxxag3IQr2g)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c);
static N_INLINE(NIM_BOOL, chunkUnused__2Ih49c9ai3KYJhUe3C8xg07w_2system)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c);
N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix__YSJZJgeU5UU2aa8GNvs3WA_2)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b);
N_LIB_PRIVATE N_NIMCALL(void, excl__9cAWqpgI1NbhhZ3cVPHhI5A)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key);
N_LIB_PRIVATE N_NIMCALL(void, del__Io5JDKCS5u26IEWw0J53hQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t, NI x);
static N_INLINE(void, deallocAvlNode__pgghNmDMWP23LqxNq9atk7gsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n);
N_LIB_PRIVATE N_NIMCALL(void, freeHugeChunk__IPvsryqksLyNxxag3IQr2g_2)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c);
static N_INLINE(void, decCurrMem__JPUl8p4328ZL9bXnEtbaZcA_2system)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI bytes);
static N_INLINE(void, osDeallocPages__dRMEutPSAkbR9b9blNmTzvoQsystem)(void* p, NI size);
static N_NIMCALL(void, Marker_tySequence__WF89a8QyKeDCh4DYWTmSiBg)(void* p, NI op);
static N_NIMCALL(void, TM__Q5wkpxktOdTGvlSRo9bzt9aw_3)(void);
N_NIMCALL(void, nimRegisterThreadLocalMarker)(tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ markerProc);
static N_NIMCALL(void, Marker_tySequence__uB9b75OUPRENsBAu4AnoePA)(void* p, NI op);
static N_NIMCALL(void, Marker_tyRef__vU9aO9cTqOMn6CBzhV8rX7Sw)(void* p, NI op);
static N_NIMCALL(void, TM__Q5wkpxktOdTGvlSRo9bzt9aw_6)(void);
N_NOCONV(void, signalHandler)(int sign);
N_LIB_PRIVATE N_NIMCALL(void, showErrorMessage__zsORN9crdKxsL9cHrQcdHSMw)(NCSTRING data);
N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str);
N_NIMCALL(NimStringDesc*, toNimStr)(NCSTRING str, NI len);
N_NIMCALL(NimStringDesc*, rawNewStringNoInit)(NI space);
N_NIMCALL(void*, newObjNoInit)(TNimType* typ, NI size);
N_LIB_PRIVATE N_NIMCALL(void*, rawNewObj__ehkAaLROrd0Hc9aLROWt1nQ)(TNimType* typ, NI size, tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NIMCALL(void, collectCT__UyJsrKu7wmHDvZRV57hjsg)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, NI size);
static N_INLINE(NI, getFreeMem__o7kGt4Ciqh9aCBinZc9bV9cugsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a);
static N_INLINE(NI, getOccupiedMem__o7kGt4Ciqh9aCBinZc9bV9cug_2system)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a);
N_LIB_PRIVATE N_NIMCALL(void, collectCTBody__XHio9cMpnLoH7GyCj1Z9besg)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NOINLINE(NI, stackSize__0yw8cp0rOgL8i0O5kzzb0g)(void);
N_LIB_PRIVATE N_NOINLINE(NI, stackSize__VOU3z9bbtHMYBiCVB5tMX1g)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack);
static N_INLINE(void, prepareForInteriorPointerChecking__ot9aebHKDFT2OPbEVY47F9bQsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a);
N_LIB_PRIVATE N_NIMCALL(NI, lowGauge__vu9a10GqvNeXA9alSqdG48cw)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n);
N_LIB_PRIVATE N_NIMCALL(NI, highGauge__vu9a10GqvNeXA9alSqdG48cw_2)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n);
N_LIB_PRIVATE N_CDECL(void, markStackAndRegisters__U6T7JWtDLrWhtmhXSoy9a6g)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NIMCALL(void, setPosition__Fnam3HOmbq2ymF0tDBas5Q)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack, void* position);
N_LIB_PRIVATE N_NIMCALL(tyObject_GcStack__7fytPA5bBsob6See21YMRA*, getActiveStack__muO7WGG730PTJWpoUnluHg)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isActiveStack__c6NLIYJQ5DIKtQqRJH8S7w)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack);
static N_INLINE(void, gcMark__x5SbLN3uVBCsEa67N20nPwsystem)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, void* p);
N_LIB_PRIVATE N_NIMCALL(void*, interiorAllocatedPtr__NuzKjA4SX9afyji9cHHIuKpQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p);
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, inRange__BIq3l3oBvrBeYSWFT5iXiw)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root, NI key);
N_LIB_PRIVATE N_NIMCALL(void, markGlobals__XHio9cMpnLoH7GyCj1Z9besg_2)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NIMCALL(void, sweep__XHio9cMpnLoH7GyCj1Z9besg_3)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
static N_INLINE(NIM_BOOL, isCell__knKGR9cPCi0isv7h4omKxdAsystem)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, freeCyclicCell__SOJE9bROCOc8iabVsKM64Sg_2)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(void, prepareDealloc__fvhnFro5wEfzy879alizcUQ)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell);
N_LIB_PRIVATE N_NIMCALL(NI, getOccupiedMem__hrQB9bN29c1nR1E9cHqYcNcDA)(void);
N_LIB_PRIVATE N_NIMCALL(void, writeToStdErr__a2kDfqdSc1eYf0ZCWOGinQ)(NCSTRING msg);
N_LIB_PRIVATE N_NIMCALL(void, registerSignalHandler__amVlU9ajqZ06ujoesRBHcDg_2)(void);
N_NIMCALL(NI, getRefcount)(void* p);
static N_NIMCALL(void, Marker_tyRef__ShBqCFAISBSH2YqBfe6zjg)(void* p, NI op);
N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
static N_INLINE(NI, addInt)(NI a, NI b);
N_NOINLINE(void, raiseOverflow)(void);
static N_INLINE(void, sysFatal__1rw9bzpRcCrBi6FIqHe7a4wsystem)(NimStringDesc* message) __attribute__((noreturn));
static N_NIMCALL(void, Marker_tyRef__Pjt0MQjoA6TAHAHOFNel9cg)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
N_NIMCALL(NI, mulInt)(NI a, NI b);
static N_INLINE(NF, toFloat__y1Fm9aHmxw9bS2jir137Fu5gsystem)(NI i);
static N_INLINE(NF, abs__BRaAqinz6OWTHkALb4oj6Qsystem)(NF x);
static N_INLINE(NI, resize__cOCDWr16YD4j3dBrbbH3yQsystem)(NI old);
N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionAux__na8C8pUZ9cLQWVwk35l5vfw)(Exception* e);
static N_INLINE(void, pushCurrentException)(Exception* e);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___qXwhltkA4r6d4Hcwmx9cN8A)(tySequence__uB9b75OUPRENsBAu4AnoePA* s);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_LIB_PRIVATE N_NIMCALL(void, add__8FwY5enLGB0dFerO6Ny9caw)(NimStringDesc** x, NCSTRING y);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_LIB_PRIVATE N_NIMCALL(void, addInt__mftMOxbyu0h4yByfs3sqjA)(NimStringDesc** result, NI64 x);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s);
static N_INLINE(void, quitOrDebug__RsY2eAkO9aEvlDhb7ZyRF8gsystem)(void);
static N_INLINE(void, sysFatal__wxS1DD5S67Tovuyk2fdOLwsystem)(NimStringDesc* message) __attribute__((noreturn));
static N_NIMCALL(void, Marker_tyRef__9bTGS9b5gqA3m1IgV71Csl0Q)(void* p, NI op);
static N_INLINE(void, sysFatal__a60aq0IF2jJo1tjxmBHZ7gsystem)(NimStringDesc* message, NimStringDesc* arg) __attribute__((noreturn));
static N_NIMCALL(void, Marker_tyRef__Efo9bmO5NYUNf9a3ESqm9bZ9bQ)(void* p, NI op);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x);
N_LIB_PRIVATE N_NIMCALL(void, setPosition__Zp3k9bHhfG9aKFJWRJNwKuKw)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack, void* position);
static N_INLINE(void, sysFatal__loKUBbrfPTCD1cUb5IkxkAsystem)(NimStringDesc* message) __attribute__((noreturn));
static N_NIMCALL(void, Marker_tyRef__DsOOBcxCUeVlNUDRmn9afcA)(void* p, NI op);
static N_INLINE(void, sysFatal__rmMwjwTwcnO3nfuGk3FZeAsystem)(NimStringDesc* message) __attribute__((noreturn));
static N_NIMCALL(void, Marker_tyRef__ruLPO7OV4lfUtVF9bcHhElQ)(void* p, NI op);
static N_NIMCALL(void, Marker_tyRef__Ie1m0dv1ZHg72IgPRr1cDw)(void* p, NI op);
static N_INLINE(NI, subInt)(NI a, NI b);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
static N_INLINE(NI, chckRange)(NI i, NI a, NI b);
N_NOINLINE(void, raiseRangeError)(NI64 val);
N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
static N_INLINE(void, initThreadVarsEmulation)(void);
static N_INLINE(pthread_key_t, threadVarAlloc__jhSLbTQw3j1lPALL0SGkjAsystem)(void);
static N_INLINE(void, threadVarSetValue__QhmurQcqUiWj2OcwZoqiTAsystem)(pthread_key_t s, void* value);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
NI nim_program_result;
pthread_key_t globalsSlot__ciXDZu9c27pHpCRMoz4RIgw;
tyObject_GcThread__hgJQSlfXDOK3SwSHjeZBXg mainThread__6r3APOnKvB9aL9atazGvT52A;
tyProc__9axCnCRMUx32AHzFgBrzSMg globalRaiseHook__JbO1ti4ULxrw54m4zNPbpA;
tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ outOfMemHook__kZNaA7u1MfSW5ZeoGvw8xg;
TNimType strDesc__D0UzA4zsDu5tgpJQ9a9clXPg;
TNimType NTI__IIomJ6ptE6vfJ5zRbATgkQ_;
TNimType NTI__vr5DoT1jILTGdRlYv1OYpw_;
TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
TNimType NTI__diB2NTuAIWY0FO9c5IUJRGg_;
TNimType NTI__HsJiUUcO9cHBdUCi0HwkSTA_;
TNimType NTI__WF89a8QyKeDCh4DYWTmSiBg_;
tyProc__W6IXMh2CA4X1rFYGjUb4yg errorMessageWriter__ZXnv0JyrWe3HTd07wpSr7A;
TNimType NTI__XEycrCsme5C8CVWAYEcdBQ_;
TNimType NTI__S9agCYBinaYZnGWcjTdxclg_;
TNimType NTI__77mFvmsOLKik79ci2hXkHEg_;
TNimType NTI__oLyohQ7O2XOvGnflOss8EA_;
TNimType NTI__rR5Bzr1D5krxoo1NcNyeMA_;
TNimType NTI__uB9b75OUPRENsBAu4AnoePA_;
TNimType NTI__hMQEc0FMry7Up7EoPki79aA_;
TNimType NTI__vU9aO9cTqOMn6CBzhV8rX7Sw_;
tyProc__W6IXMh2CA4X1rFYGjUb4yg onUnhandledException__bFrawQlTKZhLweDD36j9b8g;
tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg sharedHeap__R3bhvQCN0d6AYpkvxfT9aGw;
pthread_mutex_t heapLock__Cm9aJxbMhUuv7Cj8trffHQw;
NI globalMarkersLen;
tyArray__9aTRall1siQT9bXabu2aKXUg globalMarkers;
NI threadLocalMarkersLen;
tyArray__9aTRall1siQT9bXabu2aKXUg threadLocalMarkers;
NI gHeapidGenerator__hd54mEUTGcVuZLChYgtR9bg;
TNimType NTI__nuuFlkPr6wNn1dt5MhCk3g_;
TNimType NTI__nlCscttRCss70IBTyuBqnA_;
TNimType NTI__EfDYb5NOiMBijiUDCmXqPw_;
TNimType NTI__LbeSGvgPzGzXnW9caIkJqMA_;
TNimType NTI__G9cUlLvU4AFC26wbFxLFkFA_;
TNimType NTI__ShBqCFAISBSH2YqBfe6zjg_;
TNimType NTI__XIT9aewsXycM2U5B437NUDA_;
TNimType NTI__Ss6DFlX5iSZpHRZDmP74bg_;
TNimType NTI__Pjt0MQjoA6TAHAHOFNel9cg_;
TNimType NTI__K39aEGuwNdydKn2WFEpUygg_;
TNimType NTI__9bTGS9b5gqA3m1IgV71Csl0Q_;
TNimType NTI__8inKGns6i1OoXN9aLZwcSOw_;
TNimType NTI__Efo9bmO5NYUNf9a3ESqm9bZ9bQ_;
TNimType NTI__Wyd9avMRCq0gsOu9adFoIjCA_;
TNimType NTI__DsOOBcxCUeVlNUDRmn9afcA_;
TNimType NTI__GOcOTSJVFwA9bjh66gBCclQ_;
TNimType NTI__ruLPO7OV4lfUtVF9bcHhElQ_;
TNimType NTI__qrLSDoe2oBoAqNtJ9badtnA_;
TNimType NTI__yoNlBGx0D2tRizIdhQuENw_;
TNimType NTI__Ie1m0dv1ZHg72IgPRr1cDw_;
NIM_CONST tyArray__mkmEeKAWtk2yS9bBb1lUWXA fsLookupTable__Gn52IZvqY4slyBTOYwGNRQ = {((NI8) -1),
((NI8) 0),
((NI8) 1),
((NI8) 1),
((NI8) 2),
((NI8) 2),
((NI8) 2),
((NI8) 2),
((NI8) 3),
((NI8) 3),
((NI8) 3),
((NI8) 3),
((NI8) 3),
((NI8) 3),
((NI8) 3),
((NI8) 3),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 4),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 5),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 6),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7),
((NI8) 7)}
;
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_7, "over- or underflow", 18);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_9, "[[reraised from:\012", 17);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_10, "]]\012", 3);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_11, "\012", 1);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_12, "index out of bounds, the container is empty", 43);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_13, "index ", 6);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_14, " not in 0 .. ", 13);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_15, "value out of range: ", 20);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_16, "no exception to reraise", 23);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_17, "attempt to write to a nil address", 33);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(void*, threadVarGetValue__lkcYbr6A37jd9cYTDiZRxdAsystem)(pthread_key_t s) {	void* result;
	result = (void*)0;
	result = pthread_getspecific(s);
	return result;
}
static N_INLINE(void*, GetThreadLocalVars)(void) {	void* result;
	void* T1_;
	result = (void*)0;
	T1_ = (void*)0;
	T1_ = threadVarGetValue__lkcYbr6A37jd9cYTDiZRxdAsystem(globalsSlot__ciXDZu9c27pHpCRMoz4RIgw);
	result = ((void*) ((*((tyObject_GcThread__hgJQSlfXDOK3SwSHjeZBXg*) (T1_))).tls));
	return result;
}
static N_INLINE(NI, roundup__ix09bNPnFKmnm9c9bTyF5mHpAsystem)(NI x, NI v) {	NI result;
	result = (NI)0;
	result = (NI)((NI)(x + (NI)(v - ((NI) 1))) & (NI)((NU64) ~((NI)(v - ((NI) 1)))));
	return result;
}
static N_INLINE(NI, msbit__NR8XkKls428clCUr82szCgsystem)(NU32 x) {	NI result;
	NI a;
	result = (NI)0;
	{
		if (!((NU32)(x) <= (NU32)(((NU32) 65535)))) goto LA3_;
		{
			if (!((NU64)(x) <= (NU64)(((NI) 255)))) goto LA7_;
			a = ((NI) 0);
		}
		goto LA5_;
		LA7_: ;
		{
			a = ((NI) 8);
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		{
			if (!((NU32)(x) <= (NU32)(((NU32) 16777215)))) goto LA13_;
			a = ((NI) 16);
		}
		goto LA11_;
		LA13_: ;
		{
			a = ((NI) 24);
		}
		LA11_: ;
	}
	LA1_: ;
	result = (NI)(((NI) (fsLookupTable__Gn52IZvqY4slyBTOYwGNRQ[((NU32)((NU32)(x) >> (NU64)(a)))- 0])) + a);
	return result;
}
static N_INLINE(void, mappingSearch__x0o9aLs0rybi5SymOs9ciTLQsystem)(NI* r, NI* fl, NI* sl) {	NI t;
	NI T1_;
	NI T2_;
	T1_ = (NI)0;
	T1_ = msbit__NR8XkKls428clCUr82szCgsystem(((NU32) ((*r))));
	T2_ = (NI)0;
	T2_ = roundup__ix09bNPnFKmnm9c9bTyF5mHpAsystem((NI)((NU64)(((NI) 1)) << (NU64)((NI)(T1_ - ((NI) 5)))), ((NI) 4096));
	t = (NI)(T2_ - ((NI) 1));
	(*r) = (NI)((*r) + t);
	(*r) = (NI)((*r) & (NI)((NU64) ~(t)));
	(*r) = (((*r) <= ((NI) 1056964608)) ? (*r) : ((NI) 1056964608));
	(*fl) = msbit__NR8XkKls428clCUr82szCgsystem(((NU32) ((*r))));
	(*sl) = (NI)((NI)((NI64)((*r)) >> (NU64)((NI)((*fl) - ((NI) 5)))) - ((NI) 32));
	(*fl) -= ((NI) 6);
}
static N_INLINE(NI, lsbit__NR8XkKls428clCUr82szCg_2system)(NU32 x) {	NI result;
	result = (NI)0;
	result = msbit__NR8XkKls428clCUr82szCgsystem((NU32)(x & (NU32)((NU64)((NU32)((NU32) ~(x))) + (NU64)(((NI) 1)))));
	return result;
}
static N_INLINE(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, findSuitableBlock__asVN3MOMG2rBAqS7SmK0xQsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI* fl, NI* sl) {	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* result;
	NU32 tmp;
	result = (tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*)0;
	tmp = (NU32)((*a).slBitmap[((*fl))- 0] & (NU32)((NU64)(((NU32) IL64(4294967295))) << (NU64)((*sl))));
	result = NIM_NIL;
	{
		if (!!((tmp == ((NI) 0)))) goto LA3_;
		(*sl) = lsbit__NR8XkKls428clCUr82szCg_2system(tmp);
		result = (*a).matrix[((*fl))- 0][((*sl))- 0];
	}
	goto LA1_;
	LA3_: ;
	{
		(*fl) = lsbit__NR8XkKls428clCUr82szCg_2system((NU32)((*a).flBitmap & (NU32)((NU64)(((NU32) IL64(4294967295))) << (NU64)((NI)((*fl) + ((NI) 1))))));
		{
			if (!(((NI) 0) < (*fl))) goto LA8_;
			(*sl) = lsbit__NR8XkKls428clCUr82szCg_2system((*a).slBitmap[((*fl))- 0]);
			result = (*a).matrix[((*fl))- 0][((*sl))- 0];
		}
		LA8_: ;
	}
	LA1_: ;
	return result;
}
static N_INLINE(size_t, nimCStrLen)(NCSTRING a) {	size_t result;
	result = (size_t)0;
	result = strlen(a);
	return result;
}
static N_INLINE(void, rawWrite)(FILE* f, NCSTRING s) {	int T1_;
	int T2_;
	T1_ = (int)0;
	T1_ = fwrite(((void*) (s)), ((NI) 1), (s ? nimCStrLen(s) : 0), f);
	(void)(T1_);
	T2_ = (int)0;
	T2_ = fflush(f);
	(void)(T2_);
}
N_LIB_PRIVATE N_NOINLINE(void, raiseOutOfMem__mMRdr4sgmnykA9aWeM9aDZlw)(void) {	{
		if (!!((outOfMemHook__kZNaA7u1MfSW5ZeoGvw8xg == NIM_NIL))) goto LA3_;
		outOfMemHook__kZNaA7u1MfSW5ZeoGvw8xg();
	}
	LA3_: ;
	rawWrite(stderr, "out of memory");
	exit(((NI) 1));
}
static N_INLINE(void*, osAllocPages__HMOhWrY1QMa49a2BcJwSDZQsystem)(NI size) {	void* result;
	result = (void*)0;
	result = mmap(NIM_NIL, size, ((int) 3), ((int) 4098), ((int) -1), ((NI) 0));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (result == NIM_NIL);
		if (T3_) goto LA4_;
		T3_ = (result == ((void*) (((NI) -1))));
		LA4_: ;
		if (!T3_) goto LA5_;
		raiseOutOfMem__mMRdr4sgmnykA9aWeM9aDZlw();
	}
	LA5_: ;
	return result;
}
static N_INLINE(void*, osTryAllocPages__HMOhWrY1QMa49a2BcJwSDZQ_2system)(NI size) {	void* result;
	result = (void*)0;
	result = mmap(NIM_NIL, size, ((int) 3), ((int) 4098), ((int) -1), ((NI) 0));
	{
		if (!(result == ((void*) (((NI) -1))))) goto LA3_;
		result = NIM_NIL;
	}
	LA3_: ;
	return result;
}
static N_INLINE(void, incCurrMem__JPUl8p4328ZL9bXnEtbaZcAsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI bytes) {	(*a).currMem += bytes;
}
static N_INLINE(void, zeroMem__FsvhfMqbswETmyMWtamDewsystem)(void* p, NI size) {	nimZeroMem(p, size);
}
N_LIB_PRIVATE N_NIMCALL(void*, llAlloc__ovw3NMWXeZ0Qi9cGYq1E2Tg)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size) {	void* result;
	result = (void*)0;
	{
		NIM_BOOL T3_;
		tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* old;
		void* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*a).llmem == NIM_NIL);
		if (T3_) goto LA4_;
		T3_ = ((*(*a).llmem).size < size);
		LA4_: ;
		if (!T3_) goto LA5_;
		old = (*a).llmem;
		T7_ = (void*)0;
		T7_ = osAllocPages__HMOhWrY1QMa49a2BcJwSDZQsystem(((NI) 4096));
		(*a).llmem = ((tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw*) (T7_));
		incCurrMem__JPUl8p4328ZL9bXnEtbaZcAsystem(a, ((NI) 4096));
		(*(*a).llmem).size = ((NI) 4072);
		(*(*a).llmem).acc = ((NI) 24);
		(*(*a).llmem).next = old;
	}
	LA5_: ;
	result = ((void*) ((NI)(((NI) (ptrdiff_t) ((*a).llmem)) + (*(*a).llmem).acc)));
	(*(*a).llmem).size -= size;
	(*(*a).llmem).acc += size;
	zeroMem__FsvhfMqbswETmyMWtamDewsystem(result, ((NI) (size)));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, addHeapLink__LIRFHBfc9aX3C5dmMmLnpwA)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* p, NI size) {	tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* it;
	it = (&(*a).heapLinks);
	{
		while (1) {
			NIM_BOOL T3_;
			T3_ = (NIM_BOOL)0;
			T3_ = !((it == NIM_NIL));
			if (!(T3_)) goto LA4_;
			T3_ = (((NI) 30) <= (*it).len);
			LA4_: ;
			if (!T3_) goto LA2;
			it = (*it).next;
		} LA2: ;
	}
	{
		tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* n;
		void* T9_;
		tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* colontmp_;
		NI colontmp__2;
		if (!(it == NIM_NIL)) goto LA7_;
		T9_ = (void*)0;
		T9_ = llAlloc__ovw3NMWXeZ0Qi9cGYq1E2Tg(a, ((NI) 496));
		n = ((tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg*) (T9_));
		(*n).next = (*a).heapLinks.next;
		(*a).heapLinks.next = n;
		colontmp_ = p;
		colontmp__2 = size;
		(*n).chunks[(((NI) 0))- 0].Field0 = colontmp_;
		(*n).chunks[(((NI) 0))- 0].Field1 = colontmp__2;
		(*n).len = ((NI) 1);
	}
	goto LA5_;
	LA7_: ;
	{
		NI L;
		tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* colontmp__3;
		NI colontmp__4;
		L = (*it).len;
		colontmp__3 = p;
		colontmp__4 = size;
		(*it).chunks[(L)- 0].Field0 = colontmp__3;
		(*it).chunks[(L)- 0].Field1 = colontmp__4;
		(*it).len += ((NI) 1);
	}
	LA5_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*, intSetGet__O3FRrWKKUdi8uRTGxiPdIg)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* t, NI key) {	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* result;
	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* it;
{	result = (tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*)0;
	it = (*t).data[((NI)(key & ((NI) 255)))- 0];
	{
		while (1) {
			if (!!((it == NIM_NIL))) goto LA2;
			{
				if (!((*it).key == key)) goto LA5_;
				result = it;
				goto BeforeRet_;
			}
			LA5_: ;
			it = (*it).next;
		} LA2: ;
	}
	result = NIM_NIL;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__9b5xR7VBZVwQDvk5Nr9bDKdQ)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key) {	NIM_BOOL result;
	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* t;
	result = (NIM_BOOL)0;
	t = intSetGet__O3FRrWKKUdi8uRTGxiPdIg(s, (NI)((NI64)(key) >> (NU64)(((NI) 9))));
	{
		NI u;
		if (!!((t == NIM_NIL))) goto LA3_;
		u = (NI)(key & ((NI) 511));
		result = !(((NU)((*t).bits[((NI)((NI64)(u) >> (NU64)(((NI) 6))))- 0] & (NU)((NU64)(((NU) 1)) << (NU64)((NI)(u & ((NI) 63))))) == ((NI) 0)));
	}
	goto LA1_;
	LA3_: ;
	{
		result = NIM_FALSE;
	}
	LA1_: ;
	return result;
}
static N_INLINE(NI, pageIndex__D8ZW0myZd7Fa6ncDvW9a9cMQsystem)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c) {	NI result;
	result = (NI)0;
	result = (NI)((NI64)(((NI) (ptrdiff_t) (c))) >> (NU64)(((NI) 12)));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, requestOsChunks__stlXHMKRKFIGOvq8t4ynRQ_2)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size) {	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* result;
	NI size_2;
	NI nxt;
	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* next;
	NI lastSize;
	NI prv;
	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* prev;
	result = (tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*)0;
	{
		NI usedMem;
		if (!!((*a).blockChunkSizeIncrease)) goto LA3_;
		usedMem = (*a).occ;
		{
			if (!(usedMem < ((NI) 65536))) goto LA7_;
			(*a).nextChunkSize = ((NI) 16384);
		}
		goto LA5_;
		LA7_: ;
		{
			NI T10_;
			T10_ = (NI)0;
			T10_ = roundup__ix09bNPnFKmnm9c9bTyF5mHpAsystem((NI)((NI64)(usedMem) >> (NU64)(((NI) 2))), ((NI) 4096));
			(*a).nextChunkSize = ((T10_ <= (NI)((*a).nextChunkSize * ((NI) 2))) ? T10_ : (NI)((*a).nextChunkSize * ((NI) 2)));
			(*a).nextChunkSize = (((*a).nextChunkSize <= ((NI) 1056964608)) ? (*a).nextChunkSize : ((NI) 1056964608));
		}
		LA5_: ;
	}
	LA3_: ;
	size_2 = size;
	{
		void* T15_;
		if (!((*a).nextChunkSize < size_2)) goto LA13_;
		T15_ = (void*)0;
		T15_ = osAllocPages__HMOhWrY1QMa49a2BcJwSDZQsystem(size_2);
		result = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (T15_));
	}
	goto LA11_;
	LA13_: ;
	{
		void* T17_;
		T17_ = (void*)0;
		T17_ = osTryAllocPages__HMOhWrY1QMa49a2BcJwSDZQ_2system((*a).nextChunkSize);
		result = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (T17_));
		{
			void* T22_;
			if (!(result == NIM_NIL)) goto LA20_;
			T22_ = (void*)0;
			T22_ = osAllocPages__HMOhWrY1QMa49a2BcJwSDZQsystem(size_2);
			result = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (T22_));
			(*a).blockChunkSizeIncrease = NIM_TRUE;
		}
		goto LA18_;
		LA20_: ;
		{
			size_2 = (*a).nextChunkSize;
		}
		LA18_: ;
	}
	LA11_: ;
	incCurrMem__JPUl8p4328ZL9bXnEtbaZcAsystem(a, size_2);
	(*a).freeMem += size_2;
	addHeapLink__LIRFHBfc9aX3C5dmMmLnpwA(a, result, size_2);
	(*result).next = NIM_NIL;
	(*result).prev = NIM_NIL;
	(*result).Sup.size = size_2;
	nxt = (NI)((NU64)(((NI) (ptrdiff_t) (result))) + (NU64)(size_2));
	next = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) (nxt));
	{
		NI T26_;
		NIM_BOOL T27_;
		T26_ = (NI)0;
		T26_ = pageIndex__D8ZW0myZd7Fa6ncDvW9a9cMQsystem(next);
		T27_ = (NIM_BOOL)0;
		T27_ = contains__9b5xR7VBZVwQDvk5Nr9bDKdQ((&(*a).chunkStarts), T26_);
		if (!T27_) goto LA28_;
		(*next).prevSize = (NI)(size_2 | (NI)((*next).prevSize & ((NI) 1)));
	}
	LA28_: ;
	{
		if (!!(((*a).lastSize == ((NI) 0)))) goto LA32_;
		lastSize = (*a).lastSize;
	}
	goto LA30_;
	LA32_: ;
	{
		lastSize = ((NI) 4096);
	}
	LA30_: ;
	prv = (NI)((NU64)(((NI) (ptrdiff_t) (result))) - (NU64)(lastSize));
	prev = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) (prv));
	{
		NIM_BOOL T37_;
		NI T38_;
		T37_ = (NIM_BOOL)0;
		T38_ = (NI)0;
		T38_ = pageIndex__D8ZW0myZd7Fa6ncDvW9a9cMQsystem(prev);
		T37_ = contains__9b5xR7VBZVwQDvk5Nr9bDKdQ((&(*a).chunkStarts), T38_);
		if (!(T37_)) goto LA39_;
		T37_ = ((*prev).size == lastSize);
		LA39_: ;
		if (!T37_) goto LA40_;
		(*result).Sup.prevSize = (NI)(lastSize | (NI)((*result).Sup.prevSize & ((NI) 1)));
	}
	goto LA35_;
	LA40_: ;
	{
		(*result).Sup.prevSize = (NI)(((NI) 0) | (NI)((*result).Sup.prevSize & ((NI) 1)));
	}
	LA35_: ;
	(*a).lastSize = size_2;
	return result;
}
static N_INLINE(NI, pageIndex__cMO7rAWQ0KzYXPVgB0ZR3gsystem)(void* p) {	NI result;
	result = (NI)0;
	result = (NI)((NI64)(((NI) (ptrdiff_t) (p))) >> (NU64)(((NI) 12)));
	return result;
}
static N_INLINE(NIM_BOOL, isAccessible__EZspgz843pJ9adnD0ZpJO6wsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p) {	NIM_BOOL result;
	NI T1_;
	result = (NIM_BOOL)0;
	T1_ = (NI)0;
	T1_ = pageIndex__cMO7rAWQ0KzYXPVgB0ZR3gsystem(p);
	result = contains__9b5xR7VBZVwQDvk5Nr9bDKdQ((&(*a).chunkStarts), T1_);
	return result;
}
static N_INLINE(void, updatePrevSize__9b5Bu9akw7RalDC4isB4QVbgsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI prevSize) {	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* ri;
	ri = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) ((NI)((NU64)(((NI) (ptrdiff_t) (c))) + (NU64)((*c).Sup.size))));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isAccessible__EZspgz843pJ9adnD0ZpJO6wsystem((&(*a)), ((void*) (ri)));
		if (!T3_) goto LA4_;
		(*ri).prevSize = (NI)(prevSize | (NI)((*ri).prevSize & ((NI) 1)));
	}
	LA4_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*, intSetPut__Cw86Sj6YgVACdT20AkWjcA)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* t, NI key) {	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* result;
	result = (tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*)0;
	result = intSetGet__O3FRrWKKUdi8uRTGxiPdIg((&(*t)), key);
	{
		void* T5_;
		if (!(result == NIM_NIL)) goto LA3_;
		T5_ = (void*)0;
		T5_ = llAlloc__ovw3NMWXeZ0Qi9cGYq1E2Tg(a, ((NI) 80));
		result = ((tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*) (T5_));
		(*result).next = (*t).data[((NI)(key & ((NI) 255)))- 0];
		(*t).data[((NI)(key & ((NI) 255)))- 0] = result;
		(*result).key = key;
	}
	LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, incl__tSnfTXv7GxXoDyFDm9bvzqg)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key) {	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* t;
	NI u;
	t = intSetPut__Cw86Sj6YgVACdT20AkWjcA(a, s, (NI)((NI64)(key) >> (NU64)(((NI) 9))));
	u = (NI)(key & ((NI) 511));
	(*t).bits[((NI)((NI64)(u) >> (NU64)(((NI) 6))))- 0] = (NU)((*t).bits[((NI)((NI64)(u) >> (NU64)(((NI) 6))))- 0] | (NU)((NU64)(((NU) 1)) << (NU64)((NI)(u & ((NI) 63)))));
}
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, splitChunk2__gSNzk4aToVCSTE1opfEv2A)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI size) {	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* result;
	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* T1_;
	NI T2_;
	result = (tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*)0;
	result = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) ((NI)((NU64)(((NI) (ptrdiff_t) (c))) + (NU64)(size))));
	(*result).Sup.size = (NI)((*c).Sup.size - size);
	(*result).next = NIM_NIL;
	(*result).prev = NIM_NIL;
	(*result).Sup.prevSize = size;
	updatePrevSize__9b5Bu9akw7RalDC4isB4QVbgsystem(a, c, (*result).Sup.size);
	(*c).Sup.size = size;
	T1_ = (tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*)0;
	T1_ = &result->Sup;
	T2_ = (NI)0;
	T2_ = pageIndex__D8ZW0myZd7Fa6ncDvW9a9cMQsystem(T1_);
	incl__tSnfTXv7GxXoDyFDm9bvzqg(a, (&(*a).chunkStarts), T2_);
	return result;
}
static N_INLINE(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ, mappingInsert__SRLfEtcWb2dn0ht85HEwbQsystem)(NI r) {	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ result;
	nimZeroMem((void*)(&result), sizeof(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ));
	result.Field0 = msbit__NR8XkKls428clCUr82szCgsystem(((NU32) (r)));
	result.Field1 = (NI)((NI)((NI64)(r) >> (NU64)((NI)(result.Field0 - ((NI) 5)))) - ((NI) 32));
	result.Field0 -= ((NI) 6);
	return result;
}
static N_INLINE(void, setBit__I4TSeZGFKfrVTL1oqiweCgsystem)(NI nr, NU32* dest) {	(*dest) = (NU32)((*dest) | (NU32)((NU64)(((NU32) 1)) << (NU64)((NI)(nr & ((NI) 31)))));
}
N_LIB_PRIVATE N_NIMCALL(void, addChunkToMatrix__YSJZJgeU5UU2aa8GNvs3WA)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b) {	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ T1_;
	NI fl;
	NI sl;
	T1_ = mappingInsert__SRLfEtcWb2dn0ht85HEwbQsystem((*b).Sup.size);
	fl = T1_.Field0;
	sl = T1_.Field1;
	(*b).prev = NIM_NIL;
	(*b).next = (*a).matrix[(fl)- 0][(sl)- 0];
	{
		if (!!(((*a).matrix[(fl)- 0][(sl)- 0] == NIM_NIL))) goto LA4_;
		(*(*a).matrix[(fl)- 0][(sl)- 0]).prev = b;
	}
	LA4_: ;
	(*a).matrix[(fl)- 0][(sl)- 0] = b;
	setBit__I4TSeZGFKfrVTL1oqiweCgsystem(sl, (&(*a).slBitmap[(fl)- 0]));
	setBit__I4TSeZGFKfrVTL1oqiweCgsystem(fl, (&(*a).flBitmap));
}
N_LIB_PRIVATE N_NIMCALL(void, splitChunk__BqFVAuadgXfvAiq8B9cBjqQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI size) {	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* rest;
	rest = splitChunk2__gSNzk4aToVCSTE1opfEv2A(a, c, size);
	addChunkToMatrix__YSJZJgeU5UU2aa8GNvs3WA(a, rest);
}
static N_INLINE(void, clearBit__I4TSeZGFKfrVTL1oqiweCg_2system)(NI nr, NU32* dest) {	(*dest) = (NU32)((*dest) & (NU32)((NU32) ~((NU32)((NU64)(((NU32) 1)) << (NU64)((NI)(nr & ((NI) 31)))))));
}
N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix2__XFftAAJrARamxGOKUFQy9aw)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b, NI fl, NI sl) {	(*a).matrix[(fl)- 0][(sl)- 0] = (*b).next;
	{
		if (!!(((*a).matrix[(fl)- 0][(sl)- 0] == NIM_NIL))) goto LA3_;
		(*(*a).matrix[(fl)- 0][(sl)- 0]).prev = NIM_NIL;
	}
	goto LA1_;
	LA3_: ;
	{
		clearBit__I4TSeZGFKfrVTL1oqiweCg_2system(sl, (&(*a).slBitmap[(fl)- 0]));
		{
			if (!((*a).slBitmap[(fl)- 0] == ((NU32) 0))) goto LA8_;
			clearBit__I4TSeZGFKfrVTL1oqiweCg_2system(fl, (&(*a).flBitmap));
		}
		LA8_: ;
	}
	LA1_: ;
	(*b).prev = NIM_NIL;
	(*b).next = NIM_NIL;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, getBigChunk__stlXHMKRKFIGOvq8t4ynRQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size) {	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* result;
	NI size_2;
	NI fl;
	NI sl;
	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* T19_;
	NI T20_;
	result = (tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*)0;
	size_2 = size;
	fl = (NI)0;
	sl = (NI)0;
	mappingSearch__x0o9aLs0rybi5SymOs9ciTLQsystem((&size_2), (&fl), (&sl));
	result = findSuitableBlock__asVN3MOMG2rBAqS7SmK0xQsystem((&(*a)), (&fl), (&sl));
	{
		if (!(result == NIM_NIL)) goto LA3_;
		{
			if (!(size_2 < (NI)(((NI) 128) * ((NI) 4096)))) goto LA7_;
			result = requestOsChunks__stlXHMKRKFIGOvq8t4ynRQ_2(a, (NI)(((NI) 128) * ((NI) 4096)));
			splitChunk__BqFVAuadgXfvAiq8B9cBjqQ(a, result, size_2);
		}
		goto LA5_;
		LA7_: ;
		{
			result = requestOsChunks__stlXHMKRKFIGOvq8t4ynRQ_2(a, size_2);
			{
				if (!(size_2 < (*result).Sup.size)) goto LA12_;
				splitChunk__BqFVAuadgXfvAiq8B9cBjqQ(a, result, size_2);
			}
			LA12_: ;
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		removeChunkFromMatrix2__XFftAAJrARamxGOKUFQy9aw(a, result, fl, sl);
		{
			if (!((NI)(size_2 + ((NI) 4096)) <= (*result).Sup.size)) goto LA17_;
			splitChunk__BqFVAuadgXfvAiq8B9cBjqQ(a, result, size_2);
		}
		LA17_: ;
	}
	LA1_: ;
	(*result).Sup.prevSize = ((NI) 1);
	T19_ = (tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*)0;
	T19_ = &result->Sup;
	T20_ = (NI)0;
	T20_ = pageIndex__D8ZW0myZd7Fa6ncDvW9a9cMQsystem(T19_);
	incl__tSnfTXv7GxXoDyFDm9bvzqg(a, (&(*a).chunkStarts), T20_);
	(*a).freeMem -= size_2;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*, getSmallChunk__0ixBBlKB5QN59bxrmztRmCw)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a) {	tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* result;
	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* res;
	result = (tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*)0;
	res = getBigChunk__stlXHMKRKFIGOvq8t4ynRQ(a, ((NI) 4096));
	result = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) (res));
	return result;
}
static N_INLINE(void, listAdd__G9cCXZ1ju0DgzqrqBg9acaKQsystem)(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ** head, tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c) {	(*c).next = (*head);
	{
		if (!!(((*head) == NIM_NIL))) goto LA3_;
		(*(*head)).prev = c;
	}
	LA3_: ;
	(*head) = c;
}
static N_INLINE(void, listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2system)(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ** head, tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c) {	{
		if (!(c == (*head))) goto LA3_;
		(*head) = (*c).next;
		{
			if (!!(((*head) == NIM_NIL))) goto LA7_;
			(*(*head)).prev = NIM_NIL;
		}
		LA7_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		(*(*c).prev).next = (*c).next;
		{
			if (!!(((*c).next == NIM_NIL))) goto LA12_;
			(*(*c).next).prev = (*c).prev;
		}
		LA12_: ;
	}
	LA1_: ;
	(*c).next = NIM_NIL;
	(*c).prev = NIM_NIL;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, getHugeChunk__stlXHMKRKFIGOvq8t4ynRQ_3)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size) {	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* result;
	void* T1_;
	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* T2_;
	NI T3_;
	result = (tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*)0;
	T1_ = (void*)0;
	T1_ = osAllocPages__HMOhWrY1QMa49a2BcJwSDZQsystem(size);
	result = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (T1_));
	incCurrMem__JPUl8p4328ZL9bXnEtbaZcAsystem(a, size);
	(*result).next = NIM_NIL;
	(*result).prev = NIM_NIL;
	(*result).Sup.size = size;
	(*result).Sup.prevSize = ((NI) 1);
	T2_ = (tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*)0;
	T2_ = &result->Sup;
	T3_ = (NI)0;
	T3_ = pageIndex__D8ZW0myZd7Fa6ncDvW9a9cMQsystem(T2_);
	incl__tSnfTXv7GxXoDyFDm9bvzqg(a, (&(*a).chunkStarts), T3_);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, getBottom__3mqnVBLDtYhZizqw9bvHELA)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a) {	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* result;
	result = (tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*)0;
	result = (&(*a).bottomData);
	{
		if (!((*result).link[(((NI) 0))- 0] == NIM_NIL)) goto LA3_;
		(*result).link[(((NI) 0))- 0] = result;
		(*result).link[(((NI) 1))- 0] = result;
	}
	LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, allocAvlNode__Du8pyfSfDLyN9aoS2IcBsHg)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI key, NI upperBound) {	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* result;
	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* bottom;
	result = (tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*)0;
	{
		if (!!(((*a).freeAvlNodes == NIM_NIL))) goto LA3_;
		result = (*a).freeAvlNodes;
		(*a).freeAvlNodes = (*(*a).freeAvlNodes).link[(((NI) 0))- 0];
	}
	goto LA1_;
	LA3_: ;
	{
		void* T6_;
		T6_ = (void*)0;
		T6_ = llAlloc__ovw3NMWXeZ0Qi9cGYq1E2Tg(a, ((NI) 40));
		result = ((tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*) (T6_));
	}
	LA1_: ;
	(*result).key = key;
	(*result).upperBound = upperBound;
	bottom = getBottom__3mqnVBLDtYhZizqw9bvHELA(a);
	(*result).link[(((NI) 0))- 0] = bottom;
	(*result).link[(((NI) 1))- 0] = bottom;
	(*result).level = ((NI) 1);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, skew__NJo8pxZdXEAIa7wkHls9cOw)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t) {	{
		tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* temp;
		if (!((*(*(*t)).link[(((NI) 0))- 0]).level == (*(*t)).level)) goto LA3_;
		temp = (*t);
		(*t) = (*(*t)).link[(((NI) 0))- 0];
		(*temp).link[(((NI) 0))- 0] = (*(*t)).link[(((NI) 1))- 0];
		(*(*t)).link[(((NI) 1))- 0] = temp;
	}
	LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, split__NJo8pxZdXEAIa7wkHls9cOw_2)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t) {	{
		tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* temp;
		if (!((*(*(*(*t)).link[(((NI) 1))- 0]).link[(((NI) 1))- 0]).level == (*(*t)).level)) goto LA3_;
		temp = (*t);
		(*t) = (*(*t)).link[(((NI) 1))- 0];
		(*temp).link[(((NI) 1))- 0] = (*(*t)).link[(((NI) 0))- 0];
		(*(*t)).link[(((NI) 0))- 0] = temp;
		(*(*t)).level += ((NI) 1);
	}
	LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, add__3D9aOyz4rDquPZKBlqn0xig)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t, NI key, NI upperBound) {	{
		if (!((*(*t)).link[(((NI) 0))- 0] == (*t))) goto LA3_;
		(*t) = allocAvlNode__Du8pyfSfDLyN9aoS2IcBsHg(a, key, upperBound);
	}
	goto LA1_;
	LA3_: ;
	{
		{
			if (!((NU64)(key) < (NU64)((*(*t)).key))) goto LA8_;
			add__3D9aOyz4rDquPZKBlqn0xig(a, &(*(*t)).link[(((NI) 0))- 0], key, upperBound);
		}
		goto LA6_;
		LA8_: ;
		{
			if (!((NU64)((*(*t)).key) < (NU64)(key))) goto LA11_;
			add__3D9aOyz4rDquPZKBlqn0xig(a, &(*(*t)).link[(((NI) 1))- 0], key, upperBound);
		}
		goto LA6_;
		LA11_: ;
		{
		}
		LA6_: ;
		skew__NJo8pxZdXEAIa7wkHls9cOw(t);
		split__NJo8pxZdXEAIa7wkHls9cOw_2(t);
	}
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(void*, rawAlloc__mE4QEVyMvGRVliDWDngZCQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI requestedSize) {	void* result;
	NI size;
	result = (void*)0;
	size = roundup__ix09bNPnFKmnm9c9bTyF5mHpAsystem(requestedSize, ((NI) 8));
	{
		NI s;
		tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c;
		if (!(size <= ((NI) 4040))) goto LA3_;
		s = (NI)(size / ((NI) 8));
		c = (*a).freeSmallChunks[(s)- 0];
		{
			if (!(c == NIM_NIL)) goto LA7_;
			c = getSmallChunk__0ixBBlKB5QN59bxrmztRmCw(a);
			(*c).freeList = NIM_NIL;
			(*c).Sup.size = size;
			(*c).acc = size;
			(*c).free = (NI)(((NI) 4040) - size);
			(*c).next = NIM_NIL;
			(*c).prev = NIM_NIL;
			listAdd__G9cCXZ1ju0DgzqrqBg9acaKQsystem(&(*a).freeSmallChunks[(s)- 0], c);
			result = ((void*) ((&(*c).data)));
		}
		goto LA5_;
		LA7_: ;
		{
			{
				if (!((*c).freeList == NIM_NIL)) goto LA12_;
				result = ((void*) ((NI)((NU64)(((NI) (ptrdiff_t) ((&(*c).data)))) + (NU64)((*c).acc))));
				(*c).acc += size;
			}
			goto LA10_;
			LA12_: ;
			{
				result = ((void*) ((*c).freeList));
				(*c).freeList = (*(*c).freeList).next;
			}
			LA10_: ;
			(*c).free -= size;
		}
		LA5_: ;
		{
			if (!((*c).free < size)) goto LA17_;
			listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2system(&(*a).freeSmallChunks[(s)- 0], c);
		}
		LA17_: ;
		(*a).occ += size;
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_2;
		size = (NI)(requestedSize + ((NI) 32));
		{
			if (!(((NI) 1056964609) <= size)) goto LA22_;
			c_2 = getHugeChunk__stlXHMKRKFIGOvq8t4ynRQ_3(a, size);
		}
		goto LA20_;
		LA22_: ;
		{
			c_2 = getBigChunk__stlXHMKRKFIGOvq8t4ynRQ(a, size);
		}
		LA20_: ;
		result = ((void*) ((&(*c_2).data)));
		{
			if (!((*a).root == NIM_NIL)) goto LA27_;
			(*a).root = getBottom__3mqnVBLDtYhZizqw9bvHELA(a);
		}
		LA27_: ;
		add__3D9aOyz4rDquPZKBlqn0xig(a, &(*a).root, ((NI) (ptrdiff_t) (result)), (NI)((NU64)(((NI) (ptrdiff_t) (result))) + (NU64)(size)));
		(*a).occ += (*c_2).Sup.size;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void*, alloc__UxtcZ3QOXKsB7mMchxUf9cg_2)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, NI size) {	void* result;
	result = (void*)0;
	result = rawAlloc__mE4QEVyMvGRVliDWDngZCQ(allocator, (NI)(((NI) (size)) + ((NI) 16)));
	(*((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) (result))).zeroField = ((NI) 1);
	result = ((void*) ((NI)((NU64)(((NI) (ptrdiff_t) (result))) + (NU64)(((NI) 16)))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void*, alloc0__UxtcZ3QOXKsB7mMchxUf9cg)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, NI size) {	void* result;
	result = (void*)0;
	result = alloc__UxtcZ3QOXKsB7mMchxUf9cg_2(allocator, size);
	zeroMem__FsvhfMqbswETmyMWtamDewsystem(result, size);
	return result;
}
N_LIB_PRIVATE N_NOCONV(void*, alloc0__WrVG9abV9chlTLqkiXYLKwUg)(NI size) {	void* result;
	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	result = (void*)0;
	result = alloc0__UxtcZ3QOXKsB7mMchxUf9cg((&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.region), size);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, init__wKM37ZoL6WtPOU9bn6Ug18A)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, NI cap) {	void* T1_;
	(*s).len = ((NI) 0);
	(*s).cap = cap;
	T1_ = (void*)0;
	T1_ = alloc0__WrVG9abV9chlTLqkiXYLKwUg(((NI) ((NI)(cap * ((NI) 8)))));
	(*s).d = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g**) (T1_));
}
static N_INLINE(NI, atomicInc__v6qORsZ9azlHHhOL1JYACRAsystem)(NI* memLoc, NI x) {	NI result;
	result = (NI)0;
	result = __atomic_add_fetch(memLoc, x, __ATOMIC_RELAXED);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, initGC__amVlU9ajqZ06ujoesRBHcDg)(void) {	NimThreadVars* NimTV_;
	NI T1_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.cycleThreshold = ((NI) 4194304);
	NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.stat.collections = ((NI) 0);
	NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.stat.maxThreshold = ((NI) 0);
	NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.stat.maxStackSize = ((NI) 0);
	init__wKM37ZoL6WtPOU9bn6Ug18A((&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.tempStack), ((NI) 1024));
	init__wKM37ZoL6WtPOU9bn6Ug18A((&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.additionalRoots), ((NI) 1024));
	init__rlyb6Y54ONML4HcId0P2OA((&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.toDispose));
	T1_ = (NI)0;
	T1_ = atomicInc__v6qORsZ9azlHHhOL1JYACRAsystem((&gHeapidGenerator__hd54mEUTGcVuZLChYgtR9bg), ((NI) 1));
	NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.gcThreadId = (NI)(T1_ - ((NI) 1));
}
static N_NIMCALL(void, Marker_tyRef__HsJiUUcO9cHBdUCi0HwkSTA)(void* p, NI op) {
	tyObject_Env_systemdotnim___diB2NTuAIWY0FO9c5IUJRGg* a;
	a = (tyObject_Env_systemdotnim___diB2NTuAIWY0FO9c5IUJRGg*)p;
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) ((NI)((NU64)(((NI) (ptrdiff_t) (usr))) - (NU64)(((NI) 16)))));
	return result;
}
N_NIMCALL(void, nimGCunref)(void* p) {	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell;
	NI L;
	NimThreadVars* NimTV_;
	NI i;
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	cell = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(p);
	L = (NI)(NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.additionalRoots.len - ((NI) 1));
	i = L;
	d = NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.additionalRoots.d;
	{
		while (1) {
			if (!(((NI) 0) <= i)) goto LA2;
			{
				if (!(d[i] == cell)) goto LA5_;
				d[i] = d[L];
				NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.additionalRoots.len -= ((NI) 1);
				goto LA1;
			}
			LA5_: ;
			i -= ((NI) 1);
		} LA2: ;
	} LA1: ;
}
static N_INLINE(void*, cellToUsr__oh8PwD5vOIN9awo20FR9c8qAsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell) {	void* result;
	result = (void*)0;
	result = ((void*) ((NI)((NU64)(((NI) (ptrdiff_t) (cell))) + (NU64)(((NI) 16)))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NU, getDiscriminant__7LnhHf25BuMRNdnPtDbjcw)(void* aa, TNimNode* n) {	NU result;
	NU d;
	NU a;
{	result = (NU)0;
	d = (NU)0;
	a = ((NU) (ptrdiff_t) (aa));
	switch ((*(*n).typ).size) {
	case ((NI) 1):
	{
		d = ((NU) ((*((NU8*) ((NU)((NU64)(a) + (NU64)(((NU) ((*n).offset)))))))));
	}
	break;
	case ((NI) 2):
	{
		d = ((NU) ((*((NU16*) ((NU)((NU64)(a) + (NU64)(((NU) ((*n).offset)))))))));
	}
	break;
	case ((NI) 4):
	{
		d = ((NU) ((*((NU32*) ((NU)((NU64)(a) + (NU64)(((NU) ((*n).offset)))))))));
	}
	break;
	case ((NI) 8):
	{
		d = ((NU) ((*((NU64*) ((NU)((NU64)(a) + (NU64)(((NU) ((*n).offset)))))))));
	}
	break;
	default:
	{
	}
	break;
	}
	result = d;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(TNimNode*, selectBranch__2us2RQByTh81i9aW4EEgfmw)(void* aa, TNimNode* n) {	TNimNode* result;
	NU discr;
	result = (TNimNode*)0;
	discr = getDiscriminant__7LnhHf25BuMRNdnPtDbjcw(aa, n);
	{
		if (!((NU64)(discr) < (NU64)(((NU) ((*n).len))))) goto LA3_;
		result = (*n).sons[(discr)- 0];
		{
			if (!(result == NIM_NIL)) goto LA7_;
			result = (*n).sons[((*n).len)- 0];
		}
		LA7_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		result = (*n).sons[((*n).len)- 0];
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, forAllSlotsAux__ld9axHPi9bpxevVrdgKiDF5Q)(void* dest, TNimNode* n, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op) {	NI d;
	d = ((NI) (ptrdiff_t) (dest));
	switch ((*n).kind) {
	case ((tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ) 1):
	{
		forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw(((void*) ((NI)((NU64)(d) + (NU64)((*n).offset)))), (*n).typ, op);
	}
	break;
	case ((tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ) 2):
	{
		{
			NI i;
			NI colontmp_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = (NI)((*n).len - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA5;
					i = res;
					forAllSlotsAux__ld9axHPi9bpxevVrdgKiDF5Q(dest, (*n).sons[(i)- 0], op);
					res += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ) 3):
	{
		TNimNode* m;
		m = selectBranch__2us2RQByTh81i9aW4EEgfmw(dest, n);
		{
			if (!!((m == NIM_NIL))) goto LA9_;
			forAllSlotsAux__ld9axHPi9bpxevVrdgKiDF5Q(dest, m, op);
		}
		LA9_: ;
	}
	break;
	case ((tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ) 0):
	{
	}
	break;
	}
}
N_LIB_PRIVATE N_NIMCALL(void, forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw)(void* dest, TNimType* mt, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op) {	NI d;
{	d = ((NI) (ptrdiff_t) (dest));
	{
		if (!(dest == NIM_NIL)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		if (!!((((*mt).flags &(1U<<((NU)(((tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ) 0))&7U)))!=0))) goto LA7_;
		switch ((*mt).kind) {
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 22):
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 28):
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 24):
		{
			doOperation__sl6eqhLncFedgwzv6TlMVw((*((void**) (d))), op);
		}
		break;
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 17):
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 18):
		{
			forAllSlotsAux__ld9axHPi9bpxevVrdgKiDF5Q(dest, (*mt).node, op);
		}
		break;
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 16):
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 4):
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 27):
		{
			{
				NI i;
				NI colontmp_;
				NI res;
				i = (NI)0;
				colontmp_ = (NI)0;
				colontmp_ = (NI)((NI)((*mt).size / (*(*mt).base).size) - ((NI) 1));
				res = ((NI) 0);
				{
					while (1) {
						if (!(res <= colontmp_)) goto LA14;
						i = res;
						forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw(((void*) ((NI)((NU64)(d) + (NU64)((NI)((NU64)(i) * (NU64)((*(*mt).base).size)))))), (*mt).base, op);
						res += ((NI) 1);
					} LA14: ;
				}
			}
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA7_: ;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, forAllChildren__XCvXrotwhq0gugZtuZTNPQ)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op) {	tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
	marker = (*(*cell).typ).marker;
	{
		void* T5_;
		if (!!((marker == NIM_NIL))) goto LA3_;
		T5_ = (void*)0;
		T5_ = cellToUsr__oh8PwD5vOIN9awo20FR9c8qAsystem(cell);
		marker(T5_, ((NI) (op)));
	}
	goto LA1_;
	LA3_: ;
	{
		switch ((*(*cell).typ).kind) {
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 22):
		{
			void* T8_;
			T8_ = (void*)0;
			T8_ = cellToUsr__oh8PwD5vOIN9awo20FR9c8qAsystem(cell);
			forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw(T8_, (*(*cell).typ).base, op);
		}
		break;
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 24):
		{
			NI d;
			void* T10_;
			TGenericSeq* s;
			T10_ = (void*)0;
			T10_ = cellToUsr__oh8PwD5vOIN9awo20FR9c8qAsystem(cell);
			d = ((NI) (ptrdiff_t) (T10_));
			s = ((TGenericSeq*) (d));
			{
				if (!!((s == NIM_NIL))) goto LA13_;
				{
					NI i;
					NI colontmp_;
					NI res;
					i = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = (NI)((*s).len - ((NI) 1));
					res = ((NI) 0);
					{
						while (1) {
							if (!(res <= colontmp_)) goto LA17;
							i = res;
							forAllChildrenAux__3hKpU9c72lqUqbltnsyFjRw(((void*) ((NI)((NU64)((NI)((NU64)(d) + (NU64)((NI)((NU64)(i) * (NU64)((*(*(*cell).typ).base).size))))) + (NU64)(((NI) 16))))), (*(*cell).typ).base, op);
							res += ((NI) 1);
						} LA17: ;
					}
				}
			}
			LA13_: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, mark__SOJE9bROCOc8iabVsKM64Sg)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {	{
		void* c_2;
		tyObject_SharedListNodecolonObjectType___KGw0YAw6W9aSz3Sr9aXGu7zg* it;
		c_2 = (void*)0;
		acquire__9bDG9bIkA6DtNcXVdL7bnLvg((&(*gch).toDispose.lock));
		it = (*gch).toDispose.head;
		{
			while (1) {
				if (!!((it == NIM_NIL))) goto LA3;
				{
					NI i;
					NI colontmp_;
					NI res;
					i = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = (NI)((*it).dataLen - ((NI) 1));
					res = ((NI) 0);
					{
						while (1) {
							if (!(res <= colontmp_)) goto LA6;
							i = res;
							c_2 = (*it).d[(i)- 0];
							nimGCunref(c_2);
							res += ((NI) 1);
						} LA6: ;
					}
				}
				it = (*it).next;
			} LA3: ;
		}
		release__9bDG9bIkA6DtNcXVdL7bnLvg_2((&(*gch).toDispose.lock));
	}
	(*c).refcount = ((NI) 2);
	forAllChildren__XCvXrotwhq0gugZtuZTNPQ(c, ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 1));
	{
		while (1) {
			tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* d;
			if (!(((NI) 0) < (*gch).tempStack.len)) goto LA8;
			(*gch).tempStack.len -= ((NI) 1);
			d = (*gch).tempStack.d[(*gch).tempStack.len];
			{
				if (!((*d).refcount == ((NI) 0))) goto LA11_;
				(*d).refcount = ((NI) 2);
				forAllChildren__XCvXrotwhq0gugZtuZTNPQ(d, ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 1));
			}
			LA11_: ;
		} LA8: ;
	}
}
N_LIB_PRIVATE N_NOCONV(void*, alloc__WrVG9abV9chlTLqkiXYLKwUg_2)(NI size) {	void* result;
	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	result = (void*)0;
	result = alloc__UxtcZ3QOXKsB7mMchxUf9cg_2((&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.region), size);
	return result;
}
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {	void* T1_;
	T1_ = (void*)0;
	T1_ = memcpy(dest, source, ((size_t) (size)));
}
static N_INLINE(void, copyMem__i80o3k0SgEI5gTRCzYdyWAsystem)(void* dest, void* source, NI size) {	nimCopyMem(dest, source, size);
}
static N_INLINE(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*, pageAddr__JNTkgd9cRu9a9bEvn7wS0U8EAsystem)(void* p) {	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* result;
	result = (tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*)0;
	result = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) ((NI)(((NI) (ptrdiff_t) (p)) & ((NI) -4096))));
	return result;
}
static N_INLINE(NIM_BOOL, isSmallChunk__2Ih49c9ai3KYJhUe3C8xg07wsystem)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c) {	NIM_BOOL result;
{	result = (NIM_BOOL)0;
	result = ((*c).size <= ((NI) 4040));
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NIM_BOOL, chunkUnused__2Ih49c9ai3KYJhUe3C8xg07w_2system)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c) {	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((NI)((*c).prevSize & ((NI) 1)) == ((NI) 0));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix__YSJZJgeU5UU2aa8GNvs3WA_2)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b) {	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ T1_;
	NI fl;
	NI sl;
	T1_ = mappingInsert__SRLfEtcWb2dn0ht85HEwbQsystem((*b).Sup.size);
	fl = T1_.Field0;
	sl = T1_.Field1;
	{
		if (!!(((*b).next == NIM_NIL))) goto LA4_;
		(*(*b).next).prev = (*b).prev;
	}
	LA4_: ;
	{
		if (!!(((*b).prev == NIM_NIL))) goto LA8_;
		(*(*b).prev).next = (*b).next;
	}
	LA8_: ;
	{
		if (!((*a).matrix[(fl)- 0][(sl)- 0] == b)) goto LA12_;
		(*a).matrix[(fl)- 0][(sl)- 0] = (*b).next;
		{
			if (!((*a).matrix[(fl)- 0][(sl)- 0] == NIM_NIL)) goto LA16_;
			clearBit__I4TSeZGFKfrVTL1oqiweCg_2system(sl, (&(*a).slBitmap[(fl)- 0]));
			{
				if (!((*a).slBitmap[(fl)- 0] == ((NU32) 0))) goto LA20_;
				clearBit__I4TSeZGFKfrVTL1oqiweCg_2system(fl, (&(*a).flBitmap));
			}
			LA20_: ;
		}
		LA16_: ;
	}
	LA12_: ;
	(*b).prev = NIM_NIL;
	(*b).next = NIM_NIL;
}
N_LIB_PRIVATE N_NIMCALL(void, excl__9cAWqpgI1NbhhZ3cVPHhI5A)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key) {	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* t;
	t = intSetGet__O3FRrWKKUdi8uRTGxiPdIg((&(*s)), (NI)((NI64)(key) >> (NU64)(((NI) 9))));
	{
		NI u;
		if (!!((t == NIM_NIL))) goto LA3_;
		u = (NI)(key & ((NI) 511));
		(*t).bits[((NI)((NI64)(u) >> (NU64)(((NI) 6))))- 0] = (NU)((*t).bits[((NI)((NI64)(u) >> (NU64)(((NI) 6))))- 0] & (NU)((NU64) ~((NU)((NU64)(((NU) 1)) << (NU64)((NI)(u & ((NI) 63)))))));
	}
	LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, freeBigChunk__IPvsryqksLyNxxag3IQr2g)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c) {	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_2;
	NI prevSize;
	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* ri;
	c_2 = c;
	(*a).freeMem += (*c_2).Sup.size;
	(*c_2).Sup.prevSize = (NI)((*c_2).Sup.prevSize & ((NI) -2));
	prevSize = (*c_2).Sup.prevSize;
	{
		tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* le;
		if (!!((prevSize == ((NI) 0)))) goto LA3_;
		le = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) ((NI)((NU64)(((NI) (ptrdiff_t) (c_2))) - (NU64)(prevSize))));
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = isAccessible__EZspgz843pJ9adnD0ZpJO6wsystem((&(*a)), ((void*) (le)));
			if (!(T7_)) goto LA8_;
			T7_ = chunkUnused__2Ih49c9ai3KYJhUe3C8xg07w_2system(le);
			LA8_: ;
			if (!T7_) goto LA9_;
			{
				NIM_BOOL T13_;
				NIM_BOOL T14_;
				tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* T18_;
				NI T19_;
				T13_ = (NIM_BOOL)0;
				T14_ = (NIM_BOOL)0;
				T14_ = isSmallChunk__2Ih49c9ai3KYJhUe3C8xg07wsystem(le);
				T13_ = !(T14_);
				if (!(T13_)) goto LA15_;
				T13_ = ((*le).size < ((NI) 1056964608));
				LA15_: ;
				if (!T13_) goto LA16_;
				removeChunkFromMatrix__YSJZJgeU5UU2aa8GNvs3WA_2(a, ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (le)));
				(*le).size += (*c_2).Sup.size;
				T18_ = (tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*)0;
				T18_ = &c_2->Sup;
				T19_ = (NI)0;
				T19_ = pageIndex__D8ZW0myZd7Fa6ncDvW9a9cMQsystem(T18_);
				excl__9cAWqpgI1NbhhZ3cVPHhI5A((&(*a).chunkStarts), T19_);
				c_2 = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (le));
				{
					tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* rest;
					if (!(((NI) 1056964608) < (*c_2).Sup.size)) goto LA22_;
					rest = splitChunk2__gSNzk4aToVCSTE1opfEv2A(a, c_2, ((NI) 1056964608));
					addChunkToMatrix__YSJZJgeU5UU2aa8GNvs3WA(a, c_2);
					c_2 = rest;
				}
				LA22_: ;
			}
			LA16_: ;
		}
		LA9_: ;
	}
	LA3_: ;
	ri = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) ((NI)((NU64)(((NI) (ptrdiff_t) (c_2))) + (NU64)((*c_2).Sup.size))));
	{
		NIM_BOOL T26_;
		T26_ = (NIM_BOOL)0;
		T26_ = isAccessible__EZspgz843pJ9adnD0ZpJO6wsystem((&(*a)), ((void*) (ri)));
		if (!(T26_)) goto LA27_;
		T26_ = chunkUnused__2Ih49c9ai3KYJhUe3C8xg07w_2system(ri);
		LA27_: ;
		if (!T26_) goto LA28_;
		{
			NIM_BOOL T32_;
			NIM_BOOL T33_;
			NI T37_;
			T32_ = (NIM_BOOL)0;
			T33_ = (NIM_BOOL)0;
			T33_ = isSmallChunk__2Ih49c9ai3KYJhUe3C8xg07wsystem(ri);
			T32_ = !(T33_);
			if (!(T32_)) goto LA34_;
			T32_ = ((*c_2).Sup.size < ((NI) 1056964608));
			LA34_: ;
			if (!T32_) goto LA35_;
			removeChunkFromMatrix__YSJZJgeU5UU2aa8GNvs3WA_2(a, ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (ri)));
			(*c_2).Sup.size += (*ri).size;
			T37_ = (NI)0;
			T37_ = pageIndex__D8ZW0myZd7Fa6ncDvW9a9cMQsystem(ri);
			excl__9cAWqpgI1NbhhZ3cVPHhI5A((&(*a).chunkStarts), T37_);
			{
				tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* rest_2;
				if (!(((NI) 1056964608) < (*c_2).Sup.size)) goto LA40_;
				rest_2 = splitChunk2__gSNzk4aToVCSTE1opfEv2A(a, c_2, ((NI) 1056964608));
				addChunkToMatrix__YSJZJgeU5UU2aa8GNvs3WA(a, rest_2);
			}
			LA40_: ;
		}
		LA35_: ;
	}
	LA28_: ;
	addChunkToMatrix__YSJZJgeU5UU2aa8GNvs3WA(a, c_2);
}
static N_INLINE(void, deallocAvlNode__pgghNmDMWP23LqxNq9atk7gsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n) {	(*n).link[(((NI) 0))- 0] = (*a).freeAvlNodes;
	(*a).freeAvlNodes = n;
}
N_LIB_PRIVATE N_NIMCALL(void, del__Io5JDKCS5u26IEWw0J53hQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t, NI x) {{	{
		if (!((*(*t)).link[(((NI) 0))- 0] == (*t))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	(*a).last = (*t);
	{
		if (!((NU64)(x) < (NU64)((*(*t)).key))) goto LA7_;
		del__Io5JDKCS5u26IEWw0J53hQ(a, &(*(*t)).link[(((NI) 0))- 0], x);
	}
	goto LA5_;
	LA7_: ;
	{
		(*a).deleted = (*t);
		del__Io5JDKCS5u26IEWw0J53hQ(a, &(*(*t)).link[(((NI) 1))- 0], x);
	}
	LA5_: ;
	{
		NIM_BOOL T12_;
		NIM_BOOL T13_;
		T12_ = (NIM_BOOL)0;
		T13_ = (NIM_BOOL)0;
		T13_ = ((*t) == (*a).last);
		if (!(T13_)) goto LA14_;
		T13_ = !(((*(*a).deleted).link[(((NI) 0))- 0] == (*a).deleted));
		LA14_: ;
		T12_ = T13_;
		if (!(T12_)) goto LA15_;
		T12_ = (x == (*(*a).deleted).key);
		LA15_: ;
		if (!T12_) goto LA16_;
		(*(*a).deleted).key = (*(*t)).key;
		(*(*a).deleted).upperBound = (*(*t)).upperBound;
		(*a).deleted = getBottom__3mqnVBLDtYhZizqw9bvHELA(a);
		(*t) = (*(*t)).link[(((NI) 1))- 0];
		deallocAvlNode__pgghNmDMWP23LqxNq9atk7gsystem(a, (*a).last);
	}
	goto LA10_;
	LA16_: ;
	{
		NIM_BOOL T19_;
		T19_ = (NIM_BOOL)0;
		T19_ = ((*(*(*t)).link[(((NI) 0))- 0]).level < (NI)((*(*t)).level - ((NI) 1)));
		if (T19_) goto LA20_;
		T19_ = ((*(*(*t)).link[(((NI) 1))- 0]).level < (NI)((*(*t)).level - ((NI) 1)));
		LA20_: ;
		if (!T19_) goto LA21_;
		(*(*t)).level -= ((NI) 1);
		{
			if (!((*(*t)).level < (*(*(*t)).link[(((NI) 1))- 0]).level)) goto LA25_;
			(*(*(*t)).link[(((NI) 1))- 0]).level = (*(*t)).level;
		}
		LA25_: ;
		skew__NJo8pxZdXEAIa7wkHls9cOw(t);
		skew__NJo8pxZdXEAIa7wkHls9cOw(&(*(*t)).link[(((NI) 1))- 0]);
		skew__NJo8pxZdXEAIa7wkHls9cOw(&(*(*(*t)).link[(((NI) 1))- 0]).link[(((NI) 1))- 0]);
		split__NJo8pxZdXEAIa7wkHls9cOw_2(t);
		split__NJo8pxZdXEAIa7wkHls9cOw_2(&(*(*t)).link[(((NI) 1))- 0]);
	}
	goto LA10_;
	LA21_: ;
	LA10_: ;
	}BeforeRet_: ;
}
static N_INLINE(void, decCurrMem__JPUl8p4328ZL9bXnEtbaZcA_2system)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI bytes) {	(*a).maxMem = (((*a).maxMem >= (*a).currMem) ? (*a).maxMem : (*a).currMem);
	(*a).currMem -= bytes;
}
static N_INLINE(void, osDeallocPages__dRMEutPSAkbR9b9blNmTzvoQsystem)(void* p, NI size) {	int T1_;
	T1_ = (int)0;
	T1_ = munmap(p, size);
	(void)(T1_);
}
N_LIB_PRIVATE N_NIMCALL(void, freeHugeChunk__IPvsryqksLyNxxag3IQr2g_2)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c) {	NI size;
	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* T1_;
	NI T2_;
	size = (*c).Sup.size;
	T1_ = (tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*)0;
	T1_ = &c->Sup;
	T2_ = (NI)0;
	T2_ = pageIndex__D8ZW0myZd7Fa6ncDvW9a9cMQsystem(T1_);
	excl__9cAWqpgI1NbhhZ3cVPHhI5A((&(*a).chunkStarts), T2_);
	decCurrMem__JPUl8p4328ZL9bXnEtbaZcA_2system(a, size);
	osDeallocPages__dRMEutPSAkbR9b9blNmTzvoQsystem(((void*) (c)), size);
}
N_LIB_PRIVATE N_NIMCALL(void, rawDealloc__K7uQ6aTKvW6OnOV8EMoNNQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p) {	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c;
	c = pageAddr__JNTkgd9cRu9a9bEvn7wS0U8EAsystem(p);
	{
		NIM_BOOL T3_;
		tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c_2;
		NI s;
		tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ* f;
		T3_ = (NIM_BOOL)0;
		T3_ = isSmallChunk__2Ih49c9ai3KYJhUe3C8xg07wsystem(c);
		if (!T3_) goto LA4_;
		c_2 = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) (c));
		s = (*c_2).Sup.size;
		(*a).occ -= s;
		f = ((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) (p));
		(*f).zeroField = ((NI) 0);
		(*f).next = (*c_2).freeList;
		(*c_2).freeList = f;
		{
			if (!((*c_2).free < s)) goto LA8_;
			listAdd__G9cCXZ1ju0DgzqrqBg9acaKQsystem(&(*a).freeSmallChunks[((NI)(s / ((NI) 8)))- 0], c_2);
			(*c_2).free += s;
		}
		goto LA6_;
		LA8_: ;
		{
			(*c_2).free += s;
			{
				if (!((*c_2).free == ((NI) 4040))) goto LA13_;
				listRemove__G9cCXZ1ju0DgzqrqBg9acaKQ_2system(&(*a).freeSmallChunks[((NI)(s / ((NI) 8)))- 0], c_2);
				(*c_2).Sup.size = ((NI) 4096);
				freeBigChunk__IPvsryqksLyNxxag3IQr2g(a, ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (c_2)));
			}
			LA13_: ;
		}
		LA6_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_3;
		c_3 = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (c));
		(*a).occ -= (*c_3).Sup.size;
		(*a).deleted = getBottom__3mqnVBLDtYhZizqw9bvHELA(a);
		del__Io5JDKCS5u26IEWw0J53hQ(a, &(*a).root, ((NI) (ptrdiff_t) ((&(*c_3).data))));
		{
			if (!(((NI) 1056964609) <= (*c_3).Sup.size)) goto LA18_;
			freeHugeChunk__IPvsryqksLyNxxag3IQr2g_2(a, c_3);
		}
		goto LA16_;
		LA18_: ;
		{
			freeBigChunk__IPvsryqksLyNxxag3IQr2g(a, c_3);
		}
		LA16_: ;
	}
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, dealloc__Jg1OaY9ahkT3MBopLAXRSGw)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, void* p) {	void* x;
	x = ((void*) ((NI)((NU64)(((NI) (ptrdiff_t) (p))) - (NU64)(((NI) 16)))));
	rawDealloc__K7uQ6aTKvW6OnOV8EMoNNQ(allocator, x);
}
N_LIB_PRIVATE N_NOCONV(void, dealloc__lmwgHsdhTsrQaepFju8wew)(void* p) {	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	dealloc__Jg1OaY9ahkT3MBopLAXRSGw((&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.region), p);
}
static N_INLINE(void, add__W9aRfhn7HvnQTPAb8ajo1uwsystem)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
		void* T5_;
		if (!((*s).cap <= (*s).len)) goto LA3_;
		(*s).cap = (NI)((NI)((*s).cap * ((NI) 3)) / ((NI) 2));
		T5_ = (void*)0;
		T5_ = alloc__WrVG9abV9chlTLqkiXYLKwUg_2(((NI) ((NI)((*s).cap * ((NI) 8)))));
		d = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g**) (T5_));
		copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) (d)), ((void*) ((*s).d)), ((NI) ((NI)((*s).len * ((NI) 8)))));
		dealloc__lmwgHsdhTsrQaepFju8wew(((void*) ((*s).d)));
		(*s).d = d;
	}
	LA3_: ;
	(*s).d[(*s).len] = c;
	(*s).len += ((NI) 1);
}
N_LIB_PRIVATE N_NIMCALL(void, doOperation__sl6eqhLncFedgwzv6TlMVw)(void* p, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op) {	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c;
	NimThreadVars* NimTV_;
{	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	{
		if (!(p == NIM_NIL)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	c = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(p);
	switch (op) {
	case ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 0):
	{
		mark__SOJE9bROCOc8iabVsKM64Sg((&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q), c);
	}
	break;
	case ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 1):
	{
		add__W9aRfhn7HvnQTPAb8ajo1uwsystem((&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.tempStack), c);
	}
	break;
	}
	}BeforeRet_: ;
}
N_NIMCALL(void, nimGCvisit)(void* d, NI op) {	doOperation__sl6eqhLncFedgwzv6TlMVw(d, ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) (op)));
}
static N_NIMCALL(void, Marker_tySequence__WF89a8QyKeDCh4DYWTmSiBg)(void* p, NI op) {
	tySequence__WF89a8QyKeDCh4DYWTmSiBg* a;
	NI T1_;
	a = (tySequence__WF89a8QyKeDCh4DYWTmSiBg*)p;
	T1_ = (NI)0;
	for (T1_ = 0; T1_ < (a ? a->Sup.len : 0); T1_++) {
	nimGCvisit((void*)a->data[T1_].ClE_0, op);
	}
}
static N_NIMCALL(void, TM__Q5wkpxktOdTGvlSRo9bzt9aw_3)(void) {
	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	nimGCvisit((void*)NimTV_->threadDestructionHandlers__8OmU3x0fNdA0DLtOmU3kWw, 0);
}
N_NIMCALL(void, nimRegisterThreadLocalMarker)(tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ markerProc) {	{
		if (!(threadLocalMarkersLen <= ((NI) 3499))) goto LA3_;
		threadLocalMarkers[(threadLocalMarkersLen)- 0] = markerProc;
		threadLocalMarkersLen += ((NI) 1);
	}
	goto LA1_;
	LA3_: ;
	{
		rawWrite(stderr, "[GC] cannot register thread local variable; too many thread loc"
"al variables");
		exit(((NI) 1));
	}
	LA1_: ;
}
static N_NIMCALL(void, Marker_tySequence__uB9b75OUPRENsBAu4AnoePA)(void* p, NI op) {
	tySequence__uB9b75OUPRENsBAu4AnoePA* a;
	NI T1_;
	a = (tySequence__uB9b75OUPRENsBAu4AnoePA*)p;
	T1_ = (NI)0;
}
static N_NIMCALL(void, Marker_tyRef__vU9aO9cTqOMn6CBzhV8rX7Sw)(void* p, NI op) {
	Exception* a;
	a = (Exception*)p;
	nimGCvisit((void*)(*a).parent, op);
	nimGCvisit((void*)(*a).message, op);
	nimGCvisit((void*)(*a).trace, op);
	nimGCvisit((void*)(*a).up, op);
}
static N_NIMCALL(void, TM__Q5wkpxktOdTGvlSRo9bzt9aw_6)(void) {
	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	nimGCvisit((void*)NimTV_->currException__9bVPeDJlYTi9bQApZpfH8wjg, 0);
}
static N_INLINE(NI, getFreeMem__o7kGt4Ciqh9aCBinZc9bV9cugsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a) {	NI result;
	result = (NI)0;
	result = (*a).freeMem;
	return result;
}
static N_INLINE(NI, getOccupiedMem__o7kGt4Ciqh9aCBinZc9bV9cug_2system)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a) {	NI result;
	result = (NI)0;
	result = (*a).occ;
	return result;
}
N_LIB_PRIVATE N_NOINLINE(NI, stackSize__VOU3z9bbtHMYBiCVB5tMX1g)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack) {	NI result;
	void* volatile pos;
	result = (NI)0;
	pos = (void*)0;
	pos = ((void*) ((&pos)));
	{
		if (!!((pos == NIM_NIL))) goto LA3_;
		result = (NI)((NU64)(((NI) (ptrdiff_t) ((*stack).bottom))) - (NU64)(((NI) (ptrdiff_t) (pos))));
	}
	goto LA1_;
	LA3_: ;
	{
		result = ((NI) 0);
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NOINLINE(NI, stackSize__0yw8cp0rOgL8i0O5kzzb0g)(void) {	NI result;
	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	result = (NI)0;
	{
		tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack;
		NI T2_;
		stack = (tyObject_GcStack__7fytPA5bBsob6See21YMRA*)0;
		stack = (&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.stack);
		T2_ = (NI)0;
		T2_ = stackSize__VOU3z9bbtHMYBiCVB5tMX1g(stack);
		result = (NI)(result + T2_);
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, lowGauge__vu9a10GqvNeXA9alSqdG48cw)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n) {	NI result;
	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* it;
	result = (NI)0;
	it = n;
	{
		while (1) {
			if (!!(((*it).link[(((NI) 0))- 0] == it))) goto LA2;
			result = (*it).key;
			it = (*it).link[(((NI) 0))- 0];
		} LA2: ;
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, highGauge__vu9a10GqvNeXA9alSqdG48cw_2)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n) {	NI result;
	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* it;
	result = (NI)0;
	result = ((NI) -1);
	it = n;
	{
		while (1) {
			if (!!(((*it).link[(((NI) 0))- 0] == it))) goto LA2;
			result = (*it).upperBound;
			it = (*it).link[(((NI) 1))- 0];
		} LA2: ;
	}
	return result;
}
static N_INLINE(void, prepareForInteriorPointerChecking__ot9aebHKDFT2OPbEVY47F9bQsystem)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a) {	(*a).minLargeObj = lowGauge__vu9a10GqvNeXA9alSqdG48cw((*a).root);
	(*a).maxLargeObj = highGauge__vu9a10GqvNeXA9alSqdG48cw_2((*a).root);
}
N_LIB_PRIVATE N_NIMCALL(void, setPosition__Fnam3HOmbq2ymF0tDBas5Q)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack, void* position) {}
N_LIB_PRIVATE N_NIMCALL(tyObject_GcStack__7fytPA5bBsob6See21YMRA*, getActiveStack__muO7WGG730PTJWpoUnluHg)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {	tyObject_GcStack__7fytPA5bBsob6See21YMRA* result;
	result = (tyObject_GcStack__7fytPA5bBsob6See21YMRA*)0;
	result = (&(*gch).stack);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isActiveStack__c6NLIYJQ5DIKtQqRJH8S7w)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack) {	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = NIM_TRUE;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, inRange__BIq3l3oBvrBeYSWFT5iXiw)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root, NI key) {	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* result;
	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* it;
{	result = (tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*)0;
	it = root;
	{
		while (1) {
			if (!!(((*it).link[(((NI) 0))- 0] == it))) goto LA2;
			{
				NIM_BOOL T5_;
				T5_ = (NIM_BOOL)0;
				T5_ = ((NU64)((*it).key) <= (NU64)(key));
				if (!(T5_)) goto LA6_;
				T5_ = ((NU64)(key) < (NU64)((*it).upperBound));
				LA6_: ;
				if (!T5_) goto LA7_;
				result = it;
				goto BeforeRet_;
			}
			LA7_: ;
			it = (*it).link[(((NU64)((*it).key) < (NU64)(key)))- 0];
		} LA2: ;
	}
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void*, interiorAllocatedPtr__NuzKjA4SX9afyji9cHHIuKpQ)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p) {	void* result;
	result = (void*)0;
	{
		NIM_BOOL T3_;
		tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c;
		T3_ = (NIM_BOOL)0;
		T3_ = isAccessible__EZspgz843pJ9adnD0ZpJO6wsystem(a, p);
		if (!T3_) goto LA4_;
		c = pageAddr__JNTkgd9cRu9a9bEvn7wS0U8EAsystem(p);
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = chunkUnused__2Ih49c9ai3KYJhUe3C8xg07w_2system(c);
			if (!!(T8_)) goto LA9_;
			{
				NIM_BOOL T13_;
				tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c_2;
				NI offset;
				T13_ = (NIM_BOOL)0;
				T13_ = isSmallChunk__2Ih49c9ai3KYJhUe3C8xg07wsystem(c);
				if (!T13_) goto LA14_;
				c_2 = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) (c));
				offset = (NI)((NU64)((NI)(((NI) (ptrdiff_t) (p)) & ((NI) 4095))) - (NU64)(((NI) 56)));
				{
					tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ* d;
					if (!((NU64)(offset) < (NU64)((*c_2).acc))) goto LA18_;
					d = ((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) ((NI)((NU64)((NI)((NU64)(((NI) (ptrdiff_t) ((&(*c_2).data)))) + (NU64)(offset))) - (NU64)((NI)((NU64)(offset) % (NU64)((*c_2).Sup.size))))));
					{
						if (!((NU64)(((NI) 1)) < (NU64)((*d).zeroField))) goto LA22_;
						result = ((void*) (d));
					}
					LA22_: ;
				}
				LA18_: ;
			}
			goto LA11_;
			LA14_: ;
			{
				tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_3;
				NF* d_2;
				c_3 = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (c));
				d_2 = (&(*c_3).data);
				{
					NIM_BOOL T27_;
					T27_ = (NIM_BOOL)0;
					T27_ = (((void*) (d_2)) <= p);
					if (!(T27_)) goto LA28_;
					T27_ = ((NU64)(((NI) 1)) < (NU64)((*((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) (d_2))).zeroField));
					LA28_: ;
					if (!T27_) goto LA29_;
					result = ((void*) (d_2));
				}
				LA29_: ;
			}
			LA11_: ;
		}
		LA9_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		NI q;
		q = ((NI) (ptrdiff_t) (p));
		{
			NIM_BOOL T34_;
			tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* avlNode;
			T34_ = (NIM_BOOL)0;
			T34_ = ((NU64)((*a).minLargeObj) <= (NU64)(q));
			if (!(T34_)) goto LA35_;
			T34_ = ((NU64)(q) <= (NU64)((*a).maxLargeObj));
			LA35_: ;
			if (!T34_) goto LA36_;
			avlNode = inRange__BIq3l3oBvrBeYSWFT5iXiw((*a).root, q);
			{
				void* k;
				tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_4;
				tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* T42_;
				if (!!((avlNode == NIM_NIL))) goto LA40_;
				k = ((void*) ((*avlNode).key));
				T42_ = (tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*)0;
				T42_ = pageAddr__JNTkgd9cRu9a9bEvn7wS0U8EAsystem(k);
				c_4 = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (T42_));
				{
					if (!((NU64)(((NI) 1)) < (NU64)((*((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) (k))).zeroField))) goto LA45_;
					result = k;
				}
				LA45_: ;
			}
			LA40_: ;
		}
		LA36_: ;
	}
	LA1_: ;
	return result;
}
static N_INLINE(void, gcMark__x5SbLN3uVBCsEa67N20nPwsystem)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, void* p) {	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell;
	NI c;
	cell = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(p);
	c = ((NI) (ptrdiff_t) (cell));
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* objStart;
		void* T5_;
		if (!((NU64)(((NI) 4096)) < (NU64)(c))) goto LA3_;
		T5_ = (void*)0;
		T5_ = interiorAllocatedPtr__NuzKjA4SX9afyji9cHHIuKpQ((&(*gch).region), ((void*) (cell)));
		objStart = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T5_));
		{
			if (!!((objStart == NIM_NIL))) goto LA8_;
			mark__SOJE9bROCOc8iabVsKM64Sg(gch, objStart);
		}
		LA8_: ;
	}
	LA3_: ;
}
N_LIB_PRIVATE N_CDECL(void, markStackAndRegisters__U6T7JWtDLrWhtmhXSoy9a6g)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {	jmp_buf registers;
	tyObject_GcStack__7fytPA5bBsob6See21YMRA* T1_;
	T1_ = (tyObject_GcStack__7fytPA5bBsob6See21YMRA*)0;
	T1_ = getActiveStack__muO7WGG730PTJWpoUnluHg(gch);
	setPosition__Fnam3HOmbq2ymF0tDBas5Q(T1_, ((void*) ((&registers))));
	{
		int T4_;
		T4_ = (int)0;
		T4_ = _setjmp(registers);
		if (!(T4_ == ((NI32) 0))) goto LA5_;
		{
			tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack;
			NI max;
			NI sp;
			stack = (tyObject_GcStack__7fytPA5bBsob6See21YMRA*)0;
			stack = (&(*gch).stack);
			max = ((NI) (ptrdiff_t) ((*stack).bottom));
			sp = ((NI) (ptrdiff_t) ((&registers)));
			{
				NIM_BOOL T10_;
				NI regEnd;
				T10_ = (NIM_BOOL)0;
				T10_ = isActiveStack__c6NLIYJQ5DIKtQqRJH8S7w(stack);
				if (!T10_) goto LA11_;
				regEnd = (NI)((NU64)(sp) + (NU64)(((NI)sizeof(jmp_buf))));
				{
					while (1) {
						if (!((NU64)(sp) < (NU64)(regEnd))) goto LA14;
						gcMark__x5SbLN3uVBCsEa67N20nPwsystem(gch, (*((void**) (sp))));
						gcMark__x5SbLN3uVBCsEa67N20nPwsystem(gch, (*((void**) ((NI)((NU64)(sp) + (NU64)(((NI) 4)))))));
						sp = (NI)((NU64)(sp) + (NU64)(((NI) 8)));
					} LA14: ;
				}
			}
			LA11_: ;
			sp = (NI)(sp & ((NI) -8));
			{
				while (1) {
					if (!((NU64)(sp) < (NU64)((NI)(max - ((NI) 64))))) goto LA16;
					gcMark__x5SbLN3uVBCsEa67N20nPwsystem(gch, ((void**) (sp))[(((NI) 0))- 0]);
					gcMark__x5SbLN3uVBCsEa67N20nPwsystem(gch, ((void**) (sp))[(((NI) 1))- 0]);
					gcMark__x5SbLN3uVBCsEa67N20nPwsystem(gch, ((void**) (sp))[(((NI) 2))- 0]);
					gcMark__x5SbLN3uVBCsEa67N20nPwsystem(gch, ((void**) (sp))[(((NI) 3))- 0]);
					gcMark__x5SbLN3uVBCsEa67N20nPwsystem(gch, ((void**) (sp))[(((NI) 4))- 0]);
					gcMark__x5SbLN3uVBCsEa67N20nPwsystem(gch, ((void**) (sp))[(((NI) 5))- 0]);
					gcMark__x5SbLN3uVBCsEa67N20nPwsystem(gch, ((void**) (sp))[(((NI) 6))- 0]);
					gcMark__x5SbLN3uVBCsEa67N20nPwsystem(gch, ((void**) (sp))[(((NI) 7))- 0]);
					sp = (NI)((NU64)(sp) + (NU64)(((NI) 64)));
				} LA16: ;
			}
			{
				while (1) {
					if (!((NU64)(sp) <= (NU64)(max))) goto LA18;
					gcMark__x5SbLN3uVBCsEa67N20nPwsystem(gch, (*((void**) (sp))));
					sp = (NI)((NU64)(sp) + (NU64)(((NI) 8)));
				} LA18: ;
			}
		}
	}
	LA5_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, markGlobals__XHio9cMpnLoH7GyCj1Z9besg_2)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
	{
		if (!((*gch).gcThreadId == ((NI) 0))) goto LA3_;
		{
			NI i;
			NI colontmp_;
			NI res;
			i = (NI)0;
			colontmp_ = (NI)0;
			colontmp_ = (NI)(globalMarkersLen - ((NI) 1));
			res = ((NI) 0);
			{
				while (1) {
					if (!(res <= colontmp_)) goto LA7;
					i = res;
					globalMarkers[(i)- 0]();
					res += ((NI) 1);
				} LA7: ;
			}
		}
	}
	LA3_: ;
	{
		NI i_2;
		NI colontmp__2;
		NI res_2;
		i_2 = (NI)0;
		colontmp__2 = (NI)0;
		colontmp__2 = (NI)(threadLocalMarkersLen - ((NI) 1));
		res_2 = ((NI) 0);
		{
			while (1) {
				if (!(res_2 <= colontmp__2)) goto LA10;
				i_2 = res_2;
				threadLocalMarkers[(i_2)- 0]();
				res_2 += ((NI) 1);
			} LA10: ;
		}
	}
	d = (*gch).additionalRoots.d;
	{
		NI i_3;
		NI colontmp__3;
		NI res_3;
		i_3 = (NI)0;
		colontmp__3 = (NI)0;
		colontmp__3 = (NI)((*gch).additionalRoots.len - ((NI) 1));
		res_3 = ((NI) 0);
		{
			while (1) {
				if (!(res_3 <= colontmp__3)) goto LA13;
				i_3 = res_3;
				mark__SOJE9bROCOc8iabVsKM64Sg(gch, d[i_3]);
				res_3 += ((NI) 1);
			} LA13: ;
		}
	}
}
static N_INLINE(NIM_BOOL, isCell__knKGR9cPCi0isv7h4omKxdAsystem)(void* p) {	NIM_BOOL result;
	result = (NIM_BOOL)0;
	result = ((NU64)(((NI) 1)) < (NU64)((*((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) (p))).zeroField));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, prepareDealloc__fvhnFro5wEfzy879alizcUQ)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell) {	TNimType* t;
	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	t = (*cell).typ;
	{
		void* T5_;
		if (!!(((*t).finalizer == NIM_NIL))) goto LA3_;
		NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.recGcLock += ((NI) 1);
		T5_ = (void*)0;
		T5_ = cellToUsr__oh8PwD5vOIN9awo20FR9c8qAsystem(cell);
		((Finalizer) ((*t).finalizer))(T5_);
		NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.recGcLock -= ((NI) 1);
	}
	LA3_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, freeCyclicCell__SOJE9bROCOc8iabVsKM64Sg_2)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {	(*gch).stat.freedObjects += ((NI) 1);
	prepareDealloc__fvhnFro5wEfzy879alizcUQ(c);
	rawDealloc__K7uQ6aTKvW6OnOV8EMoNNQ((&(*gch).region), ((void*) (c)));
}
N_LIB_PRIVATE N_NIMCALL(void, sweep__XHio9cMpnLoH7GyCj1Z9besg_3)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {	{
		void* x;
		x = (void*)0;
		(*gch).region.locked = NIM_TRUE;
		{
			NI s;
			tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA colontmp_;
			s = (NI)0;
			nimZeroMem((void*)(&colontmp_), sizeof(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA));
			colontmp_ = (*gch).region.chunkStarts;
			{
				NI h;
				NI res;
				h = (NI)0;
				res = ((NI) 0);
				{
					while (1) {
						tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* r;
						if (!(res <= ((NI) 255))) goto LA5;
						h = res;
						r = colontmp_.data[(h)- 0];
						{
							while (1) {
								NI i;
								if (!!((r == NIM_NIL))) goto LA7;
								i = ((NI) 0);
								{
									while (1) {
										NU w;
										NI j;
										if (!(i <= ((NI) 7))) goto LA9;
										w = (*r).bits[(i)- 0];
										j = ((NI) 0);
										{
											while (1) {
												if (!!((w == ((NI) 0)))) goto LA11;
												{
													if (!!(((NU)(w & ((NI) 1)) == ((NI) 0)))) goto LA14_;
													s = (NI)((NI)((NU64)((*r).key) << (NU64)(((NI) 9))) | (NI)((NU64)((NI)((NU64)(i) << (NU64)(((NI) 6)))) + (NU64)(j)));
													{
														NIM_BOOL T18_;
														tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c;
														T18_ = (NIM_BOOL)0;
														T18_ = contains__9b5xR7VBZVwQDvk5Nr9bDKdQ((&(*gch).region.chunkStarts), s);
														if (!T18_) goto LA19_;
														c = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) ((NI)((NU64)(s) << (NU64)(((NI) 12)))));
														{
															NIM_BOOL T23_;
															T23_ = (NIM_BOOL)0;
															T23_ = chunkUnused__2Ih49c9ai3KYJhUe3C8xg07w_2system(c);
															if (!!(T23_)) goto LA24_;
															{
																NIM_BOOL T28_;
																tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c_2;
																NI size;
																NI a;
																NI limit;
																T28_ = (NIM_BOOL)0;
																T28_ = isSmallChunk__2Ih49c9ai3KYJhUe3C8xg07wsystem(c);
																if (!T28_) goto LA29_;
																c_2 = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) (c));
																size = (*c_2).Sup.size;
																a = ((NI) (ptrdiff_t) ((&(*c_2).data)));
																limit = (NI)(a + (*c_2).acc);
																{
																	while (1) {
																		if (!((NU64)(a) < (NU64)(limit))) goto LA32;
																		x = ((void*) (a));
																		{
																			NIM_BOOL T35_;
																			tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c_3;
																			T35_ = (NIM_BOOL)0;
																			T35_ = isCell__knKGR9cPCi0isv7h4omKxdAsystem(x);
																			if (!T35_) goto LA36_;
																			c_3 = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (x));
																			{
																				if (!((*c_3).refcount == ((NI) 2))) goto LA40_;
																				(*c_3).refcount = ((NI) 0);
																			}
																			goto LA38_;
																			LA40_: ;
																			{
																				freeCyclicCell__SOJE9bROCOc8iabVsKM64Sg_2(gch, c_3);
																			}
																			LA38_: ;
																		}
																		LA36_: ;
																		a = (NI)((NU64)(a) + (NU64)(size));
																	} LA32: ;
																}
															}
															goto LA26_;
															LA29_: ;
															{
																tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_4;
																c_4 = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (c));
																x = ((void*) ((&(*c_4).data)));
																{
																	NIM_BOOL T46_;
																	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c_5;
																	T46_ = (NIM_BOOL)0;
																	T46_ = isCell__knKGR9cPCi0isv7h4omKxdAsystem(x);
																	if (!T46_) goto LA47_;
																	c_5 = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (x));
																	{
																		if (!((*c_5).refcount == ((NI) 2))) goto LA51_;
																		(*c_5).refcount = ((NI) 0);
																	}
																	goto LA49_;
																	LA51_: ;
																	{
																		freeCyclicCell__SOJE9bROCOc8iabVsKM64Sg_2(gch, c_5);
																	}
																	LA49_: ;
																}
																LA47_: ;
															}
															LA26_: ;
														}
														LA24_: ;
													}
													LA19_: ;
												}
												LA14_: ;
												j += ((NI) 1);
												w = (NU)((NU64)(w) >> (NU64)(((NI) 1)));
											} LA11: ;
										}
										i += ((NI) 1);
									} LA9: ;
								}
								r = (*r).next;
							} LA7: ;
						}
						res += ((NI) 1);
					} LA5: ;
				}
			}
		}
		(*gch).region.locked = NIM_FALSE;
	}
}
N_LIB_PRIVATE N_NIMCALL(NI, getOccupiedMem__hrQB9bN29c1nR1E9cHqYcNcDA)(void) {	NI result;
	NimThreadVars* NimTV_;
{	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	result = (NI)0;
	result = NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.region.occ;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, collectCTBody__XHio9cMpnLoH7GyCj1Z9besg)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {	NI T1_;
	NI T2_;
	T1_ = (NI)0;
	T1_ = stackSize__0yw8cp0rOgL8i0O5kzzb0g();
	(*gch).stat.maxStackSize = (((*gch).stat.maxStackSize >= T1_) ? (*gch).stat.maxStackSize : T1_);
	prepareForInteriorPointerChecking__ot9aebHKDFT2OPbEVY47F9bQsystem((&(*gch).region));
	markStackAndRegisters__U6T7JWtDLrWhtmhXSoy9a6g(gch);
	markGlobals__XHio9cMpnLoH7GyCj1Z9besg_2(gch);
	sweep__XHio9cMpnLoH7GyCj1Z9besg_3(gch);
	(*gch).stat.collections += ((NI) 1);
	T2_ = (NI)0;
	T2_ = getOccupiedMem__hrQB9bN29c1nR1E9cHqYcNcDA();
	(*gch).cycleThreshold = ((((NI) 4194304) >= (NI)(T2_ * ((NI) 2))) ? ((NI) 4194304) : (NI)(T2_ * ((NI) 2)));
	(*gch).stat.maxThreshold = (((*gch).stat.maxThreshold >= (*gch).cycleThreshold) ? (*gch).stat.maxThreshold : (*gch).cycleThreshold);
}
N_LIB_PRIVATE N_NIMCALL(void, collectCT__UyJsrKu7wmHDvZRV57hjsg)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, NI size) {	NI fmem;
	fmem = getFreeMem__o7kGt4Ciqh9aCBinZc9bV9cugsystem((&(*gch).region));
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		NI T5_;
		NIM_BOOL T7_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T5_ = (NI)0;
		T5_ = getOccupiedMem__o7kGt4Ciqh9aCBinZc9bV9cug_2system((&(*gch).region));
		T4_ = ((*gch).cycleThreshold <= T5_);
		if (T4_) goto LA6_;
		T7_ = (NIM_BOOL)0;
		T7_ = (fmem < size);
		if (!(T7_)) goto LA8_;
		T7_ = (((NI) 4194304) < fmem);
		LA8_: ;
		T4_ = T7_;
		LA6_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA9_;
		T3_ = ((*gch).recGcLock == ((NI) 0));
		LA9_: ;
		if (!T3_) goto LA10_;
		collectCTBody__XHio9cMpnLoH7GyCj1Z9besg(gch);
	}
	LA10_: ;
}
N_LIB_PRIVATE N_NIMCALL(void*, rawNewObj__ehkAaLROrd0Hc9aLROWt1nQ)(TNimType* typ, NI size, tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {	void* result;
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* res;
	void* T1_;
	result = (void*)0;
	collectCT__UyJsrKu7wmHDvZRV57hjsg(gch, (NI)(size + ((NI) 16)));
	T1_ = (void*)0;
	T1_ = rawAlloc__mE4QEVyMvGRVliDWDngZCQ((&(*gch).region), (NI)(size + ((NI) 16)));
	res = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	(*res).typ = typ;
	(*res).refcount = ((NI) 0);
	result = cellToUsr__oh8PwD5vOIN9awo20FR9c8qAsystem(res);
	return result;
}
N_NIMCALL(void*, newObjNoInit)(TNimType* typ, NI size) {	void* result;
	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	result = (void*)0;
	result = rawNewObj__ehkAaLROrd0Hc9aLROWt1nQ(typ, size, (&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q));
	return result;
}
N_NIMCALL(NimStringDesc*, rawNewStringNoInit)(NI space) {	NimStringDesc* result;
	NI s;
	void* T5_;
	result = (NimStringDesc*)0;
	s = space;
	{
		if (!(s < ((NI) 7))) goto LA3_;
		s = ((NI) 7);
	}
	LA3_: ;
	T5_ = (void*)0;
	T5_ = newObjNoInit((&strDesc__D0UzA4zsDu5tgpJQ9a9clXPg), (NI)((NI)(((NI) 16) + s) + ((NI) 1)));
	result = ((NimStringDesc*) (T5_));
	(*result).Sup.reserved = s;
	(*result).Sup.len = ((NI) 0);
	return result;
}
N_NIMCALL(NimStringDesc*, toNimStr)(NCSTRING str, NI len) {	NimStringDesc* result;
	result = (NimStringDesc*)0;
	result = rawNewStringNoInit(len);
	(*result).Sup.len = len;
	copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((*result).data)), ((void*) (str)), ((NI) ((NI)(len + ((NI) 1)))));
	return result;
}
N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str) {	NimStringDesc* result;
	result = (NimStringDesc*)0;
	{
		if (!(((void*) (str)) == NIM_NIL)) goto LA3_;
		result = NIM_NIL;
	}
	goto LA1_;
	LA3_: ;
	{
		result = toNimStr(str, (str ? nimCStrLen(str) : 0));
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, writeToStdErr__a2kDfqdSc1eYf0ZCWOGinQ)(NCSTRING msg) {	rawWrite(stderr, msg);
}
N_LIB_PRIVATE N_NIMCALL(void, showErrorMessage__zsORN9crdKxsL9cHrQcdHSMw)(NCSTRING data) {	{
		NimStringDesc* T5_;
		if (!!((errorMessageWriter__ZXnv0JyrWe3HTd07wpSr7A == NIM_NIL))) goto LA3_;
		T5_ = (NimStringDesc*)0;
		T5_ = cstrToNimstr(data);
		errorMessageWriter__ZXnv0JyrWe3HTd07wpSr7A(T5_);
	}
	goto LA1_;
	LA3_: ;
	{
		writeToStdErr__a2kDfqdSc1eYf0ZCWOGinQ(data);
	}
	LA1_: ;
}
N_NOCONV(void, signalHandler)(int sign) {	NCSTRING msg;
	msg = (NCSTRING)0;
	{
		if (!(sign == ((int) 2))) goto LA3_;
		msg = "SIGINT: Interrupted by Ctrl-C.\012";
	}
	goto LA1_;
	LA3_: ;
	{
		if (!(sign == ((int) 11))) goto LA6_;
		msg = "SIGSEGV: Illegal storage access. (Attempt to read from nil\?)\012";
	}
	goto LA1_;
	LA6_: ;
	{
		if (!(sign == ((int) 6))) goto LA9_;
		msg = "SIGABRT: Abnormal termination.\012";
	}
	goto LA1_;
	LA9_: ;
	{
		if (!(sign == ((int) 8))) goto LA12_;
		msg = "SIGFPE: Arithmetic error.\012";
	}
	goto LA1_;
	LA12_: ;
	{
		if (!(sign == ((int) 4))) goto LA15_;
		msg = "SIGILL: Illegal operation.\012";
	}
	goto LA1_;
	LA15_: ;
	{
		if (!(sign == ((int) 10))) goto LA18_;
		msg = "SIGBUS: Illegal storage access. (Attempt to read from nil\?)\012";
	}
	goto LA1_;
	LA18_: ;
	{
		{
			{
				if (!(sign == ((int) 13))) goto LA24_;
				msg = "SIGPIPE: Pipe closed.\012";
				goto LA21;
			}
			LA24_: ;
			msg = "unknown signal\012";
		} LA21: ;
	}
	LA1_: ;
	showErrorMessage__zsORN9crdKxsL9cHrQcdHSMw(msg);
	exit(((NI) 1));
}
N_LIB_PRIVATE N_NIMCALL(void, registerSignalHandler__amVlU9ajqZ06ujoesRBHcDg_2)(void) {	tyProc__lfH2drpqP9aSEAAjWgrYv8Q T1_;
	tyProc__lfH2drpqP9aSEAAjWgrYv8Q T2_;
	tyProc__lfH2drpqP9aSEAAjWgrYv8Q T3_;
	tyProc__lfH2drpqP9aSEAAjWgrYv8Q T4_;
	tyProc__lfH2drpqP9aSEAAjWgrYv8Q T5_;
	tyProc__lfH2drpqP9aSEAAjWgrYv8Q T6_;
	tyProc__lfH2drpqP9aSEAAjWgrYv8Q T7_;
	T1_ = (tyProc__lfH2drpqP9aSEAAjWgrYv8Q)0;
	T1_ = signal(((int) 2), signalHandler);
	T2_ = (tyProc__lfH2drpqP9aSEAAjWgrYv8Q)0;
	T2_ = signal(((int) 11), signalHandler);
	T3_ = (tyProc__lfH2drpqP9aSEAAjWgrYv8Q)0;
	T3_ = signal(((int) 6), signalHandler);
	T4_ = (tyProc__lfH2drpqP9aSEAAjWgrYv8Q)0;
	T4_ = signal(((int) 8), signalHandler);
	T5_ = (tyProc__lfH2drpqP9aSEAAjWgrYv8Q)0;
	T5_ = signal(((int) 4), signalHandler);
	T6_ = (tyProc__lfH2drpqP9aSEAAjWgrYv8Q)0;
	T6_ = signal(((int) 10), signalHandler);
	T7_ = (tyProc__lfH2drpqP9aSEAAjWgrYv8Q)0;
	T7_ = signal(((int) 13), signalHandler);
}
N_NIMCALL(NI, getRefcount)(void* p) {	NI result;
	result = (NI)0;
	result = ((NI) 0);
	return result;
}
N_NIMCALL(void, nimRegisterGlobalMarker)(tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ markerProc) {	{
		if (!(globalMarkersLen <= ((NI) 3499))) goto LA3_;
		globalMarkers[(globalMarkersLen)- 0] = markerProc;
		globalMarkersLen += ((NI) 1);
	}
	goto LA1_;
	LA3_: ;
	{
		rawWrite(stderr, "[GC] cannot register global variable; too many global variables");
		exit(((NI) 1));
	}
	LA1_: ;
}
static N_NIMCALL(void, Marker_tyRef__ShBqCFAISBSH2YqBfe6zjg)(void* p, NI op) {
	tyObject_AssertionError__G9cUlLvU4AFC26wbFxLFkFA* a;
	a = (tyObject_AssertionError__G9cUlLvU4AFC26wbFxLFkFA*)p;
	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
	nimGCvisit((void*)(*a).Sup.Sup.up, op);
}
N_NIMCALL(void*, newObj)(TNimType* typ, NI size) {	void* result;
	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	result = (void*)0;
	result = rawNewObj__ehkAaLROrd0Hc9aLROWt1nQ(typ, size, (&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q));
	zeroMem__FsvhfMqbswETmyMWtamDewsystem(result, ((NI) (size)));
	return result;
}
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src) {	NimStringDesc* result;
	result = (NimStringDesc*)0;
	{
		if (!!((src == NIM_NIL))) goto LA3_;
		{
			if (!!(((NI)((*src).Sup.reserved & ((NI) (IL64(-9223372036854775807) - IL64(1)))) == ((NI) 0)))) goto LA7_;
			result = src;
		}
		goto LA5_;
		LA7_: ;
		{
			result = rawNewStringNoInit((*src).Sup.len);
			(*result).Sup.len = (*src).Sup.len;
			copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((*result).data)), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		}
		LA5_: ;
	}
	LA3_: ;
	return result;
}
static N_NIMCALL(void, Marker_tyRef__Pjt0MQjoA6TAHAHOFNel9cg)(void* p, NI op) {
	tyObject_OverflowError__Ss6DFlX5iSZpHRZDmP74bg* a;
	a = (tyObject_OverflowError__Ss6DFlX5iSZpHRZDmP74bg*)p;
	nimGCvisit((void*)(*a).Sup.Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.Sup.trace, op);
	nimGCvisit((void*)(*a).Sup.Sup.Sup.up, op);
}
static N_INLINE(void, sysFatal__1rw9bzpRcCrBi6FIqHe7a4wsystem)(NimStringDesc* message) {	tyObject_OverflowError__Ss6DFlX5iSZpHRZDmP74bg* e;
	e = (tyObject_OverflowError__Ss6DFlX5iSZpHRZDmP74bg*)0;
	e = (tyObject_OverflowError__Ss6DFlX5iSZpHRZDmP74bg*) newObj((&NTI__Pjt0MQjoA6TAHAHOFNel9cg_), sizeof(tyObject_OverflowError__Ss6DFlX5iSZpHRZDmP74bg));
	(*e).Sup.Sup.Sup.Sup.m_type = (&NTI__Ss6DFlX5iSZpHRZDmP74bg_);
	(*e).Sup.Sup.Sup.name = "OverflowError";
	(*e).Sup.Sup.Sup.message = copyString(message);
	raiseExceptionEx((Exception*)e, "OverflowError", "sysFatal", "fatal.nim", 39);
}
N_NOINLINE(void, raiseOverflow)(void) {	sysFatal__1rw9bzpRcCrBi6FIqHe7a4wsystem(((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_7));
}
static N_INLINE(NI, addInt)(NI a, NI b) {	NI result;
{	result = (NI)0;
	result = (NI)((NU64)(a) + (NU64)(b));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(result ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(result ^ b));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	raiseOverflow();
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NF, toFloat__y1Fm9aHmxw9bS2jir137Fu5gsystem)(NI i) {	NF result;
	result = (NF)0;
	result = ((NF) (i));
	return result;
}
static N_INLINE(NF, abs__BRaAqinz6OWTHkALb4oj6Qsystem)(NF x) {	NF result;
	result = (NF)0;
	{
		if (!(x < 0.0)) goto LA3_;
		result = -(x);
	}
	goto LA1_;
	LA3_: ;
	{
		result = x;
	}
	LA1_: ;
	return result;
}
N_NIMCALL(NI, mulInt)(NI a, NI b) {	NI result;
	NF resAsFloat;
	NF floatProd;
	NF T1_;
	NF T2_;
{	result = (NI)0;
	resAsFloat = (NF)0;
	floatProd = (NF)0;
	result = (NI)((NU64)(a) * (NU64)(b));
	T1_ = (NF)0;
	T1_ = toFloat__y1Fm9aHmxw9bS2jir137Fu5gsystem(a);
	T2_ = (NF)0;
	T2_ = toFloat__y1Fm9aHmxw9bS2jir137Fu5gsystem(b);
	floatProd = ((NF)(T1_) * (NF)(T2_));
	resAsFloat = toFloat__y1Fm9aHmxw9bS2jir137Fu5gsystem(result);
	{
		if (!(resAsFloat == floatProd)) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	{
		NF T9_;
		NF T10_;
		T9_ = (NF)0;
		T9_ = abs__BRaAqinz6OWTHkALb4oj6Qsystem(((NF)(resAsFloat) - (NF)(floatProd)));
		T10_ = (NF)0;
		T10_ = abs__BRaAqinz6OWTHkALb4oj6Qsystem(floatProd);
		if (!(((NF)(3.2000000000000000e+01) * (NF)(T9_)) <= T10_)) goto LA11_;
		goto BeforeRet_;
	}
	LA11_: ;
	raiseOverflow();
	}BeforeRet_: ;
	return result;
}
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len) {	void* result;
	NI size;
	NI T1_;
	result = (void*)0;
	T1_ = (NI)0;
	T1_ = mulInt(len, (*(*typ).base).size);
	size = addInt(T1_, ((NI) 16));
	result = newObj(typ, size);
	(*((TGenericSeq*) (result))).len = len;
	(*((TGenericSeq*) (result))).reserved = len;
	return result;
}
static N_INLINE(NI, resize__cOCDWr16YD4j3dBrbbH3yQsystem)(NI old) {	NI result;
	result = (NI)0;
	{
		if (!(old <= ((NI) 0))) goto LA3_;
		result = ((NI) 4);
	}
	goto LA1_;
	LA3_: ;
	{
		if (!(old < ((NI) 65536))) goto LA6_;
		result = (NI)(old * ((NI) 2));
	}
	goto LA1_;
	LA6_: ;
	{
		result = (NI)((NI)(old * ((NI) 3)) / ((NI) 2));
	}
	LA1_: ;
	return result;
}
N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ) {	TGenericSeq* result;
	result = (TGenericSeq*)0;
	{
		void* T5_;
		if (!(s == NIM_NIL)) goto LA3_;
		T5_ = (void*)0;
		T5_ = newSeq(typ, ((NI) 1));
		result = ((TGenericSeq*) (T5_));
		(*result).len = ((NI) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		result = s;
		{
			NI r;
			void* T11_;
			if (!((NI)((*result).reserved & ((NI) IL64(4611686018427387903))) <= (*result).len)) goto LA9_;
			r = resize__cOCDWr16YD4j3dBrbbH3yQsystem((NI)((*result).reserved & ((NI) IL64(4611686018427387903))));
			T11_ = (void*)0;
			T11_ = newSeq(typ, r);
			result = ((TGenericSeq*) (T11_));
			(*result).len = (*s).len;
			copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((NI)((NU64)(((NI) (ptrdiff_t) (result))) + (NU64)(((NI) 16))))), ((void*) ((NI)((NU64)(((NI) (ptrdiff_t) (s))) + (NU64)(((NI) 16))))), ((NI) ((NI)((*s).len * (*(*typ).base).size))));
			(*s).len = ((NI) 0);
		}
		LA9_: ;
	}
	LA1_: ;
	return result;
}
static N_INLINE(void, pushCurrentException)(Exception* e) {	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	(*e).up = NimTV_->currException__9bVPeDJlYTi9bQApZpfH8wjg;
	NimTV_->currException__9bVPeDJlYTi9bQApZpfH8wjg = e;
}
N_NIMCALL(NimStringDesc*, rawNewString)(NI space) {	NimStringDesc* result;
	NI s;
	void* T5_;
	result = (NimStringDesc*)0;
	s = space;
	{
		if (!(s < ((NI) 7))) goto LA3_;
		s = ((NI) 7);
	}
	LA3_: ;
	T5_ = (void*)0;
	T5_ = newObj((&strDesc__D0UzA4zsDu5tgpJQ9a9clXPg), (NI)((NI)(((NI) 16) + s) + ((NI) 1)));
	result = ((NimStringDesc*) (T5_));
	(*result).Sup.reserved = s;
	(*result).Sup.len = ((NI) 0);
	return result;
}
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {	{
		if (!!((src == NIM_NIL))) goto LA3_;
		copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		(*dest).Sup.len += (*src).Sup.len;
	}
	LA3_: ;
}
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen) {	NimStringDesc* result;
	result = (NimStringDesc*)0;
	{
		if (!(dest == NIM_NIL)) goto LA3_;
		result = rawNewStringNoInit(addlen);
	}
	goto LA1_;
	LA3_: ;
	{
		if (!((NI)((*dest).Sup.len + addlen) <= (NI)((*dest).Sup.reserved & ((NI) IL64(4611686018427387903))))) goto LA6_;
		result = dest;
	}
	goto LA1_;
	LA6_: ;
	{
		NI sp;
		NI T9_;
		T9_ = (NI)0;
		T9_ = resize__cOCDWr16YD4j3dBrbbH3yQsystem((NI)((*dest).Sup.reserved & ((NI) IL64(4611686018427387903))));
		sp = ((T9_ >= (NI)((*dest).Sup.len + addlen)) ? T9_ : (NI)((*dest).Sup.len + addlen));
		result = rawNewStringNoInit(sp);
		(*result).Sup.len = (*dest).Sup.len;
		copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((&(*result).data[((NI) 0)]))), ((void*) ((&(*dest).data[((NI) 0)]))), ((NI) ((NI)((*dest).Sup.len + ((NI) 1)))));
		(*result).Sup.reserved = sp;
	}
	LA1_: ;
	return result;
}
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c) {	NimStringDesc* result;
	result = (NimStringDesc*)0;
	{
		if (!(s == NIM_NIL)) goto LA3_;
		result = rawNewStringNoInit(((NI) 1));
		(*result).Sup.len = ((NI) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		result = s;
		{
			NI r;
			if (!((NI)((*result).Sup.reserved & ((NI) IL64(4611686018427387903))) <= (*result).Sup.len)) goto LA8_;
			r = resize__cOCDWr16YD4j3dBrbbH3yQsystem((NI)((*result).Sup.reserved & ((NI) IL64(4611686018427387903))));
			result = rawNewStringNoInit(r);
			(*result).Sup.len = (*s).Sup.len;
			copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((&(*result).data[((NI) 0)]))), ((void*) ((&(*s).data[((NI) 0)]))), ((NI) ((NI)((*s).Sup.len + ((NI) 1)))));
			(*result).Sup.reserved = r;
		}
		LA8_: ;
	}
	LA1_: ;
	(*result).data[(*result).Sup.len] = c;
	(*result).data[(NI)((*result).Sup.len + ((NI) 1))] = 0;
	(*result).Sup.len += ((NI) 1);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, add__8FwY5enLGB0dFerO6Ny9caw)(NimStringDesc** x, NCSTRING y) {	NI i;
	i = ((NI) 0);
	{
		if (!!((((void*) (y)) == NIM_NIL))) goto LA3_;
		{
			while (1) {
				if (!!(((NU8)(y[i]) == (NU8)(0)))) goto LA6;
				(*x) = addChar((*x), y[i]);
				i += ((NI) 1);
			} LA6: ;
		}
	}
	LA3_: ;
}
N_NIMCALL(NimStringDesc*, mnewString)(NI len) {	NimStringDesc* result;
	result = (NimStringDesc*)0;
	result = rawNewString(len);
	(*result).Sup.len = len;
	return result;
}
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen) {	NimStringDesc* result;
	NI n;
	result = (NimStringDesc*)0;
	n = ((newLen >= ((NI) 0)) ? newLen : ((NI) 0));
	{
		if (!(s == NIM_NIL)) goto LA3_;
		result = mnewString(newLen);
	}
	goto LA1_;
	LA3_: ;
	{
		if (!(n <= (NI)((*s).Sup.reserved & ((NI) IL64(4611686018427387903))))) goto LA6_;
		result = s;
	}
	goto LA1_;
	LA6_: ;
	{
		NI sp;
		NI T9_;
		T9_ = (NI)0;
		T9_ = resize__cOCDWr16YD4j3dBrbbH3yQsystem((NI)((*s).Sup.reserved & ((NI) IL64(4611686018427387903))));
		sp = ((T9_ >= newLen) ? T9_ : newLen);
		result = rawNewStringNoInit(sp);
		(*result).Sup.len = (*s).Sup.len;
		copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((&(*result).data[((NI) 0)]))), ((void*) ((&(*s).data[((NI) 0)]))), ((NI) ((NI)((*s).Sup.len + ((NI) 1)))));
		zeroMem__FsvhfMqbswETmyMWtamDewsystem(((void*) ((&(*result).data[(*s).Sup.len]))), ((NI) ((NI)(newLen - (*s).Sup.len))));
		(*result).Sup.reserved = sp;
	}
	LA1_: ;
	(*result).Sup.len = n;
	(*result).data[n] = 0;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, addInt__mftMOxbyu0h4yByfs3sqjA)(NimStringDesc** result, NI64 x) {	NI base;
	NI i;
	NI64 y;
	base = ((*result) ? (*result)->Sup.len : 0);
	(*result) = setLengthStr((*result), ((NI) ((NI)(base + ((NI) 32)))));
	i = ((NI) 0);
	y = x;
	{
		while (1) {
			NI64 d;
			d = (NI64)(y / IL64(10));
			(*result)->data[(NI)(base + i)] = ((NIM_CHAR) (((NI) ((NI)((((NI) ((NI64)(y - (NI64)(d * IL64(10))))) > 0? (((NI) ((NI64)(y - (NI64)(d * IL64(10)))))) : -(((NI) ((NI64)(y - (NI64)(d * IL64(10))))))) + ((NI) 48))))));
			i += ((NI) 1);
			y = d;
			{
				if (!(y == IL64(0))) goto LA5_;
				goto LA1;
			}
			LA5_: ;
		}
	} LA1: ;
	{
		if (!(x < IL64(0))) goto LA9_;
		(*result)->data[(NI)(base + i)] = 45;
		i += ((NI) 1);
	}
	LA9_: ;
	(*result) = setLengthStr((*result), ((NI) ((NI)(base + i))));
	{
		NI j;
		NI colontmp_;
		NI res;
		j = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = (NI)((NI)(i / ((NI) 2)) - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				NIM_CHAR T14_;
				if (!(res <= colontmp_)) goto LA13;
				j = res;
				T14_ = (NIM_CHAR)0;
				T14_ = (*result)->data[(NI)(base + j)];
				(*result)->data[(NI)(base + j)] = (*result)->data[(NI)((NI)((NI)(base + i) - j) - ((NI) 1))];
				(*result)->data[(NI)((NI)((NI)(base + i) - j) - ((NI) 1))] = T14_;
				res += ((NI) 1);
			} LA13: ;
		}
	}
}
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x) {	NimStringDesc* result;
	result = (NimStringDesc*)0;
	result = rawNewString(((NI) 32));
	addInt__mftMOxbyu0h4yByfs3sqjA((&result), ((NI64) (x)));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___qXwhltkA4r6d4Hcwmx9cN8A)(tySequence__uB9b75OUPRENsBAu4AnoePA* s) {	NimStringDesc* result;
	result = (NimStringDesc*)0;
	result = rawNewString(((NI) 2000));
	{
		NI i;
		NI colontmp_;
		NI T2_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		T2_ = (s ? s->Sup.len : 0);
		colontmp_ = (NI)(T2_ - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA4;
				i = res;
				{
					if (!(s->data[i].line == ((NI) -10))) goto LA7_;
					result = resizeString(result, 17);
appendString(result, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_9));
				}
				goto LA5_;
				LA7_: ;
				{
					if (!(s->data[i].line == ((NI) -100))) goto LA10_;
					result = resizeString(result, 3);
appendString(result, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_10));
				}
				goto LA5_;
				LA10_: ;
				{
					NI oldLenX60gensym41952_;
					oldLenX60gensym41952_ = (result ? result->Sup.len : 0);
					add__8FwY5enLGB0dFerO6Ny9caw((&result), s->data[i].filename);
					{
						NimStringDesc* T17_;
						if (!(((NI) 0) < s->data[i].line)) goto LA15_;
						result = addChar(result, 40);
						T17_ = (NimStringDesc*)0;
						T17_ = nimIntToStr(s->data[i].line);
						result = resizeString(result, (T17_ ? T17_->Sup.len : 0) + 0);
appendString(result, T17_);
						result = addChar(result, 41);
					}
					LA15_: ;
					{
						NI kX60gensym41953_;
						NI colontmp__2;
						NI res_2;
						kX60gensym41953_ = (NI)0;
						colontmp__2 = (NI)0;
						colontmp__2 = ((((NI) 1) >= (NI)(((NI) 25) - (NI)((result ? result->Sup.len : 0) - oldLenX60gensym41952_))) ? ((NI) 1) : (NI)(((NI) 25) - (NI)((result ? result->Sup.len : 0) - oldLenX60gensym41952_)));
						res_2 = ((NI) 1);
						{
							while (1) {
								if (!(res_2 <= colontmp__2)) goto LA20;
								kX60gensym41953_ = res_2;
								result = addChar(result, 32);
								res_2 += ((NI) 1);
							} LA20: ;
						}
					}
					add__8FwY5enLGB0dFerO6Ny9caw((&result), s->data[i].procname);
					result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_11));
				}
				LA5_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}
static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s) {	NCSTRING result;
	result = (NCSTRING)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (s == NIM_NIL);
		if (T3_) goto LA4_;
		T3_ = ((*s).Sup.len == ((NI) 0));
		LA4_: ;
		if (!T3_) goto LA5_;
		result = "";
	}
	goto LA1_;
	LA5_: ;
	{
		result = ((NCSTRING) ((*s).data));
	}
	LA1_: ;
	return result;
}
static N_INLINE(void, quitOrDebug__RsY2eAkO9aEvlDhb7ZyRF8gsystem)(void) {	exit(((NI) 1));
}
N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionAux__na8C8pUZ9cLQWVwk35l5vfw)(Exception* e) {	NimThreadVars* NimTV_;
{	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	{
		if (!!((NimTV_->localRaiseHook__EIvMhANBvB9cp2Ezvt29cADg == NIM_NIL))) goto LA3_;
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = NimTV_->localRaiseHook__EIvMhANBvB9cp2Ezvt29cADg(e);
			if (!!(T7_)) goto LA8_;
			goto BeforeRet_;
		}
		LA8_: ;
	}
	LA3_: ;
	{
		if (!!((globalRaiseHook__JbO1ti4ULxrw54m4zNPbpA == NIM_NIL))) goto LA12_;
		{
			NIM_BOOL T16_;
			T16_ = (NIM_BOOL)0;
			T16_ = globalRaiseHook__JbO1ti4ULxrw54m4zNPbpA(e);
			if (!!(T16_)) goto LA17_;
			goto BeforeRet_;
		}
		LA17_: ;
	}
	LA12_: ;
	{
		if (!!((NimTV_->excHandler__rqLlY5bs9atDw2OXYqJEn5g == NIM_NIL))) goto LA21_;
		{
			NIM_BOOL T25_;
			T25_ = (NIM_BOOL)0;
			T25_ = !((*NimTV_->excHandler__rqLlY5bs9atDw2OXYqJEn5g).hasRaiseAction);
			if (T25_) goto LA26_;
			T25_ = (*NimTV_->excHandler__rqLlY5bs9atDw2OXYqJEn5g).raiseAction.ClE_0? (*NimTV_->excHandler__rqLlY5bs9atDw2OXYqJEn5g).raiseAction.ClP_0(e, (*NimTV_->excHandler__rqLlY5bs9atDw2OXYqJEn5g).raiseAction.ClE_0):((TM__Q5wkpxktOdTGvlSRo9bzt9aw_8)((*NimTV_->excHandler__rqLlY5bs9atDw2OXYqJEn5g).raiseAction.ClP_0))(e);
			LA26_: ;
			if (!T25_) goto LA27_;
			pushCurrentException(e);
			_longjmp((*NimTV_->excHandler__rqLlY5bs9atDw2OXYqJEn5g).context, ((int) 1));
		}
		LA27_: ;
	}
	goto LA19_;
	LA21_: ;
	{
		tyArray__gpc2RrLEcWgv7ONpLYNHOw buf;
		NI L;
		nimZeroMem((void*)buf, sizeof(tyArray__gpc2RrLEcWgv7ONpLYNHOw));
		L = ((NI) 0);
		{
			NI T32_;
			T32_ = ((*e).trace ? (*e).trace->Sup.len : 0);
			if (!!((T32_ == ((NI) 0)))) goto LA33_;
			{
				NimStringDesc* T37_;
				NimStringDesc* T40_;
				NimStringDesc* T41_;
				NimStringDesc* T42_;
				T37_ = (NimStringDesc*)0;
				T37_ = dollar___qXwhltkA4r6d4Hcwmx9cN8A((*e).trace);
				if (!((NI)(L + (T37_ ? T37_->Sup.len : 0)) < ((NI) 2000))) goto LA38_;
				T40_ = (NimStringDesc*)0;
				T40_ = dollar___qXwhltkA4r6d4Hcwmx9cN8A((*e).trace);
				T41_ = (NimStringDesc*)0;
				T41_ = dollar___qXwhltkA4r6d4Hcwmx9cN8A((*e).trace);
				copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((&buf[(L)- 0]))), ((void*) (nimToCStringConv(T40_))), ((NI) ((T41_ ? T41_->Sup.len : 0))));
				T42_ = (NimStringDesc*)0;
				T42_ = dollar___qXwhltkA4r6d4Hcwmx9cN8A((*e).trace);
				L += (T42_ ? T42_->Sup.len : 0);
			}
			LA38_: ;
		}
		LA33_: ;
		{
			if (!((NI)(L + ((NI) 28)) < ((NI) 2000))) goto LA45_;
			copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((&buf[(L)- 0]))), ((void*) ("Error: unhandled exception: ")), ((NI) 28));
			L += ((NI) 28);
		}
		LA45_: ;
		{
			if (!((NI)(L + ((*e).message ? (*e).message->Sup.len : 0)) < ((NI) 2000))) goto LA49_;
			copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((&buf[(L)- 0]))), ((void*) (nimToCStringConv((*e).message))), ((NI) (((*e).message ? (*e).message->Sup.len : 0))));
			L += ((*e).message ? (*e).message->Sup.len : 0);
		}
		LA49_: ;
		{
			if (!((NI)(L + ((NI) 2)) < ((NI) 2000))) goto LA53_;
			copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((&buf[(L)- 0]))), ((void*) (" [")), ((NI) 2));
			L += ((NI) 2);
		}
		LA53_: ;
		{
			if (!((NI)(L + ((*e).name ? nimCStrLen((*e).name) : 0)) < ((NI) 2000))) goto LA57_;
			copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((&buf[(L)- 0]))), ((void*) ((*e).name)), ((NI) (((*e).name ? nimCStrLen((*e).name) : 0))));
			L += ((*e).name ? nimCStrLen((*e).name) : 0);
		}
		LA57_: ;
		{
			if (!((NI)(L + ((NI) 2)) < ((NI) 2000))) goto LA61_;
			copyMem__i80o3k0SgEI5gTRCzYdyWAsystem(((void*) ((&buf[(L)- 0]))), ((void*) ("]\012")), ((NI) 2));
			L += ((NI) 2);
		}
		LA61_: ;
		{
			NimStringDesc* T67_;
			if (!!((onUnhandledException__bFrawQlTKZhLweDD36j9b8g == NIM_NIL))) goto LA65_;
			T67_ = (NimStringDesc*)0;
			T67_ = cstrToNimstr(((NCSTRING) (buf)));
			onUnhandledException__bFrawQlTKZhLweDD36j9b8g(T67_);
		}
		goto LA63_;
		LA65_: ;
		{
			showErrorMessage__zsORN9crdKxsL9cHrQcdHSMw(((NCSTRING) (buf)));
			quitOrDebug__RsY2eAkO9aEvlDhb7ZyRF8gsystem();
		}
		LA63_: ;
	}
	LA19_: ;
	}BeforeRet_: ;
}
N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line) {	{
		if (!((*e).name == 0)) goto LA3_;
		(*e).name = ename;
	}
	LA3_: ;
	{
		NIM_BOOL T7_;
		tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA T11_;
		NI T12_;
		T7_ = (NIM_BOOL)0;
		T7_ = !((((void*) (procname)) == NIM_NIL));
		if (!(T7_)) goto LA8_;
		T7_ = !((((void*) (filename)) == NIM_NIL));
		LA8_: ;
		if (!T7_) goto LA9_;
		nimZeroMem((void*)(&T11_), sizeof(tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA));
		T11_.procname = procname;
		T11_.filename = filename;
		T11_.line = line;
		(*e).trace = (tySequence__uB9b75OUPRENsBAu4AnoePA*) incrSeqV3((TGenericSeq*)((*e).trace), (&NTI__uB9b75OUPRENsBAu4AnoePA_));
		T12_ = (*e).trace->Sup.len++;
		(*e).trace->data[T12_] = T11_;
	}
	LA9_: ;
	raiseExceptionAux__na8C8pUZ9cLQWVwk35l5vfw(e);
}
static N_NIMCALL(void, Marker_tyRef__9bTGS9b5gqA3m1IgV71Csl0Q)(void* p, NI op) {
	tyObject_IndexError__K39aEGuwNdydKn2WFEpUygg* a;
	a = (tyObject_IndexError__K39aEGuwNdydKn2WFEpUygg*)p;
	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
	nimGCvisit((void*)(*a).Sup.Sup.up, op);
}
static N_INLINE(void, sysFatal__wxS1DD5S67Tovuyk2fdOLwsystem)(NimStringDesc* message) {	tyObject_IndexError__K39aEGuwNdydKn2WFEpUygg* e;
	e = (tyObject_IndexError__K39aEGuwNdydKn2WFEpUygg*)0;
	e = (tyObject_IndexError__K39aEGuwNdydKn2WFEpUygg*) newObj((&NTI__9bTGS9b5gqA3m1IgV71Csl0Q_), sizeof(tyObject_IndexError__K39aEGuwNdydKn2WFEpUygg));
	(*e).Sup.Sup.Sup.m_type = (&NTI__K39aEGuwNdydKn2WFEpUygg_);
	(*e).Sup.Sup.name = "IndexError";
	(*e).Sup.Sup.message = copyString(message);
	raiseExceptionEx((Exception*)e, "IndexError", "sysFatal", "fatal.nim", 39);
}
N_NOINLINE(void, raiseIndexError2)(NI i, NI n) {	NimStringDesc* T1_;
	T1_ = (NimStringDesc*)0;
	{
		if (!(n < ((NI) 0))) goto LA4_;
		T1_ = copyString(((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_12));
	}
	goto LA2_;
	LA4_: ;
	{
		NimStringDesc* T7_;
		NimStringDesc* T8_;
		NimStringDesc* T9_;
		T7_ = (NimStringDesc*)0;
		T8_ = (NimStringDesc*)0;
		T8_ = nimIntToStr(i);
		T9_ = (NimStringDesc*)0;
		T9_ = nimIntToStr(n);
		T7_ = rawNewString((T8_ ? T8_->Sup.len : 0) + (T9_ ? T9_->Sup.len : 0) + 19);
appendString(T7_, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_13));
appendString(T7_, T8_);
appendString(T7_, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_14));
appendString(T7_, T9_);
		T1_ = T7_;
	}
	LA2_: ;
	sysFatal__wxS1DD5S67Tovuyk2fdOLwsystem(T1_);
}
static N_NIMCALL(void, Marker_tyRef__Efo9bmO5NYUNf9a3ESqm9bZ9bQ)(void* p, NI op) {
	tyObject_RangeError__8inKGns6i1OoXN9aLZwcSOw* a;
	a = (tyObject_RangeError__8inKGns6i1OoXN9aLZwcSOw*)p;
	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
	nimGCvisit((void*)(*a).Sup.Sup.up, op);
}
static N_INLINE(void, sysFatal__a60aq0IF2jJo1tjxmBHZ7gsystem)(NimStringDesc* message, NimStringDesc* arg) {	tyObject_RangeError__8inKGns6i1OoXN9aLZwcSOw* e;
	NimStringDesc* T1_;
	e = (tyObject_RangeError__8inKGns6i1OoXN9aLZwcSOw*)0;
	e = (tyObject_RangeError__8inKGns6i1OoXN9aLZwcSOw*) newObj((&NTI__Efo9bmO5NYUNf9a3ESqm9bZ9bQ_), sizeof(tyObject_RangeError__8inKGns6i1OoXN9aLZwcSOw));
	(*e).Sup.Sup.Sup.m_type = (&NTI__8inKGns6i1OoXN9aLZwcSOw_);
	(*e).Sup.Sup.name = "RangeError";
	T1_ = (NimStringDesc*)0;
	T1_ = rawNewString((message ? message->Sup.len : 0) + (arg ? arg->Sup.len : 0) + 0);
appendString(T1_, message);
appendString(T1_, arg);
	(*e).Sup.Sup.message = T1_;
	raiseExceptionEx((Exception*)e, "RangeError", "sysFatal", "fatal.nim", 48);
}
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x) {	NimStringDesc* result;
	result = (NimStringDesc*)0;
	result = rawNewString(((NI) 32));
	addInt__mftMOxbyu0h4yByfs3sqjA((&result), x);
	return result;
}
N_NOINLINE(void, raiseRangeError)(NI64 val) {	NimStringDesc* T1_;
	T1_ = (NimStringDesc*)0;
	T1_ = nimInt64ToStr(val);
	sysFatal__a60aq0IF2jJo1tjxmBHZ7gsystem(((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_15), T1_);
}
N_LIB_PRIVATE N_NIMCALL(void, setPosition__Zp3k9bHhfG9aKFJWRJNwKuKw)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack, void* position) {}
N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom) {	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	{
		if (!(NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.stack.bottom == NIM_NIL)) goto LA3_;
		NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.stack.bottom = theStackBottom;
	}
	goto LA1_;
	LA3_: ;
	{
		NI a;
		NI b;
		if (!!((theStackBottom == NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.stack.bottom))) goto LA6_;
		a = ((NI) (ptrdiff_t) (theStackBottom));
		b = ((NI) (ptrdiff_t) (NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.stack.bottom));
		NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.stack.bottom = ((void*) (((a >= b) ? a : b)));
	}
	goto LA1_;
	LA6_: ;
	LA1_: ;
	setPosition__Zp3k9bHhfG9aKFJWRJNwKuKw((&NimTV_->gch__IcYaEuuWivYAS86vFMTS3Q.stack), theStackBottom);
}
N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass) {	NIM_BOOL result;
	TNimType* x;
{	result = (NIM_BOOL)0;
	x = obj;
	{
		if (!(x == subclass)) goto LA3_;
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA3_: ;
	{
		while (1) {
			if (!!((x == subclass))) goto LA6;
			{
				if (!(x == NIM_NIL)) goto LA9_;
				result = NIM_FALSE;
				goto BeforeRet_;
			}
			LA9_: ;
			x = (*x).base;
		} LA6: ;
	}
	result = NIM_TRUE;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
static N_NIMCALL(void, Marker_tyRef__DsOOBcxCUeVlNUDRmn9afcA)(void* p, NI op) {
	tyObject_ReraiseError__Wyd9avMRCq0gsOu9adFoIjCA* a;
	a = (tyObject_ReraiseError__Wyd9avMRCq0gsOu9adFoIjCA*)p;
	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
	nimGCvisit((void*)(*a).Sup.Sup.up, op);
}
static N_INLINE(void, sysFatal__loKUBbrfPTCD1cUb5IkxkAsystem)(NimStringDesc* message) {	tyObject_ReraiseError__Wyd9avMRCq0gsOu9adFoIjCA* e;
	e = (tyObject_ReraiseError__Wyd9avMRCq0gsOu9adFoIjCA*)0;
	e = (tyObject_ReraiseError__Wyd9avMRCq0gsOu9adFoIjCA*) newObj((&NTI__DsOOBcxCUeVlNUDRmn9afcA_), sizeof(tyObject_ReraiseError__Wyd9avMRCq0gsOu9adFoIjCA));
	(*e).Sup.Sup.Sup.m_type = (&NTI__Wyd9avMRCq0gsOu9adFoIjCA_);
	(*e).Sup.Sup.name = "ReraiseError";
	(*e).Sup.Sup.message = copyString(message);
	raiseExceptionEx((Exception*)e, "ReraiseError", "sysFatal", "fatal.nim", 39);
}
N_NIMCALL(void, reraiseException)(void) {	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
	{
		if (!(NimTV_->currException__9bVPeDJlYTi9bQApZpfH8wjg == NIM_NIL)) goto LA3_;
		sysFatal__loKUBbrfPTCD1cUb5IkxkAsystem(((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_16));
	}
	goto LA1_;
	LA3_: ;
	{
		raiseExceptionAux__na8C8pUZ9cLQWVwk35l5vfw(NimTV_->currException__9bVPeDJlYTi9bQApZpfH8wjg);
	}
	LA1_: ;
}
static N_NIMCALL(void, Marker_tyRef__ruLPO7OV4lfUtVF9bcHhElQ)(void* p, NI op) {
	tyObject_NilAccessError__GOcOTSJVFwA9bjh66gBCclQ* a;
	a = (tyObject_NilAccessError__GOcOTSJVFwA9bjh66gBCclQ*)p;
	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
	nimGCvisit((void*)(*a).Sup.Sup.up, op);
}
static N_INLINE(void, sysFatal__rmMwjwTwcnO3nfuGk3FZeAsystem)(NimStringDesc* message) {	tyObject_NilAccessError__GOcOTSJVFwA9bjh66gBCclQ* e;
	e = (tyObject_NilAccessError__GOcOTSJVFwA9bjh66gBCclQ*)0;
	e = (tyObject_NilAccessError__GOcOTSJVFwA9bjh66gBCclQ*) newObj((&NTI__ruLPO7OV4lfUtVF9bcHhElQ_), sizeof(tyObject_NilAccessError__GOcOTSJVFwA9bjh66gBCclQ));
	(*e).Sup.Sup.Sup.m_type = (&NTI__GOcOTSJVFwA9bjh66gBCclQ_);
	(*e).Sup.Sup.name = "NilAccessError";
	(*e).Sup.Sup.message = copyString(message);
	raiseExceptionEx((Exception*)e, "NilAccessError", "sysFatal", "fatal.nim", 39);
}
N_NOINLINE(void, chckNil)(void* p) {	{
		if (!(p == NIM_NIL)) goto LA3_;
		sysFatal__rmMwjwTwcnO3nfuGk3FZeAsystem(((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_17));
	}
	LA3_: ;
}
static N_NIMCALL(void, Marker_tyRef__Ie1m0dv1ZHg72IgPRr1cDw)(void* p, NI op) {
	tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw* a;
	a = (tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw*)p;
	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
	nimGCvisit((void*)(*a).Sup.Sup.up, op);
}
static N_INLINE(NI, subInt)(NI a, NI b) {	NI result;
{	result = (NI)0;
	result = (NI)((NU64)(a) - (NU64)(b));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (((NI) 0) <= (NI)(result ^ a));
		if (T3_) goto LA4_;
		T3_ = (((NI) 0) <= (NI)(result ^ (NI)((NU64) ~(b))));
		LA4_: ;
		if (!T3_) goto LA5_;
		goto BeforeRet_;
	}
	LA5_: ;
	raiseOverflow();
	}BeforeRet_: ;
	return result;
}
static N_INLINE(NI, chckRange)(NI i, NI a, NI b) {	NI result;
{	result = (NI)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (a <= i);
		if (!(T3_)) goto LA4_;
		T3_ = (i <= b);
		LA4_: ;
		if (!T3_) goto LA5_;
		result = i;
		goto BeforeRet_;
	}
	goto LA1_;
	LA5_: ;
	{
		raiseRangeError(((NI64) (i)));
	}
	LA1_: ;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, substr__2yh9cer0ymNRHlOOg8P7IuA)(NimStringDesc* s, NI first, NI last) {	NimStringDesc* result;
	NI first_2;
	NI L;
	NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_18;
	NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_19;
	result = (NimStringDesc*)0;
	first_2 = ((first >= ((NI) 0)) ? first : ((NI) 0));
	TM__Q5wkpxktOdTGvlSRo9bzt9aw_18 = subInt(((last <= ((s ? s->Sup.len : 0)-1)) ? last : ((s ? s->Sup.len : 0)-1)), first_2);
	TM__Q5wkpxktOdTGvlSRo9bzt9aw_19 = addInt((NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_18), ((NI) 1));
	L = (((NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_19) >= ((NI) 0)) ? (NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_19) : ((NI) 0));
	result = mnewString(((NI)chckRange(L, ((NI) 0), ((NI) IL64(9223372036854775807)))));
	{
		NI i;
		NI colontmp_;
		NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_20;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		TM__Q5wkpxktOdTGvlSRo9bzt9aw_20 = subInt(L, ((NI) 1));
		colontmp_ = (NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_20);
		res = ((NI) 0);
		{
			while (1) {
				NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_21;
				NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_22;
				if (!(res <= colontmp_)) goto LA3;
				i = res;
				if ((NU)(i) >= (NU)(result ? result->Sup.len : 0)) raiseIndexError2(i,(result ? result->Sup.len : 0)-1);
				TM__Q5wkpxktOdTGvlSRo9bzt9aw_21 = addInt(i, first_2);
				if ((NU)((NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_21)) >= (NU)(s ? s->Sup.len : 0)) raiseIndexError2((NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_21),(s ? s->Sup.len : 0)-1);
				result->data[i] = s->data[(NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_21)];
				TM__Q5wkpxktOdTGvlSRo9bzt9aw_22 = addInt(res, ((NI) 1));
				res = (NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_22);
			} LA3: ;
		}
	}
	return result;
}
static N_INLINE(pthread_key_t, threadVarAlloc__jhSLbTQw3j1lPALL0SGkjAsystem)(void) {	pthread_key_t result;
	NI32 T1_;
	nimZeroMem((void*)(&result), sizeof(pthread_key_t));
	T1_ = (NI32)0;
	T1_ = pthread_key_create((&result), NIM_NIL);
	(void)(T1_);
	return result;
}
static N_INLINE(void, threadVarSetValue__QhmurQcqUiWj2OcwZoqiTAsystem)(pthread_key_t s, void* value) {	NI32 T1_;
	T1_ = (NI32)0;
	T1_ = pthread_setspecific(s, value);
	(void)(T1_);
}
static N_INLINE(void, initThreadVarsEmulation)(void) {	globalsSlot__ciXDZu9c27pHpCRMoz4RIgw = threadVarAlloc__jhSLbTQw3j1lPALL0SGkjAsystem();
	threadVarSetValue__QhmurQcqUiWj2OcwZoqiTAsystem(globalsSlot__ciXDZu9c27pHpCRMoz4RIgw, ((void*) ((&mainThread__6r3APOnKvB9aL9atazGvT52A))));
}
static N_INLINE(void, initStackBottomWith)(void* locals) {	nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void) {
{
	TFrame FR_; FR_.len = 0;
	NimThreadVars* NimTV_;
	NimTV_ = (NimThreadVars*) GetThreadLocalVars();
}
{

	nimRegisterThreadLocalMarker(TM__Q5wkpxktOdTGvlSRo9bzt9aw_3);


	nimRegisterThreadLocalMarker(TM__Q5wkpxktOdTGvlSRo9bzt9aw_6);

	{
		NI T3_;
		int T6_;
		T3_ = (NI)0;
		T3_ = NimThreadVarsSize();
		if (!(((NI) 16008) < T3_)) goto LA4_;
		T6_ = (int)0;
		T6_ = fprintf(stderr, "too large thread local storage size requested,\012use -d:\\\"nimTlsS"
"ize=X\\\" to setup even more or stop using unittest.nim");
		exit(((NI) 1));
	}
	LA4_: ;
	nimZeroMem((void*)(&strDesc__D0UzA4zsDu5tgpJQ9a9clXPg), sizeof(TNimType));
	strDesc__D0UzA4zsDu5tgpJQ9a9clXPg.size = ((NI) 8);
	strDesc__D0UzA4zsDu5tgpJQ9a9clXPg.kind = ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 28);
	strDesc__D0UzA4zsDu5tgpJQ9a9clXPg.flags = 2;
	initGC__amVlU9ajqZ06ujoesRBHcDg();
	registerSignalHandler__amVlU9ajqZ06ujoesRBHcDg_2();
	pthread_mutex_init((&heapLock__Cm9aJxbMhUuv7Cj8trffHQw), NIM_NIL);
}
}

N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void) {
static TNimNode* TM__Q5wkpxktOdTGvlSRo9bzt9aw_2_2[2];
static TNimNode* TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_6[6];
static TNimNode* TM__Q5wkpxktOdTGvlSRo9bzt9aw_5_3[3];
static TNimNode TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[26];
NTI__IIomJ6ptE6vfJ5zRbATgkQ_.size = sizeof(tyTuple__JfHvHzMrhKkWAUvQKe0i1A);
NTI__IIomJ6ptE6vfJ5zRbATgkQ_.kind = 18;
NTI__IIomJ6ptE6vfJ5zRbATgkQ_.base = 0;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_2_2[0] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[1];
NTI__vr5DoT1jILTGdRlYv1OYpw_.size = sizeof(void*);
NTI__vr5DoT1jILTGdRlYv1OYpw_.kind = 26;
NTI__vr5DoT1jILTGdRlYv1OYpw_.base = 0;
NTI__vr5DoT1jILTGdRlYv1OYpw_.flags = 3;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[1].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[1].offset = offsetof(tyTuple__JfHvHzMrhKkWAUvQKe0i1A, Field0);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[1].typ = (&NTI__vr5DoT1jILTGdRlYv1OYpw_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[1].name = "Field0";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_2_2[1] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[2];
NTI__ytyiCJqK439aF9cIibuRVpAg_.size = sizeof(RootObj);
NTI__ytyiCJqK439aF9cIibuRVpAg_.kind = 17;
NTI__ytyiCJqK439aF9cIibuRVpAg_.base = 0;
NTI__ytyiCJqK439aF9cIibuRVpAg_.flags = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[3].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[3].kind = 2;
NTI__ytyiCJqK439aF9cIibuRVpAg_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[3];
NTI__diB2NTuAIWY0FO9c5IUJRGg_.size = sizeof(tyObject_Env_systemdotnim___diB2NTuAIWY0FO9c5IUJRGg);
NTI__diB2NTuAIWY0FO9c5IUJRGg_.kind = 17;
NTI__diB2NTuAIWY0FO9c5IUJRGg_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
NTI__diB2NTuAIWY0FO9c5IUJRGg_.flags = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[4].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[4].kind = 2;
NTI__diB2NTuAIWY0FO9c5IUJRGg_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[4];
NTI__HsJiUUcO9cHBdUCi0HwkSTA_.size = sizeof(tyObject_Env_systemdotnim___diB2NTuAIWY0FO9c5IUJRGg*);
NTI__HsJiUUcO9cHBdUCi0HwkSTA_.kind = 22;
NTI__HsJiUUcO9cHBdUCi0HwkSTA_.base = (&NTI__diB2NTuAIWY0FO9c5IUJRGg_);
NTI__HsJiUUcO9cHBdUCi0HwkSTA_.marker = Marker_tyRef__HsJiUUcO9cHBdUCi0HwkSTA;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[2].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[2].offset = offsetof(tyTuple__JfHvHzMrhKkWAUvQKe0i1A, Field1);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[2].typ = (&NTI__HsJiUUcO9cHBdUCi0HwkSTA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[2].name = "Field1";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[0].len = 2; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[0].kind = 2; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[0].sons = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_2_2[0];
NTI__IIomJ6ptE6vfJ5zRbATgkQ_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[0];
NTI__WF89a8QyKeDCh4DYWTmSiBg_.size = sizeof(tySequence__WF89a8QyKeDCh4DYWTmSiBg*);
NTI__WF89a8QyKeDCh4DYWTmSiBg_.kind = 24;
NTI__WF89a8QyKeDCh4DYWTmSiBg_.base = (&NTI__IIomJ6ptE6vfJ5zRbATgkQ_);
NTI__WF89a8QyKeDCh4DYWTmSiBg_.marker = Marker_tySequence__WF89a8QyKeDCh4DYWTmSiBg;
NTI__XEycrCsme5C8CVWAYEcdBQ_.size = sizeof(Exception);
NTI__XEycrCsme5C8CVWAYEcdBQ_.kind = 17;
NTI__XEycrCsme5C8CVWAYEcdBQ_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_6[0] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[6];
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[6].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[6].offset = offsetof(Exception, parent);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[6].typ = (&NTI__vU9aO9cTqOMn6CBzhV8rX7Sw_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[6].name = "parent";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_6[1] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[7];
NTI__S9agCYBinaYZnGWcjTdxclg_.size = sizeof(NCSTRING);
NTI__S9agCYBinaYZnGWcjTdxclg_.kind = 29;
NTI__S9agCYBinaYZnGWcjTdxclg_.base = 0;
NTI__S9agCYBinaYZnGWcjTdxclg_.flags = 3;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[7].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[7].offset = offsetof(Exception, name);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[7].typ = (&NTI__S9agCYBinaYZnGWcjTdxclg_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[7].name = "name";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_6[2] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[8];
NTI__77mFvmsOLKik79ci2hXkHEg_.size = sizeof(NimStringDesc*);
NTI__77mFvmsOLKik79ci2hXkHEg_.kind = 28;
NTI__77mFvmsOLKik79ci2hXkHEg_.base = 0;
NTI__77mFvmsOLKik79ci2hXkHEg_.flags = 2;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[8].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[8].offset = offsetof(Exception, message);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[8].typ = (&NTI__77mFvmsOLKik79ci2hXkHEg_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[8].name = "msg";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_6[3] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[9];
NTI__oLyohQ7O2XOvGnflOss8EA_.size = sizeof(tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA);
NTI__oLyohQ7O2XOvGnflOss8EA_.kind = 18;
NTI__oLyohQ7O2XOvGnflOss8EA_.base = 0;
NTI__oLyohQ7O2XOvGnflOss8EA_.flags = 3;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_5_3[0] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[11];
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[11].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[11].offset = offsetof(tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA, procname);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[11].typ = (&NTI__S9agCYBinaYZnGWcjTdxclg_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[11].name = "procname";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_5_3[1] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[12];
NTI__rR5Bzr1D5krxoo1NcNyeMA_.size = sizeof(NI);
NTI__rR5Bzr1D5krxoo1NcNyeMA_.kind = 31;
NTI__rR5Bzr1D5krxoo1NcNyeMA_.base = 0;
NTI__rR5Bzr1D5krxoo1NcNyeMA_.flags = 3;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[12].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[12].offset = offsetof(tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA, line);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[12].typ = (&NTI__rR5Bzr1D5krxoo1NcNyeMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[12].name = "line";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_5_3[2] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[13];
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[13].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[13].offset = offsetof(tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA, filename);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[13].typ = (&NTI__S9agCYBinaYZnGWcjTdxclg_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[13].name = "filename";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[10].len = 3; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[10].kind = 2; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[10].sons = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_5_3[0];
NTI__oLyohQ7O2XOvGnflOss8EA_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[10];
NTI__uB9b75OUPRENsBAu4AnoePA_.size = sizeof(tySequence__uB9b75OUPRENsBAu4AnoePA*);
NTI__uB9b75OUPRENsBAu4AnoePA_.kind = 24;
NTI__uB9b75OUPRENsBAu4AnoePA_.base = (&NTI__oLyohQ7O2XOvGnflOss8EA_);
NTI__uB9b75OUPRENsBAu4AnoePA_.flags = 2;
NTI__uB9b75OUPRENsBAu4AnoePA_.marker = Marker_tySequence__uB9b75OUPRENsBAu4AnoePA;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[9].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[9].offset = offsetof(Exception, trace);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[9].typ = (&NTI__uB9b75OUPRENsBAu4AnoePA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[9].name = "trace";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_6[4] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[14];
NTI__hMQEc0FMry7Up7EoPki79aA_.size = sizeof(NU);
NTI__hMQEc0FMry7Up7EoPki79aA_.kind = 40;
NTI__hMQEc0FMry7Up7EoPki79aA_.base = 0;
NTI__hMQEc0FMry7Up7EoPki79aA_.flags = 3;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[14].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[14].offset = offsetof(Exception, raiseId);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[14].typ = (&NTI__hMQEc0FMry7Up7EoPki79aA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[14].name = "raiseId";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_6[5] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[15];
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[15].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[15].offset = offsetof(Exception, up);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[15].typ = (&NTI__vU9aO9cTqOMn6CBzhV8rX7Sw_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[15].name = "up";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[5].len = 6; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[5].kind = 2; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[5].sons = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_6[0];
NTI__XEycrCsme5C8CVWAYEcdBQ_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[5];
NTI__vU9aO9cTqOMn6CBzhV8rX7Sw_.size = sizeof(Exception*);
NTI__vU9aO9cTqOMn6CBzhV8rX7Sw_.kind = 22;
NTI__vU9aO9cTqOMn6CBzhV8rX7Sw_.base = (&NTI__XEycrCsme5C8CVWAYEcdBQ_);
NTI__vU9aO9cTqOMn6CBzhV8rX7Sw_.marker = Marker_tyRef__vU9aO9cTqOMn6CBzhV8rX7Sw;
NTI__nuuFlkPr6wNn1dt5MhCk3g_.size = sizeof(unsigned long);
NTI__nuuFlkPr6wNn1dt5MhCk3g_.kind = 40;
NTI__nuuFlkPr6wNn1dt5MhCk3g_.base = 0;
NTI__nuuFlkPr6wNn1dt5MhCk3g_.flags = 3;
NTI__nlCscttRCss70IBTyuBqnA_.size = sizeof(int);
NTI__nlCscttRCss70IBTyuBqnA_.kind = 34;
NTI__nlCscttRCss70IBTyuBqnA_.base = 0;
NTI__nlCscttRCss70IBTyuBqnA_.flags = 3;
NTI__EfDYb5NOiMBijiUDCmXqPw_.size = sizeof(unsigned int);
NTI__EfDYb5NOiMBijiUDCmXqPw_.kind = 43;
NTI__EfDYb5NOiMBijiUDCmXqPw_.base = 0;
NTI__EfDYb5NOiMBijiUDCmXqPw_.flags = 3;
NTI__LbeSGvgPzGzXnW9caIkJqMA_.size = sizeof(tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA);
NTI__LbeSGvgPzGzXnW9caIkJqMA_.kind = 17;
NTI__LbeSGvgPzGzXnW9caIkJqMA_.base = (&NTI__XEycrCsme5C8CVWAYEcdBQ_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[16].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[16].kind = 2;
NTI__LbeSGvgPzGzXnW9caIkJqMA_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[16];
NTI__G9cUlLvU4AFC26wbFxLFkFA_.size = sizeof(tyObject_AssertionError__G9cUlLvU4AFC26wbFxLFkFA);
NTI__G9cUlLvU4AFC26wbFxLFkFA_.kind = 17;
NTI__G9cUlLvU4AFC26wbFxLFkFA_.base = (&NTI__LbeSGvgPzGzXnW9caIkJqMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[17].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[17].kind = 2;
NTI__G9cUlLvU4AFC26wbFxLFkFA_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[17];
NTI__ShBqCFAISBSH2YqBfe6zjg_.size = sizeof(tyObject_AssertionError__G9cUlLvU4AFC26wbFxLFkFA*);
NTI__ShBqCFAISBSH2YqBfe6zjg_.kind = 22;
NTI__ShBqCFAISBSH2YqBfe6zjg_.base = (&NTI__G9cUlLvU4AFC26wbFxLFkFA_);
NTI__ShBqCFAISBSH2YqBfe6zjg_.marker = Marker_tyRef__ShBqCFAISBSH2YqBfe6zjg;
NTI__XIT9aewsXycM2U5B437NUDA_.size = sizeof(tyObject_ArithmeticError__XIT9aewsXycM2U5B437NUDA);
NTI__XIT9aewsXycM2U5B437NUDA_.kind = 17;
NTI__XIT9aewsXycM2U5B437NUDA_.base = (&NTI__LbeSGvgPzGzXnW9caIkJqMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[18].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[18].kind = 2;
NTI__XIT9aewsXycM2U5B437NUDA_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[18];
NTI__Ss6DFlX5iSZpHRZDmP74bg_.size = sizeof(tyObject_OverflowError__Ss6DFlX5iSZpHRZDmP74bg);
NTI__Ss6DFlX5iSZpHRZDmP74bg_.kind = 17;
NTI__Ss6DFlX5iSZpHRZDmP74bg_.base = (&NTI__XIT9aewsXycM2U5B437NUDA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[19].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[19].kind = 2;
NTI__Ss6DFlX5iSZpHRZDmP74bg_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[19];
NTI__Pjt0MQjoA6TAHAHOFNel9cg_.size = sizeof(tyObject_OverflowError__Ss6DFlX5iSZpHRZDmP74bg*);
NTI__Pjt0MQjoA6TAHAHOFNel9cg_.kind = 22;
NTI__Pjt0MQjoA6TAHAHOFNel9cg_.base = (&NTI__Ss6DFlX5iSZpHRZDmP74bg_);
NTI__Pjt0MQjoA6TAHAHOFNel9cg_.marker = Marker_tyRef__Pjt0MQjoA6TAHAHOFNel9cg;
NTI__K39aEGuwNdydKn2WFEpUygg_.size = sizeof(tyObject_IndexError__K39aEGuwNdydKn2WFEpUygg);
NTI__K39aEGuwNdydKn2WFEpUygg_.kind = 17;
NTI__K39aEGuwNdydKn2WFEpUygg_.base = (&NTI__LbeSGvgPzGzXnW9caIkJqMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[20].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[20].kind = 2;
NTI__K39aEGuwNdydKn2WFEpUygg_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[20];
NTI__9bTGS9b5gqA3m1IgV71Csl0Q_.size = sizeof(tyObject_IndexError__K39aEGuwNdydKn2WFEpUygg*);
NTI__9bTGS9b5gqA3m1IgV71Csl0Q_.kind = 22;
NTI__9bTGS9b5gqA3m1IgV71Csl0Q_.base = (&NTI__K39aEGuwNdydKn2WFEpUygg_);
NTI__9bTGS9b5gqA3m1IgV71Csl0Q_.marker = Marker_tyRef__9bTGS9b5gqA3m1IgV71Csl0Q;
NTI__8inKGns6i1OoXN9aLZwcSOw_.size = sizeof(tyObject_RangeError__8inKGns6i1OoXN9aLZwcSOw);
NTI__8inKGns6i1OoXN9aLZwcSOw_.kind = 17;
NTI__8inKGns6i1OoXN9aLZwcSOw_.base = (&NTI__LbeSGvgPzGzXnW9caIkJqMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[21].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[21].kind = 2;
NTI__8inKGns6i1OoXN9aLZwcSOw_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[21];
NTI__Efo9bmO5NYUNf9a3ESqm9bZ9bQ_.size = sizeof(tyObject_RangeError__8inKGns6i1OoXN9aLZwcSOw*);
NTI__Efo9bmO5NYUNf9a3ESqm9bZ9bQ_.kind = 22;
NTI__Efo9bmO5NYUNf9a3ESqm9bZ9bQ_.base = (&NTI__8inKGns6i1OoXN9aLZwcSOw_);
NTI__Efo9bmO5NYUNf9a3ESqm9bZ9bQ_.marker = Marker_tyRef__Efo9bmO5NYUNf9a3ESqm9bZ9bQ;
NTI__Wyd9avMRCq0gsOu9adFoIjCA_.size = sizeof(tyObject_ReraiseError__Wyd9avMRCq0gsOu9adFoIjCA);
NTI__Wyd9avMRCq0gsOu9adFoIjCA_.kind = 17;
NTI__Wyd9avMRCq0gsOu9adFoIjCA_.base = (&NTI__LbeSGvgPzGzXnW9caIkJqMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[22].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[22].kind = 2;
NTI__Wyd9avMRCq0gsOu9adFoIjCA_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[22];
NTI__DsOOBcxCUeVlNUDRmn9afcA_.size = sizeof(tyObject_ReraiseError__Wyd9avMRCq0gsOu9adFoIjCA*);
NTI__DsOOBcxCUeVlNUDRmn9afcA_.kind = 22;
NTI__DsOOBcxCUeVlNUDRmn9afcA_.base = (&NTI__Wyd9avMRCq0gsOu9adFoIjCA_);
NTI__DsOOBcxCUeVlNUDRmn9afcA_.marker = Marker_tyRef__DsOOBcxCUeVlNUDRmn9afcA;
NTI__GOcOTSJVFwA9bjh66gBCclQ_.size = sizeof(tyObject_NilAccessError__GOcOTSJVFwA9bjh66gBCclQ);
NTI__GOcOTSJVFwA9bjh66gBCclQ_.kind = 17;
NTI__GOcOTSJVFwA9bjh66gBCclQ_.base = (&NTI__LbeSGvgPzGzXnW9caIkJqMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[23].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[23].kind = 2;
NTI__GOcOTSJVFwA9bjh66gBCclQ_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[23];
NTI__ruLPO7OV4lfUtVF9bcHhElQ_.size = sizeof(tyObject_NilAccessError__GOcOTSJVFwA9bjh66gBCclQ*);
NTI__ruLPO7OV4lfUtVF9bcHhElQ_.kind = 22;
NTI__ruLPO7OV4lfUtVF9bcHhElQ_.base = (&NTI__GOcOTSJVFwA9bjh66gBCclQ_);
NTI__ruLPO7OV4lfUtVF9bcHhElQ_.marker = Marker_tyRef__ruLPO7OV4lfUtVF9bcHhElQ;
NTI__qrLSDoe2oBoAqNtJ9badtnA_.size = sizeof(tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA);
NTI__qrLSDoe2oBoAqNtJ9badtnA_.kind = 17;
NTI__qrLSDoe2oBoAqNtJ9badtnA_.base = (&NTI__XEycrCsme5C8CVWAYEcdBQ_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[24].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[24].kind = 2;
NTI__qrLSDoe2oBoAqNtJ9badtnA_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[24];
NTI__yoNlBGx0D2tRizIdhQuENw_.size = sizeof(tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw);
NTI__yoNlBGx0D2tRizIdhQuENw_.kind = 17;
NTI__yoNlBGx0D2tRizIdhQuENw_.base = (&NTI__qrLSDoe2oBoAqNtJ9badtnA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[25].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[25].kind = 2;
NTI__yoNlBGx0D2tRizIdhQuENw_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[25];
NTI__Ie1m0dv1ZHg72IgPRr1cDw_.size = sizeof(tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw*);
NTI__Ie1m0dv1ZHg72IgPRr1cDw_.kind = 22;
NTI__Ie1m0dv1ZHg72IgPRr1cDw_.base = (&NTI__yoNlBGx0D2tRizIdhQuENw_);
NTI__Ie1m0dv1ZHg72IgPRr1cDw_.marker = Marker_tyRef__Ie1m0dv1ZHg72IgPRr1cDw;
}

