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

#include "nimbase.h"
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
typedef struct TY130408 TY130408;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Cell48947 Cell48947;
typedef struct Cellseq48963 Cellseq48963;
typedef struct Gcheap51018 Gcheap51018;
typedef struct Gcstack51016 Gcstack51016;
typedef struct Cellset48959 Cellset48959;
typedef struct Pagedesc48955 Pagedesc48955;
typedef struct Memregion30890 Memregion30890;
typedef struct Smallchunk30842 Smallchunk30842;
typedef struct Llchunk30884 Llchunk30884;
typedef struct Bigchunk30844 Bigchunk30844;
typedef struct Intset30817 Intset30817;
typedef struct Trunk30813 Trunk30813;
typedef struct Avlnode30888 Avlnode30888;
typedef struct Gcstat51014 Gcstat51014;
typedef struct Tlinkedlist140028 Tlinkedlist140028;
typedef struct Tlistentry140022 Tlistentry140022;
typedef struct Tinfoos173049 Tinfoos173049;
typedef struct Tinfocpu173483 Tinfocpu173483;
typedef struct Tinfocc202011 Tinfocc202011;
typedef struct TY123809 TY123809;
typedef struct Ropeobj175009 Ropeobj175009;
typedef struct Tstrentry140024 Tstrentry140024;
typedef struct TNimObject TNimObject;
typedef struct TY204038 TY204038;
typedef struct Processobj155404 Processobj155404;
typedef struct Streamobj149427 Streamobj149427;
typedef struct Basechunk30840 Basechunk30840;
typedef struct Freecell30832 Freecell30832;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef N_NIMCALL_PTR(void, TY3889) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3894) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3889 marker;
TY3894 deepcopy;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  Cell48947  {
NI refcount;
TNimType* typ;
};
struct  Cellseq48963  {
NI len;
NI cap;
Cell48947** d;
};
struct  Cellset48959  {
NI counter;
NI max;
Pagedesc48955* head;
Pagedesc48955** data;
};
typedef Smallchunk30842* TY30905[512];
typedef Trunk30813* Trunkbuckets30815[256];
struct  Intset30817  {
Trunkbuckets30815 data;
};
struct  Memregion30890  {
NI minlargeobj;
NI maxlargeobj;
TY30905 freesmallchunks;
Llchunk30884* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk30844* freechunkslist;
Intset30817 chunkstarts;
Avlnode30888* root;
Avlnode30888* deleted;
Avlnode30888* last;
Avlnode30888* freeavlnodes;
};
struct  Gcstat51014  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Gcheap51018  {
Gcstack51016* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq48963 zct;
Cellseq48963 decstack;
Cellset48959 cycleroots;
Cellseq48963 tempstack;
NI recgclock;
Memregion30890 region;
Gcstat51014 stat;
};
struct  Tlinkedlist140028  {
Tlistentry140022* head;
Tlistentry140022* tail;
NI counter;
};
typedef NU8 Sha1digest200009[20];
struct Tinfoos173049 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
NimStringDesc* Field3;
NimStringDesc* Field4;
NimStringDesc* Field5;
NimStringDesc* Field6;
NimStringDesc* Field7;
NimStringDesc* Field8;
NimStringDesc* Field9;
NimStringDesc* Field10;
NimStringDesc* Field11;
NU8 Field12;
};
typedef Tinfoos173049 TY173084[24];
struct Tinfocpu173483 {
NimStringDesc* Field0;
NI Field1;
NU8 Field2;
NI Field3;
NI Field4;
};
typedef Tinfocpu173483 TY173514[18];
struct Tinfocc202011 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
NimStringDesc* Field3;
NimStringDesc* Field4;
NimStringDesc* Field5;
NimStringDesc* Field6;
NimStringDesc* Field7;
NimStringDesc* Field8;
NimStringDesc* Field9;
NimStringDesc* Field10;
NimStringDesc* Field11;
NimStringDesc* Field12;
NimStringDesc* Field13;
NimStringDesc* Field14;
NimStringDesc* Field15;
NimStringDesc* Field16;
NimStringDesc* Field17;
NimStringDesc* Field18;
NimStringDesc* Field19;
NU8 Field20;
};
typedef Tinfocc202011 TY202481[13];
struct TY123809 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
typedef NimStringDesc* TY192306[2];
typedef NimStringDesc* TY211072[14];
typedef NimStringDesc* TY191421[1];
typedef Ropeobj175009* TY175572[1];
struct  TNimObject  {
TNimType* m_type;
};
struct  Tlistentry140022  {
  TNimObject Sup;
Tlistentry140022* prev;
Tlistentry140022* next;
};
struct  Tstrentry140024  {
  Tlistentry140022 Sup;
NimStringDesc* data;
};
struct  TY204038  {
NI HEX3Astate;
TY130408* prettycmds203874;
TY130408* cmds203857;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (NI idx, void* ClEnv);
void* ClEnv;
} TY203876;
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (NI idx, Processobj155404* p, void* ClEnv);
void* ClEnv;
} TY203882;
typedef NU8 TY212407[32];
typedef NimStringDesc* TY193829[4];
struct  Gcstack51016  {
Gcstack51016* prev;
Gcstack51016* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY30821[16];
struct  Pagedesc48955  {
Pagedesc48955* next;
NI key;
TY30821 bits;
};
struct  Basechunk30840  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk30842  {
  Basechunk30840 Sup;
Smallchunk30842* next;
Smallchunk30842* prev;
Freecell30832* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk30884  {
NI size;
NI acc;
Llchunk30884* next;
};
struct  Bigchunk30844  {
  Basechunk30840 Sup;
Bigchunk30844* next;
Bigchunk30844* prev;
NI align;
NF data;
};
struct  Trunk30813  {
Trunk30813* next;
NI key;
TY30821 bits;
};
typedef Avlnode30888* TY30895[2];
struct  Avlnode30888  {
TY30895 link;
NI key;
NI upperbound;
NI level;
};
struct  Ropeobj175009  {
  TNimObject Sup;
Ropeobj175009* left;
Ropeobj175009* right;
NI length;
NimStringDesc* data;
};
struct  Processobj155404  {
  TNimObject Sup;
int inhandle;
int outhandle;
int errhandle;
Streamobj149427* instream;
Streamobj149427* outstream;
Streamobj149427* errstream;
pid_t id;
int exitcode;
NU8 options;
};
typedef N_NIMCALL_PTR(void, TY149428) (Streamobj149427* s);
typedef N_NIMCALL_PTR(NIM_BOOL, TY149432) (Streamobj149427* s);
typedef N_NIMCALL_PTR(void, TY149436) (Streamobj149427* s, NI pos);
typedef N_NIMCALL_PTR(NI, TY149441) (Streamobj149427* s);
typedef N_NIMCALL_PTR(NI, TY149445) (Streamobj149427* s, void* buffer, NI buflen);
typedef N_NIMCALL_PTR(NI, TY149451) (Streamobj149427* s, void* buffer, NI buflen);
typedef N_NIMCALL_PTR(void, TY149457) (Streamobj149427* s, void* buffer, NI buflen);
typedef N_NIMCALL_PTR(void, TY149463) (Streamobj149427* s);
struct  Streamobj149427  {
  TNimObject Sup;
TY149428 closeimpl;
TY149432 atendimpl;
TY149436 setpositionimpl;
TY149441 getpositionimpl;
TY149445 readdataimpl;
TY149451 peekdataimpl;
TY149457 writedataimpl;
TY149463 flushimpl;
};
struct  Freecell30832  {
Freecell30832* next;
NI zerofield;
};
struct TY130408 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
static N_INLINE(Cell48947*, usrtocell_52646)(void* usr);
static N_INLINE(void, rtladdzct_54204)(Cell48947* c);
N_NOINLINE(void, addzct_52617)(Cellseq48963* s, Cell48947* c);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_NIMCALL(NIM_BOOL, externalfilechanged_203659)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, togeneratedfile_167158)(NimStringDesc* path, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, withpackagename_167144)(NimStringDesc* path);
N_NIMCALL(void, footprint_203649)(NimStringDesc* filename, Sha1digest200009* Result);
N_NIMCALL(void, securehash_200023)(NimStringDesc* str, Sha1digest200009* Result);
N_NIMCALL(NimStringDesc*, HEX24_200044)(Sha1digest200009 self);
N_NIMCALL(void, securehashfile_200034)(NimStringDesc* filename, Sha1digest200009* Result);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, getcompilecfilecmd_203536)(NimStringDesc* cfilename, NIM_BOOL isexternal);
N_NIMCALL(NIM_BOOL, nsuEndsWith)(NimStringDesc* s, NimStringDesc* suffix);
N_NIMCALL(NimStringDesc*, getconfigvar_166335)(NimStringDesc* key);
N_NIMCALL(NU8, nametocc_202590)(NimStringDesc* name);
N_NIMCALL(NI, nsuCmpIgnoreStyle)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(void, rawmessage_193636)(NU16 msg, NimStringDesc* arg);
N_NIMCALL(NimStringDesc*, cfilespecificoptions_203287)(NimStringDesc* cfilename);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY123809* Result);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NIM_BOOL, existsconfigvar_166325)(NimStringDesc* key);
N_NIMCALL(void, addopt_203045)(NimStringDesc** dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, getdebug_203208)(NU8 c);
N_NIMCALL(NimStringDesc*, getconfigvar_202846)(NU8 c, NimStringDesc* suffix);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, getoptspeed_203198)(NU8 c);
N_NIMCALL(NimStringDesc*, getoptsize_203218)(NU8 c);
N_NIMCALL(NimStringDesc*, getcompilerexe_203498)(NU8 compiler);
static N_INLINE(NIM_BOOL, needsexeext_203461)(void);
N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename, NimStringDesc* ext);
static N_INLINE(NIM_BOOL, noabsolutepaths_203228)(void);
N_NIMCALL(NimStringDesc*, nospquoteShell)(NimStringDesc* s);
N_NIMCALL(void, add_203275)(NimStringDesc** s, NimStringDesc** many, NI manyLen0);
N_NIMCALL(NimStringDesc*, nsuJoin)(NimStringDesc** a, NI aLen0);
N_NIMCALL(NimStringDesc*, nosjoinPath)(NimStringDesc* head, NimStringDesc* tail);
N_NIMCALL(NimStringDesc*, nosextractFilename)(NimStringDesc* path);
N_NIMCALL(NimStringDesc*, toobjfile_203123)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, completecfilepath_203112)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(NimStringDesc*, completegeneratedfilepath_167201)(NimStringDesc* f, NIM_BOOL createsubdir);
N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
N_NIMCALL(NimStringDesc*, getprefixdir_166366)(void);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(void, nsuAddf)(NimStringDesc** s, NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
N_NIMCALL(NIM_BOOL, open_16803)(FILE** f, NimStringDesc* filename, NU8 mode, NI bufsize);
N_NIMCALL(void, parsesecurehash_200107)(NimStringDesc* hash, Sha1digest200009* Result);
N_NIMCALL(NimStringDesc*, readline_16916)(FILE* f);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_200152)(Sha1digest200009 a, Sha1digest200009 b);
static N_INLINE(void, writeline_167405)(FILE* f, NimStringDesc** x, NI xLen0);
N_NIMCALL(void, write_16895)(FILE* f, NimStringDesc* s);
N_NIMCALL(void, appendstr_140268)(Tlinkedlist140028* list, NimStringDesc* data);
N_NIMCALL(void, prependstr_140419)(Tlinkedlist140028* list, NimStringDesc* data);
N_NIMCALL(NI, nsuFindStr)(NimStringDesc* s, NimStringDesc* sub, NI start);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
N_NIMCALL(void, undefsymbol_198022)(NimStringDesc* symbol);
N_NIMCALL(void, definesymbol_198013)(NimStringDesc* symbol);
N_NIMCALL(void, addcompileoption_203066)(NimStringDesc* option);
N_NIMCALL(Ropeobj175009*, rope_175322)(NimStringDesc* s);
N_NIMCALL(void, add_175534)(Ropeobj175009** a, Ropeobj175009* b);
N_NIMCALL(Ropeobj175009*, genmappingfiles_204073)(Tlinkedlist140028 list);
N_NIMCALL(void, addf_176635)(Ropeobj175009** c, NimStringDesc* frmt, Ropeobj175009** args, NI argsLen0);
N_NIMCALL(void, add_175545)(Ropeobj175009** a, NimStringDesc* b);
N_NIMCALL(NimStringDesc*, nsuEscape)(NimStringDesc* s, NimStringDesc* prefix, NimStringDesc* suffix);
N_NIMCALL(NimStringDesc*, getcompileoptions_203339)(void);
N_NIMCALL(NimStringDesc*, getlinkoptions_203348)(void);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(void, writerope_176106)(Ropeobj175009* head, NimStringDesc* filename, NIM_BOOL usewarning);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP4591)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_CLOSURE(void, HEX3Aanonymous_203875)(NI idx, void* ClEnv);
N_CLOSURE(void, HEX3Aanonymous_203881)(NI idx, Processobj155404* p, void* ClEnv);
N_NIMCALL(NI, peekexitcode_155725)(Processobj155404* p);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(NimStringDesc*, nsuStrip)(NimStringDesc* s, NIM_BOOL leading, NIM_BOOL trailing, TY212407 chars);
N_NIMCALL(NimStringDesc*, readall_149592)(Streamobj149427* s);
N_NIMCALL(Streamobj149427*, nospoutputStream)(Processobj155404* p);
N_NIMCALL(void, compilecfile_203719)(Tlinkedlist140028 list, Ropeobj175009** script, TY130408** cmds, TY130408** prettycmds, NIM_BOOL isexternal);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(NI, nospcountProcessors)(void);
N_NIMCALL(NI, execwithecho_203164)(NimStringDesc* cmd, NU16 msg);
N_NIMCALL(NI, nospexecCmd)(NimStringDesc* command);
N_NIMCALL(NI, nospexecProcesses)(NimStringDesc** cmds, NI cmdsLen0, NU8 options_155793, NI n, TY203876 beforerunevent, TY203882 afterrunevent);
static N_INLINE(NimStringDesc*, libnametmpl_202557)(void);
N_NIMCALL(NimStringDesc*, getlinkerexe_203517)(NU8 compiler);
N_NIMCALL(NimStringDesc*, expandtilde_135204)(NimStringDesc* path);
N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path);
N_NIMCALL(void, execexternalprogram_203175)(NimStringDesc* cmd, NU16 msg);
N_NIMCALL(void, generatescript_203185)(NimStringDesc* projectfile, Ropeobj175009* script);
N_NIMCALL(NimStringDesc*, HEX2F_123481)(NimStringDesc* head, NimStringDesc* tail);
N_NIMCALL(void, initlinkedlist_140043)(Tlinkedlist140028* list);
STRING_LITERAL(TMP518, "", 0);
STRING_LITERAL(TMP1765, "sha1", 4);
extern NIM_CONST TY173084 Os_173070;
extern NIM_CONST TY173514 Cpu_173500;
STRING_LITERAL(TMP1767, "gcc", 3);
STRING_LITERAL(TMP1768, "o", 1);
STRING_LITERAL(TMP1769, " -O3 -ffast-math ", 17);
STRING_LITERAL(TMP1770, " -Os -ffast-math ", 17);
STRING_LITERAL(TMP1771, "g++", 3);
STRING_LITERAL(TMP1772, "-c $options $include -o $objfile $file", 38);
STRING_LITERAL(TMP1773, " -mwindows", 10);
STRING_LITERAL(TMP1774, " -shared", 8);
STRING_LITERAL(TMP1775, "ar rcs $libfile $objfiles", 25);
STRING_LITERAL(TMP1776, "$buildgui $builddll -o $exefile $objfiles $options", 50);
STRING_LITERAL(TMP1777, " -I", 3);
STRING_LITERAL(TMP1778, " -L", 3);
STRING_LITERAL(TMP1779, " -l$1", 5);
STRING_LITERAL(TMP1780, "-fPIC", 5);
STRING_LITERAL(TMP1781, "asm($1);$n", 10);
STRING_LITERAL(TMP1782, "$1 $3 $2 ", 9);
STRING_LITERAL(TMP1783, "__attribute__((__packed__))", 27);
STRING_LITERAL(TMP1784, "llvm_gcc", 8);
STRING_LITERAL(TMP1785, "llvm-gcc", 8);
STRING_LITERAL(TMP1786, "llvm-g++", 8);
STRING_LITERAL(TMP1787, "llvm-ar rcs $libfile $objfiles", 30);
STRING_LITERAL(TMP1788, "clang", 5);
STRING_LITERAL(TMP1789, "clang++", 7);
STRING_LITERAL(TMP1790, "lcc", 3);
STRING_LITERAL(TMP1791, "obj", 3);
STRING_LITERAL(TMP1792, " -O -p6 ", 8);
STRING_LITERAL(TMP1793, "$options $include -Fo$objfile $file", 35);
STRING_LITERAL(TMP1794, " -subsystem windows", 19);
STRING_LITERAL(TMP1795, " -dll", 5);
STRING_LITERAL(TMP1796, "lcclnk", 6);
STRING_LITERAL(TMP1797, "$options $buildgui $builddll -O $exefile $objfiles", 50);
STRING_LITERAL(TMP1798, " -g5 ", 5);
STRING_LITERAL(TMP1799, "_asm{$n$1$n}$n", 14);
STRING_LITERAL(TMP1800, "$1 $2", 5);
STRING_LITERAL(TMP1801, "bcc", 3);
STRING_LITERAL(TMP1802, " -O2 -6 ", 8);
STRING_LITERAL(TMP1803, " -O1 -6 ", 8);
STRING_LITERAL(TMP1804, "bcc32", 5);
STRING_LITERAL(TMP1805, "-c $options $include -o$objfile $file", 37);
STRING_LITERAL(TMP1806, " -tW", 4);
STRING_LITERAL(TMP1807, " -tWD", 5);
STRING_LITERAL(TMP1808, "$options $buildgui $builddll -e$exefile $objfiles", 49);
STRING_LITERAL(TMP1809, "__asm{$n$1$n}$n", 15);
STRING_LITERAL(TMP1810, "dmc", 3);
STRING_LITERAL(TMP1811, " -ff -o -6 ", 11);
STRING_LITERAL(TMP1812, " -L/exet:nt/su:windows", 22);
STRING_LITERAL(TMP1813, " -WD", 4);
STRING_LITERAL(TMP1814, "$options $buildgui $builddll -o$exefile $objfiles", 49);
STRING_LITERAL(TMP1815, " -g ", 4);
STRING_LITERAL(TMP1816, "$3$n$1 $2", 9);
STRING_LITERAL(TMP1817, "#pragma pack(1)", 15);
STRING_LITERAL(TMP1818, "wcc", 3);
STRING_LITERAL(TMP1819, " -ox -on -6 -d0 -fp6 -zW ", 25);
STRING_LITERAL(TMP1820, "wcl386", 6);
STRING_LITERAL(TMP1821, "-c $options $include -fo=$objfile $file", 39);
STRING_LITERAL(TMP1822, " -bw", 4);
STRING_LITERAL(TMP1823, " -bd", 4);
STRING_LITERAL(TMP1824, "$options $buildgui $builddll -fe=$exefile $objfiles ", 52);
STRING_LITERAL(TMP1825, " -i=", 4);
STRING_LITERAL(TMP1826, " -d2 ", 5);
STRING_LITERAL(TMP1827, "vcc", 3);
STRING_LITERAL(TMP1828, " /Ogityb2 /G7 /arch:SSE2 ", 25);
STRING_LITERAL(TMP1829, " /O1 /G7 ", 9);
STRING_LITERAL(TMP1830, "cl", 2);
STRING_LITERAL(TMP1831, "/c $options $include /Fo$objfile $file", 38);
STRING_LITERAL(TMP1832, " /link /SUBSYSTEM:WINDOWS ", 26);
STRING_LITERAL(TMP1833, " /LD", 4);
STRING_LITERAL(TMP1834, "lib /OUT:$libfile $objfiles", 27);
STRING_LITERAL(TMP1835, "$options $builddll /Fe$exefile $objfiles $buildgui", 50);
STRING_LITERAL(TMP1836, " /I", 3);
STRING_LITERAL(TMP1837, " /LIBPATH:", 10);
STRING_LITERAL(TMP1838, " $1.lib", 7);
STRING_LITERAL(TMP1839, " /RTC1 /Z7 ", 11);
STRING_LITERAL(TMP1840, "tcc", 3);
STRING_LITERAL(TMP1841, "UNAVAILABLE!", 12);
STRING_LITERAL(TMP1842, "-o $exefile $options $buildgui $builddll $objfiles", 50);
STRING_LITERAL(TMP1843, "pcc", 3);
STRING_LITERAL(TMP1844, " -Ox ", 5);
STRING_LITERAL(TMP1845, " -Os ", 5);
STRING_LITERAL(TMP1846, "cc", 2);
STRING_LITERAL(TMP1847, "-c $options $include -Fo$objfile $file", 38);
STRING_LITERAL(TMP1848, " -SUBSYSTEM:WINDOWS", 19);
STRING_LITERAL(TMP1849, " -DLL", 5);
STRING_LITERAL(TMP1850, "$options $buildgui $builddll -OUT:$exefile $objfiles", 52);
STRING_LITERAL(TMP1851, " -Zi ", 5);
STRING_LITERAL(TMP1852, "ucc", 3);
STRING_LITERAL(TMP1853, " -O3 ", 5);
STRING_LITERAL(TMP1854, " -O1 ", 5);
STRING_LITERAL(TMP1855, " -shared ", 9);
STRING_LITERAL(TMP1856, "-o $exefile $buildgui $builddll $objfiles $options", 50);
STRING_LITERAL(TMP1857, "icl", 3);
STRING_LITERAL(TMP1858, "fasm", 4);
STRING_LITERAL(TMP1859, "$file $objfile", 14);
NIM_CONST TY202481 Cc_202467 = {{((NimStringDesc*) &TMP1767),
((NimStringDesc*) &TMP1768),
((NimStringDesc*) &TMP1769),
((NimStringDesc*) &TMP1770),
((NimStringDesc*) &TMP1767),
((NimStringDesc*) &TMP1771),
((NimStringDesc*) &TMP1772),
((NimStringDesc*) &TMP1773),
((NimStringDesc*) &TMP1774),
((NimStringDesc*) &TMP1775),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1776),
((NimStringDesc*) &TMP1777),
((NimStringDesc*) &TMP1778),
((NimStringDesc*) &TMP1779),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1780),
((NimStringDesc*) &TMP1781),
((NimStringDesc*) &TMP1782),
((NimStringDesc*) &TMP1783),
183}
,
{((NimStringDesc*) &TMP1784),
((NimStringDesc*) &TMP1768),
((NimStringDesc*) &TMP1769),
((NimStringDesc*) &TMP1770),
((NimStringDesc*) &TMP1785),
((NimStringDesc*) &TMP1786),
((NimStringDesc*) &TMP1772),
((NimStringDesc*) &TMP1773),
((NimStringDesc*) &TMP1774),
((NimStringDesc*) &TMP1787),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1776),
((NimStringDesc*) &TMP1777),
((NimStringDesc*) &TMP1778),
((NimStringDesc*) &TMP1779),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1780),
((NimStringDesc*) &TMP1781),
((NimStringDesc*) &TMP1782),
((NimStringDesc*) &TMP1783),
183}
,
{((NimStringDesc*) &TMP1788),
((NimStringDesc*) &TMP1768),
((NimStringDesc*) &TMP1769),
((NimStringDesc*) &TMP1770),
((NimStringDesc*) &TMP1788),
((NimStringDesc*) &TMP1789),
((NimStringDesc*) &TMP1772),
((NimStringDesc*) &TMP1773),
((NimStringDesc*) &TMP1774),
((NimStringDesc*) &TMP1787),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1776),
((NimStringDesc*) &TMP1777),
((NimStringDesc*) &TMP1778),
((NimStringDesc*) &TMP1779),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1780),
((NimStringDesc*) &TMP1781),
((NimStringDesc*) &TMP1782),
((NimStringDesc*) &TMP1783),
183}
,
{((NimStringDesc*) &TMP1790),
((NimStringDesc*) &TMP1791),
((NimStringDesc*) &TMP1792),
((NimStringDesc*) &TMP1792),
((NimStringDesc*) &TMP1790),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1793),
((NimStringDesc*) &TMP1794),
((NimStringDesc*) &TMP1795),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1796),
((NimStringDesc*) &TMP1797),
((NimStringDesc*) &TMP1777),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1798),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1799),
((NimStringDesc*) &TMP1800),
((NimStringDesc*) &TMP518),
0}
,
{((NimStringDesc*) &TMP1801),
((NimStringDesc*) &TMP1791),
((NimStringDesc*) &TMP1802),
((NimStringDesc*) &TMP1803),
((NimStringDesc*) &TMP1804),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1805),
((NimStringDesc*) &TMP1806),
((NimStringDesc*) &TMP1807),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1804),
((NimStringDesc*) &TMP1808),
((NimStringDesc*) &TMP1777),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1809),
((NimStringDesc*) &TMP1800),
((NimStringDesc*) &TMP518),
4}
,
{((NimStringDesc*) &TMP1810),
((NimStringDesc*) &TMP1791),
((NimStringDesc*) &TMP1811),
((NimStringDesc*) &TMP1811),
((NimStringDesc*) &TMP1810),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1805),
((NimStringDesc*) &TMP1812),
((NimStringDesc*) &TMP1813),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1810),
((NimStringDesc*) &TMP1814),
((NimStringDesc*) &TMP1777),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1815),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1809),
((NimStringDesc*) &TMP1816),
((NimStringDesc*) &TMP1817),
4}
,
{((NimStringDesc*) &TMP1818),
((NimStringDesc*) &TMP1791),
((NimStringDesc*) &TMP1819),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1820),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1821),
((NimStringDesc*) &TMP1822),
((NimStringDesc*) &TMP1823),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1820),
((NimStringDesc*) &TMP1824),
((NimStringDesc*) &TMP1825),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1826),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1809),
((NimStringDesc*) &TMP1800),
((NimStringDesc*) &TMP518),
4}
,
{((NimStringDesc*) &TMP1827),
((NimStringDesc*) &TMP1791),
((NimStringDesc*) &TMP1828),
((NimStringDesc*) &TMP1829),
((NimStringDesc*) &TMP1830),
((NimStringDesc*) &TMP1830),
((NimStringDesc*) &TMP1831),
((NimStringDesc*) &TMP1832),
((NimStringDesc*) &TMP1833),
((NimStringDesc*) &TMP1834),
((NimStringDesc*) &TMP1830),
((NimStringDesc*) &TMP1835),
((NimStringDesc*) &TMP1836),
((NimStringDesc*) &TMP1837),
((NimStringDesc*) &TMP1838),
((NimStringDesc*) &TMP1839),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1809),
((NimStringDesc*) &TMP1816),
((NimStringDesc*) &TMP1817),
76}
,
{((NimStringDesc*) &TMP1840),
((NimStringDesc*) &TMP1768),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1840),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1772),
((NimStringDesc*) &TMP1841),
((NimStringDesc*) &TMP1774),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1840),
((NimStringDesc*) &TMP1842),
((NimStringDesc*) &TMP1777),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1815),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1809),
((NimStringDesc*) &TMP1800),
((NimStringDesc*) &TMP518),
3}
,
{((NimStringDesc*) &TMP1843),
((NimStringDesc*) &TMP1791),
((NimStringDesc*) &TMP1844),
((NimStringDesc*) &TMP1845),
((NimStringDesc*) &TMP1846),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1847),
((NimStringDesc*) &TMP1848),
((NimStringDesc*) &TMP1849),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1846),
((NimStringDesc*) &TMP1850),
((NimStringDesc*) &TMP1777),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1851),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1809),
((NimStringDesc*) &TMP1800),
((NimStringDesc*) &TMP518),
0}
,
{((NimStringDesc*) &TMP1852),
((NimStringDesc*) &TMP1768),
((NimStringDesc*) &TMP1853),
((NimStringDesc*) &TMP1854),
((NimStringDesc*) &TMP1846),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1772),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1855),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1846),
((NimStringDesc*) &TMP1856),
((NimStringDesc*) &TMP1777),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1809),
((NimStringDesc*) &TMP1800),
((NimStringDesc*) &TMP518),
0}
,
{((NimStringDesc*) &TMP1857),
((NimStringDesc*) &TMP1768),
((NimStringDesc*) &TMP1769),
((NimStringDesc*) &TMP1770),
((NimStringDesc*) &TMP1857),
((NimStringDesc*) &TMP1771),
((NimStringDesc*) &TMP1772),
((NimStringDesc*) &TMP1773),
((NimStringDesc*) &TMP1774),
((NimStringDesc*) &TMP1775),
((NimStringDesc*) &TMP1857),
((NimStringDesc*) &TMP1776),
((NimStringDesc*) &TMP1777),
((NimStringDesc*) &TMP1778),
((NimStringDesc*) &TMP1779),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1780),
((NimStringDesc*) &TMP1781),
((NimStringDesc*) &TMP1782),
((NimStringDesc*) &TMP1783),
183}
,
{((NimStringDesc*) &TMP1858),
((NimStringDesc*) &TMP1768),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP1858),
((NimStringDesc*) &TMP1858),
((NimStringDesc*) &TMP1859),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
((NimStringDesc*) &TMP518),
0}
}
;
STRING_LITERAL(TMP1860, ".asm", 4);
STRING_LITERAL(TMP1861, "assembler", 9);
STRING_LITERAL(TMP1862, ".debug", 6);
STRING_LITERAL(TMP1863, " ", 1);
STRING_LITERAL(TMP1864, ".cpp", 4);
STRING_LITERAL(TMP1865, ".objc", 5);
STRING_LITERAL(TMP1866, ".js", 3);
STRING_LITERAL(TMP1867, ".options.debug", 14);
STRING_LITERAL(TMP1868, ".speed", 6);
STRING_LITERAL(TMP1869, ".options.speed", 14);
STRING_LITERAL(TMP1870, ".size", 5);
STRING_LITERAL(TMP1871, ".options.size", 13);
STRING_LITERAL(TMP1872, ".always", 7);
STRING_LITERAL(TMP1873, ".exe", 4);
STRING_LITERAL(TMP1874, "exe", 3);
STRING_LITERAL(TMP1879, "file", 4);
STRING_LITERAL(TMP1880, "objfile", 7);
STRING_LITERAL(TMP1881, "options", 7);
STRING_LITERAL(TMP1882, "include", 7);
STRING_LITERAL(TMP1883, "nim", 3);
STRING_LITERAL(TMP1884, "lib", 3);
STRING_LITERAL(TMP1886, "\012", 1);
STRING_LITERAL(TMP1982, ".options.always", 15);
STRING_LITERAL(TMP1983, ".path", 5);
STRING_LITERAL(TMP4576, "[C_Files]\012", 10);
STRING_LITERAL(TMP4577, "--file:r\"$1\"$N", 14);
STRING_LITERAL(TMP4578, "\012[C_Compiler]\012Flags=", 20);
STRING_LITERAL(TMP4579, "__dummy__", 9);
STRING_LITERAL(TMP4580, "\"", 1);
STRING_LITERAL(TMP4581, "\012[Linker]\012Flags=", 16);
STRING_LITERAL(TMP4582, ".options.linker", 15);
STRING_LITERAL(TMP4583, "\012[Environment]\012libpath=", 23);
STRING_LITERAL(TMP4584, "\012[Symbols]$n$1", 14);
STRING_LITERAL(TMP4585, "mapping.txt", 11);
STRING_LITERAL(TMP4592, "execution of an external compiler program \'", 43);
STRING_LITERAL(TMP4593, "\' failed with exit code: ", 25);
STRING_LITERAL(TMP4594, "\012\012", 2);
static NIM_CONST TY212407 TMP4595 = {
0x00, 0x3E, 0x00, 0x00, 0x01, 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, 0x00}
;
STRING_LITERAL(TMP4596, "CC: ", 4);
static NIM_CONST TY203876 TMP4606 = {NIM_NIL,NIM_NIL};
STRING_LITERAL(TMP4607, "libfile", 7);
STRING_LITERAL(TMP4608, "$1.lib", 6);
STRING_LITERAL(TMP4609, "lib$1.a", 7);
STRING_LITERAL(TMP4610, "objfiles", 8);
STRING_LITERAL(TMP4611, ".linkerexe", 10);
STRING_LITERAL(TMP4612, "builddll", 8);
STRING_LITERAL(TMP4613, "buildgui", 8);
STRING_LITERAL(TMP4614, "exefile", 7);
STRING_LITERAL(TMP4615, "compile_", 8);
NU8 ccompiler_202488;
NU8 cassembler_202489;
NIM_BOOL gmixedmode_202490;
TY130408* cincludes_202508;
extern TNimType NTI130408; /* seq[string] */
extern Gcheap51018 gch_51059;
TY130408* clibs_202526;
TY130408* clinkedlibs_202544;
Tlinkedlist140028 tolink_202575;
Tlinkedlist140028 tocompile_202576;
Tlinkedlist140028 externaltocompile_202577;
NimStringDesc* linkoptions_202578;
NimStringDesc* compileoptions_202579;
NimStringDesc* ccompilerpath_202580;
NI filecounter_203270;
extern NU32 gglobaloptions_166132;
extern NU8 gcmd_166134;
extern NU8 targetos_173630;
extern NU8 targetcpu_173628;
extern NU8 hostos_173631;
extern NU8 hostcpu_173629;
extern NU32 goptions_166130;
extern NimStringDesc* libpath_166233;
extern TNimType NTI200009; /* Sha1Digest */
extern NimStringDesc* gprojectpath_166235;
TNimType NTI204038; /* object */
extern TNimType NTI345033; /* range -1..0(int) */
TNimType NTI204069; /* ref object */
extern NimStringDesc* tnl_173654;
extern NI gnumberofprocessors_166142;
extern NI gverbosity_166141;
extern NimStringDesc* gprojectname_166234;
extern NimStringDesc* outfile_166138;

static N_INLINE(Cell48947*, usrtocell_52646)(void* usr) {
	Cell48947* result;
	result = 0;
	result = ((Cell48947*) ((NI)((NU32)(((NI) (usr))) - (NU32)(((NI)sizeof(Cell48947))))));
	return result;
}

static N_INLINE(void, rtladdzct_54204)(Cell48947* c) {
	addzct_52617((&gch_51059.zct), c);
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	Cell48947* c;
	c = usrtocell_52646(p);
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_54204(c);
	}
	LA3: ;
}

static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
	memcpy(((NCSTRING) ((&(*dest).data[((*dest).Sup.len)- 0]))), ((NCSTRING) ((*src).data)), (NI)((*src).Sup.len + ((NI) 1)));
	(*dest).Sup.len += (*src).Sup.len;
}

N_NIMCALL(NU8, nametocc_202590)(NimStringDesc* name) {
	NU8 result;
{	result = 0;
	{
		NU8 i_202823;
		NI res_202828;
		i_202823 = 0;
		res_202828 = ((NI) 1);
		{
			while (1) {
				if (!(res_202828 <= ((NI) 13))) goto LA3;
				i_202823 = ((NU8) (res_202828));
				{
					NI LOC6;
					LOC6 = 0;
					LOC6 = nsuCmpIgnoreStyle(name, Cc_202467[(i_202823)- 1].Field0);
					if (!(LOC6 == ((NI) 0))) goto LA7;
					result = i_202823;
					goto BeforeRet;
				}
				LA7: ;
				res_202828 += ((NI) 1);
			} LA3: ;
		}
	}
	result = ((NU8) 0);
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, addopt_203045)(NimStringDesc** dest, NimStringDesc* src) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = (((*dest) ? (*dest)->Sup.len : 0) == ((NI) 0));
		if (LOC3) goto LA4;
		LOC3 = !(((NU8)((*dest)->data[(NI)(((*dest) ? (*dest)->Sup.len : 0) - ((NI) 1))]) == (NU8)(32)));
		LA4: ;
		if (!LOC3) goto LA5;
		(*dest) = resizeString((*dest), 1);
appendString((*dest), ((NimStringDesc*) &TMP1863));
	}
	LA5: ;
	(*dest) = resizeString((*dest), src->Sup.len + 0);
appendString((*dest), src);
}

static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c) {
	(*dest).data[((*dest).Sup.len)- 0] = c;
	(*dest).data[((NI)((*dest).Sup.len + ((NI) 1)))- 0] = 0;
	(*dest).Sup.len += ((NI) 1);
}

N_NIMCALL(NimStringDesc*, getconfigvar_202846)(NU8 c, NimStringDesc* suffix) {
	NimStringDesc* result;
	NimStringDesc* fullsuffix;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!(gcmd_166134 == ((NU8) 2))) goto LA3;
		LOC5 = 0;
		LOC5 = rawNewString(suffix->Sup.len + 4);
appendString(LOC5, ((NimStringDesc*) &TMP1864));
appendString(LOC5, suffix);
		fullsuffix = LOC5;
	}
	goto LA1;
	LA3: ;
	{
		NimStringDesc* LOC9;
		if (!(gcmd_166134 == ((NU8) 3))) goto LA7;
		LOC9 = 0;
		LOC9 = rawNewString(suffix->Sup.len + 5);
appendString(LOC9, ((NimStringDesc*) &TMP1865));
appendString(LOC9, suffix);
		fullsuffix = LOC9;
	}
	goto LA1;
	LA7: ;
	{
		NimStringDesc* LOC13;
		if (!(gcmd_166134 == ((NU8) 4))) goto LA11;
		LOC13 = 0;
		LOC13 = rawNewString(suffix->Sup.len + 3);
appendString(LOC13, ((NimStringDesc*) &TMP1866));
appendString(LOC13, suffix);
		fullsuffix = LOC13;
	}
	goto LA1;
	LA11: ;
	{
		fullsuffix = suffix;
	}
	LA1: ;
	{
		NIM_BOOL LOC17;
		NIM_BOOL LOC18;
		NimStringDesc* fullccname;
		NimStringDesc* LOC23;
		LOC17 = 0;
		LOC18 = 0;
		LOC18 = !((hostos_173631 == targetos_173630));
		if (LOC18) goto LA19;
		LOC18 = !((hostcpu_173629 == targetcpu_173628));
		LA19: ;
		LOC17 = LOC18;
		if (!(LOC17)) goto LA20;
		LOC17 = !(((gglobaloptions_166132 &(1<<((((NU8) 4))&31)))!=0));
		LA20: ;
		if (!LOC17) goto LA21;
		LOC23 = 0;
		LOC23 = rawNewString(Cpu_173500[(targetcpu_173628)- 1].Field0->Sup.len + Os_173070[(targetos_173630)- 1].Field0->Sup.len + Cc_202467[(c)- 1].Field0->Sup.len + fullsuffix->Sup.len + 2);
appendString(LOC23, Cpu_173500[(targetcpu_173628)- 1].Field0);
appendChar(LOC23, 46);
appendString(LOC23, Os_173070[(targetos_173630)- 1].Field0);
appendChar(LOC23, 46);
appendString(LOC23, Cc_202467[(c)- 1].Field0);
appendString(LOC23, fullsuffix);
		fullccname = LOC23;
		result = getconfigvar_166335(fullccname);
		{
			NimStringDesc* LOC28;
			if (!((result ? result->Sup.len : 0) == ((NI) 0))) goto LA26;
			LOC28 = 0;
			LOC28 = rawNewString(Cc_202467[(c)- 1].Field0->Sup.len + fullsuffix->Sup.len + 0);
appendString(LOC28, Cc_202467[(c)- 1].Field0);
appendString(LOC28, fullsuffix);
			result = getconfigvar_166335(LOC28);
		}
		LA26: ;
	}
	goto LA15;
	LA21: ;
	{
		NimStringDesc* LOC30;
		LOC30 = 0;
		LOC30 = rawNewString(Cc_202467[(c)- 1].Field0->Sup.len + fullsuffix->Sup.len + 0);
appendString(LOC30, Cc_202467[(c)- 1].Field0);
appendString(LOC30, fullsuffix);
		result = getconfigvar_166335(LOC30);
	}
	LA15: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getdebug_203208)(NU8 c) {
	NimStringDesc* result;
	result = 0;
	result = getconfigvar_202846(c, ((NimStringDesc*) &TMP1867));
	{
		if (!((result) && (result)->Sup.len == 0)) goto LA3;
		result = copyString(Cc_202467[(c)- 1].Field15);
	}
	LA3: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getoptspeed_203198)(NU8 c) {
	NimStringDesc* result;
	result = 0;
	result = getconfigvar_202846(c, ((NimStringDesc*) &TMP1869));
	{
		if (!((result) && (result)->Sup.len == 0)) goto LA3;
		result = copyString(Cc_202467[(c)- 1].Field2);
	}
	LA3: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getoptsize_203218)(NU8 c) {
	NimStringDesc* result;
	result = 0;
	result = getconfigvar_202846(c, ((NimStringDesc*) &TMP1871));
	{
		if (!((result) && (result)->Sup.len == 0)) goto LA3;
		result = copyString(Cc_202467[(c)- 1].Field3);
	}
	LA3: ;
	return result;
}

N_NIMCALL(NimStringDesc*, cfilespecificoptions_203287)(NimStringDesc* cfilename) {
	NimStringDesc* result;
	NimStringDesc* trunk;
	TY123809 LOC1;
	NimStringDesc* key;
	NimStringDesc* LOC40;
	result = 0;
	result = copyString(compileoptions_202579);
	memset((void*)(&LOC1), 0, sizeof(LOC1));
	nossplitFile(cfilename, (&LOC1));
	trunk = copyString(LOC1.Field1);
	{
		NimStringDesc* key;
		NimStringDesc* LOC6;
		if (!((gglobaloptions_166132 &(1<<((((NU8) 7))&31)))!=0)) goto LA4;
		LOC6 = 0;
		LOC6 = rawNewString(trunk->Sup.len + 6);
appendString(LOC6, trunk);
appendString(LOC6, ((NimStringDesc*) &TMP1862));
		key = LOC6;
		{
			NIM_BOOL LOC9;
			NimStringDesc* LOC12;
			LOC9 = 0;
			LOC9 = existsconfigvar_166325(key);
			if (!LOC9) goto LA10;
			LOC12 = 0;
			LOC12 = getconfigvar_166335(key);
			addopt_203045((&result), LOC12);
		}
		goto LA7;
		LA10: ;
		{
			NimStringDesc* LOC14;
			LOC14 = 0;
			LOC14 = getdebug_203208(ccompiler_202488);
			addopt_203045((&result), LOC14);
		}
		LA7: ;
	}
	LA4: ;
	{
		NimStringDesc* key;
		NimStringDesc* LOC19;
		if (!((goptions_166130 &(1<<((((NU8) 13))&31)))!=0)) goto LA17;
		LOC19 = 0;
		LOC19 = rawNewString(trunk->Sup.len + 6);
appendString(LOC19, trunk);
appendString(LOC19, ((NimStringDesc*) &TMP1868));
		key = LOC19;
		{
			NIM_BOOL LOC22;
			NimStringDesc* LOC25;
			LOC22 = 0;
			LOC22 = existsconfigvar_166325(key);
			if (!LOC22) goto LA23;
			LOC25 = 0;
			LOC25 = getconfigvar_166335(key);
			addopt_203045((&result), LOC25);
		}
		goto LA20;
		LA23: ;
		{
			NimStringDesc* LOC27;
			LOC27 = 0;
			LOC27 = getoptspeed_203198(ccompiler_202488);
			addopt_203045((&result), LOC27);
		}
		LA20: ;
	}
	goto LA15;
	LA17: ;
	{
		NimStringDesc* key;
		NimStringDesc* LOC31;
		if (!((goptions_166130 &(1<<((((NU8) 14))&31)))!=0)) goto LA29;
		LOC31 = 0;
		LOC31 = rawNewString(trunk->Sup.len + 5);
appendString(LOC31, trunk);
appendString(LOC31, ((NimStringDesc*) &TMP1870));
		key = LOC31;
		{
			NIM_BOOL LOC34;
			NimStringDesc* LOC37;
			LOC34 = 0;
			LOC34 = existsconfigvar_166325(key);
			if (!LOC34) goto LA35;
			LOC37 = 0;
			LOC37 = getconfigvar_166335(key);
			addopt_203045((&result), LOC37);
		}
		goto LA32;
		LA35: ;
		{
			NimStringDesc* LOC39;
			LOC39 = 0;
			LOC39 = getoptsize_203218(ccompiler_202488);
			addopt_203045((&result), LOC39);
		}
		LA32: ;
	}
	goto LA15;
	LA29: ;
	LA15: ;
	LOC40 = 0;
	LOC40 = rawNewString(trunk->Sup.len + 7);
appendString(LOC40, trunk);
appendString(LOC40, ((NimStringDesc*) &TMP1872));
	key = LOC40;
	{
		NIM_BOOL LOC43;
		NimStringDesc* LOC46;
		LOC43 = 0;
		LOC43 = existsconfigvar_166325(key);
		if (!LOC43) goto LA44;
		LOC46 = 0;
		LOC46 = getconfigvar_166335(key);
		addopt_203045((&result), LOC46);
	}
	LA44: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getcompilerexe_203498)(NU8 compiler) {
	NimStringDesc* result;
	result = 0;
	{
		if (!(gcmd_166134 == ((NU8) 2))) goto LA3;
		result = copyString(Cc_202467[(compiler)- 1].Field5);
	}
	goto LA1;
	LA3: ;
	{
		result = copyString(Cc_202467[(compiler)- 1].Field4);
	}
	LA1: ;
	{
		if (!((result ? result->Sup.len : 0) == ((NI) 0))) goto LA8;
		rawmessage_193636(((NU16) 233), Cc_202467[(compiler)- 1].Field0);
	}
	LA8: ;
	return result;
}

static N_INLINE(NIM_BOOL, needsexeext_203461)(void) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((gglobaloptions_166132 &(1<<((((NU8) 11))&31)))!=0);
	if (!(LOC2)) goto LA3;
	LOC2 = (targetos_173630 == ((NU8) 2));
	LA3: ;
	LOC1 = LOC2;
	if (LOC1) goto LA4;
	LOC1 = (hostos_173631 == ((NU8) 2));
	LA4: ;
	result = LOC1;
	return result;
}

static N_INLINE(NIM_BOOL, noabsolutepaths_203228)(void) {
	NIM_BOOL result;
	result = 0;
	result = !(((gglobaloptions_166132 & 6144) == 0));
	return result;
}

N_NIMCALL(void, add_203275)(NimStringDesc** s, NimStringDesc** many, NI manyLen0) {
	NimStringDesc* LOC1;
	LOC1 = 0;
	LOC1 = nsuJoin(many, manyLen0);
	(*s) = resizeString((*s), LOC1->Sup.len + 0);
appendString((*s), LOC1);
}

N_NIMCALL(NimStringDesc*, toobjfile_203123)(NimStringDesc* filename) {
	NimStringDesc* result;
	result = 0;
	result = noschangeFileExt(filename, Cc_202467[(ccompiler_202488)- 1].Field1);
	return result;
}

N_NIMCALL(NimStringDesc*, completecfilepath_203112)(NimStringDesc* cfile, NIM_BOOL createsubdir) {
	NimStringDesc* result;
	result = 0;
	result = completegeneratedfilepath_167201(cfile, createsubdir);
	return result;
}

N_NIMCALL(NimStringDesc*, getcompilecfilecmd_203536)(NimStringDesc* cfilename, NIM_BOOL isexternal) {
	NimStringDesc* result;
	NU8 c;
	NimStringDesc* options;
	NimStringDesc* exe;
	NimStringDesc* includecmd;
	NimStringDesc* compilepattern;
	NimStringDesc* cfile;
	NimStringDesc* objfile;
	TY211072 LOC67;
	NimStringDesc* LOC68;
	TY211072 LOC69;
	NimStringDesc* LOC70;
	NimStringDesc* LOC71;
	result = 0;
	c = ccompiler_202488;
	{
		NIM_BOOL LOC3;
		NimStringDesc* customassembler;
		LOC3 = 0;
		LOC3 = nsuEndsWith(cfilename, ((NimStringDesc*) &TMP1860));
		if (!LOC3) goto LA4;
		customassembler = getconfigvar_166335(((NimStringDesc*) &TMP1861));
		{
			if (!(((NI) 0) < (customassembler ? customassembler->Sup.len : 0))) goto LA8;
			c = nametocc_202590(customassembler);
		}
		goto LA6;
		LA8: ;
		{
			{
				NIM_BOOL LOC13;
				LOC13 = 0;
				LOC13 = (targetcpu_173628 == ((NU8) 1));
				if (LOC13) goto LA14;
				LOC13 = (targetcpu_173628 == ((NU8) 10));
				LA14: ;
				if (!LOC13) goto LA15;
				c = ((NU8) 13);
			}
			goto LA11;
			LA15: ;
			{
				c = ((NU8) 0);
			}
			LA11: ;
		}
		LA6: ;
		{
			if (!(c == ((NU8) 0))) goto LA20;
			rawmessage_193636(((NU16) 234), ((NimStringDesc*) &TMP518));
		}
		goto LA18;
		LA20: ;
		{
			if (!!(((8192 &(1<<((c)&15)))!=0))) goto LA23;
			rawmessage_193636(((NU16) 235), customassembler);
		}
		goto LA18;
		LA23: ;
		LA18: ;
	}
	LA4: ;
	options = cfilespecificoptions_203287(cfilename);
	exe = getconfigvar_202846(c, ((NimStringDesc*) &TMP1873));
	{
		if (!((exe ? exe->Sup.len : 0) == ((NI) 0))) goto LA27;
		exe = getcompilerexe_203498(c);
	}
	LA27: ;
	{
		NIM_BOOL LOC31;
		LOC31 = 0;
		LOC31 = needsexeext_203461();
		if (!LOC31) goto LA32;
		exe = nosaddFileExt(exe, ((NimStringDesc*) &TMP1874));
	}
	LA32: ;
	{
		NIM_BOOL LOC36;
		NimStringDesc* LOC40;
		LOC36 = 0;
		LOC36 = ((gglobaloptions_166132 &(1<<((((NU8) 8))&31)))!=0);
		if (!(LOC36)) goto LA37;
		LOC36 = ((Os_173070[(targetos_173630)- 1].Field12 &(1<<((((NU8) 0))&7)))!=0);
		LA37: ;
		if (!LOC36) goto LA38;
		LOC40 = 0;
		LOC40 = rawNewString(Cc_202467[(c)- 1].Field16->Sup.len + 1);
appendChar(LOC40, 32);
appendString(LOC40, Cc_202467[(c)- 1].Field16);
		options = resizeString(options, LOC40->Sup.len + 0);
appendString(options, LOC40);
	}
	LA38: ;
	includecmd = 0;
	compilepattern = 0;
	{
		NIM_BOOL LOC43;
		NimStringDesc* LOC46;
		NimStringDesc* LOC47;
		LOC43 = 0;
		LOC43 = noabsolutepaths_203228();
		if (!!(LOC43)) goto LA44;
		LOC46 = 0;
		LOC47 = 0;
		LOC47 = nospquoteShell(libpath_166233);
		LOC46 = rawNewString(Cc_202467[(c)- 1].Field12->Sup.len + LOC47->Sup.len + 0);
appendString(LOC46, Cc_202467[(c)- 1].Field12);
appendString(LOC46, LOC47);
		includecmd = LOC46;
		{
			NimStringDesc* includedir_203613;
			NI i_203631;
			NI L_203633;
			includedir_203613 = 0;
			i_203631 = ((NI) 0);
			L_203633 = (cincludes_202508 ? cincludes_202508->Sup.len : 0);
			{
				while (1) {
					TY192306 LOC51;
					if (!(i_203631 < L_203633)) goto LA50;
					includedir_203613 = cincludes_202508->data[i_203631];
					memset((void*)LOC51, 0, sizeof(LOC51));
					LOC51[0] = copyString(Cc_202467[(c)- 1].Field12);
					LOC51[1] = nospquoteShell(includedir_203613);
					add_203275((&includecmd), LOC51, 2);
					i_203631 += ((NI) 1);
				} LA50: ;
			}
		}
		compilepattern = nosjoinPath(ccompilerpath_202580, exe);
	}
	goto LA41;
	LA44: ;
	{
		includecmd = copyString(((NimStringDesc*) &TMP518));
		compilepattern = getcompilerexe_203498(c);
	}
	LA41: ;
	{
		NIM_BOOL LOC55;
		LOC55 = 0;
		LOC55 = noabsolutepaths_203228();
		if (!LOC55) goto LA56;
		cfile = nosextractFilename(cfilename);
	}
	goto LA53;
	LA56: ;
	{
		cfile = copyString(cfilename);
	}
	LA53: ;
	{
		NIM_BOOL LOC61;
		LOC61 = 0;
		LOC61 = !(isexternal);
		if (LOC61) goto LA62;
		LOC61 = noabsolutepaths_203228();
		LA62: ;
		if (!LOC61) goto LA63;
		objfile = toobjfile_203123(cfile);
	}
	goto LA59;
	LA63: ;
	{
		NimStringDesc* LOC66;
		LOC66 = 0;
		LOC66 = toobjfile_203123(cfile);
		objfile = completecfilepath_203112(LOC66, NIM_TRUE);
	}
	LA59: ;
	objfile = nospquoteShell(objfile);
	cfile = nospquoteShell(cfile);
	memset((void*)LOC67, 0, sizeof(LOC67));
	LOC67[0] = copyString(((NimStringDesc*) &TMP1879));
	LOC67[1] = copyString(cfile);
	LOC67[2] = copyString(((NimStringDesc*) &TMP1880));
	LOC67[3] = copyString(objfile);
	LOC67[4] = copyString(((NimStringDesc*) &TMP1881));
	LOC67[5] = copyString(options);
	LOC67[6] = copyString(((NimStringDesc*) &TMP1882));
	LOC67[7] = copyString(includecmd);
	LOC67[8] = copyString(((NimStringDesc*) &TMP1883));
	LOC67[9] = getprefixdir_166366();
	LOC67[10] = copyString(((NimStringDesc*) &TMP1883));
	LOC67[11] = getprefixdir_166366();
	LOC67[12] = copyString(((NimStringDesc*) &TMP1884));
	LOC67[13] = copyString(libpath_166233);
	LOC68 = 0;
	LOC68 = nsuFormatOpenArray(compilepattern, LOC67, 14);
	result = nospquoteShell(LOC68);
	result = addChar(result, 32);
	memset((void*)LOC69, 0, sizeof(LOC69));
	LOC69[0] = copyString(((NimStringDesc*) &TMP1879));
	LOC69[1] = copyString(cfile);
	LOC69[2] = copyString(((NimStringDesc*) &TMP1880));
	LOC69[3] = copyString(objfile);
	LOC69[4] = copyString(((NimStringDesc*) &TMP1881));
	LOC69[5] = copyString(options);
	LOC69[6] = copyString(((NimStringDesc*) &TMP1882));
	LOC69[7] = copyString(includecmd);
	LOC69[8] = copyString(((NimStringDesc*) &TMP1883));
	LOC70 = 0;
	LOC70 = getprefixdir_166366();
	LOC69[9] = nospquoteShell(LOC70);
	LOC69[10] = copyString(((NimStringDesc*) &TMP1883));
	LOC71 = 0;
	LOC71 = getprefixdir_166366();
	LOC69[11] = nospquoteShell(LOC71);
	LOC69[12] = copyString(((NimStringDesc*) &TMP1884));
	LOC69[13] = nospquoteShell(libpath_166233);
	nsuAddf((&result), Cc_202467[(c)- 1].Field6, LOC69, 14);
	return result;
}

N_NIMCALL(void, footprint_203649)(NimStringDesc* filename, Sha1digest200009* Result) {
	NimStringDesc* LOC1;
	Sha1digest200009 LOC2;
	NimStringDesc* LOC3;
	NimStringDesc* LOC4;
	LOC1 = 0;
	memset((void*)LOC2, 0, sizeof(LOC2));
	securehashfile_200034(filename, LOC2);
	LOC3 = 0;
	LOC3 = HEX24_200044(LOC2);
	LOC4 = 0;
	LOC4 = getcompilecfilecmd_203536(filename, NIM_TRUE);
	LOC1 = rawNewString(LOC3->Sup.len + Os_173070[(targetos_173630)- 1].Field0->Sup.len + Cpu_173500[(targetcpu_173628)- 1].Field0->Sup.len + Cc_202467[(ccompiler_202488)- 1].Field0->Sup.len + LOC4->Sup.len + 0);
appendString(LOC1, LOC3);
appendString(LOC1, Os_173070[(targetos_173630)- 1].Field0);
appendString(LOC1, Cpu_173500[(targetcpu_173628)- 1].Field0);
appendString(LOC1, Cc_202467[(ccompiler_202488)- 1].Field0);
appendString(LOC1, LOC4);
	chckNil((void*)Result);
	genericReset((void*)Result, (&NTI200009));
	securehash_200023(LOC1, Result);
}

static N_INLINE(void, writeline_167405)(FILE* f, NimStringDesc** x, NI xLen0) {
	{
		NimStringDesc* i_167421;
		NI i_167429;
		i_167421 = 0;
		i_167429 = ((NI) 0);
		{
			while (1) {
				if (!(i_167429 < xLen0)) goto LA3;
				i_167421 = x[i_167429];
				write_16895(f, i_167421);
				i_167429 += ((NI) 1);
			} LA3: ;
		}
	}
	write_16895(f, ((NimStringDesc*) &TMP1886));
}

N_NIMCALL(NIM_BOOL, externalfilechanged_203659)(NimStringDesc* filename) {
	NIM_BOOL result;
	NimStringDesc* hashfile;
	NimStringDesc* LOC5;
	Sha1digest200009 currenthash;
	FILE* f;
{	result = 0;
	{
		if (!!(((46 &(1<<((gcmd_166134)&31)))!=0))) goto LA3;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA3: ;
	LOC5 = 0;
	LOC5 = withpackagename_167144(filename);
	hashfile = togeneratedfile_167158(LOC5, ((NimStringDesc*) &TMP1765));
	memset((void*)currenthash, 0, sizeof(currenthash));
	chckNil((void*)currenthash);
	memset((void*)currenthash, 0, sizeof(currenthash));
	footprint_203649(filename, currenthash);
	f = 0;
	{
		NIM_BOOL LOC8;
		Sha1digest200009 oldhash;
		NimStringDesc* LOC11;
		NIM_BOOL LOC12;
		LOC8 = 0;
		LOC8 = open_16803(&f, hashfile, ((NU8) 0), ((NI) -1));
		if (!LOC8) goto LA9;
		memset((void*)oldhash, 0, sizeof(oldhash));
		LOC11 = 0;
		LOC11 = readline_16916(f);
		chckNil((void*)oldhash);
		memset((void*)oldhash, 0, sizeof(oldhash));
		parsesecurehash_200107(LOC11, oldhash);
		fclose(f);
		LOC12 = 0;
		LOC12 = HEX3DHEX3D_200152(oldhash, currenthash);
		result = !(LOC12);
	}
	goto LA6;
	LA9: ;
	{
		result = NIM_TRUE;
	}
	LA6: ;
	{
		if (!result) goto LA16;
		{
			NIM_BOOL LOC20;
			TY191421 LOC23;
			LOC20 = 0;
			LOC20 = open_16803(&f, hashfile, ((NU8) 1), ((NI) -1));
			if (!LOC20) goto LA21;
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = HEX24_200044(currenthash);
			writeline_167405(f, LOC23, 1);
			fclose(f);
		}
		LA21: ;
	}
	LA16: ;
	}BeforeRet: ;
	return result;
}

N_NIMCALL(void, addexternalfiletocompile_203699)(NimStringDesc* filename) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((gglobaloptions_166132 &(1<<((((NU8) 1))&31)))!=0);
		if (LOC3) goto LA4;
		LOC3 = externalfilechanged_203659(filename);
		LA4: ;
		if (!LOC3) goto LA5;
		appendstr_140268((&externaltocompile_202577), filename);
	}
	LA5: ;
}

N_NIMCALL(void, addfiletolink_203154)(NimStringDesc* filename) {
	prependstr_140419((&tolink_202575), filename);
}

N_NIMCALL(void, addcompileoption_203066)(NimStringDesc* option) {
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = nsuFindStr(compileoptions_202579, option, ((NI) 0));
		if (!(LOC3 < ((NI) 0))) goto LA4;
		addopt_203045((&compileoptions_202579), option);
	}
	LA4: ;
}

N_NIMCALL(void, addlinkoption_203056)(NimStringDesc* option) {
	addopt_203045((&linkoptions_202578), option);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		Cell48947* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_52646(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell48947* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_52646((*dest));
		{
			(*c).refcount -= ((NI) 8);
			if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA11;
			rtladdzct_54204(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

N_NIMCALL(void, setcc_202914)(NimStringDesc* ccname) {
	NimStringDesc* LOC5;
	ccompiler_202488 = nametocc_202590(ccname);
	{
		if (!(ccompiler_202488 == ((NU8) 0))) goto LA3;
		rawmessage_193636(((NU16) 50), ccname);
	}
	LA3: ;
	asgnRefNoCycle((void**) (&compileoptions_202579), getconfigvar_202846(ccompiler_202488, ((NimStringDesc*) &TMP1982)));
	LOC5 = 0;
	LOC5 = linkoptions_202578; linkoptions_202578 = copyStringRC1(((NimStringDesc*) &TMP518));
	if (LOC5) nimGCunrefNoCycle(LOC5);
	asgnRefNoCycle((void**) (&ccompilerpath_202580), getconfigvar_202846(ccompiler_202488, ((NimStringDesc*) &TMP1983)));
	{
		NU8 i_203023;
		NI res_203027;
		i_203023 = 0;
		res_203027 = ((NI) 1);
		{
			while (1) {
				if (!(res_203027 <= ((NI) 13))) goto LA8;
				i_203023 = ((NU8) (res_203027));
				undefsymbol_198022(Cc_202467[(i_203023)- 1].Field0);
				res_203027 += ((NI) 1);
			} LA8: ;
		}
	}
	definesymbol_198013(Cc_202467[(ccompiler_202488)- 1].Field0);
}

N_NIMCALL(void, initvars_203076)(void) {
	NimStringDesc* LOC4;
	{
		NU8 i_203090;
		NI res_203094;
		i_203090 = 0;
		res_203094 = ((NI) 1);
		{
			while (1) {
				if (!(res_203094 <= ((NI) 13))) goto LA3;
				i_203090 = ((NU8) (res_203094));
				undefsymbol_198022(Cc_202467[(i_203090)- 1].Field0);
				res_203094 += ((NI) 1);
			} LA3: ;
		}
	}
	definesymbol_198013(Cc_202467[(ccompiler_202488)- 1].Field0);
	LOC4 = 0;
	LOC4 = getconfigvar_202846(ccompiler_202488, ((NimStringDesc*) &TMP1982));
	addcompileoption_203066(LOC4);
	{
		if (!((ccompilerpath_202580 ? ccompilerpath_202580->Sup.len : 0) == ((NI) 0))) goto LA7;
		asgnRefNoCycle((void**) (&ccompilerpath_202580), getconfigvar_202846(ccompiler_202488, ((NimStringDesc*) &TMP1983)));
	}
	LA7: ;
}

N_NIMCALL(void, addfiletocompile_203133)(NimStringDesc* filename) {
	appendstr_140268((&tocompile_202576), filename);
}

N_NIMCALL(Ropeobj175009*, genmappingfiles_204073)(Tlinkedlist140028 list) {
	Ropeobj175009* result;
	Tstrentry140024* it;
	result = 0;
	it = ((Tstrentry140024*) (list.head));
	{
		while (1) {
			TY175572 LOC3;
			if (!!((it == NIM_NIL))) goto LA2;
			memset((void*)LOC3, 0, sizeof(LOC3));
			LOC3[0] = rope_175322((*it).data);
			addf_176635(&result, ((NimStringDesc*) &TMP4577), LOC3, 1);
			it = ((Tstrentry140024*) ((*it).Sup.next));
		} LA2: ;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, getcompileoptions_203339)(void) {
	NimStringDesc* result;
	result = 0;
	result = cfilespecificoptions_203287(((NimStringDesc*) &TMP4579));
	return result;
}

N_NIMCALL(NimStringDesc*, getlinkoptions_203348)(void) {
	NimStringDesc* result;
	result = 0;
	result = copyString(linkoptions_202578);
	{
		NimStringDesc* linkedlib_203411;
		NI i_203428;
		NI L_203430;
		linkedlib_203411 = 0;
		i_203428 = ((NI) 0);
		L_203430 = (clinkedlibs_202544 ? clinkedlibs_202544->Sup.len : 0);
		{
			while (1) {
				NimStringDesc* LOC4;
				NimStringDesc* LOC5;
				if (!(i_203428 < L_203430)) goto LA3;
				linkedlib_203411 = clinkedlibs_202544->data[i_203428];
				LOC4 = 0;
				LOC4 = nospquoteShell(linkedlib_203411);
				LOC5 = 0;
				LOC5 = nsuFormatSingleElem(Cc_202467[(ccompiler_202488)- 1].Field14, LOC4);
				result = resizeString(result, LOC5->Sup.len + 0);
appendString(result, LOC5);
				i_203428 += ((NI) 1);
			} LA3: ;
		}
	}
	{
		NimStringDesc* libdir_203421;
		NI i_203434;
		NI L_203436;
		libdir_203421 = 0;
		i_203434 = ((NI) 0);
		L_203436 = (clibs_202526 ? clibs_202526->Sup.len : 0);
		{
			while (1) {
				TY192306 LOC9;
				if (!(i_203434 < L_203436)) goto LA8;
				libdir_203421 = clibs_202526->data[i_203434];
				memset((void*)LOC9, 0, sizeof(LOC9));
				LOC9[0] = copyString(Cc_202467[(ccompiler_202488)- 1].Field13);
				LOC9[1] = nospquoteShell(libdir_203421);
				add_203275((&result), LOC9, 2);
				i_203434 += ((NI) 1);
			} LA8: ;
		}
	}
	return result;
}

N_NIMCALL(void, writemapping_204106)(Ropeobj175009* gsymbolmapping) {
	Ropeobj175009* code;
	Ropeobj175009* LOC5;
	Ropeobj175009* LOC6;
	NimStringDesc* LOC7;
	NimStringDesc* LOC8;
	NimStringDesc* LOC9;
	NimStringDesc* LOC10;
	NimStringDesc* LOC11;
	NimStringDesc* LOC12;
	NimStringDesc* LOC13;
	TY175572 LOC14;
	NimStringDesc* LOC15;
{	{
		if (!!(((gglobaloptions_166132 &(1<<((((NU8) 12))&31)))!=0))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	code = rope_175322(((NimStringDesc*) &TMP4576));
	LOC5 = 0;
	LOC5 = genmappingfiles_204073(tocompile_202576);
	add_175534(&code, LOC5);
	LOC6 = 0;
	LOC6 = genmappingfiles_204073(externaltocompile_202577);
	add_175534(&code, LOC6);
	add_175545(&code, ((NimStringDesc*) &TMP4578));
	LOC7 = 0;
	LOC7 = getcompileoptions_203339();
	LOC8 = 0;
	LOC8 = nsuEscape(LOC7, ((NimStringDesc*) &TMP4580), ((NimStringDesc*) &TMP4580));
	add_175545(&code, LOC8);
	add_175545(&code, ((NimStringDesc*) &TMP4581));
	LOC9 = 0;
	LOC10 = 0;
	LOC10 = getlinkoptions_203348();
	LOC11 = 0;
	LOC11 = getconfigvar_202846(ccompiler_202488, ((NimStringDesc*) &TMP4582));
	LOC9 = rawNewString(LOC10->Sup.len + LOC11->Sup.len + 1);
appendString(LOC9, LOC10);
appendString(LOC9, ((NimStringDesc*) &TMP1863));
appendString(LOC9, LOC11);
	LOC12 = 0;
	LOC12 = nsuEscape(LOC9, ((NimStringDesc*) &TMP4580), ((NimStringDesc*) &TMP4580));
	add_175545(&code, LOC12);
	add_175545(&code, ((NimStringDesc*) &TMP4583));
	LOC13 = 0;
	LOC13 = nsuEscape(libpath_166233, ((NimStringDesc*) &TMP4580), ((NimStringDesc*) &TMP4580));
	add_175545(&code, LOC13);
	memset((void*)LOC14, 0, sizeof(LOC14));
	LOC14[0] = gsymbolmapping;
	addf_176635(&code, ((NimStringDesc*) &TMP4584), LOC14, 1);
	LOC15 = 0;
	LOC15 = nosjoinPath(gprojectpath_166235, ((NimStringDesc*) &TMP4585));
	writerope_176106(code, LOC15, NIM_FALSE);
	}BeforeRet: ;
}
N_NIMCALL(void, TMP4591)(void* p, NI op) {
	TY204038* a;
	a = (TY204038*)p;
	nimGCvisit((void*)(*a).prettycmds203874, op);
	nimGCvisit((void*)(*a).cmds203857, op);
}

N_CLOSURE(void, HEX3Aanonymous_203875)(NI idx, void* ClEnv) {
	TY204038* HEX3Aenvp_204044;
	HEX3Aenvp_204044 = (TY204038*) ClEnv;
	printf("%s\012", (*HEX3Aenvp_204044).prettycmds203874->data[idx]? ((*HEX3Aenvp_204044).prettycmds203874->data[idx])->data:"nil");
}

N_CLOSURE(void, HEX3Aanonymous_203881)(NI idx, Processobj155404* p, void* ClEnv) {
	TY204038* HEX3Aenvp_204050;
	NI exitcode;
	HEX3Aenvp_204050 = (TY204038*) ClEnv;
	exitcode = peekexitcode_155725(p);
	{
		NimStringDesc* LOC5;
		NimStringDesc* LOC6;
		Streamobj149427* LOC7;
		NimStringDesc* LOC8;
		NimStringDesc* LOC9;
		if (!!((exitcode == ((NI) 0)))) goto LA3;
		LOC5 = 0;
		LOC6 = 0;
		LOC6 = nimIntToStr(exitcode);
		LOC7 = 0;
		LOC7 = nospoutputStream(p);
		LOC8 = 0;
		LOC8 = readall_149592(LOC7);
		LOC9 = 0;
		LOC9 = nsuStrip(LOC8, NIM_TRUE, NIM_TRUE, TMP4595);
		LOC5 = rawNewString((*HEX3Aenvp_204050).cmds203857->data[idx]->Sup.len + LOC6->Sup.len + LOC9->Sup.len + 70);
appendString(LOC5, ((NimStringDesc*) &TMP4592));
appendString(LOC5, (*HEX3Aenvp_204050).cmds203857->data[idx]);
appendString(LOC5, ((NimStringDesc*) &TMP4593));
appendString(LOC5, LOC6);
appendString(LOC5, ((NimStringDesc*) &TMP4594));
appendString(LOC5, LOC9);
		rawmessage_193636(((NU16) 4), LOC5);
	}
	LA3: ;
}

N_NIMCALL(void, compilecfile_203719)(Tlinkedlist140028 list, Ropeobj175009** script, TY130408** cmds, TY130408** prettycmds, NIM_BOOL isexternal) {
	Tstrentry140024* it;
	it = ((Tstrentry140024*) (list.head));
	{
		while (1) {
			NimStringDesc* compilecmd;
			if (!!((it == NIM_NIL))) goto LA2;
			filecounter_203270 += ((NI) 1);
			compilecmd = getcompilecfilecmd_203536((*it).data, isexternal);
			{
				NimStringDesc* LOC7;
				TY123809 LOC8;
				NimStringDesc* dir;
				NimStringDesc* name;
				NimStringDesc* ext;
				NimStringDesc* LOC9;
				NimStringDesc* LOC10;
				if (!!(((gglobaloptions_166132 &(1<<((((NU8) 4))&31)))!=0))) goto LA5;
				(*cmds) = (TY130408*) incrSeqV2(&((*cmds))->Sup, sizeof(NimStringDesc*));
				LOC7 = 0;
				LOC7 = (*cmds)->data[(*cmds)->Sup.len]; (*cmds)->data[(*cmds)->Sup.len] = copyStringRC1(compilecmd);
				if (LOC7) nimGCunrefNoCycle(LOC7);
				++(*cmds)->Sup.len;
				memset((void*)(&LOC8), 0, sizeof(LOC8));
				nossplitFile((*it).data, (&LOC8));
				dir = 0;
				dir = LOC8.Field0;
				name = 0;
				name = LOC8.Field1;
				ext = 0;
				ext = LOC8.Field2;
				LOC9 = 0;
				LOC9 = rawNewString(name->Sup.len + 4);
appendString(LOC9, ((NimStringDesc*) &TMP4596));
appendString(LOC9, name);
				(*prettycmds) = (TY130408*) incrSeqV2(&((*prettycmds))->Sup, sizeof(NimStringDesc*));
				LOC10 = 0;
				LOC10 = (*prettycmds)->data[(*prettycmds)->Sup.len]; (*prettycmds)->data[(*prettycmds)->Sup.len] = copyStringRC1(LOC9);
				if (LOC10) nimGCunrefNoCycle(LOC10);
				++(*prettycmds)->Sup.len;
			}
			LA5: ;
			{
				if (!((gglobaloptions_166132 &(1<<((((NU8) 11))&31)))!=0)) goto LA13;
				add_175545(script, compilecmd);
				add_175545(script, tnl_173654);
			}
			LA13: ;
			it = ((Tstrentry140024*) ((*it).Sup.next));
		} LA2: ;
	}
}

N_NIMCALL(NI, execwithecho_203164)(NimStringDesc* cmd, NU16 msg) {
	NI result;
	result = 0;
	rawmessage_193636(msg, cmd);
	result = nospexecCmd(cmd);
	return result;
}

static N_INLINE(NimStringDesc*, libnametmpl_202557)(void) {
	NimStringDesc* result;
	result = 0;
	{
		if (!(targetos_173630 == ((NU8) 2))) goto LA3;
		result = copyString(((NimStringDesc*) &TMP4608));
	}
	goto LA1;
	LA3: ;
	{
		result = copyString(((NimStringDesc*) &TMP4609));
	}
	LA1: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getlinkerexe_203517)(NU8 compiler) {
	NimStringDesc* result;
	result = 0;
	{
		if (!(((NI) 0) < (Cc_202467[(compiler)- 1].Field10 ? Cc_202467[(compiler)- 1].Field10->Sup.len : 0))) goto LA3;
		result = copyString(Cc_202467[(compiler)- 1].Field10);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = gmixedmode_202490;
		if (!(LOC6)) goto LA7;
		LOC6 = !((gcmd_166134 == ((NU8) 2)));
		LA7: ;
		if (!LOC6) goto LA8;
		result = copyString(Cc_202467[(compiler)- 1].Field5);
	}
	goto LA1;
	LA8: ;
	{
		result = getcompilerexe_203498(compiler);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, execexternalprogram_203175)(NimStringDesc* cmd, NU16 msg) {
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = execwithecho_203164(cmd, msg);
		if (!!((LOC3 == ((NI) 0)))) goto LA4;
		rawmessage_193636(((NU16) 69), cmd);
	}
	LA4: ;
}

N_NIMCALL(void, generatescript_203185)(NimStringDesc* projectfile, Ropeobj175009* script) {
	TY123809 LOC1;
	NimStringDesc* dir;
	NimStringDesc* name;
	NimStringDesc* ext;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	NimStringDesc* LOC4;
	memset((void*)(&LOC1), 0, sizeof(LOC1));
	nossplitFile(projectfile, (&LOC1));
	dir = 0;
	dir = LOC1.Field0;
	name = 0;
	name = LOC1.Field1;
	ext = 0;
	ext = LOC1.Field2;
	LOC2 = 0;
	LOC2 = rawNewString(name->Sup.len + 8);
appendString(LOC2, ((NimStringDesc*) &TMP4615));
appendString(LOC2, name);
	LOC3 = 0;
	LOC3 = nosaddFileExt(LOC2, Os_173070[(targetos_173630)- 1].Field8);
	LOC4 = 0;
	LOC4 = HEX2F_123481(dir, LOC3);
	writerope_176106(script, LOC4, NIM_FALSE);
}

N_NIMCALL(void, callccompiler_203808)(NimStringDesc* projectfile) {
	TY204038* HEX3Aenv_204068;
	NimStringDesc* linkcmd;
	NimStringDesc* buildgui;
	NimStringDesc* builddll;
	NU8 c;
	Ropeobj175009* script;
	TY203876 prettycb;
	TY203876 LOC5;
	TY203882 runcb;
	TY203882 LOC6;
{	HEX3Aenv_204068 = 0;
	HEX3Aenv_204068 = (TY204038*) newObj((&NTI204069), sizeof(TY204038));
	linkcmd = 0;
	buildgui = 0;
	builddll = 0;
	{
		if (!((gglobaloptions_166132 & 2064) == 16)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	filecounter_203270 = ((NI) 0);
	c = ccompiler_202488;
	script = NIM_NIL;
	if ((*HEX3Aenv_204068).cmds203857) nimGCunrefNoCycle((*HEX3Aenv_204068).cmds203857);
	(*HEX3Aenv_204068).cmds203857 = (TY130408*) newSeqRC1((&NTI130408), 0);
	if ((*HEX3Aenv_204068).prettycmds203874) nimGCunrefNoCycle((*HEX3Aenv_204068).prettycmds203874);
	(*HEX3Aenv_204068).prettycmds203874 = (TY130408*) newSeqRC1((&NTI130408), 0);
	memset((void*)(&prettycb), 0, sizeof(prettycb));
	memset((void*)(&LOC5), 0, sizeof(LOC5));
	LOC5.ClPrc = HEX3Aanonymous_203875; LOC5.ClEnv = HEX3Aenv_204068;
	prettycb.ClEnv = LOC5.ClEnv;
	prettycb.ClPrc = LOC5.ClPrc;
	memset((void*)(&runcb), 0, sizeof(runcb));
	memset((void*)(&LOC6), 0, sizeof(LOC6));
	LOC6.ClPrc = HEX3Aanonymous_203881; LOC6.ClEnv = HEX3Aenv_204068;
	runcb.ClEnv = LOC6.ClEnv;
	runcb.ClPrc = LOC6.ClPrc;
	compilecfile_203719(tocompile_202576, &script, (&(*HEX3Aenv_204068).cmds203857), (&(*HEX3Aenv_204068).prettycmds203874), NIM_FALSE);
	compilecfile_203719(externaltocompile_202577, &script, (&(*HEX3Aenv_204068).cmds203857), (&(*HEX3Aenv_204068).prettycmds203874), NIM_TRUE);
	{
		NI res;
		if (!!(((gglobaloptions_166132 &(1<<((((NU8) 4))&31)))!=0))) goto LA9;
		{
			if (!(gnumberofprocessors_166142 == ((NI) 0))) goto LA13;
			gnumberofprocessors_166142 = nospcountProcessors();
		}
		LA13: ;
		res = ((NI) 0);
		{
			if (!(gnumberofprocessors_166142 <= ((NI) 1))) goto LA17;
			{
				NI i_203916;
				NI HEX3Atmp_204029;
				NI res_204032;
				i_203916 = 0;
				HEX3Atmp_204029 = 0;
				HEX3Atmp_204029 = ((*HEX3Aenv_204068).cmds203857 ? ((*HEX3Aenv_204068).cmds203857->Sup.len-1) : -1);
				res_204032 = ((NI) 0);
				{
					while (1) {
						if (!(res_204032 <= HEX3Atmp_204029)) goto LA21;
						i_203916 = res_204032;
						res = execwithecho_203164((*HEX3Aenv_204068).cmds203857->data[i_203916], ((NU16) 284));
						{
							if (!!((res == ((NI) 0)))) goto LA24;
							rawmessage_193636(((NU16) 69), (*HEX3Aenv_204068).cmds203857->data[i_203916]);
						}
						LA24: ;
						res_204032 += ((NI) 1);
					} LA21: ;
				}
			}
		}
		goto LA15;
		LA17: ;
		{
			NIM_BOOL LOC27;
			LOC27 = 0;
			LOC27 = ((gglobaloptions_166132 &(1<<((((NU8) 3))&31)))!=0);
			if (LOC27) goto LA28;
			LOC27 = (((NI) 1) < gverbosity_166141);
			LA28: ;
			if (!LOC27) goto LA29;
			res = nospexecProcesses((*HEX3Aenv_204068).cmds203857->data, (*HEX3Aenv_204068).cmds203857->Sup.len, 27, gnumberofprocessors_166142, TMP4606, runcb);
		}
		goto LA15;
		LA29: ;
		{
			if (!(gverbosity_166141 == ((NI) 1))) goto LA32;
			res = nospexecProcesses((*HEX3Aenv_204068).cmds203857->data, (*HEX3Aenv_204068).cmds203857->Sup.len, 26, gnumberofprocessors_166142, prettycb, runcb);
		}
		goto LA15;
		LA32: ;
		{
			res = nospexecProcesses((*HEX3Aenv_204068).cmds203857->data, (*HEX3Aenv_204068).cmds203857->Sup.len, 26, gnumberofprocessors_166142, TMP4606, runcb);
		}
		LA15: ;
		{
			if (!!((res == ((NI) 0)))) goto LA37;
			{
				NimStringDesc* LOC43;
				if (!(gnumberofprocessors_166142 <= ((NI) 1))) goto LA41;
				LOC43 = 0;
				LOC43 = nsuJoin((*HEX3Aenv_204068).cmds203857->data, (*HEX3Aenv_204068).cmds203857->Sup.len);
				rawmessage_193636(((NU16) 69), LOC43);
			}
			LA41: ;
		}
		LA37: ;
	}
	LA9: ;
	{
		Tstrentry140024* it;
		NimStringDesc* objfiles;
		if (!!(((gglobaloptions_166132 &(1<<((((NU8) 5))&31)))!=0))) goto LA46;
		it = ((Tstrentry140024*) (tolink_202575.head));
		objfiles = copyString(((NimStringDesc*) &TMP518));
		{
			while (1) {
				NimStringDesc* objfile;
				NimStringDesc* LOC56;
				NimStringDesc* LOC57;
				if (!!((it == NIM_NIL))) goto LA49;
				{
					NIM_BOOL LOC52;
					LOC52 = 0;
					LOC52 = noabsolutepaths_203228();
					if (!LOC52) goto LA53;
					objfile = nosextractFilename((*it).data);
				}
				goto LA50;
				LA53: ;
				{
					objfile = (*it).data;
				}
				LA50: ;
				objfiles = addChar(objfiles, 32);
				LOC56 = 0;
				LOC56 = nosaddFileExt(objfile, Cc_202467[(ccompiler_202488)- 1].Field1);
				LOC57 = 0;
				LOC57 = nospquoteShell(LOC56);
				objfiles = resizeString(objfiles, LOC57->Sup.len + 0);
appendString(objfiles, LOC57);
				it = ((Tstrentry140024*) ((*it).Sup.next));
			} LA49: ;
		}
		{
			NimStringDesc* name;
			TY123809 LOC62;
			TY193829 LOC63;
			NimStringDesc* LOC64;
			if (!((gglobaloptions_166132 &(1<<((((NU8) 9))&31)))!=0)) goto LA60;
			memset((void*)(&LOC62), 0, sizeof(LOC62));
			nossplitFile(gprojectname_166234, (&LOC62));
			name = LOC62.Field1;
			memset((void*)LOC63, 0, sizeof(LOC63));
			LOC63[0] = copyString(((NimStringDesc*) &TMP4607));
			LOC64 = 0;
			LOC64 = libnametmpl_202557();
			LOC63[1] = nsuFormatSingleElem(LOC64, name);
			LOC63[2] = copyString(((NimStringDesc*) &TMP4610));
			LOC63[3] = copyString(objfiles);
			linkcmd = nsuFormatOpenArray(Cc_202467[(c)- 1].Field9, LOC63, 4);
		}
		goto LA58;
		LA60: ;
		{
			NimStringDesc* linkerexe;
			NimStringDesc* exefile;
			NimStringDesc* linkoptions;
			NimStringDesc* LOC110;
			NimStringDesc* LOC111;
			NimStringDesc* LOC112;
			TY211072 LOC113;
			NimStringDesc* LOC114;
			TY211072 LOC115;
			NimStringDesc* LOC116;
			linkerexe = getconfigvar_202846(c, ((NimStringDesc*) &TMP4611));
			{
				if (!((linkerexe ? linkerexe->Sup.len : 0) == ((NI) 0))) goto LA68;
				linkerexe = getlinkerexe_203517(c);
			}
			LA68: ;
			{
				NIM_BOOL LOC72;
				LOC72 = 0;
				LOC72 = needsexeext_203461();
				if (!LOC72) goto LA73;
				linkerexe = nosaddFileExt(linkerexe, ((NimStringDesc*) &TMP1874));
			}
			LA73: ;
			{
				NIM_BOOL LOC77;
				LOC77 = 0;
				LOC77 = noabsolutepaths_203228();
				if (!LOC77) goto LA78;
				linkcmd = nospquoteShell(linkerexe);
			}
			goto LA75;
			LA78: ;
			{
				NimStringDesc* LOC81;
				LOC81 = 0;
				LOC81 = nosjoinPath(ccompilerpath_202580, linkerexe);
				linkcmd = nospquoteShell(LOC81);
			}
			LA75: ;
			{
				if (!((gglobaloptions_166132 &(1<<((((NU8) 10))&31)))!=0)) goto LA84;
				buildgui = copyString(Cc_202467[(c)- 1].Field7);
			}
			goto LA82;
			LA84: ;
			{
				buildgui = copyString(((NimStringDesc*) &TMP518));
			}
			LA82: ;
			exefile = 0;
			{
				TY123809 LOC91;
				if (!((gglobaloptions_166132 &(1<<((((NU8) 8))&31)))!=0)) goto LA89;
				memset((void*)(&LOC91), 0, sizeof(LOC91));
				nossplitFile(projectfile, (&LOC91));
				exefile = nsuFormatSingleElem(Os_173070[(targetos_173630)- 1].Field2, LOC91.Field1);
				builddll = copyString(Cc_202467[(c)- 1].Field8);
			}
			goto LA87;
			LA89: ;
			{
				NimStringDesc* LOC93;
				TY123809 LOC94;
				LOC93 = 0;
				memset((void*)(&LOC94), 0, sizeof(LOC94));
				nossplitFile(projectfile, (&LOC94));
				LOC93 = rawNewString(LOC94.Field1->Sup.len + Os_173070[(targetos_173630)- 1].Field10->Sup.len + 0);
appendString(LOC93, LOC94.Field1);
appendString(LOC93, Os_173070[(targetos_173630)- 1].Field10);
				exefile = LOC93;
				builddll = copyString(((NimStringDesc*) &TMP518));
			}
			LA87: ;
			{
				if (!(((NI) 0) < (outfile_166138 ? outfile_166138->Sup.len : 0))) goto LA97;
				exefile = expandtilde_135204(outfile_166138);
			}
			LA97: ;
			{
				NIM_BOOL LOC101;
				LOC101 = 0;
				LOC101 = noabsolutepaths_203228();
				if (!!(LOC101)) goto LA102;
				{
					NIM_BOOL LOC106;
					TY123809 LOC109;
					LOC106 = 0;
					LOC106 = nosisAbsolute(exefile);
					if (!!(LOC106)) goto LA107;
					memset((void*)(&LOC109), 0, sizeof(LOC109));
					nossplitFile(projectfile, (&LOC109));
					exefile = nosjoinPath(LOC109.Field0, exefile);
				}
				LA107: ;
			}
			LA102: ;
			exefile = nospquoteShell(exefile);
			LOC110 = 0;
			LOC111 = 0;
			LOC111 = getlinkoptions_203348();
			LOC112 = 0;
			LOC112 = getconfigvar_202846(ccompiler_202488, ((NimStringDesc*) &TMP4582));
			LOC110 = rawNewString(LOC111->Sup.len + LOC112->Sup.len + 1);
appendString(LOC110, LOC111);
appendString(LOC110, ((NimStringDesc*) &TMP1863));
appendString(LOC110, LOC112);
			linkoptions = LOC110;
			memset((void*)LOC113, 0, sizeof(LOC113));
			LOC113[0] = copyString(((NimStringDesc*) &TMP4612));
			LOC113[1] = copyString(builddll);
			LOC113[2] = copyString(((NimStringDesc*) &TMP4613));
			LOC113[3] = copyString(buildgui);
			LOC113[4] = copyString(((NimStringDesc*) &TMP1881));
			LOC113[5] = copyString(linkoptions);
			LOC113[6] = copyString(((NimStringDesc*) &TMP4610));
			LOC113[7] = copyString(objfiles);
			LOC113[8] = copyString(((NimStringDesc*) &TMP4614));
			LOC113[9] = copyString(exefile);
			LOC113[10] = copyString(((NimStringDesc*) &TMP1883));
			LOC113[11] = getprefixdir_166366();
			LOC113[12] = copyString(((NimStringDesc*) &TMP1884));
			LOC113[13] = copyString(libpath_166233);
			LOC114 = 0;
			LOC114 = nsuFormatOpenArray(linkcmd, LOC113, 14);
			linkcmd = nospquoteShell(LOC114);
			linkcmd = addChar(linkcmd, 32);
			memset((void*)LOC115, 0, sizeof(LOC115));
			LOC115[0] = copyString(((NimStringDesc*) &TMP4612));
			LOC115[1] = copyString(builddll);
			LOC115[2] = copyString(((NimStringDesc*) &TMP4613));
			LOC115[3] = copyString(buildgui);
			LOC115[4] = copyString(((NimStringDesc*) &TMP1881));
			LOC115[5] = copyString(linkoptions);
			LOC115[6] = copyString(((NimStringDesc*) &TMP4610));
			LOC115[7] = copyString(objfiles);
			LOC115[8] = copyString(((NimStringDesc*) &TMP4614));
			LOC115[9] = copyString(exefile);
			LOC115[10] = copyString(((NimStringDesc*) &TMP1883));
			LOC116 = 0;
			LOC116 = getprefixdir_166366();
			LOC115[11] = nospquoteShell(LOC116);
			LOC115[12] = copyString(((NimStringDesc*) &TMP1884));
			LOC115[13] = nospquoteShell(libpath_166233);
			nsuAddf((&linkcmd), Cc_202467[(c)- 1].Field11, LOC115, 14);
		}
		LA58: ;
		{
			NU16 LOC121;
			if (!!(((gglobaloptions_166132 &(1<<((((NU8) 4))&31)))!=0))) goto LA119;
			LOC121 = 0;
			{
				if (!(((NI) 1) < gverbosity_166141)) goto LA124;
				LOC121 = ((NU16) 284);
			}
			goto LA122;
			LA124: ;
			{
				LOC121 = ((NU16) 285);
			}
			LA122: ;
			execexternalprogram_203175(linkcmd, LOC121);
		}
		LA119: ;
	}
	goto LA44;
	LA46: ;
	{
		linkcmd = copyString(((NimStringDesc*) &TMP518));
	}
	LA44: ;
	{
		if (!((gglobaloptions_166132 &(1<<((((NU8) 11))&31)))!=0)) goto LA130;
		add_175545(&script, linkcmd);
		add_175545(&script, tnl_173654);
		generatescript_203185(projectfile, script);
	}
	LA130: ;
	}BeforeRet: ;
}

N_NIMCALL(void, resetcompilationlists_203143)(void) {
	initlinkedlist_140043((&tocompile_202576));
	initlinkedlist_140043((&externaltocompile_202577));
	initlinkedlist_140043((&tolink_202575));
}
NIM_EXTERNC N_NOINLINE(void, compiler_extccompInit000)(void) {
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	ccompiler_202488 = ((NU8) 1);
	cassembler_202489 = ((NU8) 0);
	if (cincludes_202508) nimGCunrefNoCycle(cincludes_202508);
	cincludes_202508 = (TY130408*) newSeqRC1((&NTI130408), 0);
	if (clibs_202526) nimGCunrefNoCycle(clibs_202526);
	clibs_202526 = (TY130408*) newSeqRC1((&NTI130408), 0);
	if (clinkedlibs_202544) nimGCunrefNoCycle(clinkedlibs_202544);
	clinkedlibs_202544 = (TY130408*) newSeqRC1((&NTI130408), 0);
	LOC1 = 0;
	LOC1 = linkoptions_202578; linkoptions_202578 = copyStringRC1(((NimStringDesc*) &TMP518));
	if (LOC1) nimGCunrefNoCycle(LOC1);
	LOC2 = 0;
	LOC2 = compileoptions_202579; compileoptions_202579 = copyStringRC1(((NimStringDesc*) &TMP518));
	if (LOC2) nimGCunrefNoCycle(LOC2);
	LOC3 = 0;
	LOC3 = ccompilerpath_202580; ccompilerpath_202580 = copyStringRC1(((NimStringDesc*) &TMP518));
	if (LOC3) nimGCunrefNoCycle(LOC3);
}

NIM_EXTERNC N_NOINLINE(void, compiler_extccompDatInit000)(void) {
static TNimNode* TMP4590[3];
static TNimNode TMP512[4];
NTI204038.size = sizeof(TY204038);
NTI204038.kind = 18;
NTI204038.base = 0;
NTI204038.flags = 2;
TMP4590[0] = &TMP512[1];
TMP512[1].kind = 1;
TMP512[1].offset = offsetof(TY204038, HEX3Astate);
TMP512[1].typ = (&NTI345033);
TMP512[1].name = ":state";
TMP4590[1] = &TMP512[2];
TMP512[2].kind = 1;
TMP512[2].offset = offsetof(TY204038, prettycmds203874);
TMP512[2].typ = (&NTI130408);
TMP512[2].name = "prettyCmds203874";
TMP4590[2] = &TMP512[3];
TMP512[3].kind = 1;
TMP512[3].offset = offsetof(TY204038, cmds203857);
TMP512[3].typ = (&NTI130408);
TMP512[3].name = "cmds203857";
TMP512[0].len = 3; TMP512[0].kind = 2; TMP512[0].sons = &TMP4590[0];
NTI204038.node = &TMP512[0];
NTI204069.size = sizeof(TY204038*);
NTI204069.kind = 22;
NTI204069.base = (&NTI204038);
NTI204069.flags = 2;
NTI204069.marker = TMP4591;
}

