/* Generated by Nim Compiler v0.16.0 */
/*   (c) 2017 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 32

#include "nimbase.h"
#include <string.h>
#include <io.h>
#include <fcntl.h>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <setjmp.h>
#include <signal.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 Overflowerror_I3Jtn27626sFBOls6BBQ2Q Overflowerror_I3Jtn27626sFBOls6BBQ2Q;
typedef struct Arithmeticerror_QcJsjWXxMFpjHfkCIK5ExA Arithmeticerror_QcJsjWXxMFpjHfkCIK5ExA;
typedef struct Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg;
typedef struct Outofmemerror_NrupLB36t9bV7iFDHtrF69aw Outofmemerror_NrupLB36t9bV7iFDHtrF69aw;
typedef struct Valueerror_Gi06FkNeykJn7mrqRZYrkA Valueerror_Gi06FkNeykJn7mrqRZYrkA;
typedef struct Ioerror_9czoZw3pzPyrBmb5zTHY1OQ Ioerror_9czoZw3pzPyrBmb5zTHY1OQ;
typedef struct Reraiseerror_GRbrBa7JIulgD34jGcFb8w Reraiseerror_GRbrBa7JIulgD34jGcFb8w;
typedef struct TY_XOVT24GHXwqiEj5GCsEGCA TY_XOVT24GHXwqiEj5GCsEGCA;
typedef struct Assertionerror_8FC9arcap3s5ZtfMs75krtA Assertionerror_8FC9arcap3s5ZtfMs75krtA;
typedef struct TY_iGkpo9aKQdr3NWelKC4cnJA TY_iGkpo9aKQdr3NWelKC4cnJA;
typedef struct TY_a09bGTAl9ceOKTAytYdkbyKg TY_a09bGTAl9ceOKTAytYdkbyKg;
typedef struct Tsym_AXG7xcvKqaxY6koRX1xkCw Tsym_AXG7xcvKqaxY6koRX1xkCw;
typedef struct TY_zuqP4Riz26Oi5fWgPYVEgA TY_zuqP4Riz26Oi5fWgPYVEgA;
typedef struct Ttype_LTUWCZolpovw9cWE3JBWSUw Ttype_LTUWCZolpovw9cWE3JBWSUw;
typedef struct TY_DXS6mEo7PVUFJkirsQ9bNQA TY_DXS6mEo7PVUFJkirsQ9bNQA;
typedef struct Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA;
typedef struct TY_ehmV9bTklH2Gt9cXHV9c0HLeQ TY_ehmV9bTklH2Gt9cXHV9c0HLeQ;
typedef struct Tnode_bROa11lyF5vxEN9aYNbHmhw Tnode_bROa11lyF5vxEN9aYNbHmhw;
typedef struct Oserror_3XwRQvmzCEOC4QnT706q1g Oserror_3XwRQvmzCEOC4QnT706q1g;
typedef struct Rangeerror_wFuRaV3kWqFxI9b4hUjDJYA Rangeerror_wFuRaV3kWqFxI9b4hUjDJYA;
typedef struct Keyerror_ifYAhUumNzWR9c9cN9amyJLtg Keyerror_ifYAhUumNzWR9c9cN9amyJLtg;
typedef struct TY_1v9bKyksXWMsm0vNwmZ4EuQ TY_1v9bKyksXWMsm0vNwmZ4EuQ;
typedef struct Slice_qL3WGViqT0p5sVr4YFHsLg Slice_qL3WGViqT0p5sVr4YFHsLg;
typedef struct Divbyzeroerror_p6OJ2WGp1zYZkMyhPlJPZA Divbyzeroerror_p6OJ2WGp1zYZkMyhPlJPZA;
typedef struct TY_xITzrU1RhJLKwBlRCAbn9bA TY_xITzrU1RhJLKwBlRCAbn9bA;
typedef struct TY_uZlRb8w5pa9b16Yfjq9cGRXQ TY_uZlRb8w5pa9b16Yfjq9cGRXQ;
typedef struct TY_oLpBKXzW3hF9aCVMo5EymfQ TY_oLpBKXzW3hF9aCVMo5EymfQ;
typedef struct Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q;
typedef struct Indexentry_G9ccBDFWfr9aYnLgXTNGDHDg Indexentry_G9ccBDFWfr9aYnLgXTNGDHDg;
typedef struct Tidobj_raN9cHVgzmvaXisezY9aGg9cg Tidobj_raN9cHVgzmvaXisezY9aGg9cg;
typedef struct Tstrtable_f07aOS3dr28kGa5wcE29aFA Tstrtable_f07aOS3dr28kGa5wcE29aFA;
typedef struct TY_sksVpmPRIkNR9axiwtD1Guw TY_sksVpmPRIkNR9axiwtD1Guw;
typedef struct Tident_4umxGerWTHGPwUms7Yqu3g Tident_4umxGerWTHGPwUms7Yqu3g;
typedef struct Tlineinfo_T9c3PM9bs7WZ4LIQfEici9cZw Tlineinfo_T9c3PM9bs7WZ4LIQfEici9cZw;
typedef struct Tloc_EtHNvCB0bgfu9bFjzx9cb6aA Tloc_EtHNvCB0bgfu9bFjzx9cb6aA;
typedef struct Ropeobj_HF4qJnb6xiOddgPmsxodtQ Ropeobj_HF4qJnb6xiOddgPmsxodtQ;
typedef struct Tlib_4f9aBgmqEuj7uWJdBBGcRgA Tlib_4f9aBgmqEuj7uWJdBBGcRgA;
typedef struct Orderedtable_AF39bJ7XDr6gpANuGpxkHrw Orderedtable_AF39bJ7XDr6gpANuGpxkHrw;
typedef struct TY_MlAD6nAPq9bHKla9cWiIZP0g TY_MlAD6nAPq9bHKla9cWiIZP0g;
typedef struct Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q;
typedef struct TY_awOivLjlO76sGdHY7nQUjQ TY_awOivLjlO76sGdHY7nQUjQ;
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_9agrCtWKhCnWWMJpKKugJag[16];
struct  Trunk_W0r8S0Y3UGke6T9bIUWnnuw  {
Trunk_W0r8S0Y3UGke6T9bIUWnnuw* next;
NI key;
TY_9agrCtWKhCnWWMJpKKugJag 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_9agrCtWKhCnWWMJpKKugJag 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 TFrame* TY_pFdcUVk36Xt0LD9bLg3YaIQ[128];
typedef N_NIMCALL_PTR(void, Finalizer) (void* self0);
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 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 N_CLOSURE_PTR(NIM_BOOL, T_Q5wkpxktOdTGvlSRo9bzt9aw_6) (Exception* e0);
struct  Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg  {
  Exception Sup;
};
struct  Outofmemerror_NrupLB36t9bV7iFDHtrF69aw  {
  Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Sup;
};
typedef NIM_CHAR TY_gpc2RrLEcWgv7ONpLYNHOw[2001];
typedef NIM_CHAR TY_4y4exD1dAnu89atYV5jeSuw[250];
struct  Valueerror_Gi06FkNeykJn7mrqRZYrkA  {
  Exception Sup;
};
struct  Ioerror_9czoZw3pzPyrBmb5zTHY1OQ  {
  Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Sup;
};
typedef NU8 Filemode_fVUBHvW79bXUw1j55Oo9avSQ;
typedef NI16 TY_H1xXjJYLVXLmGFFBr8RGPQ[1000001];
typedef NimStringDesc* TY_7JTpIvL6tqeRI2Pp9asvFCA[5];
struct  Reraiseerror_GRbrBa7JIulgD34jGcFb8w  {
  Exception Sup;
};
struct TY_XOVT24GHXwqiEj5GCsEGCA {
NimStringDesc* Field0;
NI Field1;
};
typedef NF TY_yp9a149boki9cCCWgfXI0Ip4A[23];
typedef NIM_CHAR TY_PGLh8drTnaWr3s1qUUSq2Q[500];
struct  Assertionerror_8FC9arcap3s5ZtfMs75krtA  {
  Exception Sup;
};
struct TY_a09bGTAl9ceOKTAytYdkbyKg {
NI Field0;
Tsym_AXG7xcvKqaxY6koRX1xkCw* Field1;
};
typedef TY_a09bGTAl9ceOKTAytYdkbyKg TY_ns9bqkgvSZbKlHoKu0XkvnQ[1];
typedef Ttype_LTUWCZolpovw9cWE3JBWSUw* TY_BF9aKj6RAH9ccQDWaEKQ1HOw[1];
typedef Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA* TY_M0Qdpg6QRblpTaGFq09aZ9aQ[1];
struct  Oserror_3XwRQvmzCEOC4QnT706q1g  {
  Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Sup;
NI32 errorcode;
};
struct  Rangeerror_wFuRaV3kWqFxI9b4hUjDJYA  {
  Exception Sup;
};
struct  Keyerror_ifYAhUumNzWR9c9cN9amyJLtg  {
  Valueerror_Gi06FkNeykJn7mrqRZYrkA Sup;
};
typedef NIM_CHAR TY_eVNFTutn6un5gcq48fQLdg[65];
typedef NU8 TY_YtcvxHNKV4YiecPE9ap1mcA[20];
struct TY_1v9bKyksXWMsm0vNwmZ4EuQ {
NI Field0;
NI Field1;
};
typedef NU8 Fileseekpos_I9aQjuvWxs8BspGbxwsngWw;
typedef NIM_CHAR TY_JpYObICIkqkM7eHG4jy19aw[60];
struct  Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA  {
Tsym_AXG7xcvKqaxY6koRX1xkCw* sym;
TY_zuqP4Riz26Oi5fWgPYVEgA* concretetypes;
NI compilesid;
};
struct  Slice_qL3WGViqT0p5sVr4YFHsLg  {
NI a;
NI b;
};
struct  Divbyzeroerror_p6OJ2WGp1zYZkMyhPlJPZA  {
  Arithmeticerror_QcJsjWXxMFpjHfkCIK5ExA Sup;
};
struct TY_uZlRb8w5pa9b16Yfjq9cGRXQ {
Tsym_AXG7xcvKqaxY6koRX1xkCw* Field0;
NI Field1;
};
typedef TY_uZlRb8w5pa9b16Yfjq9cGRXQ TY_Kqu0Nh2uqdLKL0BvOlH1Ag[1];
struct  Indexentry_G9ccBDFWfr9aYnLgXTNGDHDg  {
NimStringDesc* keyword;
NimStringDesc* link;
NimStringDesc* linktitle;
NimStringDesc* linkdesc;
};
struct  Gcstack_7fytPA5bBsob6See21YMRA  {
Gcstack_7fytPA5bBsob6See21YMRA* prev;
Gcstack_7fytPA5bBsob6See21YMRA* next;
void* starts;
void* pos;
NI maxstacksize;
};
struct  Tidobj_raN9cHVgzmvaXisezY9aGg9cg  {
  TNimObject Sup;
NI id;
};
typedef NU8 Tsymkind_cNCW9acsSznmEccl1fgQwkw;
struct  Tstrtable_f07aOS3dr28kGa5wcE29aFA  {
NI counter;
TY_sksVpmPRIkNR9axiwtD1Guw* data;
};
typedef NU16 Tmagic_shZhZOdbVC5nnFvcXQAImg;
struct  Tlineinfo_T9c3PM9bs7WZ4LIQfEici9cZw  {
NI16 line;
NI16 col;
NI32 fileindex;
};
typedef NU32 Tsymflag_K9ay6LWMat9bUiT9bIbMxpDHw_Set;
typedef NU32 Toption_WspMeQySXNP2XoTWR5MTgg_Set;
typedef NU8 Tlockind_O7PRFZKuiBBWbku09cayVBg;
typedef NU8 Tstorageloc_JK9cKMX3XnqHaUky9b6gkGEw;
typedef NU16 Tlocflag_o2bqJgR4ceIupnUSpxiudA_Set;
struct  Tloc_EtHNvCB0bgfu9bFjzx9cb6aA  {
Tlockind_O7PRFZKuiBBWbku09cayVBg k;
Tstorageloc_JK9cKMX3XnqHaUky9b6gkGEw s;
Tlocflag_o2bqJgR4ceIupnUSpxiudA_Set flags;
Ttype_LTUWCZolpovw9cWE3JBWSUw* t;
Ropeobj_HF4qJnb6xiOddgPmsxodtQ* r;
};
struct  Tsym_AXG7xcvKqaxY6koRX1xkCw  {
  Tidobj_raN9cHVgzmvaXisezY9aGg9cg Sup;
Tsymkind_cNCW9acsSznmEccl1fgQwkw kind;
union{
struct {TY_zuqP4Riz26Oi5fWgPYVEgA* typeinstcache;
} S1;
struct {TY_DXS6mEo7PVUFJkirsQ9bNQA* procinstcache;
Tsym_AXG7xcvKqaxY6koRX1xkCw* gcunsafetyreason;
} S2;
struct {TY_DXS6mEo7PVUFJkirsQ9bNQA* usedgenerics;
Tstrtable_f07aOS3dr28kGa5wcE29aFA tab;
} S3;
struct {Tsym_AXG7xcvKqaxY6koRX1xkCw* guard;
NI bitsize;
} S4;
} kindU;
Tmagic_shZhZOdbVC5nnFvcXQAImg magic;
Ttype_LTUWCZolpovw9cWE3JBWSUw* typ;
Tident_4umxGerWTHGPwUms7Yqu3g* name;
Tlineinfo_T9c3PM9bs7WZ4LIQfEici9cZw info;
Tsym_AXG7xcvKqaxY6koRX1xkCw* owner;
Tsymflag_K9ay6LWMat9bUiT9bIbMxpDHw_Set flags;
Tnode_bROa11lyF5vxEN9aYNbHmhw* ast;
Toption_WspMeQySXNP2XoTWR5MTgg_Set options;
NI position;
NI offset;
Tloc_EtHNvCB0bgfu9bFjzx9cb6aA loc;
Tlib_4f9aBgmqEuj7uWJdBBGcRgA* annex;
Tnode_bROa11lyF5vxEN9aYNbHmhw* constraint;
};
typedef NU8 Ttypekind_9a3YiReNVD0IJHWFKgXRe9ag;
typedef NU8 Tcallingconvention_yjAJ8w0h1PBaSwSGJ3P7IA;
typedef NU32 Ttypeflag_x2m5g1NpbmDig4wLT3Ylhw_Set;
struct  Ttype_LTUWCZolpovw9cWE3JBWSUw  {
  Tidobj_raN9cHVgzmvaXisezY9aGg9cg Sup;
Ttypekind_9a3YiReNVD0IJHWFKgXRe9ag kind;
Tcallingconvention_yjAJ8w0h1PBaSwSGJ3P7IA callconv;
Ttypeflag_x2m5g1NpbmDig4wLT3Ylhw_Set flags;
TY_zuqP4Riz26Oi5fWgPYVEgA* sons;
Tnode_bROa11lyF5vxEN9aYNbHmhw* n;
Tsym_AXG7xcvKqaxY6koRX1xkCw* owner;
Tsym_AXG7xcvKqaxY6koRX1xkCw* sym;
Tsym_AXG7xcvKqaxY6koRX1xkCw* destructor;
Tsym_AXG7xcvKqaxY6koRX1xkCw* deepcopy;
Tsym_AXG7xcvKqaxY6koRX1xkCw* assignment;
TY_iGkpo9aKQdr3NWelKC4cnJA* methods;
NI64 size;
NI16 align;
NI16 locklevel;
Tloc_EtHNvCB0bgfu9bFjzx9cb6aA loc;
Ttype_LTUWCZolpovw9cWE3JBWSUw* typeinst;
};
typedef NU16 Tnodeflag_jyh9acXHkhZANSSvPIY7ZLg_Set;
typedef NU8 Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw;
struct  Tnode_bROa11lyF5vxEN9aYNbHmhw  {
Ttype_LTUWCZolpovw9cWE3JBWSUw* typ;
Tlineinfo_T9c3PM9bs7WZ4LIQfEici9cZw info;
Tnodeflag_jyh9acXHkhZANSSvPIY7ZLg_Set flags;
Tnodekind_G4E4Gxe7oI2Cm03rkiOzQw kind;
union{
struct {NI64 intval;
} S1;
struct {NF floatval;
} S2;
struct {NimStringDesc* strval;
} S3;
struct {Tsym_AXG7xcvKqaxY6koRX1xkCw* sym;
} S4;
struct {Tident_4umxGerWTHGPwUms7Yqu3g* ident;
} S5;
struct {TY_ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
} S6;
} kindU;
NimStringDesc* comment;
};
typedef NU8 Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg;
struct  Orderedtable_AF39bJ7XDr6gpANuGpxkHrw  {
TY_MlAD6nAPq9bHKla9cWiIZP0g* data;
NI counter;
NI first;
NI last;
};
struct  Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q  {
Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg kind;
union{
struct {NimStringDesc* str;
} S1;
struct {NI64 num;
} S2;
struct {NF fnum;
} S3;
struct {NIM_BOOL bval;
} S4;
struct {Orderedtable_AF39bJ7XDr6gpANuGpxkHrw fields;
} S6;
struct {TY_oLpBKXzW3hF9aCVMo5EymfQ* elems;
} S7;
} kindU;
};
struct  Tident_4umxGerWTHGPwUms7Yqu3g  {
  Tidobj_raN9cHVgzmvaXisezY9aGg9cg Sup;
NimStringDesc* s;
Tident_4umxGerWTHGPwUms7Yqu3g* next;
NI h;
};
struct  Ropeobj_HF4qJnb6xiOddgPmsxodtQ  {
  TNimObject Sup;
Ropeobj_HF4qJnb6xiOddgPmsxodtQ* left;
Ropeobj_HF4qJnb6xiOddgPmsxodtQ* right;
NI length;
NimStringDesc* data;
};
struct  Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q  {
  TNimObject Sup;
Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q* prev;
Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q* next;
};
typedef NU8 Tlibkind_9b8v60kso59bBaw9cp8B9a9apKQ;
struct  Tlib_4f9aBgmqEuj7uWJdBBGcRgA  {
  Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q Sup;
Tlibkind_9b8v60kso59bBaw9cp8B9a9apKQ kind;
NIM_BOOL generated;
NIM_BOOL isoverriden;
Ropeobj_HF4qJnb6xiOddgPmsxodtQ* name;
Tnode_bROa11lyF5vxEN9aYNbHmhw* path;
};
struct TY_awOivLjlO76sGdHY7nQUjQ {
NI Field0;
NI Field1;
NimStringDesc* Field2;
Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* Field3;
};
struct TY_iGkpo9aKQdr3NWelKC4cnJA {
  TGenericSeq Sup;
  TY_a09bGTAl9ceOKTAytYdkbyKg data[SEQ_DECL_SIZE];
};
struct TY_zuqP4Riz26Oi5fWgPYVEgA {
  TGenericSeq Sup;
  Ttype_LTUWCZolpovw9cWE3JBWSUw* data[SEQ_DECL_SIZE];
};
struct TY_DXS6mEo7PVUFJkirsQ9bNQA {
  TGenericSeq Sup;
  Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA* data[SEQ_DECL_SIZE];
};
struct TY_ehmV9bTklH2Gt9cXHV9c0HLeQ {
  TGenericSeq Sup;
  Tnode_bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
};
struct TY_xITzrU1RhJLKwBlRCAbn9bA {
  TGenericSeq Sup;
  TY_uZlRb8w5pa9b16Yfjq9cGRXQ data[SEQ_DECL_SIZE];
};
struct TY_oLpBKXzW3hF9aCVMo5EymfQ {
  TGenericSeq Sup;
  Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* data[SEQ_DECL_SIZE];
};
struct TY_sksVpmPRIkNR9axiwtD1Guw {
  TGenericSeq Sup;
  Tsym_AXG7xcvKqaxY6koRX1xkCw* data[SEQ_DECL_SIZE];
};
struct TY_MlAD6nAPq9bHKla9cWiIZP0g {
  TGenericSeq Sup;
  TY_awOivLjlO76sGdHY7nQUjQ data[SEQ_DECL_SIZE];
};
static N_INLINE(void, initallocator_neD9cJp4S9clvdaq5qqNFZAQsystem)(void);
static N_INLINE(void, initStackBottom)(void);
N_NOINLINE(void, setStackBottom)(void* thestackbottom0);
N_NIMCALL(void, initgc_njssp69aa7hvxte9bJ8uuDcg)(void);
N_NIMCALL(void, init_E1QNZGuo0DGFXyt4Y3MfqA)(Cellseq_Axo1XVm9aaQueTOldv8le5w* s0, NI cap0);
N_NOCONV(void*, alloc0_4cubgSerkjpuLcj5MXjiLw)(NI size0);
N_NIMCALL(void*, alloc0_WDxgSWQ1mSIerfvC0kmUtg)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, NI size0);
N_NIMCALL(void*, alloc_WDxgSWQ1mSIerfvC0kmUtg_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_7EL8Zq3xF2ujDWgp3bAEogsystem)(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_NIMCALL(void, 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);
static N_INLINE(void, rtladdzct_MV4BBk6J1qu70IbBxwEn4w_2system)(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_NOCONV(void*, alloc_4cubgSerkjpuLcj5MXjiLw_2)(NI size0);
static N_INLINE(void, copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem)(void* dest0, void* source0, NI size0);
N_NOCONV(void, dealloc_RCjNtRnHdRYntrcE7YtwWw)(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_NOCONV(void, signalHandler)(int sign0);
N_NIMCALL(void, showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ)(NCSTRING data0);
N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str0);
N_NIMCALL(NimStringDesc*, toNimStr)(NCSTRING str0, NI len0);
N_NIMCALL(NimStringDesc*, rawNewStringNoInit)(NI space0);
N_NIMCALL(void*, 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_NIMCALL(NI, getoccupiedmem_9bFvoxSITMVCg7RY8KIar1Q)(void);
N_NIMCALL(NI, gettotalmem_9bFvoxSITMVCg7RY8KIar1Q_2)(void);
N_NIMCALL(NI, getfreemem_9bFvoxSITMVCg7RY8KIar1Q_3)(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);
N_NIMCALL(void, registersignalhandler_njssp69aa7hvxte9bJ8uuDcg_2)(void);
N_NIMCALL(NI, getRefcount)(void* p0);
N_NIMCALL(void*, newObjRC1)(TNimType* typ0, NI size0);
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(void*, newObj)(TNimType* typ0, NI size0);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src0);
static N_INLINE(void, nimGCunrefNoCycle)(void* p0);
N_NIMCALL(void, raiseException)(Exception* e0, NCSTRING ename0);
N_NIMCALL(void, raiseexceptionaux_jP8mO9c3YubVoLarNIvGorQ)(Exception* e0);
static N_INLINE(void, pushCurrentException)(Exception* e0);
static N_INLINE(void, asgnRef)(void** dest0, void* src0);
static N_INLINE(void, incref_9cAA5YuQAAC3MVbnGeV86swsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
static N_INLINE(NIM_BOOL, isObjWithCache)(TNimType* obj0, TNimType* subclass0, TNimType** cache0);
N_NOINLINE(NIM_BOOL, isobjslowpath_k9bdq9bQE075AR7scLFt5wIg)(TNimType* obj0, TNimType* subclass0, TNimType** cache0);
static N_INLINE(void, quitordebug_IZ2oOmqdsYQ7vixQGKSDcAsystem)(void);
N_NIMCALL(NI, mulInt)(NI a0, NI b0);
N_NIMCALL(void, rawwrite_jx9aEH9bXDIKyLGJN0AmOlyQ)(FILE* f0, NimStringDesc* s0);
N_NIMCALL(NI, writebuffer_nZ0pNe9cd9cXtoayexCiaDtA)(FILE* f0, void* buffer0, NI len0);
N_NOINLINE(void, procaddrerror_pUHoKX3bTKkk6SE40virPQ)(NCSTRING name0);
N_NOINLINE(NIM_BOOL, isonstack_dJJW59cIgsBmT59aZrOM71Mg)(void* p0);
static N_INLINE(void, sysfatal_i2L89a3lg6SlU5J9amD3c3ewsystem)(NimStringDesc* message0) __attribute__((noreturn));
static N_NIMCALL(void, Marker_TY_yCEN9anxCD6mzBxGjuaRBdg)(void* p, NI op);
N_NIMCALL(void, unsureAsgnRef)(void** dest0, void* src0);
N_NIMCALL(void, genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw)(void* dest0, TNimNode* n0);
N_NIMCALL(void, genericReset)(void* dest0, TNimType* mt0);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space0);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI start_WPWyPKk58Cr5a6XFFviMjg, NI last0);
static N_INLINE(NI, resize_bzF9a0JivP3Z4njqaxuLc5wsystem)(NI old0);
N_NIMCALL(void*, growobj_AVYny8c0GTk28gxjmat1MA)(void* old0, NI newsize0);
N_NIMCALL(void*, growobj_FZeyQYjWPcE9c06y1gNqZxw)(void* old0, NI newsize0, Gcheap_1TRH1TZMaVZTnLNcIHuNFQ* gch0);
N_NIMCALL(NimStringDesc*, mnewString)(NI len0);
N_NIMCALL(NimStringDesc*, mnewString)(NI len0);
N_NIMCALL(void, genericassignaux_T3cq9aUp9bgGOBuyUSWGriTA)(void* dest0, void* src0, TNimType* mt0, NIM_BOOL shallow0);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src0);
N_NIMCALL(void*, newSeq)(TNimType* typ0, NI len0);
N_NIMCALL(void, genericassignaux_ulsQvfENf9buS9atYunbm7gA)(void* dest0, void* src0, TNimNode* n0, NIM_BOOL shallow0);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap0);
N_NIMCALL(void, add_IbYQ9cTcoQ89aIwM2IEYGMng)(NimStringDesc** result0, NI64 x0);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s0, NI newlen0);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest0, NI addlen0);
N_NOINLINE(void, raiseeio_PpfSiTIeNpMAb9a5o6SglJw)(NimStringDesc* msg0) __attribute__((noreturn));
static N_INLINE(void, sysfatal_orK8PicRB9bj8BG69bF8HQbwsystem)(NimStringDesc* message0) __attribute__((noreturn));
static N_NIMCALL(void, Marker_TY_HX2M9cQhE3jaovp9aYJDdslA)(void* p, NI op);
N_NIMCALL(void*, fopen_bNJ9biJe4vNljLNorzQr9aDw)(NCSTRING filename0, NCSTRING mode0);
N_NIMCALL(NI16*, newwidecstring_NuXSaDWgkbvz3UCBEjgeFQ)(NCSTRING s0);
N_NIMCALL(NI16*, newwidecstring_b3CORJA07cGvZB3j3M3bqQ)(NCSTRING source0, NI L0);
static N_NIMCALL(void, Marker_TY_G3kU09cKkEAm4eRITOVFhdQ)(void* p, NI op);
static N_NIMCALL(void, Marker_TY_1VeTzqrFu2VJ4a6cGvuoyA)(void* p, NI op);
N_NIMCALL(TNimType*, extGetCellType)(void* c0);
N_NIMCALL(NIM_BOOL, open_sEp0GH2306oGo9bqBpj5oTQ)(FILE** f0, NimStringDesc* filename0, Filemode_fVUBHvW79bXUw1j55Oo9avSQ mode0, NI bufsize0);
static N_INLINE(void, sysfatal_p4l3kdztdOPD3nsQRAEDqwsystem)(NimStringDesc* message0, NimStringDesc* arg0) __attribute__((noreturn));
static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0);
static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0);
static N_INLINE(void, sysfatal_gu8AGlf3JTsS25q0fXJFMAsystem)(NimStringDesc* message0) __attribute__((noreturn));
static N_NIMCALL(void, Marker_TY_beOxjNaux3PfvyYBLMJh2A)(void* p, NI op);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x0);
static N_INLINE(void, sysfatal_mWrNPcJugise9aqN0yGByGwsystem)(NimStringDesc* message0) __attribute__((noreturn));
static N_NIMCALL(void, Marker_TY_TmgWlPUbRr7iGD2UE1cu6A)(void* p, NI op);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_9blrFJat6Z3Pwrl6WQ3wOyA)(TY_iGkpo9aKQdr3NWelKC4cnJA* x0, TY_iGkpo9aKQdr3NWelKC4cnJA* y0);
static N_INLINE(void*, seqtoptr_WLLxNks0H5OcVBUlMtVoJgsystem)(TY_iGkpo9aKQdr3NWelKC4cnJA* x0);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_4vF9aSO3XAhG3fa1Zv59ahoA)(TY_a09bGTAl9ceOKTAytYdkbyKg x0, TY_a09bGTAl9ceOKTAytYdkbyKg y0);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq0, NI elemsize0);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_59b802owH8LncWkMg9cCE3ng)(TY_zuqP4Riz26Oi5fWgPYVEgA* x0, TY_zuqP4Riz26Oi5fWgPYVEgA* y0);
static N_INLINE(void*, seqtoptr_V7AASvGxu8gMLloMW9ckRJgsystem)(TY_zuqP4Riz26Oi5fWgPYVEgA* x0);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_8Lfd9cW8bn5vR0HyDvQO6Hw)(TY_DXS6mEo7PVUFJkirsQ9bNQA* x0, TY_DXS6mEo7PVUFJkirsQ9bNQA* y0);
static N_INLINE(void*, seqtoptr_E0S8l8wqU9aGJ4REWeYF9aMAsystem)(TY_DXS6mEo7PVUFJkirsQ9bNQA* x0);
static N_NIMCALL(void, Marker_TY_Qx9aKy4vZ9bVz9bnG9brQcRHGA)(void* p, NI op);
N_NIMCALL(NimStringDesc*, HEX24_GUT0CpACeWzt9cO6i89asYdw)(NI16* w0, NI estimate0, NI replacement0);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s0, NIM_CHAR c0);
N_NIMCALL(void, objectinitaux_byg9cq1Sxxop7ZDN9b4I0riw_2)(void* dest0, TNimNode* n0);
N_NIMCALL(void, objectInit)(void* dest0, TNimType* typ0);
N_NIMCALL(void*, realloc_O21OiSxurjvup9cA55o9ae1A)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, void* p0, NI newsize0);
N_NIMCALL(NI, ptrsize_FVy3yH9cNo61BYTEPuP9awLA)(void* p0);
static N_NIMCALL(void, Marker_TY_axqhRnwd09cVJkRcojfw6mA)(void* p, NI op);
N_NIMCALL(void, add_A9bDQDKw5SEqD3OvtOnC1bg)(NimStringDesc** result0, NF x0);
N_NIMCALL(void, add_XyS0BXa1E5ylXzhvUQlY9cg)(NimStringDesc** x0, NCSTRING y0);
N_NIMCALL(void, genericAssign)(void* dest0, void* src0, TNimType* mt0);
static N_INLINE(void, pushSafePoint)(TSafePoint* s0);
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_nZ0pNe9cd9cXtoayexCiaDtA_2)(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, popSafePoint)(void);
N_NIMCALL(void, close_BWnr8V7RERYno9bIdPmw8Hw_2)(FILE* f0);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(void, write_c4mGyJBvK73pdM22jiweKQ)(FILE* f0, NimStringDesc* s0);
N_NIMCALL(NIM_BOOL, readline_sO1bQXVRA6RP9cdYJXNKeSw)(FILE* f0, NimStringDesc** line0);
static N_INLINE(void*, seqtoptr_UBfBryAYqlhRuB3xDBSdewsystem)(TY_ehmV9bTklH2Gt9cXHV9c0HLeQ* x0);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq0, NI elemsize0, NI newlen0);
static N_INLINE(void*, seqtoptr_5LSLp9bLEbGkcuZoyatgBhQsystem)(TY_xITzrU1RhJLKwBlRCAbn9bA* x0);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_WL2jrWYjqeu1iJ3niRta5w)(TY_uZlRb8w5pa9b16Yfjq9cGRXQ x0, TY_uZlRb8w5pa9b16Yfjq9cGRXQ y0);
static N_INLINE(void*, seqtoptr_P9cvIFF9bpRb4kxDjjhjfgYgsystem)(TY_xITzrU1RhJLKwBlRCAbn9bA* x0);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_PtDo4JMF3tDx4sqhk0oigw)(TY_uZlRb8w5pa9b16Yfjq9cGRXQ x0, TY_uZlRb8w5pa9b16Yfjq9cGRXQ y0);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_A8XZmS2kUPRhG84nvOg1Nw)(TY_xITzrU1RhJLKwBlRCAbn9bA* x0, TY_xITzrU1RhJLKwBlRCAbn9bA* y0);
static N_INLINE(void*, seqtoptr_3GXdYap6cQyJyX7ox0bY8wsystem)(TY_oLpBKXzW3hF9aCVMo5EymfQ* x0);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_Ujpjfumo30l2ielPaquw0Q)(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* a0, Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* b0);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a0, NimStringDesc* b0);
static N_INLINE(NIM_BOOL, equalmem_DCrUjdaMvFDHaR1hs7sQGwropes)(void* a0, void* b0, NI size0);
static N_INLINE(void, Gcdisable_neD9cJp4S9clvdaq5qqNFZAQrodread)(void);
N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x0);
static N_INLINE(void, Gcenable_neD9cJp4S9clvdaq5qqNFZAQ_2rodread)(void);
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;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw bottomdata_BPOhZntfu5k9cx0Mom9aGo0A;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw* bottom_KT33MhtjYZUZyUdbeLIpkg;
Gcheap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
NI globalmarkerslen_hgEFy3UCOBoalBh29asu5MA;
TY_r9aAb9cuhoh9cb9a123KVuMchQ globalmarkers_5ghwSgpo9cT9bT7YStQDJHVQ;
TNimType NTI_rR5Bzr1D5krxoo1NcNyeMA;
TNimType NTI_QcJsjWXxMFpjHfkCIK5ExA;
TNimType NTI_I3Jtn27626sFBOls6BBQ2Q;
TNimType NTI_6woiEp3hwhYMr1p5tjkZvA;
TNimType NTI_Fjf9b9b2IlzRO2tspHxG3tgg;
TNimType NTI_NrupLB36t9bV7iFDHtrF69aw;
static TNimType* Nim_OfCheck_CACHE8[2];
TNimType NTI_sVg18TP9cLifHyygRe9cro9aA;
TNimType NTI_Gi06FkNeykJn7mrqRZYrkA;
TNimType NTI_yCEN9anxCD6mzBxGjuaRBdg;
TNimType NTI_kDPg4wXyR8DDyA0MeEjIsw;
TNimType NTI_9czoZw3pzPyrBmb5zTHY1OQ;
TNimType NTI_HX2M9cQhE3jaovp9aYJDdslA;
TNimType NTI_H1xXjJYLVXLmGFFBr8RGPQ;
TNimType NTI_G3kU09cKkEAm4eRITOVFhdQ;
TNimType NTI_VaVACK0bpYmqIQ0mKcHfQQ;
TNimType NTI_Aav8dQoMlCFnZRxA0IhTHQ;
TNimType NTI_w9bl9a1ul9ctRJWiMl9cNnIMvg;
TNimType NTI_1VeTzqrFu2VJ4a6cGvuoyA;
TNimType NTI_k3HXouOuhqAKq0dx450lXQ;
TNimType NTI_JrFyJbYm9b5I4hJ9cWDqvfYA;
TNimType NTI_GRbrBa7JIulgD34jGcFb8w;
TNimType NTI_beOxjNaux3PfvyYBLMJh2A;
TNimType NTI_8FC9arcap3s5ZtfMs75krtA;
TNimType NTI_TmgWlPUbRr7iGD2UE1cu6A;
extern TNimType NTI_iGkpo9aKQdr3NWelKC4cnJA;
extern TNimType NTI_zuqP4Riz26Oi5fWgPYVEgA;
extern TNimType NTI_DXS6mEo7PVUFJkirsQ9bNQA;
extern TNimType NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ;
TNimType NTI_3XwRQvmzCEOC4QnT706q1g;
TNimType NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA;
TNimType NTI_9bz2muykEFR6eMHxLnfcjxA;
TNimType NTI_7BHnQsEj49a9c6QtudqWTo1w;
TNimType NTI_chXunH2dwinSkhpA6JnsXw;
TNimType NTI_wFuRaV3kWqFxI9b4hUjDJYA;
TNimType NTI_ifYAhUumNzWR9c9cN9amyJLtg;
TNimType NTI_axqhRnwd09cVJkRcojfw6mA;
TNimType NTI_13aFwjKaWlqhwUBjDHvkIw;
TNimType NTI_nmiMWKVIe46vacnhAFrQvw;
TNimType NTI_UtShRB9b1wZO9cvpdowm9cefA;
TNimType NTI_nlCscttRCss70IBTyuBqnA;
TNimType NTI_xHTZrq9aYs6boc9bCba0JbpQ;
extern TNimType NTI_Y32tFilzS9adEEksgrCsOzQ;
TNimType NTI_Uk8TiHqxGdO37NabyvfS5g;
TNimType NTI_LBgXxpmYOpS8xroRZgNvbg;
TNimType NTI_Gz6vwaK0PZQIDIwfuvKsOg;
TNimType NTI_DcZ5N67dL3rBj9bxGtx09bFg;
TNimType NTI_g9buja9c9aeh0rkDpqsXOJF9bA;
TNimType NTI_p6OJ2WGp1zYZkMyhPlJPZA;
extern TNimType NTI_xITzrU1RhJLKwBlRCAbn9bA;
TNimType NTI_u50F0puw9b9c6p256tX4eJLQ;
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, "over- or underflow", 18);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_9, "could not load: ", 16);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_10, "\015\012", 2);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_11, "compile with -d:nimDebugDlOpen for more information\015\012", 53);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_12, "could not import: ", 18);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_13, "attempt to write to a nil address", 33);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_14, "cannot write string to file", 27);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_15, "rb", 2);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_16, "wb", 2);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_17, "w+b", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_18, "r+b", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_19, "ab", 2);
NIM_CONST TY_7JTpIvL6tqeRI2Pp9asvFCA Formatopen_129cS4U5eK4wWqE9bNeKN1Aw = {((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_15),
((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_16),
((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_17),
((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_18),
((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_19)}
;
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_20, "cannot open: ", 13);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_21, "no exception to reraise", 23);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_22, "(", 1);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_23, ", ", 2);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_24, "filename", 8);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_25, ": ", 2);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_26, "nil", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_27, "line", 4);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_28, ")", 1);
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_29, " (invalid data!)", 16);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_30, "nan", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_31, "-inf", 4);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_32, "inf", 3);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_34, "error while reading from file", 29);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_35, "", 0);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_36, "EOF reached", 11);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_37, "cannot set file position", 24);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_38, "cannot retrieve file position", 29);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_40, "0", 1);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_41, "true", 4);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_42, "false", 5);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_43, "[GC] total memory: ", 19);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_44, "\015\012[GC] occupied memory: ", 24);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_45, "\015\012[GC] stack scans: ", 20);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_46, "\015\012[GC] stack cells: ", 20);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_47, "\015\012[GC] cycle collections: ", 26);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_48, "\015\012[GC] max threshold: ", 22);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_49, "\015\012[GC] zct capacity: ", 21);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_50, "\015\012[GC] max cycle table size: ", 29);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_51, "\015\012[GC] max pause time [ms]: ", 28);
STRING_LITERAL(T_Q5wkpxktOdTGvlSRo9bzt9aw_52, "[GC] max stack size: ", 21);

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;
}

N_NOINLINE(void, 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: ;
}

static N_INLINE(void, initStackBottom)(void) {
	void* volatile locals0;
	locals0 = (void*)0;
	locals0 = ((void*) ((&locals0)));
	setStackBottom(locals0);
}

static N_INLINE(NI, roundup_HS4HdHHFZPftyB49cpIyo7Asystem)(NI x0, NI v0) {
	NI result0;
	result0 = (NI)0;
	result0 = (NI)((NI)(x0 + (NI)(v0 - ((NI) 1))) & (NI)((NU32) ~((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)((NU32)(key0) >> (NU32)(((NI) 9))));
	{
		NI u0;
		if (!!((t0 == NIM_NIL))) goto LA3;
		u0 = (NI)(key0 & ((NI) 511));
		result0 = !(((NI)((*t0).bits[((NI)((NU32)(((NI) (u0))) >> (NU32)(((NI) 5))))- 0] & (NI)((NU32)(((NI) 1)) << (NU32)(((NI) ((NI)(((NI) (u0)) & ((NI) 31))))))) == ((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)((NU32)(((NI) (p0))) >> (NU32)(((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)((NU32)(((NI) (c0))) + (NU32)((*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\015\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 = VirtualAlloc(NIM_NIL, size0, ((NI32) 12288), ((NI32) 4));
	{
		if (!(result0 == NIM_NIL)) goto LA3;
		raiseoutofmem_II46IjNZztN9bmbxUD8dt8g();
	}
	LA3: ;
	return result0;
}

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

static N_INLINE(void, zeromem_7EL8Zq3xF2ujDWgp3bAEogsystem)(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_7EL8Zq3xF2ujDWgp3bAEogsystem(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)((NU32)(key0) >> (NU32)(((NI) 9))));
	u0 = (NI)(key0 & ((NI) 511));
	(*t0).bits[((NI)((NU32)(((NI) (u0))) >> (NU32)(((NI) 5))))- 0] = (NI)((*t0).bits[((NI)((NU32)(((NI) (u0))) >> (NU32)(((NI) 5))))- 0] | (NI)((NU32)(((NI) 1)) << (NU32)(((NI) ((NI)(((NI) (u0)) & ((NI) 31)))))));
}

static N_INLINE(NI, pageindex_vFgXFo13iF61HsEG6epuwgsystem)(Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c0) {
	NI result0;
	result0 = (NI)0;
	result0 = (NI)((NU32)(((NI) (c0))) >> (NU32)(((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)((NU32)(((NI) (c0))) + (NU32)(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 = VirtualAlloc(NIM_NIL, size0, ((NI32) 12288), ((NI32) 4));
	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)((NU32)(((NI) (result0))) + (NU32)(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)((NU32)(((NI) (result0))) - (NU32)(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 (!((NU32)(key0) < (NU32)((*(*t0)).key))) goto LA8;
			add_Xuf47u3imOz8BOk5HURLWQ(a0, &(*(*t0)).link[(((NI) 0))- 0], key0, upperbound0);
		}
		goto LA6;
		LA8: ;
		{
			if (!((NU32)((*(*t0)).key) < (NU32)(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)((NU32)(((NI) ((&(*c0).data)))) + (NU32)((*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)((NU32)(((NI) (result0))) + (NU32)(size0)));
	}
	LA1: ;
	return result0;
}

N_NIMCALL(void*, alloc_WDxgSWQ1mSIerfvC0kmUtg_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)((NU32)(((NI) (result0))) + (NU32)(((NI)sizeof(Freecell_u6M5LHprqzkn9axr04yg9bGQ))))));
	return result0;
}

N_NIMCALL(void*, alloc0_WDxgSWQ1mSIerfvC0kmUtg)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = alloc_WDxgSWQ1mSIerfvC0kmUtg_2(allocator0, size0);
	zeromem_7EL8Zq3xF2ujDWgp3bAEogsystem(result0, size0);
	return result0;
}

N_NOCONV(void*, alloc0_4cubgSerkjpuLcj5MXjiLw)(NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = alloc0_WDxgSWQ1mSIerfvC0kmUtg((&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 = alloc0_4cubgSerkjpuLcj5MXjiLw(((NI) ((NI)(cap0 * ((NI) 4)))));
	(*s0).d = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g**) (LOC1));
}

N_NIMCALL(void, init_WHgd5C59bkXWDz3vnAxfzXQ)(Cellset_jG87P0AI9aZtss9ccTYBIISQ* s0) {
	void* LOC1;
	LOC1 = (void*)0;
	LOC1 = alloc0_4cubgSerkjpuLcj5MXjiLw(((NI) 4096));
	(*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)((NU32)(((NI) (usr0))) - (NU32)(((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g))))));
	return result0;
}

N_NOCONV(void*, alloc_4cubgSerkjpuLcj5MXjiLw_2)(NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = alloc_WDxgSWQ1mSIerfvC0kmUtg_2((&gch_IcYaEuuWivYAS86vFMTS3Q.region), size0);
	return result0;
}

static N_INLINE(void, copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem)(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)((NU32)(key0) >> (NU32)(((NI) 9))));
	{
		NI u0;
		if (!!((t0 == NIM_NIL))) goto LA3;
		u0 = (NI)(key0 & ((NI) 511));
		(*t0).bits[((NI)((NU32)(((NI) (u0))) >> (NU32)(((NI) 5))))- 0] = (NI)((*t0).bits[((NI)((NU32)(((NI) (u0))) >> (NU32)(((NI) 5))))- 0] & (NI)((NU32) ~((NI)((NU32)(((NI) 1)) << (NU32)(((NI) ((NI)(((NI) (u0)) & ((NI) 31)))))))));
	}
	LA3: ;
}

static N_INLINE(void, osdeallocpages_I1brEDH0C8CP9a0HfGYsDvAsystem)(void* p0, NI size0) {
	VirtualFree(p0, ((NI) 0), ((NI32) 32768));
}

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)((NU32)(((NI) (p0))) + (NU32)((*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)((NU32)(((NI) (c0))) + (NU32)((*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)((NU32)(((NI) (c0))) - (NU32)((*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_TRUE;
		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 (!((NU32)(x0) < (NU32)((*(*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)((NU32)(((NI) (p0))) - (NU32)(((NI)sizeof(Freecell_u6M5LHprqzkn9axr04yg9bGQ))))));
	rawdealloc_DA62HrGC5sdfCED505KyyQ(allocator0, x0);
}

N_NOCONV(void, dealloc_RCjNtRnHdRYntrcE7YtwWw)(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 = alloc_4cubgSerkjpuLcj5MXjiLw_2(((NI) ((NI)((*s0).cap * ((NI) 4)))));
		d0 = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g**) (LOC5));
		copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) (d0)), ((void*) ((*s0).d)), ((NI) ((NI)((*s0).len * ((NI) 4)))));
		dealloc_RCjNtRnHdRYntrcE7YtwWw(((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: ;
}

static N_INLINE(void, rtladdzct_MV4BBk6J1qu70IbBxwEn4w_2system)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
	addzct_fCDI7oO1NNVXXURtxSzsRw((&gch_IcYaEuuWivYAS86vFMTS3Q.zct), c0);
}

static N_INLINE(void, decref_MV4BBk6J1qu70IbBxwEn4wsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
	{
		(*c0).refcount -= ((NI) 8);
		if (!((NU32)((*c0).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_MV4BBk6J1qu70IbBxwEn4w_2system(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 = alloc0_4cubgSerkjpuLcj5MXjiLw(((NI) ((NI)((NI)((*t0).max + ((NI) 1)) * ((NI) 4)))));
	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: ;
		}
	}
	dealloc_RCjNtRnHdRYntrcE7YtwWw(((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 = alloc0_4cubgSerkjpuLcj5MXjiLw(((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)((NU32)(u0) >> (NU32)(((NI) 12))));
	u0 = (NI)((NU32)((NI)((NU32)(u0) % (NU32)(((NI) 4096)))) / (NU32)(((NI) 8)));
	(*t0).bits[((NI)((NU32)(u0) >> (NU32)(((NI) 5))))- 0] = (NI)((*t0).bits[((NI)((NU32)(u0) >> (NU32)(((NI) 5))))- 0] | (NI)((NU32)(((NI) 1)) << (NU32)(((NI) ((NI)(u0 & ((NI) 31)))))));
}

static N_INLINE(void*, celltousr_vA0UG8JLZvpzP1Xf3vkPgwsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0) {
	void* result0;
	result0 = (void*)0;
	result0 = ((void*) ((NI)((NU32)(((NI) (cell0))) + (NU32)(((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)((NU32)(a0) + (NU32)((*n0).offset)))))));
	}
	break;
	case ((NI) 2):
	{
		d0 = ((NI)(NU)(NU16)((*((NI16*) ((NI)((NU32)(a0) + (NU32)((*n0).offset)))))));
	}
	break;
	case ((NI) 4):
	{
		d0 = ((NI) ((*((NI32*) ((NI)((NU32)(a0) + (NU32)((*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 (!((NU32)(discr0) < (NU32)((*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)((NU32)(d0) + (NU32)((*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 (!((*(*(*n0).sons[(i_yFVGqjYX0rOVrP1UbIcxlQ)- 0]).typ).kind == ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 22) || (*(*(*n0).sons[(i_yFVGqjYX0rOVrP1UbIcxlQ)- 0]).typ).kind == ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 28) || (*(*(*n0).sons[(i_yFVGqjYX0rOVrP1UbIcxlQ)- 0]).typ).kind == ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 24))) goto LA12;
							dooperation_3F8QeaTyYrJJF2gjBr6b8A((*((void**) ((NI)((NU32)(d0) + (NU32)((*(*n0).sons[(i_yFVGqjYX0rOVrP1UbIcxlQ)- 0]).offset))))), op0);
						}
						goto LA10;
						LA12: ;
						{
							forallchildrenaux_YOI1Uo54H9aas13WthjhsfA(((void*) ((NI)((NU32)(d0) + (NU32)((*(*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)((NU32)(d0) + (NU32)((NI)((NU32)(i_hJ6Z9cJNGnrKLq9ceDKabzgw) * (NU32)((*(*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)((NU32)((NI)((NU32)(d0) + (NU32)((NI)((NU32)(i_vg6ijnMQzATRA1jJdNTpZg) * (NU32)((*(*(*cell0).typ).base).size))))) + (NU32)(((NI) 8))))), (*(*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)((NU32)(u0) >> (NU32)(((NI) 12))));
	{
		if (!!((t0 == NIM_NIL))) goto LA3;
		u0 = (NI)((NU32)((NI)((NU32)(u0) % (NU32)(((NI) 4096)))) / (NU32)(((NI) 8)));
		result0 = !(((NI)((*t0).bits[((NI)((NU32)(u0) >> (NU32)(((NI) 5))))- 0] & (NI)((NU32)(((NI) 1)) << (NU32)(((NI) ((NI)(u0 & ((NI) 31))))))) == ((NI) 0)));
		{
			if (!!(result0)) goto LA7;
			(*t0).bits[((NI)((NU32)(u0) >> (NU32)(((NI) 5))))- 0] = (NI)((*t0).bits[((NI)((NU32)(u0) >> (NU32)(((NI) 5))))- 0] | (NI)((NU32)(((NI) 1)) << (NU32)(((NI) ((NI)(u0 & ((NI) 31)))))));
		}
		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_NIMCALL(void, 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;
	nimGCvisit((void*)(*a).parent, op);
	nimGCvisit((void*)(*a).message, op);
	nimGCvisit((void*)(*a).trace, op);
}
static N_NIMCALL(void, T_Q5wkpxktOdTGvlSRo9bzt9aw_4)(void) {
	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\015\012", ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_5)? (((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_5))->data:"nil");
		fflush(stdout);
		exit(((NI) 1));
	}
	LA1: ;
}

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 = ((NU32)((*it0).key) <= (NU32)(key0));
				if (!(LOC5)) goto LA6;
				LOC5 = ((NU32)(key0) < (NU32)((*it0).upperbound));
				LA6: ;
				if (!LOC5) goto LA7;
				result0 = it0;
				goto BeforeRet;
			}
			LA7: ;
			it0 = (*it0).link[(((NU32)((*it0).key) < (NU32)(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)((NU32)(((NI) ((NI)(((NI) (p0)) & ((NI) 4095))))) - (NU32)((NI)(((NI)sizeof(Smallchunk_tXn60W2f8h3jgAYdEmy5NQ)) - ((NI) 8))));
				{
					Freecell_u6M5LHprqzkn9axr04yg9bGQ* d0;
					if (!((NU32)(offset0) < (NU32)((*c0).acc))) goto LA18;
					d0 = ((Freecell_u6M5LHprqzkn9axr04yg9bGQ*) ((NI)((NU32)((NI)((NU32)(((NI) ((&(*c0).data)))) + (NU32)(offset0))) - (NU32)((NI)((NU32)(offset0) % (NU32)((*c0).Sup.size))))));
					{
						if (!((NU32)(((NI) 1)) < (NU32)((*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 = ((NU32)(((NI) 1)) < (NU32)((*((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 = ((NU32)((*a0).minlargeobj) <= (NU32)(q0));
			if (!(LOC34)) goto LA35;
			LOC34 = ((NU32)(q0) <= (NU32)((*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 (!((NU32)(((NI) 1)) < (NU32)((*((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 (!((NU32)(((NI) 4096)) < (NU32)(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)((NU32)((*objstart0).refcount) + (NU32)(((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;
		LOC3 = (int)0;
		LOC3 = setjmp(registers0);
		if (!(LOC3 == ((NI32) 0))) goto LA4;
		max0 = ((NI) ((*gch0).stackbottom));
		sp0 = ((NI) ((&registers0)));
		sp0 = (NI)(sp0 & ((NI) -4));
		{
			while (1) {
				if (!((NU32)(sp0) < (NU32)((NI)(max0 - ((NI) 32))))) goto LA7;
				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)((NU32)(sp0) + (NU32)(((NI) 32)));
			} LA7: ;
		}
		{
			while (1) {
				if (!((NU32)(sp0) <= (NU32)(max0))) goto LA9;
				gcmark_JLiT51Zk6OLnaexGSTHHEQsystem(gch0, (*((void**) (sp0))));
				sp0 = (NI)((NU32)(sp0) + (NU32)(((NI) 4)));
			} LA9: ;
		}
	}
	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 (!((NU32)((*c0).refcount) < (NU32)(((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;
			dealloc_RCjNtRnHdRYntrcE7YtwWw(((void*) (it0)));
			it0 = n0;
		} LA2: ;
	}
	(*s0).head = NIM_NIL;
	dealloc_RCjNtRnHdRYntrcE7YtwWw(((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 = ((NU32)(((NI) 1)) < (NU32)((*((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)((NU32)(u0) >> (NU32)(((NI) 12))));
	{
		if (!!((t0 == NIM_NIL))) goto LA3;
		u0 = (NI)((NU32)((NI)((NU32)(u0) % (NU32)(((NI) 4096)))) / (NU32)(((NI) 8)));
		result0 = !(((NI)((*t0).bits[((NI)((NU32)(u0) >> (NU32)(((NI) 5))))- 0] & (NI)((NU32)(((NI) 1)) << (NU32)(((NI) ((NI)(u0 & ((NI) 31))))))) == ((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) 15))) 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)((NU32)((*r_9a32VcH5sesHHXC9bwz5Nh0w).key) << (NU32)(((NI) 9))) | (NI)((NU32)((NI)((NU32)(i_FLrFOsLu5leUfFoACchGxA) << (NU32)(((NI) 5)))) + (NU32)(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)((NU32)(s_1Y9aKtFZmdmj17yg9arcbSqA) << (NU32)(((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 (!((NU32)(a_3gxhb5SKJHpRJiXNtI4DXQ) < (NU32)(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)((NU32)(a_3gxhb5SKJHpRJiXNtI4DXQ) + (NU32)(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)((NU32)(w_ibXjzXOz1myjpSVQLK6sOw) >> (NU32)(((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_NIMCALL(NI, gettotalmem_9bFvoxSITMVCg7RY8KIar1Q_2)(void) {
	NI result0;
{	result0 = (NI)0;
	result0 = gch_IcYaEuuWivYAS86vFMTS3Q.region.currmem;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NI, getfreemem_9bFvoxSITMVCg7RY8KIar1Q_3)(void) {
	NI result0;
	result0 = (NI)0;
	result0 = gch_IcYaEuuWivYAS86vFMTS3Q.region.freemem;
	return result0;
}

N_NIMCALL(NI, getoccupiedmem_9bFvoxSITMVCg7RY8KIar1Q)(void) {
	NI result0;
	NI LOC1;
	NI LOC2;
{	result0 = (NI)0;
	LOC1 = (NI)0;
	LOC1 = gettotalmem_9bFvoxSITMVCg7RY8KIar1Q_2();
	LOC2 = (NI)0;
	LOC2 = getfreemem_9bFvoxSITMVCg7RY8KIar1Q_3();
	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 = getoccupiedmem_9bFvoxSITMVCg7RY8KIar1Q();
			(*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) 64)) >= ((NI) 500)) ? (NI)(LOC1 / ((NI) 64)) : ((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 (!((NU32)(((NI) 8)) <= (NU32)((*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 (!((NU32)(((NI) 8)) <= (NU32)((*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 (!((NU32)(((NI) 8)) <= (NU32)((*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 (!((NU32)(((NI) 8)) <= (NU32)((*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 (!((NU32)(((NI) 8)) <= (NU32)((*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 (!((NU32)(((NI) 8)) <= (NU32)((*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 (!((NU32)(((NI) 8)) <= (NU32)((*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 (!((NU32)(((NI) 8)) <= (NU32)((*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_NIMCALL(void*, 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 = 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_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) ((*result0).data)), ((void*) (str0)), ((NI) ((NI)(len0 + ((NI) 1)))));
	return result0;
}

N_NIMCALL(NimStringDesc*, 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(stdout, msg0);
}

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

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

N_NIMCALL(void, registersignalhandler_njssp69aa7hvxte9bJ8uuDcg_2)(void) {
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC1;
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC2;
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC3;
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC4;
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC5;
	TY_lfH2drpqP9aSEAAjWgrYv8Q LOC6;
	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) 22), 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);
}

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

N_NIMCALL(void*, 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_7EL8Zq3xF2ujDWgp3bAEogsystem(result0, ((NI) (size0)));
	return result0;
}

N_NIMCALL(NimStringDesc*, 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 = 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_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) ((*result0).data)), ((void*) ((*src0).data)), ((NI) ((NI)((*src0).Sup.len + ((NI) 1)))));
	}
	LA3: ;
	return result0;
}

N_NIMCALL(void*, newObj)(TNimType* typ0, NI size0) {
	void* result0;
	result0 = (void*)0;
	result0 = rawnewobj_QBPo5VW2O56Eeh8hPbQ7Pg(typ0, size0, (&gch_IcYaEuuWivYAS86vFMTS3Q));
	zeromem_7EL8Zq3xF2ujDWgp3bAEogsystem(result0, ((NI) (size0)));
	return result0;
}
static N_NIMCALL(void, Marker_TY_6woiEp3hwhYMr1p5tjkZvA)(void* p, NI op) {
	Overflowerror_I3Jtn27626sFBOls6BBQ2Q* a;
	a = (Overflowerror_I3Jtn27626sFBOls6BBQ2Q*)p;
	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
}

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

static N_INLINE(void, incref_9cAA5YuQAAC3MVbnGeV86swsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
	(*c0).refcount = (NI)((NU32)((*c0).refcount) + (NU32)(((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;
}

static N_INLINE(void, pushCurrentException)(Exception* e0) {
	asgnRef((void**) (&(*e0).parent), currexception_9bVPeDJlYTi9bQApZpfH8wjg);
	asgnRef((void**) (&currexception_9bVPeDJlYTi9bQApZpfH8wjg), e0);
}

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;
}

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;
			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_fPlwH3r9agN9aEHB6yCPMh0wsystem(((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_fPlwH3r9agN9aEHB6yCPMh0wsystem(((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_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) ((&buf0[(L0)- 0]))), " [", ((NI) 2));
			L0 += ((NI) 2);
		}
		LA47: ;
		{
			if (!((NI)(L0 + ((*e0).name ? strlen((*e0).name) : 0)) < ((NI) 2000))) goto LA51;
			copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem(((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) 3)) < ((NI) 2000))) goto LA55;
			copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) ((&buf0[(L0)- 0]))), "]\015\012", ((NI) 3));
			L0 += ((NI) 3);
		}
		LA55: ;
		showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ(((NCSTRING) (buf0)));
		quitordebug_IZ2oOmqdsYQ7vixQGKSDcAsystem();
	}
	LA19: ;
	}BeforeRet: ;
}

N_NIMCALL(void, raiseException)(Exception* e0, NCSTRING ename0) {
	(*e0).name = ename0;
	raiseexceptionaux_jP8mO9c3YubVoLarNIvGorQ(e0);
}

static N_INLINE(void, sysfatal_cjY6dGD4PiJNY9cmtw6Ay8Qsystem)(NimStringDesc* message0) {
	Overflowerror_I3Jtn27626sFBOls6BBQ2Q* e0;
	NimStringDesc* LOC1;
	e0 = (Overflowerror_I3Jtn27626sFBOls6BBQ2Q*)0;
	e0 = (Overflowerror_I3Jtn27626sFBOls6BBQ2Q*) 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 = copyStringRC1(message0);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	raiseException((Exception*)e0, "OverflowError");
}

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

static N_INLINE(NI, addInt)(NI a0, NI b0) {
	NI result0;
{	result0 = (NI)0;
	result0 = (NI)((NU32)(a0) + (NU32)(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)((NU32)(a0) * (NU32)(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_NIMCALL(void*, 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) 8));
	result0 = newObjRC1(typ0, size0);
	(*((TGenericSeq*) (result0))).len = len0;
	(*((TGenericSeq*) (result0))).reserved = len0;
	return result0;
}

N_NIMCALL(void*, nimLoadLibrary)(NimStringDesc* path0) {
	void* result0;
	HINSTANCE LOC1;
	result0 = (void*)0;
	LOC1 = (HINSTANCE)0;
	LOC1 = LoadLibraryA(path0->data);
	result0 = ((void*) (LOC1));
	return result0;
}

N_NIMCALL(NI, writebuffer_nZ0pNe9cd9cXtoayexCiaDtA)(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, rawwrite_jx9aEH9bXDIKyLGJN0AmOlyQ)(FILE* f0, NimStringDesc* s0) {
	NI LOC1;
	LOC1 = (NI)0;
	LOC1 = writebuffer_nZ0pNe9cd9cXtoayexCiaDtA(f0, ((void*) (s0->data)), ((NI) ((s0 ? s0->Sup.len : 0))));
}

N_NOINLINE(void, nimLoadLibraryError)(NimStringDesc* path0) {
	rawwrite_jx9aEH9bXDIKyLGJN0AmOlyQ(stderr, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_9));
	rawwrite_jx9aEH9bXDIKyLGJN0AmOlyQ(stderr, path0);
	rawwrite_jx9aEH9bXDIKyLGJN0AmOlyQ(stderr, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_10));
	rawwrite_jx9aEH9bXDIKyLGJN0AmOlyQ(stderr, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_11));
	exit(((NI) 1));
}

N_NOINLINE(void, procaddrerror_pUHoKX3bTKkk6SE40virPQ)(NCSTRING name0) {
	rawwrite_jx9aEH9bXDIKyLGJN0AmOlyQ(stderr, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_12));
	write_ADGLlEJAOtGNWWur8rrJfg(stderr, name0);
	rawwrite_jx9aEH9bXDIKyLGJN0AmOlyQ(stderr, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_10));
	exit(((NI) 1));
}

N_NIMCALL(void*, nimGetProcAddr)(void* lib0, NCSTRING name0) {
	void* result0;
	TY_4y4exD1dAnu89atYV5jeSuw decorated0;
	NI m0;
{	result0 = (void*)0;
	result0 = GetProcAddress(((HINSTANCE) (lib0)), name0);
	{
		if (!!((result0 == NIM_NIL))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	memset((void*)decorated0, 0, sizeof(decorated0));
	decorated0[(((NI) 0))- 0] = 95;
	m0 = ((NI) 1);
	{
		while (1) {
			if (!(m0 < ((NI) 245))) goto LA6;
			{
				if (!((NU8)(name0[(NI)(m0 - ((NI) 1))]) == (NU8)(0))) goto LA9;
				goto LA5;
			}
			LA9: ;
			decorated0[(m0)- 0] = name0[(NI)(m0 - ((NI) 1))];
			m0 += ((NI) 1);
		} LA6: ;
	} LA5: ;
	decorated0[(m0)- 0] = 64;
	{
		NI i_bsKJyj4irUyBRkSU8pl1kg;
		NI res_9cExGXF0P0SoFJwf5WCOSAw;
		i_bsKJyj4irUyBRkSU8pl1kg = (NI)0;
		res_9cExGXF0P0SoFJwf5WCOSAw = ((NI) 0);
		{
			while (1) {
				NI k0;
				if (!(res_9cExGXF0P0SoFJwf5WCOSAw <= ((NI) 50))) goto LA13;
				i_bsKJyj4irUyBRkSU8pl1kg = res_9cExGXF0P0SoFJwf5WCOSAw;
				k0 = (NI)(i_bsKJyj4irUyBRkSU8pl1kg * ((NI) 4));
				{
					if (!((NI)(k0 / ((NI) 100)) == ((NI) 0))) goto LA16;
					{
						if (!((NI)(k0 / ((NI) 10)) == ((NI) 0))) goto LA20;
						m0 = (NI)(m0 + ((NI) 1));
					}
					goto LA18;
					LA20: ;
					{
						m0 = (NI)(m0 + ((NI) 2));
					}
					LA18: ;
				}
				goto LA14;
				LA16: ;
				{
					m0 = (NI)(m0 + ((NI) 3));
				}
				LA14: ;
				decorated0[((NI)(m0 + ((NI) 1)))- 0] = 0;
				{
					while (1) {
						decorated0[(m0)- 0] = ((NIM_CHAR) (((NI) ((NI)(((NI) 48) + (NI)((NU32)(k0) % (NU32)(((NI) 10))))))));
						m0 -= ((NI) 1);
						k0 = (NI)(k0 / ((NI) 10));
						{
							if (!(k0 == ((NI) 0))) goto LA28;
							goto LA24;
						}
						LA28: ;
					}
				} LA24: ;
				result0 = GetProcAddress(((HINSTANCE) (lib0)), ((NCSTRING) (decorated0)));
				{
					if (!!((result0 == NIM_NIL))) goto LA32;
					goto BeforeRet;
				}
				LA32: ;
				res_9cExGXF0P0SoFJwf5WCOSAw += ((NI) 1);
			} LA13: ;
		}
	}
	procaddrerror_pUHoKX3bTKkk6SE40virPQ(name0);
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void*, 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) 8));
	result0 = newObj(typ0, size0);
	(*((TGenericSeq*) (result0))).len = len0;
	(*((TGenericSeq*) (result0))).reserved = len0;
	return result0;
}

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 = ((NU32)(a0) <= (NU32)(x0));
	if (!(LOC1)) goto LA2;
	LOC1 = ((NU32)(x0) <= (NU32)(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 (!((NU32)(((NI) 4096)) <= (NU32)(((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;
	nimGCvisit((void*)(*a).Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.message, op);
	nimGCvisit((void*)(*a).Sup.trace, op);
}

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

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

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)((NU32)(d0) + (NU32)((*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_7EL8Zq3xF2ujDWgp3bAEogsystem(((void*) ((NI)((NU32)(d0) + (NU32)((*n0).offset)))), ((NI) ((*(*n0).typ).size)));
	}
	break;
	}
}

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)((NU32)(d0) + (NU32)((NI)((NU32)(i_qaFcGopYeH9cOZpINBxnz5w) * (NU32)((*(*mt0).base).size)))))), (*mt0).base);
					res_wgf77gg7tWlFJCoTaIGsYg += ((NI) 1);
				} LA7: ;
			}
		}
	}
	break;
	default:
	{
		zeromem_7EL8Zq3xF2ujDWgp3bAEogsystem(dest0, ((NI) ((*mt0).size)));
	}
	break;
	}
}

N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!!((src0 == NIM_NIL))) goto LA3;
		{
			if (!!(((NI)((*src0).Sup.reserved & ((NI) (-2147483647 -1))) == ((NI) 0)))) goto LA7;
			result0 = src0;
		}
		goto LA5;
		LA7: ;
		{
			result0 = rawNewStringNoInit((*src0).Sup.len);
			(*result0).Sup.len = (*src0).Sup.len;
			copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) ((*result0).data)), ((void*) ((*src0).data)), ((NI) ((NI)((*src0).Sup.len + ((NI) 1)))));
		}
		LA5: ;
	}
	LA3: ;
	return result0;
}

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 = newObj((&strdesc_D0UzA4zsDu5tgpJQ9a9clXPg), (NI)((NI)(((NI)sizeof(TGenericSeq)) + s0) + ((NI) 1)));
	result0 = ((NimStringDesc*) (LOC5));
	(*result0).Sup.reserved = s0;
	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_fPlwH3r9agN9aEHB6yCPMh0wsystem(((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;
}

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_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) 8));
	copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) (res0)), ((void*) (ol0)), ((NI) ((NI)(oldsize0 + ((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g))))));
	zeromem_7EL8Zq3xF2ujDWgp3bAEogsystem(((void*) ((NI)((NU32)((NI)((NU32)(((NI) (res0))) + (NU32)(oldsize0))) + (NU32)(((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g)))))), ((NI) ((NI)(newsize0 - oldsize0))));
	{
		if (!((NU32)((NI)((NU32)((*ol0).refcount) >> (NU32)(((NI) 3)))) <= (NU32)(((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_NIMCALL(void*, growobj_AVYny8c0GTk28gxjmat1MA)(void* old0, NI newsize0) {
	void* result0;
	result0 = (void*)0;
	result0 = growobj_FZeyQYjWPcE9c06y1gNqZxw(old0, newsize0, (&gch_IcYaEuuWivYAS86vFMTS3Q));
	return result0;
}

N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest0, NI addlen0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!((NI)((*dest0).Sup.len + addlen0) <= ((NI) ((NI)((*dest0).Sup.reserved & ((NI) 2147483647)))))) goto LA3;
		result0 = dest0;
	}
	goto LA1;
	LA3: ;
	{
		NI sp0;
		NI LOC6;
		void* LOC7;
		LOC6 = (NI)0;
		LOC6 = resize_bzF9a0JivP3Z4njqaxuLc5wsystem(((NI) ((NI)((*dest0).Sup.reserved & ((NI) 2147483647)))));
		sp0 = ((LOC6 >= (NI)((*dest0).Sup.len + addlen0)) ? LOC6 : (NI)((*dest0).Sup.len + addlen0));
		LOC7 = (void*)0;
		LOC7 = growobj_AVYny8c0GTk28gxjmat1MA(((void*) (dest0)), (NI)((NI)(((NI)sizeof(TGenericSeq)) + sp0) + ((NI) 1)));
		result0 = ((NimStringDesc*) (LOC7));
		(*result0).Sup.reserved = sp0;
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s0, NIM_CHAR c0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = s0;
	{
		void* LOC5;
		if (!(((NI) ((NI)((*result0).Sup.reserved & ((NI) 2147483647)))) <= (*result0).Sup.len)) goto LA3;
		(*result0).Sup.reserved = resize_bzF9a0JivP3Z4njqaxuLc5wsystem(((NI) ((NI)((*result0).Sup.reserved & ((NI) 2147483647)))));
		LOC5 = (void*)0;
		LOC5 = growobj_AVYny8c0GTk28gxjmat1MA(((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_NIMCALL(NimStringDesc*, mnewString)(NI len0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(len0);
	(*result0).Sup.len = len0;
	return result0;
}

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

N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq0, NI elemsize0) {
	TGenericSeq* result0;
	result0 = (TGenericSeq*)0;
	result0 = seq0;
	{
		void* LOC5;
		if (!(((NI) ((NI)((*result0).reserved & ((NI) 2147483647)))) <= (*result0).len)) goto LA3;
		(*result0).reserved = resize_bzF9a0JivP3Z4njqaxuLc5wsystem(((NI) ((NI)((*result0).reserved & ((NI) 2147483647)))));
		LOC5 = (void*)0;
		LOC5 = growobj_AVYny8c0GTk28gxjmat1MA(((void*) (result0)), (NI)((NI)(elemsize0 * (*result0).reserved) + ((NI) 8)));
		result0 = ((TGenericSeq*) (LOC5));
	}
	LA3: ;
	return result0;
}

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)((NU32)(d0) + (NU32)((*n0).offset)))), ((void*) ((NI)((NU32)(s0) + (NU32)((*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_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) ((NI)((NU32)(d0) + (NU32)((*n0).offset)))), ((void*) ((NI)((NU32)(s0) + (NU32)((*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) (-2147483647 -1))) == ((NI) 0)));
			LA7: ;
			if (!LOC4) goto LA8;
			unsureAsgnRef(x0, s20);
		}
		goto LA2;
		LA8: ;
		{
			NimStringDesc* LOC11;
			LOC11 = (NimStringDesc*)0;
			LOC11 = 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) (-2147483647 -1))) == ((NI) 0)));
			LA18: ;
			if (!LOC15) goto LA19;
			unsureAsgnRef(x0, s20);
			goto BeforeRet;
		}
		LA19: ;
		LOC21 = (void*)0;
		LOC21 = 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)((NU32)((NI)((NU32)(dst0) + (NU32)((NI)((NU32)(i_b7RBYMpWHoyeYe0Xf0pa6A) * (NU32)((*(*mt0).base).size))))) + (NU32)(((NI) 8))))), ((void*) ((NI)((NU32)((NI)((NU32)(((NI) (s20))) + (NU32)((NI)((NU32)(i_b7RBYMpWHoyeYe0Xf0pa6A) * (NU32)((*(*mt0).base).size))))) + (NU32)(((NI) 8))))), (*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)((NU32)(d0) + (NU32)((NI)((NU32)(i_b7RBYMpWHoyeYe0Xf0pa6A_3) * (NU32)((*(*mt0).base).size)))))), ((void*) ((NI)((NU32)(s0) + (NU32)((NI)((NU32)(i_b7RBYMpWHoyeYe0Xf0pa6A_3) * (NU32)((*(*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_fPlwH3r9agN9aEHB6yCPMh0wsystem(dest0, src0, ((NI) ((*mt0).size)));
	}
	break;
	}
	}BeforeRet: ;
}

N_NIMCALL(void, genericAssign)(void* dest0, void* src0, TNimType* mt0) {
	genericassignaux_T3cq9aUp9bgGOBuyUSWGriTA(dest0, src0, mt0, NIM_FALSE);
}

N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s0, NI newlen0) {
	NimStringDesc* result0;
	NI n0;
	result0 = (NimStringDesc*)0;
	n0 = ((newlen0 >= ((NI) 0)) ? newlen0 : ((NI) 0));
	{
		if (!(n0 <= ((NI) ((NI)((*s0).Sup.reserved & ((NI) 2147483647)))))) goto LA3;
		result0 = s0;
	}
	goto LA1;
	LA3: ;
	{
		result0 = 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) = 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) = 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_NIMCALL(NimStringDesc*, nimIntToStr)(NI x0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) 16));
	add_IbYQ9cTcoQ89aIwM2IEYGMng((&result0), ((NI64) (x0)));
	return result0;
}
static N_NIMCALL(void, Marker_TY_HX2M9cQhE3jaovp9aYJDdslA)(void* p, NI op) {
	Ioerror_9czoZw3pzPyrBmb5zTHY1OQ* a;
	a = (Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*)p;
	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.message, op);
	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*) 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 = copyStringRC1(message0);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	raiseException((Exception*)e0, "IOError");
}

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

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

N_NIMCALL(void, flushfile_BWnr8V7RERYno9bIdPmw8Hw)(FILE* f0) {
	int LOC1;
	LOC1 = (int)0;
	LOC1 = fflush(f0);
}
static N_NIMCALL(void, Marker_TY_G3kU09cKkEAm4eRITOVFhdQ)(void* p, NI op) {
	NI16* a;
	NI LOC1;
	a = (NI16*)p;
	LOC1 = (NI)0;
	for (LOC1 = 0; LOC1 < 1000001; LOC1++) {
	}
}

N_NIMCALL(NI16*, newwidecstring_b3CORJA07cGvZB3j3M3bqQ)(NCSTRING source0, NI L0) {
	NI16* result0;
	NI d0;
	result0 = (NI16*)0;
	result0 = (NI16*) newObj((&NTI_G3kU09cKkEAm4eRITOVFhdQ), ((NI) ((NI)((NI)(L0 * ((NI) 4)) + ((NI) 2)))));
	d0 = ((NI) 0);
	{
		NI ch_l7NRX9bmGJ9cngTjwFrcokXA;
		NI i_oGET0vBFZcFZIWLxhud1uA;
		NI result_wV6mN9aqfqr9a8UON6nTA9clw;
		ch_l7NRX9bmGJ9cngTjwFrcokXA = (NI)0;
		i_oGET0vBFZcFZIWLxhud1uA = ((NI) 0);
		result_wV6mN9aqfqr9a8UON6nTA9clw = (NI)0;
		{
			while (1) {
				if (!(i_oGET0vBFZcFZIWLxhud1uA < L0)) goto LA3;
				{
					if (!((NU32)(((NI) (((NU8)(source0[i_oGET0vBFZcFZIWLxhud1uA]))))) <= (NU32)(((NI) 127)))) goto LA6;
					result_wV6mN9aqfqr9a8UON6nTA9clw = ((NI) (((NU8)(source0[i_oGET0vBFZcFZIWLxhud1uA]))));
					i_oGET0vBFZcFZIWLxhud1uA += ((NI) 1);
				}
				goto LA4;
				LA6: ;
				{
					if (!((NI)((NU32)(((NI) (((NU8)(source0[i_oGET0vBFZcFZIWLxhud1uA]))))) >> (NU32)(((NI) 5))) == ((NI) 6))) goto LA9;
					result_wV6mN9aqfqr9a8UON6nTA9clw = (NI)((NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(source0[i_oGET0vBFZcFZIWLxhud1uA])))) & ((NI) 31))))) << (NU32)(((NI) 6))) | ((NI) ((NI)(((NI) (((NU8)(source0[(NI)(i_oGET0vBFZcFZIWLxhud1uA + ((NI) 1))])))) & ((NI) 63)))));
					i_oGET0vBFZcFZIWLxhud1uA += ((NI) 2);
				}
				goto LA4;
				LA9: ;
				{
					if (!((NI)((NU32)(((NI) (((NU8)(source0[i_oGET0vBFZcFZIWLxhud1uA]))))) >> (NU32)(((NI) 4))) == ((NI) 14))) goto LA12;
					result_wV6mN9aqfqr9a8UON6nTA9clw = (NI)((NI)((NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(source0[i_oGET0vBFZcFZIWLxhud1uA])))) & ((NI) 15))))) << (NU32)(((NI) 12))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(source0[(NI)(i_oGET0vBFZcFZIWLxhud1uA + ((NI) 1))])))) & ((NI) 63))))) << (NU32)(((NI) 6)))) | ((NI) ((NI)(((NI) (((NU8)(source0[(NI)(i_oGET0vBFZcFZIWLxhud1uA + ((NI) 2))])))) & ((NI) 63)))));
					i_oGET0vBFZcFZIWLxhud1uA += ((NI) 3);
				}
				goto LA4;
				LA12: ;
				{
					if (!((NI)((NU32)(((NI) (((NU8)(source0[i_oGET0vBFZcFZIWLxhud1uA]))))) >> (NU32)(((NI) 3))) == ((NI) 30))) goto LA15;
					result_wV6mN9aqfqr9a8UON6nTA9clw = (NI)((NI)((NI)((NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(source0[i_oGET0vBFZcFZIWLxhud1uA])))) & ((NI) 7))))) << (NU32)(((NI) 18))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(source0[(NI)(i_oGET0vBFZcFZIWLxhud1uA + ((NI) 1))])))) & ((NI) 63))))) << (NU32)(((NI) 12)))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(source0[(NI)(i_oGET0vBFZcFZIWLxhud1uA + ((NI) 2))])))) & ((NI) 63))))) << (NU32)(((NI) 6)))) | ((NI) ((NI)(((NI) (((NU8)(source0[(NI)(i_oGET0vBFZcFZIWLxhud1uA + ((NI) 3))])))) & ((NI) 63)))));
					i_oGET0vBFZcFZIWLxhud1uA += ((NI) 4);
				}
				goto LA4;
				LA15: ;
				{
					result_wV6mN9aqfqr9a8UON6nTA9clw = ((NI) 65533);
					i_oGET0vBFZcFZIWLxhud1uA += ((NI) 1);
				}
				LA4: ;
				ch_l7NRX9bmGJ9cngTjwFrcokXA = result_wV6mN9aqfqr9a8UON6nTA9clw;
				{
					if (!((NU32)(ch_l7NRX9bmGJ9cngTjwFrcokXA) <= (NU32)(((NI) 65535)))) goto LA20;
					{
						NIM_BOOL LOC24;
						LOC24 = (NIM_BOOL)0;
						LOC24 = ((NU32)(((NI) 55296)) <= (NU32)(ch_l7NRX9bmGJ9cngTjwFrcokXA));
						if (!(LOC24)) goto LA25;
						LOC24 = ((NU32)(ch_l7NRX9bmGJ9cngTjwFrcokXA) <= (NU32)(((NI) 57343)));
						LA25: ;
						if (!LOC24) goto LA26;
						result0[(d0)- 0] = ((NI16) -3);
					}
					goto LA22;
					LA26: ;
					{
						result0[(d0)- 0] = ((NI16)(NU16)(NU)(ch_l7NRX9bmGJ9cngTjwFrcokXA));
					}
					LA22: ;
				}
				goto LA18;
				LA20: ;
				{
					if (!((NU32)(((NI) 1114111)) < (NU32)(ch_l7NRX9bmGJ9cngTjwFrcokXA))) goto LA30;
					result0[(d0)- 0] = ((NI16) -3);
				}
				goto LA18;
				LA30: ;
				{
					NI ch0;
					ch0 = (NI)((NU32)(ch_l7NRX9bmGJ9cngTjwFrcokXA) - (NU32)(((NI) 65536)));
					result0[(d0)- 0] = ((NI16)(NU16)(NU)((NI)((NU32)((NI)((NU32)(ch0) >> (NU32)(((NI) 10)))) + (NU32)(((NI) 55296)))));
					d0 += ((NI) 1);
					result0[(d0)- 0] = ((NI16)(NU16)(NU)(((NI) ((NI)((NU32)(((NI) ((NI)(ch0 & ((NI) 1023))))) + (NU32)(((NI) 56320)))))));
				}
				LA18: ;
				d0 += ((NI) 1);
			} LA3: ;
		}
	}
	result0[(d0)- 0] = ((NI16) 0);
	return result0;
}

N_NIMCALL(NI16*, newwidecstring_NuXSaDWgkbvz3UCBEjgeFQ)(NCSTRING s0) {
	NI16* result0;
{	result0 = (NI16*)0;
	{
		if (!(s0 == 0)) goto LA3;
		result0 = NIM_NIL;
		goto BeforeRet;
	}
	LA3: ;
	result0 = newwidecstring_b3CORJA07cGvZB3j3M3bqQ(s0, (s0 ? strlen(s0) : 0));
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void*, fopen_bNJ9biJe4vNljLNorzQr9aDw)(NCSTRING filename0, NCSTRING mode0) {
	void* result0;
	NI16* f0;
	NI16* m0;
	result0 = (void*)0;
	f0 = newwidecstring_NuXSaDWgkbvz3UCBEjgeFQ(filename0);
	m0 = newwidecstring_NuXSaDWgkbvz3UCBEjgeFQ(mode0);
	result0 = _wfopen(f0, m0);
	return result0;
}

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_bNJ9biJe4vNljLNorzQr9aDw(filename0->data, Formatopen_129cS4U5eK4wWqE9bNeKN1Aw[(mode0)- 0]->data);
	{
		if (!!((p0 == NIM_NIL))) goto LA3;
		result0 = NIM_TRUE;
		(*f0) = ((FILE*) (p0));
		{
			NIM_BOOL LOC7;
			int LOC11;
			LOC7 = (NIM_BOOL)0;
			LOC7 = (((NI) 0) < bufsize0);
			if (!(LOC7)) goto LA8;
			LOC7 = (bufsize0 <= ((NI) 2147483647));
			LA8: ;
			if (!LOC7) goto LA9;
			LOC11 = (int)0;
			LOC11 = setvbuf((*f0), NIM_NIL, _IOFBF, ((size_t) (((int) (bufsize0)))));
		}
		goto LA5;
		LA9: ;
		{
			int LOC15;
			if (!(bufsize0 == ((NI) 0))) goto LA13;
			LOC15 = (int)0;
			LOC15 = setvbuf((*f0), NIM_NIL, _IONBF, ((NI) 0));
		}
		goto LA5;
		LA13: ;
		LA5: ;
	}
	LA3: ;
	return result0;
}

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

N_NIMCALL(NIM_BOOL, stacktraceavailable_wACAbIVQ9chE25gS5iNqm9bw)(void) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = NIM_FALSE;
	return result0;
}

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

N_NIMCALL(int, getfilehandle_bZ9c2yojtXoDTUpfyl8h8Rg)(FILE* f0) {
	int result0;
	result0 = (int)0;
	result0 = fileno(f0);
	return result0;
}
static N_NIMCALL(void, Marker_TY_1VeTzqrFu2VJ4a6cGvuoyA)(void* p, NI op) {
	TNimObject* a;
	a = (TNimObject*)p;
}

N_NIMCALL(void, nimGCunref)(void* p0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* cell0;
	NI L0;
	NI i0;
	Cell_1zcF9cV8XIAtbN8h5HRUB8g** d0;
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* LOC7;
	cell0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(p0);
	L0 = (NI)(gch_IcYaEuuWivYAS86vFMTS3Q.additionalroots.len - ((NI) 1));
	i0 = L0;
	d0 = gch_IcYaEuuWivYAS86vFMTS3Q.additionalroots.d;
	{
		while (1) {
			if (!(((NI) 0) <= i0)) goto LA2;
			{
				if (!(d0[(i0)- 0] == cell0)) goto LA5;
				d0[(i0)- 0] = d0[(L0)- 0];
				gch_IcYaEuuWivYAS86vFMTS3Q.additionalroots.len -= ((NI) 1);
				goto LA1;
			}
			LA5: ;
			i0 -= ((NI) 1);
		} LA2: ;
	} LA1: ;
	LOC7 = (Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	LOC7 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(p0);
	decref_MV4BBk6J1qu70IbBxwEn4wsystem(LOC7);
}

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_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq0, NI elemsize0, NI newlen0) {
	TGenericSeq* result0;
	result0 = (TGenericSeq*)0;
	result0 = seq0;
	{
		NI LOC5;
		void* LOC6;
		if (!(((NI) ((NI)((*result0).reserved & ((NI) 2147483647)))) < newlen0)) goto LA3;
		LOC5 = (NI)0;
		LOC5 = resize_bzF9a0JivP3Z4njqaxuLc5wsystem(((NI) ((NI)((*result0).reserved & ((NI) 2147483647)))));
		(*result0).reserved = ((LOC5 >= newlen0) ? LOC5 : newlen0);
		LOC6 = (void*)0;
		LOC6 = growobj_AVYny8c0GTk28gxjmat1MA(((void*) (result0)), (NI)((NI)(elemsize0 * (*result0).reserved) + ((NI) 8)));
		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)((NU32)((NI)((NU32)(((NI) (result0))) + (NU32)(((NI) 8)))) + (NU32)((NI)((NU32)(i_459awzx1aJm7CxaoNhJBBBw) * (NU32)(elemsize0)))))), (*LOC13).base, ((Walkop_Wfy7gT5VQ8B3aJBxqU8D9cQ) 2));
					res_gyWliBWJSyIERPIv8yAoTg += ((NI) 1);
				} LA12: ;
			}
		}
		zeromem_7EL8Zq3xF2ujDWgp3bAEogsystem(((void*) ((NI)((NU32)((NI)((NU32)(((NI) (result0))) + (NU32)(((NI) 8)))) + (NU32)((NI)((NU32)(newlen0) * (NU32)(elemsize0)))))), ((NI) ((NI)((NU32)((NI)((NU32)((*result0).len) - (NU32)(newlen0))) * (NU32)(elemsize0)))));
	}
	goto LA1;
	LA8: ;
	LA1: ;
	(*result0).len = newlen0;
	return result0;
}

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

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 (!((NU32)((*c0).refcount) < (NU32)(((NI) 8)))) goto LA11;
			rtladdzct_MV4BBk6J1qu70IbBxwEn4w_2system(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*) 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);
	raiseException((Exception*)e0, "IOError");
}

N_NIMCALL(FILE*, open_hqzpWQbdA2B8l9a6wwNoP4g)(NimStringDesc* filename0, Filemode_fVUBHvW79bXUw1j55Oo9avSQ mode0, NI bufsize0) {
	FILE* result0;
	result0 = (FILE*)0;
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = open_sEp0GH2306oGo9bqBpj5oTQ(&result0, filename0, mode0, bufsize0);
		if (!!(LOC3)) goto LA4;
		sysfatal_p4l3kdztdOPD3nsQRAEDqwsystem(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_20), filename0);
	}
	LA4: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, readline_sO1bQXVRA6RP9cdYJXNKeSw)(FILE* f0, NimStringDesc** line0) {
	NIM_BOOL result0;
	NI pos0;
	int sp0;
{	result0 = (NIM_BOOL)0;
	pos0 = ((NI) 0);
	sp0 = ((int) 80);
	{
		if (!((*line0) == 0)) goto LA3;
		unsureAsgnRef((void**) (&(*line0)), rawNewString(((NI) 80)));
	}
	goto LA1;
	LA3: ;
	{
		sp0 = ((int) (((NI) ((NI)((*((TGenericSeq*) ((*line0)))).reserved & ((NI) 2147483647))))));
		(*line0) = setLengthStr((*line0), ((NI) (sp0)));
	}
	LA1: ;
	{
		while (1) {
			void* LOC8;
			void* m0;
			LOC8 = (void*)0;
			LOC8 = memset(((void*) ((&(*line0)->data[pos0]))), ((int) 10), ((size_t) (sp0)));
			{
				NCSTRING LOC11;
				LOC11 = (NCSTRING)0;
				LOC11 = fgets(((NCSTRING) ((&(*line0)->data[pos0]))), sp0, f0);
				if (!(((void*) (LOC11)) == NIM_NIL)) goto LA12;
				(*line0) = setLengthStr((*line0), ((NI) 0));
				result0 = NIM_FALSE;
				goto BeforeRet;
			}
			LA12: ;
			m0 = memchr(((void*) ((&(*line0)->data[pos0]))), ((int) 10), ((size_t) (sp0)));
			{
				NI last0;
				if (!!((m0 == NIM_NIL))) goto LA16;
				last0 = (NI)(((NI) (m0)) - ((NI) ((&(*line0)->data[((NI) 0)]))));
				{
					NIM_BOOL LOC20;
					LOC20 = (NIM_BOOL)0;
					LOC20 = (((NI) 0) < last0);
					if (!(LOC20)) goto LA21;
					LOC20 = ((NU8)((*line0)->data[(NI)(last0 - ((NI) 1))]) == (NU8)(13));
					LA21: ;
					if (!LOC20) goto LA22;
					(*line0) = setLengthStr((*line0), ((NI) ((NI)(last0 - ((NI) 1)))));
					result0 = NIM_TRUE;
					goto BeforeRet;
				}
				goto LA18;
				LA22: ;
				{
					NIM_BOOL LOC25;
					LOC25 = (NIM_BOOL)0;
					LOC25 = (((NI) 0) < last0);
					if (!(LOC25)) goto LA26;
					LOC25 = ((NU8)((*line0)->data[(NI)(last0 - ((NI) 1))]) == (NU8)(0));
					LA26: ;
					if (!LOC25) goto LA27;
					{
						NIM_BOOL LOC31;
						LOC31 = (NIM_BOOL)0;
						LOC31 = (last0 < (NI)((NI)(pos0 + ((NI) (sp0))) - ((NI) 1)));
						if (!(LOC31)) goto LA32;
						LOC31 = !(((NU8)((*line0)->data[(NI)(last0 + ((NI) 1))]) == (NU8)(0)));
						LA32: ;
						if (!LOC31) goto LA33;
						last0 -= ((NI) 1);
					}
					LA33: ;
				}
				goto LA18;
				LA27: ;
				LA18: ;
				(*line0) = setLengthStr((*line0), ((NI) (last0)));
				result0 = NIM_TRUE;
				goto BeforeRet;
			}
			goto LA14;
			LA16: ;
			{
				sp0 -= ((NI) 1);
			}
			LA14: ;
			pos0 += ((NI) (sp0));
			sp0 = ((int) 128);
			(*line0) = setLengthStr((*line0), ((NI) ((NI)(pos0 + ((NI) (sp0))))));
		}
	}
	}BeforeRet: ;
	return result0;
}
static N_NIMCALL(void, Marker_TY_beOxjNaux3PfvyYBLMJh2A)(void* p, NI op) {
	Reraiseerror_GRbrBa7JIulgD34jGcFb8w* a;
	a = (Reraiseerror_GRbrBa7JIulgD34jGcFb8w*)p;
	nimGCvisit((void*)(*a).Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.message, op);
	nimGCvisit((void*)(*a).Sup.trace, op);
}

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

N_NIMCALL(void, reraiseException)(void) {
	{
		if (!(currexception_9bVPeDJlYTi9bQApZpfH8wjg == NIM_NIL)) goto LA3;
		sysfatal_gu8AGlf3JTsS25q0fXJFMAsystem(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_21));
	}
	goto LA1;
	LA3: ;
	{
		raiseexceptionaux_jP8mO9c3YubVoLarNIvGorQ(currexception_9bVPeDJlYTi9bQApZpfH8wjg);
	}
	LA1: ;
}

N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj0, TNimType* subclass0) {
	NIM_BOOL result0;
	TNimType* x0;
{	result0 = (NIM_BOOL)0;
	x0 = obj0;
	{
		if (!(x0 == subclass0)) goto LA3;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	{
		while (1) {
			if (!!((x0 == subclass0))) goto LA6;
			{
				if (!(x0 == NIM_NIL)) goto LA9;
				result0 = NIM_FALSE;
				goto BeforeRet;
			}
			LA9: ;
			x0 = (*x0).base;
		} LA6: ;
	}
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, HEX24_k53Ge4e9cDjc7y9c5uML7sPQ)(TY_XOVT24GHXwqiEj5GCsEGCA x0) {
	NimStringDesc* result0;
	NIM_BOOL firstelement0;
	NimStringDesc* LOC14;
	result0 = (NimStringDesc*)0;
	result0 = copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_22));
	firstelement0 = NIM_TRUE;
	{
		if (!!(firstelement0)) goto LA3;
		result0 = resizeString(result0, 2);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_23));
	}
	LA3: ;
	result0 = resizeString(result0, 8);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_24));
	result0 = resizeString(result0, 2);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_25));
	{
		if (!(x0.Field0 == 0)) goto LA7;
		result0 = resizeString(result0, 3);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_26));
	}
	goto LA5;
	LA7: ;
	{
		result0 = resizeString(result0, x0.Field0->Sup.len + 0);
appendString(result0, x0.Field0);
	}
	LA5: ;
	firstelement0 = NIM_FALSE;
	{
		if (!!(firstelement0)) goto LA12;
		result0 = resizeString(result0, 2);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_23));
	}
	LA12: ;
	result0 = resizeString(result0, 4);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_27));
	result0 = resizeString(result0, 2);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_25));
	LOC14 = (NimStringDesc*)0;
	LOC14 = nimIntToStr(x0.Field1);
	result0 = resizeString(result0, LOC14->Sup.len + 0);
appendString(result0, LOC14);
	firstelement0 = NIM_FALSE;
	result0 = resizeString(result0, 1);
appendString(result0, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_28));
	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;
}
static N_NIMCALL(void, Marker_TY_TmgWlPUbRr7iGD2UE1cu6A)(void* p, NI op) {
	Assertionerror_8FC9arcap3s5ZtfMs75krtA* a;
	a = (Assertionerror_8FC9arcap3s5ZtfMs75krtA*)p;
	nimGCvisit((void*)(*a).Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.message, op);
	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*) newObj((&NTI_TmgWlPUbRr7iGD2UE1cu6A), sizeof(Assertionerror_8FC9arcap3s5ZtfMs75krtA));
	(*e0).Sup.Sup.m_type = (&NTI_8FC9arcap3s5ZtfMs75krtA);
	LOC1 = (NimStringDesc*)0;
	LOC1 = (*e0).Sup.message; (*e0).Sup.message = copyStringRC1(message0);
	if (LOC1) nimGCunrefNoCycle(LOC1);
	raiseException((Exception*)e0, "AssertionError");
}

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

static N_INLINE(void*, seqtoptr_WLLxNks0H5OcVBUlMtVoJgsystem)(TY_iGkpo9aKQdr3NWelKC4cnJA* x0) {
	void* result0;
	result0 = (void*)0;
	result0 = ((void*) (x0));
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_4vF9aSO3XAhG3fa1Zv59ahoA)(TY_a09bGTAl9ceOKTAytYdkbyKg x0, TY_a09bGTAl9ceOKTAytYdkbyKg y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!!((x0.Field0 == y0.Field0))) goto LA3;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!!((x0.Field1 == y0.Field1))) goto LA7;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA7: ;
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_9blrFJat6Z3Pwrl6WQ3wOyA)(TY_iGkpo9aKQdr3NWelKC4cnJA* x0, TY_iGkpo9aKQdr3NWelKC4cnJA* y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		void* LOC3;
		void* LOC4;
		LOC3 = (void*)0;
		LOC3 = seqtoptr_WLLxNks0H5OcVBUlMtVoJgsystem(x0);
		LOC4 = (void*)0;
		LOC4 = seqtoptr_WLLxNks0H5OcVBUlMtVoJgsystem(y0);
		if (!(LOC3 == LOC4)) goto LA5;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		LOC9 = (NIM_BOOL)0;
		LOC9 = (x0 == 0);
		if (LOC9) goto LA10;
		LOC9 = (y0 == 0);
		LA10: ;
		if (!LOC9) goto LA11;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA11: ;
	{
		if (!!(((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0)))) goto LA15;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA15: ;
	{
		NI i_B9aICU6ekXhYxvhMJcq2y9aA;
		NI HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w;
		NI res_HZmM9cVoNcWoNzkdSbltuhg;
		i_B9aICU6ekXhYxvhMJcq2y9aA = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
		res_HZmM9cVoNcWoNzkdSbltuhg = ((NI) 0);
		{
			while (1) {
				if (!(res_HZmM9cVoNcWoNzkdSbltuhg <= HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w)) goto LA19;
				i_B9aICU6ekXhYxvhMJcq2y9aA = res_HZmM9cVoNcWoNzkdSbltuhg;
				{
					NIM_BOOL LOC22;
					LOC22 = (NIM_BOOL)0;
					LOC22 = HEX3DHEX3D_4vF9aSO3XAhG3fa1Zv59ahoA(x0->data[i_B9aICU6ekXhYxvhMJcq2y9aA], y0->data[i_B9aICU6ekXhYxvhMJcq2y9aA]);
					if (!!(LOC22)) goto LA23;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA23: ;
				res_HZmM9cVoNcWoNzkdSbltuhg += ((NI) 1);
			} LA19: ;
		}
	}
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void, safeadd_XuI5bupZeUeWgjk44qSPBA)(TY_iGkpo9aKQdr3NWelKC4cnJA** x0, TY_a09bGTAl9ceOKTAytYdkbyKg y0) {
	{
		NIM_BOOL LOC3;
		TY_ns9bqkgvSZbKlHoKu0XkvnQ LOC6;
		LOC3 = (NIM_BOOL)0;
		LOC3 = HEX3DHEX3D_9blrFJat6Z3Pwrl6WQ3wOyA((*x0), NIM_NIL);
		if (!LOC3) goto LA4;
		unsureAsgnRef((void**) (&(*x0)), (TY_iGkpo9aKQdr3NWelKC4cnJA*) newSeq((&NTI_iGkpo9aKQdr3NWelKC4cnJA), 1));
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0].Field0 = y0.Field0;
		LOC6[0].Field1 = y0.Field1;
		(*x0)->data[0].Field0 = LOC6[0].Field0;
		asgnRefNoCycle((void**) (&(*x0)->data[0].Field1), LOC6[0].Field1);
	}
	goto LA1;
	LA4: ;
	{
		(*x0) = (TY_iGkpo9aKQdr3NWelKC4cnJA*) incrSeqV2(&((*x0))->Sup, sizeof(TY_a09bGTAl9ceOKTAytYdkbyKg));
		(*x0)->data[(*x0)->Sup.len].Field0 = y0.Field0;
		asgnRefNoCycle((void**) (&(*x0)->data[(*x0)->Sup.len].Field1), y0.Field1);
		++(*x0)->Sup.len;
	}
	LA1: ;
}

static N_INLINE(void*, seqtoptr_V7AASvGxu8gMLloMW9ckRJgsystem)(TY_zuqP4Riz26Oi5fWgPYVEgA* x0) {
	void* result0;
	result0 = (void*)0;
	result0 = ((void*) (x0));
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_59b802owH8LncWkMg9cCE3ng)(TY_zuqP4Riz26Oi5fWgPYVEgA* x0, TY_zuqP4Riz26Oi5fWgPYVEgA* y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		void* LOC3;
		void* LOC4;
		LOC3 = (void*)0;
		LOC3 = seqtoptr_V7AASvGxu8gMLloMW9ckRJgsystem(x0);
		LOC4 = (void*)0;
		LOC4 = seqtoptr_V7AASvGxu8gMLloMW9ckRJgsystem(y0);
		if (!(LOC3 == LOC4)) goto LA5;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		LOC9 = (NIM_BOOL)0;
		LOC9 = (x0 == 0);
		if (LOC9) goto LA10;
		LOC9 = (y0 == 0);
		LA10: ;
		if (!LOC9) goto LA11;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA11: ;
	{
		if (!!(((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0)))) goto LA15;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA15: ;
	{
		NI i_B9aICU6ekXhYxvhMJcq2y9aA_2;
		NI HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_2;
		NI res_HZmM9cVoNcWoNzkdSbltuhg_2;
		i_B9aICU6ekXhYxvhMJcq2y9aA_2 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_2 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_2 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
		res_HZmM9cVoNcWoNzkdSbltuhg_2 = ((NI) 0);
		{
			while (1) {
				if (!(res_HZmM9cVoNcWoNzkdSbltuhg_2 <= HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_2)) goto LA19;
				i_B9aICU6ekXhYxvhMJcq2y9aA_2 = res_HZmM9cVoNcWoNzkdSbltuhg_2;
				{
					if (!!((x0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_2] == y0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_2]))) goto LA22;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA22: ;
				res_HZmM9cVoNcWoNzkdSbltuhg_2 += ((NI) 1);
			} LA19: ;
		}
	}
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void, safeadd_VD4SAHgDoDEHV5x9bi89cbwA)(TY_zuqP4Riz26Oi5fWgPYVEgA** x0, Ttype_LTUWCZolpovw9cWE3JBWSUw* y0) {
	{
		NIM_BOOL LOC3;
		TY_BF9aKj6RAH9ccQDWaEKQ1HOw LOC6;
		LOC3 = (NIM_BOOL)0;
		LOC3 = HEX3DHEX3D_59b802owH8LncWkMg9cCE3ng((*x0), NIM_NIL);
		if (!LOC3) goto LA4;
		unsureAsgnRef((void**) (&(*x0)), (TY_zuqP4Riz26Oi5fWgPYVEgA*) newSeq((&NTI_zuqP4Riz26Oi5fWgPYVEgA), 1));
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = y0;
		asgnRefNoCycle((void**) (&(*x0)->data[0]), LOC6[0]);
	}
	goto LA1;
	LA4: ;
	{
		(*x0) = (TY_zuqP4Riz26Oi5fWgPYVEgA*) incrSeqV2(&((*x0))->Sup, sizeof(Ttype_LTUWCZolpovw9cWE3JBWSUw*));
		asgnRefNoCycle((void**) (&(*x0)->data[(*x0)->Sup.len]), y0);
		++(*x0)->Sup.len;
	}
	LA1: ;
}

static N_INLINE(void*, seqtoptr_E0S8l8wqU9aGJ4REWeYF9aMAsystem)(TY_DXS6mEo7PVUFJkirsQ9bNQA* x0) {
	void* result0;
	result0 = (void*)0;
	result0 = ((void*) (x0));
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_8Lfd9cW8bn5vR0HyDvQO6Hw)(TY_DXS6mEo7PVUFJkirsQ9bNQA* x0, TY_DXS6mEo7PVUFJkirsQ9bNQA* y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		void* LOC3;
		void* LOC4;
		LOC3 = (void*)0;
		LOC3 = seqtoptr_E0S8l8wqU9aGJ4REWeYF9aMAsystem(x0);
		LOC4 = (void*)0;
		LOC4 = seqtoptr_E0S8l8wqU9aGJ4REWeYF9aMAsystem(y0);
		if (!(LOC3 == LOC4)) goto LA5;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		LOC9 = (NIM_BOOL)0;
		LOC9 = (x0 == 0);
		if (LOC9) goto LA10;
		LOC9 = (y0 == 0);
		LA10: ;
		if (!LOC9) goto LA11;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA11: ;
	{
		if (!!(((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0)))) goto LA15;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA15: ;
	{
		NI i_B9aICU6ekXhYxvhMJcq2y9aA_3;
		NI HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_3;
		NI res_HZmM9cVoNcWoNzkdSbltuhg_3;
		i_B9aICU6ekXhYxvhMJcq2y9aA_3 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_3 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_3 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
		res_HZmM9cVoNcWoNzkdSbltuhg_3 = ((NI) 0);
		{
			while (1) {
				if (!(res_HZmM9cVoNcWoNzkdSbltuhg_3 <= HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_3)) goto LA19;
				i_B9aICU6ekXhYxvhMJcq2y9aA_3 = res_HZmM9cVoNcWoNzkdSbltuhg_3;
				{
					if (!!((x0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_3] == y0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_3]))) goto LA22;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA22: ;
				res_HZmM9cVoNcWoNzkdSbltuhg_3 += ((NI) 1);
			} LA19: ;
		}
	}
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void, safeadd_159bXvKbDCwtLAAM9au9cb2iw)(TY_DXS6mEo7PVUFJkirsQ9bNQA** x0, Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA* y0) {
	{
		NIM_BOOL LOC3;
		TY_M0Qdpg6QRblpTaGFq09aZ9aQ LOC6;
		LOC3 = (NIM_BOOL)0;
		LOC3 = HEX3DHEX3D_8Lfd9cW8bn5vR0HyDvQO6Hw((*x0), NIM_NIL);
		if (!LOC3) goto LA4;
		unsureAsgnRef((void**) (&(*x0)), (TY_DXS6mEo7PVUFJkirsQ9bNQA*) newSeq((&NTI_DXS6mEo7PVUFJkirsQ9bNQA), 1));
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0] = y0;
		asgnRefNoCycle((void**) (&(*x0)->data[0]), LOC6[0]);
	}
	goto LA1;
	LA4: ;
	{
		(*x0) = (TY_DXS6mEo7PVUFJkirsQ9bNQA*) incrSeqV2(&((*x0))->Sup, sizeof(Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA*));
		asgnRefNoCycle((void**) (&(*x0)->data[(*x0)->Sup.len]), y0);
		++(*x0)->Sup.len;
	}
	LA1: ;
}

N_NIMCALL(NimStringDesc*, 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 = ((NU32)(o0) < (NU32)((*(*typ0).node).len));
			LA8: ;
			if (!LOC7) goto LA9;
			result0 = 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 = cstrToNimstr((*s0[(i_jJgchJglMdVn5ghHepHNEQ)- 0]).name);
						goto BeforeRet;
					}
					LA17: ;
					res_qY3iGvz4sUYgqm9aIqBy2Yg += ((NI) 1);
				} LA14: ;
			}
		}
	}
	LA1: ;
	LOC19 = (NimStringDesc*)0;
	LOC20 = (NimStringDesc*)0;
	LOC20 = nimIntToStr(e0);
	LOC19 = rawNewString(LOC20->Sup.len + 16);
appendString(LOC19, LOC20);
appendString(LOC19, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_29));
	result0 = LOC19;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*, HEX40_bQHHihY0PYrZkZONSF9a7Cg)(Tnode_bROa11lyF5vxEN9aYNbHmhw** a0, NI a0Len0) {
	TY_ehmV9bTklH2Gt9cXHV9c0HLeQ* result0;
	result0 = (TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
	result0 = (TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*) newSeq((&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ), ((NI) (a0Len0)));
	{
		NI i_bHIHq8p2lXTgo2f10GsQig;
		NI HEX3Atmp_XCD9aTGexyxKtc9cNBZiOUTQ;
		NI res_HBiwVZJTpFHytIclu1hF0g;
		i_bHIHq8p2lXTgo2f10GsQig = (NI)0;
		HEX3Atmp_XCD9aTGexyxKtc9cNBZiOUTQ = (NI)0;
		HEX3Atmp_XCD9aTGexyxKtc9cNBZiOUTQ = (NI)(a0Len0 - ((NI) 1));
		res_HBiwVZJTpFHytIclu1hF0g = ((NI) 0);
		{
			while (1) {
				if (!(res_HBiwVZJTpFHytIclu1hF0g <= HEX3Atmp_XCD9aTGexyxKtc9cNBZiOUTQ)) goto LA3;
				i_bHIHq8p2lXTgo2f10GsQig = res_HBiwVZJTpFHytIclu1hF0g;
				asgnRefNoCycle((void**) (&result0->data[i_bHIHq8p2lXTgo2f10GsQig]), a0[i_bHIHq8p2lXTgo2f10GsQig]);
				res_HBiwVZJTpFHytIclu1hF0g += ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}
static N_NIMCALL(void, Marker_TY_Qx9aKy4vZ9bVz9bnG9brQcRHGA)(void* p, NI op) {
	Oserror_3XwRQvmzCEOC4QnT706q1g* a;
	a = (Oserror_3XwRQvmzCEOC4QnT706q1g*)p;
	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
}

N_NIMCALL(NimStringDesc*, HEX24_GUT0CpACeWzt9cO6i89asYdw)(NI16* w0, NI estimate0, NI replacement0) {
	NimStringDesc* result0;
	NI i0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) ((NI)(estimate0 + (NI)((NU32)(estimate0) >> (NU32)(((NI) 2)))))));
	i0 = ((NI) 0);
	{
		while (1) {
			NI ch0;
			if (!!((w0[(i0)- 0] == ((NI16) 0)))) goto LA2;
			ch0 = ((NI) (((NU16) (w0[(i0)- 0]))));
			i0 += ((NI) 1);
			{
				NIM_BOOL LOC5;
				NI ch20;
				LOC5 = (NIM_BOOL)0;
				LOC5 = (((NI) 55296) <= ch0);
				if (!(LOC5)) goto LA6;
				LOC5 = (ch0 <= ((NI) 56319));
				LA6: ;
				if (!LOC5) goto LA7;
				ch20 = ((NI) (((NU16) (w0[(i0)- 0]))));
				{
					NIM_BOOL LOC11;
					LOC11 = (NIM_BOOL)0;
					LOC11 = (((NI) 56320) <= ch20);
					if (!(LOC11)) goto LA12;
					LOC11 = (ch20 <= ((NI) 57343));
					LA12: ;
					if (!LOC11) goto LA13;
					ch0 = (NI)((NI)((NI)((NU32)(((NI) ((NI)(ch0 & ((NI) 1023))))) << (NU32)(((NI) 10))) + ((NI) ((NI)(ch20 & ((NI) 1023))))) + ((NI) 65536));
					i0 += ((NI) 1);
				}
				goto LA9;
				LA13: ;
				{
					ch0 = replacement0;
				}
				LA9: ;
			}
			goto LA3;
			LA7: ;
			{
				NIM_BOOL LOC17;
				LOC17 = (NIM_BOOL)0;
				LOC17 = (((NI) 56320) <= ch0);
				if (!(LOC17)) goto LA18;
				LOC17 = (ch0 <= ((NI) 57343));
				LA18: ;
				if (!LOC17) goto LA19;
				ch0 = replacement0;
			}
			goto LA3;
			LA19: ;
			LA3: ;
			{
				if (!(ch0 < ((NI) 128))) goto LA23;
				result0 = addChar(result0, ((NIM_CHAR) (((NI) (ch0)))));
			}
			goto LA21;
			LA23: ;
			{
				if (!(ch0 < ((NI) 2048))) goto LA26;
				result0 = addChar(result0, ((NIM_CHAR) (((NI) ((NI)((NI)((NU32)(ch0) >> (NU32)(((NI) 6))) | ((NI) 192)))))));
				result0 = addChar(result0, ((NIM_CHAR) (((NI) ((NI)(((NI) ((NI)(ch0 & ((NI) 63)))) | ((NI) 128)))))));
			}
			goto LA21;
			LA26: ;
			{
				if (!(ch0 < ((NI) 65536))) goto LA29;
				result0 = addChar(result0, ((NIM_CHAR) (((NI) ((NI)((NI)((NU32)(ch0) >> (NU32)(((NI) 12))) | ((NI) 224)))))));
				result0 = addChar(result0, ((NIM_CHAR) (((NI) ((NI)(((NI) ((NI)((NI)((NU32)(ch0) >> (NU32)(((NI) 6))) & ((NI) 63)))) | ((NI) 128)))))));
				result0 = addChar(result0, ((NIM_CHAR) (((NI) ((NI)(((NI) ((NI)(ch0 & ((NI) 63)))) | ((NI) 128)))))));
			}
			goto LA21;
			LA29: ;
			{
				if (!(ch0 <= ((NI) 1114111))) goto LA32;
				result0 = addChar(result0, ((NIM_CHAR) (((NI) ((NI)((NI)((NU32)(ch0) >> (NU32)(((NI) 18))) | ((NI) 240)))))));
				result0 = addChar(result0, ((NIM_CHAR) (((NI) ((NI)(((NI) ((NI)((NI)((NU32)(ch0) >> (NU32)(((NI) 12))) & ((NI) 63)))) | ((NI) 128)))))));
				result0 = addChar(result0, ((NIM_CHAR) (((NI) ((NI)(((NI) ((NI)((NI)((NU32)(ch0) >> (NU32)(((NI) 6))) & ((NI) 63)))) | ((NI) 128)))))));
				result0 = addChar(result0, ((NIM_CHAR) (((NI) ((NI)(((NI) ((NI)(ch0 & ((NI) 63)))) | ((NI) 128)))))));
			}
			goto LA21;
			LA32: ;
			{
				result0 = addChar(result0, 239);
				result0 = addChar(result0, 191);
				result0 = addChar(result0, 189);
			}
			LA21: ;
		} LA2: ;
	}
	return result0;
}

N_NIMCALL(NimStringDesc*, HEX24_QjWkJEdnPpNzR7KF7dYIoQ)(NI16* s0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = HEX24_GUT0CpACeWzt9cO6i89asYdw(s0, ((NI) 80), ((NI) 65533));
	return result0;
}

N_NIMCALL(void, objectinitaux_byg9cq1Sxxop7ZDN9b4I0riw_2)(void* dest0, TNimNode* n0) {
	NI d0;
	d0 = ((NI) (dest0));
	switch ((*n0).kind) {
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 0):
	{
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 1):
	{
		objectInit(((void*) ((NI)((NU32)(d0) + (NU32)((*n0).offset)))), (*n0).typ);
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 2):
	{
		{
			NI i_8WcjKDEkcaKA6zABspuKuA;
			NI HEX3Atmp_8IBoZbjjOz9aM6wU4zAhX4g;
			NI res_Ss7lpQKOdQMXoimpycBTLw;
			i_8WcjKDEkcaKA6zABspuKuA = (NI)0;
			HEX3Atmp_8IBoZbjjOz9aM6wU4zAhX4g = (NI)0;
			HEX3Atmp_8IBoZbjjOz9aM6wU4zAhX4g = (NI)((*n0).len - ((NI) 1));
			res_Ss7lpQKOdQMXoimpycBTLw = ((NI) 0);
			{
				while (1) {
					if (!(res_Ss7lpQKOdQMXoimpycBTLw <= HEX3Atmp_8IBoZbjjOz9aM6wU4zAhX4g)) goto LA6;
					i_8WcjKDEkcaKA6zABspuKuA = res_Ss7lpQKOdQMXoimpycBTLw;
					objectinitaux_byg9cq1Sxxop7ZDN9b4I0riw_2(dest0, (*n0).sons[(i_8WcjKDEkcaKA6zABspuKuA)- 0]);
					res_Ss7lpQKOdQMXoimpycBTLw += ((NI) 1);
				} LA6: ;
			}
		}
	}
	break;
	case ((Tnimnodekind_unfNsxrcATrufDZmpBq4HQ) 3):
	{
		TNimNode* m0;
		m0 = selectbranch_MvIsyjoRI1g7VY9cXrLB1dQ(dest0, n0);
		{
			if (!!((m0 == NIM_NIL))) goto LA10;
			objectinitaux_byg9cq1Sxxop7ZDN9b4I0riw_2(dest0, m0);
		}
		LA10: ;
	}
	break;
	}
}

N_NIMCALL(void, objectInit)(void* dest0, TNimType* typ0) {
	NI d0;
	d0 = ((NI) (dest0));
	switch ((*typ0).kind) {
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 17):
	{
		TNimType** pint0;
		pint0 = ((TNimType**) (dest0));
		(*pint0) = typ0;
		objectinitaux_byg9cq1Sxxop7ZDN9b4I0riw_2(dest0, (*typ0).node);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 18):
	{
		objectinitaux_byg9cq1Sxxop7ZDN9b4I0riw_2(dest0, (*typ0).node);
	}
	break;
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 16):
	case ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 4):
	{
		{
			NI i_M5G3yi11wUM0P6riQhdzEg;
			NI HEX3Atmp_29cceO9aRxbFpKYyzpmk6q0g;
			NI res_BnNklo9b48v0oNxUmZwpY0Q;
			i_M5G3yi11wUM0P6riQhdzEg = (NI)0;
			HEX3Atmp_29cceO9aRxbFpKYyzpmk6q0g = (NI)0;
			HEX3Atmp_29cceO9aRxbFpKYyzpmk6q0g = (NI)((NI)((*typ0).size / (*(*typ0).base).size) - ((NI) 1));
			res_BnNklo9b48v0oNxUmZwpY0Q = ((NI) 0);
			{
				while (1) {
					if (!(res_BnNklo9b48v0oNxUmZwpY0Q <= HEX3Atmp_29cceO9aRxbFpKYyzpmk6q0g)) goto LA6;
					i_M5G3yi11wUM0P6riQhdzEg = res_BnNklo9b48v0oNxUmZwpY0Q;
					objectInit(((void*) ((NI)((NU32)(d0) + (NU32)((NI)(i_M5G3yi11wUM0P6riQhdzEg * (*(*typ0).base).size))))), (*typ0).base);
					res_BnNklo9b48v0oNxUmZwpY0Q += ((NI) 1);
				} LA6: ;
			}
		}
	}
	break;
	default:
	{
	}
	break;
	}
}

N_NIMCALL(NI, readbuffer_nZ0pNe9cd9cXtoayexCiaDtA_2)(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, ptrsize_FVy3yH9cNo61BYTEPuP9awLA)(void* p0) {
	NI result0;
	void* x0;
	Basechunk_Sdq7WpT6qAH858F5ZEdG3w* c0;
	result0 = (NI)0;
	x0 = ((void*) ((NI)((NU32)(((NI) (p0))) - (NU32)(((NI)sizeof(Freecell_u6M5LHprqzkn9axr04yg9bGQ))))));
	c0 = pageaddr_4uti7hTxTUDxUPqFMgMvHAsystem(p0);
	result0 = (NI)((NU32)((*c0).size) - (NU32)(((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_O21OiSxurjvup9cA55o9ae1A)(Memregion_x81NhDv59b8ercDZ9bi85jyg* allocator0, void* p0, NI newsize0) {
	void* result0;
	result0 = (void*)0;
	{
		if (!(((NI) 0) < ((NI) (newsize0)))) goto LA3;
		result0 = alloc0_WDxgSWQ1mSIerfvC0kmUtg(allocator0, newsize0);
		{
			NI LOC9;
			if (!!((p0 == NIM_NIL))) goto LA7;
			LOC9 = (NI)0;
			LOC9 = ptrsize_FVy3yH9cNo61BYTEPuP9awLA(p0);
			copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem(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_NOCONV(void*, realloc_epWYXy7oruYtiNJhUF25Zg)(void* p0, NI newsize0) {
	void* result0;
	result0 = (void*)0;
	result0 = realloc_O21OiSxurjvup9cA55o9ae1A((&gch_IcYaEuuWivYAS86vFMTS3Q.region), p0, newsize0);
	return result0;
}

N_NIMCALL(NimStringDesc*, nimInt64ToStr)(NI64 x0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) 32));
	add_IbYQ9cTcoQ89aIwM2IEYGMng((&result0), x0);
	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(NI16*, newwidecstring_kxipuF9cNh6r2grKDcLjFuw)(NimStringDesc* s0) {
	NI16* result0;
	result0 = (NI16*)0;
	result0 = newwidecstring_b3CORJA07cGvZB3j3M3bqQ(s0->data, (s0 ? s0->Sup.len : 0));
	return result0;
}
static N_NIMCALL(void, Marker_TY_axqhRnwd09cVJkRcojfw6mA)(void* p, NI op) {
	Keyerror_ifYAhUumNzWR9c9cN9amyJLtg* a;
	a = (Keyerror_ifYAhUumNzWR9c9cN9amyJLtg*)p;
	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
}

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) = resizeString((*result0), 3);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_30));
	}
	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) = resizeString((*result0), 4);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_31));
		}
		goto LA23;
		LA25: ;
		{
			(*result0) = resizeString((*result0), 3);
appendString((*result0), ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_32));
		}
		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, genericSeqAssign)(void* dest0, void* src_qi9cfsBnd42r9a9cpCLO10jow, TNimType* mt0) {
	void* src0;
	src0 = src_qi9cfsBnd42r9a9cpCLO10jow;
	genericAssign(dest0, ((void*) ((&src0))), mt0);
}

N_NIMCALL(NI, hashString)(NimStringDesc* s0) {
	NI result0;
	NI h0;
	result0 = (NI)0;
	h0 = ((NI) 0);
	{
		NI i_ErSimDVrtkNofGrpjPc4OA;
		NI HEX3Atmp_EbCxF1U49b0iqcxS4KsIkDQ;
		NI res_3xguRevnXnAvfTYjghyTcg;
		i_ErSimDVrtkNofGrpjPc4OA = (NI)0;
		HEX3Atmp_EbCxF1U49b0iqcxS4KsIkDQ = (NI)0;
		HEX3Atmp_EbCxF1U49b0iqcxS4KsIkDQ = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
		res_3xguRevnXnAvfTYjghyTcg = ((NI) 0);
		{
			while (1) {
				if (!(res_3xguRevnXnAvfTYjghyTcg <= HEX3Atmp_EbCxF1U49b0iqcxS4KsIkDQ)) goto LA3;
				i_ErSimDVrtkNofGrpjPc4OA = res_3xguRevnXnAvfTYjghyTcg;
				h0 = (NI)((NU32)(h0) + (NU32)(((NI) (((NU8)(s0->data[i_ErSimDVrtkNofGrpjPc4OA]))))));
				h0 = (NI)((NU32)(h0) + (NU32)((NI)((NU32)(h0) << (NU32)(((NI) 10)))));
				h0 = (NI)(h0 ^ (NI)((NU32)(h0) >> (NU32)(((NI) 6))));
				res_3xguRevnXnAvfTYjghyTcg += ((NI) 1);
			} LA3: ;
		}
	}
	h0 = (NI)((NU32)(h0) + (NU32)((NI)((NU32)(h0) << (NU32)(((NI) 3)))));
	h0 = (NI)(h0 ^ (NI)((NU32)(h0) >> (NU32)(((NI) 11))));
	h0 = (NI)((NU32)(h0) + (NU32)((NI)((NU32)(h0) << (NU32)(((NI) 15)))));
	result0 = h0;
	return result0;
}

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_INLINE(void, pushSafePoint)(TSafePoint* s0) {
	(*s0).hasRaiseAction = NIM_FALSE;
	(*s0).prev = exchandler_rqLlY5bs9atDw2OXYqJEn5g;
	exchandler_rqLlY5bs9atDw2OXYqJEn5g = s0;
}

N_NIMCALL(NI, rawfilesize_jO6UN73ASx5jqerEr5FqZg)(FILE* file0) {
	NI result0;
	long oldpos0;
	int LOC1;
	long LOC2;
	int LOC3;
	result0 = (NI)0;
	oldpos0 = ftell(file0);
	LOC1 = (int)0;
	LOC1 = fseek(file0, ((long) 0), ((int) 2));
	LOC2 = (long)0;
	LOC2 = ftell(file0);
	result0 = ((NI) (LOC2));
	LOC3 = (int)0;
	LOC3 = 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 = copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_35));
	buffer0 = mnewString(((NI) 4000));
	{
		while (1) {
			NI bytesread0;
			bytesread0 = readbuffer_nZ0pNe9cd9cXtoayexCiaDtA_2(file0, ((void*) ((&buffer0->data[((NI) 0)]))), ((NI) 4000));
			{
				if (!(bytesread0 == ((NI) 4000))) goto LA5;
				result0 = resizeString(result0, buffer0->Sup.len + 0);
appendString(result0, buffer0);
			}
			goto LA3;
			LA5: ;
			{
				buffer0 = setLengthStr(buffer0, ((NI) (bytesread0)));
				result0 = 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_nZ0pNe9cd9cXtoayexCiaDtA_2(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 = setLengthStr(result0, ((NI) (bytes0)));
		}
		LA8: ;
	}
	goto LA1;
	LA4: ;
	{
		int LOC11;
		LOC11 = (int)0;
		LOC11 = ferror(file0);
		if (!!((LOC11 == ((NI32) 0)))) goto LA12;
		raiseeio_PpfSiTIeNpMAb9a5o6SglJw(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_34));
	}
	goto LA1;
	LA12: ;
	{
		NimStringDesc* LOC15;
		LOC15 = (NimStringDesc*)0;
		LOC15 = readallbuffer_QygGtYi2d8AILktDeUIkvQ(file0);
		result0 = 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, popSafePoint)(void) {
	exchandler_rqLlY5bs9atDw2OXYqJEn5g = (*exchandler_rqLlY5bs9atDw2OXYqJEn5g).prev;
}

N_NIMCALL(NimStringDesc*, readfile_T9cm5LIRX2tKEH9aREBZ8A0w)(NimStringDesc* filename0) {
	NimStringDesc* volatile result0;
	FILE* f0;
	result0 = (NimStringDesc*)0;
	f0 = (FILE*)0;
	{
		NIM_BOOL LOC3;
		TSafePoint T_Q5wkpxktOdTGvlSRo9bzt9aw_33;
		LOC3 = (NIM_BOOL)0;
		LOC3 = open_sEp0GH2306oGo9bqBpj5oTQ(&f0, filename0, ((Filemode_fVUBHvW79bXUw1j55Oo9avSQ) 0), ((NI) -1));
		if (!LOC3) goto LA4;
		pushSafePoint(&T_Q5wkpxktOdTGvlSRo9bzt9aw_33);
		T_Q5wkpxktOdTGvlSRo9bzt9aw_33.status = setjmp(T_Q5wkpxktOdTGvlSRo9bzt9aw_33.context);
		if (T_Q5wkpxktOdTGvlSRo9bzt9aw_33.status == 0) {
			result0 = readall_y7iEIBoIrYlvsLCqA1SrwQ(f0);
			popSafePoint();
		}
		else {
			popSafePoint();
		}
		{
			close_BWnr8V7RERYno9bIdPmw8Hw_2(f0);
		}
		if (T_Q5wkpxktOdTGvlSRo9bzt9aw_33.status != 0) reraiseException();
	}
	goto LA1;
	LA4: ;
	{
		sysfatal_p4l3kdztdOPD3nsQRAEDqwsystem(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_20), filename0);
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_Ql5vZ51gew5fqwplIYujaw)(TY_YtcvxHNKV4YiecPE9ap1mcA x0, TY_YtcvxHNKV4YiecPE9ap1mcA y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		NI f_5micfAVNu3X9boE9ac9bAqsdg;
		NI res_HZmM9cVoNcWoNzkdSbltuhg_4;
		f_5micfAVNu3X9boE9ac9bAqsdg = (NI)0;
		res_HZmM9cVoNcWoNzkdSbltuhg_4 = ((NI) 0);
		{
			while (1) {
				if (!(res_HZmM9cVoNcWoNzkdSbltuhg_4 <= ((NI) 19))) goto LA3;
				f_5micfAVNu3X9boE9ac9bAqsdg = ((NI) (res_HZmM9cVoNcWoNzkdSbltuhg_4));
				{
					if (!!((x0[(f_5micfAVNu3X9boE9ac9bAqsdg)- 0] == y0[(f_5micfAVNu3X9boE9ac9bAqsdg)- 0]))) goto LA6;
					goto BeforeRet;
				}
				LA6: ;
				res_HZmM9cVoNcWoNzkdSbltuhg_4 += ((NI) 1);
			} LA3: ;
		}
	}
	result0 = NIM_TRUE;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void, write_OG3BP9aaTiau0tBdonibGTg)(FILE* f0, NimStringDesc** a0, NI a0Len0) {
	{
		NimStringDesc* x_qoeuUwISGfj0JrqSwYXjow;
		NI i_aYFke0u9ag9ahXOShYk4vfwA;
		x_qoeuUwISGfj0JrqSwYXjow = (NimStringDesc*)0;
		i_aYFke0u9ag9ahXOShYk4vfwA = ((NI) 0);
		{
			while (1) {
				if (!(i_aYFke0u9ag9ahXOShYk4vfwA < a0Len0)) goto LA3;
				x_qoeuUwISGfj0JrqSwYXjow = a0[i_aYFke0u9ag9ahXOShYk4vfwA];
				write_c4mGyJBvK73pdM22jiweKQ(f0, x_qoeuUwISGfj0JrqSwYXjow);
				i_aYFke0u9ag9ahXOShYk4vfwA += ((NI) 1);
			} LA3: ;
		}
	}
}

N_NIMCALL(void, Gcdisablemarkandsweep_njssp69aa7hvxte9bJ8uuDcg_4)(void) {
	gch_IcYaEuuWivYAS86vFMTS3Q.cyclethreshold = ((NI) 2147483646);
}

N_NIMCALL(NimStringDesc*, readline_fPRnXwDTqtynUYGl4OixAg)(FILE* f0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) 80));
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = readline_sO1bQXVRA6RP9cdYJXNKeSw(f0, (&result0));
		if (!!(LOC3)) goto LA4;
		raiseeio_PpfSiTIeNpMAb9a5o6SglJw(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_36));
	}
	LA4: ;
	return result0;
}

N_NIMCALL(void, insert_noz5YDnGdGKiDcPEZenHJA)(NimStringDesc** x0, NimStringDesc* item0, NI i0) {
	NI xl0;
	NI j0;
	xl0 = ((*x0) ? (*x0)->Sup.len : 0);
	(*x0) = setLengthStr((*x0), ((NI) ((NI)(xl0 + (item0 ? item0->Sup.len : 0)))));
	j0 = (NI)(xl0 - ((NI) 1));
	{
		while (1) {
			if (!(((NI) (i0)) <= j0)) goto LA2;
			(*x0)->data[(NI)(j0 + (item0 ? item0->Sup.len : 0))] = (*x0)->data[j0];
			j0 -= ((NI) 1);
		} LA2: ;
	}
	j0 = ((NI) 0);
	{
		while (1) {
			if (!(j0 < (item0 ? item0->Sup.len : 0))) goto LA4;
			(*x0)->data[(NI)(j0 + ((NI) (i0)))] = item0->data[j0];
			j0 += ((NI) 1);
		} LA4: ;
	}
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_acdBa63tG7KT1YiswWh3aw)(TY_1v9bKyksXWMsm0vNwmZ4EuQ x0, TY_1v9bKyksXWMsm0vNwmZ4EuQ y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!!((x0.Field0 == y0.Field0))) goto LA3;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!!((x0.Field1 == y0.Field1))) goto LA7;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA7: ;
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	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(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_37));
	}
	LA4: ;
}

N_NIMCALL(NI64, getfilepos_XePgC9ccBXCgb9bEHXZpnMqA)(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(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_38));
	}
	LA4: ;
	return result0;
}

N_NIMCALL(void, writefile_c1B29b0ZdDRPHc27YaKqwaA)(NimStringDesc* filename0, NimStringDesc* content0) {
	FILE* f0;
	f0 = (FILE*)0;
	{
		NIM_BOOL LOC3;
		TSafePoint T_Q5wkpxktOdTGvlSRo9bzt9aw_39;
		LOC3 = (NIM_BOOL)0;
		LOC3 = open_sEp0GH2306oGo9bqBpj5oTQ(&f0, filename0, ((Filemode_fVUBHvW79bXUw1j55Oo9avSQ) 1), ((NI) -1));
		if (!LOC3) goto LA4;
		pushSafePoint(&T_Q5wkpxktOdTGvlSRo9bzt9aw_39);
		T_Q5wkpxktOdTGvlSRo9bzt9aw_39.status = setjmp(T_Q5wkpxktOdTGvlSRo9bzt9aw_39.context);
		if (T_Q5wkpxktOdTGvlSRo9bzt9aw_39.status == 0) {
			write_c4mGyJBvK73pdM22jiweKQ(f0, content0);
			popSafePoint();
		}
		else {
			popSafePoint();
		}
		{
			close_BWnr8V7RERYno9bIdPmw8Hw_2(f0);
		}
		if (T_Q5wkpxktOdTGvlSRo9bzt9aw_39.status != 0) reraiseException();
	}
	goto LA1;
	LA4: ;
	{
		sysfatal_p4l3kdztdOPD3nsQRAEDqwsystem(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_20), filename0);
	}
	LA1: ;
}

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

N_NIMCALL(NimStringDesc*, HEX24_rzAI8EMyNBAQwGODeohhAA)(NU64 x0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!(x0 == ((NI) 0))) goto LA3;
		result0 = 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 = cstrToNimstr(((NCSTRING) (buf0)));
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NI, clamp_RrNgT2340KObgDMnZWSK5A)(NI x0, NI a0, NI b0) {
	NI result0;
{	result0 = (NI)0;
	{
		if (!(x0 < a0)) goto LA3;
		result0 = a0;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!(b0 < x0)) goto LA7;
		result0 = b0;
		goto BeforeRet;
	}
	LA7: ;
	result0 = x0;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, nimBoolToStr)(NIM_BOOL x0) {
	NimStringDesc* result0;
{	result0 = (NimStringDesc*)0;
	{
		if (!x0) goto LA3;
		result0 = copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_41));
	}
	goto LA1;
	LA3: ;
	{
		result0 = copyString(((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_42));
	}
	LA1: ;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA*, new_WXvut0jf9avLrZqje29bbhTQ)(void) {
	Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA* result0;
	Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA* r0;
{	result0 = (Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA*)0;
	r0 = (Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA*)0;
	r0 = (Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA*) newObj((&NTI_Y32tFilzS9adEEksgrCsOzQ), sizeof(Tinstantiation_5LqgVn6Tq9ainQRK7TQAQxA));
	result0 = r0;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

static N_INLINE(void*, seqtoptr_UBfBryAYqlhRuB3xDBSdewsystem)(TY_ehmV9bTklH2Gt9cXHV9c0HLeQ* x0) {
	void* result0;
	result0 = (void*)0;
	result0 = ((void*) (x0));
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_Lrpi2N0XDlmkUBCjTBEG7Q)(TY_ehmV9bTklH2Gt9cXHV9c0HLeQ* x0, TY_ehmV9bTklH2Gt9cXHV9c0HLeQ* y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		void* LOC3;
		void* LOC4;
		LOC3 = (void*)0;
		LOC3 = seqtoptr_UBfBryAYqlhRuB3xDBSdewsystem(x0);
		LOC4 = (void*)0;
		LOC4 = seqtoptr_UBfBryAYqlhRuB3xDBSdewsystem(y0);
		if (!(LOC3 == LOC4)) goto LA5;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		LOC9 = (NIM_BOOL)0;
		LOC9 = (x0 == 0);
		if (LOC9) goto LA10;
		LOC9 = (y0 == 0);
		LA10: ;
		if (!LOC9) goto LA11;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA11: ;
	{
		if (!!(((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0)))) goto LA15;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA15: ;
	{
		NI i_B9aICU6ekXhYxvhMJcq2y9aA_4;
		NI HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_4;
		NI res_HZmM9cVoNcWoNzkdSbltuhg_5;
		i_B9aICU6ekXhYxvhMJcq2y9aA_4 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_4 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_4 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
		res_HZmM9cVoNcWoNzkdSbltuhg_5 = ((NI) 0);
		{
			while (1) {
				if (!(res_HZmM9cVoNcWoNzkdSbltuhg_5 <= HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_4)) goto LA19;
				i_B9aICU6ekXhYxvhMJcq2y9aA_4 = res_HZmM9cVoNcWoNzkdSbltuhg_5;
				{
					if (!!((x0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_4] == y0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_4]))) goto LA22;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA22: ;
				res_HZmM9cVoNcWoNzkdSbltuhg_5 += ((NI) 1);
			} LA19: ;
		}
	}
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*, HEX5BHEX5D_Gp1eO9bAFjBxVwyUqF7LQ9cg)(TY_ehmV9bTklH2Gt9cXHV9c0HLeQ* s0, Slice_qL3WGViqT0p5sVr4YFHsLg x0) {
	TY_ehmV9bTklH2Gt9cXHV9c0HLeQ* result0;
	NI a0;
	NI L0;
	result0 = (TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
	a0 = x0.a;
	L0 = (NI)((NI)(x0.b - a0) + ((NI) 1));
	result0 = (TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*) newSeq((&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ), ((NI) (L0)));
	{
		NI i_r0nP3JeRiG4qZUm3rddH0A;
		NI HEX3Atmp_NiCiRqC9beDv631RV3tOtvA;
		NI res_cjYC55b83oUtxwUxTD4RYQ;
		i_r0nP3JeRiG4qZUm3rddH0A = (NI)0;
		HEX3Atmp_NiCiRqC9beDv631RV3tOtvA = (NI)0;
		HEX3Atmp_NiCiRqC9beDv631RV3tOtvA = (L0 - 1);
		res_cjYC55b83oUtxwUxTD4RYQ = ((NI) 0);
		{
			while (1) {
				if (!(res_cjYC55b83oUtxwUxTD4RYQ <= HEX3Atmp_NiCiRqC9beDv631RV3tOtvA)) goto LA3;
				i_r0nP3JeRiG4qZUm3rddH0A = res_cjYC55b83oUtxwUxTD4RYQ;
				asgnRefNoCycle((void**) (&result0->data[i_r0nP3JeRiG4qZUm3rddH0A]), s0->data[(NI)(i_r0nP3JeRiG4qZUm3rddH0A + a0)]);
				res_cjYC55b83oUtxwUxTD4RYQ += ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_NIMCALL(void, HEX5BHEX5DHEX3D_ZpqxXkl8BcDfI2hEjJx9baQ)(TY_ehmV9bTklH2Gt9cXHV9c0HLeQ** s0, Slice_qL3WGViqT0p5sVr4YFHsLg x0, Tnode_bROa11lyF5vxEN9aYNbHmhw** b0, NI b0Len0) {
	NI a0;
	NI L0;
	a0 = x0.a;
	L0 = (NI)((NI)(x0.b - a0) + ((NI) 1));
	{
		if (!(L0 == b0Len0)) goto LA3;
		{
			NI i_5OmXFV16c2mMk9bUO5sEygw;
			NI HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg;
			NI res_xshNP9b5l6I9bmKuCLg9cK22A;
			i_5OmXFV16c2mMk9bUO5sEygw = (NI)0;
			HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg = (NI)0;
			HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg = (L0 - 1);
			res_xshNP9b5l6I9bmKuCLg9cK22A = ((NI) 0);
			{
				while (1) {
					if (!(res_xshNP9b5l6I9bmKuCLg9cK22A <= HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg)) goto LA7;
					i_5OmXFV16c2mMk9bUO5sEygw = res_xshNP9b5l6I9bmKuCLg9cK22A;
					asgnRefNoCycle((void**) (&(*s0)->data[(NI)(i_5OmXFV16c2mMk9bUO5sEygw + a0)]), b0[i_5OmXFV16c2mMk9bUO5sEygw]);
					res_xshNP9b5l6I9bmKuCLg9cK22A += ((NI) 1);
				} LA7: ;
			}
		}
	}
	goto LA1;
	LA3: ;
	{
		NI slen_WQtxFAa8dVz5k5aZr9biaZQ;
		NI shift_wGMwnw9alD6nSTFdI6sNrGQ;
		NI newlen_sKB9cIzqhO09beGhDIt29bUKg;
		slen_WQtxFAa8dVz5k5aZr9biaZQ = ((*s0) ? (*s0)->Sup.len : 0);
		shift_wGMwnw9alD6nSTFdI6sNrGQ = (NI)(b0Len0 - L0);
		newlen_sKB9cIzqhO09beGhDIt29bUKg = (NI)(slen_WQtxFAa8dVz5k5aZr9biaZQ + shift_wGMwnw9alD6nSTFdI6sNrGQ);
		{
			if (!(((NI) 0) < shift_wGMwnw9alD6nSTFdI6sNrGQ)) goto LA11;
			(*s0) = (TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*) setLengthSeq(&((*s0))->Sup, sizeof(Tnode_bROa11lyF5vxEN9aYNbHmhw*), ((NI) (newlen_sKB9cIzqhO09beGhDIt29bUKg)));
			{
				NI i_5OmXFV16c2mMk9bUO5sEygw_2;
				NI HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_2;
				NI HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_3;
				NI res_xshNP9b5l6I9bmKuCLg9cK22A_2;
				i_5OmXFV16c2mMk9bUO5sEygw_2 = (NI)0;
				HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_2 = (NI)0;
				HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_3 = (NI)0;
				HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_2 = (NI)(newlen_sKB9cIzqhO09beGhDIt29bUKg - ((NI) 1));
				HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_3 = (NI)((NI)(a0 + shift_wGMwnw9alD6nSTFdI6sNrGQ) + ((NI) 1));
				res_xshNP9b5l6I9bmKuCLg9cK22A_2 = HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_2;
				{
					while (1) {
						if (!(HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_3 <= res_xshNP9b5l6I9bmKuCLg9cK22A_2)) goto LA15;
						i_5OmXFV16c2mMk9bUO5sEygw_2 = res_xshNP9b5l6I9bmKuCLg9cK22A_2;
						asgnRefNoCycle((void**) (&(*s0)->data[i_5OmXFV16c2mMk9bUO5sEygw_2]), (*s0)->data[(NI)(i_5OmXFV16c2mMk9bUO5sEygw_2 - shift_wGMwnw9alD6nSTFdI6sNrGQ)]);
						res_xshNP9b5l6I9bmKuCLg9cK22A_2 -= ((NI) 1);
					} LA15: ;
				}
			}
		}
		goto LA9;
		LA11: ;
		{
			{
				NI i_5OmXFV16c2mMk9bUO5sEygw_3;
				NI HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_4;
				NI HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_5;
				NI res_xshNP9b5l6I9bmKuCLg9cK22A_3;
				i_5OmXFV16c2mMk9bUO5sEygw_3 = (NI)0;
				HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_4 = (NI)0;
				HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_5 = (NI)0;
				HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_4 = (NI)(a0 + b0Len0);
				HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_5 = (NI)((NI)(((*s0) ? (*s0)->Sup.len : 0) - ((NI) 1)) + shift_wGMwnw9alD6nSTFdI6sNrGQ);
				res_xshNP9b5l6I9bmKuCLg9cK22A_3 = HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_4;
				{
					while (1) {
						if (!(res_xshNP9b5l6I9bmKuCLg9cK22A_3 <= HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_5)) goto LA19;
						i_5OmXFV16c2mMk9bUO5sEygw_3 = res_xshNP9b5l6I9bmKuCLg9cK22A_3;
						asgnRefNoCycle((void**) (&(*s0)->data[i_5OmXFV16c2mMk9bUO5sEygw_3]), (*s0)->data[(NI)(i_5OmXFV16c2mMk9bUO5sEygw_3 - shift_wGMwnw9alD6nSTFdI6sNrGQ)]);
						res_xshNP9b5l6I9bmKuCLg9cK22A_3 += ((NI) 1);
					} LA19: ;
				}
			}
			(*s0) = (TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*) setLengthSeq(&((*s0))->Sup, sizeof(Tnode_bROa11lyF5vxEN9aYNbHmhw*), ((NI) (newlen_sKB9cIzqhO09beGhDIt29bUKg)));
		}
		LA9: ;
		{
			NI i_5OmXFV16c2mMk9bUO5sEygw_4;
			NI HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_6;
			NI res_xshNP9b5l6I9bmKuCLg9cK22A_4;
			i_5OmXFV16c2mMk9bUO5sEygw_4 = (NI)0;
			HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_6 = (NI)0;
			HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_6 = (b0Len0 - 1);
			res_xshNP9b5l6I9bmKuCLg9cK22A_4 = ((NI) 0);
			{
				while (1) {
					if (!(res_xshNP9b5l6I9bmKuCLg9cK22A_4 <= HEX3Atmp_R6DUbQSKV3nj8fvr2P79aNg_6)) goto LA22;
					i_5OmXFV16c2mMk9bUO5sEygw_4 = res_xshNP9b5l6I9bmKuCLg9cK22A_4;
					asgnRefNoCycle((void**) (&(*s0)->data[(NI)(i_5OmXFV16c2mMk9bUO5sEygw_4 + a0)]), b0[i_5OmXFV16c2mMk9bUO5sEygw_4]);
					res_xshNP9b5l6I9bmKuCLg9cK22A_4 += ((NI) 1);
				} LA22: ;
			}
		}
	}
	LA1: ;
}

static N_INLINE(void*, seqtoptr_5LSLp9bLEbGkcuZoyatgBhQsystem)(TY_xITzrU1RhJLKwBlRCAbn9bA* x0) {
	void* result0;
	result0 = (void*)0;
	result0 = ((void*) (x0));
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_WL2jrWYjqeu1iJ3niRta5w)(TY_uZlRb8w5pa9b16Yfjq9cGRXQ x0, TY_uZlRb8w5pa9b16Yfjq9cGRXQ y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!!((x0.Field0 == y0.Field0))) goto LA3;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!!((x0.Field1 == y0.Field1))) goto LA7;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA7: ;
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_3iaa3QVHZI9bDjRnXEL1LQQ)(TY_xITzrU1RhJLKwBlRCAbn9bA* x0, TY_xITzrU1RhJLKwBlRCAbn9bA* y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		void* LOC3;
		void* LOC4;
		LOC3 = (void*)0;
		LOC3 = seqtoptr_5LSLp9bLEbGkcuZoyatgBhQsystem(x0);
		LOC4 = (void*)0;
		LOC4 = seqtoptr_5LSLp9bLEbGkcuZoyatgBhQsystem(y0);
		if (!(LOC3 == LOC4)) goto LA5;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		LOC9 = (NIM_BOOL)0;
		LOC9 = (x0 == 0);
		if (LOC9) goto LA10;
		LOC9 = (y0 == 0);
		LA10: ;
		if (!LOC9) goto LA11;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA11: ;
	{
		if (!!(((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0)))) goto LA15;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA15: ;
	{
		NI i_B9aICU6ekXhYxvhMJcq2y9aA_5;
		NI HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_5;
		NI res_HZmM9cVoNcWoNzkdSbltuhg_6;
		i_B9aICU6ekXhYxvhMJcq2y9aA_5 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_5 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_5 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
		res_HZmM9cVoNcWoNzkdSbltuhg_6 = ((NI) 0);
		{
			while (1) {
				if (!(res_HZmM9cVoNcWoNzkdSbltuhg_6 <= HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_5)) goto LA19;
				i_B9aICU6ekXhYxvhMJcq2y9aA_5 = res_HZmM9cVoNcWoNzkdSbltuhg_6;
				{
					NIM_BOOL LOC22;
					LOC22 = (NIM_BOOL)0;
					LOC22 = HEX3DHEX3D_WL2jrWYjqeu1iJ3niRta5w(x0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_5], y0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_5]);
					if (!!(LOC22)) goto LA23;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA23: ;
				res_HZmM9cVoNcWoNzkdSbltuhg_6 += ((NI) 1);
			} LA19: ;
		}
	}
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

static N_INLINE(void*, seqtoptr_P9cvIFF9bpRb4kxDjjhjfgYgsystem)(TY_xITzrU1RhJLKwBlRCAbn9bA* x0) {
	void* result0;
	result0 = (void*)0;
	result0 = ((void*) (x0));
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_PtDo4JMF3tDx4sqhk0oigw)(TY_uZlRb8w5pa9b16Yfjq9cGRXQ x0, TY_uZlRb8w5pa9b16Yfjq9cGRXQ y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!!((x0.Field0 == y0.Field0))) goto LA3;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!!((x0.Field1 == y0.Field1))) goto LA7;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA7: ;
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_A8XZmS2kUPRhG84nvOg1Nw)(TY_xITzrU1RhJLKwBlRCAbn9bA* x0, TY_xITzrU1RhJLKwBlRCAbn9bA* y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		void* LOC3;
		void* LOC4;
		LOC3 = (void*)0;
		LOC3 = seqtoptr_P9cvIFF9bpRb4kxDjjhjfgYgsystem(x0);
		LOC4 = (void*)0;
		LOC4 = seqtoptr_P9cvIFF9bpRb4kxDjjhjfgYgsystem(y0);
		if (!(LOC3 == LOC4)) goto LA5;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		LOC9 = (NIM_BOOL)0;
		LOC9 = (x0 == 0);
		if (LOC9) goto LA10;
		LOC9 = (y0 == 0);
		LA10: ;
		if (!LOC9) goto LA11;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA11: ;
	{
		if (!!(((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0)))) goto LA15;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA15: ;
	{
		NI i_B9aICU6ekXhYxvhMJcq2y9aA_6;
		NI HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_6;
		NI res_HZmM9cVoNcWoNzkdSbltuhg_7;
		i_B9aICU6ekXhYxvhMJcq2y9aA_6 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_6 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_6 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
		res_HZmM9cVoNcWoNzkdSbltuhg_7 = ((NI) 0);
		{
			while (1) {
				if (!(res_HZmM9cVoNcWoNzkdSbltuhg_7 <= HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_6)) goto LA19;
				i_B9aICU6ekXhYxvhMJcq2y9aA_6 = res_HZmM9cVoNcWoNzkdSbltuhg_7;
				{
					NIM_BOOL LOC22;
					LOC22 = (NIM_BOOL)0;
					LOC22 = HEX3DHEX3D_PtDo4JMF3tDx4sqhk0oigw(x0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_6], y0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_6]);
					if (!!(LOC22)) goto LA23;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA23: ;
				res_HZmM9cVoNcWoNzkdSbltuhg_7 += ((NI) 1);
			} LA19: ;
		}
	}
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void, safeadd_tcVXv8mF8bwxGJHbyFs27g)(TY_xITzrU1RhJLKwBlRCAbn9bA** x0, TY_uZlRb8w5pa9b16Yfjq9cGRXQ y0) {
	{
		NIM_BOOL LOC3;
		TY_Kqu0Nh2uqdLKL0BvOlH1Ag LOC6;
		LOC3 = (NIM_BOOL)0;
		LOC3 = HEX3DHEX3D_A8XZmS2kUPRhG84nvOg1Nw((*x0), NIM_NIL);
		if (!LOC3) goto LA4;
		unsureAsgnRef((void**) (&(*x0)), (TY_xITzrU1RhJLKwBlRCAbn9bA*) newSeq((&NTI_xITzrU1RhJLKwBlRCAbn9bA), 1));
		memset((void*)LOC6, 0, sizeof(LOC6));
		LOC6[0].Field0 = y0.Field0;
		LOC6[0].Field1 = y0.Field1;
		asgnRefNoCycle((void**) (&(*x0)->data[0].Field0), LOC6[0].Field0);
		(*x0)->data[0].Field1 = LOC6[0].Field1;
	}
	goto LA1;
	LA4: ;
	{
		(*x0) = (TY_xITzrU1RhJLKwBlRCAbn9bA*) incrSeqV2(&((*x0))->Sup, sizeof(TY_uZlRb8w5pa9b16Yfjq9cGRXQ));
		asgnRefNoCycle((void**) (&(*x0)->data[(*x0)->Sup.len].Field0), y0.Field0);
		(*x0)->data[(*x0)->Sup.len].Field1 = y0.Field1;
		++(*x0)->Sup.len;
	}
	LA1: ;
}

N_NIMCALL(void, insert_sdPxAA6tJBXORWiLIJmHnQ)(TY_ehmV9bTklH2Gt9cXHV9c0HLeQ** x0, Tnode_bROa11lyF5vxEN9aYNbHmhw* item0, NI i0) {
	NI xl_AZAEewYI9b9cButBslzynnUg;
	NI j_mVHPsxlh9aNioIg9amGdmYcQ;
	xl_AZAEewYI9b9cButBslzynnUg = ((*x0) ? (*x0)->Sup.len : 0);
	(*x0) = (TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*) setLengthSeq(&((*x0))->Sup, sizeof(Tnode_bROa11lyF5vxEN9aYNbHmhw*), ((NI) ((NI)(xl_AZAEewYI9b9cButBslzynnUg + ((NI) 1)))));
	j_mVHPsxlh9aNioIg9amGdmYcQ = (NI)(xl_AZAEewYI9b9cButBslzynnUg - ((NI) 1));
	{
		while (1) {
			if (!(((NI) (i0)) <= j_mVHPsxlh9aNioIg9amGdmYcQ)) goto LA2;
			asgnRefNoCycle((void**) (&(*x0)->data[(NI)(j_mVHPsxlh9aNioIg9amGdmYcQ + ((NI) 1))]), (*x0)->data[j_mVHPsxlh9aNioIg9amGdmYcQ]);
			j_mVHPsxlh9aNioIg9amGdmYcQ -= ((NI) 1);
		} LA2: ;
	}
	asgnRefNoCycle((void**) (&(*x0)->data[i0]), item0);
}

N_NIMCALL(void, delete_CLZdKKlcUPYhcUpOnWP7ag)(TY_ehmV9bTklH2Gt9cXHV9c0HLeQ** x0, NI i0) {
	NI xl_UHRmtEc1qLRONQ1ro52DAA;
	xl_UHRmtEc1qLRONQ1ro52DAA = ((*x0) ? (*x0)->Sup.len : 0);
	{
		NI j_dU5rntLHaj38nvgWp7FOrw;
		NI HEX3Atmp_3M9cWLUCrj9a1jgpJKF7rw9cA;
		NI res_sHQkWNMzb6yCrcvulKop8Q;
		j_dU5rntLHaj38nvgWp7FOrw = (NI)0;
		HEX3Atmp_3M9cWLUCrj9a1jgpJKF7rw9cA = (NI)0;
		HEX3Atmp_3M9cWLUCrj9a1jgpJKF7rw9cA = (NI)(xl_UHRmtEc1qLRONQ1ro52DAA - ((NI) 2));
		res_sHQkWNMzb6yCrcvulKop8Q = ((NI) (i0));
		{
			while (1) {
				if (!(res_sHQkWNMzb6yCrcvulKop8Q <= HEX3Atmp_3M9cWLUCrj9a1jgpJKF7rw9cA)) goto LA3;
				j_dU5rntLHaj38nvgWp7FOrw = res_sHQkWNMzb6yCrcvulKop8Q;
				asgnRefNoCycle((void**) (&(*x0)->data[j_dU5rntLHaj38nvgWp7FOrw]), (*x0)->data[(NI)(j_dU5rntLHaj38nvgWp7FOrw + ((NI) 1))]);
				res_sHQkWNMzb6yCrcvulKop8Q += ((NI) 1);
			} LA3: ;
		}
	}
	(*x0) = (TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*) setLengthSeq(&((*x0))->Sup, sizeof(Tnode_bROa11lyF5vxEN9aYNbHmhw*), ((NI) ((NI)(xl_UHRmtEc1qLRONQ1ro52DAA - ((NI) 1)))));
}

N_NIMCALL(TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*, newseq_kRt1ZLhQ6puUVenSqCOflw)(NI len0) {
	TY_ehmV9bTklH2Gt9cXHV9c0HLeQ* result0;
	result0 = (TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*)0;
	result0 = (TY_ehmV9bTklH2Gt9cXHV9c0HLeQ*) newSeq((&NTI_ehmV9bTklH2Gt9cXHV9c0HLeQ), len0);
	return result0;
}

static N_INLINE(void*, seqtoptr_3GXdYap6cQyJyX7ox0bY8wsystem)(TY_oLpBKXzW3hF9aCVMo5EymfQ* x0) {
	void* result0;
	result0 = (void*)0;
	result0 = ((void*) (x0));
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_fL0tq3d6JfMw9bvY7G6spBQ)(TY_oLpBKXzW3hF9aCVMo5EymfQ* x0, TY_oLpBKXzW3hF9aCVMo5EymfQ* y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		void* LOC3;
		void* LOC4;
		LOC3 = (void*)0;
		LOC3 = seqtoptr_3GXdYap6cQyJyX7ox0bY8wsystem(x0);
		LOC4 = (void*)0;
		LOC4 = seqtoptr_3GXdYap6cQyJyX7ox0bY8wsystem(y0);
		if (!(LOC3 == LOC4)) goto LA5;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		LOC9 = (NIM_BOOL)0;
		LOC9 = (x0 == 0);
		if (LOC9) goto LA10;
		LOC9 = (y0 == 0);
		LA10: ;
		if (!LOC9) goto LA11;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA11: ;
	{
		if (!!(((x0 ? x0->Sup.len : 0) == (y0 ? y0->Sup.len : 0)))) goto LA15;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA15: ;
	{
		NI i_B9aICU6ekXhYxvhMJcq2y9aA_7;
		NI HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_7;
		NI res_HZmM9cVoNcWoNzkdSbltuhg_8;
		i_B9aICU6ekXhYxvhMJcq2y9aA_7 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_7 = (NI)0;
		HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_7 = (NI)((x0 ? x0->Sup.len : 0) - ((NI) 1));
		res_HZmM9cVoNcWoNzkdSbltuhg_8 = ((NI) 0);
		{
			while (1) {
				if (!(res_HZmM9cVoNcWoNzkdSbltuhg_8 <= HEX3Atmp_k9afZZWaIoKaA9aXOe6nGR4w_7)) goto LA19;
				i_B9aICU6ekXhYxvhMJcq2y9aA_7 = res_HZmM9cVoNcWoNzkdSbltuhg_8;
				{
					NIM_BOOL LOC22;
					LOC22 = (NIM_BOOL)0;
					LOC22 = HEX3DHEX3D_Ujpjfumo30l2ielPaquw0Q(x0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_7], y0->data[i_B9aICU6ekXhYxvhMJcq2y9aA_7]);
					if (!!(LOC22)) goto LA23;
					result0 = NIM_FALSE;
					goto BeforeRet;
				}
				LA23: ;
				res_HZmM9cVoNcWoNzkdSbltuhg_8 += ((NI) 1);
			} LA19: ;
		}
	}
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

static N_INLINE(NIM_BOOL, equalmem_DCrUjdaMvFDHaR1hs7sQGwropes)(void* a0, void* b0, NI size0) {
	NIM_BOOL result0;
	int LOC1;
	result0 = (NIM_BOOL)0;
	LOC1 = (int)0;
	LOC1 = memcmp(a0, b0, ((size_t) (size0)));
	result0 = (LOC1 == ((NI32) 0));
	return result0;
}

static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a0, NimStringDesc* b0) {
	NIM_BOOL result0;
	NIM_BOOL LOC11;
{	result0 = (NIM_BOOL)0;
	{
		if (!(a0 == b0)) goto LA3;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = (NIM_BOOL)0;
		LOC7 = (a0 == NIM_NIL);
		if (LOC7) goto LA8;
		LOC7 = (b0 == NIM_NIL);
		LA8: ;
		if (!LOC7) goto LA9;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA9: ;
	LOC11 = (NIM_BOOL)0;
	LOC11 = ((*a0).Sup.len == (*b0).Sup.len);
	if (!(LOC11)) goto LA12;
	LOC11 = equalmem_DCrUjdaMvFDHaR1hs7sQGwropes(((void*) ((*a0).data)), ((void*) ((*b0).data)), ((NI) ((*a0).Sup.len)));
	LA12: ;
	result0 = LOC11;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_fsWIAWPnaoNtepsWNV0Ldw)(Indexentry_G9ccBDFWfr9aYnLgXTNGDHDg x0, Indexentry_G9ccBDFWfr9aYnLgXTNGDHDg y0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!!(eqStrings(x0.keyword, y0.keyword))) goto LA3;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	{
		if (!!(eqStrings(x0.link, y0.link))) goto LA7;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA7: ;
	{
		if (!!(eqStrings(x0.linktitle, y0.linktitle))) goto LA11;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA11: ;
	{
		if (!!(eqStrings(x0.linkdesc, y0.linkdesc))) goto LA15;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA15: ;
	result0 = NIM_TRUE;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

static N_INLINE(void, Gcdisable_neD9cJp4S9clvdaq5qqNFZAQrodread)(void) {
	gch_IcYaEuuWivYAS86vFMTS3Q.recgclock += ((NI) 1);
}

static N_INLINE(void, Gcenable_neD9cJp4S9clvdaq5qqNFZAQ_2rodread)(void) {
	{
		if (!(((NI) 0) < gch_IcYaEuuWivYAS86vFMTS3Q.recgclock)) goto LA3;
		gch_IcYaEuuWivYAS86vFMTS3Q.recgclock -= ((NI) 1);
	}
	LA3: ;
}

N_NIMCALL(NimStringDesc*, Gcgetstatistics_J4pluHK783lhY9aB0aYTnzg)(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;
	Gcdisable_neD9cJp4S9clvdaq5qqNFZAQrodread();
	LOC1 = (NimStringDesc*)0;
	LOC2 = (NI)0;
	LOC2 = gettotalmem_9bFvoxSITMVCg7RY8KIar1Q_2();
	LOC3 = (NimStringDesc*)0;
	LOC3 = nimIntToStr(LOC2);
	LOC4 = (NI)0;
	LOC4 = getoccupiedmem_9bFvoxSITMVCg7RY8KIar1Q();
	LOC5 = (NimStringDesc*)0;
	LOC5 = nimIntToStr(LOC4);
	LOC6 = (NimStringDesc*)0;
	LOC6 = nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.stackscans);
	LOC7 = (NimStringDesc*)0;
	LOC7 = nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.maxstackcells);
	LOC8 = (NimStringDesc*)0;
	LOC8 = nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.cyclecollections);
	LOC9 = (NimStringDesc*)0;
	LOC9 = nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.maxthreshold);
	LOC10 = (NimStringDesc*)0;
	LOC10 = nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.zct.cap);
	LOC11 = (NimStringDesc*)0;
	LOC11 = nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.cycletablesize);
	LOC12 = (NimStringDesc*)0;
	LOC12 = 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 + 211);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_43));
appendString(LOC1, LOC3);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_44));
appendString(LOC1, LOC5);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_45));
appendString(LOC1, LOC6);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_46));
appendString(LOC1, LOC7);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_47));
appendString(LOC1, LOC8);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_48));
appendString(LOC1, LOC9);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_49));
appendString(LOC1, LOC10);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_50));
appendString(LOC1, LOC11);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_51));
appendString(LOC1, LOC12);
appendString(LOC1, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_10));
	result0 = LOC1;
	LOC13 = (NimStringDesc*)0;
	LOC14 = (NimStringDesc*)0;
	LOC14 = nimIntToStr(gch_IcYaEuuWivYAS86vFMTS3Q.stat.maxstacksize);
	LOC13 = rawNewString(result0->Sup.len + LOC14->Sup.len + 23);
appendString(LOC13, result0);
appendString(LOC13, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_52));
appendString(LOC13, LOC14);
appendString(LOC13, ((NimStringDesc*) &T_Q5wkpxktOdTGvlSRo9bzt9aw_10));
	result0 = LOC13;
	Gcenable_neD9cJp4S9clvdaq5qqNFZAQ_2rodread();
	return result0;
}
NIM_EXTERNC N_NOINLINE(void, systemInit000)(void) {
	TNimType LOC1;
	int LOC2;
	int LOC3;
nimRegisterGlobalMarker(T_Q5wkpxktOdTGvlSRo9bzt9aw_4);
	nimvm_IAxmsqnME4Jmed24hOgrFQ = NIM_FALSE;
	memset((void*)(&LOC1), 0, sizeof(LOC1));
	LOC1.size = ((NI) 4);
	LOC1.kind = ((Tnimkind_jIBKr1ejBgsfM33Kxw4j7A) 28);
	LOC1.flags = 2;
	strdesc_D0UzA4zsDu5tgpJQ9a9clXPg = LOC1;
	LOC2 = (int)0;
	LOC2 = fileno(stdin);
	_setmode(LOC2, O_BINARY);
	LOC3 = (int)0;
	LOC3 = fileno(stdout);
	_setmode(LOC3, O_BINARY);
	initallocator_neD9cJp4S9clvdaq5qqNFZAQsystem();
	initStackBottom();
	initgc_njssp69aa7hvxte9bJ8uuDcg();
	registersignalhandler_njssp69aa7hvxte9bJ8uuDcg_2();
}

NIM_EXTERNC N_NOINLINE(void, systemDatInit000)(void) {
static TNimNode* T_Q5wkpxktOdTGvlSRo9bzt9aw_3[4];
static TNimNode T_Q5wkpxktOdTGvlSRo9bzt9aw_0[19];
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_rR5Bzr1D5krxoo1NcNyeMA.size = sizeof(NI);
NTI_rR5Bzr1D5krxoo1NcNyeMA.kind = 31;
NTI_rR5Bzr1D5krxoo1NcNyeMA.base = 0;
NTI_rR5Bzr1D5krxoo1NcNyeMA.flags = 3;
NTI_QcJsjWXxMFpjHfkCIK5ExA.size = sizeof(Arithmeticerror_QcJsjWXxMFpjHfkCIK5ExA);
NTI_QcJsjWXxMFpjHfkCIK5ExA.kind = 17;
NTI_QcJsjWXxMFpjHfkCIK5ExA.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[6].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[6].kind = 2;
NTI_QcJsjWXxMFpjHfkCIK5ExA.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[6];
NTI_I3Jtn27626sFBOls6BBQ2Q.size = sizeof(Overflowerror_I3Jtn27626sFBOls6BBQ2Q);
NTI_I3Jtn27626sFBOls6BBQ2Q.kind = 17;
NTI_I3Jtn27626sFBOls6BBQ2Q.base = (&NTI_QcJsjWXxMFpjHfkCIK5ExA);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[7].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[7].kind = 2;
NTI_I3Jtn27626sFBOls6BBQ2Q.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[7];
NTI_6woiEp3hwhYMr1p5tjkZvA.size = sizeof(Overflowerror_I3Jtn27626sFBOls6BBQ2Q*);
NTI_6woiEp3hwhYMr1p5tjkZvA.kind = 22;
NTI_6woiEp3hwhYMr1p5tjkZvA.base = (&NTI_I3Jtn27626sFBOls6BBQ2Q);
NTI_6woiEp3hwhYMr1p5tjkZvA.marker = Marker_TY_6woiEp3hwhYMr1p5tjkZvA;
NTI_Fjf9b9b2IlzRO2tspHxG3tgg.size = sizeof(Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg);
NTI_Fjf9b9b2IlzRO2tspHxG3tgg.kind = 17;
NTI_Fjf9b9b2IlzRO2tspHxG3tgg.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[8].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[8].kind = 2;
NTI_Fjf9b9b2IlzRO2tspHxG3tgg.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[8];
NTI_NrupLB36t9bV7iFDHtrF69aw.size = sizeof(Outofmemerror_NrupLB36t9bV7iFDHtrF69aw);
NTI_NrupLB36t9bV7iFDHtrF69aw.kind = 17;
NTI_NrupLB36t9bV7iFDHtrF69aw.base = (&NTI_Fjf9b9b2IlzRO2tspHxG3tgg);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[9].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[9].kind = 2;
NTI_NrupLB36t9bV7iFDHtrF69aw.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[9];
NTI_sVg18TP9cLifHyygRe9cro9aA.size = sizeof(NI32);
NTI_sVg18TP9cLifHyygRe9cro9aA.kind = 34;
NTI_sVg18TP9cLifHyygRe9cro9aA.base = 0;
NTI_sVg18TP9cLifHyygRe9cro9aA.flags = 3;
NTI_Gi06FkNeykJn7mrqRZYrkA.size = sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA);
NTI_Gi06FkNeykJn7mrqRZYrkA.kind = 17;
NTI_Gi06FkNeykJn7mrqRZYrkA.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[10].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[10].kind = 2;
NTI_Gi06FkNeykJn7mrqRZYrkA.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[10];
NTI_yCEN9anxCD6mzBxGjuaRBdg.size = sizeof(Valueerror_Gi06FkNeykJn7mrqRZYrkA*);
NTI_yCEN9anxCD6mzBxGjuaRBdg.kind = 22;
NTI_yCEN9anxCD6mzBxGjuaRBdg.base = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
NTI_yCEN9anxCD6mzBxGjuaRBdg.marker = Marker_TY_yCEN9anxCD6mzBxGjuaRBdg;
NTI_kDPg4wXyR8DDyA0MeEjIsw.size = sizeof(NI16);
NTI_kDPg4wXyR8DDyA0MeEjIsw.kind = 33;
NTI_kDPg4wXyR8DDyA0MeEjIsw.base = 0;
NTI_kDPg4wXyR8DDyA0MeEjIsw.flags = 3;
NTI_9czoZw3pzPyrBmb5zTHY1OQ.size = sizeof(Ioerror_9czoZw3pzPyrBmb5zTHY1OQ);
NTI_9czoZw3pzPyrBmb5zTHY1OQ.kind = 17;
NTI_9czoZw3pzPyrBmb5zTHY1OQ.base = (&NTI_Fjf9b9b2IlzRO2tspHxG3tgg);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[11].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[11].kind = 2;
NTI_9czoZw3pzPyrBmb5zTHY1OQ.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[11];
NTI_HX2M9cQhE3jaovp9aYJDdslA.size = sizeof(Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*);
NTI_HX2M9cQhE3jaovp9aYJDdslA.kind = 22;
NTI_HX2M9cQhE3jaovp9aYJDdslA.base = (&NTI_9czoZw3pzPyrBmb5zTHY1OQ);
NTI_HX2M9cQhE3jaovp9aYJDdslA.marker = Marker_TY_HX2M9cQhE3jaovp9aYJDdslA;
NTI_H1xXjJYLVXLmGFFBr8RGPQ.size = sizeof(TY_H1xXjJYLVXLmGFFBr8RGPQ);
NTI_H1xXjJYLVXLmGFFBr8RGPQ.kind = 16;
NTI_H1xXjJYLVXLmGFFBr8RGPQ.base = (&NTI_kDPg4wXyR8DDyA0MeEjIsw);
NTI_H1xXjJYLVXLmGFFBr8RGPQ.flags = 3;
NTI_G3kU09cKkEAm4eRITOVFhdQ.size = sizeof(NI16*);
NTI_G3kU09cKkEAm4eRITOVFhdQ.kind = 22;
NTI_G3kU09cKkEAm4eRITOVFhdQ.base = (&NTI_H1xXjJYLVXLmGFFBr8RGPQ);
NTI_G3kU09cKkEAm4eRITOVFhdQ.flags = 2;
NTI_G3kU09cKkEAm4eRITOVFhdQ.marker = Marker_TY_G3kU09cKkEAm4eRITOVFhdQ;
NTI_VaVACK0bpYmqIQ0mKcHfQQ.size = sizeof(NIM_BOOL);
NTI_VaVACK0bpYmqIQ0mKcHfQQ.kind = 1;
NTI_VaVACK0bpYmqIQ0mKcHfQQ.base = 0;
NTI_VaVACK0bpYmqIQ0mKcHfQQ.flags = 3;
NTI_Aav8dQoMlCFnZRxA0IhTHQ.size = sizeof(NI64);
NTI_Aav8dQoMlCFnZRxA0IhTHQ.kind = 35;
NTI_Aav8dQoMlCFnZRxA0IhTHQ.base = 0;
NTI_Aav8dQoMlCFnZRxA0IhTHQ.flags = 3;
NTI_w9bl9a1ul9ctRJWiMl9cNnIMvg.size = sizeof(NF);
NTI_w9bl9a1ul9ctRJWiMl9cNnIMvg.kind = 36;
NTI_w9bl9a1ul9ctRJWiMl9cNnIMvg.base = 0;
NTI_w9bl9a1ul9ctRJWiMl9cNnIMvg.flags = 3;
NTI_1VeTzqrFu2VJ4a6cGvuoyA.size = sizeof(TNimObject*);
NTI_1VeTzqrFu2VJ4a6cGvuoyA.kind = 22;
NTI_1VeTzqrFu2VJ4a6cGvuoyA.base = (&NTI_13RNkKqUOX1TtorOUlKtqA);
NTI_1VeTzqrFu2VJ4a6cGvuoyA.marker = Marker_TY_1VeTzqrFu2VJ4a6cGvuoyA;
NTI_k3HXouOuhqAKq0dx450lXQ.size = sizeof(NU8);
NTI_k3HXouOuhqAKq0dx450lXQ.kind = 41;
NTI_k3HXouOuhqAKq0dx450lXQ.base = 0;
NTI_k3HXouOuhqAKq0dx450lXQ.flags = 3;
NTI_JrFyJbYm9b5I4hJ9cWDqvfYA.size = sizeof(NU32);
NTI_JrFyJbYm9b5I4hJ9cWDqvfYA.kind = 43;
NTI_JrFyJbYm9b5I4hJ9cWDqvfYA.base = 0;
NTI_JrFyJbYm9b5I4hJ9cWDqvfYA.flags = 3;
NTI_GRbrBa7JIulgD34jGcFb8w.size = sizeof(Reraiseerror_GRbrBa7JIulgD34jGcFb8w);
NTI_GRbrBa7JIulgD34jGcFb8w.kind = 17;
NTI_GRbrBa7JIulgD34jGcFb8w.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[12].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[12].kind = 2;
NTI_GRbrBa7JIulgD34jGcFb8w.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[12];
NTI_beOxjNaux3PfvyYBLMJh2A.size = sizeof(Reraiseerror_GRbrBa7JIulgD34jGcFb8w*);
NTI_beOxjNaux3PfvyYBLMJh2A.kind = 22;
NTI_beOxjNaux3PfvyYBLMJh2A.base = (&NTI_GRbrBa7JIulgD34jGcFb8w);
NTI_beOxjNaux3PfvyYBLMJh2A.marker = Marker_TY_beOxjNaux3PfvyYBLMJh2A;
NTI_8FC9arcap3s5ZtfMs75krtA.size = sizeof(Assertionerror_8FC9arcap3s5ZtfMs75krtA);
NTI_8FC9arcap3s5ZtfMs75krtA.kind = 17;
NTI_8FC9arcap3s5ZtfMs75krtA.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[13].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[13].kind = 2;
NTI_8FC9arcap3s5ZtfMs75krtA.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[13];
NTI_TmgWlPUbRr7iGD2UE1cu6A.size = sizeof(Assertionerror_8FC9arcap3s5ZtfMs75krtA*);
NTI_TmgWlPUbRr7iGD2UE1cu6A.kind = 22;
NTI_TmgWlPUbRr7iGD2UE1cu6A.base = (&NTI_8FC9arcap3s5ZtfMs75krtA);
NTI_TmgWlPUbRr7iGD2UE1cu6A.marker = Marker_TY_TmgWlPUbRr7iGD2UE1cu6A;
NTI_3XwRQvmzCEOC4QnT706q1g.size = sizeof(Oserror_3XwRQvmzCEOC4QnT706q1g);
NTI_3XwRQvmzCEOC4QnT706q1g.kind = 17;
NTI_3XwRQvmzCEOC4QnT706q1g.base = (&NTI_Fjf9b9b2IlzRO2tspHxG3tgg);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[14].kind = 1;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[14].offset = offsetof(Oserror_3XwRQvmzCEOC4QnT706q1g, errorcode);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[14].typ = (&NTI_sVg18TP9cLifHyygRe9cro9aA);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[14].name = "errorCode";
NTI_3XwRQvmzCEOC4QnT706q1g.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[14];
NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA.size = sizeof(Oserror_3XwRQvmzCEOC4QnT706q1g*);
NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA.kind = 22;
NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA.base = (&NTI_3XwRQvmzCEOC4QnT706q1g);
NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA.marker = Marker_TY_Qx9aKy4vZ9bVz9bnG9brQcRHGA;
NTI_9bz2muykEFR6eMHxLnfcjxA.size = sizeof(void*);
NTI_9bz2muykEFR6eMHxLnfcjxA.kind = 18;
NTI_9bz2muykEFR6eMHxLnfcjxA.base = 0;
NTI_9bz2muykEFR6eMHxLnfcjxA.flags = 3;
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[15].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[15].kind = 2;
NTI_9bz2muykEFR6eMHxLnfcjxA.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[15];
NTI_7BHnQsEj49a9c6QtudqWTo1w.size = sizeof(FILE*);
NTI_7BHnQsEj49a9c6QtudqWTo1w.kind = 21;
NTI_7BHnQsEj49a9c6QtudqWTo1w.base = (&NTI_9bz2muykEFR6eMHxLnfcjxA);
NTI_7BHnQsEj49a9c6QtudqWTo1w.flags = 3;
NTI_chXunH2dwinSkhpA6JnsXw.size = sizeof(NI8);
NTI_chXunH2dwinSkhpA6JnsXw.kind = 32;
NTI_chXunH2dwinSkhpA6JnsXw.base = 0;
NTI_chXunH2dwinSkhpA6JnsXw.flags = 3;
NTI_wFuRaV3kWqFxI9b4hUjDJYA.size = sizeof(Rangeerror_wFuRaV3kWqFxI9b4hUjDJYA);
NTI_wFuRaV3kWqFxI9b4hUjDJYA.kind = 17;
NTI_wFuRaV3kWqFxI9b4hUjDJYA.base = (&NTI_bAvOj2UcojKN87yAQLs0aw);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[16].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[16].kind = 2;
NTI_wFuRaV3kWqFxI9b4hUjDJYA.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[16];
NTI_ifYAhUumNzWR9c9cN9amyJLtg.size = sizeof(Keyerror_ifYAhUumNzWR9c9cN9amyJLtg);
NTI_ifYAhUumNzWR9c9cN9amyJLtg.kind = 17;
NTI_ifYAhUumNzWR9c9cN9amyJLtg.base = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[17].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[17].kind = 2;
NTI_ifYAhUumNzWR9c9cN9amyJLtg.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[17];
NTI_axqhRnwd09cVJkRcojfw6mA.size = sizeof(Keyerror_ifYAhUumNzWR9c9cN9amyJLtg*);
NTI_axqhRnwd09cVJkRcojfw6mA.kind = 22;
NTI_axqhRnwd09cVJkRcojfw6mA.base = (&NTI_ifYAhUumNzWR9c9cN9amyJLtg);
NTI_axqhRnwd09cVJkRcojfw6mA.marker = Marker_TY_axqhRnwd09cVJkRcojfw6mA;
NTI_13aFwjKaWlqhwUBjDHvkIw.size = sizeof(NI);
NTI_13aFwjKaWlqhwUBjDHvkIw.kind = 31;
NTI_13aFwjKaWlqhwUBjDHvkIw.base = 0;
NTI_13aFwjKaWlqhwUBjDHvkIw.flags = 3;
NTI_nmiMWKVIe46vacnhAFrQvw.size = sizeof(NIM_CHAR);
NTI_nmiMWKVIe46vacnhAFrQvw.kind = 2;
NTI_nmiMWKVIe46vacnhAFrQvw.base = 0;
NTI_nmiMWKVIe46vacnhAFrQvw.flags = 3;
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_xHTZrq9aYs6boc9bCba0JbpQ.size = sizeof(NI);
NTI_xHTZrq9aYs6boc9bCba0JbpQ.kind = 31;
NTI_xHTZrq9aYs6boc9bCba0JbpQ.base = 0;
NTI_xHTZrq9aYs6boc9bCba0JbpQ.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_p6OJ2WGp1zYZkMyhPlJPZA.size = sizeof(Divbyzeroerror_p6OJ2WGp1zYZkMyhPlJPZA);
NTI_p6OJ2WGp1zYZkMyhPlJPZA.kind = 17;
NTI_p6OJ2WGp1zYZkMyhPlJPZA.base = (&NTI_QcJsjWXxMFpjHfkCIK5ExA);
T_Q5wkpxktOdTGvlSRo9bzt9aw_0[18].len = 0; T_Q5wkpxktOdTGvlSRo9bzt9aw_0[18].kind = 2;
NTI_p6OJ2WGp1zYZkMyhPlJPZA.node = &T_Q5wkpxktOdTGvlSRo9bzt9aw_0[18];
NTI_u50F0puw9b9c6p256tX4eJLQ.size = sizeof(NI);
NTI_u50F0puw9b9c6p256tX4eJLQ.kind = 31;
NTI_u50F0puw9b9c6p256tX4eJLQ.base = 0;
NTI_u50F0puw9b9c6p256tX4eJLQ.flags = 3;
}

