/* Generated by Nim Compiler v0.16.0 */
/*   (c) 2017 Andreas Rumpf */
/* The generated code is subject to the original license. */
/* Compiled for: Linux, amd64, gcc */
/* Command for C compiler:
   gcc -c  -w -O3 -fno-strict-aliasing -fPIC  -I/build/nim/src/Nim-0.16.0/lib -o lib/nimcache/stdlib_system.o lib/nimcache/stdlib_system.c */
#define NIM_INTBITS 64

#include "nimbase.h"
#include <string.h>
#include <sys/mman.h>
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
#include <signal.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#undef linux
typedef struct Exception Exception;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Avlnode_IaqjtwKhxLEpvDS9bct9blEw Avlnode_IaqjtwKhxLEpvDS9bct9blEw;
typedef struct Gcheap_1TRH1TZMaVZTnLNcIHuNFQ Gcheap_1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct Gcstack_7fytPA5bBsob6See21YMRA Gcstack_7fytPA5bBsob6See21YMRA;
typedef struct Cellseq_Axo1XVm9aaQueTOldv8le5w Cellseq_Axo1XVm9aaQueTOldv8le5w;
typedef struct Cell_1zcF9cV8XIAtbN8h5HRUB8g Cell_1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct Memregion_x81NhDv59b8ercDZ9bi85jyg Memregion_x81NhDv59b8ercDZ9bi85jyg;
typedef struct Smallchunk_tXn60W2f8h3jgAYdEmy5NQ Smallchunk_tXn60W2f8h3jgAYdEmy5NQ;
typedef struct Llchunk_XsENErzHIZV9bhvyJx56wGw Llchunk_XsENErzHIZV9bhvyJx56wGw;
typedef struct Bigchunk_Rv9c70Uhp2TytkX7eH78qEg Bigchunk_Rv9c70Uhp2TytkX7eH78qEg;
typedef struct Intset_EZObFrE3NC9bIb3YMkY9crZA Intset_EZObFrE3NC9bIb3YMkY9crZA;
typedef struct Trunk_W0r8S0Y3UGke6T9bIUWnnuw Trunk_W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct Gcstat_0RwLoVBHZPfUAcLczmfQAg Gcstat_0RwLoVBHZPfUAcLczmfQAg;
typedef struct Cellset_jG87P0AI9aZtss9ccTYBIISQ Cellset_jG87P0AI9aZtss9ccTYBIISQ;
typedef struct Pagedesc_fublkgIY4LG3mT51LU2WHg Pagedesc_fublkgIY4LG3mT51LU2WHg;
typedef struct Basechunk_Sdq7WpT6qAH858F5ZEdG3w Basechunk_Sdq7WpT6qAH858F5ZEdG3w;
typedef struct Freecell_u6M5LHprqzkn9axr04yg9bGQ Freecell_u6M5LHprqzkn9axr04yg9bGQ;
typedef struct TGenericSeq TGenericSeq;
typedef struct NimStringDesc NimStringDesc;
typedef struct TSafePoint TSafePoint;
typedef struct TNimObject TNimObject;
typedef struct Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg;
typedef struct Outofmemerror_NrupLB36t9bV7iFDHtrF69aw Outofmemerror_NrupLB36t9bV7iFDHtrF69aw;
typedef struct Reraiseerror_GRbrBa7JIulgD34jGcFb8w Reraiseerror_GRbrBa7JIulgD34jGcFb8w;
typedef struct Overflowerror_I3Jtn27626sFBOls6BBQ2Q Overflowerror_I3Jtn27626sFBOls6BBQ2Q;
typedef struct Arithmeticerror_QcJsjWXxMFpjHfkCIK5ExA Arithmeticerror_QcJsjWXxMFpjHfkCIK5ExA;
typedef struct Reprclosure_QK7SSKN8dPEpZedUTVKSLw Reprclosure_QK7SSKN8dPEpZedUTVKSLw;
typedef struct Assertionerror_8FC9arcap3s5ZtfMs75krtA Assertionerror_8FC9arcap3s5ZtfMs75krtA;
typedef struct Valueerror_Gi06FkNeykJn7mrqRZYrkA Valueerror_Gi06FkNeykJn7mrqRZYrkA;
typedef struct Oserror_3XwRQvmzCEOC4QnT706q1g Oserror_3XwRQvmzCEOC4QnT706q1g;
typedef struct Ioerror_9czoZw3pzPyrBmb5zTHY1OQ Ioerror_9czoZw3pzPyrBmb5zTHY1OQ;
typedef struct Keyerror_ifYAhUumNzWR9c9cN9amyJLtg Keyerror_ifYAhUumNzWR9c9cN9amyJLtg;
typedef struct TY_xyYfiXqv9bXR7uHakYC9cy3A TY_xyYfiXqv9bXR7uHakYC9cy3A;
typedef struct Ropeobj_pk4sC5H3E9ceov4bEasyPVw Ropeobj_pk4sC5H3E9ceov4bEasyPVw;
typedef N_NIMCALL_PTR(NIM_BOOL, TY_hgOQFBQi19biNdOUUkFOOxA) (Exception* e0);
typedef N_NIMCALL_PTR(void, TY_T4eqaYlFJYZUv9aG9b1TV0bQ) (void);
typedef NU8 Tnimkind_jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 Tnimtypeflag_v8QUszD1sWlSIWZz7mC4bQ_Set;
typedef N_NIMCALL_PTR(void, TY_ojoeKfW4VYIm36I9cpDTQIg) (void* p0, NI op0);
typedef N_NIMCALL_PTR(void*, TY_WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p0);
struct  TNimType  {
NI size;
Tnimkind_jIBKr1ejBgsfM33Kxw4j7A kind;
Tnimtypeflag_v8QUszD1sWlSIWZz7mC4bQ_Set flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY_ojoeKfW4VYIm36I9cpDTQIg marker;
TY_WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef Avlnode_IaqjtwKhxLEpvDS9bct9blEw* TY_0aOLqZchNi8nWtMTi8ND8w[2];
struct  Avlnode_IaqjtwKhxLEpvDS9bct9blEw  {
TY_0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperbound;
NI level;
};
struct  Cellseq_Axo1XVm9aaQueTOldv8le5w  {
NI len;
NI cap;
Cell_1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* TY_SiRwrEKZdLgxqz9a9aoVBglg[512];
typedef Trunk_W0r8S0Y3UGke6T9bIUWnnuw* TY_lh2A89ahMmYg9bCmpVaplLbA[256];
struct  Intset_EZObFrE3NC9bIb3YMkY9crZA  {
TY_lh2A89ahMmYg9bCmpVaplLbA data;
};
struct  Memregion_x81NhDv59b8ercDZ9bi85jyg  {
NI minlargeobj;
NI maxlargeobj;
TY_SiRwrEKZdLgxqz9a9aoVBglg freesmallchunks;
Llchunk_XsENErzHIZV9bhvyJx56wGw* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* freechunkslist;
Intset_EZObFrE3NC9bIb3YMkY9crZA chunkstarts;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw* root;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw* deleted;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw* last;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw* freeavlnodes;
NIM_BOOL locked;
NIM_BOOL blockchunksizeincrease;
NI nextchunksize;
};
struct  Gcstat_0RwLoVBHZPfUAcLczmfQAg  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Cellset_jG87P0AI9aZtss9ccTYBIISQ  {
NI counter;
NI max;
Pagedesc_fublkgIY4LG3mT51LU2WHg* head;
Pagedesc_fublkgIY4LG3mT51LU2WHg** data;
};
struct  Gcheap_1TRH1TZMaVZTnLNcIHuNFQ  {
Gcstack_7fytPA5bBsob6See21YMRA* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq_Axo1XVm9aaQueTOldv8le5w zct;
Cellseq_Axo1XVm9aaQueTOldv8le5w decstack;
Cellseq_Axo1XVm9aaQueTOldv8le5w tempstack;
NI recgclock;
Memregion_x81NhDv59b8ercDZ9bi85jyg region;
Gcstat_0RwLoVBHZPfUAcLczmfQAg stat;
Cellset_jG87P0AI9aZtss9ccTYBIISQ marked;
Cellseq_Axo1XVm9aaQueTOldv8le5w additionalroots;
};
struct  Basechunk_Sdq7WpT6qAH858F5ZEdG3w  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk_tXn60W2f8h3jgAYdEmy5NQ  {
  Basechunk_Sdq7WpT6qAH858F5ZEdG3w Sup;
Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* next;
Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* prev;
Freecell_u6M5LHprqzkn9axr04yg9bGQ* freelist;
NI free;
NI acc;
NF data;
};
struct  Bigchunk_Rv9c70Uhp2TytkX7eH78qEg  {
  Basechunk_Sdq7WpT6qAH858F5ZEdG3w Sup;
Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* next;
Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* prev;
NI align;
NF data;
};
typedef NI TY_9a8QARi5WsUggNU9bom7kzTQ[8];
struct  Trunk_W0r8S0Y3UGke6T9bIUWnnuw  {
Trunk_W0r8S0Y3UGke6T9bIUWnnuw* next;
NI key;
TY_9a8QARi5WsUggNU9bom7kzTQ bits;
};
struct  Llchunk_XsENErzHIZV9bhvyJx56wGw  {
NI size;
NI acc;
Llchunk_XsENErzHIZV9bhvyJx56wGw* next;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Freecell_u6M5LHprqzkn9axr04yg9bGQ  {
Freecell_u6M5LHprqzkn9axr04yg9bGQ* next;
NI zerofield;
};
typedef N_NIMCALL_PTR(void, TY_W6IXMh2CA4X1rFYGjUb4yg) (NimStringDesc* msg0);
struct  TNimObject  {
TNimType* m_type;
};
struct  Exception  {
  TNimObject Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
typedef NU8 Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ;
struct  Cell_1zcF9cV8XIAtbN8h5HRUB8g  {
NI refcount;
TNimType* typ;
};
struct  Pagedesc_fublkgIY4LG3mT51LU2WHg  {
Pagedesc_fublkgIY4LG3mT51LU2WHg* next;
NI key;
TY_9a8QARi5WsUggNU9bom7kzTQ bits;
};
typedef NU8 Tnimtypeflag_v8QUszD1sWlSIWZz7mC4bQ;
typedef NU8 Tnimnodekind_unfNsxrcATrufDZmpBq4HQ;
struct  TNimNode  {
Tnimnodekind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClPrc) (Exception* e0, void* ClEnv);
void* ClEnv;
} TY_KeeAOYBd84Ofsw6Y7LizaQ;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY_KeeAOYBd84Ofsw6Y7LizaQ raiseAction;
};
typedef TFrame* TY_pFdcUVk36Xt0LD9bLg3YaIQ[128];
typedef N_CLOSURE_PTR(NIM_BOOL, T_Q5wkpxktOdTGvlSRo9bzt9aw_6) (Exception* e0);
struct  Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg  {
  Exception Sup;
};
struct  Outofmemerror_NrupLB36t9bV7iFDHtrF69aw  {
  Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Sup;
};
typedef N_NIMCALL_PTR(void, Finalizer) (void* self0);
typedef NIM_CHAR TY_gpc2RrLEcWgv7ONpLYNHOw[2001];
struct  Reraiseerror_GRbrBa7JIulgD34jGcFb8w  {
  Exception Sup;
};
typedef N_NOCONV_PTR(void, TY_lfH2drpqP9aSEAAjWgrYv8Q) (int a0);
typedef TY_T4eqaYlFJYZUv9aG9b1TV0bQ TY_r9aAb9cuhoh9cb9a123KVuMchQ[7001];
struct  Arithmeticerror_QcJsjWXxMFpjHfkCIK5ExA  {
  Exception Sup;
};
struct  Overflowerror_I3Jtn27626sFBOls6BBQ2Q  {
  Arithmeticerror_QcJsjWXxMFpjHfkCIK5ExA Sup;
};
typedef NU8 Gcstrategy_dZWpEuKPYMLPbE41rs2EqQ;
struct  Reprclosure_QK7SSKN8dPEpZedUTVKSLw  {
Cellset_jG87P0AI9aZtss9ccTYBIISQ marked;
NI recdepth;
NI indent;
};
typedef NIM_CHAR TY_JpYObICIkqkM7eHG4jy19aw[60];
typedef NIM_CHAR TY_eVNFTutn6un5gcq48fQLdg[65];
typedef NF TY_yp9a149boki9cCCWgfXI0Ip4A[23];
typedef NIM_CHAR TY_PGLh8drTnaWr3s1qUUSq2Q[500];
struct  Assertionerror_8FC9arcap3s5ZtfMs75krtA  {
  Exception Sup;
};
struct  Valueerror_Gi06FkNeykJn7mrqRZYrkA  {
  Exception Sup;
};
struct  Oserror_3XwRQvmzCEOC4QnT706q1g  {
  Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Sup;
NI32 errorcode;
};
typedef NU8 Filemode_fVUBHvW79bXUw1j55Oo9avSQ;
typedef NimStringDesc* TY_7JTpIvL6tqeRI2Pp9asvFCA[5];
typedef NIM_CHAR TY_PbS9a6gkxCuxWEnFq4lOU9aw[24];
typedef NIM_CHAR TY_hToc9cajraNwyrQdTvLCS3A[116];
struct  Ioerror_9czoZw3pzPyrBmb5zTHY1OQ  {
  Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Sup;
};
typedef NU8 Fileseekpos_I9aQjuvWxs8BspGbxwsngWw;
struct  Keyerror_ifYAhUumNzWR9c9cN9amyJLtg  {
  Valueerror_Gi06FkNeykJn7mrqRZYrkA Sup;
};
typedef NU8 TY_S8ib5N31oJbAkqOZTlNg5Q[8192];
struct  Gcstack_7fytPA5bBsob6See21YMRA  {
Gcstack_7fytPA5bBsob6See21YMRA* prev;
Gcstack_7fytPA5bBsob6See21YMRA* next;
void* starts;
void* pos;
NI maxstacksize;
};
struct  Ropeobj_pk4sC5H3E9ceov4bEasyPVw  {
Ropeobj_pk4sC5H3E9ceov4bEasyPVw* left;
Ropeobj_pk4sC5H3E9ceov4bEasyPVw* right;
NI length;
NimStringDesc* data;
};
struct TY_xyYfiXqv9bXR7uHakYC9cy3A {
  TGenericSeq Sup;
  Ropeobj_pk4sC5H3E9ceov4bEasyPVw* data[SEQ_DECL_SIZE];
};
static N_INLINE(void, initallocator_neD9cJp4S9clvdaq5qqNFZAQsystem)(void);
N_NIMCALL(void, initgc_njssp69aa7hvxte9bJ8uuDcg)(void);
N_NIMCALL(void, init_E1QNZGuo0DGFXyt4Y3MfqA)(Cellseq_Axo1XVm9aaQueTOldv8le5w* s0, NI cap0);
N_LIB_EXPORT N_NOCONV(void*, nimrtl_alloc0)(NI size0);
N_NIMCALL(void*, alloc0_1iQ1Xo9cXsxq509b5gmDHLoQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, NI size0);
N_NIMCALL(void*, alloc_1iQ1Xo9cXsxq509b5gmDHLoQ_2)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, NI size0);
N_NIMCALL(void*, rawalloc_yn9c8RLaS8vgVBeMBfmkdUg)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI requestedsize0);
static N_INLINE(NI, roundup_HS4HdHHFZPftyB49cpIyo7Asystem)(NI x0, NI v0);
N_NIMCALL(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ*, getsmallchunk_h6cvXbfQjxIdThM5GthosA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0);
N_NIMCALL(Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*, getbigchunk_z9bCNjXTYllZ3pI24nEsw2g)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI size0);
static N_INLINE(void, listremove_ZRIe9cFnHOrfvS8VmLduoXQsystem)(Bigchunk_Rv9c70Uhp2TytkX7eH78qEg** head0, Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0);
N_NIMCALL(void, splitchunk_8QXhiy717OAl8WNA2X27EA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0, NI size0);
static N_INLINE(void, updateprevsize_3G5wKZdFZhblebPYdFnpxQsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0, NI prevsize0);
static N_INLINE(NIM_BOOL, isaccessible_5nqar3kL9acJcissrFLDdkwsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, void* p0);
N_NIMCALL(NIM_BOOL, contains_tGsWrN4DY41H9btt3FhjrNA)(Intset_EZObFrE3NC9bIb3YMkY9crZA* s0, NI key0);
N_NIMCALL(Trunk_W0r8S0Y3UGke6T9bIUWnnuw*, intsetget_FhOZKj4Gih3qQ5OimZYOrg)(Intset_EZObFrE3NC9bIb3YMkY9crZA* t0, NI key0);
static N_INLINE(NI, pageindex_bDTXHqSShXKux9bZH4tvkVgsystem)(void* p0);
N_NIMCALL(void, incl_Iz1GYiOVKwItgr5CdCm0dQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Intset_EZObFrE3NC9bIb3YMkY9crZA* s0, NI key0);
N_NIMCALL(Trunk_W0r8S0Y3UGke6T9bIUWnnuw*, intsetput_KWgRM9bUk6rwhAaHSiuK9aYA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Intset_EZObFrE3NC9bIb3YMkY9crZA* t0, NI key0);
N_NIMCALL(void*, llalloc_fTkVQ4Gj2glm9btLqR9bdQDQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI size0);
static N_INLINE(void*, osallocpages_fxkHg9ajpjxOfBTuIyrgEfwsystem)(NI size0);
N_NOINLINE(void, raiseoutofmem_II46IjNZztN9bmbxUD8dt8g)(void);
static N_INLINE(void, inccurrmem_rxjvSU4wRoPOjezLtDzm3Qsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI bytes0);
static N_INLINE(void, zeromem_t0o5XqKanO5QJfXMGEzp2Asystem)(void* p0, NI size0);
static N_INLINE(NI, pageindex_vFgXFo13iF61HsEG6epuwgsystem)(Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c0);
static N_INLINE(void, listadd_ZRIe9cFnHOrfvS8VmLduoXQ_2system)(Bigchunk_Rv9c70Uhp2TytkX7eH78qEg** head0, Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0);
N_NIMCALL(Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*, requestoschunks_z9bCNjXTYllZ3pI24nEsw2g_2)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI size_nndn31exLE0X2ABcjUVOzQ);
static N_INLINE(void*, ostryallocpages_ID9csc9aYiEnjrqnnJOXH2OQsystem)(NI size0);
static N_INLINE(void, listadd_DqXPtLsRUwQp3iwLtHEdIgsystem)(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ** head0, Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* c0);
static N_INLINE(void, listremove_DqXPtLsRUwQp3iwLtHEdIg_2system)(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ** head0, Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* c0);
N_NIMCALL(void, add_Xuf47u3imOz8BOk5HURLWQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Avlnode_IaqjtwKhxLEpvDS9bct9blEw** t0, NI key0, NI upperbound0);
N_NIMCALL(Avlnode_IaqjtwKhxLEpvDS9bct9blEw*, allocavlnode_neSuioWH6NDTp8E9cNgBmjg)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI key0, NI upperbound0);
N_NIMCALL(void, skew_Cfx7NvEVZIhBjBm7i89boSg)(Avlnode_IaqjtwKhxLEpvDS9bct9blEw** t0);
N_NIMCALL(void, split_Cfx7NvEVZIhBjBm7i89boSg_2)(Avlnode_IaqjtwKhxLEpvDS9bct9blEw** t0);
N_NIMCALL(void, init_WHgd5C59bkXWDz3vnAxfzXQ)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0);
N_LIB_EXPORT N_CDECL(void, nimrtl_nimGCvisit)(void* d0, NI op0);
N_NIMCALL(void, dooperation_3F8QeaTyYrJJF2gjBr6b8A)(void* p0, Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ op0);
static N_INLINE(Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr0);
static N_INLINE(void, decref_MV4BBk6J1qu70IbBxwEn4wsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
N_LIB_EXPORT N_CDECL(void, nimrtl_rtlAddZCT)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
N_NOINLINE(void, addzct_fCDI7oO1NNVXXURtxSzsRw)(Cellseq_Axo1XVm9aaQueTOldv8le5w* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
static N_INLINE(void, add_Wcf8r6MCjrJeJ3HSYwSp0Qsystem)(Cellseq_Axo1XVm9aaQueTOldv8le5w* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
N_LIB_EXPORT N_NOCONV(void*, nimrtl_alloc)(NI size0);
static N_INLINE(void, copymem_E1xtACub5WcDa3vbrIXbwgsystem)(void* dest0, void* source0, NI size0);
N_LIB_EXPORT N_NOCONV(void, nimrtl_dealloc)(void* p0);
N_NIMCALL(void, dealloc_jqYVOi4APb9cRx3G9a57AkRw)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, void* p0);
N_NIMCALL(void, rawdealloc_DA62HrGC5sdfCED505KyyQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, void* p0);
static N_INLINE(Basechunk_Sdq7WpT6qAH858F5ZEdG3w*, pageaddr_4uti7hTxTUDxUPqFMgMvHAsystem)(void* p0);
static N_INLINE(NIM_BOOL, issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem)(Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c0);
N_NIMCALL(void, freebigchunk_CAqFS1jFL1RxG80t9bOGmAA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c_Dm5SSuXWIa9cuGiJqMKyKFA);
static N_INLINE(NIM_BOOL, chunkunused_xxNWShoyEPMUVN7FvfpDjw_2system)(Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c0);
N_NIMCALL(void, excl_Z9cZKmN1jjRFCzU0lgW9a1XA)(Intset_EZObFrE3NC9bIb3YMkY9crZA* s0, NI key0);
N_NIMCALL(void, freeoschunks_9bYkqlcspX9aiTE9a83Z3Ocjw)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, void* p0, NI size0);
static N_INLINE(void, osdeallocpages_I1brEDH0C8CP9a0HfGYsDvAsystem)(void* p0, NI size0);
static N_INLINE(void, deccurrmem_rxjvSU4wRoPOjezLtDzm3Q_2system)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI bytes0);
N_NIMCALL(void, del_hPrZ9bxLZK5QpoftxoRaXvA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Avlnode_IaqjtwKhxLEpvDS9bct9blEw** t0, NI x0);
static N_INLINE(void, deallocavlnode_E5Kui5a9artJoR6jEn007Vgsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Avlnode_IaqjtwKhxLEpvDS9bct9blEw* n0);
N_NIMCALL(void, marks_NZr5o3Ubzrci4OmK29cHBJA)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
N_NOINLINE(void, incl_m4q9b16kJJcoKe9c4ERtlpCg)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0);
N_NIMCALL(Pagedesc_fublkgIY4LG3mT51LU2WHg*, cellsetput_mFUFZ7eVLRT9bMaHzrsxFrQ)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* t0, NI key0);
static N_INLINE(NI, nexttry_GRX2KbRyW3mlDDFEU50uhwsystem)(NI h0, NI maxhash0);
N_NIMCALL(void, cellsetenlarge_ZCqaZEiX9aUtDCRoknrJ9bpQ)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* t0);
N_NIMCALL(void, cellsetrawinsert_IccmFuD44fG6qfTRJKp9aSQ)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* t0, Pagedesc_fublkgIY4LG3mT51LU2WHg** data0, Pagedesc_fublkgIY4LG3mT51LU2WHg* desc0);
N_NIMCALL(void, forallchildren_yHFnLgI7q81iFxRlb3Iqlw)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0, Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ op0);
static N_INLINE(void*, celltousr_vA0UG8JLZvpzP1Xf3vkPgwsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0);
N_NIMCALL(void, forallchildrenaux_YOI1Uo54H9aas13WthjhsfA)(void* dest0, TNimType* mt0, Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ op0);
N_NIMCALL(void, forallslotsaux_g4QpsZWzXQMKa0ugIze5Kw)(void* dest0, TNimNode* n0, Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ op0);
N_NIMCALL(TNimNode*, selectbranch_MvIsyjoRI1g7VY9cXrLB1dQ)(void* aa0, TNimNode* n0);
N_NIMCALL(NI, getdiscriminant_wq1GP7ZPZ7P1uZUypfc9ciA)(void* aa0, TNimNode* n0);
N_NIMCALL(NIM_BOOL, containsorincl_CbGEjIBKJIi7knlaDzUluA)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0);
N_NIMCALL(Pagedesc_fublkgIY4LG3mT51LU2WHg*, cellsetget_X4WTfs0wkld8wp8XcE9b8BA)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* t0, NI key0);
static N_NIMCALL(void, Marker_TY_oUKtBcKRdK6usj8RWrlp6A)(void* p, NI op);
static N_NIMCALL(void, T_Q5wkpxktOdTGvlSRo9bzt9aw_4)(void);
N_NIMCALL(void, nimRegisterGlobalMarker)(TY_T4eqaYlFJYZUv9aG9b1TV0bQ markerproc0);
N_LIB_EXPORT N_CDECL(TFrame*, nimrtl_getFrame)(void);
N_LIB_EXPORT N_CDECL(void, nimrtl_popFrame)(void);
N_LIB_EXPORT N_CDECL(void, nimrtl_setFrame)(TFrame* s0);
N_LIB_EXPORT N_CDECL(void, nimrtl_pushSafePoint)(TSafePoint* s0);
N_LIB_EXPORT N_CDECL(void, nimrtl_popSafePoint)(void);
N_LIB_EXPORT N_CDECL(void, nimrtl_pushCurrentException)(Exception* e0);
static N_INLINE(void, asgnRef)(void** dest0, void* src0);
static N_INLINE(void, incref_9cAA5YuQAAC3MVbnGeV86swsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
N_LIB_EXPORT N_CDECL(void, nimrtl_popCurrentException)(void);
N_LIB_EXPORT N_CDECL(void, nimrtl_raiseException)(Exception* e0, NCSTRING ename0);
N_NIMCALL(void, raiseexceptionaux_jP8mO9c3YubVoLarNIvGorQ)(Exception* e0);
static N_INLINE(NIM_BOOL, isObjWithCache)(TNimType* obj0, TNimType* subclass0, TNimType** cache0);
N_NOINLINE(NIM_BOOL, isobjslowpath_k9bdq9bQE075AR7scLFt5wIg)(TNimType* obj0, TNimType* subclass0, TNimType** cache0);
N_NIMCALL(void, showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ)(NCSTRING data0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_cstrToNimstr)(NCSTRING str0);
N_NIMCALL(NimStringDesc*, toNimStr)(NCSTRING str0, NI len0);
N_NIMCALL(NimStringDesc*, rawNewStringNoInit)(NI space0);
N_LIB_EXPORT N_CDECL(void*, nimrtl_newObjNoInit)(TNimType* typ0, NI size0);
N_NIMCALL(void*, rawnewobj_QBPo5VW2O56Eeh8hPbQ7Pg)(TNimType* typ0, NI size0, Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
N_NIMCALL(void, collectct_zoTIuavlrCHyw3B8MBaLJA)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
N_NOINLINE(NI, stacksize_IV9bgfYkinlae0WZ2NZi5JA)(void);
static N_INLINE(NI, getoccupiedmem_61WxanWSOmDDV2uI7O10dQsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0);
N_NIMCALL(void, collectctbody_zoTIuavlrCHyw3B8MBaLJA_2)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
static N_INLINE(void, prepareforinteriorpointerchecking_Zqr3EQAAcehIfp3uSECEuQsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0);
N_NIMCALL(NI, lowgauge_3mwQtFaBTgevFrybZdgUNw)(Avlnode_IaqjtwKhxLEpvDS9bct9blEw* n0);
N_NIMCALL(NI, highgauge_3mwQtFaBTgevFrybZdgUNw_2)(Avlnode_IaqjtwKhxLEpvDS9bct9blEw* n0);
N_CDECL(void, markstackandregisters_LdwvBL9bC9c0lik7K9bau9bX0Q)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
static N_INLINE(void, gcmark_JLiT51Zk6OLnaexGSTHHEQsystem)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0, void* p0);
N_NIMCALL(void*, interiorallocatedptr_N7XNyRgfMLnCjS9bVeVc3bA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, void* p0);
N_NIMCALL(Avlnode_IaqjtwKhxLEpvDS9bct9blEw*, inrange_Bc4Ua6HOMCIDGx9b15HSY4g)(Avlnode_IaqjtwKhxLEpvDS9bct9blEw* root0, NI key0);
N_NIMCALL(NIM_BOOL, collectzct_evVbQ9bNF7LYMhoG9aWXu9bKw)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
N_NIMCALL(void, preparedealloc_0Ao1u9cpV0dTuUB5G9cEQ8eQ)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0);
N_NIMCALL(void, collectcycles_zoTIuavlrCHyw3B8MBaLJA_3)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
N_NIMCALL(void, cellsetreset_WHgd5C59bkXWDz3vnAxfzXQ_2)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0);
N_NIMCALL(void, deinit_WHgd5C59bkXWDz3vnAxfzXQ_3)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0);
N_NIMCALL(void, markglobals_zoTIuavlrCHyw3B8MBaLJA_4)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
N_NIMCALL(void, sweep_zoTIuavlrCHyw3B8MBaLJA_5)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
static N_INLINE(NIM_BOOL, iscell_CkuKXXC4hAqaVj8vwjANDAsystem)(void* p0);
N_NIMCALL(NIM_BOOL, contains_9c4TZ2Zl3sU4TUeK9bR8E9ciw)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0);
N_NIMCALL(void, freecycliccell_NZr5o3Ubzrci4OmK29cHBJA_2)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
N_LIB_EXPORT N_CDECL(NI, nimrtl_getOccupiedMem)(void);
N_LIB_EXPORT N_CDECL(NI, nimrtl_getTotalMem)(void);
N_LIB_EXPORT N_CDECL(NI, nimrtl_getFreeMem)(void);
N_NIMCALL(void, unmarkstackandregisters_zoTIuavlrCHyw3B8MBaLJA_6)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
static N_INLINE(void, addnewobjtozct_Ga5iPZj9bPFJIiW7GQdxs7gsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* res0, Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
N_NIMCALL(void, writetostderr_7HRVfGfZT2rSmBdcLxl8TA)(NCSTRING msg0);
N_NIMCALL(void, write_ADGLlEJAOtGNWWur8rrJfg)(FILE* f0, NCSTRING c0);
static N_INLINE(void, quitordebug_IZ2oOmqdsYQ7vixQGKSDcAsystem)(void);
N_LIB_EXPORT N_CDECL(void, nimrtl_reraiseException)(void);
static N_INLINE(void, sysfatal_gu8AGlf3JTsS25q0fXJFMAsystem)(NimStringDesc* message0) __attribute__((noreturn));
static N_NIMCALL(void, Marker_TY_beOxjNaux3PfvyYBLMJh2A)(void* p, NI op);
N_LIB_EXPORT N_CDECL(void*, nimrtl_newObj)(TNimType* typ0, NI size0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_copyStringRC1)(NimStringDesc* src0);
N_LIB_EXPORT N_CDECL(void*, nimrtl_newObjRC1)(TNimType* typ0, NI size0);
static N_INLINE(void, nimGCunrefNoCycle)(void* p0);
N_LIB_EXPORT N_CDECL(void, nimFrame)(TFrame* s0);
N_NOINLINE(void, stackoverflow_II46IjNZztN9bmbxUD8dt8g_2)(void);
N_NIMCALL(void, writestacktrace_njssp69aa7hvxte9bJ8uuDcg_2)(void);
N_NOCONV(void, signalHandler)(int sign0);
N_NIMCALL(void, registersignalhandler_njssp69aa7hvxte9bJ8uuDcg_3)(void);
N_LIB_EXPORT N_NOCONV(void*, nimrtl_realloc)(void* p0, NI newsize0);
N_NIMCALL(void*, realloc_VulJXuP1lnxqX5IZabvYLQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, void* p0, NI newsize0);
N_NIMCALL(NI, ptrsize_FVy3yH9cNo61BYTEPuP9awLA)(void* p0);
N_LIB_EXPORT N_NOCONV(void*, nimrtl_allocShared)(NI size0);
N_LIB_EXPORT N_NOCONV(void*, nimrtl_allocShared0)(NI size0);
N_LIB_EXPORT N_NOCONV(void, nimrtl_deallocShared)(void* p0);
N_LIB_EXPORT N_NOCONV(void*, nimrtl_reallocShared)(void* p0, NI newsize0);
N_NIMCALL(NI, getRefcount)(void* p0);
N_LIB_EXPORT N_CDECL(void, nimrtl_rtlAddCycleRoot)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
N_LIB_EXPORT N_CDECL(void*, nimrtl_newSeq)(TNimType* typ0, NI len0);
static N_INLINE(NI, addInt)(NI a0, NI b0);
N_NOINLINE(void, raiseOverflow)(void);
static N_INLINE(void, sysfatal_cjY6dGD4PiJNY9cmtw6Ay8Qsystem)(NimStringDesc* message0) __attribute__((noreturn));
static N_NIMCALL(void, Marker_TY_6woiEp3hwhYMr1p5tjkZvA)(void* p, NI op);
N_NIMCALL(NI, mulInt)(NI a0, NI b0);
N_LIB_EXPORT N_CDECL(void*, nimrtl_newSeqRC1)(TNimType* typ0, NI len0);
N_LIB_EXPORT N_CDECL(void*, nimrtl_growObj)(void* old0, NI newsize0);
N_NIMCALL(void*, growobj_FZeyQYjWPcE9c06y1gNqZxw)(void* old0, NI newsize0, Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
N_LIB_EXPORT N_NOINLINE(void, nimrtl_setStackBottom)(void* thestackbottom0);
N_LIB_EXPORT N_CDECL(void, nimrtl_GC_disable)(void);
N_LIB_EXPORT N_CDECL(void, nimrtl_GC_enable)(void);
N_LIB_EXPORT N_CDECL(void, nimrtl_GC_setStrategy)(Gcstrategy_dZWpEuKPYMLPbE41rs2EqQ strategy0);
N_LIB_EXPORT N_CDECL(void, nimrtl_GC_enableMarkAndSweep)(void);
N_LIB_EXPORT N_CDECL(void, nimrtl_GC_disableMarkAndSweep)(void);
N_LIB_EXPORT N_CDECL(void, nimrtl_GC_fullCollect)(void);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_GC_getStatistics)(void);
static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_nimIntToStr)(NI x0);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space0);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap0);
N_NIMCALL(void, add_IbYQ9cTcoQ89aIwM2IEYGMng)(NimStringDesc** result0, NI64 x0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_setLengthStr)(NimStringDesc* s0, NI newlen0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_resizeString)(NimStringDesc* dest0, NI addlen0);
static N_INLINE(NI, resize_bzF9a0JivP3Z4njqaxuLc5wsystem)(NI old0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_nimInt64ToStr)(NI64 x0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_copyString)(NimStringDesc* src0);
N_LIB_EXPORT N_CDECL(TGenericSeq*, nimrtl_setLengthSeq)(TGenericSeq* seq0, NI elemsize0, NI newlen0);
N_NIMCALL(TNimType*, extGetCellType)(void* c0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_nimBoolToStr)(NIM_BOOL x0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_nimCharToStr)(NIM_CHAR x0);
N_NIMCALL(NimStringDesc*, mnewString)(NI len0);
N_NIMCALL(NimStringDesc*, mnewString)(NI len0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprAny)(void* p_wQ0AirgOVjy3hY8APGd1OA, TNimType* typ0);
N_NIMCALL(void, initreprclosure_1SAi9bV4Tf9boSCAkLYGFXoA)(Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0);
N_NIMCALL(void, repraux_e9bayrEsuZxZS2R51iDjmHQ)(NimStringDesc** result0, void* p0, TNimType* typ0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0);
N_NIMCALL(void, reprsetaux_hUJOLGug9apUf00OJCE66qg)(NimStringDesc** result0, void* p0, TNimType* typ0);
N_NIMCALL(void, addsetelem_Kn6x9bywsw6UYG9beY19cFc8Q)(NimStringDesc** result0, NI elem0, TNimType* typ0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprEnum)(NI e0, TNimType* typ0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprBool)(NIM_BOOL x0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprChar)(NIM_CHAR x0);
N_NIMCALL(NimStringDesc*, reprInt)(NI64 x0);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s0, NIM_CHAR c0);
N_NIMCALL(void, reprarray_e9bayrEsuZxZS2R51iDjmHQ_2)(NimStringDesc** result0, void* p0, TNimType* typ0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0);
N_NIMCALL(void, reprrecord_e9bayrEsuZxZS2R51iDjmHQ_3)(NimStringDesc** result0, void* p0, TNimType* typ0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0);
N_NIMCALL(void, reprrecordaux_DwhuG4GTpS9cHlrxP9c9cKltQ)(NimStringDesc** result0, void* p0, TNimNode* n0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0);
N_NIMCALL(void, reprref_e9bayrEsuZxZS2R51iDjmHQ_4)(NimStringDesc** result0, void* p0, TNimType* typ0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0);
N_NIMCALL(NimStringDesc*, reprPointer)(void* x0);
N_NIMCALL(void, reprsequence_e9bayrEsuZxZS2R51iDjmHQ_5)(NimStringDesc** result0, void* p0, TNimType* typ0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0);
N_NIMCALL(NimStringDesc*, HEX24_rzAI8EMyNBAQwGODeohhAA)(NU64 x0);
N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f0);
N_NIMCALL(void, add_A9bDQDKw5SEqD3OvtOnC1bg)(NimStringDesc** result0, NF x0);
N_NIMCALL(void, add_XyS0BXa1E5ylXzhvUQlY9cg)(NimStringDesc** x0, NCSTRING y0);
N_NIMCALL(void, reprstraux_Q29a35u9ahpdy8q2BYxAjP7g)(NimStringDesc** result0, NimStringDesc* s0);
N_NIMCALL(void, deinitreprclosure_1SAi9bV4Tf9boSCAkLYGFXoA_2)(Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprStr)(NimStringDesc* s0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprSet)(void* p0, TNimType* typ0);
N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprOpenArray)(void* p0, NI length0, TNimType* elemtyp0);
N_LIB_EXPORT N_CDECL(Exception*, nimrtl_getCurrentException)(void);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI start_WPWyPKk58Cr5a6XFFviMjg, NI last0);
static N_INLINE(void, sysfatal_mWrNPcJugise9aqN0yGByGwsystem)(NimStringDesc* message0) __attribute__((noreturn));
static N_NIMCALL(void, Marker_TY_TmgWlPUbRr7iGD2UE1cu6A)(void* p, NI op);
N_NOINLINE(NIM_BOOL, isonstack_dJJW59cIgsBmT59aZrOM71Mg)(void* p0);
static N_NIMCALL(void, Marker_TY_yCEN9anxCD6mzBxGjuaRBdg)(void* p, NI op);
N_NIMCALL(void, genericassignaux_T3cq9aUp9bgGOBuyUSWGriTA)(void* dest0, void* src0, TNimType* mt0, NIM_BOOL shallow0);
N_NIMCALL(void, unsureAsgnRef)(void** dest0, void* src0);
N_NIMCALL(void, genericassignaux_ulsQvfENf9buS9atYunbm7gA)(void* dest0, void* src0, TNimNode* n0, NIM_BOOL shallow0);
N_NIMCALL(void, genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw)(void* dest0, TNimNode* n0);
N_NIMCALL(void, genericReset)(void* dest0, TNimType* mt0);
static N_INLINE(void, sysfatal_i2L89a3lg6SlU5J9amD3c3ewsystem)(NimStringDesc* message0) __attribute__((noreturn));
static N_NIMCALL(void, Marker_TY_Qx9aKy4vZ9bVz9bnG9brQcRHGA)(void* p, NI op);
N_NIMCALL(int, getfilehandle_bZ9c2yojtXoDTUpfyl8h8Rg)(FILE* f0);
N_NIMCALL(NIM_BOOL, Sisdir_d3VjrxKEcTiZFt3rBmmjcA)(mode_t m0);
N_NIMCALL(void, close_BWnr8V7RERYno9bIdPmw8Hw)(FILE* f0);
static N_NIMCALL(void, Marker_TY_HX2M9cQhE3jaovp9aYJDdslA)(void* p, NI op);
N_NIMCALL(NI64, getfilepos_XePgC9ccBXCgb9bEHXZpnMqA_2)(FILE* f0);
N_NOINLINE(void, raiseeio_PpfSiTIeNpMAb9a5o6SglJw_2)(NimStringDesc* msg0) __attribute__((noreturn));
static N_INLINE(void, sysfatal_orK8PicRB9bj8BG69bF8HQbwsystem)(NimStringDesc* message0) __attribute__((noreturn));
N_NIMCALL(void, setfilepos_YAngY19cHH2nZ9bqhMgAHz8Q)(FILE* f0, NI64 pos0, Fileseekpos_I9aQjuvWxs8BspGbxwsngWw relativeto0);
static N_NIMCALL(void, Marker_TY_axqhRnwd09cVJkRcojfw6mA)(void* p, NI op);
N_NIMCALL(NI, countBits32)(NI32 n0);
N_NIMCALL(NIM_BOOL, open_sEp0GH2306oGo9bqBpj5oTQ)(FILE** f0, NimStringDesc* filename0, Filemode_fVUBHvW79bXUw1j55Oo9avSQ mode0, NI bufsize0);
N_NIMCALL(NimStringDesc*, readall_y7iEIBoIrYlvsLCqA1SrwQ)(FILE* file0);
N_NIMCALL(NI, rawfilesize_jO6UN73ASx5jqerEr5FqZg)(FILE* file0);
N_NIMCALL(NimStringDesc*, readallfile_nEoG9c9aoJvOPVkq2dsFRb5Q)(FILE* file0, NI len0);
N_NIMCALL(NI, readbuffer_1qjbrvfnPD4PaIieHVDvhw)(FILE* f0, void* buffer0, NI len0);
N_NIMCALL(NIM_BOOL, endoffile_OpxMRqWNQzmofyVQsNQqVA)(FILE* f0);
N_NIMCALL(NimStringDesc*, readallbuffer_QygGtYi2d8AILktDeUIkvQ)(FILE* file0);
static N_INLINE(void, sysfatal_p4l3kdztdOPD3nsQRAEDqwsystem)(NimStringDesc* message0, NimStringDesc* arg0) __attribute__((noreturn));
static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0);
N_NIMCALL(void, write_c4mGyJBvK73pdM22jiweKQ)(FILE* f0, NimStringDesc* s0);
N_NIMCALL(NI, writebuffer_1qjbrvfnPD4PaIieHVDvhw_2)(FILE* f0, void* buffer0, NI len0);
static N_NIMCALL(void, Marker_TY_xyYfiXqv9bXR7uHakYC9cy3A)(void* p, NI op);
NIM_BOOL nimvm_IAxmsqnME4Jmed24hOgrFQ;
NI nim_program_result;
TY_hgOQFBQi19biNdOUUkFOOxA globalraisehook_JbO1ti4ULxrw54m4zNPbpA;
TY_hgOQFBQi19biNdOUUkFOOxA localraisehook_EIvMhANBvB9cp2Ezvt29cADg;
TY_T4eqaYlFJYZUv9aG9b1TV0bQ outofmemhook_kZNaA7u1MfSW5ZeoGvw8xg;
TNimType strdesc_D0UzA4zsDu5tgpJQ9a9clXPg;
TY_W6IXMh2CA4X1rFYGjUb4yg errormessagewriter_ZXnv0JyrWe3HTd07wpSr7A;
TFrame* frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw;
TSafePoint* exchandler_rqLlY5bs9atDw2OXYqJEn5g;
Exception* currexception_9bVPeDJlYTi9bQApZpfH8wjg;
TNimType NTI_13RNkKqUOX1TtorOUlKtqA;
TNimType NTI_bAvOj2UcojKN87yAQLs0aw;
TNimType NTI_S9agCYBinaYZnGWcjTdxclg;
TNimType NTI_77mFvmsOLKik79ci2hXkHEg;
TNimType NTI_oUKtBcKRdK6usj8RWrlp6A;
TY_pFdcUVk36Xt0LD9bLg3YaIQ tempframes_7nBYIr2UsDREpYylZK4fug;
TNimType NTI_Fjf9b9b2IlzRO2tspHxG3tgg;
TNimType NTI_NrupLB36t9bV7iFDHtrF69aw;
static TNimType* Nim_OfCheck_CACHE8[2];
TNimType NTI_GRbrBa7JIulgD34jGcFb8w;
TNimType NTI_beOxjNaux3PfvyYBLMJh2A;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw bottomdata_BPOhZntfu5k9cx0Mom9aGo0A;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw* bottom_KT33MhtjYZUZyUdbeLIpkg;
Gcheap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
NI globalmarkerslen_hgEFy3UCOBoalBh29asu5MA;
TY_r9aAb9cuhoh9cb9a123KVuMchQ globalmarkers_5ghwSgpo9cT9bT7YStQDJHVQ;
TNimType NTI_QcJsjWXxMFpjHfkCIK5ExA;
TNimType NTI_I3Jtn27626sFBOls6BBQ2Q;
TNimType NTI_6woiEp3hwhYMr1p5tjkZvA;
TNimType NTI_8FC9arcap3s5ZtfMs75krtA;
TNimType NTI_TmgWlPUbRr7iGD2UE1cu6A;
TNimType NTI_Gi06FkNeykJn7mrqRZYrkA;
TNimType NTI_yCEN9anxCD6mzBxGjuaRBdg;
TNimType NTI_rR5Bzr1D5krxoo1NcNyeMA;
TNimType NTI_Uk8TiHqxGdO37NabyvfS5g;
TNimType NTI_LBgXxpmYOpS8xroRZgNvbg;
TNimType NTI_Gz6vwaK0PZQIDIwfuvKsOg;
TNimType NTI_DcZ5N67dL3rBj9bxGtx09bFg;
TNimType NTI_g9buja9c9aeh0rkDpqsXOJF9bA;
TNimType NTI_VaVACK0bpYmqIQ0mKcHfQQ;
TNimType NTI_3XwRQvmzCEOC4QnT706q1g;
TNimType NTI_sVg18TP9cLifHyygRe9cro9aA;
TNimType NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA;
TNimType NTI_9czoZw3pzPyrBmb5zTHY1OQ;
TNimType NTI_HX2M9cQhE3jaovp9aYJDdslA;
TNimType NTI_ifYAhUumNzWR9c9cN9amyJLtg;
TNimType NTI_axqhRnwd09cVJkRcojfw6mA;
TNimType NTI_nmiMWKVIe46vacnhAFrQvw;
TNimType NTI_a9bIsIkdQvQMv0xYGrfgSag;
extern TNimType NTI_VYsfqmmqchsY5XzU9aJJBBA;
TNimType NTI_xyYfiXqv9bXR7uHakYC9cy3A;
TNimType NTI_UtShRB9b1wZO9cvpdowm9cefA;
TNimType NTI_nlCscttRCss70IBTyuBqnA;
TNimType NTI_9bz2muykEFR6eMHxLnfcjxA;
TNimType NTI_7BHnQsEj49a9c6QtudqWTo1w;
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_2, "out of memory", 13);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_5, "[GC] cannot register global variable; too many global variables", 63);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_8, "no exception to reraise", 23);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_9, "over- or underflow", 18);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_10, "[GC] total memory: ", 19);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_11, "\012[GC] occupied memory: ", 23);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_12, "\012[GC] stack scans: ", 19);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_13, "\012[GC] stack cells: ", 19);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_14, "\012[GC] cycle collections: ", 25);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_15, "\012[GC] max threshold: ", 21);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_16, "\012[GC] zct capacity: ", 20);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_17, "\012[GC] max cycle table size: ", 28);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_18, "\012[GC] max pause time [ms]: ", 27);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_19, "\012", 1);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_20, "[GC] max stack size: ", 21);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_21, "true", 4);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_22, "false", 5);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_23, "", 0);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_24, "...", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_25, "{", 1);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_26, ", ", 2);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_27, " (invalid data!)", 16);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_28, "\'", 1);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_29, "\\\"", 2);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_30, "\\\\", 2);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_31, "\\", 1);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_32, "}", 1);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_33, "[", 1);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_34, "]", 1);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_35, " = ", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_36, ",\012", 2);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_37, "nil", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_38, "ref ", 4);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_39, " --> ", 5);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_40, "0", 1);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_41, "nan", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_42, "-inf", 4);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_43, "inf", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_44, "\"", 1);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_45, "\\10\"\012\"", 6);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_46, "(invalid data!)", 15);
NIM_CONST TY_yp9a149boki9cCCWgfXI0Ip4A powtens_l8b44pimyaWe7sztIOF1Tw = {1.0000000000000000e+00,
1.0000000000000000e+01,
1.0000000000000000e+02,
1.0000000000000000e+03,
1.0000000000000000e+04,
1.0000000000000000e+05,
1.0000000000000000e+06,
1.0000000000000000e+07,
1.0000000000000000e+08,
1.0000000000000000e+09,
1.0000000000000000e+10,
1.0000000000000000e+11,
1.0000000000000000e+12,
1.0000000000000000e+13,
1.0000000000000000e+14,
1.0000000000000000e+15,
1.0000000000000000e+16,
1.0000000000000000e+17,
1.0000000000000000e+18,
1.0000000000000000e+19,
1.0000000000000000e+20,
1.0000000000000000e+21,
1.0000000000000000e+22}
;
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_47, "attempt to write to a nil address", 33);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_48, "rb", 2);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_49, "wb", 2);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_50, "w+b", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_51, "r+b", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_52, "ab", 2);
NIM_CONST TY_7JTpIvL6tqeRI2Pp9asvFCA Formatopen_129cS4U5eK4wWqE9bNeKN1Aw = {((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_48),
((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_49),
((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_50),
((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_51),
((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_52)}
;
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_53, "cannot retrieve file position", 29);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_54, "cannot set file position", 24);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_56, "error while reading from file", 29);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_57, "cannot open: ", 13);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_59, "cannot write string to file", 27);

static N_INLINE(void, initallocator_neD9cJp4S9clvdaq5qqNFZAQsystem)(void) {
	bottom_KT33MhtjYZUZyUdbeLIpkg = (&bottomdata_BPOhZntfu5k9cx0Mom9aGo0A);
	(*bottom_KT33MhtjYZUZyUdbeLIpkg).link[(((NI) 0))- 0] = bottom_KT33MhtjYZUZyUdbeLIpkg;
	(*bottom_KT33MhtjYZUZyUdbeLIpkg).link[(((NI) 1))- 0] = bottom_KT33MhtjYZUZyUdbeLIpkg;
}

static N_INLINE(NI, roundup_HS4HdHHFZPftyB49cpIyo7Asystem)(NI x0, NI v0) {
	NI result0;
	result0 = (NI)0;
	result0 = (NI)((NI)(x0 + (NI)(v0 - ((NI) 1))) & (NI)((NU64) ~((NI)(v0 - ((NI) 1)))));
	return result0;
}

static N_INLINE(void, listremove_ZRIe9cFnHOrfvS8VmLduoXQsystem)(Bigchunk_Rv9c70Uhp2TytkX7eH78qEg** head0, Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0) {
	{
		if (!(c0 == (*head0))) goto LA3;
		(*head0) = (*c0).next;
		{
			if (!!(((*head0) == NIM_NIL))) goto LA7;
			(*(*head0)).prev = NIM_NIL;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		(*(*c0).prev).next = (*c0).next;
		{
			if (!!(((*c0).next == NIM_NIL))) goto LA12;
			(*(*c0).next).prev = (*c0).prev;
		}
		LA12: ;
	}
	LA1: ;
	(*c0).next = NIM_NIL;
	(*c0).prev = NIM_NIL;
}

N_NIMCALL(Trunk_W0r8S0Y3UGke6T9bIUWnnuw*, intsetget_FhOZKj4Gih3qQ5OimZYOrg)(Intset_EZObFrE3NC9bIb3YMkY9crZA* t0, NI key0) {
	Trunk_W0r8S0Y3UGke6T9bIUWnnuw* result0;
	Trunk_W0r8S0Y3UGke6T9bIUWnnuw* it0;
{	result0 = (Trunk_W0r8S0Y3UGke6T9bIUWnnuw*)0;
	it0 = (*t0).data[((NI)(key0 & ((NI) 255)))- 0];
	{
		while (1) {
			if (!!((it0 == NIM_NIL))) goto LA2;
			{
				if (!((*it0).key == key0)) goto LA5;
				result0 = it0;
				goto BeforeRet;
			}
			LA5: ;
			it0 = (*it0).next;
		} LA2: ;
	}
	result0 = NIM_NIL;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, contains_tGsWrN4DY41H9btt3FhjrNA)(Intset_EZObFrE3NC9bIb3YMkY9crZA* s0, NI key0) {
	NIM_BOOL result0;
	Trunk_W0r8S0Y3UGke6T9bIUWnnuw* t0;
	result0 = (NIM_BOOL)0;
	t0 = intsetget_FhOZKj4Gih3qQ5OimZYOrg(s0, (NI)((NU64)(key0) >> (NU64)(((NI) 9))));
	{
		NI u0;
		if (!!((t0 == NIM_NIL))) goto LA3;
		u0 = (NI)(key0 & ((NI) 511));
		result0 = !(((NI)((*t0).bits[((NI)((NU64)(((NI) (u0))) >> (NU64)(((NI) 6))))- 0] & (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(((NI) (u0)) & ((NI) 63))))))) == ((NI) 0)));
	}
	goto LA1;
	LA3: ;
	{
		result0 = NIM_FALSE;
	}
	LA1: ;
	return result0;
}

static N_INLINE(NI, pageindex_bDTXHqSShXKux9bZH4tvkVgsystem)(void* p0) {
	NI result0;
	result0 = (NI)0;
	result0 = (NI)((NU64)(((NI) (p0))) >> (NU64)(((NI) 12)));
	return result0;
}

static N_INLINE(NIM_BOOL, isaccessible_5nqar3kL9acJcissrFLDdkwsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, void* p0) {
	NIM_BOOL result0;
	NI LOC1;
	result0 = (NIM_BOOL)0;
	LOC1 = (NI)0;
	LOC1 = pageindex_bDTXHqSShXKux9bZH4tvkVgsystem(p0);
	result0 = contains_tGsWrN4DY41H9btt3FhjrNA((&(*a0).chunkstarts), LOC1);
	return result0;
}

static N_INLINE(void, updateprevsize_3G5wKZdFZhblebPYdFnpxQsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0, NI prevsize0) {
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* ri0;
	ri0 = ((Basechunk_Sdq7WpT6qAH858F5ZEdG3w*) ((NI)((NU64)(((NI) (c0))) + (NU64)((*c0).Sup.size))));
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = isaccessible_5nqar3kL9acJcissrFLDdkwsystem((&(*a0)), ((void*) (ri0)));
		if (!LOC3) goto LA4;
		(*ri0).prevsize = prevsize0;
	}
	LA4: ;
}

N_NOINLINE(void, raiseoutofmem_II46IjNZztN9bmbxUD8dt8g)(void) {
	{
		if (!!((outofmemhook_kZNaA7u1MfSW5ZeoGvw8xg == NIM_NIL))) goto LA3;
		outofmemhook_kZNaA7u1MfSW5ZeoGvw8xg();
	}
	LA3: ;
	printf("%s\012", ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_2)? (((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_2))->data:"nil");
	fflush(stdout);
	exit(((NI) 1));
}

static N_INLINE(void*, osallocpages_fxkHg9ajpjxOfBTuIyrgEfwsystem)(NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = mmap(NIM_NIL, size0, ((int) 3), ((int) 34), ((int) -1), ((NI) 0));
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = (result0 == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = (result0 == ((void*) -1));
		LA4: ;
		if (!LOC3) goto LA5;
		raiseoutofmem_II46IjNZztN9bmbxUD8dt8g();
	}
	LA5: ;
	return result0;
}

static N_INLINE(void, inccurrmem_rxjvSU4wRoPOjezLtDzm3Qsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI bytes0) {
	(*a0).currmem += bytes0;
}

static N_INLINE(void, zeromem_t0o5XqKanO5QJfXMGEzp2Asystem)(void* p0, NI size0) {
	void* LOC1;
	LOC1 = (void*)0;
	LOC1 = memset(p0, ((int) 0), ((size_t) (size0)));
}

N_NIMCALL(void*, llalloc_fTkVQ4Gj2glm9btLqR9bdQDQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI size0) {
	void* result0;
	result0 = (void*)0;
	{
		NIM_BOOL LOC3;
		Llchunk_XsENErzHIZV9bhvyJx56wGw* old0;
		void* LOC7;
		LOC3 = (NIM_BOOL)0;
		LOC3 = ((*a0).llmem == NIM_NIL);
		if (LOC3) goto LA4;
		LOC3 = ((*(*a0).llmem).size < size0);
		LA4: ;
		if (!LOC3) goto LA5;
		old0 = (*a0).llmem;
		LOC7 = (void*)0;
		LOC7 = osallocpages_fxkHg9ajpjxOfBTuIyrgEfwsystem(((NI) 4096));
		(*a0).llmem = ((Llchunk_XsENErzHIZV9bhvyJx56wGw*) (LOC7));
		inccurrmem_rxjvSU4wRoPOjezLtDzm3Qsystem(a0, ((NI) 4096));
		(*(*a0).llmem).size = (NI)(((NI) 4096) - ((NI)sizeof(Llchunk_XsENErzHIZV9bhvyJx56wGw)));
		(*(*a0).llmem).acc = ((NI)sizeof(Llchunk_XsENErzHIZV9bhvyJx56wGw));
		(*(*a0).llmem).next = old0;
	}
	LA5: ;
	result0 = ((void*) ((NI)(((NI) ((*a0).llmem)) + (*(*a0).llmem).acc)));
	(*(*a0).llmem).size -= size0;
	(*(*a0).llmem).acc += size0;
	zeromem_t0o5XqKanO5QJfXMGEzp2Asystem(result0, ((NI) (size0)));
	return result0;
}

N_NIMCALL(Trunk_W0r8S0Y3UGke6T9bIUWnnuw*, intsetput_KWgRM9bUk6rwhAaHSiuK9aYA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Intset_EZObFrE3NC9bIb3YMkY9crZA* t0, NI key0) {
	Trunk_W0r8S0Y3UGke6T9bIUWnnuw* result0;
	result0 = (Trunk_W0r8S0Y3UGke6T9bIUWnnuw*)0;
	result0 = intsetget_FhOZKj4Gih3qQ5OimZYOrg((&(*t0)), key0);
	{
		void* LOC5;
		if (!(result0 == NIM_NIL)) goto LA3;
		LOC5 = (void*)0;
		LOC5 = llalloc_fTkVQ4Gj2glm9btLqR9bdQDQ(a0, ((NI)sizeof(Trunk_W0r8S0Y3UGke6T9bIUWnnuw)));
		result0 = ((Trunk_W0r8S0Y3UGke6T9bIUWnnuw*) (LOC5));
		(*result0).next = (*t0).data[((NI)(key0 & ((NI) 255)))- 0];
		(*t0).data[((NI)(key0 & ((NI) 255)))- 0] = result0;
		(*result0).key = key0;
	}
	LA3: ;
	return result0;
}

N_NIMCALL(void, incl_Iz1GYiOVKwItgr5CdCm0dQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Intset_EZObFrE3NC9bIb3YMkY9crZA* s0, NI key0) {
	Trunk_W0r8S0Y3UGke6T9bIUWnnuw* t0;
	NI u0;
	t0 = intsetput_KWgRM9bUk6rwhAaHSiuK9aYA(a0, s0, (NI)((NU64)(key0) >> (NU64)(((NI) 9))));
	u0 = (NI)(key0 & ((NI) 511));
	(*t0).bits[((NI)((NU64)(((NI) (u0))) >> (NU64)(((NI) 6))))- 0] = (NI)((*t0).bits[((NI)((NU64)(((NI) (u0))) >> (NU64)(((NI) 6))))- 0] | (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(((NI) (u0)) & ((NI) 63)))))));
}

static N_INLINE(NI, pageindex_vFgXFo13iF61HsEG6epuwgsystem)(Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c0) {
	NI result0;
	result0 = (NI)0;
	result0 = (NI)((NU64)(((NI) (c0))) >> (NU64)(((NI) 12)));
	return result0;
}

static N_INLINE(void, listadd_ZRIe9cFnHOrfvS8VmLduoXQ_2system)(Bigchunk_Rv9c70Uhp2TytkX7eH78qEg** head0, Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0) {
	(*c0).next = (*head0);
	{
		if (!!(((*head0) == NIM_NIL))) goto LA3;
		(*(*head0)).prev = c0;
	}
	LA3: ;
	(*head0) = c0;
}

N_NIMCALL(void, splitchunk_8QXhiy717OAl8WNA2X27EA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0, NI size0) {
	Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* rest0;
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* LOC1;
	NI LOC2;
	rest0 = ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) ((NI)((NU64)(((NI) (c0))) + (NU64)(size0))));
	(*rest0).Sup.size = (NI)((*c0).Sup.size - size0);
	(*rest0).Sup.used = NIM_FALSE;
	(*rest0).next = NIM_NIL;
	(*rest0).prev = NIM_NIL;
	(*rest0).Sup.prevsize = size0;
	updateprevsize_3G5wKZdFZhblebPYdFnpxQsystem(a0, c0, (*rest0).Sup.size);
	(*c0).Sup.size = size0;
	LOC1 = (Basechunk_Sdq7WpT6qAH858F5ZEdG3w*)0;
	LOC1 = &rest0->Sup;
	LOC2 = (NI)0;
	LOC2 = pageindex_vFgXFo13iF61HsEG6epuwgsystem(LOC1);
	incl_Iz1GYiOVKwItgr5CdCm0dQ(a0, (&(*a0).chunkstarts), LOC2);
	listadd_ZRIe9cFnHOrfvS8VmLduoXQ_2system(&(*a0).freechunkslist, rest0);
}

static N_INLINE(void*, ostryallocpages_ID9csc9aYiEnjrqnnJOXH2OQsystem)(NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = mmap(NIM_NIL, size0, ((int) 3), ((int) 34), ((int) -1), ((NI) 0));
	{
		if (!(result0 == ((void*) -1))) goto LA3;
		result0 = NIM_NIL;
	}
	LA3: ;
	return result0;
}

N_NIMCALL(Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*, requestoschunks_z9bCNjXTYllZ3pI24nEsw2g_2)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI size_nndn31exLE0X2ABcjUVOzQ) {
	Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* result0;
	NI size0;
	NI nxt0;
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* next0;
	NI lastsize0;
	NI prv0;
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* prev0;
	result0 = (Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*)0;
	{
		if (!!((*a0).blockchunksizeincrease)) goto LA3;
		{
			if (!((*a0).currmem < ((NI) 65536))) goto LA7;
			(*a0).nextchunksize = ((NI) 16384);
		}
		goto LA5;
		LA7: ;
		{
			(*a0).nextchunksize = (NI)((*a0).nextchunksize * ((NI) 2));
		}
		LA5: ;
	}
	LA3: ;
	size0 = size_nndn31exLE0X2ABcjUVOzQ;
	{
		void* LOC14;
		if (!((*a0).nextchunksize < size0)) goto LA12;
		LOC14 = (void*)0;
		LOC14 = osallocpages_fxkHg9ajpjxOfBTuIyrgEfwsystem(size0);
		result0 = ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) (LOC14));
	}
	goto LA10;
	LA12: ;
	{
		void* LOC16;
		LOC16 = (void*)0;
		LOC16 = ostryallocpages_ID9csc9aYiEnjrqnnJOXH2OQsystem((*a0).nextchunksize);
		result0 = ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) (LOC16));
		{
			void* LOC21;
			if (!(result0 == NIM_NIL)) goto LA19;
			LOC21 = (void*)0;
			LOC21 = osallocpages_fxkHg9ajpjxOfBTuIyrgEfwsystem(size0);
			result0 = ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) (LOC21));
			(*a0).blockchunksizeincrease = NIM_TRUE;
		}
		goto LA17;
		LA19: ;
		{
			size0 = (*a0).nextchunksize;
		}
		LA17: ;
	}
	LA10: ;
	inccurrmem_rxjvSU4wRoPOjezLtDzm3Qsystem(a0, size0);
	(*a0).freemem += size0;
	(*result0).next = NIM_NIL;
	(*result0).prev = NIM_NIL;
	(*result0).Sup.used = NIM_FALSE;
	(*result0).Sup.size = size0;
	nxt0 = (NI)((NU64)(((NI) (result0))) + (NU64)(size0));
	next0 = ((Basechunk_Sdq7WpT6qAH858F5ZEdG3w*) (nxt0));
	{
		NI LOC25;
		NIM_BOOL LOC26;
		LOC25 = (NI)0;
		LOC25 = pageindex_vFgXFo13iF61HsEG6epuwgsystem(next0);
		LOC26 = (NIM_BOOL)0;
		LOC26 = contains_tGsWrN4DY41H9btt3FhjrNA((&(*a0).chunkstarts), LOC25);
		if (!LOC26) goto LA27;
		(*next0).prevsize = size0;
	}
	LA27: ;
	{
		if (!!(((*a0).lastsize == ((NI) 0)))) goto LA31;
		lastsize0 = (*a0).lastsize;
	}
	goto LA29;
	LA31: ;
	{
		lastsize0 = ((NI) 4096);
	}
	LA29: ;
	prv0 = (NI)((NU64)(((NI) (result0))) - (NU64)(lastsize0));
	prev0 = ((Basechunk_Sdq7WpT6qAH858F5ZEdG3w*) (prv0));
	{
		NIM_BOOL LOC36;
		NI LOC37;
		LOC36 = (NIM_BOOL)0;
		LOC37 = (NI)0;
		LOC37 = pageindex_vFgXFo13iF61HsEG6epuwgsystem(prev0);
		LOC36 = contains_tGsWrN4DY41H9btt3FhjrNA((&(*a0).chunkstarts), LOC37);
		if (!(LOC36)) goto LA38;
		LOC36 = ((*prev0).size == lastsize0);
		LA38: ;
		if (!LOC36) goto LA39;
		(*result0).Sup.prevsize = lastsize0;
	}
	goto LA34;
	LA39: ;
	{
		(*result0).Sup.prevsize = ((NI) 0);
	}
	LA34: ;
	(*a0).lastsize = size0;
	return result0;
}

N_NIMCALL(Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*, getbigchunk_z9bCNjXTYllZ3pI24nEsw2g)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI size0) {
	Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* result0;
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* LOC20;
	NI LOC21;
	result0 = (Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*)0;
	result0 = (*a0).freechunkslist;
	{
		{
			while (1) {
				if (!!((result0 == NIM_NIL))) goto LA3;
				{
					if (!((*result0).Sup.size == size0)) goto LA6;
					listremove_ZRIe9cFnHOrfvS8VmLduoXQsystem(&(*a0).freechunkslist, result0);
					goto LA1;
				}
				goto LA4;
				LA6: ;
				{
					if (!(size0 < (*result0).Sup.size)) goto LA9;
					listremove_ZRIe9cFnHOrfvS8VmLduoXQsystem(&(*a0).freechunkslist, result0);
					splitchunk_8QXhiy717OAl8WNA2X27EA(a0, result0, size0);
					goto LA1;
				}
				goto LA4;
				LA9: ;
				LA4: ;
				result0 = (*result0).next;
			} LA3: ;
		}
		{
			if (!(size0 < ((NI) 524288))) goto LA13;
			result0 = requestoschunks_z9bCNjXTYllZ3pI24nEsw2g_2(a0, ((NI) 524288));
			splitchunk_8QXhiy717OAl8WNA2X27EA(a0, result0, size0);
		}
		goto LA11;
		LA13: ;
		{
			result0 = requestoschunks_z9bCNjXTYllZ3pI24nEsw2g_2(a0, size0);
			{
				if (!(size0 < (*result0).Sup.size)) goto LA18;
				splitchunk_8QXhiy717OAl8WNA2X27EA(a0, result0, size0);
			}
			LA18: ;
		}
		LA11: ;
	} LA1: ;
	(*result0).Sup.prevsize = ((NI) 0);
	(*result0).Sup.used = NIM_TRUE;
	LOC20 = (Basechunk_Sdq7WpT6qAH858F5ZEdG3w*)0;
	LOC20 = &result0->Sup;
	LOC21 = (NI)0;
	LOC21 = pageindex_vFgXFo13iF61HsEG6epuwgsystem(LOC20);
	incl_Iz1GYiOVKwItgr5CdCm0dQ(a0, (&(*a0).chunkstarts), LOC21);
	(*a0).freemem -= size0;
	return result0;
}

N_NIMCALL(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ*, getsmallchunk_h6cvXbfQjxIdThM5GthosA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0) {
	Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* result0;
	Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* res0;
	result0 = (Smallchunk_tXn60W2f8h3jgAYdEmy5NQ*)0;
	res0 = getbigchunk_z9bCNjXTYllZ3pI24nEsw2g(a0, ((NI) 4096));
	result0 = ((Smallchunk_tXn60W2f8h3jgAYdEmy5NQ*) (res0));
	return result0;
}

static N_INLINE(void, listadd_DqXPtLsRUwQp3iwLtHEdIgsystem)(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ** head0, Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* c0) {
	(*c0).next = (*head0);
	{
		if (!!(((*head0) == NIM_NIL))) goto LA3;
		(*(*head0)).prev = c0;
	}
	LA3: ;
	(*head0) = c0;
}

static N_INLINE(void, listremove_DqXPtLsRUwQp3iwLtHEdIg_2system)(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ** head0, Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* c0) {
	{
		if (!(c0 == (*head0))) goto LA3;
		(*head0) = (*c0).next;
		{
			if (!!(((*head0) == NIM_NIL))) goto LA7;
			(*(*head0)).prev = NIM_NIL;
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		(*(*c0).prev).next = (*c0).next;
		{
			if (!!(((*c0).next == NIM_NIL))) goto LA12;
			(*(*c0).next).prev = (*c0).prev;
		}
		LA12: ;
	}
	LA1: ;
	(*c0).next = NIM_NIL;
	(*c0).prev = NIM_NIL;
}

N_NIMCALL(Avlnode_IaqjtwKhxLEpvDS9bct9blEw*, allocavlnode_neSuioWH6NDTp8E9cNgBmjg)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI key0, NI upperbound0) {
	Avlnode_IaqjtwKhxLEpvDS9bct9blEw* result0;
	result0 = (Avlnode_IaqjtwKhxLEpvDS9bct9blEw*)0;
	{
		if (!!(((*a0).freeavlnodes == NIM_NIL))) goto LA3;
		result0 = (*a0).freeavlnodes;
		(*a0).freeavlnodes = (*(*a0).freeavlnodes).link[(((NI) 0))- 0];
	}
	goto LA1;
	LA3: ;
	{
		void* LOC6;
		LOC6 = (void*)0;
		LOC6 = llalloc_fTkVQ4Gj2glm9btLqR9bdQDQ(a0, ((NI)sizeof(Avlnode_IaqjtwKhxLEpvDS9bct9blEw)));
		result0 = ((Avlnode_IaqjtwKhxLEpvDS9bct9blEw*) (LOC6));
	}
	LA1: ;
	(*result0).key = key0;
	(*result0).upperbound = upperbound0;
	(*result0).link[(((NI) 0))- 0] = bottom_KT33MhtjYZUZyUdbeLIpkg;
	(*result0).link[(((NI) 1))- 0] = bottom_KT33MhtjYZUZyUdbeLIpkg;
	(*result0).level = ((NI) 1);
	return result0;
}

N_NIMCALL(void, skew_Cfx7NvEVZIhBjBm7i89boSg)(Avlnode_IaqjtwKhxLEpvDS9bct9blEw** t0) {
	{
		Avlnode_IaqjtwKhxLEpvDS9bct9blEw* temp0;
		if (!((*(*(*t0)).link[(((NI) 0))- 0]).level == (*(*t0)).level)) goto LA3;
		temp0 = (*t0);
		(*t0) = (*(*t0)).link[(((NI) 0))- 0];
		(*temp0).link[(((NI) 0))- 0] = (*(*t0)).link[(((NI) 1))- 0];
		(*(*t0)).link[(((NI) 1))- 0] = temp0;
	}
	LA3: ;
}

N_NIMCALL(void, split_Cfx7NvEVZIhBjBm7i89boSg_2)(Avlnode_IaqjtwKhxLEpvDS9bct9blEw** t0) {
	{
		Avlnode_IaqjtwKhxLEpvDS9bct9blEw* temp0;
		if (!((*(*(*(*t0)).link[(((NI) 1))- 0]).link[(((NI) 1))- 0]).level == (*(*t0)).level)) goto LA3;
		temp0 = (*t0);
		(*t0) = (*(*t0)).link[(((NI) 1))- 0];
		(*temp0).link[(((NI) 1))- 0] = (*(*t0)).link[(((NI) 0))- 0];
		(*(*t0)).link[(((NI) 0))- 0] = temp0;
		(*(*t0)).level += ((NI) 1);
	}
	LA3: ;
}

N_NIMCALL(void, add_Xuf47u3imOz8BOk5HURLWQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Avlnode_IaqjtwKhxLEpvDS9bct9blEw** t0, NI key0, NI upperbound0) {
	{
		if (!((*(*t0)).link[(((NI) 0))- 0] == (*t0))) goto LA3;
		(*t0) = allocavlnode_neSuioWH6NDTp8E9cNgBmjg(a0, key0, upperbound0);
	}
	goto LA1;
	LA3: ;
	{
		{
			if (!((NU64)(key0) < (NU64)((*(*t0)).key))) goto LA8;
			add_Xuf47u3imOz8BOk5HURLWQ(a0, &(*(*t0)).link[(((NI) 0))- 0], key0, upperbound0);
		}
		goto LA6;
		LA8: ;
		{
			if (!((NU64)((*(*t0)).key) < (NU64)(key0))) goto LA11;
			add_Xuf47u3imOz8BOk5HURLWQ(a0, &(*(*t0)).link[(((NI) 1))- 0], key0, upperbound0);
		}
		goto LA6;
		LA11: ;
		{
		}
		LA6: ;
		skew_Cfx7NvEVZIhBjBm7i89boSg(t0);
		split_Cfx7NvEVZIhBjBm7i89boSg_2(t0);
	}
	LA1: ;
}

N_NIMCALL(void*, rawalloc_yn9c8RLaS8vgVBeMBfmkdUg)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI requestedsize0) {
	void* result0;
	NI size0;
	result0 = (void*)0;
	size0 = roundup_HS4HdHHFZPftyB49cpIyo7Asystem(requestedsize0, ((NI) 8));
	{
		NI s0;
		Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* c0;
		if (!(size0 <= (NI)(((NI) 4096) - (NI)(((NI)sizeof(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ)) - ((NI) 8))))) goto LA3;
		s0 = (NI)(size0 / ((NI) 8));
		c0 = (*a0).freesmallchunks[(s0)- 0];
		{
			if (!(c0 == NIM_NIL)) goto LA7;
			c0 = getsmallchunk_h6cvXbfQjxIdThM5GthosA(a0);
			(*c0).freelist = NIM_NIL;
			(*c0).Sup.size = size0;
			(*c0).acc = size0;
			(*c0).free = (NI)((NI)(((NI) 4096) - (NI)(((NI)sizeof(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ)) - ((NI) 8))) - size0);
			(*c0).next = NIM_NIL;
			(*c0).prev = NIM_NIL;
			listadd_DqXPtLsRUwQp3iwLtHEdIgsystem(&(*a0).freesmallchunks[(s0)- 0], c0);
			result0 = ((void*) ((&(*c0).data)));
		}
		goto LA5;
		LA7: ;
		{
			{
				if (!((*c0).freelist == NIM_NIL)) goto LA12;
				result0 = ((void*) ((NI)((NU64)(((NI) ((&(*c0).data)))) + (NU64)((*c0).acc))));
				(*c0).acc += size0;
			}
			goto LA10;
			LA12: ;
			{
				result0 = ((void*) ((*c0).freelist));
				(*c0).freelist = (*(*c0).freelist).next;
			}
			LA10: ;
			(*c0).free -= size0;
		}
		LA5: ;
		{
			if (!((*c0).free < size0)) goto LA17;
			listremove_DqXPtLsRUwQp3iwLtHEdIg_2system(&(*a0).freesmallchunks[(s0)- 0], c0);
		}
		LA17: ;
	}
	goto LA1;
	LA3: ;
	{
		Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0;
		size0 = roundup_HS4HdHHFZPftyB49cpIyo7Asystem((NI)(requestedsize0 + (NI)(((NI)sizeof(Bigchunk_Rv9c70Uhp2TytkX7eH78qEg)) - ((NI) 8))), ((NI) 4096));
		c0 = getbigchunk_z9bCNjXTYllZ3pI24nEsw2g(a0, size0);
		result0 = ((void*) ((&(*c0).data)));
		{
			if (!((*a0).root == NIM_NIL)) goto LA22;
			(*a0).root = bottom_KT33MhtjYZUZyUdbeLIpkg;
		}
		LA22: ;
		add_Xuf47u3imOz8BOk5HURLWQ(a0, &(*a0).root, ((NI) (result0)), (NI)((NU64)(((NI) (result0))) + (NU64)(size0)));
	}
	LA1: ;
	return result0;
}

N_NIMCALL(void*, alloc_1iQ1Xo9cXsxq509b5gmDHLoQ_2)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = rawalloc_yn9c8RLaS8vgVBeMBfmkdUg(allocator0, (NI)(((NI) (size0)) + ((NI)sizeof(Freecell_u6M5LHprqzkn9axr04yg9bGQ))));
	(*((Freecell_u6M5LHprqzkn9axr04yg9bGQ*) (result0))).zerofield = ((NI) 1);
	result0 = ((void*) ((NI)((NU64)(((NI) (result0))) + (NU64)(((NI)sizeof(Freecell_u6M5LHprqzkn9axr04yg9bGQ))))));
	return result0;
}

N_NIMCALL(void*, alloc0_1iQ1Xo9cXsxq509b5gmDHLoQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = alloc_1iQ1Xo9cXsxq509b5gmDHLoQ_2(allocator0, size0);
	zeromem_t0o5XqKanO5QJfXMGEzp2Asystem(result0, size0);
	return result0;
}

N_LIB_EXPORT N_NOCONV(void*, nimrtl_alloc0)(NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = alloc0_1iQ1Xo9cXsxq509b5gmDHLoQ((&gch_IcYaEuuWivYAS86vFMTS3Q.region), size0);
	return result0;
}

N_NIMCALL(void, init_E1QNZGuo0DGFXyt4Y3MfqA)(Cellseq_Axo1XVm9aaQueTOldv8le5w* s0, NI cap0) {
	void* LOC1;
	(*s0).len = ((NI) 0);
	(*s0).cap = cap0;
	LOC1 = (void*)0;
	LOC1 = nimrtl_alloc0(((NI) ((NI)(cap0 * ((NI) 8)))));
	(*s0).d = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g**) (LOC1));
}

N_NIMCALL(void, init_WHgd5C59bkXWDz3vnAxfzXQ)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0) {
	void* LOC1;
	LOC1 = (void*)0;
	LOC1 = nimrtl_alloc0(((NI) 8192));
	(*s0).data = ((Pagedesc_fublkgIY4LG3mT51LU2WHg**) (LOC1));
	(*s0).max = ((NI) 1023);
	(*s0).counter = ((NI) 0);
	(*s0).head = NIM_NIL;
}

N_NIMCALL(void, initgc_njssp69aa7hvxte9bJ8uuDcg)(void) {
	gch_IcYaEuuWivYAS86vFMTS3Q.cyclethreshold = ((NI) 4194304);
	gch_IcYaEuuWivYAS86vFMTS3Q.stat.stackscans = ((NI) 0);
	gch_IcYaEuuWivYAS86vFMTS3Q.stat.cyclecollections = ((NI) 0);
	gch_IcYaEuuWivYAS86vFMTS3Q.stat.maxthreshold = ((NI) 0);
	gch_IcYaEuuWivYAS86vFMTS3Q.stat.maxstacksize = ((NI) 0);
	gch_IcYaEuuWivYAS86vFMTS3Q.stat.maxstackcells = ((NI) 0);
	gch_IcYaEuuWivYAS86vFMTS3Q.stat.cycletablesize = ((NI) 0);
	init_E1QNZGuo0DGFXyt4Y3MfqA((&gch_IcYaEuuWivYAS86vFMTS3Q.zct), ((NI) 1024));
	init_E1QNZGuo0DGFXyt4Y3MfqA((&gch_IcYaEuuWivYAS86vFMTS3Q.tempstack), ((NI) 1024));
	init_E1QNZGuo0DGFXyt4Y3MfqA((&gch_IcYaEuuWivYAS86vFMTS3Q.decstack), ((NI) 1024));
	init_WHgd5C59bkXWDz3vnAxfzXQ((&gch_IcYaEuuWivYAS86vFMTS3Q.marked));
	init_E1QNZGuo0DGFXyt4Y3MfqA((&gch_IcYaEuuWivYAS86vFMTS3Q.additionalroots), ((NI) 1024));
}

static N_INLINE(Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* result0;
	result0 = (Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	result0 = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g*) ((NI)((NU64)(((NI) (usr0))) - (NU64)(((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g))))));
	return result0;
}

N_LIB_EXPORT N_NOCONV(void*, nimrtl_alloc)(NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = alloc_1iQ1Xo9cXsxq509b5gmDHLoQ_2((&gch_IcYaEuuWivYAS86vFMTS3Q.region), size0);
	return result0;
}

static N_INLINE(void, copymem_E1xtACub5WcDa3vbrIXbwgsystem)(void* dest0, void* source0, NI size0) {
	void* LOC1;
	LOC1 = (void*)0;
	LOC1 = memcpy(dest0, source0, ((size_t) (size0)));
}

static N_INLINE(Basechunk_Sdq7WpT6qAH858F5ZEdG3w*, pageaddr_4uti7hTxTUDxUPqFMgMvHAsystem)(void* p0) {
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* result0;
	result0 = (Basechunk_Sdq7WpT6qAH858F5ZEdG3w*)0;
	result0 = ((Basechunk_Sdq7WpT6qAH858F5ZEdG3w*) ((NI)(((NI) (p0)) & ((NI) -4096))));
	return result0;
}

static N_INLINE(NIM_BOOL, issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem)(Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	result0 = ((*c0).size <= (NI)(((NI) 4096) - (NI)(((NI)sizeof(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ)) - ((NI) 8))));
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

static N_INLINE(NIM_BOOL, chunkunused_xxNWShoyEPMUVN7FvfpDjw_2system)(Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = !((*c0).used);
	return result0;
}

N_NIMCALL(void, excl_Z9cZKmN1jjRFCzU0lgW9a1XA)(Intset_EZObFrE3NC9bIb3YMkY9crZA* s0, NI key0) {
	Trunk_W0r8S0Y3UGke6T9bIUWnnuw* t0;
	t0 = intsetget_FhOZKj4Gih3qQ5OimZYOrg((&(*s0)), (NI)((NU64)(key0) >> (NU64)(((NI) 9))));
	{
		NI u0;
		if (!!((t0 == NIM_NIL))) goto LA3;
		u0 = (NI)(key0 & ((NI) 511));
		(*t0).bits[((NI)((NU64)(((NI) (u0))) >> (NU64)(((NI) 6))))- 0] = (NI)((*t0).bits[((NI)((NU64)(((NI) (u0))) >> (NU64)(((NI) 6))))- 0] & (NI)((NU64) ~((NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(((NI) (u0)) & ((NI) 63)))))))));
	}
	LA3: ;
}

static N_INLINE(void, osdeallocpages_I1brEDH0C8CP9a0HfGYsDvAsystem)(void* p0, NI size0) {
	int LOC1;
	LOC1 = (int)0;
	LOC1 = munmap(p0, size0);
}

static N_INLINE(void, deccurrmem_rxjvSU4wRoPOjezLtDzm3Q_2system)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, NI bytes0) {
	(*a0).maxmem = (((*a0).maxmem >= (*a0).currmem) ? (*a0).maxmem : (*a0).currmem);
	(*a0).currmem -= bytes0;
}

N_NIMCALL(void, freeoschunks_9bYkqlcspX9aiTE9a83Z3Ocjw)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, void* p0, NI size0) {
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c0;
	NI nxt0;
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* next0;
	NI LOC7;
	c0 = ((Basechunk_Sdq7WpT6qAH858F5ZEdG3w*) (p0));
	nxt0 = (NI)((NU64)(((NI) (p0))) + (NU64)((*c0).size));
	next0 = ((Basechunk_Sdq7WpT6qAH858F5ZEdG3w*) (nxt0));
	{
		NI LOC3;
		NIM_BOOL LOC4;
		LOC3 = (NI)0;
		LOC3 = pageindex_vFgXFo13iF61HsEG6epuwgsystem(next0);
		LOC4 = (NIM_BOOL)0;
		LOC4 = contains_tGsWrN4DY41H9btt3FhjrNA((&(*a0).chunkstarts), LOC3);
		if (!LOC4) goto LA5;
		(*next0).prevsize = ((NI) 0);
	}
	LA5: ;
	LOC7 = (NI)0;
	LOC7 = pageindex_bDTXHqSShXKux9bZH4tvkVgsystem(p0);
	excl_Z9cZKmN1jjRFCzU0lgW9a1XA((&(*a0).chunkstarts), LOC7);
	osdeallocpages_I1brEDH0C8CP9a0HfGYsDvAsystem(p0, size0);
	deccurrmem_rxjvSU4wRoPOjezLtDzm3Q_2system(a0, size0);
	(*a0).freemem -= size0;
}

N_NIMCALL(void, freebigchunk_CAqFS1jFL1RxG80t9bOGmAA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c_Dm5SSuXWIa9cuGiJqMKyKFA) {
	Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0;
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* ri0;
	c0 = c_Dm5SSuXWIa9cuGiJqMKyKFA;
	(*a0).freemem += (*c0).Sup.size;
	ri0 = ((Basechunk_Sdq7WpT6qAH858F5ZEdG3w*) ((NI)((NU64)(((NI) (c0))) + (NU64)((*c0).Sup.size))));
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = isaccessible_5nqar3kL9acJcissrFLDdkwsystem((&(*a0)), ((void*) (ri0)));
		if (!(LOC3)) goto LA4;
		LOC3 = chunkunused_xxNWShoyEPMUVN7FvfpDjw_2system(ri0);
		LA4: ;
		if (!LOC3) goto LA5;
		{
			NIM_BOOL LOC9;
			NI LOC12;
			LOC9 = (NIM_BOOL)0;
			LOC9 = issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem(ri0);
			if (!!(LOC9)) goto LA10;
			listremove_ZRIe9cFnHOrfvS8VmLduoXQsystem(&(*a0).freechunkslist, ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) (ri0)));
			(*c0).Sup.size += (*ri0).size;
			LOC12 = (NI)0;
			LOC12 = pageindex_vFgXFo13iF61HsEG6epuwgsystem(ri0);
			excl_Z9cZKmN1jjRFCzU0lgW9a1XA((&(*a0).chunkstarts), LOC12);
		}
		LA10: ;
	}
	LA5: ;
	{
		Basechunk_Sdq7WpT6qAH858F5ZEdG3w* le0;
		if (!!(((*c0).Sup.prevsize == ((NI) 0)))) goto LA15;
		le0 = ((Basechunk_Sdq7WpT6qAH858F5ZEdG3w*) ((NI)((NU64)(((NI) (c0))) - (NU64)((*c0).Sup.prevsize))));
		{
			NIM_BOOL LOC19;
			LOC19 = (NIM_BOOL)0;
			LOC19 = isaccessible_5nqar3kL9acJcissrFLDdkwsystem((&(*a0)), ((void*) (le0)));
			if (!(LOC19)) goto LA20;
			LOC19 = chunkunused_xxNWShoyEPMUVN7FvfpDjw_2system(le0);
			LA20: ;
			if (!LOC19) goto LA21;
			{
				NIM_BOOL LOC25;
				Basechunk_Sdq7WpT6qAH858F5ZEdG3w* LOC28;
				NI LOC29;
				LOC25 = (NIM_BOOL)0;
				LOC25 = issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem(le0);
				if (!!(LOC25)) goto LA26;
				listremove_ZRIe9cFnHOrfvS8VmLduoXQsystem(&(*a0).freechunkslist, ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) (le0)));
				(*le0).size += (*c0).Sup.size;
				LOC28 = (Basechunk_Sdq7WpT6qAH858F5ZEdG3w*)0;
				LOC28 = &c0->Sup;
				LOC29 = (NI)0;
				LOC29 = pageindex_vFgXFo13iF61HsEG6epuwgsystem(LOC28);
				excl_Z9cZKmN1jjRFCzU0lgW9a1XA((&(*a0).chunkstarts), LOC29);
				c0 = ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) (le0));
			}
			LA26: ;
		}
		LA21: ;
	}
	LA15: ;
	{
		NIM_BOOL LOC32;
		NIM_BOOL LOC33;
		Basechunk_Sdq7WpT6qAH858F5ZEdG3w* LOC38;
		NI LOC39;
		LOC32 = (NIM_BOOL)0;
		LOC33 = (NIM_BOOL)0;
		LOC33 = ((*c0).Sup.size < ((NI) 1048576));
		if (LOC33) goto LA34;
		LOC33 = NIM_FALSE;
		LA34: ;
		LOC32 = LOC33;
		if (LOC32) goto LA35;
		LOC32 = (*a0).locked;
		LA35: ;
		if (!LOC32) goto LA36;
		LOC38 = (Basechunk_Sdq7WpT6qAH858F5ZEdG3w*)0;
		LOC38 = &c0->Sup;
		LOC39 = (NI)0;
		LOC39 = pageindex_vFgXFo13iF61HsEG6epuwgsystem(LOC38);
		incl_Iz1GYiOVKwItgr5CdCm0dQ(a0, (&(*a0).chunkstarts), LOC39);
		updateprevsize_3G5wKZdFZhblebPYdFnpxQsystem(a0, c0, (*c0).Sup.size);
		listadd_ZRIe9cFnHOrfvS8VmLduoXQ_2system(&(*a0).freechunkslist, c0);
		(*c0).Sup.used = NIM_FALSE;
	}
	goto LA30;
	LA36: ;
	{
		freeoschunks_9bYkqlcspX9aiTE9a83Z3Ocjw(a0, ((void*) (c0)), (*c0).Sup.size);
	}
	LA30: ;
}

static N_INLINE(void, deallocavlnode_E5Kui5a9artJoR6jEn007Vgsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Avlnode_IaqjtwKhxLEpvDS9bct9blEw* n0) {
	(*n0).link[(((NI) 0))- 0] = (*a0).freeavlnodes;
	(*a0).freeavlnodes = n0;
}

N_NIMCALL(void, del_hPrZ9bxLZK5QpoftxoRaXvA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, Avlnode_IaqjtwKhxLEpvDS9bct9blEw** t0, NI x0) {
{	{
		if (!((*(*t0)).link[(((NI) 0))- 0] == (*t0))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	(*a0).last = (*t0);
	{
		if (!((NU64)(x0) < (NU64)((*(*t0)).key))) goto LA7;
		del_hPrZ9bxLZK5QpoftxoRaXvA(a0, &(*(*t0)).link[(((NI) 0))- 0], x0);
	}
	goto LA5;
	LA7: ;
	{
		(*a0).deleted = (*t0);
		del_hPrZ9bxLZK5QpoftxoRaXvA(a0, &(*(*t0)).link[(((NI) 1))- 0], x0);
	}
	LA5: ;
	{
		NIM_BOOL LOC12;
		NIM_BOOL LOC13;
		LOC12 = (NIM_BOOL)0;
		LOC13 = (NIM_BOOL)0;
		LOC13 = ((*t0) == (*a0).last);
		if (!(LOC13)) goto LA14;
		LOC13 = !(((*(*a0).deleted).link[(((NI) 0))- 0] == (*a0).deleted));
		LA14: ;
		LOC12 = LOC13;
		if (!(LOC12)) goto LA15;
		LOC12 = (x0 == (*(*a0).deleted).key);
		LA15: ;
		if (!LOC12) goto LA16;
		(*(*a0).deleted).key = (*(*t0)).key;
		(*(*a0).deleted).upperbound = (*(*t0)).upperbound;
		(*a0).deleted = bottom_KT33MhtjYZUZyUdbeLIpkg;
		(*t0) = (*(*t0)).link[(((NI) 1))- 0];
		deallocavlnode_E5Kui5a9artJoR6jEn007Vgsystem(a0, (*a0).last);
	}
	goto LA10;
	LA16: ;
	{
		NIM_BOOL LOC19;
		LOC19 = (NIM_BOOL)0;
		LOC19 = ((*(*(*t0)).link[(((NI) 0))- 0]).level < (NI)((*(*t0)).level - ((NI) 1)));
		if (LOC19) goto LA20;
		LOC19 = ((*(*(*t0)).link[(((NI) 1))- 0]).level < (NI)((*(*t0)).level - ((NI) 1)));
		LA20: ;
		if (!LOC19) goto LA21;
		(*(*t0)).level -= ((NI) 1);
		{
			if (!((*(*t0)).level < (*(*(*t0)).link[(((NI) 1))- 0]).level)) goto LA25;
			(*(*(*t0)).link[(((NI) 1))- 0]).level = (*(*t0)).level;
		}
		LA25: ;
		skew_Cfx7NvEVZIhBjBm7i89boSg(t0);
		skew_Cfx7NvEVZIhBjBm7i89boSg(&(*(*t0)).link[(((NI) 1))- 0]);
		skew_Cfx7NvEVZIhBjBm7i89boSg(&(*(*(*t0)).link[(((NI) 1))- 0]).link[(((NI) 1))- 0]);
		split_Cfx7NvEVZIhBjBm7i89boSg_2(t0);
		split_Cfx7NvEVZIhBjBm7i89boSg_2(&(*(*t0)).link[(((NI) 1))- 0]);
	}
	goto LA10;
	LA21: ;
	LA10: ;
	}BeforeRet: ;
}

N_NIMCALL(void, rawdealloc_DA62HrGC5sdfCED505KyyQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, void* p0) {
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c_GHaziSFFmqUZ7gFSv347RQ;
	c_GHaziSFFmqUZ7gFSv347RQ = pageaddr_4uti7hTxTUDxUPqFMgMvHAsystem(p0);
	{
		NIM_BOOL LOC3;
		Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* c0;
		NI s0;
		Freecell_u6M5LHprqzkn9axr04yg9bGQ* f0;
		LOC3 = (NIM_BOOL)0;
		LOC3 = issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem(c_GHaziSFFmqUZ7gFSv347RQ);
		if (!LOC3) goto LA4;
		c0 = ((Smallchunk_tXn60W2f8h3jgAYdEmy5NQ*) (c_GHaziSFFmqUZ7gFSv347RQ));
		s0 = (*c0).Sup.size;
		f0 = ((Freecell_u6M5LHprqzkn9axr04yg9bGQ*) (p0));
		(*f0).zerofield = ((NI) 0);
		(*f0).next = (*c0).freelist;
		(*c0).freelist = f0;
		{
			if (!((*c0).free < s0)) goto LA8;
			listadd_DqXPtLsRUwQp3iwLtHEdIgsystem(&(*a0).freesmallchunks[((NI)(s0 / ((NI) 8)))- 0], c0);
			(*c0).free += s0;
		}
		goto LA6;
		LA8: ;
		{
			(*c0).free += s0;
			{
				if (!((*c0).free == (NI)(((NI) 4096) - (NI)(((NI)sizeof(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ)) - ((NI) 8))))) goto LA13;
				listremove_DqXPtLsRUwQp3iwLtHEdIg_2system(&(*a0).freesmallchunks[((NI)(s0 / ((NI) 8)))- 0], c0);
				(*c0).Sup.size = ((NI) 4096);
				freebigchunk_CAqFS1jFL1RxG80t9bOGmAA(a0, ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) (c0)));
			}
			LA13: ;
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0;
		c0 = ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) (c_GHaziSFFmqUZ7gFSv347RQ));
		(*a0).deleted = bottom_KT33MhtjYZUZyUdbeLIpkg;
		del_hPrZ9bxLZK5QpoftxoRaXvA(a0, &(*a0).root, ((NI) ((&(*c0).data))));
		freebigchunk_CAqFS1jFL1RxG80t9bOGmAA(a0, c0);
	}
	LA1: ;
}

N_NIMCALL(void, dealloc_jqYVOi4APb9cRx3G9a57AkRw)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, void* p0) {
	void* x0;
	x0 = ((void*) ((NI)((NU64)(((NI) (p0))) - (NU64)(((NI)sizeof(Freecell_u6M5LHprqzkn9axr04yg9bGQ))))));
	rawdealloc_DA62HrGC5sdfCED505KyyQ(allocator0, x0);
}

N_LIB_EXPORT N_NOCONV(void, nimrtl_dealloc)(void* p0) {
	dealloc_jqYVOi4APb9cRx3G9a57AkRw((&gch_IcYaEuuWivYAS86vFMTS3Q.region), p0);
}

static N_INLINE(void, add_Wcf8r6MCjrJeJ3HSYwSp0Qsystem)(Cellseq_Axo1XVm9aaQueTOldv8le5w* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
	{
		Cell_1zcF9cV8XIAtbN8h5HRUB8g** d0;
		void* LOC5;
		if (!((*s0).cap <= (*s0).len)) goto LA3;
		(*s0).cap = (NI)((NI)((*s0).cap * ((NI) 3)) / ((NI) 2));
		LOC5 = (void*)0;
		LOC5 = nimrtl_alloc(((NI) ((NI)((*s0).cap * ((NI) 8)))));
		d0 = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g**) (LOC5));
		copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) (d0)), ((void*) ((*s0).d)), ((NI) ((NI)((*s0).len * ((NI) 8)))));
		nimrtl_dealloc(((void*) ((*s0).d)));
		(*s0).d = d0;
	}
	LA3: ;
	(*s0).d[((*s0).len)- 0] = c0;
	(*s0).len += ((NI) 1);
}

N_NOINLINE(void, addzct_fCDI7oO1NNVXXURtxSzsRw)(Cellseq_Axo1XVm9aaQueTOldv8le5w* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
	{
		if (!((NI)((*c0).refcount & ((NI) 4)) == ((NI) 0))) goto LA3;
		(*c0).refcount = (NI)((*c0).refcount | ((NI) 4));
		add_Wcf8r6MCjrJeJ3HSYwSp0Qsystem(s0, c0);
	}
	LA3: ;
}

N_LIB_EXPORT N_CDECL(void, nimrtl_rtlAddZCT)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
	addzct_fCDI7oO1NNVXXURtxSzsRw((&gch_IcYaEuuWivYAS86vFMTS3Q.zct), c0);
}

static N_INLINE(void, decref_MV4BBk6J1qu70IbBxwEn4wsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
	{
		(*c0).refcount -= ((NI) 8);
		if (!((NU64)((*c0).refcount) < (NU64)(((NI) 8)))) goto LA3;
		nimrtl_rtlAddZCT(c0);
	}
	LA3: ;
}

static N_INLINE(NI, nexttry_GRX2KbRyW3mlDDFEU50uhwsystem)(NI h0, NI maxhash0) {
	NI result0;
	result0 = (NI)0;
	result0 = (NI)((NI)((NI)(((NI) 5) * h0) + ((NI) 1)) & maxhash0);
	return result0;
}

N_NIMCALL(void, cellsetrawinsert_IccmFuD44fG6qfTRJKp9aSQ)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* t0, Pagedesc_fublkgIY4LG3mT51LU2WHg** data0, Pagedesc_fublkgIY4LG3mT51LU2WHg* desc0) {
	NI h0;
	h0 = (NI)(((NI) ((*desc0).key)) & (*t0).max);
	{
		while (1) {
			if (!!((data0[(h0)- 0] == NIM_NIL))) goto LA2;
			h0 = nexttry_GRX2KbRyW3mlDDFEU50uhwsystem(h0, (*t0).max);
		} LA2: ;
	}
	data0[(h0)- 0] = desc0;
}

N_NIMCALL(void, cellsetenlarge_ZCqaZEiX9aUtDCRoknrJ9bpQ)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* t0) {
	NI oldmax0;
	Pagedesc_fublkgIY4LG3mT51LU2WHg** n0;
	void* LOC1;
	oldmax0 = (*t0).max;
	(*t0).max = (NI)((NI)((NI)((*t0).max + ((NI) 1)) * ((NI) 2)) - ((NI) 1));
	LOC1 = (void*)0;
	LOC1 = nimrtl_alloc0(((NI) ((NI)((NI)((*t0).max + ((NI) 1)) * ((NI) 8)))));
	n0 = ((Pagedesc_fublkgIY4LG3mT51LU2WHg**) (LOC1));
	{
		NI i_ovZMflPpyCjqJcVO5wKG0g;
		NI res_OUznQew7H9cBZYTOay8m9a4Q;
		i_ovZMflPpyCjqJcVO5wKG0g = (NI)0;
		res_OUznQew7H9cBZYTOay8m9a4Q = ((NI) 0);
		{
			while (1) {
				if (!(res_OUznQew7H9cBZYTOay8m9a4Q <= oldmax0)) goto LA4;
				i_ovZMflPpyCjqJcVO5wKG0g = res_OUznQew7H9cBZYTOay8m9a4Q;
				{
					if (!!(((*t0).data[(i_ovZMflPpyCjqJcVO5wKG0g)- 0] == NIM_NIL))) goto LA7;
					cellsetrawinsert_IccmFuD44fG6qfTRJKp9aSQ((&(*t0)), n0, (*t0).data[(i_ovZMflPpyCjqJcVO5wKG0g)- 0]);
				}
				LA7: ;
				res_OUznQew7H9cBZYTOay8m9a4Q += ((NI) 1);
			} LA4: ;
		}
	}
	nimrtl_dealloc(((void*) ((*t0).data)));
	(*t0).data = n0;
}

N_NIMCALL(Pagedesc_fublkgIY4LG3mT51LU2WHg*, cellsetput_mFUFZ7eVLRT9bMaHzrsxFrQ)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* t0, NI key0) {
	Pagedesc_fublkgIY4LG3mT51LU2WHg* result0;
	NI h0;
	void* LOC19;
{	result0 = (Pagedesc_fublkgIY4LG3mT51LU2WHg*)0;
	h0 = (NI)(((NI) (key0)) & (*t0).max);
	{
		while (1) {
			Pagedesc_fublkgIY4LG3mT51LU2WHg* x0;
			x0 = (*t0).data[(h0)- 0];
			{
				if (!(x0 == NIM_NIL)) goto LA5;
				goto LA1;
			}
			LA5: ;
			{
				if (!((*x0).key == key0)) goto LA9;
				result0 = x0;
				goto BeforeRet;
			}
			LA9: ;
			h0 = nexttry_GRX2KbRyW3mlDDFEU50uhwsystem(h0, (*t0).max);
		}
	} LA1: ;
	{
		NIM_BOOL LOC13;
		LOC13 = (NIM_BOOL)0;
		LOC13 = ((NI)((NI)((*t0).max + ((NI) 1)) * ((NI) 2)) < (NI)((*t0).counter * ((NI) 3)));
		if (LOC13) goto LA14;
		LOC13 = ((NI)((NI)((*t0).max + ((NI) 1)) - (*t0).counter) < ((NI) 4));
		LA14: ;
		if (!LOC13) goto LA15;
		cellsetenlarge_ZCqaZEiX9aUtDCRoknrJ9bpQ(t0);
	}
	LA15: ;
	(*t0).counter += ((NI) 1);
	h0 = (NI)(((NI) (key0)) & (*t0).max);
	{
		while (1) {
			if (!!(((*t0).data[(h0)- 0] == NIM_NIL))) goto LA18;
			h0 = nexttry_GRX2KbRyW3mlDDFEU50uhwsystem(h0, (*t0).max);
		} LA18: ;
	}
	LOC19 = (void*)0;
	LOC19 = nimrtl_alloc0(((NI) (((NI)sizeof(Pagedesc_fublkgIY4LG3mT51LU2WHg)))));
	result0 = ((Pagedesc_fublkgIY4LG3mT51LU2WHg*) (LOC19));
	(*result0).next = (*t0).head;
	(*result0).key = key0;
	(*t0).head = result0;
	(*t0).data[(h0)- 0] = result0;
	}BeforeRet: ;
	return result0;
}

N_NOINLINE(void, incl_m4q9b16kJJcoKe9c4ERtlpCg)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0) {
	NI u0;
	Pagedesc_fublkgIY4LG3mT51LU2WHg* t0;
	u0 = ((NI) (cell0));
	t0 = cellsetput_mFUFZ7eVLRT9bMaHzrsxFrQ(s0, (NI)((NU64)(u0) >> (NU64)(((NI) 12))));
	u0 = (NI)((NU64)((NI)((NU64)(u0) % (NU64)(((NI) 4096)))) / (NU64)(((NI) 8)));
	(*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] = (NI)((*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] | (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(u0 & ((NI) 63)))))));
}

static N_INLINE(void*, celltousr_vA0UG8JLZvpzP1Xf3vkPgwsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0) {
	void* result0;
	result0 = (void*)0;
	result0 = ((void*) ((NI)((NU64)(((NI) (cell0))) + (NU64)(((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g))))));
	return result0;
}

N_NIMCALL(NI, getdiscriminant_wq1GP7ZPZ7P1uZUypfc9ciA)(void* aa0, TNimNode* n0) {
	NI result0;
	NI d0;
	NI a0;
{	result0 = (NI)0;
	d0 = (NI)0;
	a0 = ((NI) (aa0));
	switch ((*(*n0).typ).size) {
	case ((NI) 1):
	{
		d0 = ((NI)(NU)(NU8)((*((NI8*) ((NI)((NU64)(a0) + (NU64)((*n0).offset)))))));
	}
	break;
	case ((NI) 2):
	{
		d0 = ((NI)(NU)(NU16)((*((NI16*) ((NI)((NU64)(a0) + (NU64)((*n0).offset)))))));
	}
	break;
	case ((NI) 4):
	{
		d0 = ((NI) ((*((NI32*) ((NI)((NU64)(a0) + (NU64)((*n0).offset)))))));
	}
	break;
	default:
	{
	}
	break;
	}
	result0 = d0;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(TNimNode*, selectbranch_MvIsyjoRI1g7VY9cXrLB1dQ)(void* aa0, TNimNode* n0) {
	TNimNode* result0;
	NI discr0;
	result0 = (TNimNode*)0;
	discr0 = getdiscriminant_wq1GP7ZPZ7P1uZUypfc9ciA(aa0, n0);
	{
		if (!((NU64)(discr0) < (NU64)((*n0).len))) goto LA3;
		result0 = (*n0).sons[(discr0)- 0];
		{
			if (!(result0 == NIM_NIL)) goto LA7;
			result0 = (*n0).sons[((*n0).len)- 0];
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		result0 = (*n0).sons[((*n0).len)- 0];
	}
	LA1: ;
	return result0;
}

N_NIMCALL(void, forallslotsaux_g4QpsZWzXQMKa0ugIze5Kw)(void* dest0, TNimNode* n0, Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ op0) {
	NI d0;
	d0 = ((NI) (dest0));
	switch ((*n0).kind) {
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 1):
	{
		forallchildrenaux_YOI1Uo54H9aas13WthjhsfA(((void*) ((NI)((NU64)(d0) + (NU64)((*n0).offset)))), (*n0).typ, op0);
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 2):
	{
		{
			NI i_yFVGqjYX0rOVrP1UbIcxlQ;
			NI HEX3Atmp_aluJ41lSeiXfUVv9cEduUmw;
			NI res_l7DsFUd4HmNaSBDi4Y5JuA;
			i_yFVGqjYX0rOVrP1UbIcxlQ = (NI)0;
			HEX3Atmp_aluJ41lSeiXfUVv9cEduUmw = (NI)0;
			HEX3Atmp_aluJ41lSeiXfUVv9cEduUmw = (NI)((*n0).len - ((NI) 1));
			res_l7DsFUd4HmNaSBDi4Y5JuA = ((NI) 0);
			{
				while (1) {
					if (!(res_l7DsFUd4HmNaSBDi4Y5JuA <= HEX3Atmp_aluJ41lSeiXfUVv9cEduUmw)) goto LA5;
					i_yFVGqjYX0rOVrP1UbIcxlQ = res_l7DsFUd4HmNaSBDi4Y5JuA;
					{
						if (!((*(*n0).sons[(i_yFVGqjYX0rOVrP1UbIcxlQ)- 0]).kind == ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 1))) goto LA8;
						{
							if (!((289406976 &((NU64)1<<((NU)((*(*(*n0).sons[(i_yFVGqjYX0rOVrP1UbIcxlQ)- 0]).typ).kind)&63U)))!=0)) goto LA12;
							dooperation_3F8QeaTyYrJJF2gjBr6b8A((*((void**) ((NI)((NU64)(d0) + (NU64)((*(*n0).sons[(i_yFVGqjYX0rOVrP1UbIcxlQ)- 0]).offset))))), op0);
						}
						goto LA10;
						LA12: ;
						{
							forallchildrenaux_YOI1Uo54H9aas13WthjhsfA(((void*) ((NI)((NU64)(d0) + (NU64)((*(*n0).sons[(i_yFVGqjYX0rOVrP1UbIcxlQ)- 0]).offset)))), (*(*n0).sons[(i_yFVGqjYX0rOVrP1UbIcxlQ)- 0]).typ, op0);
						}
						LA10: ;
					}
					goto LA6;
					LA8: ;
					{
						forallslotsaux_g4QpsZWzXQMKa0ugIze5Kw(dest0, (*n0).sons[(i_yFVGqjYX0rOVrP1UbIcxlQ)- 0], op0);
					}
					LA6: ;
					res_l7DsFUd4HmNaSBDi4Y5JuA += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 3):
	{
		TNimNode* m0;
		m0 = selectbranch_MvIsyjoRI1g7VY9cXrLB1dQ(dest0, n0);
		{
			if (!!((m0 == NIM_NIL))) goto LA19;
			forallslotsaux_g4QpsZWzXQMKa0ugIze5Kw(dest0, m0, op0);
		}
		LA19: ;
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 0):
	{
	}
	break;
	}
}

N_NIMCALL(void, forallchildrenaux_YOI1Uo54H9aas13WthjhsfA)(void* dest0, TNimType* mt0, Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ op0) {
	NI d0;
{	d0 = ((NI) (dest0));
	{
		if (!(dest0 == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!!((((*mt0).flags &(1U<<((NU)(((Tnimtypeflag_v8QUszD1sWlSIWZz7mC4bQ) 0))&7U)))!=0))) goto LA7;
		switch ((*mt0).kind) {
		case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 22):
		case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 28):
		case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 24):
		{
			dooperation_3F8QeaTyYrJJF2gjBr6b8A((*((void**) (d0))), op0);
		}
		break;
		case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 17):
		case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 18):
		{
			forallslotsaux_g4QpsZWzXQMKa0ugIze5Kw(dest0, (*mt0).node, op0);
		}
		break;
		case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 16):
		case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 4):
		case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 27):
		{
			{
				NI i_hJ6Z9cJNGnrKLq9ceDKabzgw;
				NI HEX3Atmp_GhXX4gZuFbYd9cj266L525A;
				NI res_15HB3Li00LnIMt9aFST6SQQ;
				i_hJ6Z9cJNGnrKLq9ceDKabzgw = (NI)0;
				HEX3Atmp_GhXX4gZuFbYd9cj266L525A = (NI)0;
				HEX3Atmp_GhXX4gZuFbYd9cj266L525A = (NI)((NI)((*mt0).size / (*(*mt0).base).size) - ((NI) 1));
				res_15HB3Li00LnIMt9aFST6SQQ = ((NI) 0);
				{
					while (1) {
						if (!(res_15HB3Li00LnIMt9aFST6SQQ <= HEX3Atmp_GhXX4gZuFbYd9cj266L525A)) goto LA14;
						i_hJ6Z9cJNGnrKLq9ceDKabzgw = res_15HB3Li00LnIMt9aFST6SQQ;
						forallchildrenaux_YOI1Uo54H9aas13WthjhsfA(((void*) ((NI)((NU64)(d0) + (NU64)((NI)((NU64)(i_hJ6Z9cJNGnrKLq9ceDKabzgw) * (NU64)((*(*mt0).base).size)))))), (*mt0).base, op0);
						res_15HB3Li00LnIMt9aFST6SQQ += ((NI) 1);
					} LA14: ;
				}
			}
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA7: ;
	}BeforeRet: ;
}

N_NIMCALL(void, forallchildren_yHFnLgI7q81iFxRlb3Iqlw)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0, Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ op0) {
	TY_ojoeKfW4VYIm36I9cpDTQIg marker0;
	marker0 = (*(*cell0).typ).marker;
	{
		void* LOC5;
		if (!!((marker0 == NIM_NIL))) goto LA3;
		LOC5 = (void*)0;
		LOC5 = celltousr_vA0UG8JLZvpzP1Xf3vkPgwsystem(cell0);
		marker0(LOC5, ((NI) (op0)));
	}
	goto LA1;
	LA3: ;
	{
		switch ((*(*cell0).typ).kind) {
		case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 22):
		{
			void* LOC8;
			LOC8 = (void*)0;
			LOC8 = celltousr_vA0UG8JLZvpzP1Xf3vkPgwsystem(cell0);
			forallchildrenaux_YOI1Uo54H9aas13WthjhsfA(LOC8, (*(*cell0).typ).base, op0);
		}
		break;
		case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 24):
		{
			NI d0;
			void* LOC10;
			TGenericSeq* s0;
			LOC10 = (void*)0;
			LOC10 = celltousr_vA0UG8JLZvpzP1Xf3vkPgwsystem(cell0);
			d0 = ((NI) (LOC10));
			s0 = ((TGenericSeq*) (d0));
			{
				if (!!((s0 == NIM_NIL))) goto LA13;
				{
					NI i_vg6ijnMQzATRA1jJdNTpZg;
					NI HEX3Atmp_h7TDpb2IpRLxX7z5zZTNBg;
					NI res_NrAkadqSP9cs0YC32we9aC9aQ;
					i_vg6ijnMQzATRA1jJdNTpZg = (NI)0;
					HEX3Atmp_h7TDpb2IpRLxX7z5zZTNBg = (NI)0;
					HEX3Atmp_h7TDpb2IpRLxX7z5zZTNBg = (NI)((*s0).len - ((NI) 1));
					res_NrAkadqSP9cs0YC32we9aC9aQ = ((NI) 0);
					{
						while (1) {
							if (!(res_NrAkadqSP9cs0YC32we9aC9aQ <= HEX3Atmp_h7TDpb2IpRLxX7z5zZTNBg)) goto LA17;
							i_vg6ijnMQzATRA1jJdNTpZg = res_NrAkadqSP9cs0YC32we9aC9aQ;
							forallchildrenaux_YOI1Uo54H9aas13WthjhsfA(((void*) ((NI)((NU64)((NI)((NU64)(d0) + (NU64)((NI)((NU64)(i_vg6ijnMQzATRA1jJdNTpZg) * (NU64)((*(*(*cell0).typ).base).size))))) + (NU64)(((NI) 16))))), (*(*cell0).typ).base, op0);
							res_NrAkadqSP9cs0YC32we9aC9aQ += ((NI) 1);
						} LA17: ;
					}
				}
			}
			LA13: ;
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA1: ;
}

N_NIMCALL(Pagedesc_fublkgIY4LG3mT51LU2WHg*, cellsetget_X4WTfs0wkld8wp8XcE9b8BA)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* t0, NI key0) {
	Pagedesc_fublkgIY4LG3mT51LU2WHg* result0;
	NI h0;
{	result0 = (Pagedesc_fublkgIY4LG3mT51LU2WHg*)0;
	h0 = (NI)(((NI) (key0)) & (*t0).max);
	{
		while (1) {
			if (!!(((*t0).data[(h0)- 0] == NIM_NIL))) goto LA2;
			{
				if (!((*(*t0).data[(h0)- 0]).key == key0)) goto LA5;
				result0 = (*t0).data[(h0)- 0];
				goto BeforeRet;
			}
			LA5: ;
			h0 = nexttry_GRX2KbRyW3mlDDFEU50uhwsystem(h0, (*t0).max);
		} LA2: ;
	}
	result0 = NIM_NIL;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, containsorincl_CbGEjIBKJIi7knlaDzUluA)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0) {
	NIM_BOOL result0;
	NI u0;
	Pagedesc_fublkgIY4LG3mT51LU2WHg* t0;
	result0 = (NIM_BOOL)0;
	u0 = ((NI) (cell0));
	t0 = cellsetget_X4WTfs0wkld8wp8XcE9b8BA((&(*s0)), (NI)((NU64)(u0) >> (NU64)(((NI) 12))));
	{
		if (!!((t0 == NIM_NIL))) goto LA3;
		u0 = (NI)((NU64)((NI)((NU64)(u0) % (NU64)(((NI) 4096)))) / (NU64)(((NI) 8)));
		result0 = !(((NI)((*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] & (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(u0 & ((NI) 63))))))) == ((NI) 0)));
		{
			if (!!(result0)) goto LA7;
			(*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] = (NI)((*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] | (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(u0 & ((NI) 63)))))));
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		incl_m4q9b16kJJcoKe9c4ERtlpCg(s0, cell0);
		result0 = NIM_FALSE;
	}
	LA1: ;
	return result0;
}

N_NIMCALL(void, marks_NZr5o3Ubzrci4OmK29cHBJA)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
	incl_m4q9b16kJJcoKe9c4ERtlpCg((&(*gch0).marked), c0);
	forallchildren_yHFnLgI7q81iFxRlb3Iqlw(c0, ((Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ) 1));
	{
		while (1) {
			Cell_1zcF9cV8XIAtbN8h5HRUB8g* d0;
			if (!(((NI) 0) < (*gch0).tempstack.len)) goto LA2;
			(*gch0).tempstack.len -= ((NI) 1);
			d0 = (*gch0).tempstack.d[((*gch0).tempstack.len)- 0];
			{
				NIM_BOOL LOC5;
				LOC5 = (NIM_BOOL)0;
				LOC5 = containsorincl_CbGEjIBKJIi7knlaDzUluA((&(*gch0).marked), d0);
				if (!!(LOC5)) goto LA6;
				forallchildren_yHFnLgI7q81iFxRlb3Iqlw(d0, ((Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ) 1));
			}
			LA6: ;
		} LA2: ;
	}
}

N_NIMCALL(void, dooperation_3F8QeaTyYrJJF2gjBr6b8A)(void* p0, Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ op0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
{	{
		if (!(p0 == NIM_NIL)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	c0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(p0);
	switch (op0) {
	case ((Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ) 2):
	{
		decref_MV4BBk6J1qu70IbBxwEn4wsystem(c0);
	}
	break;
	case ((Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ) 3):
	{
		add_Wcf8r6MCjrJeJ3HSYwSp0Qsystem((&gch_IcYaEuuWivYAS86vFMTS3Q.tempstack), c0);
	}
	break;
	case ((Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ) 0):
	{
		marks_NZr5o3Ubzrci4OmK29cHBJA((&gch_IcYaEuuWivYAS86vFMTS3Q), c0);
	}
	break;
	case ((Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ) 1):
	{
		add_Wcf8r6MCjrJeJ3HSYwSp0Qsystem((&gch_IcYaEuuWivYAS86vFMTS3Q.tempstack), c0);
	}
	break;
	}
	}BeforeRet: ;
}

N_LIB_EXPORT N_CDECL(void, nimrtl_nimGCvisit)(void* d0, NI op0) {
	dooperation_3F8QeaTyYrJJF2gjBr6b8A(d0, ((Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ) (op0)));
}
static N_NIMCALL(void, Marker_TY_oUKtBcKRdK6usj8RWrlp6A)(void* p, NI op) {
	Exception* a;
	a = (Exception*)p;
	nimrtl_nimGCvisit((void*)(*a).parent, op);
	nimrtl_nimGCvisit((void*)(*a).message, op);
	nimrtl_nimGCvisit((void*)(*a).trace, op);
}
static N_NIMCALL(void, T_Q5wkpxktOdTGvlSRo9bzt9aw_4)(void) {
	nimrtl_nimGCvisit((void*)currexception_9bVPeDJlYTi9bQApZpfH8wjg, 0);
}

N_NIMCALL(void, nimRegisterGlobalMarker)(TY_T4eqaYlFJYZUv9aG9b1TV0bQ markerproc0) {
	{
		if (!(globalmarkerslen_hgEFy3UCOBoalBh29asu5MA <= ((NI) 7000))) goto LA3;
		globalmarkers_5ghwSgpo9cT9bT7YStQDJHVQ[(globalmarkerslen_hgEFy3UCOBoalBh29asu5MA)- 0] = markerproc0;
		globalmarkerslen_hgEFy3UCOBoalBh29asu5MA += ((NI) 1);
	}
	goto LA1;
	LA3: ;
	{
		printf("%s\012", ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_5)? (((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_5))->data:"nil");
		fflush(stdout);
		exit(((NI) 1));
	}
	LA1: ;
}

N_LIB_EXPORT N_CDECL(TFrame*, nimrtl_getFrame)(void) {
	TFrame* result0;
	result0 = (TFrame*)0;
	result0 = frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw;
	return result0;
}

N_LIB_EXPORT N_CDECL(void, nimrtl_popFrame)(void) {
	frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw = (*frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}

N_LIB_EXPORT N_CDECL(void, nimrtl_setFrame)(TFrame* s0) {
	frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw = s0;
}

N_LIB_EXPORT N_CDECL(void, nimrtl_pushSafePoint)(TSafePoint* s0) {
	(*s0).hasRaiseAction = NIM_FALSE;
	(*s0).prev = exchandler_rqLlY5bs9atDw2OXYqJEn5g;
	exchandler_rqLlY5bs9atDw2OXYqJEn5g = s0;
}

N_LIB_EXPORT N_CDECL(void, nimrtl_popSafePoint)(void) {
	exchandler_rqLlY5bs9atDw2OXYqJEn5g = (*exchandler_rqLlY5bs9atDw2OXYqJEn5g).prev;
}

static N_INLINE(void, incref_9cAA5YuQAAC3MVbnGeV86swsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
	(*c0).refcount = (NI)((NU64)((*c0).refcount) + (NU64)(((NI) 8)));
}

static N_INLINE(void, asgnRef)(void** dest0, void* src0) {
	{
		Cell_1zcF9cV8XIAtbN8h5HRUB8g* LOC5;
		if (!!((src0 == NIM_NIL))) goto LA3;
		LOC5 = (Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
		LOC5 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(src0);
		incref_9cAA5YuQAAC3MVbnGeV86swsystem(LOC5);
	}
	LA3: ;
	{
		Cell_1zcF9cV8XIAtbN8h5HRUB8g* LOC10;
		if (!!(((*dest0) == NIM_NIL))) goto LA8;
		LOC10 = (Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
		LOC10 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem((*dest0));
		decref_MV4BBk6J1qu70IbBxwEn4wsystem(LOC10);
	}
	LA8: ;
	(*dest0) = src0;
}

N_LIB_EXPORT N_CDECL(void, nimrtl_pushCurrentException)(Exception* e0) {
	asgnRef((void**) (&(*e0).parent), currexception_9bVPeDJlYTi9bQApZpfH8wjg);
	asgnRef((void**) (&currexception_9bVPeDJlYTi9bQApZpfH8wjg), e0);
}

N_LIB_EXPORT N_CDECL(void, nimrtl_popCurrentException)(void) {
	asgnRef((void**) (&currexception_9bVPeDJlYTi9bQApZpfH8wjg), NIM_NIL);
}

N_NOINLINE(NIM_BOOL, isobjslowpath_k9bdq9bQE075AR7scLFt5wIg)(TNimType* obj0, TNimType* subclass0, TNimType** cache0) {
	NIM_BOOL result0;
	TNimType* x0;
{	result0 = (NIM_BOOL)0;
	x0 = (*obj0).base;
	{
		while (1) {
			if (!!((x0 == subclass0))) goto LA2;
			{
				if (!(x0 == NIM_NIL)) goto LA5;
				cache0[(((NI) 0))- 0] = obj0;
				result0 = NIM_FALSE;
				goto BeforeRet;
			}
			LA5: ;
			x0 = (*x0).base;
		} LA2: ;
	}
	cache0[(((NI) 1))- 0] = obj0;
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

static N_INLINE(NIM_BOOL, isObjWithCache)(TNimType* obj0, TNimType* subclass0, TNimType** cache0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!(obj0 == subclass0)) goto LA3;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!((*obj0).base == subclass0)) goto LA7;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA7: ;
	{
		if (!(cache0[(((NI) 0))- 0] == obj0)) goto LA11;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA11: ;
	{
		if (!(cache0[(((NI) 1))- 0] == obj0)) goto LA15;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA15: ;
	result0 = isobjslowpath_k9bdq9bQE075AR7scLFt5wIg(obj0, subclass0, cache0);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NOINLINE(NI, stacksize_IV9bgfYkinlae0WZ2NZi5JA)(void) {
	NI result0;
	void* volatile stacktop0;
	result0 = (NI)0;
	stacktop0 = (void*)0;
	result0 = ((NI)(((NI) ((&stacktop0))) - ((NI) (gch_IcYaEuuWivYAS86vFMTS3Q.stackbottom))) > 0? ((NI)(((NI) ((&stacktop0))) - ((NI) (gch_IcYaEuuWivYAS86vFMTS3Q.stackbottom)))) : -((NI)(((NI) ((&stacktop0))) - ((NI) (gch_IcYaEuuWivYAS86vFMTS3Q.stackbottom)))));
	return result0;
}

static N_INLINE(NI, getoccupiedmem_61WxanWSOmDDV2uI7O10dQsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0) {
	NI result0;
	result0 = (NI)0;
	result0 = (NI)((*a0).currmem - (*a0).freemem);
	return result0;
}

N_NIMCALL(NI, lowgauge_3mwQtFaBTgevFrybZdgUNw)(Avlnode_IaqjtwKhxLEpvDS9bct9blEw* n0) {
	NI result0;
	Avlnode_IaqjtwKhxLEpvDS9bct9blEw* it0;
	result0 = (NI)0;
	it0 = n0;
	{
		while (1) {
			if (!!(((*it0).link[(((NI) 0))- 0] == it0))) goto LA2;
			result0 = (*it0).key;
			it0 = (*it0).link[(((NI) 0))- 0];
		} LA2: ;
	}
	return result0;
}

N_NIMCALL(NI, highgauge_3mwQtFaBTgevFrybZdgUNw_2)(Avlnode_IaqjtwKhxLEpvDS9bct9blEw* n0) {
	NI result0;
	Avlnode_IaqjtwKhxLEpvDS9bct9blEw* it0;
	result0 = (NI)0;
	result0 = ((NI) -1);
	it0 = n0;
	{
		while (1) {
			if (!!(((*it0).link[(((NI) 0))- 0] == it0))) goto LA2;
			result0 = (*it0).upperbound;
			it0 = (*it0).link[(((NI) 1))- 0];
		} LA2: ;
	}
	return result0;
}

static N_INLINE(void, prepareforinteriorpointerchecking_Zqr3EQAAcehIfp3uSECEuQsystem)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0) {
	(*a0).minlargeobj = lowgauge_3mwQtFaBTgevFrybZdgUNw((*a0).root);
	(*a0).maxlargeobj = highgauge_3mwQtFaBTgevFrybZdgUNw_2((*a0).root);
}

N_NIMCALL(Avlnode_IaqjtwKhxLEpvDS9bct9blEw*, inrange_Bc4Ua6HOMCIDGx9b15HSY4g)(Avlnode_IaqjtwKhxLEpvDS9bct9blEw* root0, NI key0) {
	Avlnode_IaqjtwKhxLEpvDS9bct9blEw* result0;
	Avlnode_IaqjtwKhxLEpvDS9bct9blEw* it0;
{	result0 = (Avlnode_IaqjtwKhxLEpvDS9bct9blEw*)0;
	it0 = root0;
	{
		while (1) {
			if (!!(((*it0).link[(((NI) 0))- 0] == it0))) goto LA2;
			{
				NIM_BOOL LOC5;
				LOC5 = (NIM_BOOL)0;
				LOC5 = ((NU64)((*it0).key) <= (NU64)(key0));
				if (!(LOC5)) goto LA6;
				LOC5 = ((NU64)(key0) < (NU64)((*it0).upperbound));
				LA6: ;
				if (!LOC5) goto LA7;
				result0 = it0;
				goto BeforeRet;
			}
			LA7: ;
			it0 = (*it0).link[(((NU64)((*it0).key) < (NU64)(key0)))- 0];
		} LA2: ;
	}
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void*, interiorallocatedptr_N7XNyRgfMLnCjS9bVeVc3bA)(Memregion_x81NhDv59b8ercDZ9bi85jyg* a0, void* p0) {
	void* result0;
	result0 = (void*)0;
	{
		NIM_BOOL LOC3;
		Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c_yIh9aRWzB09aLbWrpqTaJLaw;
		LOC3 = (NIM_BOOL)0;
		LOC3 = isaccessible_5nqar3kL9acJcissrFLDdkwsystem(a0, p0);
		if (!LOC3) goto LA4;
		c_yIh9aRWzB09aLbWrpqTaJLaw = pageaddr_4uti7hTxTUDxUPqFMgMvHAsystem(p0);
		{
			NIM_BOOL LOC8;
			LOC8 = (NIM_BOOL)0;
			LOC8 = chunkunused_xxNWShoyEPMUVN7FvfpDjw_2system(c_yIh9aRWzB09aLbWrpqTaJLaw);
			if (!!(LOC8)) goto LA9;
			{
				NIM_BOOL LOC13;
				Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* c0;
				NI offset0;
				LOC13 = (NIM_BOOL)0;
				LOC13 = issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem(c_yIh9aRWzB09aLbWrpqTaJLaw);
				if (!LOC13) goto LA14;
				c0 = ((Smallchunk_tXn60W2f8h3jgAYdEmy5NQ*) (c_yIh9aRWzB09aLbWrpqTaJLaw));
				offset0 = (NI)((NU64)(((NI) ((NI)(((NI) (p0)) & ((NI) 4095))))) - (NU64)((NI)(((NI)sizeof(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ)) - ((NI) 8))));
				{
					Freecell_u6M5LHprqzkn9axr04yg9bGQ* d0;
					if (!((NU64)(offset0) < (NU64)((*c0).acc))) goto LA18;
					d0 = ((Freecell_u6M5LHprqzkn9axr04yg9bGQ*) ((NI)((NU64)((NI)((NU64)(((NI) ((&(*c0).data)))) + (NU64)(offset0))) - (NU64)((NI)((NU64)(offset0) % (NU64)((*c0).Sup.size))))));
					{
						if (!((NU64)(((NI) 1)) < (NU64)((*d0).zerofield))) goto LA22;
						result0 = ((void*) (d0));
					}
					LA22: ;
				}
				LA18: ;
			}
			goto LA11;
			LA14: ;
			{
				Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0;
				NF* d0;
				c0 = ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) (c_yIh9aRWzB09aLbWrpqTaJLaw));
				d0 = (&(*c0).data);
				{
					NIM_BOOL LOC27;
					LOC27 = (NIM_BOOL)0;
					LOC27 = (((void*) (d0)) <= p0);
					if (!(LOC27)) goto LA28;
					LOC27 = ((NU64)(((NI) 1)) < (NU64)((*((Freecell_u6M5LHprqzkn9axr04yg9bGQ*) (d0))).zerofield));
					LA28: ;
					if (!LOC27) goto LA29;
					result0 = ((void*) (d0));
				}
				LA29: ;
			}
			LA11: ;
		}
		LA9: ;
	}
	goto LA1;
	LA4: ;
	{
		NI q0;
		q0 = ((NI) (p0));
		{
			NIM_BOOL LOC34;
			Avlnode_IaqjtwKhxLEpvDS9bct9blEw* avlnode0;
			LOC34 = (NIM_BOOL)0;
			LOC34 = ((NU64)((*a0).minlargeobj) <= (NU64)(q0));
			if (!(LOC34)) goto LA35;
			LOC34 = ((NU64)(q0) <= (NU64)((*a0).maxlargeobj));
			LA35: ;
			if (!LOC34) goto LA36;
			avlnode0 = inrange_Bc4Ua6HOMCIDGx9b15HSY4g((*a0).root, q0);
			{
				void* k0;
				Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c0;
				Basechunk_Sdq7WpT6qAH858F5ZEdG3w* LOC42;
				if (!!((avlnode0 == NIM_NIL))) goto LA40;
				k0 = ((void*) ((*avlnode0).key));
				LOC42 = (Basechunk_Sdq7WpT6qAH858F5ZEdG3w*)0;
				LOC42 = pageaddr_4uti7hTxTUDxUPqFMgMvHAsystem(k0);
				c0 = ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) (LOC42));
				{
					if (!((NU64)(((NI) 1)) < (NU64)((*((Freecell_u6M5LHprqzkn9axr04yg9bGQ*) (k0))).zerofield))) goto LA45;
					result0 = k0;
				}
				LA45: ;
			}
			LA40: ;
		}
		LA36: ;
	}
	LA1: ;
	return result0;
}

static N_INLINE(void, gcmark_JLiT51Zk6OLnaexGSTHHEQsystem)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0, void* p0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0;
	NI c0;
	cell0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(p0);
	c0 = ((NI) (cell0));
	{
		Cell_1zcF9cV8XIAtbN8h5HRUB8g* objstart0;
		void* LOC5;
		if (!((NU64)(((NI) 4096)) < (NU64)(c0))) goto LA3;
		LOC5 = (void*)0;
		LOC5 = interiorallocatedptr_N7XNyRgfMLnCjS9bVeVc3bA((&(*gch0).region), ((void*) (cell0)));
		objstart0 = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g*) (LOC5));
		{
			if (!!((objstart0 == NIM_NIL))) goto LA8;
			(*objstart0).refcount = (NI)((NU64)((*objstart0).refcount) + (NU64)(((NI) 8)));
			add_Wcf8r6MCjrJeJ3HSYwSp0Qsystem((&(*gch0).decstack), objstart0);
		}
		LA8: ;
	}
	LA3: ;
}

N_CDECL(void, markstackandregisters_LdwvBL9bC9c0lik7K9bau9bX0Q)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0) {
	jmp_buf registers0;
	{
		int LOC3;
		NI max0;
		NI sp0;
		NI regend0;
		LOC3 = (int)0;
		LOC3 = setjmp(registers0);
		if (!(LOC3 == ((NI32) 0))) goto LA4;
		max0 = ((NI) ((*gch0).stackbottom));
		sp0 = ((NI) ((&registers0)));
		regend0 = (NI)((NU64)(sp0) + (NU64)(((NI)sizeof(jmp_buf))));
		{
			while (1) {
				if (!((NU64)(sp0) < (NU64)(regend0))) goto LA7;
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, (*((void**) (sp0))));
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, (*((void**) ((NI)((NU64)(sp0) + (NU64)(((NI) 4)))))));
				sp0 = (NI)((NU64)(sp0) + (NU64)(((NI) 8)));
			} LA7: ;
		}
		sp0 = (NI)(sp0 & ((NI) -8));
		{
			while (1) {
				if (!((NU64)(sp0) < (NU64)((NI)(max0 - ((NI) 64))))) goto LA9;
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, ((void**) (sp0))[(((NI) 0))- 0]);
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, ((void**) (sp0))[(((NI) 1))- 0]);
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, ((void**) (sp0))[(((NI) 2))- 0]);
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, ((void**) (sp0))[(((NI) 3))- 0]);
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, ((void**) (sp0))[(((NI) 4))- 0]);
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, ((void**) (sp0))[(((NI) 5))- 0]);
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, ((void**) (sp0))[(((NI) 6))- 0]);
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, ((void**) (sp0))[(((NI) 7))- 0]);
				sp0 = (NI)((NU64)(sp0) + (NU64)(((NI) 64)));
			} LA9: ;
		}
		{
			while (1) {
				if (!((NU64)(sp0) <= (NU64)(max0))) goto LA11;
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, (*((void**) (sp0))));
				sp0 = (NI)((NU64)(sp0) + (NU64)(((NI) 8)));
			} LA11: ;
		}
	}
	LA4: ;
}

N_NIMCALL(void, preparedealloc_0Ao1u9cpV0dTuUB5G9cEQ8eQ)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0) {
	{
		void* LOC5;
		if (!!(((*(*cell0).typ).finalizer == NIM_NIL))) goto LA3;
		gch_IcYaEuuWivYAS86vFMTS3Q.recgclock += ((NI) 1);
		LOC5 = (void*)0;
		LOC5 = celltousr_vA0UG8JLZvpzP1Xf3vkPgwsystem(cell0);
		((Finalizer) ((*(*cell0).typ).finalizer))(LOC5);
		gch_IcYaEuuWivYAS86vFMTS3Q.recgclock -= ((NI) 1);
	}
	LA3: ;
}

N_NIMCALL(NIM_BOOL, collectzct_evVbQ9bNF7LYMhoG9aWXu9bKw)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0) {
	NIM_BOOL result0;
	NI* L0;
	result0 = (NIM_BOOL)0;
	L0 = (&(*gch0).zct.len);
	{
		while (1) {
			Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
			if (!(((NI) 0) < (*L0))) goto LA2;
			c0 = (*gch0).zct.d[(((NI) 0))- 0];
			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
			(*gch0).zct.d[(((NI) 0))- 0] = (*gch0).zct.d[((NI)((*L0) - ((NI) 1)))- 0];
			(*L0) -= ((NI) 1);
			{
				if (!((NU64)((*c0).refcount) < (NU64)(((NI) 8)))) goto LA5;
				preparedealloc_0Ao1u9cpV0dTuUB5G9cEQ8eQ(c0);
				forallchildren_yHFnLgI7q81iFxRlb3Iqlw(c0, ((Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ) 2));
				rawdealloc_DA62HrGC5sdfCED505KyyQ((&(*gch0).region), ((void*) (c0)));
			}
			LA5: ;
		} LA2: ;
	}
	result0 = NIM_TRUE;
	return result0;
}

N_NIMCALL(void, deinit_WHgd5C59bkXWDz3vnAxfzXQ_3)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0) {
	Pagedesc_fublkgIY4LG3mT51LU2WHg* it0;
	it0 = (*s0).head;
	{
		while (1) {
			Pagedesc_fublkgIY4LG3mT51LU2WHg* n0;
			if (!!((it0 == NIM_NIL))) goto LA2;
			n0 = (*it0).next;
			nimrtl_dealloc(((void*) (it0)));
			it0 = n0;
		} LA2: ;
	}
	(*s0).head = NIM_NIL;
	nimrtl_dealloc(((void*) ((*s0).data)));
	(*s0).data = NIM_NIL;
	(*s0).counter = ((NI) 0);
}

N_NIMCALL(void, cellsetreset_WHgd5C59bkXWDz3vnAxfzXQ_2)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0) {
	deinit_WHgd5C59bkXWDz3vnAxfzXQ_3(s0);
	init_WHgd5C59bkXWDz3vnAxfzXQ(s0);
}

N_NIMCALL(void, markglobals_zoTIuavlrCHyw3B8MBaLJA_4)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g** d0;
	{
		NI i_AoHIDgIUAQh9bnansIyGGVQ;
		NI HEX3Atmp_o9ag5NKzzy9cQKXFg6Ej9cTBg;
		NI res_9c3fyYTfO2QwDrZCY0WpYWQ;
		i_AoHIDgIUAQh9bnansIyGGVQ = (NI)0;
		HEX3Atmp_o9ag5NKzzy9cQKXFg6Ej9cTBg = (NI)0;
		HEX3Atmp_o9ag5NKzzy9cQKXFg6Ej9cTBg = (globalmarkerslen_hgEFy3UCOBoalBh29asu5MA - 1);
		res_9c3fyYTfO2QwDrZCY0WpYWQ = ((NI) 0);
		{
			while (1) {
				if (!(res_9c3fyYTfO2QwDrZCY0WpYWQ <= HEX3Atmp_o9ag5NKzzy9cQKXFg6Ej9cTBg)) goto LA3;
				i_AoHIDgIUAQh9bnansIyGGVQ = res_9c3fyYTfO2QwDrZCY0WpYWQ;
				globalmarkers_5ghwSgpo9cT9bT7YStQDJHVQ[(i_AoHIDgIUAQh9bnansIyGGVQ)- 0]();
				res_9c3fyYTfO2QwDrZCY0WpYWQ += ((NI) 1);
			} LA3: ;
		}
	}
	d0 = (*gch0).additionalroots.d;
	{
		NI i_AoHIDgIUAQh9bnansIyGGVQ_2;
		NI HEX3Atmp_o9ag5NKzzy9cQKXFg6Ej9cTBg_2;
		NI res_9c3fyYTfO2QwDrZCY0WpYWQ_2;
		i_AoHIDgIUAQh9bnansIyGGVQ_2 = (NI)0;
		HEX3Atmp_o9ag5NKzzy9cQKXFg6Ej9cTBg_2 = (NI)0;
		HEX3Atmp_o9ag5NKzzy9cQKXFg6Ej9cTBg_2 = ((*gch0).additionalroots.len - 1);
		res_9c3fyYTfO2QwDrZCY0WpYWQ_2 = ((NI) 0);
		{
			while (1) {
				if (!(res_9c3fyYTfO2QwDrZCY0WpYWQ_2 <= HEX3Atmp_o9ag5NKzzy9cQKXFg6Ej9cTBg_2)) goto LA6;
				i_AoHIDgIUAQh9bnansIyGGVQ_2 = res_9c3fyYTfO2QwDrZCY0WpYWQ_2;
				marks_NZr5o3Ubzrci4OmK29cHBJA(gch0, d0[(i_AoHIDgIUAQh9bnansIyGGVQ_2)- 0]);
				res_9c3fyYTfO2QwDrZCY0WpYWQ_2 += ((NI) 1);
			} LA6: ;
		}
	}
}

static N_INLINE(NIM_BOOL, iscell_CkuKXXC4hAqaVj8vwjANDAsystem)(void* p0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = ((NU64)(((NI) 1)) < (NU64)((*((Freecell_u6M5LHprqzkn9axr04yg9bGQ*) (p0))).zerofield));
	return result0;
}

N_NIMCALL(NIM_BOOL, contains_9c4TZ2Zl3sU4TUeK9bR8E9ciw)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0) {
	NIM_BOOL result0;
	NI u0;
	Pagedesc_fublkgIY4LG3mT51LU2WHg* t0;
	result0 = (NIM_BOOL)0;
	u0 = ((NI) (cell0));
	t0 = cellsetget_X4WTfs0wkld8wp8XcE9b8BA(s0, (NI)((NU64)(u0) >> (NU64)(((NI) 12))));
	{
		if (!!((t0 == NIM_NIL))) goto LA3;
		u0 = (NI)((NU64)((NI)((NU64)(u0) % (NU64)(((NI) 4096)))) / (NU64)(((NI) 8)));
		result0 = !(((NI)((*t0).bits[((NI)((NU64)(u0) >> (NU64)(((NI) 6))))- 0] & (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(u0 & ((NI) 63))))))) == ((NI) 0)));
	}
	goto LA1;
	LA3: ;
	{
		result0 = NIM_FALSE;
	}
	LA1: ;
	return result0;
}

N_NIMCALL(void, freecycliccell_NZr5o3Ubzrci4OmK29cHBJA_2)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
	preparedealloc_0Ao1u9cpV0dTuUB5G9cEQ8eQ(c0);
	rawdealloc_DA62HrGC5sdfCED505KyyQ((&(*gch0).region), ((void*) (c0)));
}

N_NIMCALL(void, sweep_zoTIuavlrCHyw3B8MBaLJA_5)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0) {
	{
		void* x_Fli4EYuRClKyF9aCRaMMudg;
		x_Fli4EYuRClKyF9aCRaMMudg = (void*)0;
		(*gch0).region.locked = NIM_TRUE;
		{
			NI s_1Y9aKtFZmdmj17yg9arcbSqA;
			Intset_EZObFrE3NC9bIb3YMkY9crZA HEX3Atmp_mlXAAbxM9b1u9beV53q6CMzQ;
			s_1Y9aKtFZmdmj17yg9arcbSqA = (NI)0;
			memset((void*)(&HEX3Atmp_mlXAAbxM9b1u9beV53q6CMzQ), 0, sizeof(HEX3Atmp_mlXAAbxM9b1u9beV53q6CMzQ));
			HEX3Atmp_mlXAAbxM9b1u9beV53q6CMzQ = (*gch0).region.chunkstarts;
			{
				NI h_QLyAkXbxGYNZKd1Ck9bPP7w;
				NI res_eyrxao58VEx9b5JB6UAOBFA;
				h_QLyAkXbxGYNZKd1Ck9bPP7w = (NI)0;
				res_eyrxao58VEx9b5JB6UAOBFA = ((NI) 0);
				{
					while (1) {
						Trunk_W0r8S0Y3UGke6T9bIUWnnuw* r_9a32VcH5sesHHXC9bwz5Nh0w;
						if (!(res_eyrxao58VEx9b5JB6UAOBFA <= ((NI) 255))) goto LA5;
						h_QLyAkXbxGYNZKd1Ck9bPP7w = ((NI) (res_eyrxao58VEx9b5JB6UAOBFA));
						r_9a32VcH5sesHHXC9bwz5Nh0w = HEX3Atmp_mlXAAbxM9b1u9beV53q6CMzQ.data[(h_QLyAkXbxGYNZKd1Ck9bPP7w)- 0];
						{
							while (1) {
								NI i_FLrFOsLu5leUfFoACchGxA;
								if (!!((r_9a32VcH5sesHHXC9bwz5Nh0w == NIM_NIL))) goto LA7;
								i_FLrFOsLu5leUfFoACchGxA = ((NI) 0);
								{
									while (1) {
										NI w_ibXjzXOz1myjpSVQLK6sOw;
										NI j_HkxQe3re4CqNnu9asCVaimQ;
										if (!(i_FLrFOsLu5leUfFoACchGxA <= ((NI) 7))) goto LA9;
										w_ibXjzXOz1myjpSVQLK6sOw = (*r_9a32VcH5sesHHXC9bwz5Nh0w).bits[(i_FLrFOsLu5leUfFoACchGxA)- 0];
										j_HkxQe3re4CqNnu9asCVaimQ = ((NI) 0);
										{
											while (1) {
												if (!!((w_ibXjzXOz1myjpSVQLK6sOw == ((NI) 0)))) goto LA11;
												{
													if (!!((((NI) ((NI)(w_ibXjzXOz1myjpSVQLK6sOw & ((NI) 1)))) == ((NI) 0)))) goto LA14;
													s_1Y9aKtFZmdmj17yg9arcbSqA = (NI)((NI)((NU64)((*r_9a32VcH5sesHHXC9bwz5Nh0w).key) << (NU64)(((NI) 9))) | (NI)((NU64)((NI)((NU64)(i_FLrFOsLu5leUfFoACchGxA) << (NU64)(((NI) 6)))) + (NU64)(j_HkxQe3re4CqNnu9asCVaimQ)));
													{
														NIM_BOOL LOC18;
														Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c_XV9aqvD0bSEkMeGo9bx7FRDA;
														LOC18 = (NIM_BOOL)0;
														LOC18 = contains_tGsWrN4DY41H9btt3FhjrNA((&(*gch0).region.chunkstarts), s_1Y9aKtFZmdmj17yg9arcbSqA);
														if (!LOC18) goto LA19;
														c_XV9aqvD0bSEkMeGo9bx7FRDA = ((Basechunk_Sdq7WpT6qAH858F5ZEdG3w*) ((NI)((NU64)(s_1Y9aKtFZmdmj17yg9arcbSqA) << (NU64)(((NI) 12)))));
														{
															NIM_BOOL LOC23;
															LOC23 = (NIM_BOOL)0;
															LOC23 = chunkunused_xxNWShoyEPMUVN7FvfpDjw_2system(c_XV9aqvD0bSEkMeGo9bx7FRDA);
															if (!!(LOC23)) goto LA24;
															{
																NIM_BOOL LOC28;
																Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* c_XV9aqvD0bSEkMeGo9bx7FRDA_2;
																NI size_hcqhHhc4g2fO9cnhuD7tOeQ;
																NI a_3gxhb5SKJHpRJiXNtI4DXQ;
																NI limit_7OBPbBxuQ43t9ctiUzskAsg;
																LOC28 = (NIM_BOOL)0;
																LOC28 = issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem(c_XV9aqvD0bSEkMeGo9bx7FRDA);
																if (!LOC28) goto LA29;
																c_XV9aqvD0bSEkMeGo9bx7FRDA_2 = ((Smallchunk_tXn60W2f8h3jgAYdEmy5NQ*) (c_XV9aqvD0bSEkMeGo9bx7FRDA));
																size_hcqhHhc4g2fO9cnhuD7tOeQ = (*c_XV9aqvD0bSEkMeGo9bx7FRDA_2).Sup.size;
																a_3gxhb5SKJHpRJiXNtI4DXQ = ((NI) ((&(*c_XV9aqvD0bSEkMeGo9bx7FRDA_2).data)));
																limit_7OBPbBxuQ43t9ctiUzskAsg = (NI)(a_3gxhb5SKJHpRJiXNtI4DXQ + (*c_XV9aqvD0bSEkMeGo9bx7FRDA_2).acc);
																{
																	while (1) {
																		if (!((NU64)(a_3gxhb5SKJHpRJiXNtI4DXQ) < (NU64)(limit_7OBPbBxuQ43t9ctiUzskAsg))) goto LA32;
																		x_Fli4EYuRClKyF9aCRaMMudg = ((void*) (a_3gxhb5SKJHpRJiXNtI4DXQ));
																		{
																			NIM_BOOL LOC35;
																			Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
																			LOC35 = (NIM_BOOL)0;
																			LOC35 = iscell_CkuKXXC4hAqaVj8vwjANDAsystem(x_Fli4EYuRClKyF9aCRaMMudg);
																			if (!LOC35) goto LA36;
																			c0 = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g*) (x_Fli4EYuRClKyF9aCRaMMudg));
																			{
																				NIM_BOOL LOC40;
																				LOC40 = (NIM_BOOL)0;
																				LOC40 = contains_9c4TZ2Zl3sU4TUeK9bR8E9ciw((&(*gch0).marked), c0);
																				if (!!(LOC40)) goto LA41;
																				freecycliccell_NZr5o3Ubzrci4OmK29cHBJA_2(gch0, c0);
																			}
																			LA41: ;
																		}
																		LA36: ;
																		a_3gxhb5SKJHpRJiXNtI4DXQ = (NI)((NU64)(a_3gxhb5SKJHpRJiXNtI4DXQ) + (NU64)(size_hcqhHhc4g2fO9cnhuD7tOeQ));
																	} LA32: ;
																}
															}
															goto LA26;
															LA29: ;
															{
																Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* c_XV9aqvD0bSEkMeGo9bx7FRDA_3;
																c_XV9aqvD0bSEkMeGo9bx7FRDA_3 = ((Bigchunk_Rv9c70Uhp2TytkX7eH78qEg*) (c_XV9aqvD0bSEkMeGo9bx7FRDA));
																x_Fli4EYuRClKyF9aCRaMMudg = ((void*) ((&(*c_XV9aqvD0bSEkMeGo9bx7FRDA_3).data)));
																{
																	NIM_BOOL LOC46;
																	Cell_1zcF9cV8XIAtbN8h5HRUB8g* c_XV9aqvD0bSEkMeGo9bx7FRDA_4;
																	LOC46 = (NIM_BOOL)0;
																	LOC46 = iscell_CkuKXXC4hAqaVj8vwjANDAsystem(x_Fli4EYuRClKyF9aCRaMMudg);
																	if (!LOC46) goto LA47;
																	c_XV9aqvD0bSEkMeGo9bx7FRDA_4 = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g*) (x_Fli4EYuRClKyF9aCRaMMudg));
																	{
																		NIM_BOOL LOC51;
																		LOC51 = (NIM_BOOL)0;
																		LOC51 = contains_9c4TZ2Zl3sU4TUeK9bR8E9ciw((&(*gch0).marked), c_XV9aqvD0bSEkMeGo9bx7FRDA_4);
																		if (!!(LOC51)) goto LA52;
																		freecycliccell_NZr5o3Ubzrci4OmK29cHBJA_2(gch0, c_XV9aqvD0bSEkMeGo9bx7FRDA_4);
																	}
																	LA52: ;
																}
																LA47: ;
															}
															LA26: ;
														}
														LA24: ;
													}
													LA19: ;
												}
												LA14: ;
												j_HkxQe3re4CqNnu9asCVaimQ += ((NI) 1);
												w_ibXjzXOz1myjpSVQLK6sOw = (NI)((NU64)(w_ibXjzXOz1myjpSVQLK6sOw) >> (NU64)(((NI) 1)));
											} LA11: ;
										}
										i_FLrFOsLu5leUfFoACchGxA += ((NI) 1);
									} LA9: ;
								}
								r_9a32VcH5sesHHXC9bwz5Nh0w = (*r_9a32VcH5sesHHXC9bwz5Nh0w).next;
							} LA7: ;
						}
						res_eyrxao58VEx9b5JB6UAOBFA += ((NI) 1);
					} LA5: ;
				}
			}
		}
		(*gch0).region.locked = NIM_FALSE;
	}
}

N_NIMCALL(void, collectcycles_zoTIuavlrCHyw3B8MBaLJA_3)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g** d0;
	{
		while (1) {
			NIM_BOOL LOC3;
			if (!(((NI) 0) < (*gch0).zct.len)) goto LA2;
			LOC3 = (NIM_BOOL)0;
			LOC3 = collectzct_evVbQ9bNF7LYMhoG9aWXu9bKw(gch0);
		} LA2: ;
	}
	cellsetreset_WHgd5C59bkXWDz3vnAxfzXQ_2((&(*gch0).marked));
	d0 = (*gch0).decstack.d;
	{
		NI i_Kj2M28fwj9aqgfIzEH0YAgw;
		NI HEX3Atmp_kt9ch9c6ul2Ea9b5bnz9cyN9clQ;
		NI res_KIvI4VoKAGac9blsI9aFDXaA;
		i_Kj2M28fwj9aqgfIzEH0YAgw = (NI)0;
		HEX3Atmp_kt9ch9c6ul2Ea9b5bnz9cyN9clQ = (NI)0;
		HEX3Atmp_kt9ch9c6ul2Ea9b5bnz9cyN9clQ = (NI)((*gch0).decstack.len - ((NI) 1));
		res_KIvI4VoKAGac9blsI9aFDXaA = ((NI) 0);
		{
			while (1) {
				if (!(res_KIvI4VoKAGac9blsI9aFDXaA <= HEX3Atmp_kt9ch9c6ul2Ea9b5bnz9cyN9clQ)) goto LA6;
				i_Kj2M28fwj9aqgfIzEH0YAgw = res_KIvI4VoKAGac9blsI9aFDXaA;
				marks_NZr5o3Ubzrci4OmK29cHBJA(gch0, d0[(i_Kj2M28fwj9aqgfIzEH0YAgw)- 0]);
				res_KIvI4VoKAGac9blsI9aFDXaA += ((NI) 1);
			} LA6: ;
		}
	}
	markglobals_zoTIuavlrCHyw3B8MBaLJA_4(gch0);
	sweep_zoTIuavlrCHyw3B8MBaLJA_5(gch0);
}

N_LIB_EXPORT N_CDECL(NI, nimrtl_getTotalMem)(void) {
	NI result0;
{	result0 = (NI)0;
	result0 = gch_IcYaEuuWivYAS86vFMTS3Q.region.currmem;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nimrtl_getFreeMem)(void) {
	NI result0;
	result0 = (NI)0;
	result0 = gch_IcYaEuuWivYAS86vFMTS3Q.region.freemem;
	return result0;
}

N_LIB_EXPORT N_CDECL(NI, nimrtl_getOccupiedMem)(void) {
	NI result0;
	NI LOC1;
	NI LOC2;
{	result0 = (NI)0;
	LOC1 = (NI)0;
	LOC1 = nimrtl_getTotalMem();
	LOC2 = (NI)0;
	LOC2 = nimrtl_getFreeMem();
	result0 = (NI)(LOC1 - LOC2);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void, unmarkstackandregisters_zoTIuavlrCHyw3B8MBaLJA_6)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g** d0;
	d0 = (*gch0).decstack.d;
	{
		NI i_tUcesQCSPfKg0Pbj3qVTQQ;
		NI HEX3Atmp_DV9b0yy1QL9az9bJU0JAkknBw;
		NI res_m0ZTDXpSQxoh4brkKaPoWQ;
		i_tUcesQCSPfKg0Pbj3qVTQQ = (NI)0;
		HEX3Atmp_DV9b0yy1QL9az9bJU0JAkknBw = (NI)0;
		HEX3Atmp_DV9b0yy1QL9az9bJU0JAkknBw = (NI)((*gch0).decstack.len - ((NI) 1));
		res_m0ZTDXpSQxoh4brkKaPoWQ = ((NI) 0);
		{
			while (1) {
				if (!(res_m0ZTDXpSQxoh4brkKaPoWQ <= HEX3Atmp_DV9b0yy1QL9az9bJU0JAkknBw)) goto LA3;
				i_tUcesQCSPfKg0Pbj3qVTQQ = res_m0ZTDXpSQxoh4brkKaPoWQ;
				decref_MV4BBk6J1qu70IbBxwEn4wsystem(d0[(i_tUcesQCSPfKg0Pbj3qVTQQ)- 0]);
				res_m0ZTDXpSQxoh4brkKaPoWQ += ((NI) 1);
			} LA3: ;
		}
	}
	(*gch0).decstack.len = ((NI) 0);
}

N_NIMCALL(void, collectctbody_zoTIuavlrCHyw3B8MBaLJA_2)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0) {
	NI LOC1;
	LOC1 = (NI)0;
	LOC1 = stacksize_IV9bgfYkinlae0WZ2NZi5JA();
	(*gch0).stat.maxstacksize = (((*gch0).stat.maxstacksize >= LOC1) ? (*gch0).stat.maxstacksize : LOC1);
	prepareforinteriorpointerchecking_Zqr3EQAAcehIfp3uSECEuQsystem((&(*gch0).region));
	markstackandregisters_LdwvBL9bC9c0lik7K9bau9bX0Q(gch0);
	(*gch0).stat.maxstackcells = (((*gch0).stat.maxstackcells >= (*gch0).decstack.len) ? (*gch0).stat.maxstackcells : (*gch0).decstack.len);
	(*gch0).stat.stackscans += ((NI) 1);
	{
		NIM_BOOL LOC4;
		LOC4 = (NIM_BOOL)0;
		LOC4 = collectzct_evVbQ9bNF7LYMhoG9aWXu9bKw(gch0);
		if (!LOC4) goto LA5;
		{
			NIM_BOOL LOC9;
			NI LOC10;
			NI LOC14;
			LOC9 = (NIM_BOOL)0;
			LOC10 = (NI)0;
			LOC10 = getoccupiedmem_61WxanWSOmDDV2uI7O10dQsystem((&(*gch0).region));
			LOC9 = ((*gch0).cyclethreshold <= LOC10);
			if (LOC9) goto LA11;
			LOC9 = NIM_FALSE;
			LA11: ;
			if (!LOC9) goto LA12;
			collectcycles_zoTIuavlrCHyw3B8MBaLJA_3(gch0);
			(*gch0).stat.cyclecollections += ((NI) 1);
			LOC14 = (NI)0;
			LOC14 = nimrtl_getOccupiedMem();
			(*gch0).cyclethreshold = ((((NI) 4194304) >= (NI)(LOC14 * ((NI) 2))) ? ((NI) 4194304) : (NI)(LOC14 * ((NI) 2)));
			(*gch0).stat.maxthreshold = (((*gch0).stat.maxthreshold >= (*gch0).cyclethreshold) ? (*gch0).stat.maxthreshold : (*gch0).cyclethreshold);
		}
		LA12: ;
	}
	LA5: ;
	unmarkstackandregisters_zoTIuavlrCHyw3B8MBaLJA_6(gch0);
}

N_NIMCALL(void, collectct_zoTIuavlrCHyw3B8MBaLJA)(Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0) {
	NI stackmarkcosts0;
	NI LOC1;
	LOC1 = (NI)0;
	LOC1 = stacksize_IV9bgfYkinlae0WZ2NZi5JA();
	stackmarkcosts0 = (((NI)(LOC1 / ((NI) 128)) >= ((NI) 500)) ? (NI)(LOC1 / ((NI) 128)) : ((NI) 500));
	{
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NIM_BOOL LOC6;
		NIM_BOOL LOC8;
		NI LOC10;
		LOC4 = (NIM_BOOL)0;
		LOC5 = (NIM_BOOL)0;
		LOC6 = (NIM_BOOL)0;
		LOC6 = (stackmarkcosts0 <= (*gch0).zct.len);
		if (LOC6) goto LA7;
		LOC8 = (NIM_BOOL)0;
		LOC8 = NIM_TRUE;
		if (!(LOC8)) goto LA9;
		LOC10 = (NI)0;
		LOC10 = getoccupiedmem_61WxanWSOmDDV2uI7O10dQsystem((&(*gch0).region));
		LOC8 = ((*gch0).cyclethreshold <= LOC10);
		LA9: ;
		LOC6 = LOC8;
		LA7: ;
		LOC5 = LOC6;
		if (LOC5) goto LA11;
		LOC5 = NIM_FALSE;
		LA11: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA12;
		LOC4 = ((*gch0).recgclock == ((NI) 0));
		LA12: ;
		if (!LOC4) goto LA13;
		collectctbody_zoTIuavlrCHyw3B8MBaLJA_2(gch0);
	}
	LA13: ;
}

static N_INLINE(void, addnewobjtozct_Ga5iPZj9bPFJIiW7GQdxs7gsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* res0, Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0) {
	NI L0;
	Cell_1zcF9cV8XIAtbN8h5HRUB8g** d0;
{	L0 = (*gch0).zct.len;
	d0 = (*gch0).zct.d;
	{
		Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
		if (!(((NI) 8) < L0)) goto LA3;
		c0 = (Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
		c0 = d0[((NI)(L0 - ((NI) 1)))- 0];
		{
			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA7;
			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
			d0[((NI)(L0 - ((NI) 1)))- 0] = res0;
			goto BeforeRet;
		}
		LA7: ;
		c0 = d0[((NI)(L0 - ((NI) 2)))- 0];
		{
			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA11;
			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
			d0[((NI)(L0 - ((NI) 2)))- 0] = res0;
			goto BeforeRet;
		}
		LA11: ;
		c0 = d0[((NI)(L0 - ((NI) 3)))- 0];
		{
			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA15;
			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
			d0[((NI)(L0 - ((NI) 3)))- 0] = res0;
			goto BeforeRet;
		}
		LA15: ;
		c0 = d0[((NI)(L0 - ((NI) 4)))- 0];
		{
			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA19;
			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
			d0[((NI)(L0 - ((NI) 4)))- 0] = res0;
			goto BeforeRet;
		}
		LA19: ;
		c0 = d0[((NI)(L0 - ((NI) 5)))- 0];
		{
			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA23;
			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
			d0[((NI)(L0 - ((NI) 5)))- 0] = res0;
			goto BeforeRet;
		}
		LA23: ;
		c0 = d0[((NI)(L0 - ((NI) 6)))- 0];
		{
			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA27;
			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
			d0[((NI)(L0 - ((NI) 6)))- 0] = res0;
			goto BeforeRet;
		}
		LA27: ;
		c0 = d0[((NI)(L0 - ((NI) 7)))- 0];
		{
			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA31;
			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
			d0[((NI)(L0 - ((NI) 7)))- 0] = res0;
			goto BeforeRet;
		}
		LA31: ;
		c0 = d0[((NI)(L0 - ((NI) 8)))- 0];
		{
			if (!((NU64)(((NI) 8)) <= (NU64)((*c0).refcount))) goto LA35;
			(*c0).refcount = (NI)((*c0).refcount & ((NI) -5));
			d0[((NI)(L0 - ((NI) 8)))- 0] = res0;
			goto BeforeRet;
		}
		LA35: ;
		add_Wcf8r6MCjrJeJ3HSYwSp0Qsystem((&(*gch0).zct), res0);
	}
	goto LA1;
	LA3: ;
	{
		d0[(L0)- 0] = res0;
		(*gch0).zct.len += ((NI) 1);
	}
	LA1: ;
	}BeforeRet: ;
}

N_NIMCALL(void*, rawnewobj_QBPo5VW2O56Eeh8hPbQ7Pg)(TNimType* typ0, NI size0, Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0) {
	void* result0;
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* res0;
	void* LOC1;
	result0 = (void*)0;
	collectct_zoTIuavlrCHyw3B8MBaLJA(gch0);
	LOC1 = (void*)0;
	LOC1 = rawalloc_yn9c8RLaS8vgVBeMBfmkdUg((&(*gch0).region), (NI)(size0 + ((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g))));
	res0 = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g*) (LOC1));
	(*res0).typ = typ0;
	(*res0).refcount = ((NI) 4);
	addnewobjtozct_Ga5iPZj9bPFJIiW7GQdxs7gsystem(res0, gch0);
	result0 = celltousr_vA0UG8JLZvpzP1Xf3vkPgwsystem(res0);
	return result0;
}

N_LIB_EXPORT N_CDECL(void*, nimrtl_newObjNoInit)(TNimType* typ0, NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = rawnewobj_QBPo5VW2O56Eeh8hPbQ7Pg(typ0, size0, (&gch_IcYaEuuWivYAS86vFMTS3Q));
	return result0;
}

N_NIMCALL(NimStringDesc*, rawNewStringNoInit)(NI space0) {
	NimStringDesc* result0;
	NI s0;
	void* LOC5;
	result0 = (NimStringDesc*)0;
	s0 = space0;
	{
		if (!(s0 < ((NI) 7))) goto LA3;
		s0 = ((NI) 7);
	}
	LA3: ;
	LOC5 = (void*)0;
	LOC5 = nimrtl_newObjNoInit((&strdesc_D0UzA4zsDu5tgpJQ9a9clXPg), (NI)((NI)(((NI)sizeof(TGenericSeq)) + s0) + ((NI) 1)));
	result0 = ((NimStringDesc*) (LOC5));
	(*result0).Sup.reserved = s0;
	return result0;
}

N_NIMCALL(NimStringDesc*, toNimStr)(NCSTRING str0, NI len0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewStringNoInit(len0);
	(*result0).Sup.len = len0;
	copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((*result0).data)), ((void*) (str0)), ((NI) ((NI)(len0 + ((NI) 1)))));
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_cstrToNimstr)(NCSTRING str0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!(((void*) (str0)) == NIM_NIL)) goto LA3;
		result0 = NIM_NIL;
	}
	goto LA1;
	LA3: ;
	{
		result0 = toNimStr(str0, (str0 ? strlen(str0) : 0));
	}
	LA1: ;
	return result0;
}

N_NIMCALL(void, write_ADGLlEJAOtGNWWur8rrJfg)(FILE* f0, NCSTRING c0) {
	int LOC1;
	LOC1 = (int)0;
	LOC1 = fputs(c0, f0);
}

N_NIMCALL(void, writetostderr_7HRVfGfZT2rSmBdcLxl8TA)(NCSTRING msg0) {
	write_ADGLlEJAOtGNWWur8rrJfg(stderr, msg0);
}

N_NIMCALL(void, showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ)(NCSTRING data0) {
	{
		NimStringDesc* LOC5;
		if (!!((errormessagewriter_ZXnv0JyrWe3HTd07wpSr7A == NIM_NIL))) goto LA3;
		LOC5 = (NimStringDesc*)0;
		LOC5 = nimrtl_cstrToNimstr(data0);
		errormessagewriter_ZXnv0JyrWe3HTd07wpSr7A(LOC5);
	}
	goto LA1;
	LA3: ;
	{
		writetostderr_7HRVfGfZT2rSmBdcLxl8TA(data0);
	}
	LA1: ;
}

static N_INLINE(void, quitordebug_IZ2oOmqdsYQ7vixQGKSDcAsystem)(void) {
	exit(((NI) 1));
}

N_NIMCALL(void, raiseexceptionaux_jP8mO9c3YubVoLarNIvGorQ)(Exception* e0) {
{	{
		if (!!((localraisehook_EIvMhANBvB9cp2Ezvt29cADg == NIM_NIL))) goto LA3;
		{
			NIM_BOOL LOC7;
			LOC7 = (NIM_BOOL)0;
			LOC7 = localraisehook_EIvMhANBvB9cp2Ezvt29cADg(e0);
			if (!!(LOC7)) goto LA8;
			goto BeforeRet;
		}
		LA8: ;
	}
	LA3: ;
	{
		if (!!((globalraisehook_JbO1ti4ULxrw54m4zNPbpA == NIM_NIL))) goto LA12;
		{
			NIM_BOOL LOC16;
			LOC16 = (NIM_BOOL)0;
			LOC16 = globalraisehook_JbO1ti4ULxrw54m4zNPbpA(e0);
			if (!!(LOC16)) goto LA17;
			goto BeforeRet;
		}
		LA17: ;
	}
	LA12: ;
	{
		if (!!((exchandler_rqLlY5bs9atDw2OXYqJEn5g == NIM_NIL))) goto LA21;
		{
			NIM_BOOL LOC25;
			LOC25 = (NIM_BOOL)0;
			LOC25 = !((*exchandler_rqLlY5bs9atDw2OXYqJEn5g).hasRaiseAction);
			if (LOC25) goto LA26;
			LOC25 = (*exchandler_rqLlY5bs9atDw2OXYqJEn5g).raiseAction.ClEnv? (*exchandler_rqLlY5bs9atDw2OXYqJEn5g).raiseAction.ClPrc(e0, (*exchandler_rqLlY5bs9atDw2OXYqJEn5g).raiseAction.ClEnv):((T_Q5wkpxktOdTGvlSRo9bzt9aw_6)((*exchandler_rqLlY5bs9atDw2OXYqJEn5g).raiseAction.ClPrc))(e0);
			LA26: ;
			if (!LOC25) goto LA27;
			nimrtl_pushCurrentException(e0);
			longjmp((*exchandler_rqLlY5bs9atDw2OXYqJEn5g).context, ((int) 1));
		}
		LA27: ;
	}
	goto LA19;
	LA21: ;
	{
		if (!(isObjWithCache((*e0).Sup.m_type, (&NTI_NrupLB36t9bV7iFDHtrF69aw), Nim_OfCheck_CACHE8))) goto LA30;
		showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ((*e0).name);
		quitordebug_IZ2oOmqdsYQ7vixQGKSDcAsystem();
	}
	goto LA19;
	LA30: ;
	{
		TY_gpc2RrLEcWgv7ONpLYNHOw buf0;
		NI L0;
		memset((void*)buf0, 0, sizeof(buf0));
		L0 = ((NI) 0);
		{
			if (!((NI)(L0 + ((NI) 28)) < ((NI) 2000))) goto LA35;
			copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((&buf0[(L0)- 0]))), "Error: unhandled exception: ", ((NI) 28));
			L0 += ((NI) 28);
		}
		LA35: ;
		{
			if (!!(((*e0).message == 0))) goto LA39;
			{
				if (!((NI)(L0 + ((*e0).message ? (*e0).message->Sup.len : 0)) < ((NI) 2000))) goto LA43;
				copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((&buf0[(L0)- 0]))), ((void*) ((*e0).message->data)), ((NI) (((*e0).message ? (*e0).message->Sup.len : 0))));
				L0 += ((*e0).message ? (*e0).message->Sup.len : 0);
			}
			LA43: ;
		}
		LA39: ;
		{
			if (!((NI)(L0 + ((NI) 2)) < ((NI) 2000))) goto LA47;
			copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((&buf0[(L0)- 0]))), " [", ((NI) 2));
			L0 += ((NI) 2);
		}
		LA47: ;
		{
			if (!((NI)(L0 + ((*e0).name ? strlen((*e0).name) : 0)) < ((NI) 2000))) goto LA51;
			copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((&buf0[(L0)- 0]))), ((void*) ((*e0).name)), ((NI) (((*e0).name ? strlen((*e0).name) : 0))));
			L0 += ((*e0).name ? strlen((*e0).name) : 0);
		}
		LA51: ;
		{
			if (!((NI)(L0 + ((NI) 2)) < ((NI) 2000))) goto LA55;
			copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((&buf0[(L0)- 0]))), "]\012", ((NI) 2));
			L0 += ((NI) 2);
		}
		LA55: ;
		showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ(((NCSTRING) (buf0)));
		quitordebug_IZ2oOmqdsYQ7vixQGKSDcAsystem();
	}
	LA19: ;
	}BeforeRet: ;
}

N_LIB_EXPORT N_CDECL(void, nimrtl_raiseException)(Exception* e0, NCSTRING ename0) {
	(*e0).name = ename0;
	raiseexceptionaux_jP8mO9c3YubVoLarNIvGorQ(e0);
}
static N_NIMCALL(void, Marker_TY_beOxjNaux3PfvyYBLMJh2A)(void* p, NI op) {
	Reraiseerror_GRbrBa7JIulgD34jGcFb8w* a;
	a = (Reraiseerror_GRbrBa7JIulgD34jGcFb8w*)p;
	nimrtl_nimGCvisit((void*)(*a).Sup.parent, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.message, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.trace, op);
}

N_LIB_EXPORT N_CDECL(void*, nimrtl_newObj)(TNimType* typ0, NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = rawnewobj_QBPo5VW2O56Eeh8hPbQ7Pg(typ0, size0, (&gch_IcYaEuuWivYAS86vFMTS3Q));
	zeromem_t0o5XqKanO5QJfXMGEzp2Asystem(result0, ((NI) (size0)));
	return result0;
}

N_LIB_EXPORT N_CDECL(void*, nimrtl_newObjRC1)(TNimType* typ0, NI size0) {
	void* result0;
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* res0;
	void* LOC1;
	result0 = (void*)0;
	collectct_zoTIuavlrCHyw3B8MBaLJA((&gch_IcYaEuuWivYAS86vFMTS3Q));
	LOC1 = (void*)0;
	LOC1 = rawalloc_yn9c8RLaS8vgVBeMBfmkdUg((&gch_IcYaEuuWivYAS86vFMTS3Q.region), (NI)(size0 + ((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g))));
	res0 = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g*) (LOC1));
	(*res0).typ = typ0;
	(*res0).refcount = ((NI) 8);
	result0 = celltousr_vA0UG8JLZvpzP1Xf3vkPgwsystem(res0);
	zeromem_t0o5XqKanO5QJfXMGEzp2Asystem(result0, ((NI) (size0)));
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_copyStringRC1)(NimStringDesc* src0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		NI s0;
		void* LOC9;
		if (!!((src0 == NIM_NIL))) goto LA3;
		s0 = (*src0).Sup.len;
		{
			if (!(s0 < ((NI) 7))) goto LA7;
			s0 = ((NI) 7);
		}
		LA7: ;
		LOC9 = (void*)0;
		LOC9 = nimrtl_newObjRC1((&strdesc_D0UzA4zsDu5tgpJQ9a9clXPg), (NI)((NI)(((NI)sizeof(TGenericSeq)) + s0) + ((NI) 1)));
		result0 = ((NimStringDesc*) (LOC9));
		(*result0).Sup.reserved = s0;
		(*result0).Sup.len = (*src0).Sup.len;
		copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((*result0).data)), ((void*) ((*src0).data)), ((NI) ((NI)((*src0).Sup.len + ((NI) 1)))));
	}
	LA3: ;
	return result0;
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
	c0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(p0);
	{
		(*c0).refcount -= ((NI) 8);
		if (!((NU64)((*c0).refcount) < (NU64)(((NI) 8)))) goto LA3;
		nimrtl_rtlAddZCT(c0);
	}
	LA3: ;
}

static N_INLINE(void, sysfatal_gu8AGlf3JTsS25q0fXJFMAsystem)(NimStringDesc* message0) {
	Reraiseerror_GRbrBa7JIulgD34jGcFb8w* e0;
	NimStringDesc* LOC1;
	e0 = (Reraiseerror_GRbrBa7JIulgD34jGcFb8w*)0;
	e0 = (Reraiseerror_GRbrBa7JIulgD34jGcFb8w*) nimrtl_newObj((&NTI_beOxjNaux3PfvyYBLMJh2A), sizeof(Reraiseerror_GRbrBa7JIulgD34jGcFb8w));
	(*e0).Sup.Sup.m_type = (&NTI_GRbrBa7JIulgD34jGcFb8w);
	LOC1 = (NimStringDesc*)0;
	LOC1 = (*e0).Sup.message; (*e0).Sup.message = nimrtl_copyStringRC1(message0);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	nimrtl_raiseException((Exception*)e0, "ReraiseError");
}

N_LIB_EXPORT N_CDECL(void, nimrtl_reraiseException)(void) {
	{
		if (!(currexception_9bVPeDJlYTi9bQApZpfH8wjg == NIM_NIL)) goto LA3;
		sysfatal_gu8AGlf3JTsS25q0fXJFMAsystem(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_8));
	}
	goto LA1;
	LA3: ;
	{
		raiseexceptionaux_jP8mO9c3YubVoLarNIvGorQ(currexception_9bVPeDJlYTi9bQApZpfH8wjg);
	}
	LA1: ;
}

N_NIMCALL(void, writestacktrace_njssp69aa7hvxte9bJ8uuDcg_2)(void) {
	showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ("No stack traceback available\012");
}

N_NOINLINE(void, stackoverflow_II46IjNZztN9bmbxUD8dt8g_2)(void) {
	writestacktrace_njssp69aa7hvxte9bJ8uuDcg_2();
	showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ("Stack overflow\012");
	quitordebug_IZ2oOmqdsYQ7vixQGKSDcAsystem();
}

N_LIB_EXPORT N_CDECL(void, nimFrame)(TFrame* s0) {
	NI LOC1;
	LOC1 = (NI)0;
	{
		if (!(frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA4;
		LOC1 = ((NI) 0);
	}
	goto LA2;
	LA4: ;
	{
		LOC1 = ((NI) ((NI16)((*frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1))));
	}
	LA2: ;
	(*s0).calldepth = ((NI16) (LOC1));
	(*s0).prev = frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw;
	frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw = s0;
	{
		if (!((*s0).calldepth == ((NI16) 2000))) goto LA9;
		stackoverflow_II46IjNZztN9bmbxUD8dt8g_2();
	}
	LA9: ;
}

N_NOCONV(void, signalHandler)(int sign0) {
	NCSTRING msg0;
	msg0 = (NCSTRING)0;
	{
		if (!(sign0 == ((int) 2))) goto LA3;
		msg0 = "SIGINT: Interrupted by Ctrl-C.\012";
	}
	goto LA1;
	LA3: ;
	{
		if (!(sign0 == ((int) 11))) goto LA6;
		msg0 = "SIGSEGV: Illegal storage access. (Attempt to read from nil?)\012";
	}
	goto LA1;
	LA6: ;
	{
		if (!(sign0 == ((int) 6))) goto LA9;
		msg0 = "SIGABRT: Abnormal termination.\012";
	}
	goto LA1;
	LA9: ;
	{
		if (!(sign0 == ((int) 8))) goto LA12;
		msg0 = "SIGFPE: Arithmetic error.\012";
	}
	goto LA1;
	LA12: ;
	{
		if (!(sign0 == ((int) 4))) goto LA15;
		msg0 = "SIGILL: Illegal operation.\012";
	}
	goto LA1;
	LA15: ;
	{
		if (!(sign0 == ((int) 11))) goto LA18;
		msg0 = "SIGBUS: Illegal storage access. (Attempt to read from nil?)\012";
	}
	goto LA1;
	LA18: ;
	{
		{
			{
				if (!(sign0 == ((int) 13))) goto LA24;
				msg0 = "SIGPIPE: Pipe closed.\012";
				goto LA21;
			}
			LA24: ;
			msg0 = "unknown signal\012";
		} LA21: ;
	}
	LA1: ;
	showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ(msg0);
	exit(((NI) 1));
}

N_NIMCALL(void, registersignalhandler_njssp69aa7hvxte9bJ8uuDcg_3)(void) {
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC1;
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC2;
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC3;
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC4;
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC5;
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC6;
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC7;
	LOC1 = (TY_lfH2drpqP9aSEAAjWgrYv8Q)0;
	LOC1 = signal(((int) 2), signalHandler);
	LOC2 = (TY_lfH2drpqP9aSEAAjWgrYv8Q)0;
	LOC2 = signal(((int) 11), signalHandler);
	LOC3 = (TY_lfH2drpqP9aSEAAjWgrYv8Q)0;
	LOC3 = signal(((int) 6), signalHandler);
	LOC4 = (TY_lfH2drpqP9aSEAAjWgrYv8Q)0;
	LOC4 = signal(((int) 8), signalHandler);
	LOC5 = (TY_lfH2drpqP9aSEAAjWgrYv8Q)0;
	LOC5 = signal(((int) 4), signalHandler);
	LOC6 = (TY_lfH2drpqP9aSEAAjWgrYv8Q)0;
	LOC6 = signal(((int) 11), signalHandler);
	LOC7 = (TY_lfH2drpqP9aSEAAjWgrYv8Q)0;
	LOC7 = signal(((int) 13), signalHandler);
}

N_NIMCALL(NI, ptrsize_FVy3yH9cNo61BYTEPuP9awLA)(void* p0) {
	NI result0;
	void* x0;
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c0;
	result0 = (NI)0;
	x0 = ((void*) ((NI)((NU64)(((NI) (p0))) - (NU64)(((NI)sizeof(Freecell_u6M5LHprqzkn9axr04yg9bGQ))))));
	c0 = pageaddr_4uti7hTxTUDxUPqFMgMvHAsystem(p0);
	result0 = (NI)((NU64)((*c0).size) - (NU64)(((NI)sizeof(Freecell_u6M5LHprqzkn9axr04yg9bGQ))));
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem(c0);
		if (!!(LOC3)) goto LA4;
		result0 -= (NI)(((NI)sizeof(Bigchunk_Rv9c70Uhp2TytkX7eH78qEg)) - ((NI) 8));
	}
	LA4: ;
	return result0;
}

N_NIMCALL(void*, realloc_VulJXuP1lnxqX5IZabvYLQ)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, void* p0, NI newsize0) {
	void* result0;
	result0 = (void*)0;
	{
		if (!(((NI) 0) < ((NI) (newsize0)))) goto LA3;
		result0 = alloc0_1iQ1Xo9cXsxq509b5gmDHLoQ(allocator0, newsize0);
		{
			NI LOC9;
			if (!!((p0 == NIM_NIL))) goto LA7;
			LOC9 = (NI)0;
			LOC9 = ptrsize_FVy3yH9cNo61BYTEPuP9awLA(p0);
			copymem_E1xtACub5WcDa3vbrIXbwgsystem(result0, p0, ((NI) (LOC9)));
			dealloc_jqYVOi4APb9cRx3G9a57AkRw(allocator0, p0);
		}
		LA7: ;
	}
	goto LA1;
	LA3: ;
	{
		if (!!((p0 == NIM_NIL))) goto LA11;
		dealloc_jqYVOi4APb9cRx3G9a57AkRw(allocator0, p0);
	}
	goto LA1;
	LA11: ;
	LA1: ;
	return result0;
}

N_LIB_EXPORT N_NOCONV(void*, nimrtl_realloc)(void* p0, NI newsize0) {
	void* result0;
	result0 = (void*)0;
	result0 = realloc_VulJXuP1lnxqX5IZabvYLQ((&gch_IcYaEuuWivYAS86vFMTS3Q.region), p0, newsize0);
	return result0;
}

N_LIB_EXPORT N_NOCONV(void*, nimrtl_allocShared)(NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = nimrtl_alloc(size0);
	return result0;
}

N_LIB_EXPORT N_NOCONV(void*, nimrtl_allocShared0)(NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = nimrtl_allocShared(size0);
	zeromem_t0o5XqKanO5QJfXMGEzp2Asystem(result0, size0);
	return result0;
}

N_LIB_EXPORT N_NOCONV(void, nimrtl_deallocShared)(void* p0) {
	nimrtl_dealloc(p0);
}

N_LIB_EXPORT N_NOCONV(void*, nimrtl_reallocShared)(void* p0, NI newsize0) {
	void* result0;
	result0 = (void*)0;
	result0 = nimrtl_realloc(p0, newsize0);
	return result0;
}

N_NIMCALL(NI, getRefcount)(void* p0) {
	NI result0;
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* LOC1;
	result0 = (NI)0;
	LOC1 = (Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	LOC1 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(p0);
	result0 = (NI)((NU64)((*LOC1).refcount) >> (NU64)(((NI) 3)));
	return result0;
}

N_LIB_EXPORT N_CDECL(void, nimrtl_rtlAddCycleRoot)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
}
static N_NIMCALL(void, Marker_TY_6woiEp3hwhYMr1p5tjkZvA)(void* p, NI op) {
	Overflowerror_I3Jtn27626sFBOls6BBQ2Q* a;
	a = (Overflowerror_I3Jtn27626sFBOls6BBQ2Q*)p;
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.trace, op);
}

static N_INLINE(void, sysfatal_cjY6dGD4PiJNY9cmtw6Ay8Qsystem)(NimStringDesc* message0) {
	Overflowerror_I3Jtn27626sFBOls6BBQ2Q* e0;
	NimStringDesc* LOC1;
	e0 = (Overflowerror_I3Jtn27626sFBOls6BBQ2Q*)0;
	e0 = (Overflowerror_I3Jtn27626sFBOls6BBQ2Q*) nimrtl_newObj((&NTI_6woiEp3hwhYMr1p5tjkZvA), sizeof(Overflowerror_I3Jtn27626sFBOls6BBQ2Q));
	(*e0).Sup.Sup.Sup.m_type = (&NTI_I3Jtn27626sFBOls6BBQ2Q);
	LOC1 = (NimStringDesc*)0;
	LOC1 = (*e0).Sup.Sup.message; (*e0).Sup.Sup.message = nimrtl_copyStringRC1(message0);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	nimrtl_raiseException((Exception*)e0, "OverflowError");
}

N_NOINLINE(void, raiseOverflow)(void) {
	sysfatal_cjY6dGD4PiJNY9cmtw6Ay8Qsystem(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_9));
}

static N_INLINE(NI, addInt)(NI a0, NI b0) {
	NI result0;
{	result0 = (NI)0;
	result0 = (NI)((NU64)(a0) + (NU64)(b0));
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = (((NI) 0) <= (NI)(result0 ^ a0));
		if (LOC3) goto LA4;
		LOC3 = (((NI) 0) <= (NI)(result0 ^ b0));
		LA4: ;
		if (!LOC3) goto LA5;
		goto BeforeRet;
	}
	LA5: ;
	raiseOverflow();
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NI, mulInt)(NI a0, NI b0) {
	NI result0;
	NF resasfloat0;
	NF floatprod0;
{	result0 = (NI)0;
	resasfloat0 = (NF)0;
	floatprod0 = (NF)0;
	result0 = (NI)((NU64)(a0) * (NU64)(b0));
	floatprod0 = ((NF)(((double) (a0))) * (NF)(((double) (b0))));
	resasfloat0 = ((double) (result0));
	{
		if (!(resasfloat0 == floatprod0)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(((NF)(3.2000000000000000e+01) * (NF)((((NF)(resasfloat0) - (NF)(floatprod0)) > 0? (((NF)(resasfloat0) - (NF)(floatprod0))) : -(((NF)(resasfloat0) - (NF)(floatprod0)))))) <= (floatprod0 > 0? (floatprod0) : -(floatprod0)))) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	raiseOverflow();
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(void*, nimrtl_newSeq)(TNimType* typ0, NI len0) {
	void* result0;
	NI size0;
	NI LOC1;
	result0 = (void*)0;
	LOC1 = (NI)0;
	LOC1 = mulInt(len0, (*(*typ0).base).size);
	size0 = addInt(LOC1, ((NI) 16));
	result0 = nimrtl_newObj(typ0, size0);
	(*((TGenericSeq*) (result0))).len = len0;
	(*((TGenericSeq*) (result0))).reserved = len0;
	return result0;
}

N_LIB_EXPORT N_CDECL(void*, nimrtl_newSeqRC1)(TNimType* typ0, NI len0) {
	void* result0;
	NI size0;
	NI LOC1;
	result0 = (void*)0;
	LOC1 = (NI)0;
	LOC1 = mulInt(len0, (*(*typ0).base).size);
	size0 = addInt(LOC1, ((NI) 16));
	result0 = nimrtl_newObjRC1(typ0, size0);
	(*((TGenericSeq*) (result0))).len = len0;
	(*((TGenericSeq*) (result0))).reserved = len0;
	return result0;
}

N_NIMCALL(void*, growobj_FZeyQYjWPcE9c06y1gNqZxw)(void* old0, NI newsize0, Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0) {
	void* result0;
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* ol0;
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* res0;
	void* LOC1;
	NI elemsize0;
	NI oldsize0;
	result0 = (void*)0;
	collectct_zoTIuavlrCHyw3B8MBaLJA(gch0);
	ol0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(old0);
	LOC1 = (void*)0;
	LOC1 = rawalloc_yn9c8RLaS8vgVBeMBfmkdUg((&(*gch0).region), (NI)(newsize0 + ((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g))));
	res0 = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g*) (LOC1));
	elemsize0 = ((NI) 1);
	{
		if (!!(((*(*ol0).typ).kind == ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 28)))) goto LA4;
		elemsize0 = (*(*(*ol0).typ).base).size;
	}
	LA4: ;
	oldsize0 = (NI)((NI)((*((TGenericSeq*) (old0))).len * elemsize0) + ((NI) 16));
	copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) (res0)), ((void*) (ol0)), ((NI) ((NI)(oldsize0 + ((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g))))));
	zeromem_t0o5XqKanO5QJfXMGEzp2Asystem(((void*) ((NI)((NU64)((NI)((NU64)(((NI) (res0))) + (NU64)(oldsize0))) + (NU64)(((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g)))))), ((NI) ((NI)(newsize0 - oldsize0))));
	{
		if (!((NU64)((NI)((NU64)((*ol0).refcount) >> (NU64)(((NI) 3)))) <= (NU64)(((NI) 1)))) goto LA8;
		{
			NI j0;
			Cell_1zcF9cV8XIAtbN8h5HRUB8g** d0;
			if (!!(((NI)((*ol0).refcount & ((NI) 4)) == ((NI) 0)))) goto LA12;
			j0 = (NI)((*gch0).zct.len - ((NI) 1));
			d0 = (*gch0).zct.d;
			{
				while (1) {
					if (!(((NI) 0) <= j0)) goto LA15;
					{
						if (!(d0[(j0)- 0] == ol0)) goto LA18;
						d0[(j0)- 0] = res0;
						goto LA14;
					}
					LA18: ;
					j0 -= ((NI) 1);
				} LA15: ;
			} LA14: ;
		}
		LA12: ;
		rawdealloc_DA62HrGC5sdfCED505KyyQ((&(*gch0).region), ((void*) (ol0)));
	}
	goto LA6;
	LA8: ;
	{
		(*res0).refcount = ((NI) 8);
		decref_MV4BBk6J1qu70IbBxwEn4wsystem(ol0);
	}
	LA6: ;
	result0 = celltousr_vA0UG8JLZvpzP1Xf3vkPgwsystem(res0);
	return result0;
}

N_LIB_EXPORT N_CDECL(void*, nimrtl_growObj)(void* old0, NI newsize0) {
	void* result0;
	result0 = (void*)0;
	result0 = growobj_FZeyQYjWPcE9c06y1gNqZxw(old0, newsize0, (&gch_IcYaEuuWivYAS86vFMTS3Q));
	return result0;
}

N_LIB_EXPORT N_NOINLINE(void, nimrtl_setStackBottom)(void* thestackbottom0) {
	{
		if (!(gch_IcYaEuuWivYAS86vFMTS3Q.stackbottom == NIM_NIL)) goto LA3;
		gch_IcYaEuuWivYAS86vFMTS3Q.stackbottom = thestackbottom0;
	}
	goto LA1;
	LA3: ;
	{
		NI a0;
		NI b0;
		a0 = ((NI) (thestackbottom0));
		b0 = ((NI) (gch_IcYaEuuWivYAS86vFMTS3Q.stackbottom));
		gch_IcYaEuuWivYAS86vFMTS3Q.stackbottom = ((void*) (((a0 >= b0) ? a0 : b0)));
	}
	LA1: ;
}

N_LIB_EXPORT N_CDECL(void, nimrtl_GC_disable)(void) {
	gch_IcYaEuuWivYAS86vFMTS3Q.recgclock += ((NI) 1);
}

N_LIB_EXPORT N_CDECL(void, nimrtl_GC_enable)(void) {
	{
		if (!(((NI) 0) < gch_IcYaEuuWivYAS86vFMTS3Q.recgclock)) goto LA3;
		gch_IcYaEuuWivYAS86vFMTS3Q.recgclock -= ((NI) 1);
	}
	LA3: ;
}

N_LIB_EXPORT N_CDECL(void, nimrtl_GC_setStrategy)(Gcstrategy_dZWpEuKPYMLPbE41rs2EqQ strategy0) {
}

N_LIB_EXPORT N_CDECL(void, nimrtl_GC_enableMarkAndSweep)(void) {
	gch_IcYaEuuWivYAS86vFMTS3Q.cyclethreshold = ((NI) 4194304);
}

N_LIB_EXPORT N_CDECL(void, nimrtl_GC_disableMarkAndSweep)(void) {
	gch_IcYaEuuWivYAS86vFMTS3Q.cyclethreshold = ((NI) IL64(9223372036854775806));
}

N_LIB_EXPORT N_CDECL(void, nimrtl_GC_fullCollect)(void) {
	NI oldthreshold0;
	oldthreshold0 = gch_IcYaEuuWivYAS86vFMTS3Q.cyclethreshold;
	gch_IcYaEuuWivYAS86vFMTS3Q.cyclethreshold = ((NI) 0);
	collectct_zoTIuavlrCHyw3B8MBaLJA((&gch_IcYaEuuWivYAS86vFMTS3Q));
	gch_IcYaEuuWivYAS86vFMTS3Q.cyclethreshold = oldthreshold0;
}

static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0) {
	copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((&(*dest0).data[((*dest0).Sup.len)- 0]))), ((void*) ((*src0).data)), ((NI) ((NI)((*src0).Sup.len + ((NI) 1)))));
	(*dest0).Sup.len += (*src0).Sup.len;
}

N_NIMCALL(NimStringDesc*, rawNewString)(NI space0) {
	NimStringDesc* result0;
	NI s0;
	void* LOC5;
	result0 = (NimStringDesc*)0;
	s0 = space0;
	{
		if (!(s0 < ((NI) 7))) goto LA3;
		s0 = ((NI) 7);
	}
	LA3: ;
	LOC5 = (void*)0;
	LOC5 = nimrtl_newObj((&strdesc_D0UzA4zsDu5tgpJQ9a9clXPg), (NI)((NI)(((NI)sizeof(TGenericSeq)) + s0) + ((NI) 1)));
	result0 = ((NimStringDesc*) (LOC5));
	(*result0).Sup.reserved = s0;
	return result0;
}

static N_INLINE(NI, resize_bzF9a0JivP3Z4njqaxuLc5wsystem)(NI old0) {
	NI result0;
	result0 = (NI)0;
	{
		if (!(old0 <= ((NI) 0))) goto LA3;
		result0 = ((NI) 4);
	}
	goto LA1;
	LA3: ;
	{
		if (!(old0 < ((NI) 65536))) goto LA6;
		result0 = (NI)(old0 * ((NI) 2));
	}
	goto LA1;
	LA6: ;
	{
		result0 = (NI)((NI)(old0 * ((NI) 3)) / ((NI) 2));
	}
	LA1: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_resizeString)(NimStringDesc* dest0, NI addlen0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!((NI)((*dest0).Sup.len + addlen0) <= (NI)((*dest0).Sup.reserved & ((NI) IL64(9223372036854775807))))) goto LA3;
		result0 = dest0;
	}
	goto LA1;
	LA3: ;
	{
		NI sp0;
		NI LOC6;
		void* LOC7;
		LOC6 = (NI)0;
		LOC6 = resize_bzF9a0JivP3Z4njqaxuLc5wsystem((NI)((*dest0).Sup.reserved & ((NI) IL64(9223372036854775807))));
		sp0 = ((LOC6 >= (NI)((*dest0).Sup.len + addlen0)) ? LOC6 : (NI)((*dest0).Sup.len + addlen0));
		LOC7 = (void*)0;
		LOC7 = nimrtl_growObj(((void*) (dest0)), (NI)((NI)(((NI)sizeof(TGenericSeq)) + sp0) + ((NI) 1)));
		result0 = ((NimStringDesc*) (LOC7));
		(*result0).Sup.reserved = sp0;
	}
	LA1: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_setLengthStr)(NimStringDesc* s0, NI newlen0) {
	NimStringDesc* result0;
	NI n0;
	result0 = (NimStringDesc*)0;
	n0 = ((newlen0 >= ((NI) 0)) ? newlen0 : ((NI) 0));
	{
		if (!(n0 <= (NI)((*s0).Sup.reserved & ((NI) IL64(9223372036854775807))))) goto LA3;
		result0 = s0;
	}
	goto LA1;
	LA3: ;
	{
		result0 = nimrtl_resizeString(s0, n0);
	}
	LA1: ;
	(*result0).Sup.len = n0;
	(*result0).data[(n0)- 0] = 0;
	return result0;
}

N_NIMCALL(void, add_IbYQ9cTcoQ89aIwM2IEYGMng)(NimStringDesc** result0, NI64 x0) {
	NI base0;
	NI i0;
	NI64 y0;
	base0 = ((*result0) ? (*result0)->Sup.len : 0);
	(*result0) = nimrtl_setLengthStr((*result0), ((NI) ((NI)(base0 + ((NI) 32)))));
	i0 = ((NI) 0);
	y0 = x0;
	{
		while (1) {
			NI64 d0;
			d0 = (NI64)(y0 / IL64(10));
			(*result0)->data[(NI)(base0 + i0)] = ((NIM_CHAR) (((NI) ((NI)((((NI) ((NI64)(y0 - (NI64)(d0 * IL64(10))))) > 0? (((NI) ((NI64)(y0 - (NI64)(d0 * IL64(10)))))) : -(((NI) ((NI64)(y0 - (NI64)(d0 * IL64(10))))))) + ((NI) 48))))));
			i0 += ((NI) 1);
			y0 = d0;
			{
				if (!(y0 == IL64(0))) goto LA5;
				goto LA1;
			}
			LA5: ;
		}
	} LA1: ;
	{
		if (!(x0 < IL64(0))) goto LA9;
		(*result0)->data[(NI)(base0 + i0)] = 45;
		i0 += ((NI) 1);
	}
	LA9: ;
	(*result0) = nimrtl_setLengthStr((*result0), ((NI) ((NI)(base0 + i0))));
	{
		NI j_qnKx8FRbI9bfMKogtL77eNA;
		NI HEX3Atmp_4rY0hesNymbjU0qUfyjfhA;
		NI res_0E6r6o7EsL2WULx2c9b2Xaw;
		j_qnKx8FRbI9bfMKogtL77eNA = (NI)0;
		HEX3Atmp_4rY0hesNymbjU0qUfyjfhA = (NI)0;
		HEX3Atmp_4rY0hesNymbjU0qUfyjfhA = (NI)((NI)(i0 / ((NI) 2)) - ((NI) 1));
		res_0E6r6o7EsL2WULx2c9b2Xaw = ((NI) 0);
		{
			while (1) {
				NIM_CHAR LOC14;
				if (!(res_0E6r6o7EsL2WULx2c9b2Xaw <= HEX3Atmp_4rY0hesNymbjU0qUfyjfhA)) goto LA13;
				j_qnKx8FRbI9bfMKogtL77eNA = res_0E6r6o7EsL2WULx2c9b2Xaw;
				LOC14 = (NIM_CHAR)0;
				LOC14 = (*result0)->data[(NI)(base0 + j_qnKx8FRbI9bfMKogtL77eNA)];
				(*result0)->data[(NI)(base0 + j_qnKx8FRbI9bfMKogtL77eNA)] = (*result0)->data[(NI)((NI)((NI)(base0 + i0) - j_qnKx8FRbI9bfMKogtL77eNA) - ((NI) 1))];
				(*result0)->data[(NI)((NI)((NI)(base0 + i0) - j_qnKx8FRbI9bfMKogtL77eNA) - ((NI) 1))] = LOC14;
				res_0E6r6o7EsL2WULx2c9b2Xaw += ((NI) 1);
			} LA13: ;
		}
	}
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_nimIntToStr)(NI x0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) 32));
	add_IbYQ9cTcoQ89aIwM2IEYGMng((&result0), ((NI64) (x0)));
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_nimInt64ToStr)(NI64 x0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) 32));
	add_IbYQ9cTcoQ89aIwM2IEYGMng((&result0), x0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_GC_getStatistics)(void) {
	NimStringDesc* result0;
	NimStringDesc* LOC1;
	NI LOC2;
	NimStringDesc* LOC3;
	NI LOC4;
	NimStringDesc* LOC5;
	NimStringDesc* LOC6;
	NimStringDesc* LOC7;
	NimStringDesc* LOC8;
	NimStringDesc* LOC9;
	NimStringDesc* LOC10;
	NimStringDesc* LOC11;
	NimStringDesc* LOC12;
	NimStringDesc* LOC13;
	NimStringDesc* LOC14;
	result0 = (NimStringDesc*)0;
	nimrtl_GC_disable();
	LOC1 = (NimStringDesc*)0;
	LOC2 = (NI)0;
	LOC2 = nimrtl_getTotalMem();
	LOC3 = (NimStringDesc*)0;
	LOC3 = nimrtl_nimIntToStr(LOC2);
	LOC4 = (NI)0;
	LOC4 = nimrtl_getOccupiedMem();
	LOC5 = (NimStringDesc*)0;
	LOC5 = nimrtl_nimIntToStr(LOC4);
	LOC6 = (NimStringDesc*)0;
	LOC6 = nimrtl_nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.stackscans);
	LOC7 = (NimStringDesc*)0;
	LOC7 = nimrtl_nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.maxstackcells);
	LOC8 = (NimStringDesc*)0;
	LOC8 = nimrtl_nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.cyclecollections);
	LOC9 = (NimStringDesc*)0;
	LOC9 = nimrtl_nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.maxthreshold);
	LOC10 = (NimStringDesc*)0;
	LOC10 = nimrtl_nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.zct.cap);
	LOC11 = (NimStringDesc*)0;
	LOC11 = nimrtl_nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.cycletablesize);
	LOC12 = (NimStringDesc*)0;
	LOC12 = nimrtl_nimInt64ToStr((NI64)(gch_IcYaEuuWivYAS86vFMTS3Q.stat.maxpause / IL64(1000000)));
	LOC1 = rawNewString(LOC3->Sup.len + LOC5->Sup.len + LOC6->Sup.len + LOC7->Sup.len + LOC8->Sup.len + LOC9->Sup.len + LOC10->Sup.len + LOC11->Sup.len + LOC12->Sup.len + 202);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_10));
appendString(LOC1, LOC3);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_11));
appendString(LOC1, LOC5);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_12));
appendString(LOC1, LOC6);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_13));
appendString(LOC1, LOC7);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_14));
appendString(LOC1, LOC8);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_15));
appendString(LOC1, LOC9);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_16));
appendString(LOC1, LOC10);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_17));
appendString(LOC1, LOC11);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_18));
appendString(LOC1, LOC12);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_19));
	result0 = LOC1;
	LOC13 = (NimStringDesc*)0;
	LOC14 = (NimStringDesc*)0;
	LOC14 = nimrtl_nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.maxstacksize);
	LOC13 = rawNewString(result0->Sup.len + LOC14->Sup.len + 22);
appendString(LOC13, result0);
appendString(LOC13, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_20));
appendString(LOC13, LOC14);
appendString(LOC13, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_19));
	result0 = LOC13;
	nimrtl_GC_enable();
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_copyString)(NimStringDesc* src0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!!((src0 == NIM_NIL))) goto LA3;
		{
			if (!!(((NI)((*src0).Sup.reserved & ((NI) (IL64(-9223372036854775807) - IL64(1)))) == ((NI) 0)))) goto LA7;
			result0 = src0;
		}
		goto LA5;
		LA7: ;
		{
			result0 = rawNewStringNoInit((*src0).Sup.len);
			(*result0).Sup.len = (*src0).Sup.len;
			copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((*result0).data)), ((void*) ((*src0).data)), ((NI) ((NI)((*src0).Sup.len + ((NI) 1)))));
		}
		LA5: ;
	}
	LA3: ;
	return result0;
}

N_NIMCALL(TNimType*, extGetCellType)(void* c0) {
	TNimType* result0;
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* LOC1;
	result0 = (TNimType*)0;
	LOC1 = (Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	LOC1 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(c0);
	result0 = (*LOC1).typ;
	return result0;
}

N_LIB_EXPORT N_CDECL(TGenericSeq*, nimrtl_setLengthSeq)(TGenericSeq* seq0, NI elemsize0, NI newlen0) {
	TGenericSeq* result0;
	result0 = (TGenericSeq*)0;
	result0 = seq0;
	{
		NI LOC5;
		void* LOC6;
		if (!((NI)((*result0).reserved & ((NI) IL64(9223372036854775807))) < newlen0)) goto LA3;
		LOC5 = (NI)0;
		LOC5 = resize_bzF9a0JivP3Z4njqaxuLc5wsystem((NI)((*result0).reserved & ((NI) IL64(9223372036854775807))));
		(*result0).reserved = ((LOC5 >= newlen0) ? LOC5 : newlen0);
		LOC6 = (void*)0;
		LOC6 = nimrtl_growObj(((void*) (result0)), (NI)((NI)(elemsize0 * (*result0).reserved) + ((NI) 16)));
		result0 = ((TGenericSeq*) (LOC6));
	}
	goto LA1;
	LA3: ;
	{
		if (!(newlen0 < (*result0).len)) goto LA8;
		{
			NI i_459awzx1aJm7CxaoNhJBBBw;
			NI HEX3Atmp_6aQT9bxX7vUBZ7xDglUXNyA;
			NI res_gyWliBWJSyIERPIv8yAoTg;
			i_459awzx1aJm7CxaoNhJBBBw = (NI)0;
			HEX3Atmp_6aQT9bxX7vUBZ7xDglUXNyA = (NI)0;
			HEX3Atmp_6aQT9bxX7vUBZ7xDglUXNyA = (NI)((*result0).len - ((NI) 1));
			res_gyWliBWJSyIERPIv8yAoTg = newlen0;
			{
				while (1) {
					TNimType* LOC13;
					if (!(res_gyWliBWJSyIERPIv8yAoTg <= HEX3Atmp_6aQT9bxX7vUBZ7xDglUXNyA)) goto LA12;
					i_459awzx1aJm7CxaoNhJBBBw = res_gyWliBWJSyIERPIv8yAoTg;
					LOC13 = (TNimType*)0;
					LOC13 = extGetCellType(((void*) (result0)));
					forallchildrenaux_YOI1Uo54H9aas13WthjhsfA(((void*) ((NI)((NU64)((NI)((NU64)(((NI) (result0))) + (NU64)(((NI) 16)))) + (NU64)((NI)((NU64)(i_459awzx1aJm7CxaoNhJBBBw) * (NU64)(elemsize0)))))), (*LOC13).base, ((Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ) 2));
					res_gyWliBWJSyIERPIv8yAoTg += ((NI) 1);
				} LA12: ;
			}
		}
		zeromem_t0o5XqKanO5QJfXMGEzp2Asystem(((void*) ((NI)((NU64)((NI)((NU64)(((NI) (result0))) + (NU64)(((NI) 16)))) + (NU64)((NI)((NU64)(newlen0) * (NU64)(elemsize0)))))), ((NI) ((NI)((NU64)((NI)((NU64)((*result0).len) - (NU64)(newlen0))) * (NU64)(elemsize0)))));
	}
	goto LA1;
	LA8: ;
	LA1: ;
	(*result0).len = newlen0;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_nimBoolToStr)(NIM_BOOL x0) {
	NimStringDesc* result0;
{	result0 = (NimStringDesc*)0;
	{
		if (!x0) goto LA3;
		result0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_21));
	}
	goto LA1;
	LA3: ;
	{
		result0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_22));
	}
	LA1: ;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, mnewString)(NI len0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(len0);
	(*result0).Sup.len = len0;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_nimCharToStr)(NIM_CHAR x0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = mnewString(((NI) 1));
	result0->data[((NI) 0)] = x0;
	return result0;
}

N_NIMCALL(void, initreprclosure_1SAi9bV4Tf9boSCAkLYGFXoA)(Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0) {
	init_WHgd5C59bkXWDz3vnAxfzXQ((&(*cl0).marked));
	(*cl0).recdepth = ((NI) -1);
	(*cl0).indent = ((NI) 0);
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprEnum)(NI e0, TNimType* typ0) {
	NimStringDesc* result0;
	TNimNode* n0;
	NimStringDesc* LOC19;
	NimStringDesc* LOC20;
{	result0 = (NimStringDesc*)0;
	n0 = (*typ0).node;
	{
		NI o0;
		if (!!((((*typ0).flags &(1U<<((NU)(((Tnimtypeflag_v8QUszD1sWlSIWZz7mC4bQ) 2))&7U)))!=0))) goto LA3;
		o0 = (NI)(e0 - (*(*n0).sons[(((NI) 0))- 0]).offset);
		{
			NIM_BOOL LOC7;
			LOC7 = (NIM_BOOL)0;
			LOC7 = (((NI) 0) <= o0);
			if (!(LOC7)) goto LA8;
			LOC7 = ((NU64)(o0) < (NU64)((*(*typ0).node).len));
			LA8: ;
			if (!LOC7) goto LA9;
			result0 = nimrtl_cstrToNimstr((*(*n0).sons[(o0)- 0]).name);
			goto BeforeRet;
		}
		LA9: ;
	}
	goto LA1;
	LA3: ;
	{
		TNimNode** s0;
		s0 = (*n0).sons;
		{
			NI i_jJgchJglMdVn5ghHepHNEQ;
			NI HEX3Atmp_ur0lqw0mnkf2gJG9adJhuiA;
			NI res_qY3iGvz4sUYgqm9aIqBy2Yg;
			i_jJgchJglMdVn5ghHepHNEQ = (NI)0;
			HEX3Atmp_ur0lqw0mnkf2gJG9adJhuiA = (NI)0;
			HEX3Atmp_ur0lqw0mnkf2gJG9adJhuiA = (NI)((*n0).len - ((NI) 1));
			res_qY3iGvz4sUYgqm9aIqBy2Yg = ((NI) 0);
			{
				while (1) {
					if (!(res_qY3iGvz4sUYgqm9aIqBy2Yg <= HEX3Atmp_ur0lqw0mnkf2gJG9adJhuiA)) goto LA14;
					i_jJgchJglMdVn5ghHepHNEQ = res_qY3iGvz4sUYgqm9aIqBy2Yg;
					{
						if (!((*s0[(i_jJgchJglMdVn5ghHepHNEQ)- 0]).offset == e0)) goto LA17;
						result0 = nimrtl_cstrToNimstr((*s0[(i_jJgchJglMdVn5ghHepHNEQ)- 0]).name);
						goto BeforeRet;
					}
					LA17: ;
					res_qY3iGvz4sUYgqm9aIqBy2Yg += ((NI) 1);
				} LA14: ;
			}
		}
	}
	LA1: ;
	LOC19 = (NimStringDesc*)0;
	LOC20 = (NimStringDesc*)0;
	LOC20 = nimrtl_nimIntToStr(e0);
	LOC19 = rawNewString(LOC20->Sup.len + 16);
appendString(LOC19, LOC20);
appendString(LOC19, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_27));
	result0 = LOC19;
	}BeforeRet: ;
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprBool)(NIM_BOOL x0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!x0) goto LA3;
		result0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_21));
	}
	goto LA1;
	LA3: ;
	{
		result0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_22));
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, reprInt)(NI64 x0) {
	NimStringDesc* result0;
{	result0 = (NimStringDesc*)0;
	result0 = nimrtl_nimInt64ToStr(x0);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s0, NIM_CHAR c0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = s0;
	{
		void* LOC5;
		if (!((NI)((*result0).Sup.reserved & ((NI) IL64(9223372036854775807))) <= (*result0).Sup.len)) goto LA3;
		(*result0).Sup.reserved = resize_bzF9a0JivP3Z4njqaxuLc5wsystem((NI)((*result0).Sup.reserved & ((NI) IL64(9223372036854775807))));
		LOC5 = (void*)0;
		LOC5 = nimrtl_growObj(((void*) (result0)), (NI)((NI)(((NI)sizeof(TGenericSeq)) + (*result0).Sup.reserved) + ((NI) 1)));
		result0 = ((NimStringDesc*) (LOC5));
	}
	LA3: ;
	(*result0).data[((*result0).Sup.len)- 0] = c0;
	(*result0).data[((NI)((*result0).Sup.len + ((NI) 1)))- 0] = 0;
	(*result0).Sup.len += ((NI) 1);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprChar)(NIM_CHAR x0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_28));
	switch (((NU8)(x0))) {
	case 34:
	{
		result0 = nimrtl_resizeString(result0, 2);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_29));
	}
	break;
	case 92:
	{
		result0 = nimrtl_resizeString(result0, 2);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_30));
	}
	break;
	case 128 ... 255:
	case 0 ... 31:
	{
		NimStringDesc* LOC4;
		NimStringDesc* LOC5;
		LOC4 = (NimStringDesc*)0;
		LOC5 = (NimStringDesc*)0;
		LOC5 = reprInt(((NI64) (((NU8)(x0)))));
		LOC4 = rawNewString(LOC5->Sup.len + 1);
appendString(LOC4, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_31));
appendString(LOC4, LOC5);
		result0 = nimrtl_resizeString(result0, LOC4->Sup.len + 0);
appendString(result0, LOC4);
	}
	break;
	default:
	{
		result0 = addChar(result0, x0);
	}
	break;
	}
	result0 = nimrtl_resizeString(result0, 1);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_28));
	return result0;
}

N_NIMCALL(void, addsetelem_Kn6x9bywsw6UYG9beY19cFc8Q)(NimStringDesc** result0, NI elem0, TNimType* typ0) {
	switch ((*typ0).kind) {
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 14):
	{
		NimStringDesc* LOC2;
		LOC2 = (NimStringDesc*)0;
		LOC2 = nimrtl_reprEnum(elem0, typ0);
		(*result0) = nimrtl_resizeString((*result0), LOC2->Sup.len + 0);
appendString((*result0), LOC2);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 1):
	{
		NimStringDesc* LOC4;
		LOC4 = (NimStringDesc*)0;
		LOC4 = nimrtl_reprBool(((NIM_BOOL) (elem0)));
		(*result0) = nimrtl_resizeString((*result0), LOC4->Sup.len + 0);
appendString((*result0), LOC4);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 2):
	{
		NimStringDesc* LOC6;
		LOC6 = (NimStringDesc*)0;
		LOC6 = nimrtl_reprChar(((NIM_CHAR) (((NI) (elem0)))));
		(*result0) = nimrtl_resizeString((*result0), LOC6->Sup.len + 0);
appendString((*result0), LOC6);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 20):
	{
		addsetelem_Kn6x9bywsw6UYG9beY19cFc8Q(result0, elem0, (*typ0).base);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 31) ... ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 35):
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 41):
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 42):
	{
		NimStringDesc* LOC9;
		LOC9 = (NimStringDesc*)0;
		LOC9 = reprInt(((NI64) (elem0)));
		(*result0) = nimrtl_resizeString((*result0), LOC9->Sup.len + 0);
appendString((*result0), LOC9);
	}
	break;
	default:
	{
		(*result0) = nimrtl_resizeString((*result0), 16);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_27));
	}
	break;
	}
}

N_NIMCALL(void, reprsetaux_hUJOLGug9apUf00OJCE66qg)(NimStringDesc** result0, void* p0, TNimType* typ0) {
	NI elemcounter0;
	NI64 u0;
	elemcounter0 = ((NI) 0);
	(*result0) = nimrtl_resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_25));
	u0 = (NI64)0;
	switch ((*typ0).size) {
	case ((NI) 1):
	{
		u0 = ((NI64)(NU64)(NU8)((*((NI8*) (p0)))));
	}
	break;
	case ((NI) 2):
	{
		u0 = ((NI64)(NU64)(NU16)((*((NI16*) (p0)))));
	}
	break;
	case ((NI) 4):
	{
		u0 = ((NI64)(NU64)(NU32)((*((NI32*) (p0)))));
	}
	break;
	case ((NI) 8):
	{
		u0 = (*((NI64*) (p0)));
	}
	break;
	default:
	{
		NI8* a0;
		a0 = ((NI8*) (p0));
		{
			NI i_rEvVY5TuoPX3au4YfT2NkQ;
			NI HEX3Atmp_S9cQW8Ca53VT38WG9bq7p1tg;
			NI res_myiN3NgeKw3QkobNxEsugw;
			i_rEvVY5TuoPX3au4YfT2NkQ = (NI)0;
			HEX3Atmp_S9cQW8Ca53VT38WG9bq7p1tg = (NI)0;
			HEX3Atmp_S9cQW8Ca53VT38WG9bq7p1tg = (NI)((NI)((*typ0).size * ((NI) 8)) - ((NI) 1));
			res_myiN3NgeKw3QkobNxEsugw = ((NI) 0);
			{
				while (1) {
					if (!(res_myiN3NgeKw3QkobNxEsugw <= HEX3Atmp_S9cQW8Ca53VT38WG9bq7p1tg)) goto LA8;
					i_rEvVY5TuoPX3au4YfT2NkQ = res_myiN3NgeKw3QkobNxEsugw;
					{
						if (!!(((NI)(((NI)(NU)(NU8)(a0[((NI)(i_rEvVY5TuoPX3au4YfT2NkQ / ((NI) 8)))- 0])) & (NI)((NU64)(((NI) 1)) << (NU64)(((NI) ((NI)(i_rEvVY5TuoPX3au4YfT2NkQ % ((NI) 8))))))) == ((NI) 0)))) goto LA11;
						{
							if (!(((NI) 0) < elemcounter0)) goto LA15;
							(*result0) = nimrtl_resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_26));
						}
						LA15: ;
						addsetelem_Kn6x9bywsw6UYG9beY19cFc8Q(result0, (NI)(i_rEvVY5TuoPX3au4YfT2NkQ + (*(*typ0).node).len), (*typ0).base);
						elemcounter0 += ((NI) 1);
					}
					LA11: ;
					res_myiN3NgeKw3QkobNxEsugw += ((NI) 1);
				} LA8: ;
			}
		}
	}
	break;
	}
	{
		if (!((*typ0).size <= ((NI) 8))) goto LA19;
		{
			NI i_rEvVY5TuoPX3au4YfT2NkQ_2;
			NI res_myiN3NgeKw3QkobNxEsugw_2;
			i_rEvVY5TuoPX3au4YfT2NkQ_2 = (NI)0;
			res_myiN3NgeKw3QkobNxEsugw_2 = ((NI) 0);
			{
				while (1) {
					if (!(res_myiN3NgeKw3QkobNxEsugw_2 <= ((NI) 63))) goto LA23;
					i_rEvVY5TuoPX3au4YfT2NkQ_2 = res_myiN3NgeKw3QkobNxEsugw_2;
					{
						if (!!(((NI64)(u0 & (NI64)((NU64)(IL64(1)) << (NU64)(((NI64) (i_rEvVY5TuoPX3au4YfT2NkQ_2))))) == IL64(0)))) goto LA26;
						{
							if (!(((NI) 0) < elemcounter0)) goto LA30;
							(*result0) = nimrtl_resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_26));
						}
						LA30: ;
						addsetelem_Kn6x9bywsw6UYG9beY19cFc8Q(result0, (NI)(i_rEvVY5TuoPX3au4YfT2NkQ_2 + (*(*typ0).node).len), (*typ0).base);
						elemcounter0 += ((NI) 1);
					}
					LA26: ;
					res_myiN3NgeKw3QkobNxEsugw_2 += ((NI) 1);
				} LA23: ;
			}
		}
	}
	LA19: ;
	(*result0) = nimrtl_resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_32));
}

N_NIMCALL(void, reprarray_e9bayrEsuZxZS2R51iDjmHQ_2)(NimStringDesc** result0, void* p0, TNimType* typ0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0) {
	NI bs0;
	(*result0) = nimrtl_resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_33));
	bs0 = (*(*typ0).base).size;
	{
		NI i_tpRn9bXjEw8ApoquLp7BhQw;
		NI HEX3Atmp_aVEWmbQEUVMy3Zuul5Ujcg;
		NI res_PNzj9cX67V1Cx9aGuPrxAx9aw;
		i_tpRn9bXjEw8ApoquLp7BhQw = (NI)0;
		HEX3Atmp_aVEWmbQEUVMy3Zuul5Ujcg = (NI)0;
		HEX3Atmp_aVEWmbQEUVMy3Zuul5Ujcg = (NI)((NI)((*typ0).size / bs0) - ((NI) 1));
		res_PNzj9cX67V1Cx9aGuPrxAx9aw = ((NI) 0);
		{
			while (1) {
				if (!(res_PNzj9cX67V1Cx9aGuPrxAx9aw <= HEX3Atmp_aVEWmbQEUVMy3Zuul5Ujcg)) goto LA3;
				i_tpRn9bXjEw8ApoquLp7BhQw = res_PNzj9cX67V1Cx9aGuPrxAx9aw;
				{
					if (!(((NI) 0) < i_tpRn9bXjEw8ApoquLp7BhQw)) goto LA6;
					(*result0) = nimrtl_resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_26));
				}
				LA6: ;
				repraux_e9bayrEsuZxZS2R51iDjmHQ(result0, ((void*) ((NI)(((NI) (p0)) + (NI)(i_tpRn9bXjEw8ApoquLp7BhQw * bs0)))), (*typ0).base, cl0);
				res_PNzj9cX67V1Cx9aGuPrxAx9aw += ((NI) 1);
			} LA3: ;
		}
	}
	(*result0) = nimrtl_resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_34));
}

N_NIMCALL(void, reprrecordaux_DwhuG4GTpS9cHlrxP9c9cKltQ)(NimStringDesc** result0, void* p0, TNimNode* n0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0) {
	switch ((*n0).kind) {
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 0):
	{
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 1):
	{
		NimStringDesc* LOC3;
		LOC3 = (NimStringDesc*)0;
		LOC3 = nimrtl_cstrToNimstr((*n0).name);
		(*result0) = nimrtl_resizeString((*result0), LOC3->Sup.len + 0);
appendString((*result0), LOC3);
		(*result0) = nimrtl_resizeString((*result0), 3);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_35));
		repraux_e9bayrEsuZxZS2R51iDjmHQ(result0, ((void*) ((NI)(((NI) (p0)) + (*n0).offset))), (*n0).typ, cl0);
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 2):
	{
		{
			NI i_s9cG1pboq9bEw4Pxoai9bZByQ;
			NI HEX3Atmp_kBzj9b0sdlK5Rc0io9bruqkg;
			NI res_zC8h8FejJbbjRvgIAUMvWg;
			i_s9cG1pboq9bEw4Pxoai9bZByQ = (NI)0;
			HEX3Atmp_kBzj9b0sdlK5Rc0io9bruqkg = (NI)0;
			HEX3Atmp_kBzj9b0sdlK5Rc0io9bruqkg = (NI)((*n0).len - ((NI) 1));
			res_zC8h8FejJbbjRvgIAUMvWg = ((NI) 0);
			{
				while (1) {
					if (!(res_zC8h8FejJbbjRvgIAUMvWg <= HEX3Atmp_kBzj9b0sdlK5Rc0io9bruqkg)) goto LA7;
					i_s9cG1pboq9bEw4Pxoai9bZByQ = res_zC8h8FejJbbjRvgIAUMvWg;
					{
						if (!(((NI) 0) < i_s9cG1pboq9bEw4Pxoai9bZByQ)) goto LA10;
						(*result0) = nimrtl_resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_36));
					}
					LA10: ;
					reprrecordaux_DwhuG4GTpS9cHlrxP9c9cKltQ(result0, p0, (*n0).sons[(i_s9cG1pboq9bEw4Pxoai9bZByQ)- 0], cl0);
					res_zC8h8FejJbbjRvgIAUMvWg += ((NI) 1);
				} LA7: ;
			}
		}
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 3):
	{
		TNimNode* m0;
		m0 = selectbranch_MvIsyjoRI1g7VY9cXrLB1dQ(p0, n0);
		repraux_e9bayrEsuZxZS2R51iDjmHQ(result0, ((void*) ((NI)(((NI) (p0)) + (*n0).offset))), (*n0).typ, cl0);
		{
			if (!!((m0 == NIM_NIL))) goto LA15;
			reprrecordaux_DwhuG4GTpS9cHlrxP9c9cKltQ(result0, p0, m0, cl0);
		}
		LA15: ;
	}
	break;
	}
}

N_NIMCALL(void, reprrecord_e9bayrEsuZxZS2R51iDjmHQ_3)(NimStringDesc** result0, void* p0, TNimType* typ0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0) {
	TNimType* curtyp0;
	NIM_BOOL first0;
	(*result0) = nimrtl_resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_33));
	curtyp0 = typ0;
	first0 = NIM_TRUE;
	{
		while (1) {
			NimStringDesc* part0;
			if (!!((curtyp0 == NIM_NIL))) goto LA2;
			part0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_23));
			reprrecordaux_DwhuG4GTpS9cHlrxP9c9cKltQ((&part0), p0, (*curtyp0).node, cl0);
			{
				if (!(((NI) 0) < (part0 ? part0->Sup.len : 0))) goto LA5;
				{
					if (!!(first0)) goto LA9;
					(*result0) = nimrtl_resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_36));
				}
				LA9: ;
				(*result0) = nimrtl_resizeString((*result0), part0->Sup.len + 0);
appendString((*result0), part0);
				first0 = NIM_FALSE;
			}
			LA5: ;
			curtyp0 = (*curtyp0).base;
		} LA2: ;
	}
	(*result0) = nimrtl_resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_34));
}

N_NIMCALL(NimStringDesc*, reprPointer)(void* x0) {
	NimStringDesc* result0;
	TY_JpYObICIkqkM7eHG4jy19aw buf0;
	int LOC1;
{	result0 = (NimStringDesc*)0;
	memset((void*)buf0, 0, sizeof(buf0));
	LOC1 = (int)0;
	LOC1 = sprintf(((NCSTRING) (buf0)), "%p", x0);
	result0 = nimrtl_cstrToNimstr(((NCSTRING) (buf0)));
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void, reprref_e9bayrEsuZxZS2R51iDjmHQ_4)(NimStringDesc** result0, void* p0, TNimType* typ0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	cell0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(p0);
	LOC1 = (NimStringDesc*)0;
	LOC2 = (NimStringDesc*)0;
	LOC2 = reprPointer(p0);
	LOC1 = rawNewString(LOC2->Sup.len + 4);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_38));
appendString(LOC1, LOC2);
	(*result0) = nimrtl_resizeString((*result0), LOC1->Sup.len + 0);
appendString((*result0), LOC1);
	{
		NIM_BOOL LOC5;
		LOC5 = (NIM_BOOL)0;
		LOC5 = contains_9c4TZ2Zl3sU4TUeK9bR8E9ciw((&(*cl0).marked), cell0);
		if (!!(LOC5)) goto LA6;
		incl_m4q9b16kJJcoKe9c4ERtlpCg((&(*cl0).marked), cell0);
		(*result0) = nimrtl_resizeString((*result0), 5);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_39));
		repraux_e9bayrEsuZxZS2R51iDjmHQ(result0, p0, (*typ0).base, cl0);
	}
	LA6: ;
}

N_NIMCALL(void, reprsequence_e9bayrEsuZxZS2R51iDjmHQ_5)(NimStringDesc** result0, void* p0, TNimType* typ0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0) {
	NimStringDesc* LOC5;
	NimStringDesc* LOC6;
	NI bs0;
{	{
		if (!(p0 == NIM_NIL)) goto LA3;
		(*result0) = nimrtl_resizeString((*result0), 3);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_37));
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = (NimStringDesc*)0;
	LOC6 = (NimStringDesc*)0;
	LOC6 = reprPointer(p0);
	LOC5 = rawNewString(LOC6->Sup.len + 1);
appendString(LOC5, LOC6);
appendString(LOC5, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_33));
	(*result0) = nimrtl_resizeString((*result0), LOC5->Sup.len + 0);
appendString((*result0), LOC5);
	bs0 = (*(*typ0).base).size;
	{
		NI i_AWwk6IV39a5zHtRyFBuwx8A;
		NI HEX3Atmp_HFCtZ58M9aVJKFwuBOAROiw;
		NI res_Q9apzu3mJO0UTJ663doKbjQ;
		i_AWwk6IV39a5zHtRyFBuwx8A = (NI)0;
		HEX3Atmp_HFCtZ58M9aVJKFwuBOAROiw = (NI)0;
		HEX3Atmp_HFCtZ58M9aVJKFwuBOAROiw = (NI)((*((TGenericSeq*) (p0))).len - ((NI) 1));
		res_Q9apzu3mJO0UTJ663doKbjQ = ((NI) 0);
		{
			while (1) {
				if (!(res_Q9apzu3mJO0UTJ663doKbjQ <= HEX3Atmp_HFCtZ58M9aVJKFwuBOAROiw)) goto LA9;
				i_AWwk6IV39a5zHtRyFBuwx8A = res_Q9apzu3mJO0UTJ663doKbjQ;
				{
					if (!(((NI) 0) < i_AWwk6IV39a5zHtRyFBuwx8A)) goto LA12;
					(*result0) = nimrtl_resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_26));
				}
				LA12: ;
				repraux_e9bayrEsuZxZS2R51iDjmHQ(result0, ((void*) ((NI)((NI)(((NI) (p0)) + ((NI) 16)) + (NI)(i_AWwk6IV39a5zHtRyFBuwx8A * bs0)))), (*typ0).base, cl0);
				res_Q9apzu3mJO0UTJ663doKbjQ += ((NI) 1);
			} LA9: ;
		}
	}
	(*result0) = nimrtl_resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_34));
	}BeforeRet: ;
}

N_NIMCALL(NimStringDesc*, HEX24_rzAI8EMyNBAQwGODeohhAA)(NU64 x0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!(x0 == ((NI) 0))) goto LA3;
		result0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_40));
	}
	goto LA1;
	LA3: ;
	{
		TY_JpYObICIkqkM7eHG4jy19aw buf0;
		NI i0;
		NU64 n0;
		NI half0;
		memset((void*)buf0, 0, sizeof(buf0));
		i0 = ((NI) 0);
		n0 = x0;
		{
			while (1) {
				NU64 nn0;
				if (!!((n0 == ((NI) 0)))) goto LA7;
				nn0 = (NU64)((NU64)(n0) / (NU64)(10ULL));
				buf0[(i0)- 0] = ((NIM_CHAR) ((NU64)((NU64)((NU64)((NU64)(n0) - (NU64)((NU64)((NU64)(10ULL) * (NU64)(nn0))))) + (NU64)(((NI) 48)))));
				i0 += ((NI) 1);
				n0 = nn0;
			} LA7: ;
		}
		half0 = (NI)(i0 / ((NI) 2));
		{
			NI t_tZsjx2v9cdsyTCWq4uUg49cw;
			NI HEX3Atmp_GRk3vxJC7Q7s45r4T9b06kQ;
			NI res_zwSgPMvl2Bm74uv8ASzDQg;
			t_tZsjx2v9cdsyTCWq4uUg49cw = (NI)0;
			HEX3Atmp_GRk3vxJC7Q7s45r4T9b06kQ = (NI)0;
			HEX3Atmp_GRk3vxJC7Q7s45r4T9b06kQ = (half0 - 1);
			res_zwSgPMvl2Bm74uv8ASzDQg = ((NI) 0);
			{
				while (1) {
					NIM_CHAR LOC11;
					if (!(res_zwSgPMvl2Bm74uv8ASzDQg <= HEX3Atmp_GRk3vxJC7Q7s45r4T9b06kQ)) goto LA10;
					t_tZsjx2v9cdsyTCWq4uUg49cw = res_zwSgPMvl2Bm74uv8ASzDQg;
					LOC11 = (NIM_CHAR)0;
					LOC11 = buf0[(t_tZsjx2v9cdsyTCWq4uUg49cw)- 0];
					buf0[(t_tZsjx2v9cdsyTCWq4uUg49cw)- 0] = buf0[((NI)((NI)(i0 - t_tZsjx2v9cdsyTCWq4uUg49cw) - ((NI) 1)))- 0];
					buf0[((NI)((NI)(i0 - t_tZsjx2v9cdsyTCWq4uUg49cw) - ((NI) 1)))- 0] = LOC11;
					res_zwSgPMvl2Bm74uv8ASzDQg += ((NI) 1);
				} LA10: ;
			}
		}
		result0 = nimrtl_cstrToNimstr(((NCSTRING) (buf0)));
	}
	LA1: ;
	return result0;
}

N_NIMCALL(void, add_XyS0BXa1E5ylXzhvUQlY9cg)(NimStringDesc** x0, NCSTRING y0) {
	NI i0;
	i0 = ((NI) 0);
	{
		while (1) {
			if (!!(((NU8)(y0[i0]) == (NU8)(0)))) goto LA2;
			(*x0) = addChar((*x0), y0[i0]);
			i0 += ((NI) 1);
		} LA2: ;
	}
}

N_NIMCALL(void, add_A9bDQDKw5SEqD3OvtOnC1bg)(NimStringDesc** result0, NF x0) {
	TY_eVNFTutn6un5gcq48fQLdg buf0;
	NI n0;
	int LOC1;
	NIM_BOOL hasdot0;
	memset((void*)buf0, 0, sizeof(buf0));
	LOC1 = (int)0;
	LOC1 = sprintf(((NCSTRING) (buf0)), "%.16g", x0);
	n0 = ((NI) (LOC1));
	hasdot0 = NIM_FALSE;
	{
		NI i_Dc9b3u6KOlAfbYkJrmfLS8g;
		NI HEX3Atmp_4rY0hesNymbjU0qUfyjfhA_2;
		NI res_0E6r6o7EsL2WULx2c9b2Xaw_2;
		i_Dc9b3u6KOlAfbYkJrmfLS8g = (NI)0;
		HEX3Atmp_4rY0hesNymbjU0qUfyjfhA_2 = (NI)0;
		HEX3Atmp_4rY0hesNymbjU0qUfyjfhA_2 = (NI)(n0 - ((NI) 1));
		res_0E6r6o7EsL2WULx2c9b2Xaw_2 = ((NI) 0);
		{
			while (1) {
				if (!(res_0E6r6o7EsL2WULx2c9b2Xaw_2 <= HEX3Atmp_4rY0hesNymbjU0qUfyjfhA_2)) goto LA4;
				i_Dc9b3u6KOlAfbYkJrmfLS8g = res_0E6r6o7EsL2WULx2c9b2Xaw_2;
				{
					if (!((NU8)(buf0[(i_Dc9b3u6KOlAfbYkJrmfLS8g)- 0]) == (NU8)(44))) goto LA7;
					buf0[(i_Dc9b3u6KOlAfbYkJrmfLS8g)- 0] = 46;
					hasdot0 = NIM_TRUE;
				}
				goto LA5;
				LA7: ;
				{
					if (!(((NU8)(buf0[(i_Dc9b3u6KOlAfbYkJrmfLS8g)- 0])) >= ((NU8)(97)) && ((NU8)(buf0[(i_Dc9b3u6KOlAfbYkJrmfLS8g)- 0])) <= ((NU8)(122)) || ((NU8)(buf0[(i_Dc9b3u6KOlAfbYkJrmfLS8g)- 0])) >= ((NU8)(65)) && ((NU8)(buf0[(i_Dc9b3u6KOlAfbYkJrmfLS8g)- 0])) <= ((NU8)(90)) || ((NU8)(buf0[(i_Dc9b3u6KOlAfbYkJrmfLS8g)- 0])) == ((NU8)(46)))) goto LA10;
					hasdot0 = NIM_TRUE;
				}
				goto LA5;
				LA10: ;
				LA5: ;
				res_0E6r6o7EsL2WULx2c9b2Xaw_2 += ((NI) 1);
			} LA4: ;
		}
	}
	{
		if (!!(hasdot0)) goto LA14;
		buf0[(n0)- 0] = 46;
		buf0[((NI)(n0 + ((NI) 1)))- 0] = 48;
		buf0[((NI)(n0 + ((NI) 2)))- 0] = 0;
	}
	LA14: ;
	{
		if (!(((NU8)(buf0[((NI)(n0 - ((NI) 1)))- 0])) == ((NU8)(110)) || ((NU8)(buf0[((NI)(n0 - ((NI) 1)))- 0])) == ((NU8)(78)))) goto LA18;
		(*result0) = nimrtl_resizeString((*result0), 3);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_41));
	}
	goto LA16;
	LA18: ;
	{
		if (!((NU8)(buf0[((NI)(n0 - ((NI) 1)))- 0]) == (NU8)(70))) goto LA21;
		{
			if (!((NU8)(buf0[(((NI) 0))- 0]) == (NU8)(45))) goto LA25;
			(*result0) = nimrtl_resizeString((*result0), 4);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_42));
		}
		goto LA23;
		LA25: ;
		{
			(*result0) = nimrtl_resizeString((*result0), 3);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_43));
		}
		LA23: ;
	}
	goto LA16;
	LA21: ;
	{
		add_XyS0BXa1E5ylXzhvUQlY9cg(result0, ((NCSTRING) (buf0)));
	}
	LA16: ;
}

N_NIMCALL(NimStringDesc*, nimFloatToStr)(NF f0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) 8));
	add_A9bDQDKw5SEqD3OvtOnC1bg((&result0), f0);
	return result0;
}

N_NIMCALL(void, reprstraux_Q29a35u9ahpdy8q2BYxAjP7g)(NimStringDesc** result0, NimStringDesc* s0) {
	NimStringDesc* LOC5;
	NimStringDesc* LOC6;
{	{
		if (!(((void*) (s0)) == NIM_NIL)) goto LA3;
		(*result0) = nimrtl_resizeString((*result0), 3);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_37));
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = (NimStringDesc*)0;
	LOC6 = (NimStringDesc*)0;
	LOC6 = reprPointer(((void*) (s0)));
	LOC5 = rawNewString(LOC6->Sup.len + 1);
appendString(LOC5, LOC6);
appendString(LOC5, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_44));
	(*result0) = nimrtl_resizeString((*result0), LOC5->Sup.len + 0);
appendString((*result0), LOC5);
	{
		NI i_nquZ1DzpDIPOl19cjWN0cSw;
		NI HEX3Atmp_1dAEGGMmDTNTeSIbtgJRGw;
		NI res_6NoAi5yvHKJV4D4Xr7QKHA;
		i_nquZ1DzpDIPOl19cjWN0cSw = (NI)0;
		HEX3Atmp_1dAEGGMmDTNTeSIbtgJRGw = (NI)0;
		HEX3Atmp_1dAEGGMmDTNTeSIbtgJRGw = ((s0 ? s0->Sup.len : 0) - 1);
		res_6NoAi5yvHKJV4D4Xr7QKHA = ((NI) 0);
		{
			while (1) {
				NIM_CHAR c0;
				if (!(res_6NoAi5yvHKJV4D4Xr7QKHA <= HEX3Atmp_1dAEGGMmDTNTeSIbtgJRGw)) goto LA9;
				i_nquZ1DzpDIPOl19cjWN0cSw = res_6NoAi5yvHKJV4D4Xr7QKHA;
				c0 = s0->data[i_nquZ1DzpDIPOl19cjWN0cSw];
				switch (((NU8)(c0))) {
				case 34:
				{
					(*result0) = nimrtl_resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_29));
				}
				break;
				case 92:
				{
					(*result0) = nimrtl_resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_30));
				}
				break;
				case 10:
				{
					(*result0) = nimrtl_resizeString((*result0), 6);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_45));
				}
				break;
				case 128 ... 255:
				case 0 ... 9:
				case 11 ... 31:
				{
					NimStringDesc* LOC14;
					NimStringDesc* LOC15;
					LOC14 = (NimStringDesc*)0;
					LOC15 = (NimStringDesc*)0;
					LOC15 = reprInt(((NI64) (((NU8)(c0)))));
					LOC14 = rawNewString(LOC15->Sup.len + 1);
appendString(LOC14, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_31));
appendString(LOC14, LOC15);
					(*result0) = nimrtl_resizeString((*result0), LOC14->Sup.len + 0);
appendString((*result0), LOC14);
				}
				break;
				default:
				{
					(*result0) = addChar((*result0), c0);
				}
				break;
				}
				res_6NoAi5yvHKJV4D4Xr7QKHA += ((NI) 1);
			} LA9: ;
		}
	}
	(*result0) = nimrtl_resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_44));
	}BeforeRet: ;
}

N_NIMCALL(void, repraux_e9bayrEsuZxZS2R51iDjmHQ)(NimStringDesc** result0, void* p0, TNimType* typ0, Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0) {
{	{
		if (!((*cl0).recdepth == ((NI) 0))) goto LA3;
		(*result0) = nimrtl_resizeString((*result0), 3);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_24));
		goto BeforeRet;
	}
	LA3: ;
	(*cl0).recdepth -= ((NI) 1);
	switch ((*typ0).kind) {
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 19):
	{
		reprsetaux_hUJOLGug9apUf00OJCE66qg(result0, p0, typ0);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 16):
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 4):
	{
		reprarray_e9bayrEsuZxZS2R51iDjmHQ_2(result0, p0, typ0, cl0);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 18):
	{
		reprrecord_e9bayrEsuZxZS2R51iDjmHQ_3(result0, p0, typ0, cl0);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 17):
	{
		TNimType* t0;
		t0 = (*((TNimType**) (p0)));
		reprrecord_e9bayrEsuZxZS2R51iDjmHQ_3(result0, p0, t0, cl0);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 22):
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 21):
	{
		{
			if (!((*((void**) (p0))) == NIM_NIL)) goto LA12;
			(*result0) = nimrtl_resizeString((*result0), 3);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_37));
		}
		goto LA10;
		LA12: ;
		{
			reprref_e9bayrEsuZxZS2R51iDjmHQ_4(result0, (*((void**) (p0))), typ0, cl0);
		}
		LA10: ;
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 24):
	{
		reprsequence_e9bayrEsuZxZS2R51iDjmHQ_5(result0, (*((void**) (p0))), typ0, cl0);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 31):
	{
		NimStringDesc* LOC17;
		LOC17 = (NimStringDesc*)0;
		LOC17 = nimrtl_nimIntToStr((*((NI*) (p0))));
		(*result0) = nimrtl_resizeString((*result0), LOC17->Sup.len + 0);
appendString((*result0), LOC17);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 32):
	{
		NimStringDesc* LOC19;
		LOC19 = (NimStringDesc*)0;
		LOC19 = nimrtl_nimIntToStr(((NI) ((*((NI8*) (p0))))));
		(*result0) = nimrtl_resizeString((*result0), LOC19->Sup.len + 0);
appendString((*result0), LOC19);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 33):
	{
		NimStringDesc* LOC21;
		LOC21 = (NimStringDesc*)0;
		LOC21 = nimrtl_nimIntToStr(((NI) ((*((NI16*) (p0))))));
		(*result0) = nimrtl_resizeString((*result0), LOC21->Sup.len + 0);
appendString((*result0), LOC21);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 34):
	{
		NimStringDesc* LOC23;
		LOC23 = (NimStringDesc*)0;
		LOC23 = nimrtl_nimIntToStr(((NI) ((*((NI32*) (p0))))));
		(*result0) = nimrtl_resizeString((*result0), LOC23->Sup.len + 0);
appendString((*result0), LOC23);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 35):
	{
		NimStringDesc* LOC25;
		LOC25 = (NimStringDesc*)0;
		LOC25 = nimrtl_nimInt64ToStr((*((NI64*) (p0))));
		(*result0) = nimrtl_resizeString((*result0), LOC25->Sup.len + 0);
appendString((*result0), LOC25);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 40):
	{
		NimStringDesc* LOC27;
		LOC27 = (NimStringDesc*)0;
		LOC27 = HEX24_rzAI8EMyNBAQwGODeohhAA(((NU64) ((*((NU*) (p0))))));
		(*result0) = nimrtl_resizeString((*result0), LOC27->Sup.len + 0);
appendString((*result0), LOC27);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 41):
	{
		NimStringDesc* LOC29;
		LOC29 = (NimStringDesc*)0;
		LOC29 = HEX24_rzAI8EMyNBAQwGODeohhAA(((NU64) ((*((NU8*) (p0))))));
		(*result0) = nimrtl_resizeString((*result0), LOC29->Sup.len + 0);
appendString((*result0), LOC29);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 42):
	{
		NimStringDesc* LOC31;
		LOC31 = (NimStringDesc*)0;
		LOC31 = HEX24_rzAI8EMyNBAQwGODeohhAA(((NU64) ((*((NU16*) (p0))))));
		(*result0) = nimrtl_resizeString((*result0), LOC31->Sup.len + 0);
appendString((*result0), LOC31);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 43):
	{
		NimStringDesc* LOC33;
		LOC33 = (NimStringDesc*)0;
		LOC33 = HEX24_rzAI8EMyNBAQwGODeohhAA(((NU64) ((*((NU32*) (p0))))));
		(*result0) = nimrtl_resizeString((*result0), LOC33->Sup.len + 0);
appendString((*result0), LOC33);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 44):
	{
		NimStringDesc* LOC35;
		LOC35 = (NimStringDesc*)0;
		LOC35 = HEX24_rzAI8EMyNBAQwGODeohhAA((*((NU64*) (p0))));
		(*result0) = nimrtl_resizeString((*result0), LOC35->Sup.len + 0);
appendString((*result0), LOC35);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 36):
	{
		NimStringDesc* LOC37;
		LOC37 = (NimStringDesc*)0;
		LOC37 = nimFloatToStr((*((NF*) (p0))));
		(*result0) = nimrtl_resizeString((*result0), LOC37->Sup.len + 0);
appendString((*result0), LOC37);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 37):
	{
		NimStringDesc* LOC39;
		LOC39 = (NimStringDesc*)0;
		LOC39 = nimFloatToStr(((NF) ((*((NF32*) (p0))))));
		(*result0) = nimrtl_resizeString((*result0), LOC39->Sup.len + 0);
appendString((*result0), LOC39);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 38):
	{
		NimStringDesc* LOC41;
		LOC41 = (NimStringDesc*)0;
		LOC41 = nimFloatToStr((*((NF*) (p0))));
		(*result0) = nimrtl_resizeString((*result0), LOC41->Sup.len + 0);
appendString((*result0), LOC41);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 14):
	{
		NimStringDesc* LOC43;
		LOC43 = (NimStringDesc*)0;
		LOC43 = nimrtl_reprEnum((*((NI*) (p0))), typ0);
		(*result0) = nimrtl_resizeString((*result0), LOC43->Sup.len + 0);
appendString((*result0), LOC43);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 1):
	{
		NimStringDesc* LOC45;
		LOC45 = (NimStringDesc*)0;
		LOC45 = nimrtl_reprBool((*((NIM_BOOL*) (p0))));
		(*result0) = nimrtl_resizeString((*result0), LOC45->Sup.len + 0);
appendString((*result0), LOC45);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 2):
	{
		NimStringDesc* LOC47;
		LOC47 = (NimStringDesc*)0;
		LOC47 = nimrtl_reprChar((*((NIM_CHAR*) (p0))));
		(*result0) = nimrtl_resizeString((*result0), LOC47->Sup.len + 0);
appendString((*result0), LOC47);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 28):
	{
		reprstraux_Q29a35u9ahpdy8q2BYxAjP7g(result0, (*((NimStringDesc**) (p0))));
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 29):
	{
		NCSTRING cs0;
		cs0 = (*((NCSTRING*) (p0)));
		{
			if (!(cs0 == 0)) goto LA52;
			(*result0) = nimrtl_resizeString((*result0), 3);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_37));
		}
		goto LA50;
		LA52: ;
		{
			NimStringDesc* LOC55;
			LOC55 = (NimStringDesc*)0;
			LOC55 = nimrtl_cstrToNimstr(cs0);
			reprstraux_Q29a35u9ahpdy8q2BYxAjP7g(result0, LOC55);
		}
		LA50: ;
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 20):
	{
		repraux_e9bayrEsuZxZS2R51iDjmHQ(result0, p0, (*typ0).base, cl0);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 25):
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 26):
	{
		{
			if (!((*((void**) (p0))) == NIM_NIL)) goto LA60;
			(*result0) = nimrtl_resizeString((*result0), 3);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_37));
		}
		goto LA58;
		LA60: ;
		{
			NimStringDesc* LOC63;
			LOC63 = (NimStringDesc*)0;
			LOC63 = reprPointer((*((void**) (p0))));
			(*result0) = nimrtl_resizeString((*result0), LOC63->Sup.len + 0);
appendString((*result0), LOC63);
		}
		LA58: ;
	}
	break;
	default:
	{
		(*result0) = nimrtl_resizeString((*result0), 15);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_46));
	}
	break;
	}
	(*cl0).recdepth += ((NI) 1);
	}BeforeRet: ;
}

N_NIMCALL(void, deinitreprclosure_1SAi9bV4Tf9boSCAkLYGFXoA_2)(Reprclosure_QK7SSKN8dPEpZedUTVKSLw* cl0) {
	deinit_WHgd5C59bkXWDz3vnAxfzXQ_3((&(*cl0).marked));
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprAny)(void* p_wQ0AirgOVjy3hY8APGd1OA, TNimType* typ0) {
	NimStringDesc* result0;
	Reprclosure_QK7SSKN8dPEpZedUTVKSLw cl0;
	result0 = (NimStringDesc*)0;
	memset((void*)(&cl0), 0, sizeof(cl0));
	initreprclosure_1SAi9bV4Tf9boSCAkLYGFXoA((&cl0));
	result0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_23));
	{
		if (!((983056 &((NU64)1<<((NU)((*typ0).kind)&63U)))!=0)) goto LA3;
		repraux_e9bayrEsuZxZS2R51iDjmHQ((&result0), p_wQ0AirgOVjy3hY8APGd1OA, typ0, (&cl0));
	}
	goto LA1;
	LA3: ;
	{
		void* p0;
		p0 = p_wQ0AirgOVjy3hY8APGd1OA;
		repraux_e9bayrEsuZxZS2R51iDjmHQ((&result0), ((void*) ((&p0))), typ0, (&cl0));
	}
	LA1: ;
	result0 = nimrtl_resizeString(result0, 1);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_19));
	deinitreprclosure_1SAi9bV4Tf9boSCAkLYGFXoA_2((&cl0));
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprStr)(NimStringDesc* s0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_23));
	reprstraux_Q29a35u9ahpdy8q2BYxAjP7g((&result0), s0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprSet)(void* p0, TNimType* typ0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_23));
	reprsetaux_hUJOLGug9apUf00OJCE66qg((&result0), p0, typ0);
	return result0;
}

N_LIB_EXPORT N_CDECL(NimStringDesc*, nimrtl_reprOpenArray)(void* p0, NI length0, TNimType* elemtyp0) {
	NimStringDesc* result0;
	Reprclosure_QK7SSKN8dPEpZedUTVKSLw cl0;
	NI bs0;
	result0 = (NimStringDesc*)0;
	memset((void*)(&cl0), 0, sizeof(cl0));
	initreprclosure_1SAi9bV4Tf9boSCAkLYGFXoA((&cl0));
	result0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_33));
	bs0 = (*elemtyp0).size;
	{
		NI i_n0DWuJUJFLE366gKfw32VA;
		NI HEX3Atmp_NzQJquWu4feh9aIDHt5QHZA;
		NI res_9clNZre8NtlDxCWxWmZ4pOQ;
		i_n0DWuJUJFLE366gKfw32VA = (NI)0;
		HEX3Atmp_NzQJquWu4feh9aIDHt5QHZA = (NI)0;
		HEX3Atmp_NzQJquWu4feh9aIDHt5QHZA = (NI)(length0 - ((NI) 1));
		res_9clNZre8NtlDxCWxWmZ4pOQ = ((NI) 0);
		{
			while (1) {
				if (!(res_9clNZre8NtlDxCWxWmZ4pOQ <= HEX3Atmp_NzQJquWu4feh9aIDHt5QHZA)) goto LA3;
				i_n0DWuJUJFLE366gKfw32VA = res_9clNZre8NtlDxCWxWmZ4pOQ;
				{
					if (!(((NI) 0) < i_n0DWuJUJFLE366gKfw32VA)) goto LA6;
					result0 = nimrtl_resizeString(result0, 2);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_26));
				}
				LA6: ;
				repraux_e9bayrEsuZxZS2R51iDjmHQ((&result0), ((void*) ((NI)(((NI) (p0)) + (NI)(i_n0DWuJUJFLE366gKfw32VA * bs0)))), elemtyp0, (&cl0));
				res_9clNZre8NtlDxCWxWmZ4pOQ += ((NI) 1);
			} LA3: ;
		}
	}
	result0 = nimrtl_resizeString(result0, 1);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_34));
	deinitreprclosure_1SAi9bV4Tf9boSCAkLYGFXoA_2((&cl0));
	return result0;
}

N_LIB_EXPORT N_CDECL(Exception*, nimrtl_getCurrentException)(void) {
	Exception* result0;
	result0 = (Exception*)0;
	result0 = currexception_9bVPeDJlYTi9bQApZpfH8wjg;
	return result0;
}

N_NIMCALL(NI64, mulInt64)(NI64 a0, NI64 b0) {
	NI64 result0;
	NF resasfloat0;
	NF floatprod0;
{	result0 = (NI64)0;
	resasfloat0 = (NF)0;
	floatprod0 = (NF)0;
	result0 = (NI64)((NU64)(a0) * (NU64)(b0));
	floatprod0 = ((double) (a0));
	floatprod0 = ((NF)(floatprod0) * (NF)(((double) (b0))));
	resasfloat0 = ((double) (result0));
	{
		if (!(resasfloat0 == floatprod0)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(((NF)(3.2000000000000000e+01) * (NF)((((NF)(resasfloat0) - (NF)(floatprod0)) > 0? (((NF)(resasfloat0) - (NF)(floatprod0))) : -(((NF)(resasfloat0) - (NF)(floatprod0)))))) <= (floatprod0 > 0? (floatprod0) : -(floatprod0)))) goto LA7;
		goto BeforeRet;
	}
	LA7: ;
	raiseOverflow();
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NI, nimParseBiggestFloat)(NimStringDesc* s0, NF* number0, NI start0) {
	NI result0;
	NI i0;
	NF sign0;
	NI kdigits0;
	NI fdigits0;
	NI exponent0;
	NU64 integer0;
	NU64 fraction0;
	NI fracexponent0;
	NI expsign0;
	NI firstdigit0;
	NIM_BOOL hassign0;
	NI realexponent0;
	NIM_BOOL expnegative0;
	NI absexponent0;
	TY_PGLh8drTnaWr3s1qUUSq2Q t0;
	NI ti0;
	NI maxlen0;
{	result0 = (NI)0;
	i0 = start0;
	sign0 = 1.0000000000000000e+00;
	kdigits0 = ((NI) 0);
	fdigits0 = ((NI) 0);
	exponent0 = (NI)0;
	integer0 = (NU64)0;
	fraction0 = (NU64)0;
	fracexponent0 = ((NI) 0);
	expsign0 = ((NI) 1);
	firstdigit0 = ((NI) -1);
	hassign0 = NIM_FALSE;
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = ((NU8)(s0->data[i0]) == (NU8)(43));
		if (LOC3) goto LA4;
		LOC3 = ((NU8)(s0->data[i0]) == (NU8)(45));
		LA4: ;
		if (!LOC3) goto LA5;
		hassign0 = NIM_TRUE;
		{
			if (!((NU8)(s0->data[i0]) == (NU8)(45))) goto LA9;
			sign0 = -1.0000000000000000e+00;
		}
		LA9: ;
		i0 += ((NI) 1);
	}
	LA5: ;
	{
		NIM_BOOL LOC13;
		LOC13 = (NIM_BOOL)0;
		LOC13 = ((NU8)(s0->data[i0]) == (NU8)(78));
		if (LOC13) goto LA14;
		LOC13 = ((NU8)(s0->data[i0]) == (NU8)(110));
		LA14: ;
		if (!LOC13) goto LA15;
		{
			NIM_BOOL LOC19;
			LOC19 = (NIM_BOOL)0;
			LOC19 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(65));
			if (LOC19) goto LA20;
			LOC19 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(97));
			LA20: ;
			if (!LOC19) goto LA21;
			{
				NIM_BOOL LOC25;
				LOC25 = (NIM_BOOL)0;
				LOC25 = ((NU8)(s0->data[(NI)(i0 + ((NI) 2))]) == (NU8)(78));
				if (LOC25) goto LA26;
				LOC25 = ((NU8)(s0->data[(NI)(i0 + ((NI) 2))]) == (NU8)(110));
				LA26: ;
				if (!LOC25) goto LA27;
				{
					if (!!((((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(97)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(122)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(65)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(90)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(48)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(57)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) == ((NU8)(95))))) goto LA31;
					(*number0) = NAN;
					result0 = (NI)((NI)(i0 + ((NI) 3)) - start0);
					goto BeforeRet;
				}
				LA31: ;
			}
			LA27: ;
		}
		LA21: ;
		result0 = ((NI) 0);
		goto BeforeRet;
	}
	LA15: ;
	{
		NIM_BOOL LOC35;
		LOC35 = (NIM_BOOL)0;
		LOC35 = ((NU8)(s0->data[i0]) == (NU8)(73));
		if (LOC35) goto LA36;
		LOC35 = ((NU8)(s0->data[i0]) == (NU8)(105));
		LA36: ;
		if (!LOC35) goto LA37;
		{
			NIM_BOOL LOC41;
			LOC41 = (NIM_BOOL)0;
			LOC41 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(78));
			if (LOC41) goto LA42;
			LOC41 = ((NU8)(s0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(110));
			LA42: ;
			if (!LOC41) goto LA43;
			{
				NIM_BOOL LOC47;
				LOC47 = (NIM_BOOL)0;
				LOC47 = ((NU8)(s0->data[(NI)(i0 + ((NI) 2))]) == (NU8)(70));
				if (LOC47) goto LA48;
				LOC47 = ((NU8)(s0->data[(NI)(i0 + ((NI) 2))]) == (NU8)(102));
				LA48: ;
				if (!LOC47) goto LA49;
				{
					if (!!((((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(97)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(122)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(65)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(90)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) >= ((NU8)(48)) && ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) <= ((NU8)(57)) || ((NU8)(s0->data[(NI)(i0 + ((NI) 3))])) == ((NU8)(95))))) goto LA53;
					(*number0) = ((NF)(INF) * (NF)(sign0));
					result0 = (NI)((NI)(i0 + ((NI) 3)) - start0);
					goto BeforeRet;
				}
				LA53: ;
			}
			LA49: ;
		}
		LA43: ;
		result0 = ((NI) 0);
		goto BeforeRet;
	}
	LA37: ;
	{
		if (!(((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)))) goto LA57;
		firstdigit0 = ((NI) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48))));
	}
	LA57: ;
	{
		while (1) {
			if (!(((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)))) goto LA60;
			kdigits0 += ((NI) 1);
			integer0 = (NU64)((NU64)((NU64)((NU64)(integer0) * (NU64)(10ULL))) + (NU64)(((NU64) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48))))));
			i0 += ((NI) 1);
			{
				while (1) {
					if (!((NU8)(s0->data[i0]) == (NU8)(95))) goto LA62;
					i0 += ((NI) 1);
				} LA62: ;
			}
		} LA60: ;
	}
	{
		if (!((NU8)(s0->data[i0]) == (NU8)(46))) goto LA65;
		i0 += ((NI) 1);
		{
			if (!(kdigits0 <= ((NI) 0))) goto LA69;
			{
				while (1) {
					if (!((NU8)(s0->data[i0]) == (NU8)(48))) goto LA72;
					fracexponent0 += ((NI) 1);
					i0 += ((NI) 1);
					{
						while (1) {
							if (!((NU8)(s0->data[i0]) == (NU8)(95))) goto LA74;
							i0 += ((NI) 1);
						} LA74: ;
					}
				} LA72: ;
			}
		}
		LA69: ;
		{
			NIM_BOOL LOC77;
			LOC77 = (NIM_BOOL)0;
			LOC77 = (firstdigit0 == ((NI) -1));
			if (!(LOC77)) goto LA78;
			LOC77 = (((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)));
			LA78: ;
			if (!LOC77) goto LA79;
			firstdigit0 = ((NI) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48))));
		}
		LA79: ;
		{
			while (1) {
				if (!(((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)))) goto LA82;
				fdigits0 += ((NI) 1);
				fracexponent0 += ((NI) 1);
				integer0 = (NU64)((NU64)((NU64)((NU64)(integer0) * (NU64)(10ULL))) + (NU64)(((NU64) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48))))));
				i0 += ((NI) 1);
				{
					while (1) {
						if (!((NU8)(s0->data[i0]) == (NU8)(95))) goto LA84;
						i0 += ((NI) 1);
					} LA84: ;
				}
			} LA82: ;
		}
	}
	LA65: ;
	{
		NIM_BOOL LOC87;
		NIM_BOOL LOC89;
		NIM_BOOL LOC91;
		LOC87 = (NIM_BOOL)0;
		LOC87 = ((NI)(kdigits0 + fdigits0) <= ((NI) 0));
		if (!(LOC87)) goto LA88;
		LOC89 = (NIM_BOOL)0;
		LOC89 = (i0 == start0);
		if (LOC89) goto LA90;
		LOC91 = (NIM_BOOL)0;
		LOC91 = (i0 == (NI)(start0 + ((NI) 1)));
		if (!(LOC91)) goto LA92;
		LOC91 = hassign0;
		LA92: ;
		LOC89 = LOC91;
		LA90: ;
		LOC87 = LOC89;
		LA88: ;
		if (!LOC87) goto LA93;
		result0 = ((NI) 0);
		goto BeforeRet;
	}
	LA93: ;
	{
		if (!(((NU8)(s0->data[i0])) == ((NU8)(101)) || ((NU8)(s0->data[i0])) == ((NU8)(69)))) goto LA97;
		i0 += ((NI) 1);
		{
			NIM_BOOL LOC101;
			LOC101 = (NIM_BOOL)0;
			LOC101 = ((NU8)(s0->data[i0]) == (NU8)(43));
			if (LOC101) goto LA102;
			LOC101 = ((NU8)(s0->data[i0]) == (NU8)(45));
			LA102: ;
			if (!LOC101) goto LA103;
			{
				if (!((NU8)(s0->data[i0]) == (NU8)(45))) goto LA107;
				expsign0 = ((NI) -1);
			}
			LA107: ;
			i0 += ((NI) 1);
		}
		LA103: ;
		{
			if (!!((((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57))))) goto LA111;
			result0 = ((NI) 0);
			goto BeforeRet;
		}
		LA111: ;
		{
			while (1) {
				if (!(((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)))) goto LA114;
				exponent0 = (NI)((NI)(exponent0 * ((NI) 10)) + ((NI) ((NI)(((NI) (((NU8)(s0->data[i0])))) - ((NI) 48)))));
				i0 += ((NI) 1);
				{
					while (1) {
						if (!((NU8)(s0->data[i0]) == (NU8)(95))) goto LA116;
						i0 += ((NI) 1);
					} LA116: ;
				}
			} LA114: ;
		}
	}
	LA97: ;
	realexponent0 = (NI)((NI)(expsign0 * exponent0) - fracexponent0);
	expnegative0 = (realexponent0 < ((NI) 0));
	absexponent0 = (realexponent0 > 0? (realexponent0) : -(realexponent0));
	{
		if (!(((NI) 999) < absexponent0)) goto LA119;
		{
			if (!expnegative0) goto LA123;
			(*number0) = ((NF)(0.0) * (NF)(sign0));
		}
		goto LA121;
		LA123: ;
		{
			(*number0) = ((NF)(INF) * (NF)(sign0));
		}
		LA121: ;
		result0 = (NI)(i0 - start0);
		goto BeforeRet;
	}
	LA119: ;
	{
		NIM_BOOL LOC128;
		NI slop0;
		LOC128 = (NIM_BOOL)0;
		LOC128 = ((NI)(kdigits0 + fdigits0) <= ((NI) 16));
		if (!(LOC128)) goto LA129;
		LOC128 = (firstdigit0 <= ((NI) 8));
		LA129: ;
		if (!LOC128) goto LA130;
		{
			if (!(absexponent0 <= ((NI) 22))) goto LA134;
			{
				if (!expnegative0) goto LA138;
				(*number0) = ((NF)(((NF)(sign0) * (NF)(((NF) (integer0))))) / (NF)(powtens_l8b44pimyaWe7sztIOF1Tw[(absexponent0)- 0]));
			}
			goto LA136;
			LA138: ;
			{
				(*number0) = ((NF)(((NF)(sign0) * (NF)(((NF) (integer0))))) * (NF)(powtens_l8b44pimyaWe7sztIOF1Tw[(absexponent0)- 0]));
			}
			LA136: ;
			result0 = (NI)(i0 - start0);
			goto BeforeRet;
		}
		LA134: ;
		slop0 = (NI)((NI)(((NI) 15) - kdigits0) - fdigits0);
		{
			NIM_BOOL LOC143;
			LOC143 = (NIM_BOOL)0;
			LOC143 = (absexponent0 <= (NI)(((NI) 22) + slop0));
			if (!(LOC143)) goto LA144;
			LOC143 = !(expnegative0);
			LA144: ;
			if (!LOC143) goto LA145;
			(*number0) = ((NF)(((NF)(((NF)(sign0) * (NF)(((NF) (integer0))))) * (NF)(powtens_l8b44pimyaWe7sztIOF1Tw[(slop0)- 0]))) * (NF)(powtens_l8b44pimyaWe7sztIOF1Tw[((NI)(absexponent0 - slop0))- 0]));
			result0 = (NI)(i0 - start0);
			goto BeforeRet;
		}
		LA145: ;
	}
	LA130: ;
	memset((void*)t0, 0, sizeof(t0));
	ti0 = ((NI) 0);
	maxlen0 = ((NI) 494);
	result0 = (NI)(i0 - start0);
	i0 = start0;
	{
		while (1) {
			if (!(((NU8)(s0->data[i0])) >= ((NU8)(48)) && ((NU8)(s0->data[i0])) <= ((NU8)(57)) || ((NU8)(s0->data[i0])) == ((NU8)(43)) || ((NU8)(s0->data[i0])) == ((NU8)(45)))) goto LA148;
			{
				if (!(ti0 < maxlen0)) goto LA151;
				t0[(ti0)- 0] = s0->data[i0];
				ti0 += ((NI) 1);
			}
			LA151: ;
			i0 += ((NI) 1);
			{
				while (1) {
					if (!(((NU8)(s0->data[i0])) == ((NU8)(46)) || ((NU8)(s0->data[i0])) == ((NU8)(95)))) goto LA154;
					i0 += ((NI) 1);
				} LA154: ;
			}
		} LA148: ;
	}
	t0[(ti0)- 0] = 69;
	ti0 += ((NI) 1);
	{
		if (!expnegative0) goto LA157;
		t0[(ti0)- 0] = 45;
	}
	goto LA155;
	LA157: ;
	{
		t0[(ti0)- 0] = 43;
	}
	LA155: ;
	ti0 += ((NI) 1);
	ti0 += ((NI) 3);
	t0[((NI)(ti0 - ((NI) 1)))- 0] = ((NIM_CHAR) ((NI)(((NI) 48) + ((NI) ((NI)(absexponent0 % ((NI) 10)))))));
	absexponent0 = (NI)(absexponent0 / ((NI) 10));
	t0[((NI)(ti0 - ((NI) 2)))- 0] = ((NIM_CHAR) ((NI)(((NI) 48) + ((NI) ((NI)(absexponent0 % ((NI) 10)))))));
	absexponent0 = (NI)(absexponent0 / ((NI) 10));
	t0[((NI)(ti0 - ((NI) 3)))- 0] = ((NIM_CHAR) ((NI)(((NI) 48) + ((NI) ((NI)(absexponent0 % ((NI) 10)))))));
	(*number0) = strtod(((NCSTRING) (t0)), NIM_NIL);
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI start_WPWyPKk58Cr5a6XFFviMjg, NI last0) {
	NimStringDesc* result0;
	NI start0;
	NI len0;
	result0 = (NimStringDesc*)0;
	start0 = ((start_WPWyPKk58Cr5a6XFFviMjg >= ((NI) 0)) ? start_WPWyPKk58Cr5a6XFFviMjg : ((NI) 0));
	len0 = (NI)((NI)(((last0 <= (NI)((*s0).Sup.len - ((NI) 1))) ? last0 : (NI)((*s0).Sup.len - ((NI) 1))) - start0) + ((NI) 1));
	{
		if (!(((NI) 0) < len0)) goto LA3;
		result0 = rawNewStringNoInit(len0);
		(*result0).Sup.len = len0;
		copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((*result0).data)), ((void*) ((&(*s0).data[(start0)- 0]))), ((NI) (len0)));
		(*result0).data[(len0)- 0] = 0;
	}
	goto LA1;
	LA3: ;
	{
		result0 = rawNewString(len0);
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s0, NI start0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = copyStrLast(s0, start0, (NI)((*s0).Sup.len - ((NI) 1)));
	return result0;
}

N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq0, NI elemsize0) {
	TGenericSeq* result0;
	result0 = (TGenericSeq*)0;
	result0 = seq0;
	{
		void* LOC5;
		if (!((NI)((*result0).reserved & ((NI) IL64(9223372036854775807))) <= (*result0).len)) goto LA3;
		(*result0).reserved = resize_bzF9a0JivP3Z4njqaxuLc5wsystem((NI)((*result0).reserved & ((NI) IL64(9223372036854775807))));
		LOC5 = (void*)0;
		LOC5 = nimrtl_growObj(((void*) (result0)), (NI)((NI)(elemsize0 * (*result0).reserved) + ((NI) 16)));
		result0 = ((TGenericSeq*) (LOC5));
	}
	LA3: ;
	return result0;
}
static N_NIMCALL(void, Marker_TY_TmgWlPUbRr7iGD2UE1cu6A)(void* p, NI op) {
	Assertionerror_8FC9arcap3s5ZtfMs75krtA* a;
	a = (Assertionerror_8FC9arcap3s5ZtfMs75krtA*)p;
	nimrtl_nimGCvisit((void*)(*a).Sup.parent, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.message, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.trace, op);
}

static N_INLINE(void, sysfatal_mWrNPcJugise9aqN0yGByGwsystem)(NimStringDesc* message0) {
	Assertionerror_8FC9arcap3s5ZtfMs75krtA* e0;
	NimStringDesc* LOC1;
	e0 = (Assertionerror_8FC9arcap3s5ZtfMs75krtA*)0;
	e0 = (Assertionerror_8FC9arcap3s5ZtfMs75krtA*) nimrtl_newObj((&NTI_TmgWlPUbRr7iGD2UE1cu6A), sizeof(Assertionerror_8FC9arcap3s5ZtfMs75krtA));
	(*e0).Sup.Sup.m_type = (&NTI_8FC9arcap3s5ZtfMs75krtA);
	LOC1 = (NimStringDesc*)0;
	LOC1 = (*e0).Sup.message; (*e0).Sup.message = nimrtl_copyStringRC1(message0);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	nimrtl_raiseException((Exception*)e0, "AssertionError");
}

N_NOINLINE(void, raiseassert_PpfSiTIeNpMAb9a5o6SglJw)(NimStringDesc* msg0) {
	sysfatal_mWrNPcJugise9aqN0yGByGwsystem(msg0);
}

N_NOINLINE(NIM_BOOL, isonstack_dJJW59cIgsBmT59aZrOM71Mg)(void* p0) {
	NIM_BOOL result0;
	void* volatile stacktop0;
	NI b0;
	NI a0;
	NI x0;
	NIM_BOOL LOC1;
	result0 = (NIM_BOOL)0;
	stacktop0 = (void*)0;
	stacktop0 = ((void*) ((&stacktop0)));
	b0 = ((NI) (gch_IcYaEuuWivYAS86vFMTS3Q.stackbottom));
	a0 = ((NI) (stacktop0));
	x0 = ((NI) (p0));
	LOC1 = (NIM_BOOL)0;
	LOC1 = ((NU64)(a0) <= (NU64)(x0));
	if (!(LOC1)) goto LA2;
	LOC1 = ((NU64)(x0) <= (NU64)(b0));
	LA2: ;
	result0 = LOC1;
	return result0;
}

N_NIMCALL(void, unsureAsgnRef)(void** dest0, void* src0) {
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = isonstack_dJJW59cIgsBmT59aZrOM71Mg(((void*) (dest0)));
		if (!!(LOC3)) goto LA4;
		{
			Cell_1zcF9cV8XIAtbN8h5HRUB8g* LOC10;
			if (!!((src0 == NIM_NIL))) goto LA8;
			LOC10 = (Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
			LOC10 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(src0);
			incref_9cAA5YuQAAC3MVbnGeV86swsystem(LOC10);
		}
		LA8: ;
		{
			Cell_1zcF9cV8XIAtbN8h5HRUB8g* LOC15;
			if (!((NU64)(((NI) 4096)) <= (NU64)(((NI) ((*dest0)))))) goto LA13;
			LOC15 = (Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
			LOC15 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem((*dest0));
			decref_MV4BBk6J1qu70IbBxwEn4wsystem(LOC15);
		}
		LA13: ;
	}
	goto LA1;
	LA4: ;
	{
	}
	LA1: ;
	(*dest0) = src0;
}
static N_NIMCALL(void, Marker_TY_yCEN9anxCD6mzBxGjuaRBdg)(void* p, NI op) {
	Valueerror_Gi06FkNeykJn7mrqRZYrkA* a;
	a = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)p;
	nimrtl_nimGCvisit((void*)(*a).Sup.parent, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.message, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.trace, op);
}

N_NIMCALL(void, genericReset)(void* dest0, TNimType* mt0) {
	NI d0;
	d0 = ((NI) (dest0));
	switch ((*mt0).kind) {
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 28):
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 22):
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 24):
	{
		unsureAsgnRef(((void**) (dest0)), NIM_NIL);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 18):
	{
		genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw(dest0, (*mt0).node);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 17):
	{
		TNimType** pint0;
		genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw(dest0, (*mt0).node);
		pint0 = ((TNimType**) (dest0));
		(*pint0) = NIM_NIL;
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 16):
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 4):
	{
		{
			NI i_qaFcGopYeH9cOZpINBxnz5w;
			NI HEX3Atmp_ORTUb9bkWXT9bMpgJ33i4w0w;
			NI res_wgf77gg7tWlFJCoTaIGsYg;
			i_qaFcGopYeH9cOZpINBxnz5w = (NI)0;
			HEX3Atmp_ORTUb9bkWXT9bMpgJ33i4w0w = (NI)0;
			HEX3Atmp_ORTUb9bkWXT9bMpgJ33i4w0w = (NI)((NI)((*mt0).size / (*(*mt0).base).size) - ((NI) 1));
			res_wgf77gg7tWlFJCoTaIGsYg = ((NI) 0);
			{
				while (1) {
					if (!(res_wgf77gg7tWlFJCoTaIGsYg <= HEX3Atmp_ORTUb9bkWXT9bMpgJ33i4w0w)) goto LA7;
					i_qaFcGopYeH9cOZpINBxnz5w = res_wgf77gg7tWlFJCoTaIGsYg;
					genericReset(((void*) ((NI)((NU64)(d0) + (NU64)((NI)((NU64)(i_qaFcGopYeH9cOZpINBxnz5w) * (NU64)((*(*mt0).base).size)))))), (*mt0).base);
					res_wgf77gg7tWlFJCoTaIGsYg += ((NI) 1);
				} LA7: ;
			}
		}
	}
	break;
	default:
	{
		zeromem_t0o5XqKanO5QJfXMGEzp2Asystem(dest0, ((NI) ((*mt0).size)));
	}
	break;
	}
}

N_NIMCALL(void, genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw)(void* dest0, TNimNode* n0) {
	NI d0;
	d0 = ((NI) (dest0));
	switch ((*n0).kind) {
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 0):
	{
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 1):
	{
		genericReset(((void*) ((NI)((NU64)(d0) + (NU64)((*n0).offset)))), (*n0).typ);
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 2):
	{
		{
			NI i_d3XJOFCd9ax9cVW2YQEUiJkw;
			NI HEX3Atmp_B6sA0bGwW3Czaz9bYJ7Le3g;
			NI res_9aPatT7RGnMzJ10mzIuQvSA;
			i_d3XJOFCd9ax9cVW2YQEUiJkw = (NI)0;
			HEX3Atmp_B6sA0bGwW3Czaz9bYJ7Le3g = (NI)0;
			HEX3Atmp_B6sA0bGwW3Czaz9bYJ7Le3g = (NI)((*n0).len - ((NI) 1));
			res_9aPatT7RGnMzJ10mzIuQvSA = ((NI) 0);
			{
				while (1) {
					if (!(res_9aPatT7RGnMzJ10mzIuQvSA <= HEX3Atmp_B6sA0bGwW3Czaz9bYJ7Le3g)) goto LA6;
					i_d3XJOFCd9ax9cVW2YQEUiJkw = res_9aPatT7RGnMzJ10mzIuQvSA;
					genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw(dest0, (*n0).sons[(i_d3XJOFCd9ax9cVW2YQEUiJkw)- 0]);
					res_9aPatT7RGnMzJ10mzIuQvSA += ((NI) 1);
				} LA6: ;
			}
		}
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 3):
	{
		TNimNode* m0;
		m0 = selectbranch_MvIsyjoRI1g7VY9cXrLB1dQ(dest0, n0);
		{
			if (!!((m0 == NIM_NIL))) goto LA10;
			genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw(dest0, m0);
		}
		LA10: ;
		zeromem_t0o5XqKanO5QJfXMGEzp2Asystem(((void*) ((NI)((NU64)(d0) + (NU64)((*n0).offset)))), ((NI) ((*(*n0).typ).size)));
	}
	break;
	}
}

N_NIMCALL(void, genericassignaux_ulsQvfENf9buS9atYunbm7gA)(void* dest0, void* src0, TNimNode* n0, NIM_BOOL shallow0) {
	NI d0;
	NI s0;
	d0 = ((NI) (dest0));
	s0 = ((NI) (src0));
	switch ((*n0).kind) {
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 1):
	{
		genericassignaux_T3cq9aUp9bgGOBuyUSWGriTA(((void*) ((NI)((NU64)(d0) + (NU64)((*n0).offset)))), ((void*) ((NI)((NU64)(s0) + (NU64)((*n0).offset)))), (*n0).typ, shallow0);
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 2):
	{
		{
			NI i_b7RBYMpWHoyeYe0Xf0pa6A_2;
			NI HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g_2;
			NI res_53oXP0vPfHtXag1OqwbU9cg_2;
			i_b7RBYMpWHoyeYe0Xf0pa6A_2 = (NI)0;
			HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g_2 = (NI)0;
			HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g_2 = (NI)((*n0).len - ((NI) 1));
			res_53oXP0vPfHtXag1OqwbU9cg_2 = ((NI) 0);
			{
				while (1) {
					if (!(res_53oXP0vPfHtXag1OqwbU9cg_2 <= HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g_2)) goto LA5;
					i_b7RBYMpWHoyeYe0Xf0pa6A_2 = res_53oXP0vPfHtXag1OqwbU9cg_2;
					genericassignaux_ulsQvfENf9buS9atYunbm7gA(dest0, src0, (*n0).sons[(i_b7RBYMpWHoyeYe0Xf0pa6A_2)- 0], shallow0);
					res_53oXP0vPfHtXag1OqwbU9cg_2 += ((NI) 1);
				} LA5: ;
			}
		}
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 3):
	{
		TNimNode* dd0;
		TNimNode* m0;
		dd0 = selectbranch_MvIsyjoRI1g7VY9cXrLB1dQ(dest0, n0);
		m0 = selectbranch_MvIsyjoRI1g7VY9cXrLB1dQ(src0, n0);
		{
			NIM_BOOL LOC9;
			LOC9 = (NIM_BOOL)0;
			LOC9 = !((m0 == dd0));
			if (!(LOC9)) goto LA10;
			LOC9 = !((dd0 == NIM_NIL));
			LA10: ;
			if (!LOC9) goto LA11;
			genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw(dest0, dd0);
		}
		LA11: ;
		copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) ((NI)((NU64)(d0) + (NU64)((*n0).offset)))), ((void*) ((NI)((NU64)(s0) + (NU64)((*n0).offset)))), ((NI) ((*(*n0).typ).size)));
		{
			if (!!((m0 == NIM_NIL))) goto LA15;
			genericassignaux_ulsQvfENf9buS9atYunbm7gA(dest0, src0, m0, shallow0);
		}
		LA15: ;
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 0):
	{
	}
	break;
	}
}

N_NIMCALL(void, genericassignaux_T3cq9aUp9bgGOBuyUSWGriTA)(void* dest0, void* src0, TNimType* mt0, NIM_BOOL shallow0) {
	NI d0;
	NI s0;
{	d0 = ((NI) (dest0));
	s0 = ((NI) (src0));
	switch ((*mt0).kind) {
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 28):
	{
		void** x0;
		void* s20;
		x0 = ((void**) (dest0));
		s20 = (*((void**) (s0)));
		{
			NIM_BOOL LOC4;
			NIM_BOOL LOC5;
			LOC4 = (NIM_BOOL)0;
			LOC5 = (NIM_BOOL)0;
			LOC5 = (s20 == NIM_NIL);
			if (LOC5) goto LA6;
			LOC5 = shallow0;
			LA6: ;
			LOC4 = LOC5;
			if (LOC4) goto LA7;
			LOC4 = !(((NI)((*((TGenericSeq*) (s20))).reserved & ((NI) (IL64(-9223372036854775807) - IL64(1)))) == ((NI) 0)));
			LA7: ;
			if (!LOC4) goto LA8;
			unsureAsgnRef(x0, s20);
		}
		goto LA2;
		LA8: ;
		{
			NimStringDesc* LOC11;
			LOC11 = (NimStringDesc*)0;
			LOC11 = nimrtl_copyString(((NimStringDesc*) (s20)));
			unsureAsgnRef(x0, ((void*) (LOC11)));
		}
		LA2: ;
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 24):
	{
		void* s20;
		TGenericSeq* seq0;
		void** x0;
		void* LOC21;
		NI dst0;
		s20 = (*((void**) (src0)));
		seq0 = ((TGenericSeq*) (s20));
		x0 = ((void**) (dest0));
		{
			NIM_BOOL LOC15;
			NIM_BOOL LOC16;
			LOC15 = (NIM_BOOL)0;
			LOC16 = (NIM_BOOL)0;
			LOC16 = (s20 == NIM_NIL);
			if (LOC16) goto LA17;
			LOC16 = shallow0;
			LA17: ;
			LOC15 = LOC16;
			if (LOC15) goto LA18;
			LOC15 = !(((NI)((*seq0).reserved & ((NI) (IL64(-9223372036854775807) - IL64(1)))) == ((NI) 0)));
			LA18: ;
			if (!LOC15) goto LA19;
			unsureAsgnRef(x0, s20);
			goto BeforeRet;
		}
		LA19: ;
		LOC21 = (void*)0;
		LOC21 = nimrtl_newSeq(mt0, (*seq0).len);
		unsureAsgnRef(x0, LOC21);
		dst0 = ((NI) ((*((void**) (dest0)))));
		{
			NI i_b7RBYMpWHoyeYe0Xf0pa6A;
			NI HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g;
			NI res_53oXP0vPfHtXag1OqwbU9cg;
			i_b7RBYMpWHoyeYe0Xf0pa6A = (NI)0;
			HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g = (NI)0;
			HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g = (NI)((*seq0).len - ((NI) 1));
			res_53oXP0vPfHtXag1OqwbU9cg = ((NI) 0);
			{
				while (1) {
					if (!(res_53oXP0vPfHtXag1OqwbU9cg <= HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g)) goto LA24;
					i_b7RBYMpWHoyeYe0Xf0pa6A = res_53oXP0vPfHtXag1OqwbU9cg;
					genericassignaux_T3cq9aUp9bgGOBuyUSWGriTA(((void*) ((NI)((NU64)((NI)((NU64)(dst0) + (NU64)((NI)((NU64)(i_b7RBYMpWHoyeYe0Xf0pa6A) * (NU64)((*(*mt0).base).size))))) + (NU64)(((NI) 16))))), ((void*) ((NI)((NU64)((NI)((NU64)(((NI) (s20))) + (NU64)((NI)((NU64)(i_b7RBYMpWHoyeYe0Xf0pa6A) * (NU64)((*(*mt0).base).size))))) + (NU64)(((NI) 16))))), (*mt0).base, shallow0);
					res_53oXP0vPfHtXag1OqwbU9cg += ((NI) 1);
				} LA24: ;
			}
		}
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 17):
	{
		TNimType** pint0;
		{
			if (!!(((*mt0).base == NIM_NIL))) goto LA28;
			genericassignaux_T3cq9aUp9bgGOBuyUSWGriTA(dest0, src0, (*mt0).base, shallow0);
		}
		LA28: ;
		genericassignaux_ulsQvfENf9buS9atYunbm7gA(dest0, src0, (*mt0).node, shallow0);
		pint0 = ((TNimType**) (dest0));
		(*pint0) = mt0;
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 18):
	{
		genericassignaux_ulsQvfENf9buS9atYunbm7gA(dest0, src0, (*mt0).node, shallow0);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 16):
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 4):
	{
		{
			NI i_b7RBYMpWHoyeYe0Xf0pa6A_3;
			NI HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g_3;
			NI res_53oXP0vPfHtXag1OqwbU9cg_3;
			i_b7RBYMpWHoyeYe0Xf0pa6A_3 = (NI)0;
			HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g_3 = (NI)0;
			HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g_3 = (NI)((NI)((*mt0).size / (*(*mt0).base).size) - ((NI) 1));
			res_53oXP0vPfHtXag1OqwbU9cg_3 = ((NI) 0);
			{
				while (1) {
					if (!(res_53oXP0vPfHtXag1OqwbU9cg_3 <= HEX3Atmp_lBjhPeIRFLWoD5YINhpa0g_3)) goto LA34;
					i_b7RBYMpWHoyeYe0Xf0pa6A_3 = res_53oXP0vPfHtXag1OqwbU9cg_3;
					genericassignaux_T3cq9aUp9bgGOBuyUSWGriTA(((void*) ((NI)((NU64)(d0) + (NU64)((NI)((NU64)(i_b7RBYMpWHoyeYe0Xf0pa6A_3) * (NU64)((*(*mt0).base).size)))))), ((void*) ((NI)((NU64)(s0) + (NU64)((NI)((NU64)(i_b7RBYMpWHoyeYe0Xf0pa6A_3) * (NU64)((*(*mt0).base).size)))))), (*mt0).base, shallow0);
					res_53oXP0vPfHtXag1OqwbU9cg_3 += ((NI) 1);
				} LA34: ;
			}
		}
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 22):
	{
		unsureAsgnRef(((void**) (dest0)), (*((void**) (s0))));
	}
	break;
	default:
	{
		copymem_E1xtACub5WcDa3vbrIXbwgsystem(dest0, src0, ((NI) ((*mt0).size)));
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(void, genericShallowAssign)(void* dest0, void* src0, TNimType* mt0) {
	genericassignaux_T3cq9aUp9bgGOBuyUSWGriTA(dest0, src0, mt0, NIM_TRUE);
}

static N_INLINE(void, sysfatal_i2L89a3lg6SlU5J9amD3c3ewsystem)(NimStringDesc* message0) {
	Valueerror_Gi06FkNeykJn7mrqRZYrkA* e0;
	NimStringDesc* LOC1;
	e0 = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*)0;
	e0 = (Valueerror_Gi06FkNeykJn7mrqRZYrkA*) nimrtl_newObj((&NTI_yCEN9anxCD6mzBxGjuaRBdg), sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA));
	(*e0).Sup.Sup.m_type = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
	LOC1 = (NimStringDesc*)0;
	LOC1 = (*e0).Sup.message; (*e0).Sup.message = nimrtl_copyStringRC1(message0);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	nimrtl_raiseException((Exception*)e0, "ValueError");
}

N_NOINLINE(void, chckNil)(void* p0) {
	{
		if (!(p0 == NIM_NIL)) goto LA3;
		sysfatal_i2L89a3lg6SlU5J9amD3c3ewsystem(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_47));
	}
	LA3: ;
}

N_NIMCALL(NI, cmp_xEnKsp9cfvO7Do9cTYXo8eJw)(NimStringDesc* x0, NimStringDesc* y0) {
	NI result0;
	int LOC1;
	result0 = (NI)0;
	LOC1 = (int)0;
	LOC1 = strcmp(x0->data, y0->data);
	result0 = ((NI) (LOC1));
	return result0;
}
static N_NIMCALL(void, Marker_TY_Qx9aKy4vZ9bVz9bnG9brQcRHGA)(void* p, NI op) {
	Oserror_3XwRQvmzCEOC4QnT706q1g* a;
	a = (Oserror_3XwRQvmzCEOC4QnT706q1g*)p;
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.trace, op);
}

N_NIMCALL(int, getfilehandle_bZ9c2yojtXoDTUpfyl8h8Rg)(FILE* f0) {
	int result0;
	result0 = (int)0;
	result0 = fileno(f0);
	return result0;
}

N_NIMCALL(NIM_BOOL, Sisdir_d3VjrxKEcTiZFt3rBmmjcA)(mode_t m0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = ((NI32)(m0 & ((NI32) 61440)) == ((NI32) 16384));
	return result0;
}

N_NIMCALL(void, close_BWnr8V7RERYno9bIdPmw8Hw)(FILE* f0) {
	int LOC1;
	LOC1 = (int)0;
	LOC1 = fclose(f0);
}

N_NIMCALL(NIM_BOOL, open_sEp0GH2306oGo9bqBpj5oTQ)(FILE** f0, NimStringDesc* filename0, Filemode_fVUBHvW79bXUw1j55Oo9avSQ mode0, NI bufsize0) {
	NIM_BOOL result0;
	void* p0;
{	result0 = (NIM_BOOL)0;
	p0 = fopen(filename0->data, Formatopen_129cS4U5eK4wWqE9bNeKN1Aw[(mode0)- 0]->data);
	{
		FILE* f20;
		struct stat res0;
		if (!!((p0 == NIM_NIL))) goto LA3;
		f20 = ((FILE*) (p0));
		memset((void*)(&res0), 0, sizeof(res0));
		{
			NIM_BOOL LOC7;
			int LOC8;
			int LOC9;
			LOC7 = (NIM_BOOL)0;
			LOC8 = (int)0;
			LOC8 = getfilehandle_bZ9c2yojtXoDTUpfyl8h8Rg(f20);
			LOC9 = (int)0;
			LOC9 = fstat(LOC8, (&res0));
			LOC7 = (((NI32) 0) <= LOC9);
			if (!(LOC7)) goto LA10;
			LOC7 = Sisdir_d3VjrxKEcTiZFt3rBmmjcA(res0.st_mode);
			LA10: ;
			if (!LOC7) goto LA11;
			close_BWnr8V7RERYno9bIdPmw8Hw(f20);
			result0 = NIM_FALSE;
			goto BeforeRet;
		}
		LA11: ;
		result0 = NIM_TRUE;
		(*f0) = ((FILE*) (p0));
		{
			NIM_BOOL LOC15;
			int LOC19;
			LOC15 = (NIM_BOOL)0;
			LOC15 = (((NI) 0) < bufsize0);
			if (!(LOC15)) goto LA16;
			LOC15 = (bufsize0 <= ((NI) 2147483647));
			LA16: ;
			if (!LOC15) goto LA17;
			LOC19 = (int)0;
			LOC19 = setvbuf((*f0), NIM_NIL, _IOFBF, ((size_t) (((int) (bufsize0)))));
		}
		goto LA13;
		LA17: ;
		{
			int LOC23;
			if (!(bufsize0 == ((NI) 0))) goto LA21;
			LOC23 = (int)0;
			LOC23 = setvbuf((*f0), NIM_NIL, _IONBF, ((NI) 0));
		}
		goto LA13;
		LA21: ;
		LA13: ;
	}
	LA3: ;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NI, readbuffer_1qjbrvfnPD4PaIieHVDvhw)(FILE* f0, void* buffer0, NI len0) {
	NI result0;
	result0 = (NI)0;
	result0 = fread(buffer0, ((NI) 1), ((size_t) (len0)), f0);
	return result0;
}

N_NIMCALL(NI, writebuffer_1qjbrvfnPD4PaIieHVDvhw_2)(FILE* f0, void* buffer0, NI len0) {
	NI result0;
	int LOC1;
	result0 = (NI)0;
	LOC1 = (int)0;
	LOC1 = fwrite(buffer0, ((NI) 1), ((size_t) (len0)), f0);
	result0 = ((NI) (LOC1));
	return result0;
}

N_NIMCALL(void, flushfile_BWnr8V7RERYno9bIdPmw8Hw_2)(FILE* f0) {
	int LOC1;
	LOC1 = (int)0;
	LOC1 = fflush(f0);
}
static N_NIMCALL(void, Marker_TY_HX2M9cQhE3jaovp9aYJDdslA)(void* p, NI op) {
	Ioerror_9czoZw3pzPyrBmb5zTHY1OQ* a;
	a = (Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*)p;
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.trace, op);
}

static N_INLINE(void, sysfatal_orK8PicRB9bj8BG69bF8HQbwsystem)(NimStringDesc* message0) {
	Ioerror_9czoZw3pzPyrBmb5zTHY1OQ* e0;
	NimStringDesc* LOC1;
	e0 = (Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*)0;
	e0 = (Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*) nimrtl_newObj((&NTI_HX2M9cQhE3jaovp9aYJDdslA), sizeof(Ioerror_9czoZw3pzPyrBmb5zTHY1OQ));
	(*e0).Sup.Sup.Sup.m_type = (&NTI_9czoZw3pzPyrBmb5zTHY1OQ);
	LOC1 = (NimStringDesc*)0;
	LOC1 = (*e0).Sup.Sup.message; (*e0).Sup.Sup.message = nimrtl_copyStringRC1(message0);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	nimrtl_raiseException((Exception*)e0, "IOError");
}

N_NOINLINE(void, raiseeio_PpfSiTIeNpMAb9a5o6SglJw_2)(NimStringDesc* msg0) {
	sysfatal_orK8PicRB9bj8BG69bF8HQbwsystem(msg0);
}

N_NIMCALL(NI64, getfilepos_XePgC9ccBXCgb9bEHXZpnMqA_2)(FILE* f0) {
	NI64 result0;
	long LOC1;
	result0 = (NI64)0;
	LOC1 = (long)0;
	LOC1 = ftell(f0);
	result0 = ((NI64) (LOC1));
	{
		if (!(result0 < IL64(0))) goto LA4;
		raiseeio_PpfSiTIeNpMAb9a5o6SglJw_2(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_53));
	}
	LA4: ;
	return result0;
}

N_NIMCALL(void, setfilepos_YAngY19cHH2nZ9bqhMgAHz8Q)(FILE* f0, NI64 pos0, Fileseekpos_I9aQjuvWxs8BspGbxwsngWw relativeto0) {
	{
		int LOC3;
		LOC3 = (int)0;
		LOC3 = fseek(f0, ((long) (pos0)), ((int) (relativeto0)));
		if (!!((LOC3 == ((NI32) 0)))) goto LA4;
		raiseeio_PpfSiTIeNpMAb9a5o6SglJw_2(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_54));
	}
	LA4: ;
}

N_NIMCALL(NI64, getfilesize_XePgC9ccBXCgb9bEHXZpnMqA)(FILE* f0) {
	NI64 result0;
	NI64 oldpos0;
	int LOC1;
	result0 = (NI64)0;
	oldpos0 = getfilepos_XePgC9ccBXCgb9bEHXZpnMqA_2(f0);
	LOC1 = (int)0;
	LOC1 = fseek(f0, ((NI) 0), ((int) 2));
	result0 = getfilepos_XePgC9ccBXCgb9bEHXZpnMqA_2(f0);
	setfilepos_YAngY19cHH2nZ9bqhMgAHz8Q(f0, oldpos0, ((Fileseekpos_I9aQjuvWxs8BspGbxwsngWw) 0));
	return result0;
}
static N_NIMCALL(void, Marker_TY_axqhRnwd09cVJkRcojfw6mA)(void* p, NI op) {
	Keyerror_ifYAhUumNzWR9c9cN9amyJLtg* a;
	a = (Keyerror_ifYAhUumNzWR9c9cN9amyJLtg*)p;
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimrtl_nimGCvisit((void*)(*a).Sup.Sup.trace, op);
}

N_NIMCALL(NI, countBits32)(NI32 n0) {
	NI result0;
	NI32 v0;
	result0 = (NI)0;
	v0 = n0;
	v0 = (NI32)((NU32)(v0) - (NU32)((NI32)((NI32)((NU32)(v0) >> (NU32)(((NI32) 1))) & ((NI32) 1431655765))));
	v0 = (NI32)((NU32)((NI32)(v0 & ((NI32) 858993459))) + (NU32)((NI32)((NI32)((NU32)(v0) >> (NU32)(((NI32) 2))) & ((NI32) 858993459))));
	result0 = ((NI) ((NI32)((NU32)((NI32)((NU32)((NI32)((NI32)((NU32)(v0) + (NU32)((NI32)((NU32)(v0) >> (NU32)(((NI32) 4))))) & ((NI32) 252645135))) * (NU32)(((NI32) 16843009)))) >> (NU32)(((NI32) 24)))));
	return result0;
}

N_NIMCALL(NI, cardSet)(TY_S8ib5N31oJbAkqOZTlNg5Q s0, NI len0) {
	NI result0;
	result0 = (NI)0;
	result0 = ((NI) 0);
	{
		NI i_INqcrH8q4frwiyouSuvrFw;
		NI HEX3Atmp_ddFyX4ZpuMrASbfVStIk9cA;
		NI res_vnUNL1ywdfCCqz0M9bgtq7g;
		i_INqcrH8q4frwiyouSuvrFw = (NI)0;
		HEX3Atmp_ddFyX4ZpuMrASbfVStIk9cA = (NI)0;
		HEX3Atmp_ddFyX4ZpuMrASbfVStIk9cA = (NI)(len0 - ((NI) 1));
		res_vnUNL1ywdfCCqz0M9bgtq7g = ((NI) 0);
		{
			while (1) {
				NI LOC4;
				if (!(res_vnUNL1ywdfCCqz0M9bgtq7g <= HEX3Atmp_ddFyX4ZpuMrASbfVStIk9cA)) goto LA3;
				i_INqcrH8q4frwiyouSuvrFw = res_vnUNL1ywdfCCqz0M9bgtq7g;
				LOC4 = (NI)0;
				LOC4 = countBits32(((NI32) (s0[(i_INqcrH8q4frwiyouSuvrFw)- 0])));
				result0 += LOC4;
				res_vnUNL1ywdfCCqz0M9bgtq7g += ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_NIMCALL(NI, rawfilesize_jO6UN73ASx5jqerEr5FqZg)(FILE* file0) {
	NI result0;
	long oldpos0;
	int LOC1;
	int LOC2;
	result0 = (NI)0;
	oldpos0 = ftell(file0);
	LOC1 = (int)0;
	LOC1 = fseek(file0, ((NI) 0), ((int) 2));
	result0 = ftell(file0);
	LOC2 = (int)0;
	LOC2 = fseek(file0, oldpos0, ((int) 0));
	return result0;
}

N_NIMCALL(NIM_BOOL, endoffile_OpxMRqWNQzmofyVQsNQqVA)(FILE* f0) {
	NIM_BOOL result0;
	int c0;
	int LOC1;
{	result0 = (NIM_BOOL)0;
	c0 = fgetc(f0);
	LOC1 = (int)0;
	LOC1 = ungetc(c0, f0);
	result0 = (c0 < ((NI32) 0));
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, readallbuffer_QygGtYi2d8AILktDeUIkvQ)(FILE* file0) {
	NimStringDesc* result0;
	NimStringDesc* buffer0;
	result0 = (NimStringDesc*)0;
	result0 = nimrtl_copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_23));
	buffer0 = mnewString(((NI) 4000));
	{
		while (1) {
			NI bytesread0;
			bytesread0 = readbuffer_1qjbrvfnPD4PaIieHVDvhw(file0, ((void*) ((&buffer0->data[((NI) 0)]))), ((NI) 4000));
			{
				if (!(bytesread0 == ((NI) 4000))) goto LA5;
				result0 = nimrtl_resizeString(result0, buffer0->Sup.len + 0);
appendString(result0, buffer0);
			}
			goto LA3;
			LA5: ;
			{
				buffer0 = nimrtl_setLengthStr(buffer0, ((NI) (bytesread0)));
				result0 = nimrtl_resizeString(result0, buffer0->Sup.len + 0);
appendString(result0, buffer0);
				goto LA1;
			}
			LA3: ;
		}
	} LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, readallfile_nEoG9c9aoJvOPVkq2dsFRb5Q)(FILE* file0, NI len0) {
	NimStringDesc* result0;
	NI bytes0;
	result0 = (NimStringDesc*)0;
	result0 = mnewString(((NI) (len0)));
	bytes0 = readbuffer_1qjbrvfnPD4PaIieHVDvhw(file0, ((void*) ((&result0->data[((NI) 0)]))), ((NI) (len0)));
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = endoffile_OpxMRqWNQzmofyVQsNQqVA(file0);
		if (!LOC3) goto LA4;
		{
			if (!(bytes0 < len0)) goto LA8;
			result0 = nimrtl_setLengthStr(result0, ((NI) (bytes0)));
		}
		LA8: ;
	}
	goto LA1;
	LA4: ;
	{
		int LOC11;
		LOC11 = (int)0;
		LOC11 = ferror(file0);
		if (!!((LOC11 == ((NI32) 0)))) goto LA12;
		raiseeio_PpfSiTIeNpMAb9a5o6SglJw_2(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_56));
	}
	goto LA1;
	LA12: ;
	{
		NimStringDesc* LOC15;
		LOC15 = (NimStringDesc*)0;
		LOC15 = readallbuffer_QygGtYi2d8AILktDeUIkvQ(file0);
		result0 = nimrtl_resizeString(result0, LOC15->Sup.len + 0);
appendString(result0, LOC15);
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, readall_y7iEIBoIrYlvsLCqA1SrwQ)(FILE* file0) {
	NimStringDesc* result0;
	NI len0;
	result0 = (NimStringDesc*)0;
	{
		if (!!((file0 == stdin))) goto LA3;
		len0 = rawfilesize_jO6UN73ASx5jqerEr5FqZg(file0);
	}
	goto LA1;
	LA3: ;
	{
		len0 = ((NI) -1);
	}
	LA1: ;
	{
		if (!(((NI) 0) < len0)) goto LA8;
		result0 = readallfile_nEoG9c9aoJvOPVkq2dsFRb5Q(file0, len0);
	}
	goto LA6;
	LA8: ;
	{
		result0 = readallbuffer_QygGtYi2d8AILktDeUIkvQ(file0);
	}
	LA6: ;
	return result0;
}

static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0) {
	{
		Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
		if (!!((src0 == NIM_NIL))) goto LA3;
		c0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(src0);
		(*c0).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
		if (!!(((*dest0) == NIM_NIL))) goto LA7;
		c0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem((*dest0));
		{
			(*c0).refcount -= ((NI) 8);
			if (!((NU64)((*c0).refcount) < (NU64)(((NI) 8)))) goto LA11;
			nimrtl_rtlAddZCT(c0);
		}
		LA11: ;
	}
	LA7: ;
	(*dest0) = src0;
}

static N_INLINE(void, sysfatal_p4l3kdztdOPD3nsQRAEDqwsystem)(NimStringDesc* message0, NimStringDesc* arg0) {
	Ioerror_9czoZw3pzPyrBmb5zTHY1OQ* e0;
	NimStringDesc* LOC1;
	e0 = (Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*)0;
	e0 = (Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*) nimrtl_newObj((&NTI_HX2M9cQhE3jaovp9aYJDdslA), sizeof(Ioerror_9czoZw3pzPyrBmb5zTHY1OQ));
	(*e0).Sup.Sup.Sup.m_type = (&NTI_9czoZw3pzPyrBmb5zTHY1OQ);
	LOC1 = (NimStringDesc*)0;
	LOC1 = rawNewString(message0->Sup.len + arg0->Sup.len + 0);
appendString(LOC1, message0);
appendString(LOC1, arg0);
	asgnRefNoCycle((void**) (&(*e0).Sup.Sup.message), LOC1);
	nimrtl_raiseException((Exception*)e0, "IOError");
}

N_NIMCALL(NimStringDesc*, readfile_T9cm5LIRX2tKEH9aREBZ8A0w)(NimStringDesc* filename0) {
	NimStringDesc* volatile result0;
	FILE* f0;
	result0 = (NimStringDesc*)0;
	f0 = (FILE*)0;
	{
		NIM_BOOL LOC3;
		TSafePoint T_Q5wkpxktOdTGvlSRo9bzt9aw_55;
		LOC3 = (NIM_BOOL)0;
		LOC3 = open_sEp0GH2306oGo9bqBpj5oTQ(&f0, filename0, ((Filemode_fVUBHvW79bXUw1j55Oo9avSQ) 0), ((NI) -1));
		if (!LOC3) goto LA4;
		nimrtl_pushSafePoint(&T_Q5wkpxktOdTGvlSRo9bzt9aw_55);
		T_Q5wkpxktOdTGvlSRo9bzt9aw_55.status = setjmp(T_Q5wkpxktOdTGvlSRo9bzt9aw_55.context);
		if (T_Q5wkpxktOdTGvlSRo9bzt9aw_55.status == 0) {
			result0 = readall_y7iEIBoIrYlvsLCqA1SrwQ(f0);
			nimrtl_popSafePoint();
		}
		else {
			nimrtl_popSafePoint();
		}
		{
			close_BWnr8V7RERYno9bIdPmw8Hw(f0);
		}
		if (T_Q5wkpxktOdTGvlSRo9bzt9aw_55.status != 0) nimrtl_reraiseException();
	}
	goto LA1;
	LA4: ;
	{
		sysfatal_p4l3kdztdOPD3nsQRAEDqwsystem(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_57), filename0);
	}
	LA1: ;
	return result0;
}

N_NIMCALL(void, write_c4mGyJBvK73pdM22jiweKQ)(FILE* f0, NimStringDesc* s0) {
	{
		NI LOC3;
		LOC3 = (NI)0;
		LOC3 = writebuffer_1qjbrvfnPD4PaIieHVDvhw_2(f0, ((void*) (s0->data)), ((NI) ((s0 ? s0->Sup.len : 0))));
		if (!!((LOC3 == (s0 ? s0->Sup.len : 0)))) goto LA4;
		raiseeio_PpfSiTIeNpMAb9a5o6SglJw_2(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_59));
	}
	LA4: ;
}

N_NIMCALL(void, writefile_c1B29b0ZdDRPHc27YaKqwaA)(NimStringDesc* filename0, NimStringDesc* content0) {
	FILE* f0;
	f0 = (FILE*)0;
	{
		NIM_BOOL LOC3;
		TSafePoint T_Q5wkpxktOdTGvlSRo9bzt9aw_58;
		LOC3 = (NIM_BOOL)0;
		LOC3 = open_sEp0GH2306oGo9bqBpj5oTQ(&f0, filename0, ((Filemode_fVUBHvW79bXUw1j55Oo9avSQ) 1), ((NI) -1));
		if (!LOC3) goto LA4;
		nimrtl_pushSafePoint(&T_Q5wkpxktOdTGvlSRo9bzt9aw_58);
		T_Q5wkpxktOdTGvlSRo9bzt9aw_58.status = setjmp(T_Q5wkpxktOdTGvlSRo9bzt9aw_58.context);
		if (T_Q5wkpxktOdTGvlSRo9bzt9aw_58.status == 0) {
			write_c4mGyJBvK73pdM22jiweKQ(f0, content0);
			nimrtl_popSafePoint();
		}
		else {
			nimrtl_popSafePoint();
		}
		{
			close_BWnr8V7RERYno9bIdPmw8Hw(f0);
		}
		if (T_Q5wkpxktOdTGvlSRo9bzt9aw_58.status != 0) nimrtl_reraiseException();
	}
	goto LA1;
	LA4: ;
	{
		sysfatal_p4l3kdztdOPD3nsQRAEDqwsystem(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_57), filename0);
	}
	LA1: ;
}
static N_NIMCALL(void, Marker_TY_xyYfiXqv9bXR7uHakYC9cy3A)(void* p, NI op) {
	TY_xyYfiXqv9bXR7uHakYC9cy3A* a;
	NI LOC1;
	a = (TY_xyYfiXqv9bXR7uHakYC9cy3A*)p;
	LOC1 = (NI)0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimrtl_nimGCvisit((void*)a->data[LOC1], op);
	}
}

N_NIMCALL(NCSTRING*, alloccstringarray_TG6GWpa9cdnVJVGZxJaqBJg)(NimStringDesc** a0, NI a0Len0) {
	NCSTRING* result0;
	void* LOC1;
	NimStringDesc** x0;
	result0 = (NCSTRING*)0;
	LOC1 = (void*)0;
	LOC1 = nimrtl_alloc0(((NI) ((NI)((NI)(a0Len0 + ((NI) 1)) * ((NI) 8)))));
	result0 = ((NCSTRING*) (LOC1));
	x0 = ((NimStringDesc**) (a0));
	{
		NI i_yDSXGfsZxOSIwLgroAPZMw;
		NI HEX3Atmp_2Qmkt3ndjswDx26X1mfaTQ;
		NI res_UznAuThIY3jwsImA4A9csNg;
		i_yDSXGfsZxOSIwLgroAPZMw = (NI)0;
		HEX3Atmp_2Qmkt3ndjswDx26X1mfaTQ = (NI)0;
		HEX3Atmp_2Qmkt3ndjswDx26X1mfaTQ = (a0Len0-1);
		res_UznAuThIY3jwsImA4A9csNg = ((NI) 0);
		{
			while (1) {
				void* LOC5;
				if (!(res_UznAuThIY3jwsImA4A9csNg <= HEX3Atmp_2Qmkt3ndjswDx26X1mfaTQ)) goto LA4;
				i_yDSXGfsZxOSIwLgroAPZMw = res_UznAuThIY3jwsImA4A9csNg;
				LOC5 = (void*)0;
				LOC5 = nimrtl_alloc0(((NI) ((NI)((x0[(i_yDSXGfsZxOSIwLgroAPZMw)- 0] ? x0[(i_yDSXGfsZxOSIwLgroAPZMw)- 0]->Sup.len : 0) + ((NI) 1)))));
				result0[(i_yDSXGfsZxOSIwLgroAPZMw)- 0] = ((NCSTRING) (LOC5));
				copymem_E1xtACub5WcDa3vbrIXbwgsystem(((void*) (result0[(i_yDSXGfsZxOSIwLgroAPZMw)- 0])), ((void*) ((&x0[(i_yDSXGfsZxOSIwLgroAPZMw)- 0]->data[((NI) 0)]))), ((NI) ((x0[(i_yDSXGfsZxOSIwLgroAPZMw)- 0] ? x0[(i_yDSXGfsZxOSIwLgroAPZMw)- 0]->Sup.len : 0))));
				res_UznAuThIY3jwsImA4A9csNg += ((NI) 1);
			} LA4: ;
		}
	}
	return result0;
}

N_NIMCALL(void, dealloccstringarray_PrKbmufafP6J0HO6K4x3tQ)(NCSTRING* a0) {
	NI i0;
	i0 = ((NI) 0);
	{
		while (1) {
			if (!!((((void*) (a0[(i0)- 0])) == NIM_NIL))) goto LA2;
			nimrtl_dealloc(((void*) (a0[(i0)- 0])));
			i0 += ((NI) 1);
		} LA2: ;
	}
	nimrtl_dealloc(((void*) (a0)));
}

N_NIMCALL(NIM_BOOL, open_GRr4dBTChSldEteMxZDsuw)(FILE** f0, int filehandle0, Filemode_fVUBHvW79bXUw1j55Oo9avSQ mode0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	(*f0) = fdopen(filehandle0, Formatopen_129cS4U5eK4wWqE9bNeKN1Aw[(mode0)- 0]->data);
	result0 = !(((*f0) == NIM_NIL));
	return result0;
}
NIM_EXTERNC N_NOINLINE(void, systemInit000)(void) {
	TNimType LOC1;
nimRegisterGlobalMarker(T_Q5wkpxktOdTGvlSRo9bzt9aw_4);
	nimvm_IAxmsqnME4Jmed24hOgrFQ = NIM_FALSE;
	memset((void*)(&LOC1), 0, sizeof(LOC1));
	LOC1.size = ((NI) 8);
	LOC1.kind = ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 28);
	LOC1.flags = 2;
	strdesc_D0UzA4zsDu5tgpJQ9a9clXPg = LOC1;
	initallocator_neD9cJp4S9clvdaq5qqNFZAQsystem();
	initgc_njssp69aa7hvxte9bJ8uuDcg();
	registersignalhandler_njssp69aa7hvxte9bJ8uuDcg_3();
}

NIM_EXTERNC N_NOINLINE(void, systemDatInit000)(void) {
static TNimNode* T_Q5wkpxktOdTGvlSRo9bzt9aw_3[4];
static TNimNode T_Q5wkpxktOdTGvlSRo9bzt9aw_0[17];
NTI_13RNkKqUOX1TtorOUlKtqA.size = sizeof(TNimObject);
NTI_13RNkKqUOX1TtorOUlKtqA.kind = 17;
NTI_13RNkKqUOX1TtorOUlKtqA.base = 0;
NTI_13RNkKqUOX1TtorOUlKtqA.flags = 1;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[0].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[0].kind = 2;
NTI_13RNkKqUOX1TtorOUlKtqA.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[0];
NTI_bAvOj2UcojKN87yAQLs0aw.size = sizeof(Exception);
NTI_bAvOj2UcojKN87yAQLs0aw.kind = 17;
NTI_bAvOj2UcojKN87yAQLs0aw.base = (&NTI_13RNkKqUOX1TtorOUlKtqA);
T_Q5wkpxktOdTGvlSRo9bzt9aw_3[0] = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[2];
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[2].kind = 1;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[2].offset = offsetof(Exception, parent);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[2].typ = (&NTI_oUKtBcKRdK6usj8RWrlp6A);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[2].name = "parent";
T_Q5wkpxktOdTGvlSRo9bzt9aw_3[1] = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[3];
NTI_S9agCYBinaYZnGWcjTdxclg.size = sizeof(NCSTRING);
NTI_S9agCYBinaYZnGWcjTdxclg.kind = 29;
NTI_S9agCYBinaYZnGWcjTdxclg.base = 0;
NTI_S9agCYBinaYZnGWcjTdxclg.flags = 3;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[3].kind = 1;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[3].offset = offsetof(Exception, name);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[3].typ = (&NTI_S9agCYBinaYZnGWcjTdxclg);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[3].name = "name";
T_Q5wkpxktOdTGvlSRo9bzt9aw_3[2] = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[4];
NTI_77mFvmsOLKik79ci2hXkHEg.size = sizeof(NimStringDesc*);
NTI_77mFvmsOLKik79ci2hXkHEg.kind = 28;
NTI_77mFvmsOLKik79ci2hXkHEg.base = 0;
NTI_77mFvmsOLKik79ci2hXkHEg.flags = 2;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[4].kind = 1;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[4].offset = offsetof(Exception, message);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[4].typ = (&NTI_77mFvmsOLKik79ci2hXkHEg);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[4].name = "msg";
T_Q5wkpxktOdTGvlSRo9bzt9aw_3[3] = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[5];
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[5].kind = 1;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[5].offset = offsetof(Exception, trace);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[5].typ = (&NTI_77mFvmsOLKik79ci2hXkHEg);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[5].name = "trace";
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[1].len = 4; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[1].kind = 2; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[1].sons = &T_Q5wkpxktOdTGvlSRo9bzt9aw_3[0];
NTI_bAvOj2UcojKN87yAQLs0aw.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[1];
NTI_oUKtBcKRdK6usj8RWrlp6A.size = sizeof(Exception*);
NTI_oUKtBcKRdK6usj8RWrlp6A.kind = 22;
NTI_oUKtBcKRdK6usj8RWrlp6A.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
NTI_oUKtBcKRdK6usj8RWrlp6A.marker = Marker_TY_oUKtBcKRdK6usj8RWrlp6A;
NTI_Fjf9b9b2IlzRO2tspHxG3tgg.size = sizeof(Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg);
NTI_Fjf9b9b2IlzRO2tspHxG3tgg.kind = 17;
NTI_Fjf9b9b2IlzRO2tspHxG3tgg.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[6].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[6].kind = 2;
NTI_Fjf9b9b2IlzRO2tspHxG3tgg.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[6];
NTI_NrupLB36t9bV7iFDHtrF69aw.size = sizeof(Outofmemerror_NrupLB36t9bV7iFDHtrF69aw);
NTI_NrupLB36t9bV7iFDHtrF69aw.kind = 17;
NTI_NrupLB36t9bV7iFDHtrF69aw.base = (&NTI_Fjf9b9b2IlzRO2tspHxG3tgg);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[7].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[7].kind = 2;
NTI_NrupLB36t9bV7iFDHtrF69aw.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[7];
NTI_GRbrBa7JIulgD34jGcFb8w.size = sizeof(Reraiseerror_GRbrBa7JIulgD34jGcFb8w);
NTI_GRbrBa7JIulgD34jGcFb8w.kind = 17;
NTI_GRbrBa7JIulgD34jGcFb8w.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[8].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[8].kind = 2;
NTI_GRbrBa7JIulgD34jGcFb8w.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[8];
NTI_beOxjNaux3PfvyYBLMJh2A.size = sizeof(Reraiseerror_GRbrBa7JIulgD34jGcFb8w*);
NTI_beOxjNaux3PfvyYBLMJh2A.kind = 22;
NTI_beOxjNaux3PfvyYBLMJh2A.base = (&NTI_GRbrBa7JIulgD34jGcFb8w);
NTI_beOxjNaux3PfvyYBLMJh2A.marker = Marker_TY_beOxjNaux3PfvyYBLMJh2A;
NTI_QcJsjWXxMFpjHfkCIK5ExA.size = sizeof(Arithmeticerror_QcJsjWXxMFpjHfkCIK5ExA);
NTI_QcJsjWXxMFpjHfkCIK5ExA.kind = 17;
NTI_QcJsjWXxMFpjHfkCIK5ExA.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[9].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[9].kind = 2;
NTI_QcJsjWXxMFpjHfkCIK5ExA.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[9];
NTI_I3Jtn27626sFBOls6BBQ2Q.size = sizeof(Overflowerror_I3Jtn27626sFBOls6BBQ2Q);
NTI_I3Jtn27626sFBOls6BBQ2Q.kind = 17;
NTI_I3Jtn27626sFBOls6BBQ2Q.base = (&NTI_QcJsjWXxMFpjHfkCIK5ExA);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[10].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[10].kind = 2;
NTI_I3Jtn27626sFBOls6BBQ2Q.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[10];
NTI_6woiEp3hwhYMr1p5tjkZvA.size = sizeof(Overflowerror_I3Jtn27626sFBOls6BBQ2Q*);
NTI_6woiEp3hwhYMr1p5tjkZvA.kind = 22;
NTI_6woiEp3hwhYMr1p5tjkZvA.base = (&NTI_I3Jtn27626sFBOls6BBQ2Q);
NTI_6woiEp3hwhYMr1p5tjkZvA.marker = Marker_TY_6woiEp3hwhYMr1p5tjkZvA;
NTI_8FC9arcap3s5ZtfMs75krtA.size = sizeof(Assertionerror_8FC9arcap3s5ZtfMs75krtA);
NTI_8FC9arcap3s5ZtfMs75krtA.kind = 17;
NTI_8FC9arcap3s5ZtfMs75krtA.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[11].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[11].kind = 2;
NTI_8FC9arcap3s5ZtfMs75krtA.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[11];
NTI_TmgWlPUbRr7iGD2UE1cu6A.size = sizeof(Assertionerror_8FC9arcap3s5ZtfMs75krtA*);
NTI_TmgWlPUbRr7iGD2UE1cu6A.kind = 22;
NTI_TmgWlPUbRr7iGD2UE1cu6A.base = (&NTI_8FC9arcap3s5ZtfMs75krtA);
NTI_TmgWlPUbRr7iGD2UE1cu6A.marker = Marker_TY_TmgWlPUbRr7iGD2UE1cu6A;
NTI_Gi06FkNeykJn7mrqRZYrkA.size = sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA);
NTI_Gi06FkNeykJn7mrqRZYrkA.kind = 17;
NTI_Gi06FkNeykJn7mrqRZYrkA.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[12].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[12].kind = 2;
NTI_Gi06FkNeykJn7mrqRZYrkA.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[12];
NTI_yCEN9anxCD6mzBxGjuaRBdg.size = sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA*);
NTI_yCEN9anxCD6mzBxGjuaRBdg.kind = 22;
NTI_yCEN9anxCD6mzBxGjuaRBdg.base = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
NTI_yCEN9anxCD6mzBxGjuaRBdg.marker = Marker_TY_yCEN9anxCD6mzBxGjuaRBdg;
NTI_rR5Bzr1D5krxoo1NcNyeMA.size = sizeof(NI);
NTI_rR5Bzr1D5krxoo1NcNyeMA.kind = 31;
NTI_rR5Bzr1D5krxoo1NcNyeMA.base = 0;
NTI_rR5Bzr1D5krxoo1NcNyeMA.flags = 3;
NTI_Uk8TiHqxGdO37NabyvfS5g.size = sizeof(NI);
NTI_Uk8TiHqxGdO37NabyvfS5g.kind = 31;
NTI_Uk8TiHqxGdO37NabyvfS5g.base = 0;
NTI_Uk8TiHqxGdO37NabyvfS5g.flags = 3;
NTI_LBgXxpmYOpS8xroRZgNvbg.size = sizeof(NI);
NTI_LBgXxpmYOpS8xroRZgNvbg.kind = 31;
NTI_LBgXxpmYOpS8xroRZgNvbg.base = 0;
NTI_LBgXxpmYOpS8xroRZgNvbg.flags = 3;
NTI_Gz6vwaK0PZQIDIwfuvKsOg.size = sizeof(NI);
NTI_Gz6vwaK0PZQIDIwfuvKsOg.kind = 31;
NTI_Gz6vwaK0PZQIDIwfuvKsOg.base = 0;
NTI_Gz6vwaK0PZQIDIwfuvKsOg.flags = 3;
NTI_DcZ5N67dL3rBj9bxGtx09bFg.size = sizeof(NI);
NTI_DcZ5N67dL3rBj9bxGtx09bFg.kind = 31;
NTI_DcZ5N67dL3rBj9bxGtx09bFg.base = 0;
NTI_DcZ5N67dL3rBj9bxGtx09bFg.flags = 3;
NTI_g9buja9c9aeh0rkDpqsXOJF9bA.size = sizeof(NI);
NTI_g9buja9c9aeh0rkDpqsXOJF9bA.kind = 31;
NTI_g9buja9c9aeh0rkDpqsXOJF9bA.base = 0;
NTI_g9buja9c9aeh0rkDpqsXOJF9bA.flags = 3;
NTI_VaVACK0bpYmqIQ0mKcHfQQ.size = sizeof(NIM_BOOL);
NTI_VaVACK0bpYmqIQ0mKcHfQQ.kind = 1;
NTI_VaVACK0bpYmqIQ0mKcHfQQ.base = 0;
NTI_VaVACK0bpYmqIQ0mKcHfQQ.flags = 3;
NTI_3XwRQvmzCEOC4QnT706q1g.size = sizeof(Oserror_3XwRQvmzCEOC4QnT706q1g);
NTI_3XwRQvmzCEOC4QnT706q1g.kind = 17;
NTI_3XwRQvmzCEOC4QnT706q1g.base = (&NTI_Fjf9b9b2IlzRO2tspHxG3tgg);
NTI_sVg18TP9cLifHyygRe9cro9aA.size = sizeof(NI32);
NTI_sVg18TP9cLifHyygRe9cro9aA.kind = 34;
NTI_sVg18TP9cLifHyygRe9cro9aA.base = 0;
NTI_sVg18TP9cLifHyygRe9cro9aA.flags = 3;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[13].kind = 1;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[13].offset = offsetof(Oserror_3XwRQvmzCEOC4QnT706q1g, errorcode);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[13].typ = (&NTI_sVg18TP9cLifHyygRe9cro9aA);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[13].name = "errorCode";
NTI_3XwRQvmzCEOC4QnT706q1g.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[13];
NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA.size = sizeof(Oserror_3XwRQvmzCEOC4QnT706q1g*);
NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA.kind = 22;
NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA.base = (&NTI_3XwRQvmzCEOC4QnT706q1g);
NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA.marker = Marker_TY_Qx9aKy4vZ9bVz9bnG9brQcRHGA;
NTI_9czoZw3pzPyrBmb5zTHY1OQ.size = sizeof(Ioerror_9czoZw3pzPyrBmb5zTHY1OQ);
NTI_9czoZw3pzPyrBmb5zTHY1OQ.kind = 17;
NTI_9czoZw3pzPyrBmb5zTHY1OQ.base = (&NTI_Fjf9b9b2IlzRO2tspHxG3tgg);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[14].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[14].kind = 2;
NTI_9czoZw3pzPyrBmb5zTHY1OQ.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[14];
NTI_HX2M9cQhE3jaovp9aYJDdslA.size = sizeof(Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*);
NTI_HX2M9cQhE3jaovp9aYJDdslA.kind = 22;
NTI_HX2M9cQhE3jaovp9aYJDdslA.base = (&NTI_9czoZw3pzPyrBmb5zTHY1OQ);
NTI_HX2M9cQhE3jaovp9aYJDdslA.marker = Marker_TY_HX2M9cQhE3jaovp9aYJDdslA;
NTI_ifYAhUumNzWR9c9cN9amyJLtg.size = sizeof(Keyerror_ifYAhUumNzWR9c9cN9amyJLtg);
NTI_ifYAhUumNzWR9c9cN9amyJLtg.kind = 17;
NTI_ifYAhUumNzWR9c9cN9amyJLtg.base = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[15].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[15].kind = 2;
NTI_ifYAhUumNzWR9c9cN9amyJLtg.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[15];
NTI_axqhRnwd09cVJkRcojfw6mA.size = sizeof(Keyerror_ifYAhUumNzWR9c9cN9amyJLtg*);
NTI_axqhRnwd09cVJkRcojfw6mA.kind = 22;
NTI_axqhRnwd09cVJkRcojfw6mA.base = (&NTI_ifYAhUumNzWR9c9cN9amyJLtg);
NTI_axqhRnwd09cVJkRcojfw6mA.marker = Marker_TY_axqhRnwd09cVJkRcojfw6mA;
NTI_nmiMWKVIe46vacnhAFrQvw.size = sizeof(NIM_CHAR);
NTI_nmiMWKVIe46vacnhAFrQvw.kind = 2;
NTI_nmiMWKVIe46vacnhAFrQvw.base = 0;
NTI_nmiMWKVIe46vacnhAFrQvw.flags = 3;
NTI_a9bIsIkdQvQMv0xYGrfgSag.size = sizeof(NI);
NTI_a9bIsIkdQvQMv0xYGrfgSag.kind = 31;
NTI_a9bIsIkdQvQMv0xYGrfgSag.base = 0;
NTI_a9bIsIkdQvQMv0xYGrfgSag.flags = 3;
NTI_xyYfiXqv9bXR7uHakYC9cy3A.size = sizeof(TY_xyYfiXqv9bXR7uHakYC9cy3A*);
NTI_xyYfiXqv9bXR7uHakYC9cy3A.kind = 24;
NTI_xyYfiXqv9bXR7uHakYC9cy3A.base = (&NTI_VYsfqmmqchsY5XzU9aJJBBA);
NTI_xyYfiXqv9bXR7uHakYC9cy3A.flags = 2;
NTI_xyYfiXqv9bXR7uHakYC9cy3A.marker = Marker_TY_xyYfiXqv9bXR7uHakYC9cy3A;
NTI_UtShRB9b1wZO9cvpdowm9cefA.size = sizeof(int);
NTI_UtShRB9b1wZO9cvpdowm9cefA.kind = 34;
NTI_UtShRB9b1wZO9cvpdowm9cefA.base = 0;
NTI_UtShRB9b1wZO9cvpdowm9cefA.flags = 3;
NTI_nlCscttRCss70IBTyuBqnA.size = sizeof(int);
NTI_nlCscttRCss70IBTyuBqnA.kind = 34;
NTI_nlCscttRCss70IBTyuBqnA.base = 0;
NTI_nlCscttRCss70IBTyuBqnA.flags = 3;
NTI_9bz2muykEFR6eMHxLnfcjxA.size = sizeof(void*);
NTI_9bz2muykEFR6eMHxLnfcjxA.kind = 18;
NTI_9bz2muykEFR6eMHxLnfcjxA.base = 0;
NTI_9bz2muykEFR6eMHxLnfcjxA.flags = 3;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[16].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[16].kind = 2;
NTI_9bz2muykEFR6eMHxLnfcjxA.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[16];
NTI_7BHnQsEj49a9c6QtudqWTo1w.size = sizeof(FILE*);
NTI_7BHnQsEj49a9c6QtudqWTo1w.kind = 21;
NTI_7BHnQsEj49a9c6QtudqWTo1w.base = (&NTI_9bz2muykEFR6eMHxLnfcjxA);
NTI_7BHnQsEj49a9c6QtudqWTo1w.flags = 3;
}

