/* 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 <setjmp.h>
#include <stdio.h>
#include <stdlib.h>
#undef linux
typedef struct Tlinkedlist_9aBiIjAa4z2zTLjp4yMUvLw Tlinkedlist_9aBiIjAa4z2zTLjp4yMUvLw;
typedef struct Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Cell_1zcF9cV8XIAtbN8h5HRUB8g Cell_1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct Cellseq_Axo1XVm9aaQueTOldv8le5w Cellseq_Axo1XVm9aaQueTOldv8le5w;
typedef struct Gcheap_1TRH1TZMaVZTnLNcIHuNFQ Gcheap_1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct Gcstack_7fytPA5bBsob6See21YMRA Gcstack_7fytPA5bBsob6See21YMRA;
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 Avlnode_IaqjtwKhxLEpvDS9bct9blEw Avlnode_IaqjtwKhxLEpvDS9bct9blEw;
typedef struct Gcstat_0RwLoVBHZPfUAcLczmfQAg Gcstat_0RwLoVBHZPfUAcLczmfQAg;
typedef struct Cellset_jG87P0AI9aZtss9ccTYBIISQ Cellset_jG87P0AI9aZtss9ccTYBIISQ;
typedef struct Pagedesc_fublkgIY4LG3mT51LU2WHg Pagedesc_fublkgIY4LG3mT51LU2WHg;
typedef struct Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw;
typedef struct TY_sM4lkSb7zS6F7OVMvW9cffQ TY_sM4lkSb7zS6F7OVMvW9cffQ;
typedef struct Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA;
typedef struct Filetime_bs4NMleDDVF7xsEK0SGLBw Filetime_bs4NMleDDVF7xsEK0SGLBw;
typedef struct Exception Exception;
typedef struct TNimObject TNimObject;
typedef struct TSafePoint TSafePoint;
typedef struct TY_7q7q3E6Oj24ZNVJb9aonhAg TY_7q7q3E6Oj24ZNVJb9aonhAg;
typedef struct TY_UV3llMMYFckfui8YMBuUZA TY_UV3llMMYFckfui8YMBuUZA;
typedef struct Tstrentry_3m9czjBTF9ccwc2UyFTPCO8Q Tstrentry_3m9czjBTF9ccwc2UyFTPCO8Q;
typedef struct Basechunk_Sdq7WpT6qAH858F5ZEdG3w Basechunk_Sdq7WpT6qAH858F5ZEdG3w;
typedef struct Freecell_u6M5LHprqzkn9axr04yg9bGQ Freecell_u6M5LHprqzkn9axr04yg9bGQ;
typedef struct TY_4eQHGndY6XBYpFOH09apV8Q TY_4eQHGndY6XBYpFOH09apV8Q;
typedef NU8 Idecmd_1Ced39bl5eePmZ1PKMPXigQ;
typedef NU32 Toption_WspMeQySXNP2XoTWR5MTgg_Set;
typedef NU64 Tglobaloption_RAfAEZqjnKMDumgyKKc1qw_Set;
typedef NU8 Tcommands_VH3ghgQVwLSg3krOAoXigw;
typedef NU8 Tgcmode_tkz389aDYNd8ykeZszCuBSw;
struct  Tlinkedlist_9aBiIjAa4z2zTLjp4yMUvLw  {
Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q* head;
Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q* tail;
NI counter;
};
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 NU8 Tnimnodekind_unfNsxrcATrufDZmpBq4HQ;
struct  TNimNode  {
Tnimnodekind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef N_NIMCALL_PTR(void, TY_T4eqaYlFJYZUv9aG9b1TV0bQ) (void);
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Cell_1zcF9cV8XIAtbN8h5HRUB8g  {
NI refcount;
TNimType* typ;
};
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;
};
typedef NU8 Stringtablemode_G9c4wVDFIzf0xHmQvxso9a9cQ;
typedef NU8 Toption_WspMeQySXNP2XoTWR5MTgg;
struct  Filetime_bs4NMleDDVF7xsEK0SGLBw  {
NI32 dwlowdatetime;
NI32 dwhighdatetime;
};
typedef NI16 TY_EKfNt9b8uxndgFbu2Ky3XAQ[260];
typedef NI16 TY_Get9cpRTS5VjGKP6CDsI9bYA[14];
struct  Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA  {
NI32 dwfileattributes;
Filetime_bs4NMleDDVF7xsEK0SGLBw ftcreationtime;
Filetime_bs4NMleDDVF7xsEK0SGLBw ftlastaccesstime;
Filetime_bs4NMleDDVF7xsEK0SGLBw ftlastwritetime;
NI32 nfilesizehigh;
NI32 nfilesizelow;
NI32 dwreserved0;
NI32 dwreserved1;
TY_EKfNt9b8uxndgFbu2Ky3XAQ cfilename;
TY_Get9cpRTS5VjGKP6CDsI9bYA calternatefilename;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Exception  {
  TNimObject Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
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;
};
struct TY_7q7q3E6Oj24ZNVJb9aonhAg {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
typedef N_STDCALL_PTR(void, TY_ofoySXaAAlxxs9bQS9a1etlg) (NI hfindfile0);
typedef N_STDCALL_PTR(NI32, TY_jwEWAkul5J6p6K0UfXa1tw) (NI hfindfile0, Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA* lpfindfiledata0);
struct TY_UV3llMMYFckfui8YMBuUZA {
NimStringDesc* Field0;
NimStringDesc* Field1;
};
typedef NimStringDesc* TY_nHXaesL0DJZHyVS07ARPRA[1];
typedef NimStringDesc* TY_Re75IspeoxXy2oCZHwcRrA[2];
struct  Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q  {
  TNimObject Sup;
Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q* prev;
Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q* next;
};
struct  Tstrentry_3m9czjBTF9ccwc2UyFTPCO8Q  {
  Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q Sup;
NimStringDesc* data;
};
typedef NimStringDesc* TY_rmMMhDIqORJzUU5zqeitSQ[16];
typedef NU8 TY_nmiMWKVIe46vacnhAFrQvw_Set[32];
typedef NimStringDesc* TY_24KAM9afIUgUaqBaEBB6r9bg[3];
struct  Gcstack_7fytPA5bBsob6See21YMRA  {
Gcstack_7fytPA5bBsob6See21YMRA* prev;
Gcstack_7fytPA5bBsob6See21YMRA* next;
void* starts;
void* pos;
NI maxstacksize;
};
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  Llchunk_XsENErzHIZV9bhvyJx56wGw  {
NI size;
NI acc;
Llchunk_XsENErzHIZV9bhvyJx56wGw* next;
};
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;
};
typedef Avlnode_IaqjtwKhxLEpvDS9bct9blEw* TY_0aOLqZchNi8nWtMTi8ND8w[2];
struct  Avlnode_IaqjtwKhxLEpvDS9bct9blEw  {
TY_0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperbound;
NI level;
};
struct  Pagedesc_fublkgIY4LG3mT51LU2WHg  {
Pagedesc_fublkgIY4LG3mT51LU2WHg* next;
NI key;
TY_9agrCtWKhCnWWMJpKKugJag bits;
};
struct  Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw  {
  TNimObject Sup;
NI counter;
TY_4eQHGndY6XBYpFOH09apV8Q* data;
Stringtablemode_G9c4wVDFIzf0xHmQvxso9a9cQ mode;
};
struct  Freecell_u6M5LHprqzkn9axr04yg9bGQ  {
Freecell_u6M5LHprqzkn9axr04yg9bGQ* next;
NI zerofield;
};
struct TY_sM4lkSb7zS6F7OVMvW9cffQ {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct TY_4eQHGndY6XBYpFOH09apV8Q {
  TGenericSeq Sup;
  TY_UV3llMMYFckfui8YMBuUZA data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, nimGCvisit)(void* d0, NI op0);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_2)(void);
N_NIMCALL(void, nimRegisterGlobalMarker)(TY_T4eqaYlFJYZUv9aG9b1TV0bQ markerproc0);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_3)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_4)(void);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src0);
static N_INLINE(void, nimGCunrefNoCycle)(void* p0);
static N_INLINE(Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr0);
static N_INLINE(void, rtladdzct_MV4BBk6J1qu70IbBxwEn4w_2system)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
N_NOINLINE(void, addzct_fCDI7oO1NNVXXURtxSzsRw)(Cellseq_Axo1XVm9aaQueTOldv8le5w* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_6)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_7)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_8)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_9)(void);
N_NIMCALL(Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw*, nstnewStringTable)(Stringtablemode_G9c4wVDFIzf0xHmQvxso9a9cQ mode0);
static N_INLINE(void, asgnRef)(void** dest0, void* src0);
static N_INLINE(void, incref_9cAA5YuQAAC3MVbnGeV86swsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
static N_INLINE(void, decref_MV4BBk6J1qu70IbBxwEn4wsystem)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_10)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_11)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_12)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_13)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_14)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_15)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_16)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_17)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_18)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_19)(void);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ0, NI len0);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_20)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_21)(void);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_22)(void);
N_NIMCALL(NimStringDesc*, nosexpandFilename)(NimStringDesc* filename0);
N_NIMCALL(NI, findfirstfile_9cPKjuaUWDYlrzWunhDgNng)(NimStringDesc* a0, Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA* b0);
static N_INLINE(void, pushSafePoint)(TSafePoint* s0);
static N_INLINE(NIM_BOOL, skipfinddata_Paqclu9aSY8chOSEIvA5ZoAoptions)(Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA* f0);
N_NIMCALL(NimStringDesc*, HEX24_QjWkJEdnPpNzR7KF7dYIoQ)(NI16* s0);
N_NIMCALL(NI, searchextpos_AlmWoA52oxWnFTorxtz9caA)(NimStringDesc* s0);
N_NIMCALL(NimStringDesc*, HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ)(NimStringDesc* head0, NimStringDesc* tail0);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path0, TY_7q7q3E6Oj24ZNVJb9aonhAg* Result);
N_NIMCALL(NimStringDesc*, nosextractFilename)(NimStringDesc* path0);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src0);
static N_INLINE(void, popSafePoint)(void);
N_NIMCALL(void, reraiseException)(void);
static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0);
static N_INLINE(void, copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem)(void* dest0, void* source0, NI size0);
static N_INLINE(void, appendChar)(NimStringDesc* dest0, NIM_CHAR c0);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space0);
N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s0, NimStringDesc* prefix0);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s0, NI start0);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s0, NI first0);
N_NIMCALL(NimStringDesc*, getprefixdir_rMpbw4SUmKCJTTifDPvxAg)(void);
N_NIMCALL(void, nossplitPath)(NimStringDesc* path0, TY_UV3llMMYFckfui8YMBuUZA* Result);
N_NIMCALL(NimStringDesc*, nosgetAppDir)(void);
N_NIMCALL(NimStringDesc*, nosparentDir)(NimStringDesc* path0);
N_NIMCALL(NIM_BOOL, nsthasKey)(Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw* t0, NimStringDesc* key0);
N_NIMCALL(NimStringDesc**, nstTake)(Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw* t0, NimStringDesc* key0);
N_NIMCALL(void, nstPut)(Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw* t0, NimStringDesc* key0, NimStringDesc* val0);
N_NIMCALL(NimStringDesc*, getnimcachedir_rMpbw4SUmKCJTTifDPvxAg_2)(void);
N_NIMCALL(NimStringDesc*, shortendir_9cbPeGvuFNXZY1vvxActejw)(NimStringDesc* dir0);
N_NIMCALL(void, noscreateDir)(NimStringDesc* dir0);
N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj0, TNimType* subclass0);
static N_INLINE(Exception*, getCurrentException)(void);
static N_INLINE(void, writeline_rBQVO3cm3BhnA9aEFD7PG6Qmsgs)(FILE* f0, NimStringDesc** x0, NI x0Len0);
N_NIMCALL(void, write_c4mGyJBvK73pdM22jiweKQ)(FILE* f0, NimStringDesc* s0);
static N_INLINE(void, popCurrentException)(void);
N_NIMCALL(NimStringDesc*, nosjoinPath)(NimStringDesc* head0, NimStringDesc* tail0);
N_NIMCALL(NimStringDesc*, nosjoinPathOpenArray)(NimStringDesc** parts0, NI parts0Len0);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename0, NimStringDesc* ext0);
N_NIMCALL(NimStringDesc*, getpackagename_UaWiM5ZjesnVJ9aMCHdFTlg)(NimStringDesc* path0);
N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename0, NimStringDesc* ext0);
N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename0);
N_NIMCALL(NimStringDesc*, findfile_4D4bGjvfjjNx0zrBVeJAbQ)(NimStringDesc* f0);
N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path0);
N_NIMCALL(NimStringDesc*, rawfindfile_4D4bGjvfjjNx0zrBVeJAbQ_2)(NimStringDesc* f0);
N_NIMCALL(NimStringDesc*, canonicalizepath_hXI3LWBWedZbdPyAYn0KOQ)(NimStringDesc* path0);
N_NIMCALL(NimStringDesc*, nsuToLowerAsciiStr)(NimStringDesc* s0);
N_NIMCALL(NimStringDesc*, rawfindfile2_4D4bGjvfjjNx0zrBVeJAbQ_3)(NimStringDesc* f0);
N_NIMCALL(void, bringtofront_OHo5UGptcxVKInJo6EIoMg)(Tlinkedlist_9aBiIjAa4z2zTLjp4yMUvLw* list0, Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q* entry0);
N_NIMCALL(NI, nstlen)(Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw* t0);
N_NIMCALL(NimStringDesc*, removetrailingdirsep_hXI3LWBWedZbdPyAYn0KOQ_3)(NimStringDesc* path0);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI start_WPWyPKk58Cr5a6XFFviMjg, NI last0);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI first0, NI last0);
N_NIMCALL(NimStringDesc*, nosgetHomeDir)(void);
N_NIMCALL(NimStringDesc*, nosunixToNativePath)(NimStringDesc* path0, NimStringDesc* drive0);
N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr0, NimStringDesc** a0, NI a0Len0);
N_NIMCALL(NIM_BOOL, contains_6e5MGL10HDAJ205lBYpWxw)(NimStringDesc* s0, NIM_CHAR c0);
N_NIMCALL(NimStringDesc*, nsuReplaceStr)(NimStringDesc* s0, NimStringDesc* sub0, NimStringDesc* by0);
N_NIMCALL(NimStringDesc*, getordefault_puv5W0GXw9aUdLJI2i8WreQ)(Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw* t0, NimStringDesc* key0);
N_NIMCALL(NimStringDesc*, canondynlibname_ZQgPcgqPX8lQ9aZSxvttQUQ)(NimStringDesc* s0);
N_NIMCALL(NI, nsuFindCharSet)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set chars0, NI start0);
static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0);
N_NIMCALL(NimStringDesc*, findexe_NQz9bqtJ8Yukg6trpGym2NQ)(NimStringDesc* exe0, NIM_BOOL followsymlinks0, TY_24KAM9afIUgUaqBaEBB6r9bg extensions0);
static N_INLINE(NIM_BOOL, fileexists_yTPrfdEKg9cKCeSFUA6popQoptions)(NimStringDesc* filename0);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a0, NimStringDesc* b0);
static N_INLINE(NIM_BOOL, equalmem_DCrUjdaMvFDHaR1hs7sQGwropes)(void* a0, void* b0, NI size0);
N_NIMCALL(NI, hashString)(NimStringDesc* s0);
Idecmd_1Ced39bl5eePmZ1PKMPXigQ gidecmd_juq2yKSgC8DZC5pqLIaQmQ;
Toption_WspMeQySXNP2XoTWR5MTgg_Set goptions_KL5B8sF4szIsM2AXCWFsIw;
Tglobaloption_RAfAEZqjnKMDumgyKKc1qw_Set gglobaloptions_j042VVDC9cT5ENYoXnmhhVg;
NI8 gexitcode_jvxeu5L0gn9cKJyK3w1hKfQ;
Tcommands_VH3ghgQVwLSg3krOAoXigw gcmd_0oKScFtMiSKnjiHF9cU9c5GQ;
Tgcmode_tkz389aDYNd8ykeZszCuBSw gselectedgc_Qq37YMpTZX6EGc9apygtZcg;
Tlinkedlist_9aBiIjAa4z2zTLjp4yMUvLw searchpaths_XRBeXIYowTeRSkTUFC0m2w;
extern TNimType NTI_9aBiIjAa4z2zTLjp4yMUvLw;
Tlinkedlist_9aBiIjAa4z2zTLjp4yMUvLw lazypaths_uObU3TsEr9bGIxsNFEkim6Q;
NimStringDesc* outfile_LiHKjDVrUS85u6xbuNvgxA;
extern TNimType NTI_77mFvmsOLKik79ci2hXkHEg;
extern Gcheap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
NimStringDesc* docseesrcurl_U9aR0glDUYolFZl2cIHatPA;
NimStringDesc* headerfile_35eufpdPFnBAIbKX7Nw3MQ;
NI gverbosity_BhOkdHk9bv1VGWSLnxRNYpw;
NI gnumberofprocessors_Ab3cIDiiQ4afbp9cf9agSElw;
NIM_BOOL gwholeproject_MjauEmf9c7n25a6W6FpTptQ;
NimStringDesc* gevalexpr_8nWK3bmD6K9bIq710IsJk9bA;
NF glastcmdtime_4DoNtTiILjsDdutRP4YBsg;
NIM_BOOL glistfullpaths_XlOeX4UpmYcYncigrRhIQQ;
NIM_BOOL isserving_01Mh0wvlr3JvIajHGsOtZg;
NIM_BOOL gnonimblepath_0oxZgkYmNiEGgMhQbS0nWQ;
NIM_BOOL gexperimentalmode_6soUgFI6y4OEq35jrgN9chQ;
Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw* gconfigvars_0Vkej44DF5osh1Rc3US8qw;
extern TNimType NTI_pkhT5bYRU9ayIZ9cBuuCx4Xw;
Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw* gdlloverrides_IxZaUtyv9cgx1VcO8ThgETA;
Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw* gmoduleoverrides_JOidTRh7W9cZzG9a5FZJR83A;
NimStringDesc* gprefixdir_3aGH6UIFMV6AObeuYPm7Iw;
NimStringDesc* libpath_sniQ2ei4mGD9av6vrH9bfUgg;
NimStringDesc* gprojectname_QOoHniL6MYtzlAjpv8zzdA;
NimStringDesc* gprojectpath_RQlrqBW2RHkKfot9caCcOtQ;
NimStringDesc* gprojectfull_V1rcVHDANDR4ly2ul00asg;
NIM_BOOL gprojectisstdin_YvC8IOG0BaMX6AECkLfsTg;
NI32 gprojectmainidx_s51E9a7f5CnUiA9bhp5yxOJQ;
NimStringDesc* nimcachedir_gz7Z9b1MUAQYO9aG1Mn0dhfQ;
NimStringDesc* command_zo83h8QWwtDIGDuqkGhjqg;
TY_sM4lkSb7zS6F7OVMvW9cffQ* commandargs_ZhyagKlrfRLcCwi84z1S3w;
extern TNimType NTI_sM4lkSb7zS6F7OVMvW9cffQ;
NIM_BOOL gkeepcomments_sb5UZ9bCGHf9aNQe3RXvpW9aw;
TY_sM4lkSb7zS6F7OVMvW9cffQ* implicitimports_XYWUArUq6jyG8rkdCgiYHg;
TY_sM4lkSb7zS6F7OVMvW9cffQ* implicitincludes_ONs9cUe5UCi0qmlNQlNHiMg;
Stringtableobj_DKRIdH9c9cKI7YpQb9c0wKlEw* packagecache_3h5llDm6Glt40lMSO9apZ1w;
TNimType NTI_WspMeQySXNP2XoTWR5MTgg;
TNimType NTI_7MnKRybmCNh5j9bDRLMkxLw;
extern TSafePoint* exchandler_rqLlY5bs9atDw2OXYqJEn5g;
extern TY_ofoySXaAAlxxs9bQS9a1etlg Dl_120601;
extern TY_jwEWAkul5J6p6K0UfXa1tw Dl_120437;
extern TNimType NTI_3XwRQvmzCEOC4QnT706q1g;
extern Exception* currexception_9bVPeDJlYTi9bQApZpfH8wjg;
TNimType NTI_1Ced39bl5eePmZ1PKMPXigQ;
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_5, "", 0);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_27, "*.nimble", 8);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_29, "*.babel", 7);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_31, "nimcache", 8);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_33, "\015\012", 2);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_34, "cannot create directory: ", 25);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_35, "nim", 3);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_36, "_", 1);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_37, "lib", 3);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_38, "home", 4);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_39, "config", 6);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_40, "projectname", 11);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_41, "projectpath", 11);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_42, "projectdir", 10);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_43, "~", 1);
static NIM_CONST TY_nmiMWKVIe46vacnhAFrQvw_Set T_zQHipMPUXFgsDrLbMR9atnA_44 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_45, "true", 4);
extern NIM_CONST TY_24KAM9afIUgUaqBaEBB6r9bg Exeexts_ONrgkgAZ9bh6KVTWl4XeOSw;
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_46, "system.nim", 10);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_47, "sug", 3);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_48, "con", 3);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_49, "def", 3);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_50, "use", 3);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_51, "dus", 3);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_52, "chk", 3);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_53, "mod", 3);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_54, "none", 4);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_55, "highlight", 9);
STRING_LITERAL(T_zQHipMPUXFgsDrLbMR9atnA_56, "outline", 7);
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_2)(void) {
	nimGCvisit((void*)searchpaths_XRBeXIYowTeRSkTUFC0m2w.head, 0);
	nimGCvisit((void*)searchpaths_XRBeXIYowTeRSkTUFC0m2w.tail, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_3)(void) {
	nimGCvisit((void*)lazypaths_uObU3TsEr9bGIxsNFEkim6Q.head, 0);
	nimGCvisit((void*)lazypaths_uObU3TsEr9bGIxsNFEkim6Q.tail, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_4)(void) {
	nimGCvisit((void*)outfile_LiHKjDVrUS85u6xbuNvgxA, 0);
}

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

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

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_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_6)(void) {
	nimGCvisit((void*)docseesrcurl_U9aR0glDUYolFZl2cIHatPA, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_7)(void) {
	nimGCvisit((void*)headerfile_35eufpdPFnBAIbKX7Nw3MQ, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_8)(void) {
	nimGCvisit((void*)gevalexpr_8nWK3bmD6K9bIq710IsJk9bA, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_9)(void) {
	nimGCvisit((void*)gconfigvars_0Vkej44DF5osh1Rc3US8qw, 0);
}

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

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(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_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_10)(void) {
	nimGCvisit((void*)gdlloverrides_IxZaUtyv9cgx1VcO8ThgETA, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_11)(void) {
	nimGCvisit((void*)gmoduleoverrides_JOidTRh7W9cZzG9a5FZJR83A, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_12)(void) {
	nimGCvisit((void*)gprefixdir_3aGH6UIFMV6AObeuYPm7Iw, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_13)(void) {
	nimGCvisit((void*)libpath_sniQ2ei4mGD9av6vrH9bfUgg, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_14)(void) {
	nimGCvisit((void*)gprojectname_QOoHniL6MYtzlAjpv8zzdA, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_15)(void) {
	nimGCvisit((void*)gprojectpath_RQlrqBW2RHkKfot9caCcOtQ, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_16)(void) {
	nimGCvisit((void*)gprojectfull_V1rcVHDANDR4ly2ul00asg, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_17)(void) {
	nimGCvisit((void*)nimcachedir_gz7Z9b1MUAQYO9aG1Mn0dhfQ, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_18)(void) {
	nimGCvisit((void*)command_zo83h8QWwtDIGDuqkGhjqg, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_19)(void) {
	nimGCvisit((void*)commandargs_ZhyagKlrfRLcCwi84z1S3w, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_20)(void) {
	nimGCvisit((void*)implicitimports_XYWUArUq6jyG8rkdCgiYHg, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_21)(void) {
	nimGCvisit((void*)implicitincludes_ONs9cUe5UCi0qmlNQlNHiMg, 0);
}
static N_NIMCALL(void, T_zQHipMPUXFgsDrLbMR9atnA_22)(void) {
	nimGCvisit((void*)packagecache_3h5llDm6Glt40lMSO9apZ1w, 0);
}

static N_INLINE(void, pushSafePoint)(TSafePoint* s0) {
	(*s0).hasRaiseAction = NIM_FALSE;
	(*s0).prev = exchandler_rqLlY5bs9atDw2OXYqJEn5g;
	exchandler_rqLlY5bs9atDw2OXYqJEn5g = s0;
}

static N_INLINE(NIM_BOOL, skipfinddata_Paqclu9aSY8chOSEIvA5ZoAoptions)(Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA* f0) {
	NIM_BOOL result0;
	NIM_BOOL LOC1;
	NIM_BOOL LOC3;
	NIM_BOOL LOC5;
	result0 = (NIM_BOOL)0;
	LOC1 = (NIM_BOOL)0;
	LOC1 = (((NI) ((*f0).cfilename[(((NI) 0))- 0])) == ((NI) 46));
	if (!(LOC1)) goto LA2;
	LOC3 = (NIM_BOOL)0;
	LOC3 = (((NI) ((*f0).cfilename[(((NI) 1))- 0])) == ((NI) 0));
	if (LOC3) goto LA4;
	LOC5 = (NIM_BOOL)0;
	LOC5 = (((NI) ((*f0).cfilename[(((NI) 1))- 0])) == ((NI) 46));
	if (!(LOC5)) goto LA6;
	LOC5 = (((NI) ((*f0).cfilename[(((NI) 2))- 0])) == ((NI) 0));
	LA6: ;
	LOC3 = LOC5;
	LA4: ;
	LOC1 = LOC3;
	LA2: ;
	result0 = LOC1;
	return result0;
}

static N_INLINE(void, popSafePoint)(void) {
	exchandler_rqLlY5bs9atDw2OXYqJEn5g = (*exchandler_rqLlY5bs9atDw2OXYqJEn5g).prev;
}

N_NIMCALL(NimStringDesc*, canonicalizepath_hXI3LWBWedZbdPyAYn0KOQ)(NimStringDesc* path0) {
	NimStringDesc* volatile result0;
{	result0 = (NimStringDesc*)0;
	result0 = nosexpandFilename(path0);
	{
		NimStringDesc* x_0yJ31g9cTiWjQHGA6X0rHfQ;
		Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA f_Moxar45FujujzDGR3zsqZg;
		NI res_SqUpcL2CetG49c9bZqegAEug;
		x_0yJ31g9cTiWjQHGA6X0rHfQ = (NimStringDesc*)0;
		memset((void*)(&f_Moxar45FujujzDGR3zsqZg), 0, sizeof(f_Moxar45FujujzDGR3zsqZg));
		res_SqUpcL2CetG49c9bZqegAEug = (NI)0;
		res_SqUpcL2CetG49c9bZqegAEug = findfirstfile_9cPKjuaUWDYlrzWunhDgNng(result0, (&f_Moxar45FujujzDGR3zsqZg));
		{
			TSafePoint T_zQHipMPUXFgsDrLbMR9atnA_26;
			if (!!((res_SqUpcL2CetG49c9bZqegAEug == ((NI) -1)))) goto LA4;
			pushSafePoint(&T_zQHipMPUXFgsDrLbMR9atnA_26);
			T_zQHipMPUXFgsDrLbMR9atnA_26.status = setjmp(T_zQHipMPUXFgsDrLbMR9atnA_26.context);
			if (T_zQHipMPUXFgsDrLbMR9atnA_26.status == 0) {
				{
					while (1) {
						{
							NIM_BOOL LOC11;
							NIM_BOOL LOC12;
							NimStringDesc* ff_2Ix727jbvgjRsXGV44Vtvg;
							NI dotpos_a5F9akLw2iacjRjZqejg1fw;
							NI idx_A8iee7LJmzuHYho3fvtaLg;
							LOC11 = (NIM_BOOL)0;
							LOC12 = (NIM_BOOL)0;
							LOC12 = skipfinddata_Paqclu9aSY8chOSEIvA5ZoAoptions((&f_Moxar45FujujzDGR3zsqZg));
							LOC11 = !(LOC12);
							if (!(LOC11)) goto LA13;
							LOC11 = !(!(((NI32)(f_Moxar45FujujzDGR3zsqZg.dwfileattributes & ((NI32) 16)) == ((NI32) 0))));
							LA13: ;
							if (!LOC11) goto LA14;
							ff_2Ix727jbvgjRsXGV44Vtvg = HEX24_QjWkJEdnPpNzR7KF7dYIoQ(((NI16*) ((&f_Moxar45FujujzDGR3zsqZg.cfilename[(((NI) 0))- 0]))));
							dotpos_a5F9akLw2iacjRjZqejg1fw = searchextpos_AlmWoA52oxWnFTorxtz9caA(result0);
							idx_A8iee7LJmzuHYho3fvtaLg = (NI)((NI)((ff_2Ix727jbvgjRsXGV44Vtvg ? ff_2Ix727jbvgjRsXGV44Vtvg->Sup.len : 0) - (result0 ? result0->Sup.len : 0)) + dotpos_a5F9akLw2iacjRjZqejg1fw);
							{
								NIM_BOOL LOC18;
								NIM_BOOL LOC19;
								NIM_BOOL LOC20;
								TY_7q7q3E6Oj24ZNVJb9aonhAg LOC26;
								NimStringDesc* LOC27;
								LOC18 = (NIM_BOOL)0;
								LOC19 = (NIM_BOOL)0;
								LOC20 = (NIM_BOOL)0;
								LOC20 = (dotpos_a5F9akLw2iacjRjZqejg1fw < ((NI) 0));
								if (LOC20) goto LA21;
								LOC20 = ((ff_2Ix727jbvgjRsXGV44Vtvg ? ff_2Ix727jbvgjRsXGV44Vtvg->Sup.len : 0) <= idx_A8iee7LJmzuHYho3fvtaLg);
								LA21: ;
								LOC19 = LOC20;
								if (LOC19) goto LA22;
								LOC19 = ((NU8)(ff_2Ix727jbvgjRsXGV44Vtvg->data[idx_A8iee7LJmzuHYho3fvtaLg]) == (NU8)(46));
								LA22: ;
								LOC18 = LOC19;
								if (LOC18) goto LA23;
								LOC18 = ((NU8)(result0->data[(NI)(dotpos_a5F9akLw2iacjRjZqejg1fw + ((NI) 1))]) == (NU8)(42));
								LA23: ;
								if (!LOC18) goto LA24;
								memset((void*)(&LOC26), 0, sizeof(LOC26));
								nossplitFile(result0, (&LOC26));
								LOC27 = (NimStringDesc*)0;
								LOC27 = nosextractFilename(ff_2Ix727jbvgjRsXGV44Vtvg);
								x_0yJ31g9cTiWjQHGA6X0rHfQ = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(LOC26.Field0, LOC27);
								result0 = copyString(x_0yJ31g9cTiWjQHGA6X0rHfQ);
								popSafePoint();
								Dl_120601(res_SqUpcL2CetG49c9bZqegAEug);
								goto BeforeRet;
							}
							LA24: ;
						}
						LA14: ;
						{
							NI32 LOC30;
							LOC30 = (NI32)0;
							LOC30 = Dl_120437(res_SqUpcL2CetG49c9bZqegAEug, (&f_Moxar45FujujzDGR3zsqZg));
							if (!(LOC30 == ((NI32) 0))) goto LA31;
							goto LA7;
						}
						LA31: ;
					}
				} LA7: ;
				popSafePoint();
			}
			else {
				popSafePoint();
			}
			{
				Dl_120601(res_SqUpcL2CetG49c9bZqegAEug);
			}
			if (T_zQHipMPUXFgsDrLbMR9atnA_26.status != 0) reraiseException();
		}
		LA4: ;
	}
	}BeforeRet: ;
	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(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, appendChar)(NimStringDesc* dest0, NIM_CHAR c0) {
	(*dest0).data[((*dest0).Sup.len)- 0] = c0;
	(*dest0).data[((NI)((*dest0).Sup.len + ((NI) 1)))- 0] = 0;
	(*dest0).Sup.len += ((NI) 1);
}

N_NIMCALL(NimStringDesc*, getprefixdir_rMpbw4SUmKCJTTifDPvxAg)(void) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!!(((gprefixdir_3aGH6UIFMV6AObeuYPm7Iw) && (gprefixdir_3aGH6UIFMV6AObeuYPm7Iw)->Sup.len == 0))) goto LA3;
		result0 = copyString(gprefixdir_3aGH6UIFMV6AObeuYPm7Iw);
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC6;
		TY_UV3llMMYFckfui8YMBuUZA LOC7;
		LOC6 = (NimStringDesc*)0;
		LOC6 = nosgetAppDir();
		memset((void*)(&LOC7), 0, sizeof(LOC7));
		nossplitPath(LOC6, (&LOC7));
		result0 = copyString(LOC7.Field0);
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, shortendir_9cbPeGvuFNXZY1vvxActejw)(NimStringDesc* dir0) {
	NimStringDesc* result0;
	NimStringDesc* prefix0;
	NimStringDesc* LOC1;
	NimStringDesc* LOC7;
	NimStringDesc* LOC8;
{	result0 = (NimStringDesc*)0;
	LOC1 = (NimStringDesc*)0;
	LOC1 = rawNewString(gprojectpath_RQlrqBW2RHkKfot9caCcOtQ->Sup.len + 1);
appendString(LOC1, gprojectpath_RQlrqBW2RHkKfot9caCcOtQ);
appendChar(LOC1, 92);
	prefix0 = LOC1;
	{
		NIM_BOOL LOC4;
		LOC4 = (NIM_BOOL)0;
		LOC4 = nsuStartsWith(dir0, prefix0);
		if (!LOC4) goto LA5;
		result0 = copyStr(dir0, (prefix0 ? prefix0->Sup.len : 0));
		goto BeforeRet;
	}
	LA5: ;
	LOC7 = (NimStringDesc*)0;
	LOC8 = (NimStringDesc*)0;
	LOC8 = getprefixdir_rMpbw4SUmKCJTTifDPvxAg();
	LOC7 = rawNewString(LOC8->Sup.len + 1);
appendString(LOC7, LOC8);
appendChar(LOC7, 92);
	prefix0 = LOC7;
	{
		NIM_BOOL LOC11;
		LOC11 = (NIM_BOOL)0;
		LOC11 = nsuStartsWith(dir0, prefix0);
		if (!LOC11) goto LA12;
		result0 = copyStr(dir0, (prefix0 ? prefix0->Sup.len : 0));
		goto BeforeRet;
	}
	LA12: ;
	result0 = copyString(dir0);
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, getpackagename_UaWiM5ZjesnVJ9aMCHdFTlg)(NimStringDesc* path0) {
	NimStringDesc* volatile result0;
	NI parents0;
{	result0 = (NimStringDesc*)0;
	parents0 = ((NI) 0);
	{
		{
			NimStringDesc* d_ZN9aJF9cJWprKdFfYizCV8Qg;
			NimStringDesc* current_o9bYXvu14FSOZ3h6zS40chw;
			d_ZN9aJF9cJWprKdFfYizCV8Qg = (NimStringDesc*)0;
			current_o9bYXvu14FSOZ3h6zS40chw = copyString(path0);
			{
				while (1) {
					current_o9bYXvu14FSOZ3h6zS40chw = nosparentDir(current_o9bYXvu14FSOZ3h6zS40chw);
					{
						if (!((current_o9bYXvu14FSOZ3h6zS40chw ? current_o9bYXvu14FSOZ3h6zS40chw->Sup.len : 0) == ((NI) 0))) goto LA7;
						goto LA3;
					}
					LA7: ;
					d_ZN9aJF9cJWprKdFfYizCV8Qg = current_o9bYXvu14FSOZ3h6zS40chw;
					{
						NIM_BOOL LOC11;
						NimStringDesc** LOC14;
						LOC11 = (NIM_BOOL)0;
						LOC11 = nsthasKey(packagecache_3h5llDm6Glt40lMSO9apZ1w, d_ZN9aJF9cJWprKdFfYizCV8Qg);
						if (!LOC11) goto LA12;
						LOC14 = (NimStringDesc**)0;
						LOC14 = nstTake(packagecache_3h5llDm6Glt40lMSO9apZ1w, d_ZN9aJF9cJWprKdFfYizCV8Qg);
						result0 = copyString((*LOC14));
						goto BeforeRet;
					}
					LA12: ;
					parents0 += ((NI) 1);
					{
						NimStringDesc* file_pAOWlfmsg762KQbdcmWnhQ;
						NimStringDesc* HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg;
						Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA f_PTf9cfzdDu26GgeT269a3gtA;
						NI res_i4sOC6pfJQ4HZWeL0RMvSQ;
						file_pAOWlfmsg762KQbdcmWnhQ = (NimStringDesc*)0;
						HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg = (NimStringDesc*)0;
						HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(d_ZN9aJF9cJWprKdFfYizCV8Qg, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_27));
						memset((void*)(&f_PTf9cfzdDu26GgeT269a3gtA), 0, sizeof(f_PTf9cfzdDu26GgeT269a3gtA));
						res_i4sOC6pfJQ4HZWeL0RMvSQ = (NI)0;
						res_i4sOC6pfJQ4HZWeL0RMvSQ = findfirstfile_9cPKjuaUWDYlrzWunhDgNng(HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg, (&f_PTf9cfzdDu26GgeT269a3gtA));
						{
							TSafePoint T_zQHipMPUXFgsDrLbMR9atnA_28;
							if (!!((res_i4sOC6pfJQ4HZWeL0RMvSQ == ((NI) -1)))) goto LA18;
							pushSafePoint(&T_zQHipMPUXFgsDrLbMR9atnA_28);
							T_zQHipMPUXFgsDrLbMR9atnA_28.status = setjmp(T_zQHipMPUXFgsDrLbMR9atnA_28.context);
							if (T_zQHipMPUXFgsDrLbMR9atnA_28.status == 0) {
								{
									while (1) {
										{
											NIM_BOOL LOC25;
											NIM_BOOL LOC26;
											NimStringDesc* ff_oJ0vSm1ECJjns2ZVYL7xiw;
											NI dotpos_63AvpPlVMxBXNHBmC4aZWQ;
											NI idx_sCzI5Hqn8uFdVbbeY22VVA;
											LOC25 = (NIM_BOOL)0;
											LOC26 = (NIM_BOOL)0;
											LOC26 = skipfinddata_Paqclu9aSY8chOSEIvA5ZoAoptions((&f_PTf9cfzdDu26GgeT269a3gtA));
											LOC25 = !(LOC26);
											if (!(LOC25)) goto LA27;
											LOC25 = !(!(((NI32)(f_PTf9cfzdDu26GgeT269a3gtA.dwfileattributes & ((NI32) 16)) == ((NI32) 0))));
											LA27: ;
											if (!LOC25) goto LA28;
											ff_oJ0vSm1ECJjns2ZVYL7xiw = HEX24_QjWkJEdnPpNzR7KF7dYIoQ(((NI16*) ((&f_PTf9cfzdDu26GgeT269a3gtA.cfilename[(((NI) 0))- 0]))));
											dotpos_63AvpPlVMxBXNHBmC4aZWQ = searchextpos_AlmWoA52oxWnFTorxtz9caA(HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg);
											idx_sCzI5Hqn8uFdVbbeY22VVA = (NI)((NI)((ff_oJ0vSm1ECJjns2ZVYL7xiw ? ff_oJ0vSm1ECJjns2ZVYL7xiw->Sup.len : 0) - (HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg ? HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg->Sup.len : 0)) + dotpos_63AvpPlVMxBXNHBmC4aZWQ);
											{
												NIM_BOOL LOC32;
												NIM_BOOL LOC33;
												NIM_BOOL LOC34;
												TY_7q7q3E6Oj24ZNVJb9aonhAg LOC40;
												NimStringDesc* LOC41;
												TY_7q7q3E6Oj24ZNVJb9aonhAg LOC42;
												LOC32 = (NIM_BOOL)0;
												LOC33 = (NIM_BOOL)0;
												LOC34 = (NIM_BOOL)0;
												LOC34 = (dotpos_63AvpPlVMxBXNHBmC4aZWQ < ((NI) 0));
												if (LOC34) goto LA35;
												LOC34 = ((ff_oJ0vSm1ECJjns2ZVYL7xiw ? ff_oJ0vSm1ECJjns2ZVYL7xiw->Sup.len : 0) <= idx_sCzI5Hqn8uFdVbbeY22VVA);
												LA35: ;
												LOC33 = LOC34;
												if (LOC33) goto LA36;
												LOC33 = ((NU8)(ff_oJ0vSm1ECJjns2ZVYL7xiw->data[idx_sCzI5Hqn8uFdVbbeY22VVA]) == (NU8)(46));
												LA36: ;
												LOC32 = LOC33;
												if (LOC32) goto LA37;
												LOC32 = ((NU8)(HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg->data[(NI)(dotpos_63AvpPlVMxBXNHBmC4aZWQ + ((NI) 1))]) == (NU8)(42));
												LA37: ;
												if (!LOC32) goto LA38;
												memset((void*)(&LOC40), 0, sizeof(LOC40));
												nossplitFile(HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg, (&LOC40));
												LOC41 = (NimStringDesc*)0;
												LOC41 = nosextractFilename(ff_oJ0vSm1ECJjns2ZVYL7xiw);
												file_pAOWlfmsg762KQbdcmWnhQ = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(LOC40.Field0, LOC41);
												memset((void*)(&LOC42), 0, sizeof(LOC42));
												nossplitFile(file_pAOWlfmsg762KQbdcmWnhQ, (&LOC42));
												result0 = copyString(LOC42.Field1);
												popSafePoint();
												Dl_120601(res_i4sOC6pfJQ4HZWeL0RMvSQ);
												goto LA1;
											}
											LA38: ;
										}
										LA28: ;
										{
											NI32 LOC45;
											LOC45 = (NI32)0;
											LOC45 = Dl_120437(res_i4sOC6pfJQ4HZWeL0RMvSQ, (&f_PTf9cfzdDu26GgeT269a3gtA));
											if (!(LOC45 == ((NI32) 0))) goto LA46;
											goto LA21;
										}
										LA46: ;
									}
								} LA21: ;
								popSafePoint();
							}
							else {
								popSafePoint();
							}
							{
								Dl_120601(res_i4sOC6pfJQ4HZWeL0RMvSQ);
							}
							if (T_zQHipMPUXFgsDrLbMR9atnA_28.status != 0) reraiseException();
						}
						LA18: ;
					}
					{
						NimStringDesc* file_pAOWlfmsg762KQbdcmWnhQ_2;
						NimStringDesc* HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg_2;
						Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA f_PTf9cfzdDu26GgeT269a3gtA_2;
						NI res_i4sOC6pfJQ4HZWeL0RMvSQ_2;
						file_pAOWlfmsg762KQbdcmWnhQ_2 = (NimStringDesc*)0;
						HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg_2 = (NimStringDesc*)0;
						HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg_2 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(d_ZN9aJF9cJWprKdFfYizCV8Qg, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_29));
						memset((void*)(&f_PTf9cfzdDu26GgeT269a3gtA_2), 0, sizeof(f_PTf9cfzdDu26GgeT269a3gtA_2));
						res_i4sOC6pfJQ4HZWeL0RMvSQ_2 = (NI)0;
						res_i4sOC6pfJQ4HZWeL0RMvSQ_2 = findfirstfile_9cPKjuaUWDYlrzWunhDgNng(HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg_2, (&f_PTf9cfzdDu26GgeT269a3gtA_2));
						{
							TSafePoint T_zQHipMPUXFgsDrLbMR9atnA_30;
							if (!!((res_i4sOC6pfJQ4HZWeL0RMvSQ_2 == ((NI) -1)))) goto LA53;
							pushSafePoint(&T_zQHipMPUXFgsDrLbMR9atnA_30);
							T_zQHipMPUXFgsDrLbMR9atnA_30.status = setjmp(T_zQHipMPUXFgsDrLbMR9atnA_30.context);
							if (T_zQHipMPUXFgsDrLbMR9atnA_30.status == 0) {
								{
									while (1) {
										{
											NIM_BOOL LOC60;
											NIM_BOOL LOC61;
											NimStringDesc* ff_oJ0vSm1ECJjns2ZVYL7xiw_2;
											NI dotpos_63AvpPlVMxBXNHBmC4aZWQ_2;
											NI idx_sCzI5Hqn8uFdVbbeY22VVA_2;
											LOC60 = (NIM_BOOL)0;
											LOC61 = (NIM_BOOL)0;
											LOC61 = skipfinddata_Paqclu9aSY8chOSEIvA5ZoAoptions((&f_PTf9cfzdDu26GgeT269a3gtA_2));
											LOC60 = !(LOC61);
											if (!(LOC60)) goto LA62;
											LOC60 = !(!(((NI32)(f_PTf9cfzdDu26GgeT269a3gtA_2.dwfileattributes & ((NI32) 16)) == ((NI32) 0))));
											LA62: ;
											if (!LOC60) goto LA63;
											ff_oJ0vSm1ECJjns2ZVYL7xiw_2 = HEX24_QjWkJEdnPpNzR7KF7dYIoQ(((NI16*) ((&f_PTf9cfzdDu26GgeT269a3gtA_2.cfilename[(((NI) 0))- 0]))));
											dotpos_63AvpPlVMxBXNHBmC4aZWQ_2 = searchextpos_AlmWoA52oxWnFTorxtz9caA(HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg_2);
											idx_sCzI5Hqn8uFdVbbeY22VVA_2 = (NI)((NI)((ff_oJ0vSm1ECJjns2ZVYL7xiw_2 ? ff_oJ0vSm1ECJjns2ZVYL7xiw_2->Sup.len : 0) - (HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg_2 ? HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg_2->Sup.len : 0)) + dotpos_63AvpPlVMxBXNHBmC4aZWQ_2);
											{
												NIM_BOOL LOC67;
												NIM_BOOL LOC68;
												NIM_BOOL LOC69;
												TY_7q7q3E6Oj24ZNVJb9aonhAg LOC75;
												NimStringDesc* LOC76;
												TY_7q7q3E6Oj24ZNVJb9aonhAg LOC77;
												LOC67 = (NIM_BOOL)0;
												LOC68 = (NIM_BOOL)0;
												LOC69 = (NIM_BOOL)0;
												LOC69 = (dotpos_63AvpPlVMxBXNHBmC4aZWQ_2 < ((NI) 0));
												if (LOC69) goto LA70;
												LOC69 = ((ff_oJ0vSm1ECJjns2ZVYL7xiw_2 ? ff_oJ0vSm1ECJjns2ZVYL7xiw_2->Sup.len : 0) <= idx_sCzI5Hqn8uFdVbbeY22VVA_2);
												LA70: ;
												LOC68 = LOC69;
												if (LOC68) goto LA71;
												LOC68 = ((NU8)(ff_oJ0vSm1ECJjns2ZVYL7xiw_2->data[idx_sCzI5Hqn8uFdVbbeY22VVA_2]) == (NU8)(46));
												LA71: ;
												LOC67 = LOC68;
												if (LOC67) goto LA72;
												LOC67 = ((NU8)(HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg_2->data[(NI)(dotpos_63AvpPlVMxBXNHBmC4aZWQ_2 + ((NI) 1))]) == (NU8)(42));
												LA72: ;
												if (!LOC67) goto LA73;
												memset((void*)(&LOC75), 0, sizeof(LOC75));
												nossplitFile(HEX3Atmp_PjJrs2lsnGPUlAc28vSwkg_2, (&LOC75));
												LOC76 = (NimStringDesc*)0;
												LOC76 = nosextractFilename(ff_oJ0vSm1ECJjns2ZVYL7xiw_2);
												file_pAOWlfmsg762KQbdcmWnhQ_2 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(LOC75.Field0, LOC76);
												memset((void*)(&LOC77), 0, sizeof(LOC77));
												nossplitFile(file_pAOWlfmsg762KQbdcmWnhQ_2, (&LOC77));
												result0 = copyString(LOC77.Field1);
												popSafePoint();
												Dl_120601(res_i4sOC6pfJQ4HZWeL0RMvSQ_2);
												goto LA1;
											}
											LA73: ;
										}
										LA63: ;
										{
											NI32 LOC80;
											LOC80 = (NI32)0;
											LOC80 = Dl_120437(res_i4sOC6pfJQ4HZWeL0RMvSQ_2, (&f_PTf9cfzdDu26GgeT269a3gtA_2));
											if (!(LOC80 == ((NI32) 0))) goto LA81;
											goto LA56;
										}
										LA81: ;
									}
								} LA56: ;
								popSafePoint();
							}
							else {
								popSafePoint();
							}
							{
								Dl_120601(res_i4sOC6pfJQ4HZWeL0RMvSQ_2);
							}
							if (T_zQHipMPUXFgsDrLbMR9atnA_30.status != 0) reraiseException();
						}
						LA53: ;
					}
				}
			} LA3: ;
		}
	} LA1: ;
	{
		if (!(result0 == 0)) goto LA87;
		result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	}
	LA87: ;
	{
		NimStringDesc* d_ZN9aJF9cJWprKdFfYizCV8Qg_2;
		NimStringDesc* current_o9bYXvu14FSOZ3h6zS40chw_2;
		d_ZN9aJF9cJWprKdFfYizCV8Qg_2 = (NimStringDesc*)0;
		current_o9bYXvu14FSOZ3h6zS40chw_2 = copyString(path0);
		{
			while (1) {
				current_o9bYXvu14FSOZ3h6zS40chw_2 = nosparentDir(current_o9bYXvu14FSOZ3h6zS40chw_2);
				{
					if (!((current_o9bYXvu14FSOZ3h6zS40chw_2 ? current_o9bYXvu14FSOZ3h6zS40chw_2->Sup.len : 0) == ((NI) 0))) goto LA94;
					goto LA90;
				}
				LA94: ;
				d_ZN9aJF9cJWprKdFfYizCV8Qg_2 = current_o9bYXvu14FSOZ3h6zS40chw_2;
				nstPut(packagecache_3h5llDm6Glt40lMSO9apZ1w, d_ZN9aJF9cJWprKdFfYizCV8Qg_2, result0);
				parents0 -= ((NI) 1);
				{
					if (!(parents0 <= ((NI) 0))) goto LA98;
					goto LA89;
				}
				LA98: ;
			}
		} LA90: ;
	} LA89: ;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, getnimcachedir_rMpbw4SUmKCJTTifDPvxAg_2)(void) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!(((NI) 0) < (nimcachedir_gz7Z9b1MUAQYO9aG1Mn0dhfQ ? nimcachedir_gz7Z9b1MUAQYO9aG1Mn0dhfQ->Sup.len : 0))) goto LA3;
		result0 = copyString(nimcachedir_gz7Z9b1MUAQYO9aG1Mn0dhfQ);
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC6;
		LOC6 = (NimStringDesc*)0;
		LOC6 = shortendir_9cbPeGvuFNXZY1vvxActejw(gprojectpath_RQlrqBW2RHkKfot9caCcOtQ);
		result0 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(LOC6, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_31));
	}
	LA1: ;
	return result0;
}

static N_INLINE(Exception*, getCurrentException)(void) {
	Exception* result0;
	result0 = (Exception*)0;
	result0 = currexception_9bVPeDJlYTi9bQApZpfH8wjg;
	return result0;
}

static N_INLINE(void, writeline_rBQVO3cm3BhnA9aEFD7PG6Qmsgs)(FILE* f0, NimStringDesc** x0, NI x0Len0) {
	{
		NimStringDesc* i_kSboRGYz9bWc0rf2v8AlLGQ;
		NI i_kSboRGYz9bWc0rf2v8AlLGQ_2;
		i_kSboRGYz9bWc0rf2v8AlLGQ = (NimStringDesc*)0;
		i_kSboRGYz9bWc0rf2v8AlLGQ_2 = ((NI) 0);
		{
			while (1) {
				if (!(i_kSboRGYz9bWc0rf2v8AlLGQ_2 < x0Len0)) goto LA3;
				i_kSboRGYz9bWc0rf2v8AlLGQ = x0[i_kSboRGYz9bWc0rf2v8AlLGQ_2];
				write_c4mGyJBvK73pdM22jiweKQ(f0, i_kSboRGYz9bWc0rf2v8AlLGQ);
				i_kSboRGYz9bWc0rf2v8AlLGQ_2 += ((NI) 1);
			} LA3: ;
		}
	}
	write_c4mGyJBvK73pdM22jiweKQ(f0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_33));
}

static N_INLINE(void, popCurrentException)(void) {
	asgnRef((void**) (&currexception_9bVPeDJlYTi9bQApZpfH8wjg), NIM_NIL);
}

N_NIMCALL(NimStringDesc*, completegeneratedfilepath_OC4D8bcC5YbXne9b768tZcQ)(NimStringDesc* f0, NIM_BOOL createsubdir0) {
	NimStringDesc* result0;
	TY_UV3llMMYFckfui8YMBuUZA LOC1;
	NimStringDesc* head0;
	NimStringDesc* tail0;
	NimStringDesc* subdir0;
	result0 = (NimStringDesc*)0;
	memset((void*)(&LOC1), 0, sizeof(LOC1));
	nossplitPath(f0, (&LOC1));
	head0 = (NimStringDesc*)0;
	head0 = copyString(LOC1.Field0);
	tail0 = (NimStringDesc*)0;
	tail0 = copyString(LOC1.Field1);
	subdir0 = getnimcachedir_rMpbw4SUmKCJTTifDPvxAg_2();
	{
		TSafePoint T_zQHipMPUXFgsDrLbMR9atnA_32;
		if (!createsubdir0) goto LA4;
		pushSafePoint(&T_zQHipMPUXFgsDrLbMR9atnA_32);
		T_zQHipMPUXFgsDrLbMR9atnA_32.status = setjmp(T_zQHipMPUXFgsDrLbMR9atnA_32.context);
		if (T_zQHipMPUXFgsDrLbMR9atnA_32.status == 0) {
			noscreateDir(subdir0);
			popSafePoint();
		}
		else {
			popSafePoint();
			if (isObj(getCurrentException()->Sup.m_type, (&NTI_3XwRQvmzCEOC4QnT706q1g))) {
				TY_nHXaesL0DJZHyVS07ARPRA LOC9;
				NimStringDesc* LOC10;
				T_zQHipMPUXFgsDrLbMR9atnA_32.status = 0;
				memset((void*)LOC9, 0, sizeof(LOC9));
				LOC10 = (NimStringDesc*)0;
				LOC10 = rawNewString(subdir0->Sup.len + 25);
appendString(LOC10, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_34));
appendString(LOC10, subdir0);
				LOC9[0] = LOC10;
				writeline_rBQVO3cm3BhnA9aEFD7PG6Qmsgs(stdout, LOC9, 1);
				exit(((NI) 1));
				popCurrentException();
			}
		}
		if (T_zQHipMPUXFgsDrLbMR9atnA_32.status != 0) reraiseException();
	}
	LA4: ;
	result0 = nosjoinPath(subdir0, tail0);
	return result0;
}

N_NIMCALL(NimStringDesc*, togeneratedfile_J4Y3N49axROg3CvCZ1jF3QQ)(NimStringDesc* path0, NimStringDesc* ext0) {
	NimStringDesc* result0;
	TY_UV3llMMYFckfui8YMBuUZA LOC1;
	NimStringDesc* head0;
	NimStringDesc* tail0;
	TY_Re75IspeoxXy2oCZHwcRrA LOC2;
	result0 = (NimStringDesc*)0;
	memset((void*)(&LOC1), 0, sizeof(LOC1));
	nossplitPath(path0, (&LOC1));
	head0 = (NimStringDesc*)0;
	head0 = copyString(LOC1.Field0);
	tail0 = (NimStringDesc*)0;
	tail0 = copyString(LOC1.Field1);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = getnimcachedir_rMpbw4SUmKCJTTifDPvxAg_2();
	LOC2[1] = noschangeFileExt(tail0, ext0);
	result0 = nosjoinPathOpenArray(LOC2, 2);
	return result0;
}

N_NIMCALL(NimStringDesc*, withpackagename_hXI3LWBWedZbdPyAYn0KOQ_2)(NimStringDesc* path0) {
	NimStringDesc* result0;
	NimStringDesc* x0;
	result0 = (NimStringDesc*)0;
	x0 = getpackagename_UaWiM5ZjesnVJ9aMCHdFTlg(path0);
	{
		if (!((x0 ? x0->Sup.len : 0) == ((NI) 0))) goto LA3;
		result0 = copyString(path0);
	}
	goto LA1;
	LA3: ;
	{
		TY_7q7q3E6Oj24ZNVJb9aonhAg LOC6;
		NimStringDesc* p0;
		NimStringDesc* file0;
		NimStringDesc* ext0;
		NimStringDesc* LOC7;
		NimStringDesc* LOC8;
		NimStringDesc* LOC9;
		memset((void*)(&LOC6), 0, sizeof(LOC6));
		nossplitFile(path0, (&LOC6));
		p0 = (NimStringDesc*)0;
		p0 = LOC6.Field0;
		file0 = (NimStringDesc*)0;
		file0 = LOC6.Field1;
		ext0 = (NimStringDesc*)0;
		ext0 = LOC6.Field2;
		LOC7 = (NimStringDesc*)0;
		LOC8 = (NimStringDesc*)0;
		LOC8 = rawNewString(x0->Sup.len + file0->Sup.len + 1);
appendString(LOC8, x0);
appendChar(LOC8, 95);
appendString(LOC8, file0);
		LOC9 = (NimStringDesc*)0;
		LOC9 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(p0, LOC8);
		LOC7 = rawNewString(LOC9->Sup.len + ext0->Sup.len + 0);
appendString(LOC7, LOC9);
appendString(LOC7, ext0);
		result0 = LOC7;
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, rawfindfile_4D4bGjvfjjNx0zrBVeJAbQ_2)(NimStringDesc* f0) {
	NimStringDesc* result0;
{	result0 = (NimStringDesc*)0;
	{
		NimStringDesc* it_DZLtlWuj7Y0rcPHOdE89brA;
		Tstrentry_3m9czjBTF9ccwc2UyFTPCO8Q* it_DZLtlWuj7Y0rcPHOdE89brA_2;
		it_DZLtlWuj7Y0rcPHOdE89brA = (NimStringDesc*)0;
		it_DZLtlWuj7Y0rcPHOdE89brA_2 = ((Tstrentry_3m9czjBTF9ccwc2UyFTPCO8Q*) (searchpaths_XRBeXIYowTeRSkTUFC0m2w.head));
		{
			while (1) {
				if (!!((it_DZLtlWuj7Y0rcPHOdE89brA_2 == NIM_NIL))) goto LA3;
				it_DZLtlWuj7Y0rcPHOdE89brA = (*it_DZLtlWuj7Y0rcPHOdE89brA_2).data;
				result0 = nosjoinPath(it_DZLtlWuj7Y0rcPHOdE89brA, f0);
				{
					NIM_BOOL LOC6;
					LOC6 = (NIM_BOOL)0;
					LOC6 = nosexistsFile(result0);
					if (!LOC6) goto LA7;
					result0 = canonicalizepath_hXI3LWBWedZbdPyAYn0KOQ(result0);
					goto BeforeRet;
				}
				LA7: ;
				it_DZLtlWuj7Y0rcPHOdE89brA_2 = ((Tstrentry_3m9czjBTF9ccwc2UyFTPCO8Q*) ((*it_DZLtlWuj7Y0rcPHOdE89brA_2).Sup.next));
			} LA3: ;
		}
	}
	result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, rawfindfile2_4D4bGjvfjjNx0zrBVeJAbQ_3)(NimStringDesc* f0) {
	NimStringDesc* result0;
	Tstrentry_3m9czjBTF9ccwc2UyFTPCO8Q* it0;
{	result0 = (NimStringDesc*)0;
	it0 = ((Tstrentry_3m9czjBTF9ccwc2UyFTPCO8Q*) (lazypaths_uObU3TsEr9bGIxsNFEkim6Q.head));
	{
		while (1) {
			if (!!((it0 == NIM_NIL))) goto LA2;
			result0 = nosjoinPath((*it0).data, f0);
			{
				NIM_BOOL LOC5;
				Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q* LOC8;
				LOC5 = (NIM_BOOL)0;
				LOC5 = nosexistsFile(result0);
				if (!LOC5) goto LA6;
				LOC8 = (Tlistentry_U4JkVlrJQaACKZ9a9cwCla3Q*)0;
				LOC8 = &it0->Sup;
				bringtofront_OHo5UGptcxVKInJo6EIoMg((&lazypaths_uObU3TsEr9bGIxsNFEkim6Q), LOC8);
				result0 = canonicalizepath_hXI3LWBWedZbdPyAYn0KOQ(result0);
				goto BeforeRet;
			}
			LA6: ;
			it0 = ((Tstrentry_3m9czjBTF9ccwc2UyFTPCO8Q*) ((*it0).Sup.next));
		} LA2: ;
	}
	result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, findfile_4D4bGjvfjjNx0zrBVeJAbQ)(NimStringDesc* f0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = nosisAbsolute(f0);
		if (!LOC3) goto LA4;
		{
			NIM_BOOL LOC8;
			LOC8 = (NIM_BOOL)0;
			LOC8 = nosexistsFile(f0);
			if (!LOC8) goto LA9;
			result0 = copyString(f0);
		}
		goto LA6;
		LA9: ;
		{
			result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
		}
		LA6: ;
	}
	goto LA1;
	LA4: ;
	{
		result0 = rawfindfile_4D4bGjvfjjNx0zrBVeJAbQ_2(f0);
		{
			NimStringDesc* LOC17;
			if (!((result0 ? result0->Sup.len : 0) == ((NI) 0))) goto LA15;
			LOC17 = (NimStringDesc*)0;
			LOC17 = nsuToLowerAsciiStr(f0);
			result0 = rawfindfile_4D4bGjvfjjNx0zrBVeJAbQ_2(LOC17);
			{
				if (!((result0 ? result0->Sup.len : 0) == ((NI) 0))) goto LA20;
				result0 = rawfindfile2_4D4bGjvfjjNx0zrBVeJAbQ_3(f0);
				{
					NimStringDesc* LOC26;
					if (!((result0 ? result0->Sup.len : 0) == ((NI) 0))) goto LA24;
					LOC26 = (NimStringDesc*)0;
					LOC26 = nsuToLowerAsciiStr(f0);
					result0 = rawfindfile2_4D4bGjvfjjNx0zrBVeJAbQ_3(LOC26);
				}
				LA24: ;
			}
			LA20: ;
		}
		LA15: ;
	}
	LA1: ;
	{
		NIM_BOOL LOC29;
		NI LOC31;
		NimStringDesc* key0;
		NimStringDesc* LOC34;
		NimStringDesc* LOC35;
		TY_7q7q3E6Oj24ZNVJb9aonhAg LOC36;
		LOC29 = (NIM_BOOL)0;
		LOC29 = (((NI) 0) < (result0 ? result0->Sup.len : 0));
		if (!(LOC29)) goto LA30;
		LOC31 = (NI)0;
		LOC31 = nstlen(gmoduleoverrides_JOidTRh7W9cZzG9a5FZJR83A);
		LOC29 = (((NI) 0) < LOC31);
		LA30: ;
		if (!LOC29) goto LA32;
		LOC34 = (NimStringDesc*)0;
		LOC35 = (NimStringDesc*)0;
		LOC35 = getpackagename_UaWiM5ZjesnVJ9aMCHdFTlg(result0);
		memset((void*)(&LOC36), 0, sizeof(LOC36));
		nossplitFile(result0, (&LOC36));
		LOC34 = rawNewString(LOC35->Sup.len + LOC36.Field1->Sup.len + 1);
appendString(LOC34, LOC35);
appendString(LOC34, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_36));
appendString(LOC34, LOC36.Field1);
		key0 = LOC34;
		{
			NIM_BOOL LOC39;
			NimStringDesc* ov0;
			NimStringDesc** LOC42;
			LOC39 = (NIM_BOOL)0;
			LOC39 = nsthasKey(gmoduleoverrides_JOidTRh7W9cZzG9a5FZJR83A, key0);
			if (!LOC39) goto LA40;
			LOC42 = (NimStringDesc**)0;
			LOC42 = nstTake(gmoduleoverrides_JOidTRh7W9cZzG9a5FZJR83A, key0);
			ov0 = (*LOC42);
			{
				if (!(((NI) 0) < (ov0 ? ov0->Sup.len : 0))) goto LA45;
				result0 = copyString(ov0);
			}
			LA45: ;
		}
		LA40: ;
	}
	LA32: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, findmodule_N9bn61ftY1WAixmRRVO8jng)(NimStringDesc* modulename0, NimStringDesc* currentmodule0) {
	NimStringDesc* result0;
	NimStringDesc* m0;
	NimStringDesc* currentpath0;
	TY_7q7q3E6Oj24ZNVJb9aonhAg LOC1;
	result0 = (NimStringDesc*)0;
	m0 = nosaddFileExt(modulename0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_35));
	memset((void*)(&LOC1), 0, sizeof(LOC1));
	nossplitFile(currentmodule0, (&LOC1));
	currentpath0 = LOC1.Field0;
	result0 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(currentpath0, m0);
	{
		NIM_BOOL LOC4;
		LOC4 = (NIM_BOOL)0;
		LOC4 = nosexistsFile(result0);
		if (!!(LOC4)) goto LA5;
		result0 = findfile_4D4bGjvfjjNx0zrBVeJAbQ(m0);
	}
	LA5: ;
	{
		NIM_BOOL LOC9;
		NI LOC11;
		NimStringDesc* key0;
		NimStringDesc* LOC14;
		NimStringDesc* LOC15;
		TY_7q7q3E6Oj24ZNVJb9aonhAg LOC16;
		LOC9 = (NIM_BOOL)0;
		LOC9 = (((NI) 0) < (result0 ? result0->Sup.len : 0));
		if (!(LOC9)) goto LA10;
		LOC11 = (NI)0;
		LOC11 = nstlen(gmoduleoverrides_JOidTRh7W9cZzG9a5FZJR83A);
		LOC9 = (((NI) 0) < LOC11);
		LA10: ;
		if (!LOC9) goto LA12;
		LOC14 = (NimStringDesc*)0;
		LOC15 = (NimStringDesc*)0;
		LOC15 = getpackagename_UaWiM5ZjesnVJ9aMCHdFTlg(result0);
		memset((void*)(&LOC16), 0, sizeof(LOC16));
		nossplitFile(result0, (&LOC16));
		LOC14 = rawNewString(LOC15->Sup.len + LOC16.Field1->Sup.len + 1);
appendString(LOC14, LOC15);
appendString(LOC14, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_36));
appendString(LOC14, LOC16.Field1);
		key0 = LOC14;
		{
			NIM_BOOL LOC19;
			NimStringDesc* ov0;
			NimStringDesc** LOC22;
			LOC19 = (NIM_BOOL)0;
			LOC19 = nsthasKey(gmoduleoverrides_JOidTRh7W9cZzG9a5FZJR83A, key0);
			if (!LOC19) goto LA20;
			LOC22 = (NimStringDesc**)0;
			LOC22 = nstTake(gmoduleoverrides_JOidTRh7W9cZzG9a5FZJR83A, key0);
			ov0 = (*LOC22);
			{
				if (!(((NI) 0) < (ov0 ? ov0->Sup.len : 0))) goto LA25;
				result0 = copyString(ov0);
			}
			LA25: ;
		}
		LA20: ;
	}
	LA12: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, removetrailingdirsep_hXI3LWBWedZbdPyAYn0KOQ_3)(NimStringDesc* path0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = (((NI) 0) < (path0 ? path0->Sup.len : 0));
		if (!(LOC3)) goto LA4;
		LOC3 = ((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))]) == (NU8)(92));
		LA4: ;
		if (!LOC3) goto LA5;
		result0 = copyStrLast(path0, ((NI) 0), (NI)((path0 ? path0->Sup.len : 0) - ((NI) 2)));
	}
	goto LA1;
	LA5: ;
	{
		result0 = copyString(path0);
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, pathsubs_0CMMAuGT1UklgV9a3pNmucg)(NimStringDesc* p0, NimStringDesc* config0) {
	NimStringDesc* result0;
	NimStringDesc* home0;
	NimStringDesc* LOC1;
	TY_rmMMhDIqORJzUU5zqeitSQ LOC2;
	NimStringDesc* LOC3;
	result0 = (NimStringDesc*)0;
	LOC1 = (NimStringDesc*)0;
	LOC1 = nosgetHomeDir();
	home0 = removetrailingdirsep_hXI3LWBWedZbdPyAYn0KOQ_3(LOC1);
	memset((void*)LOC2, 0, sizeof(LOC2));
	LOC2[0] = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_35));
	LOC2[1] = getprefixdir_rMpbw4SUmKCJTTifDPvxAg();
	LOC2[2] = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_37));
	LOC2[3] = copyString(libpath_sniQ2ei4mGD9av6vrH9bfUgg);
	LOC2[4] = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_38));
	LOC2[5] = copyString(home0);
	LOC2[6] = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_39));
	LOC2[7] = copyString(config0);
	LOC2[8] = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_40));
	LOC2[9] = copyString(gprojectname_QOoHniL6MYtzlAjpv8zzdA);
	LOC2[10] = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_41));
	LOC2[11] = copyString(gprojectpath_RQlrqBW2RHkKfot9caCcOtQ);
	LOC2[12] = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_42));
	LOC2[13] = copyString(gprojectpath_RQlrqBW2RHkKfot9caCcOtQ);
	LOC2[14] = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_31));
	LOC2[15] = getnimcachedir_rMpbw4SUmKCJTTifDPvxAg_2();
	LOC3 = (NimStringDesc*)0;
	LOC3 = nsuFormatOpenArray(p0, LOC2, 16);
	result0 = nosunixToNativePath(LOC3, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	{
		NIM_BOOL LOC6;
		LOC6 = (NIM_BOOL)0;
		LOC6 = contains_6e5MGL10HDAJ205lBYpWxw(result0, 126);
		if (!LOC6) goto LA7;
		result0 = nsuReplaceStr(result0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_43), home0);
	}
	LA7: ;
	return result0;
}

N_NIMCALL(void, disablenimblepath_HTBJ7VvmwtM2mD6WCLBTew)(void) {
	gnonimblepath_0oxZgkYmNiEGgMhQbS0nWQ = NIM_TRUE;
	asgnRef((void**) (&lazypaths_uObU3TsEr9bGIxsNFEkim6Q.head), NIM_NIL);
	asgnRef((void**) (&lazypaths_uObU3TsEr9bGIxsNFEkim6Q.tail), NIM_NIL);
	lazypaths_uObU3TsEr9bGIxsNFEkim6Q.counter = ((NI) 0);
}

N_NIMCALL(NimStringDesc*, getconfigvar_c1Z9aQemFPi6wJsh9c9c8V9bdg)(NimStringDesc* key0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = getordefault_puv5W0GXw9aUdLJI2i8WreQ(gconfigvars_0Vkej44DF5osh1Rc3US8qw, key0);
	return result0;
}

N_NIMCALL(NIM_BOOL, existsconfigvar_YtxxRDHxTPy3NUeYByWLqA)(NimStringDesc* key0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = nsthasKey(gconfigvars_0Vkej44DF5osh1Rc3US8qw, key0);
	return result0;
}

N_NIMCALL(NimStringDesc*, canondynlibname_ZQgPcgqPX8lQ9aZSxvttQUQ)(NimStringDesc* s0) {
	NimStringDesc* result0;
	NI start0;
	NI ende0;
	result0 = (NimStringDesc*)0;
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = nsuStartsWith(s0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_37));
		if (!LOC3) goto LA4;
		start0 = ((NI) 3);
	}
	goto LA1;
	LA4: ;
	{
		start0 = ((NI) 0);
	}
	LA1: ;
	ende0 = nsuFindCharSet(s0, T_zQHipMPUXFgsDrLbMR9atnA_44, ((NI) 0));
	{
		if (!(((NI) 0) <= ende0)) goto LA9;
		result0 = copyStrLast(s0, start0, (NI)(ende0 - ((NI) 1)));
	}
	goto LA7;
	LA9: ;
	{
		result0 = copyStr(s0, start0);
	}
	LA7: ;
	return result0;
}

N_NIMCALL(void, incldynliboverride_F70imOgWcTNP9aZVFms5p9bA)(NimStringDesc* lib0) {
	NimStringDesc* LOC1;
	LOC1 = (NimStringDesc*)0;
	LOC1 = canondynlibname_ZQgPcgqPX8lQ9aZSxvttQUQ(lib0);
	nstPut(gdlloverrides_IxZaUtyv9cgx1VcO8ThgETA, LOC1, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_45));
}

N_NIMCALL(void, setconfigvar_mE70BtQK9bw5Exz4b8Q8DDQ)(NimStringDesc* key0, NimStringDesc* val0) {
	nstPut(gconfigvars_0Vkej44DF5osh1Rc3US8qw, key0, val0);
}

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(NIM_BOOL, fileexists_yTPrfdEKg9cKCeSFUA6popQoptions)(NimStringDesc* filename0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = nosexistsFile(filename0);
	return result0;
}

N_NIMCALL(void, setdefaultlibpath_HTBJ7VvmwtM2mD6WCLBTew_2)(void) {
	{
		NimStringDesc* prefix0;
		NimStringDesc* realnimpath0;
		NimStringDesc* parentnimlibpath0;
		NimStringDesc* LOC5;
		NimStringDesc* LOC6;
		if (!((libpath_sniQ2ei4mGD9av6vrH9bfUgg) && (libpath_sniQ2ei4mGD9av6vrH9bfUgg)->Sup.len == 0)) goto LA3;
		prefix0 = getprefixdir_rMpbw4SUmKCJTTifDPvxAg();
		asgnRefNoCycle((void**) (&libpath_sniQ2ei4mGD9av6vrH9bfUgg), nosjoinPath(prefix0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_37)));
		realnimpath0 = findexe_NQz9bqtJ8Yukg6trpGym2NQ(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_35), NIM_TRUE, Exeexts_ONrgkgAZ9bh6KVTWl4XeOSw);
		LOC5 = (NimStringDesc*)0;
		LOC5 = nosparentDir(realnimpath0);
		LOC6 = (NimStringDesc*)0;
		LOC6 = nosparentDir(LOC5);
		parentnimlibpath0 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(LOC6, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_37));
		{
			NIM_BOOL LOC9;
			NimStringDesc* LOC10;
			NIM_BOOL LOC11;
			NimStringDesc* LOC13;
			NimStringDesc* LOC16;
			LOC9 = (NIM_BOOL)0;
			LOC10 = (NimStringDesc*)0;
			LOC10 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(libpath_sniQ2ei4mGD9av6vrH9bfUgg, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_46));
			LOC11 = (NIM_BOOL)0;
			LOC11 = fileexists_yTPrfdEKg9cKCeSFUA6popQoptions(LOC10);
			LOC9 = !(LOC11);
			if (!(LOC9)) goto LA12;
			LOC13 = (NimStringDesc*)0;
			LOC13 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(parentnimlibpath0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_46));
			LOC9 = fileexists_yTPrfdEKg9cKCeSFUA6popQoptions(LOC13);
			LA12: ;
			if (!LOC9) goto LA14;
			LOC16 = (NimStringDesc*)0;
			LOC16 = libpath_sniQ2ei4mGD9av6vrH9bfUgg; libpath_sniQ2ei4mGD9av6vrH9bfUgg = copyStringRC1(parentnimlibpath0);
			if (LOC16) nimGCunrefNoCycle(LOC16);
		}
		LA14: ;
	}
	LA3: ;
}

N_NIMCALL(NimStringDesc*, HEX24_9cJCKitIoTmipZ9bq1gB25Vw)(Idecmd_1Ced39bl5eePmZ1PKMPXigQ c0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	switch (c0) {
	case ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 1):
	{
		result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_47));
	}
	break;
	case ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 2):
	{
		result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_48));
	}
	break;
	case ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 3):
	{
		result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_49));
	}
	break;
	case ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 4):
	{
		result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_50));
	}
	break;
	case ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 5):
	{
		result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_51));
	}
	break;
	case ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 6):
	{
		result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_52));
	}
	break;
	case ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 7):
	{
		result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_53));
	}
	break;
	case ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 0):
	{
		result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_54));
	}
	break;
	case ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 8):
	{
		result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_55));
	}
	break;
	case ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 9):
	{
		result0 = copyString(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_56));
	}
	break;
	}
	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(Idecmd_1Ced39bl5eePmZ1PKMPXigQ, parseidecmd_TQvrSbYJ8il5GbXHllB0rw)(NimStringDesc* s0) {
	Idecmd_1Ced39bl5eePmZ1PKMPXigQ result0;
	result0 = (Idecmd_1Ced39bl5eePmZ1PKMPXigQ)0;
	switch (hashString(s0) & 15) {
	case 2: 
if (eqStrings(s0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_47))) goto LA1;
break;
	case 3: 
if (eqStrings(s0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_52))) goto LA6;
break;
	case 6: 
if (eqStrings(s0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_56))) goto LA9;
break;
	case 10: 
if (eqStrings(s0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_50))) goto LA4;
break;
	case 11: 
if (eqStrings(s0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_49))) goto LA3;
break;
	case 12: 
if (eqStrings(s0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_48))) goto LA2;
break;
	case 13: 
if (eqStrings(s0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_51))) goto LA5;
break;
	case 14: 
if (eqStrings(s0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_55))) goto LA8;
break;
	case 15: 
if (eqStrings(s0, ((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_53))) goto LA7;
break;
	}
	goto LA10;
	LA1: ;
	{
		result0 = ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 1);
	}
	goto LA11;
	LA2: ;
	{
		result0 = ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 2);
	}
	goto LA11;
	LA3: ;
	{
		result0 = ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 3);
	}
	goto LA11;
	LA4: ;
	{
		result0 = ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 4);
	}
	goto LA11;
	LA5: ;
	{
		result0 = ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 5);
	}
	goto LA11;
	LA6: ;
	{
		result0 = ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 6);
	}
	goto LA11;
	LA7: ;
	{
		result0 = ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 7);
	}
	goto LA11;
	LA8: ;
	{
		result0 = ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 8);
	}
	goto LA11;
	LA9: ;
	{
		result0 = ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 9);
	}
	goto LA11;
	LA10: ;
	{
		result0 = ((Idecmd_1Ced39bl5eePmZ1PKMPXigQ) 0);
	}
	LA11: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, isdynliboverride_A5ujcaCHIHZ2ANCdgZAqVA)(NimStringDesc* lib0) {
	NIM_BOOL result0;
	NimStringDesc* LOC1;
	result0 = (NIM_BOOL)0;
	LOC1 = (NimStringDesc*)0;
	LOC1 = canondynlibname_ZQgPcgqPX8lQ9aZSxvttQUQ(lib0);
	result0 = nsthasKey(gdlloverrides_IxZaUtyv9cgx1VcO8ThgETA, LOC1);
	return result0;
}

N_NIMCALL(NimStringDesc*, getoutfile_sh9ayHCwPUJ5xYh8BWlRU2A)(NimStringDesc* filename0, NimStringDesc* ext0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!!(((outfile_LiHKjDVrUS85u6xbuNvgxA) && (outfile_LiHKjDVrUS85u6xbuNvgxA)->Sup.len == 0))) goto LA3;
		result0 = copyString(outfile_LiHKjDVrUS85u6xbuNvgxA);
	}
	goto LA1;
	LA3: ;
	{
		result0 = noschangeFileExt(filename0, ext0);
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, maincommandarg_rMpbw4SUmKCJTTifDPvxAg_3)(void) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!(((NI) 0) < (commandargs_ZhyagKlrfRLcCwi84z1S3w ? commandargs_ZhyagKlrfRLcCwi84z1S3w->Sup.len : 0))) goto LA3;
		result0 = copyString(commandargs_ZhyagKlrfRLcCwi84z1S3w->data[((NI) 0)]);
	}
	goto LA1;
	LA3: ;
	{
		result0 = copyString(gprojectname_QOoHniL6MYtzlAjpv8zzdA);
	}
	LA1: ;
	return result0;
}
NIM_EXTERNC N_NOINLINE(void, compiler_optionsInit000)(void) {
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	NimStringDesc* LOC4;
	NimStringDesc* LOC5;
	NimStringDesc* LOC6;
	NimStringDesc* LOC7;
	NimStringDesc* LOC8;
	NimStringDesc* LOC9;
	NimStringDesc* LOC10;
	NimStringDesc* LOC11;
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_2);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_3);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_4);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_6);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_7);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_8);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_9);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_10);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_11);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_12);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_13);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_14);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_15);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_16);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_17);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_18);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_19);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_20);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_21);
nimRegisterGlobalMarker(T_zQHipMPUXFgsDrLbMR9atnA_22);
	goptions_KL5B8sF4szIsM2AXCWFsIw = 2202238;
	gglobaloptions_j042VVDC9cT5ENYoXnmhhVg = 16777216;
	gcmd_0oKScFtMiSKnjiHF9cU9c5GQ = ((Tcommands_VH3ghgQVwLSg3krOAoXigw) 0);
	gselectedgc_Qq37YMpTZX6EGc9apygtZcg = ((Tgcmode_tkz389aDYNd8ykeZszCuBSw) 5);
	LOC1 = (NimStringDesc*)0;
	LOC1 = outfile_LiHKjDVrUS85u6xbuNvgxA; outfile_LiHKjDVrUS85u6xbuNvgxA = copyStringRC1(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	if (LOC1) nimGCunrefNoCycle(LOC1);
	LOC2 = (NimStringDesc*)0;
	LOC2 = docseesrcurl_U9aR0glDUYolFZl2cIHatPA; docseesrcurl_U9aR0glDUYolFZl2cIHatPA = copyStringRC1(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	if (LOC2) nimGCunrefNoCycle(LOC2);
	LOC3 = (NimStringDesc*)0;
	LOC3 = headerfile_35eufpdPFnBAIbKX7Nw3MQ; headerfile_35eufpdPFnBAIbKX7Nw3MQ = copyStringRC1(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	if (LOC3) nimGCunrefNoCycle(LOC3);
	gverbosity_BhOkdHk9bv1VGWSLnxRNYpw = ((NI) 1);
	LOC4 = (NimStringDesc*)0;
	LOC4 = gevalexpr_8nWK3bmD6K9bIq710IsJk9bA; gevalexpr_8nWK3bmD6K9bIq710IsJk9bA = copyStringRC1(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	if (LOC4) nimGCunrefNoCycle(LOC4);
	isserving_01Mh0wvlr3JvIajHGsOtZg = NIM_FALSE;
	gnonimblepath_0oxZgkYmNiEGgMhQbS0nWQ = NIM_FALSE;
	asgnRef((void**) (&gconfigvars_0Vkej44DF5osh1Rc3US8qw), nstnewStringTable(((Stringtablemode_G9c4wVDFIzf0xHmQvxso9a9cQ) 2)));
	asgnRef((void**) (&gdlloverrides_IxZaUtyv9cgx1VcO8ThgETA), nstnewStringTable(((Stringtablemode_G9c4wVDFIzf0xHmQvxso9a9cQ) 1)));
	asgnRef((void**) (&gmoduleoverrides_JOidTRh7W9cZzG9a5FZJR83A), nstnewStringTable(((Stringtablemode_G9c4wVDFIzf0xHmQvxso9a9cQ) 2)));
	LOC5 = (NimStringDesc*)0;
	LOC5 = gprefixdir_3aGH6UIFMV6AObeuYPm7Iw; gprefixdir_3aGH6UIFMV6AObeuYPm7Iw = copyStringRC1(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	if (LOC5) nimGCunrefNoCycle(LOC5);
	LOC6 = (NimStringDesc*)0;
	LOC6 = libpath_sniQ2ei4mGD9av6vrH9bfUgg; libpath_sniQ2ei4mGD9av6vrH9bfUgg = copyStringRC1(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	if (LOC6) nimGCunrefNoCycle(LOC6);
	LOC7 = (NimStringDesc*)0;
	LOC7 = gprojectname_QOoHniL6MYtzlAjpv8zzdA; gprojectname_QOoHniL6MYtzlAjpv8zzdA = copyStringRC1(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	if (LOC7) nimGCunrefNoCycle(LOC7);
	LOC8 = (NimStringDesc*)0;
	LOC8 = gprojectpath_RQlrqBW2RHkKfot9caCcOtQ; gprojectpath_RQlrqBW2RHkKfot9caCcOtQ = copyStringRC1(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	if (LOC8) nimGCunrefNoCycle(LOC8);
	LOC9 = (NimStringDesc*)0;
	LOC9 = gprojectfull_V1rcVHDANDR4ly2ul00asg; gprojectfull_V1rcVHDANDR4ly2ul00asg = copyStringRC1(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	if (LOC9) nimGCunrefNoCycle(LOC9);
	gprojectisstdin_YvC8IOG0BaMX6AECkLfsTg = NIM_FALSE;
	LOC10 = (NimStringDesc*)0;
	LOC10 = nimcachedir_gz7Z9b1MUAQYO9aG1Mn0dhfQ; nimcachedir_gz7Z9b1MUAQYO9aG1Mn0dhfQ = copyStringRC1(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	if (LOC10) nimGCunrefNoCycle(LOC10);
	LOC11 = (NimStringDesc*)0;
	LOC11 = command_zo83h8QWwtDIGDuqkGhjqg; command_zo83h8QWwtDIGDuqkGhjqg = copyStringRC1(((NimStringDesc*) &T_zQHipMPUXFgsDrLbMR9atnA_5));
	if (LOC11) nimGCunrefNoCycle(LOC11);
	if (commandargs_ZhyagKlrfRLcCwi84z1S3w) nimGCunrefNoCycle(commandargs_ZhyagKlrfRLcCwi84z1S3w);
	commandargs_ZhyagKlrfRLcCwi84z1S3w = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) newSeqRC1((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	gkeepcomments_sb5UZ9bCGHf9aNQe3RXvpW9aw = NIM_TRUE;
	if (implicitimports_XYWUArUq6jyG8rkdCgiYHg) nimGCunrefNoCycle(implicitimports_XYWUArUq6jyG8rkdCgiYHg);
	implicitimports_XYWUArUq6jyG8rkdCgiYHg = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) newSeqRC1((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	if (implicitincludes_ONs9cUe5UCi0qmlNQlNHiMg) nimGCunrefNoCycle(implicitincludes_ONs9cUe5UCi0qmlNQlNHiMg);
	implicitincludes_ONs9cUe5UCi0qmlNQlNHiMg = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) newSeqRC1((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	asgnRef((void**) (&packagecache_3h5llDm6Glt40lMSO9apZ1w), nstnewStringTable(((Stringtablemode_G9c4wVDFIzf0xHmQvxso9a9cQ) 0)));
}

NIM_EXTERNC N_NOINLINE(void, compiler_optionsDatInit000)(void) {
static TNimNode* T_zQHipMPUXFgsDrLbMR9atnA_23[23];
NI T_zQHipMPUXFgsDrLbMR9atnA_25;
static char* NIM_CONST T_zQHipMPUXFgsDrLbMR9atnA_24[23] = {
"optNone", 
"optObjCheck", 
"optFieldCheck", 
"optRangeCheck", 
"optBoundsCheck", 
"optOverflowCheck", 
"optNilCheck", 
"optNaNCheck", 
"optInfCheck", 
"optAssert", 
"optLineDir", 
"optWarns", 
"optHints", 
"optOptimizeSpeed", 
"optOptimizeSize", 
"optStackTrace", 
"optLineTrace", 
"optEndb", 
"optByRef", 
"optProfiler", 
"optImplicitStatic", 
"optPatterns", 
"optMemTracker"};
static TNimNode* T_zQHipMPUXFgsDrLbMR9atnA_57[10];
NI T_zQHipMPUXFgsDrLbMR9atnA_59;
static char* NIM_CONST T_zQHipMPUXFgsDrLbMR9atnA_58[10] = {
"ideNone", 
"ideSug", 
"ideCon", 
"ideDef", 
"ideUse", 
"ideDus", 
"ideChk", 
"ideMod", 
"ideHighlight", 
"ideOutline"};
static TNimNode T_zQHipMPUXFgsDrLbMR9atnA_0[36];
NTI_WspMeQySXNP2XoTWR5MTgg.size = sizeof(Toption_WspMeQySXNP2XoTWR5MTgg);
NTI_WspMeQySXNP2XoTWR5MTgg.kind = 14;
NTI_WspMeQySXNP2XoTWR5MTgg.base = 0;
NTI_WspMeQySXNP2XoTWR5MTgg.flags = 3;
for (T_zQHipMPUXFgsDrLbMR9atnA_25 = 0; T_zQHipMPUXFgsDrLbMR9atnA_25 < 23; T_zQHipMPUXFgsDrLbMR9atnA_25++) {
T_zQHipMPUXFgsDrLbMR9atnA_0[T_zQHipMPUXFgsDrLbMR9atnA_25+0].kind = 1;
T_zQHipMPUXFgsDrLbMR9atnA_0[T_zQHipMPUXFgsDrLbMR9atnA_25+0].offset = T_zQHipMPUXFgsDrLbMR9atnA_25;
T_zQHipMPUXFgsDrLbMR9atnA_0[T_zQHipMPUXFgsDrLbMR9atnA_25+0].name = T_zQHipMPUXFgsDrLbMR9atnA_24[T_zQHipMPUXFgsDrLbMR9atnA_25];
T_zQHipMPUXFgsDrLbMR9atnA_23[T_zQHipMPUXFgsDrLbMR9atnA_25] = &T_zQHipMPUXFgsDrLbMR9atnA_0[T_zQHipMPUXFgsDrLbMR9atnA_25+0];
}
T_zQHipMPUXFgsDrLbMR9atnA_0[23].len = 23; T_zQHipMPUXFgsDrLbMR9atnA_0[23].kind = 2; T_zQHipMPUXFgsDrLbMR9atnA_0[23].sons = &T_zQHipMPUXFgsDrLbMR9atnA_23[0];
NTI_WspMeQySXNP2XoTWR5MTgg.node = &T_zQHipMPUXFgsDrLbMR9atnA_0[23];
NTI_7MnKRybmCNh5j9bDRLMkxLw.size = sizeof(Toption_WspMeQySXNP2XoTWR5MTgg_Set);
NTI_7MnKRybmCNh5j9bDRLMkxLw.kind = 19;
NTI_7MnKRybmCNh5j9bDRLMkxLw.base = (&NTI_WspMeQySXNP2XoTWR5MTgg);
NTI_7MnKRybmCNh5j9bDRLMkxLw.flags = 3;
T_zQHipMPUXFgsDrLbMR9atnA_0[24].len = 0; T_zQHipMPUXFgsDrLbMR9atnA_0[24].kind = 0;
NTI_7MnKRybmCNh5j9bDRLMkxLw.node = &T_zQHipMPUXFgsDrLbMR9atnA_0[24];
NTI_1Ced39bl5eePmZ1PKMPXigQ.size = sizeof(Idecmd_1Ced39bl5eePmZ1PKMPXigQ);
NTI_1Ced39bl5eePmZ1PKMPXigQ.kind = 14;
NTI_1Ced39bl5eePmZ1PKMPXigQ.base = 0;
NTI_1Ced39bl5eePmZ1PKMPXigQ.flags = 3;
for (T_zQHipMPUXFgsDrLbMR9atnA_59 = 0; T_zQHipMPUXFgsDrLbMR9atnA_59 < 10; T_zQHipMPUXFgsDrLbMR9atnA_59++) {
T_zQHipMPUXFgsDrLbMR9atnA_0[T_zQHipMPUXFgsDrLbMR9atnA_59+25].kind = 1;
T_zQHipMPUXFgsDrLbMR9atnA_0[T_zQHipMPUXFgsDrLbMR9atnA_59+25].offset = T_zQHipMPUXFgsDrLbMR9atnA_59;
T_zQHipMPUXFgsDrLbMR9atnA_0[T_zQHipMPUXFgsDrLbMR9atnA_59+25].name = T_zQHipMPUXFgsDrLbMR9atnA_58[T_zQHipMPUXFgsDrLbMR9atnA_59];
T_zQHipMPUXFgsDrLbMR9atnA_57[T_zQHipMPUXFgsDrLbMR9atnA_59] = &T_zQHipMPUXFgsDrLbMR9atnA_0[T_zQHipMPUXFgsDrLbMR9atnA_59+25];
}
T_zQHipMPUXFgsDrLbMR9atnA_0[35].len = 10; T_zQHipMPUXFgsDrLbMR9atnA_0[35].kind = 2; T_zQHipMPUXFgsDrLbMR9atnA_0[35].sons = &T_zQHipMPUXFgsDrLbMR9atnA_57[0];
NTI_1Ced39bl5eePmZ1PKMPXigQ.node = &T_zQHipMPUXFgsDrLbMR9atnA_0[35];
}

