1 #include <ADT/Dictionary.d>
2 #include <__oo2c.h>
3 #include <setjmp.h>
4 
ADT_Dictionary__DictionaryDesc_INIT(ADT_Dictionary__Dictionary dict)5 void ADT_Dictionary__DictionaryDesc_INIT(ADT_Dictionary__Dictionary dict) {
6   register OOC_INT64 i0;
7 
8   i0 = (OOC_INT64)dict;
9   *(OOC_INT32*)((_check_pointer(i0, 4887))+8) = 0;
10   *(OOC_INT32*)((_check_pointer(i0, 4908))+12) = 0;
11   *(OOC_INT64*)((_check_pointer(i0, 4929))+16) = (OOC_INT64)0;
12   *(OOC_INT32*)(_check_pointer(i0, 4953)) = 0;
13   *(OOC_INT32*)((_check_pointer(i0, 4974))+4) = 0;
14   return;
15   ;
16 }
17 
ADT_Dictionary__New(void)18 ADT_Dictionary__Dictionary ADT_Dictionary__New(void) {
19   register OOC_INT64 i0;
20 
21   i0 = (OOC_INT64)RT0__NewObject(_td__qtd1.baseTypes[0]);
22   ADT_Dictionary__DictionaryDesc_INIT((ADT_Dictionary__Dictionary)i0);
23   return (ADT_Dictionary__Dictionary)i0;
24   ;
25 }
26 
ADT_Dictionary__DictionaryDesc_Destroy(ADT_Dictionary__Dictionary dict)27 void ADT_Dictionary__DictionaryDesc_Destroy(ADT_Dictionary__Dictionary dict) {
28   register OOC_INT64 i0,i1,i2,i3,i4;
29   OOC_INT32 i;
30 
31   i0 = (OOC_INT64)dict;
32   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5206))+16);
33   i1 = i1!=(OOC_INT64)0;
34   if (!i1) goto l11;
35   i = 0;
36   i1 = *(OOC_INT32*)((_check_pointer(i0, 5250))+8);
37   i2 = 0<i1;
38   if (!i2) goto l10;
39   i2=0;
40 l5_loop:
41   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5313))+16);
42   i3 = _check_pointer(i3, 5320);
43   i4 = OOC_ARRAY_LENGTH(i3, 0);
44   *(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 5320))*24))+8) = (OOC_INT64)0;
45   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5349))+16);
46   i3 = _check_pointer(i3, 5356);
47   i4 = OOC_ARRAY_LENGTH(i3, 0);
48   *(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 5356))*24))+16) = (OOC_INT64)0;
49   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5387))+16);
50   i3 = _check_pointer(i3, 5394);
51   i4 = OOC_ARRAY_LENGTH(i3, 0);
52   *(OOC_INT32*)(i3+((_check_index(i2, i4, OOC_UINT32, 5394))*24)) = 0;
53   i2 = i2+1;
54   i = i2;
55   i3 = i2<i1;
56   if (i3) goto l5_loop;
57 l10:
58   *(OOC_INT64*)((_check_pointer(i0, 5430))+16) = (OOC_INT64)0;
59 l11:
60   return;
61   ;
62 }
63 
ADT_Dictionary__IsSet(Object__Object key)64 static OOC_CHAR8 ADT_Dictionary__IsSet(Object__Object key) {
65   register OOC_INT64 i0,i1;
66 
67   i0 = (OOC_INT64)key;
68   i1 = i0!=(OOC_INT64)0;
69   if (i1) goto l3;
70   i0=0u;
71   goto l4;
72 l3:
73   i1 = (OOC_INT64)ADT_Dictionary__dummy;
74   i0 = i0!=i1;
75 
76 l4:
77   return i0;
78   ;
79 }
80 
ADT_Dictionary__DictionaryDesc_InternalLookup(ADT_Dictionary__Dictionary dict,Object__Object key,OOC_INT32 hash)81 OOC_INT32 ADT_Dictionary__DictionaryDesc_InternalLookup(ADT_Dictionary__Dictionary dict, Object__Object key, OOC_INT32 hash) {
82   register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8;
83   ADT_Dictionary__Table t;
84   OOC_UINT32 mask;
85   OOC_INT32 i;
86   OOC_INT32 freeslot;
87   OOC_INT32 incr;
88 
89   i0 = (OOC_INT64)dict;
90   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 6885))+16);
91   t = (ADT_Dictionary__Table)i1;
92   i2 = *(OOC_INT32*)((_check_pointer(i0, 6922))+8);
93   i3 = hash;
94   i4 = _type_cast_fast(OOC_UINT32, OOC_INT32, i3);
95   i2 = _type_cast_fast(OOC_UINT32, OOC_INT32, (i2-1));
96   mask = i2;
97   i5 = _type_cast_fast(OOC_INT32, OOC_UINT32, ((~i4)&i2));
98   i = i5;
99   i6 = _check_pointer(i1, 6995);
100   i7 = OOC_ARRAY_LENGTH(i6, 0);
101   i6 = (OOC_INT64)*(OOC_INT64*)((i6+((_check_index(i5, i7, OOC_UINT32, 6995))*24))+8);
102   i6 = i6==(OOC_INT64)0;
103   if (i6) goto l3;
104   i6 = _check_pointer(i1, 7016);
105   i7 = OOC_ARRAY_LENGTH(i6, 0);
106   i6 = (OOC_INT64)*(OOC_INT64*)((i6+((_check_index(i5, i7, OOC_UINT32, 7016))*24))+8);
107   i7 = (OOC_INT64)key;
108   i6 = i6==i7;
109 
110   goto l4;
111 l3:
112   i6=1u;
113 l4:
114   i7 = (OOC_INT64)key;
115   if (i6) goto l19;
116   i6 = _check_pointer(i1, 7064);
117   i8 = OOC_ARRAY_LENGTH(i6, 0);
118   i6 = (OOC_INT64)*(OOC_INT64*)((i6+((_check_index(i5, i8, OOC_UINT32, 7064))*24))+8);
119   i8 = (OOC_INT64)ADT_Dictionary__dummy;
120   i6 = i6==i8;
121   if (i6) goto l17;
122   i6 = _check_pointer(i1, 7119);
123   i8 = OOC_ARRAY_LENGTH(i6, 0);
124   i6 = *(OOC_INT32*)(i6+((_check_index(i5, i8, OOC_UINT32, 7119))*24));
125   i6 = i6==i3;
126   if (i6) goto l11;
127   i6=0u;
128   goto l13;
129 l11:
130   i6 = _check_pointer(i1, 7153);
131   i8 = OOC_ARRAY_LENGTH(i6, 0);
132   i6 = (OOC_INT64)*(OOC_INT64*)((i6+((_check_index(i5, i8, OOC_UINT32, 7153))*24))+8);
133   i6 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i7, 7142)))), Object__ObjectDesc_Equals)),Object__ObjectDesc_Equals)((Object__Object)i7, (Object__Object)i6);
134 
135 l13:
136   if (i6) goto l15;
137   freeslot = (-1);
138   goto l20;
139 l15:
140   return i5;
141   goto l20;
142 l17:
143   freeslot = i5;
144   goto l20;
145 l19:
146   return i5;
147 l20:
148   i4 = _type_cast_fast(OOC_INT32, OOC_UINT32, ((i4^(_type_cast_fast(OOC_UINT32, OOC_INT32, (_lsh(OOC_INT32, OOC_UINT32, i3, (-3))))))&i2));
149   incr = i4;
150   i6 = i4==0;
151   if (!i6) goto l24;
152   i4 = *(OOC_INT32*)((_check_pointer(i0, 7355))+8);
153   i4 = i4-1;
154   incr = i4;
155 
156 l24:
157   {register OOC_INT64 h0=i4;i4=i5;i5=h0;}
158 l25_loop:
159   i4 = _type_cast_fast(OOC_INT32, OOC_UINT32, ((_type_cast_fast(OOC_UINT32, OOC_INT32, (i4+i5)))&i2));
160   i = i4;
161   i6 = _check_pointer(i1, 7448);
162   i8 = OOC_ARRAY_LENGTH(i6, 0);
163   i6 = (OOC_INT64)*(OOC_INT64*)((i6+((_check_index(i4, i8, OOC_UINT32, 7448))*24))+8);
164   i6 = i6==(OOC_INT64)0;
165   if (i6) goto l42;
166   i6 = _check_pointer(i1, 7585);
167   i8 = OOC_ARRAY_LENGTH(i6, 0);
168   i6 = (OOC_INT64)*(OOC_INT64*)((i6+((_check_index(i4, i8, OOC_UINT32, 7585))*24))+8);
169   i8 = (OOC_INT64)ADT_Dictionary__dummy;
170   i6 = i6==i8;
171   if (i6) goto l37;
172   i6 = _check_pointer(i1, 7689);
173   i8 = OOC_ARRAY_LENGTH(i6, 0);
174   i6 = *(OOC_INT32*)(i6+((_check_index(i4, i8, OOC_UINT32, 7689))*24));
175   i6 = i6==i3;
176   if (i6) goto l32;
177   i6=0u;
178   goto l34;
179 l32:
180   i6 = _check_pointer(i1, 7723);
181   i8 = OOC_ARRAY_LENGTH(i6, 0);
182   i6 = (OOC_INT64)*(OOC_INT64*)((i6+((_check_index(i4, i8, OOC_UINT32, 7723))*24))+8);
183   i6 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i7, 7712)))), Object__ObjectDesc_Equals)),Object__ObjectDesc_Equals)((Object__Object)i7, (Object__Object)i6);
184 
185 l34:
186   if (!i6) goto l47;
187   return i4;
188   goto l47;
189 l37:
190   i6 = freeslot;
191   i6 = i6<0;
192   if (!i6) goto l47;
193   freeslot = i4;
194   goto l47;
195 l42:
196   i6 = freeslot;
197   i8 = i6>=0;
198   if (i8) goto l45;
199   return i4;
200   goto l47;
201 l45:
202   return i6;
203 l47:
204   i5 = i5*2;
205   incr = i5;
206   i6 = *(OOC_INT32*)((_check_pointer(i0, 7810))+8);
207   i6 = i5>=i6;
208   if (!i6) goto l25_loop;
209   i6 = *(OOC_INT32*)((_check_pointer(i0, 7891))+12);
210   i5 = _type_cast_fast(OOC_INT32, OOC_UINT32, ((_type_cast_fast(OOC_UINT32, OOC_INT32, i5))^(_type_cast_fast(OOC_UINT32, OOC_INT32, i6))));
211   incr = i5;
212 
213   goto l25_loop;
214 l53:
215   ;
216 }
217 
ADT_Dictionary__DictionaryDesc_Insert(ADT_Dictionary__Dictionary dict,Object__Object key,OOC_INT32 hash,Object__Object value)218 void ADT_Dictionary__DictionaryDesc_Insert(ADT_Dictionary__Dictionary dict, Object__Object key, OOC_INT32 hash, Object__Object value) {
219   register OOC_INT64 i0,i1,i2,i3,i4,i5;
220   OOC_INT32 i;
221 
222   i0 = hash;
223   i1 = (OOC_INT64)key;
224   i2 = (OOC_INT64)dict;
225   i3 = ADT_Dictionary__DictionaryDesc_InternalLookup((ADT_Dictionary__Dictionary)i2, (Object__Object)i1, i0);
226   i = i3;
227   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 8283))+16);
228   i4 = _check_pointer(i4, 8290);
229   i5 = OOC_ARRAY_LENGTH(i4, 0);
230   i4 = (OOC_INT64)*(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 8290))*24))+8);
231   i4 = ADT_Dictionary__IsSet((Object__Object)i4);
232   if (i4) goto l6;
233   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 8450))+16);
234   i4 = _check_pointer(i4, 8457);
235   i5 = OOC_ARRAY_LENGTH(i4, 0);
236   i4 = (OOC_INT64)*(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 8457))*24))+8);
237   i4 = i4==(OOC_INT64)0;
238   if (!i4) goto l5;
239   i4 = *(OOC_INT32*)(_check_pointer(i2, 8495));
240   *(OOC_INT32*)(_check_pointer(i2, 8495)) = (i4+1);
241 l5:
242   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 8524))+16);
243   i4 = _check_pointer(i4, 8531);
244   i5 = OOC_ARRAY_LENGTH(i4, 0);
245   *(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 8531))*24))+8) = i1;
246   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 8558))+16);
247   i1 = _check_pointer(i1, 8565);
248   i4 = OOC_ARRAY_LENGTH(i1, 0);
249   *(OOC_INT32*)(i1+((_check_index(i3, i4, OOC_UINT32, 8565))*24)) = i0;
250   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 8594))+16);
251   i0 = _check_pointer(i0, 8601);
252   i1 = OOC_ARRAY_LENGTH(i0, 0);
253   i4 = (OOC_INT64)value;
254   *(OOC_INT64*)((i0+((_check_index(i3, i1, OOC_UINT32, 8601))*24))+16) = i4;
255   i0 = *(OOC_INT32*)((_check_pointer(i2, 8637))+4);
256   *(OOC_INT32*)((_check_pointer(i2, 8637))+4) = (i0+1);
257   goto l7;
258 l6:
259   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 8342))+16);
260   i0 = _check_pointer(i0, 8349);
261   i1 = OOC_ARRAY_LENGTH(i0, 0);
262   i2 = (OOC_INT64)value;
263   *(OOC_INT64*)((i0+((_check_index(i3, i1, OOC_UINT32, 8349))*24))+16) = i2;
264 l7:
265   return;
266   ;
267 }
268 
ADT_Dictionary__DictionaryDesc_Resize(ADT_Dictionary__Dictionary dict,OOC_INT32 minUsed)269 void ADT_Dictionary__DictionaryDesc_Resize(ADT_Dictionary__Dictionary dict, OOC_INT32 minUsed) {
270   register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8,i9;
271   OOC_INT32 oldSize;
272   ADT_Dictionary__Table oldTable;
273   OOC_INT32 i;
274   OOC_INT32 newSize;
275   OOC_INT32 newPoly;
276   ADT_Dictionary__Table newTable;
277 
278   i0 = (OOC_INT64)dict;
279   i1 = *(OOC_INT32*)((_check_pointer(i0, 9054))+8);
280   oldSize = i1;
281   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9082))+16);
282   oldTable = (ADT_Dictionary__Table)i2;
283   newSize = 4;
284   i3 = minUsed;
285   i4 = 4<=i3;
286   if (i4) goto l3;
287   i3=0;i4=4;
288   goto l9;
289 l3:
290   i4=0;i5=4;
291 l4_loop:
292   i5 = _ash(i5,1);
293   newSize = i5;
294   i4 = i4+1;
295   i6 = i5<=i3;
296   if (i6) goto l4_loop;
297 l8:
298   i3=i4;i4=i5;
299 l9:
300   i3 = *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(i3, 29, OOC_UINT32, 9235))*4);
301   newPoly = i3;
302   i5 = (OOC_INT64)RT0__NewObject(_td_ADT_Dictionary__Table.baseTypes[0], i4);
303   newTable = (ADT_Dictionary__Table)i5;
304   i = 0;
305   i6 = 0<i4;
306   if (!i6) goto l17;
307   i6=0;
308 l12_loop:
309   i7 = _check_pointer(i5, 9374);
310   i8 = OOC_ARRAY_LENGTH(i7, 0);
311   *(OOC_INT64*)((i7+((_check_index(i6, i8, OOC_UINT32, 9374))*24))+8) = (OOC_INT64)0;
312   i7 = _check_pointer(i5, 9405);
313   i8 = OOC_ARRAY_LENGTH(i7, 0);
314   *(OOC_INT64*)((i7+((_check_index(i6, i8, OOC_UINT32, 9405))*24))+16) = (OOC_INT64)0;
315   i7 = _check_pointer(i5, 9438);
316   i8 = OOC_ARRAY_LENGTH(i7, 0);
317   *(OOC_INT32*)(i7+((_check_index(i6, i8, OOC_UINT32, 9438))*24)) = 0;
318   i6 = i6+1;
319   i = i6;
320   i7 = i6<i4;
321   if (i7) goto l12_loop;
322 l17:
323   *(OOC_INT32*)((_check_pointer(i0, 9470))+8) = i4;
324   *(OOC_INT32*)((_check_pointer(i0, 9497))+12) = i3;
325   *(OOC_INT64*)((_check_pointer(i0, 9524))+16) = i5;
326   *(OOC_INT32*)(_check_pointer(i0, 9553)) = 0;
327   *(OOC_INT32*)((_check_pointer(i0, 9574))+4) = 0;
328   i = 0;
329   i3 = 0<i1;
330   if (!i3) goto l28;
331   i3=0;
332 l20_loop:
333   i4 = _check_pointer(i2, 9647);
334   i5 = OOC_ARRAY_LENGTH(i4, 0);
335   i4 = (OOC_INT64)*(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 9647))*24))+8);
336   i4 = ADT_Dictionary__IsSet((Object__Object)i4);
337   if (!i4) goto l23;
338   i4 = _check_pointer(i2, 9727);
339   i5 = OOC_ARRAY_LENGTH(i4, 0);
340   i6 = _check_pointer(i2, 9708);
341   i7 = OOC_ARRAY_LENGTH(i6, 0);
342   i8 = _check_pointer(i2, 9690);
343   i9 = OOC_ARRAY_LENGTH(i8, 0);
344   i4 = (OOC_INT64)*(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 9727))*24))+16);
345   i5 = (OOC_INT64)*(OOC_INT64*)((i8+((_check_index(i3, i9, OOC_UINT32, 9690))*24))+8);
346   i6 = *(OOC_INT32*)(i6+((_check_index(i3, i7, OOC_UINT32, 9708))*24));
347   ADT_Dictionary__DictionaryDesc_Insert((ADT_Dictionary__Dictionary)i0, (Object__Object)i5, i6, (Object__Object)i4);
348   i4 = _check_pointer(i2, 9756);
349   i5 = OOC_ARRAY_LENGTH(i4, 0);
350   *(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 9756))*24))+8) = (OOC_INT64)0;
351   i4 = _check_pointer(i2, 9817);
352   i5 = OOC_ARRAY_LENGTH(i4, 0);
353   *(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 9817))*24))+16) = (OOC_INT64)0;
354 l23:
355   i3 = i3+1;
356   i = i3;
357   i4 = i3<i1;
358   if (i4) goto l20_loop;
359 l28:
360   return;
361   ;
362 }
363 
ADT_Dictionary__DictionaryDesc_HasKey(ADT_Dictionary__Dictionary dict,Object__Object key)364 OOC_CHAR8 ADT_Dictionary__DictionaryDesc_HasKey(ADT_Dictionary__Dictionary dict, Object__Object key) {
365   register OOC_INT64 i0,i1,i2;
366   OOC_INT32 index;
367 
368   i0 = (OOC_INT64)dict;
369   i1 = *(OOC_INT32*)((_check_pointer(i0, 10117))+4);
370   i1 = i1==0;
371   if (i1) goto l3;
372   i1 = (OOC_INT64)key;
373   i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10205)))), Object__ObjectDesc_HashCode)),Object__ObjectDesc_HashCode)((Object__Object)i1);
374   i1 = ADT_Dictionary__DictionaryDesc_InternalLookup((ADT_Dictionary__Dictionary)i0, (Object__Object)i1, i2);
375   index = i1;
376   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10243))+16);
377   i0 = _check_pointer(i0, 10250);
378   i2 = OOC_ARRAY_LENGTH(i0, 0);
379   i0 = (OOC_INT64)*(OOC_INT64*)((i0+((_check_index(i1, i2, OOC_UINT32, 10250))*24))+8);
380   i0 = ADT_Dictionary__IsSet((Object__Object)i0);
381   return i0;
382   goto l4;
383 l3:
384   return 0u;
385 l4:
386   _failed_function(9905); return 0;
387   ;
388 }
389 
ADT_Dictionary__DictionaryDesc_Size(ADT_Dictionary__Dictionary dict)390 OOC_INT32 ADT_Dictionary__DictionaryDesc_Size(ADT_Dictionary__Dictionary dict) {
391   register OOC_INT64 i0;
392 
393   i0 = (OOC_INT64)dict;
394   i0 = *(OOC_INT32*)((_check_pointer(i0, 10418))+4);
395   return i0;
396   ;
397 }
398 
ADT_Dictionary__DictionaryDesc_Get(ADT_Dictionary__Dictionary dict,Object__Object key)399 Object__Object ADT_Dictionary__DictionaryDesc_Get(ADT_Dictionary__Dictionary dict, Object__Object key) {
400   register OOC_INT64 i0,i1,i2,i3;
401   OOC_INT32 i;
402 
403   i0 = (OOC_INT64)key;
404   _assert((i0!=(OOC_INT64)0), 127, 10776);
405   i1 = (OOC_INT64)dict;
406   i2 = *(OOC_INT32*)((_check_pointer(i1, 10812))+4);
407   _assert((i2!=0), 127, 10800);
408   i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10862)))), Object__ObjectDesc_HashCode)),Object__ObjectDesc_HashCode)((Object__Object)i0);
409   i0 = ADT_Dictionary__DictionaryDesc_InternalLookup((ADT_Dictionary__Dictionary)i1, (Object__Object)i0, i2);
410   i = i0;
411   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10900))+16);
412   i2 = _check_pointer(i2, 10907);
413   i3 = OOC_ARRAY_LENGTH(i2, 0);
414   i2 = (OOC_INT64)*(OOC_INT64*)((i2+((_check_index(i0, i3, OOC_UINT32, 10907))*24))+8);
415   i2 = ADT_Dictionary__IsSet((Object__Object)i2);
416   _assert(i2, 127, 10881);
417   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10934))+16);
418   i1 = _check_pointer(i1, 10941);
419   i2 = OOC_ARRAY_LENGTH(i1, 0);
420   i0 = (OOC_INT64)*(OOC_INT64*)((i1+((_check_index(i0, i2, OOC_UINT32, 10941))*24))+16);
421   return (Object__Object)i0;
422   ;
423 }
424 
ADT_Dictionary__DictionaryDesc_Lookup(ADT_Dictionary__Dictionary dict,Object__Object key,Object__Object * value)425 OOC_CHAR8 ADT_Dictionary__DictionaryDesc_Lookup(ADT_Dictionary__Dictionary dict, Object__Object key, Object__Object *value) {
426   register OOC_INT64 i0,i1,i2,i3;
427   OOC_INT32 i;
428 
429   i0 = (OOC_INT64)key;
430   _assert((i0!=(OOC_INT64)0), 127, 11371);
431   i1 = (OOC_INT64)dict;
432   i2 = *(OOC_INT32*)((_check_pointer(i1, 11402))+4);
433   i2 = i2==0;
434   if (i2) goto l7;
435   i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 11485)))), Object__ObjectDesc_HashCode)),Object__ObjectDesc_HashCode)((Object__Object)i0);
436   i0 = ADT_Dictionary__DictionaryDesc_InternalLookup((ADT_Dictionary__Dictionary)i1, (Object__Object)i0, i2);
437   i = i0;
438   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 11520))+16);
439   i2 = _check_pointer(i2, 11527);
440   i3 = OOC_ARRAY_LENGTH(i2, 0);
441   i2 = (OOC_INT64)*(OOC_INT64*)((i2+((_check_index(i0, i3, OOC_UINT32, 11527))*24))+8);
442   i2 = ADT_Dictionary__IsSet((Object__Object)i2);
443   if (i2) goto l5;
444   return 0u;
445   goto l8;
446 l5:
447   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 11563))+16);
448   i1 = _check_pointer(i1, 11570);
449   i2 = OOC_ARRAY_LENGTH(i1, 0);
450   i0 = (OOC_INT64)*(OOC_INT64*)((i1+((_check_index(i0, i2, OOC_UINT32, 11570))*24))+16);
451   *value = (Object__Object)i0;
452   return 1u;
453   goto l8;
454 l7:
455   return 0u;
456 l8:
457   _failed_function(10999); return 0;
458   ;
459 }
460 
ADT_Dictionary__DictionaryDesc_Set(ADT_Dictionary__Dictionary dict,Object__Object key,Object__Object value)461 void ADT_Dictionary__DictionaryDesc_Set(ADT_Dictionary__Dictionary dict, Object__Object key, Object__Object value) {
462   register OOC_INT64 i0,i1,i2,i3;
463 
464   i0 = (OOC_INT64)key;
465   _assert((i0!=(OOC_INT64)0), 127, 12057);
466   i1 = (OOC_INT64)dict;
467   i2 = *(OOC_INT32*)(_check_pointer(i1, 12089));
468   i3 = *(OOC_INT32*)((_check_pointer(i1, 12105))+8);
469   i2 = (i2*3)>=(i3*2);
470   if (!i2) goto l4;
471   i2 = *(OOC_INT32*)((_check_pointer(i1, 12142))+4);
472   ADT_Dictionary__DictionaryDesc_Resize((ADT_Dictionary__Dictionary)i1, (i2*2));
473 l4:
474   i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12185)))), Object__ObjectDesc_HashCode)),Object__ObjectDesc_HashCode)((Object__Object)i0);
475   i3 = (OOC_INT64)value;
476   ADT_Dictionary__DictionaryDesc_Insert((ADT_Dictionary__Dictionary)i1, (Object__Object)i0, i2, (Object__Object)i3);
477   return;
478   ;
479 }
480 
ADT_Dictionary__DictionaryDesc_Copy(ADT_Dictionary__Dictionary dict)481 ADT_Dictionary__Dictionary ADT_Dictionary__DictionaryDesc_Copy(ADT_Dictionary__Dictionary dict) {
482   register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8,i9;
483   ADT_Dictionary__Dictionary copy;
484   OOC_INT32 i;
485 
486   i0 = (OOC_INT64)RT0__NewObject(_td__qtd5.baseTypes[0]);
487   ADT_Dictionary__DictionaryDesc_INIT((ADT_Dictionary__Dictionary)i0);
488   copy = (ADT_Dictionary__Dictionary)i0;
489   i1 = (OOC_INT64)dict;
490   i2 = *(OOC_INT32*)((_check_pointer(i1, 12505))+4);
491   i2 = i2>0;
492   if (!i2) goto l14;
493   i2 = *(OOC_INT32*)((_check_pointer(i1, 12545))+4);
494   ADT_Dictionary__DictionaryDesc_Resize((ADT_Dictionary__Dictionary)i0, ((i2*3)>>1));
495   i2 = *(OOC_INT32*)((_check_pointer(i1, 12587))+8);
496   i = 0;
497   i3 = 0<i2;
498   if (!i3) goto l14;
499   i3=0;
500 l5_loop:
501   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 12621))+16);
502   i4 = _check_pointer(i4, 12628);
503   i5 = OOC_ARRAY_LENGTH(i4, 0);
504   i4 = (OOC_INT64)*(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 12628))*24))+8);
505   i4 = ADT_Dictionary__IsSet((Object__Object)i4);
506   if (!i4) goto l8;
507   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 12730))+16);
508   i4 = _check_pointer(i4, 12736);
509   i5 = OOC_ARRAY_LENGTH(i4, 0);
510   i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 12688))+16);
511   i6 = _check_pointer(i6, 12694);
512   i7 = OOC_ARRAY_LENGTH(i6, 0);
513   i8 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 12669))+16);
514   i8 = _check_pointer(i8, 12675);
515   i9 = OOC_ARRAY_LENGTH(i8, 0);
516   i4 = (OOC_INT64)*(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 12736))*24))+16);
517   i5 = (OOC_INT64)*(OOC_INT64*)((i8+((_check_index(i3, i9, OOC_UINT32, 12675))*24))+8);
518   i6 = *(OOC_INT32*)(i6+((_check_index(i3, i7, OOC_UINT32, 12694))*24));
519   ADT_Dictionary__DictionaryDesc_Insert((ADT_Dictionary__Dictionary)i0, (Object__Object)i5, i6, (Object__Object)i4);
520 l8:
521   i3 = i3+1;
522   i = i3;
523   i4 = i3<i2;
524   if (i4) goto l5_loop;
525 l14:
526   return (ADT_Dictionary__Dictionary)i0;
527   ;
528 }
529 
ADT_Dictionary__DictionaryDesc_Delete(ADT_Dictionary__Dictionary dict,Object__Object key)530 void ADT_Dictionary__DictionaryDesc_Delete(ADT_Dictionary__Dictionary dict, Object__Object key) {
531   register OOC_INT64 i0,i1,i2,i3,i4;
532   OOC_INT32 i;
533 
534   i0 = (OOC_INT64)key;
535   _assert((i0!=(OOC_INT64)0), 127, 13142);
536   i1 = (OOC_INT64)dict;
537   i2 = *(OOC_INT32*)((_check_pointer(i1, 13178))+4);
538   _assert((i2!=0), 127, 13166);
539   i2 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13228)))), Object__ObjectDesc_HashCode)),Object__ObjectDesc_HashCode)((Object__Object)i0);
540   i0 = ADT_Dictionary__DictionaryDesc_InternalLookup((ADT_Dictionary__Dictionary)i1, (Object__Object)i0, i2);
541   i = i0;
542   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 13266))+16);
543   i2 = _check_pointer(i2, 13273);
544   i3 = OOC_ARRAY_LENGTH(i2, 0);
545   i2 = (OOC_INT64)*(OOC_INT64*)((i2+((_check_index(i0, i3, OOC_UINT32, 13273))*24))+8);
546   i2 = ADT_Dictionary__IsSet((Object__Object)i2);
547   _assert(i2, 127, 13247);
548   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 13337))+16);
549   i2 = _check_pointer(i2, 13343);
550   i3 = OOC_ARRAY_LENGTH(i2, 0);
551   i4 = (OOC_INT64)ADT_Dictionary__dummy;
552   *(OOC_INT64*)((i2+((_check_index(i0, i3, OOC_UINT32, 13343))*24))+8) = ((OOC_INT64)_type_cast_fast(OOC_INT64, OOC_INT64, i4));
553   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 13379))+16);
554   i2 = _check_pointer(i2, 13385);
555   i3 = OOC_ARRAY_LENGTH(i2, 0);
556   *(OOC_INT64*)((i2+((_check_index(i0, i3, OOC_UINT32, 13385))*24))+16) = (OOC_INT64)0;
557   i0 = *(OOC_INT32*)((_check_pointer(i1, 13416))+4);
558   *(OOC_INT32*)((_check_pointer(i1, 13416))+4) = (i0-1);
559   return;
560   ;
561 }
562 
ADT_Dictionary__DictionaryDesc_Clear(ADT_Dictionary__Dictionary dict)563 void ADT_Dictionary__DictionaryDesc_Clear(ADT_Dictionary__Dictionary dict) {
564   register OOC_INT64 i0,i1,i2,i3,i4;
565   OOC_INT32 i;
566 
567   i0 = (OOC_INT64)dict;
568   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13584))+16);
569   i1 = i1!=(OOC_INT64)0;
570   if (!i1) goto l11;
571   i = 0;
572   i1 = *(OOC_INT32*)((_check_pointer(i0, 13628))+8);
573   i2 = 0<i1;
574   if (!i2) goto l10;
575   i2=0;
576 l5_loop:
577   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13691))+16);
578   i3 = _check_pointer(i3, 13698);
579   i4 = OOC_ARRAY_LENGTH(i3, 0);
580   *(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 13698))*24))+8) = (OOC_INT64)0;
581   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13727))+16);
582   i3 = _check_pointer(i3, 13734);
583   i4 = OOC_ARRAY_LENGTH(i3, 0);
584   *(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 13734))*24))+16) = (OOC_INT64)0;
585   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13765))+16);
586   i3 = _check_pointer(i3, 13772);
587   i4 = OOC_ARRAY_LENGTH(i3, 0);
588   *(OOC_INT32*)(i3+((_check_index(i2, i4, OOC_UINT32, 13772))*24)) = 0;
589   i2 = i2+1;
590   i = i2;
591   i3 = i2<i1;
592   if (i3) goto l5_loop;
593 l10:
594   ADT_Dictionary__DictionaryDesc_INIT((ADT_Dictionary__Dictionary)i0);
595 l11:
596   return;
597   ;
598 }
599 
ADT_Dictionary__DictionaryDesc_Keys(ADT_Dictionary__Dictionary dict)600 Object__ObjectArrayPtr ADT_Dictionary__DictionaryDesc_Keys(ADT_Dictionary__Dictionary dict) {
601   register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8;
602   Object__ObjectArrayPtr list;
603   OOC_INT32 j;
604   OOC_INT32 i;
605 
606   i0 = (OOC_INT64)dict;
607   i1 = *(OOC_INT32*)((_check_pointer(i0, 14112))+4);
608   i1 = (OOC_INT64)RT0__NewObject(_td_Object__ObjectArrayPtr.baseTypes[0], i1);
609   list = (Object__ObjectArrayPtr)i1;
610   j = 0;
611   i2 = *(OOC_INT32*)((_check_pointer(i0, 14155))+8);
612   i = 0;
613   i3 = 0<i2;
614   if (i3) goto l3;
615   i2=0;
616   goto l13;
617 l3:
618   i3=0;i4=0;
619 l4_loop:
620   i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14187))+16);
621   i5 = _check_pointer(i5, 14194);
622   i6 = OOC_ARRAY_LENGTH(i5, 0);
623   i5 = (OOC_INT64)*(OOC_INT64*)((i5+((_check_index(i3, i6, OOC_UINT32, 14194))*24))+8);
624   i5 = ADT_Dictionary__IsSet((Object__Object)i5);
625   if (!i5) goto l8;
626   i5 = _check_pointer(i1, 14221);
627   i6 = OOC_ARRAY_LENGTH(i5, 0);
628   i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14232))+16);
629   i7 = _check_pointer(i7, 14239);
630   i8 = OOC_ARRAY_LENGTH(i7, 0);
631   i7 = (OOC_INT64)*(OOC_INT64*)((i7+((_check_index(i3, i8, OOC_UINT32, 14239))*24))+8);
632   *(OOC_INT64*)(i5+(_check_index(i4, i6, OOC_UINT32, 14221))*8) = i7;
633   i4 = i4+1;
634   j = i4;
635 
636 l8:
637   i3 = i3+1;
638   i = i3;
639   i5 = i3<i2;
640   if (i5) goto l4_loop;
641 l12:
642   i2=i4;
643 l13:
644   i0 = *(OOC_INT32*)((_check_pointer(i0, 14304))+4);
645   _assert((i2==i0), 127, 14288);
646   return (Object__ObjectArrayPtr)i1;
647   ;
648 }
649 
ADT_Dictionary__DictionaryDesc_Values(ADT_Dictionary__Dictionary dict)650 Object__ObjectArrayPtr ADT_Dictionary__DictionaryDesc_Values(ADT_Dictionary__Dictionary dict) {
651   register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8;
652   Object__ObjectArrayPtr list;
653   OOC_INT32 j;
654   OOC_INT32 i;
655 
656   i0 = (OOC_INT64)dict;
657   i1 = *(OOC_INT32*)((_check_pointer(i0, 14620))+4);
658   i1 = (OOC_INT64)RT0__NewObject(_td_Object__ObjectArrayPtr.baseTypes[0], i1);
659   list = (Object__ObjectArrayPtr)i1;
660   j = 0;
661   i2 = *(OOC_INT32*)((_check_pointer(i0, 14663))+8);
662   i = 0;
663   i3 = 0<i2;
664   if (i3) goto l3;
665   i2=0;
666   goto l13;
667 l3:
668   i3=0;i4=0;
669 l4_loop:
670   i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14695))+16);
671   i5 = _check_pointer(i5, 14702);
672   i6 = OOC_ARRAY_LENGTH(i5, 0);
673   i5 = (OOC_INT64)*(OOC_INT64*)((i5+((_check_index(i3, i6, OOC_UINT32, 14702))*24))+8);
674   i5 = ADT_Dictionary__IsSet((Object__Object)i5);
675   if (!i5) goto l8;
676   i5 = _check_pointer(i1, 14729);
677   i6 = OOC_ARRAY_LENGTH(i5, 0);
678   i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 14740))+16);
679   i7 = _check_pointer(i7, 14747);
680   i8 = OOC_ARRAY_LENGTH(i7, 0);
681   i7 = (OOC_INT64)*(OOC_INT64*)((i7+((_check_index(i3, i8, OOC_UINT32, 14747))*24))+16);
682   *(OOC_INT64*)(i5+(_check_index(i4, i6, OOC_UINT32, 14729))*8) = i7;
683   i4 = i4+1;
684   j = i4;
685 
686 l8:
687   i3 = i3+1;
688   i = i3;
689   i5 = i3<i2;
690   if (i5) goto l4_loop;
691 l12:
692   i2=i4;
693 l13:
694   i0 = *(OOC_INT32*)((_check_pointer(i0, 14814))+4);
695   _assert((i2==i0), 127, 14798);
696   return (Object__ObjectArrayPtr)i1;
697   ;
698 }
699 
ADT_Dictionary__DictionaryDesc_Items(ADT_Dictionary__Dictionary dict)700 ADT_Dictionary__ItemArrayPtr ADT_Dictionary__DictionaryDesc_Items(ADT_Dictionary__Dictionary dict) {
701   register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8;
702   ADT_Dictionary__ItemArrayPtr list;
703   OOC_INT32 j;
704   OOC_INT32 i;
705 
706   i0 = (OOC_INT64)dict;
707   i1 = *(OOC_INT32*)((_check_pointer(i0, 15116))+4);
708   i1 = (OOC_INT64)RT0__NewObject(_td_ADT_Dictionary__ItemArrayPtr.baseTypes[0], i1);
709   list = (ADT_Dictionary__ItemArrayPtr)i1;
710   j = 0;
711   i2 = *(OOC_INT32*)((_check_pointer(i0, 15158))+8);
712   i = 0;
713   i3 = 0<i2;
714   if (i3) goto l3;
715   i2=0;
716   goto l13;
717 l3:
718   i3=0;i4=0;
719 l4_loop:
720   i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15189))+16);
721   i5 = _check_pointer(i5, 15195);
722   i6 = OOC_ARRAY_LENGTH(i5, 0);
723   i5 = (OOC_INT64)*(OOC_INT64*)((i5+((_check_index(i3, i6, OOC_UINT32, 15195))*24))+8);
724   i5 = ADT_Dictionary__IsSet((Object__Object)i5);
725   if (!i5) goto l8;
726   i5 = _check_pointer(i1, 15221);
727   i6 = OOC_ARRAY_LENGTH(i5, 0);
728   i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15236))+16);
729   i7 = _check_pointer(i7, 15242);
730   i8 = OOC_ARRAY_LENGTH(i7, 0);
731   i7 = (OOC_INT64)*(OOC_INT64*)((i7+((_check_index(i3, i8, OOC_UINT32, 15242))*24))+8);
732   *(OOC_INT64*)(i5+((_check_index(i4, i6, OOC_UINT32, 15221))*16)) = i7;
733   i5 = _check_pointer(i1, 15263);
734   i6 = OOC_ARRAY_LENGTH(i5, 0);
735   i7 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15280))+16);
736   i7 = _check_pointer(i7, 15286);
737   i8 = OOC_ARRAY_LENGTH(i7, 0);
738   i7 = (OOC_INT64)*(OOC_INT64*)((i7+((_check_index(i3, i8, OOC_UINT32, 15286))*24))+16);
739   *(OOC_INT64*)((i5+((_check_index(i4, i6, OOC_UINT32, 15263))*16))+8) = i7;
740   i4 = i4+1;
741   j = i4;
742 
743 l8:
744   i3 = i3+1;
745   i = i3;
746   i5 = i3<i2;
747   if (i5) goto l4_loop;
748 l12:
749   i2=i4;
750 l13:
751   i0 = *(OOC_INT32*)((_check_pointer(i0, 15352))+4);
752   _assert((i2==i0), 127, 15337);
753   return (ADT_Dictionary__ItemArrayPtr)i1;
754   ;
755 }
756 
ADT_Dictionary__DictionaryDesc_Equals(ADT_Dictionary__Dictionary dict,Object__Object obj)757 OOC_CHAR8 ADT_Dictionary__DictionaryDesc_Equals(ADT_Dictionary__Dictionary dict, Object__Object obj) {
758 
759   _assert(0u, 127, 15507);
760   _failed_function(15427);
761   ;
762 }
763 
ADT_Dictionary__DictionaryDesc_HashCode(ADT_Dictionary__Dictionary dict)764 OOC_INT32 ADT_Dictionary__DictionaryDesc_HashCode(ADT_Dictionary__Dictionary dict) {
765 
766   _assert(0u, 127, 15649);
767   _failed_function(15581);
768   ;
769 }
770 
ADT_Dictionary__DictionaryDesc_Store(ADT_Dictionary__Dictionary dict,ADT_Storable__Writer w)771 void ADT_Dictionary__DictionaryDesc_Store(ADT_Dictionary__Dictionary dict, ADT_Storable__Writer w) {
772   register OOC_INT64 i0,i1,i2,i3,i4,i5;
773   OOC_INT32 i;
774 
775   i0 = (OOC_INT64)dict;
776   i1 = (OOC_INT64)w;
777   i2 = *(OOC_INT32*)((_check_pointer(i0, 15821))+4);
778   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 15805)))), IO_BinaryRider__WriterDesc_WriteNum)),IO_BinaryRider__WriterDesc_WriteNum)((IO_BinaryRider__Writer)i1, i2);
779   i2 = *(OOC_INT32*)((_check_pointer(i0, 15842))+4);
780   i2 = i2!=0;
781   if (!i2) goto l14;
782   i2 = *(OOC_INT32*)((_check_pointer(i0, 15883))+8);
783   i = 0;
784   i3 = 0<i2;
785   if (!i3) goto l14;
786   i3=0;
787 l5_loop:
788   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15917))+16);
789   i4 = _check_pointer(i4, 15924);
790   i5 = OOC_ARRAY_LENGTH(i4, 0);
791   i4 = (OOC_INT64)*(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 15924))*24))+8);
792   i4 = ADT_Dictionary__IsSet((Object__Object)i4);
793   if (!i4) goto l8;
794   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15969))+16);
795   i4 = _check_pointer(i4, 15976);
796   i5 = OOC_ARRAY_LENGTH(i4, 0);
797   i4 = (OOC_INT64)*(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 15976))*24))+8);
798   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 15950)))), ADT_Storable__WriterDesc_WriteObject)),ADT_Storable__WriterDesc_WriteObject)((ADT_Storable__Writer)i1, (Object__Object)i4);
799   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16017))+16);
800   i4 = _check_pointer(i4, 16024);
801   i5 = OOC_ARRAY_LENGTH(i4, 0);
802   i4 = (OOC_INT64)*(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 16024))*24))+16);
803   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 15998)))), ADT_Storable__WriterDesc_WriteObject)),ADT_Storable__WriterDesc_WriteObject)((ADT_Storable__Writer)i1, (Object__Object)i4);
804 l8:
805   i3 = i3+1;
806   i = i3;
807   i4 = i3<i2;
808   if (i4) goto l5_loop;
809 l14:
810   return;
811   ;
812 }
813 
ADT_Dictionary__DictionaryDesc_Load(ADT_Dictionary__Dictionary dict,ADT_Storable__Reader r)814 void ADT_Dictionary__DictionaryDesc_Load(ADT_Dictionary__Dictionary dict, ADT_Storable__Reader r) {
815   register OOC_INT64 i0,i1,i2,i3,i4,i5,i6,i7,i8,i9;
816   OOC_INT32 i;
817   Object__Object obj;
818 
819   i0 = (OOC_INT64)dict;
820   ADT_Dictionary__DictionaryDesc_INIT((ADT_Dictionary__Dictionary)i0);
821   i1 = (OOC_INT64)r;
822   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 16236)))), IO_BinaryRider__ReaderDesc_ReadNum)),IO_BinaryRider__ReaderDesc_ReadNum)((IO_BinaryRider__Reader)i1, (void*)((_check_pointer(i0, 16251))+8));
823   i2 = *(OOC_INT32*)((_check_pointer(i0, 16272))+8);
824   i2 = i2!=0;
825   if (!i2) goto l11;
826   i2 = *(OOC_INT32*)((_check_pointer(i0, 16450))+8);
827   *(OOC_INT64*)((_check_pointer(i0, 16437))+16) = ((OOC_INT64)RT0__NewObject(_td_ADT_Dictionary__Table.baseTypes[0], i2));
828   i2 = *(OOC_INT32*)((_check_pointer(i0, 16483))+8);
829   i = 0;
830   i3 = 0<i2;
831   if (!i3) goto l10;
832   i3=0;
833 l5_loop:
834   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 16504)))), ADT_Storable__ReaderDesc_ReadObject)),ADT_Storable__ReaderDesc_ReadObject)((ADT_Storable__Reader)i1, (void*)(OOC_INT64)&obj);
835   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16536))+16);
836   i4 = _check_pointer(i4, 16542);
837   i5 = OOC_ARRAY_LENGTH(i4, 0);
838   i6 = (OOC_INT64)obj;
839   *(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 16542))*24))+8) = ((OOC_INT64)_type_cast_fast(OOC_INT64, OOC_INT64, i6));
840   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 16577)))), ADT_Storable__ReaderDesc_ReadObject)),ADT_Storable__ReaderDesc_ReadObject)((ADT_Storable__Reader)i1, (void*)(OOC_INT64)&obj);
841   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16609))+16);
842   i4 = _check_pointer(i4, 16615);
843   i5 = OOC_ARRAY_LENGTH(i4, 0);
844   i6 = (OOC_INT64)obj;
845   *(OOC_INT64*)((i4+((_check_index(i3, i5, OOC_UINT32, 16615))*24))+16) = ((OOC_INT64)_type_cast_fast(OOC_INT64, OOC_INT64, i6));
846   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16656))+16);
847   i4 = _check_pointer(i4, 16662);
848   i5 = OOC_ARRAY_LENGTH(i4, 0);
849   i6 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16678))+16);
850   i6 = _check_pointer(i6, 16684);
851   i7 = OOC_ARRAY_LENGTH(i6, 0);
852   i8 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16678))+16);
853   i8 = _check_pointer(i8, 16684);
854   i9 = OOC_ARRAY_LENGTH(i8, 0);
855   i8 = (OOC_INT64)*(OOC_INT64*)((i8+((_check_index(i3, i9, OOC_UINT32, 16684))*24))+8);
856   i6 = (OOC_INT64)*(OOC_INT64*)((i6+((_check_index(i3, i7, OOC_UINT32, 16684))*24))+8);
857   i6 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i8, 16691)))), Object__ObjectDesc_HashCode)),Object__ObjectDesc_HashCode)((Object__Object)i6);
858   *(OOC_INT32*)(i4+((_check_index(i3, i5, OOC_UINT32, 16662))*24)) = i6;
859   i3 = i3+1;
860   i = i3;
861   i4 = i3<i2;
862   if (i4) goto l5_loop;
863 l10:
864   i1 = *(OOC_INT32*)((_check_pointer(i0, 16737))+8);
865   ADT_Dictionary__DictionaryDesc_Resize((ADT_Dictionary__Dictionary)i0, ((i1*3)>>1));
866 l11:
867   return;
868   ;
869 }
870 
ADT_Dictionary__IterKeysDesc_INIT(ADT_Dictionary__IterKeys iter,ADT_Dictionary__Dictionary dict)871 void ADT_Dictionary__IterKeysDesc_INIT(ADT_Dictionary__IterKeys iter, ADT_Dictionary__Dictionary dict) {
872   register OOC_INT64 i0,i1;
873 
874   i0 = (OOC_INT64)iter;
875   i1 = (OOC_INT64)dict;
876   *(OOC_INT64*)(_check_pointer(i0, 16857)) = i1;
877   *(OOC_INT32*)((_check_pointer(i0, 16880))+8) = 0;
878   return;
879   ;
880 }
881 
ADT_Dictionary__DictionaryDesc_IterKeys(ADT_Dictionary__Dictionary dict)882 ADT_Dictionary__IterKeys ADT_Dictionary__DictionaryDesc_IterKeys(ADT_Dictionary__Dictionary dict) {
883   register OOC_INT64 i0,i1;
884 
885   i0 = (OOC_INT64)RT0__NewObject(_td__qtd7.baseTypes[0]);
886   i1 = (OOC_INT64)dict;
887   ADT_Dictionary__IterKeysDesc_INIT((ADT_Dictionary__IterKeys)i0, (ADT_Dictionary__Dictionary)i1);
888   return (ADT_Dictionary__IterKeys)i0;
889   ;
890 }
891 
ADT_Dictionary__IterKeysDesc_Next(ADT_Dictionary__IterKeys iter,Object__Object * key)892 OOC_CHAR8 ADT_Dictionary__IterKeysDesc_Next(ADT_Dictionary__IterKeys iter, Object__Object *key) {
893   register OOC_INT64 i0,i1,i2,i3,i4;
894   ADT_Dictionary__Dictionary d;
895   OOC_INT32 i;
896 
897   i0 = (OOC_INT64)iter;
898   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 17551));
899   d = (ADT_Dictionary__Dictionary)i1;
900   i2 = *(OOC_INT32*)((_check_pointer(i0, 17571))+8);
901   i = i2;
902   i3 = *(OOC_INT32*)((_check_pointer(i1, 17593))+8);
903   i3 = i2!=i3;
904   if (i3) goto l3;
905   i3=0u;
906   goto l5;
907 l3:
908   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 17610))+16);
909   i3 = _check_pointer(i3, 17616);
910   i4 = OOC_ARRAY_LENGTH(i3, 0);
911   i3 = (OOC_INT64)*(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 17616))*24))+8);
912   i3 = ADT_Dictionary__IsSet((Object__Object)i3);
913   i3 = !i3;
914 
915 l5:
916   if (!i3) goto l17;
917 l8_loop:
918   i2 = i2+1;
919   i = i2;
920   i3 = *(OOC_INT32*)((_check_pointer(i1, 17593))+8);
921   i3 = i2!=i3;
922   if (i3) goto l11;
923   i3=0u;
924   goto l13;
925 l11:
926   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 17610))+16);
927   i3 = _check_pointer(i3, 17616);
928   i4 = OOC_ARRAY_LENGTH(i3, 0);
929   i3 = (OOC_INT64)*(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 17616))*24))+8);
930   i3 = ADT_Dictionary__IsSet((Object__Object)i3);
931   i3 = !i3;
932 
933 l13:
934   if (i3) goto l8_loop;
935 l17:
936   i3 = *(OOC_INT32*)((_check_pointer(i1, 17664))+8);
937   i3 = i2==i3;
938   if (i3) goto l20;
939   *(OOC_INT32*)((_check_pointer(i0, 17736))+8) = (i2+1);
940   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 17763))+16);
941   i0 = _check_pointer(i0, 17769);
942   i1 = OOC_ARRAY_LENGTH(i0, 0);
943   i0 = (OOC_INT64)*(OOC_INT64*)((i0+((_check_index(i2, i1, OOC_UINT32, 17769))*24))+8);
944   *key = (Object__Object)i0;
945   return 1u;
946   goto l21;
947 l20:
948   *(OOC_INT32*)((_check_pointer(i0, 17686))+8) = i2;
949   return 0u;
950 l21:
951   _failed_function(17455); return 0;
952   ;
953 }
954 
ADT_Dictionary__IterValuesDesc_INIT(ADT_Dictionary__IterValues iter,ADT_Dictionary__Dictionary dict)955 void ADT_Dictionary__IterValuesDesc_INIT(ADT_Dictionary__IterValues iter, ADT_Dictionary__Dictionary dict) {
956   register OOC_INT64 i0,i1;
957 
958   i0 = (OOC_INT64)iter;
959   i1 = (OOC_INT64)dict;
960   *(OOC_INT64*)(_check_pointer(i0, 17904)) = i1;
961   *(OOC_INT32*)((_check_pointer(i0, 17927))+8) = 0;
962   return;
963   ;
964 }
965 
ADT_Dictionary__DictionaryDesc_IterValues(ADT_Dictionary__Dictionary dict)966 ADT_Dictionary__IterValues ADT_Dictionary__DictionaryDesc_IterValues(ADT_Dictionary__Dictionary dict) {
967   register OOC_INT64 i0,i1;
968 
969   i0 = (OOC_INT64)RT0__NewObject(_td__qtd9.baseTypes[0]);
970   i1 = (OOC_INT64)dict;
971   ADT_Dictionary__IterValuesDesc_INIT((ADT_Dictionary__IterValues)i0, (ADT_Dictionary__Dictionary)i1);
972   return (ADT_Dictionary__IterValues)i0;
973   ;
974 }
975 
ADT_Dictionary__IterValuesDesc_Next(ADT_Dictionary__IterValues iter,Object__Object * value)976 OOC_CHAR8 ADT_Dictionary__IterValuesDesc_Next(ADT_Dictionary__IterValues iter, Object__Object *value) {
977   register OOC_INT64 i0,i1,i2,i3,i4;
978   ADT_Dictionary__Dictionary d;
979   OOC_INT32 i;
980 
981   i0 = (OOC_INT64)iter;
982   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 18616));
983   d = (ADT_Dictionary__Dictionary)i1;
984   i2 = *(OOC_INT32*)((_check_pointer(i0, 18636))+8);
985   i = i2;
986   i3 = *(OOC_INT32*)((_check_pointer(i1, 18658))+8);
987   i3 = i2!=i3;
988   if (i3) goto l3;
989   i3=0u;
990   goto l5;
991 l3:
992   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 18675))+16);
993   i3 = _check_pointer(i3, 18681);
994   i4 = OOC_ARRAY_LENGTH(i3, 0);
995   i3 = (OOC_INT64)*(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 18681))*24))+8);
996   i3 = ADT_Dictionary__IsSet((Object__Object)i3);
997   i3 = !i3;
998 
999 l5:
1000   if (!i3) goto l17;
1001 l8_loop:
1002   i2 = i2+1;
1003   i = i2;
1004   i3 = *(OOC_INT32*)((_check_pointer(i1, 18658))+8);
1005   i3 = i2!=i3;
1006   if (i3) goto l11;
1007   i3=0u;
1008   goto l13;
1009 l11:
1010   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 18675))+16);
1011   i3 = _check_pointer(i3, 18681);
1012   i4 = OOC_ARRAY_LENGTH(i3, 0);
1013   i3 = (OOC_INT64)*(OOC_INT64*)((i3+((_check_index(i2, i4, OOC_UINT32, 18681))*24))+8);
1014   i3 = ADT_Dictionary__IsSet((Object__Object)i3);
1015   i3 = !i3;
1016 
1017 l13:
1018   if (i3) goto l8_loop;
1019 l17:
1020   i3 = *(OOC_INT32*)((_check_pointer(i1, 18729))+8);
1021   i3 = i2==i3;
1022   if (i3) goto l20;
1023   *(OOC_INT32*)((_check_pointer(i0, 18801))+8) = (i2+1);
1024   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 18830))+16);
1025   i0 = _check_pointer(i0, 18836);
1026   i1 = OOC_ARRAY_LENGTH(i0, 0);
1027   i0 = (OOC_INT64)*(OOC_INT64*)((i0+((_check_index(i2, i1, OOC_UINT32, 18836))*24))+16);
1028   *value = (Object__Object)i0;
1029   return 1u;
1030   goto l21;
1031 l20:
1032   *(OOC_INT32*)((_check_pointer(i0, 18751))+8) = i2;
1033   return 0u;
1034 l21:
1035   _failed_function(18518); return 0;
1036   ;
1037 }
1038 
ADT_Dictionary__DummyDesc_Destroy(ADT_Dictionary__Dummy dummy)1039 void ADT_Dictionary__DummyDesc_Destroy(ADT_Dictionary__Dummy dummy) {
1040 
1041   return;
1042   ;
1043 }
1044 
OOC_ADT_Dictionary_init(void)1045 void OOC_ADT_Dictionary_init(void) {
1046 
1047   ADT_Dictionary__dummy = (ADT_Dictionary__Dummy)((OOC_INT64)RT0__NewObject(_td_ADT_Dictionary__Dummy.baseTypes[0]));
1048   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(0, 29, OOC_UINT8, 18973))*4) = 7;
1049   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(1, 29, OOC_UINT8, 18994))*4) = 11;
1050   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(2, 29, OOC_UINT8, 19015))*4) = 19;
1051   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(3, 29, OOC_UINT8, 19037))*4) = 37;
1052   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(4, 29, OOC_UINT8, 19059))*4) = 67;
1053   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(5, 29, OOC_UINT8, 19081))*4) = 131;
1054   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(6, 29, OOC_UINT8, 19104))*4) = 285;
1055   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(7, 29, OOC_UINT8, 19128))*4) = 529;
1056   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(8, 29, OOC_UINT8, 19152))*4) = 1033;
1057   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(9, 29, OOC_UINT8, 19176))*4) = 2053;
1058   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(10, 29, OOC_UINT8, 19200))*4) = 4179;
1059   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(11, 29, OOC_UINT8, 19226))*4) = 8219;
1060   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(12, 29, OOC_UINT8, 19252))*4) = 16427;
1061   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(13, 29, OOC_UINT8, 19279))*4) = 32771;
1062   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(14, 29, OOC_UINT8, 19305))*4) = 65581;
1063   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(15, 29, OOC_UINT8, 19332))*4) = 131081;
1064   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(16, 29, OOC_UINT8, 19359))*4) = 262183;
1065   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(17, 29, OOC_UINT8, 19387))*4) = 524327;
1066   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(18, 29, OOC_UINT8, 19415))*4) = 1048585;
1067   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(19, 29, OOC_UINT8, 19443))*4) = 2097157;
1068   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(20, 29, OOC_UINT8, 19471))*4) = 4194307;
1069   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(21, 29, OOC_UINT8, 19499))*4) = 8388641;
1070   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(22, 29, OOC_UINT8, 19528))*4) = 16777243;
1071   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(23, 29, OOC_UINT8, 19558))*4) = 33554441;
1072   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(24, 29, OOC_UINT8, 19587))*4) = 67108935;
1073   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(25, 29, OOC_UINT8, 19617))*4) = 134217767;
1074   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(26, 29, OOC_UINT8, 19648))*4) = 268435465;
1075   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(27, 29, OOC_UINT8, 19678))*4) = 536870917;
1076   *(OOC_INT32*)((OOC_INT64)ADT_Dictionary__polys+(_check_index(28, 29, OOC_UINT8, 19708))*4) = 1073741907;
1077   return;
1078   ;
1079 }
1080 
OOC_ADT_Dictionary_destroy(void)1081 void OOC_ADT_Dictionary_destroy(void) {
1082 }
1083 
1084 /* --- */
1085