/* Generated by Nim Compiler v1.6.6 */
#define NIM_INTBITS 64

#include "nimbase.h"
#include <string.h>
#include <setjmp.h>
#include <sys/mman.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.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_(proc, file) \
      TFrame FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);

  #  define nimfrs_(proc, file, slots, length) \
      struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);

  #  define nimln_(n, file) \
      FR_.line = n; FR_.filename = file;
    #  define nimfr_(proc, file) \
      TFrame FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);

  #  define nimfrs_(proc, file, slots, length) \
      struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);

  #  define nimln_(n, file) \
      FR_.line = n; FR_.filename = file;
  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_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w;
typedef struct tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ;
typedef struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ;
typedef struct tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ;
typedef struct tyObject_ArithmeticDefect__cT9c9bHlHSpA1QTnKbHjnIkA tyObject_ArithmeticDefect__cT9c9bHlHSpA1QTnKbHjnIkA;
typedef struct tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA;
typedef struct RootObj RootObj;
typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
typedef struct TSafePoint TSafePoint;
typedef struct tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA;
typedef struct tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ;
typedef struct tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g;
typedef struct GcFrameHeader GcFrameHeader;
typedef struct tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ;
typedef struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA;
typedef struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw;
typedef struct tyTuple__47w2DboNEPf69aPgubZdd7Q tyTuple__47w2DboNEPf69aPgubZdd7Q;
typedef N_NIMCALL_PTR(NIM_BOOL, tyProc__9axCnCRMUx32AHzFgBrzSMg) (Exception* e);
typedef N_NIMCALL_PTR(void, tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ) (void);
typedef N_NIMCALL_PTR(void, tyProc__NFmM6mqUOVW3cJg4yvk8Fw) (Exception* e);
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;
NI align;
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__SPr7N6UKfuF549bNPiUvSRw[256];
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__SPr7N6UKfuF549bNPiUvSRw 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 stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
NI counter;
NI max;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
};
struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
NI gcThreadId;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef long tyArray__TcvIiMAJvcwzNLsZkfnFnQ[25];
typedef NU tyArray__VqSA39cBDWnwnJySTumCdjw[8];
struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw {
tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* next;
NI key;
tyArray__VqSA39cBDWnwnJySTumCdjw bits;
};
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;
NIM_ALIGN(16) NU8 data[SEQ_DECL_SIZE];
};
struct tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ {
tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ* next;
NI zeroField;
};
struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg {
  tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w Sup;
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* next;
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* prev;
NIM_ALIGN(16) NU8 data[SEQ_DECL_SIZE];
};
struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
typedef NI8 tyArray__mkmEeKAWtk2yS9bBb1lUWXA[256];
struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw {
NI size;
NI acc;
tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* next;
};
struct tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ {
NI Field0;
NI Field1;
};
typedef tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* tyUncheckedArray__qYl1ErvQvkPpq9bTvm2UvTg[1];
typedef N_NIMCALL_PTR(void, Finalizer) (void* self);
typedef NU8 tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ;
typedef NU8 tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef NI tyArray__OQPb4glXtXQGOV29cAX1uQg[4];
struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg {
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* next;
NU key;
tyArray__OQPb4glXtXQGOV29cAX1uQg bits;
};
typedef tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* tyUncheckedArray__xm0FYDlyTP1z2D1LZJL9bqQ[1];
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct RootObj {
TNimType* m_type;
};
struct Exception {
  RootObj Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
Exception* up;
};
struct tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA {
  Exception Sup;
};
struct tyObject_ArithmeticDefect__cT9c9bHlHSpA1QTnKbHjnIkA {
  tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
};
struct tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ {
  tyObject_ArithmeticDefect__cT9c9bHlHSpA1QTnKbHjnIkA Sup;
};
struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
NCSTRING procname;
NI line;
NCSTRING filename;
};
struct TSafePoint {
TSafePoint* prev;
NI status;
jmp_buf context;
};
struct tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA {
  tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
};
struct tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ {
  tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
};
struct tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g {
  tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
};
typedef N_NIMCALL_PTR(void, tyProc__W6IXMh2CA4X1rFYGjUb4yg) (NimStringDesc* msg);
typedef TFrame* tyArray__pFdcUVk36Xt0LD9bLg3YaIQ[128];
struct tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ {
  tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA Sup;
};
typedef N_NOCONV_PTR(void, tyProc__ZEo3s9cIqJYP74f7GMZM2FA) (int a);
typedef tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ tyArray__9aTRall1siQT9bXabu2aKXUg[3500];
struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA {
  Exception Sup;
};
struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw {
  tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
};
struct tyTuple__47w2DboNEPf69aPgubZdd7Q {
NI Field0;
NI Field1;
NI Field2;
};
struct tySequence__uB9b75OUPRENsBAu4AnoePA {
  TGenericSeq Sup;
  tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
};
static N_INLINE(void, initStackBottom)(void);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, setPosition__system_5432)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack, void* position);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_2997)(void);
N_LIB_PRIVATE N_NIMCALL(void, writeStackTrace__system_2161)(void);
N_LIB_PRIVATE N_NIMCALL(void, rawWriteStackTrace__system_2846)(NimStringDesc** s);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size);
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rawNewStringNoInit)(NI space);
N_LIB_PRIVATE N_NIMCALL(void*, newObjNoInit)(TNimType* typ, NI size);
N_LIB_PRIVATE N_NIMCALL(void*, rawNewObj__system_5676)(TNimType* typ, NI size, tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NIMCALL(void, collectCT__system_5323)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
static N_INLINE(NI, getOccupiedMem__system_4848)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, collectCTBody__system_5869)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NOINLINE(NI, stackSize__system_5417)(void);
N_LIB_PRIVATE N_NOINLINE(NI, stackSize__system_5413)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack);
static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
static N_INLINE(void, prepareForInteriorPointerChecking__system_4769)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a);
N_LIB_PRIVATE N_NIMCALL(NI, lowGauge__system_4127)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n);
N_LIB_PRIVATE N_NIMCALL(NI, highGauge__system_4135)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n);
CLANG_NO_SANITIZE_ADDRESS N_LIB_PRIVATE void markStackAndRegisters__system_5806(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NIMCALL(void, setPosition__system_5429)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack, void* position);
N_LIB_PRIVATE N_NIMCALL(tyObject_GcStack__7fytPA5bBsob6See21YMRA*, getActiveStack__system_5435)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isActiveStack__system_5438)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack);
static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
static N_INLINE(void, gcMark__system_5797)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, void* p);
N_LIB_PRIVATE N_NIMCALL(void*, interiorAllocatedPtr__system_4771)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p);
static N_INLINE(NIM_BOOL, isAccessible__system_4490)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__system_4253)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key);
N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*, intSetGet__system_4214)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* t, NI key);
static N_INLINE(NI, pageIndex__system_4456)(void* p);
static N_INLINE(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*, pageAddr__system_4463)(void* p);
static N_INLINE(NIM_BOOL, chunkUnused__system_4380)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c);
static N_INLINE(NIM_BOOL, isSmallChunk__system_4374)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c);
static N_INLINE(NI, percentpercent___system_776)(NI x, NI y);
static N_INLINE(NIM_BOOL, lteqpercent___system_985)(NI x, NI y);
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, inRange__system_4155)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root, NI key);
static N_INLINE(void, incRef__system_5337)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, add__system_4888)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOCONV(void*, allocImpl__system_1743)(NI size);
N_LIB_PRIVATE N_NIMCALL(void*, alloc__system_4804)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, NI size);
N_LIB_PRIVATE N_NIMCALL(void*, rawAlloc__system_4588)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI requestedSize);
static N_INLINE(NI, roundup__system_3724)(NI x, NI v);
N_LIB_PRIVATE N_NIMCALL(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*, getSmallChunk__system_4567)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a);
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, getBigChunk__system_4544)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size);
static N_INLINE(void, mappingSearch__system_3872)(NI* r, NI* fl, NI* sl);
static N_INLINE(NI, msbit__system_3847)(NU32 x);
static N_INLINE(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, findSuitableBlock__system_3904)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI* fl, NI* sl);
static N_INLINE(NI, lsbit__system_3855)(NU32 x);
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, requestOsChunks__system_4467)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size);
static N_INLINE(void*, osAllocPages__system_3744)(NI size);
N_LIB_PRIVATE N_NOINLINE(void, raiseOutOfMem__system_3719)(void);
static N_INLINE(void, rawWrite)(FILE* f, NCSTRING s);
static N_INLINE(NI, nimCStrLen)(NCSTRING a);
static N_INLINE(void*, osTryAllocPages__system_3747)(NI size);
static N_INLINE(void, incCurrMem__system_3987)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI bytes);
N_LIB_PRIVATE N_NIMCALL(void, addHeapLink__system_4071)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* p, NI size);
N_LIB_PRIVATE N_NIMCALL(void*, llAlloc__system_4004)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size);
static N_INLINE(void, zeroMem__system_1724)(void* p, NI size);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
static N_INLINE(NI, pageIndex__system_4449)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c);
N_LIB_PRIVATE N_NIMCALL(void, splitChunk__system_4518)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI size);
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, splitChunk2__system_4513)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI size);
static N_INLINE(void, updatePrevSize__system_4508)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI prevSize);
N_LIB_PRIVATE N_NIMCALL(void, incl__system_4284)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key);
N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*, intSetPut__system_4236)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* t, NI key);
N_LIB_PRIVATE N_NIMCALL(void, addChunkToMatrix__system_3978)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b);
static N_INLINE(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ, mappingInsert__system_3890)(NI r);
static N_INLINE(void, setBit__system_3858)(NI nr, NU32* dest);
N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix2__system_3969)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b, NI fl, NI sl);
static N_INLINE(void, clearBit__system_3865)(NI nr, NU32* dest);
static N_INLINE(void, listAdd__system_4605)(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ** head, tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c);
static N_INLINE(void, listRemove__system_4658)(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ** head, tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c);
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, getHugeChunk__system_4559)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size);
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, getBottom__system_4030)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a);
N_LIB_PRIVATE N_NIMCALL(void, add__system_4177)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t, NI key, NI upperBound);
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, allocAvlNode__system_4046)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI key, NI upperBound);
N_LIB_PRIVATE N_NIMCALL(void, skew__system_4167)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t);
N_LIB_PRIVATE N_NIMCALL(void, split__system_4170)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t);
N_LIB_PRIVATE N_NOCONV(void, dealloc)(void* p);
N_LIB_PRIVATE N_NOCONV(void, deallocImpl__system_1747)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, dealloc__system_4812)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, void* p);
N_LIB_PRIVATE N_NIMCALL(void, rawDealloc__system_4717)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p);
N_LIB_PRIVATE N_NIMCALL(void, freeBigChunk__system_4523)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c);
N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix__system_3939)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b);
N_LIB_PRIVATE N_NIMCALL(void, excl__system_4306)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key);
N_LIB_PRIVATE N_NIMCALL(void, del__system_4186)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t, NI x);
static N_INLINE(void, deallocAvlNode__system_4068)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n);
N_LIB_PRIVATE N_NIMCALL(void, freeHugeChunk__system_4563)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c);
static N_INLINE(void, decCurrMem__system_3994)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI bytes);
static N_INLINE(void, osDeallocPages__system_3750)(void* p, NI size);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, collectZCT__system_5787)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NIMCALL(void, prepareDealloc__system_5459)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell);
static N_INLINE(void*, cellToUsr__system_5296)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell);
N_LIB_PRIVATE N_NIMCALL(void, forAllChildren__system_5327)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op);
N_LIB_PRIVATE N_NIMCALL(void, forAllChildrenAux__system_5333)(void* dest, TNimType* mt, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op);
N_LIB_PRIVATE N_NIMCALL(void, doOperation__system_5330)(void* p, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5299)(void* usr);
static N_INLINE(void, decRef__system_5344)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, rtlAddZCT__system_5342)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5293)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(void, markS__system_5748)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(void, incl__system_5045)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell);
N_LIB_PRIVATE N_NIMCALL(tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*, cellSetPut__system_4991)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* t, NU key);
static N_INLINE(NI, nextTry__system_4948)(NI h, NI maxHash);
N_LIB_PRIVATE N_NIMCALL(void, cellSetEnlarge__system_4978)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* t);
N_LIB_PRIVATE N_NOCONV(void*, alloc0Impl__system_1745)(NI size);
N_LIB_PRIVATE N_NIMCALL(void*, alloc0__system_4808)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, NI size);
N_LIB_PRIVATE N_NIMCALL(void, cellSetRawInsert__system_4961)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* t, tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data, tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* desc);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsOrIncl__system_5091)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell);
N_LIB_PRIVATE N_NIMCALL(tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*, cellSetGet__system_4952)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* t, NU key);
N_LIB_PRIVATE N_NIMCALL(void, forAllSlotsAux__system_5564)(void* dest, TNimNode* n, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op);
N_LIB_PRIVATE N_NIMCALL(TNimNode*, selectBranch__system_3673)(void* aa, TNimNode* n);
N_LIB_PRIVATE N_NIMCALL(NU, getDiscriminant__system_3653)(void* aa, TNimNode* n);
static N_INLINE(NI, starpercent___system_736)(NI x, NI y);
N_LIB_PRIVATE N_NIMCALL(NI, align__system_1624)(NI address, NI alignment);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
static N_INLINE(void, sysFatal__system_3395)(NimStringDesc* message) __attribute__((noreturn));
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, Marker_tyRef__vU9aO9cTqOMn6CBzhV8rX7Sw)(void* p, NI op);
static N_NIMCALL(void, Marker_tySequence__uB9b75OUPRENsBAu4AnoePA)(void* p, NI op);
static N_NIMCALL(void, Marker_tyRef__r8GBEWywN07B3Rat3azS4Q)(void* p, NI op);
N_LIB_PRIVATE N_NOINLINE(void*, newObj)(TNimType* typ, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_LIB_PRIVATE N_NOINLINE(void*, newObjRC1)(TNimType* typ, NI size);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
N_LIB_PRIVATE N_NIMCALL(void, rawWriteStackTrace__system_2852)(tySequence__uB9b75OUPRENsBAu4AnoePA** s);
N_LIB_PRIVATE N_NIMCALL(void, auxWriteStackTrace__system_2653)(TFrame* f, tySequence__uB9b75OUPRENsBAu4AnoePA** s);
N_LIB_PRIVATE N_NIMCALL(tySequence__uB9b75OUPRENsBAu4AnoePA*, newSeq__system_2675)(NI len);
N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NOINLINE(NIM_BOOL, isOnStack__system_5325)(void* p);
N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, setLengthSeqV2)(TGenericSeq* s, TNimType* typ, NI newLen);
static N_INLINE(NI, resize__system_5924)(NI old);
N_LIB_PRIVATE N_NIMCALL(void*, dataPointer__system_5914)(TGenericSeq* a, NI elemAlign);
N_LIB_PRIVATE N_NIMCALL(void*, dataPointer__system_5918)(TGenericSeq* a, NI elemAlign, NI elemSize, NI index);
N_LIB_PRIVATE N_NIMCALL(TNimType*, extGetCellType)(void* c);
N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
static N_INLINE(void, asgnRef)(void** dest, void* src);
N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionAux__system_2891)(Exception* e);
static N_INLINE(void, pushCurrentException)(Exception* e);
N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledError__system_2880)(Exception* e);
N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledErrorAux__system_2863)(Exception* e);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___system_2724)(tySequence__uB9b75OUPRENsBAu4AnoePA* stackTraceEntries);
N_LIB_PRIVATE N_NIMCALL(void, add__system_2308)(NimStringDesc** x, NCSTRING y);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
static N_INLINE(void, addInt__stdZprivateZdigitsutils_189)(NimStringDesc** result, NI x);
N_LIB_PRIVATE N_NIMCALL(void, addInt__stdZprivateZdigitsutils_167)(NimStringDesc** result, NI64 x);
static N_INLINE(void, sysFatal__system_3144)(NimStringDesc* message) __attribute__((noreturn));
static N_NIMCALL(void, Marker_tyRef__dJLgQyYmAVYQWHiOSBBTyA)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___systemZdollars_6)(NI64 x);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, mnewString)(NI len);
static N_INLINE(void, sysFatal__system_3073)(NimStringDesc* message) __attribute__((noreturn));
static N_NIMCALL(void, Marker_tyRef__RJnHOb9cQV3neNC9cDkRgMyw)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___systemZdollars_3)(NI x);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___systemZassertions_23)(NimStringDesc** dest);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, toNimStr)(NCSTRING str, NI len);
static N_INLINE(void, showErrorMessage2__system_2544)(NimStringDesc* data);
N_LIB_PRIVATE N_NIMCALL(void, showErrorMessage__system_2536)(NCSTRING data, NI length);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
static N_INLINE(void, popSafePoint)(void);
static N_INLINE(TFrame*, getFrame)(void);
static N_INLINE(void, setFrame)(TFrame* s);
static N_INLINE(void, popCurrentException)(void);
N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void);
static N_INLINE(void, sysFatal__system_2934)(NimStringDesc* message) __attribute__((noreturn));
static N_NIMCALL(void, Marker_tyRef__uG62cfJZ15c2siK3CKLmnQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void, writeToStdErr__system_2531)(NCSTRING msg, NI length);
static N_INLINE(void, rawWriteString)(FILE* f, NCSTRING s, NI length);
static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s);
N_LIB_PRIVATE N_NIMCALL(void, collectCycles__system_5789)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NIMCALL(void, cellsetReset__system_5562)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s);
N_LIB_PRIVATE N_NIMCALL(void, deinit__system_4940)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s);
N_LIB_PRIVATE N_NIMCALL(void, init__system_4920)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s);
N_LIB_PRIVATE N_NIMCALL(void, markGlobals__system_5756)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NIMCALL(void, sweep__system_5744)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
static N_INLINE(NIM_BOOL, isCell__system_4437)(void* p);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__system_5013)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell);
N_LIB_PRIVATE N_NIMCALL(void, freeCyclicCell__system_5740)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NIMCALL(NI, getOccupiedMem__system_1936)(void);
N_LIB_PRIVATE N_NIMCALL(void, unmarkStackAndRegisters__system_5861)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
static N_INLINE(void, addNewObjToZCT__system_5661)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* res, tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch);
N_LIB_PRIVATE N_NIMCALL(void, auxWriteStackTrace__system_2748)(TFrame* f, NimStringDesc** s);
N_LIB_PRIVATE N_NIMCALL(void, initGC__system_2398)(void);
N_LIB_PRIVATE N_NIMCALL(void, init__system_4914)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, NI cap);
static N_INLINE(NI, atomicInc__system_2172)(NI* memLoc, NI x);
static N_NIMCALL(void, TM__Q5wkpxktOdTGvlSRo9bzt9aw_36)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimRegisterThreadLocalMarker)(tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ markerProc);
N_LIB_PRIVATE N_NOCONV(void, signalHandler)(int sign);
static N_INLINE(void, GC_disable__system_2263)(void);
static N_INLINE(void, GC_enable__system_2264)(void);
static N_NIMCALL(void, Marker_tyRef__S8DV6hfcgC9c0IiUsAoR29cQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void, registerSignalHandler__system_3026)(void);
N_LIB_PRIVATE N_NIMCALL(NI, getRefcount)(void* p);
N_LIB_PRIVATE N_NOCONV(void*, allocSharedImpl)(NI size);
static N_NIMCALL(void, Marker_tyRef__Ie1m0dv1ZHg72IgPRr1cDw)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(NI, cmp__system_7499)(NI x, NI y);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i, NI64 a, NI64 b);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
static N_INLINE(void, initStackBottomWith)(void* locals);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_2, "No stack traceback available\012", 29);
N_LIB_PRIVATE NIM_CONST tyArray__mkmEeKAWtk2yS9bBb1lUWXA fsLookupTable__system_3846 = {((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)}
;
N_LIB_PRIVATE TNimType NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTIexception__XEycrCsme5C8CVWAYEcdBQ_;
N_LIB_PRIVATE TNimType NTIrefexception__vU9aO9cTqOMn6CBzhV8rX7Sw_;
N_LIB_PRIVATE TNimType NTIcstring__S9agCYBinaYZnGWcjTdxclg_;
N_LIB_PRIVATE TNimType NTIstring__77mFvmsOLKik79ci2hXkHEg_;
N_LIB_PRIVATE TNimType NTIstacktraceentry__oLyohQ7O2XOvGnflOss8EA_;
N_LIB_PRIVATE TNimType NTIint__rR5Bzr1D5krxoo1NcNyeMA_;
N_LIB_PRIVATE TNimType NTIseqLstacktraceentryT__uB9b75OUPRENsBAu4AnoePA_;
N_LIB_PRIVATE TNimType NTIdefect__LbeSGvgPzGzXnW9caIkJqMA_;
N_LIB_PRIVATE TNimType NTIarithmeticdefect__cT9c9bHlHSpA1QTnKbHjnIkA_;
N_LIB_PRIVATE TNimType NTIoverflowdefect__9cxMi1BPLc3UKt9br86bGfGQ_;
N_LIB_PRIVATE TNimType NTIrefoverflowdefect__r8GBEWywN07B3Rat3azS4Q_;
static NIM_CONST tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA TM__Q5wkpxktOdTGvlSRo9bzt9aw_8 = {((NCSTRING) NIM_NIL), ((NI) -10), ((NCSTRING) NIM_NIL)}
;
static NIM_CONST tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA TM__Q5wkpxktOdTGvlSRo9bzt9aw_9 = {((NCSTRING) NIM_NIL), ((NI) -100), ((NCSTRING) NIM_NIL)}
;
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_10, "[[reraised from:\012", 17);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_11, "]]\012", 3);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_12, "(", 1);
N_LIB_PRIVATE TNimType NTIrangedefect__Rp9adJYTsbbIUzQ8fWxwgdA_;
N_LIB_PRIVATE TNimType NTIrefrangedefect__dJLgQyYmAVYQWHiOSBBTyA_;
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_13, "value out of range: ", 20);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_14, " notin ", 7);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_15, " .. ", 4);
N_LIB_PRIVATE TNimType NTIindexdefect__n6tGEPHKkh7E1AP9bj30WrQ_;
N_LIB_PRIVATE TNimType NTIrefindexdefect__RJnHOb9cQV3neNC9cDkRgMyw_;
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_16, "index out of bounds, the container is empty", 43);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_17, "index ", 6);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_18, " not in 0 .. ", 13);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_19, "value out of range", 18);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_20, ", ", 2);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_21, ")", 1);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_22, "\012", 1);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_23, "Error: unhandled exception: ", 28);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_24, " [", 2);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_25, "]\012", 2);
N_LIB_PRIVATE TNimType NTIreraisedefect__E0L0wGYS1gPD81VLstNO2g_;
N_LIB_PRIVATE TNimType NTIrefreraisedefect__uG62cfJZ15c2siK3CKLmnQ_;
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_27, "no exception to reraise", 23);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_28, "over- or underflow", 18);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_31, "Traceback (most recent call last)\012", 34);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_32, " calls omitted) ...\012", 20);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_33, "Error: call depth limit reached in a debug build (", 50);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_34, " function calls). You can change it with -d:nimCallDepthLimit=<int> but really try to avoid deep recursions instead.\012", 117);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_37, "SIGINT: Interrupted by Ctrl-C.\012", 31);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_38, "SIGSEGV: Illegal storage access. (Attempt to read from nil\?)\012", 61);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_39, "SIGABRT: Abnormal termination.\012", 31);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_40, "SIGFPE: Arithmetic error.\012", 26);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_41, "SIGILL: Illegal operation.\012", 27);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_42, "SIGBUS: Illegal storage access. (Attempt to read from nil\?)\012", 60);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_43, "SIGPIPE: Pipe closed.\012", 22);
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_44, "unknown signal\012", 15);
N_LIB_PRIVATE TNimType NTIassertiondefect__PtYxPmY5X0dorfvxAFbJpQ_;
N_LIB_PRIVATE TNimType NTIrefassertiondefect__S8DV6hfcgC9c0IiUsAoR29cQ_;
STRING_LITERAL(TM__Q5wkpxktOdTGvlSRo9bzt9aw_45, "API usage error: GC_enable called but GC is already enabled", 59);
N_LIB_PRIVATE TNimType NTIcint__nlCscttRCss70IBTyuBqnA_;
N_LIB_PRIVATE TNimType NTIculong__nuuFlkPr6wNn1dt5MhCk3g_;
N_LIB_PRIVATE TNimType NTIcuint__EfDYb5NOiMBijiUDCmXqPw_;
N_LIB_PRIVATE TNimType NTIcatchableerror__qrLSDoe2oBoAqNtJ9badtnA_;
N_LIB_PRIVATE TNimType NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_;
N_LIB_PRIVATE TNimType NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_;
N_LIB_PRIVATE NI nim_program_result;
N_LIB_PRIVATE tyProc__9axCnCRMUx32AHzFgBrzSMg globalRaiseHook__system_2291;
N_LIB_PRIVATE tyProc__9axCnCRMUx32AHzFgBrzSMg localRaiseHook__system_2294;
N_LIB_PRIVATE tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ outOfMemHook__system_2296;
N_LIB_PRIVATE tyProc__NFmM6mqUOVW3cJg4yvk8Fw unhandledExceptionHook__system_2299;
N_LIB_PRIVATE TNimType strDesc__system_2412 = {((NI) 8), 0, ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 28), 2, NIM_NIL, NIM_NIL, NIM_NIL, NIM_NIL, NIM_NIL}
;
N_LIB_PRIVATE tyProc__W6IXMh2CA4X1rFYGjUb4yg errorMessageWriter__system_2528;
N_LIB_PRIVATE TFrame* framePtr__system_2564;
N_LIB_PRIVATE TSafePoint* excHandler__system_2565;
N_LIB_PRIVATE Exception* currException__system_2566;
N_LIB_PRIVATE GcFrameHeader* gcFramePtr__system_2567;
N_LIB_PRIVATE tyArray__pFdcUVk36Xt0LD9bLg3YaIQ tempFrames__system_2650;
N_LIB_PRIVATE tyProc__W6IXMh2CA4X1rFYGjUb4yg onUnhandledException__system_2862;
N_LIB_PRIVATE tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5246;
N_LIB_PRIVATE NI globalMarkersLen;
N_LIB_PRIVATE tyArray__9aTRall1siQT9bXabu2aKXUg globalMarkers;
N_LIB_PRIVATE NI threadLocalMarkersLen;
N_LIB_PRIVATE tyArray__9aTRall1siQT9bXabu2aKXUg threadLocalMarkers;
N_LIB_PRIVATE NI gHeapidGenerator__system_5513;
static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memcpy(dest, source, ((size_t) (size)));
}
static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size) {
	nimCopyMem(dest, source, size);
}
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	{
		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
		copyMem__system_1727(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		(*dest).Sup.len += (*src).Sup.len;
	}
	LA3_: ;
}
static N_INLINE(void, popFrame)(void) {
	framePtr__system_2564 = (*framePtr__system_2564).prev;
}
static N_INLINE(NI, getOccupiedMem__system_4848)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a) {
	NI result;
	nimfr_("getOccupiedMem", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NI)0;
	nimln_(1009, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (*a).occ;
	popFrame();
	return result;
}
static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
	NI result;
	nimfr_("-%", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	result = (NI)0;
	nimln_(414, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	nimln_(418, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NOINLINE(NI, stackSize__system_5413)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack) {
	NI result;
	void* volatile pos;
	nimfr_("stackSize", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	result = (NI)0;
	nimln_(221, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	pos = ((void*) ((&pos)));
	nimln_(223, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	{
		if (!!((pos == NIM_NIL))) goto LA3_;
		nimln_(227, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		result = minuspercent___system_716(((NI) (ptrdiff_t) ((*stack).bottom)), ((NI) (ptrdiff_t) (pos)));
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(229, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		result = ((NI) 0);
	}
	LA1_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NOINLINE(NI, stackSize__system_5417)(void) {
	NI result;
	nimfr_("stackSize", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	result = (NI)0;
	nimln_(232, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	result = ((NI) 0);
	{
		tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack;
		NI T2_;
		stack = (tyObject_GcStack__7fytPA5bBsob6See21YMRA*)0;
		nimln_(233, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		stack = (&gch__system_5246.stack);
		nimln_(234, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		T2_ = (NI)0;
		T2_ = stackSize__system_5413(stack);
		result = (NI)(result + T2_);
	}
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, lowGauge__system_4127)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n) {
	NI result;
	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* it;
	nimfr_("lowGauge", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	result = (NI)0;
	nimln_(15, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	it = n;
	{
		nimln_(16, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		while (1) {
			if (!!(((*it).link[(((NI) 0))- 0] == it))) goto LA2;
			nimln_(17, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
			result = (*it).key;
			nimln_(18, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
			it = (*it).link[(((NI) 0))- 0];
		} LA2: ;
	}
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NI, highGauge__system_4135)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n) {
	NI result;
	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* it;
	nimfr_("highGauge", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	result = (NI)0;
	nimln_(21, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	result = ((NI) -1);
	nimln_(22, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	it = n;
	{
		nimln_(23, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		while (1) {
			if (!!(((*it).link[(((NI) 0))- 0] == it))) goto LA2;
			nimln_(24, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
			result = (*it).upperBound;
			nimln_(25, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
			it = (*it).link[(((NI) 1))- 0];
		} LA2: ;
	}
	popFrame();
	return result;
}
static N_INLINE(void, prepareForInteriorPointerChecking__system_4769)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a) {
	nimfr_("prepareForInteriorPointerChecking", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(894, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).minLargeObj = lowGauge__system_4127((*a).root);
	nimln_(895, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).maxLargeObj = highGauge__system_4135((*a).root);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, setPosition__system_5429)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack, void* position) {
	nimfr_("setPosition", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(tyObject_GcStack__7fytPA5bBsob6See21YMRA*, getActiveStack__system_5435)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {
	tyObject_GcStack__7fytPA5bBsob6See21YMRA* result;
	nimfr_("getActiveStack", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	result = (tyObject_GcStack__7fytPA5bBsob6See21YMRA*)0;
	nimln_(254, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	result = (&(*gch).stack);
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isActiveStack__system_5438)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack) {
	NIM_BOOL result;
	nimfr_("isActiveStack", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	result = (NIM_BOOL)0;
	nimln_(255, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	result = NIM_TRUE;
	popFrame();
	return result;
}
static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
	NI result;
	nimfr_("+%", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	result = (NI)0;
	nimln_(403, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	nimln_(407, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
	NIM_BOOL result;
	nimfr_("<%", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/comparisons.nim");
	result = (NIM_BOOL)0;
	nimln_(186, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/comparisons.nim");
	nimln_(188, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/comparisons.nim");
	result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*, intSetGet__system_4214)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* t, NI key) {
	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* result;
	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* it;
	nimfr_("intSetGet", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
{	result = (tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*)0;
	nimln_(323, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	it = (*t).data[((NI)(key & ((NI) 255)))- 0];
	{
		nimln_(324, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		while (1) {
			if (!!((it == ((tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*) NIM_NIL)))) goto LA2;
			nimln_(325, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			{
				if (!((*it).key == key)) goto LA5_;
				result = it;
				goto BeforeRet_;
			}
			LA5_: ;
			nimln_(326, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			it = (*it).next;
		} LA2: ;
	}
	nimln_(327, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = ((tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*) NIM_NIL);
	}BeforeRet_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__system_4253)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key) {
	NIM_BOOL result;
	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* t;
	nimfr_("contains", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NIM_BOOL)0;
	nimln_(338, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	t = intSetGet__system_4214(s, (NI)((NI64)(key) >> (NU64)(((NI) 9))));
	nimln_(339, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		NI u;
		if (!!((t == ((tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*) NIM_NIL)))) goto LA3_;
		nimln_(340, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		u = (NI)(key & ((NI) 511));
		nimln_(341, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		result = !(((NU)((*t).bits[((NI)((NI64)(u) >> (NU64)(((NI) 6))))- 0] & (NU)((NU64)(((NU) 1)) << (NU64)((NI)(u & ((NI) 63))))) == ((NU) 0)));
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(343, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		result = NIM_FALSE;
	}
	LA1_: ;
	popFrame();
	return result;
}
static N_INLINE(NI, pageIndex__system_4456)(void* p) {
	NI result;
	nimfr_("pageIndex", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NI)0;
	nimln_(414, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NI)((NI64)(((NI) (ptrdiff_t) (p))) >> (NU64)(((NI) 12)));
	popFrame();
	return result;
}
static N_INLINE(NIM_BOOL, isAccessible__system_4490)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p) {
	NIM_BOOL result;
	NI T1_;
	nimfr_("isAccessible", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NIM_BOOL)0;
	nimln_(492, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T1_ = (NI)0;
	T1_ = pageIndex__system_4456(p);
	result = contains__system_4253((&(*a).chunkStarts), T1_);
	popFrame();
	return result;
}
static N_INLINE(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*, pageAddr__system_4463)(void* p) {
	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* result;
	nimfr_("pageAddr", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*)0;
	nimln_(417, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) ((NI)(((NI) (ptrdiff_t) (p)) & ((NI) -4096))));
	popFrame();
	return result;
}
static N_INLINE(NIM_BOOL, chunkUnused__system_4380)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c) {
	NIM_BOOL result;
	nimfr_("chunkUnused", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NIM_BOOL)0;
	nimln_(379, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = ((NI)((*c).prevSize & ((NI) 1)) == ((NI) 0));
	popFrame();
	return result;
}
static N_INLINE(NIM_BOOL, isSmallChunk__system_4374)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c) {
	NIM_BOOL result;
	nimfr_("isSmallChunk", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NIM_BOOL)0;
	nimln_(376, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = ((*c).size <= ((NI) 4032));
	popFrame();
	return result;
}
static N_INLINE(NI, percentpercent___system_776)(NI x, NI y) {
	NI result;
	nimfr_("%%", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	result = (NI)0;
	nimln_(447, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	nimln_(451, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	result = ((NI) ((NU)((NU64)(((NU) (x))) % (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
static N_INLINE(NIM_BOOL, lteqpercent___system_985)(NI x, NI y) {
	NIM_BOOL result;
	nimfr_("<=%", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/comparisons.nim");
	result = (NIM_BOOL)0;
	nimln_(177, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/comparisons.nim");
	nimln_(179, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/comparisons.nim");
	result = ((NU64)(((NU) (x))) <= (NU64)(((NU) (y))));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, inRange__system_4155)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root, NI key) {
	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* result;
	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* it;
	nimfr_("inRange", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
{	result = (tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*)0;
	nimln_(34, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	it = root;
	{
		nimln_(35, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		while (1) {
			NIM_BOOL T9_;
			if (!!(((*it).link[(((NI) 0))- 0] == it))) goto LA2;
			nimln_(36, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
			{
				NIM_BOOL T5_;
				T5_ = (NIM_BOOL)0;
				T5_ = lteqpercent___system_985((*it).key, key);
				if (!(T5_)) goto LA6_;
				T5_ = ltpercent___system_1005(key, (*it).upperBound);
				LA6_: ;
				if (!T5_) goto LA7_;
				result = it;
				goto BeforeRet_;
			}
			LA7_: ;
			nimln_(37, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
			T9_ = (NIM_BOOL)0;
			T9_ = ltpercent___system_1005((*it).key, key);
			it = (*it).link[(T9_)- 0];
		} LA2: ;
	}
	}BeforeRet_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void*, interiorAllocatedPtr__system_4771)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p) {
	void* result;
	nimfr_("interiorAllocatedPtr", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (void*)0;
	nimln_(898, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		NIM_BOOL T3_;
		tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c;
		T3_ = (NIM_BOOL)0;
		T3_ = isAccessible__system_4490(a, p);
		if (!T3_) goto LA4_;
		nimln_(899, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		c = pageAddr__system_4463(p);
		nimln_(900, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = chunkUnused__system_4380(c);
			if (!!(T8_)) goto LA9_;
			nimln_(901, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			{
				NIM_BOOL T13_;
				tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c_2;
				NI offset;
				T13_ = (NIM_BOOL)0;
				T13_ = isSmallChunk__system_4374(c);
				if (!T13_) goto LA14_;
				nimln_(902, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				c_2 = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) (c));
				nimln_(903, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				offset = minuspercent___system_716((NI)(((NI) (ptrdiff_t) (p)) & ((NI) 4095)), ((NI) 64));
				nimln_(905, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				{
					NIM_BOOL T18_;
					tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ* d;
					NI T21_;
					NI T22_;
					NI T23_;
					T18_ = (NIM_BOOL)0;
					T18_ = ltpercent___system_1005(offset, (*c_2).acc);
					if (!T18_) goto LA19_;
					nimln_(908, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
					nimln_(909, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
					nimln_(908, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
					T21_ = (NI)0;
					T21_ = pluspercent___system_696(((NI) (ptrdiff_t) ((*c_2).data)), offset);
					nimln_(909, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
					T22_ = (NI)0;
					T22_ = percentpercent___system_776(offset, (*c_2).Sup.size);
					T23_ = (NI)0;
					T23_ = minuspercent___system_716(T21_, T22_);
					d = ((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) (T23_));
					nimln_(910, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
					{
						NIM_BOOL T26_;
						T26_ = (NIM_BOOL)0;
						T26_ = ltpercent___system_1005(((NI) 1), (*d).zeroField);
						if (!T26_) goto LA27_;
						nimln_(911, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
						result = ((void*) (d));
					}
					LA27_: ;
				}
				LA19_: ;
			}
			goto LA11_;
			LA14_: ;
			{
				tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_3;
				NU8* d_2;
				nimln_(914, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				c_3 = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (c));
				nimln_(915, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				d_2 = (*c_3).data;
				nimln_(916, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				{
					NIM_BOOL T32_;
					T32_ = (NIM_BOOL)0;
					T32_ = (((void*) (d_2)) <= p);
					if (!(T32_)) goto LA33_;
					T32_ = ltpercent___system_1005(((NI) 1), (*((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) (d_2))).zeroField);
					LA33_: ;
					if (!T32_) goto LA34_;
					nimln_(917, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
					result = ((void*) (d_2));
				}
				LA34_: ;
			}
			LA11_: ;
		}
		LA9_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		NI q;
		nimln_(920, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		q = ((NI) (ptrdiff_t) (p));
		nimln_(921, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			NIM_BOOL T39_;
			tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* avlNode;
			T39_ = (NIM_BOOL)0;
			T39_ = lteqpercent___system_985((*a).minLargeObj, q);
			if (!(T39_)) goto LA40_;
			T39_ = lteqpercent___system_985(q, (*a).maxLargeObj);
			LA40_: ;
			if (!T39_) goto LA41_;
			nimln_(924, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			avlNode = inRange__system_4155((*a).root, q);
			nimln_(925, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			{
				void* k;
				tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_4;
				tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* T47_;
				if (!!((avlNode == ((tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*) NIM_NIL)))) goto LA45_;
				nimln_(926, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				k = ((void*) ((*avlNode).key));
				nimln_(927, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				T47_ = (tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*)0;
				T47_ = pageAddr__system_4463(k);
				c_4 = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (T47_));
				nimln_(929, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				{
					NIM_BOOL T50_;
					T50_ = (NIM_BOOL)0;
					T50_ = ltpercent___system_1005(((NI) 1), (*((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) (k))).zeroField);
					if (!T50_) goto LA51_;
					nimln_(930, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
					result = k;
				}
				LA51_: ;
			}
			LA45_: ;
		}
		LA41_: ;
	}
	LA1_: ;
	popFrame();
	return result;
}
static N_INLINE(void, incRef__system_5337)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("incRef", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	nimln_(231, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	(*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
	popFrame();
}
static N_INLINE(NI, roundup__system_3724)(NI x, NI v) {
	NI result;
	nimfr_("roundup", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/osalloc.nim");
	result = (NI)0;
	nimln_(11, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/osalloc.nim");
	result = (NI)((NI)(x + (NI)(v - ((NI) 1))) & (NI)((NU64) ~((NI)(v - ((NI) 1)))));
	popFrame();
	return result;
}
static N_INLINE(NI, msbit__system_3847)(NU32 x) {
	NI result;
	NI a;
	nimfr_("msbit", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NI)0;
	nimln_(146, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!((NU32)(x) <= (NU32)(((NU32) 65535)))) goto LA3_;
		nimln_(147, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!((NU32)(x) <= (NU32)(((NU32) 255)))) goto LA7_;
			a = ((NI) 0);
		}
		goto LA5_;
		LA7_: ;
		{
			a = ((NI) 8);
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(149, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!((NU32)(x) <= (NU32)(((NU32) 16777215)))) goto LA13_;
			a = ((NI) 16);
		}
		goto LA11_;
		LA13_: ;
		{
			a = ((NI) 24);
		}
		LA11_: ;
	}
	LA1_: ;
	nimln_(150, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NI)(((NI) (fsLookupTable__system_3846[((NU32)((NU32)(x) >> (NU64)(a)))- 0])) + a);
	popFrame();
	return result;
}
static N_INLINE(void, mappingSearch__system_3872)(NI* r, NI* fl, NI* sl) {
	NI t;
	NI T1_;
	NI T2_;
	nimfr_("mappingSearch", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(165, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T1_ = (NI)0;
	T1_ = msbit__system_3847(((NU32) ((*r))));
	T2_ = (NI)0;
	T2_ = roundup__system_3724((NI)((NU64)(((NI) 1)) << (NU64)((NI)(T1_ - ((NI) 5)))), ((NI) 4096));
	t = (NI)(T2_ - ((NI) 1));
	nimln_(166, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*r) = (NI)((*r) + t);
	nimln_(167, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*r) = (NI)((*r) & (NI)((NU64) ~(t)));
	nimln_(168, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*r) = (((*r) <= ((NI) 1056964608)) ? (*r) : ((NI) 1056964608));
	nimln_(169, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*fl) = msbit__system_3847(((NU32) ((*r))));
	nimln_(170, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*sl) = (NI)((NI)((NI64)((*r)) >> (NU64)((NI)((*fl) - ((NI) 5)))) - ((NI) 32));
	nimln_(171, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*fl) -= ((NI) 6);
	popFrame();
}
static N_INLINE(NI, lsbit__system_3855)(NU32 x) {
	NI result;
	nimfr_("lsbit", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NI)0;
	nimln_(153, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = msbit__system_3847((NU32)(x & (NU32)((NU32)((NU32)((NU32) ~(x))) + (NU32)(((NU32) 1)))));
	popFrame();
	return result;
}
static N_INLINE(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, findSuitableBlock__system_3904)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI* fl, NI* sl) {
	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* result;
	NU32 tmp;
	nimfr_("findSuitableBlock", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*)0;
	nimln_(186, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	tmp = (NU32)((*a).slBitmap[((*fl))- 0] & (NU32)((NU64)(((NU32) IL64(4294967295))) << (NU64)((*sl))));
	nimln_(187, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	nimln_(188, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!!((tmp == ((NU32) 0)))) goto LA3_;
		nimln_(189, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*sl) = lsbit__system_3855(tmp);
		nimln_(190, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		result = (*a).matrix[((*fl))- 0][((*sl))- 0];
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(192, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*fl) = lsbit__system_3855((NU32)((*a).flBitmap & (NU32)((NU64)(((NU32) IL64(4294967295))) << (NU64)((NI)((*fl) + ((NI) 1))))));
		nimln_(193, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!(((NI) 0) < (*fl))) goto LA8_;
			nimln_(194, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*sl) = lsbit__system_3855((*a).slBitmap[((*fl))- 0]);
			nimln_(195, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			result = (*a).matrix[((*fl))- 0][((*sl))- 0];
		}
		LA8_: ;
	}
	LA1_: ;
	popFrame();
	return result;
}
static N_INLINE(NI, nimCStrLen)(NCSTRING a) {
	NI result;
	size_t T1_;
	result = (NI)0;
	T1_ = (size_t)0;
	T1_ = strlen(a);
	result = ((NI) (T1_));
	return result;
}
static N_INLINE(void, rawWrite)(FILE* f, NCSTRING s) {
	int T1_;
	int T2_;
	T1_ = (int)0;
	T1_ = fwrite(((void*) (s)), ((size_t) 1), ((size_t) ((s ? nimCStrLen(s) : 0))), f);
	(void)(T1_);
	T2_ = (int)0;
	T2_ = fflush(f);
	(void)(T2_);
}
N_LIB_PRIVATE N_NOINLINE(void, raiseOutOfMem__system_3719)(void) {
	nimfr_("raiseOutOfMem", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/mmdisp.nim");
	nimln_(47, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/mmdisp.nim");
	{
		if (!!((outOfMemHook__system_2296 == NIM_NIL))) goto LA3_;
		outOfMemHook__system_2296();
	}
	LA3_: ;
	nimln_(48, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/mmdisp.nim");
	rawWrite(stderr, "out of memory\012");
	nimln_(49, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/mmdisp.nim");
	exit(((NI) 1));
	popFrame();
}
static N_INLINE(void*, osAllocPages__system_3744)(NI size) {
	void* result;
	nimfr_("osAllocPages", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/osalloc.nim");
	result = (void*)0;
	nimln_(142, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/osalloc.nim");
	result = mmap(NIM_NIL, ((size_t) (size)), ((int) 3), ((int) 34), ((int) -1), ((NI) 0));
	nimln_(144, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/osalloc.nim");
	{
		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_;
		nimln_(145, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/osalloc.nim");
		raiseOutOfMem__system_3719();
	}
	LA5_: ;
	popFrame();
	return result;
}
static N_INLINE(void*, osTryAllocPages__system_3747)(NI size) {
	void* result;
	nimfr_("osTryAllocPages", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/osalloc.nim");
	result = (void*)0;
	nimln_(148, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/osalloc.nim");
	result = mmap(NIM_NIL, ((size_t) (size)), ((int) 3), ((int) 34), ((int) -1), ((NI) 0));
	nimln_(150, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/osalloc.nim");
	{
		if (!(result == ((void*) (((NI) -1))))) goto LA3_;
		result = NIM_NIL;
	}
	LA3_: ;
	popFrame();
	return result;
}
static N_INLINE(void, incCurrMem__system_3987)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI bytes) {
	nimfr_("incCurrMem", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(234, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).currMem += bytes;
	popFrame();
}
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__systemZmemory_7(p, ((int) 0), size);
}
static N_INLINE(void, zeroMem__system_1724)(void* p, NI size) {
	nimZeroMem(p, size);
}
N_LIB_PRIVATE N_NIMCALL(void*, llAlloc__system_4004)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size) {
	void* result;
	nimfr_("llAlloc", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (void*)0;
	nimln_(249, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		NIM_BOOL T3_;
		tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* old;
		void* T7_;
		T3_ = (NIM_BOOL)0;
		T3_ = ((*a).llmem == ((tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw*) NIM_NIL));
		if (T3_) goto LA4_;
		T3_ = ((*(*a).llmem).size < size);
		LA4_: ;
		if (!T3_) goto LA5_;
		nimln_(254, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		old = (*a).llmem;
		nimln_(255, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		T7_ = (void*)0;
		T7_ = osAllocPages__system_3744(((NI) 4096));
		(*a).llmem = ((tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw*) (T7_));
		nimln_(258, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		incCurrMem__system_3987(a, ((NI) 4096));
		nimln_(259, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*(*a).llmem).size = ((NI) 4072);
		nimln_(260, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*(*a).llmem).acc = ((NI) 24);
		nimln_(261, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*(*a).llmem).next = old;
	}
	LA5_: ;
	nimln_(262, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = ((void*) ((NI)(((NI) (ptrdiff_t) ((*a).llmem)) + (*(*a).llmem).acc)));
	nimln_(263, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*(*a).llmem).size -= size;
	nimln_(264, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*(*a).llmem).acc += size;
	nimln_(265, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	zeroMem__system_1724(result, ((NI) (size)));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, addHeapLink__system_4071)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* p, NI size) {
	tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* it;
	nimfr_("addHeapLink", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(298, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	it = (&(*a).heapLinks);
	{
		nimln_(299, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		while (1) {
			NIM_BOOL T3_;
			T3_ = (NIM_BOOL)0;
			T3_ = !((it == ((tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg*) NIM_NIL)));
			if (!(T3_)) goto LA4_;
			T3_ = (((NI) 30) <= (*it).len);
			LA4_: ;
			if (!T3_) goto LA2;
			it = (*it).next;
		} LA2: ;
	}
	nimln_(300, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* n;
		void* T9_;
		tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* colontmp_;
		NI colontmp__2;
		if (!(it == ((tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg*) NIM_NIL))) goto LA7_;
		nimln_(301, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		T9_ = (void*)0;
		T9_ = llAlloc__system_4004(a, ((NI) 496));
		n = ((tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg*) (T9_));
		nimln_(302, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*n).next = (*a).heapLinks.next;
		nimln_(303, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*a).heapLinks.next = n;
		nimln_(304, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		colontmp_ = p;
		colontmp__2 = size;
		(*n).chunks[(((NI) 0))- 0].Field0 = colontmp_;
		(*n).chunks[(((NI) 0))- 0].Field1 = colontmp__2;
		nimln_(305, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*n).len = ((NI) 1);
	}
	goto LA5_;
	LA7_: ;
	{
		NI L;
		tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* colontmp__3;
		NI colontmp__4;
		nimln_(307, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		L = (*it).len;
		nimln_(308, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		colontmp__3 = p;
		colontmp__4 = size;
		(*it).chunks[(L)- 0].Field0 = colontmp__3;
		(*it).chunks[(L)- 0].Field1 = colontmp__4;
		nimln_(309, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*it).len += ((NI) 1);
	}
	LA5_: ;
	popFrame();
}
static N_INLINE(NI, pageIndex__system_4449)(tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c) {
	NI result;
	nimfr_("pageIndex", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NI)0;
	nimln_(411, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NI)((NI64)(((NI) (ptrdiff_t) (c))) >> (NU64)(((NI) 12)));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, requestOsChunks__system_4467)(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;
	nimfr_("requestOsChunks", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*)0;
	nimln_(433, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		NI usedMem;
		if (!!((*a).blockChunkSizeIncrease)) goto LA3_;
		nimln_(434, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		usedMem = (*a).occ;
		nimln_(438, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!(usedMem < ((NI) 65536))) goto LA7_;
			nimln_(439, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*a).nextChunkSize = ((NI) 16384);
		}
		goto LA5_;
		LA7_: ;
		{
			NI T10_;
			nimln_(441, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			T10_ = (NI)0;
			T10_ = roundup__system_3724((NI)((NI64)(usedMem) >> (NU64)(((NI) 2))), ((NI) 4096));
			(*a).nextChunkSize = ((T10_ <= (NI)((*a).nextChunkSize * ((NI) 2))) ? T10_ : (NI)((*a).nextChunkSize * ((NI) 2)));
			nimln_(442, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*a).nextChunkSize = (((*a).nextChunkSize <= ((NI) 1056964608)) ? (*a).nextChunkSize : ((NI) 1056964608));
		}
		LA5_: ;
	}
	LA3_: ;
	nimln_(444, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	size_2 = size;
	nimln_(445, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		void* T15_;
		if (!((*a).nextChunkSize < size_2)) goto LA13_;
		nimln_(446, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		T15_ = (void*)0;
		T15_ = osAllocPages__system_3744(size_2);
		result = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (T15_));
	}
	goto LA11_;
	LA13_: ;
	{
		void* T17_;
		nimln_(448, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		T17_ = (void*)0;
		T17_ = osTryAllocPages__system_3747((*a).nextChunkSize);
		result = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (T17_));
		nimln_(449, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			void* T22_;
			if (!(result == ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL))) goto LA20_;
			nimln_(450, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			T22_ = (void*)0;
			T22_ = osAllocPages__system_3744(size_2);
			result = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (T22_));
			nimln_(451, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*a).blockChunkSizeIncrease = NIM_TRUE;
		}
		goto LA18_;
		LA20_: ;
		{
			nimln_(453, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			size_2 = (*a).nextChunkSize;
		}
		LA18_: ;
	}
	LA11_: ;
	nimln_(455, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	incCurrMem__system_3987(a, size_2);
	nimln_(456, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).freeMem += size_2;
	nimln_(457, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	addHeapLink__system_4071(a, result, size_2);
	nimln_(467, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).next = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	nimln_(468, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).prev = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	nimln_(469, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).Sup.size = size_2;
	nimln_(471, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nxt = pluspercent___system_696(((NI) (ptrdiff_t) (result)), size_2);
	nimln_(473, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	next = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) (nxt));
	nimln_(474, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		NI T26_;
		NIM_BOOL T27_;
		T26_ = (NI)0;
		T26_ = pageIndex__system_4449(next);
		T27_ = (NIM_BOOL)0;
		T27_ = contains__system_4253((&(*a).chunkStarts), T26_);
		if (!T27_) goto LA28_;
		nimln_(476, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*next).prevSize = (NI)(size_2 | (NI)((*next).prevSize & ((NI) 1)));
	}
	LA28_: ;
	nimln_(478, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!!(((*a).lastSize == ((NI) 0)))) goto LA32_;
		lastSize = (*a).lastSize;
	}
	goto LA30_;
	LA32_: ;
	{
		lastSize = ((NI) 4096);
	}
	LA30_: ;
	nimln_(479, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	prv = minuspercent___system_716(((NI) (ptrdiff_t) (result)), lastSize);
	nimln_(481, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	prev = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) (prv));
	nimln_(482, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		NIM_BOOL T37_;
		NI T38_;
		T37_ = (NIM_BOOL)0;
		T38_ = (NI)0;
		T38_ = pageIndex__system_4449(prev);
		T37_ = contains__system_4253((&(*a).chunkStarts), T38_);
		if (!(T37_)) goto LA39_;
		T37_ = ((*prev).size == lastSize);
		LA39_: ;
		if (!T37_) goto LA40_;
		nimln_(484, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*result).Sup.prevSize = (NI)(lastSize | (NI)((*result).Sup.prevSize & ((NI) 1)));
	}
	goto LA35_;
	LA40_: ;
	{
		nimln_(486, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*result).Sup.prevSize = (NI)(((NI) 0) | (NI)((*result).Sup.prevSize & ((NI) 1)));
	}
	LA35_: ;
	nimln_(488, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).lastSize = size_2;
	popFrame();
	return result;
}
static N_INLINE(void, updatePrevSize__system_4508)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI prevSize) {
	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* ri;
	NI T1_;
	nimfr_("updatePrevSize", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(525, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T1_ = (NI)0;
	T1_ = pluspercent___system_696(((NI) (ptrdiff_t) (c)), (*c).Sup.size);
	ri = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) (T1_));
	nimln_(527, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		NIM_BOOL T4_;
		T4_ = (NIM_BOOL)0;
		T4_ = isAccessible__system_4490((&(*a)), ((void*) (ri)));
		if (!T4_) goto LA5_;
		nimln_(528, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*ri).prevSize = (NI)(prevSize | (NI)((*ri).prevSize & ((NI) 1)));
	}
	LA5_: ;
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*, intSetPut__system_4236)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* t, NI key) {
	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* result;
	nimfr_("intSetPut", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*)0;
	nimln_(330, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = intSetGet__system_4214((&(*t)), key);
	nimln_(331, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		void* T5_;
		if (!(result == ((tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*) NIM_NIL))) goto LA3_;
		nimln_(332, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		T5_ = (void*)0;
		T5_ = llAlloc__system_4004(a, ((NI) 80));
		result = ((tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*) (T5_));
		nimln_(333, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*result).next = (*t).data[((NI)(key & ((NI) 255)))- 0];
		nimln_(334, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*t).data[((NI)(key & ((NI) 255)))- 0] = result;
		nimln_(335, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*result).key = key;
	}
	LA3_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, incl__system_4284)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key) {
	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* t;
	NI u;
	nimfr_("incl", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(346, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	t = intSetPut__system_4236(a, s, (NI)((NI64)(key) >> (NU64)(((NI) 9))));
	nimln_(347, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	u = (NI)(key & ((NI) 511));
	nimln_(348, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*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)))));
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, splitChunk2__system_4513)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI size) {
	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* result;
	NI T1_;
	NI T2_;
	nimfr_("splitChunk2", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*)0;
	nimln_(531, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T1_ = (NI)0;
	T1_ = pluspercent___system_696(((NI) (ptrdiff_t) (c)), size);
	result = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (T1_));
	nimln_(532, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).Sup.size = (NI)((*c).Sup.size - size);
	nimln_(536, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).next = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	nimln_(537, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).prev = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	nimln_(539, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).Sup.prevSize = size;
	nimln_(543, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	updatePrevSize__system_4508(a, c, (*result).Sup.size);
	nimln_(544, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*c).Sup.size = size;
	nimln_(545, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T2_ = (NI)0;
	T2_ = pageIndex__system_4449((*((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w**) (&(result)))));
	incl__system_4284(a, (&(*a).chunkStarts), T2_);
	popFrame();
	return result;
}
static N_INLINE(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ, mappingInsert__system_3890)(NI r) {
	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ result;
	nimfr_("mappingInsert", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimZeroMem((void*)(&result), sizeof(tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ));
	nimln_(179, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result.Field0 = msbit__system_3847(((NU32) (r)));
	nimln_(180, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result.Field1 = (NI)((NI)((NI64)(r) >> (NU64)((NI)(result.Field0 - ((NI) 5)))) - ((NI) 32));
	nimln_(181, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result.Field0 -= ((NI) 6);
	popFrame();
	return result;
}
static N_INLINE(void, setBit__system_3858)(NI nr, NU32* dest) {
	nimfr_("setBit", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(156, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*dest) = (NU32)((*dest) | (NU32)((NU64)(((NU32) 1)) << (NU64)((NI)(nr & ((NI) 31)))));
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, addChunkToMatrix__system_3978)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b) {
	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ T1_;
	NI fl;
	NI sl;
	nimfr_("addChunkToMatrix", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(224, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T1_ = mappingInsert__system_3890((*b).Sup.size);
	fl = T1_.Field0;
	sl = T1_.Field1;
	nimln_(225, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*b).prev = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	nimln_(226, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*b).next = (*a).matrix[(fl)- 0][(sl)- 0];
	nimln_(227, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!!(((*a).matrix[(fl)- 0][(sl)- 0] == ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL)))) goto LA4_;
		nimln_(228, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*(*a).matrix[(fl)- 0][(sl)- 0]).prev = b;
	}
	LA4_: ;
	nimln_(229, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).matrix[(fl)- 0][(sl)- 0] = b;
	nimln_(230, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	setBit__system_3858(sl, (&(*a).slBitmap[(fl)- 0]));
	nimln_(231, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	setBit__system_3858(fl, (&(*a).flBitmap));
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, splitChunk__system_4518)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c, NI size) {
	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* rest;
	nimfr_("splitChunk", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(548, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	rest = splitChunk2__system_4513(a, c, size);
	nimln_(549, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	addChunkToMatrix__system_3978(a, rest);
	popFrame();
}
static N_INLINE(void, clearBit__system_3865)(NI nr, NU32* dest) {
	nimfr_("clearBit", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(159, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*dest) = (NU32)((*dest) & (NU32)((NU32) ~((NU32)((NU64)(((NU32) 1)) << (NU64)((NI)(nr & ((NI) 31)))))));
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix2__system_3969)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b, NI fl, NI sl) {
	nimfr_("removeChunkFromMatrix2", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(215, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).matrix[(fl)- 0][(sl)- 0] = (*b).next;
	nimln_(216, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!!(((*a).matrix[(fl)- 0][(sl)- 0] == ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL)))) goto LA3_;
		nimln_(217, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*(*a).matrix[(fl)- 0][(sl)- 0]).prev = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(198, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		clearBit__system_3865(sl, (&(*a).slBitmap[(fl)- 0]));
		nimln_(219, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			nimln_(199, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			if (!((*a).slBitmap[(fl)- 0] == ((NU32) 0))) goto LA8_;
			nimln_(201, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			clearBit__system_3865(fl, (&(*a).flBitmap));
		}
		LA8_: ;
	}
	LA1_: ;
	nimln_(220, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*b).prev = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	nimln_(221, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*b).next = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, getBigChunk__system_4544)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size) {
	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* result;
	NI size_2;
	NI fl;
	NI sl;
	NI T19_;
	nimfr_("getBigChunk", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*)0;
	nimln_(588, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	size_2 = size;
	nimln_(589, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	fl = ((NI) 0);
	nimln_(590, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	sl = ((NI) 0);
	nimln_(591, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	mappingSearch__system_3872((&size_2), (&fl), (&sl));
	nimln_(593, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = findSuitableBlock__system_3904((&(*a)), (&fl), (&sl));
	nimln_(594, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!(result == ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL))) goto LA3_;
		nimln_(595, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!(size_2 < ((NI) 524288))) goto LA7_;
			nimln_(596, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			result = requestOsChunks__system_4467(a, ((NI) 524288));
			nimln_(597, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			splitChunk__system_4518(a, result, size_2);
		}
		goto LA5_;
		LA7_: ;
		{
			nimln_(599, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			result = requestOsChunks__system_4467(a, size_2);
			nimln_(601, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			{
				if (!(size_2 < (*result).Sup.size)) goto LA12_;
				nimln_(602, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				splitChunk__system_4518(a, result, size_2);
			}
			LA12_: ;
		}
		LA5_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(604, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		removeChunkFromMatrix2__system_3969(a, result, fl, sl);
		nimln_(605, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!((NI)(size_2 + ((NI) 4096)) <= (*result).Sup.size)) goto LA17_;
			nimln_(606, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			splitChunk__system_4518(a, result, size_2);
		}
		LA17_: ;
	}
	LA1_: ;
	nimln_(608, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).Sup.prevSize = ((NI) 1);
	nimln_(611, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T19_ = (NI)0;
	T19_ = pageIndex__system_4449((*((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w**) (&(result)))));
	incl__system_4284(a, (&(*a).chunkStarts), T19_);
	nimln_(612, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).freeMem -= size_2;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*, getSmallChunk__system_4567)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a) {
	tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* result;
	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* res;
	nimfr_("getSmallChunk", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*)0;
	nimln_(635, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	res = getBigChunk__system_4544(a, ((NI) 4096));
	nimln_(638, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) (res));
	popFrame();
	return result;
}
static N_INLINE(void, listAdd__system_4605)(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ** head, tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c) {
	nimfr_("listAdd", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(504, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*c).next = (*head);
	nimln_(505, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!!(((*head) == ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) NIM_NIL)))) goto LA3_;
		nimln_(507, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*(*head)).prev = c;
	}
	LA3_: ;
	nimln_(508, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*head) = c;
	popFrame();
}
static N_INLINE(void, listRemove__system_4658)(tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ** head, tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c) {
	nimfr_("listRemove", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(512, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!(c == (*head))) goto LA3_;
		nimln_(513, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*head) = (*c).next;
		nimln_(515, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!!(((*head) == ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) NIM_NIL)))) goto LA7_;
			(*(*head)).prev = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) NIM_NIL);
		}
		LA7_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(518, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*(*c).prev).next = (*c).next;
		nimln_(519, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!!(((*c).next == ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) NIM_NIL)))) goto LA12_;
			(*(*c).next).prev = (*c).prev;
		}
		LA12_: ;
	}
	LA1_: ;
	nimln_(520, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*c).next = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) NIM_NIL);
	nimln_(521, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*c).prev = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) NIM_NIL);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*, getHugeChunk__system_4559)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI size) {
	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* result;
	void* T1_;
	NI T2_;
	nimfr_("getHugeChunk", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*)0;
	nimln_(615, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T1_ = (void*)0;
	T1_ = osAllocPages__system_3744(size);
	result = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (T1_));
	nimln_(616, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	incCurrMem__system_3987(a, size);
	nimln_(620, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).next = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	nimln_(621, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).prev = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	nimln_(622, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).Sup.size = size;
	nimln_(624, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).Sup.prevSize = ((NI) 1);
	nimln_(625, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T2_ = (NI)0;
	T2_ = pageIndex__system_4449((*((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w**) (&(result)))));
	incl__system_4284(a, (&(*a).chunkStarts), T2_);
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, getBottom__system_4030)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a) {
	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* result;
	nimfr_("getBottom", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*)0;
	nimln_(268, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (&(*a).bottomData);
	nimln_(269, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!((*result).link[(((NI) 0))- 0] == ((tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*) NIM_NIL))) goto LA3_;
		nimln_(270, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*result).link[(((NI) 0))- 0] = result;
		nimln_(271, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*result).link[(((NI) 1))- 0] = result;
	}
	LA3_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*, allocAvlNode__system_4046)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI key, NI upperBound) {
	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* result;
	tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* bottom;
	nimfr_("allocAvlNode", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*)0;
	nimln_(274, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!!(((*a).freeAvlNodes == ((tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*) NIM_NIL)))) goto LA3_;
		nimln_(275, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		result = (*a).freeAvlNodes;
		nimln_(276, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*a).freeAvlNodes = (*(*a).freeAvlNodes).link[(((NI) 0))- 0];
	}
	goto LA1_;
	LA3_: ;
	{
		void* T6_;
		nimln_(278, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		T6_ = (void*)0;
		T6_ = llAlloc__system_4004(a, ((NI) 40));
		result = ((tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*) (T6_));
	}
	LA1_: ;
	nimln_(281, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).key = key;
	nimln_(282, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).upperBound = upperBound;
	nimln_(283, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	bottom = getBottom__system_4030(a);
	nimln_(284, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).link[(((NI) 0))- 0] = bottom;
	nimln_(285, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).link[(((NI) 1))- 0] = bottom;
	nimln_(286, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*result).level = ((NI) 1);
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, skew__system_4167)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t) {
	nimfr_("skew", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	nimln_(40, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	{
		tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* temp;
		if (!((*(*(*t)).link[(((NI) 0))- 0]).level == (*(*t)).level)) goto LA3_;
		nimln_(41, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		temp = (*t);
		nimln_(42, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*t) = (*(*t)).link[(((NI) 0))- 0];
		nimln_(43, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*temp).link[(((NI) 0))- 0] = (*(*t)).link[(((NI) 1))- 0];
		nimln_(44, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*(*t)).link[(((NI) 1))- 0] = temp;
	}
	LA3_: ;
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, split__system_4170)(tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t) {
	nimfr_("split", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	nimln_(47, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	{
		tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* temp;
		if (!((*(*(*(*t)).link[(((NI) 1))- 0]).link[(((NI) 1))- 0]).level == (*(*t)).level)) goto LA3_;
		nimln_(48, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		temp = (*t);
		nimln_(49, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*t) = (*(*t)).link[(((NI) 1))- 0];
		nimln_(50, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*temp).link[(((NI) 1))- 0] = (*(*t)).link[(((NI) 0))- 0];
		nimln_(51, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*(*t)).link[(((NI) 0))- 0] = temp;
		nimln_(52, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*(*t)).level += ((NI) 1);
	}
	LA3_: ;
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, add__system_4177)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t, NI key, NI upperBound) {
	nimfr_("add", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	nimln_(55, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	{
		if (!((*(*t)).link[(((NI) 0))- 0] == (*t))) goto LA3_;
		nimln_(56, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*t) = allocAvlNode__system_4046(a, key, upperBound);
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(58, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = ltpercent___system_1005(key, (*(*t)).key);
			if (!T8_) goto LA9_;
			nimln_(62, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
			add__system_4177(a, &(*(*t)).link[(((NI) 0))- 0], key, upperBound);
		}
		goto LA6_;
		LA9_: ;
		{
			NIM_BOOL T12_;
			nimln_(63, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
			T12_ = (NIM_BOOL)0;
			T12_ = ltpercent___system_1005((*(*t)).key, key);
			if (!T12_) goto LA13_;
			nimln_(67, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
			add__system_4177(a, &(*(*t)).link[(((NI) 1))- 0], key, upperBound);
		}
		goto LA6_;
		LA13_: ;
		{
		}
		LA6_: ;
		nimln_(70, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		skew__system_4167(t);
		nimln_(71, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		split__system_4170(t);
	}
	LA1_: ;
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void*, rawAlloc__system_4588)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI requestedSize) {
	void* result;
	NI size;
	nimfr_("rawAlloc", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (void*)0;
	nimln_(752, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	size = roundup__system_3724(requestedSize, ((NI) 16));
	nimln_(757, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		NI s;
		tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c;
		if (!(size <= ((NI) 4032))) goto LA3_;
		nimln_(759, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		s = (NI)(size / ((NI) 16));
		nimln_(760, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		c = (*a).freeSmallChunks[(s)- 0];
		nimln_(761, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!(c == ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) NIM_NIL))) goto LA7_;
			nimln_(762, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			c = getSmallChunk__system_4567(a);
			nimln_(763, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*c).freeList = ((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) NIM_NIL);
			nimln_(765, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*c).Sup.size = size;
			nimln_(766, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*c).acc = size;
			nimln_(767, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*c).free = (NI)(((NI) 4032) - size);
			nimln_(768, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*c).next = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) NIM_NIL);
			nimln_(769, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*c).prev = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) NIM_NIL);
			nimln_(770, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			listAdd__system_4605(&(*a).freeSmallChunks[(s)- 0], c);
			nimln_(771, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			result = ((void*) ((*c).data));
		}
		goto LA5_;
		LA7_: ;
		{
			nimln_(779, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			{
				NI T14_;
				if (!((*c).freeList == ((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) NIM_NIL))) goto LA12_;
				nimln_(782, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				T14_ = (NI)0;
				T14_ = pluspercent___system_696(((NI) (ptrdiff_t) ((*c).data)), (*c).acc);
				result = ((void*) (T14_));
				nimln_(783, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				(*c).acc += size;
			}
			goto LA10_;
			LA12_: ;
			{
				nimln_(785, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				result = ((void*) ((*c).freeList));
				nimln_(788, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				(*c).freeList = (*(*c).freeList).next;
			}
			LA10_: ;
			nimln_(789, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*c).free -= size;
		}
		LA5_: ;
		nimln_(793, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!((*c).free < size)) goto LA18_;
			nimln_(795, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			listRemove__system_4658(&(*a).freeSmallChunks[(s)- 0], c);
		}
		LA18_: ;
		nimln_(800, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*a).occ += size;
	}
	goto LA1_;
	LA3_: ;
	{
		tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_2;
		NI T30_;
		nimln_(803, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		size = (NI)(requestedSize + ((NI) 32));
		nimln_(805, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!(((NI) 1056964609) <= size)) goto LA23_;
			c_2 = getHugeChunk__system_4559(a, size);
		}
		goto LA21_;
		LA23_: ;
		{
			nimln_(806, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			c_2 = getBigChunk__system_4544(a, size);
		}
		LA21_: ;
		nimln_(809, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		result = ((void*) ((*c_2).data));
		nimln_(812, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!((*a).root == ((tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw*) NIM_NIL))) goto LA28_;
			(*a).root = getBottom__system_4030(a);
		}
		LA28_: ;
		nimln_(813, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		T30_ = (NI)0;
		T30_ = pluspercent___system_696(((NI) (ptrdiff_t) (result)), size);
		add__system_4177(a, &(*a).root, ((NI) (ptrdiff_t) (result)), T30_);
		nimln_(814, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*a).occ += (*c_2).Sup.size;
	}
	LA1_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void*, alloc__system_4804)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, NI size) {
	void* result;
	NI T1_;
	nimfr_("alloc", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (void*)0;
	nimln_(950, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = rawAlloc__system_4588(allocator, (NI)(((NI) (size)) + ((NI) 16)));
	nimln_(951, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) (result))).zeroField = ((NI) 1);
	nimln_(953, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T1_ = (NI)0;
	T1_ = pluspercent___system_696(((NI) (ptrdiff_t) (result)), ((NI) 16));
	result = ((void*) (T1_));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NOCONV(void*, allocImpl__system_1743)(NI size) {
	void* result;
	result = (void*)0;
	result = alloc__system_4804((&gch__system_5246.region), size);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, removeChunkFromMatrix__system_3939)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* b) {
	tyTuple__1v9bKyksXWMsm0vNwmZ4EuQ T1_;
	NI fl;
	NI sl;
	nimfr_("removeChunkFromMatrix", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(204, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T1_ = mappingInsert__system_3890((*b).Sup.size);
	fl = T1_.Field0;
	sl = T1_.Field1;
	nimln_(205, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!!(((*b).next == ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL)))) goto LA4_;
		(*(*b).next).prev = (*b).prev;
	}
	LA4_: ;
	nimln_(206, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!!(((*b).prev == ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL)))) goto LA8_;
		(*(*b).prev).next = (*b).next;
	}
	LA8_: ;
	nimln_(207, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		if (!((*a).matrix[(fl)- 0][(sl)- 0] == b)) goto LA12_;
		nimln_(208, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*a).matrix[(fl)- 0][(sl)- 0] = (*b).next;
		nimln_(209, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!((*a).matrix[(fl)- 0][(sl)- 0] == ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL))) goto LA16_;
			nimln_(198, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			clearBit__system_3865(sl, (&(*a).slBitmap[(fl)- 0]));
			nimln_(210, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			{
				nimln_(199, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				if (!((*a).slBitmap[(fl)- 0] == ((NU32) 0))) goto LA20_;
				nimln_(201, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				clearBit__system_3865(fl, (&(*a).flBitmap));
			}
			LA20_: ;
		}
		LA16_: ;
	}
	LA12_: ;
	nimln_(211, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*b).prev = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	nimln_(212, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*b).next = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) NIM_NIL);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, excl__system_4306)(tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA* s, NI key) {
	tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* t;
	nimfr_("excl", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(351, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	t = intSetGet__system_4214((&(*s)), (NI)((NI64)(key) >> (NU64)(((NI) 9))));
	nimln_(352, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		NI u;
		if (!!((t == ((tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*) NIM_NIL)))) goto LA3_;
		nimln_(353, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		u = (NI)(key & ((NI) 511));
		nimln_(354, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		nimln_(355, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*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_: ;
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, freeBigChunk__system_4523)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c) {
	tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_2;
	NI prevSize;
	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* ri;
	NI T24_;
	nimfr_("freeBigChunk", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(552, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	c_2 = c;
	nimln_(554, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).freeMem += (*c_2).Sup.size;
	nimln_(555, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*c_2).Sup.prevSize = (NI)((*c_2).Sup.prevSize & ((NI) -2));
	nimln_(557, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	prevSize = (*c_2).Sup.prevSize;
	nimln_(558, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* le;
		NI T5_;
		if (!!((prevSize == ((NI) 0)))) goto LA3_;
		nimln_(559, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		T5_ = (NI)0;
		T5_ = minuspercent___system_716(((NI) (ptrdiff_t) (c_2)), prevSize);
		le = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) (T5_));
		nimln_(561, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			NIM_BOOL T8_;
			T8_ = (NIM_BOOL)0;
			T8_ = isAccessible__system_4490((&(*a)), ((void*) (le)));
			if (!(T8_)) goto LA9_;
			T8_ = chunkUnused__system_4380(le);
			LA9_: ;
			if (!T8_) goto LA10_;
			nimln_(563, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			{
				NIM_BOOL T14_;
				NIM_BOOL T15_;
				NI T19_;
				T14_ = (NIM_BOOL)0;
				T15_ = (NIM_BOOL)0;
				T15_ = isSmallChunk__system_4374(le);
				T14_ = !(T15_);
				if (!(T14_)) goto LA16_;
				T14_ = ((*le).size < ((NI) 1056964608));
				LA16_: ;
				if (!T14_) goto LA17_;
				nimln_(564, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				removeChunkFromMatrix__system_3939(a, ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (le)));
				nimln_(565, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				(*le).size += (*c_2).Sup.size;
				nimln_(566, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				T19_ = (NI)0;
				T19_ = pageIndex__system_4449((*((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w**) (&(c_2)))));
				excl__system_4306((&(*a).chunkStarts), T19_);
				nimln_(567, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				c_2 = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (le));
				nimln_(568, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				{
					tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* rest;
					if (!(((NI) 1056964608) < (*c_2).Sup.size)) goto LA22_;
					nimln_(569, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
					rest = splitChunk2__system_4513(a, c_2, ((NI) 1056964608));
					nimln_(570, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
					addChunkToMatrix__system_3978(a, c_2);
					nimln_(571, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
					c_2 = rest;
				}
				LA22_: ;
			}
			LA17_: ;
		}
		LA10_: ;
	}
	LA3_: ;
	nimln_(573, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T24_ = (NI)0;
	T24_ = pluspercent___system_696(((NI) (ptrdiff_t) (c_2)), (*c_2).Sup.size);
	ri = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) (T24_));
	nimln_(575, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		NIM_BOOL T27_;
		T27_ = (NIM_BOOL)0;
		T27_ = isAccessible__system_4490((&(*a)), ((void*) (ri)));
		if (!(T27_)) goto LA28_;
		T27_ = chunkUnused__system_4380(ri);
		LA28_: ;
		if (!T27_) goto LA29_;
		nimln_(577, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			NIM_BOOL T33_;
			NIM_BOOL T34_;
			NI T38_;
			T33_ = (NIM_BOOL)0;
			T34_ = (NIM_BOOL)0;
			T34_ = isSmallChunk__system_4374(ri);
			T33_ = !(T34_);
			if (!(T33_)) goto LA35_;
			T33_ = ((*c_2).Sup.size < ((NI) 1056964608));
			LA35_: ;
			if (!T33_) goto LA36_;
			nimln_(578, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			removeChunkFromMatrix__system_3939(a, ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (ri)));
			nimln_(579, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*c_2).Sup.size += (*ri).size;
			nimln_(580, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			T38_ = (NI)0;
			T38_ = pageIndex__system_4449(ri);
			excl__system_4306((&(*a).chunkStarts), T38_);
			nimln_(581, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			{
				tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* rest_2;
				if (!(((NI) 1056964608) < (*c_2).Sup.size)) goto LA41_;
				nimln_(582, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				rest_2 = splitChunk2__system_4513(a, c_2, ((NI) 1056964608));
				nimln_(583, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				addChunkToMatrix__system_3978(a, rest_2);
			}
			LA41_: ;
		}
		LA36_: ;
	}
	LA29_: ;
	nimln_(584, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	addChunkToMatrix__system_3978(a, c_2);
	popFrame();
}
static N_INLINE(void, deallocAvlNode__system_4068)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* n) {
	nimfr_("deallocAvlNode", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(294, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*n).link[(((NI) 0))- 0] = (*a).freeAvlNodes;
	nimln_(295, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).freeAvlNodes = n;
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, del__system_4186)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw** t, NI x) {
	nimfr_("del", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
{	nimln_(74, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	{
		if (!((*(*t)).link[(((NI) 0))- 0] == (*t))) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	nimln_(75, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	(*a).last = (*t);
	nimln_(76, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	{
		NIM_BOOL T7_;
		T7_ = (NIM_BOOL)0;
		T7_ = ltpercent___system_1005(x, (*(*t)).key);
		if (!T7_) goto LA8_;
		nimln_(77, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		del__system_4186(a, &(*(*t)).link[(((NI) 0))- 0], x);
	}
	goto LA5_;
	LA8_: ;
	{
		nimln_(79, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*a).deleted = (*t);
		nimln_(80, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		del__system_4186(a, &(*(*t)).link[(((NI) 1))- 0], x);
	}
	LA5_: ;
	nimln_(81, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
	{
		NIM_BOOL T13_;
		NIM_BOOL T14_;
		T13_ = (NIM_BOOL)0;
		T14_ = (NIM_BOOL)0;
		T14_ = ((*t) == (*a).last);
		if (!(T14_)) goto LA15_;
		T14_ = !(((*(*a).deleted).link[(((NI) 0))- 0] == (*a).deleted));
		LA15_: ;
		T13_ = T14_;
		if (!(T13_)) goto LA16_;
		T13_ = (x == (*(*a).deleted).key);
		LA16_: ;
		if (!T13_) goto LA17_;
		nimln_(82, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*(*a).deleted).key = (*(*t)).key;
		nimln_(83, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*(*a).deleted).upperBound = (*(*t)).upperBound;
		nimln_(84, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*a).deleted = getBottom__system_4030(a);
		nimln_(85, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*t) = (*(*t)).link[(((NI) 1))- 0];
		nimln_(86, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		deallocAvlNode__system_4068(a, (*a).last);
	}
	goto LA11_;
	LA17_: ;
	{
		NIM_BOOL T20_;
		nimln_(87, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		T20_ = (NIM_BOOL)0;
		T20_ = ((*(*(*t)).link[(((NI) 0))- 0]).level < (NI)((*(*t)).level - ((NI) 1)));
		if (T20_) goto LA21_;
		nimln_(88, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		T20_ = ((*(*(*t)).link[(((NI) 1))- 0]).level < (NI)((*(*t)).level - ((NI) 1)));
		LA21_: ;
		if (!T20_) goto LA22_;
		nimln_(89, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		(*(*t)).level -= ((NI) 1);
		nimln_(90, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		{
			if (!((*(*t)).level < (*(*(*t)).link[(((NI) 1))- 0]).level)) goto LA26_;
			nimln_(91, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
			(*(*(*t)).link[(((NI) 1))- 0]).level = (*(*t)).level;
		}
		LA26_: ;
		nimln_(92, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		skew__system_4167(t);
		nimln_(93, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		skew__system_4167(&(*(*t)).link[(((NI) 1))- 0]);
		nimln_(94, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		skew__system_4167(&(*(*(*t)).link[(((NI) 1))- 0]).link[(((NI) 1))- 0]);
		nimln_(95, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		split__system_4170(t);
		nimln_(96, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/avltree.nim");
		split__system_4170(&(*(*t)).link[(((NI) 1))- 0]);
	}
	goto LA11_;
	LA22_: ;
	LA11_: ;
	}BeforeRet_: ;
	popFrame();
}
static N_INLINE(void, decCurrMem__system_3994)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, NI bytes) {
	nimfr_("decCurrMem", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(237, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).maxMem = (((*a).maxMem >= (*a).currMem) ? (*a).maxMem : (*a).currMem);
	nimln_(238, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	(*a).currMem -= bytes;
	popFrame();
}
static N_INLINE(void, osDeallocPages__system_3750)(void* p, NI size) {
	int T1_;
	nimfr_("osDeallocPages", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/osalloc.nim");
	nimln_(153, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/osalloc.nim");
	T1_ = (int)0;
	T1_ = munmap(p, ((size_t) (size)));
	(void)(T1_);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, freeHugeChunk__system_4563)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c) {
	NI size;
	NI T1_;
	nimfr_("freeHugeChunk", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(628, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	size = (*c).Sup.size;
	nimln_(630, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T1_ = (NI)0;
	T1_ = pageIndex__system_4449(&c->Sup);
	excl__system_4306((&(*a).chunkStarts), T1_);
	nimln_(631, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	decCurrMem__system_3994(a, size);
	nimln_(632, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	osDeallocPages__system_3750(((void*) (c)), size);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, rawDealloc__system_4717)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* a, void* p) {
	tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c;
	nimfr_("rawDealloc", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(829, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	c = pageAddr__system_4463(p);
	nimln_(830, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	{
		NIM_BOOL T3_;
		tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c_2;
		NI s;
		tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ* f;
		T3_ = (NIM_BOOL)0;
		T3_ = isSmallChunk__system_4374(c);
		if (!T3_) goto LA4_;
		nimln_(832, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		c_2 = ((tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ*) (c));
		nimln_(833, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		s = (*c_2).Sup.size;
		nimln_(834, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*a).occ -= s;
		nimln_(839, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		f = ((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) (p));
		nimln_(843, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*f).zeroField = ((NI) 0);
		nimln_(844, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*f).next = (*c_2).freeList;
		nimln_(845, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*c_2).freeList = f;
		nimln_(851, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!((*c_2).free < s)) goto LA8_;
			nimln_(853, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			listAdd__system_4605(&(*a).freeSmallChunks[((NI)(s / ((NI) 16)))- 0], c_2);
			nimln_(854, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*c_2).free += s;
		}
		goto LA6_;
		LA8_: ;
		{
			nimln_(856, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			(*c_2).free += s;
			nimln_(857, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			{
				if (!((*c_2).free == ((NI) 4032))) goto LA13_;
				nimln_(858, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				listRemove__system_4658(&(*a).freeSmallChunks[((NI)(s / ((NI) 16)))- 0], c_2);
				nimln_(859, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				(*c_2).Sup.size = ((NI) 4096);
				nimln_(860, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
				freeBigChunk__system_4523(a, ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (c_2)));
			}
			LA13_: ;
		}
		LA6_: ;
	}
	goto LA1_;
	LA4_: ;
	{
		tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_3;
		nimln_(867, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		c_3 = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (c));
		nimln_(868, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*a).occ -= (*c_3).Sup.size;
		nimln_(871, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		(*a).deleted = getBottom__system_4030(a);
		nimln_(872, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		del__system_4186(a, &(*a).root, ((NI) (ptrdiff_t) ((*c_3).data)));
		nimln_(873, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
		{
			if (!(((NI) 1056964609) <= (*c_3).Sup.size)) goto LA18_;
			freeHugeChunk__system_4563(a, c_3);
		}
		goto LA16_;
		LA18_: ;
		{
			nimln_(874, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
			freeBigChunk__system_4523(a, c_3);
		}
		LA16_: ;
	}
	LA1_: ;
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, dealloc__system_4812)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, void* p) {
	void* x;
	NI T1_;
	nimfr_("dealloc", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	nimln_(965, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	T1_ = (NI)0;
	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (p)), ((NI) 16));
	x = ((void*) (T1_));
	nimln_(969, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	rawDealloc__system_4717(allocator, x);
	popFrame();
}
N_LIB_PRIVATE N_NOCONV(void, deallocImpl__system_1747)(void* p) {
	dealloc__system_4812((&gch__system_5246.region), p);
}
N_LIB_PRIVATE N_NOCONV(void, dealloc)(void* p) {
	deallocImpl__system_1747(p);
}
static N_INLINE(void, add__system_4888)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("add", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
	nimln_(24, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
		void* T5_;
		if (!((*s).cap <= (*s).len)) goto LA3_;
		nimln_(25, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
		(*s).cap = (NI)((NI)((*s).cap * ((NI) 3)) / ((NI) 2));
		nimln_(26, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
		T5_ = (void*)0;
		T5_ = allocImpl__system_1743(((NI) ((NI)((*s).cap * ((NI) 8)))));
		d = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g**) (T5_));
		nimln_(27, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
		copyMem__system_1727(((void*) (d)), ((void*) ((*s).d)), ((NI) ((NI)((*s).len * ((NI) 8)))));
		nimln_(28, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
		dealloc(((void*) ((*s).d)));
		nimln_(29, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
		(*s).d = d;
	}
	LA3_: ;
	nimln_(31, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
	(*s).d[(*s).len] = c;
	nimln_(32, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
	(*s).len += ((NI) 1);
	popFrame();
}
static N_INLINE(void, gcMark__system_5797)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, void* p) {
	NI c;
	c = ((NI) (ptrdiff_t) (p));
	{
		NIM_BOOL T3_;
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* objStart;
		void* T6_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___system_1005(((NI) 4096), c);
		if (!T3_) goto LA4_;
		T6_ = (void*)0;
		T6_ = interiorAllocatedPtr__system_4771((&(*gch).region), p);
		objStart = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T6_));
		{
			if (!!((objStart == ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) NIM_NIL)))) goto LA9_;
			incRef__system_5337(objStart);
			add__system_4888((&(*gch).decStack), objStart);
		}
		LA9_: ;
	}
	LA4_: ;
}
CLANG_NO_SANITIZE_ADDRESS N_LIB_PRIVATE void markStackAndRegisters__system_5806(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {
	jmp_buf registers;
	tyObject_GcStack__7fytPA5bBsob6See21YMRA* T1_;
	T1_ = (tyObject_GcStack__7fytPA5bBsob6See21YMRA*)0;
	T1_ = getActiveStack__system_5435(gch);
	setPosition__system_5429(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__system_5438(stack);
				if (!T10_) goto LA11_;
				regEnd = pluspercent___system_696(sp, ((NI)sizeof(jmp_buf)));
				{
					while (1) {
						NIM_BOOL T15_;
						NI T16_;
						T15_ = (NIM_BOOL)0;
						T15_ = ltpercent___system_1005(sp, regEnd);
						if (!T15_) goto LA14;
						gcMark__system_5797(gch, (*((void**) (sp))));
						T16_ = (NI)0;
						T16_ = pluspercent___system_696(sp, ((NI) 4));
						gcMark__system_5797(gch, (*((void**) (T16_))));
						sp = pluspercent___system_696(sp, ((NI) 8));
					} LA14: ;
				}
			}
			LA11_: ;
			sp = (NI)(sp & ((NI) -8));
			{
				while (1) {
					NIM_BOOL T19_;
					T19_ = (NIM_BOOL)0;
					T19_ = ltpercent___system_1005(sp, (NI)(max - ((NI) 64)));
					if (!T19_) goto LA18;
					gcMark__system_5797(gch, ((void**) (sp))[(((NI) 0))- 0]);
					gcMark__system_5797(gch, ((void**) (sp))[(((NI) 1))- 0]);
					gcMark__system_5797(gch, ((void**) (sp))[(((NI) 2))- 0]);
					gcMark__system_5797(gch, ((void**) (sp))[(((NI) 3))- 0]);
					gcMark__system_5797(gch, ((void**) (sp))[(((NI) 4))- 0]);
					gcMark__system_5797(gch, ((void**) (sp))[(((NI) 5))- 0]);
					gcMark__system_5797(gch, ((void**) (sp))[(((NI) 6))- 0]);
					gcMark__system_5797(gch, ((void**) (sp))[(((NI) 7))- 0]);
					sp = pluspercent___system_696(sp, ((NI) 64));
				} LA18: ;
			}
			{
				while (1) {
					NIM_BOOL T22_;
					T22_ = (NIM_BOOL)0;
					T22_ = lteqpercent___system_985(sp, max);
					if (!T22_) goto LA21;
					gcMark__system_5797(gch, (*((void**) (sp))));
					sp = pluspercent___system_696(sp, ((NI) 8));
				} LA21: ;
			}
		}
	}
	LA5_: ;
}
static N_INLINE(void*, cellToUsr__system_5296)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell) {
	void* result;
	NI T1_;
	nimfr_("cellToUsr", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = (void*)0;
	nimln_(173, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	T1_ = (NI)0;
	T1_ = pluspercent___system_696(((NI) (ptrdiff_t) (cell)), ((NI) 16));
	result = ((void*) (T1_));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, prepareDealloc__system_5459)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell) {
	TNimType* t;
	nimfr_("prepareDealloc", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	nimln_(422, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	t = (*cell).typ;
	nimln_(423, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	{
		void* T5_;
		if (!!(((*t).finalizer == NIM_NIL))) goto LA3_;
		nimln_(429, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		gch__system_5246.recGcLock += ((NI) 1);
		nimln_(430, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		T5_ = (void*)0;
		T5_ = cellToUsr__system_5296(cell);
		((Finalizer) ((*t).finalizer))(T5_);
		nimln_(431, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		gch__system_5246.recGcLock -= ((NI) 1);
	}
	LA3_: ;
	popFrame();
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5299)(void* usr) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
	NI T1_;
	nimfr_("usrToCell", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	nimln_(177, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	T1_ = (NI)0;
	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 16));
	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5293)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("addZCT", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	nimln_(167, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	{
		if (!((NI)((*c).refcount & ((NI) 4)) == ((NI) 0))) goto LA3_;
		nimln_(168, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
		(*c).refcount = (NI)((*c).refcount | ((NI) 4));
		nimln_(169, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
		add__system_4888(s, c);
	}
	LA3_: ;
	popFrame();
}
static N_INLINE(void, rtlAddZCT__system_5342)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("rtlAddZCT", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	nimln_(243, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	addZCT__system_5293((&gch__system_5246.zct), c);
	popFrame();
}
static N_INLINE(void, decRef__system_5344)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("decRef", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	nimln_(248, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	(*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
	nimln_(249, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
		if (!T3_) goto LA4_;
		nimln_(250, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
		rtlAddZCT__system_5342(c);
	}
	LA4_: ;
	popFrame();
}
static N_INLINE(NI, nextTry__system_4948)(NI h, NI maxHash) {
	NI result;
	nimfr_("nextTry", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	result = (NI)0;
	nimln_(109, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	result = (NI)((NI)((NI)(((NI) 5) * h) + ((NI) 1)) & maxHash);
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void*, alloc0__system_4808)(tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg* allocator, NI size) {
	void* result;
	nimfr_("alloc0", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (void*)0;
	nimln_(959, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = alloc__system_4804(allocator, size);
	nimln_(960, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	zeroMem__system_1724(result, size);
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NOCONV(void*, alloc0Impl__system_1745)(NI size) {
	void* result;
	result = (void*)0;
	result = alloc0__system_4808((&gch__system_5246.region), size);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, cellSetRawInsert__system_4961)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* t, tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data, tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* desc) {
	NI h;
	nimfr_("cellSetRawInsert", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	nimln_(122, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	h = (NI)(((NI) ((*desc).key)) & (*t).max);
	{
		nimln_(123, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		while (1) {
			if (!!((data[h] == ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) NIM_NIL)))) goto LA2;
			nimln_(125, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			h = nextTry__system_4948(h, (*t).max);
		} LA2: ;
	}
	nimln_(127, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	data[h] = desc;
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, cellSetEnlarge__system_4978)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* t) {
	NI oldMax;
	tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** n;
	void* T1_;
	nimfr_("cellSetEnlarge", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	nimln_(130, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	oldMax = (*t).max;
	nimln_(131, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*t).max = (NI)((NI)((NI)((*t).max + ((NI) 1)) * ((NI) 2)) - ((NI) 1));
	nimln_(132, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	T1_ = (void*)0;
	T1_ = alloc0Impl__system_1745(((NI) ((NI)((NI)((*t).max + ((NI) 1)) * ((NI) 8)))));
	n = ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg**) (T1_));
	{
		NI i;
		NI res;
		i = (NI)0;
		nimln_(90, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/iterators_1.nim");
		res = ((NI) 0);
		{
			nimln_(91, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/iterators_1.nim");
			while (1) {
				if (!(res <= oldMax)) goto LA4;
				nimln_(133, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
				i = res;
				{
					nimln_(134, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
					if (!!(((*t).data[i] == ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) NIM_NIL)))) goto LA7_;
					nimln_(135, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
					cellSetRawInsert__system_4961((&(*t)), n, (*t).data[i]);
				}
				LA7_: ;
				nimln_(93, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/iterators_1.nim");
				res += ((NI) 1);
			} LA4: ;
		}
	}
	nimln_(136, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	dealloc(((void*) ((*t).data)));
	nimln_(137, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*t).data = n;
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*, cellSetPut__system_4991)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* t, NU key) {
	tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* result;
	NI h;
	void* T19_;
	nimfr_("cellSetPut", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
{	result = (tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*)0;
	nimln_(140, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	h = (NI)(((NI) (key)) & (*t).max);
	{
		nimln_(141, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		while (1) {
			tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* x;
			nimln_(142, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			x = (*t).data[h];
			nimln_(143, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			{
				if (!(x == ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) NIM_NIL))) goto LA5_;
				goto LA1;
			}
			LA5_: ;
			nimln_(144, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			{
				if (!((*x).key == key)) goto LA9_;
				result = x;
				goto BeforeRet_;
			}
			LA9_: ;
			nimln_(145, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			h = nextTry__system_4948(h, (*t).max);
		}
	} LA1: ;
	nimln_(147, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	{
		NIM_BOOL T13_;
		T13_ = (NIM_BOOL)0;
		T13_ = ((NI)((NI)((*t).max + ((NI) 1)) * ((NI) 2)) < (NI)((*t).counter * ((NI) 3)));
		if (T13_) goto LA14_;
		T13_ = ((NI)((NI)((*t).max + ((NI) 1)) - (*t).counter) < ((NI) 4));
		LA14_: ;
		if (!T13_) goto LA15_;
		nimln_(148, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		cellSetEnlarge__system_4978(t);
	}
	LA15_: ;
	nimln_(149, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*t).counter += ((NI) 1);
	nimln_(150, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	h = (NI)(((NI) (key)) & (*t).max);
	{
		nimln_(151, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		while (1) {
			if (!!(((*t).data[h] == ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) NIM_NIL)))) goto LA18;
			h = nextTry__system_4948(h, (*t).max);
		} LA18: ;
	}
	nimln_(154, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	T19_ = (void*)0;
	T19_ = alloc0Impl__system_1745(((NI) 48));
	result = ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) (T19_));
	nimln_(155, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*result).next = (*t).head;
	nimln_(156, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*result).key = key;
	nimln_(157, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*t).head = result;
	nimln_(158, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*t).data[h] = result;
	}BeforeRet_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, incl__system_5045)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell) {
	NU u;
	tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* t;
	nimfr_("incl", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	nimln_(172, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	u = ((NU) (ptrdiff_t) (cell));
	nimln_(173, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	t = cellSetPut__system_4991(s, (NU)((NU64)(u) >> (NU64)(((NI) 12))));
	nimln_(174, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	u = (NU)((NU64)((NU)((NU64)(u) % (NU64)(((NU) 4096)))) / (NU64)(((NU) 16)));
	nimln_(175, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*t).bits[((NU)((NU64)(u) >> (NU64)(((NI) 6))))- 0] = (NI)((*t).bits[((NU)((NU64)(u) >> (NU64)(((NI) 6))))- 0] | (NI)((NU64)(((NI) 1)) << (NU64)((NU)(u & ((NU) 63)))));
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*, cellSetGet__system_4952)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* t, NU key) {
	tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* result;
	NI h;
	nimfr_("cellSetGet", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
{	result = (tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*)0;
	nimln_(115, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	h = (NI)(((NI) (key)) & (*t).max);
	{
		nimln_(116, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		while (1) {
			if (!!(((*t).data[h] == ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) NIM_NIL)))) goto LA2;
			nimln_(117, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			{
				if (!((*(*t).data[h]).key == key)) goto LA5_;
				result = (*t).data[h];
				goto BeforeRet_;
			}
			LA5_: ;
			nimln_(118, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			h = nextTry__system_4948(h, (*t).max);
		} LA2: ;
	}
	nimln_(119, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	result = ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) NIM_NIL);
	goto BeforeRet_;
	}BeforeRet_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, containsOrIncl__system_5091)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell) {
	NIM_BOOL result;
	NU u;
	tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* t;
	nimfr_("containsOrIncl", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	result = (NIM_BOOL)0;
	nimln_(186, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	u = ((NU) (ptrdiff_t) (cell));
	nimln_(187, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	t = cellSetGet__system_4952((&(*s)), (NU)((NU64)(u) >> (NU64)(((NI) 12))));
	nimln_(188, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	{
		if (!!((t == ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) NIM_NIL)))) goto LA3_;
		nimln_(189, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		u = (NU)((NU64)((NU)((NU64)(u) % (NU64)(((NU) 4096)))) / (NU64)(((NU) 16)));
		nimln_(190, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		result = !(((NI)((*t).bits[((NU)((NU64)(u) >> (NU64)(((NI) 6))))- 0] & (NI)((NU64)(((NI) 1)) << (NU64)((NU)(u & ((NU) 63))))) == ((NI) 0)));
		nimln_(191, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		{
			if (!!(result)) goto LA7_;
			nimln_(192, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			nimln_(193, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			(*t).bits[((NU)((NU64)(u) >> (NU64)(((NI) 6))))- 0] = (NI)((*t).bits[((NU)((NU64)(u) >> (NU64)(((NI) 6))))- 0] | (NI)((NU64)(((NI) 1)) << (NU64)((NU)(u & ((NU) 63)))));
		}
		LA7_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(195, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		incl__system_5045(s, cell);
		nimln_(196, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		result = NIM_FALSE;
	}
	LA1_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, markS__system_5748)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	incl__system_5045((&(*gch).marked), c);
	forAllChildren__system_5327(c, ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 1));
	{
		while (1) {
			tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* d;
			if (!(((NI) 0) < (*gch).tempStack.len)) goto LA2;
			(*gch).tempStack.len -= ((NI) 1);
			d = (*gch).tempStack.d[(*gch).tempStack.len];
			{
				NIM_BOOL T5_;
				T5_ = (NIM_BOOL)0;
				T5_ = containsOrIncl__system_5091((&(*gch).marked), d);
				if (!!(T5_)) goto LA6_;
				forAllChildren__system_5327(d, ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 1));
			}
			LA6_: ;
		} LA2: ;
	}
}
N_LIB_PRIVATE N_NIMCALL(void, doOperation__system_5330)(void* p, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c;
{	{
		if (!(p == NIM_NIL)) goto LA3_;
		goto BeforeRet_;
	}
	LA3_: ;
	c = usrToCell__system_5299(p);
	switch (op) {
	case ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 2):
	{
		decRef__system_5344(c);
	}
	break;
	case ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 3):
	{
		add__system_4888((&gch__system_5246.tempStack), c);
	}
	break;
	case ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 0):
	{
		markS__system_5748((&gch__system_5246), c);
	}
	break;
	case ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 1):
	{
		add__system_4888((&gch__system_5246.tempStack), c);
	}
	break;
	}
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(NU, getDiscriminant__system_3653)(void* aa, TNimNode* n) {
	NU result;
	NU d;
	NU a;
	nimfr_("getDiscriminant", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
{	result = (NU)0;
	d = (NU)0;
	nimln_(2370, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	a = ((NU) (ptrdiff_t) (aa));
	nimln_(2371, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	switch ((*(*n).typ).size) {
	case ((NI) 1):
	{
		nimln_(2372, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
		d = ((NU) ((*((NU8*) ((NU)((NU64)(a) + (NU64)(((NU) ((*n).offset)))))))));
	}
	break;
	case ((NI) 2):
	{
		nimln_(2373, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
		d = ((NU) ((*((NU16*) ((NU)((NU64)(a) + (NU64)(((NU) ((*n).offset)))))))));
	}
	break;
	case ((NI) 4):
	{
		nimln_(2374, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
		d = ((NU) ((*((NU32*) ((NU)((NU64)(a) + (NU64)(((NU) ((*n).offset)))))))));
	}
	break;
	case ((NI) 8):
	{
		nimln_(2375, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
		d = ((NU) ((*((NU64*) ((NU)((NU64)(a) + (NU64)(((NU) ((*n).offset)))))))));
	}
	break;
	default:
	{
		nimln_(2377, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
		d = ((NU) 0);
	}
	break;
	}
	nimln_(2379, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	result = d;
	goto BeforeRet_;
	}BeforeRet_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(TNimNode*, selectBranch__system_3673)(void* aa, TNimNode* n) {
	TNimNode* result;
	NU discr;
	nimfr_("selectBranch", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	result = (TNimNode*)0;
	nimln_(2382, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	discr = getDiscriminant__system_3653(aa, n);
	nimln_(2383, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	{
		if (!((NU64)(discr) < (NU64)(((NU) ((*n).len))))) goto LA3_;
		nimln_(2384, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
		result = (*n).sons[(discr)- 0];
		nimln_(2385, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
		{
			if (!(result == ((TNimNode*) NIM_NIL))) goto LA7_;
			result = (*n).sons[((*n).len)- 0];
		}
		LA7_: ;
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(2388, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
		result = (*n).sons[((*n).len)- 0];
	}
	LA1_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, forAllSlotsAux__system_5564)(void* dest, TNimNode* n, tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ op) {
	NI d;
	d = ((NI) (ptrdiff_t) (dest));
	switch ((*n).kind) {
	case ((tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ) 1):
	{
		NI T2_;
		T2_ = (NI)0;
		T2_ = pluspercent___system_696(d, (*n).offset);
		forAllChildrenAux__system_5333(((void*) (T2_)), (*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 LA6;
					i = res;
					{
						if (!((*(*n).sons[(i)- 0]).kind == ((tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ) 1))) goto LA9_;
						{
							NI T15_;
							if (!((289406976 &((NU64)1<<((NU)((*(*(*n).sons[(i)- 0]).typ).kind)&63U)))!=0)) goto LA13_;
							T15_ = (NI)0;
							T15_ = pluspercent___system_696(d, (*(*n).sons[(i)- 0]).offset);
							doOperation__system_5330((*((void**) (T15_))), op);
						}
						goto LA11_;
						LA13_: ;
						{
							NI T17_;
							T17_ = (NI)0;
							T17_ = pluspercent___system_696(d, (*(*n).sons[(i)- 0]).offset);
							forAllChildrenAux__system_5333(((void*) (T17_)), (*(*n).sons[(i)- 0]).typ, op);
						}
						LA11_: ;
					}
					goto LA7_;
					LA9_: ;
					{
						forAllSlotsAux__system_5564(dest, (*n).sons[(i)- 0], op);
					}
					LA7_: ;
					res += ((NI) 1);
				} LA6: ;
			}
		}
	}
	break;
	case ((tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ) 3):
	{
		TNimNode* m;
		m = selectBranch__system_3673(dest, n);
		{
			if (!!((m == ((TNimNode*) NIM_NIL)))) goto LA22_;
			forAllSlotsAux__system_5564(dest, m, op);
		}
		LA22_: ;
	}
	break;
	case ((tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ) 0):
	{
	}
	break;
	}
}
static N_INLINE(NI, starpercent___system_736)(NI x, NI y) {
	NI result;
	nimfr_("*%", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	result = (NI)0;
	nimln_(425, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	nimln_(429, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/arithmetics.nim");
	result = ((NI) ((NU)((NU64)(((NU) (x))) * (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, forAllChildrenAux__system_5333)(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 &((NU8)1<<((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__system_5330((*((void**) (d))), op);
		}
		break;
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 17):
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 18):
		{
			forAllSlotsAux__system_5564(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) {
						NI T15_;
						NI T16_;
						if (!(res <= colontmp_)) goto LA14;
						i = res;
						T15_ = (NI)0;
						T15_ = starpercent___system_736(i, (*(*mt).base).size);
						T16_ = (NI)0;
						T16_ = pluspercent___system_696(d, T15_);
						forAllChildrenAux__system_5333(((void*) (T16_)), (*mt).base, op);
						res += ((NI) 1);
					} LA14: ;
				}
			}
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA7_: ;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op) {
	doOperation__system_5330(d, ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) (op)));
}
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, 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__r8GBEWywN07B3Rat3azS4Q)(void* p, NI op) {
	tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ* a;
	a = (tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ*)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);
}
N_LIB_PRIVATE N_NOINLINE(void*, newObj)(TNimType* typ, NI size) {
	void* result;
	nimfr_("newObj", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = (void*)0;
	nimln_(486, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = rawNewObj__system_5676(typ, size, (&gch__system_5246));
	nimln_(487, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	zeroMem__system_1724(result, ((NI) (size)));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NOINLINE(void*, newObjRC1)(TNimType* typ, NI size) {
	void* result;
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* res;
	void* T1_;
	nimfr_("newObjRC1", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = (void*)0;
	nimln_(505, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	collectCT__system_5323((&gch__system_5246));
	nimln_(508, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	T1_ = (void*)0;
	T1_ = rawAlloc__system_4588((&gch__system_5246.region), (NI)(size + ((NI) 16)));
	res = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	nimln_(512, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	(*res).typ = typ;
	nimln_(514, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	(*res).refcount = ((NI) 8);
	nimln_(522, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = cellToUsr__system_5296(res);
	nimln_(523, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	zeroMem__system_1724(result, ((NI) (size)));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	{
		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
		{
			tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T9_;
			if (!!(((NI)((*src).Sup.reserved & ((NI) (IL64(-9223372036854775807) - IL64(1)))) == ((NI) 0)))) goto LA7_;
			result = src;
			T9_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
			T9_ = usrToCell__system_5299(((void*) (result)));
			incRef__system_5337(T9_);
		}
		goto LA5_;
		LA7_: ;
		{
			NI s;
			void* T15_;
			s = (*src).Sup.len;
			{
				if (!(s < ((NI) 7))) goto LA13_;
				s = ((NI) 7);
			}
			LA13_: ;
			T15_ = (void*)0;
			T15_ = newObjRC1((&strDesc__system_2412), (NI)((NI)(((NI) 16) + s) + ((NI) 1)));
			result = ((NimStringDesc*) (T15_));
			(*result).Sup.reserved = s;
			(*result).Sup.len = (*src).Sup.len;
			copyMem__system_1727(((void*) ((*result).data)), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		}
		LA5_: ;
	}
	LA3_: ;
	return result;
}
static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
	nimfr_("nimGCunrefNoCycle", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	nimln_(276, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = usrToCell__system_5299(p);
	decRef__system_5344(T1_);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len) {
	void* result;
	NI size;
	NI T1_;
	NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_6;
	NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_7;
	nimfr_("newSeq", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = (void*)0;
	nimln_(493, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	T1_ = (NI)0;
	T1_ = align__system_1624(((NI) 16), (*(*typ).base).align);
	if (nimMulInt(len, (*(*typ).base).size, &TM__Q5wkpxktOdTGvlSRo9bzt9aw_6)) { raiseOverflow(); };
	if (nimAddInt(T1_, (NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_6), &TM__Q5wkpxktOdTGvlSRo9bzt9aw_7)) { raiseOverflow(); };
	size = (NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_7);
	nimln_(494, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = newObj(typ, size);
	nimln_(495, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	(*((TGenericSeq*) (result))).len = len;
	nimln_(496, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	(*((TGenericSeq*) (result))).reserved = len;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(tySequence__uB9b75OUPRENsBAu4AnoePA*, newSeq__system_2675)(NI len) {
	tySequence__uB9b75OUPRENsBAu4AnoePA* result;
	nimfr_("newSeq", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	result = NIM_NIL;
	nimln_(680, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	result = (tySequence__uB9b75OUPRENsBAu4AnoePA*) newSeq((&NTIseqLstacktraceentryT__uB9b75OUPRENsBAu4AnoePA_), len);
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NOINLINE(NIM_BOOL, isOnStack__system_5325)(void* p) {
	NIM_BOOL result;
	void* volatile stackTop;
	NI a;
	tyObject_GcStack__7fytPA5bBsob6See21YMRA* T1_;
	NI b;
	NI T2_;
	NI x;
	NIM_BOOL T3_;
	nimfr_("isOnStack", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	result = (NIM_BOOL)0;
	nimln_(314, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	stackTop = ((void*) ((&stackTop)));
	nimln_(315, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	T1_ = (tyObject_GcStack__7fytPA5bBsob6See21YMRA*)0;
	T1_ = getActiveStack__system_5435((&gch__system_5246));
	a = ((NI) (ptrdiff_t) ((*T1_).bottom));
	nimln_(316, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	b = ((NI) (ptrdiff_t) (stackTop));
	nimln_(318, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	T2_ = (NI)0;
	T2_ = a;
	a = b;
	b = T2_;
	nimln_(319, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	x = ((NI) (ptrdiff_t) (p));
	nimln_(320, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	T3_ = (NIM_BOOL)0;
	T3_ = lteqpercent___system_985(a, x);
	if (!(T3_)) goto LA4_;
	T3_ = lteqpercent___system_985(x, b);
	LA4_: ;
	result = T3_;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src) {
	nimfr_("unsureAsgnRef", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	nimln_(297, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = isOnStack__system_5325(((void*) (dest)));
		if (!!(T3_)) goto LA4_;
		nimln_(298, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
		{
			tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
			if (!!((src == NIM_NIL))) goto LA8_;
			T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
			T10_ = usrToCell__system_5299(src);
			incRef__system_5337(T10_);
		}
		LA8_: ;
		nimln_(302, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
		{
			NIM_BOOL T13_;
			tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T16_;
			T13_ = (NIM_BOOL)0;
			T13_ = lteqpercent___system_985(((NI) 4096), ((NI) (ptrdiff_t) ((*dest))));
			if (!T13_) goto LA14_;
			T16_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
			T16_ = usrToCell__system_5299((*dest));
			decRef__system_5344(T16_);
		}
		LA14_: ;
	}
	goto LA1_;
	LA4_: ;
	{
	}
	LA1_: ;
	nimln_(307, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	(*dest) = src;
	popFrame();
}
static N_INLINE(NI, resize__system_5924)(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_LIB_PRIVATE N_NIMCALL(void*, dataPointer__system_5914)(TGenericSeq* a, NI elemAlign) {
	void* result;
	NI T1_;
	NI T2_;
	result = (void*)0;
	T1_ = (NI)0;
	T1_ = align__system_1624(((NI) 16), elemAlign);
	T2_ = (NI)0;
	T2_ = pluspercent___system_696(((NI) (ptrdiff_t) (a)), T1_);
	result = ((void*) (T2_));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void*, dataPointer__system_5918)(TGenericSeq* a, NI elemAlign, NI elemSize, NI index) {
	void* result;
	NI T1_;
	NI T2_;
	NI T3_;
	NI T4_;
	result = (void*)0;
	T1_ = (NI)0;
	T1_ = align__system_1624(((NI) 16), elemAlign);
	T2_ = (NI)0;
	T2_ = pluspercent___system_696(((NI) (ptrdiff_t) (a)), T1_);
	T3_ = (NI)0;
	T3_ = starpercent___system_736(index, elemSize);
	T4_ = (NI)0;
	T4_ = pluspercent___system_696(T2_, T3_);
	result = ((void*) (T4_));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(TNimType*, extGetCellType)(void* c) {
	TNimType* result;
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
	nimfr_("extGetCellType", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = (TNimType*)0;
	nimln_(181, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = usrToCell__system_5299(c);
	result = (*T1_).typ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, setLengthSeqV2)(TGenericSeq* s, TNimType* typ, NI newLen) {
	TGenericSeq* result;
	result = (TGenericSeq*)0;
	{
		void* T5_;
		if (!(s == ((TGenericSeq*) NIM_NIL))) goto LA3_;
		T5_ = (void*)0;
		T5_ = newSeq(typ, newLen);
		result = ((TGenericSeq*) (T5_));
	}
	goto LA1_;
	LA3_: ;
	{
		NI elemSize;
		NI elemAlign;
		elemSize = (*(*typ).base).size;
		elemAlign = (*(*typ).base).align;
		{
			NI r;
			NI T11_;
			void* T12_;
			void* T13_;
			void* T14_;
			if (!((NI)((*s).reserved & ((NI) IL64(4611686018427387903))) < newLen)) goto LA9_;
			T11_ = (NI)0;
			T11_ = resize__system_5924((NI)((*s).reserved & ((NI) IL64(4611686018427387903))));
			r = ((T11_ >= newLen) ? T11_ : newLen);
			T12_ = (void*)0;
			T12_ = newSeq(typ, r);
			result = ((TGenericSeq*) (T12_));
			T13_ = (void*)0;
			T13_ = dataPointer__system_5914(result, elemAlign);
			T14_ = (void*)0;
			T14_ = dataPointer__system_5914(s, elemAlign);
			copyMem__system_1727(T13_, T14_, ((NI) ((NI)((*s).len * elemSize))));
			(*s).len = ((NI) 0);
		}
		goto LA7_;
		LA9_: ;
		{
			void* T27_;
			NI T28_;
			NI T29_;
			if (!(newLen < (*s).len)) goto LA16_;
			result = s;
			{
				if (!!((((*(*typ).base).flags &((NU8)1<<((NU)(((tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ) 0))&7U)))!=0))) goto LA20_;
				{
					NI i;
					NI colontmp_;
					NI res;
					i = (NI)0;
					colontmp_ = (NI)0;
					colontmp_ = (NI)((*result).len - ((NI) 1));
					res = newLen;
					{
						while (1) {
							void* T25_;
							TNimType* T26_;
							if (!(res <= colontmp_)) goto LA24;
							i = res;
							T25_ = (void*)0;
							T25_ = dataPointer__system_5918(result, elemAlign, elemSize, i);
							T26_ = (TNimType*)0;
							T26_ = extGetCellType(((void*) (result)));
							forAllChildrenAux__system_5333(T25_, (*T26_).base, ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 2));
							res += ((NI) 1);
						} LA24: ;
					}
				}
			}
			LA20_: ;
			T27_ = (void*)0;
			T27_ = dataPointer__system_5918(result, elemAlign, elemSize, newLen);
			T28_ = (NI)0;
			T28_ = minuspercent___system_716((*result).len, newLen);
			T29_ = (NI)0;
			T29_ = starpercent___system_736(T28_, elemSize);
			zeroMem__system_1724(T27_, ((NI) (T29_)));
		}
		goto LA7_;
		LA16_: ;
		{
			void* T31_;
			NI T32_;
			NI T33_;
			result = s;
			T31_ = (void*)0;
			T31_ = dataPointer__system_5918(result, elemAlign, elemSize, (*result).len);
			T32_ = (NI)0;
			T32_ = minuspercent___system_716(newLen, (*result).len);
			T33_ = (NI)0;
			T33_ = starpercent___system_736(T32_, elemSize);
			zeroMem__system_1724(T31_, ((NI) (T33_)));
		}
		LA7_: ;
		(*result).len = newLen;
	}
	LA1_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, auxWriteStackTrace__system_2653)(TFrame* f, tySequence__uB9b75OUPRENsBAu4AnoePA** s) {
	TFrame* it;
	NI i;
	NI last;
	it = f;
	i = ((NI) 0);
	{
		while (1) {
			if (!!((it == ((TFrame*) NIM_NIL)))) goto LA2;
			i += ((NI) 1);
			it = (*it).prev;
		} LA2: ;
	}
	last = (NI)(i - ((NI) 1));
	{
		NI T5_;
		T5_ = ((*s) ? (*s)->Sup.len : 0);
		if (!(T5_ == ((NI) 0))) goto LA6_;
		unsureAsgnRef((void**) (&(*s)), newSeq__system_2675(((NI) (i))));
	}
	goto LA3_;
	LA6_: ;
	{
		NI T9_;
		T9_ = ((*s) ? (*s)->Sup.len : 0);
		last = (NI)((NI)(T9_ + i) - ((NI) 1));
		unsureAsgnRef((void**) (&(*s)), (tySequence__uB9b75OUPRENsBAu4AnoePA*) setLengthSeqV2(&((*s))->Sup, (&NTIseqLstacktraceentryT__uB9b75OUPRENsBAu4AnoePA_), ((NI) ((NI)(last + ((NI) 1))))));
	}
	LA3_: ;
	it = f;
	{
		while (1) {
			tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA T12_;
			if (!!((it == ((TFrame*) NIM_NIL)))) goto LA11;
			nimZeroMem((void*)(&T12_), sizeof(tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA));
			T12_.procname = (*it).procname;
			T12_.line = (*it).line;
			T12_.filename = (*it).filename;
			(*s)->data[last] = T12_;
			it = (*it).prev;
			last -= ((NI) 1);
		} LA11: ;
	}
}
N_LIB_PRIVATE N_NIMCALL(void, rawWriteStackTrace__system_2852)(tySequence__uB9b75OUPRENsBAu4AnoePA** s) {
	auxWriteStackTrace__system_2653(framePtr__system_2564, s);
}
N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ) {
	TGenericSeq* result;
	result = (TGenericSeq*)0;
	{
		void* T5_;
		if (!(s == ((TGenericSeq*) 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_;
			void* T12_;
			void* T13_;
			if (!((NI)((*result).reserved & ((NI) IL64(4611686018427387903))) <= (*result).len)) goto LA9_;
			r = resize__system_5924((NI)((*result).reserved & ((NI) IL64(4611686018427387903))));
			T11_ = (void*)0;
			T11_ = newSeq(typ, r);
			result = ((TGenericSeq*) (T11_));
			(*result).len = (*s).len;
			T12_ = (void*)0;
			T12_ = dataPointer__system_5914(result, (*(*typ).base).align);
			T13_ = (void*)0;
			T13_ = dataPointer__system_5914(s, (*(*typ).base).align);
			copyMem__system_1727(T12_, T13_, ((NI) ((NI)((*s).len * (*(*typ).base).size))));
			(*s).len = ((NI) 0);
		}
		LA9_: ;
	}
	LA1_: ;
	return result;
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {
	nimfr_("asgnRef", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	nimln_(286, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell__system_5299(src);
		incRef__system_5337(T5_);
	}
	LA3_: ;
	nimln_(287, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell__system_5299((*dest));
		decRef__system_5344(T10_);
	}
	LA8_: ;
	nimln_(288, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	(*dest) = src;
	popFrame();
}
static N_INLINE(void, pushCurrentException)(Exception* e) {
	asgnRef((void**) (&(*e).up), currException__system_2566);
	asgnRef((void**) (&currException__system_2566), e);
}
N_LIB_PRIVATE 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__system_2412), (NI)((NI)(((NI) 16) + s) + ((NI) 1)));
	result = ((NimStringDesc*) (T5_));
	(*result).Sup.reserved = s;
	(*result).Sup.len = ((NI) 0);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	{
		if (!(s == ((NimStringDesc*) 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__system_5924((NI)((*result).Sup.reserved & ((NI) IL64(4611686018427387903))));
			result = rawNewStringNoInit(r);
			(*result).Sup.len = (*s).Sup.len;
			copyMem__system_1727(((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__system_2308)(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;
				unsureAsgnRef((void**) (&(*x)), addChar((*x), y[i]));
				i += ((NI) 1);
			} LA6: ;
		}
	}
	LA3_: ;
}
static N_NIMCALL(void, Marker_tyRef__dJLgQyYmAVYQWHiOSBBTyA)(void* p, NI op) {
	tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA* a;
	a = (tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA*)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__system_3144)(NimStringDesc* message) {
	tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA* T1_;
	NimStringDesc* T2_;
	nimfr_("sysFatal", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim");
	T1_ = NIM_NIL;
	T1_ = (tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA*) newObj((&NTIrefrangedefect__dJLgQyYmAVYQWHiOSBBTyA_), sizeof(tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA));
	(*T1_).Sup.Sup.Sup.m_type = (&NTIrangedefect__Rp9adJYTsbbIUzQ8fWxwgdA_);
	(*T1_).Sup.Sup.name = "RangeDefect";
	T2_ = NIM_NIL;
	T2_ = (*T1_).Sup.Sup.message; (*T1_).Sup.Sup.message = copyStringRC1(message);
	if (T2_) nimGCunrefNoCycle(T2_);
	nimln_(53, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim");
	raiseExceptionEx((Exception*)T1_, "RangeDefect", "sysFatal", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim", 53);
	popFrame();
}
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i, NI64 a, NI64 b) {
	NimStringDesc* T1_;
	NimStringDesc* T2_;
	NimStringDesc* T3_;
	NimStringDesc* T4_;
	T1_ = NIM_NIL;
	T2_ = NIM_NIL;
	T2_ = dollar___systemZdollars_6(i);
	T3_ = NIM_NIL;
	T3_ = dollar___systemZdollars_6(a);
	T4_ = NIM_NIL;
	T4_ = dollar___systemZdollars_6(b);
	T1_ = rawNewString((T2_ ? T2_->Sup.len : 0) + (T3_ ? T3_->Sup.len : 0) + (T4_ ? T4_->Sup.len : 0) + 31);
appendString(T1_, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_13));
appendString(T1_, T2_);
appendString(T1_, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_14));
appendString(T1_, T3_);
appendString(T1_, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_15));
appendString(T1_, T4_);
	sysFatal__system_3144(T1_);
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, mnewString)(NI len) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	result = rawNewString(len);
	(*result).Sup.len = len;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen) {
	NimStringDesc* result;
	NI n;
	result = (NimStringDesc*)0;
	n = ((newLen >= ((NI) 0)) ? newLen : ((NI) 0));
	{
		if (!(s == ((NimStringDesc*) 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__system_5924((NI)((*s).Sup.reserved & ((NI) IL64(4611686018427387903))));
		sp = ((T9_ >= newLen) ? T9_ : newLen);
		result = rawNewStringNoInit(sp);
		(*result).Sup.len = (*s).Sup.len;
		copyMem__system_1727(((void*) ((&(*result).data[((NI) 0)]))), ((void*) ((&(*s).data[((NI) 0)]))), ((NI) ((NI)((*s).Sup.len + ((NI) 1)))));
		zeroMem__system_1724(((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;
}
static N_NIMCALL(void, Marker_tyRef__RJnHOb9cQV3neNC9cDkRgMyw)(void* p, NI op) {
	tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ* a;
	a = (tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ*)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__system_3073)(NimStringDesc* message) {
	tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ* T1_;
	NimStringDesc* T2_;
	nimfr_("sysFatal", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim");
	T1_ = NIM_NIL;
	T1_ = (tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ*) newObj((&NTIrefindexdefect__RJnHOb9cQV3neNC9cDkRgMyw_), sizeof(tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ));
	(*T1_).Sup.Sup.Sup.m_type = (&NTIindexdefect__n6tGEPHKkh7E1AP9bj30WrQ_);
	(*T1_).Sup.Sup.name = "IndexDefect";
	T2_ = NIM_NIL;
	T2_ = (*T1_).Sup.Sup.message; (*T1_).Sup.Sup.message = copyStringRC1(message);
	if (T2_) nimGCunrefNoCycle(T2_);
	nimln_(53, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim");
	raiseExceptionEx((Exception*)T1_, "IndexDefect", "sysFatal", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim", 53);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	{
		if (!!((src == ((NimStringDesc*) 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__system_1727(((void*) ((*result).data)), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
		}
		LA5_: ;
	}
	LA3_: ;
	return result;
}
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i, NI n) {
	NimStringDesc* T1_;
	T1_ = NIM_NIL;
	{
		if (!(n < ((NI) 0))) goto LA4_;
		T1_ = copyString(((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_16));
	}
	goto LA2_;
	LA4_: ;
	{
		NimStringDesc* T7_;
		NimStringDesc* T8_;
		NimStringDesc* T9_;
		T7_ = NIM_NIL;
		T8_ = NIM_NIL;
		T8_ = dollar___systemZdollars_3(i);
		T9_ = NIM_NIL;
		T9_ = dollar___systemZdollars_3(n);
		T7_ = rawNewString((T8_ ? T8_->Sup.len : 0) + (T9_ ? T9_->Sup.len : 0) + 19);
appendString(T7_, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_17));
appendString(T7_, T8_);
appendString(T7_, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_18));
appendString(T7_, T9_);
		T1_ = T7_;
	}
	LA2_: ;
	sysFatal__system_3073(T1_);
}
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorNoArgs)(void) {
	sysFatal__system_3144(((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_19));
}
static N_INLINE(void, addInt__stdZprivateZdigitsutils_189)(NimStringDesc** result, NI x) {
	nimfr_("addInt", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/std/private/digitsutils.nim");
	nimln_(117, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/std/private/digitsutils.nim");
	addInt__stdZprivateZdigitsutils_167(result, ((NI64) (x)));
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___system_2724)(tySequence__uB9b75OUPRENsBAu4AnoePA* stackTraceEntries) {
	NimStringDesc* result;
	tySequence__uB9b75OUPRENsBAu4AnoePA* s;
	result = NIM_NIL;
	s = stackTraceEntries;
	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_10));
				}
				goto LA5_;
				LA7_: ;
				{
					if (!(s->data[i].line == ((NI) -100))) goto LA10_;
					result = resizeString(result, 3);
appendString(result, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_11));
				}
				goto LA5_;
				LA10_: ;
				{
					NI oldLenX60gensym69_;
					oldLenX60gensym69_ = (result ? result->Sup.len : 0);
					add__system_2308((&result), s->data[i].filename);
					{
						if (!(((NI) 0) < s->data[i].line)) goto LA15_;
						result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_12));
						addInt__stdZprivateZdigitsutils_189((&result), s->data[i].line);
						{
							if (!NIM_FALSE) goto LA19_;
							result = resizeString(result, 2);
appendString(result, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_20));
							addInt__stdZprivateZdigitsutils_189((&result), ((NI) 0));
						}
						LA19_: ;
						result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_21));
					}
					LA15_: ;
					{
						NI kX60gensym69_;
						NI colontmp__2;
						NI res_2;
						kX60gensym69_ = (NI)0;
						colontmp__2 = (NI)0;
						colontmp__2 = ((((NI) 1) >= (NI)(((NI) 25) - (NI)((result ? result->Sup.len : 0) - oldLenX60gensym69_))) ? ((NI) 1) : (NI)(((NI) 25) - (NI)((result ? result->Sup.len : 0) - oldLenX60gensym69_)));
						res_2 = ((NI) 1);
						{
							while (1) {
								if (!(res_2 <= colontmp__2)) goto LA23;
								kX60gensym69_ = res_2;
								result = addChar(result, 32);
								res_2 += ((NI) 1);
							} LA23: ;
						}
					}
					add__system_2308((&result), s->data[i].procname);
					result = resizeString(result, 1);
appendString(result, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_22));
				}
				LA5_: ;
				res += ((NI) 1);
			} LA4: ;
		}
	}
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___systemZassertions_23)(NimStringDesc** dest) {
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, toNimStr)(NCSTRING str, NI len) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	result = rawNewStringNoInit(len);
	(*result).Sup.len = len;
	copyMem__system_1727(((void*) ((*result).data)), ((void*) (str)), ((NI) ((NI)(len + ((NI) 1)))));
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	{
		if (!(((void*) (str)) == NIM_NIL)) goto LA3_;
		result = ((NimStringDesc*) NIM_NIL);
	}
	goto LA1_;
	LA3_: ;
	{
		result = toNimStr(str, (str ? nimCStrLen(str) : 0));
	}
	LA1_: ;
	return result;
}
static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
	(*s).prev = excHandler__system_2565;
	excHandler__system_2565 = s;
}
static N_INLINE(void, popSafePoint)(void) {
	excHandler__system_2565 = (*excHandler__system_2565).prev;
}
static N_INLINE(TFrame*, getFrame)(void) {
	TFrame* result;
	result = (TFrame*)0;
	result = framePtr__system_2564;
	return result;
}
static N_INLINE(void, setFrame)(TFrame* s) {
	framePtr__system_2564 = s;
}
static N_INLINE(void, popCurrentException)(void) {
	asgnRef((void**) (&currException__system_2566), (*currException__system_2566).up);
}
static N_NIMCALL(void, Marker_tyRef__uG62cfJZ15c2siK3CKLmnQ)(void* p, NI op) {
	tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g* a;
	a = (tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g*)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__system_2934)(NimStringDesc* message) {
	tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g* T1_;
	NimStringDesc* T2_;
	nimfr_("sysFatal", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim");
	T1_ = NIM_NIL;
	T1_ = (tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g*) newObj((&NTIrefreraisedefect__uG62cfJZ15c2siK3CKLmnQ_), sizeof(tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g));
	(*T1_).Sup.Sup.Sup.m_type = (&NTIreraisedefect__E0L0wGYS1gPD81VLstNO2g_);
	(*T1_).Sup.Sup.name = "ReraiseDefect";
	T2_ = NIM_NIL;
	T2_ = (*T1_).Sup.Sup.message; (*T1_).Sup.Sup.message = copyStringRC1(message);
	if (T2_) nimGCunrefNoCycle(T2_);
	nimln_(53, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim");
	raiseExceptionEx((Exception*)T1_, "ReraiseDefect", "sysFatal", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim", 53);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void) {
	{
		if (!(currException__system_2566 == ((Exception*) NIM_NIL))) goto LA3_;
		sysFatal__system_2934(((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_27));
	}
	goto LA1_;
	LA3_: ;
	{
		raiseExceptionAux__system_2891(currException__system_2566);
	}
	LA1_: ;
}
static N_INLINE(void, rawWriteString)(FILE* f, NCSTRING s, NI length) {
	int T1_;
	int T2_;
	T1_ = (int)0;
	T1_ = fwrite(((void*) (s)), ((size_t) 1), ((size_t) (length)), f);
	(void)(T1_);
	T2_ = (int)0;
	T2_ = fflush(f);
	(void)(T2_);
}
N_LIB_PRIVATE N_NIMCALL(void, writeToStdErr__system_2531)(NCSTRING msg, NI length) {
	rawWriteString(stderr, msg, length);
}
N_LIB_PRIVATE N_NIMCALL(void, showErrorMessage__system_2536)(NCSTRING data, NI length) {
	NIM_BOOL volatile toWrite;
	TFrame* _nimCurFrame;
	_nimCurFrame = getFrame();
	toWrite = NIM_TRUE;
	{
		TSafePoint TM__Q5wkpxktOdTGvlSRo9bzt9aw_26;
		NimStringDesc* T5_;
		if (!!((errorMessageWriter__system_2528 == NIM_NIL))) goto LA3_;
		pushSafePoint(&TM__Q5wkpxktOdTGvlSRo9bzt9aw_26);
		TM__Q5wkpxktOdTGvlSRo9bzt9aw_26.status = setjmp(TM__Q5wkpxktOdTGvlSRo9bzt9aw_26.context);
		if (TM__Q5wkpxktOdTGvlSRo9bzt9aw_26.status == 0) {
		T5_ = NIM_NIL;
		T5_ = cstrToNimstr(data);
		errorMessageWriter__system_2528(T5_);
		toWrite = NIM_FALSE;
		popSafePoint();
		}
		else {
			popSafePoint();
			setFrame(_nimCurFrame);
			{
				TM__Q5wkpxktOdTGvlSRo9bzt9aw_26.status = 0;
				popCurrentException();
			}
		}
		if (TM__Q5wkpxktOdTGvlSRo9bzt9aw_26.status != 0) reraiseException();
	}
	LA3_: ;
	{
		if (!toWrite) goto LA10_;
		writeToStdErr__system_2531(data, length);
	}
	LA10_: ;
}
static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s) {
	NCSTRING result;
	result = (NCSTRING)0;
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = (s == ((NimStringDesc*) 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, showErrorMessage2__system_2544)(NimStringDesc* data) {
	showErrorMessage__system_2536(nimToCStringConv(data), (data ? data->Sup.len : 0));
}
N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledErrorAux__system_2863)(Exception* e) {
	NimStringDesc* buf;
	NimStringDesc* T7_;
	buf = rawNewString(((NI) 2000));
	{
		NI T3_;
		T3_ = ((*e).trace ? (*e).trace->Sup.len : 0);
		if (!(T3_ == ((NI) 0))) goto LA4_;
		rawWriteStackTrace__system_2846((&buf));
	}
	goto LA1_;
	LA4_: ;
	{
		NimStringDesc* trace;
		trace = dollar___system_2724((*e).trace);
		buf = resizeString(buf, (trace ? trace->Sup.len : 0) + 0);
appendString(buf, trace);
		eqdestroy___systemZassertions_23((&trace));
	}
	LA1_: ;
	buf = resizeString(buf, 28);
appendString(buf, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_23));
	buf = resizeString(buf, ((*e).message ? (*e).message->Sup.len : 0) + 0);
appendString(buf, (*e).message);
	buf = resizeString(buf, 2);
appendString(buf, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_24));
	T7_ = NIM_NIL;
	T7_ = cstrToNimstr((*e).name);
	buf = resizeString(buf, (T7_ ? T7_->Sup.len : 0) + 0);
appendString(buf, T7_);
	buf = resizeString(buf, 2);
appendString(buf, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_25));
	{
		if (!!((onUnhandledException__system_2862 == NIM_NIL))) goto LA10_;
		onUnhandledException__system_2862(buf);
	}
	goto LA8_;
	LA10_: ;
	{
		showErrorMessage2__system_2544(buf);
	}
	LA8_: ;
	eqdestroy___systemZassertions_23((&buf));
}
N_LIB_PRIVATE N_NIMCALL(void, reportUnhandledError__system_2880)(Exception* e) {
	{
		if (!!((unhandledExceptionHook__system_2299 == NIM_NIL))) goto LA3_;
		unhandledExceptionHook__system_2299(e);
	}
	LA3_: ;
	reportUnhandledErrorAux__system_2863(e);
}
N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionAux__system_2891)(Exception* e) {
{	{
		if (!!((localRaiseHook__system_2294 == NIM_NIL))) goto LA3_;
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = localRaiseHook__system_2294(e);
			if (!!(T7_)) goto LA8_;
			goto BeforeRet_;
		}
		LA8_: ;
	}
	LA3_: ;
	{
		if (!!((globalRaiseHook__system_2291 == NIM_NIL))) goto LA12_;
		{
			NIM_BOOL T16_;
			T16_ = (NIM_BOOL)0;
			T16_ = globalRaiseHook__system_2291(e);
			if (!!(T16_)) goto LA17_;
			goto BeforeRet_;
		}
		LA17_: ;
	}
	LA12_: ;
	{
		if (!!((excHandler__system_2565 == ((TSafePoint*) NIM_NIL)))) goto LA21_;
		pushCurrentException(e);
		longjmp((*excHandler__system_2565).context, ((int) 1));
	}
	goto LA19_;
	LA21_: ;
	{
		reportUnhandledError__system_2880(e);
		exit(((NI) 1));
	}
	LA19_: ;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line) {
	{
		if (!((*e).name == 0)) goto LA3_;
		(*e).name = ename;
	}
	LA3_: ;
	{
		NI T7_;
		T7_ = ((*e).trace ? (*e).trace->Sup.len : 0);
		if (!(T7_ == ((NI) 0))) goto LA8_;
		rawWriteStackTrace__system_2852((&(*e).trace));
	}
	goto LA5_;
	LA8_: ;
	{
		NI T13_;
		NI T14_;
		if (!!((framePtr__system_2564 == ((TFrame*) NIM_NIL)))) goto LA11_;
		asgnRef((void**) (&(*e).trace), (tySequence__uB9b75OUPRENsBAu4AnoePA*) incrSeqV3((TGenericSeq*)((*e).trace), (&NTIseqLstacktraceentryT__uB9b75OUPRENsBAu4AnoePA_)));
		T13_ = (*e).trace->Sup.len++;
		(*e).trace->data[T13_] = TM__Q5wkpxktOdTGvlSRo9bzt9aw_8;
		auxWriteStackTrace__system_2653(framePtr__system_2564, (&(*e).trace));
		asgnRef((void**) (&(*e).trace), (tySequence__uB9b75OUPRENsBAu4AnoePA*) incrSeqV3((TGenericSeq*)((*e).trace), (&NTIseqLstacktraceentryT__uB9b75OUPRENsBAu4AnoePA_)));
		T14_ = (*e).trace->Sup.len++;
		(*e).trace->data[T14_] = TM__Q5wkpxktOdTGvlSRo9bzt9aw_9;
	}
	goto LA5_;
	LA11_: ;
	LA5_: ;
	raiseExceptionAux__system_2891(e);
}
static N_INLINE(void, sysFatal__system_3395)(NimStringDesc* message) {
	tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ* T1_;
	NimStringDesc* T2_;
	nimfr_("sysFatal", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim");
	T1_ = NIM_NIL;
	T1_ = (tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ*) newObj((&NTIrefoverflowdefect__r8GBEWywN07B3Rat3azS4Q_), sizeof(tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ));
	(*T1_).Sup.Sup.Sup.Sup.m_type = (&NTIoverflowdefect__9cxMi1BPLc3UKt9br86bGfGQ_);
	(*T1_).Sup.Sup.Sup.name = "OverflowDefect";
	T2_ = NIM_NIL;
	T2_ = (*T1_).Sup.Sup.Sup.message; (*T1_).Sup.Sup.Sup.message = copyStringRC1(message);
	if (T2_) nimGCunrefNoCycle(T2_);
	nimln_(53, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim");
	raiseExceptionEx((Exception*)T1_, "OverflowDefect", "sysFatal", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/fatal.nim", 53);
	popFrame();
}
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void) {
	sysFatal__system_3395(((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_28));
}
N_LIB_PRIVATE N_NIMCALL(NI, align__system_1624)(NI address, NI alignment) {
	NI result;
	nimfr_("align", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	result = (NI)0;
	nimln_(1186, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	{
		if (!(alignment == ((NI) 0))) goto LA3_;
		nimln_(1188, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
		result = address;
	}
	goto LA1_;
	LA3_: ;
	{
		NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_3;
		NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_29;
		NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_30;
		nimln_(1190, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
		if (nimSubInt(alignment, ((NI) 1), &TM__Q5wkpxktOdTGvlSRo9bzt9aw_3)) { raiseOverflow(); };
		if (nimAddInt(address, (NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_3), &TM__Q5wkpxktOdTGvlSRo9bzt9aw_29)) { raiseOverflow(); };
		if (nimSubInt(alignment, ((NI) 1), &TM__Q5wkpxktOdTGvlSRo9bzt9aw_30)) { raiseOverflow(); };
		result = (NI)((NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_29) & (NI)((NU64) ~((NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_30))));
	}
	LA1_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, forAllChildren__system_5327)(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__system_5296(cell);
		marker(T5_, ((NI) (op)));
	}
	goto LA1_;
	LA3_: ;
	{
		switch ((*(*cell).typ).kind) {
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 22):
		{
			void* T8_;
			T8_ = (void*)0;
			T8_ = cellToUsr__system_5296(cell);
			forAllChildrenAux__system_5333(T8_, (*(*cell).typ).base, op);
		}
		break;
		case ((tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A) 24):
		{
			NI d;
			void* T10_;
			TGenericSeq* s;
			T10_ = (void*)0;
			T10_ = cellToUsr__system_5296(cell);
			d = ((NI) (ptrdiff_t) (T10_));
			s = ((TGenericSeq*) (d));
			{
				if (!!((s == ((TGenericSeq*) 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) {
							NI T18_;
							NI T19_;
							NI T20_;
							NI T21_;
							if (!(res <= colontmp_)) goto LA17;
							i = res;
							T18_ = (NI)0;
							T18_ = align__system_1624(((NI) 16), (*(*(*cell).typ).base).align);
							T19_ = (NI)0;
							T19_ = pluspercent___system_696(d, T18_);
							T20_ = (NI)0;
							T20_ = starpercent___system_736(i, (*(*(*cell).typ).base).size);
							T21_ = (NI)0;
							T21_ = pluspercent___system_696(T19_, T20_);
							forAllChildrenAux__system_5333(((void*) (T21_)), (*(*cell).typ).base, op);
							res += ((NI) 1);
						} LA17: ;
					}
				}
			}
			LA13_: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, collectZCT__system_5787)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {
	NIM_BOOL result;
	NI* L;
	result = (NIM_BOOL)0;
	L = (&(*gch).zct.len);
	{
		while (1) {
			tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c;
			if (!(((NI) 0) < (*L))) goto LA2;
			c = (*gch).zct.d[((NI) 0)];
			(*c).refcount = (NI)((*c).refcount & ((NI) -5));
			(*gch).zct.d[((NI) 0)] = (*gch).zct.d[(NI)((*L) - ((NI) 1))];
			(*L) -= ((NI) 1);
			{
				NIM_BOOL T5_;
				T5_ = (NIM_BOOL)0;
				T5_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
				if (!T5_) goto LA6_;
				prepareDealloc__system_5459(c);
				forAllChildren__system_5327(c, ((tyEnum_WalkOp__Wfy7gT5VQ8B3aJBxqU8D9cQ) 2));
				rawDealloc__system_4717((&(*gch).region), ((void*) (c)));
			}
			LA6_: ;
		} LA2: ;
	}
	result = NIM_TRUE;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, deinit__system_4940)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s) {
	tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* it;
	nimfr_("deinit", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	nimln_(98, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	it = (*s).head;
	{
		nimln_(99, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		while (1) {
			tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* n;
			if (!!((it == ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) NIM_NIL)))) goto LA2;
			nimln_(100, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			n = (*it).next;
			nimln_(101, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			dealloc(((void*) (it)));
			nimln_(102, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
			it = n;
		} LA2: ;
	}
	nimln_(103, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*s).head = ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) NIM_NIL);
	nimln_(104, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	dealloc(((void*) ((*s).data)));
	nimln_(105, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*s).data = ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg**) NIM_NIL);
	nimln_(106, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*s).counter = ((NI) 0);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, init__system_4920)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s) {
	void* T1_;
	nimfr_("init", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	nimln_(92, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	T1_ = (void*)0;
	T1_ = alloc0Impl__system_1745(((NI) 8192));
	(*s).data = ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg**) (T1_));
	nimln_(93, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*s).max = ((NI) 1023);
	nimln_(94, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*s).counter = ((NI) 0);
	nimln_(95, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	(*s).head = ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) NIM_NIL);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, cellsetReset__system_5562)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s) {
	nimfr_("cellsetReset", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	nimln_(333, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	deinit__system_4940(s);
	nimln_(334, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	init__system_4920(s);
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, markGlobals__system_5756)(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;
				markS__system_5748(gch, d[i_3]);
				res_3 += ((NI) 1);
			} LA13: ;
		}
	}
}
static N_INLINE(NIM_BOOL, isCell__system_4437)(void* p) {
	NIM_BOOL result;
	nimfr_("isCell", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = (NIM_BOOL)0;
	nimln_(407, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/alloc.nim");
	result = ltpercent___system_1005(((NI) 1), (*((tyObject_FreeCell__u6M5LHprqzkn9axr04yg9bGQ*) (p))).zeroField);
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__system_5013)(tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell) {
	NIM_BOOL result;
	NU u;
	tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* t;
	nimfr_("contains", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	result = (NIM_BOOL)0;
	nimln_(163, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	u = ((NU) (ptrdiff_t) (cell));
	nimln_(164, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	t = cellSetGet__system_4952(s, (NU)((NU64)(u) >> (NU64)(((NI) 12))));
	nimln_(165, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
	{
		if (!!((t == ((tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg*) NIM_NIL)))) goto LA3_;
		nimln_(166, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		u = (NU)((NU64)((NU)((NU64)(u) % (NU64)(((NU) 4096)))) / (NU64)(((NU) 16)));
		nimln_(167, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		result = !(((NI)((*t).bits[((NU)((NU64)(u) >> (NU64)(((NI) 6))))- 0] & (NI)((NU64)(((NI) 1)) << (NU64)((NU)(u & ((NU) 63))))) == ((NI) 0)));
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(169, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellsets.nim");
		result = NIM_FALSE;
	}
	LA1_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, freeCyclicCell__system_5740)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	prepareDealloc__system_5459(c);
	rawDealloc__system_4717((&(*gch).region), ((void*) (c)));
}
N_LIB_PRIVATE N_NIMCALL(void, sweep__system_5744)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {
	{
		void* x;
		x = (void*)0;
		(*gch).region.locked = NIM_TRUE;
		{
			NI s;
			s = (NI)0;
			{
				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 = (*gch).region.chunkStarts.data[(h)- 0];
						{
							while (1) {
								NI i;
								if (!!((r == ((tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw*) 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 == ((NU) 0)))) goto LA11;
												{
													NI T16_;
													if (!!(((NU)(w & ((NU) 1)) == ((NU) 0)))) goto LA14_;
													T16_ = (NI)0;
													T16_ = pluspercent___system_696((NI)((NU64)(i) << (NU64)(((NI) 6))), j);
													s = (NI)((NI)((NU64)((*r).key) << (NU64)(((NI) 9))) | T16_);
													{
														NIM_BOOL T19_;
														tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w* c;
														T19_ = (NIM_BOOL)0;
														T19_ = contains__system_4253((&(*gch).region.chunkStarts), s);
														if (!T19_) goto LA20_;
														c = ((tyObject_BaseChunk__Sdq7WpT6qAH858F5ZEdG3w*) ((NI)((NU64)(s) << (NU64)(((NI) 12)))));
														{
															NIM_BOOL T24_;
															T24_ = (NIM_BOOL)0;
															T24_ = chunkUnused__system_4380(c);
															if (!!(T24_)) goto LA25_;
															{
																NIM_BOOL T29_;
																tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* c_2;
																NI size;
																NI a;
																NI limit;
																T29_ = (NIM_BOOL)0;
																T29_ = isSmallChunk__system_4374(c);
																if (!T29_) goto LA30_;
																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) {
																		NIM_BOOL T34_;
																		T34_ = (NIM_BOOL)0;
																		T34_ = ltpercent___system_1005(a, limit);
																		if (!T34_) goto LA33;
																		x = ((void*) (a));
																		{
																			NIM_BOOL T37_;
																			tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c_3;
																			T37_ = (NIM_BOOL)0;
																			T37_ = isCell__system_4437(x);
																			if (!T37_) goto LA38_;
																			c_3 = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (x));
																			{
																				NIM_BOOL T42_;
																				T42_ = (NIM_BOOL)0;
																				T42_ = contains__system_5013((&(*gch).marked), c_3);
																				if (!!(T42_)) goto LA43_;
																				freeCyclicCell__system_5740(gch, c_3);
																			}
																			LA43_: ;
																		}
																		LA38_: ;
																		a = pluspercent___system_696(a, size);
																	} LA33: ;
																}
															}
															goto LA27_;
															LA30_: ;
															{
																tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* c_4;
																c_4 = ((tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg*) (c));
																x = ((void*) ((*c_4).data));
																{
																	NIM_BOOL T48_;
																	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c_5;
																	T48_ = (NIM_BOOL)0;
																	T48_ = isCell__system_4437(x);
																	if (!T48_) goto LA49_;
																	c_5 = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (x));
																	{
																		NIM_BOOL T53_;
																		T53_ = (NIM_BOOL)0;
																		T53_ = contains__system_5013((&(*gch).marked), c_5);
																		if (!!(T53_)) goto LA54_;
																		freeCyclicCell__system_5740(gch, c_5);
																	}
																	LA54_: ;
																}
																LA49_: ;
															}
															LA27_: ;
														}
														LA25_: ;
													}
													LA20_: ;
												}
												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(void, collectCycles__system_5789)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
	{
		while (1) {
			NIM_BOOL T3_;
			if (!(((NI) 0) < (*gch).zct.len)) goto LA2;
			T3_ = (NIM_BOOL)0;
			T3_ = collectZCT__system_5787(gch);
			(void)(T3_);
		} LA2: ;
	}
	cellsetReset__system_5562((&(*gch).marked));
	d = (*gch).decStack.d;
	{
		NI i;
		NI colontmp_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = (NI)((*gch).decStack.len - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA6;
				i = res;
				markS__system_5748(gch, d[i]);
				res += ((NI) 1);
			} LA6: ;
		}
	}
	markGlobals__system_5756(gch);
	sweep__system_5744(gch);
}
N_LIB_PRIVATE N_NIMCALL(NI, getOccupiedMem__system_1936)(void) {
	NI result;
	result = (NI)0;
	result = gch__system_5246.region.occ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, unmarkStackAndRegisters__system_5861)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
	d = (*gch).decStack.d;
	{
		NI i;
		NI colontmp_;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = (NI)((*gch).decStack.len - ((NI) 1));
		res = ((NI) 0);
		{
			while (1) {
				if (!(res <= colontmp_)) goto LA3;
				i = res;
				decRef__system_5344(d[i]);
				res += ((NI) 1);
			} LA3: ;
		}
	}
	(*gch).decStack.len = ((NI) 0);
}
N_LIB_PRIVATE N_NIMCALL(void, collectCTBody__system_5869)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {
	NI T1_;
	T1_ = (NI)0;
	T1_ = stackSize__system_5417();
	(*gch).stat.maxStackSize = (((*gch).stat.maxStackSize >= T1_) ? (*gch).stat.maxStackSize : T1_);
	prepareForInteriorPointerChecking__system_4769((&(*gch).region));
	markStackAndRegisters__system_5806(gch);
	(*gch).stat.maxStackCells = (((*gch).stat.maxStackCells >= (*gch).decStack.len) ? (*gch).stat.maxStackCells : (*gch).decStack.len);
	(*gch).stat.stackScans += ((NI) 1);
	{
		NIM_BOOL T4_;
		T4_ = (NIM_BOOL)0;
		T4_ = collectZCT__system_5787(gch);
		if (!T4_) goto LA5_;
		{
			NIM_BOOL T9_;
			NI T10_;
			NI T14_;
			T9_ = (NIM_BOOL)0;
			T10_ = (NI)0;
			T10_ = getOccupiedMem__system_4848((&(*gch).region));
			T9_ = ((*gch).cycleThreshold <= T10_);
			if (T9_) goto LA11_;
			T9_ = NIM_FALSE;
			LA11_: ;
			if (!T9_) goto LA12_;
			collectCycles__system_5789(gch);
			(*gch).stat.cycleCollections += ((NI) 1);
			T14_ = (NI)0;
			T14_ = getOccupiedMem__system_1936();
			(*gch).cycleThreshold = ((((NI) 4194304) >= (NI)(T14_ * ((NI) 2))) ? ((NI) 4194304) : (NI)(T14_ * ((NI) 2)));
			(*gch).stat.maxThreshold = (((*gch).stat.maxThreshold >= (*gch).cycleThreshold) ? (*gch).stat.maxThreshold : (*gch).cycleThreshold);
		}
		LA12_: ;
	}
	LA5_: ;
	unmarkStackAndRegisters__system_5861(gch);
}
N_LIB_PRIVATE N_NIMCALL(void, collectCT__system_5323)(tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {
	{
		NIM_BOOL T3_;
		NIM_BOOL T4_;
		NIM_BOOL T5_;
		NIM_BOOL T7_;
		NI T9_;
		T3_ = (NIM_BOOL)0;
		T4_ = (NIM_BOOL)0;
		T5_ = (NIM_BOOL)0;
		T5_ = ((*gch).zctThreshold <= (*gch).zct.len);
		if (T5_) goto LA6_;
		T7_ = (NIM_BOOL)0;
		T7_ = NIM_TRUE;
		if (!(T7_)) goto LA8_;
		T9_ = (NI)0;
		T9_ = getOccupiedMem__system_4848((&(*gch).region));
		T7_ = ((*gch).cycleThreshold <= T9_);
		LA8_: ;
		T5_ = T7_;
		LA6_: ;
		T4_ = T5_;
		if (T4_) goto LA10_;
		T4_ = NIM_FALSE;
		LA10_: ;
		T3_ = T4_;
		if (!(T3_)) goto LA11_;
		T3_ = ((*gch).recGcLock == ((NI) 0));
		LA11_: ;
		if (!T3_) goto LA12_;
		collectCTBody__system_5869(gch);
		(*gch).zctThreshold = ((((NI) 500) >= (NI)((*gch).zct.len * ((NI) 2))) ? ((NI) 500) : (NI)((*gch).zct.len * ((NI) 2)));
	}
	LA12_: ;
}
static N_INLINE(void, addNewObjToZCT__system_5661)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* res, tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {
	NI L;
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
{	L = (*gch).zct.len;
	d = (*gch).zct.d;
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c;
		if (!(((NI) 8) < L)) goto LA3_;
		c = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		c = d[(NI)(L - ((NI) 1))];
		{
			NIM_BOOL T7_;
			T7_ = (NIM_BOOL)0;
			T7_ = lteqpercent___system_985(((NI) 8), (*c).refcount);
			if (!T7_) goto LA8_;
			(*c).refcount = (NI)((*c).refcount & ((NI) -5));
			d[(NI)(L - ((NI) 1))] = res;
			goto BeforeRet_;
		}
		LA8_: ;
		c = d[(NI)(L - ((NI) 2))];
		{
			NIM_BOOL T12_;
			T12_ = (NIM_BOOL)0;
			T12_ = lteqpercent___system_985(((NI) 8), (*c).refcount);
			if (!T12_) goto LA13_;
			(*c).refcount = (NI)((*c).refcount & ((NI) -5));
			d[(NI)(L - ((NI) 2))] = res;
			goto BeforeRet_;
		}
		LA13_: ;
		c = d[(NI)(L - ((NI) 3))];
		{
			NIM_BOOL T17_;
			T17_ = (NIM_BOOL)0;
			T17_ = lteqpercent___system_985(((NI) 8), (*c).refcount);
			if (!T17_) goto LA18_;
			(*c).refcount = (NI)((*c).refcount & ((NI) -5));
			d[(NI)(L - ((NI) 3))] = res;
			goto BeforeRet_;
		}
		LA18_: ;
		c = d[(NI)(L - ((NI) 4))];
		{
			NIM_BOOL T22_;
			T22_ = (NIM_BOOL)0;
			T22_ = lteqpercent___system_985(((NI) 8), (*c).refcount);
			if (!T22_) goto LA23_;
			(*c).refcount = (NI)((*c).refcount & ((NI) -5));
			d[(NI)(L - ((NI) 4))] = res;
			goto BeforeRet_;
		}
		LA23_: ;
		c = d[(NI)(L - ((NI) 5))];
		{
			NIM_BOOL T27_;
			T27_ = (NIM_BOOL)0;
			T27_ = lteqpercent___system_985(((NI) 8), (*c).refcount);
			if (!T27_) goto LA28_;
			(*c).refcount = (NI)((*c).refcount & ((NI) -5));
			d[(NI)(L - ((NI) 5))] = res;
			goto BeforeRet_;
		}
		LA28_: ;
		c = d[(NI)(L - ((NI) 6))];
		{
			NIM_BOOL T32_;
			T32_ = (NIM_BOOL)0;
			T32_ = lteqpercent___system_985(((NI) 8), (*c).refcount);
			if (!T32_) goto LA33_;
			(*c).refcount = (NI)((*c).refcount & ((NI) -5));
			d[(NI)(L - ((NI) 6))] = res;
			goto BeforeRet_;
		}
		LA33_: ;
		c = d[(NI)(L - ((NI) 7))];
		{
			NIM_BOOL T37_;
			T37_ = (NIM_BOOL)0;
			T37_ = lteqpercent___system_985(((NI) 8), (*c).refcount);
			if (!T37_) goto LA38_;
			(*c).refcount = (NI)((*c).refcount & ((NI) -5));
			d[(NI)(L - ((NI) 7))] = res;
			goto BeforeRet_;
		}
		LA38_: ;
		c = d[(NI)(L - ((NI) 8))];
		{
			NIM_BOOL T42_;
			T42_ = (NIM_BOOL)0;
			T42_ = lteqpercent___system_985(((NI) 8), (*c).refcount);
			if (!T42_) goto LA43_;
			(*c).refcount = (NI)((*c).refcount & ((NI) -5));
			d[(NI)(L - ((NI) 8))] = res;
			goto BeforeRet_;
		}
		LA43_: ;
		add__system_4888((&(*gch).zct), res);
	}
	goto LA1_;
	LA3_: ;
	{
		d[L] = res;
		(*gch).zct.len += ((NI) 1);
	}
	LA1_: ;
	}BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void*, rawNewObj__system_5676)(TNimType* typ, NI size, tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ* gch) {
	void* result;
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* res;
	void* T1_;
	result = (void*)0;
	collectCT__system_5323(gch);
	T1_ = (void*)0;
	T1_ = rawAlloc__system_4588((&(*gch).region), (NI)(size + ((NI) 16)));
	res = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	(*res).typ = typ;
	(*res).refcount = ((NI) 4);
	addNewObjToZCT__system_5661(res, gch);
	result = cellToUsr__system_5296(res);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void*, newObjNoInit)(TNimType* typ, NI size) {
	void* result;
	nimfr_("newObjNoInit", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = (void*)0;
	nimln_(482, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = rawNewObj__system_5676(typ, size, (&gch__system_5246));
	popFrame();
	return result;
}
N_LIB_PRIVATE 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__system_2412), (NI)((NI)(((NI) 16) + s) + ((NI) 1)));
	result = ((NimStringDesc*) (T5_));
	(*result).Sup.reserved = s;
	(*result).Sup.len = ((NI) 0);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen) {
	NimStringDesc* result;
	result = (NimStringDesc*)0;
	{
		if (!(dest == ((NimStringDesc*) 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__system_5924((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__system_1727(((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_LIB_PRIVATE N_NIMCALL(void, auxWriteStackTrace__system_2748)(TFrame* f, NimStringDesc** s) {
	TFrame* it;
	NI i;
	NI total;
	TFrame* b;
	NI skipped;
	it = f;
	i = ((NI) 0);
	total = ((NI) 0);
	{
		while (1) {
			NIM_BOOL T3_;
			T3_ = (NIM_BOOL)0;
			T3_ = !((it == ((TFrame*) NIM_NIL)));
			if (!(T3_)) goto LA4_;
			T3_ = (i <= ((NI) 95));
			LA4_: ;
			if (!T3_) goto LA2;
			tempFrames__system_2650[(i)- 0] = it;
			i += ((NI) 1);
			total += ((NI) 1);
			it = (*it).prev;
		} LA2: ;
	}
	b = it;
	{
		while (1) {
			if (!!((it == ((TFrame*) NIM_NIL)))) goto LA6;
			total += ((NI) 1);
			it = (*it).prev;
		} LA6: ;
	}
	skipped = ((NI) 0);
	{
		if (!(((NI) 128) < total)) goto LA9_;
		skipped = (NI)((NI)((NI)(total - i) - ((NI) 32)) + ((NI) 1));
		{
			NI j;
			NI res;
			j = (NI)0;
			res = ((NI) 1);
			{
				while (1) {
					if (!(res <= skipped)) goto LA13;
					j = res;
					{
						if (!!((b == ((TFrame*) NIM_NIL)))) goto LA16_;
						b = (*b).prev;
					}
					LA16_: ;
					res += ((NI) 1);
				} LA13: ;
			}
		}
		tempFrames__system_2650[(i)- 0] = ((TFrame*) NIM_NIL);
		i += ((NI) 1);
	}
	LA9_: ;
	{
		while (1) {
			NIM_BOOL T20_;
			T20_ = (NIM_BOOL)0;
			T20_ = !((b == ((TFrame*) NIM_NIL)));
			if (!(T20_)) goto LA21_;
			T20_ = (i <= ((NI) 127));
			LA21_: ;
			if (!T20_) goto LA19;
			tempFrames__system_2650[(i)- 0] = b;
			i += ((NI) 1);
			b = (*b).prev;
		} LA19: ;
	}
	{
		NI j_2;
		NI colontmp_;
		NI res_2;
		j_2 = (NI)0;
		colontmp_ = (NI)0;
		colontmp_ = (NI)(i - ((NI) 1));
		res_2 = colontmp_;
		{
			while (1) {
				if (!(((NI) 0) <= res_2)) goto LA24;
				j_2 = res_2;
				{
					NimStringDesc* T29_;
					if (!(tempFrames__system_2650[(j_2)- 0] == ((TFrame*) NIM_NIL))) goto LA27_;
					unsureAsgnRef((void**) (&(*s)), resizeString((*s), 1));
appendString((*s), ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_12));
					T29_ = NIM_NIL;
					T29_ = dollar___systemZdollars_3(skipped);
					unsureAsgnRef((void**) (&(*s)), resizeString((*s), (T29_ ? T29_->Sup.len : 0) + 0));
appendString((*s), T29_);
					unsureAsgnRef((void**) (&(*s)), resizeString((*s), 20));
appendString((*s), ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_32));
				}
				goto LA25_;
				LA27_: ;
				{
					NI oldLenX60gensym78_;
					oldLenX60gensym78_ = ((*s) ? (*s)->Sup.len : 0);
					add__system_2308(s, (*tempFrames__system_2650[(j_2)- 0]).filename);
					{
						if (!(((NI) 0) < (*tempFrames__system_2650[(j_2)- 0]).line)) goto LA33_;
						unsureAsgnRef((void**) (&(*s)), resizeString((*s), 1));
appendString((*s), ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_12));
						addInt__stdZprivateZdigitsutils_189(s, (*tempFrames__system_2650[(j_2)- 0]).line);
						{
							if (!NIM_FALSE) goto LA37_;
							unsureAsgnRef((void**) (&(*s)), resizeString((*s), 2));
appendString((*s), ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_20));
							addInt__stdZprivateZdigitsutils_189(s, ((NI) 0));
						}
						LA37_: ;
						unsureAsgnRef((void**) (&(*s)), resizeString((*s), 1));
appendString((*s), ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_21));
					}
					LA33_: ;
					{
						NI kX60gensym78_;
						NI colontmp__2;
						NI res_3;
						kX60gensym78_ = (NI)0;
						colontmp__2 = (NI)0;
						colontmp__2 = ((((NI) 1) >= (NI)(((NI) 25) - (NI)(((*s) ? (*s)->Sup.len : 0) - oldLenX60gensym78_))) ? ((NI) 1) : (NI)(((NI) 25) - (NI)(((*s) ? (*s)->Sup.len : 0) - oldLenX60gensym78_)));
						res_3 = ((NI) 1);
						{
							while (1) {
								if (!(res_3 <= colontmp__2)) goto LA41;
								kX60gensym78_ = res_3;
								unsureAsgnRef((void**) (&(*s)), addChar((*s), 32));
								res_3 += ((NI) 1);
							} LA41: ;
						}
					}
					add__system_2308(s, (*tempFrames__system_2650[(j_2)- 0]).procname);
					unsureAsgnRef((void**) (&(*s)), resizeString((*s), 1));
appendString((*s), ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_22));
				}
				LA25_: ;
				res_2 -= ((NI) 1);
			} LA24: ;
		}
	}
}
N_LIB_PRIVATE N_NIMCALL(void, rawWriteStackTrace__system_2846)(NimStringDesc** s) {
	{
		if (!(framePtr__system_2564 == ((TFrame*) NIM_NIL))) goto LA3_;
		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 29));
appendString((*s), ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_2));
	}
	goto LA1_;
	LA3_: ;
	{
		unsureAsgnRef((void**) (&(*s)), resizeString((*s), 34));
appendString((*s), ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_31));
		auxWriteStackTrace__system_2748(framePtr__system_2564, s);
	}
	LA1_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, writeStackTrace__system_2161)(void) {
	NimStringDesc* s;
	s = ((NimStringDesc*) NIM_NIL);
	rawWriteStackTrace__system_2846((&s));
	showErrorMessage2__system_2544(s);
}
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_2997)(void) {
	NimStringDesc* msg;
	NimStringDesc* T1_;
	NimStringDesc* T2_;
	writeStackTrace__system_2161();
	T1_ = NIM_NIL;
	T2_ = NIM_NIL;
	T2_ = dollar___systemZdollars_3(((NI) 2000));
	T1_ = rawNewString((T2_ ? T2_->Sup.len : 0) + 167);
appendString(T1_, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_33));
appendString(T1_, T2_);
appendString(T1_, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_34));
	msg = T1_;
	showErrorMessage2__system_2544(msg);
	exit(((NI) 1));
}
static N_INLINE(void, nimFrame)(TFrame* s) {
	{
		if (!(framePtr__system_2564 == ((TFrame*) NIM_NIL))) goto LA3_;
		(*s).calldepth = ((NI16) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		(*s).calldepth = (NI16)((*framePtr__system_2564).calldepth + ((NI16) 1));
	}
	LA1_: ;
	(*s).prev = framePtr__system_2564;
	framePtr__system_2564 = s;
	{
		if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
		callDepthLimitReached__system_2997();
	}
	LA8_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, setPosition__system_5432)(tyObject_GcStack__7fytPA5bBsob6See21YMRA* stack, void* position) {
	nimfr_("setPosition", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	popFrame();
}
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom) {
	{
		if (!(gch__system_5246.stack.bottom == NIM_NIL)) goto LA3_;
		gch__system_5246.stack.bottom = theStackBottom;
	}
	goto LA1_;
	LA3_: ;
	{
		NI a;
		NI b;
		if (!!((theStackBottom == gch__system_5246.stack.bottom))) goto LA6_;
		a = ((NI) (ptrdiff_t) (theStackBottom));
		b = ((NI) (ptrdiff_t) (gch__system_5246.stack.bottom));
		gch__system_5246.stack.bottom = ((void*) (((a >= b) ? a : b)));
	}
	goto LA1_;
	LA6_: ;
	LA1_: ;
	setPosition__system_5432((&gch__system_5246.stack), theStackBottom);
}
static N_INLINE(void, initStackBottom)(void) {
	void* volatile locals;
	locals = ((void*) ((&locals)));
	nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE N_NIMCALL(void, init__system_4914)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, NI cap) {
	void* T1_;
	nimfr_("init", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
	nimln_(35, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
	(*s).len = ((NI) 0);
	nimln_(36, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
	(*s).cap = cap;
	nimln_(37, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/cellseqs_v1.nim");
	T1_ = (void*)0;
	T1_ = alloc0Impl__system_1745(((NI) ((NI)(cap * ((NI) 8)))));
	(*s).d = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g**) (T1_));
	popFrame();
}
static N_INLINE(NI, atomicInc__system_2172)(NI* memLoc, NI x) {
	NI result;
	NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_35;
	result = (NI)0;
	if (nimAddInt((*memLoc), x, &TM__Q5wkpxktOdTGvlSRo9bzt9aw_35)) { raiseOverflow(); };
	(*memLoc) = (NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_35);
	result = (*memLoc);
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, initGC__system_2398)(void) {
	NI T1_;
	nimfr_("initGC", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	nimln_(313, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	gch__system_5246.cycleThreshold = ((NI) 4194304);
	nimln_(314, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	gch__system_5246.zctThreshold = ((NI) 500);
	nimln_(315, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	gch__system_5246.stat.stackScans = ((NI) 0);
	nimln_(316, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	gch__system_5246.stat.cycleCollections = ((NI) 0);
	nimln_(317, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	gch__system_5246.stat.maxThreshold = ((NI) 0);
	nimln_(318, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	gch__system_5246.stat.maxStackSize = ((NI) 0);
	nimln_(319, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	gch__system_5246.stat.maxStackCells = ((NI) 0);
	nimln_(320, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	gch__system_5246.stat.cycleTableSize = ((NI) 0);
	nimln_(322, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	init__system_4914((&gch__system_5246.zct), ((NI) 1024));
	nimln_(323, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	init__system_4914((&gch__system_5246.tempStack), ((NI) 1024));
	nimln_(324, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	init__system_4914((&gch__system_5246.decStack), ((NI) 1024));
	nimln_(325, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	init__system_4920((&gch__system_5246.marked));
	nimln_(326, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	init__system_4914((&gch__system_5246.additionalRoots), ((NI) 1024));
	nimln_(329, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	T1_ = (NI)0;
	T1_ = atomicInc__system_2172((&gHeapidGenerator__system_5513), ((NI) 1));
	gch__system_5246.gcThreadId = (NI)(T1_ - ((NI) 1));
	popFrame();
}
static N_NIMCALL(void, TM__Q5wkpxktOdTGvlSRo9bzt9aw_36)(void) {
	nimGCvisit((void*)currException__system_2566, 0);
}
N_LIB_PRIVATE N_NIMCALL(void, nimRegisterThreadLocalMarker)(tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ markerProc) {
	nimfr_("nimRegisterThreadLocalMarker", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	nimln_(478, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	{
		if (!(threadLocalMarkersLen <= ((NI) 3499))) goto LA3_;
		nimln_(479, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		threadLocalMarkers[(threadLocalMarkersLen)- 0] = markerProc;
		nimln_(480, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		threadLocalMarkersLen += ((NI) 1);
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(482, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		rawWrite(stderr, "[GC] cannot register thread local variable; too many thread local variables");
		nimln_(483, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		exit(((NI) 1));
	}
	LA1_: ;
	popFrame();
}
static N_INLINE(void, GC_disable__system_2263)(void) {
	gch__system_5246.recGcLock += ((NI) 1);
}
static N_NIMCALL(void, Marker_tyRef__S8DV6hfcgC9c0IiUsAoR29cQ)(void* p, NI op) {
	tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ* a;
	a = (tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ*)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, GC_enable__system_2264)(void) {
	{
		tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ* T5_;
		NimStringDesc* T6_;
		if (!(gch__system_5246.recGcLock <= ((NI) 0))) goto LA3_;
		T5_ = NIM_NIL;
		T5_ = (tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ*) newObj((&NTIrefassertiondefect__S8DV6hfcgC9c0IiUsAoR29cQ_), sizeof(tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ));
		(*T5_).Sup.Sup.Sup.m_type = (&NTIassertiondefect__PtYxPmY5X0dorfvxAFbJpQ_);
		(*T5_).Sup.Sup.name = "AssertionDefect";
		T6_ = NIM_NIL;
		T6_ = (*T5_).Sup.Sup.message; (*T5_).Sup.Sup.message = copyStringRC1(((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_45));
		if (T6_) nimGCunrefNoCycle(T6_);
		asgnRef((void**) (&(*T5_).Sup.Sup.parent), ((Exception*) NIM_NIL));
		raiseExceptionEx((Exception*)T5_, "AssertionDefect", "GC_enable", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim", 895);
	}
	LA3_: ;
	gch__system_5246.recGcLock -= ((NI) 1);
}
N_LIB_PRIVATE N_NOCONV(void, signalHandler)(int sign) {
	NimStringDesc* buf;
	tyProc__ZEo3s9cIqJYP74f7GMZM2FA T26_;
	int T27_;
	GC_disable__system_2263();
	buf = rawNewString(((NI) 2000));
	rawWriteStackTrace__system_2846((&buf));
	{
		if (!(sign == ((int) 2))) goto LA3_;
		buf = resizeString(buf, 31);
appendString(buf, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_37));
	}
	goto LA1_;
	LA3_: ;
	{
		if (!(sign == ((int) 11))) goto LA6_;
		buf = resizeString(buf, 61);
appendString(buf, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_38));
	}
	goto LA1_;
	LA6_: ;
	{
		if (!(sign == ((int) 6))) goto LA9_;
		buf = resizeString(buf, 31);
appendString(buf, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_39));
	}
	goto LA1_;
	LA9_: ;
	{
		if (!(sign == ((int) 8))) goto LA12_;
		buf = resizeString(buf, 26);
appendString(buf, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_40));
	}
	goto LA1_;
	LA12_: ;
	{
		if (!(sign == ((int) 4))) goto LA15_;
		buf = resizeString(buf, 27);
appendString(buf, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_41));
	}
	goto LA1_;
	LA15_: ;
	{
		if (!NIM_FALSE) goto LA18_;
		buf = resizeString(buf, 60);
appendString(buf, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_42));
	}
	goto LA1_;
	LA18_: ;
	{
		{
			{
				if (!(sign == ((int) 13))) goto LA24_;
				buf = resizeString(buf, 22);
appendString(buf, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_43));
				goto LA21;
			}
			LA24_: ;
			buf = resizeString(buf, 15);
appendString(buf, ((NimStringDesc*) &TM__Q5wkpxktOdTGvlSRo9bzt9aw_44));
		} LA21: ;
	}
	LA1_: ;
	showErrorMessage2__system_2544(buf);
	GC_enable__system_2264();
	T26_ = (tyProc__ZEo3s9cIqJYP74f7GMZM2FA)0;
	T26_ = signal(sign, ((tyProc__ZEo3s9cIqJYP74f7GMZM2FA) 0));
	T27_ = (int)0;
	T27_ = raise(sign);
	(void)(T27_);
}
N_LIB_PRIVATE N_NIMCALL(void, registerSignalHandler__system_3026)(void) {
	tyProc__ZEo3s9cIqJYP74f7GMZM2FA T1_;
	tyProc__ZEo3s9cIqJYP74f7GMZM2FA T2_;
	tyProc__ZEo3s9cIqJYP74f7GMZM2FA T3_;
	tyProc__ZEo3s9cIqJYP74f7GMZM2FA T4_;
	tyProc__ZEo3s9cIqJYP74f7GMZM2FA T5_;
	tyProc__ZEo3s9cIqJYP74f7GMZM2FA T6_;
	T1_ = (tyProc__ZEo3s9cIqJYP74f7GMZM2FA)0;
	T1_ = signal(((int) 2), signalHandler);
	T2_ = (tyProc__ZEo3s9cIqJYP74f7GMZM2FA)0;
	T2_ = signal(((int) 11), signalHandler);
	T3_ = (tyProc__ZEo3s9cIqJYP74f7GMZM2FA)0;
	T3_ = signal(((int) 6), signalHandler);
	T4_ = (tyProc__ZEo3s9cIqJYP74f7GMZM2FA)0;
	T4_ = signal(((int) 8), signalHandler);
	T5_ = (tyProc__ZEo3s9cIqJYP74f7GMZM2FA)0;
	T5_ = signal(((int) 4), signalHandler);
	T6_ = (tyProc__ZEo3s9cIqJYP74f7GMZM2FA)0;
	T6_ = signal(((int) 13), SIG_IGN);
}
N_LIB_PRIVATE N_NIMCALL(NI, getRefcount)(void* p) {
	NI result;
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
	nimfr_("internRefcount", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	result = (NI)0;
	nimln_(184, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = usrToCell__system_5299(p);
	result = (NI)((NI64)((*T1_).refcount) >> (NU64)(((NI) 3)));
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, nimRegisterGlobalMarker)(tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ markerProc) {
	nimfr_("nimRegisterGlobalMarker", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	nimln_(470, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
	{
		if (!(globalMarkersLen <= ((NI) 3499))) goto LA3_;
		nimln_(471, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		globalMarkers[(globalMarkersLen)- 0] = markerProc;
		nimln_(472, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		globalMarkersLen += ((NI) 1);
	}
	goto LA1_;
	LA3_: ;
	{
		nimln_(474, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		rawWrite(stderr, "[GC] cannot register global variable; too many global variables");
		nimln_(475, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc_common.nim");
		exit(((NI) 1));
	}
	LA1_: ;
	popFrame();
}
N_LIB_PRIVATE N_NOCONV(void*, allocSharedImpl)(NI size) {
	void* result;
	result = (void*)0;
	result = allocImpl__system_1743(size);
	return result;
}
N_LIB_PRIVATE N_NOCONV(void*, allocShared0Impl__system_1758)(NI size) {
	void* result;
	result = (void*)0;
	result = allocSharedImpl(size);
	zeroMem__system_1724(result, size);
	return result;
}
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);
}
N_LIB_PRIVATE N_NIMCALL(NI, cmp__system_7499)(NI x, NI y) {
	NI result;
	nimfr_("cmp", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
{	result = (NI)0;
	nimln_(957, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	{
		if (!(x == y)) goto LA3_;
		result = ((NI) 0);
		goto BeforeRet_;
	}
	LA3_: ;
	nimln_(958, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	{
		if (!(x < y)) goto LA7_;
		result = ((NI) -1);
		goto BeforeRet_;
	}
	LA7_: ;
	nimln_(959, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	result = ((NI) 1);
	goto BeforeRet_;
	}BeforeRet_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, lteq___coreZmacros_357)(tyTuple__47w2DboNEPf69aPgubZdd7Q x, tyTuple__47w2DboNEPf69aPgubZdd7Q y) {
	NIM_BOOL result;
	NI c;
	NI c_2;
	NI c_3;
	nimfr_("<=", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
{	result = (NIM_BOOL)0;
	nimln_(1885, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	c = cmp__system_7499(x.Field0, y.Field0);
	nimln_(1886, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	{
		if (!(c < ((NI) 0))) goto LA3_;
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA3_: ;
	nimln_(1887, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	{
		if (!(((NI) 0) < c)) goto LA7_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA7_: ;
	nimln_(1885, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	c_2 = cmp__system_7499(x.Field1, y.Field1);
	nimln_(1886, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	{
		if (!(c_2 < ((NI) 0))) goto LA11_;
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA11_: ;
	nimln_(1887, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	{
		if (!(((NI) 0) < c_2)) goto LA15_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA15_: ;
	nimln_(1885, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	c_3 = cmp__system_7499(x.Field2, y.Field2);
	nimln_(1886, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	{
		if (!(c_3 < ((NI) 0))) goto LA19_;
		result = NIM_TRUE;
		goto BeforeRet_;
	}
	LA19_: ;
	nimln_(1887, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	{
		if (!(((NI) 0) < c_3)) goto LA23_;
		result = NIM_FALSE;
		goto BeforeRet_;
	}
	LA23_: ;
	nimln_(1888, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	result = NIM_TRUE;
	goto BeforeRet_;
	}BeforeRet_: ;
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, nimGCunref)(void* p) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* cell;
	NI L;
	NI i;
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T7_;
	nimfr_("nimGCunref", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	nimln_(254, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	cell = usrToCell__system_5299(p);
	nimln_(255, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	L = (NI)(gch__system_5246.additionalRoots.len - ((NI) 1));
	nimln_(256, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	i = L;
	nimln_(257, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	d = gch__system_5246.additionalRoots.d;
	{
		nimln_(258, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
		while (1) {
			if (!(((NI) 0) <= i)) goto LA2;
			nimln_(259, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
			{
				if (!(d[i] == cell)) goto LA5_;
				nimln_(260, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
				d[i] = d[L];
				nimln_(261, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
				gch__system_5246.additionalRoots.len -= ((NI) 1);
				nimln_(262, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
				goto LA1;
			}
			LA5_: ;
			nimln_(263, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
			i -= ((NI) 1);
		} LA2: ;
	} LA1: ;
	nimln_(264, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/gc.nim");
	T7_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T7_ = usrToCell__system_5299(p);
	decRef__system_5344(T7_);
	popFrame();
}
N_LIB_PRIVATE 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 == ((TNimType*) NIM_NIL))) goto LA9_;
				result = NIM_FALSE;
				goto BeforeRet_;
			}
			LA9_: ;
			x = (*x).base;
		} LA6: ;
	}
	result = NIM_TRUE;
	goto BeforeRet_;
	}BeforeRet_: ;
	return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, substr__system_7790)(NimStringDesc* s, NI first, NI last) {
	NimStringDesc* result;
	NI first_2;
	NI L;
	NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_46;
	NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_47;
	nimfr_("substr", "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	result = NIM_NIL;
	nimln_(3069, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	first_2 = ((first >= ((NI) 0)) ? first : ((NI) 0));
	nimln_(3070, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	if (nimSubInt(((last <= ((s ? s->Sup.len : 0)-1)) ? last : ((s ? s->Sup.len : 0)-1)), first_2, &TM__Q5wkpxktOdTGvlSRo9bzt9aw_46)) { raiseOverflow(); };
	if (nimAddInt((NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_46), ((NI) 1), &TM__Q5wkpxktOdTGvlSRo9bzt9aw_47)) { raiseOverflow(); };
	L = (((NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_47) >= ((NI) 0)) ? (NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_47) : ((NI) 0));
	nimln_(3071, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
	if ((L) < ((NI) 0) || (L) > ((NI) IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI) 0), ((NI) IL64(9223372036854775807))); }
	result = mnewString(((NI) (L)));
	{
		NI i;
		NI colontmp_;
		NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_48;
		NI res;
		i = (NI)0;
		colontmp_ = (NI)0;
		nimln_(3072, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
		if (nimSubInt(L, ((NI) 1), &TM__Q5wkpxktOdTGvlSRo9bzt9aw_48)) { raiseOverflow(); };
		colontmp_ = (NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_48);
		nimln_(90, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/iterators_1.nim");
		res = ((NI) 0);
		{
			nimln_(91, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/iterators_1.nim");
			while (1) {
				NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_49;
				NI TM__Q5wkpxktOdTGvlSRo9bzt9aw_50;
				if (!(res <= colontmp_)) goto LA3;
				nimln_(3072, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
				i = res;
				if (i < 0 || i >= (result ? result->Sup.len : 0)){ raiseIndexError2(i,(result ? result->Sup.len : 0)-1); }
				nimln_(3073, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system.nim");
				if (nimAddInt(i, first_2, &TM__Q5wkpxktOdTGvlSRo9bzt9aw_49)) { raiseOverflow(); };
				if ((NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_49) < 0 || (NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_49) >= (s ? s->Sup.len : 0)){ raiseIndexError2((NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_49),(s ? s->Sup.len : 0)-1); }
				result->data[i] = s->data[(NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_49)];
				nimln_(93, "/home/gm/.choosenim/toolchains/nim-1.6.6/lib/system/iterators_1.nim");
				if (nimAddInt(res, ((NI) 1), &TM__Q5wkpxktOdTGvlSRo9bzt9aw_50)) { raiseOverflow(); };
				res = (NI)(TM__Q5wkpxktOdTGvlSRo9bzt9aw_50);
			} LA3: ;
		}
	}
	popFrame();
	return result;
}
N_LIB_PRIVATE N_NIMCALL(void, nimLeaveFinally)(void) {
	{
		if (!!((excHandler__system_2565 == ((TSafePoint*) NIM_NIL)))) goto LA3_;
		longjmp((*excHandler__system_2565).context, ((int) 1));
	}
	goto LA1_;
	LA3_: ;
	{
		reportUnhandledError__system_2880(currException__system_2566);
		exit(((NI) 1));
	}
	LA1_: ;
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
	nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void) {
{
	TFrame FR_; FR_.len = 0;

	nimRegisterThreadLocalMarker(TM__Q5wkpxktOdTGvlSRo9bzt9aw_36);

}/* preInitProc end */
{
	initStackBottom();
	initGC__system_2398();
	registerSignalHandler__system_3026();
}
}

N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void) {
static TNimNode* TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_5[5];
static TNimNode* TM__Q5wkpxktOdTGvlSRo9bzt9aw_5_3[3];
static TNimNode TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[20];
NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_.size = sizeof(RootObj);
NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_.align = NIM_ALIGNOF(RootObj);
NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_.kind = 17;
NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_.base = 0;
NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_.flags = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[0].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[0].kind = 2;
NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[0];
NTIexception__XEycrCsme5C8CVWAYEcdBQ_.size = sizeof(Exception);
NTIexception__XEycrCsme5C8CVWAYEcdBQ_.align = NIM_ALIGNOF(Exception);
NTIexception__XEycrCsme5C8CVWAYEcdBQ_.kind = 17;
NTIexception__XEycrCsme5C8CVWAYEcdBQ_.base = (&NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_5[0] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[2];
NTIrefexception__vU9aO9cTqOMn6CBzhV8rX7Sw_.size = sizeof(Exception*);
NTIrefexception__vU9aO9cTqOMn6CBzhV8rX7Sw_.align = NIM_ALIGNOF(Exception*);
NTIrefexception__vU9aO9cTqOMn6CBzhV8rX7Sw_.kind = 22;
NTIrefexception__vU9aO9cTqOMn6CBzhV8rX7Sw_.base = (&NTIexception__XEycrCsme5C8CVWAYEcdBQ_);
NTIrefexception__vU9aO9cTqOMn6CBzhV8rX7Sw_.marker = Marker_tyRef__vU9aO9cTqOMn6CBzhV8rX7Sw;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[2].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[2].offset = offsetof(Exception, parent);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[2].typ = (&NTIrefexception__vU9aO9cTqOMn6CBzhV8rX7Sw_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[2].name = "parent";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_5[1] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[3];
NTIcstring__S9agCYBinaYZnGWcjTdxclg_.size = sizeof(NCSTRING);
NTIcstring__S9agCYBinaYZnGWcjTdxclg_.align = NIM_ALIGNOF(NCSTRING);
NTIcstring__S9agCYBinaYZnGWcjTdxclg_.kind = 29;
NTIcstring__S9agCYBinaYZnGWcjTdxclg_.base = 0;
NTIcstring__S9agCYBinaYZnGWcjTdxclg_.flags = 3;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[3].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[3].offset = offsetof(Exception, name);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[3].typ = (&NTIcstring__S9agCYBinaYZnGWcjTdxclg_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[3].name = "name";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_5[2] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[4];
NTIstring__77mFvmsOLKik79ci2hXkHEg_.size = sizeof(NimStringDesc*);
NTIstring__77mFvmsOLKik79ci2hXkHEg_.align = NIM_ALIGNOF(NimStringDesc*);
NTIstring__77mFvmsOLKik79ci2hXkHEg_.kind = 28;
NTIstring__77mFvmsOLKik79ci2hXkHEg_.base = 0;
NTIstring__77mFvmsOLKik79ci2hXkHEg_.flags = 2;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[4].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[4].offset = offsetof(Exception, message);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[4].typ = (&NTIstring__77mFvmsOLKik79ci2hXkHEg_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[4].name = "msg";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_5[3] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[5];
NTIstacktraceentry__oLyohQ7O2XOvGnflOss8EA_.size = sizeof(tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA);
NTIstacktraceentry__oLyohQ7O2XOvGnflOss8EA_.align = NIM_ALIGNOF(tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA);
NTIstacktraceentry__oLyohQ7O2XOvGnflOss8EA_.kind = 18;
NTIstacktraceentry__oLyohQ7O2XOvGnflOss8EA_.base = 0;
NTIstacktraceentry__oLyohQ7O2XOvGnflOss8EA_.flags = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_5_3[0] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[7];
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[7].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[7].offset = offsetof(tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA, procname);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[7].typ = (&NTIcstring__S9agCYBinaYZnGWcjTdxclg_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[7].name = "procname";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_5_3[1] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[8];
NTIint__rR5Bzr1D5krxoo1NcNyeMA_.size = sizeof(NI);
NTIint__rR5Bzr1D5krxoo1NcNyeMA_.align = NIM_ALIGNOF(NI);
NTIint__rR5Bzr1D5krxoo1NcNyeMA_.kind = 31;
NTIint__rR5Bzr1D5krxoo1NcNyeMA_.base = 0;
NTIint__rR5Bzr1D5krxoo1NcNyeMA_.flags = 3;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[8].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[8].offset = offsetof(tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA, line);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[8].typ = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[8].name = "line";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_5_3[2] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[9];
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[9].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[9].offset = offsetof(tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA, filename);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[9].typ = (&NTIcstring__S9agCYBinaYZnGWcjTdxclg_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[9].name = "filename";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[6].len = 3; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[6].kind = 2; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[6].sons = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_5_3[0];
NTIstacktraceentry__oLyohQ7O2XOvGnflOss8EA_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[6];
NTIseqLstacktraceentryT__uB9b75OUPRENsBAu4AnoePA_.size = sizeof(tySequence__uB9b75OUPRENsBAu4AnoePA*);
NTIseqLstacktraceentryT__uB9b75OUPRENsBAu4AnoePA_.align = NIM_ALIGNOF(tySequence__uB9b75OUPRENsBAu4AnoePA*);
NTIseqLstacktraceentryT__uB9b75OUPRENsBAu4AnoePA_.kind = 24;
NTIseqLstacktraceentryT__uB9b75OUPRENsBAu4AnoePA_.base = (&NTIstacktraceentry__oLyohQ7O2XOvGnflOss8EA_);
NTIseqLstacktraceentryT__uB9b75OUPRENsBAu4AnoePA_.marker = Marker_tySequence__uB9b75OUPRENsBAu4AnoePA;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[5].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[5].offset = offsetof(Exception, trace);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[5].typ = (&NTIseqLstacktraceentryT__uB9b75OUPRENsBAu4AnoePA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[5].name = "trace";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_5[4] = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[10];
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[10].kind = 1;
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[10].offset = offsetof(Exception, up);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[10].typ = (&NTIrefexception__vU9aO9cTqOMn6CBzhV8rX7Sw_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[10].name = "up";
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[1].len = 5; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[1].kind = 2; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[1].sons = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_4_5[0];
NTIexception__XEycrCsme5C8CVWAYEcdBQ_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[1];
NTIdefect__LbeSGvgPzGzXnW9caIkJqMA_.size = sizeof(tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA);
NTIdefect__LbeSGvgPzGzXnW9caIkJqMA_.align = NIM_ALIGNOF(tyObject_Defect__LbeSGvgPzGzXnW9caIkJqMA);
NTIdefect__LbeSGvgPzGzXnW9caIkJqMA_.kind = 17;
NTIdefect__LbeSGvgPzGzXnW9caIkJqMA_.base = (&NTIexception__XEycrCsme5C8CVWAYEcdBQ_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[11].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[11].kind = 2;
NTIdefect__LbeSGvgPzGzXnW9caIkJqMA_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[11];
NTIarithmeticdefect__cT9c9bHlHSpA1QTnKbHjnIkA_.size = sizeof(tyObject_ArithmeticDefect__cT9c9bHlHSpA1QTnKbHjnIkA);
NTIarithmeticdefect__cT9c9bHlHSpA1QTnKbHjnIkA_.align = NIM_ALIGNOF(tyObject_ArithmeticDefect__cT9c9bHlHSpA1QTnKbHjnIkA);
NTIarithmeticdefect__cT9c9bHlHSpA1QTnKbHjnIkA_.kind = 17;
NTIarithmeticdefect__cT9c9bHlHSpA1QTnKbHjnIkA_.base = (&NTIdefect__LbeSGvgPzGzXnW9caIkJqMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[12].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[12].kind = 2;
NTIarithmeticdefect__cT9c9bHlHSpA1QTnKbHjnIkA_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[12];
NTIoverflowdefect__9cxMi1BPLc3UKt9br86bGfGQ_.size = sizeof(tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ);
NTIoverflowdefect__9cxMi1BPLc3UKt9br86bGfGQ_.align = NIM_ALIGNOF(tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ);
NTIoverflowdefect__9cxMi1BPLc3UKt9br86bGfGQ_.kind = 17;
NTIoverflowdefect__9cxMi1BPLc3UKt9br86bGfGQ_.base = (&NTIarithmeticdefect__cT9c9bHlHSpA1QTnKbHjnIkA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[13].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[13].kind = 2;
NTIoverflowdefect__9cxMi1BPLc3UKt9br86bGfGQ_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[13];
NTIrefoverflowdefect__r8GBEWywN07B3Rat3azS4Q_.size = sizeof(tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ*);
NTIrefoverflowdefect__r8GBEWywN07B3Rat3azS4Q_.align = NIM_ALIGNOF(tyObject_OverflowDefect__9cxMi1BPLc3UKt9br86bGfGQ*);
NTIrefoverflowdefect__r8GBEWywN07B3Rat3azS4Q_.kind = 22;
NTIrefoverflowdefect__r8GBEWywN07B3Rat3azS4Q_.base = (&NTIoverflowdefect__9cxMi1BPLc3UKt9br86bGfGQ_);
NTIrefoverflowdefect__r8GBEWywN07B3Rat3azS4Q_.marker = Marker_tyRef__r8GBEWywN07B3Rat3azS4Q;
NTIrangedefect__Rp9adJYTsbbIUzQ8fWxwgdA_.size = sizeof(tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA);
NTIrangedefect__Rp9adJYTsbbIUzQ8fWxwgdA_.align = NIM_ALIGNOF(tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA);
NTIrangedefect__Rp9adJYTsbbIUzQ8fWxwgdA_.kind = 17;
NTIrangedefect__Rp9adJYTsbbIUzQ8fWxwgdA_.base = (&NTIdefect__LbeSGvgPzGzXnW9caIkJqMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[14].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[14].kind = 2;
NTIrangedefect__Rp9adJYTsbbIUzQ8fWxwgdA_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[14];
NTIrefrangedefect__dJLgQyYmAVYQWHiOSBBTyA_.size = sizeof(tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA*);
NTIrefrangedefect__dJLgQyYmAVYQWHiOSBBTyA_.align = NIM_ALIGNOF(tyObject_RangeDefect__Rp9adJYTsbbIUzQ8fWxwgdA*);
NTIrefrangedefect__dJLgQyYmAVYQWHiOSBBTyA_.kind = 22;
NTIrefrangedefect__dJLgQyYmAVYQWHiOSBBTyA_.base = (&NTIrangedefect__Rp9adJYTsbbIUzQ8fWxwgdA_);
NTIrefrangedefect__dJLgQyYmAVYQWHiOSBBTyA_.marker = Marker_tyRef__dJLgQyYmAVYQWHiOSBBTyA;
NTIindexdefect__n6tGEPHKkh7E1AP9bj30WrQ_.size = sizeof(tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ);
NTIindexdefect__n6tGEPHKkh7E1AP9bj30WrQ_.align = NIM_ALIGNOF(tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ);
NTIindexdefect__n6tGEPHKkh7E1AP9bj30WrQ_.kind = 17;
NTIindexdefect__n6tGEPHKkh7E1AP9bj30WrQ_.base = (&NTIdefect__LbeSGvgPzGzXnW9caIkJqMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[15].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[15].kind = 2;
NTIindexdefect__n6tGEPHKkh7E1AP9bj30WrQ_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[15];
NTIrefindexdefect__RJnHOb9cQV3neNC9cDkRgMyw_.size = sizeof(tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ*);
NTIrefindexdefect__RJnHOb9cQV3neNC9cDkRgMyw_.align = NIM_ALIGNOF(tyObject_IndexDefect__n6tGEPHKkh7E1AP9bj30WrQ*);
NTIrefindexdefect__RJnHOb9cQV3neNC9cDkRgMyw_.kind = 22;
NTIrefindexdefect__RJnHOb9cQV3neNC9cDkRgMyw_.base = (&NTIindexdefect__n6tGEPHKkh7E1AP9bj30WrQ_);
NTIrefindexdefect__RJnHOb9cQV3neNC9cDkRgMyw_.marker = Marker_tyRef__RJnHOb9cQV3neNC9cDkRgMyw;
NTIreraisedefect__E0L0wGYS1gPD81VLstNO2g_.size = sizeof(tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g);
NTIreraisedefect__E0L0wGYS1gPD81VLstNO2g_.align = NIM_ALIGNOF(tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g);
NTIreraisedefect__E0L0wGYS1gPD81VLstNO2g_.kind = 17;
NTIreraisedefect__E0L0wGYS1gPD81VLstNO2g_.base = (&NTIdefect__LbeSGvgPzGzXnW9caIkJqMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[16].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[16].kind = 2;
NTIreraisedefect__E0L0wGYS1gPD81VLstNO2g_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[16];
NTIrefreraisedefect__uG62cfJZ15c2siK3CKLmnQ_.size = sizeof(tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g*);
NTIrefreraisedefect__uG62cfJZ15c2siK3CKLmnQ_.align = NIM_ALIGNOF(tyObject_ReraiseDefect__E0L0wGYS1gPD81VLstNO2g*);
NTIrefreraisedefect__uG62cfJZ15c2siK3CKLmnQ_.kind = 22;
NTIrefreraisedefect__uG62cfJZ15c2siK3CKLmnQ_.base = (&NTIreraisedefect__E0L0wGYS1gPD81VLstNO2g_);
NTIrefreraisedefect__uG62cfJZ15c2siK3CKLmnQ_.marker = Marker_tyRef__uG62cfJZ15c2siK3CKLmnQ;
NTIassertiondefect__PtYxPmY5X0dorfvxAFbJpQ_.size = sizeof(tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ);
NTIassertiondefect__PtYxPmY5X0dorfvxAFbJpQ_.align = NIM_ALIGNOF(tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ);
NTIassertiondefect__PtYxPmY5X0dorfvxAFbJpQ_.kind = 17;
NTIassertiondefect__PtYxPmY5X0dorfvxAFbJpQ_.base = (&NTIdefect__LbeSGvgPzGzXnW9caIkJqMA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[17].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[17].kind = 2;
NTIassertiondefect__PtYxPmY5X0dorfvxAFbJpQ_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[17];
NTIrefassertiondefect__S8DV6hfcgC9c0IiUsAoR29cQ_.size = sizeof(tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ*);
NTIrefassertiondefect__S8DV6hfcgC9c0IiUsAoR29cQ_.align = NIM_ALIGNOF(tyObject_AssertionDefect__PtYxPmY5X0dorfvxAFbJpQ*);
NTIrefassertiondefect__S8DV6hfcgC9c0IiUsAoR29cQ_.kind = 22;
NTIrefassertiondefect__S8DV6hfcgC9c0IiUsAoR29cQ_.base = (&NTIassertiondefect__PtYxPmY5X0dorfvxAFbJpQ_);
NTIrefassertiondefect__S8DV6hfcgC9c0IiUsAoR29cQ_.marker = Marker_tyRef__S8DV6hfcgC9c0IiUsAoR29cQ;
NTIcint__nlCscttRCss70IBTyuBqnA_.size = sizeof(int);
NTIcint__nlCscttRCss70IBTyuBqnA_.align = NIM_ALIGNOF(int);
NTIcint__nlCscttRCss70IBTyuBqnA_.kind = 34;
NTIcint__nlCscttRCss70IBTyuBqnA_.base = 0;
NTIcint__nlCscttRCss70IBTyuBqnA_.flags = 3;
NTIculong__nuuFlkPr6wNn1dt5MhCk3g_.size = sizeof(unsigned long);
NTIculong__nuuFlkPr6wNn1dt5MhCk3g_.align = NIM_ALIGNOF(unsigned long);
NTIculong__nuuFlkPr6wNn1dt5MhCk3g_.kind = 40;
NTIculong__nuuFlkPr6wNn1dt5MhCk3g_.base = 0;
NTIculong__nuuFlkPr6wNn1dt5MhCk3g_.flags = 3;
NTIcuint__EfDYb5NOiMBijiUDCmXqPw_.size = sizeof(unsigned int);
NTIcuint__EfDYb5NOiMBijiUDCmXqPw_.align = NIM_ALIGNOF(unsigned int);
NTIcuint__EfDYb5NOiMBijiUDCmXqPw_.kind = 43;
NTIcuint__EfDYb5NOiMBijiUDCmXqPw_.base = 0;
NTIcuint__EfDYb5NOiMBijiUDCmXqPw_.flags = 3;
NTIcatchableerror__qrLSDoe2oBoAqNtJ9badtnA_.size = sizeof(tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA);
NTIcatchableerror__qrLSDoe2oBoAqNtJ9badtnA_.align = NIM_ALIGNOF(tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA);
NTIcatchableerror__qrLSDoe2oBoAqNtJ9badtnA_.kind = 17;
NTIcatchableerror__qrLSDoe2oBoAqNtJ9badtnA_.base = (&NTIexception__XEycrCsme5C8CVWAYEcdBQ_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[18].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[18].kind = 2;
NTIcatchableerror__qrLSDoe2oBoAqNtJ9badtnA_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[18];
NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_.size = sizeof(tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw);
NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_.align = NIM_ALIGNOF(tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw);
NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_.kind = 17;
NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_.base = (&NTIcatchableerror__qrLSDoe2oBoAqNtJ9badtnA_);
TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[19].len = 0; TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[19].kind = 2;
NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_.node = &TM__Q5wkpxktOdTGvlSRo9bzt9aw_0[19];
NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_.size = sizeof(tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw*);
NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_.align = NIM_ALIGNOF(tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw*);
NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_.kind = 22;
NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_.base = (&NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_);
NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_.marker = Marker_tyRef__Ie1m0dv1ZHg72IgPRr1cDw;
}

