/* 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 <stdlib.h>
#include <setjmp.h>
#include <time.h>
#undef linux
typedef struct TY_sM4lkSb7zS6F7OVMvW9cffQ TY_sM4lkSb7zS6F7OVMvW9cffQ;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct TY_UV3llMMYFckfui8YMBuUZA TY_UV3llMMYFckfui8YMBuUZA;
typedef struct Oserror_3XwRQvmzCEOC4QnT706q1g Oserror_3XwRQvmzCEOC4QnT706q1g;
typedef struct Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg;
typedef struct Exception Exception;
typedef struct TNimObject TNimObject;
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 Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA;
typedef struct TY_7q7q3E6Oj24ZNVJb9aonhAg TY_7q7q3E6Oj24ZNVJb9aonhAg;
typedef struct Ioerror_9czoZw3pzPyrBmb5zTHY1OQ Ioerror_9czoZw3pzPyrBmb5zTHY1OQ;
typedef struct Filetime_bs4NMleDDVF7xsEK0SGLBw Filetime_bs4NMleDDVF7xsEK0SGLBw;
typedef struct TSafePoint TSafePoint;
typedef struct Basechunk_Sdq7WpT6qAH858F5ZEdG3w Basechunk_Sdq7WpT6qAH858F5ZEdG3w;
typedef struct Freecell_u6M5LHprqzkn9axr04yg9bGQ Freecell_u6M5LHprqzkn9axr04yg9bGQ;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
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 TY_UV3llMMYFckfui8YMBuUZA {
NimStringDesc* Field0;
NimStringDesc* Field1;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  Exception  {
  TNimObject Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
struct  Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg  {
  Exception Sup;
};
struct  Oserror_3XwRQvmzCEOC4QnT706q1g  {
  Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Sup;
NI32 errorcode;
};
typedef N_STDCALL_PTR(NI32, TY_aO673xGTLLxou7P7GxoCXA) (NI32 dwflags0, void* lpsource0, NI32 dwmessageid0, NI32 dwlanguageid0, void* lpbuffer0, NI32 nsize0, void* Arguments0);
typedef N_STDCALL_PTR(void, TY_im9buRnIvptJfzdASYMEbBA) (void* p0);
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 N_STDCALL_PTR(NI32, TY_9bXer9a4ps9aSGctILcxWReVw) (void);
typedef N_STDCALL_PTR(NI32, TY_W1Y0YSv0z9cf3pqKJgjGdqQ) (NI16* lpfilename0, NI32 nbufferlength0, NI16* lpbuffer0, NI16** lpfilepart0);
typedef N_STDCALL_PTR(NI, TY_YTOHOMfxh6yqeIrwoF3EQw) (NI16* lpfilename0, Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA* lpfindfiledata0);
struct TY_7q7q3E6Oj24ZNVJb9aonhAg {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
typedef N_STDCALL_PTR(NI32, TY_2xBzxeMx4l7D6jwHak3G2g) (NI handle0, NI16* buf0, NI32 size0);
typedef N_STDCALL_PTR(NI32, TY_SQvdXqIshqDsOrj27LgeLQ) (NI16* pathname0, void* security0);
typedef N_STDCALL_PTR(NI32, TY_fRm1QK2sgVg9aFiEV5T74jA) (NI16* lpfilename0);
struct  Ioerror_9czoZw3pzPyrBmb5zTHY1OQ  {
  Systemerror_Fjf9b9b2IlzRO2tspHxG3tgg Sup;
};
typedef N_STDCALL_PTR(NI16*, TY_C6bRt4Mqo6LDqlyl9bIOYWQ) (void);
typedef N_STDCALL_PTR(NI32, TY_l1Nv6c9cTPsVTSfpp9bI8Q7Q) (NI16* lpname0, NI16* lpvalue0);
typedef N_STDCALL_PTR(NI32, TY_UWgwsOCvecqqlVsXbs132A) (NI32 nbufferlength0, NI16* lpbuffer0);
typedef NimStringDesc* TY_24KAM9afIUgUaqBaEBB6r9bg[3];
typedef NU8 Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg;
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;
};
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_STDCALL_PTR(NI32, TY_VxkwbRWIB7oY6WmptBE73A) (NI16* lpfilename0, NI32 dwfileattributes0);
typedef N_STDCALL_PTR(NI32, TY_jwEWAkul5J6p6K0UfXa1tw) (NI hfindfile0, Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA* lpfindfiledata0);
typedef N_STDCALL_PTR(void, TY_ofoySXaAAlxxs9bQS9a1etlg) (NI hfindfile0);
typedef N_STDCALL_PTR(NI32, TY_UVtmMfBlnKqZ4ulTGMgcRw) (NI16* lpexistingfilename0, NI16* lpnewfilename0, NI32 bfailifexists0);
typedef N_STDCALL_PTR(void, TY_Tjolzh1w2dIIpj3oCDGPFw) (NI32 dwmilliseconds0);
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  Freecell_u6M5LHprqzkn9axr04yg9bGQ  {
Freecell_u6M5LHprqzkn9axr04yg9bGQ* next;
NI zerofield;
};
struct TY_sM4lkSb7zS6F7OVMvW9cffQ {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
N_NIMCALL(void, nimGCvisit)(void* d0, NI op0);
static N_NIMCALL(void, Marker_TY_sM4lkSb7zS6F7OVMvW9cffQ)(void* p, NI op);
static N_NIMCALL(void, T_yu6cxgKBBXbNsTkT9cyMd4g_2)(void);
N_NIMCALL(void, nimRegisterGlobalMarker)(TY_T4eqaYlFJYZUv9aG9b1TV0bQ markerproc0);
static N_NIMCALL(void, T_yu6cxgKBBXbNsTkT9cyMd4g_3)(void);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src0);
N_NIMCALL(void, nossplitPath)(NimStringDesc* path0, TY_UV3llMMYFckfui8YMBuUZA* Result);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI start_WPWyPKk58Cr5a6XFFviMjg, NI last0);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s0, NI first0, NI last0);
N_NIMCALL(void, unsureAsgnRef)(void** dest0, void* src0);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s0, NI start0);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s0, NI first0);
N_NIMCALL(NI, searchextpos_AlmWoA52oxWnFTorxtz9caA)(NimStringDesc* s0);
static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0);
static N_INLINE(void, copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem)(void* dest0, void* source0, NI size0);
N_NIMCALL(NimStringDesc*, normext_g9aFI0nT0uI8DMfFxBPaZZg)(NimStringDesc* ext0);
static N_INLINE(void, appendChar)(NimStringDesc* dest0, NIM_CHAR c0);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space0);
N_NIMCALL(void*, newObj)(TNimType* typ0, NI size0);
N_NIMCALL(NimStringDesc*, oserrormsg_9cO757MdTrYxfurMy5qIoAg)(NI32 errorcode0);
N_NIMCALL(NimStringDesc*, HEX24_QjWkJEdnPpNzR7KF7dYIoQ)(NI16* s0);
static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0);
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);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src0);
static N_INLINE(void, nimGCunrefNoCycle)(void* p0);
N_NIMCALL(void, raiseException)(Exception* e0, NCSTRING ename0);
N_NIMCALL(NI16*, newwidecstring_b3CORJA07cGvZB3j3M3bqQ)(NCSTRING source0, NI L0);
N_NIMCALL(NI16*, newwidecstring_kxipuF9cNh6r2grKDcLjFuw)(NimStringDesc* s0);
N_NOINLINE(void, raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA)(NI32 errorcode0, NimStringDesc* additionalinfo0);
N_NIMCALL(NI32, oslasterror_6wyvsbJUteIgEY9cC5BVJZQ)(void);
N_NIMCALL(NimStringDesc*, HEX24_GUT0CpACeWzt9cO6i89asYdw)(NI16* w0, NI estimate0, NI replacement0);
N_NIMCALL(NimStringDesc*, nosjoinPath)(NimStringDesc* head0, NimStringDesc* tail0);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path0, TY_7q7q3E6Oj24ZNVJb9aonhAg* Result);
N_NIMCALL(NimStringDesc*, nosgetAppFilename)(void);
N_NIMCALL(NI, parentdirpos_DqTO9byr8jfMuX9cD2FnlVFQ)(NimStringDesc* path0);
N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path0);
N_NIMCALL(NIM_BOOL, existsorcreatedir_45Xwkpg5BatjRqUBSXvMTQ)(NimStringDesc* dir0);
N_NIMCALL(NIM_BOOL, rawcreatedir_45Xwkpg5BatjRqUBSXvMTQ_2)(NimStringDesc* dir0);
N_NIMCALL(NIM_BOOL, nosexistsDir)(NimStringDesc* dir0);
N_NIMCALL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nosparseCmdLine)(NimStringDesc* c0);
N_NIMCALL(void*, newSeq)(TNimType* typ0, NI len0);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s0, NI newlen0);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s0, NIM_CHAR c0);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq0, NI elemsize0);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest0, NI addlen0);
N_NIMCALL(NimStringDesc*, getenv_8zNgT9bxx7m9cTt2TeVdTdIw)(NimStringDesc* key0);
N_NIMCALL(NI, findenvvar_cmJJ3H7KloA4DztTvzWyCw)(NimStringDesc* key0);
N_NIMCALL(void, getenvvarsc_xlXgIeBHBOL9cl4MJcFJ8xA)(void);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ0, NI len0);
N_NIMCALL(NIM_BOOL, nsuStartsWith)(NimStringDesc* s0, NimStringDesc* prefix0);
N_NIMCALL(NI, nsuFindChar)(NimStringDesc* s0, NIM_CHAR sub0, NI start0);
static N_INLINE(NIM_BOOL, HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgos)(NCSTRING x0, NCSTRING y0);
N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str0);
N_NIMCALL(NI, cmp_xEnKsp9cfvO7Do9cTYXo8eJw)(NimStringDesc* x0, NimStringDesc* y0);
N_NIMCALL(NI, nsuCmpIgnoreCase)(NimStringDesc* a0, NimStringDesc* b0);
N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename0, NimStringDesc* ext0);
N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename0);
N_NIMCALL(NimStringDesc*, HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ)(NimStringDesc* head0, NimStringDesc* tail0);
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*, nosextractFilename)(NimStringDesc* path0);
N_NIMCALL(void, nosremoveFile)(NimStringDesc* file0);
N_NIMCALL(void, nosremoveDir)(NimStringDesc* dir0);
static N_INLINE(void, popSafePoint)(void);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(void, rawremovedir_UW75XKQJ2RK9bO3MFFoDxTw)(NimStringDesc* dir0);
N_NIMCALL(time_t, wintimetounixtime_Roh6mgu3pw5hYGgivhSNGw)(NI64 t0);
N_NIMCALL(NI64, rdfiletime_8xfVp1z4bc5fRCRgoEFhIQ)(Filetime_bs4NMleDDVF7xsEK0SGLBw f0);
N_NIMCALL(NI64, ntDiffTime)(time_t a0, time_t b0);
N_NIMCALL(time_t, nosgetLastModificationTime)(NimStringDesc* file0);
N_NIMCALL(NimStringDesc*, nosgetHomeDir)(void);
NIM_BOOL envcomputed_LLyFo9bsdu1ZXMDvAe8DhrQ;
TY_sM4lkSb7zS6F7OVMvW9cffQ* environment_mlhK49b6YMgc9cgrcYkKq9a3g;
extern TNimType NTI_77mFvmsOLKik79ci2hXkHEg;
TNimType NTI_sM4lkSb7zS6F7OVMvW9cffQ;
TY_sM4lkSb7zS6F7OVMvW9cffQ* ownargv_WVJ54JSHy7VxacV39bwBPFA;
extern TNimType NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA;
extern TNimType NTI_3XwRQvmzCEOC4QnT706q1g;
extern TY_aO673xGTLLxou7P7GxoCXA Dl_119835;
extern TY_im9buRnIvptJfzdASYMEbBA Dl_120001;
extern Gcheap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
extern TY_9bXer9a4ps9aSGctILcxWReVw Dl_119830;
extern TY_W1Y0YSv0z9cf3pqKJgjGdqQ Dl_120604;
extern TY_YTOHOMfxh6yqeIrwoF3EQw Dl_120432;
extern TY_2xBzxeMx4l7D6jwHak3G2g Dl_120022;
extern TY_SQvdXqIshqDsOrj27LgeLQ Dl_120011;
extern TY_fRm1QK2sgVg9aFiEV5T74jA Dl_120611;
extern TNimType NTI_HX2M9cQhE3jaovp9aYJDdslA;
extern TNimType NTI_9czoZw3pzPyrBmb5zTHY1OQ;
extern TY_C6bRt4Mqo6LDqlyl9bIOYWQ Dl_120632;
extern TY_C6bRt4Mqo6LDqlyl9bIOYWQ Dl_120627;
extern TY_fRm1QK2sgVg9aFiEV5T74jA Dl_120629;
extern TY_l1Nv6c9cTPsVTSfpp9bI8Q7Q Dl_120018;
extern TY_UWgwsOCvecqqlVsXbs132A Dl_120004;
extern TSafePoint* exchandler_rqLlY5bs9atDw2OXYqJEn5g;
extern TY_fRm1QK2sgVg9aFiEV5T74jA Dl_121430;
extern TY_VxkwbRWIB7oY6WmptBE73A Dl_120614;
extern TY_jwEWAkul5J6p6K0UfXa1tw Dl_120437;
extern TY_ofoySXaAAlxxs9bQS9a1etlg Dl_120601;
extern TY_fRm1QK2sgVg9aFiEV5T74jA Dl_120015;
extern TY_l1Nv6c9cTPsVTSfpp9bI8Q7Q Dl_120623;
extern TY_UVtmMfBlnKqZ4ulTGMgcRw Dl_120618;
extern TY_Tjolzh1w2dIIpj3oCDGPFw Dl_120831;
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_4, "", 0);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_5, "\015\012Additional info: ", 19);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_6, "unknown OS error", 16);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_7, "Failed to create the directory", 30);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_8, ":\\", 2);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_9, "\\", 1);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_10, ".", 1);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_11, "..\\", 3);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_12, "USERPROFILE", 11);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_13, "PATH", 4);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_14, "exe", 3);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_15, "cmd", 3);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_16, "bat", 3);
NIM_CONST TY_24KAM9afIUgUaqBaEBB6r9bg Exeexts_ONrgkgAZ9bh6KVTWl4XeOSw = {((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_14),
((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_15),
((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_16)}
;
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_17, "APPDATA", 7);
STRING_LITERAL(T_yu6cxgKBBXbNsTkT9cyMd4g_18, "*", 1);
static N_NIMCALL(void, Marker_TY_sM4lkSb7zS6F7OVMvW9cffQ)(void* p, NI op) {
	TY_sM4lkSb7zS6F7OVMvW9cffQ* a;
	NI LOC1;
	a = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)p;
	LOC1 = (NI)0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}
static N_NIMCALL(void, T_yu6cxgKBBXbNsTkT9cyMd4g_2)(void) {
	nimGCvisit((void*)environment_mlhK49b6YMgc9cgrcYkKq9a3g, 0);
}
static N_NIMCALL(void, T_yu6cxgKBBXbNsTkT9cyMd4g_3)(void) {
	nimGCvisit((void*)ownargv_WVJ54JSHy7VxacV39bwBPFA, 0);
}

N_NIMCALL(void, nossplitPath)(NimStringDesc* path0, TY_UV3llMMYFckfui8YMBuUZA* Result) {
	NI seppos0;
	seppos0 = ((NI) -1);
	{
		NI i_PU9a9a9b9ayxLUu9czuig0ggZVg;
		NI HEX3Atmp_qi0JGA3QNuBuU7hHq9aaCAg;
		NI res_mg8ARupfA5R2j58N4jwiiA;
		i_PU9a9a9b9ayxLUu9czuig0ggZVg = (NI)0;
		HEX3Atmp_qi0JGA3QNuBuU7hHq9aaCAg = (NI)0;
		HEX3Atmp_qi0JGA3QNuBuU7hHq9aaCAg = (NI)((path0 ? path0->Sup.len : 0) - ((NI) 1));
		res_mg8ARupfA5R2j58N4jwiiA = HEX3Atmp_qi0JGA3QNuBuU7hHq9aaCAg;
		{
			while (1) {
				if (!(((NI) 0) <= res_mg8ARupfA5R2j58N4jwiiA)) goto LA3;
				i_PU9a9a9b9ayxLUu9czuig0ggZVg = res_mg8ARupfA5R2j58N4jwiiA;
				{
					if (!(((NU8)(path0->data[i_PU9a9a9b9ayxLUu9czuig0ggZVg])) == ((NU8)(92)) || ((NU8)(path0->data[i_PU9a9a9b9ayxLUu9czuig0ggZVg])) == ((NU8)(47)))) goto LA6;
					seppos0 = i_PU9a9a9b9ayxLUu9czuig0ggZVg;
					goto LA1;
				}
				LA6: ;
				res_mg8ARupfA5R2j58N4jwiiA -= ((NI) 1);
			} LA3: ;
		}
	} LA1: ;
	{
		if (!(((NI) 0) <= seppos0)) goto LA10;
		unsureAsgnRef((void**) (&(*Result).Field0), copyStrLast(path0, ((NI) 0), (NI)(seppos0 - ((NI) 1))));
		unsureAsgnRef((void**) (&(*Result).Field1), copyStr(path0, (NI)(seppos0 + ((NI) 1))));
	}
	goto LA8;
	LA10: ;
	{
		unsureAsgnRef((void**) (&(*Result).Field0), copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4)));
		unsureAsgnRef((void**) (&(*Result).Field1), copyString(path0));
	}
	LA8: ;
}

N_NIMCALL(NimStringDesc*, nosextractFilename)(NimStringDesc* path0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = ((path0 ? path0->Sup.len : 0) == ((NI) 0));
		if (LOC3) goto LA4;
		LOC3 = (((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(92)) || ((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)));
		LA4: ;
		if (!LOC3) goto LA5;
		result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
	}
	goto LA1;
	LA5: ;
	{
		TY_UV3llMMYFckfui8YMBuUZA LOC8;
		memset((void*)(&LOC8), 0, sizeof(LOC8));
		nossplitPath(path0, (&LOC8));
		result0 = copyString(LOC8.Field1);
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NI, searchextpos_AlmWoA52oxWnFTorxtz9caA)(NimStringDesc* s0) {
	NI result0;
	result0 = (NI)0;
	result0 = ((NI) -1);
	{
		NI i_XQE9aiUWOFdx4JhYiIhgMdQ;
		NI HEX3Atmp_wwRFqz9cAap5nYm4hxa9a9cyQ;
		NI res_c104hbjlw03oZVhljBpoGA;
		i_XQE9aiUWOFdx4JhYiIhgMdQ = (NI)0;
		HEX3Atmp_wwRFqz9cAap5nYm4hxa9a9cyQ = (NI)0;
		HEX3Atmp_wwRFqz9cAap5nYm4hxa9a9cyQ = (NI)((s0 ? s0->Sup.len : 0) - ((NI) 1));
		res_c104hbjlw03oZVhljBpoGA = HEX3Atmp_wwRFqz9cAap5nYm4hxa9a9cyQ;
		{
			while (1) {
				if (!(((NI) 1) <= res_c104hbjlw03oZVhljBpoGA)) goto LA3;
				i_XQE9aiUWOFdx4JhYiIhgMdQ = res_c104hbjlw03oZVhljBpoGA;
				{
					if (!((NU8)(s0->data[i_XQE9aiUWOFdx4JhYiIhgMdQ]) == (NU8)(46))) goto LA6;
					result0 = i_XQE9aiUWOFdx4JhYiIhgMdQ;
					goto LA1;
				}
				goto LA4;
				LA6: ;
				{
					if (!(((NU8)(s0->data[i_XQE9aiUWOFdx4JhYiIhgMdQ])) == ((NU8)(92)) || ((NU8)(s0->data[i_XQE9aiUWOFdx4JhYiIhgMdQ])) == ((NU8)(47)))) goto LA9;
					goto LA1;
				}
				goto LA4;
				LA9: ;
				LA4: ;
				res_c104hbjlw03oZVhljBpoGA -= ((NI) 1);
			} LA3: ;
		}
	} LA1: ;
	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*, normext_g9aFI0nT0uI8DMfFxBPaZZg)(NimStringDesc* ext0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = ((ext0) && (ext0)->Sup.len == 0);
		if (LOC3) goto LA4;
		LOC3 = ((NU8)(ext0->data[((NI) 0)]) == (NU8)(46));
		LA4: ;
		if (!LOC3) goto LA5;
		result0 = copyString(ext0);
	}
	goto LA1;
	LA5: ;
	{
		NimStringDesc* LOC8;
		LOC8 = (NimStringDesc*)0;
		LOC8 = rawNewString(ext0->Sup.len + 1);
appendChar(LOC8, 46);
appendString(LOC8, ext0);
		result0 = LOC8;
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename0, NimStringDesc* ext0) {
	NimStringDesc* result0;
	NI extpos0;
	result0 = (NimStringDesc*)0;
	extpos0 = searchextpos_AlmWoA52oxWnFTorxtz9caA(filename0);
	{
		NimStringDesc* LOC5;
		NimStringDesc* LOC6;
		if (!(extpos0 < ((NI) 0))) goto LA3;
		LOC5 = (NimStringDesc*)0;
		LOC6 = (NimStringDesc*)0;
		LOC6 = normext_g9aFI0nT0uI8DMfFxBPaZZg(ext0);
		LOC5 = rawNewString(filename0->Sup.len + LOC6->Sup.len + 0);
appendString(LOC5, filename0);
appendString(LOC5, LOC6);
		result0 = LOC5;
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC8;
		NimStringDesc* LOC9;
		NimStringDesc* LOC10;
		LOC8 = (NimStringDesc*)0;
		LOC9 = (NimStringDesc*)0;
		LOC9 = copyStrLast(filename0, ((NI) 0), (NI)(extpos0 - ((NI) 1)));
		LOC10 = (NimStringDesc*)0;
		LOC10 = normext_g9aFI0nT0uI8DMfFxBPaZZg(ext0);
		LOC8 = rawNewString(LOC9->Sup.len + LOC10->Sup.len + 0);
appendString(LOC8, LOC9);
appendString(LOC8, LOC10);
		result0 = LOC8;
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, oserrormsg_9cO757MdTrYxfurMy5qIoAg)(NI32 errorcode0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
	{
		NI16* msgbuf0;
		if (!!((errorcode0 == ((NI32) 0)))) goto LA3;
		msgbuf0 = (NI16*)0;
		{
			NI32 LOC7;
			LOC7 = (NI32)0;
			LOC7 = Dl_119835(((NI32) 4864), NIM_NIL, errorcode0, ((NI32) 0), ((void*) (&msgbuf0)), ((NI32) 0), NIM_NIL);
			if (!!((LOC7 == ((NI32) 0)))) goto LA8;
			result0 = HEX24_QjWkJEdnPpNzR7KF7dYIoQ(msgbuf0);
			{
				if (!!((msgbuf0 == NIM_NIL))) goto LA12;
				Dl_120001(((void*) (msgbuf0)));
			}
			LA12: ;
		}
		LA8: ;
	}
	LA3: ;
	return result0;
}

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

N_NOINLINE(void, raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA)(NI32 errorcode0, NimStringDesc* additionalinfo0) {
	Oserror_3XwRQvmzCEOC4QnT706q1g* e0;
	e0 = (Oserror_3XwRQvmzCEOC4QnT706q1g*)0;
	e0 = (Oserror_3XwRQvmzCEOC4QnT706q1g*) newObj((&NTI_Qx9aKy4vZ9bVz9bnG9brQcRHGA), sizeof(Oserror_3XwRQvmzCEOC4QnT706q1g));
	(*e0).Sup.Sup.Sup.m_type = (&NTI_3XwRQvmzCEOC4QnT706q1g);
	(*e0).errorcode = errorcode0;
	{
		if (!((additionalinfo0 ? additionalinfo0->Sup.len : 0) == ((NI) 0))) goto LA3;
		asgnRefNoCycle((void**) (&(*e0).Sup.Sup.message), oserrormsg_9cO757MdTrYxfurMy5qIoAg(errorcode0));
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC6;
		NimStringDesc* LOC7;
		LOC6 = (NimStringDesc*)0;
		LOC7 = (NimStringDesc*)0;
		LOC7 = oserrormsg_9cO757MdTrYxfurMy5qIoAg(errorcode0);
		LOC6 = rawNewString(LOC7->Sup.len + additionalinfo0->Sup.len + 19);
appendString(LOC6, LOC7);
appendString(LOC6, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_5));
appendString(LOC6, additionalinfo0);
		asgnRefNoCycle((void**) (&(*e0).Sup.Sup.message), LOC6);
	}
	LA1: ;
	{
		NimStringDesc* LOC12;
		if (!(((*e0).Sup.Sup.message) && ((*e0).Sup.Sup.message)->Sup.len == 0)) goto LA10;
		LOC12 = (NimStringDesc*)0;
		LOC12 = (*e0).Sup.Sup.message; (*e0).Sup.Sup.message = copyStringRC1(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_6));
		if (LOC12) nimGCunrefNoCycle(LOC12);
	}
	LA10: ;
	raiseException((Exception*)e0, "OSError");
}

N_NIMCALL(NI32, oslasterror_6wyvsbJUteIgEY9cC5BVJZQ)(void) {
	NI32 result0;
	result0 = (NI32)0;
	result0 = Dl_119830();
	return result0;
}

N_NIMCALL(NimStringDesc*, nosexpandFilename)(NimStringDesc* filename0) {
	NimStringDesc* result0;
	NI32 bufsize0;
	NI16* unused0;
	NI16* res0;
	result0 = (NimStringDesc*)0;
	bufsize0 = ((NI32) 260);
	unused0 = NIM_NIL;
	res0 = newwidecstring_b3CORJA07cGvZB3j3M3bqQ("", ((NI) (bufsize0)));
	{
		while (1) {
			NI32 L0;
			NI16* LOC3;
			LOC3 = (NI16*)0;
			LOC3 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(filename0);
			L0 = Dl_120604(LOC3, bufsize0, res0, &unused0);
			{
				NI32 LOC8;
				if (!(L0 == ((NI32) 0))) goto LA6;
				LOC8 = (NI32)0;
				LOC8 = oslasterror_6wyvsbJUteIgEY9cC5BVJZQ();
				raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC8, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
			}
			goto LA4;
			LA6: ;
			{
				if (!(bufsize0 < L0)) goto LA10;
				res0 = newwidecstring_b3CORJA07cGvZB3j3M3bqQ("", ((NI) (L0)));
				bufsize0 = L0;
			}
			goto LA4;
			LA10: ;
			{
				result0 = HEX24_GUT0CpACeWzt9cO6i89asYdw(res0, ((NI) (L0)), ((NI) 65533));
				goto LA1;
			}
			LA4: ;
		}
	} LA1: ;
	return result0;
}

N_NIMCALL(NI, findfirstfile_9cPKjuaUWDYlrzWunhDgNng)(NimStringDesc* a0, Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA* b0) {
	NI result0;
	NI16* LOC1;
	result0 = (NI)0;
	LOC1 = (NI16*)0;
	LOC1 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(a0);
	result0 = Dl_120432(LOC1, b0);
	return result0;
}

N_NIMCALL(NimStringDesc*, nosjoinPath)(NimStringDesc* head0, NimStringDesc* tail0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		if (!((head0 ? head0->Sup.len : 0) == ((NI) 0))) goto LA3;
		result0 = copyString(tail0);
	}
	goto LA1;
	LA3: ;
	{
		if (!(((NU8)(head0->data[(NI)((head0 ? head0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(92)) || ((NU8)(head0->data[(NI)((head0 ? head0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)))) goto LA6;
		{
			NimStringDesc* LOC12;
			NimStringDesc* LOC13;
			if (!(((NU8)(tail0->data[((NI) 0)])) == ((NU8)(92)) || ((NU8)(tail0->data[((NI) 0)])) == ((NU8)(47)))) goto LA10;
			LOC12 = (NimStringDesc*)0;
			LOC13 = (NimStringDesc*)0;
			LOC13 = copyStr(tail0, ((NI) 1));
			LOC12 = rawNewString(head0->Sup.len + LOC13->Sup.len + 0);
appendString(LOC12, head0);
appendString(LOC12, LOC13);
			result0 = LOC12;
		}
		goto LA8;
		LA10: ;
		{
			NimStringDesc* LOC15;
			LOC15 = (NimStringDesc*)0;
			LOC15 = rawNewString(head0->Sup.len + tail0->Sup.len + 0);
appendString(LOC15, head0);
appendString(LOC15, tail0);
			result0 = LOC15;
		}
		LA8: ;
	}
	goto LA1;
	LA6: ;
	{
		{
			NimStringDesc* LOC21;
			if (!(((NU8)(tail0->data[((NI) 0)])) == ((NU8)(92)) || ((NU8)(tail0->data[((NI) 0)])) == ((NU8)(47)))) goto LA19;
			LOC21 = (NimStringDesc*)0;
			LOC21 = rawNewString(head0->Sup.len + tail0->Sup.len + 0);
appendString(LOC21, head0);
appendString(LOC21, tail0);
			result0 = LOC21;
		}
		goto LA17;
		LA19: ;
		{
			NimStringDesc* LOC23;
			LOC23 = (NimStringDesc*)0;
			LOC23 = rawNewString(head0->Sup.len + tail0->Sup.len + 1);
appendString(LOC23, head0);
appendChar(LOC23, 92);
appendString(LOC23, tail0);
			result0 = LOC23;
		}
		LA17: ;
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ)(NimStringDesc* head0, NimStringDesc* tail0) {
	NimStringDesc* result0;
{	result0 = (NimStringDesc*)0;
	result0 = nosjoinPath(head0, tail0);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void, nossplitFile)(NimStringDesc* path0, TY_7q7q3E6Oj24ZNVJb9aonhAg* Result) {
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = ((path0 ? path0->Sup.len : 0) == ((NI) 0));
		if (LOC3) goto LA4;
		LOC3 = (((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(92)) || ((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)));
		LA4: ;
		if (!LOC3) goto LA5;
		unsureAsgnRef((void**) (&(*Result).Field0), copyString(path0));
		unsureAsgnRef((void**) (&(*Result).Field1), copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4)));
		unsureAsgnRef((void**) (&(*Result).Field2), copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4)));
	}
	goto LA1;
	LA5: ;
	{
		NI seppos0;
		NI dotpos0;
		seppos0 = ((NI) -1);
		dotpos0 = (path0 ? path0->Sup.len : 0);
		{
			NI i_RvAXC8pcRrjQVcLzMy7Fhw;
			NI HEX3Atmp_yDPmQODHSEiGYJLOLrehCg;
			NI res_FD5o2nBImp9bjBTg5egPNBA;
			i_RvAXC8pcRrjQVcLzMy7Fhw = (NI)0;
			HEX3Atmp_yDPmQODHSEiGYJLOLrehCg = (NI)0;
			HEX3Atmp_yDPmQODHSEiGYJLOLrehCg = (NI)((path0 ? path0->Sup.len : 0) - ((NI) 1));
			res_FD5o2nBImp9bjBTg5egPNBA = HEX3Atmp_yDPmQODHSEiGYJLOLrehCg;
			{
				while (1) {
					if (!(((NI) 0) <= res_FD5o2nBImp9bjBTg5egPNBA)) goto LA10;
					i_RvAXC8pcRrjQVcLzMy7Fhw = res_FD5o2nBImp9bjBTg5egPNBA;
					{
						if (!((NU8)(path0->data[i_RvAXC8pcRrjQVcLzMy7Fhw]) == (NU8)(46))) goto LA13;
						{
							NIM_BOOL LOC17;
							NIM_BOOL LOC18;
							LOC17 = (NIM_BOOL)0;
							LOC18 = (NIM_BOOL)0;
							LOC18 = (dotpos0 == (path0 ? path0->Sup.len : 0));
							if (!(LOC18)) goto LA19;
							LOC18 = (((NI) 0) < i_RvAXC8pcRrjQVcLzMy7Fhw);
							LA19: ;
							LOC17 = LOC18;
							if (!(LOC17)) goto LA20;
							LOC17 = !((((NU8)(path0->data[(NI)(i_RvAXC8pcRrjQVcLzMy7Fhw - ((NI) 1))])) == ((NU8)(92)) || ((NU8)(path0->data[(NI)(i_RvAXC8pcRrjQVcLzMy7Fhw - ((NI) 1))])) == ((NU8)(47))));
							LA20: ;
							if (!LOC17) goto LA21;
							dotpos0 = i_RvAXC8pcRrjQVcLzMy7Fhw;
						}
						LA21: ;
					}
					goto LA11;
					LA13: ;
					{
						if (!(((NU8)(path0->data[i_RvAXC8pcRrjQVcLzMy7Fhw])) == ((NU8)(92)) || ((NU8)(path0->data[i_RvAXC8pcRrjQVcLzMy7Fhw])) == ((NU8)(47)))) goto LA24;
						seppos0 = i_RvAXC8pcRrjQVcLzMy7Fhw;
						goto LA8;
					}
					goto LA11;
					LA24: ;
					LA11: ;
					res_FD5o2nBImp9bjBTg5egPNBA -= ((NI) 1);
				} LA10: ;
			}
		} LA8: ;
		unsureAsgnRef((void**) (&(*Result).Field0), copyStrLast(path0, ((NI) 0), (NI)(seppos0 - ((NI) 1))));
		unsureAsgnRef((void**) (&(*Result).Field1), copyStrLast(path0, (NI)(seppos0 + ((NI) 1)), (NI)(dotpos0 - ((NI) 1))));
		unsureAsgnRef((void**) (&(*Result).Field2), copyStr(path0, dotpos0));
	}
	LA1: ;
}

N_NIMCALL(NimStringDesc*, nosgetAppFilename)(void) {
	NimStringDesc* result0;
	NI32 bufsize0;
	NI16* buf0;
	result0 = (NimStringDesc*)0;
	bufsize0 = ((NI32) 260);
	buf0 = newwidecstring_b3CORJA07cGvZB3j3M3bqQ("", ((NI) (bufsize0)));
	{
		while (1) {
			NI32 L0;
			L0 = Dl_120022(((NI) 0), buf0, bufsize0);
			{
				if (!(L0 == ((NI32) 0))) goto LA5;
				result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
				goto LA1;
			}
			goto LA3;
			LA5: ;
			{
				if (!(bufsize0 < L0)) goto LA8;
				buf0 = newwidecstring_b3CORJA07cGvZB3j3M3bqQ("", ((NI) (L0)));
				bufsize0 = L0;
			}
			goto LA3;
			LA8: ;
			{
				result0 = HEX24_GUT0CpACeWzt9cO6i89asYdw(buf0, ((NI) (L0)), ((NI) 65533));
				goto LA1;
			}
			LA3: ;
		}
	} LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, nosgetAppDir)(void) {
	NimStringDesc* result0;
	NimStringDesc* LOC1;
	TY_7q7q3E6Oj24ZNVJb9aonhAg LOC2;
	result0 = (NimStringDesc*)0;
	LOC1 = (NimStringDesc*)0;
	LOC1 = nosgetAppFilename();
	memset((void*)(&LOC2), 0, sizeof(LOC2));
	nossplitFile(LOC1, (&LOC2));
	result0 = copyString(LOC2.Field0);
	return result0;
}

N_NIMCALL(NI, parentdirpos_DqTO9byr8jfMuX9cD2FnlVFQ)(NimStringDesc* path0) {
	NI result0;
	NI q0;
{	result0 = (NI)0;
	q0 = ((NI) 1);
	{
		NIM_BOOL LOC3;
		LOC3 = (NIM_BOOL)0;
		LOC3 = (((NI) 1) <= (path0 ? path0->Sup.len : 0));
		if (!(LOC3)) goto LA4;
		LOC3 = (((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(92)) || ((NU8)(path0->data[(NI)((path0 ? path0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47)));
		LA4: ;
		if (!LOC3) goto LA5;
		q0 = ((NI) 2);
	}
	LA5: ;
	{
		NI i_WxgcWd2Exz8KkJdIEhEwag;
		NI HEX3Atmp_svAarcCWD8m2rrDIUxDWRQ;
		NI res_ZbndgrJU9c18Iu9c5JbbaFxA;
		i_WxgcWd2Exz8KkJdIEhEwag = (NI)0;
		HEX3Atmp_svAarcCWD8m2rrDIUxDWRQ = (NI)0;
		HEX3Atmp_svAarcCWD8m2rrDIUxDWRQ = (NI)((path0 ? path0->Sup.len : 0) - q0);
		res_ZbndgrJU9c18Iu9c5JbbaFxA = HEX3Atmp_svAarcCWD8m2rrDIUxDWRQ;
		{
			while (1) {
				if (!(((NI) 0) <= res_ZbndgrJU9c18Iu9c5JbbaFxA)) goto LA9;
				i_WxgcWd2Exz8KkJdIEhEwag = res_ZbndgrJU9c18Iu9c5JbbaFxA;
				{
					if (!(((NU8)(path0->data[i_WxgcWd2Exz8KkJdIEhEwag])) == ((NU8)(92)) || ((NU8)(path0->data[i_WxgcWd2Exz8KkJdIEhEwag])) == ((NU8)(47)))) goto LA12;
					result0 = i_WxgcWd2Exz8KkJdIEhEwag;
					goto BeforeRet;
				}
				LA12: ;
				res_ZbndgrJU9c18Iu9c5JbbaFxA -= ((NI) 1);
			} LA9: ;
		}
	}
	result0 = ((NI) -1);
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, nosparentDir)(NimStringDesc* path0) {
	NimStringDesc* result0;
	NI seppos0;
	result0 = (NimStringDesc*)0;
	seppos0 = parentdirpos_DqTO9byr8jfMuX9cD2FnlVFQ(path0);
	{
		if (!(((NI) 0) <= seppos0)) goto LA3;
		result0 = copyStrLast(path0, ((NI) 0), (NI)(seppos0 - ((NI) 1)));
	}
	goto LA1;
	LA3: ;
	{
		result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path0) {
	NIM_BOOL result0;
	NI len0;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	NIM_BOOL LOC5;
	NIM_BOOL LOC6;
	result0 = (NIM_BOOL)0;
	len0 = (path0 ? path0->Sup.len : 0);
	LOC1 = (NIM_BOOL)0;
	LOC2 = (NIM_BOOL)0;
	LOC2 = (((NI) 0) < len0);
	if (!(LOC2)) goto LA3;
	LOC2 = (((NU8)(path0->data[((NI) 0)])) == ((NU8)(47)) || ((NU8)(path0->data[((NI) 0)])) == ((NU8)(92)));
	LA3: ;
	LOC1 = LOC2;
	if (LOC1) goto LA4;
	LOC5 = (NIM_BOOL)0;
	LOC6 = (NIM_BOOL)0;
	LOC6 = (((NI) 1) < len0);
	if (!(LOC6)) goto LA7;
	LOC6 = (((NU8)(path0->data[((NI) 0)])) >= ((NU8)(97)) && ((NU8)(path0->data[((NI) 0)])) <= ((NU8)(122)) || ((NU8)(path0->data[((NI) 0)])) >= ((NU8)(65)) && ((NU8)(path0->data[((NI) 0)])) <= ((NU8)(90)));
	LA7: ;
	LOC5 = LOC6;
	if (!(LOC5)) goto LA8;
	LOC5 = ((NU8)(path0->data[((NI) 1)]) == (NU8)(58));
	LA8: ;
	LOC1 = LOC5;
	LA4: ;
	result0 = LOC1;
	return result0;
}

N_NIMCALL(NIM_BOOL, rawcreatedir_45Xwkpg5BatjRqUBSXvMTQ_2)(NimStringDesc* dir0) {
	NIM_BOOL result0;
	NI32 res0;
	NI16* LOC1;
	result0 = (NIM_BOOL)0;
	LOC1 = (NI16*)0;
	LOC1 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(dir0);
	res0 = Dl_120011(LOC1, NIM_NIL);
	{
		if (!!((res0 == ((NI32) 0)))) goto LA4;
		result0 = NIM_TRUE;
	}
	goto LA2;
	LA4: ;
	{
		NI32 LOC7;
		LOC7 = (NI32)0;
		LOC7 = Dl_119830();
		if (!(LOC7 == ((NI32) 183))) goto LA8;
		result0 = NIM_FALSE;
	}
	goto LA2;
	LA8: ;
	{
		NI32 LOC11;
		LOC11 = (NI32)0;
		LOC11 = oslasterror_6wyvsbJUteIgEY9cC5BVJZQ();
		raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC11, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
	}
	LA2: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, nosexistsDir)(NimStringDesc* dir0) {
	NIM_BOOL result0;
	NI32 a0;
	NI16* LOC1;
	result0 = (NIM_BOOL)0;
	LOC1 = (NI16*)0;
	LOC1 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(dir0);
	a0 = Dl_120611(LOC1);
	{
		if (!!((a0 == ((NI32) -1)))) goto LA4;
		result0 = !(((NI32)(a0 & ((NI32) 16)) == ((NI32) 0)));
	}
	LA4: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, existsorcreatedir_45Xwkpg5BatjRqUBSXvMTQ)(NimStringDesc* dir0) {
	NIM_BOOL result0;
	NIM_BOOL LOC1;
	result0 = (NIM_BOOL)0;
	LOC1 = (NIM_BOOL)0;
	LOC1 = rawcreatedir_45Xwkpg5BatjRqUBSXvMTQ_2(dir0);
	result0 = !(LOC1);
	{
		if (!result0) goto LA4;
		{
			NIM_BOOL LOC8;
			Ioerror_9czoZw3pzPyrBmb5zTHY1OQ* e_4he5nelRQAcl1XtPfaowrQ;
			NimStringDesc* LOC11;
			LOC8 = (NIM_BOOL)0;
			LOC8 = nosexistsDir(dir0);
			if (!!(LOC8)) goto LA9;
			e_4he5nelRQAcl1XtPfaowrQ = (Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*)0;
			e_4he5nelRQAcl1XtPfaowrQ = (Ioerror_9czoZw3pzPyrBmb5zTHY1OQ*) newObj((&NTI_HX2M9cQhE3jaovp9aYJDdslA), sizeof(Ioerror_9czoZw3pzPyrBmb5zTHY1OQ));
			(*e_4he5nelRQAcl1XtPfaowrQ).Sup.Sup.Sup.m_type = (&NTI_9czoZw3pzPyrBmb5zTHY1OQ);
			LOC11 = (NimStringDesc*)0;
			LOC11 = (*e_4he5nelRQAcl1XtPfaowrQ).Sup.Sup.message; (*e_4he5nelRQAcl1XtPfaowrQ).Sup.Sup.message = copyStringRC1(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_7));
			if (LOC11) nimGCunrefNoCycle(LOC11);
			raiseException((Exception*)e_4he5nelRQAcl1XtPfaowrQ, "IOError");
		}
		LA9: ;
	}
	LA4: ;
	return result0;
}

N_NIMCALL(void, noscreateDir)(NimStringDesc* dir0) {
	NIM_BOOL omitnext0;
	omitnext0 = NIM_FALSE;
	omitnext0 = nosisAbsolute(dir0);
	{
		NI i_Qc01IR3dOH3flfNCE6VLpw;
		NI HEX3Atmp_ywziRWYrreLWHtJ4hoirLA;
		NI res_9bWCBWZ3aqeaop9bwMLK1Y7A;
		i_Qc01IR3dOH3flfNCE6VLpw = (NI)0;
		HEX3Atmp_ywziRWYrreLWHtJ4hoirLA = (NI)0;
		HEX3Atmp_ywziRWYrreLWHtJ4hoirLA = (NI)((dir0 ? dir0->Sup.len : 0) - ((NI) 1));
		res_9bWCBWZ3aqeaop9bwMLK1Y7A = ((NI) 1);
		{
			while (1) {
				if (!(res_9bWCBWZ3aqeaop9bwMLK1Y7A <= HEX3Atmp_ywziRWYrreLWHtJ4hoirLA)) goto LA3;
				i_Qc01IR3dOH3flfNCE6VLpw = res_9bWCBWZ3aqeaop9bwMLK1Y7A;
				{
					if (!(((NU8)(dir0->data[i_Qc01IR3dOH3flfNCE6VLpw])) == ((NU8)(92)) || ((NU8)(dir0->data[i_Qc01IR3dOH3flfNCE6VLpw])) == ((NU8)(47)))) goto LA6;
					{
						if (!omitnext0) goto LA10;
						omitnext0 = NIM_FALSE;
					}
					goto LA8;
					LA10: ;
					{
						NimStringDesc* LOC13;
						NIM_BOOL LOC14;
						LOC13 = (NimStringDesc*)0;
						LOC13 = copyStrLast(dir0, ((NI) 0), (NI)(i_Qc01IR3dOH3flfNCE6VLpw - ((NI) 1)));
						LOC14 = (NIM_BOOL)0;
						LOC14 = existsorcreatedir_45Xwkpg5BatjRqUBSXvMTQ(LOC13);
					}
					LA8: ;
				}
				LA6: ;
				res_9bWCBWZ3aqeaop9bwMLK1Y7A += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NIM_BOOL LOC17;
		NIM_BOOL LOC18;
		NIM_BOOL LOC23;
		LOC17 = (NIM_BOOL)0;
		LOC18 = (NIM_BOOL)0;
		LOC18 = (((NI) 0) < (dir0 ? dir0->Sup.len : 0));
		if (!(LOC18)) goto LA19;
		LOC18 = !(omitnext0);
		LA19: ;
		LOC17 = LOC18;
		if (!(LOC17)) goto LA20;
		LOC17 = !((((NU8)(dir0->data[(NI)((dir0 ? dir0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(92)) || ((NU8)(dir0->data[(NI)((dir0 ? dir0->Sup.len : 0) - ((NI) 1))])) == ((NU8)(47))));
		LA20: ;
		if (!LOC17) goto LA21;
		LOC23 = (NIM_BOOL)0;
		LOC23 = existsorcreatedir_45Xwkpg5BatjRqUBSXvMTQ(dir0);
	}
	LA21: ;
}

N_NIMCALL(NimStringDesc*, nosjoinPathOpenArray)(NimStringDesc** parts0, NI parts0Len0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = copyString(parts0[((NI) 0)]);
	{
		NI i_uRpZpRasd2AS4VVcmkOdEQ;
		NI HEX3Atmp_SDwb5ajFd20DU9b0F06Tbwg;
		NI res_PQctTd1UoEHQ9cP9bv9cBWHpQ;
		i_uRpZpRasd2AS4VVcmkOdEQ = (NI)0;
		HEX3Atmp_SDwb5ajFd20DU9b0F06Tbwg = (NI)0;
		HEX3Atmp_SDwb5ajFd20DU9b0F06Tbwg = (parts0Len0-1);
		res_PQctTd1UoEHQ9cP9bv9cBWHpQ = ((NI) 1);
		{
			while (1) {
				if (!(res_PQctTd1UoEHQ9cP9bv9cBWHpQ <= HEX3Atmp_SDwb5ajFd20DU9b0F06Tbwg)) goto LA3;
				i_uRpZpRasd2AS4VVcmkOdEQ = res_PQctTd1UoEHQ9cP9bv9cBWHpQ;
				result0 = nosjoinPath(result0, parts0[i_uRpZpRasd2AS4VVcmkOdEQ]);
				res_PQctTd1UoEHQ9cP9bv9cBWHpQ += ((NI) 1);
			} LA3: ;
		}
	}
	return result0;
}

N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename0) {
	NIM_BOOL result0;
	NI32 a0;
	NI16* LOC1;
	result0 = (NIM_BOOL)0;
	LOC1 = (NI16*)0;
	LOC1 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(filename0);
	a0 = Dl_120611(LOC1);
	{
		if (!!((a0 == ((NI32) -1)))) goto LA4;
		result0 = ((NI32)(a0 & ((NI32) 16)) == ((NI32) 0));
	}
	LA4: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename0, NimStringDesc* ext0) {
	NimStringDesc* result0;
	NI extpos0;
	result0 = (NimStringDesc*)0;
	extpos0 = searchextpos_AlmWoA52oxWnFTorxtz9caA(filename0);
	{
		NimStringDesc* LOC5;
		NimStringDesc* LOC6;
		if (!(extpos0 < ((NI) 0))) goto LA3;
		LOC5 = (NimStringDesc*)0;
		LOC6 = (NimStringDesc*)0;
		LOC6 = normext_g9aFI0nT0uI8DMfFxBPaZZg(ext0);
		LOC5 = rawNewString(filename0->Sup.len + LOC6->Sup.len + 0);
appendString(LOC5, filename0);
appendString(LOC5, LOC6);
		result0 = LOC5;
	}
	goto LA1;
	LA3: ;
	{
		result0 = copyString(filename0);
	}
	LA1: ;
	return result0;
}

N_NIMCALL(TY_sM4lkSb7zS6F7OVMvW9cffQ*, nosparseCmdLine)(NimStringDesc* c0) {
	TY_sM4lkSb7zS6F7OVMvW9cffQ* result0;
	NI i0;
	NimStringDesc* a0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*)0;
	result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) newSeq((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
	i0 = ((NI) 0);
	a0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
	{
		while (1) {
			NIM_BOOL inquote0;
			NimStringDesc* LOC49;
			a0 = setLengthStr(a0, ((NI) 0));
			{
				while (1) {
					NIM_BOOL LOC5;
					NIM_BOOL LOC6;
					NIM_BOOL LOC7;
					LOC5 = (NIM_BOOL)0;
					LOC6 = (NIM_BOOL)0;
					LOC7 = (NIM_BOOL)0;
					LOC7 = ((NU8)(c0->data[i0]) == (NU8)(32));
					if (LOC7) goto LA8;
					LOC7 = ((NU8)(c0->data[i0]) == (NU8)(9));
					LA8: ;
					LOC6 = LOC7;
					if (LOC6) goto LA9;
					LOC6 = ((NU8)(c0->data[i0]) == (NU8)(10));
					LA9: ;
					LOC5 = LOC6;
					if (LOC5) goto LA10;
					LOC5 = ((NU8)(c0->data[i0]) == (NU8)(13));
					LA10: ;
					if (!LOC5) goto LA4;
					i0 += ((NI) 1);
				} LA4: ;
			}
			{
				if (!((NU8)(c0->data[i0]) == (NU8)(0))) goto LA13;
				goto LA1;
			}
			LA13: ;
			inquote0 = NIM_FALSE;
			{
				while (1) {
					switch (((NU8)(c0->data[i0]))) {
					case 0:
					{
						goto LA15;
					}
					break;
					case 92:
					{
						NI j0;
						j0 = i0;
						{
							while (1) {
								if (!((NU8)(c0->data[j0]) == (NU8)(92))) goto LA20;
								j0 += ((NI) 1);
							} LA20: ;
						}
						{
							if (!((NU8)(c0->data[j0]) == (NU8)(34))) goto LA23;
							{
								NI k_BonEd5J21PmVJFYOTh6IEw;
								NI HEX3Atmp_rOnm6pzkk8TUZWAo8ShBWQ;
								NI res_Wy66IaQGzq8QrpopI4Uvzw;
								k_BonEd5J21PmVJFYOTh6IEw = (NI)0;
								HEX3Atmp_rOnm6pzkk8TUZWAo8ShBWQ = (NI)0;
								HEX3Atmp_rOnm6pzkk8TUZWAo8ShBWQ = (NI)((NI)(j0 - i0) / ((NI) 2));
								res_Wy66IaQGzq8QrpopI4Uvzw = ((NI) 1);
								{
									while (1) {
										if (!(res_Wy66IaQGzq8QrpopI4Uvzw <= HEX3Atmp_rOnm6pzkk8TUZWAo8ShBWQ)) goto LA27;
										k_BonEd5J21PmVJFYOTh6IEw = res_Wy66IaQGzq8QrpopI4Uvzw;
										a0 = addChar(a0, 92);
										res_Wy66IaQGzq8QrpopI4Uvzw += ((NI) 1);
									} LA27: ;
								}
							}
							{
								if (!(((NI) ((NI)((NI)(j0 - i0) % ((NI) 2)))) == ((NI) 0))) goto LA30;
								i0 = j0;
							}
							goto LA28;
							LA30: ;
							{
								a0 = addChar(a0, 34);
								i0 = (NI)(j0 + ((NI) 1));
							}
							LA28: ;
						}
						goto LA21;
						LA23: ;
						{
							a0 = addChar(a0, c0->data[i0]);
							i0 += ((NI) 1);
						}
						LA21: ;
					}
					break;
					case 34:
					{
						i0 += ((NI) 1);
						{
							if (!!(inquote0)) goto LA37;
							inquote0 = NIM_TRUE;
						}
						goto LA35;
						LA37: ;
						{
							if (!((NU8)(c0->data[i0]) == (NU8)(34))) goto LA40;
							a0 = addChar(a0, c0->data[i0]);
							i0 += ((NI) 1);
						}
						goto LA35;
						LA40: ;
						{
							inquote0 = NIM_FALSE;
							goto LA15;
						}
						LA35: ;
					}
					break;
					case 32:
					case 9:
					{
						{
							if (!!(inquote0)) goto LA46;
							goto LA15;
						}
						LA46: ;
						a0 = addChar(a0, c0->data[i0]);
						i0 += ((NI) 1);
					}
					break;
					default:
					{
						a0 = addChar(a0, c0->data[i0]);
						i0 += ((NI) 1);
					}
					break;
					}
				}
			} LA15: ;
			result0 = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(result0)->Sup, sizeof(NimStringDesc*));
			LOC49 = (NimStringDesc*)0;
			LOC49 = result0->data[result0->Sup.len]; result0->data[result0->Sup.len] = copyStringRC1(a0);
			if (LOC49) nimGCunrefNoCycle(LOC49);
			++result0->Sup.len;
		}
	} LA1: ;
	return result0;
}

N_NIMCALL(NI, nosparamCount)(void) {
	NI result0;
	result0 = (NI)0;
	{
		NI16* LOC5;
		NimStringDesc* LOC6;
		if (!(ownargv_WVJ54JSHy7VxacV39bwBPFA == 0)) goto LA3;
		LOC5 = (NI16*)0;
		LOC5 = Dl_120632();
		LOC6 = (NimStringDesc*)0;
		LOC6 = HEX24_QjWkJEdnPpNzR7KF7dYIoQ(LOC5);
		asgnRefNoCycle((void**) (&ownargv_WVJ54JSHy7VxacV39bwBPFA), nosparseCmdLine(LOC6));
	}
	LA3: ;
	result0 = (NI)((ownargv_WVJ54JSHy7VxacV39bwBPFA ? ownargv_WVJ54JSHy7VxacV39bwBPFA->Sup.len : 0) - ((NI) 1));
	return result0;
}

N_NIMCALL(NimStringDesc*, nosparamStr)(NI i0) {
	NimStringDesc* result0;
{	result0 = (NimStringDesc*)0;
	{
		NI16* LOC5;
		NimStringDesc* LOC6;
		if (!(ownargv_WVJ54JSHy7VxacV39bwBPFA == 0)) goto LA3;
		LOC5 = (NI16*)0;
		LOC5 = Dl_120632();
		LOC6 = (NimStringDesc*)0;
		LOC6 = HEX24_QjWkJEdnPpNzR7KF7dYIoQ(LOC5);
		asgnRefNoCycle((void**) (&ownargv_WVJ54JSHy7VxacV39bwBPFA), nosparseCmdLine(LOC6));
	}
	LA3: ;
	result0 = copyString(ownargv_WVJ54JSHy7VxacV39bwBPFA->data[i0]);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, nosunixToNativePath)(NimStringDesc* path0, NimStringDesc* drive0) {
	NimStringDesc* result0;
	NI start0;
	NI i0;
	result0 = (NimStringDesc*)0;
	start0 = (NI)0;
	{
		if (!((NU8)(path0->data[((NI) 0)]) == (NU8)(47))) goto LA3;
		{
			NimStringDesc* LOC9;
			if (!!(((drive0) && (drive0)->Sup.len == 0))) goto LA7;
			LOC9 = (NimStringDesc*)0;
			LOC9 = rawNewString(drive0->Sup.len + 2);
appendString(LOC9, drive0);
appendString(LOC9, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_8));
			result0 = LOC9;
		}
		goto LA5;
		LA7: ;
		{
			result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_9));
		}
		LA5: ;
		start0 = ((NI) 1);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC12;
		LOC12 = (NIM_BOOL)0;
		LOC12 = ((NU8)(path0->data[((NI) 0)]) == (NU8)(46));
		if (!(LOC12)) goto LA13;
		LOC12 = ((NU8)(path0->data[((NI) 1)]) == (NU8)(47));
		LA13: ;
		if (!LOC12) goto LA14;
		result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_10));
		start0 = ((NI) 2);
	}
	goto LA1;
	LA14: ;
	{
		result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
		start0 = ((NI) 0);
	}
	LA1: ;
	i0 = start0;
	{
		while (1) {
			if (!(i0 < (path0 ? path0->Sup.len : 0))) goto LA18;
			{
				NIM_BOOL LOC21;
				NIM_BOOL LOC22;
				LOC21 = (NIM_BOOL)0;
				LOC22 = (NIM_BOOL)0;
				LOC22 = ((NU8)(path0->data[i0]) == (NU8)(46));
				if (!(LOC22)) goto LA23;
				LOC22 = ((NU8)(path0->data[(NI)(i0 + ((NI) 1))]) == (NU8)(46));
				LA23: ;
				LOC21 = LOC22;
				if (!(LOC21)) goto LA24;
				LOC21 = ((NU8)(path0->data[(NI)(i0 + ((NI) 2))]) == (NU8)(47));
				LA24: ;
				if (!LOC21) goto LA25;
				result0 = resizeString(result0, 3);
appendString(result0, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_11));
				i0 += ((NI) 3);
			}
			goto LA19;
			LA25: ;
			{
				if (!((NU8)(path0->data[i0]) == (NU8)(47))) goto LA28;
				result0 = addChar(result0, 92);
				i0 += ((NI) 1);
			}
			goto LA19;
			LA28: ;
			{
				result0 = addChar(result0, path0->data[i0]);
				i0 += ((NI) 1);
			}
			LA19: ;
		} LA18: ;
	}
	return result0;
}

N_NIMCALL(void, getenvvarsc_xlXgIeBHBOL9cl4MJcFJ8xA)(void) {
{	{
		NI16* env0;
		NI16* e0;
		NI32 LOC17;
		if (!!(envcomputed_LLyFo9bsdu1ZXMDvAe8DhrQ)) goto LA3;
		if (environment_mlhK49b6YMgc9cgrcYkKq9a3g) nimGCunrefNoCycle(environment_mlhK49b6YMgc9cgrcYkKq9a3g);
		environment_mlhK49b6YMgc9cgrcYkKq9a3g = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) newSeqRC1((&NTI_sM4lkSb7zS6F7OVMvW9cffQ), 0);
		env0 = Dl_120627();
		e0 = env0;
		{
			if (!(e0 == NIM_NIL)) goto LA7;
			goto BeforeRet;
		}
		LA7: ;
		{
			while (1) {
				NI16* eend0;
				NimStringDesc* LOC11;
				NimStringDesc* LOC12;
				eend0 = wcschr(e0, ((NI32) 0));
				LOC11 = (NimStringDesc*)0;
				LOC11 = HEX24_QjWkJEdnPpNzR7KF7dYIoQ(e0);
				environment_mlhK49b6YMgc9cgrcYkKq9a3g = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(environment_mlhK49b6YMgc9cgrcYkKq9a3g)->Sup, sizeof(NimStringDesc*));
				LOC12 = (NimStringDesc*)0;
				LOC12 = environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len]; environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len] = copyStringRC1(LOC11);
				if (LOC12) nimGCunrefNoCycle(LOC12);
				++environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len;
				e0 = ((NI16*) ((NI)(((NI) (eend0)) + ((NI) 2))));
				{
					if (!(((NI) (eend0[(((NI) 1))- 0])) == ((NI) 0))) goto LA15;
					goto LA9;
				}
				LA15: ;
			}
		} LA9: ;
		LOC17 = (NI32)0;
		LOC17 = Dl_120629(env0);
		envcomputed_LLyFo9bsdu1ZXMDvAe8DhrQ = NIM_TRUE;
	}
	LA3: ;
	}BeforeRet: ;
}

N_NIMCALL(NI, findenvvar_cmJJ3H7KloA4DztTvzWyCw)(NimStringDesc* key0) {
	NI result0;
	NimStringDesc* temp0;
	NimStringDesc* LOC1;
{	result0 = (NI)0;
	getenvvarsc_xlXgIeBHBOL9cl4MJcFJ8xA();
	LOC1 = (NimStringDesc*)0;
	LOC1 = rawNewString(key0->Sup.len + 1);
appendString(LOC1, key0);
appendChar(LOC1, 61);
	temp0 = LOC1;
	{
		NI i_QFpQyCBMTAf3RQiHRTCtRA;
		NI HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA;
		NI res_9cO4Qfuzy9c4z8ih7joizeqg;
		i_QFpQyCBMTAf3RQiHRTCtRA = (NI)0;
		HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA = (NI)0;
		HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA = (environment_mlhK49b6YMgc9cgrcYkKq9a3g ? (environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len-1) : -1);
		res_9cO4Qfuzy9c4z8ih7joizeqg = ((NI) 0);
		{
			while (1) {
				if (!(res_9cO4Qfuzy9c4z8ih7joizeqg <= HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA)) goto LA4;
				i_QFpQyCBMTAf3RQiHRTCtRA = res_9cO4Qfuzy9c4z8ih7joizeqg;
				{
					NIM_BOOL LOC7;
					LOC7 = (NIM_BOOL)0;
					LOC7 = nsuStartsWith(environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[i_QFpQyCBMTAf3RQiHRTCtRA], temp0);
					if (!LOC7) goto LA8;
					result0 = i_QFpQyCBMTAf3RQiHRTCtRA;
					goto BeforeRet;
				}
				LA8: ;
				res_9cO4Qfuzy9c4z8ih7joizeqg += ((NI) 1);
			} LA4: ;
		}
	}
	result0 = ((NI) -1);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

static N_INLINE(NIM_BOOL, HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgos)(NCSTRING x0, NCSTRING y0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	{
		if (!(((void*) (x0)) == ((void*) (y0)))) goto LA3;
		result0 = NIM_TRUE;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = (NIM_BOOL)0;
		LOC6 = (x0 == 0);
		if (LOC6) goto LA7;
		LOC6 = (y0 == 0);
		LA7: ;
		if (!LOC6) goto LA8;
		result0 = NIM_FALSE;
	}
	goto LA1;
	LA8: ;
	{
		int LOC11;
		LOC11 = (int)0;
		LOC11 = strcmp(x0, y0);
		result0 = (LOC11 == ((NI32) 0));
	}
	LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, getenv_8zNgT9bxx7m9cTt2TeVdTdIw)(NimStringDesc* key0) {
	NimStringDesc* result0;
	NI i0;
{	result0 = (NimStringDesc*)0;
	i0 = findenvvar_cmJJ3H7KloA4DztTvzWyCw(key0);
	{
		NI LOC5;
		if (!(((NI) 0) <= i0)) goto LA3;
		LOC5 = (NI)0;
		LOC5 = nsuFindChar(environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[i0], 61, ((NI) 0));
		result0 = copyStr(environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[i0], (NI)(LOC5 + ((NI) 1)));
		goto BeforeRet;
	}
	goto LA1;
	LA3: ;
	{
		NCSTRING env0;
		env0 = getenv(key0->data);
		{
			NIM_BOOL LOC9;
			LOC9 = (NIM_BOOL)0;
			LOC9 = HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgos(env0, NIM_NIL);
			if (!LOC9) goto LA10;
			result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
			goto BeforeRet;
		}
		LA10: ;
		result0 = cstrToNimstr(env0);
	}
	LA1: ;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, nosgetHomeDir)(void) {
	NimStringDesc* result0;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
{	result0 = (NimStringDesc*)0;
	LOC1 = (NimStringDesc*)0;
	LOC2 = (NimStringDesc*)0;
	LOC2 = getenv_8zNgT9bxx7m9cTt2TeVdTdIw(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_12));
	LOC1 = rawNewString(LOC2->Sup.len + 1);
appendString(LOC1, LOC2);
appendString(LOC1, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_9));
	result0 = LOC1;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NI, noscmpPaths)(NimStringDesc* patha0, NimStringDesc* pathb0) {
	NI result0;
	result0 = (NI)0;
	{
		if (!NIM_FALSE) goto LA3;
		result0 = cmp_xEnKsp9cfvO7Do9cTYXo8eJw(patha0, pathb0);
	}
	goto LA1;
	LA3: ;
	{
		result0 = nsuCmpIgnoreCase(patha0, pathb0);
	}
	LA1: ;
	return result0;
}

N_NIMCALL(void, putenv_Ewmee2rKQBhOdwD9bJ4Lh8A)(NimStringDesc* key0, NimStringDesc* val0) {
	NI indx0;
	NI16* k0;
	NI16* v0;
	indx0 = findenvvar_cmJJ3H7KloA4DztTvzWyCw(key0);
	{
		NimStringDesc* LOC5;
		if (!(((NI) 0) <= indx0)) goto LA3;
		LOC5 = (NimStringDesc*)0;
		LOC5 = rawNewString(key0->Sup.len + val0->Sup.len + 1);
appendString(LOC5, key0);
appendChar(LOC5, 61);
appendString(LOC5, val0);
		asgnRefNoCycle((void**) (&environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[indx0]), LOC5);
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC7;
		NimStringDesc* LOC8;
		LOC7 = (NimStringDesc*)0;
		LOC7 = rawNewString(key0->Sup.len + val0->Sup.len + 1);
appendString(LOC7, key0);
appendChar(LOC7, 61);
appendString(LOC7, val0);
		environment_mlhK49b6YMgc9cgrcYkKq9a3g = (TY_sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV2(&(environment_mlhK49b6YMgc9cgrcYkKq9a3g)->Sup, sizeof(NimStringDesc*));
		LOC8 = (NimStringDesc*)0;
		LOC8 = environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len]; environment_mlhK49b6YMgc9cgrcYkKq9a3g->data[environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len] = copyStringRC1(LOC7);
		if (LOC8) nimGCunrefNoCycle(LOC8);
		++environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len;
		indx0 = (environment_mlhK49b6YMgc9cgrcYkKq9a3g ? (environment_mlhK49b6YMgc9cgrcYkKq9a3g->Sup.len-1) : -1);
	}
	LA1: ;
	k0 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(key0);
	v0 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(val0);
	{
		NI32 LOC11;
		NI32 LOC14;
		LOC11 = (NI32)0;
		LOC11 = Dl_120018(k0, v0);
		if (!(LOC11 == ((NI32) 0))) goto LA12;
		LOC14 = (NI32)0;
		LOC14 = oslasterror_6wyvsbJUteIgEY9cC5BVJZQ();
		raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC14, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
	}
	LA12: ;
}

N_NIMCALL(NimStringDesc*, nosgetCurrentDir)(void) {
	NimStringDesc* result0;
	NI32 bufsize0;
	NI16* res0;
	result0 = (NimStringDesc*)0;
	bufsize0 = ((NI32) 260);
	res0 = newwidecstring_b3CORJA07cGvZB3j3M3bqQ("", ((NI) (bufsize0)));
	{
		while (1) {
			NI32 L0;
			L0 = Dl_120004(bufsize0, res0);
			{
				NI32 LOC7;
				if (!(L0 == ((NI32) 0))) goto LA5;
				LOC7 = (NI32)0;
				LOC7 = oslasterror_6wyvsbJUteIgEY9cC5BVJZQ();
				raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC7, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
			}
			goto LA3;
			LA5: ;
			{
				if (!(bufsize0 < L0)) goto LA9;
				res0 = newwidecstring_b3CORJA07cGvZB3j3M3bqQ("", ((NI) (L0)));
				bufsize0 = L0;
			}
			goto LA3;
			LA9: ;
			{
				result0 = HEX24_GUT0CpACeWzt9cO6i89asYdw(res0, ((NI) (L0)), ((NI) 65533));
				goto LA1;
			}
			LA3: ;
		}
	} LA1: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, findexe_NQz9bqtJ8Yukg6trpGym2NQ)(NimStringDesc* exe0, NIM_BOOL followsymlinks0, TY_24KAM9afIUgUaqBaEBB6r9bg extensions0) {
	NimStringDesc* result0;
	NimStringDesc* path0;
{	result0 = (NimStringDesc*)0;
	{
		NimStringDesc* ext_OPvsxUJH2BMqmTeWesXT9cQ;
		NI i_ZiZQ0BrOOFRx4PwT9ahXHww;
		ext_OPvsxUJH2BMqmTeWesXT9cQ = (NimStringDesc*)0;
		i_ZiZQ0BrOOFRx4PwT9ahXHww = ((NI) 0);
		{
			if (!(((NI) (i_ZiZQ0BrOOFRx4PwT9ahXHww)) <= ((NI) 2))) goto LA4;
			{
				while (1) {
					ext_OPvsxUJH2BMqmTeWesXT9cQ = extensions0[(i_ZiZQ0BrOOFRx4PwT9ahXHww)- 0];
					result0 = nosaddFileExt(exe0, ext_OPvsxUJH2BMqmTeWesXT9cQ);
					{
						NIM_BOOL LOC10;
						LOC10 = (NIM_BOOL)0;
						LOC10 = nosexistsFile(result0);
						if (!LOC10) goto LA11;
						goto BeforeRet;
					}
					LA11: ;
					{
						if (!(((NI) 2) <= ((NI) (i_ZiZQ0BrOOFRx4PwT9ahXHww)))) goto LA15;
						goto LA6;
					}
					LA15: ;
					i_ZiZQ0BrOOFRx4PwT9ahXHww += ((NI) 1);
				}
			} LA6: ;
		}
		LA4: ;
	}
	path0 = getenv_8zNgT9bxx7m9cTt2TeVdTdIw(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_13));
	{
		NimStringDesc* candidate_UCy6ZV9aetVL3IB59cKQ4cGg;
		NI last_3fEEWoI2EjAM6VEbXEXPpw;
		NI splits_CKAYEyOxVf7nwPkm8GYNOw;
		candidate_UCy6ZV9aetVL3IB59cKQ4cGg = (NimStringDesc*)0;
		last_3fEEWoI2EjAM6VEbXEXPpw = ((NI) 0);
		splits_CKAYEyOxVf7nwPkm8GYNOw = ((NI) -1);
		{
			if (!(((NI) 0) < (path0 ? path0->Sup.len : 0))) goto LA20;
			{
				while (1) {
					NI first_qu3LctVkQb4nzpkeLTYj3w;
					NimStringDesc* x_Hlylti1YCPff0zaqS9c7zjg;
					NimStringDesc* LOC32;
					if (!(last_3fEEWoI2EjAM6VEbXEXPpw <= (path0 ? path0->Sup.len : 0))) goto LA23;
					first_qu3LctVkQb4nzpkeLTYj3w = last_3fEEWoI2EjAM6VEbXEXPpw;
					{
						while (1) {
							NIM_BOOL LOC26;
							LOC26 = (NIM_BOOL)0;
							LOC26 = (last_3fEEWoI2EjAM6VEbXEXPpw < (path0 ? path0->Sup.len : 0));
							if (!(LOC26)) goto LA27;
							LOC26 = !(((NU8)(path0->data[last_3fEEWoI2EjAM6VEbXEXPpw]) == (NU8)(59)));
							LA27: ;
							if (!LOC26) goto LA25;
							last_3fEEWoI2EjAM6VEbXEXPpw += ((NI) 1);
						} LA25: ;
					}
					{
						if (!(splits_CKAYEyOxVf7nwPkm8GYNOw == ((NI) 0))) goto LA30;
						last_3fEEWoI2EjAM6VEbXEXPpw = (path0 ? path0->Sup.len : 0);
					}
					LA30: ;
					candidate_UCy6ZV9aetVL3IB59cKQ4cGg = copyStrLast(path0, first_qu3LctVkQb4nzpkeLTYj3w, (NI)(last_3fEEWoI2EjAM6VEbXEXPpw - ((NI) 1)));
					LOC32 = (NimStringDesc*)0;
					{
						NIM_BOOL LOC35;
						LOC35 = (NIM_BOOL)0;
						LOC35 = ((NU8)(candidate_UCy6ZV9aetVL3IB59cKQ4cGg->data[((NI) 0)]) == (NU8)(34));
						if (!(LOC35)) goto LA36;
						LOC35 = ((NU8)(candidate_UCy6ZV9aetVL3IB59cKQ4cGg->data[(NI)((candidate_UCy6ZV9aetVL3IB59cKQ4cGg ? candidate_UCy6ZV9aetVL3IB59cKQ4cGg->Sup.len : 0) - ((NI) 1))]) == (NU8)(34));
						LA36: ;
						if (!LOC35) goto LA37;
						LOC32 = copyStrLast(candidate_UCy6ZV9aetVL3IB59cKQ4cGg, ((NI) 1), (NI)((candidate_UCy6ZV9aetVL3IB59cKQ4cGg ? candidate_UCy6ZV9aetVL3IB59cKQ4cGg->Sup.len : 0) - ((NI) 2)));
					}
					goto LA33;
					LA37: ;
					{
						LOC32 = copyString(candidate_UCy6ZV9aetVL3IB59cKQ4cGg);
					}
					LA33: ;
					x_Hlylti1YCPff0zaqS9c7zjg = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(LOC32, exe0);
					{
						NimStringDesc* ext_OPvsxUJH2BMqmTeWesXT9cQ_2;
						NI i_ZiZQ0BrOOFRx4PwT9ahXHww_2;
						ext_OPvsxUJH2BMqmTeWesXT9cQ_2 = (NimStringDesc*)0;
						i_ZiZQ0BrOOFRx4PwT9ahXHww_2 = ((NI) 0);
						{
							if (!(((NI) (i_ZiZQ0BrOOFRx4PwT9ahXHww_2)) <= ((NI) 2))) goto LA43;
							{
								while (1) {
									NimStringDesc* x0;
									ext_OPvsxUJH2BMqmTeWesXT9cQ_2 = extensions0[(i_ZiZQ0BrOOFRx4PwT9ahXHww_2)- 0];
									x0 = nosaddFileExt(x_Hlylti1YCPff0zaqS9c7zjg, ext_OPvsxUJH2BMqmTeWesXT9cQ_2);
									{
										NIM_BOOL LOC49;
										LOC49 = (NIM_BOOL)0;
										LOC49 = nosexistsFile(x0);
										if (!LOC49) goto LA50;
										result0 = copyString(x0);
										goto BeforeRet;
									}
									LA50: ;
									{
										if (!(((NI) 2) <= ((NI) (i_ZiZQ0BrOOFRx4PwT9ahXHww_2)))) goto LA54;
										goto LA45;
									}
									LA54: ;
									i_ZiZQ0BrOOFRx4PwT9ahXHww_2 += ((NI) 1);
								}
							} LA45: ;
						}
						LA43: ;
					}
					{
						if (!(splits_CKAYEyOxVf7nwPkm8GYNOw == ((NI) 0))) goto LA58;
						goto LA22;
					}
					LA58: ;
					splits_CKAYEyOxVf7nwPkm8GYNOw -= ((NI) 1);
					last_3fEEWoI2EjAM6VEbXEXPpw += ((NI) 1);
				} LA23: ;
			} LA22: ;
		}
		LA20: ;
	}
	result0 = copyString(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NimStringDesc*, nosgetConfigDir)(void) {
	NimStringDesc* result0;
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
{	result0 = (NimStringDesc*)0;
	LOC1 = (NimStringDesc*)0;
	LOC2 = (NimStringDesc*)0;
	LOC2 = getenv_8zNgT9bxx7m9cTt2TeVdTdIw(((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_17));
	LOC1 = rawNewString(LOC2->Sup.len + 1);
appendString(LOC1, LOC2);
appendString(LOC1, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_9));
	result0 = LOC1;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(NIM_BOOL, nosisRootDir)(NimStringDesc* path0) {
	NIM_BOOL result0;
	NI LOC1;
	result0 = (NIM_BOOL)0;
	LOC1 = (NI)0;
	LOC1 = parentdirpos_DqTO9byr8jfMuX9cD2FnlVFQ(path0);
	result0 = (LOC1 < ((NI) 0));
	return result0;
}

N_NIMCALL(NIM_BOOL, existsenv_ahpnHkfRE9cLlJNaRpEL7Vw)(NimStringDesc* key0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		NCSTRING LOC3;
		NIM_BOOL LOC4;
		LOC3 = (NCSTRING)0;
		LOC3 = getenv(key0->data);
		LOC4 = (NIM_BOOL)0;
		LOC4 = HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgos(LOC3, NIM_NIL);
		if (!!(LOC4)) goto LA5;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	goto LA1;
	LA5: ;
	{
		NI LOC8;
		LOC8 = (NI)0;
		LOC8 = findenvvar_cmJJ3H7KloA4DztTvzWyCw(key0);
		result0 = (((NI) 0) <= LOC8);
		goto BeforeRet;
	}
	LA1: ;
	}BeforeRet: ;
	return result0;
}

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

N_NIMCALL(void, nosremoveFile)(NimStringDesc* file0) {
	NI16* f0;
	f0 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(file0);
	{
		NI32 LOC3;
		LOC3 = (NI32)0;
		LOC3 = Dl_121430(f0);
		if (!(LOC3 == ((NI32) 0))) goto LA4;
		{
			NI32 LOC8;
			LOC8 = (NI32)0;
			LOC8 = Dl_119830();
			if (!(LOC8 == ((NI32) 5))) goto LA9;
			{
				NI32 LOC13;
				NI32 LOC16;
				LOC13 = (NI32)0;
				LOC13 = Dl_120614(f0, ((NI32) 128));
				if (!(LOC13 == ((NI32) 0))) goto LA14;
				LOC16 = (NI32)0;
				LOC16 = oslasterror_6wyvsbJUteIgEY9cC5BVJZQ();
				raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC16, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
			}
			LA14: ;
			{
				NI32 LOC19;
				NI32 LOC22;
				LOC19 = (NI32)0;
				LOC19 = Dl_121430(f0);
				if (!(LOC19 == ((NI32) 0))) goto LA20;
				LOC22 = (NI32)0;
				LOC22 = oslasterror_6wyvsbJUteIgEY9cC5BVJZQ();
				raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC22, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
			}
			LA20: ;
		}
		LA9: ;
	}
	LA4: ;
}

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

N_NIMCALL(void, rawremovedir_UW75XKQJ2RK9bO3MFFoDxTw)(NimStringDesc* dir0) {
	NI32 res0;
	NI16* LOC1;
	NI32 lasterror0;
	LOC1 = (NI16*)0;
	LOC1 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(dir0);
	res0 = Dl_120015(LOC1);
	lasterror0 = oslasterror_6wyvsbJUteIgEY9cC5BVJZQ();
	{
		NIM_BOOL LOC4;
		NIM_BOOL LOC5;
		NIM_BOOL LOC6;
		LOC4 = (NIM_BOOL)0;
		LOC5 = (NIM_BOOL)0;
		LOC6 = (NIM_BOOL)0;
		LOC6 = (res0 == ((NI32) 0));
		if (!(LOC6)) goto LA7;
		LOC6 = !((lasterror0 == ((NI32) 3)));
		LA7: ;
		LOC5 = LOC6;
		if (!(LOC5)) goto LA8;
		LOC5 = !((lasterror0 == ((NI32) 18)));
		LA8: ;
		LOC4 = LOC5;
		if (!(LOC4)) goto LA9;
		LOC4 = !((lasterror0 == ((NI32) 2)));
		LA9: ;
		if (!LOC4) goto LA10;
		raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(lasterror0, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
	}
	LA10: ;
}

N_NIMCALL(void, nosremoveDir)(NimStringDesc* dir0) {
	{
		Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg kind_CgYWYOGBi9cm9cxet9aP24amQ;
		NimStringDesc* path_PjxD5WVfFUdiLYTKKL9acYg;
		Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA f_1cZYtEmexm1RTlmNW9aLikg;
		NI h_JJQNr70NTJzS5UNyFdTpBw;
		NimStringDesc* LOC2;
		kind_CgYWYOGBi9cm9cxet9aP24amQ = (Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg)0;
		path_PjxD5WVfFUdiLYTKKL9acYg = (NimStringDesc*)0;
		memset((void*)(&f_1cZYtEmexm1RTlmNW9aLikg), 0, sizeof(f_1cZYtEmexm1RTlmNW9aLikg));
		LOC2 = (NimStringDesc*)0;
		LOC2 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(dir0, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_18));
		h_JJQNr70NTJzS5UNyFdTpBw = findfirstfile_9cPKjuaUWDYlrzWunhDgNng(LOC2, (&f_1cZYtEmexm1RTlmNW9aLikg));
		{
			TSafePoint T_yu6cxgKBBXbNsTkT9cyMd4g_19;
			if (!!((h_JJQNr70NTJzS5UNyFdTpBw == ((NI) -1)))) goto LA5;
			pushSafePoint(&T_yu6cxgKBBXbNsTkT9cyMd4g_19);
			T_yu6cxgKBBXbNsTkT9cyMd4g_19.status = setjmp(T_yu6cxgKBBXbNsTkT9cyMd4g_19.context);
			if (T_yu6cxgKBBXbNsTkT9cyMd4g_19.status == 0) {
				{
					while (1) {
						Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg volatile k_3L6up3asmYrsS0W9b26IJmg;
						k_3L6up3asmYrsS0W9b26IJmg = ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 0);
						{
							NIM_BOOL LOC12;
							NimStringDesc* xx_dEAndDFRegsTFsbHpNqH9cg;
							LOC12 = (NIM_BOOL)0;
							LOC12 = skipfinddata_Paqclu9aSY8chOSEIvA5ZoAoptions((&f_1cZYtEmexm1RTlmNW9aLikg));
							if (!!(LOC12)) goto LA13;
							{
								if (!!(((NI32)(f_1cZYtEmexm1RTlmNW9aLikg.dwfileattributes & ((NI32) 16)) == ((NI32) 0)))) goto LA17;
								k_3L6up3asmYrsS0W9b26IJmg = ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 2);
							}
							LA17: ;
							{
								if (!!(((NI32)(f_1cZYtEmexm1RTlmNW9aLikg.dwfileattributes & ((NI32) 1024)) == ((NI32) 0)))) goto LA21;
								k_3L6up3asmYrsS0W9b26IJmg = (Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg)(k_3L6up3asmYrsS0W9b26IJmg + ((NI) 1));
							}
							LA21: ;
							{
								NimStringDesc* LOC27;
								if (!NIM_FALSE) goto LA25;
								LOC27 = (NimStringDesc*)0;
								LOC27 = HEX24_QjWkJEdnPpNzR7KF7dYIoQ(((NI16*) ((&f_1cZYtEmexm1RTlmNW9aLikg.cfilename[(((NI) 0))- 0]))));
								xx_dEAndDFRegsTFsbHpNqH9cg = nosextractFilename(LOC27);
							}
							goto LA23;
							LA25: ;
							{
								NimStringDesc* LOC29;
								NimStringDesc* LOC30;
								LOC29 = (NimStringDesc*)0;
								LOC29 = HEX24_QjWkJEdnPpNzR7KF7dYIoQ(((NI16*) ((&f_1cZYtEmexm1RTlmNW9aLikg.cfilename[(((NI) 0))- 0]))));
								LOC30 = (NimStringDesc*)0;
								LOC30 = nosextractFilename(LOC29);
								xx_dEAndDFRegsTFsbHpNqH9cg = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(dir0, LOC30);
							}
							LA23: ;
							kind_CgYWYOGBi9cm9cxet9aP24amQ = k_3L6up3asmYrsS0W9b26IJmg;
							path_PjxD5WVfFUdiLYTKKL9acYg = xx_dEAndDFRegsTFsbHpNqH9cg;
							switch (kind_CgYWYOGBi9cm9cxet9aP24amQ) {
							case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 0):
							case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 1):
							case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 3):
							{
								nosremoveFile(path_PjxD5WVfFUdiLYTKKL9acYg);
							}
							break;
							case ((Pathcomponent_9c1SIU9cO1wHcl09b703A9cDrg) 2):
							{
								nosremoveDir(path_PjxD5WVfFUdiLYTKKL9acYg);
							}
							break;
							}
						}
						LA13: ;
						{
							NI32 LOC35;
							LOC35 = (NI32)0;
							LOC35 = Dl_120437(h_JJQNr70NTJzS5UNyFdTpBw, (&f_1cZYtEmexm1RTlmNW9aLikg));
							if (!(LOC35 == ((NI32) 0))) goto LA36;
							goto LA8;
						}
						LA36: ;
					}
				} LA8: ;
				popSafePoint();
			}
			else {
				popSafePoint();
			}
			{
				Dl_120601(h_JJQNr70NTJzS5UNyFdTpBw);
			}
			if (T_yu6cxgKBBXbNsTkT9cyMd4g_19.status != 0) reraiseException();
		}
		LA5: ;
	}
	rawremovedir_UW75XKQJ2RK9bO3MFFoDxTw(dir0);
}

N_NIMCALL(void, nosmoveFile)(NimStringDesc* source0, NimStringDesc* dest0) {
	NI16* s0;
	NI16* d0;
	s0 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(source0);
	d0 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(dest0);
	{
		NI32 LOC3;
		NI32 LOC6;
		LOC3 = (NI32)0;
		LOC3 = Dl_120623(s0, d0);
		if (!(LOC3 == ((NI32) 0))) goto LA4;
		LOC6 = (NI32)0;
		LOC6 = oslasterror_6wyvsbJUteIgEY9cC5BVJZQ();
		raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC6, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
	}
	LA4: ;
}

N_NIMCALL(void, noscopyFile)(NimStringDesc* source0, NimStringDesc* dest0) {
	NI16* s0;
	NI16* d0;
	s0 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(source0);
	d0 = newwidecstring_kxipuF9cNh6r2grKDcLjFuw(dest0);
	{
		NI32 LOC3;
		NI32 LOC6;
		LOC3 = (NI32)0;
		LOC3 = Dl_120618(s0, d0, ((NI32) 0));
		if (!(LOC3 == ((NI32) 0))) goto LA4;
		LOC6 = (NI32)0;
		LOC6 = oslasterror_6wyvsbJUteIgEY9cC5BVJZQ();
		raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC6, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
	}
	LA4: ;
}

N_NIMCALL(time_t, nosgetLastModificationTime)(NimStringDesc* file0) {
	time_t result0;
	Win32finddata_aYwmSz9bIz0JHAL9ciwIrnhA f0;
	NI h0;
	NI64 LOC6;
	result0 = (time_t)0;
	memset((void*)(&f0), 0, sizeof(f0));
	h0 = findfirstfile_9cPKjuaUWDYlrzWunhDgNng(file0, (&f0));
	{
		NI32 LOC5;
		if (!(h0 == ((NI) -1))) goto LA3;
		LOC5 = (NI32)0;
		LOC5 = oslasterror_6wyvsbJUteIgEY9cC5BVJZQ();
		raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA(LOC5, ((NimStringDesc*) &T_yu6cxgKBBXbNsTkT9cyMd4g_4));
	}
	LA3: ;
	LOC6 = (NI64)0;
	LOC6 = rdfiletime_8xfVp1z4bc5fRCRgoEFhIQ(f0.ftlastwritetime);
	result0 = wintimetounixtime_Roh6mgu3pw5hYGgivhSNGw(LOC6);
	Dl_120601(h0);
	return result0;
}

N_NIMCALL(NIM_BOOL, nosfileNewer)(NimStringDesc* a0, NimStringDesc* b0) {
	NIM_BOOL result0;
	time_t LOC1;
	time_t LOC2;
	NI64 LOC3;
	result0 = (NIM_BOOL)0;
	LOC1 = (time_t)0;
	LOC1 = nosgetLastModificationTime(a0);
	LOC2 = (time_t)0;
	LOC2 = nosgetLastModificationTime(b0);
	LOC3 = (NI64)0;
	LOC3 = ntDiffTime(LOC1, LOC2);
	result0 = (IL64(0) < LOC3);
	return result0;
}

N_NIMCALL(void, nossleep)(NI milsecs0) {
	Dl_120831(((NI32) (milsecs0)));
}

N_NIMCALL(NimStringDesc*, expandtilde_bY3FvgrWj5mj9cB3I89cRWxg)(NimStringDesc* path0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	{
		NIM_BOOL LOC3;
		NIM_BOOL LOC4;
		NIM_BOOL LOC7;
		NimStringDesc* LOC11;
		NimStringDesc* LOC12;
		LOC3 = (NIM_BOOL)0;
		LOC4 = (NIM_BOOL)0;
		LOC4 = (((NI) 1) < (path0 ? path0->Sup.len : 0));
		if (!(LOC4)) goto LA5;
		LOC4 = ((NU8)(path0->data[((NI) 0)]) == (NU8)(126));
		LA5: ;
		LOC3 = LOC4;
		if (!(LOC3)) goto LA6;
		LOC7 = (NIM_BOOL)0;
		LOC7 = ((NU8)(path0->data[((NI) 1)]) == (NU8)(47));
		if (LOC7) goto LA8;
		LOC7 = ((NU8)(path0->data[((NI) 1)]) == (NU8)(92));
		LA8: ;
		LOC3 = LOC7;
		LA6: ;
		if (!LOC3) goto LA9;
		LOC11 = (NimStringDesc*)0;
		LOC11 = nosgetHomeDir();
		LOC12 = (NimStringDesc*)0;
		LOC12 = copyStr(path0, ((NI) 2));
		result0 = HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ(LOC11, LOC12);
	}
	goto LA1;
	LA9: ;
	{
		result0 = copyString(path0);
	}
	LA1: ;
	return result0;
}
NIM_EXTERNC N_NOINLINE(void, stdlib_osInit000)(void) {
nimRegisterGlobalMarker(T_yu6cxgKBBXbNsTkT9cyMd4g_2);
nimRegisterGlobalMarker(T_yu6cxgKBBXbNsTkT9cyMd4g_3);
}

NIM_EXTERNC N_NOINLINE(void, stdlib_osDatInit000)(void) {
NTI_sM4lkSb7zS6F7OVMvW9cffQ.size = sizeof(TY_sM4lkSb7zS6F7OVMvW9cffQ*);
NTI_sM4lkSb7zS6F7OVMvW9cffQ.kind = 24;
NTI_sM4lkSb7zS6F7OVMvW9cffQ.base = (&NTI_77mFvmsOLKik79ci2hXkHEg);
NTI_sM4lkSb7zS6F7OVMvW9cffQ.flags = 2;
NTI_sM4lkSb7zS6F7OVMvW9cffQ.marker = Marker_TY_sM4lkSb7zS6F7OVMvW9cffQ;
}

