1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 64
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_5345)(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_5343)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
205 N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5294)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
206 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5300)(void* usr);
207 static N_INLINE(void, asgnRef)(void** dest, void* src);
208 static N_INLINE(void, incRef__system_5338)(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_367)(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_7773)(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_5247;
N_NIMCALL(NI,parseSaturatedNatural__pureZparseutils_326)220 N_LIB_PRIVATE N_NIMCALL(NI, parseSaturatedNatural__pureZparseutils_326)(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) IL64(9223372036854775807)) - c) / ((NI) 10)))) goto LA19_;
258 					(*b) = (NI)((NI)((*b) * ((NI) 10)) + c);
259 				}
260 				goto LA17_;
261 				LA19_: ;
262 				{
263 					(*b) = ((NI) IL64(9223372036854775807));
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)((NU64)(((NU) (x))) - (NU64)(((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 = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
296 	return result;
297 }
N_INLINE(void,rtlAddZCT__system_5343)298 static N_INLINE(void, rtlAddZCT__system_5343)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
299 	addZCT__system_5294((&gch__system_5247.zct), c);
300 }
N_INLINE(void,decRef__system_5345)301 static N_INLINE(void, decRef__system_5345)(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_5343(c);
309 	}
310 	LA4_: ;
311 }
N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g *,usrToCell__system_5300)312 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5300)(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) 16));
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_5300(p);
325 	decRef__system_5345(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)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
331 	return result;
332 }
N_INLINE(void,incRef__system_5338)333 static N_INLINE(void, incRef__system_5338)(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_5300(src);
342 		incRef__system_5338(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_5300((*dest));
350 		decRef__system_5345(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 		if (!!((result == ((NI) 0)))) goto LA3_;
480 		(*number) = ((NI) (res));
481 	}
482 	LA3_: ;
483 	return result;
484 }
N_NIMCALL(NI,npuParseFloat)485 N_LIB_PRIVATE N_NIMCALL(NI, npuParseFloat)(NimStringDesc* s, NF* number, NI start) {
486 	NI result;
487 	NF bf;
488 	result = (NI)0;
489 	bf = 0.0;
490 	result = nimParseBiggestFloat(s, (&bf), start);
491 	{
492 		if (!!((result == ((NI) 0)))) goto LA3_;
493 		(*number) = bf;
494 	}
495 	LA3_: ;
496 	return result;
497 }
N_NIMCALL(NI,rawParseUInt__pureZparseutils_367)498 N_LIB_PRIVATE N_NIMCALL(NI, rawParseUInt__pureZparseutils_367)(NimStringDesc* s, NU64* b, NI start) {
499 	NI result;
500 	NU64 res;
501 	NU64 prev;
502 	NI i;
503 	result = (NI)0;
504 	res = 0ULL;
505 	prev = 0ULL;
506 	i = start;
507 	{
508 		NIM_BOOL T3_;
509 		NIM_BOOL T4_;
510 		T3_ = (NIM_BOOL)0;
511 		T4_ = (NIM_BOOL)0;
512 		T4_ = (i < (NI)((s ? s->Sup.len : 0) - ((NI) 1)));
513 		if (!(T4_)) goto LA5_;
514 		T4_ = ((NU8)(s->data[i]) == (NU8)(45));
515 		LA5_: ;
516 		T3_ = T4_;
517 		if (!(T3_)) goto LA6_;
518 		T3_ = (((NU8)(s->data[(NI)(i + ((NI) 1))])) >= ((NU8)(48)) && ((NU8)(s->data[(NI)(i + ((NI) 1))])) <= ((NU8)(57)));
519 		LA6_: ;
520 		if (!T3_) goto LA7_;
521 		integerOutOfRangeError__pureZparseutils_248();
522 	}
523 	LA7_: ;
524 	{
525 		NIM_BOOL T11_;
526 		T11_ = (NIM_BOOL)0;
527 		T11_ = (i < (s ? s->Sup.len : 0));
528 		if (!(T11_)) goto LA12_;
529 		T11_ = ((NU8)(s->data[i]) == (NU8)(43));
530 		LA12_: ;
531 		if (!T11_) goto LA13_;
532 		i += ((NI) 1);
533 	}
534 	LA13_: ;
535 	{
536 		NIM_BOOL T17_;
537 		T17_ = (NIM_BOOL)0;
538 		T17_ = (i < (s ? s->Sup.len : 0));
539 		if (!(T17_)) goto LA18_;
540 		T17_ = (((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)));
541 		LA18_: ;
542 		if (!T17_) goto LA19_;
543 		(*b) = 0ULL;
544 		{
545 			while (1) {
546 				NIM_BOOL T23_;
547 				T23_ = (NIM_BOOL)0;
548 				T23_ = (i < (s ? s->Sup.len : 0));
549 				if (!(T23_)) goto LA24_;
550 				T23_ = (((NU8)(s->data[i])) >= ((NU8)(48)) && ((NU8)(s->data[i])) <= ((NU8)(57)));
551 				LA24_: ;
552 				if (!T23_) goto LA22;
553 				prev = res;
554 				res = (NU64)((NU64)((NU64)((NU64)(res) * (NU64)(10ULL))) + (NU64)(((NU64) ((NI)(((NU8)(s->data[i])) - ((NI) 48))))));
555 				{
556 					if (!((NU64)(res) < (NU64)(prev))) goto LA27_;
557 					integerOutOfRangeError__pureZparseutils_248();
558 				}
559 				LA27_: ;
560 				i += ((NI) 1);
561 				{
562 					while (1) {
563 						NIM_BOOL T31_;
564 						T31_ = (NIM_BOOL)0;
565 						T31_ = (i < (s ? s->Sup.len : 0));
566 						if (!(T31_)) goto LA32_;
567 						T31_ = ((NU8)(s->data[i]) == (NU8)(95));
568 						LA32_: ;
569 						if (!T31_) goto LA30;
570 						i += ((NI) 1);
571 					} LA30: ;
572 				}
573 			} LA22: ;
574 		}
575 		(*b) = res;
576 		result = (NI)(i - start);
577 	}
578 	LA19_: ;
579 	return result;
580 }
N_NIMCALL(NI,npuParseBiggestUInt)581 N_LIB_PRIVATE N_NIMCALL(NI, npuParseBiggestUInt)(NimStringDesc* s, NU64* number, NI start) {
582 	NI result;
583 	NU64 res;
584 	result = (NI)0;
585 	res = 0ULL;
586 	result = rawParseUInt__pureZparseutils_367(s, (&res), start);
587 	{
588 		if (!!((result == ((NI) 0)))) goto LA3_;
589 		(*number) = res;
590 	}
591 	LA3_: ;
592 	return result;
593 }
N_NIMCALL(void,fastSubstr__pureZparseutils_170)594 N_LIB_PRIVATE N_NIMCALL(void, fastSubstr__pureZparseutils_170)(NimStringDesc* s, NimStringDesc** token, NI start, NI length) {
595 	unsureAsgnRef((void**) (&(*token)), setLengthStr((*token), ((NI) (length))));
596 	{
597 		NI i;
598 		NI i_2;
599 		i = (NI)0;
600 		i_2 = ((NI) 0);
601 		{
602 			while (1) {
603 				if (!(i_2 < length)) goto LA3;
604 				i = i_2;
605 				(*token)->data[i] = s->data[(NI)(i + start)];
606 				i_2 += ((NI) 1);
607 			} LA3: ;
608 		}
609 	}
610 }
N_NIMCALL(NI,parseIdent__pureZparseutils_57)611 N_LIB_PRIVATE N_NIMCALL(NI, parseIdent__pureZparseutils_57)(NimStringDesc* s, NimStringDesc** ident, NI start) {
612 	NI result;
613 	NI i;
614 	result = (NI)0;
615 	i = start;
616 	{
617 		NIM_BOOL T3_;
618 		T3_ = (NIM_BOOL)0;
619 		T3_ = (i < (s ? s->Sup.len : 0));
620 		if (!(T3_)) goto LA4_;
621 		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)));
622 		LA4_: ;
623 		if (!T3_) goto LA5_;
624 		i += ((NI) 1);
625 		{
626 			while (1) {
627 				NIM_BOOL T9_;
628 				T9_ = (NIM_BOOL)0;
629 				T9_ = (i < (s ? s->Sup.len : 0));
630 				if (!(T9_)) goto LA10_;
631 				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)));
632 				LA10_: ;
633 				if (!T9_) goto LA8;
634 				i += ((NI) 1);
635 			} LA8: ;
636 		}
637 		unsureAsgnRef((void**) (&(*ident)), substr__system_7773(s, start, (NI)(i - ((NI) 1))));
638 		result = (NI)(i - start);
639 	}
640 	LA5_: ;
641 	return result;
642 }
643