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