1 #include <OOC/SSA.d>
2 #include <__oo2c.h>
3 #include <setjmp.h>
4 
OOC_SSA__InitNode(OOC_SSA__Node n)5 void OOC_SSA__InitNode(OOC_SSA__Node n) {
6 
7   return;
8   ;
9 }
10 
OOC_SSA__SetUse(OOC_SSA__Result arg,OOC_SSA__Opnd opnd)11 static void OOC_SSA__SetUse(OOC_SSA__Result arg, OOC_SSA__Opnd opnd) {
12   register OOC_INT64 i0,i1,i2;
13 
14   i0 = (OOC_INT64)opnd;
15   i1 = (OOC_INT64)arg;
16   *(OOC_INT64*)(_check_pointer(i0, 8896)) = i1;
17   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8934))+24);
18   *(OOC_INT64*)((_check_pointer(i0, 8918))+32) = i2;
19   *(OOC_INT64*)((_check_pointer(i1, 8952))+24) = i0;
20   return;
21   ;
22 }
23 
OOC_SSA__DeleteUse(OOC_SSA__Opnd opnd)24 static void OOC_SSA__DeleteUse(OOC_SSA__Opnd opnd) {
25   register OOC_INT64 i0,i1,i2;
26   OOC_SSA__Opnd prev;
27 
28   i0 = (OOC_INT64)opnd;
29   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9121));
30   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9126))+24);
31   i1 = i1==i0;
32   if (i1) goto l12;
33   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9218));
34   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9223))+24);
35   prev = (OOC_SSA__Opnd)i1;
36   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9251))+32);
37   i2 = i2!=i0;
38   if (!i2) goto l11;
39 l6_loop:
40   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9292))+32);
41   prev = (OOC_SSA__Opnd)i1;
42   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9251))+32);
43   i2 = i2!=i0;
44   if (i2) goto l6_loop;
45 l11:
46   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9340))+32);
47   *(OOC_INT64*)((_check_pointer(i1, 9323))+32) = i2;
48   goto l13;
49 l12:
50   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9159));
51   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9181))+32);
52   *(OOC_INT64*)((_check_pointer(i1, 9164))+24) = i2;
53 l13:
54   *(OOC_INT64*)((_check_pointer(i0, 9367))+32) = 0;
55   *(OOC_INT64*)(_check_pointer(i0, 9393)) = 0;
56   return;
57   ;
58 }
59 
OOC_SSA__InitOpnd(OOC_SSA__Opnd opnd,OOC_SSA__Result arg,OOC_INT8 _class)60 static void OOC_SSA__InitOpnd(OOC_SSA__Opnd opnd, OOC_SSA__Result arg, OOC_INT8 _class) {
61   register OOC_INT64 i0,i1,i2;
62 
63   i0 = (OOC_INT64)opnd;
64   OOC_SSA__InitNode((OOC_SSA__Node)i0);
65   i1 = (OOC_INT64)arg;
66   *(OOC_INT64*)(_check_pointer(i0, 9596)) = i1;
67   *(OOC_INT64*)((_check_pointer(i0, 9618))+32) = 0;
68   *(OOC_INT64*)((_check_pointer(i0, 9644))+16) = 0;
69   *(OOC_INT64*)((_check_pointer(i0, 9671))+24) = 0;
70   i2 = _class;
71   *(OOC_INT8*)((_check_pointer(i0, 9695))+8) = i2;
72   OOC_SSA__SetUse((OOC_SSA__Result)i1, (OOC_SSA__Opnd)i0);
73   return;
74   ;
75 }
76 
OOC_SSA__NewOpnd(OOC_SSA__Result arg,OOC_INT8 _class)77 static OOC_SSA__Opnd OOC_SSA__NewOpnd(OOC_SSA__Result arg, OOC_INT8 _class) {
78   register OOC_INT64 i0,i1,i2;
79 
80   i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Opnd.baseTypes[0]);
81   i1 = _class;
82   i2 = (OOC_INT64)arg;
83   OOC_SSA__InitOpnd((OOC_SSA__Opnd)i0, (OOC_SSA__Result)i2, i1);
84   return (OOC_SSA__Opnd)i0;
85   ;
86 }
87 
OOC_SSA__InitTypedOpnd(OOC_SSA__TypedOpnd opnd,OOC_SSA__Result arg,OOC_INT8 _class,OOC_SymbolTable__Type type,OOC_CHAR8 passByReference)88 static void OOC_SSA__InitTypedOpnd(OOC_SSA__TypedOpnd opnd, OOC_SSA__Result arg, OOC_INT8 _class, OOC_SymbolTable__Type type, OOC_CHAR8 passByReference) {
89   register OOC_INT64 i0,i1,i2;
90 
91   i0 = _class;
92   i1 = (OOC_INT64)arg;
93   i2 = (OOC_INT64)opnd;
94   OOC_SSA__InitOpnd((OOC_SSA__Opnd)i2, (OOC_SSA__Result)i1, i0);
95   i0 = (OOC_INT64)type;
96   *(OOC_INT64*)((_check_pointer(i2, 10240))+40) = i0;
97   i0 = passByReference;
98   *(OOC_UINT8*)((_check_pointer(i2, 10264))+48) = i0;
99   return;
100   ;
101 }
102 
OOC_SSA__NewTypedOpnd(OOC_SSA__Result arg,OOC_INT8 _class,OOC_SymbolTable__Type type,OOC_CHAR8 passByReference)103 static OOC_SSA__Opnd OOC_SSA__NewTypedOpnd(OOC_SSA__Result arg, OOC_INT8 _class, OOC_SymbolTable__Type type, OOC_CHAR8 passByReference) {
104   register OOC_INT64 i0,i1,i2,i3,i4;
105 
106   i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__TypedOpnd.baseTypes[0]);
107   i1 = passByReference;
108   i2 = (OOC_INT64)type;
109   i3 = _class;
110   i4 = (OOC_INT64)arg;
111   OOC_SSA__InitTypedOpnd((OOC_SSA__TypedOpnd)i0, (OOC_SSA__Result)i4, i3, (OOC_SymbolTable__Type)i2, i1);
112   return (OOC_SSA__Opnd)i0;
113   ;
114 }
115 
OOC_SSA__OpndDesc_DeleteOpnd(OOC_SSA__Opnd opnd)116 void OOC_SSA__OpndDesc_DeleteOpnd(OOC_SSA__Opnd opnd) {
117   register OOC_INT64 i0,i1,i2;
118   OOC_SSA__Opnd prev;
119 
120   i0 = (OOC_INT64)opnd;
121   OOC_SSA__DeleteUse((OOC_SSA__Opnd)i0);
122   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10811))+24);
123   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10818))+48);
124   i1 = i1==i0;
125   if (i1) goto l12;
126   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10915))+24);
127   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10922))+48);
128   prev = (OOC_SSA__Opnd)i1;
129   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10951))+16);
130   i2 = i2!=i0;
131   if (!i2) goto l11;
132 l6_loop:
133   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10993))+16);
134   prev = (OOC_SSA__Opnd)i1;
135   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10951))+16);
136   i2 = i2!=i0;
137   if (i2) goto l6_loop;
138 l11:
139   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11043))+16);
140   *(OOC_INT64*)((_check_pointer(i1, 11025))+16) = i2;
141   goto l13;
142 l12:
143   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10852))+24);
144   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10877))+16);
145   *(OOC_INT64*)((_check_pointer(i1, 10859))+48) = i2;
146 l13:
147   *(OOC_INT64*)((_check_pointer(i0, 11071))+16) = (OOC_INT64)0;
148   *(OOC_INT64*)((_check_pointer(i0, 11098))+24) = (OOC_INT64)0;
149   return;
150   ;
151 }
152 
OOC_SSA__OpndDesc_ReplaceArg(OOC_SSA__Opnd opnd,OOC_SSA__Result arg)153 void OOC_SSA__OpndDesc_ReplaceArg(OOC_SSA__Opnd opnd, OOC_SSA__Result arg) {
154   register OOC_INT64 i0,i1;
155 
156   i0 = (OOC_INT64)opnd;
157   OOC_SSA__DeleteUse((OOC_SSA__Opnd)i0);
158   i1 = (OOC_INT64)arg;
159   OOC_SSA__SetUse((OOC_SSA__Result)i1, (OOC_SSA__Opnd)i0);
160   return;
161   ;
162 }
163 
OOC_SSA__OpndDesc_OpndIndex(OOC_SSA__Opnd opnd)164 OOC_INT32 OOC_SSA__OpndDesc_OpndIndex(OOC_SSA__Opnd opnd) {
165   register OOC_INT64 i0,i1,i2,i3;
166   OOC_INT32 i;
167   OOC_SSA__Opnd ptr;
168 
169   i = 0;
170   i0 = (OOC_INT64)opnd;
171   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11974))+24);
172   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 11981))+48);
173   ptr = (OOC_SSA__Opnd)i1;
174   i2 = i1!=i0;
175   if (i2) goto l3;
176   i0=0;
177   goto l9;
178 l3:
179   i2=i1;i1=0;
180 l4_loop:
181   i1 = i1+1;
182   i = i1;
183   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 12050))+16);
184   ptr = (OOC_SSA__Opnd)i2;
185   i3 = i2!=i0;
186   if (i3) goto l4_loop;
187 l8:
188   i0=i1;
189 l9:
190   return i0;
191   ;
192 }
193 
OOC_SSA__OpndDesc_GetIntConst(OOC_SSA__Opnd opnd)194 OOC_INT32 OOC_SSA__OpndDesc_GetIntConst(OOC_SSA__Opnd opnd) {
195   register OOC_INT64 i0;
196 
197   i0 = (OOC_INT64)opnd;
198   i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 12247));
199   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12253)))), &_td_OOC_SSA__ConstDesc, 12253)), 12259))+80);
200   i0 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12274)))), &_td_Object_BigInt__BigIntDesc, 12274)));
201   return i0;
202   ;
203 }
204 
OOC_SSA__OpndDesc_IsScheduleOpnd(OOC_SSA__Opnd opnd)205 OOC_CHAR8 OOC_SSA__OpndDesc_IsScheduleOpnd(OOC_SSA__Opnd opnd) {
206   register OOC_INT64 i0;
207 
208   i0 = (OOC_INT64)opnd;
209   i0 = *(OOC_INT8*)((_check_pointer(i0, 12388))+8);
210   switch (i0) {
211   case 17:
212   case 18:
213   case 20:
214     return 1u;
215     goto l4;
216   default:
217     return 0u;
218     goto l4;
219   }
220 l4:
221   _failed_function(12339); return 0;
222   ;
223 }
224 
OOC_SSA__OpndDesc_IsValueOpnd(OOC_SSA__Opnd opnd)225 OOC_CHAR8 OOC_SSA__OpndDesc_IsValueOpnd(OOC_SSA__Opnd opnd) {
226   register OOC_INT64 i0;
227 
228   i0 = (OOC_INT64)opnd;
229   i0 = *(OOC_INT8*)((_check_pointer(i0, 12919))+8);
230   switch (i0) {
231   case 18:
232   case 20:
233   case 5:
234   case 7:
235     return 0u;
236     goto l4;
237   default:
238     return 1u;
239     goto l4;
240   }
241 l4:
242   _failed_function(12601); return 0;
243   ;
244 }
245 
OOC_SSA__OpndDesc_IsValueOpndHere(OOC_SSA__Opnd opnd)246 OOC_CHAR8 OOC_SSA__OpndDesc_IsValueOpndHere(OOC_SSA__Opnd opnd) {
247   register OOC_INT64 i0,i1,i2;
248   OOC_SSA__Instr instr;
249 
250   i0 = (OOC_INT64)opnd;
251   i1 = OOC_SSA__OpndDesc_IsValueOpnd((OOC_SSA__Opnd)i0);
252   if (i1) goto l3;
253   return 0u;
254   goto l8;
255 l3:
256   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13890))+24);
257   instr = (OOC_SSA__Instr)i1;
258   i2 = *(OOC_INT8*)((_check_pointer(i1, 14207))+72);
259   i2 = i2!=5;
260   if (i2) goto l6;
261   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 14242))+48);
262   i0 = i1!=i0;
263 
264   goto l7;
265 l6:
266   i0=1u;
267 l7:
268   return i0;
269 l8:
270   _failed_function(13153); return 0;
271   ;
272 }
273 
OOC_SSA__InitResult(OOC_SSA__Result res,OOC_SSA__Instr instr,OOC_INT8 _class,OOC_INT8 subclass)274 static void OOC_SSA__InitResult(OOC_SSA__Result res, OOC_SSA__Instr instr, OOC_INT8 _class, OOC_INT8 subclass) {
275   register OOC_INT64 i0,i1;
276 
277   i0 = (OOC_INT64)res;
278   OOC_SSA__InitNode((OOC_SSA__Node)i0);
279   *(OOC_INT64*)(_check_pointer(i0, 14593)) = 0;
280   i1 = (OOC_INT64)instr;
281   *(OOC_INT64*)((_check_pointer(i0, 14621))+16) = i1;
282   i1 = _class;
283   *(OOC_INT8*)((_check_pointer(i0, 14646))+8) = i1;
284   i1 = subclass;
285   *(OOC_INT8*)((_check_pointer(i0, 14671))+9) = i1;
286   *(OOC_INT64*)((_check_pointer(i0, 14702))+32) = 0;
287   *(OOC_INT32*)((_check_pointer(i0, 14724))+40) = (-1);
288   *(OOC_INT64*)((_check_pointer(i0, 14755))+24) = 0;
289   return;
290   ;
291 }
292 
OOC_SSA__NewResult(OOC_SSA__Instr instr,OOC_INT8 _class,OOC_INT8 subclass)293 OOC_SSA__Result OOC_SSA__NewResult(OOC_SSA__Instr instr, OOC_INT8 _class, OOC_INT8 subclass) {
294   register OOC_INT64 i0,i1,i2,i3;
295 
296   i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Result.baseTypes[0]);
297   i1 = subclass;
298   i2 = _class;
299   i3 = (OOC_INT64)instr;
300   OOC_SSA__InitResult((OOC_SSA__Result)i0, (OOC_SSA__Instr)i3, i2, i1);
301   return (OOC_SSA__Result)i0;
302   ;
303 }
304 
OOC_SSA__ResultDesc_DeleteResult(OOC_SSA__Result res)305 void OOC_SSA__ResultDesc_DeleteResult(OOC_SSA__Result res) {
306   register OOC_INT64 i0,i1,i2;
307   OOC_SSA__Result prev;
308 
309   i0 = (OOC_INT64)res;
310   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15600))+16);
311   prev = (OOC_SSA__Result)i1;
312   i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 15624));
313   i2 = i2!=i0;
314   if (!i2) goto l9;
315 l4_loop:
316   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 15665));
317   prev = (OOC_SSA__Result)i1;
318   i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 15624));
319   i2 = i2!=i0;
320   if (i2) goto l4_loop;
321 l9:
322   i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 15714));
323   *(OOC_INT64*)(_check_pointer(i1, 15695)) = i0;
324   return;
325   ;
326 }
327 
OOC_SSA__ResultDesc_ReplaceUses(OOC_SSA__Result res,OOC_SSA__Result with)328 void OOC_SSA__ResultDesc_ReplaceUses(OOC_SSA__Result res, OOC_SSA__Result with) {
329   register OOC_INT64 i0,i1,i2;
330   OOC_SSA__Opnd use;
331   OOC_SSA__Opnd nextUse;
332 
333   i0 = (OOC_INT64)res;
334   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15914))+24);
335   use = (OOC_SSA__Opnd)i0;
336   i1 = i0!=(OOC_INT64)0;
337   if (!i1) goto l8;
338   i1 = (OOC_INT64)with;
339 
340 l3_loop:
341   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15970))+32);
342   nextUse = (OOC_SSA__Opnd)i2;
343   OOC_SSA__DeleteUse((OOC_SSA__Opnd)i0);
344   OOC_SSA__SetUse((OOC_SSA__Result)i1, (OOC_SSA__Opnd)i0);
345   use = (OOC_SSA__Opnd)i2;
346   i0 = i2!=(OOC_INT64)0;
347   if (!i0) goto l8;
348   i0=i2;
349   goto l3_loop;
350 l8:
351   return;
352   ;
353 }
354 
OOC_SSA__ResultDesc_ResultIndex(OOC_SSA__Result result)355 OOC_INT32 OOC_SSA__ResultDesc_ResultIndex(OOC_SSA__Result result) {
356   register OOC_INT64 i0,i1,i2,i3;
357   OOC_INT32 i;
358   OOC_SSA__Result ptr;
359 
360   i = 0;
361   i0 = (OOC_INT64)result;
362   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16488))+16);
363   ptr = (OOC_SSA__Result)i1;
364   i2 = i1!=i0;
365   if (i2) goto l3;
366   i0=0;
367   goto l9;
368 l3:
369   i2=i1;i1=0;
370 l4_loop:
371   i1 = i1+1;
372   i = i1;
373   i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 16556));
374   ptr = (OOC_SSA__Result)i2;
375   i3 = i2!=i0;
376   if (i3) goto l4_loop;
377 l8:
378   i0=i1;
379 l9:
380   return i0;
381   ;
382 }
383 
OOC_SSA__ResultDesc_CalledProc(OOC_SSA__Result calledAdr)384 OOC_SymbolTable__ProcDecl OOC_SSA__ResultDesc_CalledProc(OOC_SSA__Result calledAdr) {
385   register OOC_INT64 i0,i1;
386 
387   i0 = (OOC_INT64)calledAdr;
388   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16858))+16);
389   i1 = *(OOC_INT8*)((_check_pointer(i1, 16864))+72);
390   i1 = i1==3;
391   if (i1) goto l7;
392   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16973))+16);
393   i1 = *(OOC_INT8*)((_check_pointer(i1, 16979))+72);
394   i1 = i1==1;
395   if (i1) goto l5;
396   return (OOC_SymbolTable__ProcDecl)(OOC_INT64)0;
397   goto l8;
398 l5:
399   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17032))+16);
400   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17039)))), &_td_OOC_SSA__DeclRefDesc, 17039)), 17047))+80);
401   return (OOC_SymbolTable__ProcDecl)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17057)))), &_td_OOC_SymbolTable__ProcDeclDesc, 17057));
402   goto l8;
403 l7:
404   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16917))+16);
405   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 16924)))), &_td_OOC_SSA__AddressDesc, 16924)), 16932))+80);
406   return (OOC_SymbolTable__ProcDecl)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 16942)))), &_td_OOC_SymbolTable__ProcDeclDesc, 16942));
407 l8:
408   _failed_function(16647); return 0;
409   ;
410 }
411 
OOC_SSA__ResultDesc_IsBooleanConst(OOC_SSA__Result result,OOC_CHAR8 value)412 OOC_CHAR8 OOC_SSA__ResultDesc_IsBooleanConst(OOC_SSA__Result result, OOC_CHAR8 value) {
413   register OOC_INT64 i0,i1,i2;
414 
415   i0 = (OOC_INT64)result;
416   _assert((OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17476)))), &_td_OOC_SSA__ConstDesc)), 127, 17461);
417   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17506)))), &_td_OOC_SSA__ConstDesc, 17506)), 17512))+80);
418   _assert((OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 17519)))), &_td_Object_BigInt__BigIntDesc)), 127, 17491);
419   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17557)))), &_td_OOC_SSA__ConstDesc, 17557)), 17563))+80);
420   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17557)))), &_td_OOC_SSA__ConstDesc, 17557)), 17563))+80);
421   i2 = (OOC_INT64)Object_BigInt__zero;
422   i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 17569)))), Object__ObjectDesc_Equals)),Object__ObjectDesc_Equals)((Object__Object)i0, (Object__Object)i2);
423   i1 = value;
424   return (i0!=i1);
425   ;
426 }
427 
OOC_SSA__ResultDesc_LogId(OOC_SSA__Result result,const OOC_CHAR8 msg__ref[],OOC_LEN msg_0d)428 void OOC_SSA__ResultDesc_LogId(OOC_SSA__Result result, const OOC_CHAR8 msg__ref[], OOC_LEN msg_0d) {
429   register OOC_INT64 i0,i1;
430   OOC_ALLOCATE_VPAR(msg,OOC_CHAR8 ,msg_0d)
431   OOC_INT32 i;
432 
433   OOC_INITIALIZE_VPAR(msg__ref,msg,OOC_CHAR8 ,msg_0d)
434   i0 = (OOC_INT64)Log__writer;
435   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17722)))), TextRider__WriterDesc_WriteString)),TextRider__WriterDesc_WriteString)((TextRider__Writer)i0, (void*)(OOC_INT64)msg, msg_0d);
436   i0 = (OOC_INT64)Log__writer;
437   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17757)))), TextRider__WriterDesc_WriteString)),TextRider__WriterDesc_WriteString)((TextRider__Writer)i0, (OOC_CHAR8*)": ", 3);
438   i0 = (OOC_INT64)Log__writer;
439   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17825)))), TextRider__WriterDesc_WriteString)),TextRider__WriterDesc_WriteString)((TextRider__Writer)i0, (OOC_CHAR8*)"???", 4);
440   i0 = (OOC_INT64)result;
441   i0 = OOC_SSA__ResultDesc_ResultIndex((OOC_SSA__Result)i0);
442   i = i0;
443   i1 = i0!=0;
444   if (!i1) goto l4;
445   i1 = (OOC_INT64)Log__writer;
446   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18000)))), TextRider__WriterDesc_WriteChar)),TextRider__WriterDesc_WriteChar)((TextRider__Writer)i1, 46u);
447   i1 = (OOC_INT64)Log__writer;
448   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18035)))), TextRider__WriterDesc_WriteLInt)),TextRider__WriterDesc_WriteLInt)((TextRider__Writer)i1, i0, 0);
449 l4:
450   i0 = (OOC_INT64)Log__writer;
451   OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 18078)))), TextRider__WriterDesc_WriteLn)),TextRider__WriterDesc_WriteLn)((TextRider__Writer)i0);
452   return;
453   ;
454 }
455 
OOC_SSA__InitInstr(OOC_SSA__Instr instr,OOC_INT8 opcode,OOC_INT8 subclass)456 static void OOC_SSA__InitInstr(OOC_SSA__Instr instr, OOC_INT8 opcode, OOC_INT8 subclass) {
457   register OOC_INT64 i0,i1,i2;
458 
459   i0 = subclass;
460   i1 = (OOC_INT64)instr;
461   OOC_SSA__InitResult((OOC_SSA__Result)i1, (OOC_SSA__Instr)i1, (-1), i0);
462   *(OOC_INT64*)((_check_pointer(i1, 18347))+48) = (OOC_INT64)0;
463   *(OOC_INT64*)((_check_pointer(i1, 18375))+56) = (OOC_INT64)0;
464   *(OOC_INT64*)((_check_pointer(i1, 18404))+64) = (OOC_INT64)0;
465   i2 = opcode;
466   *(OOC_INT8*)((_check_pointer(i1, 18433))+72) = i2;
467   *(OOC_INT8*)((_check_pointer(i1, 18462))+9) = i0;
468   *(OOC_INT32*)((_check_pointer(i1, 18495))+76) = (-1);
469   return;
470   ;
471 }
472 
OOC_SSA__InstrDesc_SetSubclass(OOC_SSA__Instr instr,OOC_INT8 subclass)473 void OOC_SSA__InstrDesc_SetSubclass(OOC_SSA__Instr instr, OOC_INT8 subclass) {
474   register OOC_INT64 i0,i1;
475 
476   i0 = (OOC_INT64)instr;
477   i1 = subclass;
478   *(OOC_INT8*)((_check_pointer(i0, 18680))+9) = i1;
479   return;
480   ;
481 }
482 
OOC_SSA__InstrDesc_SetPos(OOC_SSA__Instr instr,OOC_Scanner_SymList__Symbol sym)483 void OOC_SSA__InstrDesc_SetPos(OOC_SSA__Instr instr, OOC_Scanner_SymList__Symbol sym) {
484   register OOC_INT64 i0,i1;
485 
486   i0 = (OOC_INT64)instr;
487   i1 = (OOC_INT64)sym;
488   i1 = *(OOC_INT32*)((_check_pointer(i1, 18804))+28);
489   *(OOC_INT32*)((_check_pointer(i0, 18792))+76) = i1;
490   return;
491   ;
492 }
493 
OOC_SSA__AddOpnd(OOC_SSA__Instr instr,OOC_SSA__Opnd opnd)494 static void OOC_SSA__AddOpnd(OOC_SSA__Instr instr, OOC_SSA__Opnd opnd) {
495   register OOC_INT64 i0,i1,i2;
496   OOC_SSA__Opnd prev;
497 
498   i0 = (OOC_INT64)opnd;
499   i1 = (OOC_INT64)instr;
500   *(OOC_INT64*)((_check_pointer(i0, 19106))+24) = i1;
501   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19137))+48);
502   i2 = i2==(OOC_INT64)0;
503   if (i2) goto l12;
504   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19218))+48);
505   prev = (OOC_SSA__Opnd)i1;
506   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19247))+16);
507   i2 = i2!=(OOC_INT64)0;
508   if (!i2) goto l11;
509 l6_loop:
510   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19288))+16);
511   prev = (OOC_SSA__Opnd)i1;
512   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19247))+16);
513   i2 = i2!=(OOC_INT64)0;
514   if (i2) goto l6_loop;
515 l11:
516   *(OOC_INT64*)((_check_pointer(i1, 19320))+16) = i0;
517   goto l13;
518 l12:
519   *(OOC_INT64*)((_check_pointer(i1, 19171))+48) = i0;
520 l13:
521   return;
522   ;
523 }
524 
OOC_SSA__InstrDesc_AddOpnd(OOC_SSA__Instr instr,OOC_SSA__Result arg,OOC_INT8 _class)525 void OOC_SSA__InstrDesc_AddOpnd(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class) {
526   register OOC_INT64 i0,i1;
527 
528   i0 = _class;
529   i1 = (OOC_INT64)arg;
530   i0 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i1, i0);
531   i1 = (OOC_INT64)instr;
532   OOC_SSA__AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Opnd)i0);
533   return;
534   ;
535 }
536 
OOC_SSA__InstrDesc_AddOpndFct(OOC_SSA__Instr instr,OOC_SSA__Result arg,OOC_INT8 _class)537 OOC_SSA__Opnd OOC_SSA__InstrDesc_AddOpndFct(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class) {
538   register OOC_INT64 i0,i1;
539 
540   i0 = _class;
541   i1 = (OOC_INT64)arg;
542   i0 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i1, i0);
543   i1 = (OOC_INT64)instr;
544   OOC_SSA__AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Opnd)i0);
545   return (OOC_SSA__Opnd)i0;
546   ;
547 }
548 
OOC_SSA__InstrDesc_AddUniqueOpnd(OOC_SSA__Instr instr,OOC_SSA__Result arg,OOC_INT8 _class)549 void OOC_SSA__InstrDesc_AddUniqueOpnd(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class) {
550   register OOC_INT64 i0,i1,i2,i3;
551   OOC_SSA__Opnd opnd;
552   OOC_SSA__Opnd prev;
553 
554   i0 = (OOC_INT64)instr;
555   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20289))+48);
556   i1 = i1==(OOC_INT64)0;
557   if (i1) goto l23;
558   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20435))+48);
559   prev = (OOC_SSA__Opnd)i1;
560   i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 20464));
561   i3 = (OOC_INT64)arg;
562   i2 = i2!=i3;
563   if (i2) goto l5;
564   i2=0u;
565   goto l7;
566 l5:
567   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 20484))+16);
568   i2 = i2!=(OOC_INT64)0;
569 
570 l7:
571   if (!i2) goto l19;
572 l10_loop:
573   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 20525))+16);
574   prev = (OOC_SSA__Opnd)i1;
575   i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 20464));
576   i2 = i2!=i3;
577   if (i2) goto l13;
578   i2=0u;
579   goto l15;
580 l13:
581   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 20484))+16);
582   i2 = i2!=(OOC_INT64)0;
583 
584 l15:
585   if (i2) goto l10_loop;
586 l19:
587   i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 20561));
588   i2 = i2!=i3;
589   if (!i2) goto l24;
590   i2 = _class;
591   i2 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i3, i2);
592   opnd = (OOC_SSA__Opnd)i2;
593   *(OOC_INT64*)((_check_pointer(i2, 20629))+24) = i0;
594   *(OOC_INT64*)((_check_pointer(i1, 20659))+16) = i2;
595   goto l24;
596 l23:
597   i1 = _class;
598   i2 = (OOC_INT64)arg;
599   i1 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i2, i1);
600   opnd = (OOC_SSA__Opnd)i1;
601   *(OOC_INT64*)((_check_pointer(i1, 20358))+24) = i0;
602   *(OOC_INT64*)((_check_pointer(i0, 20387))+48) = i1;
603 l24:
604   return;
605   ;
606 }
607 
OOC_SSA__InstrDesc_AddTypedOpnd(OOC_SSA__Instr instr,OOC_SSA__Result arg,OOC_INT8 _class,OOC_SymbolTable__Type type,OOC_CHAR8 passByReference)608 void OOC_SSA__InstrDesc_AddTypedOpnd(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class, OOC_SymbolTable__Type type, OOC_CHAR8 passByReference) {
609   register OOC_INT64 i0,i1,i2,i3;
610 
611   i0 = passByReference;
612   i1 = (OOC_INT64)type;
613   i2 = _class;
614   i3 = (OOC_INT64)arg;
615   i0 = (OOC_INT64)OOC_SSA__NewTypedOpnd((OOC_SSA__Result)i3, i2, (OOC_SymbolTable__Type)i1, i0);
616   i1 = (OOC_INT64)instr;
617   OOC_SSA__AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Opnd)i0);
618   return;
619   ;
620 }
621 
OOC_SSA__InstrDesc_AddResultSubclass(OOC_SSA__Instr instr,OOC_INT8 _class,OOC_INT8 subclass)622 OOC_SSA__Result OOC_SSA__InstrDesc_AddResultSubclass(OOC_SSA__Instr instr, OOC_INT8 _class, OOC_INT8 subclass) {
623   register OOC_INT64 i0,i1,i2;
624   OOC_SSA__Result res;
625   OOC_SSA__Result prev;
626 
627   i0 = subclass;
628   i1 = _class;
629   i2 = (OOC_INT64)instr;
630   i0 = (OOC_INT64)OOC_SSA__NewResult((OOC_SSA__Instr)i2, i1, i0);
631   res = (OOC_SSA__Result)i0;
632   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 21511));
633   i1 = i1==0;
634   if (i1) goto l12;
635   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 21595));
636   prev = (OOC_SSA__Result)i1;
637   i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 21626));
638   i2 = i2!=0;
639   if (!i2) goto l11;
640 l6_loop:
641   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 21669));
642   prev = (OOC_SSA__Result)i1;
643   i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 21626));
644   i2 = i2!=0;
645   if (i2) goto l6_loop;
646 l11:
647   *(OOC_INT64*)(_check_pointer(i1, 21703)) = i0;
648   goto l13;
649 l12:
650   *(OOC_INT64*)(_check_pointer(i2, 21547)) = i0;
651 l13:
652   return (OOC_SSA__Result)i0;
653   ;
654 }
655 
OOC_SSA__InstrDesc_AddResult(OOC_SSA__Instr instr,OOC_INT8 _class)656 OOC_SSA__Result OOC_SSA__InstrDesc_AddResult(OOC_SSA__Instr instr, OOC_INT8 _class) {
657   register OOC_INT64 i0,i1;
658 
659   i0 = _class;
660   i1 = (OOC_INT64)instr;
661   i0 = (OOC_INT64)OOC_SSA__InstrDesc_AddResultSubclass((OOC_SSA__Instr)i1, i0, 0);
662   return (OOC_SSA__Result)i0;
663   ;
664 }
665 
OOC_SSA__InstrDesc_SizeOpndList(OOC_SSA__Instr instr)666 OOC_INT32 OOC_SSA__InstrDesc_SizeOpndList(OOC_SSA__Instr instr) {
667   register OOC_INT64 i0,i1,i2;
668   OOC_INT32 num;
669   OOC_SSA__Opnd opnd;
670 
671   num = 0;
672   i0 = (OOC_INT64)instr;
673   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 22264))+48);
674   opnd = (OOC_SSA__Opnd)i0;
675   i1 = i0!=(OOC_INT64)0;
676   if (i1) goto l3;
677   i0=0;
678   goto l9;
679 l3:
680   i1=i0;i0=0;
681 l4_loop:
682   i0 = i0+1;
683   num = i0;
684   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 22337))+16);
685   opnd = (OOC_SSA__Opnd)i1;
686   i2 = i1!=(OOC_INT64)0;
687   if (i2) goto l4_loop;
688 l9:
689   return i0;
690   ;
691 }
692 
OOC_SSA__InstrDesc_CountOpndClass(OOC_SSA__Instr instr,OOC_INT8 _class)693 OOC_INT32 OOC_SSA__InstrDesc_CountOpndClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
694   register OOC_INT64 i0,i1,i2,i3;
695   OOC_INT32 num;
696   OOC_SSA__Opnd opnd;
697 
698   num = 0;
699   i0 = (OOC_INT64)instr;
700   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 22640))+48);
701   opnd = (OOC_SSA__Opnd)i0;
702   i1 = i0!=(OOC_INT64)0;
703   if (i1) goto l3;
704   i0=0;
705   goto l13;
706 l3:
707   i1 = _class;
708   i2=0;
709 l4_loop:
710   i3 = *(OOC_INT8*)((_check_pointer(i0, 22692))+8);
711   i3 = i3==i1;
712   if (!i3) goto l8;
713   i2 = i2+1;
714   num = i2;
715 
716 l8:
717   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 22762))+16);
718   opnd = (OOC_SSA__Opnd)i0;
719   i3 = i0!=(OOC_INT64)0;
720   if (i3) goto l4_loop;
721 l12:
722   i0=i2;
723 l13:
724   return i0;
725   ;
726 }
727 
OOC_SSA__InstrDesc_SizeResultList(OOC_SSA__Instr instr)728 OOC_INT32 OOC_SSA__InstrDesc_SizeResultList(OOC_SSA__Instr instr) {
729   register OOC_INT64 i0,i1,i2;
730   OOC_INT32 num;
731   OOC_SSA__Result res;
732 
733   i0 = (OOC_INT64)instr;
734   res = (OOC_SSA__Result)i0;
735   i1 = i0!=(OOC_INT64)0;
736   if (i1) goto l3;
737   i0=0;
738   goto l9;
739 l3:
740   i1=i0;i0=0;
741 l4_loop:
742   i0 = i0+1;
743   num = i0;
744   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 23173));
745   res = (OOC_SSA__Result)i1;
746   i2 = i1!=(OOC_INT64)0;
747   if (i2) goto l4_loop;
748 l9:
749   return i0;
750   ;
751 }
752 
OOC_SSA__InstrDesc_NthOpnd(OOC_SSA__Instr instr,OOC_INT32 nth)753 OOC_SSA__Opnd OOC_SSA__InstrDesc_NthOpnd(OOC_SSA__Instr instr, OOC_INT32 nth) {
754   register OOC_INT64 i0,i1,i2;
755   OOC_SSA__Opnd opnd;
756 
757   i0 = (OOC_INT64)instr;
758   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23487))+48);
759   opnd = (OOC_SSA__Opnd)i0;
760   i1 = nth;
761   i2 = i1!=0;
762   if (!i2) goto l9;
763 l4_loop:
764   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23540))+16);
765   opnd = (OOC_SSA__Opnd)i0;
766   i1 = i1-1;
767   nth = i1;
768   i2 = i1!=0;
769   if (i2) goto l4_loop;
770 l9:
771   return (OOC_SSA__Opnd)i0;
772   ;
773 }
774 
OOC_SSA__InstrDesc_NthArg(OOC_SSA__Instr instr,OOC_INT32 nth)775 OOC_SSA__Result OOC_SSA__InstrDesc_NthArg(OOC_SSA__Instr instr, OOC_INT32 nth) {
776   register OOC_INT64 i0,i1,i2;
777   OOC_SSA__Opnd opnd;
778 
779   i0 = (OOC_INT64)instr;
780   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23877))+48);
781   opnd = (OOC_SSA__Opnd)i0;
782   i1 = nth;
783   i2 = i1!=0;
784   if (!i2) goto l9;
785 l4_loop:
786   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23930))+16);
787   opnd = (OOC_SSA__Opnd)i0;
788   i1 = i1-1;
789   nth = i1;
790   i2 = i1!=0;
791   if (i2) goto l4_loop;
792 l9:
793   i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 23982));
794   return (OOC_SSA__Result)i0;
795   ;
796 }
797 
OOC_SSA__InstrDesc_LastOpnd(OOC_SSA__Instr instr)798 OOC_SSA__Opnd OOC_SSA__InstrDesc_LastOpnd(OOC_SSA__Instr instr) {
799   register OOC_INT64 i0,i1;
800   OOC_SSA__Opnd opnd;
801 
802   i0 = (OOC_INT64)instr;
803   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24215))+48);
804   opnd = (OOC_SSA__Opnd)i0;
805   i1 = i0!=(OOC_INT64)0;
806   if (!i1) goto l13;
807   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24269))+16);
808   i1 = i1!=(OOC_INT64)0;
809   if (!i1) goto l13;
810 l7_loop:
811   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24310))+16);
812   opnd = (OOC_SSA__Opnd)i0;
813   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24269))+16);
814   i1 = i1!=(OOC_INT64)0;
815   if (i1) goto l7_loop;
816 l13:
817   return (OOC_SSA__Opnd)i0;
818   ;
819 }
820 
OOC_SSA__InstrDesc_GetOpndClass(OOC_SSA__Instr instr,OOC_INT8 _class)821 OOC_SSA__Opnd OOC_SSA__InstrDesc_GetOpndClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
822   register OOC_INT64 i0,i1,i2;
823   OOC_SSA__Opnd opnd;
824 
825   i0 = (OOC_INT64)instr;
826   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24647))+48);
827   opnd = (OOC_SSA__Opnd)i0;
828   i1 = i0!=(OOC_INT64)0;
829   if (i1) goto l3;
830   i1=0u;
831   goto l5;
832 l3:
833   i1 = *(OOC_INT8*)((_check_pointer(i0, 24689))+8);
834   i2 = _class;
835   i1 = i1!=i2;
836 
837 l5:
838   if (!i1) goto l17;
839   i1 = _class;
840 
841 l8_loop:
842   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24727))+16);
843   opnd = (OOC_SSA__Opnd)i0;
844   i2 = i0!=(OOC_INT64)0;
845   if (i2) goto l11;
846   i2=0u;
847   goto l13;
848 l11:
849   i2 = *(OOC_INT8*)((_check_pointer(i0, 24689))+8);
850   i2 = i2!=i1;
851 
852 l13:
853   if (i2) goto l8_loop;
854 l17:
855   return (OOC_SSA__Opnd)i0;
856   ;
857 }
858 
OOC_SSA__InstrDesc_GetArgClass(OOC_SSA__Instr instr,OOC_INT8 _class)859 OOC_SSA__Result OOC_SSA__InstrDesc_GetArgClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
860   register OOC_INT64 i0,i1,i2;
861   OOC_SSA__Opnd opnd;
862 
863   i0 = (OOC_INT64)instr;
864   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 25072))+48);
865   opnd = (OOC_SSA__Opnd)i0;
866   i1 = i0!=(OOC_INT64)0;
867   if (i1) goto l3;
868   i1=0u;
869   goto l5;
870 l3:
871   i1 = *(OOC_INT8*)((_check_pointer(i0, 25114))+8);
872   i2 = _class;
873   i1 = i1!=i2;
874 
875 l5:
876   if (!i1) goto l17;
877   i1 = _class;
878 
879 l8_loop:
880   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 25152))+16);
881   opnd = (OOC_SSA__Opnd)i0;
882   i2 = i0!=(OOC_INT64)0;
883   if (i2) goto l11;
884   i2=0u;
885   goto l13;
886 l11:
887   i2 = *(OOC_INT8*)((_check_pointer(i0, 25114))+8);
888   i2 = i2!=i1;
889 
890 l13:
891   if (i2) goto l8_loop;
892 l17:
893   i1 = i0==(OOC_INT64)0;
894   if (i1) goto l20;
895   i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 25241));
896   return (OOC_SSA__Result)i0;
897   goto l21;
898 l20:
899   return (OOC_SSA__Result)(OOC_INT64)0;
900 l21:
901   _failed_function(24810); return 0;
902   ;
903 }
904 
OOC_SSA__InstrDesc_GetArgStore(OOC_SSA__Instr instr)905 OOC_SSA__Result OOC_SSA__InstrDesc_GetArgStore(OOC_SSA__Instr instr) {
906   register OOC_INT64 i0;
907 
908   i0 = (OOC_INT64)instr;
909   i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetArgClass((OOC_SSA__Instr)i0, 2);
910   return (OOC_SSA__Result)i0;
911   ;
912 }
913 
OOC_SSA__InstrDesc_NthResult(OOC_SSA__Instr instr,OOC_INT32 nth)914 OOC_SSA__Result OOC_SSA__InstrDesc_NthResult(OOC_SSA__Instr instr, OOC_INT32 nth) {
915   register OOC_INT64 i0,i1,i2;
916   OOC_SSA__Result res;
917 
918   i0 = (OOC_INT64)instr;
919   res = (OOC_SSA__Result)i0;
920   i1 = nth;
921   i2 = i1!=0;
922   if (!i2) goto l9;
923 
924 l4_loop:
925   i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 25818));
926   res = (OOC_SSA__Result)i0;
927   i1 = i1-1;
928   nth = i1;
929   i2 = i1!=0;
930   if (i2) goto l4_loop;
931 l9:
932   return (OOC_SSA__Result)i0;
933   ;
934 }
935 
OOC_SSA__InstrDesc_GetResultClass(OOC_SSA__Instr instr,OOC_INT8 _class)936 OOC_SSA__Result OOC_SSA__InstrDesc_GetResultClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
937   register OOC_INT64 i0,i1,i2;
938   OOC_SSA__Result result;
939 
940   i0 = (OOC_INT64)instr;
941   result = (OOC_SSA__Result)i0;
942   i1 = i0!=(OOC_INT64)0;
943   if (i1) goto l3;
944   i1=0u;
945   goto l5;
946 l3:
947   i1 = *(OOC_INT8*)((_check_pointer(i0, 26218))+8);
948   i2 = _class;
949   i1 = i1!=i2;
950 
951 l5:
952   if (!i1) goto l17;
953   i1 = _class;
954 
955 l8_loop:
956   i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 26260));
957   result = (OOC_SSA__Result)i0;
958   i2 = i0!=(OOC_INT64)0;
959   if (i2) goto l11;
960   i2=0u;
961   goto l13;
962 l11:
963   i2 = *(OOC_INT8*)((_check_pointer(i0, 26218))+8);
964   i2 = i2!=i1;
965 
966 l13:
967   if (i2) goto l8_loop;
968 l17:
969   return (OOC_SSA__Result)i0;
970   ;
971 }
972 
OOC_SSA__InstrDesc_GetResultStore(OOC_SSA__Instr instr)973 OOC_SSA__Result OOC_SSA__InstrDesc_GetResultStore(OOC_SSA__Instr instr) {
974   register OOC_INT64 i0,i1;
975   OOC_SSA__Result result;
976 
977   i0 = (OOC_INT64)instr;
978   result = (OOC_SSA__Result)i0;
979   i1 = i0!=(OOC_INT64)0;
980   if (i1) goto l3;
981   i1=0u;
982   goto l5;
983 l3:
984   i1 = *(OOC_INT8*)((_check_pointer(i0, 26512))+8);
985   i1 = i1!=2;
986 
987 l5:
988   if (!i1) goto l17;
989 l8_loop:
990   i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 26566));
991   result = (OOC_SSA__Result)i0;
992   i1 = i0!=(OOC_INT64)0;
993   if (i1) goto l11;
994   i1=0u;
995   goto l13;
996 l11:
997   i1 = *(OOC_INT8*)((_check_pointer(i0, 26512))+8);
998   i1 = i1!=2;
999 
1000 l13:
1001   if (i1) goto l8_loop;
1002 l17:
1003   return (OOC_SSA__Result)i0;
1004   ;
1005 }
1006 
OOC_SSA__InstrDesc_GetOpcodeName(OOC_SSA__Instr instr,OOC_CHAR8 name[],OOC_LEN name_0d)1007 void OOC_SSA__InstrDesc_GetOpcodeName(OOC_SSA__Instr instr, OOC_CHAR8 name[], OOC_LEN name_0d) {
1008   register OOC_INT64 i0,i1;
1009 
1010   i0 = (OOC_INT64)instr;
1011   i1 = *(OOC_INT8*)((_check_pointer(i0, 26924))+9);
1012   i0 = *(OOC_INT8*)((_check_pointer(i0, 26909))+72);
1013   OOC_SSA_Opcode__GetName(i0, i1, (void*)(OOC_INT64)name, name_0d);
1014   return;
1015   ;
1016 }
1017 
OOC_SSA__InstrDesc_GetResultType(OOC_SSA__Instr instr)1018 OOC_INT8 OOC_SSA__InstrDesc_GetResultType(OOC_SSA__Instr instr) {
1019   register OOC_INT64 i0,i1;
1020 
1021   i0 = (OOC_INT64)instr;
1022   i1 = *(OOC_INT8*)((_check_pointer(i0, 27048))+72);
1023   switch (i1) {
1024   case 13:
1025     return 0;
1026     goto l4;
1027   default:
1028     i0 = *(OOC_INT8*)((_check_pointer(i0, 27297))+9);
1029     return i0;
1030     goto l4;
1031   }
1032 l4:
1033   _failed_function(26990); return 0;
1034   ;
1035 }
1036 
OOC_SSA__InstrDesc_GetLoopEnd(OOC_SSA__Instr instr)1037 OOC_SSA__Instr OOC_SSA__InstrDesc_GetLoopEnd(OOC_SSA__Instr instr) {
1038   register OOC_INT64 i0,i1;
1039   OOC_SSA__Opnd use;
1040   OOC_SSA__Result res;
1041 
1042   i0 = (OOC_INT64)instr;
1043   i1 = *(OOC_INT8*)((_check_pointer(i0, 27577))+72);
1044   switch (i1) {
1045   case 10:
1046     i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27631))+24);
1047     use = (OOC_SSA__Opnd)i0;
1048     goto l5;
1049   case 9:
1050     i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetResultStore((OOC_SSA__Instr)i0);
1051     res = (OOC_SSA__Result)i0;
1052     i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27715))+24);
1053     use = (OOC_SSA__Opnd)i0;
1054     goto l5;
1055   default:
1056     _failed_case(i1, 27567);
1057     goto l5;
1058   }
1059 l5:
1060   i0 = (OOC_INT64)use;
1061   i1 = i0!=(OOC_INT64)0;
1062   if (i1) goto l8;
1063   i0=0u;
1064   goto l10;
1065 l8:
1066   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27763))+24);
1067   i0 = *(OOC_INT8*)((_check_pointer(i0, 27770))+72);
1068   i0 = i0!=11;
1069 
1070 l10:
1071   if (!i0) goto l21;
1072 l12_loop:
1073   i0 = (OOC_INT64)use;
1074   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27816))+32);
1075   use = (OOC_SSA__Opnd)i0;
1076   i1 = i0!=(OOC_INT64)0;
1077   if (i1) goto l15;
1078   i0=0u;
1079   goto l17;
1080 l15:
1081   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27763))+24);
1082   i0 = *(OOC_INT8*)((_check_pointer(i0, 27770))+72);
1083   i0 = i0!=11;
1084 
1085 l17:
1086   if (i0) goto l12_loop;
1087 l21:
1088   i0 = (OOC_INT64)use;
1089   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27850))+24);
1090   return (OOC_SSA__Instr)i0;
1091   ;
1092 }
1093 
OOC_SSA__InstrDesc_GetBackwardFeed(OOC_SSA__Instr instr)1094 OOC_SSA__Result OOC_SSA__InstrDesc_GetBackwardFeed(OOC_SSA__Instr instr) {
1095   register OOC_INT64 i0,i1;
1096 
1097   i0 = (OOC_INT64)instr;
1098   i1 = *(OOC_INT8*)((_check_pointer(i0, 28132))+72);
1099   i1 = i1==10;
1100   if (!i1) goto l4;
1101   i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetLoopEnd((OOC_SSA__Instr)i0);
1102   instr = (OOC_SSA__Instr)i0;
1103 
1104 l4:
1105   i1 = *(OOC_INT8*)((_check_pointer(i0, 28228))+72);
1106   _assert((i1==11), 127, 28215);
1107   i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetArgClass((OOC_SSA__Instr)i0, 13);
1108   return (OOC_SSA__Result)i0;
1109   ;
1110 }
1111 
OOC_SSA__InstrDesc_GetLoopStart(OOC_SSA__Instr instr)1112 OOC_SSA__Instr OOC_SSA__InstrDesc_GetLoopStart(OOC_SSA__Instr instr) {
1113   register OOC_INT64 i0,i1;
1114 
1115   i0 = (OOC_INT64)instr;
1116   i1 = *(OOC_INT8*)((_check_pointer(i0, 28519))+72);
1117   _assert((i1==11), 127, 28506);
1118   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 28563))+48);
1119   i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 28573));
1120   return (OOC_SSA__Instr)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 28579)))), &_td_OOC_SSA__InstrDesc, 28579));
1121   ;
1122 }
1123 
OOC_SSA__InstrDesc_GetCollectTarget(OOC_SSA__Instr instr)1124 OOC_SSA__Instr OOC_SSA__InstrDesc_GetCollectTarget(OOC_SSA__Instr instr) {
1125   register OOC_INT64 i0,i1;
1126   OOC_SSA__Result storeOut;
1127   OOC_SSA__Opnd use;
1128 
1129   i0 = (OOC_INT64)instr;
1130   i1 = *(OOC_INT8*)((_check_pointer(i0, 28829))+72);
1131   _assert((i1==6), 127, 28816);
1132   i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetResultStore((OOC_SSA__Instr)i0);
1133   storeOut = (OOC_SSA__Result)i0;
1134   _assert((i0!=(OOC_INT64)0), 127, 28902);
1135   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 28947))+24);
1136   _assert((i1!=(OOC_INT64)0), 127, 28931);
1137   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 28985))+24);
1138   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 28994))+32);
1139   _assert((i1==(OOC_INT64)0), 127, 28969);
1140   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29028))+24);
1141   i1 = *(OOC_INT8*)((_check_pointer(i1, 29037))+8);
1142   i1 = i1==13;
1143   if (i1) goto l16;
1144   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29286))+24);
1145   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 29295))+24);
1146   i1 = *(OOC_INT8*)((_check_pointer(i1, 29302))+72);
1147   i1 = i1==9;
1148   if (i1) goto l5;
1149   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29696))+24);
1150   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29705))+24);
1151   return (OOC_SSA__Instr)i0;
1152   goto l17;
1153 l5:
1154   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29480))+24);
1155   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29489))+24);
1156   i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetResultStore((OOC_SSA__Instr)i0);
1157   storeOut = (OOC_SSA__Result)i0;
1158   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29537))+24);
1159   use = (OOC_SSA__Opnd)i0;
1160   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29564))+24);
1161   i1 = *(OOC_INT8*)((_check_pointer(i1, 29571))+72);
1162   i1 = i1!=11;
1163   if (!i1) goto l14;
1164 l9_loop:
1165   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29619))+32);
1166   use = (OOC_SSA__Opnd)i0;
1167   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29564))+24);
1168   i1 = *(OOC_INT8*)((_check_pointer(i1, 29571))+72);
1169   i1 = i1!=11;
1170   if (i1) goto l9_loop;
1171 l14:
1172   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29657))+24);
1173   return (OOC_SSA__Instr)i0;
1174   goto l17;
1175 l16:
1176   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29233))+24);
1177   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29242))+24);
1178   i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetLoopStart((OOC_SSA__Instr)i0);
1179   return (OOC_SSA__Instr)i0;
1180 l17:
1181   _failed_function(28633); return 0;
1182   ;
1183 }
1184 
OOC_SSA__InstrDesc_NumberOfPaths(OOC_SSA__Instr select)1185 OOC_INT32 OOC_SSA__InstrDesc_NumberOfPaths(OOC_SSA__Instr select) {
1186   register OOC_INT64 i0,i1;
1187 
1188   i0 = (OOC_INT64)select;
1189   i1 = *(OOC_INT8*)((_check_pointer(i0, 30019))+72);
1190   switch (i1) {
1191   case 5:
1192     i1 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 16);
1193     i1 = i1==(OOC_INT64)0;
1194     if (i1) goto l5;
1195     i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 16);
1196     return i0;
1197     goto l10;
1198 l5:
1199     i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 1);
1200     return (i0>>1);
1201     goto l10;
1202   case 10:
1203     return 2;
1204     goto l10;
1205   case 11:
1206     i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 11);
1207     return i0;
1208     goto l10;
1209   default:
1210     _failed_case(i1, 30008);
1211     goto l10;
1212   }
1213 l10:
1214   _failed_function(29774); return 0;
1215   ;
1216 }
1217 
OOC_SSA__InstrDesc_GetCollect(OOC_SSA__Instr select,OOC_SSA__ProcBlock pb,OOC_INT32 pathNum)1218 OOC_SSA__Instr OOC_SSA__InstrDesc_GetCollect(OOC_SSA__Instr select, OOC_SSA__ProcBlock pb, OOC_INT32 pathNum) {
1219   register OOC_INT64 i0,i1,i2,i3;
1220   OOC_SSA__Opnd opnd;
1221   OOC_SSA__Instr loopEnd;
1222   OOC_SSA__Instr collect;
1223 
1224   i0 = (OOC_INT64)select;
1225   i1 = *(OOC_INT8*)((_check_pointer(i0, 31036))+72);
1226   switch (i1) {
1227   case 5:
1228     i1 = pathNum;
1229     i0 = (OOC_INT64)OOC_SSA__InstrDesc_NthOpnd((OOC_SSA__Instr)i0, (2+i1*2));
1230     opnd = (OOC_SSA__Opnd)i0;
1231     goto l10;
1232   case 11:
1233     i1 = pathNum;
1234     i0 = (OOC_INT64)OOC_SSA__InstrDesc_NthOpnd((OOC_SSA__Instr)i0, (i1+2));
1235     opnd = (OOC_SSA__Opnd)i0;
1236     i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31242));
1237     i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 31246))+16);
1238     i1 = *(OOC_INT8*)((_check_pointer(i1, 31252))+72);
1239     _assert((i1==9), 127, 31231);
1240     i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31294));
1241     i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 31298))+16);
1242     i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 31304))+48);
1243     opnd = (OOC_SSA__Opnd)i0;
1244     goto l10;
1245   case 10:
1246     i1 = pathNum;
1247     i2 = i1==0;
1248     if (i2) goto l7;
1249     i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetLoopEnd((OOC_SSA__Instr)i0);
1250     loopEnd = (OOC_SSA__Instr)i0;
1251     i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 13);
1252     opnd = (OOC_SSA__Opnd)i0;
1253 
1254     goto l10;
1255 l7:
1256     i0 = (OOC_INT64)OOC_SSA__InstrDesc_NthOpnd((OOC_SSA__Instr)i0, i1);
1257     opnd = (OOC_SSA__Opnd)i0;
1258 
1259     goto l10;
1260   default:
1261     _failed_case(i1, 31025);
1262     goto l10;
1263   }
1264 l10:
1265   i0 = (OOC_INT64)opnd;
1266   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31565));
1267   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 31569))+16);
1268   i1 = *(OOC_INT8*)((_check_pointer(i1, 31575))+72);
1269   i1 = i1==6;
1270   if (i1) goto l13;
1271   i1 = (OOC_INT64)pb;
1272   i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i1, 6, 0);
1273   collect = (OOC_SSA__Instr)i1;
1274   i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31726));
1275   i3 = (OOC_INT64)OOC_SSA__InstrDesc_AddResult((OOC_SSA__Instr)i1, 2);
1276   OOC_SSA__OpndDesc_ReplaceArg((OOC_SSA__Opnd)i0, (OOC_SSA__Result)i3);
1277   OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 2);
1278   return (OOC_SSA__Instr)i1;
1279   goto l14;
1280 l13:
1281   i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31623));
1282   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 31627))+16);
1283   return (OOC_SSA__Instr)i0;
1284 l14:
1285   _failed_function(30564); return 0;
1286   ;
1287 }
1288 
OOC_SSA__InstrDesc_LogOpcode(OOC_SSA__Instr instr,const OOC_CHAR8 msg__ref[],OOC_LEN msg_0d)1289 void OOC_SSA__InstrDesc_LogOpcode(OOC_SSA__Instr instr, const OOC_CHAR8 msg__ref[], OOC_LEN msg_0d) {
1290   register OOC_INT64 i0;
1291   OOC_ALLOCATE_VPAR(msg,OOC_CHAR8 ,msg_0d)
1292   OOC_CHAR8 name[64];
1293 
1294   OOC_INITIALIZE_VPAR(msg__ref,msg,OOC_CHAR8 ,msg_0d)
1295   i0 = (OOC_INT64)instr;
1296   OOC_SSA__InstrDesc_GetOpcodeName((OOC_SSA__Instr)i0, (void*)(OOC_INT64)name, 64);
1297   Log__String((void*)(OOC_INT64)msg, msg_0d, (void*)(OOC_INT64)name, 64);
1298   return;
1299   ;
1300 }
1301 
OOC_SSA__InstrDesc_IsConst(OOC_SSA__Instr instr)1302 OOC_CHAR8 OOC_SSA__InstrDesc_IsConst(OOC_SSA__Instr instr) {
1303   register OOC_INT64 i0,i1;
1304 
1305   i0 = (OOC_INT64)instr;
1306   i1 = *(OOC_INT8*)((_check_pointer(i0, 32415))+72);
1307   i1 = i1==57;
1308   if (i1) goto l3;
1309   i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32467)))), &_td_OOC_SSA__ConstDesc);
1310 
1311   goto l5;
1312 l3:
1313   i1=1u;
1314 l5:
1315   if (i1) goto l7;
1316   i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32487)))), &_td_OOC_SSA__DeclRefDesc);
1317 
1318   goto l9;
1319 l7:
1320   i1=1u;
1321 l9:
1322   if (i1) goto l11;
1323   i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32517)))), &_td_OOC_SSA__TypeRefDesc);
1324 
1325   goto l13;
1326 l11:
1327   i1=1u;
1328 l13:
1329   if (i1) goto l15;
1330   i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32539)))), &_td_OOC_SSA__AddressDesc);
1331 
1332   goto l16;
1333 l15:
1334   i0=1u;
1335 l16:
1336   return i0;
1337   ;
1338 }
1339 
OOC_SSA__InstrDesc_UniqueResult(OOC_SSA__Instr instr)1340 OOC_CHAR8 OOC_SSA__InstrDesc_UniqueResult(OOC_SSA__Instr instr) {
1341   register OOC_INT64 i0;
1342 
1343   i0 = (OOC_INT64)instr;
1344   i0 = *(OOC_INT8*)((_check_pointer(i0, 32875))+72);
1345   switch (i0) {
1346   case 59:
1347   case 9:
1348   case 7:
1349     return 1u;
1350     goto l4;
1351   default:
1352     return 0u;
1353     goto l4;
1354   }
1355 l4:
1356   _failed_function(32593); return 0;
1357   ;
1358 }
1359 
OOC_SSA__InstrDesc_IsSync(OOC_SSA__Instr instr)1360 OOC_CHAR8 OOC_SSA__InstrDesc_IsSync(OOC_SSA__Instr instr) {
1361   register OOC_INT64 i0;
1362 
1363   i0 = (OOC_INT64)instr;
1364   i0 = *(OOC_INT8*)((_check_pointer(i0, 33476))+72);
1365   switch (i0) {
1366   case 7:
1367   case 9:
1368   case 12:
1369   case 59:
1370   case 64:
1371   case 65:
1372   case 66:
1373   case 67:
1374   case 68:
1375   case 69:
1376   case 70:
1377   case 71:
1378     return 1u;
1379     goto l4;
1380   default:
1381     return 0u;
1382     goto l4;
1383   }
1384 l4:
1385   _failed_function(33062); return 0;
1386   ;
1387 }
1388 
OOC_SSA__InstrDesc_IsSwitchStatm(OOC_SSA__Instr instr)1389 OOC_CHAR8 OOC_SSA__InstrDesc_IsSwitchStatm(OOC_SSA__Instr instr) {
1390   register OOC_INT64 i0,i1;
1391 
1392   i0 = (OOC_INT64)instr;
1393   i1 = *(OOC_INT8*)((_check_pointer(i0, 34075))+72);
1394   _assert((i1==5), 127, 34062);
1395   i1 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 16);
1396   i1 = i1!=(OOC_INT64)0;
1397   if (i1) goto l3;
1398   i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 1);
1399   i0 = i0<4;
1400 
1401   goto l4;
1402 l3:
1403   i0=1u;
1404 l4:
1405   return i0;
1406   ;
1407 }
1408 
OOC_SSA__InitConst(OOC_SSA__Const _const,OOC_INT8 subclass,Object_Boxed__Object value,OOC_SymbolTable__Type stringType)1409 static void OOC_SSA__InitConst(OOC_SSA__Const _const, OOC_INT8 subclass, Object_Boxed__Object value, OOC_SymbolTable__Type stringType) {
1410   register OOC_INT64 i0,i1;
1411 
1412   i0 = subclass;
1413   i1 = (OOC_INT64)_const;
1414   OOC_SSA__InitInstr((OOC_SSA__Instr)i1, 0, i0);
1415   i0 = (OOC_INT64)value;
1416   _assert((i0!=(OOC_INT64)0), 127, 34644);
1417   *(OOC_INT64*)((_check_pointer(i1, 34675))+80) = i0;
1418   i0 = (OOC_INT64)stringType;
1419   *(OOC_INT64*)((_check_pointer(i1, 34702))+88) = i0;
1420   return;
1421   ;
1422 }
1423 
OOC_SSA__InitDeclRef(OOC_SSA__DeclRef declRef,OOC_SymbolTable__Declaration decl)1424 static void OOC_SSA__InitDeclRef(OOC_SSA__DeclRef declRef, OOC_SymbolTable__Declaration decl) {
1425   register OOC_INT64 i0,i1;
1426 
1427   i0 = (OOC_INT64)declRef;
1428   OOC_SSA__InitInstr((OOC_SSA__Instr)i0, 1, 0);
1429   i1 = (OOC_INT64)decl;
1430   *(OOC_INT64*)((_check_pointer(i0, 34888))+80) = i1;
1431   return;
1432   ;
1433 }
1434 
OOC_SSA__InitTypeRef(OOC_SSA__TypeRef typeRef,OOC_SymbolTable__Type type)1435 static void OOC_SSA__InitTypeRef(OOC_SSA__TypeRef typeRef, OOC_SymbolTable__Type type) {
1436   register OOC_INT64 i0,i1;
1437 
1438   i0 = (OOC_INT64)typeRef;
1439   OOC_SSA__InitInstr((OOC_SSA__Instr)i0, 2, 0);
1440   i1 = (OOC_INT64)type;
1441   *(OOC_INT64*)((_check_pointer(i0, 35057))+80) = i1;
1442   return;
1443   ;
1444 }
1445 
OOC_SSA__InitAddress(OOC_SSA__Address address,OOC_INT8 opcode,OOC_SymbolTable__Declaration decl)1446 static void OOC_SSA__InitAddress(OOC_SSA__Address address, OOC_INT8 opcode, OOC_SymbolTable__Declaration decl) {
1447   register OOC_INT64 i0,i1;
1448 
1449   i0 = opcode;
1450   i1 = (OOC_INT64)address;
1451   OOC_SSA__InitInstr((OOC_SSA__Instr)i1, i0, 9);
1452   i0 = (OOC_INT64)decl;
1453   *(OOC_INT64*)((_check_pointer(i1, 35273))+80) = i0;
1454   return;
1455   ;
1456 }
1457 
OOC_SSA__NewAddress(OOC_INT8 opcode,OOC_SymbolTable__Declaration decl)1458 static OOC_SSA__Address OOC_SSA__NewAddress(OOC_INT8 opcode, OOC_SymbolTable__Declaration decl) {
1459   register OOC_INT64 i0,i1,i2;
1460 
1461   i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Address.baseTypes[0]);
1462   i1 = (OOC_INT64)decl;
1463   i2 = opcode;
1464   OOC_SSA__InitAddress((OOC_SSA__Address)i0, i2, (OOC_SymbolTable__Declaration)i1);
1465   return (OOC_SSA__Address)i0;
1466   ;
1467 }
1468 
OOC_SSA__InitProcBlock(OOC_SSA__ProcBlock pb,OOC_SymbolTable__ProcDecl procDecl,OOC_CHAR8 checkFunctionResult)1469 static void OOC_SSA__InitProcBlock(OOC_SSA__ProcBlock pb, OOC_SymbolTable__ProcDecl procDecl, OOC_CHAR8 checkFunctionResult) {
1470   register OOC_INT64 i0,i1,i2;
1471   OOC_SSA__Instr enter;
1472   OOC_SSA__Result initialStore;
1473   OOC_INT32 i;
1474 
1475   i0 = (OOC_INT64)pb;
1476   OOC_SSA__InitNode((OOC_SSA__Node)i0);
1477   *(OOC_INT64*)((_check_pointer(i0, 35819))+24) = (OOC_INT64)0;
1478   *(OOC_INT64*)((_check_pointer(i0, 35845))+32) = (OOC_INT64)0;
1479   i1 = (OOC_INT64)procDecl;
1480   *(OOC_INT64*)((_check_pointer(i0, 35871))+40) = i1;
1481   i1 = checkFunctionResult;
1482   *(OOC_UINT8*)((_check_pointer(i0, 35901))+48) = i1;
1483   i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i0, 8, 0);
1484   *(OOC_INT64*)(_check_pointer(i0, 35958)) = i1;
1485   i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i0, 4, 0);
1486   enter = (OOC_SSA__Instr)i1;
1487   i1 = (OOC_INT64)OOC_SSA__InstrDesc_AddResult((OOC_SSA__Instr)i1, 2);
1488   initialStore = (OOC_SSA__Result)i1;
1489   i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 36148));
1490   OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i2, (OOC_SSA__Result)i1, 10);
1491   *(OOC_INT64*)((_check_pointer(i0, 36221))+8) = (OOC_INT64)0;
1492   *(OOC_INT64*)((_check_pointer(i0, 36249))+16) = (OOC_INT64)0;
1493   i = 0;
1494   i1=0;
1495 l1_loop:
1496   *(OOC_INT64*)(((_check_pointer(i0, 36318))+56)+(_check_index(i1, 12, OOC_UINT32, 36328))*8) = (OOC_INT64)0;
1497   i1 = i1+1;
1498   i = i1;
1499   i2 = i1<=11;
1500   if (i2) goto l1_loop;
1501 l5:
1502   i1 = (OOC_INT64)ADT_Dictionary__New();
1503   *(OOC_INT64*)((_check_pointer(i0, 36355))+152) = i1;
1504   i1 = (OOC_INT64)ADT_Dictionary__New();
1505   *(OOC_INT64*)((_check_pointer(i0, 36391))+160) = i1;
1506   return;
1507   ;
1508 }
1509 
OOC_SSA__NewProcBlock(OOC_IR__Procedure proc)1510 OOC_SSA__ProcBlock OOC_SSA__NewProcBlock(OOC_IR__Procedure proc) {
1511   register OOC_INT64 i0,i1,i2;
1512   OOC_SSA__ProcBlock pb;
1513 
1514   i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__ProcBlock.baseTypes[0]);
1515   pb = (OOC_SSA__ProcBlock)i0;
1516   i1 = (OOC_INT64)proc;
1517   i2 = *(OOC_UINT8*)((_check_pointer(i1, 36638))+24);
1518   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 36626))+8);
1519   OOC_SSA__InitProcBlock((OOC_SSA__ProcBlock)i0, (OOC_SymbolTable__ProcDecl)i1, i2);
1520   return (OOC_SSA__ProcBlock)i0;
1521   ;
1522 }
1523 
OOC_SSA__AppendInstr(OOC_SSA__ProcBlock pb,OOC_SSA__Instr instr)1524 static void OOC_SSA__AppendInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr instr) {
1525   register OOC_INT64 i0,i1,i2;
1526 
1527   i0 = (OOC_INT64)instr;
1528   *(OOC_INT64*)((_check_pointer(i0, 36824))+56) = (OOC_INT64)0;
1529   i1 = (OOC_INT64)pb;
1530   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 36870))+32);
1531   *(OOC_INT64*)((_check_pointer(i0, 36853))+64) = i2;
1532   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 36893))+24);
1533   i2 = i2==(OOC_INT64)0;
1534   if (i2) goto l3;
1535   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 37095))+32);
1536   *(OOC_INT64*)((_check_pointer(i2, 37106))+56) = i0;
1537   *(OOC_INT64*)((_check_pointer(i1, 37136))+32) = i0;
1538   goto l4;
1539 l3:
1540   *(OOC_INT64*)((_check_pointer(i1, 36967))+24) = i0;
1541   *(OOC_INT64*)((_check_pointer(i1, 36997))+32) = i0;
1542 l4:
1543   return;
1544   ;
1545 }
1546 
OOC_SSA__ProcBlockDesc_AddInstr(OOC_SSA__ProcBlock pb,OOC_INT8 opcode,OOC_INT8 subclass)1547 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddInstr(OOC_SSA__ProcBlock pb, OOC_INT8 opcode, OOC_INT8 subclass) {
1548   register OOC_INT64 i0,i1,i2;
1549 
1550   i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Instr.baseTypes[0]);
1551   i1 = subclass;
1552   i2 = opcode;
1553   OOC_SSA__InitInstr((OOC_SSA__Instr)i0, i2, i1);
1554   i1 = (OOC_INT64)pb;
1555   OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i1, (OOC_SSA__Instr)i0);
1556   return (OOC_SSA__Instr)i0;
1557   ;
1558 }
1559 
OOC_SSA__ProcBlockDesc_DeleteInstr(OOC_SSA__ProcBlock pb,OOC_SSA__Instr instr)1560 void OOC_SSA__ProcBlockDesc_DeleteInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr instr) {
1561   register OOC_INT64 i0,i1,i2;
1562 
1563   i0 = (OOC_INT64)instr;
1564   i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38208)))), &_td_OOC_SSA__AddressDesc);
1565   if (i1) goto l17;
1566   i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38272)))), &_td_OOC_SSA__ConstDesc);
1567   if (i1) goto l12;
1568   i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38401)))), &_td_OOC_SSA__DeclRefDesc);
1569   if (i1) goto l10;
1570   i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38465)))), &_td_OOC_SSA__TypeRefDesc);
1571   if (!i1) goto l18;
1572   i1 = (OOC_INT64)pb;
1573   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38509))+80);
1574   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38486))+152);
1575   ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1576   goto l18;
1577 l10:
1578   i1 = (OOC_INT64)pb;
1579   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38445))+80);
1580   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38422))+152);
1581   ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1582   goto l18;
1583 l12:
1584   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38298))+88);
1585   i1 = i1==(OOC_INT64)0;
1586   if (!i1) goto l18;
1587   i1 = (OOC_INT64)pb;
1588   i2 = *(OOC_INT8*)((_check_pointer(i0, 38347))+9);
1589   i1 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i1, 38332))+56)+(_check_index(i2, 12, OOC_UINT8, 38341))*8);
1590   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38370))+80);
1591   ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1592   goto l18;
1593 l17:
1594   i1 = (OOC_INT64)pb;
1595   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38229))+160);
1596   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38252))+80);
1597   ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1598 l18:
1599   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38644))+48);
1600   i1 = i1!=(OOC_INT64)0;
1601   if (!i1) goto l26;
1602 l21_loop:
1603   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38676))+48);
1604   OOC_SSA__OpndDesc_DeleteOpnd((OOC_SSA__Opnd)i1);
1605   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38644))+48);
1606   i1 = i1!=(OOC_INT64)0;
1607   if (i1) goto l21_loop;
1608 l26:
1609   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38725))+64);
1610   i1 = i1==(OOC_INT64)0;
1611   if (i1) goto l29;
1612   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38809))+64);
1613   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38840))+56);
1614   *(OOC_INT64*)((_check_pointer(i1, 38820))+56) = i2;
1615   goto l30;
1616 l29:
1617   i1 = (OOC_INT64)pb;
1618   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38777))+56);
1619   *(OOC_INT64*)((_check_pointer(i1, 38757))+24) = i2;
1620 l30:
1621   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38874))+56);
1622   i1 = i1==(OOC_INT64)0;
1623   if (i1) goto l33;
1624   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38958))+56);
1625   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38989))+64);
1626   *(OOC_INT64*)((_check_pointer(i1, 38969))+64) = i2;
1627   goto l34;
1628 l33:
1629   i1 = (OOC_INT64)pb;
1630   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38926))+64);
1631   *(OOC_INT64*)((_check_pointer(i1, 38906))+32) = i2;
1632 l34:
1633   *(OOC_INT64*)((_check_pointer(i0, 39019))+56) = (OOC_INT64)0;
1634   *(OOC_INT64*)((_check_pointer(i0, 39048))+64) = (OOC_INT64)0;
1635   return;
1636   ;
1637 }
1638 
OOC_SSA__ProcBlockDesc_GetConst(OOC_SSA__ProcBlock pb,Object_Boxed__Object value,OOC_INT8 subclass,OOC_SymbolTable__Type stringType)1639 OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConst(OOC_SSA__ProcBlock pb, Object_Boxed__Object value, OOC_INT8 subclass, OOC_SymbolTable__Type stringType) {
1640   register OOC_INT64 i0,i1,i2,i3,i4;
1641   Object__Object obj;
1642   OOC_SSA__Const _const;
1643 
1644   i0 = (OOC_INT64)pb;
1645   i1 = subclass;
1646   i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40012))+56)+(_check_index(i1, 12, OOC_UINT8, 40022))*8);
1647   i2 = i2==(OOC_INT64)0;
1648   if (!i2) goto l3;
1649   i2 = (OOC_INT64)ADT_Dictionary__New();
1650   *(OOC_INT64*)(((_check_pointer(i0, 40053))+56)+(_check_index(i1, 12, OOC_UINT8, 40063))*8) = i2;
1651 l3:
1652   i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40118))+56)+(_check_index(i1, 12, OOC_UINT8, 40127))*8);
1653   i3 = (OOC_INT64)value;
1654   i2 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i2, (Object__Object)i3);
1655   if (i2) goto l9;
1656   i2 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Const.baseTypes[0]);
1657   _const = (OOC_SSA__Const)i2;
1658   i4 = (OOC_INT64)stringType;
1659   OOC_SSA__InitConst((OOC_SSA__Const)i2, i1, (Object_Boxed__Object)i3, (OOC_SymbolTable__Type)i4);
1660   OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i2);
1661   i4 = i4==(OOC_INT64)0;
1662   if (!i4) goto l8;
1663   i0 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40501))+56)+(_check_index(i1, 12, OOC_UINT8, 40511))*8);
1664   ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i3, (Object__Object)i2);
1665 l8:
1666   return (OOC_SSA__Const)i2;
1667   goto l10;
1668 l9:
1669   i0 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40172))+56)+(_check_index(i1, 12, OOC_UINT8, 40182))*8);
1670   i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i3);
1671   obj = (Object__Object)i0;
1672   return (OOC_SSA__Const)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 40224)))), &_td_OOC_SSA__ConstDesc, 40224));
1673 l10:
1674   _failed_function(39116); return 0;
1675   ;
1676 }
1677 
OOC_SSA__ProcBlockDesc_GetConstInt(OOC_SSA__ProcBlock pb,OOC_INT32 _int)1678 OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConstInt(OOC_SSA__ProcBlock pb, OOC_INT32 _int) {
1679   register OOC_INT64 i0,i1,i2;
1680 
1681   i0 = _int;
1682   i0 = (OOC_INT64)Object_BigInt__NewInt(i0);
1683   i1 = (OOC_INT64)OOC_SymbolTable_Predef__SmallestIntType((Object_BigInt__BigInt)i0);
1684   i1 = OOC_SSA_Opcode__TypeToSubclass((OOC_SymbolTable__Type)i1);
1685   i2 = (OOC_INT64)pb;
1686   i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i2, (Object_Boxed__Object)i0, i1, (OOC_SymbolTable__Type)(OOC_INT64)0);
1687   return (OOC_SSA__Const)i0;
1688   ;
1689 }
1690 
OOC_SSA__ProcBlockDesc_GetConstBool(OOC_SSA__ProcBlock pb,OOC_CHAR8 b)1691 OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConstBool(OOC_SSA__ProcBlock pb, OOC_CHAR8 b) {
1692   register OOC_INT64 i0,i1;
1693 
1694   i0 = b;
1695   if (i0) goto l3;
1696   i0 = (OOC_INT64)Object_BigInt__zero;
1697 
1698   goto l4;
1699 l3:
1700   i0 = (OOC_INT64)Object_BigInt__one;
1701 
1702 l4:
1703   i1 = (OOC_INT64)pb;
1704   i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i1, (Object_Boxed__Object)i0, 5, (OOC_SymbolTable__Type)(OOC_INT64)0);
1705   return (OOC_SSA__Const)i0;
1706   ;
1707 }
1708 
OOC_SSA__ProcBlockDesc_GetConstNil(OOC_SSA__ProcBlock pb)1709 OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConstNil(OOC_SSA__ProcBlock pb) {
1710   register OOC_INT64 i0,i1,i2;
1711 
1712   i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(16);
1713   i0 = OOC_SSA_Opcode__TypeToSubclass((OOC_SymbolTable__Type)i0);
1714   i1 = (OOC_INT64)pb;
1715   i2 = (OOC_INT64)OOC_SSA__nil;
1716   i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i1, (Object_Boxed__Object)i2, i0, (OOC_SymbolTable__Type)(OOC_INT64)0);
1717   return (OOC_SSA__Const)i0;
1718   ;
1719 }
1720 
OOC_SSA__ProcBlockDesc_GetDeclRef(OOC_SSA__ProcBlock pb,OOC_SymbolTable__Declaration decl)1721 OOC_SSA__DeclRef OOC_SSA__ProcBlockDesc_GetDeclRef(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Declaration decl) {
1722   register OOC_INT64 i0,i1,i2;
1723   Object__Object obj;
1724   OOC_SSA__DeclRef declRef;
1725 
1726   i0 = (OOC_INT64)pb;
1727   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 41628))+152);
1728   i2 = (OOC_INT64)decl;
1729   i1 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1730   if (i1) goto l3;
1731   i1 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__DeclRef.baseTypes[0]);
1732   declRef = (OOC_SSA__DeclRef)i1;
1733   OOC_SSA__InitDeclRef((OOC_SSA__DeclRef)i1, (OOC_SymbolTable__Declaration)i2);
1734   OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
1735   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 41827))+152);
1736   ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i2, (Object__Object)i1);
1737   return (OOC_SSA__DeclRef)i1;
1738   goto l4;
1739 l3:
1740   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 41672))+152);
1741   i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i2);
1742   obj = (Object__Object)i0;
1743   return (OOC_SSA__DeclRef)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 41711)))), &_td_OOC_SSA__DeclRefDesc, 41711));
1744 l4:
1745   _failed_function(41367); return 0;
1746   ;
1747 }
1748 
OOC_SSA__ProcBlockDesc_GetTypeRef(OOC_SSA__ProcBlock pb,OOC_SymbolTable__Type type)1749 OOC_SSA__TypeRef OOC_SSA__ProcBlockDesc_GetTypeRef(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Type type) {
1750   register OOC_INT64 i0,i1,i2;
1751   Object__Object obj;
1752   OOC_SSA__TypeRef typeRef;
1753 
1754   i0 = (OOC_INT64)pb;
1755   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42173))+152);
1756   i2 = (OOC_INT64)type;
1757   i1 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1758   if (i1) goto l3;
1759   i1 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__TypeRef.baseTypes[0]);
1760   typeRef = (OOC_SSA__TypeRef)i1;
1761   OOC_SSA__InitTypeRef((OOC_SSA__TypeRef)i1, (OOC_SymbolTable__Type)i2);
1762   OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
1763   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42372))+152);
1764   ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i2, (Object__Object)i1);
1765   return (OOC_SSA__TypeRef)i1;
1766   goto l4;
1767 l3:
1768   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42217))+152);
1769   i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i2);
1770   obj = (Object__Object)i0;
1771   return (OOC_SSA__TypeRef)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 42256)))), &_td_OOC_SSA__TypeRefDesc, 42256));
1772 l4:
1773   _failed_function(41933); return 0;
1774   ;
1775 }
1776 
OOC_SSA__ProcBlockDesc_SetAddress(OOC_SSA__ProcBlock pb,OOC_SymbolTable__Declaration decl,OOC_SSA__Address address)1777 void OOC_SSA__ProcBlockDesc_SetAddress(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Declaration decl, OOC_SSA__Address address) {
1778   register OOC_INT64 i0,i1,i2;
1779 
1780   i0 = (OOC_INT64)pb;
1781   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42584))+160);
1782   i1 = (OOC_INT64)decl;
1783   i2 = (OOC_INT64)address;
1784   ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i1, (Object__Object)i2);
1785   return;
1786   ;
1787 }
1788 
OOC_SSA__ProcBlockDesc_GetAddress(OOC_SSA__ProcBlock pb,OOC_SymbolTable__Declaration decl)1789 OOC_SSA__Address OOC_SSA__ProcBlockDesc_GetAddress(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Declaration decl) {
1790   register OOC_INT64 i0,i1,i2;
1791   Object__Object obj;
1792 
1793   i0 = (OOC_INT64)pb;
1794   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42921))+160);
1795   i2 = (OOC_INT64)decl;
1796   i1 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1797   if (i1) goto l3;
1798   i1 = (OOC_INT64)OOC_SSA__NewAddress(3, (OOC_SymbolTable__Declaration)i2);
1799   OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
1800   OOC_SSA__ProcBlockDesc_SetAddress((OOC_SSA__ProcBlock)i0, (OOC_SymbolTable__Declaration)i2, (OOC_SSA__Address)i1);
1801   return (OOC_SSA__Address)i1;
1802   goto l4;
1803 l3:
1804   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42965))+160);
1805   i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i2);
1806   obj = (Object__Object)i0;
1807   return (OOC_SSA__Address)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 43004)))), &_td_OOC_SSA__AddressDesc, 43004));
1808 l4:
1809   _failed_function(42660); return 0;
1810   ;
1811 }
1812 
OOC_SSA__ProcBlockDesc_AddCopyParameter(OOC_SSA__ProcBlock pb,OOC_SymbolTable__VarDecl param,OOC_SSA__Result storeIn,OOC_SSA__Result length,OOC_SSA__Result size)1813 OOC_SSA__Address OOC_SSA__ProcBlockDesc_AddCopyParameter(OOC_SSA__ProcBlock pb, OOC_SymbolTable__VarDecl param, OOC_SSA__Result storeIn, OOC_SSA__Result length, OOC_SSA__Result size) {
1814   register OOC_INT64 i0,i1,i2;
1815 
1816   i0 = (OOC_INT64)param;
1817   i1 = (OOC_INT64)OOC_SSA__NewAddress(58, (OOC_SymbolTable__Declaration)i0);
1818   i2 = (OOC_INT64)storeIn;
1819   OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 2);
1820   i2 = (OOC_INT64)length;
1821   OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 1);
1822   i2 = (OOC_INT64)size;
1823   OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 1);
1824   i2 = (OOC_INT64)pb;
1825   OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i2, (OOC_SSA__Instr)i1);
1826   OOC_SSA__ProcBlockDesc_SetAddress((OOC_SSA__ProcBlock)i2, (OOC_SymbolTable__Declaration)i0, (OOC_SSA__Address)i1);
1827   return (OOC_SSA__Address)i1;
1828   ;
1829 }
1830 
OOC_SSA__ProcBlockDesc_SetMarkers(OOC_SSA__ProcBlock pb,OOC_SSA__Node newInfo,OOC_INT32 newMarker)1831 void OOC_SSA__ProcBlockDesc_SetMarkers(OOC_SSA__ProcBlock pb, OOC_SSA__Node newInfo, OOC_INT32 newMarker) {
1832   register OOC_INT64 i0,i1,i2,i3,i4;
1833   OOC_SSA__Instr instr;
1834   OOC_SSA__Result res;
1835 
1836   i0 = (OOC_INT64)pb;
1837   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 44260))+24);
1838   instr = (OOC_SSA__Instr)i0;
1839   i1 = i0!=(OOC_INT64)0;
1840   if (!i1) goto l16;
1841   i2 = (OOC_INT64)newInfo;
1842   i3 = newMarker;
1843 
1844 l3_loop:
1845   res = (OOC_SSA__Result)i0;
1846   if (!i1) goto l11;
1847   i1=i0;
1848 l6_loop:
1849   *(OOC_INT64*)((_check_pointer(i1, 44358))+32) = i2;
1850   *(OOC_INT32*)((_check_pointer(i1, 44388))+40) = i3;
1851   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 44429));
1852   res = (OOC_SSA__Result)i1;
1853   i4 = i1!=(OOC_INT64)0;
1854   if (i4) goto l6_loop;
1855 l11:
1856   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 44473))+56);
1857   instr = (OOC_SSA__Instr)i0;
1858   i1 = i0!=(OOC_INT64)0;
1859   if (i1) goto l3_loop;
1860 l16:
1861   return;
1862   ;
1863 }
1864 
OOC_SSA__ProcBlockDesc_AddSetInstr(OOC_SSA__ProcBlock pb,OOC_SSA__Instr get,OOC_SSA__Result sourceValue)1865 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddSetInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr get, OOC_SSA__Result sourceValue) {
1866   register OOC_INT64 i0,i1,i2,i3;
1867   OOC_SSA__Instr set;
1868   OOC_SSA__Opnd opnd;
1869   auto OOC_INT8 OOC_SSA__ProcBlockDesc_AddSetInstr_MapOpndClass(OOC_INT8 _class);
1870 
1871     OOC_INT8 OOC_SSA__ProcBlockDesc_AddSetInstr_MapOpndClass(OOC_INT8 _class) {
1872       register OOC_INT64 i0;
1873 
1874       i0 = _class;
1875       switch (i0) {
1876       case 4:
1877         return 6;
1878         goto l5;
1879       case 5:
1880         return 7;
1881         goto l5;
1882       default:
1883         return i0;
1884         goto l5;
1885       }
1886 l5:
1887       _failed_function(44822); return 0;
1888       ;
1889     }
1890 
1891 
1892   i0 = (OOC_INT64)get;
1893   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 45111))+16);
1894   i1 = *(OOC_INT8*)((_check_pointer(i1, 45118))+72);
1895   _assert((i1==12), 127, 45100);
1896   i1 = *(OOC_INT8*)((_check_pointer(i0, 45182))+9);
1897   i2 = (OOC_INT64)pb;
1898   i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i2, 13, i1);
1899   set = (OOC_SSA__Instr)i1;
1900   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 45210))+48);
1901   opnd = (OOC_SSA__Opnd)i0;
1902   i2 = i0!=(OOC_INT64)0;
1903   if (!i2) goto l8;
1904 l3_loop:
1905   i2 = *(OOC_INT8*)((_check_pointer(i0, 45297))+8);
1906   i2 = OOC_SSA__ProcBlockDesc_AddSetInstr_MapOpndClass(i2);
1907   i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 45272));
1908   OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i3, i2);
1909   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 45326))+16);
1910   opnd = (OOC_SSA__Opnd)i0;
1911   i2 = i0!=(OOC_INT64)0;
1912   if (i2) goto l3_loop;
1913 l8:
1914   i0 = (OOC_INT64)sourceValue;
1915   OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i0, 8);
1916   return (OOC_SSA__Instr)i1;
1917   ;
1918 }
1919 
OOC_SSA__ProcBlockDesc_AddGetLengthInstr(OOC_SSA__ProcBlock pb,OOC_SSA__Instr get,OOC_INT32 dim,OOC_SymbolTable__Array dimType)1920 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddGetLengthInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr get, OOC_INT32 dim, OOC_SymbolTable__Array dimType) {
1921   register OOC_INT64 i0,i1,i2,i3,i4;
1922   OOC_SSA__Instr dimension;
1923   OOC_SSA__DeclRef paramRef;
1924   OOC_SSA__Instr getLength;
1925   OOC_INT8 opcode;
1926   OOC_SSA__Opnd opnd;
1927   auto OOC_SSA__DeclRef OOC_SSA__ProcBlockDesc_AddGetLengthInstr_VarParamArray(OOC_SSA__Instr get);
1928   auto OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddGetLengthInstr_ExistingGetLength(OOC_SSA__Instr varParam, OOC_SSA__Instr dimension);
1929 
1930     OOC_SSA__DeclRef OOC_SSA__ProcBlockDesc_AddGetLengthInstr_VarParamArray(OOC_SSA__Instr get) {
1931       register OOC_INT64 i0,i1;
1932       OOC_SSA__Opnd opnd;
1933 
1934       i0 = (OOC_INT64)get;
1935       i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 5);
1936       opnd = (OOC_SSA__Opnd)i0;
1937       i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46195))+16);
1938       i1 = i1==(OOC_INT64)0;
1939       if (i1) goto l3;
1940       i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46231))+16);
1941       i1 = *(OOC_INT8*)((_check_pointer(i1, 46241))+8);
1942       i1 = i1!=5;
1943 
1944       goto l5;
1945 l3:
1946       i1=1u;
1947 l5:
1948       if (i1) goto l7;
1949       i1=0u;
1950       goto l9;
1951 l7:
1952       i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 46290));
1953       i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 46296)))), &_td_OOC_SSA__DeclRefDesc);
1954 
1955 l9:
1956       if (i1) goto l11;
1957       i1=0u;
1958       goto l13;
1959 l11:
1960       i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 46323));
1961       i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 46329)))), &_td_OOC_SSA__DeclRefDesc, 46329)), 46337))+80);
1962       i1 = *(OOC_UINT8*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 46348)))), &_td_OOC_SymbolTable__VarDeclDesc, 46348)), 46356))+104);
1963 
1964 l13:
1965       if (i1) goto l15;
1966       return (OOC_SSA__DeclRef)(OOC_INT64)0;
1967       goto l16;
1968 l15:
1969       i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 46394));
1970       return (OOC_SSA__DeclRef)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 46400)))), &_td_OOC_SSA__DeclRefDesc, 46400));
1971 l16:
1972       _failed_function(45921); return 0;
1973       ;
1974     }
1975 
1976 
1977     OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddGetLengthInstr_ExistingGetLength(OOC_SSA__Instr varParam, OOC_SSA__Instr dimension) {
1978       register OOC_INT64 i0,i1,i2;
1979       OOC_SSA__Opnd use;
1980 
1981       i0 = (OOC_INT64)varParam;
1982       i1 = i0!=(OOC_INT64)0;
1983       if (!i1) goto l18;
1984       i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46776))+24);
1985       use = (OOC_SSA__Opnd)i0;
1986       i1 = i0!=(OOC_INT64)0;
1987       if (!i1) goto l18;
1988       i1 = (OOC_INT64)dimension;
1989 
1990 l5_loop:
1991       i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46833))+24);
1992       i2 = *(OOC_INT8*)((_check_pointer(i2, 46840))+72);
1993       i2 = i2==57;
1994       if (i2) goto l8;
1995       i2=0u;
1996       goto l10;
1997 l8:
1998       i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46893))+24);
1999       i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 46900))+48);
2000       i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 46910));
2001       i2 = i2==i1;
2002 
2003 l10:
2004       if (!i2) goto l12;
2005       i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46956))+24);
2006       return (OOC_SSA__Instr)i2;
2007 l12:
2008       i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 47000))+32);
2009       use = (OOC_SSA__Opnd)i0;
2010       i2 = i0!=(OOC_INT64)0;
2011       if (i2) goto l5_loop;
2012 l18:
2013       return (OOC_SSA__Instr)(OOC_INT64)0;
2014       ;
2015     }
2016 
2017 
2018   i0 = (OOC_INT64)get;
2019   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 47106))+16);
2020   i1 = *(OOC_INT8*)((_check_pointer(i1, 47113))+72);
2021   _assert((i1==12), 127, 47095);
2022   i1 = (OOC_INT64)dimType;
2023   i2 = *(OOC_UINT8*)((_check_pointer(i1, 47151))+72);
2024   if (i2) goto l3;
2025   i0 = *(OOC_INT32*)((_check_pointer(i1, 47938))+96);
2026   i1 = (OOC_INT64)pb;
2027   i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConstInt((OOC_SSA__ProcBlock)i1, i0);
2028   return (OOC_SSA__Instr)i0;
2029   goto l24;
2030 l3:
2031   i1 = dim;
2032   i2 = (OOC_INT64)pb;
2033   i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConstInt((OOC_SSA__ProcBlock)i2, i1);
2034   dimension = (OOC_SSA__Instr)i1;
2035   i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddGetLengthInstr_VarParamArray((OOC_SSA__Instr)i0);
2036   paramRef = (OOC_SSA__DeclRef)i0;
2037   i1 = (OOC_INT64)dimension;
2038   i2 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddGetLengthInstr_ExistingGetLength((OOC_SSA__Instr)i0, (OOC_SSA__Instr)i1);
2039   i3 = i2==(OOC_INT64)0;
2040   if (i3) goto l6;
2041   i0=i2;
2042   goto l23;
2043 l6:
2044   i0 = i0!=(OOC_INT64)0;
2045   if (i0) goto l9;
2046   opcode = 56;
2047   i0=56;
2048   goto l10;
2049 l9:
2050   opcode = 57;
2051   i0=57;
2052 l10:
2053   i2 = (OOC_INT64)pb;
2054   i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i2, i0, 3);
2055   getLength = (OOC_SSA__Instr)i0;
2056   i2 = (OOC_INT64)get;
2057   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 47567))+48);
2058   opnd = (OOC_SSA__Opnd)i2;
2059   i3 = i2!=(OOC_INT64)0;
2060   if (!i3) goto l23;
2061 l13_loop:
2062   i3 = *(OOC_INT8*)((_check_pointer(i2, 47627))+8);
2063   i3 = i3==2;
2064   if (i3) goto l16;
2065   i3 = *(OOC_INT8*)((_check_pointer(i2, 47785))+8);
2066   i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 47774));
2067   OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i0, (OOC_SSA__Result)i4, i3);
2068   goto l17;
2069 l16:
2070   OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i0, (OOC_SSA__Result)i1, 15);
2071 l17:
2072   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 47832))+16);
2073   opnd = (OOC_SSA__Opnd)i2;
2074   i3 = i2!=(OOC_INT64)0;
2075   if (i3) goto l13_loop;
2076 l23:
2077   return (OOC_SSA__Instr)i0;
2078 l24:
2079   _failed_function(45462); return 0;
2080   ;
2081 }
2082 
OOC_SSA__ProcBlockDesc_SetLoopContext(OOC_SSA__ProcBlock pb,OOC_SSA__Instr loopContext)2083 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_SetLoopContext(OOC_SSA__ProcBlock pb, OOC_SSA__Instr loopContext) {
2084   register OOC_INT64 i0,i1,i2;
2085   OOC_SSA__Instr old;
2086 
2087   i0 = (OOC_INT64)pb;
2088   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48098))+8);
2089   old = (OOC_SSA__Instr)i1;
2090   i2 = (OOC_INT64)loopContext;
2091   *(OOC_INT64*)((_check_pointer(i0, 48119))+8) = i2;
2092   return (OOC_SSA__Instr)i1;
2093   ;
2094 }
2095 
OOC_SSA__ProcBlockDesc_SetTryContext(OOC_SSA__ProcBlock pb,OOC_SSA__Instr tryContext)2096 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_SetTryContext(OOC_SSA__ProcBlock pb, OOC_SSA__Instr tryContext) {
2097   register OOC_INT64 i0,i1,i2;
2098   OOC_SSA__Instr old;
2099 
2100   i0 = (OOC_INT64)pb;
2101   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48299))+16);
2102   old = (OOC_SSA__Instr)i1;
2103   i2 = (OOC_INT64)tryContext;
2104   *(OOC_INT64*)((_check_pointer(i0, 48319))+16) = i2;
2105   return (OOC_SSA__Instr)i1;
2106   ;
2107 }
2108 
OOC_SSA__ProcBlockDesc_FixSubclass(OOC_SSA__ProcBlock pb,OOC_SSA__Result arg,OOC_INT8 subclass)2109 OOC_SSA__Result OOC_SSA__ProcBlockDesc_FixSubclass(OOC_SSA__ProcBlock pb, OOC_SSA__Result arg, OOC_INT8 subclass) {
2110   register OOC_INT64 i0,i1,i2;
2111 
2112   i0 = (OOC_INT64)arg;
2113   i1 = *(OOC_INT8*)((_check_pointer(i0, 48725))+9);
2114   i2 = subclass;
2115   i1 = i1!=i2;
2116   if (i1) goto l3;
2117   return (OOC_SSA__Result)i0;
2118   goto l12;
2119 l3:
2120   i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48766)))), &_td_OOC_SSA__ConstDesc);
2121   if (i1) goto l6;
2122   i1=0u;
2123   goto l8;
2124 l6:
2125   i1 = *(OOC_INT8*)((_check_pointer(i0, 48792))+9);
2126   i1 = (i1<10)==(i2<10);
2127 
2128 l8:
2129   if (i1) goto l10;
2130   i1 = (OOC_INT64)pb;
2131   i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i1, 42, i2);
2132   OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i0, 1);
2133   return (OOC_SSA__Result)i1;
2134   goto l12;
2135 l10:
2136   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48889)))), &_td_OOC_SSA__ConstDesc, 48889)), 48895))+80);
2137   i1 = (OOC_INT64)pb;
2138   i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i1, (Object_Boxed__Object)i0, i2, (OOC_SymbolTable__Type)(OOC_INT64)0);
2139   return (OOC_SSA__Result)i0;
2140 l12:
2141   _failed_function(48410); return 0;
2142   ;
2143 }
2144 
OOC_SSA__ProcBlockDesc_FixSubclassInstr(OOC_SSA__ProcBlock pb,OOC_SSA__Instr instr,OOC_INT8 subclass)2145 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_FixSubclassInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr instr, OOC_INT8 subclass) {
2146   register OOC_INT64 i0,i1,i2;
2147   OOC_SSA__Result res;
2148 
2149   i0 = subclass;
2150   i1 = (OOC_INT64)instr;
2151   i2 = (OOC_INT64)pb;
2152   i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_FixSubclass((OOC_SSA__ProcBlock)i2, (OOC_SSA__Result)i1, i0);
2153   res = (OOC_SSA__Result)i0;
2154   return (OOC_SSA__Instr)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 49348)))), &_td_OOC_SSA__InstrDesc, 49348));
2155   ;
2156 }
2157 
OOC_SSA__Add(OOC_SSA__Instr * list,OOC_SSA__Instr instr)2158 static void OOC_SSA__Add(OOC_SSA__Instr *list, OOC_SSA__Instr instr) {
2159   register OOC_INT64 i0,i1,i2;
2160 
2161   i0 = (OOC_INT64)instr;
2162   *(OOC_INT64*)((_check_pointer(i0, 49446))+64) = (OOC_INT64)0;
2163   i1 = (OOC_INT64)*list;
2164   *(OOC_INT64*)((_check_pointer(i0, 49475))+56) = i1;
2165   i1 = (OOC_INT64)*list;
2166   i2 = i1!=(OOC_INT64)0;
2167   if (!i2) goto l4;
2168   *(OOC_INT64*)((_check_pointer(i1, 49531))+64) = i0;
2169 l4:
2170   *list = (OOC_SSA__Instr)i0;
2171   return;
2172   ;
2173 }
2174 
OOC_SSA__Remove(OOC_SSA__Instr * list,OOC_SSA__Instr instr)2175 static void OOC_SSA__Remove(OOC_SSA__Instr *list, OOC_SSA__Instr instr) {
2176   register OOC_INT64 i0,i1,i2;
2177 
2178   i0 = (OOC_INT64)instr;
2179   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49662))+64);
2180   i1 = i1==(OOC_INT64)0;
2181   if (i1) goto l3;
2182   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49737))+64);
2183   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49768))+56);
2184   *(OOC_INT64*)((_check_pointer(i1, 49748))+56) = i2;
2185   goto l4;
2186 l3:
2187   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49705))+56);
2188   *list = (OOC_SSA__Instr)i1;
2189 l4:
2190   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49802))+56);
2191   i1 = i1!=(OOC_INT64)0;
2192   if (!i1) goto l7;
2193   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49837))+56);
2194   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49868))+64);
2195   *(OOC_INT64*)((_check_pointer(i1, 49848))+64) = i0;
2196 l7:
2197   return;
2198   ;
2199 }
2200 
OOC_SSA__ProcBlockDesc_TopSort(OOC_SSA__ProcBlock pb)2201 OOC_CHAR8 OOC_SSA__ProcBlockDesc_TopSort(OOC_SSA__ProcBlock pb) {
2202   register OOC_INT64 i0,i1,i2,i3,i4;
2203   OOC_SSA__Instr ready;
2204   OOC_SSA__Instr waiting;
2205   OOC_SSA__Instr instr;
2206   OOC_SSA__Instr next;
2207   OOC_INT32 opndCount;
2208   OOC_SSA__Result res;
2209   OOC_SSA__Opnd use;
2210 
2211   ready = (OOC_SSA__Instr)(OOC_INT64)0;
2212   waiting = (OOC_SSA__Instr)(OOC_INT64)0;
2213   i0 = (OOC_INT64)pb;
2214   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 50279))+24);
2215   instr = (OOC_SSA__Instr)i1;
2216   i2 = i1!=(OOC_INT64)0;
2217   if (!i2) goto l12;
2218 l3_loop:
2219   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 50338))+56);
2220   next = (OOC_SSA__Instr)i2;
2221   i3 = OOC_SSA__InstrDesc_SizeOpndList((OOC_SSA__Instr)i1);
2222   opndCount = i3;
2223   *(OOC_INT32*)((_check_pointer(i1, 50405))+40) = i3;
2224   i3 = i3==0;
2225   if (i3) goto l6;
2226   OOC_SSA__Add((void*)(OOC_INT64)&waiting, (OOC_SSA__Instr)i1);
2227   goto l7;
2228 l6:
2229   OOC_SSA__Add((void*)(OOC_INT64)&ready, (OOC_SSA__Instr)i1);
2230 l7:
2231   instr = (OOC_SSA__Instr)i2;
2232   i1 = i2!=(OOC_INT64)0;
2233   if (!i1) goto l12;
2234   i1=i2;
2235   goto l3_loop;
2236 l12:
2237   *(OOC_INT64*)((_check_pointer(i0, 50572))+24) = (OOC_INT64)0;
2238   *(OOC_INT64*)((_check_pointer(i0, 50598))+32) = (OOC_INT64)0;
2239   i1 = (OOC_INT64)ready;
2240   i1 = i1!=(OOC_INT64)0;
2241   if (!i1) goto l39;
2242 l15_loop:
2243   i1 = (OOC_INT64)ready;
2244   instr = (OOC_SSA__Instr)i1;
2245   OOC_SSA__Remove((void*)(OOC_INT64)&ready, (OOC_SSA__Instr)i1);
2246   OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
2247   res = (OOC_SSA__Result)i1;
2248   i2 = i1!=(OOC_INT64)0;
2249   if (!i2) goto l34;
2250 l18_loop:
2251   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 50905))+24);
2252   use = (OOC_SSA__Opnd)i2;
2253   i3 = i2!=(OOC_INT64)0;
2254   if (!i3) goto l29;
2255 l21_loop:
2256   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 50963))+24);
2257   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 50963))+24);
2258   i4 = *(OOC_INT32*)((_check_pointer(i4, 50970))+40);
2259   *(OOC_INT32*)((_check_pointer(i3, 50970))+40) = (i4-1);
2260   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 50998))+24);
2261   i3 = *(OOC_INT32*)((_check_pointer(i3, 51005))+40);
2262   i3 = i3==0;
2263   if (!i3) goto l24;
2264   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 51056))+24);
2265   OOC_SSA__Remove((void*)(OOC_INT64)&waiting, (OOC_SSA__Instr)i3);
2266   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 51093))+24);
2267   OOC_SSA__Add((void*)(OOC_INT64)&ready, (OOC_SSA__Instr)i3);
2268 l24:
2269   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 51137))+32);
2270   use = (OOC_SSA__Opnd)i2;
2271   i3 = i2!=(OOC_INT64)0;
2272   if (i3) goto l21_loop;
2273 l29:
2274   i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 51178));
2275   res = (OOC_SSA__Result)i1;
2276   i2 = i1!=(OOC_INT64)0;
2277   if (i2) goto l18_loop;
2278 l34:
2279   i1 = (OOC_INT64)ready;
2280   i1 = i1!=(OOC_INT64)0;
2281   if (i1) goto l15_loop;
2282 l39:
2283   i0 = (OOC_INT64)waiting;
2284   return (i0==(OOC_INT64)0);
2285   ;
2286 }
2287 
OOC_SSA__ProcBlockDesc_Reverse(OOC_SSA__ProcBlock pb)2288 void OOC_SSA__ProcBlockDesc_Reverse(OOC_SSA__ProcBlock pb) {
2289   register OOC_INT64 i0,i1,i2;
2290   OOC_SSA__Instr newList;
2291   OOC_SSA__Instr instr;
2292   OOC_SSA__Instr next;
2293 
2294   newList = (OOC_SSA__Instr)(OOC_INT64)0;
2295   i0 = (OOC_INT64)pb;
2296   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51436))+24);
2297   instr = (OOC_SSA__Instr)i1;
2298   i2 = i1!=(OOC_INT64)0;
2299   if (!i2) goto l8;
2300 l3_loop:
2301   i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 51495))+56);
2302   next = (OOC_SSA__Instr)i2;
2303   OOC_SSA__Add((void*)(OOC_INT64)&newList, (OOC_SSA__Instr)i1);
2304   instr = (OOC_SSA__Instr)i2;
2305   i1 = i2!=(OOC_INT64)0;
2306   if (!i1) goto l8;
2307   i1=i2;
2308   goto l3_loop;
2309 l8:
2310   i1 = (OOC_INT64)newList;
2311   *(OOC_INT64*)((_check_pointer(i0, 51571))+24) = i1;
2312   return;
2313   ;
2314 }
2315 
OOC_SSA__ProcBlockDesc_GetEnter(OOC_SSA__ProcBlock pb)2316 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_GetEnter(OOC_SSA__ProcBlock pb) {
2317   register OOC_INT64 i0,i1;
2318   OOC_SSA__Instr instr;
2319 
2320   i0 = (OOC_INT64)pb;
2321   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51704))+24);
2322   instr = (OOC_SSA__Instr)i0;
2323   i1 = i0!=(OOC_INT64)0;
2324   if (i1) goto l3;
2325   i1=0u;
2326   goto l5;
2327 l3:
2328   i1 = *(OOC_INT8*)((_check_pointer(i0, 51749))+72);
2329   i1 = i1!=4;
2330 
2331 l5:
2332   if (!i1) goto l17;
2333 l8_loop:
2334   i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51797))+56);
2335   instr = (OOC_SSA__Instr)i0;
2336   i1 = i0!=(OOC_INT64)0;
2337   if (i1) goto l11;
2338   i1=0u;
2339   goto l13;
2340 l11:
2341   i1 = *(OOC_INT8*)((_check_pointer(i0, 51749))+72);
2342   i1 = i1!=4;
2343 
2344 l13:
2345   if (i1) goto l8_loop;
2346 l17:
2347   return (OOC_SSA__Instr)i0;
2348   ;
2349 }
2350 
OOC_SSA__ProcBlockDesc_Destroy(OOC_SSA__ProcBlock pb)2351 void OOC_SSA__ProcBlockDesc_Destroy(OOC_SSA__ProcBlock pb) {
2352   register OOC_INT64 i0,i1,i2,i3,i4,i5;
2353   OOC_SSA__Instr instr;
2354   OOC_SSA__Instr nextInstr;
2355   OOC_SSA__Opnd opnd;
2356   OOC_SSA__Opnd nextOpnd;
2357   OOC_SSA__Result res;
2358   OOC_SSA__Result nextResult;
2359   OOC_INT32 i;
2360 
2361   i0 = (OOC_INT64)pb;
2362   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 52135))+24);
2363   instr = (OOC_SSA__Instr)i1;
2364   i2 = i1!=(OOC_INT64)0;
2365   if (!i2) goto l27;
2366 l3_loop:
2367   i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 52198))+56);
2368   nextInstr = (OOC_SSA__Instr)i3;
2369   i4 = *(OOC_INT8*)((_check_pointer(i1, 52225))+72);
2370   i4 = i4!=81;
2371   if (!i4) goto l22;
2372   i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 52361))+48);
2373   opnd = (OOC_SSA__Opnd)i4;
2374   i5 = i4!=(OOC_INT64)0;
2375   if (!i5) goto l13;
2376 l8_loop:
2377   i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 52428))+16);
2378   nextOpnd = (OOC_SSA__Opnd)i5;
2379   *(OOC_INT64*)(_check_pointer(i4, 52453)) = (OOC_INT64)0;
2380   *(OOC_INT64*)((_check_pointer(i4, 52480))+16) = (OOC_INT64)0;
2381   *(OOC_INT64*)((_check_pointer(i4, 52512))+24) = (OOC_INT64)0;
2382   *(OOC_INT64*)((_check_pointer(i4, 52541))+32) = (OOC_INT64)0;
2383   opnd = (OOC_SSA__Opnd)i5;
2384   i4 = i5!=(OOC_INT64)0;
2385   if (!i4) goto l13;
2386   i4=i5;
2387   goto l8_loop;
2388 l13:
2389   res = (OOC_SSA__Result)i1;
2390   if (!i2) goto l21;
2391   i2=i1;
2392 l16_loop:
2393   i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 52686));
2394   nextResult = (OOC_SSA__Result)i4;
2395   *(OOC_INT64*)(_check_pointer(i2, 52712)) = (OOC_INT64)0;
2396   *(OOC_INT64*)((_check_pointer(i2, 52745))+16) = (OOC_INT64)0;
2397   *(OOC_INT64*)((_check_pointer(i2, 52773))+24) = (OOC_INT64)0;
2398   *(OOC_INT64*)((_check_pointer(i2, 52803))+32) = (OOC_INT64)0;
2399   *(OOC_INT32*)((_check_pointer(i2, 52830))+40) = 0;
2400   res = (OOC_SSA__Result)i4;
2401   i2 = i4!=(OOC_INT64)0;
2402   if (!i2) goto l21;
2403   i2=i4;
2404   goto l16_loop;
2405 l21:
2406   *(OOC_INT64*)((_check_pointer(i1, 52908))+48) = (OOC_INT64)0;
2407   *(OOC_INT64*)((_check_pointer(i1, 52939))+56) = (OOC_INT64)0;
2408   *(OOC_INT64*)((_check_pointer(i1, 52971))+64) = (OOC_INT64)0;
2409   *(OOC_INT32*)((_check_pointer(i1, 53003))+76) = 0;
2410 l22:
2411   instr = (OOC_SSA__Instr)i3;
2412   i1 = i3!=(OOC_INT64)0;
2413   if (!i1) goto l27;
2414   i2=i1;i1=i3;
2415   goto l3_loop;
2416 l27:
2417   *(OOC_INT64*)(_check_pointer(i0, 53071)) = (OOC_INT64)0;
2418   *(OOC_INT64*)((_check_pointer(i0, 53099))+8) = (OOC_INT64)0;
2419   *(OOC_INT64*)((_check_pointer(i0, 53126))+24) = (OOC_INT64)0;
2420   *(OOC_INT64*)((_check_pointer(i0, 53151))+32) = (OOC_INT64)0;
2421   *(OOC_INT64*)((_check_pointer(i0, 53176))+40) = (OOC_INT64)0;
2422   i = 0;
2423   i1=0;
2424 l28_loop:
2425   i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 53246))+56)+(_check_index(i1, 12, OOC_UINT32, 53255))*8);
2426   i2 = i2!=(OOC_INT64)0;
2427   if (!i2) goto l31;
2428   i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 53281))+56)+(_check_index(i1, 12, OOC_UINT32, 53290))*8);
2429   ADT_Dictionary__DictionaryDesc_Destroy((ADT_Dictionary__Dictionary)i2);
2430   *(OOC_INT64*)(((_check_pointer(i0, 53307))+56)+(_check_index(i1, 12, OOC_UINT32, 53316))*8) = (OOC_INT64)0;
2431 l31:
2432   i1 = i1+1;
2433   i = i1;
2434   i2 = i1<=11;
2435   if (i2) goto l28_loop;
2436 l35:
2437   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53358))+152);
2438   i1 = i1!=(OOC_INT64)0;
2439   if (!i1) goto l38;
2440   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53386))+152);
2441   ADT_Dictionary__DictionaryDesc_Destroy((ADT_Dictionary__Dictionary)i1);
2442   *(OOC_INT64*)((_check_pointer(i0, 53407))+152) = (OOC_INT64)0;
2443 l38:
2444   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53442))+160);
2445   i1 = i1!=(OOC_INT64)0;
2446   if (!i1) goto l41;
2447   i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53470))+160);
2448   ADT_Dictionary__DictionaryDesc_Destroy((ADT_Dictionary__Dictionary)i1);
2449   *(OOC_INT64*)((_check_pointer(i0, 53491))+160) = (OOC_INT64)0;
2450 l41:
2451   return;
2452   ;
2453 }
2454 
OOC_OOC_SSA_init(void)2455 void OOC_OOC_SSA_init(void) {
2456   register OOC_INT64 i0,i1;
2457 
2458   i0 = (OOC_INT64)Object_BigInt__zero;
2459   i0 = (OOC_INT64)Object_BigInt__BigIntDesc_Add((Object_BigInt__BigInt)i0, (Object_BigInt__BigInt)i0);
2460   i1 = (OOC_INT64)Object_BigInt__zero;
2461   OOC_SSA__nil = (Object_BigInt__BigInt)i0;
2462   _assert((i0!=i1), 127, 53608);
2463   return;
2464   ;
2465 }
2466 
OOC_OOC_SSA_destroy(void)2467 void OOC_OOC_SSA_destroy(void) {
2468 }
2469 
2470 /* --- */
2471