/* Generated by Nim Compiler v0.10.2 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 32
#include "nimbase.h"

#include <string.h>

#include <stdio.h>
typedef struct TY119808 TY119808;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tcell44933 tcell44933;
typedef struct tcellseq44949 tcellseq44949;
typedef struct tgcheap47016 tgcheap47016;
typedef struct tcellset44945 tcellset44945;
typedef struct tpagedesc44941 tpagedesc44941;
typedef struct tmemregion27210 tmemregion27210;
typedef struct tsmallchunk26440 tsmallchunk26440;
typedef struct tllchunk27204 tllchunk27204;
typedef struct tbigchunk26442 tbigchunk26442;
typedef struct tintset26417 tintset26417;
typedef struct ttrunk26413 ttrunk26413;
typedef struct tavlnode27208 tavlnode27208;
typedef struct tgcstat47014 tgcstat47014;
typedef struct tlinkedlist127028 tlinkedlist127028;
typedef struct tlistentry127022 tlistentry127022;
typedef struct tinfoos175048 tinfoos175048;
typedef struct tinfocpu175463 tinfocpu175463;
typedef struct tinfocc203016 tinfocc203016;
typedef struct TY117604 TY117604;
typedef struct trope178009 trope178009;
typedef struct tstrentry127024 tstrentry127024;
typedef struct TNimObject TNimObject;
typedef struct TY204829 TY204829;
typedef struct tbasechunk26438 tbasechunk26438;
typedef struct tfreecell26430 tfreecell26430;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef N_NIMCALL_PTR(void, TY3089) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, TY3094) (void* p);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY3089 marker;
TY3094 deepcopy;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  tcell44933  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq44949  {
NI Len;
NI Cap;
tcell44933** D;
};
struct  tcellset44945  {
NI Counter;
NI Max;
tpagedesc44941* Head;
tpagedesc44941** Data;
};
typedef tsmallchunk26440* TY27222[512];
typedef ttrunk26413* ttrunkbuckets26415[256];
struct  tintset26417  {
ttrunkbuckets26415 Data;
};
struct  tmemregion27210  {
NI Minlargeobj;
NI Maxlargeobj;
TY27222 Freesmallchunks;
tllchunk27204* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk26442* Freechunkslist;
tintset26417 Chunkstarts;
tavlnode27208* Root;
tavlnode27208* Deleted;
tavlnode27208* Last;
tavlnode27208* Freeavlnodes;
};
struct  tgcstat47014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap47016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq44949 Zct;
tcellseq44949 Decstack;
tcellset44945 Cycleroots;
tcellseq44949 Tempstack;
NI Recgclock;
tmemregion27210 Region;
tgcstat47014 Stat;
};
struct  tlinkedlist127028  {
tlistentry127022* Head;
tlistentry127022* Tail;
NI Counter;
};
struct tinfoos175048 {
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 tinfoos175048 TY175070[23];
struct tinfocpu175463 {
NimStringDesc* Field0;
NI Field1;
NU8 Field2;
NI Field3;
NI Field4;
};
typedef tinfocpu175463 TY175481[14];
struct tinfocc203016 {
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 tinfocc203016 TY203435[12];
struct TY117604 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
typedef NimStringDesc* TY170969[2];
typedef NimStringDesc* TY204322[14];
typedef NimStringDesc* TY198301[1];
typedef trope178009* TY178515[1];
struct  TNimObject  {
TNimType* m_type;
};
struct  tlistentry127022  {
  TNimObject Sup;
tlistentry127022* Prev;
tlistentry127022* Next;
};
struct  tstrentry127024  {
  tlistentry127022 Sup;
NimStringDesc* Data;
};
struct  TY204829  {
NI HEX3Astate;
TY119808* Prettycmds204625;
};
typedef struct {
N_NIMCALL_PTR(void, ClPrc) (NI idx, void* ClEnv);
void* ClEnv;
} TY204627;
typedef NimStringDesc* TY261532[1];
typedef NimStringDesc* TY198620[4];
typedef NI TY26420[16];
struct  tpagedesc44941  {
tpagedesc44941* Next;
NI Key;
TY26420 Bits;
};
struct  tbasechunk26438  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk26440  {
  tbasechunk26438 Sup;
tsmallchunk26440* Next;
tsmallchunk26440* Prev;
tfreecell26430* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk27204  {
NI Size;
NI Acc;
tllchunk27204* Next;
};
struct  tbigchunk26442  {
  tbasechunk26438 Sup;
tbigchunk26442* Next;
tbigchunk26442* Prev;
NI Align;
NF Data;
};
struct  ttrunk26413  {
ttrunk26413* Next;
NI Key;
TY26420 Bits;
};
typedef tavlnode27208* TY27214[2];
struct  tavlnode27208  {
TY27214 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  trope178009  {
  TNimObject Sup;
trope178009* Left;
trope178009* Right;
NI Length;
NimStringDesc* Data;
};
struct  tfreecell26430  {
tfreecell26430* Next;
NI Zerofield;
};
struct TY119808 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
static N_INLINE(tcell44933*, usrtocell_48646)(void* usr);
static N_INLINE(void, rtladdzct_50204)(tcell44933* c);
N_NOINLINE(void, addzct_48617)(tcellseq44949* s, tcell44933* c);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ, NI len);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
N_NIMCALL(NIM_BOOL, externalfilechanged_204362)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, togeneratedfile_170960)(NimStringDesc* path, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, withpackagename_170946)(NimStringDesc* path);
N_NIMCALL(NI32, footprint_204352)(NimStringDesc* filename);
N_NIMCALL(NI32, HEX3EHEX3C_177533)(NI32 c, NimStringDesc* s);
N_NIMCALL(NI32, crcfromfile_177046)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, getcompilecfilecmd_204262)(NimStringDesc* cfilename, NIM_BOOL isexternal);
N_NIMCALL(NimStringDesc*, cfilespecificoptions_204043)(NimStringDesc* cfilename);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY117604* Result);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NIM_BOOL, existsconfigvar_170340)(NimStringDesc* key);
N_NIMCALL(void, addopt_203787)(NimStringDesc** dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
N_NIMCALL(NimStringDesc*, getconfigvar_170350)(NimStringDesc* key);
N_NIMCALL(NimStringDesc*, getdebug_203954)(NU8 c);
N_NIMCALL(NimStringDesc*, getconfigvar_203655)(NU8 c, NimStringDesc* suffix);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(NimStringDesc*, getoptspeed_203944)(NU8 c);
N_NIMCALL(NimStringDesc*, getoptsize_203964)(NU8 c);
N_NIMCALL(NimStringDesc*, getcompilerexe_204223)(NU8 compiler);
N_NIMCALL(void, rawmessage_198733)(NU16 msg, NimStringDesc* arg);
static N_INLINE(NIM_BOOL, needsexeext_204183)(void);
N_NIMCALL(NimStringDesc*, nosaddFileExt)(NimStringDesc* filename, NimStringDesc* ext);
static N_INLINE(NIM_BOOL, noabsolutepaths_203974)(void);
N_NIMCALL(NimStringDesc*, nospquoteShell)(NimStringDesc* s);
N_NIMCALL(void, add_204031)(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_203866)(NimStringDesc* filename);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
N_NIMCALL(NimStringDesc*, completecfilepath_203855)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(NimStringDesc*, completegeneratedfilepath_171001)(NimStringDesc* f, NIM_BOOL createsubdir);
N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
N_NIMCALL(NimStringDesc*, getprefixdir_170381)(void);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
N_NIMCALL(void, nsuAddf)(NimStringDesc** s, NimStringDesc* formatstr, NimStringDesc** a, NI aLen0);
N_NIMCALL(NIM_BOOL, open_12603)(FILE** f, NimStringDesc* filename, NU8 mode, NI bufsize);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
N_NIMCALL(NIM_BOOL, readline_12889)(FILE* f, NimStringDesc** line);
N_NIMCALL(NI, nsuParseInt)(NimStringDesc* s);
static N_INLINE(void, writeln_171205)(FILE* f_171209, NimStringDesc** x_171213, NI x_171213Len0);
N_NIMCALL(void, write_12865)(FILE* f, NimStringDesc* s);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x);
N_NIMCALL(void, appendstr_127286)(tlinkedlist127028* list, NimStringDesc* data);
N_NIMCALL(void, prependstr_127424)(tlinkedlist127028* list, NimStringDesc* data);
N_NIMCALL(NI, nsuFindStr)(NimStringDesc* s, NimStringDesc* sub, NI start);
N_NIMCALL(NU8, nametocc_203569)(NimStringDesc* name);
N_NIMCALL(NI, nsuCmpIgnoreStyle)(NimStringDesc* a, NimStringDesc* b);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
N_NIMCALL(void, undefsymbol_202027)(NimStringDesc* symbol);
N_NIMCALL(void, definesymbol_202009)(NimStringDesc* symbol);
N_NIMCALL(void, addcompileoption_203809)(NimStringDesc* option);
N_NIMCALL(void, addlinkoption_203798)(NimStringDesc* option);
N_NIMCALL(trope178009*, torope_178076)(NimStringDesc* s);
N_NIMCALL(void, app_178052)(trope178009** a, trope178009* b);
N_NIMCALL(trope178009*, genmappingfiles_204858)(tlinkedlist127028 list);
N_NIMCALL(void, appf_178115)(trope178009** c, NimStringDesc* frmt, trope178009** args, NI argsLen0);
N_NIMCALL(void, app_178060)(trope178009** a, NimStringDesc* b);
N_NIMCALL(NimStringDesc*, nsuEscape)(NimStringDesc* s, NimStringDesc* prefix, NimStringDesc* suffix);
N_NIMCALL(NimStringDesc*, getcompileoptions_204104)(void);
N_NIMCALL(NimStringDesc*, getlinkoptions_204113)(void);
N_NIMCALL(NimStringDesc*, nsuFormatSingleElem)(NimStringDesc* formatstr, NimStringDesc* a);
N_NIMCALL(void, writerope_179423)(trope178009* head, NimStringDesc* filename, NIM_BOOL usewarning);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP4211)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_CLOSURE(void, HEX3Aanonymous_204626)(NI idx, void* ClEnv);
N_NIMCALL(void, compilecfile_204422)(tlinkedlist127028 list, trope178009** script, TY119808** cmds, TY119808** prettycmds, NIM_BOOL isexternal);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(NI, nospcountProcessors)(void);
N_NIMCALL(NI, nospexecCmd)(NimStringDesc* command);
N_NIMCALL(NI, nospexecProcesses)(NimStringDesc** cmds, NI cmdsLen0, NU8 options_141800, NI n, TY204627 beforerunevent);
N_NIMCALL(void, rawmessage_198643)(NU16 msg, NimStringDesc** args, NI argsLen0);
static N_INLINE(NimStringDesc*, libnametmpl_203536)(void);
N_NIMCALL(NimStringDesc*, getlinkerexe_204242)(NU8 compiler);
N_NIMCALL(NimStringDesc*, expandtilde_125446)(NimStringDesc* path);
N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path);
N_NIMCALL(void, execexternalprogram_203907)(NimStringDesc* cmd, NimStringDesc* prettycmd);
N_NIMCALL(void, msgwriteln_198236)(NimStringDesc* s);
N_NIMCALL(void, generatescript_203931)(NimStringDesc* projectfile, trope178009* script);
N_NIMCALL(NimStringDesc*, HEX2F_117299)(NimStringDesc* head, NimStringDesc* tail);
N_NIMCALL(void, initlinkedlist_127043)(tlinkedlist127028* list);
STRING_LITERAL(TMP448, "", 0);
STRING_LITERAL(TMP1692, "crc", 3);
extern NIM_CONST TY175070 os_175069;
extern NIM_CONST TY175481 cpu_175480;
STRING_LITERAL(TMP1693, "gcc", 3);
STRING_LITERAL(TMP1694, "o", 1);
STRING_LITERAL(TMP1695, " -O3 -ffast-math ", 17);
STRING_LITERAL(TMP1696, " -Os -ffast-math ", 17);
STRING_LITERAL(TMP1697, "g++", 3);
STRING_LITERAL(TMP1698, "-c $options $include -o $objfile $file", 38);
STRING_LITERAL(TMP1699, " -mwindows", 10);
STRING_LITERAL(TMP1700, " -shared", 8);
STRING_LITERAL(TMP1701, "ar rcs $libfile $objfiles", 25);
STRING_LITERAL(TMP1702, "$buildgui $builddll -o $exefile $objfiles $options", 50);
STRING_LITERAL(TMP1703, " -I", 3);
STRING_LITERAL(TMP1704, " -L", 3);
STRING_LITERAL(TMP1705, " -l$1", 5);
STRING_LITERAL(TMP1706, "-fPIC", 5);
STRING_LITERAL(TMP1707, "asm($1);$n", 10);
STRING_LITERAL(TMP1708, "$1 $3 $2 ", 9);
STRING_LITERAL(TMP1709, "__attribute__((__packed__))", 27);
STRING_LITERAL(TMP1710, "llvm_gcc", 8);
STRING_LITERAL(TMP1711, "llvm-gcc", 8);
STRING_LITERAL(TMP1712, "llvm-g++", 8);
STRING_LITERAL(TMP1713, "llvm-ar rcs $libfile $objfiles", 30);
STRING_LITERAL(TMP1714, "clang", 5);
STRING_LITERAL(TMP1715, "clang++", 7);
STRING_LITERAL(TMP1716, "lcc", 3);
STRING_LITERAL(TMP1717, "obj", 3);
STRING_LITERAL(TMP1718, " -O -p6 ", 8);
STRING_LITERAL(TMP1719, "$options $include -Fo$objfile $file", 35);
STRING_LITERAL(TMP1720, " -subsystem windows", 19);
STRING_LITERAL(TMP1721, " -dll", 5);
STRING_LITERAL(TMP1722, "lcclnk", 6);
STRING_LITERAL(TMP1723, "$options $buildgui $builddll -O $exefile $objfiles", 50);
STRING_LITERAL(TMP1724, " -g5 ", 5);
STRING_LITERAL(TMP1725, "_asm{$n$1$n}$n", 14);
STRING_LITERAL(TMP1726, "$1 $2", 5);
STRING_LITERAL(TMP1727, "bcc", 3);
STRING_LITERAL(TMP1728, " -O2 -6 ", 8);
STRING_LITERAL(TMP1729, " -O1 -6 ", 8);
STRING_LITERAL(TMP1730, "bcc32", 5);
STRING_LITERAL(TMP1731, "-c $options $include -o$objfile $file", 37);
STRING_LITERAL(TMP1732, " -tW", 4);
STRING_LITERAL(TMP1733, " -tWD", 5);
STRING_LITERAL(TMP1734, "$options $buildgui $builddll -e$exefile $objfiles", 49);
STRING_LITERAL(TMP1735, "__asm{$n$1$n}$n", 15);
STRING_LITERAL(TMP1736, "dmc", 3);
STRING_LITERAL(TMP1737, " -ff -o -6 ", 11);
STRING_LITERAL(TMP1738, " -L/exet:nt/su:windows", 22);
STRING_LITERAL(TMP1739, " -WD", 4);
STRING_LITERAL(TMP1740, "$options $buildgui $builddll -o$exefile $objfiles", 49);
STRING_LITERAL(TMP1741, " -g ", 4);
STRING_LITERAL(TMP1742, "$3$n$1 $2", 9);
STRING_LITERAL(TMP1743, "#pragma pack(1)", 15);
STRING_LITERAL(TMP1744, "wcc", 3);
STRING_LITERAL(TMP1745, " -ox -on -6 -d0 -fp6 -zW ", 25);
STRING_LITERAL(TMP1746, "wcl386", 6);
STRING_LITERAL(TMP1747, "-c $options $include -fo=$objfile $file", 39);
STRING_LITERAL(TMP1748, " -bw", 4);
STRING_LITERAL(TMP1749, " -bd", 4);
STRING_LITERAL(TMP1750, "$options $buildgui $builddll -fe=$exefile $objfiles ", 52);
STRING_LITERAL(TMP1751, " -i=", 4);
STRING_LITERAL(TMP1752, " -d2 ", 5);
STRING_LITERAL(TMP1753, "vcc", 3);
STRING_LITERAL(TMP1754, " /Ogityb2 /G7 /arch:SSE2 ", 25);
STRING_LITERAL(TMP1755, " /O1 /G7 ", 9);
STRING_LITERAL(TMP1756, "cl", 2);
STRING_LITERAL(TMP1757, "/c $options $include /Fo$objfile $file", 38);
STRING_LITERAL(TMP1758, " /link /SUBSYSTEM:WINDOWS ", 26);
STRING_LITERAL(TMP1759, " /LD", 4);
STRING_LITERAL(TMP1760, "lib /OUT:$libfile $objfiles", 27);
STRING_LITERAL(TMP1761, "$options $builddll /Fe$exefile $objfiles $buildgui", 50);
STRING_LITERAL(TMP1762, " /I", 3);
STRING_LITERAL(TMP1763, " /LIBPATH:", 10);
STRING_LITERAL(TMP1764, " $1.lib", 7);
STRING_LITERAL(TMP1765, " /GZ /Zi ", 9);
STRING_LITERAL(TMP1766, "tcc", 3);
STRING_LITERAL(TMP1767, "UNAVAILABLE!", 12);
STRING_LITERAL(TMP1768, "-o $exefile $options $buildgui $builddll $objfiles", 50);
STRING_LITERAL(TMP1769, "pcc", 3);
STRING_LITERAL(TMP1770, " -Ox ", 5);
STRING_LITERAL(TMP1771, " -Os ", 5);
STRING_LITERAL(TMP1772, "cc", 2);
STRING_LITERAL(TMP1773, "-c $options $include -Fo$objfile $file", 38);
STRING_LITERAL(TMP1774, " -SUBSYSTEM:WINDOWS", 19);
STRING_LITERAL(TMP1775, " -DLL", 5);
STRING_LITERAL(TMP1776, "$options $buildgui $builddll -OUT:$exefile $objfiles", 52);
STRING_LITERAL(TMP1777, " -Zi ", 5);
STRING_LITERAL(TMP1778, "ucc", 3);
STRING_LITERAL(TMP1779, " -O3 ", 5);
STRING_LITERAL(TMP1780, " -O1 ", 5);
STRING_LITERAL(TMP1781, " -shared ", 9);
STRING_LITERAL(TMP1782, "-o $exefile $buildgui $builddll $objfiles $options", 50);
STRING_LITERAL(TMP1783, "icl", 3);
NIM_CONST TY203435 cc_203434 = {{((NimStringDesc*) &TMP1693),
((NimStringDesc*) &TMP1694),
((NimStringDesc*) &TMP1695),
((NimStringDesc*) &TMP1696),
((NimStringDesc*) &TMP1693),
((NimStringDesc*) &TMP1697),
((NimStringDesc*) &TMP1698),
((NimStringDesc*) &TMP1699),
((NimStringDesc*) &TMP1700),
((NimStringDesc*) &TMP1701),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1702),
((NimStringDesc*) &TMP1703),
((NimStringDesc*) &TMP1704),
((NimStringDesc*) &TMP1705),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1706),
((NimStringDesc*) &TMP1707),
((NimStringDesc*) &TMP1708),
((NimStringDesc*) &TMP1709),
183}
,
{((NimStringDesc*) &TMP1710),
((NimStringDesc*) &TMP1694),
((NimStringDesc*) &TMP1695),
((NimStringDesc*) &TMP1696),
((NimStringDesc*) &TMP1711),
((NimStringDesc*) &TMP1712),
((NimStringDesc*) &TMP1698),
((NimStringDesc*) &TMP1699),
((NimStringDesc*) &TMP1700),
((NimStringDesc*) &TMP1713),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1702),
((NimStringDesc*) &TMP1703),
((NimStringDesc*) &TMP1704),
((NimStringDesc*) &TMP1705),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1706),
((NimStringDesc*) &TMP1707),
((NimStringDesc*) &TMP1708),
((NimStringDesc*) &TMP1709),
183}
,
{((NimStringDesc*) &TMP1714),
((NimStringDesc*) &TMP1694),
((NimStringDesc*) &TMP1695),
((NimStringDesc*) &TMP1696),
((NimStringDesc*) &TMP1714),
((NimStringDesc*) &TMP1715),
((NimStringDesc*) &TMP1698),
((NimStringDesc*) &TMP1699),
((NimStringDesc*) &TMP1700),
((NimStringDesc*) &TMP1713),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1702),
((NimStringDesc*) &TMP1703),
((NimStringDesc*) &TMP1704),
((NimStringDesc*) &TMP1705),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1706),
((NimStringDesc*) &TMP1707),
((NimStringDesc*) &TMP1708),
((NimStringDesc*) &TMP1709),
183}
,
{((NimStringDesc*) &TMP1716),
((NimStringDesc*) &TMP1717),
((NimStringDesc*) &TMP1718),
((NimStringDesc*) &TMP1718),
((NimStringDesc*) &TMP1716),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1719),
((NimStringDesc*) &TMP1720),
((NimStringDesc*) &TMP1721),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1722),
((NimStringDesc*) &TMP1723),
((NimStringDesc*) &TMP1703),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1724),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1725),
((NimStringDesc*) &TMP1726),
((NimStringDesc*) &TMP448),
0}
,
{((NimStringDesc*) &TMP1727),
((NimStringDesc*) &TMP1717),
((NimStringDesc*) &TMP1728),
((NimStringDesc*) &TMP1729),
((NimStringDesc*) &TMP1730),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1731),
((NimStringDesc*) &TMP1732),
((NimStringDesc*) &TMP1733),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1730),
((NimStringDesc*) &TMP1734),
((NimStringDesc*) &TMP1703),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1735),
((NimStringDesc*) &TMP1726),
((NimStringDesc*) &TMP448),
4}
,
{((NimStringDesc*) &TMP1736),
((NimStringDesc*) &TMP1717),
((NimStringDesc*) &TMP1737),
((NimStringDesc*) &TMP1737),
((NimStringDesc*) &TMP1736),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1731),
((NimStringDesc*) &TMP1738),
((NimStringDesc*) &TMP1739),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1736),
((NimStringDesc*) &TMP1740),
((NimStringDesc*) &TMP1703),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1741),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1735),
((NimStringDesc*) &TMP1742),
((NimStringDesc*) &TMP1743),
4}
,
{((NimStringDesc*) &TMP1744),
((NimStringDesc*) &TMP1717),
((NimStringDesc*) &TMP1745),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1746),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1747),
((NimStringDesc*) &TMP1748),
((NimStringDesc*) &TMP1749),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1746),
((NimStringDesc*) &TMP1750),
((NimStringDesc*) &TMP1751),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1752),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1735),
((NimStringDesc*) &TMP1726),
((NimStringDesc*) &TMP448),
4}
,
{((NimStringDesc*) &TMP1753),
((NimStringDesc*) &TMP1717),
((NimStringDesc*) &TMP1754),
((NimStringDesc*) &TMP1755),
((NimStringDesc*) &TMP1756),
((NimStringDesc*) &TMP1756),
((NimStringDesc*) &TMP1757),
((NimStringDesc*) &TMP1758),
((NimStringDesc*) &TMP1759),
((NimStringDesc*) &TMP1760),
((NimStringDesc*) &TMP1756),
((NimStringDesc*) &TMP1761),
((NimStringDesc*) &TMP1762),
((NimStringDesc*) &TMP1763),
((NimStringDesc*) &TMP1764),
((NimStringDesc*) &TMP1765),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1735),
((NimStringDesc*) &TMP1742),
((NimStringDesc*) &TMP1743),
76}
,
{((NimStringDesc*) &TMP1766),
((NimStringDesc*) &TMP1694),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1766),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1698),
((NimStringDesc*) &TMP1767),
((NimStringDesc*) &TMP1700),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1766),
((NimStringDesc*) &TMP1768),
((NimStringDesc*) &TMP1703),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1741),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1735),
((NimStringDesc*) &TMP1726),
((NimStringDesc*) &TMP448),
3}
,
{((NimStringDesc*) &TMP1769),
((NimStringDesc*) &TMP1717),
((NimStringDesc*) &TMP1770),
((NimStringDesc*) &TMP1771),
((NimStringDesc*) &TMP1772),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1773),
((NimStringDesc*) &TMP1774),
((NimStringDesc*) &TMP1775),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1772),
((NimStringDesc*) &TMP1776),
((NimStringDesc*) &TMP1703),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1777),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1735),
((NimStringDesc*) &TMP1726),
((NimStringDesc*) &TMP448),
0}
,
{((NimStringDesc*) &TMP1778),
((NimStringDesc*) &TMP1694),
((NimStringDesc*) &TMP1779),
((NimStringDesc*) &TMP1780),
((NimStringDesc*) &TMP1772),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1698),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1781),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1772),
((NimStringDesc*) &TMP1782),
((NimStringDesc*) &TMP1703),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1735),
((NimStringDesc*) &TMP1726),
((NimStringDesc*) &TMP448),
0}
,
{((NimStringDesc*) &TMP1783),
((NimStringDesc*) &TMP1694),
((NimStringDesc*) &TMP1695),
((NimStringDesc*) &TMP1696),
((NimStringDesc*) &TMP1783),
((NimStringDesc*) &TMP1697),
((NimStringDesc*) &TMP1698),
((NimStringDesc*) &TMP1699),
((NimStringDesc*) &TMP1700),
((NimStringDesc*) &TMP1701),
((NimStringDesc*) &TMP1783),
((NimStringDesc*) &TMP1702),
((NimStringDesc*) &TMP1703),
((NimStringDesc*) &TMP1704),
((NimStringDesc*) &TMP1705),
((NimStringDesc*) &TMP448),
((NimStringDesc*) &TMP1706),
((NimStringDesc*) &TMP1707),
((NimStringDesc*) &TMP1708),
((NimStringDesc*) &TMP1709),
183}
}
;
STRING_LITERAL(TMP1784, ".debug", 6);
STRING_LITERAL(TMP1785, " ", 1);
STRING_LITERAL(TMP1786, ".cpp", 4);
STRING_LITERAL(TMP1787, ".options.debug", 14);
STRING_LITERAL(TMP1788, ".speed", 6);
STRING_LITERAL(TMP1789, ".options.speed", 14);
STRING_LITERAL(TMP1790, ".size", 5);
STRING_LITERAL(TMP1791, ".options.size", 13);
STRING_LITERAL(TMP1792, ".always", 7);
STRING_LITERAL(TMP1793, ".exe", 4);
STRING_LITERAL(TMP1794, "exe", 3);
STRING_LITERAL(TMP1799, "file", 4);
STRING_LITERAL(TMP1800, "objfile", 7);
STRING_LITERAL(TMP1801, "options", 7);
STRING_LITERAL(TMP1802, "include", 7);
STRING_LITERAL(TMP1803, "nimrod", 6);
STRING_LITERAL(TMP1804, "nim", 3);
STRING_LITERAL(TMP1805, "lib", 3);
STRING_LITERAL(TMP1806, "0", 1);
STRING_LITERAL(TMP1807, "\012", 1);
STRING_LITERAL(TMP1879, ".options.always", 15);
STRING_LITERAL(TMP1880, ".options.linker", 15);
STRING_LITERAL(TMP1881, ".path", 5);
STRING_LITERAL(TMP4197, "[C_Files]\012", 10);
STRING_LITERAL(TMP4198, "--file:r\"$1\"$N", 14);
STRING_LITERAL(TMP4199, "\012[C_Compiler]\012Flags=", 20);
STRING_LITERAL(TMP4200, "__dummy__", 9);
STRING_LITERAL(TMP4201, "\"", 1);
STRING_LITERAL(TMP4202, "\012[Linker]\012Flags=", 16);
STRING_LITERAL(TMP4203, "\012[Environment]\012libpath=", 23);
STRING_LITERAL(TMP4204, "\012[Symbols]$n$1", 14);
STRING_LITERAL(TMP4205, "mapping.txt", 11);
STRING_LITERAL(TMP4212, "CC: ", 4);
static NIM_CONST TY204627 TMP4218 = {NIM_NIL,NIM_NIL};
STRING_LITERAL(TMP4219, " execution of an external program failed; rerun with --parallel"
"Build:1 to see the error message", 95);
STRING_LITERAL(TMP4220, "libfile", 7);
STRING_LITERAL(TMP4221, "$1.lib", 6);
STRING_LITERAL(TMP4222, "lib$1.a", 7);
STRING_LITERAL(TMP4223, "objfiles", 8);
STRING_LITERAL(TMP4224, ".linkerexe", 10);
STRING_LITERAL(TMP4225, "builddll", 8);
STRING_LITERAL(TMP4226, "buildgui", 8);
STRING_LITERAL(TMP4227, "exefile", 7);
STRING_LITERAL(TMP4228, "[Linking]", 9);
STRING_LITERAL(TMP4229, "compile_", 8);
NU8 ccompiler_203461;
NIM_BOOL gmixedmode_203462;
TY119808* cincludes_203484;
extern TNimType NTI119808; /* seq[string] */
extern tgcheap47016 gch_47044;
TY119808* clibs_203506;
TY119808* clinkedlibs_203528;
tlinkedlist127028 tolink_203554;
tlinkedlist127028 tocompile_203555;
tlinkedlist127028 externaltocompile_203556;
NimStringDesc* linkoptions_203557;
NimStringDesc* compileoptions_203558;
NimStringDesc* ccompilerpath_203559;
NI filecounter_204026;
extern NU32 gglobaloptions_170118;
extern NU8 targetos_175589;
extern NU8 targetcpu_175587;
extern NU8 gcmd_170120;
extern NU8 hostos_175590;
extern NU8 hostcpu_175588;
extern NU32 goptions_170116;
extern NimStringDesc* libpath_170233;
extern NimStringDesc* gprojectpath_170235;
TNimType NTI204829; /* object */
extern TNimType NTI358033; /* range -1..0(int) */
TNimType NTI204854; /* ref object */
extern NimStringDesc* tnl_175613;
extern NI gnumberofprocessors_170128;
extern NI gverbosity_170127;
extern NimStringDesc* gprojectname_170234;
extern NimStringDesc* outfile_170124;

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

static N_INLINE(void, rtladdzct_50204)(tcell44933* c) {
	addzct_48617((&gch_47044.Zct), c);
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	tcell44933* c;
	c = usrtocell_48646(p);
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		rtladdzct_50204(c);
	}
	LA3: ;
}

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

N_NIMCALL(void, addopt_203787)(NimStringDesc** dest, NimStringDesc* src) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((*dest)->Sup.len == 0);
		if (LOC3) goto LA4;
		LOC3 = !(((NU8)((*dest)->data[(NI32)((*dest)->Sup.len - 1)]) == (NU8)(32)));
		LA4: ;
		if (!LOC3) goto LA5;
		(*dest) = resizeString((*dest), 1);
appendString((*dest), ((NimStringDesc*) &TMP1785));
	}
	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[((NI32)((*dest).Sup.len + 1))- 0] = 0;
	(*dest).Sup.len += 1;
}

N_NIMCALL(NimStringDesc*, getconfigvar_203655)(NU8 c, NimStringDesc* suffix) {
	NimStringDesc* result;
	NimStringDesc* fullsuffix;
	result = 0;
	{
		NimStringDesc* LOC5;
		if (!(gcmd_170120 == ((NU8) 2))) goto LA3;
		LOC5 = 0;
		LOC5 = rawNewString(suffix->Sup.len + 4);
appendString(LOC5, ((NimStringDesc*) &TMP1786));
appendString(LOC5, suffix);
		fullsuffix = LOC5;
	}
	goto LA1;
	LA3: ;
	{
		fullsuffix = suffix;
	}
	LA1: ;
	{
		NIM_BOOL LOC9;
		NIM_BOOL LOC10;
		NimStringDesc* fullccname;
		NimStringDesc* LOC15;
		LOC9 = 0;
		LOC10 = 0;
		LOC10 = !((hostos_175590 == targetos_175589));
		if (LOC10) goto LA11;
		LOC10 = !((hostcpu_175588 == targetcpu_175587));
		LA11: ;
		LOC9 = LOC10;
		if (!(LOC9)) goto LA12;
		LOC9 = !(((gglobaloptions_170118 &(1<<((((NU8) 4))&31)))!=0));
		LA12: ;
		if (!LOC9) goto LA13;
		LOC15 = 0;
		LOC15 = rawNewString(cpu_175480[(targetcpu_175587)- 1].Field0->Sup.len + os_175069[(targetos_175589)- 1].Field0->Sup.len + cc_203434[(c)- 1].Field0->Sup.len + fullsuffix->Sup.len + 2);
appendString(LOC15, cpu_175480[(targetcpu_175587)- 1].Field0);
appendChar(LOC15, 46);
appendString(LOC15, os_175069[(targetos_175589)- 1].Field0);
appendChar(LOC15, 46);
appendString(LOC15, cc_203434[(c)- 1].Field0);
appendString(LOC15, fullsuffix);
		fullccname = LOC15;
		result = getconfigvar_170350(fullccname);
		{
			NimStringDesc* LOC20;
			if (!(result->Sup.len == 0)) goto LA18;
			LOC20 = 0;
			LOC20 = rawNewString(cc_203434[(c)- 1].Field0->Sup.len + fullsuffix->Sup.len + 0);
appendString(LOC20, cc_203434[(c)- 1].Field0);
appendString(LOC20, fullsuffix);
			result = getconfigvar_170350(LOC20);
		}
		LA18: ;
	}
	goto LA7;
	LA13: ;
	{
		NimStringDesc* LOC22;
		LOC22 = 0;
		LOC22 = rawNewString(cc_203434[(c)- 1].Field0->Sup.len + fullsuffix->Sup.len + 0);
appendString(LOC22, cc_203434[(c)- 1].Field0);
appendString(LOC22, fullsuffix);
		result = getconfigvar_170350(LOC22);
	}
	LA7: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getdebug_203954)(NU8 c) {
	NimStringDesc* result;
	result = 0;
	result = getconfigvar_203655(c, ((NimStringDesc*) &TMP1787));
	{
		if (!((result) && (result)->Sup.len == 0)) goto LA3;
		result = copyString(cc_203434[(c)- 1].Field15);
	}
	LA3: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getoptspeed_203944)(NU8 c) {
	NimStringDesc* result;
	result = 0;
	result = getconfigvar_203655(c, ((NimStringDesc*) &TMP1789));
	{
		if (!((result) && (result)->Sup.len == 0)) goto LA3;
		result = copyString(cc_203434[(c)- 1].Field2);
	}
	LA3: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getoptsize_203964)(NU8 c) {
	NimStringDesc* result;
	result = 0;
	result = getconfigvar_203655(c, ((NimStringDesc*) &TMP1791));
	{
		if (!((result) && (result)->Sup.len == 0)) goto LA3;
		result = copyString(cc_203434[(c)- 1].Field3);
	}
	LA3: ;
	return result;
}

N_NIMCALL(NimStringDesc*, cfilespecificoptions_204043)(NimStringDesc* cfilename) {
	NimStringDesc* result;
	NimStringDesc* trunk;
	TY117604 LOC1;
	NimStringDesc* key;
	NimStringDesc* LOC40;
	result = 0;
	result = copyString(compileoptions_203558);
	memset((void*)(&LOC1), 0, sizeof(LOC1));
	nossplitFile(cfilename, (&LOC1));
	trunk = copyString(LOC1.Field1);
	{
		NimStringDesc* key;
		NimStringDesc* LOC6;
		if (!((gglobaloptions_170118 &(1<<((((NU8) 7))&31)))!=0)) goto LA4;
		LOC6 = 0;
		LOC6 = rawNewString(trunk->Sup.len + 6);
appendString(LOC6, trunk);
appendString(LOC6, ((NimStringDesc*) &TMP1784));
		key = LOC6;
		{
			NIM_BOOL LOC9;
			NimStringDesc* LOC12;
			LOC9 = 0;
			LOC9 = existsconfigvar_170340(key);
			if (!LOC9) goto LA10;
			LOC12 = 0;
			LOC12 = getconfigvar_170350(key);
			addopt_203787((&result), LOC12);
		}
		goto LA7;
		LA10: ;
		{
			NimStringDesc* LOC14;
			LOC14 = 0;
			LOC14 = getdebug_203954(ccompiler_203461);
			addopt_203787((&result), LOC14);
		}
		LA7: ;
	}
	LA4: ;
	{
		NimStringDesc* key;
		NimStringDesc* LOC19;
		if (!((goptions_170116 &(1<<((((NU8) 13))&31)))!=0)) goto LA17;
		LOC19 = 0;
		LOC19 = rawNewString(trunk->Sup.len + 6);
appendString(LOC19, trunk);
appendString(LOC19, ((NimStringDesc*) &TMP1788));
		key = LOC19;
		{
			NIM_BOOL LOC22;
			NimStringDesc* LOC25;
			LOC22 = 0;
			LOC22 = existsconfigvar_170340(key);
			if (!LOC22) goto LA23;
			LOC25 = 0;
			LOC25 = getconfigvar_170350(key);
			addopt_203787((&result), LOC25);
		}
		goto LA20;
		LA23: ;
		{
			NimStringDesc* LOC27;
			LOC27 = 0;
			LOC27 = getoptspeed_203944(ccompiler_203461);
			addopt_203787((&result), LOC27);
		}
		LA20: ;
	}
	goto LA15;
	LA17: ;
	{
		NimStringDesc* key;
		NimStringDesc* LOC31;
		if (!((goptions_170116 &(1<<((((NU8) 14))&31)))!=0)) goto LA29;
		LOC31 = 0;
		LOC31 = rawNewString(trunk->Sup.len + 5);
appendString(LOC31, trunk);
appendString(LOC31, ((NimStringDesc*) &TMP1790));
		key = LOC31;
		{
			NIM_BOOL LOC34;
			NimStringDesc* LOC37;
			LOC34 = 0;
			LOC34 = existsconfigvar_170340(key);
			if (!LOC34) goto LA35;
			LOC37 = 0;
			LOC37 = getconfigvar_170350(key);
			addopt_203787((&result), LOC37);
		}
		goto LA32;
		LA35: ;
		{
			NimStringDesc* LOC39;
			LOC39 = 0;
			LOC39 = getoptsize_203964(ccompiler_203461);
			addopt_203787((&result), LOC39);
		}
		LA32: ;
	}
	goto LA15;
	LA29: ;
	LA15: ;
	LOC40 = 0;
	LOC40 = rawNewString(trunk->Sup.len + 7);
appendString(LOC40, trunk);
appendString(LOC40, ((NimStringDesc*) &TMP1792));
	key = LOC40;
	{
		NIM_BOOL LOC43;
		NimStringDesc* LOC46;
		LOC43 = 0;
		LOC43 = existsconfigvar_170340(key);
		if (!LOC43) goto LA44;
		LOC46 = 0;
		LOC46 = getconfigvar_170350(key);
		addopt_203787((&result), LOC46);
	}
	LA44: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getcompilerexe_204223)(NU8 compiler) {
	NimStringDesc* result;
	result = 0;
	{
		if (!(gcmd_170120 == ((NU8) 2))) goto LA3;
		result = copyString(cc_203434[(compiler)- 1].Field5);
	}
	goto LA1;
	LA3: ;
	{
		result = copyString(cc_203434[(compiler)- 1].Field4);
	}
	LA1: ;
	{
		if (!(result->Sup.len == 0)) goto LA8;
		rawmessage_198733(((NU16) 228), cc_203434[(compiler)- 1].Field0);
	}
	LA8: ;
	return result;
}

static N_INLINE(NIM_BOOL, needsexeext_204183)(void) {
	NIM_BOOL result;
	NIM_BOOL LOC1;
	NIM_BOOL LOC2;
	result = 0;
	LOC1 = 0;
	LOC2 = 0;
	LOC2 = ((gglobaloptions_170118 &(1<<((((NU8) 11))&31)))!=0);
	if (!(LOC2)) goto LA3;
	LOC2 = (targetos_175589 == ((NU8) 2));
	LA3: ;
	LOC1 = LOC2;
	if (LOC1) goto LA4;
	LOC1 = (hostos_175590 == ((NU8) 2));
	LA4: ;
	result = LOC1;
	return result;
}

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

N_NIMCALL(void, add_204031)(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_203866)(NimStringDesc* filename) {
	NimStringDesc* result;
	result = 0;
	result = noschangeFileExt(filename, cc_203434[(ccompiler_203461)- 1].Field1);
	return result;
}

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

N_NIMCALL(NimStringDesc*, getcompilecfilecmd_204262)(NimStringDesc* cfilename, NIM_BOOL isexternal) {
	NimStringDesc* result;
	NU8 c;
	NimStringDesc* options;
	NimStringDesc* exe;
	NimStringDesc* includecmd;
	NimStringDesc* compilepattern;
	NimStringDesc* cfile;
	NimStringDesc* objfile;
	TY204322 LOC43;
	NimStringDesc* LOC44;
	TY204322 LOC45;
	NimStringDesc* LOC46;
	NimStringDesc* LOC47;
	result = 0;
	c = ccompiler_203461;
	options = cfilespecificoptions_204043(cfilename);
	exe = getconfigvar_203655(c, ((NimStringDesc*) &TMP1793));
	{
		if (!(exe->Sup.len == 0)) goto LA3;
		exe = getcompilerexe_204223(c);
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = needsexeext_204183();
		if (!LOC7) goto LA8;
		exe = nosaddFileExt(exe, ((NimStringDesc*) &TMP1794));
	}
	LA8: ;
	{
		NIM_BOOL LOC12;
		NimStringDesc* LOC16;
		LOC12 = 0;
		LOC12 = ((gglobaloptions_170118 &(1<<((((NU8) 8))&31)))!=0);
		if (!(LOC12)) goto LA13;
		LOC12 = ((os_175069[(targetos_175589)- 1].Field12 &(1<<((((NU8) 0))&7)))!=0);
		LA13: ;
		if (!LOC12) goto LA14;
		LOC16 = 0;
		LOC16 = rawNewString(cc_203434[(c)- 1].Field16->Sup.len + 1);
appendChar(LOC16, 32);
appendString(LOC16, cc_203434[(c)- 1].Field16);
		options = resizeString(options, LOC16->Sup.len + 0);
appendString(options, LOC16);
	}
	LA14: ;
	includecmd = 0;
	compilepattern = 0;
	{
		NIM_BOOL LOC19;
		NimStringDesc* LOC22;
		NimStringDesc* LOC23;
		LOC19 = 0;
		LOC19 = noabsolutepaths_203974();
		if (!!(LOC19)) goto LA20;
		LOC22 = 0;
		LOC23 = 0;
		LOC23 = nospquoteShell(libpath_170233);
		LOC22 = rawNewString(cc_203434[(c)- 1].Field12->Sup.len + LOC23->Sup.len + 0);
appendString(LOC22, cc_203434[(c)- 1].Field12);
appendString(LOC22, LOC23);
		includecmd = LOC22;
		{
			NimStringDesc* includedir_204310;
			NI i_204334;
			NI l_204336;
			includedir_204310 = 0;
			i_204334 = 0;
			l_204336 = cincludes_203484->Sup.len;
			{
				while (1) {
					TY170969 LOC27;
					if (!(i_204334 < l_204336)) goto LA26;
					includedir_204310 = cincludes_203484->data[i_204334];
					memset((void*)LOC27, 0, sizeof(LOC27));
					LOC27[0] = copyString(cc_203434[(c)- 1].Field12);
					LOC27[1] = nospquoteShell(includedir_204310);
					add_204031((&includecmd), LOC27, 2);
					i_204334 += 1;
				} LA26: ;
			}
		}
		compilepattern = nosjoinPath(ccompilerpath_203559, exe);
	}
	goto LA17;
	LA20: ;
	{
		includecmd = copyString(((NimStringDesc*) &TMP448));
		compilepattern = getcompilerexe_204223(c);
	}
	LA17: ;
	{
		NIM_BOOL LOC31;
		LOC31 = 0;
		LOC31 = noabsolutepaths_203974();
		if (!LOC31) goto LA32;
		cfile = nosextractFilename(cfilename);
	}
	goto LA29;
	LA32: ;
	{
		cfile = copyString(cfilename);
	}
	LA29: ;
	{
		NIM_BOOL LOC37;
		LOC37 = 0;
		LOC37 = !(isexternal);
		if (LOC37) goto LA38;
		LOC37 = noabsolutepaths_203974();
		LA38: ;
		if (!LOC37) goto LA39;
		objfile = toobjfile_203866(cfile);
	}
	goto LA35;
	LA39: ;
	{
		NimStringDesc* LOC42;
		LOC42 = 0;
		LOC42 = toobjfile_203866(cfile);
		objfile = completecfilepath_203855(LOC42, NIM_TRUE);
	}
	LA35: ;
	objfile = nospquoteShell(objfile);
	memset((void*)LOC43, 0, sizeof(LOC43));
	LOC43[0] = copyString(((NimStringDesc*) &TMP1799));
	LOC43[1] = copyString(cfile);
	LOC43[2] = copyString(((NimStringDesc*) &TMP1800));
	LOC43[3] = copyString(objfile);
	LOC43[4] = copyString(((NimStringDesc*) &TMP1801));
	LOC43[5] = copyString(options);
	LOC43[6] = copyString(((NimStringDesc*) &TMP1802));
	LOC43[7] = copyString(includecmd);
	LOC43[8] = copyString(((NimStringDesc*) &TMP1803));
	LOC43[9] = getprefixdir_170381();
	LOC43[10] = copyString(((NimStringDesc*) &TMP1804));
	LOC43[11] = getprefixdir_170381();
	LOC43[12] = copyString(((NimStringDesc*) &TMP1805));
	LOC43[13] = copyString(libpath_170233);
	LOC44 = 0;
	LOC44 = nsuFormatOpenArray(compilepattern, LOC43, 14);
	result = nospquoteShell(LOC44);
	result = addChar(result, 32);
	memset((void*)LOC45, 0, sizeof(LOC45));
	LOC45[0] = copyString(((NimStringDesc*) &TMP1799));
	LOC45[1] = copyString(cfile);
	LOC45[2] = copyString(((NimStringDesc*) &TMP1800));
	LOC45[3] = copyString(objfile);
	LOC45[4] = copyString(((NimStringDesc*) &TMP1801));
	LOC45[5] = copyString(options);
	LOC45[6] = copyString(((NimStringDesc*) &TMP1802));
	LOC45[7] = copyString(includecmd);
	LOC45[8] = copyString(((NimStringDesc*) &TMP1803));
	LOC46 = 0;
	LOC46 = getprefixdir_170381();
	LOC45[9] = nospquoteShell(LOC46);
	LOC45[10] = copyString(((NimStringDesc*) &TMP1804));
	LOC47 = 0;
	LOC47 = getprefixdir_170381();
	LOC45[11] = nospquoteShell(LOC47);
	LOC45[12] = copyString(((NimStringDesc*) &TMP1805));
	LOC45[13] = nospquoteShell(libpath_170233);
	nsuAddf((&result), cc_203434[(c)- 1].Field6, LOC45, 14);
	return result;
}

N_NIMCALL(NI32, footprint_204352)(NimStringDesc* filename) {
	NI32 result;
	NI32 LOC1;
	NI32 LOC2;
	NI32 LOC3;
	NI32 LOC4;
	NimStringDesc* LOC5;
	result = 0;
	LOC1 = 0;
	LOC1 = crcfromfile_177046(filename);
	LOC2 = 0;
	LOC2 = HEX3EHEX3C_177533(LOC1, os_175069[(targetos_175589)- 1].Field0);
	LOC3 = 0;
	LOC3 = HEX3EHEX3C_177533(LOC2, cpu_175480[(targetcpu_175587)- 1].Field0);
	LOC4 = 0;
	LOC4 = HEX3EHEX3C_177533(LOC3, cc_203434[(ccompiler_203461)- 1].Field0);
	LOC5 = 0;
	LOC5 = getcompilecfilecmd_204262(filename, NIM_TRUE);
	result = HEX3EHEX3C_177533(LOC4, LOC5);
	return result;
}

static N_INLINE(void, writeln_171205)(FILE* f_171209, NimStringDesc** x_171213, NI x_171213Len0) {
	{
		NimStringDesc* i_171226;
		NI i_171234;
		i_171226 = 0;
		i_171234 = 0;
		{
			while (1) {
				if (!(i_171234 < x_171213Len0)) goto LA3;
				i_171226 = x_171213[i_171234];
				write_12865(f_171209, i_171226);
				i_171234 += 1;
			} LA3: ;
		}
	}
	write_12865(f_171209, ((NimStringDesc*) &TMP1807));
}

N_NIMCALL(NIM_BOOL, externalfilechanged_204362)(NimStringDesc* filename) {
	NIM_BOOL result;
	NimStringDesc* crcfile;
	NimStringDesc* LOC1;
	NI currentcrc;
	NI32 LOC2;
	FILE* f;
	result = 0;
	LOC1 = 0;
	LOC1 = withpackagename_170946(filename);
	crcfile = togeneratedfile_170960(LOC1, ((NimStringDesc*) &TMP1692));
	LOC2 = 0;
	LOC2 = footprint_204352(filename);
	currentcrc = ((NI) (LOC2));
	f = 0;
	{
		NIM_BOOL LOC5;
		NimStringDesc* line;
		NI oldcrc;
		LOC5 = 0;
		LOC5 = open_12603(&f, crcfile, ((NU8) 0), -1);
		if (!LOC5) goto LA6;
		line = rawNewString(40);
		{
			NIM_BOOL LOC10;
			LOC10 = 0;
			LOC10 = readline_12889(f, (&line));
			if (!!(LOC10)) goto LA11;
			line = copyString(((NimStringDesc*) &TMP1806));
		}
		LA11: ;
		fclose(f);
		oldcrc = nsuParseInt(line);
		result = !((oldcrc == currentcrc));
	}
	goto LA3;
	LA6: ;
	{
		result = NIM_TRUE;
	}
	LA3: ;
	{
		if (!result) goto LA16;
		{
			NIM_BOOL LOC20;
			TY198301 LOC23;
			LOC20 = 0;
			LOC20 = open_12603(&f, crcfile, ((NU8) 1), -1);
			if (!LOC20) goto LA21;
			memset((void*)LOC23, 0, sizeof(LOC23));
			LOC23[0] = nimIntToStr(currentcrc);
			writeln_171205(f, LOC23, 1);
			fclose(f);
		}
		LA21: ;
	}
	LA16: ;
	return result;
}

N_NIMCALL(void, addexternalfiletocompile_204399)(NimStringDesc* filename) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((gglobaloptions_170118 &(1<<((((NU8) 1))&31)))!=0);
		if (LOC3) goto LA4;
		LOC3 = externalfilechanged_204362(filename);
		LA4: ;
		if (!LOC3) goto LA5;
		appendstr_127286((&externaltocompile_203556), filename);
	}
	LA5: ;
}

N_NIMCALL(void, addfiletolink_203897)(NimStringDesc* filename) {
	prependstr_127424((&tolink_203554), filename);
}

N_NIMCALL(void, addcompileoption_203809)(NimStringDesc* option) {
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = nsuFindStr(compileoptions_203558, option, 0);
		if (!(LOC3 < 0)) goto LA4;
		addopt_203787((&compileoptions_203558), option);
	}
	LA4: ;
}

N_NIMCALL(void, addlinkoption_203798)(NimStringDesc* option) {
	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = nsuFindStr(linkoptions_203557, option, 0);
		if (!(LOC3 < 0)) goto LA4;
		addopt_203787((&linkoptions_203557), option);
	}
	LA4: ;
}

N_NIMCALL(NU8, nametocc_203569)(NimStringDesc* name) {
	NU8 result;
	result = 0;
	{
		NU8 i_203633;
		NU8 res_203638;
		i_203633 = 0;
		res_203638 = ((NU8) 1);
		{
			while (1) {
				if (!(res_203638 <= ((NU8) 12))) goto LA3;
				i_203633 = res_203638;
				{
					NI LOC6;
					LOC6 = 0;
					LOC6 = nsuCmpIgnoreStyle(name, cc_203434[(i_203633)- 1].Field0);
					if (!(LOC6 == 0)) goto LA7;
					result = i_203633;
					goto BeforeRet;
				}
				LA7: ;
				res_203638 += 1;
			} LA3: ;
		}
	}
	result = ((NU8) 0);
	BeforeRet: ;
	return result;
}

static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src) {
	{
		tcell44933* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_48646(src);
		(*c).Refcount += 8;
	}
	LA3: ;
	{
		tcell44933* c;
		if (!!(((*dest) == NIM_NIL))) goto LA7;
		c = usrtocell_48646((*dest));
		{
			(*c).Refcount -= 8;
			if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA11;
			rtladdzct_50204(c);
		}
		LA11: ;
	}
	LA7: ;
	(*dest) = src;
}

N_NIMCALL(void, setcc_203708)(NimStringDesc* ccname) {
	ccompiler_203461 = nametocc_203569(ccname);
	{
		if (!(ccompiler_203461 == ((NU8) 0))) goto LA3;
		rawmessage_198733(((NU16) 49), ccname);
	}
	LA3: ;
	asgnRefNoCycle((void**) (&compileoptions_203558), getconfigvar_203655(ccompiler_203461, ((NimStringDesc*) &TMP1879)));
	asgnRefNoCycle((void**) (&linkoptions_203557), getconfigvar_203655(ccompiler_203461, ((NimStringDesc*) &TMP1880)));
	asgnRefNoCycle((void**) (&ccompilerpath_203559), getconfigvar_203655(ccompiler_203461, ((NimStringDesc*) &TMP1881)));
	{
		NU8 i_203766;
		NU8 res_203770;
		i_203766 = 0;
		res_203770 = ((NU8) 1);
		{
			while (1) {
				if (!(res_203770 <= ((NU8) 12))) goto LA7;
				i_203766 = res_203770;
				undefsymbol_202027(cc_203434[(i_203766)- 1].Field0);
				res_203770 += 1;
			} LA7: ;
		}
	}
	definesymbol_202009(cc_203434[(ccompiler_203461)- 1].Field0);
}

N_NIMCALL(void, initvars_203820)(void) {
	NimStringDesc* LOC4;
	NimStringDesc* LOC5;
	{
		NU8 i_203834;
		NU8 res_203838;
		i_203834 = 0;
		res_203838 = ((NU8) 1);
		{
			while (1) {
				if (!(res_203838 <= ((NU8) 12))) goto LA3;
				i_203834 = res_203838;
				undefsymbol_202027(cc_203434[(i_203834)- 1].Field0);
				res_203838 += 1;
			} LA3: ;
		}
	}
	definesymbol_202009(cc_203434[(ccompiler_203461)- 1].Field0);
	LOC4 = 0;
	LOC4 = getconfigvar_203655(ccompiler_203461, ((NimStringDesc*) &TMP1879));
	addcompileoption_203809(LOC4);
	LOC5 = 0;
	LOC5 = getconfigvar_203655(ccompiler_203461, ((NimStringDesc*) &TMP1880));
	addlinkoption_203798(LOC5);
	{
		if (!(ccompilerpath_203559->Sup.len == 0)) goto LA8;
		asgnRefNoCycle((void**) (&ccompilerpath_203559), getconfigvar_203655(ccompiler_203461, ((NimStringDesc*) &TMP1881)));
	}
	LA8: ;
}

N_NIMCALL(void, addfiletocompile_203876)(NimStringDesc* filename) {
	appendstr_127286((&tocompile_203555), filename);
}

N_NIMCALL(trope178009*, genmappingfiles_204858)(tlinkedlist127028 list) {
	trope178009* result;
	tstrentry127024* it;
	result = 0;
	it = ((tstrentry127024*) (list.Head));
	{
		while (1) {
			TY178515 LOC3;
			if (!!((it == NIM_NIL))) goto LA2;
			memset((void*)LOC3, 0, sizeof(LOC3));
			LOC3[0] = torope_178076((*it).Data);
			appf_178115(&result, ((NimStringDesc*) &TMP4198), LOC3, 1);
			it = ((tstrentry127024*) ((*it).Sup.Next));
		} LA2: ;
	}
	return result;
}

N_NIMCALL(NimStringDesc*, getcompileoptions_204104)(void) {
	NimStringDesc* result;
	result = 0;
	result = cfilespecificoptions_204043(((NimStringDesc*) &TMP4200));
	return result;
}

N_NIMCALL(NimStringDesc*, getlinkoptions_204113)(void) {
	NimStringDesc* result;
	result = 0;
	result = copyString(linkoptions_203557);
	{
		NimStringDesc* linkedlib_204128;
		NI i_204150;
		NI l_204152;
		linkedlib_204128 = 0;
		i_204150 = 0;
		l_204152 = clinkedlibs_203528->Sup.len;
		{
			while (1) {
				NimStringDesc* LOC4;
				NimStringDesc* LOC5;
				if (!(i_204150 < l_204152)) goto LA3;
				linkedlib_204128 = clinkedlibs_203528->data[i_204150];
				LOC4 = 0;
				LOC4 = nospquoteShell(linkedlib_204128);
				LOC5 = 0;
				LOC5 = nsuFormatSingleElem(cc_203434[(ccompiler_203461)- 1].Field14, LOC4);
				result = resizeString(result, LOC5->Sup.len + 0);
appendString(result, LOC5);
				i_204150 += 1;
			} LA3: ;
		}
	}
	{
		NimStringDesc* libdir_204141;
		NI i_204156;
		NI l_204158;
		libdir_204141 = 0;
		i_204156 = 0;
		l_204158 = clibs_203506->Sup.len;
		{
			while (1) {
				TY170969 LOC9;
				if (!(i_204156 < l_204158)) goto LA8;
				libdir_204141 = clibs_203506->data[i_204156];
				memset((void*)LOC9, 0, sizeof(LOC9));
				LOC9[0] = copyString(cc_203434[(ccompiler_203461)- 1].Field13);
				LOC9[1] = nospquoteShell(libdir_204141);
				add_204031((&result), LOC9, 2);
				i_204156 += 1;
			} LA8: ;
		}
	}
	return result;
}

N_NIMCALL(void, writemapping_204898)(trope178009* gsymbolmapping) {
	trope178009* code;
	trope178009* LOC5;
	trope178009* LOC6;
	NimStringDesc* LOC7;
	NimStringDesc* LOC8;
	NimStringDesc* LOC9;
	NimStringDesc* LOC10;
	NimStringDesc* LOC11;
	TY178515 LOC12;
	NimStringDesc* LOC13;
	{
		if (!!(((gglobaloptions_170118 &(1<<((((NU8) 12))&31)))!=0))) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	code = torope_178076(((NimStringDesc*) &TMP4197));
	LOC5 = 0;
	LOC5 = genmappingfiles_204858(tocompile_203555);
	app_178052(&code, LOC5);
	LOC6 = 0;
	LOC6 = genmappingfiles_204858(externaltocompile_203556);
	app_178052(&code, LOC6);
	app_178060(&code, ((NimStringDesc*) &TMP4199));
	LOC7 = 0;
	LOC7 = getcompileoptions_204104();
	LOC8 = 0;
	LOC8 = nsuEscape(LOC7, ((NimStringDesc*) &TMP4201), ((NimStringDesc*) &TMP4201));
	app_178060(&code, LOC8);
	app_178060(&code, ((NimStringDesc*) &TMP4202));
	LOC9 = 0;
	LOC9 = getlinkoptions_204113();
	LOC10 = 0;
	LOC10 = nsuEscape(LOC9, ((NimStringDesc*) &TMP4201), ((NimStringDesc*) &TMP4201));
	app_178060(&code, LOC10);
	app_178060(&code, ((NimStringDesc*) &TMP4203));
	LOC11 = 0;
	LOC11 = nsuEscape(libpath_170233, ((NimStringDesc*) &TMP4201), ((NimStringDesc*) &TMP4201));
	app_178060(&code, LOC11);
	memset((void*)LOC12, 0, sizeof(LOC12));
	LOC12[0] = gsymbolmapping;
	appf_178115(&code, ((NimStringDesc*) &TMP4204), LOC12, 1);
	LOC13 = 0;
	LOC13 = nosjoinPath(gprojectpath_170235, ((NimStringDesc*) &TMP4205));
	writerope_179423(code, LOC13, NIM_FALSE);
	BeforeRet: ;
}
N_NIMCALL(void, TMP4211)(void* p, NI op) {
	TY204829* a;
	a = (TY204829*)p;
	nimGCvisit((void*)(*a).Prettycmds204625, op);
}

N_CLOSURE(void, HEX3Aanonymous_204626)(NI idx, void* ClEnv) {
	TY204829* HEX3Aenvp_204835;
	HEX3Aenvp_204835 = (TY204829*) ClEnv;
	printf("%s\012", ((*HEX3Aenvp_204835).Prettycmds204625->data[idx])->data);
}

N_NIMCALL(void, compilecfile_204422)(tlinkedlist127028 list, trope178009** script, TY119808** cmds, TY119808** prettycmds, NIM_BOOL isexternal) {
	tstrentry127024* it;
	it = ((tstrentry127024*) (list.Head));
	{
		while (1) {
			NimStringDesc* compilecmd;
			if (!!((it == NIM_NIL))) goto LA2;
			filecounter_204026 += 1;
			compilecmd = getcompilecfilecmd_204262((*it).Data, isexternal);
			{
				NimStringDesc* LOC7;
				TY117604 LOC8;
				NimStringDesc* dir;
				NimStringDesc* name;
				NimStringDesc* ext;
				NimStringDesc* LOC9;
				NimStringDesc* LOC10;
				if (!!(((gglobaloptions_170118 &(1<<((((NU8) 4))&31)))!=0))) goto LA5;
				(*cmds) = (TY119808*) incrSeq(&((*cmds))->Sup, sizeof(NimStringDesc*));
				LOC7 = 0;
				LOC7 = (*cmds)->data[(*cmds)->Sup.len-1]; (*cmds)->data[(*cmds)->Sup.len-1] = copyStringRC1(compilecmd);
				if (LOC7) nimGCunrefNoCycle(LOC7);
				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*) &TMP4212));
appendString(LOC9, name);
				(*prettycmds) = (TY119808*) incrSeq(&((*prettycmds))->Sup, sizeof(NimStringDesc*));
				LOC10 = 0;
				LOC10 = (*prettycmds)->data[(*prettycmds)->Sup.len-1]; (*prettycmds)->data[(*prettycmds)->Sup.len-1] = copyStringRC1(LOC9);
				if (LOC10) nimGCunrefNoCycle(LOC10);
			}
			LA5: ;
			{
				if (!((gglobaloptions_170118 &(1<<((((NU8) 11))&31)))!=0)) goto LA13;
				app_178060(script, compilecmd);
				app_178060(script, tnl_175613);
			}
			LA13: ;
			it = ((tstrentry127024*) ((*it).Sup.Next));
		} LA2: ;
	}
}

static N_INLINE(NimStringDesc*, libnametmpl_203536)(void) {
	NimStringDesc* result;
	result = 0;
	{
		if (!(targetos_175589 == ((NU8) 2))) goto LA3;
		result = copyString(((NimStringDesc*) &TMP4221));
	}
	goto LA1;
	LA3: ;
	{
		result = copyString(((NimStringDesc*) &TMP4222));
	}
	LA1: ;
	return result;
}

N_NIMCALL(NimStringDesc*, getlinkerexe_204242)(NU8 compiler) {
	NimStringDesc* result;
	result = 0;
	{
		if (!(0 < cc_203434[(compiler)- 1].Field10->Sup.len)) goto LA3;
		result = copyString(cc_203434[(compiler)- 1].Field10);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = gmixedmode_203462;
		if (!(LOC6)) goto LA7;
		LOC6 = !((gcmd_170120 == ((NU8) 2)));
		LA7: ;
		if (!LOC6) goto LA8;
		result = copyString(cc_203434[(compiler)- 1].Field5);
	}
	goto LA1;
	LA8: ;
	{
		result = getcompilerexe_204223(compiler);
	}
	LA1: ;
	return result;
}

N_NIMCALL(void, execexternalprogram_203907)(NimStringDesc* cmd, NimStringDesc* prettycmd) {
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = ((gglobaloptions_170118 &(1<<((((NU8) 3))&31)))!=0);
		if (LOC3) goto LA4;
		LOC3 = (0 < gverbosity_170127);
		LA4: ;
		if (!LOC3) goto LA5;
		{
			if (!!(((prettycmd) && (prettycmd)->Sup.len == 0))) goto LA9;
			msgwriteln_198236(prettycmd);
		}
		goto LA7;
		LA9: ;
		{
			msgwriteln_198236(cmd);
		}
		LA7: ;
	}
	LA5: ;
	{
		NI LOC14;
		LOC14 = 0;
		LOC14 = nospexecCmd(cmd);
		if (!!((LOC14 == 0))) goto LA15;
		rawmessage_198733(((NU16) 65), ((NimStringDesc*) &TMP448));
	}
	LA15: ;
}

N_NIMCALL(void, generatescript_203931)(NimStringDesc* projectfile, trope178009* script) {
	TY117604 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*) &TMP4229));
appendString(LOC2, name);
	LOC3 = 0;
	LOC3 = nosaddFileExt(LOC2, os_175069[(targetos_175589)- 1].Field8);
	LOC4 = 0;
	LOC4 = HEX2F_117299(dir, LOC3);
	writerope_179423(script, LOC4, NIM_FALSE);
}

N_NIMCALL(void, callccompiler_204541)(NimStringDesc* projectfile) {
	TY204829* HEX3Aenv_204853;
	NimStringDesc* linkcmd;
	NimStringDesc* buildgui;
	NimStringDesc* builddll;
	NU8 c;
	trope178009* script;
	TY119808* cmds;
	TY204627 prettycb;
	TY204627 LOC5;
	HEX3Aenv_204853 = 0;
	HEX3Aenv_204853 = (TY204829*) newObj((&NTI204854), sizeof(TY204829));
	linkcmd = 0;
	buildgui = 0;
	builddll = 0;
	{
		if (!((gglobaloptions_170118 & 2064) == 16)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	filecounter_204026 = 0;
	c = ccompiler_203461;
	script = NIM_NIL;
	cmds = (TY119808*) newSeq((&NTI119808), 0);
	if ((*HEX3Aenv_204853).Prettycmds204625) nimGCunrefNoCycle((*HEX3Aenv_204853).Prettycmds204625);
	(*HEX3Aenv_204853).Prettycmds204625 = (TY119808*) newSeqRC1((&NTI119808), 0);
	memset((void*)(&prettycb), 0, sizeof(prettycb));
	memset((void*)(&LOC5), 0, sizeof(LOC5));
	LOC5.ClPrc = HEX3Aanonymous_204626; LOC5.ClEnv = HEX3Aenv_204853;
	prettycb.ClEnv = LOC5.ClEnv;
	prettycb.ClPrc = LOC5.ClPrc;
	compilecfile_204422(tocompile_203555, &script, (&cmds), (&(*HEX3Aenv_204853).Prettycmds204625), NIM_FALSE);
	compilecfile_204422(externaltocompile_203556, &script, (&cmds), (&(*HEX3Aenv_204853).Prettycmds204625), NIM_TRUE);
	{
		NI res;
		if (!!(((gglobaloptions_170118 &(1<<((((NU8) 4))&31)))!=0))) goto LA8;
		{
			if (!(gnumberofprocessors_170128 == 0)) goto LA12;
			gnumberofprocessors_170128 = nospcountProcessors();
		}
		LA12: ;
		res = 0;
		{
			if (!(gnumberofprocessors_170128 <= 1)) goto LA16;
			{
				NI i_204666;
				NI HEX3Atmp_204822;
				NI res_204825;
				i_204666 = 0;
				HEX3Atmp_204822 = 0;
				HEX3Atmp_204822 = (cmds->Sup.len-1);
				res_204825 = 0;
				{
					while (1) {
						NI LOC21;
						if (!(res_204825 <= HEX3Atmp_204822)) goto LA20;
						i_204666 = res_204825;
						LOC21 = 0;
						LOC21 = nospexecCmd(cmds->data[i_204666]);
						res = ((LOC21 >= res) ? LOC21 : res);
						res_204825 += 1;
					} LA20: ;
				}
			}
		}
		goto LA14;
		LA16: ;
		{
			NIM_BOOL LOC23;
			LOC23 = 0;
			LOC23 = ((gglobaloptions_170118 &(1<<((((NU8) 3))&31)))!=0);
			if (LOC23) goto LA24;
			LOC23 = (1 < gverbosity_170127);
			LA24: ;
			if (!LOC23) goto LA25;
			res = nospexecProcesses(cmds->data, cmds->Sup.len, 19, gnumberofprocessors_170128, TMP4218);
		}
		goto LA14;
		LA25: ;
		{
			if (!(gverbosity_170127 == 1)) goto LA28;
			res = nospexecProcesses(cmds->data, cmds->Sup.len, 18, gnumberofprocessors_170128, prettycb);
		}
		goto LA14;
		LA28: ;
		{
			res = nospexecProcesses(cmds->data, cmds->Sup.len, 18, gnumberofprocessors_170128, TMP4218);
		}
		LA14: ;
		{
			if (!!((res == 0))) goto LA33;
			{
				TY261532 LOC39;
				if (!(gnumberofprocessors_170128 <= 1)) goto LA37;
				memset((void*)LOC39, 0, sizeof(LOC39));
				rawmessage_198643(((NU16) 65), LOC39, 0);
			}
			goto LA35;
			LA37: ;
			{
				rawmessage_198733(((NU16) 4), ((NimStringDesc*) &TMP4219));
			}
			LA35: ;
		}
		LA33: ;
	}
	LA8: ;
	{
		tstrentry127024* it;
		NimStringDesc* objfiles;
		if (!!(((gglobaloptions_170118 &(1<<((((NU8) 5))&31)))!=0))) goto LA43;
		it = ((tstrentry127024*) (tolink_203554.Head));
		objfiles = copyString(((NimStringDesc*) &TMP448));
		{
			while (1) {
				NimStringDesc* objfile;
				NimStringDesc* LOC53;
				NimStringDesc* LOC54;
				if (!!((it == NIM_NIL))) goto LA46;
				{
					NIM_BOOL LOC49;
					LOC49 = 0;
					LOC49 = noabsolutepaths_203974();
					if (!LOC49) goto LA50;
					objfile = nosextractFilename((*it).Data);
				}
				goto LA47;
				LA50: ;
				{
					objfile = (*it).Data;
				}
				LA47: ;
				objfiles = addChar(objfiles, 32);
				LOC53 = 0;
				LOC53 = nosaddFileExt(objfile, cc_203434[(ccompiler_203461)- 1].Field1);
				LOC54 = 0;
				LOC54 = nospquoteShell(LOC53);
				objfiles = resizeString(objfiles, LOC54->Sup.len + 0);
appendString(objfiles, LOC54);
				it = ((tstrentry127024*) ((*it).Sup.Next));
			} LA46: ;
		}
		{
			TY198620 LOC59;
			NimStringDesc* LOC60;
			if (!((gglobaloptions_170118 &(1<<((((NU8) 9))&31)))!=0)) goto LA57;
			memset((void*)LOC59, 0, sizeof(LOC59));
			LOC59[0] = copyString(((NimStringDesc*) &TMP4220));
			LOC60 = 0;
			LOC60 = libnametmpl_203536();
			LOC59[1] = nsuFormatSingleElem(LOC60, gprojectname_170234);
			LOC59[2] = copyString(((NimStringDesc*) &TMP4223));
			LOC59[3] = copyString(objfiles);
			linkcmd = nsuFormatOpenArray(cc_203434[(c)- 1].Field9, LOC59, 4);
		}
		goto LA55;
		LA57: ;
		{
			NimStringDesc* linkerexe;
			NimStringDesc* exefile;
			NimStringDesc* linkoptions;
			TY204322 LOC106;
			NimStringDesc* LOC107;
			TY204322 LOC108;
			NimStringDesc* LOC109;
			linkerexe = getconfigvar_203655(c, ((NimStringDesc*) &TMP4224));
			{
				if (!(linkerexe->Sup.len == 0)) goto LA64;
				linkerexe = getlinkerexe_204242(c);
			}
			LA64: ;
			{
				NIM_BOOL LOC68;
				LOC68 = 0;
				LOC68 = needsexeext_204183();
				if (!LOC68) goto LA69;
				linkerexe = nosaddFileExt(linkerexe, ((NimStringDesc*) &TMP1794));
			}
			LA69: ;
			{
				NIM_BOOL LOC73;
				LOC73 = 0;
				LOC73 = noabsolutepaths_203974();
				if (!LOC73) goto LA74;
				linkcmd = nospquoteShell(linkerexe);
			}
			goto LA71;
			LA74: ;
			{
				NimStringDesc* LOC77;
				LOC77 = 0;
				LOC77 = nosjoinPath(ccompilerpath_203559, linkerexe);
				linkcmd = nospquoteShell(LOC77);
			}
			LA71: ;
			{
				if (!((gglobaloptions_170118 &(1<<((((NU8) 10))&31)))!=0)) goto LA80;
				buildgui = copyString(cc_203434[(c)- 1].Field7);
			}
			goto LA78;
			LA80: ;
			{
				buildgui = copyString(((NimStringDesc*) &TMP448));
			}
			LA78: ;
			exefile = 0;
			{
				TY117604 LOC87;
				if (!((gglobaloptions_170118 &(1<<((((NU8) 8))&31)))!=0)) goto LA85;
				memset((void*)(&LOC87), 0, sizeof(LOC87));
				nossplitFile(projectfile, (&LOC87));
				exefile = nsuFormatSingleElem(os_175069[(targetos_175589)- 1].Field2, LOC87.Field1);
				builddll = copyString(cc_203434[(c)- 1].Field8);
			}
			goto LA83;
			LA85: ;
			{
				NimStringDesc* LOC89;
				TY117604 LOC90;
				LOC89 = 0;
				memset((void*)(&LOC90), 0, sizeof(LOC90));
				nossplitFile(projectfile, (&LOC90));
				LOC89 = rawNewString(LOC90.Field1->Sup.len + os_175069[(targetos_175589)- 1].Field10->Sup.len + 0);
appendString(LOC89, LOC90.Field1);
appendString(LOC89, os_175069[(targetos_175589)- 1].Field10);
				exefile = LOC89;
				builddll = copyString(((NimStringDesc*) &TMP448));
			}
			LA83: ;
			{
				if (!(0 < outfile_170124->Sup.len)) goto LA93;
				exefile = expandtilde_125446(outfile_170124);
			}
			LA93: ;
			{
				NIM_BOOL LOC97;
				LOC97 = 0;
				LOC97 = noabsolutepaths_203974();
				if (!!(LOC97)) goto LA98;
				{
					NIM_BOOL LOC102;
					TY117604 LOC105;
					LOC102 = 0;
					LOC102 = nosisAbsolute(exefile);
					if (!!(LOC102)) goto LA103;
					memset((void*)(&LOC105), 0, sizeof(LOC105));
					nossplitFile(projectfile, (&LOC105));
					exefile = nosjoinPath(LOC105.Field0, exefile);
				}
				LA103: ;
			}
			LA98: ;
			exefile = nospquoteShell(exefile);
			linkoptions = getlinkoptions_204113();
			memset((void*)LOC106, 0, sizeof(LOC106));
			LOC106[0] = copyString(((NimStringDesc*) &TMP4225));
			LOC106[1] = copyString(builddll);
			LOC106[2] = copyString(((NimStringDesc*) &TMP4226));
			LOC106[3] = copyString(buildgui);
			LOC106[4] = copyString(((NimStringDesc*) &TMP1801));
			LOC106[5] = copyString(linkoptions);
			LOC106[6] = copyString(((NimStringDesc*) &TMP4223));
			LOC106[7] = copyString(objfiles);
			LOC106[8] = copyString(((NimStringDesc*) &TMP4227));
			LOC106[9] = copyString(exefile);
			LOC106[10] = copyString(((NimStringDesc*) &TMP1803));
			LOC106[11] = getprefixdir_170381();
			LOC106[12] = copyString(((NimStringDesc*) &TMP1805));
			LOC106[13] = copyString(libpath_170233);
			LOC107 = 0;
			LOC107 = nsuFormatOpenArray(linkcmd, LOC106, 14);
			linkcmd = nospquoteShell(LOC107);
			linkcmd = addChar(linkcmd, 32);
			memset((void*)LOC108, 0, sizeof(LOC108));
			LOC108[0] = copyString(((NimStringDesc*) &TMP4225));
			LOC108[1] = copyString(builddll);
			LOC108[2] = copyString(((NimStringDesc*) &TMP4226));
			LOC108[3] = copyString(buildgui);
			LOC108[4] = copyString(((NimStringDesc*) &TMP1801));
			LOC108[5] = copyString(linkoptions);
			LOC108[6] = copyString(((NimStringDesc*) &TMP4223));
			LOC108[7] = copyString(objfiles);
			LOC108[8] = copyString(((NimStringDesc*) &TMP4227));
			LOC108[9] = copyString(exefile);
			LOC108[10] = copyString(((NimStringDesc*) &TMP1803));
			LOC109 = 0;
			LOC109 = getprefixdir_170381();
			LOC108[11] = nospquoteShell(LOC109);
			LOC108[12] = copyString(((NimStringDesc*) &TMP1805));
			LOC108[13] = nospquoteShell(libpath_170233);
			nsuAddf((&linkcmd), cc_203434[(c)- 1].Field11, LOC108, 14);
		}
		LA55: ;
		{
			if (!!(((gglobaloptions_170118 &(1<<((((NU8) 4))&31)))!=0))) goto LA112;
			{
				if (!(gverbosity_170127 == 1)) goto LA116;
				execexternalprogram_203907(linkcmd, ((NimStringDesc*) &TMP4228));
			}
			goto LA114;
			LA116: ;
			{
				execexternalprogram_203907(linkcmd, ((NimStringDesc*) &TMP448));
			}
			LA114: ;
		}
		LA112: ;
	}
	goto LA41;
	LA43: ;
	{
		linkcmd = copyString(((NimStringDesc*) &TMP448));
	}
	LA41: ;
	{
		if (!((gglobaloptions_170118 &(1<<((((NU8) 11))&31)))!=0)) goto LA122;
		app_178060(&script, linkcmd);
		app_178060(&script, tnl_175613);
		generatescript_203931(projectfile, script);
	}
	LA122: ;
	BeforeRet: ;
}

N_NIMCALL(void, resetcompilationlists_203886)(void) {
	initlinkedlist_127043((&tocompile_203555));
	initlinkedlist_127043((&externaltocompile_203556));
	initlinkedlist_127043((&tolink_203554));
}
NIM_EXTERNC N_NOINLINE(void, HEX00_extccompInit)(void) {
	NimStringDesc* LOC1;
	NimStringDesc* LOC2;
	NimStringDesc* LOC3;
	ccompiler_203461 = ((NU8) 1);
	if (cincludes_203484) nimGCunrefNoCycle(cincludes_203484);
	cincludes_203484 = (TY119808*) newSeqRC1((&NTI119808), 0);
	if (clibs_203506) nimGCunrefNoCycle(clibs_203506);
	clibs_203506 = (TY119808*) newSeqRC1((&NTI119808), 0);
	if (clinkedlibs_203528) nimGCunrefNoCycle(clinkedlibs_203528);
	clinkedlibs_203528 = (TY119808*) newSeqRC1((&NTI119808), 0);
	LOC1 = 0;
	LOC1 = linkoptions_203557; linkoptions_203557 = copyStringRC1(((NimStringDesc*) &TMP448));
	if (LOC1) nimGCunrefNoCycle(LOC1);
	LOC2 = 0;
	LOC2 = compileoptions_203558; compileoptions_203558 = copyStringRC1(((NimStringDesc*) &TMP448));
	if (LOC2) nimGCunrefNoCycle(LOC2);
	LOC3 = 0;
	LOC3 = ccompilerpath_203559; ccompilerpath_203559 = copyStringRC1(((NimStringDesc*) &TMP448));
	if (LOC3) nimGCunrefNoCycle(LOC3);
}

NIM_EXTERNC N_NOINLINE(void, HEX00_extccompDatInit)(void) {
static TNimNode* TMP4210[2];
static TNimNode TMP446[3];
NTI204829.size = sizeof(TY204829);
NTI204829.kind = 18;
NTI204829.base = 0;
NTI204829.flags = 2;
TMP4210[0] = &TMP446[1];
TMP446[1].kind = 1;
TMP446[1].offset = offsetof(TY204829, HEX3Astate);
TMP446[1].typ = (&NTI358033);
TMP446[1].name = ":state";
TMP4210[1] = &TMP446[2];
TMP446[2].kind = 1;
TMP446[2].offset = offsetof(TY204829, Prettycmds204625);
TMP446[2].typ = (&NTI119808);
TMP446[2].name = "prettyCmds204625";
TMP446[0].len = 2; TMP446[0].kind = 2; TMP446[0].sons = &TMP4210[0];
NTI204829.node = &TMP446[0];
NTI204854.size = sizeof(TY204829*);
NTI204854.kind = 22;
NTI204854.base = (&NTI204829);
NTI204854.flags = 2;
NTI204854.marker = TMP4211;
}

