/* Generated by Nim Compiler v0.16.0 */
/*   (c) 2017 Andreas Rumpf */
/* The generated code is subject to the original license. */
/* Compiled for: Linux, amd64, gcc */
/* Command for C compiler:
   gcc -c  -w -O3 -fno-strict-aliasing -fPIC  -I/build/nim/src/Nim-0.16.0/lib -o lib/nimcache/stdlib_nimrtl.o lib/nimcache/stdlib_nimrtl.c */
#define NIM_INTBITS 64

#include "nimbase.h"
#undef linux
static N_INLINE(void, initStackBottomWith)(void* locals0);
N_LIB_EXPORT N_NOINLINE(void, nimrtl_setStackBottom)(void* thestackbottom0);
NIM_EXTERNC N_NOINLINE(void, systemInit000)(void);
NIM_EXTERNC N_NOINLINE(void, systemDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_parseutilsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_parseutilsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_mathInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_mathDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_algorithmInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_algorithmDatInit000)(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, stdlib_parseoptInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_parseoptDatInit000)(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_streamsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_streamsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_lexbaseInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_lexbaseDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_tablesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_tablesDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_parsecfgInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_parsecfgDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_strtabsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_strtabsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_unicodeInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_unicodeDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_pegsInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_pegsDatInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_ropesInit000)(void);
NIM_EXTERNC N_NOINLINE(void, stdlib_ropesDatInit000)(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, NimMainModule)(void);
NIM_EXTERNC N_NOINLINE(void, nimrtlDatInit000)(void);

static N_INLINE(void, initStackBottomWith)(void* locals0) {
	nimrtl_setStackBottom(locals0);
}
void PreMainInner() {
	systemInit000();
	stdlib_parseutilsDatInit000();
	stdlib_mathDatInit000();
	stdlib_algorithmDatInit000();
	stdlib_strutilsDatInit000();
	stdlib_timesDatInit000();
	stdlib_posixDatInit000();
	stdlib_osDatInit000();
	stdlib_parseoptDatInit000();
	stdlib_etcprivDatInit000();
	stdlib_hashesDatInit000();
	stdlib_streamsDatInit000();
	stdlib_lexbaseDatInit000();
	stdlib_tablesDatInit000();
	stdlib_parsecfgDatInit000();
	stdlib_strtabsDatInit000();
	stdlib_unicodeDatInit000();
	stdlib_pegsDatInit000();
	stdlib_ropesDatInit000();
	stdlib_linuxDatInit000();
	stdlib_cpuinfoDatInit000();
	stdlib_osprocDatInit000();
	nimrtlDatInit000();
	stdlib_parseutilsInit000();
	stdlib_mathInit000();
	stdlib_algorithmInit000();
	stdlib_strutilsInit000();
	stdlib_timesInit000();
	stdlib_posixInit000();
	stdlib_osInit000();
	stdlib_parseoptInit000();
	stdlib_etcprivInit000();
	stdlib_hashesInit000();
	stdlib_streamsInit000();
	stdlib_lexbaseInit000();
	stdlib_tablesInit000();
	stdlib_parsecfgInit000();
	stdlib_strtabsInit000();
	stdlib_unicodeInit000();
	stdlib_pegsInit000();
	stdlib_ropesInit000();
	stdlib_linuxInit000();
	stdlib_cpuinfoInit000();
	stdlib_osprocInit000();
}

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

N_CDECL(void, NimMainInner)(void) {
	NimMainModule();
}

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

void NIM_POSIX_INIT NimMainInit(void) {
	NimMain();
}

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

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

