1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 32
3 
4 #include "nimbase.h"
5 #include <string.h>
6 #include <setjmp.h>
7 #undef LANGUAGE_C
8 #undef MIPSEB
9 #undef MIPSEL
10 #undef PPC
11 #undef R3000
12 #undef R4000
13 #undef i386
14 #undef linux
15 #undef mips
16 #undef near
17 #undef far
18 #undef powerpc
19 #undef unix
20 #define nimfr_(x, y)
21 #define nimln_(x, y)
22 typedef struct NimStringDesc NimStringDesc;
23 typedef struct TGenericSeq TGenericSeq;
24 typedef struct Exception Exception;
25 typedef struct RootObj RootObj;
26 typedef struct TNimType TNimType;
27 typedef struct TNimNode TNimNode;
28 typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
29 typedef struct TSafePoint TSafePoint;
30 typedef struct tyObject_ProcessObj__2rGNQnv9bU4hanI2g3svReg tyObject_ProcessObj__2rGNQnv9bU4hanI2g3svReg;
31 typedef struct tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg;
32 typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
33 typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
34 typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
35 typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
36 typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
37 typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
38 typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
39 typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
40 typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
41 typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
42 typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
43 typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
44 typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
45 typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
46 typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
47 typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
48 typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
49 struct TGenericSeq {
50 NI len;
51 NI reserved;
52 };
53 struct NimStringDesc {
54   TGenericSeq Sup;
55 NIM_CHAR data[SEQ_DECL_SIZE];
56 };
57 typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
58 typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
59 typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
60 typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
61 struct TNimType {
62 NI size;
63 NI align;
64 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
65 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
66 TNimType* base;
67 TNimNode* node;
68 void* finalizer;
69 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
70 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
71 };
72 struct RootObj {
73 TNimType* m_type;
74 };
75 struct Exception {
76   RootObj Sup;
77 Exception* parent;
78 NCSTRING name;
79 NimStringDesc* message;
80 tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
81 Exception* up;
82 };
83 struct TSafePoint {
84 TSafePoint* prev;
85 NI status;
86 jmp_buf context;
87 };
88 typedef NU8 tySet_tyEnum_ProcessOption__bnU6W8LhTMnT4JaSWtGlSA;
89 typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
90 typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
91 struct TNimNode {
92 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
93 NI offset;
94 TNimType* typ;
95 NCSTRING name;
96 NI len;
97 TNimNode** sons;
98 };
99 struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
100 NI refcount;
101 TNimType* typ;
102 };
103 struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
104 void* bottom;
105 };
106 struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
107 NI len;
108 NI cap;
109 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
110 };
111 typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
112 typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
113 typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
114 typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
115 typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
116 struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
117 tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
118 };
119 typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
120 struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
121 tyArray__0aOLqZchNi8nWtMTi8ND8w link;
122 NI key;
123 NI upperBound;
124 NI level;
125 };
126 struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
127 tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
128 NI Field1;
129 };
130 typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
131 struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
132 NI len;
133 tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
134 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
135 };
136 struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
137 NI minLargeObj;
138 NI maxLargeObj;
139 tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
140 NU32 flBitmap;
141 tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
142 tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
143 tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
144 NI currMem;
145 NI maxMem;
146 NI freeMem;
147 NI occ;
148 NI lastSize;
149 tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
150 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
151 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
152 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
153 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
154 NIM_BOOL locked;
155 NIM_BOOL blockChunkSizeIncrease;
156 NI nextChunkSize;
157 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
158 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
159 };
160 struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
161 NI stackScans;
162 NI cycleCollections;
163 NI maxThreshold;
164 NI maxStackSize;
165 NI maxStackCells;
166 NI cycleTableSize;
167 NI64 maxPause;
168 };
169 struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
170 NI counter;
171 NI max;
172 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
173 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
174 };
175 struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
176 tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
177 NI cycleThreshold;
178 NI zctThreshold;
179 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
180 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
181 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
182 NI recGcLock;
183 tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
184 tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
185 tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
186 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
187 NI gcThreadId;
188 };
189 struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
190 NCSTRING procname;
191 NI line;
192 NCSTRING filename;
193 };
194 struct tySequence__uB9b75OUPRENsBAu4AnoePA {
195   TGenericSeq Sup;
196   tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
197 };
198 N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__systemZassertions_56)(NimStringDesc* msg);
199 N_LIB_PRIVATE N_NIMCALL(void, openDefaultBrowserImpl__pureZbrowsers_9)(NimStringDesc* url);
200 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nospquoteShell)(NimStringDesc* s);
201 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, prepare__pureZbrowsers_6)(NimStringDesc* s);
202 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, contains__pureZstrutils_1631)(NimStringDesc* s, NimStringDesc* sub);
203 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
204 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
205 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size);
206 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
207 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, absolutePath__pureZos_742)(NimStringDesc* path, NimStringDesc* root);
208 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosgetCurrentDir)(void);
209 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
210 N_LIB_PRIVATE N_NIMCALL(NI, nosexecShellCmd)(NimStringDesc* command);
211 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, getEnv__pureZos_418)(NimStringDesc* key, NimStringDesc* default_0);
212 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, substr__system_7735)(NimStringDesc* s, NI first, NI last);
213 static N_INLINE(void, pushSafePoint)(TSafePoint* s);
214 N_LIB_PRIVATE N_NIMCALL(tyObject_ProcessObj__2rGNQnv9bU4hanI2g3svReg*, nospstartProcess)(NimStringDesc* command, NimStringDesc* workingDir, NimStringDesc** args, NI argsLen_0, tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg* env, tySet_tyEnum_ProcessOption__bnU6W8LhTMnT4JaSWtGlSA options);
215 static N_INLINE(void, nimZeroMem)(void* p, NI size);
216 static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
217 static N_INLINE(void, popSafePoint)(void);
218 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isObj)(TNimType* obj, TNimType* subclass);
219 static N_INLINE(Exception*, nimBorrowCurrentException)(void);
220 static N_INLINE(void, popCurrentException)(void);
221 static N_INLINE(void, asgnRef)(void** dest, void* src);
222 static N_INLINE(void, incRef__system_5300)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
223 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
224 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5262)(void* usr);
225 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
226 static N_INLINE(void, decRef__system_5307)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
227 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
228 static N_INLINE(void, rtlAddZCT__system_5305)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
229 N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5256)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
230 N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void);
231 STRING_LITERAL(TM__CZNeKGdQ8AWxD1HSDIq5DQ_2, "browsers.nim(69, 12) `url.len > 0` URL must not be empty string", 63);
232 STRING_LITERAL(TM__CZNeKGdQ8AWxD1HSDIq5DQ_3, "://", 3);
233 STRING_LITERAL(TM__CZNeKGdQ8AWxD1HSDIq5DQ_4, "file://", 7);
234 STRING_LITERAL(TM__CZNeKGdQ8AWxD1HSDIq5DQ_5, "xdg-open ", 9);
235 STRING_LITERAL(TM__CZNeKGdQ8AWxD1HSDIq5DQ_6, "BROWSER", 7);
236 extern TNimType NTIoserror__BeJgrOdDsczOwEWOZbRfKA_;
237 extern TSafePoint* excHandler__system_2565;
238 extern TSafePoint* excHandler__system_2565;
239 extern TSafePoint* excHandler__system_2565;
240 extern TSafePoint* excHandler__system_2565;
241 extern Exception* currException__system_2566;
242 extern Exception* currException__system_2566;
243 extern Exception* currException__system_2566;
244 extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5209;
N_INLINE(void,nimCopyMem)245 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
246 	void* T1_;
247 	T1_ = (void*)0;
248 	T1_ = memcpy(dest, source, ((size_t) (size)));
249 }
N_INLINE(void,copyMem__system_1727)250 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size) {
251 	nimCopyMem(dest, source, size);
252 }
N_INLINE(void,appendString)253 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
254 	{
255 		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
256 		copyMem__system_1727(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
257 		(*dest).Sup.len += (*src).Sup.len;
258 	}
259 	LA3_: ;
260 }
N_NIMCALL(NimStringDesc *,prepare__pureZbrowsers_6)261 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, prepare__pureZbrowsers_6)(NimStringDesc* s) {
262 	NimStringDesc* result;
263 	result = NIM_NIL;
264 	{
265 		NIM_BOOL T3_;
266 		T3_ = (NIM_BOOL)0;
267 		T3_ = contains__pureZstrutils_1631(s, ((NimStringDesc*) &TM__CZNeKGdQ8AWxD1HSDIq5DQ_3));
268 		if (!T3_) goto LA4_;
269 		result = copyString(s);
270 	}
271 	goto LA1_;
272 	LA4_: ;
273 	{
274 		NimStringDesc* T7_;
275 		NimStringDesc* T8_;
276 		NimStringDesc* T9_;
277 		T7_ = NIM_NIL;
278 		T8_ = NIM_NIL;
279 		T8_ = nosgetCurrentDir();
280 		T9_ = NIM_NIL;
281 		T9_ = absolutePath__pureZos_742(s, T8_);
282 		T7_ = rawNewString((T9_ ? T9_->Sup.len : 0) + 7);
283 appendString(T7_, ((NimStringDesc*) &TM__CZNeKGdQ8AWxD1HSDIq5DQ_4));
284 appendString(T7_, T9_);
285 		result = T7_;
286 	}
287 	LA1_: ;
288 	return result;
289 }
N_INLINE(void,pushSafePoint)290 static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
291 	(*s).prev = excHandler__system_2565;
292 	excHandler__system_2565 = s;
293 }
N_INLINE(void,nimSetMem__systemZmemory_7)294 static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
295 	void* T1_;
296 	T1_ = (void*)0;
297 	T1_ = memset(a, v, ((size_t) (size)));
298 }
N_INLINE(void,nimZeroMem)299 static N_INLINE(void, nimZeroMem)(void* p, NI size) {
300 	nimSetMem__systemZmemory_7(p, ((int) 0), size);
301 }
N_INLINE(void,popSafePoint)302 static N_INLINE(void, popSafePoint)(void) {
303 	excHandler__system_2565 = (*excHandler__system_2565).prev;
304 }
N_INLINE(Exception *,nimBorrowCurrentException)305 static N_INLINE(Exception*, nimBorrowCurrentException)(void) {
306 	Exception* result;
307 	result = NIM_NIL;
308 	result = currException__system_2566;
309 	return result;
310 }
N_INLINE(NI,pluspercent___system_696)311 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
312 	NI result;
313 	result = (NI)0;
314 	result = ((NI) ((NU)((NU32)(((NU) (x))) + (NU32)(((NU) (y))))));
315 	return result;
316 }
N_INLINE(void,incRef__system_5300)317 static N_INLINE(void, incRef__system_5300)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
318 	(*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
319 }
N_INLINE(NI,minuspercent___system_716)320 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
321 	NI result;
322 	result = (NI)0;
323 	result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y))))));
324 	return result;
325 }
N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g *,usrToCell__system_5262)326 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5262)(void* usr) {
327 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
328 	NI T1_;
329 	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
330 	T1_ = (NI)0;
331 	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 8));
332 	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
333 	return result;
334 }
N_INLINE(NIM_BOOL,ltpercent___system_1005)335 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
336 	NIM_BOOL result;
337 	result = (NIM_BOOL)0;
338 	result = ((NU32)(((NU) (x))) < (NU32)(((NU) (y))));
339 	return result;
340 }
N_INLINE(void,rtlAddZCT__system_5305)341 static N_INLINE(void, rtlAddZCT__system_5305)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
342 	addZCT__system_5256((&gch__system_5209.zct), c);
343 }
N_INLINE(void,decRef__system_5307)344 static N_INLINE(void, decRef__system_5307)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
345 	(*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
346 	{
347 		NIM_BOOL T3_;
348 		T3_ = (NIM_BOOL)0;
349 		T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
350 		if (!T3_) goto LA4_;
351 		rtlAddZCT__system_5305(c);
352 	}
353 	LA4_: ;
354 }
N_INLINE(void,asgnRef)355 static N_INLINE(void, asgnRef)(void** dest, void* src) {
356 	{
357 		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
358 		if (!!((src == NIM_NIL))) goto LA3_;
359 		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
360 		T5_ = usrToCell__system_5262(src);
361 		incRef__system_5300(T5_);
362 	}
363 	LA3_: ;
364 	{
365 		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
366 		if (!!(((*dest) == NIM_NIL))) goto LA8_;
367 		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
368 		T10_ = usrToCell__system_5262((*dest));
369 		decRef__system_5307(T10_);
370 	}
371 	LA8_: ;
372 	(*dest) = src;
373 }
N_INLINE(void,popCurrentException)374 static N_INLINE(void, popCurrentException)(void) {
375 	asgnRef((void**) (&currException__system_2566), (*currException__system_2566).up);
376 }
N_NIMCALL(void,openDefaultBrowserImpl__pureZbrowsers_9)377 N_LIB_PRIVATE N_NIMCALL(void, openDefaultBrowserImpl__pureZbrowsers_9)(NimStringDesc* url) {
378 	NimStringDesc* u;
379 	NimStringDesc* T1_;
380 {	T1_ = NIM_NIL;
381 	T1_ = prepare__pureZbrowsers_6(url);
382 	u = nospquoteShell(T1_);
383 	{
384 		NimStringDesc* T4_;
385 		NI T5_;
386 		T4_ = NIM_NIL;
387 		T4_ = rawNewString((u ? u->Sup.len : 0) + 9);
388 appendString(T4_, ((NimStringDesc*) &TM__CZNeKGdQ8AWxD1HSDIq5DQ_5));
389 appendString(T4_, u);
390 		T5_ = (NI)0;
391 		T5_ = nosexecShellCmd(T4_);
392 		if (!(T5_ == ((NI) 0))) goto LA6_;
393 		goto BeforeRet_;
394 	}
395 	LA6_: ;
396 	{
397 		NimStringDesc* b;
398 		NimStringDesc* colontmp_;
399 		NI lastX60gensym34_;
400 		NI splitsX60gensym34_;
401 		b = NIM_NIL;
402 		colontmp_ = NIM_NIL;
403 		colontmp_ = getEnv__pureZos_418(((NimStringDesc*) &TM__CZNeKGdQ8AWxD1HSDIq5DQ_6), ((NimStringDesc*) NIM_NIL));
404 		lastX60gensym34_ = ((NI) 0);
405 		splitsX60gensym34_ = ((NI) -1);
406 		{
407 			while (1) {
408 				NI firstX60gensym34_;
409 				TSafePoint TM__CZNeKGdQ8AWxD1HSDIq5DQ_7;
410 				tyArray__nHXaesL0DJZHyVS07ARPRA T19_;
411 				tyObject_ProcessObj__2rGNQnv9bU4hanI2g3svReg* T20_;
412 				if (!(lastX60gensym34_ <= (colontmp_ ? colontmp_->Sup.len : 0))) goto LA10;
413 				firstX60gensym34_ = lastX60gensym34_;
414 				{
415 					while (1) {
416 						NIM_BOOL T13_;
417 						T13_ = (NIM_BOOL)0;
418 						T13_ = (lastX60gensym34_ < (colontmp_ ? colontmp_->Sup.len : 0));
419 						if (!(T13_)) goto LA14_;
420 						T13_ = !(((NU8)(colontmp_->data[lastX60gensym34_]) == (NU8)(58)));
421 						LA14_: ;
422 						if (!T13_) goto LA12;
423 						lastX60gensym34_ += ((NI) 1);
424 					} LA12: ;
425 				}
426 				{
427 					if (!(splitsX60gensym34_ == ((NI) 0))) goto LA17_;
428 					lastX60gensym34_ = (colontmp_ ? colontmp_->Sup.len : 0);
429 				}
430 				LA17_: ;
431 				b = substr__system_7735(colontmp_, firstX60gensym34_, (NI)(lastX60gensym34_ - ((NI) 1)));
432 				pushSafePoint(&TM__CZNeKGdQ8AWxD1HSDIq5DQ_7);
433 				TM__CZNeKGdQ8AWxD1HSDIq5DQ_7.status = setjmp(TM__CZNeKGdQ8AWxD1HSDIq5DQ_7.context);
434 				if (TM__CZNeKGdQ8AWxD1HSDIq5DQ_7.status == 0) {
435 				nimZeroMem((void*)T19_, sizeof(tyArray__nHXaesL0DJZHyVS07ARPRA));
436 				T19_[0] = copyString(url);
437 				T20_ = NIM_NIL;
438 				T20_ = nospstartProcess(b, ((NimStringDesc*) NIM_NIL), T19_, 1, ((tyObject_StringTableObj__V5PVrt9bIxZEeV7lfvqqtNg*) NIM_NIL), 2);
439 				(void)(T20_);
440 				popSafePoint();
441 				goto BeforeRet_;
442 				popSafePoint();
443 				}
444 				else {
445 					popSafePoint();
446 					if (isObj(nimBorrowCurrentException()->Sup.m_type, (&NTIoserror__BeJgrOdDsczOwEWOZbRfKA_))) {
447 						TM__CZNeKGdQ8AWxD1HSDIq5DQ_7.status = 0;
448 						popCurrentException();
449 					}
450 				}
451 				if (TM__CZNeKGdQ8AWxD1HSDIq5DQ_7.status != 0) reraiseException();
452 				{
453 					if (!(splitsX60gensym34_ == ((NI) 0))) goto LA25_;
454 					goto LA9;
455 				}
456 				LA25_: ;
457 				splitsX60gensym34_ -= ((NI) 1);
458 				lastX60gensym34_ += ((NI) 1);
459 			} LA10: ;
460 		} LA9: ;
461 	}
462 	}BeforeRet_: ;
463 }
N_NIMCALL(void,openDefaultBrowser__pureZbrowsers_13)464 N_LIB_PRIVATE N_NIMCALL(void, openDefaultBrowser__pureZbrowsers_13)(NimStringDesc* url) {
465 	{
466 		if (!!((((NI) 0) < (url ? url->Sup.len : 0)))) goto LA3_;
467 		failedAssertImpl__systemZassertions_56(((NimStringDesc*) &TM__CZNeKGdQ8AWxD1HSDIq5DQ_2));
468 	}
469 	LA3_: ;
470 	openDefaultBrowserImpl__pureZbrowsers_9(url);
471 }
472