/* 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 <setjmp.h>
#include <stdio.h>
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Cell48946 Cell48946;
typedef struct TNimType TNimType;
typedef struct Cellseq48962 Cellseq48962;
typedef struct Gcheap51018 Gcheap51018;
typedef struct Gcstack51016 Gcstack51016;
typedef struct Cellset48958 Cellset48958;
typedef struct Pagedesc48954 Pagedesc48954;
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 Exception Exception;
typedef struct TNimObject TNimObject;
typedef struct TNimNode TNimNode;
typedef struct TSafePoint TSafePoint;
typedef struct TY123809 TY123809;
typedef struct Basechunk30840 Basechunk30840;
typedef struct Freecell30832 Freecell30832;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct  Cell48946  {
NI refcount;
TNimType* typ;
};
struct  Cellseq48962  {
NI len;
NI cap;
Cell48946** d;
};
struct  Cellset48958  {
NI counter;
NI max;
Pagedesc48954* head;
Pagedesc48954** 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;
Cellseq48962 zct;
Cellseq48962 decstack;
Cellset48958 cycleroots;
Cellseq48962 tempstack;
NI recgclock;
Memregion30890 region;
Gcstat51014 stat;
};
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  TNimObject  {
TNimType* m_type;
};
struct  Exception  {
  TNimObject Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClPrc) (Exception* e, void* ClEnv);
void* ClEnv;
} TY19211;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY19211 raiseAction;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TY123809 {
NimStringDesc* Field0;
NimStringDesc* Field1;
NimStringDesc* Field2;
};
struct  Gcstack51016  {
Gcstack51016* prev;
Gcstack51016* next;
void* starts;
void* pos;
NI maxstacksize;
};
typedef NI TY30821[16];
struct  Pagedesc48954  {
Pagedesc48954* 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  Freecell30832  {
Freecell30832* next;
NI zerofield;
};
N_NIMCALL(void, Gcdisablemarkandsweep_11219)(void);
N_NIMCALL(void, initdefines_199254)(void);
N_NIMCALL(void, handlecmdline_582607)(void);
N_NIMCALL(NI, paramcount_136035)(void);
N_NIMCALL(void, writecommandlineusage_211020)(void);
N_NIMCALL(void, processcmdline_575209)(NU8 pass, NimStringDesc* cmd);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
static N_INLINE(Cell48946*, usrtocell_52646)(void* usr);
static N_INLINE(void, rtladdzct_54204)(Cell48946* c);
N_NOINLINE(void, addzct_52617)(Cellseq48962* s, Cell48946* c);
N_NIMCALL(NimStringDesc*, nosgetCurrentDir)(void);
static N_INLINE(void, asgnRefNoCycle)(void** dest, void* src);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
N_NIMCALL(NimStringDesc*, canonicalizepath_167409)(NimStringDesc* path);
static N_INLINE(void, popSafePoint)(void);
N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass);
static N_INLINE(Exception*, getCurrentException)(void);
static N_INLINE(void, popCurrentException)(void);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_55022)(Cell48946* c);
static N_INLINE(NIM_BOOL, canbecycleroot_52667)(Cell48946* c);
static N_INLINE(void, rtladdcycleroot_53423)(Cell48946* c);
N_NOINLINE(void, incl_49665)(Cellset48958* s, Cell48946* cell);
static N_INLINE(void, decref_54604)(Cell48946* c);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(void, nossplitFile)(NimStringDesc* path, TY123809* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, loadconfigs_221609)(NimStringDesc* cfg);
N_NIMCALL(NimStringDesc*, noschangeFileExt)(NimStringDesc* filename, NimStringDesc* ext);
static N_INLINE(NIM_BOOL, fileexists_127010)(NimStringDesc* filename);
N_NIMCALL(NIM_BOOL, nosexistsFile)(NimStringDesc* filename);
N_NIMCALL(void, runnimscript_581327)(NimStringDesc* scriptname);
N_NIMCALL(NimStringDesc*, HEX2F_123481)(NimStringDesc* head, NimStringDesc* tail);
N_NIMCALL(void, initvars_204076)(void);
N_NIMCALL(void, rawmessage_194636)(NU16 msg, NimStringDesc* arg);
N_NIMCALL(void, maincommand_578628)(void);
N_NIMCALL(NimStringDesc*, Gcgetstatistics_11221)(void);
N_NIMCALL(NimStringDesc*, nospquoteShell)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, prependcurdir_582401)(NimStringDesc* f);
N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(NimStringDesc*, completecfilepath_204112)(NimStringDesc* cfile, NIM_BOOL createsubdir);
N_NIMCALL(void, execexternalprogram_204175)(NimStringDesc* cmd, NU16 msg);
N_NIMCALL(NimStringDesc*, findnodejs_580009)(void);
static N_INLINE(void, appendChar)(NimStringDesc* dest, NIM_CHAR c);
N_NIMCALL(void, msgquit_191491)(NI8 x);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_NOINLINE(void, setStackBottom)(void* thestackbottom);
NIM_EXTERNC N_NOINLINE(void, systemInit000)(void);
NIM_EXTERNC N_NOINLINE(void, systemDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_testabilityInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_testabilityDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_parseutilsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_parseutilsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_strutilsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_strutilsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_timesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_timesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_posixInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_posixDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_osInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_osDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_listsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_listsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_etcprivInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_etcprivDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_hashesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_hashesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_strtabsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_strtabsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_streamsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_streamsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_linuxInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_linuxDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_cpuinfoInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_cpuinfoDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_osprocInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_osprocDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_mathInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_mathDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_setsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_setsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_optionsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_optionsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_tablesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_tablesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_platformInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_platformDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_ropesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_ropesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_macrosInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_macrosDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_termiosInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_termiosDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_terminalInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_terminalDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_msgsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_msgsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nversionInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nversionDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_identsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_identsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_condsymsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_condsymsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_unsignedInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_unsignedDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_securehashInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_securehashDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_extccompInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_extccompDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_wordrecgInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_wordrecgDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nimblecmdInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nimblecmdDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_parseoptInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_parseoptDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_commandsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_commandsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_llstreamInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_llstreamDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nimlexbaseInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nimlexbaseDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_lexerInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_lexerDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nimconfInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nimconfDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_intsetsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_intsetsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_idgenInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_idgenDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_astInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_astDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_rodutilsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_rodutilsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_astalgoInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_astalgoDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_parserInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_parserDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_pbracesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_pbracesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_rendererInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_rendererDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_filtersInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_filtersDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_filter_tmplInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_filter_tmplDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_syntaxesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_syntaxesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_treesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_treesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_typesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_typesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_memfilesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_memfilesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_rodreadInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_rodreadDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_magicsysInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_magicsysDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_bitsetsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_bitsetsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nimsetsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nimsetsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_passesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_passesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_treetabInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_treetabDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_vmdefInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_vmdefDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semdataInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semdataDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_lexbaseInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_lexbaseDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_prettybaseInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_prettybaseDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_lookupsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_lookupsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_importerInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_importerDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_rodwriteInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_rodwriteDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_saturateInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_saturateDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semfoldInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semfoldDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_procfindInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_procfindDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_pragmasInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_pragmasDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semtypinstInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semtypinstDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_parampatternsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_parampatternsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_prettyInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_prettyDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_unicodeInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_unicodeDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_jsonInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_jsonDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, docutils_rstastInit000)(void);
NIM_EXTERNC N_NOINLINE(void, docutils_rstastDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, docutils_rstInit000)(void);
NIM_EXTERNC N_NOINLINE(void, docutils_rstDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, docutils_highliteInit000)(void);
NIM_EXTERNC N_NOINLINE(void, docutils_highliteDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_sequtilsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_sequtilsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_algorithmInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_algorithmDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, docutils_rstgenInit000)(void);
NIM_EXTERNC N_NOINLINE(void, docutils_rstgenDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_guardsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_guardsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_writetrackingInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_writetrackingDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_sempass2Init000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_sempass2DatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_xmltreeInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_xmltreeDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_cookiesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_cookiesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_cgiInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_cgiDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_typesrendererInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_typesrendererDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_docgenInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_docgenDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_sigmatchInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_sigmatchDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_cgmethInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_cgmethDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_loweringsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_loweringsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_lambdaliftingInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_lambdaliftingDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_transfInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_transfDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_vmgenInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_vmgenDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_vmdepsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_vmdepsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_vmmarshalInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_vmmarshalDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_evaltemplInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_evaltemplDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_vmInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_vmDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_aliasesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_aliasesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_patternsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_patternsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semmacrosanityInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semmacrosanityDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semparallelInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semparallelDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_pluginsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_pluginsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_localsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_localsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_activeInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_activeDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_semDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_ccgutilsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_ccgutilsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_cgendataInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_cgendataDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_ccgmergeInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_ccgmergeDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_cgenInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_cgenDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_jsgenInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_jsgenDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_passauxInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_passauxDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_dependsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_dependsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_docgen2Init000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_docgen2DatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_nativesocketsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_nativesocketsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_netInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_netDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_serviceInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_serviceDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_modulesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_modulesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_mainInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_mainDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nodejsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_nodejsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_scriptconfigInit000)(void);
NIM_EXTERNC N_NOINLINE(void, compiler_scriptconfigDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, nimInit000)(void);
NIM_EXTERNC N_NOINLINE(void, nimDatInit000)(void);
STRING_LITERAL(TMP1994, "", 0);
STRING_LITERAL(TMP1995, "-", 1);
STRING_LITERAL(TMP1996, "stdinfile", 9);
STRING_LITERAL(TMP2024, "nim.cfg", 7);
STRING_LITERAL(TMP2025, "nims", 4);
STRING_LITERAL(TMP3710, "config.nims", 11);
STRING_LITERAL(TMP5293, "./", 2);
STRING_LITERAL(TMP5294, "js", 2);
STRING_LITERAL(TMP5298, " ", 1);
extern NimStringDesc* gprojectname_167234;
extern Gcheap51018 gch_51059;
extern NimStringDesc* gprojectfull_167236;
extern NimStringDesc* gprojectpath_167235;
extern NIM_BOOL gprojectisstdin_167237;
extern TSafePoint* exchandler_20843;
extern TNimType NTI4033; /* OSError */
extern Exception* currexception_20845;
extern NimStringDesc* command_167240;
extern NU32 goptions_167130;
extern NU64 gnotes_191398;
extern NI gerrorcounter_191399;
extern NU32 gglobaloptions_167132;
extern NU8 gcmd_167134;
extern NimStringDesc* outfile_167138;
extern NimStringDesc* arguments_212837;

static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
	NIM_BOOL result;
	NIM_BOOL LOC11;
	int LOC13;
{	result = 0;
	{
		if (!(a == b)) goto LA3;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = (a == NIM_NIL);
		if (LOC7) goto LA8;
		LOC7 = (b == NIM_NIL);
		LA8: ;
		if (!LOC7) goto LA9;
		result = NIM_FALSE;
		goto BeforeRet;
	}
	LA9: ;
	LOC11 = 0;
	LOC11 = ((*a).Sup.len == (*b).Sup.len);
	if (!(LOC11)) goto LA12;
	LOC13 = 0;
	LOC13 = memcmp(((NCSTRING) ((*a).data)), ((NCSTRING) ((*b).data)), (*a).Sup.len);
	LOC11 = (LOC13 == ((NI32) 0));
	LA12: ;
	result = LOC11;
	goto BeforeRet;
	}BeforeRet: ;
	return result;
}

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

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

static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
	Cell48946* 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, asgnRefNoCycle)(void** dest, void* src) {
	{
		Cell48946* c;
		if (!!((src == NIM_NIL))) goto LA3;
		c = usrtocell_52646(src);
		(*c).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell48946* 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;
}

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

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

static N_INLINE(Exception*, getCurrentException)(void) {
	Exception* result;
	result = 0;
	result = currexception_20845;
	return result;
}

static N_INLINE(NIM_BOOL, canbecycleroot_52667)(Cell48946* c) {
	NIM_BOOL result;
	result = 0;
	result = !((((*(*c).typ).flags &(1<<((((NU8) 1))&7)))!=0));
	return result;
}

static N_INLINE(void, rtladdcycleroot_53423)(Cell48946* c) {
	{
		if (!!((((NI) ((NI)((*c).refcount & ((NI) 3)))) == ((NI) 3)))) goto LA3;
		(*c).refcount = (NI)((NI)((*c).refcount & ((NI) -4)) | ((NI) 3));
		incl_49665((&gch_51059.cycleroots), c);
	}
	LA3: ;
}

static N_INLINE(void, incref_55022)(Cell48946* c) {
	(*c).refcount = (NI)((NU32)((*c).refcount) + (NU32)(((NI) 8)));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_52667(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_53423(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_54604)(Cell48946* c) {
	{
		(*c).refcount -= ((NI) 8);
		if (!((NU32)((*c).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_54204(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_52667(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_53423(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		Cell48946* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_52646(src);
		incref_55022(LOC5);
	}
	LA3: ;
	{
		Cell48946* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_52646((*dest));
		decref_54604(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

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

static N_INLINE(NIM_BOOL, fileexists_127010)(NimStringDesc* filename) {
	NIM_BOOL result;
	result = 0;
	result = nosexistsFile(filename);
	return result;
}

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(NimStringDesc*, prependcurdir_582401)(NimStringDesc* f) {
	NimStringDesc* result;
	result = 0;
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = nosisAbsolute(f);
		if (!LOC3) goto LA4;
		result = copyString(f);
	}
	goto LA1;
	LA4: ;
	{
		NimStringDesc* LOC7;
		LOC7 = 0;
		LOC7 = rawNewString(f->Sup.len + 2);
appendString(LOC7, ((NimStringDesc*) &TMP5293));
appendString(LOC7, f);
		result = LOC7;
	}
	LA1: ;
	return result;
}

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(void, handlecmdline_582607)(void) {
{	{
		NI LOC3;
		LOC3 = 0;
		LOC3 = paramcount_136035();
		if (!(LOC3 == ((NI) 0))) goto LA4;
		writecommandlineusage_211020();
	}
	goto LA1;
	LA4: ;
	{
		NimStringDesc* scriptfile;
		processcmdline_575209(((NU8) 0), ((NimStringDesc*) &TMP1994));
		{
			NimStringDesc* LOC11;
			NimStringDesc* LOC12;
			if (!eqStrings(gprojectname_167234, ((NimStringDesc*) &TMP1995))) goto LA9;
			LOC11 = 0;
			LOC11 = gprojectname_167234; gprojectname_167234 = copyStringRC1(((NimStringDesc*) &TMP1996));
			if (LOC11) nimGCunrefNoCycle(LOC11);
			LOC12 = 0;
			LOC12 = gprojectfull_167236; gprojectfull_167236 = copyStringRC1(((NimStringDesc*) &TMP1996));
			if (LOC12) nimGCunrefNoCycle(LOC12);
			asgnRefNoCycle((void**) (&gprojectpath_167235), nosgetCurrentDir());
			gprojectisstdin_167237 = NIM_TRUE;
		}
		goto LA7;
		LA9: ;
		{
			TSafePoint TMP1997;
			TY123809 p;
			NimStringDesc* LOC20;
			NimStringDesc* LOC21;
			if (!!(((gprojectname_167234) && (gprojectname_167234)->Sup.len == 0))) goto LA14;
			pushSafePoint(&TMP1997);
			TMP1997.status = setjmp(TMP1997.context);
			if (TMP1997.status == 0) {
				asgnRefNoCycle((void**) (&gprojectfull_167236), canonicalizepath_167409(gprojectname_167234));
				popSafePoint();
			}
			else {
				popSafePoint();
				if (isObj(getCurrentException()->Sup.m_type, (&NTI4033))) {
					NimStringDesc* LOC19;
					TMP1997.status = 0;
					LOC19 = 0;
					LOC19 = gprojectfull_167236; gprojectfull_167236 = copyStringRC1(gprojectname_167234);
					if (LOC19) nimGCunrefNoCycle(LOC19);
					popCurrentException();
				}
			}
			if (TMP1997.status != 0) reraiseException();
			memset((void*)(&p), 0, sizeof(p));
			chckNil((void*)(&p));
			memset((void*)(&p), 0, sizeof(p));
			nossplitFile(gprojectfull_167236, (&p));
			LOC20 = 0;
			LOC20 = gprojectpath_167235; gprojectpath_167235 = copyStringRC1(p.Field0);
			if (LOC20) nimGCunrefNoCycle(LOC20);
			LOC21 = 0;
			LOC21 = gprojectname_167234; gprojectname_167234 = copyStringRC1(p.Field1);
			if (LOC21) nimGCunrefNoCycle(LOC21);
		}
		goto LA7;
		LA14: ;
		{
			asgnRefNoCycle((void**) (&gprojectpath_167235), nosgetCurrentDir());
		}
		LA7: ;
		loadconfigs_221609(((NimStringDesc*) &TMP2024));
		scriptfile = noschangeFileExt(gprojectfull_167236, ((NimStringDesc*) &TMP2025));
		{
			NIM_BOOL LOC25;
			LOC25 = 0;
			LOC25 = fileexists_127010(scriptfile);
			if (!LOC25) goto LA26;
			runnimscript_581327(scriptfile);
			{
				if (!eqStrings(scriptfile, gprojectfull_167236)) goto LA30;
				goto BeforeRet;
			}
			LA30: ;
		}
		goto LA23;
		LA26: ;
		{
			NimStringDesc* LOC33;
			NIM_BOOL LOC34;
			NimStringDesc* LOC37;
			LOC33 = 0;
			LOC33 = HEX2F_123481(gprojectpath_167235, ((NimStringDesc*) &TMP3710));
			LOC34 = 0;
			LOC34 = fileexists_127010(LOC33);
			if (!LOC34) goto LA35;
			LOC37 = 0;
			LOC37 = HEX2F_123481(gprojectpath_167235, ((NimStringDesc*) &TMP3710));
			runnimscript_581327(LOC37);
		}
		goto LA23;
		LA35: ;
		LA23: ;
		initvars_204076();
		processcmdline_575209(((NU8) 1), ((NimStringDesc*) &TMP1994));
		{
			if (!((command_167240) && (command_167240)->Sup.len == 0)) goto LA40;
			rawmessage_194636(((NU16) 184), command_167240);
		}
		LA40: ;
		maincommand_578628();
		{
			NIM_BOOL LOC44;
			NimStringDesc* LOC48;
			LOC44 = 0;
			LOC44 = ((goptions_167130 &(1<<((((NU8) 12))&31)))!=0);
			if (!(LOC44)) goto LA45;
			LOC44 = ((gnotes_191398 &(IL64(1)<<(((((NU16) 289)- 237))&IL64(63))))!=0);
			LA45: ;
			if (!LOC44) goto LA46;
			LOC48 = 0;
			LOC48 = Gcgetstatistics_11221();
			printf("%s\012", LOC48? (LOC48)->data:"nil");
		}
		LA46: ;
		{
			if (!(gerrorcounter_191399 == ((NI) 0))) goto LA51;
			{
				if (!((gglobaloptions_167132 &(1<<((((NU8) 13))&31)))!=0)) goto LA55;
				{
					NimStringDesc* ex;
					NimStringDesc* LOC70;
					NimStringDesc* LOC71;
					if (!(gcmd_167134 == ((NU8) 4))) goto LA59;
					ex = 0;
					{
						NimStringDesc* LOC65;
						if (!(((NI) 0) < (outfile_167138 ? outfile_167138->Sup.len : 0))) goto LA63;
						LOC65 = 0;
						LOC65 = prependcurdir_582401(outfile_167138);
						ex = nospquoteShell(LOC65);
					}
					goto LA61;
					LA63: ;
					{
						NimStringDesc* LOC67;
						NimStringDesc* LOC68;
						NimStringDesc* LOC69;
						LOC67 = 0;
						LOC67 = noschangeFileExt(gprojectfull_167236, ((NimStringDesc*) &TMP5294));
						LOC68 = 0;
						LOC68 = prependcurdir_582401(LOC67);
						LOC69 = 0;
						LOC69 = completecfilepath_204112(LOC68, NIM_TRUE);
						ex = nospquoteShell(LOC69);
					}
					LA61: ;
					LOC70 = 0;
					LOC71 = 0;
					LOC71 = findnodejs_580009();
					LOC70 = rawNewString(LOC71->Sup.len + ex->Sup.len + arguments_212837->Sup.len + 2);
appendString(LOC70, LOC71);
appendString(LOC70, ((NimStringDesc*) &TMP5298));
appendString(LOC70, ex);
appendChar(LOC70, 32);
appendString(LOC70, arguments_212837);
					execexternalprogram_204175(LOC70, ((NU16) 284));
				}
				goto LA57;
				LA59: ;
				{
					NimStringDesc* binpath;
					NimStringDesc* ex;
					NimStringDesc* LOC79;
					binpath = 0;
					{
						if (!(((NI) 0) < (outfile_167138 ? outfile_167138->Sup.len : 0))) goto LA75;
						binpath = prependcurdir_582401(outfile_167138);
					}
					goto LA73;
					LA75: ;
					{
						NimStringDesc* LOC78;
						LOC78 = 0;
						LOC78 = noschangeFileExt(gprojectfull_167236, ((NimStringDesc*) &TMP1994));
						binpath = prependcurdir_582401(LOC78);
					}
					LA73: ;
					ex = nospquoteShell(binpath);
					LOC79 = 0;
					LOC79 = rawNewString(ex->Sup.len + arguments_212837->Sup.len + 1);
appendString(LOC79, ex);
appendChar(LOC79, 32);
appendString(LOC79, arguments_212837);
					execexternalprogram_204175(LOC79, ((NU16) 284));
				}
				LA57: ;
			}
			LA55: ;
		}
		LA51: ;
	}
	LA1: ;
	}BeforeRet: ;
}

static N_INLINE(void, initStackBottomWith)(void* locals) {
	setStackBottom(locals);
}
void PreMainInner() {
	systemInit000();
	compiler_testabilityDatInit000();
	stdlib_parseutilsDatInit000();
	stdlib_strutilsDatInit000();
	stdlib_timesDatInit000();
	stdlib_posixDatInit000();
	stdlib_osDatInit000();
	compiler_listsDatInit000();
	stdlib_etcprivDatInit000();
	stdlib_hashesDatInit000();
	stdlib_strtabsDatInit000();
	stdlib_streamsDatInit000();
	stdlib_linuxDatInit000();
	stdlib_cpuinfoDatInit000();
	stdlib_osprocDatInit000();
	stdlib_mathDatInit000();
	stdlib_setsDatInit000();
	compiler_optionsDatInit000();
	stdlib_tablesDatInit000();
	compiler_platformDatInit000();
	compiler_ropesDatInit000();
	stdlib_macrosDatInit000();
	stdlib_termiosDatInit000();
	stdlib_terminalDatInit000();
	compiler_msgsDatInit000();
	compiler_nversionDatInit000();
	compiler_identsDatInit000();
	compiler_condsymsDatInit000();
	stdlib_unsignedDatInit000();
	stdlib_securehashDatInit000();
	compiler_extccompDatInit000();
	compiler_wordrecgDatInit000();
	compiler_nimblecmdDatInit000();
	stdlib_parseoptDatInit000();
	compiler_commandsDatInit000();
	compiler_llstreamDatInit000();
	compiler_nimlexbaseDatInit000();
	compiler_lexerDatInit000();
	compiler_nimconfDatInit000();
	stdlib_intsetsDatInit000();
	compiler_idgenDatInit000();
	compiler_astDatInit000();
	compiler_rodutilsDatInit000();
	compiler_astalgoDatInit000();
	compiler_parserDatInit000();
	compiler_pbracesDatInit000();
	compiler_rendererDatInit000();
	compiler_filtersDatInit000();
	compiler_filter_tmplDatInit000();
	compiler_syntaxesDatInit000();
	compiler_treesDatInit000();
	compiler_typesDatInit000();
	stdlib_memfilesDatInit000();
	compiler_rodreadDatInit000();
	compiler_magicsysDatInit000();
	compiler_bitsetsDatInit000();
	compiler_nimsetsDatInit000();
	compiler_passesDatInit000();
	compiler_treetabDatInit000();
	compiler_vmdefDatInit000();
	compiler_semdataDatInit000();
	stdlib_lexbaseDatInit000();
	compiler_prettybaseDatInit000();
	compiler_lookupsDatInit000();
	compiler_importerDatInit000();
	compiler_rodwriteDatInit000();
	compiler_saturateDatInit000();
	compiler_semfoldDatInit000();
	compiler_procfindDatInit000();
	compiler_pragmasDatInit000();
	compiler_semtypinstDatInit000();
	compiler_parampatternsDatInit000();
	compiler_prettyDatInit000();
	stdlib_unicodeDatInit000();
	stdlib_jsonDatInit000();
	docutils_rstastDatInit000();
	docutils_rstDatInit000();
	docutils_highliteDatInit000();
	stdlib_sequtilsDatInit000();
	stdlib_algorithmDatInit000();
	docutils_rstgenDatInit000();
	compiler_guardsDatInit000();
	compiler_writetrackingDatInit000();
	compiler_sempass2DatInit000();
	stdlib_xmltreeDatInit000();
	stdlib_cookiesDatInit000();
	stdlib_cgiDatInit000();
	compiler_typesrendererDatInit000();
	compiler_docgenDatInit000();
	compiler_sigmatchDatInit000();
	compiler_cgmethDatInit000();
	compiler_loweringsDatInit000();
	compiler_lambdaliftingDatInit000();
	compiler_transfDatInit000();
	compiler_vmgenDatInit000();
	compiler_vmdepsDatInit000();
	compiler_vmmarshalDatInit000();
	compiler_evaltemplDatInit000();
	compiler_vmDatInit000();
	compiler_aliasesDatInit000();
	compiler_patternsDatInit000();
	compiler_semmacrosanityDatInit000();
	compiler_semparallelDatInit000();
	compiler_pluginsDatInit000();
	compiler_localsDatInit000();
	compiler_activeDatInit000();
	compiler_semDatInit000();
	compiler_ccgutilsDatInit000();
	compiler_cgendataDatInit000();
	compiler_ccgmergeDatInit000();
	compiler_cgenDatInit000();
	compiler_jsgenDatInit000();
	compiler_passauxDatInit000();
	compiler_dependsDatInit000();
	compiler_docgen2DatInit000();
	stdlib_nativesocketsDatInit000();
	stdlib_netDatInit000();
	compiler_serviceDatInit000();
	compiler_modulesDatInit000();
	compiler_mainDatInit000();
	compiler_nodejsDatInit000();
	compiler_scriptconfigDatInit000();
	nimDatInit000();
	compiler_testabilityInit000();
	stdlib_parseutilsInit000();
	stdlib_strutilsInit000();
	stdlib_timesInit000();
	stdlib_posixInit000();
	stdlib_osInit000();
	compiler_listsInit000();
	stdlib_etcprivInit000();
	stdlib_hashesInit000();
	stdlib_strtabsInit000();
	stdlib_streamsInit000();
	stdlib_linuxInit000();
	stdlib_cpuinfoInit000();
	stdlib_osprocInit000();
	stdlib_mathInit000();
	stdlib_setsInit000();
	compiler_optionsInit000();
	stdlib_tablesInit000();
	compiler_platformInit000();
	compiler_ropesInit000();
	stdlib_macrosInit000();
	stdlib_termiosInit000();
	stdlib_terminalInit000();
	compiler_msgsInit000();
	compiler_nversionInit000();
	compiler_identsInit000();
	compiler_condsymsInit000();
	stdlib_unsignedInit000();
	stdlib_securehashInit000();
	compiler_extccompInit000();
	compiler_wordrecgInit000();
	compiler_nimblecmdInit000();
	stdlib_parseoptInit000();
	compiler_commandsInit000();
	compiler_llstreamInit000();
	compiler_nimlexbaseInit000();
	compiler_lexerInit000();
	compiler_nimconfInit000();
	stdlib_intsetsInit000();
	compiler_idgenInit000();
	compiler_astInit000();
	compiler_rodutilsInit000();
	compiler_astalgoInit000();
	compiler_parserInit000();
	compiler_pbracesInit000();
	compiler_rendererInit000();
	compiler_filtersInit000();
	compiler_filter_tmplInit000();
	compiler_syntaxesInit000();
	compiler_treesInit000();
	compiler_typesInit000();
	stdlib_memfilesInit000();
	compiler_rodreadInit000();
	compiler_magicsysInit000();
	compiler_bitsetsInit000();
	compiler_nimsetsInit000();
	compiler_passesInit000();
	compiler_treetabInit000();
	compiler_vmdefInit000();
	compiler_semdataInit000();
	stdlib_lexbaseInit000();
	compiler_prettybaseInit000();
	compiler_lookupsInit000();
	compiler_importerInit000();
	compiler_rodwriteInit000();
	compiler_saturateInit000();
	compiler_semfoldInit000();
	compiler_procfindInit000();
	compiler_pragmasInit000();
	compiler_semtypinstInit000();
	compiler_parampatternsInit000();
	compiler_prettyInit000();
	stdlib_unicodeInit000();
	stdlib_jsonInit000();
	docutils_rstastInit000();
	docutils_rstInit000();
	docutils_highliteInit000();
	stdlib_sequtilsInit000();
	stdlib_algorithmInit000();
	docutils_rstgenInit000();
	compiler_guardsInit000();
	compiler_writetrackingInit000();
	compiler_sempass2Init000();
	stdlib_xmltreeInit000();
	stdlib_cookiesInit000();
	stdlib_cgiInit000();
	compiler_typesrendererInit000();
	compiler_docgenInit000();
	compiler_sigmatchInit000();
	compiler_cgmethInit000();
	compiler_loweringsInit000();
	compiler_lambdaliftingInit000();
	compiler_transfInit000();
	compiler_vmgenInit000();
	compiler_vmdepsInit000();
	compiler_vmmarshalInit000();
	compiler_evaltemplInit000();
	compiler_vmInit000();
	compiler_aliasesInit000();
	compiler_patternsInit000();
	compiler_semmacrosanityInit000();
	compiler_semparallelInit000();
	compiler_pluginsInit000();
	compiler_localsInit000();
	compiler_activeInit000();
	compiler_semInit000();
	compiler_ccgutilsInit000();
	compiler_cgendataInit000();
	compiler_ccgmergeInit000();
	compiler_cgenInit000();
	compiler_jsgenInit000();
	compiler_passauxInit000();
	compiler_dependsInit000();
	compiler_docgen2Init000();
	stdlib_nativesocketsInit000();
	stdlib_netInit000();
	compiler_serviceInit000();
	compiler_modulesInit000();
	compiler_mainInit000();
	compiler_nodejsInit000();
	compiler_scriptconfigInit000();
}

void PreMain() {
	void (*volatile inner)();
	systemDatInit000();
	inner = PreMainInner;
	initStackBottomWith((void *)&inner);
	(*inner)();
}

int cmdCount;
char** cmdLine;
char** gEnv;
N_CDECL(void, NimMainInner)(void) {
	nimInit000();
}

N_CDECL(void, NimMain)(void) {
	void (*volatile inner)();
	PreMain();
	inner = NimMainInner;
	initStackBottomWith((void *)&inner);
	(*inner)();
}

int main(int argc, char** args, char** env) {
	cmdLine = args;
	cmdCount = argc;
	gEnv = env;
	NimMain();
	return nim_program_result;
}

NIM_EXTERNC N_NOINLINE(void, nimInit000)(void) {
	Gcdisablemarkandsweep_11219();
	initdefines_199254();
	handlecmdline_582607();
	msgquit_191491(((NI8) ((((NI) 0) < gerrorcounter_191399))));
}

NIM_EXTERNC N_NOINLINE(void, nimDatInit000)(void) {
}

