1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 32
3 
4 #include "nimbase.h"
5 #include <stdio.h>
6 #include <fcntl.h>
7 #include <string.h>
8 #include <errno.h>
9 #include <sys/stat.h>
10 #include <sys/types.h>
11 #include <setjmp.h>
12 #include <sys/ioctl.h>
13 #undef LANGUAGE_C
14 #undef MIPSEB
15 #undef MIPSEL
16 #undef PPC
17 #undef R3000
18 #undef R4000
19 #undef i386
20 #undef linux
21 #undef mips
22 #undef near
23 #undef far
24 #undef powerpc
25 #undef unix
26 #define nimfr_(x, y)
27 #define nimln_(x, y)
28 typedef struct NimStringDesc NimStringDesc;
29 typedef struct TGenericSeq TGenericSeq;
30 typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ tySequence__sM4lkSb7zS6F7OVMvW9cffQ;
31 typedef struct TNimType TNimType;
32 typedef struct TNimNode TNimNode;
33 typedef struct tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw;
34 typedef struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA;
35 typedef struct Exception Exception;
36 typedef struct RootObj RootObj;
37 typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
38 typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
39 typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
40 typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
41 typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
42 typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
43 typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
44 typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
45 typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
46 typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
47 typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
48 typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
49 typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
50 typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
51 typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
52 typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
53 typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
54 typedef struct TSafePoint TSafePoint;
55 typedef struct tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg;
56 typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
57 struct TGenericSeq {
58 NI len;
59 NI reserved;
60 };
61 struct NimStringDesc {
62   TGenericSeq Sup;
63 NIM_CHAR data[SEQ_DECL_SIZE];
64 };
65 typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
66 typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
67 typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
68 typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
69 struct TNimType {
70 NI size;
71 NI align;
72 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
73 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
74 TNimType* base;
75 TNimNode* node;
76 void* finalizer;
77 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
78 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
79 };
80 typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
81 struct TNimNode {
82 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
83 NI offset;
84 TNimType* typ;
85 NCSTRING name;
86 NI len;
87 TNimNode** sons;
88 };
89 struct RootObj {
90 TNimType* m_type;
91 };
92 struct Exception {
93   RootObj Sup;
94 Exception* parent;
95 NCSTRING name;
96 NimStringDesc* message;
97 tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
98 Exception* up;
99 };
100 struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA {
101   Exception Sup;
102 };
103 struct tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw {
104   tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
105 };
106 struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
107 NI refcount;
108 TNimType* typ;
109 };
110 struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
111 void* bottom;
112 };
113 struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
114 NI len;
115 NI cap;
116 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
117 };
118 typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
119 typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
120 typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
121 typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
122 typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
123 struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
124 tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
125 };
126 typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
127 struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
128 tyArray__0aOLqZchNi8nWtMTi8ND8w link;
129 NI key;
130 NI upperBound;
131 NI level;
132 };
133 struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
134 tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
135 NI Field1;
136 };
137 typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
138 struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
139 NI len;
140 tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
141 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
142 };
143 struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
144 NI minLargeObj;
145 NI maxLargeObj;
146 tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
147 NU32 flBitmap;
148 tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
149 tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
150 tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
151 NI currMem;
152 NI maxMem;
153 NI freeMem;
154 NI occ;
155 NI lastSize;
156 tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
157 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
158 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
159 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
160 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
161 NIM_BOOL locked;
162 NIM_BOOL blockChunkSizeIncrease;
163 NI nextChunkSize;
164 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
165 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
166 };
167 struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
168 NI stackScans;
169 NI cycleCollections;
170 NI maxThreshold;
171 NI maxStackSize;
172 NI maxStackCells;
173 NI cycleTableSize;
174 NI64 maxPause;
175 };
176 struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
177 NI counter;
178 NI max;
179 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
180 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
181 };
182 struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
183 tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
184 NI cycleThreshold;
185 NI zctThreshold;
186 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
187 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
188 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
189 NI recGcLock;
190 tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
191 tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
192 tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
193 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
194 NI gcThreadId;
195 };
196 typedef NU8 tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg;
197 typedef NCSTRING tyArray__Djap3EijveoDksCG9bY8s5w[5];
198 struct TSafePoint {
199 TSafePoint* prev;
200 NI status;
201 jmp_buf context;
202 };
203 struct tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg {
204   tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw Sup;
205 };
206 typedef NU8 tyEnum_FileSeekPos__I9aQjuvWxs8BspGbxwsngWw;
207 struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
208 NCSTRING procname;
209 NI line;
210 NCSTRING filename;
211 };
212 struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ {
213   TGenericSeq Sup;
214   NimStringDesc* data[SEQ_DECL_SIZE];
215 };
216 struct tySequence__uB9b75OUPRENsBAu4AnoePA {
217   TGenericSeq Sup;
218   tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
219 };
220 static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s);
221 N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
222 N_LIB_PRIVATE N_NIMCALL(NI, writeBuffer__systemZio_176)(FILE* f, void* buffer, NI len);
223 N_LIB_PRIVATE N_NIMCALL(void, checkErr__systemZio_141)(FILE* f);
224 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
225 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size);
226 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
227 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___systemZdollars_3)(NI x);
228 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str);
229 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
230 N_LIB_PRIVATE N_NOINLINE(void, raiseEIO__systemZio_96)(NimStringDesc* msg) __attribute__((noreturn));
231 N_LIB_PRIVATE N_NOINLINE(void*, newObj)(TNimType* typ, NI size);
232 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
233 static N_INLINE(void, nimGCunrefNoCycle)(void* p);
234 static N_INLINE(void, decRef__system_5315)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
235 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
236 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
237 static N_INLINE(void, rtlAddZCT__system_5313)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
238 N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5264)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
239 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5270)(void* usr);
240 static N_INLINE(void, asgnRef)(void** dest, void* src);
241 static N_INLINE(void, incRef__system_5308)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
242 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
243 N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
244 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, open__systemZio_389)(FILE** f, NimStringDesc* filename, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode, NI bufSize);
245 N_LIB_PRIVATE N_NIMCALL(int, getFileHandle__systemZio_228)(FILE* f);
246 N_LIB_PRIVATE N_NIMCALL(void, close__systemZio_217)(FILE* f);
247 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen);
248 N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
249 static N_INLINE(NIM_BOOL, eqeq___system_7723)(NCSTRING x, NCSTRING y);
250 static N_INLINE(void, pushSafePoint)(TSafePoint* s);
251 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAll__systemZio_350)(FILE* file);
252 N_LIB_PRIVATE N_NIMCALL(NI64, rawFileSize__systemZio_333)(FILE* file);
253 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAllFile__systemZio_341)(FILE* file, NI64 len);
254 N_NIMCALL(NimStringDesc*, mnewString)(NI len);
255 N_LIB_PRIVATE N_NIMCALL(NI, readBuffer__systemZio_144)(FILE* f, void* buffer, NI len);
256 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, endOfFile__systemZio_337)(FILE* f);
257 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAllBuffer__systemZio_328)(FILE* file);
258 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
259 static N_INLINE(void, popSafePoint)(void);
260 N_LIB_PRIVATE N_NIMCALL(void, nimLeaveFinally)(void);
261 N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void);
262 N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
263 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, readLine__systemZio_238)(FILE* f, NimStringDesc** line);
264 N_LIB_PRIVATE N_NOINLINE(void, raiseEOF__systemZio_117)(void) __attribute__((noreturn));
265 N_LIB_PRIVATE N_NIMCALL(void, write__systemZio_205)(FILE* f, NimStringDesc* s);
266 N_LIB_PRIVATE N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ*, newSeq__systemZio_501)(NI len);
267 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, setInheritable__systemZio_234)(int f, NIM_BOOL inheritable);
268 extern TNimType NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_;
269 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_2, "errno: ", 7);
270 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_3, " `", 2);
271 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_4, "`", 1);
272 extern TNimType NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_;
273 extern TNimType NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_;
274 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_5, "cannot write string to file", 27);
275 N_LIB_PRIVATE NIM_CONST tyArray__Djap3EijveoDksCG9bY8s5w FormatOpen__systemZio_371 = {"rbe",
276 "wbe",
277 "w+be",
278 "r+be",
279 "abe"}
280 ;
281 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_6, "cannot open: ", 13);
282 extern TNimType NTIrefeoferror__LEclZrWX2FQAodlapxGITw_;
283 extern TNimType NTIeoferror__KGSY1JdrNB7Xi8KDhXFhSg_;
284 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_8, "EOF reached", 11);
285 N_LIB_PRIVATE TNimType NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_;
286 N_LIB_PRIVATE TNimType NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_;
287 N_LIB_PRIVATE TNimType NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_;
288 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_11, "cannot set file position", 24);
289 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_12, "cannot retrieve file position", 29);
290 extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5217;
291 extern TSafePoint* excHandler__system_2565;
292 extern TSafePoint* excHandler__system_2565;
293 extern TSafePoint* excHandler__system_2565;
294 extern TSafePoint* excHandler__system_2565;
N_INLINE(NCSTRING,nimToCStringConv)295 static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s) {
296 	NCSTRING result;
297 	result = (NCSTRING)0;
298 	{
299 		NIM_BOOL T3_;
300 		T3_ = (NIM_BOOL)0;
301 		T3_ = (s == ((NimStringDesc*) NIM_NIL));
302 		if (T3_) goto LA4_;
303 		T3_ = ((*s).Sup.len == ((NI) 0));
304 		LA4_: ;
305 		if (!T3_) goto LA5_;
306 		result = "";
307 	}
308 	goto LA1_;
309 	LA5_: ;
310 	{
311 		result = ((NCSTRING) ((*s).data));
312 	}
313 	LA1_: ;
314 	return result;
315 }
N_NIMCALL(void,echoBinSafe)316 N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0) {
317 	int T5_;
318 	int T6_;
319 	flockfile(__stdoutp);
320 	{
321 		NimStringDesc** s;
322 		NI i;
323 		s = (NimStringDesc**)0;
324 		i = ((NI) 0);
325 		{
326 			while (1) {
327 				int T4_;
328 				if (!(i < argsLen_0)) goto LA3;
329 				s = (&args[i]);
330 				T4_ = (int)0;
331 				T4_ = fwrite(((void*) (nimToCStringConv((*s)))), ((size_t) (((*s) ? (*s)->Sup.len : 0))), ((size_t) 1), __stdoutp);
332 				(void)(T4_);
333 				i += ((NI) 1);
334 			} LA3: ;
335 		}
336 	}
337 	T5_ = (int)0;
338 	T5_ = fwrite(((void*) ("\012")), ((size_t) 1), ((size_t) 1), __stdoutp);
339 	(void)(T5_);
340 	T6_ = (int)0;
341 	T6_ = fflush(__stdoutp);
342 	(void)(T6_);
343 	funlockfile(__stdoutp);
344 }
N_NIMCALL(int,getFileHandle__systemZio_228)345 N_LIB_PRIVATE N_NIMCALL(int, getFileHandle__systemZio_228)(FILE* f) {
346 	int result;
347 	result = (int)0;
348 	result = fileno(f);
349 	return result;
350 }
N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ *,newSeq__systemZio_501)351 N_LIB_PRIVATE N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ*, newSeq__systemZio_501)(NI len) {
352 	tySequence__sM4lkSb7zS6F7OVMvW9cffQ* result;
353 	result = NIM_NIL;
354 	result = (tySequence__sM4lkSb7zS6F7OVMvW9cffQ*) newSeq((&NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_), len);
355 	return result;
356 }
N_INLINE(void,nimCopyMem)357 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
358 	void* T1_;
359 	T1_ = (void*)0;
360 	T1_ = memcpy(dest, source, ((size_t) (size)));
361 }
N_INLINE(void,copyMem__system_1727)362 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size) {
363 	nimCopyMem(dest, source, size);
364 }
N_INLINE(void,appendString)365 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
366 	{
367 		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
368 		copyMem__system_1727(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
369 		(*dest).Sup.len += (*src).Sup.len;
370 	}
371 	LA3_: ;
372 }
N_INLINE(NI,minuspercent___system_716)373 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
374 	NI result;
375 	result = (NI)0;
376 	result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y))))));
377 	return result;
378 }
N_INLINE(NIM_BOOL,ltpercent___system_1005)379 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
380 	NIM_BOOL result;
381 	result = (NIM_BOOL)0;
382 	result = ((NU32)(((NU) (x))) < (NU32)(((NU) (y))));
383 	return result;
384 }
N_INLINE(void,rtlAddZCT__system_5313)385 static N_INLINE(void, rtlAddZCT__system_5313)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
386 	addZCT__system_5264((&gch__system_5217.zct), c);
387 }
N_INLINE(void,decRef__system_5315)388 static N_INLINE(void, decRef__system_5315)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
389 	(*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
390 	{
391 		NIM_BOOL T3_;
392 		T3_ = (NIM_BOOL)0;
393 		T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
394 		if (!T3_) goto LA4_;
395 		rtlAddZCT__system_5313(c);
396 	}
397 	LA4_: ;
398 }
N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g *,usrToCell__system_5270)399 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5270)(void* usr) {
400 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
401 	NI T1_;
402 	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
403 	T1_ = (NI)0;
404 	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 8));
405 	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
406 	return result;
407 }
N_INLINE(void,nimGCunrefNoCycle)408 static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
409 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
410 	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
411 	T1_ = usrToCell__system_5270(p);
412 	decRef__system_5315(T1_);
413 }
N_INLINE(NI,pluspercent___system_696)414 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
415 	NI result;
416 	result = (NI)0;
417 	result = ((NI) ((NU)((NU32)(((NU) (x))) + (NU32)(((NU) (y))))));
418 	return result;
419 }
N_INLINE(void,incRef__system_5308)420 static N_INLINE(void, incRef__system_5308)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
421 	(*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
422 }
N_INLINE(void,asgnRef)423 static N_INLINE(void, asgnRef)(void** dest, void* src) {
424 	{
425 		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
426 		if (!!((src == NIM_NIL))) goto LA3_;
427 		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
428 		T5_ = usrToCell__system_5270(src);
429 		incRef__system_5308(T5_);
430 	}
431 	LA3_: ;
432 	{
433 		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
434 		if (!!(((*dest) == NIM_NIL))) goto LA8_;
435 		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
436 		T10_ = usrToCell__system_5270((*dest));
437 		decRef__system_5315(T10_);
438 	}
439 	LA8_: ;
440 	(*dest) = src;
441 }
N_NOINLINE(void,raiseEIO__systemZio_96)442 N_LIB_PRIVATE N_NOINLINE(void, raiseEIO__systemZio_96)(NimStringDesc* msg) {
443 	tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T1_;
444 	NimStringDesc* T2_;
445 	T1_ = NIM_NIL;
446 	T1_ = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
447 	(*T1_).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
448 	(*T1_).Sup.Sup.name = "IOError";
449 	T2_ = NIM_NIL;
450 	T2_ = (*T1_).Sup.Sup.message; (*T1_).Sup.Sup.message = copyStringRC1(msg);
451 	if (T2_) nimGCunrefNoCycle(T2_);
452 	asgnRef((void**) (&(*T1_).Sup.Sup.parent), ((Exception*) NIM_NIL));
453 	raiseExceptionEx((Exception*)T1_, "IOError", "raiseEIO", "io.nim", 139);
454 }
N_NIMCALL(void,checkErr__systemZio_141)455 N_LIB_PRIVATE N_NIMCALL(void, checkErr__systemZio_141)(FILE* f) {
456 	{
457 		int T3_;
458 		NimStringDesc* msg;
459 		NimStringDesc* T6_;
460 		NimStringDesc* T7_;
461 		NCSTRING T8_;
462 		NimStringDesc* T9_;
463 		T3_ = (int)0;
464 		T3_ = ferror(f);
465 		if (!!((T3_ == ((NI32) 0)))) goto LA4_;
466 		T6_ = NIM_NIL;
467 		T7_ = NIM_NIL;
468 		T7_ = dollar___systemZdollars_3(((NI) (errno)));
469 		T8_ = (NCSTRING)0;
470 		T8_ = strerror(errno);
471 		T9_ = NIM_NIL;
472 		T9_ = cstrToNimstr(T8_);
473 		T6_ = rawNewString((T7_ ? T7_->Sup.len : 0) + (T9_ ? T9_->Sup.len : 0) + 10);
474 appendString(T6_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_2));
475 appendString(T6_, T7_);
476 appendString(T6_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_3));
477 appendString(T6_, T9_);
478 appendString(T6_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_4));
479 		msg = T6_;
480 		clearerr(f);
481 		raiseEIO__systemZio_96(msg);
482 	}
483 	LA4_: ;
484 }
N_NIMCALL(NI,writeBuffer__systemZio_176)485 N_LIB_PRIVATE N_NIMCALL(NI, writeBuffer__systemZio_176)(FILE* f, void* buffer, NI len) {
486 	NI result;
487 	int T1_;
488 	result = (NI)0;
489 	T1_ = (int)0;
490 	T1_ = fwrite(buffer, ((size_t) 1), ((size_t) (len)), f);
491 	result = ((NI) (T1_));
492 	checkErr__systemZio_141(f);
493 	return result;
494 }
N_NIMCALL(void,write__systemZio_205)495 N_LIB_PRIVATE N_NIMCALL(void, write__systemZio_205)(FILE* f, NimStringDesc* s) {
496 	{
497 		NI T3_;
498 		T3_ = (NI)0;
499 		T3_ = writeBuffer__systemZio_176(f, ((void*) (nimToCStringConv(s))), ((NI) ((s ? s->Sup.len : 0))));
500 		if (!!((T3_ == (s ? s->Sup.len : 0)))) goto LA4_;
501 		raiseEIO__systemZio_96(((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_5));
502 	}
503 	LA4_: ;
504 }
N_NIMCALL(void,flushFile__systemZio_226)505 N_LIB_PRIVATE N_NIMCALL(void, flushFile__systemZio_226)(FILE* f) {
506 	int T1_;
507 	T1_ = (int)0;
508 	T1_ = fflush(f);
509 	(void)(T1_);
510 }
N_NIMCALL(void,close__systemZio_217)511 N_LIB_PRIVATE N_NIMCALL(void, close__systemZio_217)(FILE* f) {
512 	{
513 		int T5_;
514 		if (!!((f == 0))) goto LA3_;
515 		T5_ = (int)0;
516 		T5_ = fclose(f);
517 		(void)(T5_);
518 	}
519 	LA3_: ;
520 }
N_NIMCALL(NIM_BOOL,open__systemZio_389)521 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, open__systemZio_389)(FILE** f, NimStringDesc* filename, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode, NI bufSize) {
522 	NIM_BOOL result;
523 	void* p;
524 {	result = (NIM_BOOL)0;
525 	p = fopen(nimToCStringConv(filename), FormatOpen__systemZio_371[(mode)- 0]);
526 	{
527 		FILE* f2;
528 		struct stat res;
529 		if (!!((p == NIM_NIL))) goto LA3_;
530 		f2 = ((FILE*) (p));
531 		{
532 			NIM_BOOL T7_;
533 			int T8_;
534 			int T9_;
535 			T7_ = (NIM_BOOL)0;
536 			T8_ = (int)0;
537 			T8_ = getFileHandle__systemZio_228(f2);
538 			T9_ = (int)0;
539 			T9_ = fstat(T8_, (&res));
540 			T7_ = (((NI32) 0) <= T9_);
541 			if (!(T7_)) goto LA10_;
542 			T7_ = S_ISDIR(res.st_mode);
543 			LA10_: ;
544 			if (!T7_) goto LA11_;
545 			close__systemZio_217(f2);
546 			result = NIM_FALSE;
547 			goto BeforeRet_;
548 		}
549 		LA11_: ;
550 		result = NIM_TRUE;
551 		(*f) = ((FILE*) (p));
552 		{
553 			NIM_BOOL T15_;
554 			int T19_;
555 			T15_ = (NIM_BOOL)0;
556 			T15_ = (((NI) 0) < bufSize);
557 			if (!(T15_)) goto LA16_;
558 			T15_ = (bufSize <= ((NI) 2147483647));
559 			LA16_: ;
560 			if (!T15_) goto LA17_;
561 			T19_ = (int)0;
562 			T19_ = setvbuf((*f), NIM_NIL, _IOFBF, ((size_t) (bufSize)));
563 			(void)(T19_);
564 		}
565 		goto LA13_;
566 		LA17_: ;
567 		{
568 			int T23_;
569 			if (!(bufSize == ((NI) 0))) goto LA21_;
570 			T23_ = (int)0;
571 			T23_ = setvbuf((*f), NIM_NIL, _IONBF, ((size_t) 0));
572 			(void)(T23_);
573 		}
574 		goto LA13_;
575 		LA21_: ;
576 		LA13_: ;
577 	}
578 	LA3_: ;
579 	}BeforeRet_: ;
580 	return result;
581 }
N_NIMCALL(FILE *,open__systemZio_430)582 N_LIB_PRIVATE N_NIMCALL(FILE*, open__systemZio_430)(NimStringDesc* filename, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode, NI bufSize) {
583 	FILE* result;
584 	result = (FILE*)0;
585 	{
586 		NIM_BOOL T3_;
587 		tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T6_;
588 		NimStringDesc* T7_;
589 		T3_ = (NIM_BOOL)0;
590 		T3_ = open__systemZio_389(&result, filename, mode, bufSize);
591 		if (!!(T3_)) goto LA4_;
592 		T6_ = NIM_NIL;
593 		T6_ = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
594 		(*T6_).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
595 		(*T6_).Sup.Sup.name = "IOError";
596 		T7_ = NIM_NIL;
597 		T7_ = rawNewString((filename ? filename->Sup.len : 0) + 13);
598 appendString(T7_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_6));
599 appendString(T7_, filename);
600 		asgnRef((void**) (&(*T6_).Sup.Sup.message), T7_);
601 		asgnRef((void**) (&(*T6_).Sup.Sup.parent), ((Exception*) NIM_NIL));
602 		raiseExceptionEx((Exception*)T6_, "IOError", "open", "io.nim", 745);
603 	}
604 	LA4_: ;
605 	return result;
606 }
N_INLINE(NIM_BOOL,eqeq___system_7723)607 static N_INLINE(NIM_BOOL, eqeq___system_7723)(NCSTRING x, NCSTRING y) {
608 	NIM_BOOL result;
609 	result = (NIM_BOOL)0;
610 	{
611 		if (!(((void*) (x)) == ((void*) (y)))) goto LA3_;
612 		result = NIM_TRUE;
613 	}
614 	goto LA1_;
615 	LA3_: ;
616 	{
617 		NIM_BOOL T6_;
618 		T6_ = (NIM_BOOL)0;
619 		T6_ = (x == 0);
620 		if (T6_) goto LA7_;
621 		T6_ = (y == 0);
622 		LA7_: ;
623 		if (!T6_) goto LA8_;
624 		result = NIM_FALSE;
625 	}
626 	goto LA1_;
627 	LA8_: ;
628 	{
629 		int T11_;
630 		T11_ = (int)0;
631 		T11_ = strcmp(x, y);
632 		result = (T11_ == ((NI32) 0));
633 	}
634 	LA1_: ;
635 	return result;
636 }
N_NIMCALL(NIM_BOOL,readLine__systemZio_238)637 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, readLine__systemZio_238)(FILE* f, NimStringDesc** line) {
638 	NIM_BOOL result;
639 	NI pos;
640 	NI sp;
641 {	result = (NIM_BOOL)0;
642 	pos = ((NI) 0);
643 	sp = ((((*line) ? (*line)->Sup.len : 0) >= ((NI) 80)) ? ((*line) ? (*line)->Sup.len : 0) : ((NI) 80));
644 	unsureAsgnRef((void**) (&(*line)), setLengthStr((*line), ((NI) (sp))));
645 	{
646 		while (1) {
647 			NIM_BOOL fgetsSuccess;
648 			void* m;
649 			{
650 				NI i;
651 				NI i_2;
652 				i = (NI)0;
653 				i_2 = ((NI) 0);
654 				{
655 					while (1) {
656 						if (!(i_2 < sp)) goto LA5;
657 						i = i_2;
658 						(*line)->data[(NI)(pos + i)] = 10;
659 						i_2 += ((NI) 1);
660 					} LA5: ;
661 				}
662 			}
663 			fgetsSuccess = (NIM_BOOL)0;
664 			{
665 				while (1) {
666 					{
667 						NCSTRING T9_;
668 						NIM_BOOL T10_;
669 						T9_ = (NCSTRING)0;
670 						T9_ = fgets(((NCSTRING) ((&(*line)->data[pos]))), ((int) (sp)), f);
671 						T10_ = (NIM_BOOL)0;
672 						T10_ = eqeq___system_7723(T9_, ((NCSTRING) NIM_NIL));
673 						fgetsSuccess = !(T10_);
674 						{
675 							if (!fgetsSuccess) goto LA13_;
676 							goto LA6;
677 						}
678 						LA13_: ;
679 						{
680 							if (!(errno == EINTR)) goto LA17_;
681 							errno = ((int) 0);
682 							clearerr(f);
683 							goto LA8;
684 						}
685 						LA17_: ;
686 						checkErr__systemZio_141(f);
687 						goto LA6;
688 					} LA8: ;
689 				}
690 			} LA6: ;
691 			m = memchr(((void*) ((&(*line)->data[pos]))), ((int) 10), ((size_t) (sp)));
692 			{
693 				NI last;
694 				NIM_BOOL T42_;
695 				if (!!((m == NIM_NIL))) goto LA21_;
696 				last = (NI)(((NI) (ptrdiff_t) (m)) - ((NI) (ptrdiff_t) ((&(*line)->data[((NI) 0)]))));
697 				{
698 					NIM_BOOL T25_;
699 					NIM_BOOL T29_;
700 					T25_ = (NIM_BOOL)0;
701 					T25_ = (((NI) 0) < last);
702 					if (!(T25_)) goto LA26_;
703 					T25_ = ((NU8)((*line)->data[(NI)(last - ((NI) 1))]) == (NU8)(13));
704 					LA26_: ;
705 					if (!T25_) goto LA27_;
706 					unsureAsgnRef((void**) (&(*line)), setLengthStr((*line), ((NI) ((NI)(last - ((NI) 1))))));
707 					T29_ = (NIM_BOOL)0;
708 					T29_ = (((NI) 1) < last);
709 					if (T29_) goto LA30_;
710 					T29_ = fgetsSuccess;
711 					LA30_: ;
712 					result = T29_;
713 					goto BeforeRet_;
714 				}
715 				goto LA23_;
716 				LA27_: ;
717 				{
718 					NIM_BOOL T32_;
719 					T32_ = (NIM_BOOL)0;
720 					T32_ = (((NI) 0) < last);
721 					if (!(T32_)) goto LA33_;
722 					T32_ = ((NU8)((*line)->data[(NI)(last - ((NI) 1))]) == (NU8)(0));
723 					LA33_: ;
724 					if (!T32_) goto LA34_;
725 					{
726 						NIM_BOOL T38_;
727 						T38_ = (NIM_BOOL)0;
728 						T38_ = (last < (NI)((NI)(pos + sp) - ((NI) 1)));
729 						if (!(T38_)) goto LA39_;
730 						T38_ = !(((NU8)((*line)->data[(NI)(last + ((NI) 1))]) == (NU8)(0)));
731 						LA39_: ;
732 						if (!T38_) goto LA40_;
733 						last -= ((NI) 1);
734 					}
735 					LA40_: ;
736 				}
737 				goto LA23_;
738 				LA34_: ;
739 				LA23_: ;
740 				unsureAsgnRef((void**) (&(*line)), setLengthStr((*line), ((NI) (last))));
741 				T42_ = (NIM_BOOL)0;
742 				T42_ = (((NI) 0) < last);
743 				if (T42_) goto LA43_;
744 				T42_ = fgetsSuccess;
745 				LA43_: ;
746 				result = T42_;
747 				goto BeforeRet_;
748 			}
749 			goto LA19_;
750 			LA21_: ;
751 			{
752 				sp -= ((NI) 1);
753 			}
754 			LA19_: ;
755 			pos += sp;
756 			sp = ((NI) 128);
757 			unsureAsgnRef((void**) (&(*line)), setLengthStr((*line), ((NI) ((NI)(pos + sp)))));
758 		}
759 	}
760 	}BeforeRet_: ;
761 	return result;
762 }
N_INLINE(void,pushSafePoint)763 static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
764 	(*s).prev = excHandler__system_2565;
765 	excHandler__system_2565 = s;
766 }
N_NIMCALL(NI64,rawFileSize__systemZio_333)767 N_LIB_PRIVATE N_NIMCALL(NI64, rawFileSize__systemZio_333)(FILE* file) {
768 	NI64 result;
769 	NI64 oldPos;
770 	int T1_;
771 	int T2_;
772 	result = (NI64)0;
773 	oldPos = ftello(file);
774 	T1_ = (int)0;
775 	T1_ = fseeko(file, IL64(0), ((int) 2));
776 	(void)(T1_);
777 	result = ftello(file);
778 	T2_ = (int)0;
779 	T2_ = fseeko(file, oldPos, ((int) 0));
780 	(void)(T2_);
781 	return result;
782 }
N_NIMCALL(NI,readBuffer__systemZio_144)783 N_LIB_PRIVATE N_NIMCALL(NI, readBuffer__systemZio_144)(FILE* f, void* buffer, NI len) {
784 	NI result;
785 	size_t T1_;
786 	result = (NI)0;
787 	T1_ = (size_t)0;
788 	T1_ = fread(buffer, ((size_t) 1), ((size_t) (len)), f);
789 	result = ((NI) (T1_));
790 	{
791 		if (!!((result == ((NI) (len))))) goto LA4_;
792 		checkErr__systemZio_141(f);
793 	}
794 	LA4_: ;
795 	return result;
796 }
N_NIMCALL(NIM_BOOL,endOfFile__systemZio_337)797 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, endOfFile__systemZio_337)(FILE* f) {
798 	NIM_BOOL result;
799 	int c;
800 	int T1_;
801 {	result = (NIM_BOOL)0;
802 	c = fgetc(f);
803 	T1_ = (int)0;
804 	T1_ = ungetc(c, f);
805 	(void)(T1_);
806 	result = (c < ((NI32) 0));
807 	goto BeforeRet_;
808 	}BeforeRet_: ;
809 	return result;
810 }
N_NIMCALL(NimStringDesc *,readAllBuffer__systemZio_328)811 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAllBuffer__systemZio_328)(FILE* file) {
812 	NimStringDesc* result;
813 	NimStringDesc* buffer;
814 	result = NIM_NIL;
815 	result = ((NimStringDesc*) NIM_NIL);
816 	buffer = mnewString(((NI) 4000));
817 	{
818 		while (1) {
819 			NI bytesRead;
820 			bytesRead = readBuffer__systemZio_144(file, ((void*) ((&buffer->data[((NI) 0)]))), ((NI) 4000));
821 			{
822 				if (!(bytesRead == ((NI) 4000))) goto LA5_;
823 				result = resizeString(result, (buffer ? buffer->Sup.len : 0) + 0);
824 appendString(result, buffer);
825 			}
826 			goto LA3_;
827 			LA5_: ;
828 			{
829 				buffer = setLengthStr(buffer, ((NI) (bytesRead)));
830 				result = resizeString(result, (buffer ? buffer->Sup.len : 0) + 0);
831 appendString(result, buffer);
832 				goto LA1;
833 			}
834 			LA3_: ;
835 		}
836 	} LA1: ;
837 	return result;
838 }
N_NIMCALL(NimStringDesc *,readAllFile__systemZio_341)839 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAllFile__systemZio_341)(FILE* file, NI64 len) {
840 	NimStringDesc* result;
841 	NI bytes;
842 	result = NIM_NIL;
843 	result = mnewString(((NI) (len)));
844 	bytes = readBuffer__systemZio_144(file, ((void*) ((&result->data[((NI) 0)]))), ((NI) (len)));
845 	{
846 		NIM_BOOL T3_;
847 		T3_ = (NIM_BOOL)0;
848 		T3_ = endOfFile__systemZio_337(file);
849 		if (!T3_) goto LA4_;
850 		{
851 			if (!(((NI64) (bytes)) < len)) goto LA8_;
852 			result = setLengthStr(result, ((NI) (bytes)));
853 		}
854 		LA8_: ;
855 	}
856 	goto LA1_;
857 	LA4_: ;
858 	{
859 		NimStringDesc* T11_;
860 		T11_ = NIM_NIL;
861 		T11_ = readAllBuffer__systemZio_328(file);
862 		result = resizeString(result, (T11_ ? T11_->Sup.len : 0) + 0);
863 appendString(result, T11_);
864 	}
865 	LA1_: ;
866 	return result;
867 }
N_NIMCALL(NimStringDesc *,readAll__systemZio_350)868 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAll__systemZio_350)(FILE* file) {
869 	NimStringDesc* result;
870 	NI64 len;
871 	result = NIM_NIL;
872 	{
873 		if (!!((file == __stdinp))) goto LA3_;
874 		len = rawFileSize__systemZio_333(file);
875 	}
876 	goto LA1_;
877 	LA3_: ;
878 	{
879 		len = IL64(-1);
880 	}
881 	LA1_: ;
882 	{
883 		if (!(IL64(0) < len)) goto LA8_;
884 		result = readAllFile__systemZio_341(file, len);
885 	}
886 	goto LA6_;
887 	LA8_: ;
888 	{
889 		result = readAllBuffer__systemZio_328(file);
890 	}
891 	LA6_: ;
892 	return result;
893 }
N_INLINE(void,popSafePoint)894 static N_INLINE(void, popSafePoint)(void) {
895 	excHandler__system_2565 = (*excHandler__system_2565).prev;
896 }
N_NIMCALL(NimStringDesc *,readFile__systemZio_469)897 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readFile__systemZio_469)(NimStringDesc* filename) {
898 	NimStringDesc* volatile result;
899 	FILE* f;
900 	result = NIM_NIL;
901 	f = ((FILE*) NIM_NIL);
902 	{
903 		NIM_BOOL T3_;
904 		TSafePoint TM__MnCJ0VAmeZ9aTATUB39cx60Q_7;
905 		T3_ = (NIM_BOOL)0;
906 		T3_ = open__systemZio_389(&f, filename, ((tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg) 0), ((NI) -1));
907 		if (!T3_) goto LA4_;
908 		pushSafePoint(&TM__MnCJ0VAmeZ9aTATUB39cx60Q_7);
909 		TM__MnCJ0VAmeZ9aTATUB39cx60Q_7.status = _setjmp(TM__MnCJ0VAmeZ9aTATUB39cx60Q_7.context);
910 		if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_7.status == 0) {
911 		result = readAll__systemZio_350(f);
912 		popSafePoint();
913 		}
914 		else {
915 			popSafePoint();
916 		}
917 		{
918 			close__systemZio_217(f);
919 			if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_7.status != 0) nimLeaveFinally();
920 		}
921 		if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_7.status != 0) reraiseException();
922 	}
923 	goto LA1_;
924 	LA4_: ;
925 	{
926 		tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T9_;
927 		NimStringDesc* T10_;
928 		T9_ = NIM_NIL;
929 		T9_ = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
930 		(*T9_).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
931 		(*T9_).Sup.Sup.name = "IOError";
932 		T10_ = NIM_NIL;
933 		T10_ = rawNewString((filename ? filename->Sup.len : 0) + 13);
934 appendString(T10_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_6));
935 appendString(T10_, filename);
936 		asgnRef((void**) (&(*T9_).Sup.Sup.message), T10_);
937 		asgnRef((void**) (&(*T9_).Sup.Sup.parent), ((Exception*) NIM_NIL));
938 		raiseExceptionEx((Exception*)T9_, "IOError", "readFile", "io.nim", 853);
939 	}
940 	LA1_: ;
941 	return result;
942 }
N_NIMCALL(NI,readChars__systemZio_156)943 N_LIB_PRIVATE N_NIMCALL(NI, readChars__systemZio_156)(FILE* f, NIM_CHAR* a, NI aLen_0) {
944 	NI result;
945 	result = (NI)0;
946 	result = readBuffer__systemZio_144(f, ((void*) ((&a[((NI) 0)]))), ((NI) (aLen_0)));
947 	return result;
948 }
N_NOINLINE(void,raiseEOF__systemZio_117)949 N_LIB_PRIVATE N_NOINLINE(void, raiseEOF__systemZio_117)(void) {
950 	tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg* T1_;
951 	NimStringDesc* T2_;
952 	T1_ = NIM_NIL;
953 	T1_ = (tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg*) newObj((&NTIrefeoferror__LEclZrWX2FQAodlapxGITw_), sizeof(tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg));
954 	(*T1_).Sup.Sup.Sup.Sup.m_type = (&NTIeoferror__KGSY1JdrNB7Xi8KDhXFhSg_);
955 	(*T1_).Sup.Sup.Sup.name = "EOFError";
956 	T2_ = NIM_NIL;
957 	T2_ = (*T1_).Sup.Sup.Sup.message; (*T1_).Sup.Sup.Sup.message = copyStringRC1(((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_8));
958 	if (T2_) nimGCunrefNoCycle(T2_);
959 	asgnRef((void**) (&(*T1_).Sup.Sup.Sup.parent), ((Exception*) NIM_NIL));
960 	raiseExceptionEx((Exception*)T1_, "EOFError", "raiseEOF", "io.nim", 142);
961 }
N_NIMCALL(NimStringDesc *,readLine__systemZio_271)962 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readLine__systemZio_271)(FILE* f) {
963 	NimStringDesc* result;
964 	result = NIM_NIL;
965 	result = rawNewString(((NI) 80));
966 	{
967 		NIM_BOOL T3_;
968 		T3_ = (NIM_BOOL)0;
969 		T3_ = readLine__systemZio_238(f, (&result));
970 		if (!!(T3_)) goto LA4_;
971 		raiseEOF__systemZio_117();
972 	}
973 	LA4_: ;
974 	return result;
975 }
N_NIMCALL(void,writeFile__systemZio_474)976 N_LIB_PRIVATE N_NIMCALL(void, writeFile__systemZio_474)(NimStringDesc* filename, NimStringDesc* content) {
977 	FILE* f;
978 	f = ((FILE*) NIM_NIL);
979 	{
980 		NIM_BOOL T3_;
981 		TSafePoint TM__MnCJ0VAmeZ9aTATUB39cx60Q_9;
982 		T3_ = (NIM_BOOL)0;
983 		T3_ = open__systemZio_389(&f, filename, ((tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg) 1), ((NI) -1));
984 		if (!T3_) goto LA4_;
985 		pushSafePoint(&TM__MnCJ0VAmeZ9aTATUB39cx60Q_9);
986 		TM__MnCJ0VAmeZ9aTATUB39cx60Q_9.status = _setjmp(TM__MnCJ0VAmeZ9aTATUB39cx60Q_9.context);
987 		if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_9.status == 0) {
988 		write__systemZio_205(f, content);
989 		popSafePoint();
990 		}
991 		else {
992 			popSafePoint();
993 		}
994 		{
995 			close__systemZio_217(f);
996 			if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_9.status != 0) nimLeaveFinally();
997 		}
998 		if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_9.status != 0) reraiseException();
999 	}
1000 	goto LA1_;
1001 	LA4_: ;
1002 	{
1003 		tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T9_;
1004 		NimStringDesc* T10_;
1005 		T9_ = NIM_NIL;
1006 		T9_ = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
1007 		(*T9_).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
1008 		(*T9_).Sup.Sup.name = "IOError";
1009 		T10_ = NIM_NIL;
1010 		T10_ = rawNewString((filename ? filename->Sup.len : 0) + 13);
1011 appendString(T10_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_6));
1012 appendString(T10_, filename);
1013 		asgnRef((void**) (&(*T9_).Sup.Sup.message), T10_);
1014 		asgnRef((void**) (&(*T9_).Sup.Sup.parent), ((Exception*) NIM_NIL));
1015 		raiseExceptionEx((Exception*)T9_, "IOError", "writeFile", "io.nim", 866);
1016 	}
1017 	LA1_: ;
1018 }
N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ *,readLines__systemZio_492)1019 N_LIB_PRIVATE N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ*, readLines__systemZio_492)(NimStringDesc* filename, NI n) {
1020 	tySequence__sM4lkSb7zS6F7OVMvW9cffQ* volatile result;
1021 	FILE* f;
1022 	result = NIM_NIL;
1023 	f = ((FILE*) NIM_NIL);
1024 	{
1025 		NIM_BOOL T3_;
1026 		TSafePoint TM__MnCJ0VAmeZ9aTATUB39cx60Q_10;
1027 		T3_ = (NIM_BOOL)0;
1028 		T3_ = open__systemZio_389(&f, filename, ((tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg) 0), ((NI) -1));
1029 		if (!T3_) goto LA4_;
1030 		pushSafePoint(&TM__MnCJ0VAmeZ9aTATUB39cx60Q_10);
1031 		TM__MnCJ0VAmeZ9aTATUB39cx60Q_10.status = _setjmp(TM__MnCJ0VAmeZ9aTATUB39cx60Q_10.context);
1032 		if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_10.status == 0) {
1033 		result = newSeq__systemZio_501(n);
1034 		{
1035 			NI i;
1036 			NI colontmp_;
1037 			NI res;
1038 			i = (NI)0;
1039 			colontmp_ = (NI)0;
1040 			colontmp_ = (NI)(((NI) (n)) - ((NI) 1));
1041 			res = ((NI) 0);
1042 			{
1043 				while (1) {
1044 					if (!(res <= colontmp_)) goto LA8;
1045 					i = res;
1046 					{
1047 						NIM_BOOL T11_;
1048 						T11_ = (NIM_BOOL)0;
1049 						T11_ = readLine__systemZio_238(f, (&result->data[i]));
1050 						if (!!(T11_)) goto LA12_;
1051 						raiseEOF__systemZio_117();
1052 					}
1053 					LA12_: ;
1054 					res += ((NI) 1);
1055 				} LA8: ;
1056 			}
1057 		}
1058 		popSafePoint();
1059 		}
1060 		else {
1061 			popSafePoint();
1062 		}
1063 		{
1064 			close__systemZio_217(f);
1065 			if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_10.status != 0) nimLeaveFinally();
1066 		}
1067 		if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_10.status != 0) reraiseException();
1068 	}
1069 	goto LA1_;
1070 	LA4_: ;
1071 	{
1072 		tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T17_;
1073 		NimStringDesc* T18_;
1074 		T17_ = NIM_NIL;
1075 		T17_ = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
1076 		(*T17_).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
1077 		(*T17_).Sup.Sup.name = "IOError";
1078 		T18_ = NIM_NIL;
1079 		T18_ = rawNewString((filename ? filename->Sup.len : 0) + 13);
1080 appendString(T18_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_6));
1081 appendString(T18_, filename);
1082 		asgnRef((void**) (&(*T17_).Sup.Sup.message), T18_);
1083 		asgnRef((void**) (&(*T17_).Sup.Sup.parent), ((Exception*) NIM_NIL));
1084 		raiseExceptionEx((Exception*)T17_, "IOError", "readLines", "io.nim", 896);
1085 	}
1086 	LA1_: ;
1087 	return result;
1088 }
N_NIMCALL(NIM_BOOL,setInheritable__systemZio_234)1089 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, setInheritable__systemZio_234)(int f, NIM_BOOL inheritable) {
1090 	NIM_BOOL result;
1091 	int T1_;
1092 	int T7_;
1093 	result = (NIM_BOOL)0;
1094 	T1_ = (int)0;
1095 	{
1096 		if (!inheritable) goto LA4_;
1097 		T1_ = FIONCLEX;
1098 	}
1099 	goto LA2_;
1100 	LA4_: ;
1101 	{
1102 		T1_ = FIOCLEX;
1103 	}
1104 	LA2_: ;
1105 	T7_ = (int)0;
1106 	T7_ = ioctl(f, T1_);
1107 	result = !((T7_ == ((NI32) -1)));
1108 	return result;
1109 }
N_NIMCALL(NIM_BOOL,open__systemZio_420)1110 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, open__systemZio_420)(FILE** f, int filehandle, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode) {
1111 	NIM_BOOL result;
1112 	int oshandle;
1113 {	result = (NIM_BOOL)0;
1114 	oshandle = filehandle;
1115 	{
1116 		NIM_BOOL T3_;
1117 		T3_ = (NIM_BOOL)0;
1118 		T3_ = setInheritable__systemZio_234(oshandle, NIM_FALSE);
1119 		if (!!(T3_)) goto LA4_;
1120 		result = NIM_FALSE;
1121 		goto BeforeRet_;
1122 	}
1123 	LA4_: ;
1124 	(*f) = fdopen(filehandle, FormatOpen__systemZio_371[(mode)- 0]);
1125 	result = !(((*f) == ((FILE*) NIM_NIL)));
1126 	}BeforeRet_: ;
1127 	return result;
1128 }
N_NIMCALL(void,setFilePos__systemZio_436)1129 N_LIB_PRIVATE N_NIMCALL(void, setFilePos__systemZio_436)(FILE* f, NI64 pos, tyEnum_FileSeekPos__I9aQjuvWxs8BspGbxwsngWw relativeTo) {
1130 	{
1131 		int T3_;
1132 		T3_ = (int)0;
1133 		T3_ = fseeko(f, pos, ((int) (relativeTo)));
1134 		if (!!((T3_ == ((NI32) 0)))) goto LA4_;
1135 		raiseEIO__systemZio_96(((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_11));
1136 	}
1137 	LA4_: ;
1138 }
N_NIMCALL(NI64,getFilePos__systemZio_449)1139 N_LIB_PRIVATE N_NIMCALL(NI64, getFilePos__systemZio_449)(FILE* f) {
1140 	NI64 result;
1141 	result = (NI64)0;
1142 	result = ftello(f);
1143 	{
1144 		if (!(result < IL64(0))) goto LA3_;
1145 		raiseEIO__systemZio_96(((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_12));
1146 	}
1147 	LA3_: ;
1148 	return result;
1149 }
N_NIMCALL(void,write__systemZio_304)1150 N_LIB_PRIVATE N_NIMCALL(void, write__systemZio_304)(FILE* f, NimStringDesc** a, NI aLen_0) {
1151 	{
1152 		NimStringDesc** x;
1153 		NI i;
1154 		x = (NimStringDesc**)0;
1155 		i = ((NI) 0);
1156 		{
1157 			while (1) {
1158 				if (!(i < aLen_0)) goto LA3;
1159 				x = (&a[i]);
1160 				write__systemZio_205(f, (*x));
1161 				i += ((NI) 1);
1162 			} LA3: ;
1163 		}
1164 	}
1165 }
N_NIMCALL(void,stdlib_ioDatInit000)1166 N_LIB_PRIVATE N_NIMCALL(void, stdlib_ioDatInit000)(void) {
1167 static TNimNode TM__MnCJ0VAmeZ9aTATUB39cx60Q_0[1];
1168 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.size = sizeof(void*);
1169 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.align = NIM_ALIGNOF(void*);
1170 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.kind = 18;
1171 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.base = 0;
1172 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.flags = 1;
1173 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.node = &TM__MnCJ0VAmeZ9aTATUB39cx60Q_0[0];
1174 NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_.size = sizeof(FILE*);
1175 NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_.align = NIM_ALIGNOF(FILE*);
1176 NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_.kind = 21;
1177 NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_.base = (&NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_);
1178 NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_.flags = 3;
1179 NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_.size = sizeof(int);
1180 NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_.align = NIM_ALIGNOF(int);
1181 NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_.kind = 34;
1182 NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_.base = 0;
1183 NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_.flags = 3;
1184 }
1185 
1186