1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 64
3 
4 #include "nimbase.h"
5 #include <string.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 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw;
22 typedef struct tyObject_TType__facALICuu8zUj0hjvbTLFg tyObject_TType__facALICuu8zUj0hjvbTLFg;
23 typedef struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q;
24 typedef struct NimStringDesc NimStringDesc;
25 typedef struct TGenericSeq TGenericSeq;
26 typedef struct tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ;
27 typedef struct tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA;
28 typedef struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ;
29 typedef struct tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w;
30 typedef struct RootObj RootObj;
31 typedef struct TNimType TNimType;
32 typedef struct TNimNode TNimNode;
33 typedef struct tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g;
34 typedef struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA;
35 typedef struct tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA;
36 typedef struct tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA;
37 typedef struct tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A;
38 typedef struct tySequence__vhmj4KkIKPinmRXny9c2Q6Q tySequence__vhmj4KkIKPinmRXny9c2Q6Q;
39 typedef struct tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg;
40 typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
41 typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
42 typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
43 typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
44 typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
45 typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
46 typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
47 typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
48 typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
49 typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
50 typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
51 typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
52 typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
53 typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
54 typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
55 typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
56 struct tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q {
57 NU16 line;
58 NI16 col;
59 NI32 fileIndex;
60 };
61 typedef NU32 tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg;
62 typedef NU8 tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw;
63 struct TGenericSeq {
64 NI len;
65 NI reserved;
66 };
67 struct NimStringDesc {
68   TGenericSeq Sup;
69 NIM_CHAR data[SEQ_DECL_SIZE];
70 };
71 struct tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw {
72 tyObject_TType__facALICuu8zUj0hjvbTLFg* typ;
73 tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
74 tySet_tyEnum_TNodeFlag__jyh9acXHkhZANSSvPIY7ZLg flags;
75 tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw kind;
76 union{
77 struct {NI64 intVal;
78 } _kind_1;
79 struct {NF floatVal;
80 } _kind_2;
81 struct {NimStringDesc* strVal;
82 } _kind_3;
83 struct {tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* sym;
84 } _kind_4;
85 struct {tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA* ident;
86 } _kind_5;
87 struct {tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ* sons;
88 } _kind_6;
89 };
90 };
91 struct tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA {
92 NI id;
93 NimStringDesc* s;
94 tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA* next;
95 NI h;
96 };
97 typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
98 typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
99 typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
100 typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
101 struct TNimType {
102 NI size;
103 NI align;
104 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
105 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
106 TNimType* base;
107 TNimNode* node;
108 void* finalizer;
109 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
110 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
111 };
112 struct RootObj {
113 TNimType* m_type;
114 };
115 struct tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g {
116 NI32 module;
117 NI32 item;
118 };
119 struct tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w {
120   RootObj Sup;
121 tyObject_ItemId__ozxAxZLHTQ9c3akTzYvt67g itemId;
122 };
123 typedef NU8 tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw;
124 typedef NU16 tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg;
125 typedef NU64 tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw;
126 typedef NU32 tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg;
127 typedef NU8 tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg;
128 typedef NU8 tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw;
129 typedef NU16 tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA;
130 struct tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA {
131 tyEnum_TLocKind__O7PRFZKuiBBWbku09cayVBg k;
132 tyEnum_TStorageLoc__JK9cKMX3XnqHaUky9b6gkGEw storage;
133 tySet_tyEnum_TLocFlag__o2bqJgR4ceIupnUSpxiudA flags;
134 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* lode;
135 tyObject_RopeObj__OFzf0kSiPTcNreUIeJgWVA* r;
136 };
137 struct tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ {
138   tyObject_TIdObj__KUwfjfUQEwGHguQbTcXu7w Sup;
139 tyEnum_TSymKind__cNCW9acsSznmEccl1fgQwkw kind;
140 union{
141 struct {tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* gcUnsafetyReason;
142 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* transformedBody;
143 } _kind_1;
144 struct {tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* guard;
145 NI bitsize;
146 NI alignment;
147 } _kind_2;
148 };
149 tyEnum_TMagic__shZhZOdbVC5nnFvcXQAImg magic;
150 tyObject_TType__facALICuu8zUj0hjvbTLFg* typ;
151 tyObject_TIdent__1LTsGP7bSxg45u9aHcxh6OA* name;
152 tyObject_TLineInfo__WGx4rAexNXnczy1Avn646Q info;
153 tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* owner;
154 tySet_tyEnum_TSymFlag__K9ay6LWMat9bUiT9bIbMxpDHw flags;
155 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* ast;
156 tySet_tyEnum_TOption__WspMeQySXNP2XoTWR5MTgg options;
157 NI position;
158 NI offset;
159 tyObject_TLoc__EtHNvCB0bgfu9bFjzx9cb6aA loc;
160 tyObject_TLib__NBMxlJ6g3utqUlplqTTHkA* annex;
161 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* constraint;
162 };
163 struct tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A {
164 NI counter;
165 tySequence__vhmj4KkIKPinmRXny9c2Q6Q* data;
166 };
167 struct tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg {
168 NI h;
169 tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key;
170 NI val;
171 };
172 typedef NU8 tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw;
173 typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
174 struct TNimNode {
175 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
176 NI offset;
177 TNimType* typ;
178 NCSTRING name;
179 NI len;
180 TNimNode** sons;
181 };
182 struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
183 NI refcount;
184 TNimType* typ;
185 };
186 struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
187 void* bottom;
188 };
189 struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
190 NI len;
191 NI cap;
192 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
193 };
194 typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
195 typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
196 typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
197 typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
198 typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
199 struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
200 tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
201 };
202 typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
203 struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
204 tyArray__0aOLqZchNi8nWtMTi8ND8w link;
205 NI key;
206 NI upperBound;
207 NI level;
208 };
209 struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
210 tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
211 NI Field1;
212 };
213 typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
214 struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
215 NI len;
216 tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
217 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
218 };
219 struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
220 NI minLargeObj;
221 NI maxLargeObj;
222 tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
223 NU32 flBitmap;
224 tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
225 tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
226 tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
227 NI currMem;
228 NI maxMem;
229 NI freeMem;
230 NI occ;
231 NI lastSize;
232 tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
233 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
234 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
235 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
236 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
237 NIM_BOOL locked;
238 NIM_BOOL blockChunkSizeIncrease;
239 NI nextChunkSize;
240 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
241 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
242 };
243 struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
244 NI stackScans;
245 NI cycleCollections;
246 NI maxThreshold;
247 NI maxStackSize;
248 NI maxStackCells;
249 NI cycleTableSize;
250 NI64 maxPause;
251 };
252 struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
253 NI counter;
254 NI max;
255 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
256 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
257 };
258 struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
259 tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
260 NI cycleThreshold;
261 NI zctThreshold;
262 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
263 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
264 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
265 NI recGcLock;
266 tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
267 tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
268 tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
269 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
270 NI gcThreadId;
271 };
272 struct tySequence__vhmj4KkIKPinmRXny9c2Q6Q {
273   TGenericSeq Sup;
274   tyObject_TNodePair__EZfI4tFqtDSTQys2UInNjg data[SEQ_DECL_SIZE];
275 };
276 struct tySequence__ehmV9bTklH2Gt9cXHV9c0HLeQ {
277   TGenericSeq Sup;
278   tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* data[SEQ_DECL_SIZE];
279 };
280 static N_INLINE(NI, emarkamp___pureZhashes_3)(NI h, NI val);
281 N_LIB_PRIVATE N_NIMCALL(NI, toInt__system_1708)(NF f);
282 N_LIB_PRIVATE N_NIMCALL(NI, hash__pureZhashes_279)(NimStringDesc* x);
283 static N_INLINE(NI, len__ast_3198)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
284 N_LIB_PRIVATE N_NIMCALL(NI, hashTree__treetab_5)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n);
285 static N_INLINE(NI, emarkdollar___pureZhashes_18)(NI h);
286 N_LIB_PRIVATE N_NIMCALL(NI, nodeTableRawGet__treetab_85)(tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A t, NI k, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key);
287 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, treesEquivalent__treetab_37)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b);
288 static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b);
289 static N_INLINE(NIM_BOOL, equalMem__system_1735)(void* a, void* b, NI size);
290 static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size);
291 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, sameTypeOrNil__types_1848)(tyObject_TType__facALICuu8zUj0hjvbTLFg* a, tyObject_TType__facALICuu8zUj0hjvbTLFg* b, tySet_tyEnum_TTypeCmpFlag__72pgRXSg7774cr9aCWVPORw flags);
292 static N_INLINE(NI, nextTry__astalgo_90)(NI h, NI maxHash);
293 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, mustRehash__astalgo_87)(NI length, NI counter);
294 N_LIB_PRIVATE N_NIMCALL(tySequence__vhmj4KkIKPinmRXny9c2Q6Q*, newSeq__treetab_163)(NI len);
295 N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
296 N_LIB_PRIVATE N_NIMCALL(void, nodeTableRawInsert__treetab_119)(tySequence__vhmj4KkIKPinmRXny9c2Q6Q** data, NI k, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key, NI val);
297 static N_INLINE(void, asgnRef)(void** dest, void* src);
298 static N_INLINE(void, incRef__system_5317)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
299 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
300 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5279)(void* usr);
301 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
302 static N_INLINE(void, decRef__system_5324)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
303 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
304 static N_INLINE(void, rtlAddZCT__system_5322)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
305 N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5273)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
306 N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
307 extern TNimType NTItnodepairseq__vhmj4KkIKPinmRXny9c2Q6Q_;
308 extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5226;
N_INLINE(NI,emarkamp___pureZhashes_3)309 static N_INLINE(NI, emarkamp___pureZhashes_3)(NI h, NI val) {
310 	NI result;
311 	NU h_2;
312 	NU val_2;
313 	NU res;
314 	result = (NI)0;
315 	h_2 = ((NU) (h));
316 	val_2 = ((NU) (val));
317 	res = (NU)((NU64)(h_2) + (NU64)(val_2));
318 	res = (NU)((NU64)(res) + (NU64)((NU)((NU64)(res) << (NU64)(((NI) 10)))));
319 	res = (NU)(res ^ (NU)((NU64)(res) >> (NU64)(((NI) 6))));
320 	result = ((NI) (res));
321 	return result;
322 }
N_INLINE(NI,len__ast_3198)323 static N_INLINE(NI, len__ast_3198)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
324 	NI result;
325 	NI T1_;
326 	result = (NI)0;
327 	T1_ = ((*n)._kind_6.sons ? (*n)._kind_6.sons->Sup.len : 0);
328 	result = T1_;
329 	return result;
330 }
N_INLINE(NI,emarkdollar___pureZhashes_18)331 static N_INLINE(NI, emarkdollar___pureZhashes_18)(NI h) {
332 	NI result;
333 	NU h_2;
334 	NU res;
335 	result = (NI)0;
336 	h_2 = ((NU) (h));
337 	res = (NU)((NU64)(h_2) + (NU64)((NU)((NU64)(h_2) << (NU64)(((NI) 3)))));
338 	res = (NU)(res ^ (NU)((NU64)(res) >> (NU64)(((NI) 11))));
339 	res = (NU)((NU64)(res) + (NU64)((NU)((NU64)(res) << (NU64)(((NI) 15)))));
340 	result = ((NI) (res));
341 	return result;
342 }
N_NIMCALL(NI,hashTree__treetab_5)343 N_LIB_PRIVATE N_NIMCALL(NI, hashTree__treetab_5)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* n) {
344 	NI result;
345 {	result = (NI)0;
346 	{
347 		if (!(n == 0)) goto LA3_;
348 		goto BeforeRet_;
349 	}
350 	LA3_: ;
351 	result = (*n).kind;
352 	switch ((*n).kind) {
353 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1):
354 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
355 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 4):
356 	{
357 	}
358 	break;
359 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 2):
360 	{
361 		result = emarkamp___pureZhashes_3(result, (*(*n)._kind_5.ident).h);
362 	}
363 	break;
364 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
365 	{
366 		tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* xX60gensym0_;
367 		xX60gensym0_ = (*n)._kind_4.sym;
368 		result = emarkamp___pureZhashes_3(result, (NI)((NI)((NU64)(((NI) ((*xX60gensym0_).Sup.itemId.module))) << (NU64)(((NI) 24))) + ((NI) ((*xX60gensym0_).Sup.itemId.item))));
369 	}
370 	break;
371 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15):
372 	{
373 		{
374 			NIM_BOOL T11_;
375 			T11_ = (NIM_BOOL)0;
376 			T11_ = ((IL64(-9223372036854775807) - IL64(1)) <= (*n)._kind_1.intVal);
377 			if (!(T11_)) goto LA12_;
378 			T11_ = ((*n)._kind_1.intVal <= IL64(9223372036854775807));
379 			LA12_: ;
380 			if (!T11_) goto LA13_;
381 			result = emarkamp___pureZhashes_3(result, ((NI) ((*n)._kind_1.intVal)));
382 		}
383 		LA13_: ;
384 	}
385 	break;
386 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 16) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 18):
387 	{
388 		{
389 			NIM_BOOL T18_;
390 			NI T22_;
391 			T18_ = (NIM_BOOL)0;
392 			T18_ = (-1000000.0 <= (*n)._kind_2.floatVal);
393 			if (!(T18_)) goto LA19_;
394 			T18_ = ((*n)._kind_2.floatVal <= 1000000.0);
395 			LA19_: ;
396 			if (!T18_) goto LA20_;
397 			T22_ = (NI)0;
398 			T22_ = toInt__system_1708((*n)._kind_2.floatVal);
399 			result = emarkamp___pureZhashes_3(result, T22_);
400 		}
401 		LA20_: ;
402 	}
403 	break;
404 	case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 20) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 22):
405 	{
406 		NI T24_;
407 		T24_ = (NI)0;
408 		T24_ = hash__pureZhashes_279((*n)._kind_3.strVal);
409 		result = emarkamp___pureZhashes_3(result, T24_);
410 	}
411 	break;
412 	default:
413 	{
414 		{
415 			NI i;
416 			NI colontmp_;
417 			NI i_2;
418 			i = (NI)0;
419 			colontmp_ = (NI)0;
420 			colontmp_ = len__ast_3198(n);
421 			i_2 = ((NI) 0);
422 			{
423 				while (1) {
424 					NI T29_;
425 					if (!(i_2 < colontmp_)) goto LA28;
426 					i = i_2;
427 					T29_ = (NI)0;
428 					T29_ = hashTree__treetab_5((*n)._kind_6.sons->data[i]);
429 					result = emarkamp___pureZhashes_3(result, T29_);
430 					i_2 += ((NI) 1);
431 				} LA28: ;
432 			}
433 		}
434 	}
435 	break;
436 	}
437 	result = emarkdollar___pureZhashes_18(result);
438 	}BeforeRet_: ;
439 	return result;
440 }
N_INLINE(int,nimCmpMem)441 static N_INLINE(int, nimCmpMem)(void* a, void* b, NI size) {
442 	int result;
443 	result = (int)0;
444 	result = memcmp(a, b, ((size_t) (size)));
445 	return result;
446 }
N_INLINE(NIM_BOOL,equalMem__system_1735)447 static N_INLINE(NIM_BOOL, equalMem__system_1735)(void* a, void* b, NI size) {
448 	NIM_BOOL result;
449 	int T1_;
450 	result = (NIM_BOOL)0;
451 	T1_ = (int)0;
452 	T1_ = nimCmpMem(a, b, size);
453 	result = (T1_ == ((NI32) 0));
454 	return result;
455 }
N_INLINE(NIM_BOOL,eqStrings)456 static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a, NimStringDesc* b) {
457 	NIM_BOOL result;
458 	NI alen;
459 	NI blen;
460 {	result = (NIM_BOOL)0;
461 	alen = (a ? a->Sup.len : 0);
462 	blen = (b ? b->Sup.len : 0);
463 	{
464 		if (!(alen == blen)) goto LA3_;
465 		{
466 			if (!(alen == ((NI) 0))) goto LA7_;
467 			result = NIM_TRUE;
468 			goto BeforeRet_;
469 		}
470 		LA7_: ;
471 		result = equalMem__system_1735(((void*) ((&a->data[((NI) 0)]))), ((void*) ((&b->data[((NI) 0)]))), ((NI) (alen)));
472 		goto BeforeRet_;
473 	}
474 	LA3_: ;
475 	}BeforeRet_: ;
476 	return result;
477 }
N_NIMCALL(NIM_BOOL,treesEquivalent__treetab_37)478 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, treesEquivalent__treetab_37)(tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* a, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* b) {
479 	NIM_BOOL result;
480 {	result = (NIM_BOOL)0;
481 	{
482 		if (!(a == b)) goto LA3_;
483 		result = NIM_TRUE;
484 	}
485 	goto LA1_;
486 	LA3_: ;
487 	{
488 		NIM_BOOL T6_;
489 		NIM_BOOL T7_;
490 		T6_ = (NIM_BOOL)0;
491 		T7_ = (NIM_BOOL)0;
492 		T7_ = !((a == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
493 		if (!(T7_)) goto LA8_;
494 		T7_ = !((b == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)));
495 		LA8_: ;
496 		T6_ = T7_;
497 		if (!(T6_)) goto LA9_;
498 		T6_ = ((*a).kind == (*b).kind);
499 		LA9_: ;
500 		if (!T6_) goto LA10_;
501 		switch ((*a).kind) {
502 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 1):
503 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 23):
504 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 4):
505 		{
506 			result = NIM_TRUE;
507 		}
508 		break;
509 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 3):
510 		{
511 			tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* xX60gensym6_;
512 			tyObject_TSym__nnJKJFyjDGi5mnv8jwfTGQ* xX60gensym7_;
513 			xX60gensym6_ = (*a)._kind_4.sym;
514 			xX60gensym7_ = (*b)._kind_4.sym;
515 			result = ((NI)((NI)((NU64)(((NI) ((*xX60gensym6_).Sup.itemId.module))) << (NU64)(((NI) 24))) + ((NI) ((*xX60gensym6_).Sup.itemId.item))) == (NI)((NI)((NU64)(((NI) ((*xX60gensym7_).Sup.itemId.module))) << (NU64)(((NI) 24))) + ((NI) ((*xX60gensym7_).Sup.itemId.item))));
516 		}
517 		break;
518 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 2):
519 		{
520 			result = ((*(*a)._kind_5.ident).id == (*(*b)._kind_5.ident).id);
521 		}
522 		break;
523 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 5) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 15):
524 		{
525 			result = ((*a)._kind_1.intVal == (*b)._kind_1.intVal);
526 		}
527 		break;
528 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 16) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 18):
529 		{
530 			result = ((*a)._kind_2.floatVal == (*b)._kind_2.floatVal);
531 		}
532 		break;
533 		case ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 20) ... ((tyEnum_TNodeKind__G4E4Gxe7oI2Cm03rkiOzQw) 22):
534 		{
535 			result = eqStrings((*a)._kind_3.strVal, (*b)._kind_3.strVal);
536 		}
537 		break;
538 		default:
539 		{
540 			{
541 				NI T21_;
542 				NI T22_;
543 				T21_ = (NI)0;
544 				T21_ = len__ast_3198(a);
545 				T22_ = (NI)0;
546 				T22_ = len__ast_3198(b);
547 				if (!(T21_ == T22_)) goto LA23_;
548 				{
549 					NI i;
550 					NI colontmp_;
551 					NI i_2;
552 					i = (NI)0;
553 					colontmp_ = (NI)0;
554 					colontmp_ = len__ast_3198(a);
555 					i_2 = ((NI) 0);
556 					{
557 						while (1) {
558 							if (!(i_2 < colontmp_)) goto LA27;
559 							i = i_2;
560 							{
561 								NIM_BOOL T30_;
562 								T30_ = (NIM_BOOL)0;
563 								T30_ = treesEquivalent__treetab_37((*a)._kind_6.sons->data[i], (*b)._kind_6.sons->data[i]);
564 								if (!!(T30_)) goto LA31_;
565 								goto BeforeRet_;
566 							}
567 							LA31_: ;
568 							i_2 += ((NI) 1);
569 						} LA27: ;
570 					}
571 				}
572 				result = NIM_TRUE;
573 			}
574 			LA23_: ;
575 		}
576 		break;
577 		}
578 		{
579 			if (!result) goto LA35_;
580 			result = sameTypeOrNil__types_1848((*a).typ, (*b).typ, 0);
581 		}
582 		LA35_: ;
583 	}
584 	goto LA1_;
585 	LA10_: ;
586 	LA1_: ;
587 	}BeforeRet_: ;
588 	return result;
589 }
N_INLINE(NI,nextTry__astalgo_90)590 static N_INLINE(NI, nextTry__astalgo_90)(NI h, NI maxHash) {
591 	NI result;
592 	result = (NI)0;
593 	result = (NI)((NI)((NI)(((NI) 5) * h) + ((NI) 1)) & maxHash);
594 	return result;
595 }
N_NIMCALL(NI,nodeTableRawGet__treetab_85)596 N_LIB_PRIVATE N_NIMCALL(NI, nodeTableRawGet__treetab_85)(tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A t, NI k, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key) {
597 	NI result;
598 	NI h;
599 	NI T1_;
600 {	result = (NI)0;
601 	T1_ = ((t.data ? t.data->Sup.len : 0)-1);
602 	h = (NI)(k & T1_);
603 	{
604 		while (1) {
605 			NI T10_;
606 			if (!!((t.data->data[h].key == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA3;
607 			{
608 				NIM_BOOL T6_;
609 				T6_ = (NIM_BOOL)0;
610 				T6_ = (t.data->data[h].h == k);
611 				if (!(T6_)) goto LA7_;
612 				T6_ = treesEquivalent__treetab_37(t.data->data[h].key, key);
613 				LA7_: ;
614 				if (!T6_) goto LA8_;
615 				result = h;
616 				goto BeforeRet_;
617 			}
618 			LA8_: ;
619 			T10_ = ((t.data ? t.data->Sup.len : 0)-1);
620 			h = nextTry__astalgo_90(h, T10_);
621 		} LA3: ;
622 	}
623 	result = ((NI) -1);
624 	}BeforeRet_: ;
625 	return result;
626 }
N_NIMCALL(tySequence__vhmj4KkIKPinmRXny9c2Q6Q *,newSeq__treetab_163)627 N_LIB_PRIVATE N_NIMCALL(tySequence__vhmj4KkIKPinmRXny9c2Q6Q*, newSeq__treetab_163)(NI len) {
628 	tySequence__vhmj4KkIKPinmRXny9c2Q6Q* result;
629 	result = NIM_NIL;
630 	result = (tySequence__vhmj4KkIKPinmRXny9c2Q6Q*) newSeq((&NTItnodepairseq__vhmj4KkIKPinmRXny9c2Q6Q_), len);
631 	return result;
632 }
N_INLINE(NI,pluspercent___system_696)633 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
634 	NI result;
635 	result = (NI)0;
636 	result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
637 	return result;
638 }
N_INLINE(void,incRef__system_5317)639 static N_INLINE(void, incRef__system_5317)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
640 	(*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
641 }
N_INLINE(NI,minuspercent___system_716)642 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
643 	NI result;
644 	result = (NI)0;
645 	result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
646 	return result;
647 }
N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g *,usrToCell__system_5279)648 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5279)(void* usr) {
649 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
650 	NI T1_;
651 	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
652 	T1_ = (NI)0;
653 	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 16));
654 	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
655 	return result;
656 }
N_INLINE(NIM_BOOL,ltpercent___system_1005)657 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
658 	NIM_BOOL result;
659 	result = (NIM_BOOL)0;
660 	result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
661 	return result;
662 }
N_INLINE(void,rtlAddZCT__system_5322)663 static N_INLINE(void, rtlAddZCT__system_5322)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
664 	addZCT__system_5273((&gch__system_5226.zct), c);
665 }
N_INLINE(void,decRef__system_5324)666 static N_INLINE(void, decRef__system_5324)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
667 	(*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
668 	{
669 		NIM_BOOL T3_;
670 		T3_ = (NIM_BOOL)0;
671 		T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
672 		if (!T3_) goto LA4_;
673 		rtlAddZCT__system_5322(c);
674 	}
675 	LA4_: ;
676 }
N_INLINE(void,asgnRef)677 static N_INLINE(void, asgnRef)(void** dest, void* src) {
678 	{
679 		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
680 		if (!!((src == NIM_NIL))) goto LA3_;
681 		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
682 		T5_ = usrToCell__system_5279(src);
683 		incRef__system_5317(T5_);
684 	}
685 	LA3_: ;
686 	{
687 		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
688 		if (!!(((*dest) == NIM_NIL))) goto LA8_;
689 		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
690 		T10_ = usrToCell__system_5279((*dest));
691 		decRef__system_5324(T10_);
692 	}
693 	LA8_: ;
694 	(*dest) = src;
695 }
N_NIMCALL(void,nodeTableRawInsert__treetab_119)696 N_LIB_PRIVATE N_NIMCALL(void, nodeTableRawInsert__treetab_119)(tySequence__vhmj4KkIKPinmRXny9c2Q6Q** data, NI k, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key, NI val) {
697 	NI h;
698 	NI T1_;
699 	T1_ = (((*data) ? (*data)->Sup.len : 0)-1);
700 	h = (NI)(k & T1_);
701 	{
702 		while (1) {
703 			NI T4_;
704 			if (!!(((*data)->data[h].key == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA3;
705 			T4_ = (((*data) ? (*data)->Sup.len : 0)-1);
706 			h = nextTry__astalgo_90(h, T4_);
707 		} LA3: ;
708 	}
709 	(*data)->data[h].h = k;
710 	asgnRef((void**) (&(*data)->data[h].key), key);
711 	(*data)->data[h].val = val;
712 }
N_NIMCALL(NI,nodeTableTestOrSet__treetab_198)713 N_LIB_PRIVATE N_NIMCALL(NI, nodeTableTestOrSet__treetab_198)(tyObject_TNodeTable__wN7B39cKxLpMkvKNm9bduZ0A* t, tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw* key, NI val) {
714 	NI result;
715 	NI k;
716 	NI index;
717 	result = (NI)0;
718 	k = hashTree__treetab_5(key);
719 	index = nodeTableRawGet__treetab_85((*t), k, key);
720 	{
721 		if (!(((NI) 0) <= index)) goto LA3_;
722 		result = (*t).data->data[index].val;
723 	}
724 	goto LA1_;
725 	LA3_: ;
726 	{
727 		{
728 			NI T8_;
729 			NIM_BOOL T9_;
730 			tySequence__vhmj4KkIKPinmRXny9c2Q6Q* n;
731 			NI T12_;
732 			T8_ = ((*t).data ? (*t).data->Sup.len : 0);
733 			T9_ = (NIM_BOOL)0;
734 			T9_ = mustRehash__astalgo_87(T8_, (*t).counter);
735 			if (!T9_) goto LA10_;
736 			T12_ = ((*t).data ? (*t).data->Sup.len : 0);
737 			n = newSeq__treetab_163(((NI) ((NI)(T12_ * ((NI) 2)))));
738 			{
739 				NI i;
740 				NI colontmp_;
741 				NI T14_;
742 				NI res;
743 				i = (NI)0;
744 				colontmp_ = (NI)0;
745 				T14_ = (((*t).data ? (*t).data->Sup.len : 0)-1);
746 				colontmp_ = T14_;
747 				res = ((NI) 0);
748 				{
749 					while (1) {
750 						if (!(res <= colontmp_)) goto LA16;
751 						i = res;
752 						{
753 							if (!!(((*t).data->data[i].key == ((tyObject_TNode__bROa11lyF5vxEN9aYNbHmhw*) NIM_NIL)))) goto LA19_;
754 							nodeTableRawInsert__treetab_119((&n), (*t).data->data[i].h, (*t).data->data[i].key, (*t).data->data[i].val);
755 						}
756 						LA19_: ;
757 						res += ((NI) 1);
758 					} LA16: ;
759 				}
760 			}
761 			unsureAsgnRef((void**) (&(*t).data), n);
762 			n = NIM_NIL;
763 		}
764 		LA10_: ;
765 		nodeTableRawInsert__treetab_119((&(*t).data), k, key, val);
766 		result = val;
767 		(*t).counter += ((NI) 1);
768 	}
769 	LA1_: ;
770 	return result;
771 }
772