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