/* Generated by Nimrod Compiler v0.9.5 */
/*   (c) 2014 Andreas Rumpf */
/* The generated code is subject to the original license. */
/* Compiled for: Linux, i386, gcc */
/* Command for C compiler:
   gcc -c  -w -O3 -fno-strict-aliasing  -I/build/nimrod/src/nimrod/lib -o compiler/nimcache/stdlib_osproc.o compiler/nimcache/stdlib_osproc.c */
#define NIM_INTBITS 32
#include "nimbase.h"

#include <string.h>

#include <sys/types.h>

#include <unistd.h>

#include <setjmp.h>

#include <errno.h>

#include <fcntl.h>

#include <stdio.h>

#include <sys/wait.h>
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tprocess127203 tprocess127203;
typedef struct tstringtable121810 tstringtable121810;
typedef struct TNimObject TNimObject;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tstream124629 tstream124629;
typedef struct TY110805 TY110805;
typedef struct tcell41090 tcell41090;
typedef struct tcellseq41106 tcellseq41106;
typedef struct tgcheap43016 tgcheap43016;
typedef struct tcellset41102 tcellset41102;
typedef struct tpagedesc41098 tpagedesc41098;
typedef struct tmemregion23410 tmemregion23410;
typedef struct tsmallchunk22638 tsmallchunk22638;
typedef struct tllchunk23404 tllchunk23404;
typedef struct tbigchunk22640 tbigchunk22640;
typedef struct tintset22615 tintset22615;
typedef struct ttrunk22611 ttrunk22611;
typedef struct tavlnode23408 tavlnode23408;
typedef struct tgcstat43014 tgcstat43014;
typedef struct E_Base E_Base;
typedef struct TSafePoint TSafePoint;
typedef struct tkeyvaluepairseq121808 tkeyvaluepairseq121808;
typedef struct tkeyvaluepair121806 tkeyvaluepair121806;
typedef struct tstartprocessdata128715 tstartprocessdata128715;
typedef struct tfilestream125156 tfilestream125156;
typedef struct TY128202 TY128202;
typedef struct tbasechunk22636 tbasechunk22636;
typedef struct tfreecell22628 tfreecell22628;
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NU8 TY90161[32];
typedef int TY128825[2];
typedef N_NIMCALL_PTR(void, TY2289) (void* p, NI op);
struct  TNimType  {
NI size;
NU8 kind;
NU8 flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY2289 marker;
};
struct  TNimObject  {
TNimType* m_type;
};
struct  tprocess127203  {
  TNimObject Sup;
int Inhandle;
int Outhandle;
int Errhandle;
tstream124629* Instream;
tstream124629* Outstream;
tstream124629* Errstream;
pid_t Id;
int Exitcode;
};
struct  TNimNode  {
NU8 kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef NimStringDesc* TY173034[3];
struct  tcell41090  {
NI Refcount;
TNimType* Typ;
};
struct  tcellseq41106  {
NI Len;
NI Cap;
tcell41090** D;
};
struct  tcellset41102  {
NI Counter;
NI Max;
tpagedesc41098* Head;
tpagedesc41098** Data;
};
typedef tsmallchunk22638* TY23422[512];
typedef ttrunk22611* ttrunkbuckets22613[256];
struct  tintset22615  {
ttrunkbuckets22613 Data;
};
struct  tmemregion23410  {
NI Minlargeobj;
NI Maxlargeobj;
TY23422 Freesmallchunks;
tllchunk23404* Llmem;
NI Currmem;
NI Maxmem;
NI Freemem;
NI Lastsize;
tbigchunk22640* Freechunkslist;
tintset22615 Chunkstarts;
tavlnode23408* Root;
tavlnode23408* Deleted;
tavlnode23408* Last;
tavlnode23408* Freeavlnodes;
};
struct  tgcstat43014  {
NI Stackscans;
NI Cyclecollections;
NI Maxthreshold;
NI Maxstacksize;
NI Maxstackcells;
NI Cycletablesize;
NI64 Maxpause;
};
struct  tgcheap43016  {
void* Stackbottom;
NI Cyclethreshold;
tcellseq41106 Zct;
tcellseq41106 Decstack;
tcellset41102 Cycleroots;
tcellseq41106 Tempstack;
NI Recgclock;
tmemregion23410 Region;
tgcstat43014 Stat;
};
typedef NimStringDesc* TY165002[1];
struct  E_Base  {
  TNimObject Sup;
E_Base* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClPrc) (E_Base* e, void* ClEnv);
void* ClEnv;
} TY11626;
struct  TSafePoint  {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
TY11626 raiseAction;
};
struct tkeyvaluepair121806 {
NimStringDesc* Field0;
NimStringDesc* Field1;
};
struct  tstringtable121810  {
  TNimObject Sup;
NI Counter;
tkeyvaluepairseq121808* Data;
NU8 Mode;
};
struct  tstartprocessdata128715  {
NCSTRING Syscommand;
NCSTRING* Sysargs;
NCSTRING* Sysenv;
NCSTRING Workingdir;
TY128825 Pstdin;
TY128825 Pstdout;
TY128825 Pstderr;
TY128825 Perrorpipe;
NIM_BOOL Optionpousepath;
NIM_BOOL Optionpoparentstreams;
NIM_BOOL Optionpostderrtostdout;
};
typedef NimStringDesc* TY523288[1];
typedef N_NIMCALL_PTR(void, TY124630) (tstream124629* s);
typedef N_NIMCALL_PTR(NIM_BOOL, TY124634) (tstream124629* s);
typedef N_NIMCALL_PTR(void, TY124638) (tstream124629* s, NI pos);
typedef N_NIMCALL_PTR(NI, TY124643) (tstream124629* s);
typedef N_NIMCALL_PTR(NI, TY124647) (tstream124629* s, void* buffer, NI buflen);
typedef N_NIMCALL_PTR(void, TY124653) (tstream124629* s, void* buffer, NI buflen);
typedef N_NIMCALL_PTR(void, TY124659) (tstream124629* s);
struct  tstream124629  {
  TNimObject Sup;
TY124630 Closeimpl;
TY124634 Atendimpl;
TY124638 Setpositionimpl;
TY124643 Getpositionimpl;
TY124647 Readdataimpl;
TY124653 Writedataimpl;
TY124659 Flushimpl;
};
typedef NI TY22618[16];
struct  tpagedesc41098  {
tpagedesc41098* Next;
NI Key;
TY22618 Bits;
};
struct  tbasechunk22636  {
NI Prevsize;
NI Size;
NIM_BOOL Used;
};
struct  tsmallchunk22638  {
  tbasechunk22636 Sup;
tsmallchunk22638* Next;
tsmallchunk22638* Prev;
tfreecell22628* Freelist;
NI Free;
NI Acc;
NF Data;
};
struct  tllchunk23404  {
NI Size;
NI Acc;
tllchunk23404* Next;
};
struct  tbigchunk22640  {
  tbasechunk22636 Sup;
tbigchunk22640* Next;
tbigchunk22640* Prev;
NI Align;
NF Data;
};
struct  ttrunk22611  {
ttrunk22611* Next;
NI Key;
TY22618 Bits;
};
typedef tavlnode23408* TY23414[2];
struct  tavlnode23408  {
TY23414 Link;
NI Key;
NI Upperbound;
NI Level;
};
struct  tfilestream125156  {
  tstream124629 Sup;
FILE* F;
};
struct  tfreecell22628  {
tfreecell22628* Next;
NI Zerofield;
};
struct TY110805 {
  TGenericSeq Sup;
  NimStringDesc* data[SEQ_DECL_SIZE];
};
struct tkeyvaluepairseq121808 {
  TGenericSeq Sup;
  tkeyvaluepair121806 data[SEQ_DECL_SIZE];
};
struct TY128202 {
  TGenericSeq Sup;
  tprocess127203* data[SEQ_DECL_SIZE];
};
N_NIMCALL(NimStringDesc*, nospquoteShellPosix)(NimStringDesc* s);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_NIMCALL(NIM_BOOL, allcharsinset_89836)(NimStringDesc* s, TY90161 theset);
static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
N_NIMCALL(NimStringDesc*, nsuReplaceStr)(NimStringDesc* s, NimStringDesc* sub, NimStringDesc* by);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
N_NIMCALL(tprocess127203*, nospstartProcess)(NimStringDesc* command, NimStringDesc* workingdir, NimStringDesc** args, NI argsLen0, tstringtable121810* env, NU8 options);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
N_NIMCALL(void, TMP2643)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
N_NIMCALL(void, oserror_106205)(NI32 errorcode);
N_NIMCALL(NI32, oslasterror_106231)(void);
N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
static N_INLINE(void, nimGCunrefNoCycle)(void* p);
static N_INLINE(tcell41090*, usrtocell_44443)(void* usr);
static N_INLINE(void, rtladdzct_46002)(tcell41090* c);
N_NOINLINE(void, addzct_44418)(tcellseq41106* s, tcell41090* c);
N_NIMCALL(TGenericSeq*, incrSeq)(TGenericSeq* seq, NI elemsize);
N_NIMCALL(NCSTRING*, alloccstringarray_10801)(NimStringDesc** a, NI aLen0);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
N_NIMCALL(NCSTRING*, envtocstringarray_128641)(void);
N_NIMCALL(void, getenvvarsc_111002)(void);
N_NIMCALL(NI, nsuFindChar)(NimStringDesc* s, NIM_CHAR sub, NI start);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI start_70624, NI last);
N_NIMCALL(NimStringDesc*, copyStrLast)(NimStringDesc* s, NI first, NI last);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI start);
N_NIMCALL(NimStringDesc*, copyStr)(NimStringDesc* s, NI first);
N_NOCONV(void*, alloc0_4616)(NI size);
N_NOCONV(void*, alloc_4601)(NI size);
N_NIMCALL(NCSTRING*, envtocstringarray_128604)(tstringtable121810* t);
N_NIMCALL(NI, nstlen)(tstringtable121810* t);
N_NIMCALL(pid_t, startprocessauxfork_128804)(tstartprocessdata128715* data);
N_CDECL(void, startprocessafterfork_128807)(tstartprocessdata128715* data);
N_NIMCALL(void, startprocessfail_129623)(tstartprocessdata128715* data);
N_NOINLINE(void, nososError)(NimStringDesc* msg);
N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str);
static N_INLINE(void, popSafePoint)(void);
N_NIMCALL(void, reraiseException)(void);
N_NIMCALL(NimStringDesc*, nsuJoinSep)(NimStringDesc** a, NI aLen0, NimStringDesc* sep);
N_NIMCALL(void, dealloccstringarray_10842)(NCSTRING* a);
N_NIMCALL(void, createstream_130117)(tstream124629** stream, int* handle, NU8 filemode);
N_NIMCALL(NIM_BOOL, open_10211)(FILE** f, int filehandle, NU8 mode);
N_NIMCALL(tfilestream125156*, newfilestream_125211)(FILE* f);
N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
N_NIMCALL(void, TMP3910)(void* p, NI op);
N_NIMCALL(tprocess127203*, startcmd_127434)(NimStringDesc* command, NU8 options);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incref_46827)(tcell41090* c);
static N_INLINE(NIM_BOOL, canbecycleroot_44462)(tcell41090* c);
static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c);
N_NOINLINE(void, incl_41855)(tcellset41102* s, tcell41090* cell);
static N_INLINE(void, decref_46402)(tcell41090* c);
N_NIMCALL(void, nossleep)(NI milsecs);
N_NIMCALL(NIM_BOOL, nosprunning)(tprocess127203* p);
N_NIMCALL(NI, nospwaitForExit)(tprocess127203* p, NI timeout);
N_NIMCALL(void, nospclose)(tprocess127203* p);
N_NIMCALL(void, close_124676)(tstream124629* s);
STRING_LITERAL(TMP1279, "\'\'", 2);
static NIM_CONST TY90161 TMP1280 = {
0x00, 0x00, 0x00, 0x00, 0x20, 0xE8, 0xFF, 0x27,
0xFF, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(TMP1281, "\'", 1);
STRING_LITERAL(TMP1283, "\'\"\'\"\'", 5);
STRING_LITERAL(TMP2644, "/bin/sh", 7);
STRING_LITERAL(TMP2645, "-c", 2);
STRING_LITERAL(TMP2647, "=", 1);
STRING_LITERAL(TMP2650, " ", 1);
STRING_LITERAL(TMP2651, "", 0);
extern TNimType NTI2409; /* TObject */
TNimType NTI127203; /* TProcess */
extern TNimType NTI10008; /* TFileHandle */
extern TNimType NTI124627; /* PStream */
extern TNimType NTI97457; /* TPid */
extern TNimType NTI4409; /* cint */
TNimType NTI127205; /* PProcess */
extern TNimType NTI110805; /* seq[string] */
extern tgcheap43016 gch_43044;
extern TSafePoint* exchandler_13039;
extern TY110805* environment_110806;
TNimType NTI128202; /* seq[PProcess] */

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(NimStringDesc*, nospquoteShellPosix)(NimStringDesc* s) {
	NimStringDesc* result;
	NIM_BOOL safe;
	result = 0;
	{
		if (!(s->Sup.len == 0)) goto LA3;
		result = copyString(((NimStringDesc*) &TMP1279));
		goto BeforeRet;
	}
	LA3: ;
	safe = allcharsinset_89836(s, TMP1280);
	{
		if (!safe) goto LA7;
		result = copyString(s);
		goto BeforeRet;
	}
	goto LA5;
	LA7: ;
	{
		NimStringDesc* LOC10;
		NimStringDesc* LOC11;
		LOC10 = 0;
		LOC11 = 0;
		LOC11 = nsuReplaceStr(s, ((NimStringDesc*) &TMP1281), ((NimStringDesc*) &TMP1283));
		LOC10 = rawNewString(LOC11->Sup.len + 2);
appendString(LOC10, ((NimStringDesc*) &TMP1281));
appendString(LOC10, LOC11);
appendString(LOC10, ((NimStringDesc*) &TMP1281));
		result = LOC10;
		goto BeforeRet;
	}
	LA5: ;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NimStringDesc*, nospquoteShell)(NimStringDesc* s) {
	NimStringDesc* result;
	result = 0;
	result = nospquoteShellPosix(s);
	goto BeforeRet;
	BeforeRet: ;
	return result;
}
N_NIMCALL(void, TMP2643)(void* p, NI op) {
	tprocess127203* a;
	a = (tprocess127203*)p;
	nimGCvisit((void*)(*a).Instream, op);
	nimGCvisit((void*)(*a).Outstream, op);
	nimGCvisit((void*)(*a).Errstream, op);
}

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

static N_INLINE(void, rtladdzct_46002)(tcell41090* c) {
	addzct_44418(&gch_43044.Zct, c);
}

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

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

N_NIMCALL(NCSTRING*, envtocstringarray_128641)(void) {
	NCSTRING* result;
	NI counter;
	NimStringDesc* key_128645;
	NimStringDesc* val_128646;
	NI i_128686;
	NI HEX3Atmp_128688;
	NI res_128690;
	void* LOC2;
	NI i;
	NimStringDesc* key_128665;
	NimStringDesc* val_128666;
	NI i_128702;
	NI HEX3Atmp_128704;
	NI res_128706;
	result = 0;
	counter = 0;
	key_128645 = 0;
	val_128646 = 0;
	getenvvarsc_111002();
	i_128686 = 0;
	HEX3Atmp_128688 = 0;
	HEX3Atmp_128688 = (environment_110806->Sup.len-1);
	res_128690 = 0;
	while (1) {
		NI p_128692;
		if (!(res_128690 <= HEX3Atmp_128688)) goto LA1;
		i_128686 = res_128690;
		p_128692 = nsuFindChar(environment_110806->data[i_128686], 61, 0);
		key_128645 = copyStrLast(environment_110806->data[i_128686], 0, (NI32)(p_128692 - 1));
		val_128646 = copyStr(environment_110806->data[i_128686], (NI32)(p_128692 + 1));
		counter += 1;
		res_128690 += 1;
	} LA1: ;
	LOC2 = 0;
	LOC2 = alloc0_4616((NI32)((NI32)(counter + 1) * 4));
	result = ((NCSTRING*) (LOC2));
	i = 0;
	key_128665 = 0;
	val_128666 = 0;
	getenvvarsc_111002();
	i_128702 = 0;
	HEX3Atmp_128704 = 0;
	HEX3Atmp_128704 = (environment_110806->Sup.len-1);
	res_128706 = 0;
	while (1) {
		NI p_128708;
		NimStringDesc* x;
		NimStringDesc* LOC4;
		void* LOC5;
		if (!(res_128706 <= HEX3Atmp_128704)) goto LA3;
		i_128702 = res_128706;
		p_128708 = nsuFindChar(environment_110806->data[i_128702], 61, 0);
		key_128665 = copyStrLast(environment_110806->data[i_128702], 0, (NI32)(p_128708 - 1));
		val_128666 = copyStr(environment_110806->data[i_128702], (NI32)(p_128708 + 1));
		LOC4 = 0;
		LOC4 = rawNewString(key_128665->Sup.len + val_128666->Sup.len + 1);
appendString(LOC4, key_128665);
appendString(LOC4, ((NimStringDesc*) &TMP2647));
appendString(LOC4, val_128666);
		x = LOC4;
		LOC5 = 0;
		LOC5 = alloc_4601((NI32)(x->Sup.len + 1));
		result[(i)- 0] = ((NCSTRING) (LOC5));
		memcpy(((void*) (result[(i)- 0])), ((void*) (&x->data[0])), (NI32)(x->Sup.len + 1));
		i += 1;
		res_128706 += 1;
	} LA3: ;
	return result;
}

N_NIMCALL(NCSTRING*, envtocstringarray_128604)(tstringtable121810* t) {
	NCSTRING* result;
	NI LOC1;
	void* LOC2;
	NI i;
	NimStringDesc* key_128610;
	NimStringDesc* val_128611;
	NI h_128634;
	NI HEX3Atmp_128636;
	NI res_128638;
	result = 0;
	LOC1 = 0;
	LOC1 = nstlen(t);
	LOC2 = 0;
	LOC2 = alloc0_4616((NI32)((NI32)(LOC1 + 1) * 4));
	result = ((NCSTRING*) (LOC2));
	i = 0;
	key_128610 = 0;
	val_128611 = 0;
	h_128634 = 0;
	HEX3Atmp_128636 = 0;
	HEX3Atmp_128636 = ((*t).Data->Sup.len-1);
	res_128638 = 0;
	while (1) {
		if (!(res_128638 <= HEX3Atmp_128636)) goto LA3;
		h_128634 = res_128638;
		{
			NimStringDesc* x;
			NimStringDesc* LOC8;
			void* LOC9;
			if (!!((*t).Data->data[h_128634].Field0 == 0)) goto LA6;
			key_128610 = (*t).Data->data[h_128634].Field0;
			val_128611 = (*t).Data->data[h_128634].Field1;
			LOC8 = 0;
			LOC8 = rawNewString(key_128610->Sup.len + val_128611->Sup.len + 1);
appendString(LOC8, key_128610);
appendString(LOC8, ((NimStringDesc*) &TMP2647));
appendString(LOC8, val_128611);
			x = LOC8;
			LOC9 = 0;
			LOC9 = alloc_4601((NI32)(x->Sup.len + 1));
			result[(i)- 0] = ((NCSTRING) (LOC9));
			memcpy(((void*) (result[(i)- 0])), ((void*) (&x->data[0])), (NI32)(x->Sup.len + 1));
			i += 1;
		}
		LA6: ;
		res_128638 += 1;
	} LA3: ;
	return result;
}

N_NIMCALL(void, startprocessfail_129623)(tstartprocessdata128715* data) {
	int error;
	NI LOC1;
	error = errno;
	LOC1 = 0;
	LOC1 = write((*data).Perrorpipe[(1)- 0], ((void*) (&error)), 4);
	_exit(1);
}

N_CDECL(void, startprocessafterfork_128807)(tstartprocessdata128715* data) {
	int LOC42;
	int LOC43;
	{
		int LOC5;
		int LOC11;
		int LOC17;
		if (!!((*data).Optionpoparentstreams)) goto LA3;
		LOC5 = 0;
		LOC5 = close((*data).Pstdin[(1)- 0]);
		{
			int LOC8;
			LOC8 = 0;
			LOC8 = dup2((*data).Pstdin[(0)- 0], ((int) 0));
			if (!(LOC8 < ((NI32) 0))) goto LA9;
			startprocessfail_129623(data);
		}
		LA9: ;
		LOC11 = 0;
		LOC11 = close((*data).Pstdout[(0)- 0]);
		{
			int LOC14;
			LOC14 = 0;
			LOC14 = dup2((*data).Pstdout[(1)- 0], ((int) 1));
			if (!(LOC14 < ((NI32) 0))) goto LA15;
			startprocessfail_129623(data);
		}
		LA15: ;
		LOC17 = 0;
		LOC17 = close((*data).Pstderr[(0)- 0]);
		{
			if (!(*data).Optionpostderrtostdout) goto LA20;
			{
				int LOC24;
				LOC24 = 0;
				LOC24 = dup2((*data).Pstdout[(1)- 0], ((int) 2));
				if (!(LOC24 < ((NI32) 0))) goto LA25;
				startprocessfail_129623(data);
			}
			LA25: ;
		}
		goto LA18;
		LA20: ;
		{
			{
				int LOC30;
				LOC30 = 0;
				LOC30 = dup2((*data).Pstderr[(1)- 0], ((int) 2));
				if (!(LOC30 < ((NI32) 0))) goto LA31;
				startprocessfail_129623(data);
			}
			LA31: ;
		}
		LA18: ;
	}
	LA3: ;
	{
		if (!(0 < strlen((*data).Workingdir))) goto LA35;
		{
			int LOC39;
			LOC39 = 0;
			LOC39 = chdir((*data).Workingdir);
			if (!(LOC39 < ((NI32) 0))) goto LA40;
			startprocessfail_129623(data);
		}
		LA40: ;
	}
	LA35: ;
	LOC42 = 0;
	LOC42 = close((*data).Perrorpipe[(0)- 0]);
	LOC43 = 0;
	LOC43 = fcntl((*data).Perrorpipe[(1)- 0], F_SETFD, FD_CLOEXEC);
	{
		int LOC48;
		if (!(*data).Optionpousepath) goto LA46;
		LOC48 = 0;
		LOC48 = execvpe((*data).Syscommand, (*data).Sysargs, (*data).Sysenv);
	}
	goto LA44;
	LA46: ;
	{
		int LOC50;
		LOC50 = 0;
		LOC50 = execve((*data).Syscommand, (*data).Sysargs, (*data).Sysenv);
	}
	LA44: ;
	startprocessfail_129623(data);
}

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

N_NIMCALL(pid_t, startprocessauxfork_128804)(tstartprocessdata128715* data) {
	pid_t result;
	TSafePoint TMP2649;
	result = 0;
	{
		int LOC3;
		NI32 LOC6;
		LOC3 = 0;
		LOC3 = pipe((*data).Perrorpipe);
		if (!!((LOC3 == ((NI32) 0)))) goto LA4;
		LOC6 = 0;
		LOC6 = oslasterror_106231();
		oserror_106205(LOC6);
	}
	LA4: ;
	pushSafePoint(&TMP2649);
	TMP2649.status = setjmp(TMP2649.context);
	if (TMP2649.status == 0) {
		pid_t volatile pid;
		tstartprocessdata128715 volatile datacopy;
		int LOC12;
		int volatile error;
		NI volatile sizeread;
		int LOC24;
		pid = 0;
		datacopy = (*data);
		pid = fork();
		{
			if (!(pid == 0)) goto LA10;
			startprocessafterfork_128807(&datacopy);
			_exit(1);
		}
		LA10: ;
		LOC12 = 0;
		LOC12 = close((*data).Perrorpipe[(1)- 0]);
		{
			NI32 LOC17;
			if (!(pid < 0)) goto LA15;
			LOC17 = 0;
			LOC17 = oslasterror_106231();
			oserror_106205(LOC17);
		}
		LA15: ;
		error = 0;
		sizeread = read((*data).Perrorpipe[(0)- 0], ((void*) (&error)), 4);
		{
			NCSTRING LOC22;
			NimStringDesc* LOC23;
			if (!(sizeread == 4)) goto LA20;
			LOC22 = 0;
			LOC22 = strerror(error);
			LOC23 = 0;
			LOC23 = cstrToNimstr(LOC22);
			nososError(LOC23);
		}
		LA20: ;
		result = pid;
		popSafePoint();
		LOC24 = 0;
		LOC24 = close((*data).Perrorpipe[(0)- 0]);
		goto BeforeRet;
		popSafePoint();
	}
	else {
		popSafePoint();
	}
	{
		int LOC27;
		LOC27 = 0;
		LOC27 = close((*data).Perrorpipe[(0)- 0]);
	}
	if (TMP2649.status != 0) reraiseException();
	BeforeRet: ;
	return result;
}

N_NIMCALL(tprocess127203*, nospstartProcess)(NimStringDesc* command, NimStringDesc* workingdir, NimStringDesc** args, NI argsLen0, tstringtable121810* env, NU8 options) {
	tprocess127203* result;
	TY128825 pstdin;
	TY128825 pstdout;
	TY128825 pstderr;
	NimStringDesc* syscommand;
	TY110805* sysargsraw;
	pid_t pid;
	NCSTRING* sysargs;
	TSafePoint TMP2646;
	result = 0;
	memset((void*)pstdin, 0, sizeof(pstdin));
	memset((void*)pstdout, 0, sizeof(pstdout));
	memset((void*)pstderr, 0, sizeof(pstderr));
	result = (tprocess127203*) newObj((&NTI127205), sizeof(tprocess127203));
	(*result).Sup.m_type = (&NTI127203);
	(*result).Exitcode = ((int) -3);
	{
		if (!!(((options &(1<<((((NU8) 4))&7)))!=0))) goto LA3;
		{
			NIM_BOOL LOC7;
			NIM_BOOL LOC8;
			int LOC9;
			int LOC11;
			int LOC13;
			NI32 LOC16;
			LOC7 = 0;
			LOC8 = 0;
			LOC9 = 0;
			LOC9 = pipe(pstdin);
			LOC8 = !((LOC9 == ((NI32) 0)));
			if (LOC8) goto LA10;
			LOC11 = 0;
			LOC11 = pipe(pstdout);
			LOC8 = !((LOC11 == ((NI32) 0)));
			LA10: ;
			LOC7 = LOC8;
			if (LOC7) goto LA12;
			LOC13 = 0;
			LOC13 = pipe(pstderr);
			LOC7 = !((LOC13 == ((NI32) 0)));
			LA12: ;
			if (!LOC7) goto LA14;
			LOC16 = 0;
			LOC16 = oslasterror_106231();
			oserror_106205(LOC16);
		}
		LA14: ;
	}
	LA3: ;
	syscommand = 0;
	sysargsraw = 0;
	{
		TY173034 LOC21;
		NimStringDesc* LOC22;
		NimStringDesc* LOC23;
		NimStringDesc* LOC24;
		if (!((options &(1<<((((NU8) 2))&7)))!=0)) goto LA19;
		syscommand = copyString(((NimStringDesc*) &TMP2644));
		sysargsraw = (TY110805*) newSeq((&NTI110805), 3);
		memset((void*)LOC21, 0, sizeof(LOC21));
		LOC21[0] = copyString(syscommand);
		LOC21[1] = copyString(((NimStringDesc*) &TMP2645));
		LOC21[2] = copyString(command);
		LOC22 = 0;
		LOC22 = sysargsraw->data[0]; sysargsraw->data[0] = copyStringRC1(LOC21[0]);
		if (LOC22) nimGCunrefNoCycle(LOC22);
		LOC23 = 0;
		LOC23 = sysargsraw->data[1]; sysargsraw->data[1] = copyStringRC1(LOC21[1]);
		if (LOC23) nimGCunrefNoCycle(LOC23);
		LOC24 = 0;
		LOC24 = sysargsraw->data[2]; sysargsraw->data[2] = copyStringRC1(LOC21[2]);
		if (LOC24) nimGCunrefNoCycle(LOC24);
	}
	goto LA17;
	LA19: ;
	{
		TY165002 LOC26;
		NimStringDesc* LOC27;
		NimStringDesc* arg_129030;
		NI i_129287;
		syscommand = copyString(command);
		sysargsraw = (TY110805*) newSeq((&NTI110805), 1);
		memset((void*)LOC26, 0, sizeof(LOC26));
		LOC26[0] = copyString(command);
		LOC27 = 0;
		LOC27 = sysargsraw->data[0]; sysargsraw->data[0] = copyStringRC1(LOC26[0]);
		if (LOC27) nimGCunrefNoCycle(LOC27);
		arg_129030 = 0;
		i_129287 = 0;
		while (1) {
			NimStringDesc* LOC29;
			if (!(i_129287 < argsLen0)) goto LA28;
			arg_129030 = args[i_129287];
			sysargsraw = (TY110805*) incrSeq(&(sysargsraw)->Sup, sizeof(NimStringDesc*));
			LOC29 = 0;
			LOC29 = sysargsraw->data[sysargsraw->Sup.len-1]; sysargsraw->data[sysargsraw->Sup.len-1] = copyStringRC1(arg_129030);
			if (LOC29) nimGCunrefNoCycle(LOC29);
			i_129287 += 1;
		} LA28: ;
	}
	LA17: ;
	pid = 0;
	sysargs = alloccstringarray_10801(sysargsraw->data, sysargsraw->Sup.len);
	pushSafePoint(&TMP2646);
	TMP2646.status = setjmp(TMP2646.context);
	if (TMP2646.status == 0) {
		NCSTRING* volatile sysenv;
		TSafePoint TMP2648;
		{
			if (!(env == NIM_NIL)) goto LA33;
			sysenv = envtocstringarray_128641();
		}
		goto LA31;
		LA33: ;
		{
			sysenv = envtocstringarray_128604(env);
		}
		LA31: ;
		pushSafePoint(&TMP2648);
		TMP2648.status = setjmp(TMP2648.context);
		if (TMP2648.status == 0) {
			tstartprocessdata128715 volatile data;
			memset((void*)&data, 0, sizeof(data));
			data.Syscommand = syscommand->data;
			data.Sysargs = sysargs;
			data.Sysenv = sysenv;
			memcpy((void*)data.Pstdin, (NIM_CONST void*)pstdin, sizeof(data.Pstdin));
			memcpy((void*)data.Pstdout, (NIM_CONST void*)pstdout, sizeof(data.Pstdout));
			memcpy((void*)data.Pstderr, (NIM_CONST void*)pstderr, sizeof(data.Pstderr));
			data.Optionpoparentstreams = ((options &(1<<((((NU8) 4))&7)))!=0);
			data.Optionpousepath = ((options &(1<<((((NU8) 1))&7)))!=0);
			data.Optionpostderrtostdout = ((options &(1<<((((NU8) 3))&7)))!=0);
			data.Workingdir = workingdir->data;
			pid = startprocessauxfork_128804(&data);
			{
				NimStringDesc* LOC41;
				if (!((options &(1<<((((NU8) 0))&7)))!=0)) goto LA39;
				LOC41 = 0;
				LOC41 = nsuJoinSep(args, argsLen0, ((NimStringDesc*) &TMP2650));
				printf("%s%s%s\012", (command)->data, (((NimStringDesc*) &TMP2650))->data, (LOC41)->data);
			}
			LA39: ;
			(*result).Id = pid;
			{
				if (!((options &(1<<((((NU8) 4))&7)))!=0)) goto LA44;
				(*result).Inhandle = ((int) 0);
				(*result).Outhandle = ((int) 1);
				{
					if (!((options &(1<<((((NU8) 3))&7)))!=0)) goto LA48;
					(*result).Errhandle = (*result).Outhandle;
				}
				goto LA46;
				LA48: ;
				{
					(*result).Errhandle = ((int) 2);
				}
				LA46: ;
			}
			goto LA42;
			LA44: ;
			{
				int LOC58;
				int LOC59;
				int LOC60;
				(*result).Inhandle = pstdin[(1)- 0];
				(*result).Outhandle = pstdout[(0)- 0];
				{
					int LOC56;
					if (!((options &(1<<((((NU8) 3))&7)))!=0)) goto LA54;
					(*result).Errhandle = (*result).Outhandle;
					LOC56 = 0;
					LOC56 = close(pstderr[(0)- 0]);
				}
				goto LA52;
				LA54: ;
				{
					(*result).Errhandle = pstderr[(0)- 0];
				}
				LA52: ;
				LOC58 = 0;
				LOC58 = close(pstderr[(1)- 0]);
				LOC59 = 0;
				LOC59 = close(pstdin[(0)- 0]);
				LOC60 = 0;
				LOC60 = close(pstdout[(1)- 0]);
			}
			LA42: ;
			popSafePoint();
		}
		else {
			popSafePoint();
		}
		{
			dealloccstringarray_10842(sysenv);
		}
		if (TMP2648.status != 0) reraiseException();
		popSafePoint();
	}
	else {
		popSafePoint();
	}
	{
		dealloccstringarray_10842(sysargs);
	}
	if (TMP2646.status != 0) reraiseException();
	return result;
}

N_NIMCALL(tprocess127203*, startcmd_127434)(NimStringDesc* command, NU8 options) {
	tprocess127203* result;
	TY523288 LOC1;
	result = 0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	result = nospstartProcess(command, ((NimStringDesc*) &TMP2651), LOC1, 0, NIM_NIL, (options | 4));
	return result;
}

N_NIMCALL(void, createstream_130117)(tstream124629** stream, int* handle, NU8 filemode) {
	FILE* f;
	tfilestream125156* LOC7;
	f = 0;
	{
		NIM_BOOL LOC3;
		NI32 LOC6;
		LOC3 = 0;
		LOC3 = open_10211(&f, (*handle), filemode);
		if (!!(LOC3)) goto LA4;
		LOC6 = 0;
		LOC6 = oslasterror_106231();
		oserror_106205(LOC6);
	}
	LA4: ;
	LOC7 = 0;
	LOC7 = newfilestream_125211(f);
	unsureAsgnRef((void**) &(*stream), &LOC7->Sup);
}

N_NIMCALL(tstream124629*, nospinputStream)(tprocess127203* p) {
	tstream124629* result;
	result = 0;
	{
		if (!((*p).Instream == NIM_NIL)) goto LA3;
		createstream_130117(&(*p).Instream, &(*p).Inhandle, ((NU8) 1));
	}
	LA3: ;
	result = (*p).Instream;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

N_NIMCALL(tstream124629*, nospoutputStream)(tprocess127203* p) {
	tstream124629* result;
	result = 0;
	{
		if (!((*p).Outstream == NIM_NIL)) goto LA3;
		createstream_130117(&(*p).Outstream, &(*p).Outhandle, ((NU8) 0));
	}
	LA3: ;
	result = (*p).Outstream;
	goto BeforeRet;
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, nospwaitForExit)(tprocess127203* p, NI timeout) {
	NI result;
	result = 0;
	{
		if (!!(((*p).Exitcode == ((NI32) -3)))) goto LA3;
		result = ((NI) ((*p).Exitcode));
		goto BeforeRet;
	}
	LA3: ;
	{
		pid_t LOC7;
		NI32 LOC10;
		LOC7 = 0;
		LOC7 = waitpid((*p).Id, &(*p).Exitcode, ((int) 0));
		if (!(LOC7 < 0)) goto LA8;
		(*p).Exitcode = ((int) -3);
		LOC10 = 0;
		LOC10 = oslasterror_106231();
		oserror_106205(LOC10);
	}
	LA8: ;
	result = (NI)((NU32)(((NI) ((*p).Exitcode))) >> (NU32)(8));
	BeforeRet: ;
	return result;
}

N_NIMCALL(NI, nospcountProcessors)(void) {
	NI result;
	result = 0;
	result = sysconf(_SC_NPROCESSORS_ONLN);
	{
		if (!(result <= 0)) goto LA3;
		result = 1;
	}
	LA3: ;
	return result;
}

N_NIMCALL(NI, nospexecCmd)(NimStringDesc* command) {
	NI result;
	int LOC1;
	result = 0;
	LOC1 = 0;
	LOC1 = system(command->data);
	result = ((NI) ((NI32)((NU32)(LOC1) >> (NU32)(((NI32) 8)))));
	return result;
}
N_NIMCALL(void, TMP3910)(void* p, NI op) {
	TY128202* a;
	NI LOC1;
	a = (TY128202*)p;
	LOC1 = 0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}

static N_INLINE(NIM_BOOL, canbecycleroot_44462)(tcell41090* c) {
	NIM_BOOL result;
	result = 0;
	result = !((((*(*c).Typ).flags &(1<<((((NU8) 1))&7)))!=0));
	return result;
}

static N_INLINE(void, rtladdcycleroot_45235)(tcell41090* c) {
	{
		if (!!((((NI) ((NI)((*c).Refcount & 3))) == 3))) goto LA3;
		(*c).Refcount = (NI)((NI)((*c).Refcount & -4) | 3);
		incl_41855(&gch_43044.Cycleroots, c);
	}
	LA3: ;
}

static N_INLINE(void, incref_46827)(tcell41090* c) {
	(*c).Refcount = (NI)((NU32)((*c).Refcount) + (NU32)(8));
	{
		NIM_BOOL LOC3;
		LOC3 = 0;
		LOC3 = canbecycleroot_44462(c);
		if (!LOC3) goto LA4;
		rtladdcycleroot_45235(c);
	}
	LA4: ;
}

static N_INLINE(void, decref_46402)(tcell41090* c) {
	{
		(*c).Refcount -= 8;
		if (!((NU32)((*c).Refcount) < (NU32)(8))) goto LA3;
		rtladdzct_46002(c);
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		LOC6 = 0;
		LOC6 = canbecycleroot_44462(c);
		if (!LOC6) goto LA7;
		rtladdcycleroot_45235(c);
	}
	goto LA1;
	LA7: ;
	LA1: ;
}

static N_INLINE(void, asgnRef)(void** dest, void* src) {
	{
		tcell41090* LOC5;
		if (!!((src == NIM_NIL))) goto LA3;
		LOC5 = 0;
		LOC5 = usrtocell_44443(src);
		incref_46827(LOC5);
	}
	LA3: ;
	{
		tcell41090* LOC10;
		if (!!(((*dest) == NIM_NIL))) goto LA8;
		LOC10 = 0;
		LOC10 = usrtocell_44443((*dest));
		decref_46402(LOC10);
	}
	LA8: ;
	(*dest) = src;
}

N_NIMCALL(NIM_BOOL, nosprunning)(tprocess127203* p) {
	NIM_BOOL result;
	pid_t ret;
	result = 0;
	ret = waitpid((*p).Id, &(*p).Exitcode, WNOHANG);
	{
		if (!(ret == 0)) goto LA3;
		result = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	result = (ret == (*p).Id);
	BeforeRet: ;
	return result;
}

N_NIMCALL(void, nospclose)(tprocess127203* p) {
	int LOC13;
	int LOC14;
	int LOC15;
	{
		if (!!(((*p).Instream == NIM_NIL))) goto LA3;
		close_124676((*p).Instream);
	}
	LA3: ;
	{
		if (!!(((*p).Outstream == NIM_NIL))) goto LA7;
		close_124676((*p).Outstream);
	}
	LA7: ;
	{
		if (!!(((*p).Errstream == NIM_NIL))) goto LA11;
		close_124676((*p).Errstream);
	}
	LA11: ;
	LOC13 = 0;
	LOC13 = close((*p).Inhandle);
	LOC14 = 0;
	LOC14 = close((*p).Outhandle);
	LOC15 = 0;
	LOC15 = close((*p).Errhandle);
}

N_NIMCALL(NI, nospexecProcesses)(NimStringDesc** cmds, NI cmdsLen0, NU8 options_127808, NI n) {
	NI result;
	NU8 options;
	result = 0;
	options = (options_127808 & ~ 16);
	{
		TY128202* q;
		NI m;
		NI i_128241;
		NI HEX3Atmp_128498;
		NI res_128500;
		NI i;
		NI j_128461;
		NI HEX3Atmp_128506;
		NI res_128508;
		if (!(1 < n)) goto LA3;
		q = 0;
		q = (TY128202*) newSeq((&NTI128202), n);
		m = ((n <= cmdsLen0) ? n : cmdsLen0);
		i_128241 = 0;
		HEX3Atmp_128498 = 0;
		HEX3Atmp_128498 = (NI32)(m - 1);
		res_128500 = 0;
		while (1) {
			if (!(res_128500 <= HEX3Atmp_128498)) goto LA5;
			i_128241 = res_128500;
			asgnRef((void**) &q->data[i_128241], startcmd_127434(cmds[i_128241], options));
			res_128500 += 1;
		} LA5: ;
		i = m;
		while (1) {
			NI r_128413;
			NI HEX3Atmp_128502;
			NI res_128504;
			if (!(i <= (cmdsLen0-1))) goto LA6;
			nossleep(50);
			r_128413 = 0;
			HEX3Atmp_128502 = 0;
			HEX3Atmp_128502 = (NI32)(n - 1);
			res_128504 = 0;
			while (1) {
				if (!(res_128504 <= HEX3Atmp_128502)) goto LA7;
				r_128413 = res_128504;
				{
					NIM_BOOL LOC10;
					NI LOC13;
					LOC10 = 0;
					LOC10 = nosprunning(q->data[r_128413]);
					if (!!(LOC10)) goto LA11;
					LOC13 = 0;
					LOC13 = nospwaitForExit(q->data[r_128413], -1);
					result = ((LOC13 >= result) ? LOC13 : result);
					{
						if (!!((q->data[r_128413] == NIM_NIL))) goto LA16;
						nospclose(q->data[r_128413]);
					}
					LA16: ;
					asgnRef((void**) &q->data[r_128413], startcmd_127434(cmds[i], options));
					i += 1;
					{
						if (!((cmdsLen0-1) < i)) goto LA20;
						goto LA7;
					}
					LA20: ;
				}
				LA11: ;
				res_128504 += 1;
			} LA7: ;
		} LA6: ;
		j_128461 = 0;
		HEX3Atmp_128506 = 0;
		HEX3Atmp_128506 = (NI32)(m - 1);
		res_128508 = 0;
		while (1) {
			NI LOC23;
			if (!(res_128508 <= HEX3Atmp_128506)) goto LA22;
			j_128461 = res_128508;
			LOC23 = 0;
			LOC23 = nospwaitForExit(q->data[j_128461], -1);
			result = ((LOC23 >= result) ? LOC23 : result);
			{
				if (!!((q->data[j_128461] == NIM_NIL))) goto LA26;
				nospclose(q->data[j_128461]);
			}
			LA26: ;
			res_128508 += 1;
		} LA22: ;
	}
	goto LA1;
	LA3: ;
	{
		NI i_128492;
		NI HEX3Atmp_128510;
		NI res_128512;
		i_128492 = 0;
		HEX3Atmp_128510 = 0;
		HEX3Atmp_128510 = (cmdsLen0-1);
		res_128512 = 0;
		while (1) {
			tprocess127203* p;
			NI LOC30;
			if (!(res_128512 <= HEX3Atmp_128510)) goto LA29;
			i_128492 = res_128512;
			p = startcmd_127434(cmds[i_128492], options);
			LOC30 = 0;
			LOC30 = nospwaitForExit(p, -1);
			result = ((LOC30 >= result) ? LOC30 : result);
			nospclose(p);
			res_128512 += 1;
		} LA29: ;
	}
	LA1: ;
	return result;
}
N_NOINLINE(void, stdlibosprocInit)(void) {
}

N_NOINLINE(void, stdlibosprocDatInit)(void) {
static TNimNode* TMP2640[8];
static TNimNode TMP29[9];
NTI127203.size = sizeof(tprocess127203);
NTI127203.kind = 17;
NTI127203.base = (&NTI2409);
TMP2640[0] = &TMP29[1];
TMP29[1].kind = 1;
TMP29[1].offset = offsetof(tprocess127203, Inhandle);
TMP29[1].typ = (&NTI10008);
TMP29[1].name = "inHandle";
TMP2640[1] = &TMP29[2];
TMP29[2].kind = 1;
TMP29[2].offset = offsetof(tprocess127203, Outhandle);
TMP29[2].typ = (&NTI10008);
TMP29[2].name = "outHandle";
TMP2640[2] = &TMP29[3];
TMP29[3].kind = 1;
TMP29[3].offset = offsetof(tprocess127203, Errhandle);
TMP29[3].typ = (&NTI10008);
TMP29[3].name = "errHandle";
TMP2640[3] = &TMP29[4];
TMP29[4].kind = 1;
TMP29[4].offset = offsetof(tprocess127203, Instream);
TMP29[4].typ = (&NTI124627);
TMP29[4].name = "inStream";
TMP2640[4] = &TMP29[5];
TMP29[5].kind = 1;
TMP29[5].offset = offsetof(tprocess127203, Outstream);
TMP29[5].typ = (&NTI124627);
TMP29[5].name = "outStream";
TMP2640[5] = &TMP29[6];
TMP29[6].kind = 1;
TMP29[6].offset = offsetof(tprocess127203, Errstream);
TMP29[6].typ = (&NTI124627);
TMP29[6].name = "errStream";
TMP2640[6] = &TMP29[7];
TMP29[7].kind = 1;
TMP29[7].offset = offsetof(tprocess127203, Id);
TMP29[7].typ = (&NTI97457);
TMP29[7].name = "id";
TMP2640[7] = &TMP29[8];
TMP29[8].kind = 1;
TMP29[8].offset = offsetof(tprocess127203, Exitcode);
TMP29[8].typ = (&NTI4409);
TMP29[8].name = "exitCode";
TMP29[0].len = 8; TMP29[0].kind = 2; TMP29[0].sons = &TMP2640[0];
NTI127203.node = &TMP29[0];
NTI127205.size = sizeof(tprocess127203*);
NTI127205.kind = 22;
NTI127205.base = (&NTI127203);
NTI127205.marker = TMP2643;
NTI128202.size = sizeof(TY128202*);
NTI128202.kind = 24;
NTI128202.base = (&NTI127205);
NTI128202.marker = TMP3910;
}

