1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 32
3 #define NIM_EmulateOverflowChecks
4 
5 #include "nimbase.h"
6 #undef LANGUAGE_C
7 #undef MIPSEB
8 #undef MIPSEL
9 #undef PPC
10 #undef R3000
11 #undef R4000
12 #undef i386
13 #undef linux
14 #undef mips
15 #undef near
16 #undef far
17 #undef powerpc
18 #undef unix
19 #define nimfr_(x, y)
20 #define nimln_(x, y)
21 typedef struct NimStringDesc NimStringDesc;
22 typedef struct TGenericSeq TGenericSeq;
23 typedef struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw;
24 typedef struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA;
25 typedef struct Exception Exception;
26 typedef struct RootObj RootObj;
27 typedef struct TNimType TNimType;
28 typedef struct TNimNode TNimNode;
29 typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
30 typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
31 typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
32 typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
33 typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
34 typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
35 typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
36 typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
37 typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
38 typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
39 typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
40 typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
41 typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
42 typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
43 typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
44 typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
45 typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
46 typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
47 struct TGenericSeq {
48 NI len;
49 NI reserved;
50 };
51 struct NimStringDesc {
52   TGenericSeq Sup;
53 NIM_CHAR data[SEQ_DECL_SIZE];
54 };
55 typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
56 typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
57 typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
58 typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
59 struct TNimType {
60 NI size;
61 NI align;
62 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
63 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
64 TNimType* base;
65 TNimNode* node;
66 void* finalizer;
67 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
68 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
69 };
70 struct RootObj {
71 TNimType* m_type;
72 };
73 struct Exception {
74   RootObj Sup;
75 Exception* parent;
76 NCSTRING name;
77 NimStringDesc* message;
78 tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
79 Exception* up;
80 };
81 struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA {
82   Exception Sup;
83 };
84 struct tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw {
85   tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
86 };
87 typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
88 struct TNimNode {
89 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
90 NI offset;
91 TNimType* typ;
92 NCSTRING name;
93 NI len;
94 TNimNode** sons;
95 };
96 struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
97 NI refcount;
98 TNimType* typ;
99 };
100 struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
101 void* bottom;
102 };
103 struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
104 NI len;
105 NI cap;
106 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
107 };
108 typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
109 typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
110 typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
111 typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
112 typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
113 struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
114 tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
115 };
116 typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
117 struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
118 tyArray__0aOLqZchNi8nWtMTi8ND8w link;
119 NI key;
120 NI upperBound;
121 NI level;
122 };
123 struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
124 tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
125 NI Field1;
126 };
127 typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
128 struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
129 NI len;
130 tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
131 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
132 };
133 struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
134 NI minLargeObj;
135 NI maxLargeObj;
136 tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
137 NU32 flBitmap;
138 tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
139 tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
140 tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
141 NI currMem;
142 NI maxMem;
143 NI freeMem;
144 NI occ;
145 NI lastSize;
146 tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
147 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
148 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
149 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
150 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
151 NIM_BOOL locked;
152 NIM_BOOL blockChunkSizeIncrease;
153 NI nextChunkSize;
154 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
155 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
156 };
157 struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
158 NI stackScans;
159 NI cycleCollections;
160 NI maxThreshold;
161 NI maxStackSize;
162 NI maxStackCells;
163 NI cycleTableSize;
164 NI64 maxPause;
165 };
166 struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
167 NI counter;
168 NI max;
169 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
170 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
171 };
172 struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
173 tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
174 NI cycleThreshold;
175 NI zctThreshold;
176 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
177 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
178 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
179 NI recGcLock;
180 tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
181 tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
182 tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
183 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
184 NI gcThreadId;
185 };
186 struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
187 NCSTRING procname;
188 NI line;
189 NCSTRING filename;
190 };
191 struct tySequence__uB9b75OUPRENsBAu4AnoePA {
192   TGenericSeq Sup;
193   tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
194 };
195 N_LIB_PRIVATE N_NIMCALL(NI, npuParseBiggestInt)(NimStringDesc* s, NI64* number, NI start);
196 N_LIB_PRIVATE N_NIMCALL(NI, rawParseInt__pureZparseutils_268)(NimStringDesc* s, NI64* b, NI start);
197 N_LIB_PRIVATE N_NOINLINE(void, integerOutOfRangeError__pureZparseutils_248)(void);
198 N_LIB_PRIVATE N_NOINLINE(void*, newObj)(TNimType* typ, NI size);
199 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
200 static N_INLINE(void, nimGCunrefNoCycle)(void* p);
201 static N_INLINE(void, decRef__system_5336)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
202 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
203 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
204 static N_INLINE(void, rtlAddZCT__system_5334)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
205 N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5285)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
206 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5291)(void* usr);
207 static N_INLINE(void, asgnRef)(void** dest, void* src);
208 static N_INLINE(void, incRef__system_5329)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
209 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
210 N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
211 N_NIMCALL(NI, nimParseBiggestFloat)(NimStringDesc* s, NF* number, NI start);
212 N_LIB_PRIVATE N_NIMCALL(NI, rawParseUInt__pureZparseutils_375)(NimStringDesc* s, NU64* b, NI start);
213 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen);
214 N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
215 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, substr__system_7764)(NimStringDesc* s, NI first, NI last);
216 extern TNimType NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_;
217 extern TNimType NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_;
218 STRING_LITERAL(TM__vI9aZNKIcImom6dDyKXW1ZA_2, "Parsed integer outside of valid range", 37);
219 extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5238;
N_NIMCALL(NI,parseSaturatedNatural__pureZparseutils_334)220 N_LIB_PRIVATE N_NIMCALL(NI, parseSaturatedNatural__pureZparseutils_334)(NimStringDesc* s, NI* b, NI start) {
221 	NI result;
222 	NI i;
223 	result = (NI)0;
224 	i = start;
225 	{
226 		NIM_BOOL T3_;
227 		T3_ = (NIM_BOOL)0;
228 		T3_ = (i < (s ? s->Sup.len : 0));
229 		if (!(T3_)) goto LA4_;
230 		T3_ = ((NU8)(s->data[i]) == (NU8)(43));
231 		LA4_: ;
232 		if (!T3_) goto LA5_;
233 		i += ((NI) 1);
234 	}
235 	LA5_: ;
236 	{
237 		NIM_BOOL T9_;
238 		T9_ = (NIM_BOOL)0;
239 		T9_ = (i < (s ? s->Sup.len : 0));
240 		if (!(T9_)) goto LA10_;
241 		T9_ = (((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)));
242 		LA10_: ;
243 		if (!T9_) goto LA11_;
244 		(*b) = ((NI) 0);
245 		{
246 			while (1) {
247 				NIM_BOOL T15_;
248 				NI c;
249 				T15_ = (NIM_BOOL)0;
250 				T15_ = (i < (s ? s->Sup.len : 0));
251 				if (!(T15_)) goto LA16_;
252 				T15_ = (((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)));
253 				LA16_: ;
254 				if (!T15_) goto LA14;
255 				c = (NI)(((NU8)(s->data[i])) - ((NI) 48));
256 				{
257 					if (!((*b) <= (NI)((NI)(((NI) 2147483647) - c) / ((NI) 10)))) goto LA19_;
258 					(*b) = (NI)((NI)((*b) * ((NI) 10)) + c);
259 				}
260 				goto LA17_;
261 				LA19_: ;
262 				{
263 					(*b) = ((NI) 2147483647);
264 				}
265 				LA17_: ;
266 				i += ((NI) 1);
267 				{
268 					while (1) {
269 						NIM_BOOL T24_;
270 						T24_ = (NIM_BOOL)0;
271 						T24_ = (i < (s ? s->Sup.len : 0));
272 						if (!(T24_)) goto LA25_;
273 						T24_ = ((NU8)(s->data[i]) == (NU8)(95));
274 						LA25_: ;
275 						if (!T24_) goto LA23;
276 						i += ((NI) 1);
277 					} LA23: ;
278 				}
279 			} LA14: ;
280 		}
281 		result = (NI)(i - start);
282 	}
283 	LA11_: ;
284 	return result;
285 }
N_INLINE(NI,minuspercent___system_716)286 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
287 	NI result;
288 	result = (NI)0;
289 	result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y))))));
290 	return result;
291 }
N_INLINE(NIM_BOOL,ltpercent___system_1005)292 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
293 	NIM_BOOL result;
294 	result = (NIM_BOOL)0;
295 	result = ((NU32)(((NU) (x))) < (NU32)(((NU) (y))));
296 	return result;
297 }
N_INLINE(void,rtlAddZCT__system_5334)298 static N_INLINE(void, rtlAddZCT__system_5334)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
299 	addZCT__system_5285((&gch__system_5238.zct), c);
300 }
N_INLINE(void,decRef__system_5336)301 static N_INLINE(void, decRef__system_5336)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
302 	(*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
303 	{
304 		NIM_BOOL T3_;
305 		T3_ = (NIM_BOOL)0;
306 		T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
307 		if (!T3_) goto LA4_;
308 		rtlAddZCT__system_5334(c);
309 	}
310 	LA4_: ;
311 }
N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g *,usrToCell__system_5291)312 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5291)(void* usr) {
313 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
314 	NI T1_;
315 	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
316 	T1_ = (NI)0;
317 	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 8));
318 	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
319 	return result;
320 }
N_INLINE(void,nimGCunrefNoCycle)321 static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
322 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
323 	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
324 	T1_ = usrToCell__system_5291(p);
325 	decRef__system_5336(T1_);
326 }
N_INLINE(NI,pluspercent___system_696)327 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
328 	NI result;
329 	result = (NI)0;
330 	result = ((NI) ((NU)((NU32)(((NU) (x))) + (NU32)(((NU) (y))))));
331 	return result;
332 }
N_INLINE(void,incRef__system_5329)333 static N_INLINE(void, incRef__system_5329)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
334 	(*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
335 }
N_INLINE(void,asgnRef)336 static N_INLINE(void, asgnRef)(void** dest, void* src) {
337 	{
338 		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
339 		if (!!((src == NIM_NIL))) goto LA3_;
340 		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
341 		T5_ = usrToCell__system_5291(src);
342 		incRef__system_5329(T5_);
343 	}
344 	LA3_: ;
345 	{
346 		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
347 		if (!!(((*dest) == NIM_NIL))) goto LA8_;
348 		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
349 		T10_ = usrToCell__system_5291((*dest));
350 		decRef__system_5336(T10_);
351 	}
352 	LA8_: ;
353 	(*dest) = src;
354 }
N_NOINLINE(void,integerOutOfRangeError__pureZparseutils_248)355 N_LIB_PRIVATE N_NOINLINE(void, integerOutOfRangeError__pureZparseutils_248)(void) {
356 	tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw* T1_;
357 	NimStringDesc* T2_;
358 	T1_ = NIM_NIL;
359 	T1_ = (tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw*) newObj((&NTIrefvalueerror__Ie1m0dv1ZHg72IgPRr1cDw_), sizeof(tyObject_ValueError__yoNlBGx0D2tRizIdhQuENw));
360 	(*T1_).Sup.Sup.Sup.m_type = (&NTIvalueerror__yoNlBGx0D2tRizIdhQuENw_);
361 	(*T1_).Sup.Sup.name = "ValueError";
362 	T2_ = NIM_NIL;
363 	T2_ = (*T1_).Sup.Sup.message; (*T1_).Sup.Sup.message = copyStringRC1(((NimStringDesc*) &TM__vI9aZNKIcImom6dDyKXW1ZA_2));
364 	if (T2_) nimGCunrefNoCycle(T2_);
365 	asgnRef((void**) (&(*T1_).Sup.Sup.parent), ((Exception*) NIM_NIL));
366 	raiseExceptionEx((Exception*)T1_, "ValueError", "integerOutOfRangeError", "parseutils.nim", 426);
367 }
N_NIMCALL(NI,rawParseInt__pureZparseutils_268)368 N_LIB_PRIVATE N_NIMCALL(NI, rawParseInt__pureZparseutils_268)(NimStringDesc* s, NI64* b, NI start) {
369 	NI result;
370 	NI64 sign;
371 	NI i;
372 	result = (NI)0;
373 	sign = IL64(-1);
374 	i = start;
375 	{
376 		if (!(i < (s ? s->Sup.len : 0))) goto LA3_;
377 		{
378 			if (!((NU8)(s->data[i]) == (NU8)(43))) goto LA7_;
379 			i += ((NI) 1);
380 		}
381 		goto LA5_;
382 		LA7_: ;
383 		{
384 			if (!((NU8)(s->data[i]) == (NU8)(45))) goto LA10_;
385 			i += ((NI) 1);
386 			sign = IL64(1);
387 		}
388 		goto LA5_;
389 		LA10_: ;
390 		LA5_: ;
391 	}
392 	LA3_: ;
393 	{
394 		NIM_BOOL T14_;
395 		T14_ = (NIM_BOOL)0;
396 		T14_ = (i < (s ? s->Sup.len : 0));
397 		if (!(T14_)) goto LA15_;
398 		T14_ = (((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)));
399 		LA15_: ;
400 		if (!T14_) goto LA16_;
401 		(*b) = IL64(0);
402 		{
403 			while (1) {
404 				NIM_BOOL T20_;
405 				NI c;
406 				T20_ = (NIM_BOOL)0;
407 				T20_ = (i < (s ? s->Sup.len : 0));
408 				if (!(T20_)) goto LA21_;
409 				T20_ = (((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)));
410 				LA21_: ;
411 				if (!T20_) goto LA19;
412 				c = (NI)(((NU8)(s->data[i])) - ((NI) 48));
413 				{
414 					if (!((NI64)((NI64)((IL64(-9223372036854775807) - IL64(1)) + ((NI64) (c))) / IL64(10)) <= (*b))) goto LA24_;
415 					(*b) = (NI64)((NI64)((*b) * IL64(10)) - ((NI64) (c)));
416 				}
417 				goto LA22_;
418 				LA24_: ;
419 				{
420 					integerOutOfRangeError__pureZparseutils_248();
421 				}
422 				LA22_: ;
423 				i += ((NI) 1);
424 				{
425 					while (1) {
426 						NIM_BOOL T29_;
427 						T29_ = (NIM_BOOL)0;
428 						T29_ = (i < (s ? s->Sup.len : 0));
429 						if (!(T29_)) goto LA30_;
430 						T29_ = ((NU8)(s->data[i]) == (NU8)(95));
431 						LA30_: ;
432 						if (!T29_) goto LA28;
433 						i += ((NI) 1);
434 					} LA28: ;
435 				}
436 			} LA19: ;
437 		}
438 		{
439 			NIM_BOOL T33_;
440 			T33_ = (NIM_BOOL)0;
441 			T33_ = (sign == IL64(-1));
442 			if (!(T33_)) goto LA34_;
443 			T33_ = ((*b) == (IL64(-9223372036854775807) - IL64(1)));
444 			LA34_: ;
445 			if (!T33_) goto LA35_;
446 			integerOutOfRangeError__pureZparseutils_248();
447 		}
448 		goto LA31_;
449 		LA35_: ;
450 		{
451 			(*b) = (NI64)((*b) * sign);
452 			result = (NI)(i - start);
453 		}
454 		LA31_: ;
455 	}
456 	LA16_: ;
457 	return result;
458 }
N_NIMCALL(NI,npuParseBiggestInt)459 N_LIB_PRIVATE N_NIMCALL(NI, npuParseBiggestInt)(NimStringDesc* s, NI64* number, NI start) {
460 	NI result;
461 	NI64 res;
462 	result = (NI)0;
463 	res = IL64(0);
464 	result = rawParseInt__pureZparseutils_268(s, (&res), start);
465 	{
466 		if (!!((result == ((NI) 0)))) goto LA3_;
467 		(*number) = res;
468 	}
469 	LA3_: ;
470 	return result;
471 }
N_NIMCALL(NI,npuParseInt)472 N_LIB_PRIVATE N_NIMCALL(NI, npuParseInt)(NimStringDesc* s, NI* number, NI start) {
473 	NI result;
474 	NI64 res;
475 	result = (NI)0;
476 	res = IL64(0);
477 	result = npuParseBiggestInt(s, (&res), start);
478 	{
479 		NIM_BOOL T3_;
480 		T3_ = (NIM_BOOL)0;
481 		T3_ = (res < IL64(-2147483648));
482 		if (T3_) goto LA4_;
483 		T3_ = (IL64(2147483647) < res);
484 		LA4_: ;
485 		if (!T3_) goto LA5_;
486 		integerOutOfRangeError__pureZparseutils_248();
487 	}
488 	LA5_: ;
489 	{
490 		if (!!((result == ((NI) 0)))) goto LA9_;
491 		(*number) = ((NI) (res));
492 	}
493 	LA9_: ;
494 	return result;
495 }
N_NIMCALL(NI,npuParseFloat)496 N_LIB_PRIVATE N_NIMCALL(NI, npuParseFloat)(NimStringDesc* s, NF* number, NI start) {
497 	NI result;
498 	NF bf;
499 	result = (NI)0;
500 	bf = 0.0;
501 	result = nimParseBiggestFloat(s, (&bf), start);
502 	{
503 		if (!!((result == ((NI) 0)))) goto LA3_;
504 		(*number) = bf;
505 	}
506 	LA3_: ;
507 	return result;
508 }
N_NIMCALL(NI,rawParseUInt__pureZparseutils_375)509 N_LIB_PRIVATE N_NIMCALL(NI, rawParseUInt__pureZparseutils_375)(NimStringDesc* s, NU64* b, NI start) {
510 	NI result;
511 	NU64 res;
512 	NU64 prev;
513 	NI i;
514 	result = (NI)0;
515 	res = 0ULL;
516 	prev = 0ULL;
517 	i = start;
518 	{
519 		NIM_BOOL T3_;
520 		NIM_BOOL T4_;
521 		T3_ = (NIM_BOOL)0;
522 		T4_ = (NIM_BOOL)0;
523 		T4_ = (i < (NI)((s ? s->Sup.len : 0) - ((NI) 1)));
524 		if (!(T4_)) goto LA5_;
525 		T4_ = ((NU8)(s->data[i]) == (NU8)(45));
526 		LA5_: ;
527 		T3_ = T4_;
528 		if (!(T3_)) goto LA6_;
529 		T3_ = (((NU8)(s->data[(NI)(i + ((NI) 1))])) >= ((NU8)(48)) && ((NU8)(s->data[(NI)(i + ((NI) 1))])) <= ((NU8)(57)));
530 		LA6_: ;
531 		if (!T3_) goto LA7_;
532 		integerOutOfRangeError__pureZparseutils_248();
533 	}
534 	LA7_: ;
535 	{
536 		NIM_BOOL T11_;
537 		T11_ = (NIM_BOOL)0;
538 		T11_ = (i < (s ? s->Sup.len : 0));
539 		if (!(T11_)) goto LA12_;
540 		T11_ = ((NU8)(s->data[i]) == (NU8)(43));
541 		LA12_: ;
542 		if (!T11_) goto LA13_;
543 		i += ((NI) 1);
544 	}
545 	LA13_: ;
546 	{
547 		NIM_BOOL T17_;
548 		T17_ = (NIM_BOOL)0;
549 		T17_ = (i < (s ? s->Sup.len : 0));
550 		if (!(T17_)) goto LA18_;
551 		T17_ = (((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)));
552 		LA18_: ;
553 		if (!T17_) goto LA19_;
554 		(*b) = 0ULL;
555 		{
556 			while (1) {
557 				NIM_BOOL T23_;
558 				T23_ = (NIM_BOOL)0;
559 				T23_ = (i < (s ? s->Sup.len : 0));
560 				if (!(T23_)) goto LA24_;
561 				T23_ = (((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)));
562 				LA24_: ;
563 				if (!T23_) goto LA22;
564 				prev = res;
565 				res = (NU64)((NU64)((NU64)((NU64)(res) * (NU64)(10ULL))) + (NU64)(((NU64) ((NI)(((NU8)(s->data[i])) - ((NI) 48))))));
566 				{
567 					if (!((NU64)(res) < (NU64)(prev))) goto LA27_;
568 					integerOutOfRangeError__pureZparseutils_248();
569 				}
570 				LA27_: ;
571 				i += ((NI) 1);
572 				{
573 					while (1) {
574 						NIM_BOOL T31_;
575 						T31_ = (NIM_BOOL)0;
576 						T31_ = (i < (s ? s->Sup.len : 0));
577 						if (!(T31_)) goto LA32_;
578 						T31_ = ((NU8)(s->data[i]) == (NU8)(95));
579 						LA32_: ;
580 						if (!T31_) goto LA30;
581 						i += ((NI) 1);
582 					} LA30: ;
583 				}
584 			} LA22: ;
585 		}
586 		(*b) = res;
587 		result = (NI)(i - start);
588 	}
589 	LA19_: ;
590 	return result;
591 }
N_NIMCALL(NI,npuParseBiggestUInt)592 N_LIB_PRIVATE N_NIMCALL(NI, npuParseBiggestUInt)(NimStringDesc* s, NU64* number, NI start) {
593 	NI result;
594 	NU64 res;
595 	result = (NI)0;
596 	res = 0ULL;
597 	result = rawParseUInt__pureZparseutils_375(s, (&res), start);
598 	{
599 		if (!!((result == ((NI) 0)))) goto LA3_;
600 		(*number) = res;
601 	}
602 	LA3_: ;
603 	return result;
604 }
N_NIMCALL(void,fastSubstr__pureZparseutils_170)605 N_LIB_PRIVATE N_NIMCALL(void, fastSubstr__pureZparseutils_170)(NimStringDesc* s, NimStringDesc** token, NI start, NI length) {
606 	unsureAsgnRef((void**) (&(*token)), setLengthStr((*token), ((NI) (length))));
607 	{
608 		NI i;
609 		NI i_2;
610 		i = (NI)0;
611 		i_2 = ((NI) 0);
612 		{
613 			while (1) {
614 				if (!(i_2 < length)) goto LA3;
615 				i = i_2;
616 				(*token)->data[i] = s->data[(NI)(i + start)];
617 				i_2 += ((NI) 1);
618 			} LA3: ;
619 		}
620 	}
621 }
N_NIMCALL(NI,parseIdent__pureZparseutils_57)622 N_LIB_PRIVATE N_NIMCALL(NI, parseIdent__pureZparseutils_57)(NimStringDesc* s, NimStringDesc** ident, NI start) {
623 	NI result;
624 	NI i;
625 	result = (NI)0;
626 	i = start;
627 	{
628 		NIM_BOOL T3_;
629 		T3_ = (NIM_BOOL)0;
630 		T3_ = (i < (s ? s->Sup.len : 0));
631 		if (!(T3_)) goto LA4_;
632 		T3_ = (((NU8)(s->data[i])) >= ((NU8)(97)) && ((NU8)(s->data[i])) <= ((NU8)(122)) || ((NU8)(s->data[i])) >= ((NU8)(65)) && ((NU8)(s->data[i])) <= ((NU8)(90)) || ((NU8)(s->data[i])) == ((NU8)(95)));
633 		LA4_: ;
634 		if (!T3_) goto LA5_;
635 		i += ((NI) 1);
636 		{
637 			while (1) {
638 				NIM_BOOL T9_;
639 				T9_ = (NIM_BOOL)0;
640 				T9_ = (i < (s ? s->Sup.len : 0));
641 				if (!(T9_)) goto LA10_;
642 				T9_ = (((NU8)(s->data[i])) >= ((NU8)(97)) && ((NU8)(s->data[i])) <= ((NU8)(122)) || ((NU8)(s->data[i])) >= ((NU8)(65)) && ((NU8)(s->data[i])) <= ((NU8)(90)) || ((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)) || ((NU8)(s->data[i])) == ((NU8)(95)));
643 				LA10_: ;
644 				if (!T9_) goto LA8;
645 				i += ((NI) 1);
646 			} LA8: ;
647 		}
648 		unsureAsgnRef((void**) (&(*ident)), substr__system_7764(s, start, (NI)(i - ((NI) 1))));
649 		result = (NI)(i - start);
650 	}
651 	LA5_: ;
652 	return result;
653 }
654