Make JetStream 2
[WebKit-https.git] / PerformanceTests / JetStream2 / ARES-6 / Air / payload-imaging-gaussian-blur-gaussianBlur.js
1 "use strict";
2 // Generated by Air::dumpAsJS from gaussianBlur#A8vcYg in Kraken/imaging-gaussian-blur
3 function createPayloadImagingGaussianBlurGaussianBlur()
4 {
5     let code = new Code();
6     let bb0 = code.addBlock();
7     let bb1 = code.addBlock();
8     let bb2 = code.addBlock();
9     let bb3 = code.addBlock();
10     let bb4 = code.addBlock();
11     let bb5 = code.addBlock();
12     let bb6 = code.addBlock();
13     let bb7 = code.addBlock();
14     let bb8 = code.addBlock();
15     let bb9 = code.addBlock();
16     let bb10 = code.addBlock();
17     let bb11 = code.addBlock();
18     let bb12 = code.addBlock();
19     let bb13 = code.addBlock();
20     let bb14 = code.addBlock();
21     let bb15 = code.addBlock();
22     let bb16 = code.addBlock();
23     let bb17 = code.addBlock();
24     let bb18 = code.addBlock();
25     let bb19 = code.addBlock();
26     let bb20 = code.addBlock();
27     let bb21 = code.addBlock();
28     let bb22 = code.addBlock();
29     let bb23 = code.addBlock();
30     let bb24 = code.addBlock();
31     let bb25 = code.addBlock();
32     let bb26 = code.addBlock();
33     let bb27 = code.addBlock();
34     let bb28 = code.addBlock();
35     let bb29 = code.addBlock();
36     let bb30 = code.addBlock();
37     let bb31 = code.addBlock();
38     let bb32 = code.addBlock();
39     let bb33 = code.addBlock();
40     let bb34 = code.addBlock();
41     let bb35 = code.addBlock();
42     let bb36 = code.addBlock();
43     let slot0 = code.addStackSlot(40, Locked);
44     let slot1 = code.addStackSlot(8, Spill);
45     let slot2 = code.addStackSlot(8, Spill);
46     let slot3 = code.addStackSlot(4, Spill);
47     let slot4 = code.addStackSlot(8, Spill);
48     let slot5 = code.addStackSlot(8, Spill);
49     let slot6 = code.addStackSlot(40, Locked);
50     slot6.setOffsetFromFP(-40);
51     let tmp141 = code.newTmp(GP);
52     let tmp140 = code.newTmp(GP);
53     let tmp139 = code.newTmp(GP);
54     let tmp138 = code.newTmp(GP);
55     let tmp137 = code.newTmp(GP);
56     let tmp136 = code.newTmp(GP);
57     let tmp135 = code.newTmp(GP);
58     let tmp134 = code.newTmp(GP);
59     let tmp133 = code.newTmp(GP);
60     let tmp132 = code.newTmp(GP);
61     let tmp131 = code.newTmp(GP);
62     let tmp130 = code.newTmp(GP);
63     let tmp129 = code.newTmp(GP);
64     let tmp128 = code.newTmp(GP);
65     let tmp127 = code.newTmp(GP);
66     let tmp126 = code.newTmp(GP);
67     let tmp125 = code.newTmp(GP);
68     let tmp124 = code.newTmp(GP);
69     let tmp123 = code.newTmp(GP);
70     let tmp122 = code.newTmp(GP);
71     let tmp121 = code.newTmp(GP);
72     let tmp120 = code.newTmp(GP);
73     let tmp119 = code.newTmp(GP);
74     let tmp118 = code.newTmp(GP);
75     let tmp117 = code.newTmp(GP);
76     let tmp116 = code.newTmp(GP);
77     let tmp115 = code.newTmp(GP);
78     let tmp114 = code.newTmp(GP);
79     let tmp113 = code.newTmp(GP);
80     let tmp112 = code.newTmp(GP);
81     let tmp111 = code.newTmp(GP);
82     let tmp110 = code.newTmp(GP);
83     let tmp109 = code.newTmp(GP);
84     let tmp108 = code.newTmp(GP);
85     let tmp107 = code.newTmp(GP);
86     let tmp106 = code.newTmp(GP);
87     let tmp105 = code.newTmp(GP);
88     let tmp104 = code.newTmp(GP);
89     let tmp103 = code.newTmp(GP);
90     let tmp102 = code.newTmp(GP);
91     let tmp101 = code.newTmp(GP);
92     let tmp100 = code.newTmp(GP);
93     let tmp99 = code.newTmp(GP);
94     let tmp98 = code.newTmp(GP);
95     let tmp97 = code.newTmp(GP);
96     let tmp96 = code.newTmp(GP);
97     let tmp95 = code.newTmp(GP);
98     let tmp94 = code.newTmp(GP);
99     let tmp93 = code.newTmp(GP);
100     let tmp92 = code.newTmp(GP);
101     let tmp91 = code.newTmp(GP);
102     let tmp90 = code.newTmp(GP);
103     let tmp89 = code.newTmp(GP);
104     let tmp88 = code.newTmp(GP);
105     let tmp87 = code.newTmp(GP);
106     let tmp86 = code.newTmp(GP);
107     let tmp85 = code.newTmp(GP);
108     let tmp84 = code.newTmp(GP);
109     let tmp83 = code.newTmp(GP);
110     let tmp82 = code.newTmp(GP);
111     let tmp81 = code.newTmp(GP);
112     let tmp80 = code.newTmp(GP);
113     let tmp79 = code.newTmp(GP);
114     let tmp78 = code.newTmp(GP);
115     let tmp77 = code.newTmp(GP);
116     let tmp76 = code.newTmp(GP);
117     let tmp75 = code.newTmp(GP);
118     let tmp74 = code.newTmp(GP);
119     let tmp73 = code.newTmp(GP);
120     let tmp72 = code.newTmp(GP);
121     let tmp71 = code.newTmp(GP);
122     let tmp70 = code.newTmp(GP);
123     let tmp69 = code.newTmp(GP);
124     let tmp68 = code.newTmp(GP);
125     let tmp67 = code.newTmp(GP);
126     let tmp66 = code.newTmp(GP);
127     let tmp65 = code.newTmp(GP);
128     let tmp64 = code.newTmp(GP);
129     let tmp63 = code.newTmp(GP);
130     let tmp62 = code.newTmp(GP);
131     let tmp61 = code.newTmp(GP);
132     let tmp60 = code.newTmp(GP);
133     let tmp59 = code.newTmp(GP);
134     let tmp58 = code.newTmp(GP);
135     let tmp57 = code.newTmp(GP);
136     let tmp56 = code.newTmp(GP);
137     let tmp55 = code.newTmp(GP);
138     let tmp54 = code.newTmp(GP);
139     let tmp53 = code.newTmp(GP);
140     let tmp52 = code.newTmp(GP);
141     let tmp51 = code.newTmp(GP);
142     let tmp50 = code.newTmp(GP);
143     let tmp49 = code.newTmp(GP);
144     let tmp48 = code.newTmp(GP);
145     let tmp47 = code.newTmp(GP);
146     let tmp46 = code.newTmp(GP);
147     let tmp45 = code.newTmp(GP);
148     let tmp44 = code.newTmp(GP);
149     let tmp43 = code.newTmp(GP);
150     let tmp42 = code.newTmp(GP);
151     let tmp41 = code.newTmp(GP);
152     let tmp40 = code.newTmp(GP);
153     let tmp39 = code.newTmp(GP);
154     let tmp38 = code.newTmp(GP);
155     let tmp37 = code.newTmp(GP);
156     let tmp36 = code.newTmp(GP);
157     let tmp35 = code.newTmp(GP);
158     let tmp34 = code.newTmp(GP);
159     let tmp33 = code.newTmp(GP);
160     let tmp32 = code.newTmp(GP);
161     let tmp31 = code.newTmp(GP);
162     let tmp30 = code.newTmp(GP);
163     let tmp29 = code.newTmp(GP);
164     let tmp28 = code.newTmp(GP);
165     let tmp27 = code.newTmp(GP);
166     let tmp26 = code.newTmp(GP);
167     let tmp25 = code.newTmp(GP);
168     let tmp24 = code.newTmp(GP);
169     let tmp23 = code.newTmp(GP);
170     let tmp22 = code.newTmp(GP);
171     let tmp21 = code.newTmp(GP);
172     let tmp20 = code.newTmp(GP);
173     let tmp19 = code.newTmp(GP);
174     let tmp18 = code.newTmp(GP);
175     let tmp17 = code.newTmp(GP);
176     let tmp16 = code.newTmp(GP);
177     let tmp15 = code.newTmp(GP);
178     let tmp14 = code.newTmp(GP);
179     let tmp13 = code.newTmp(GP);
180     let tmp12 = code.newTmp(GP);
181     let tmp11 = code.newTmp(GP);
182     let tmp10 = code.newTmp(GP);
183     let tmp9 = code.newTmp(GP);
184     let tmp8 = code.newTmp(GP);
185     let tmp7 = code.newTmp(GP);
186     let tmp6 = code.newTmp(GP);
187     let tmp5 = code.newTmp(GP);
188     let tmp4 = code.newTmp(GP);
189     let tmp3 = code.newTmp(GP);
190     let tmp2 = code.newTmp(GP);
191     let tmp1 = code.newTmp(GP);
192     let tmp0 = code.newTmp(GP);
193     let ftmp74 = code.newTmp(FP);
194     let ftmp73 = code.newTmp(FP);
195     let ftmp72 = code.newTmp(FP);
196     let ftmp71 = code.newTmp(FP);
197     let ftmp70 = code.newTmp(FP);
198     let ftmp69 = code.newTmp(FP);
199     let ftmp68 = code.newTmp(FP);
200     let ftmp67 = code.newTmp(FP);
201     let ftmp66 = code.newTmp(FP);
202     let ftmp65 = code.newTmp(FP);
203     let ftmp64 = code.newTmp(FP);
204     let ftmp63 = code.newTmp(FP);
205     let ftmp62 = code.newTmp(FP);
206     let ftmp61 = code.newTmp(FP);
207     let ftmp60 = code.newTmp(FP);
208     let ftmp59 = code.newTmp(FP);
209     let ftmp58 = code.newTmp(FP);
210     let ftmp57 = code.newTmp(FP);
211     let ftmp56 = code.newTmp(FP);
212     let ftmp55 = code.newTmp(FP);
213     let ftmp54 = code.newTmp(FP);
214     let ftmp53 = code.newTmp(FP);
215     let ftmp52 = code.newTmp(FP);
216     let ftmp51 = code.newTmp(FP);
217     let ftmp50 = code.newTmp(FP);
218     let ftmp49 = code.newTmp(FP);
219     let ftmp48 = code.newTmp(FP);
220     let ftmp47 = code.newTmp(FP);
221     let ftmp46 = code.newTmp(FP);
222     let ftmp45 = code.newTmp(FP);
223     let ftmp44 = code.newTmp(FP);
224     let ftmp43 = code.newTmp(FP);
225     let ftmp42 = code.newTmp(FP);
226     let ftmp41 = code.newTmp(FP);
227     let ftmp40 = code.newTmp(FP);
228     let ftmp39 = code.newTmp(FP);
229     let ftmp38 = code.newTmp(FP);
230     let ftmp37 = code.newTmp(FP);
231     let ftmp36 = code.newTmp(FP);
232     let ftmp35 = code.newTmp(FP);
233     let ftmp34 = code.newTmp(FP);
234     let ftmp33 = code.newTmp(FP);
235     let ftmp32 = code.newTmp(FP);
236     let ftmp31 = code.newTmp(FP);
237     let ftmp30 = code.newTmp(FP);
238     let ftmp29 = code.newTmp(FP);
239     let ftmp28 = code.newTmp(FP);
240     let ftmp27 = code.newTmp(FP);
241     let ftmp26 = code.newTmp(FP);
242     let ftmp25 = code.newTmp(FP);
243     let ftmp24 = code.newTmp(FP);
244     let ftmp23 = code.newTmp(FP);
245     let ftmp22 = code.newTmp(FP);
246     let ftmp21 = code.newTmp(FP);
247     let ftmp20 = code.newTmp(FP);
248     let ftmp19 = code.newTmp(FP);
249     let ftmp18 = code.newTmp(FP);
250     let ftmp17 = code.newTmp(FP);
251     let ftmp16 = code.newTmp(FP);
252     let ftmp15 = code.newTmp(FP);
253     let ftmp14 = code.newTmp(FP);
254     let ftmp13 = code.newTmp(FP);
255     let ftmp12 = code.newTmp(FP);
256     let ftmp11 = code.newTmp(FP);
257     let ftmp10 = code.newTmp(FP);
258     let ftmp9 = code.newTmp(FP);
259     let ftmp8 = code.newTmp(FP);
260     let ftmp7 = code.newTmp(FP);
261     let ftmp6 = code.newTmp(FP);
262     let ftmp5 = code.newTmp(FP);
263     let ftmp4 = code.newTmp(FP);
264     let ftmp3 = code.newTmp(FP);
265     let ftmp2 = code.newTmp(FP);
266     let ftmp1 = code.newTmp(FP);
267     let ftmp0 = code.newTmp(FP);
268     let inst;
269     let arg;
270     bb0.successors.push(new FrequentedBlock(bb2, Normal));
271     bb0.successors.push(new FrequentedBlock(bb1, Rare));
272     inst = new Inst(Move);
273     arg = Arg.createBigImm(144305904, 1);
274     inst.args.push(arg);
275     arg = Arg.createTmp(Reg.rax);
276     inst.args.push(arg);
277     bb0.append(inst);
278     inst = new Inst(Move);
279     arg = Arg.createTmp(Reg.rax);
280     inst.args.push(arg);
281     arg = Arg.createAddr(Reg.rbp, 16);
282     inst.args.push(arg);
283     bb0.append(inst);
284     inst = new Inst(Patch);
285     arg = Arg.createSpecial();
286     inst.args.push(arg);
287     arg = Arg.createTmp(Reg.rbp);
288     inst.args.push(arg);
289     arg = Arg.createTmp(Reg.rax);
290     inst.args.push(arg);
291     inst.patchHasNonArgEffects = true;
292     inst.extraEarlyClobberedRegs = new Set();
293     inst.extraClobberedRegs = new Set();
294     inst.extraEarlyClobberedRegs.add(Reg.r11);
295     inst.extraClobberedRegs.add(Reg.r11);
296     inst.patchArgData = [];
297     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
298     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
299     inst.patchArgData.push({role: Arg.Scratch, type: GP, width: 64});
300     bb0.append(inst);
301     inst = new Inst(Move);
302     arg = Arg.createBigImm(142547168, 1);
303     inst.args.push(arg);
304     arg = Arg.createTmp(Reg.rax);
305     inst.args.push(arg);
306     bb0.append(inst);
307     inst = new Inst(Move);
308     arg = Arg.createAddr(Reg.rax, 0);
309     inst.args.push(arg);
310     arg = Arg.createTmp(Reg.rax);
311     inst.args.push(arg);
312     bb0.append(inst);
313     inst = new Inst(Move);
314     arg = Arg.createTmp(Reg.rax);
315     inst.args.push(arg);
316     arg = Arg.createStack(slot5, 0);
317     inst.args.push(arg);
318     bb0.append(inst);
319     inst = new Inst(Move);
320     arg = Arg.createBigImm(142547184, 1);
321     inst.args.push(arg);
322     arg = Arg.createTmp(Reg.rax);
323     inst.args.push(arg);
324     bb0.append(inst);
325     inst = new Inst(Move);
326     arg = Arg.createAddr(Reg.rax, 0);
327     inst.args.push(arg);
328     arg = Arg.createTmp(Reg.r12);
329     inst.args.push(arg);
330     bb0.append(inst);
331     inst = new Inst(Move);
332     arg = Arg.createBigImm(142547192, 1);
333     inst.args.push(arg);
334     arg = Arg.createTmp(Reg.rax);
335     inst.args.push(arg);
336     bb0.append(inst);
337     inst = new Inst(Move);
338     arg = Arg.createAddr(Reg.rax, 0);
339     inst.args.push(arg);
340     arg = Arg.createTmp(Reg.rsi);
341     inst.args.push(arg);
342     bb0.append(inst);
343     inst = new Inst(Move);
344     arg = Arg.createBigImm(142547200, 1);
345     inst.args.push(arg);
346     arg = Arg.createTmp(Reg.rax);
347     inst.args.push(arg);
348     bb0.append(inst);
349     inst = new Inst(Move);
350     arg = Arg.createAddr(Reg.rax, 0);
351     inst.args.push(arg);
352     arg = Arg.createTmp(Reg.rdx);
353     inst.args.push(arg);
354     bb0.append(inst);
355     inst = new Inst(Move);
356     arg = Arg.createBigImm(142547208, 1);
357     inst.args.push(arg);
358     arg = Arg.createTmp(Reg.rax);
359     inst.args.push(arg);
360     bb0.append(inst);
361     inst = new Inst(Move);
362     arg = Arg.createAddr(Reg.rax, 0);
363     inst.args.push(arg);
364     arg = Arg.createTmp(Reg.rcx);
365     inst.args.push(arg);
366     bb0.append(inst);
367     inst = new Inst(Move);
368     arg = Arg.createBigImm(142547216, 1);
369     inst.args.push(arg);
370     arg = Arg.createTmp(Reg.rax);
371     inst.args.push(arg);
372     bb0.append(inst);
373     inst = new Inst(Move);
374     arg = Arg.createAddr(Reg.rax, 0);
375     inst.args.push(arg);
376     arg = Arg.createTmp(Reg.r10);
377     inst.args.push(arg);
378     bb0.append(inst);
379     inst = new Inst(Move);
380     arg = Arg.createBigImm(142547224, 1);
381     inst.args.push(arg);
382     arg = Arg.createTmp(Reg.rax);
383     inst.args.push(arg);
384     bb0.append(inst);
385     inst = new Inst(Move);
386     arg = Arg.createAddr(Reg.rax, 0);
387     inst.args.push(arg);
388     arg = Arg.createTmp(Reg.r11);
389     inst.args.push(arg);
390     bb0.append(inst);
391     inst = new Inst(Move);
392     arg = Arg.createBigImm(142547232, 1);
393     inst.args.push(arg);
394     arg = Arg.createTmp(Reg.rax);
395     inst.args.push(arg);
396     bb0.append(inst);
397     inst = new Inst(Move);
398     arg = Arg.createAddr(Reg.rax, 0);
399     inst.args.push(arg);
400     arg = Arg.createTmp(Reg.rax);
401     inst.args.push(arg);
402     bb0.append(inst);
403     inst = new Inst(Move);
404     arg = Arg.createBigImm(142547240, 1);
405     inst.args.push(arg);
406     arg = Arg.createTmp(Reg.rdi);
407     inst.args.push(arg);
408     bb0.append(inst);
409     inst = new Inst(Move);
410     arg = Arg.createAddr(Reg.rdi, 0);
411     inst.args.push(arg);
412     arg = Arg.createTmp(Reg.rbx);
413     inst.args.push(arg);
414     bb0.append(inst);
415     inst = new Inst(Move);
416     arg = Arg.createBigImm(0, -65536);
417     inst.args.push(arg);
418     arg = Arg.createTmp(Reg.rdi);
419     inst.args.push(arg);
420     bb0.append(inst);
421     inst = new Inst(Add64);
422     arg = Arg.createTmp(Reg.r12);
423     inst.args.push(arg);
424     arg = Arg.createTmp(Reg.rdi);
425     inst.args.push(arg);
426     arg = Arg.createTmp(Reg.r8);
427     inst.args.push(arg);
428     bb0.append(inst);
429     inst = new Inst(Move64ToDouble);
430     arg = Arg.createTmp(Reg.r8);
431     inst.args.push(arg);
432     arg = Arg.createTmp(Reg.xmm2);
433     inst.args.push(arg);
434     bb0.append(inst);
435     inst = new Inst(BranchDouble);
436     arg = Arg.createDoubleCond(DoubleEqual);
437     inst.args.push(arg);
438     arg = Arg.createTmp(Reg.xmm2);
439     inst.args.push(arg);
440     arg = Arg.createTmp(Reg.xmm2);
441     inst.args.push(arg);
442     bb0.append(inst);
443     bb1.successors.push(new FrequentedBlock(bb2, Normal));
444     bb1.predecessors.push(bb0);
445     inst = new Inst(Patch);
446     arg = Arg.createSpecial();
447     inst.args.push(arg);
448     arg = Arg.createRelCond(Below);
449     inst.args.push(arg);
450     arg = Arg.createTmp(Reg.r12);
451     inst.args.push(arg);
452     arg = Arg.createTmp(Reg.rdi);
453     inst.args.push(arg);
454     arg = Arg.createTmp(Reg.r12);
455     inst.args.push(arg);
456     arg = Arg.createStack(slot5, 0);
457     inst.args.push(arg);
458     arg = Arg.createTmp(Reg.r12);
459     inst.args.push(arg);
460     arg = Arg.createTmp(Reg.rsi);
461     inst.args.push(arg);
462     arg = Arg.createTmp(Reg.rdx);
463     inst.args.push(arg);
464     arg = Arg.createTmp(Reg.rcx);
465     inst.args.push(arg);
466     arg = Arg.createTmp(Reg.r10);
467     inst.args.push(arg);
468     arg = Arg.createTmp(Reg.r11);
469     inst.args.push(arg);
470     arg = Arg.createTmp(Reg.rax);
471     inst.args.push(arg);
472     arg = Arg.createTmp(Reg.rbx);
473     inst.args.push(arg);
474     inst.patchHasNonArgEffects = true;
475     inst.extraEarlyClobberedRegs = new Set();
476     inst.extraClobberedRegs = new Set();
477     inst.patchArgData = [];
478     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
479     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
480     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
481     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
482     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
483     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
484     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
485     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
486     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
487     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
488     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
489     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
490     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
491     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
492     bb1.append(inst);
493     inst = new Inst(ConvertInt32ToDouble);
494     arg = Arg.createTmp(Reg.r12);
495     inst.args.push(arg);
496     arg = Arg.createTmp(Reg.xmm2);
497     inst.args.push(arg);
498     bb1.append(inst);
499     inst = new Inst(Jump);
500     bb1.append(inst);
501     bb2.successors.push(new FrequentedBlock(bb4, Normal));
502     bb2.successors.push(new FrequentedBlock(bb3, Rare));
503     bb2.predecessors.push(bb0);
504     bb2.predecessors.push(bb1);
505     inst = new Inst(Patch);
506     arg = Arg.createSpecial();
507     inst.args.push(arg);
508     arg = Arg.createRelCond(Below);
509     inst.args.push(arg);
510     arg = Arg.createTmp(Reg.rsi);
511     inst.args.push(arg);
512     arg = Arg.createTmp(Reg.rdi);
513     inst.args.push(arg);
514     arg = Arg.createTmp(Reg.rsi);
515     inst.args.push(arg);
516     arg = Arg.createStack(slot5, 0);
517     inst.args.push(arg);
518     arg = Arg.createTmp(Reg.r12);
519     inst.args.push(arg);
520     arg = Arg.createTmp(Reg.rsi);
521     inst.args.push(arg);
522     arg = Arg.createTmp(Reg.rdx);
523     inst.args.push(arg);
524     arg = Arg.createTmp(Reg.rcx);
525     inst.args.push(arg);
526     arg = Arg.createTmp(Reg.r10);
527     inst.args.push(arg);
528     arg = Arg.createTmp(Reg.r11);
529     inst.args.push(arg);
530     arg = Arg.createTmp(Reg.rax);
531     inst.args.push(arg);
532     arg = Arg.createTmp(Reg.rbx);
533     inst.args.push(arg);
534     inst.patchHasNonArgEffects = true;
535     inst.extraEarlyClobberedRegs = new Set();
536     inst.extraClobberedRegs = new Set();
537     inst.patchArgData = [];
538     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
539     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
540     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
541     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
542     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
543     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
544     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
545     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
546     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
547     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
548     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
549     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
550     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
551     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
552     bb2.append(inst);
553     inst = new Inst(Patch);
554     arg = Arg.createSpecial();
555     inst.args.push(arg);
556     arg = Arg.createRelCond(Below);
557     inst.args.push(arg);
558     arg = Arg.createTmp(Reg.rdx);
559     inst.args.push(arg);
560     arg = Arg.createTmp(Reg.rdi);
561     inst.args.push(arg);
562     arg = Arg.createTmp(Reg.rdx);
563     inst.args.push(arg);
564     arg = Arg.createStack(slot5, 0);
565     inst.args.push(arg);
566     arg = Arg.createTmp(Reg.r12);
567     inst.args.push(arg);
568     arg = Arg.createTmp(Reg.rsi);
569     inst.args.push(arg);
570     arg = Arg.createTmp(Reg.rdx);
571     inst.args.push(arg);
572     arg = Arg.createTmp(Reg.rcx);
573     inst.args.push(arg);
574     arg = Arg.createTmp(Reg.r10);
575     inst.args.push(arg);
576     arg = Arg.createTmp(Reg.r11);
577     inst.args.push(arg);
578     arg = Arg.createTmp(Reg.rax);
579     inst.args.push(arg);
580     arg = Arg.createTmp(Reg.rbx);
581     inst.args.push(arg);
582     inst.patchHasNonArgEffects = true;
583     inst.extraEarlyClobberedRegs = new Set();
584     inst.extraClobberedRegs = new Set();
585     inst.patchArgData = [];
586     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
587     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
588     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
589     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
590     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
591     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
592     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
593     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
594     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
595     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
596     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
597     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
598     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
599     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
600     bb2.append(inst);
601     inst = new Inst(Patch);
602     arg = Arg.createSpecial();
603     inst.args.push(arg);
604     arg = Arg.createRelCond(Below);
605     inst.args.push(arg);
606     arg = Arg.createTmp(Reg.rcx);
607     inst.args.push(arg);
608     arg = Arg.createTmp(Reg.rdi);
609     inst.args.push(arg);
610     arg = Arg.createTmp(Reg.rcx);
611     inst.args.push(arg);
612     arg = Arg.createStack(slot5, 0);
613     inst.args.push(arg);
614     arg = Arg.createTmp(Reg.r12);
615     inst.args.push(arg);
616     arg = Arg.createTmp(Reg.rsi);
617     inst.args.push(arg);
618     arg = Arg.createTmp(Reg.rdx);
619     inst.args.push(arg);
620     arg = Arg.createTmp(Reg.rcx);
621     inst.args.push(arg);
622     arg = Arg.createTmp(Reg.r10);
623     inst.args.push(arg);
624     arg = Arg.createTmp(Reg.r11);
625     inst.args.push(arg);
626     arg = Arg.createTmp(Reg.rax);
627     inst.args.push(arg);
628     arg = Arg.createTmp(Reg.rbx);
629     inst.args.push(arg);
630     inst.patchHasNonArgEffects = true;
631     inst.extraEarlyClobberedRegs = new Set();
632     inst.extraClobberedRegs = new Set();
633     inst.patchArgData = [];
634     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
635     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
636     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
637     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
638     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
639     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
640     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
641     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
642     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
643     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
644     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
645     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
646     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
647     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
648     bb2.append(inst);
649     inst = new Inst(Add64);
650     arg = Arg.createTmp(Reg.r10);
651     inst.args.push(arg);
652     arg = Arg.createTmp(Reg.rdi);
653     inst.args.push(arg);
654     arg = Arg.createTmp(Reg.r8);
655     inst.args.push(arg);
656     bb2.append(inst);
657     inst = new Inst(Move64ToDouble);
658     arg = Arg.createTmp(Reg.r8);
659     inst.args.push(arg);
660     arg = Arg.createTmp(Reg.xmm3);
661     inst.args.push(arg);
662     bb2.append(inst);
663     inst = new Inst(BranchDouble);
664     arg = Arg.createDoubleCond(DoubleEqual);
665     inst.args.push(arg);
666     arg = Arg.createTmp(Reg.xmm3);
667     inst.args.push(arg);
668     arg = Arg.createTmp(Reg.xmm3);
669     inst.args.push(arg);
670     bb2.append(inst);
671     bb3.successors.push(new FrequentedBlock(bb4, Normal));
672     bb3.predecessors.push(bb2);
673     inst = new Inst(Patch);
674     arg = Arg.createSpecial();
675     inst.args.push(arg);
676     arg = Arg.createRelCond(Below);
677     inst.args.push(arg);
678     arg = Arg.createTmp(Reg.r10);
679     inst.args.push(arg);
680     arg = Arg.createTmp(Reg.rdi);
681     inst.args.push(arg);
682     arg = Arg.createTmp(Reg.r10);
683     inst.args.push(arg);
684     arg = Arg.createStack(slot5, 0);
685     inst.args.push(arg);
686     arg = Arg.createTmp(Reg.r12);
687     inst.args.push(arg);
688     arg = Arg.createTmp(Reg.rsi);
689     inst.args.push(arg);
690     arg = Arg.createTmp(Reg.rdx);
691     inst.args.push(arg);
692     arg = Arg.createTmp(Reg.rcx);
693     inst.args.push(arg);
694     arg = Arg.createTmp(Reg.r10);
695     inst.args.push(arg);
696     arg = Arg.createTmp(Reg.r11);
697     inst.args.push(arg);
698     arg = Arg.createTmp(Reg.rax);
699     inst.args.push(arg);
700     arg = Arg.createTmp(Reg.rbx);
701     inst.args.push(arg);
702     inst.patchHasNonArgEffects = true;
703     inst.extraEarlyClobberedRegs = new Set();
704     inst.extraClobberedRegs = new Set();
705     inst.patchArgData = [];
706     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
707     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
708     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
709     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
710     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
711     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
712     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
713     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
714     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
715     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
716     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
717     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
718     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
719     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
720     bb3.append(inst);
721     inst = new Inst(ConvertInt32ToDouble);
722     arg = Arg.createTmp(Reg.r10);
723     inst.args.push(arg);
724     arg = Arg.createTmp(Reg.xmm3);
725     inst.args.push(arg);
726     bb3.append(inst);
727     inst = new Inst(Jump);
728     bb3.append(inst);
729     bb4.successors.push(new FrequentedBlock(bb6, Normal));
730     bb4.successors.push(new FrequentedBlock(bb5, Rare));
731     bb4.predecessors.push(bb2);
732     bb4.predecessors.push(bb3);
733     inst = new Inst(Add64);
734     arg = Arg.createTmp(Reg.r11);
735     inst.args.push(arg);
736     arg = Arg.createTmp(Reg.rdi);
737     inst.args.push(arg);
738     arg = Arg.createTmp(Reg.r8);
739     inst.args.push(arg);
740     bb4.append(inst);
741     inst = new Inst(Move64ToDouble);
742     arg = Arg.createTmp(Reg.r8);
743     inst.args.push(arg);
744     arg = Arg.createTmp(Reg.xmm1);
745     inst.args.push(arg);
746     bb4.append(inst);
747     inst = new Inst(BranchDouble);
748     arg = Arg.createDoubleCond(DoubleEqual);
749     inst.args.push(arg);
750     arg = Arg.createTmp(Reg.xmm1);
751     inst.args.push(arg);
752     arg = Arg.createTmp(Reg.xmm1);
753     inst.args.push(arg);
754     bb4.append(inst);
755     bb5.successors.push(new FrequentedBlock(bb6, Normal));
756     bb5.predecessors.push(bb4);
757     inst = new Inst(Patch);
758     arg = Arg.createSpecial();
759     inst.args.push(arg);
760     arg = Arg.createRelCond(Below);
761     inst.args.push(arg);
762     arg = Arg.createTmp(Reg.r11);
763     inst.args.push(arg);
764     arg = Arg.createTmp(Reg.rdi);
765     inst.args.push(arg);
766     arg = Arg.createTmp(Reg.r11);
767     inst.args.push(arg);
768     arg = Arg.createStack(slot5, 0);
769     inst.args.push(arg);
770     arg = Arg.createTmp(Reg.r12);
771     inst.args.push(arg);
772     arg = Arg.createTmp(Reg.rsi);
773     inst.args.push(arg);
774     arg = Arg.createTmp(Reg.rdx);
775     inst.args.push(arg);
776     arg = Arg.createTmp(Reg.rcx);
777     inst.args.push(arg);
778     arg = Arg.createTmp(Reg.r10);
779     inst.args.push(arg);
780     arg = Arg.createTmp(Reg.r11);
781     inst.args.push(arg);
782     arg = Arg.createTmp(Reg.rax);
783     inst.args.push(arg);
784     arg = Arg.createTmp(Reg.rbx);
785     inst.args.push(arg);
786     inst.patchHasNonArgEffects = true;
787     inst.extraEarlyClobberedRegs = new Set();
788     inst.extraClobberedRegs = new Set();
789     inst.patchArgData = [];
790     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
791     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
792     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
793     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
794     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
795     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
796     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
797     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
798     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
799     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
800     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
801     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
802     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
803     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
804     bb5.append(inst);
805     inst = new Inst(ConvertInt32ToDouble);
806     arg = Arg.createTmp(Reg.r11);
807     inst.args.push(arg);
808     arg = Arg.createTmp(Reg.xmm1);
809     inst.args.push(arg);
810     bb5.append(inst);
811     inst = new Inst(Jump);
812     bb5.append(inst);
813     bb6.successors.push(new FrequentedBlock(bb8, Normal));
814     bb6.successors.push(new FrequentedBlock(bb7, Rare));
815     bb6.predecessors.push(bb4);
816     bb6.predecessors.push(bb5);
817     inst = new Inst(Patch);
818     arg = Arg.createSpecial();
819     inst.args.push(arg);
820     arg = Arg.createRelCond(Below);
821     inst.args.push(arg);
822     arg = Arg.createTmp(Reg.rax);
823     inst.args.push(arg);
824     arg = Arg.createTmp(Reg.rdi);
825     inst.args.push(arg);
826     arg = Arg.createTmp(Reg.rax);
827     inst.args.push(arg);
828     arg = Arg.createStack(slot5, 0);
829     inst.args.push(arg);
830     arg = Arg.createTmp(Reg.r12);
831     inst.args.push(arg);
832     arg = Arg.createTmp(Reg.rsi);
833     inst.args.push(arg);
834     arg = Arg.createTmp(Reg.rdx);
835     inst.args.push(arg);
836     arg = Arg.createTmp(Reg.rcx);
837     inst.args.push(arg);
838     arg = Arg.createTmp(Reg.r10);
839     inst.args.push(arg);
840     arg = Arg.createTmp(Reg.r11);
841     inst.args.push(arg);
842     arg = Arg.createTmp(Reg.rax);
843     inst.args.push(arg);
844     arg = Arg.createTmp(Reg.rbx);
845     inst.args.push(arg);
846     inst.patchHasNonArgEffects = true;
847     inst.extraEarlyClobberedRegs = new Set();
848     inst.extraClobberedRegs = new Set();
849     inst.patchArgData = [];
850     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
851     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
852     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
853     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
854     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
855     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
856     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
857     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
858     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
859     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
860     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
861     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
862     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
863     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
864     bb6.append(inst);
865     inst = new Inst(Add64);
866     arg = Arg.createTmp(Reg.rbx);
867     inst.args.push(arg);
868     arg = Arg.createTmp(Reg.rdi);
869     inst.args.push(arg);
870     arg = Arg.createTmp(Reg.r8);
871     inst.args.push(arg);
872     bb6.append(inst);
873     inst = new Inst(Move64ToDouble);
874     arg = Arg.createTmp(Reg.r8);
875     inst.args.push(arg);
876     arg = Arg.createTmp(Reg.xmm5);
877     inst.args.push(arg);
878     bb6.append(inst);
879     inst = new Inst(BranchDouble);
880     arg = Arg.createDoubleCond(DoubleEqual);
881     inst.args.push(arg);
882     arg = Arg.createTmp(Reg.xmm5);
883     inst.args.push(arg);
884     arg = Arg.createTmp(Reg.xmm5);
885     inst.args.push(arg);
886     bb6.append(inst);
887     bb7.successors.push(new FrequentedBlock(bb8, Normal));
888     bb7.predecessors.push(bb6);
889     inst = new Inst(Patch);
890     arg = Arg.createSpecial();
891     inst.args.push(arg);
892     arg = Arg.createRelCond(Below);
893     inst.args.push(arg);
894     arg = Arg.createTmp(Reg.rbx);
895     inst.args.push(arg);
896     arg = Arg.createTmp(Reg.rdi);
897     inst.args.push(arg);
898     arg = Arg.createTmp(Reg.rbx);
899     inst.args.push(arg);
900     arg = Arg.createStack(slot5, 0);
901     inst.args.push(arg);
902     arg = Arg.createTmp(Reg.r12);
903     inst.args.push(arg);
904     arg = Arg.createTmp(Reg.rsi);
905     inst.args.push(arg);
906     arg = Arg.createTmp(Reg.rdx);
907     inst.args.push(arg);
908     arg = Arg.createTmp(Reg.rcx);
909     inst.args.push(arg);
910     arg = Arg.createTmp(Reg.r10);
911     inst.args.push(arg);
912     arg = Arg.createTmp(Reg.r11);
913     inst.args.push(arg);
914     arg = Arg.createTmp(Reg.rax);
915     inst.args.push(arg);
916     arg = Arg.createTmp(Reg.rbx);
917     inst.args.push(arg);
918     inst.patchHasNonArgEffects = true;
919     inst.extraEarlyClobberedRegs = new Set();
920     inst.extraClobberedRegs = new Set();
921     inst.patchArgData = [];
922     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
923     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
924     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
925     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
926     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
927     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
928     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
929     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
930     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
931     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
932     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
933     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
934     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
935     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
936     bb7.append(inst);
937     inst = new Inst(ConvertInt32ToDouble);
938     arg = Arg.createTmp(Reg.rbx);
939     inst.args.push(arg);
940     arg = Arg.createTmp(Reg.xmm5);
941     inst.args.push(arg);
942     bb7.append(inst);
943     inst = new Inst(Jump);
944     bb7.append(inst);
945     bb8.successors.push(new FrequentedBlock(bb10, Normal));
946     bb8.successors.push(new FrequentedBlock(bb9, Rare));
947     bb8.predecessors.push(bb6);
948     bb8.predecessors.push(bb7);
949     inst = new Inst(Move);
950     arg = Arg.createBigImm(117076488, 1);
951     inst.args.push(arg);
952     arg = Arg.createTmp(Reg.r8);
953     inst.args.push(arg);
954     bb8.append(inst);
955     inst = new Inst(Move);
956     arg = Arg.createAddr(Reg.r8, 0);
957     inst.args.push(arg);
958     arg = Arg.createTmp(Reg.r9);
959     inst.args.push(arg);
960     bb8.append(inst);
961     inst = new Inst(Add64);
962     arg = Arg.createTmp(Reg.r9);
963     inst.args.push(arg);
964     arg = Arg.createTmp(Reg.rdi);
965     inst.args.push(arg);
966     arg = Arg.createTmp(Reg.r8);
967     inst.args.push(arg);
968     bb8.append(inst);
969     inst = new Inst(Move64ToDouble);
970     arg = Arg.createTmp(Reg.r8);
971     inst.args.push(arg);
972     arg = Arg.createTmp(Reg.xmm6);
973     inst.args.push(arg);
974     bb8.append(inst);
975     inst = new Inst(BranchDouble);
976     arg = Arg.createDoubleCond(DoubleEqual);
977     inst.args.push(arg);
978     arg = Arg.createTmp(Reg.xmm6);
979     inst.args.push(arg);
980     arg = Arg.createTmp(Reg.xmm6);
981     inst.args.push(arg);
982     bb8.append(inst);
983     bb9.successors.push(new FrequentedBlock(bb10, Normal));
984     bb9.predecessors.push(bb8);
985     inst = new Inst(Patch);
986     arg = Arg.createSpecial();
987     inst.args.push(arg);
988     arg = Arg.createRelCond(Below);
989     inst.args.push(arg);
990     arg = Arg.createTmp(Reg.r9);
991     inst.args.push(arg);
992     arg = Arg.createTmp(Reg.rdi);
993     inst.args.push(arg);
994     arg = Arg.createTmp(Reg.r9);
995     inst.args.push(arg);
996     arg = Arg.createStack(slot5, 0);
997     inst.args.push(arg);
998     arg = Arg.createTmp(Reg.r12);
999     inst.args.push(arg);
1000     arg = Arg.createTmp(Reg.rsi);
1001     inst.args.push(arg);
1002     arg = Arg.createTmp(Reg.rdx);
1003     inst.args.push(arg);
1004     arg = Arg.createTmp(Reg.rcx);
1005     inst.args.push(arg);
1006     arg = Arg.createTmp(Reg.r10);
1007     inst.args.push(arg);
1008     arg = Arg.createTmp(Reg.r11);
1009     inst.args.push(arg);
1010     arg = Arg.createTmp(Reg.rax);
1011     inst.args.push(arg);
1012     arg = Arg.createTmp(Reg.rbx);
1013     inst.args.push(arg);
1014     inst.patchHasNonArgEffects = true;
1015     inst.extraEarlyClobberedRegs = new Set();
1016     inst.extraClobberedRegs = new Set();
1017     inst.patchArgData = [];
1018     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1019     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1020     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1021     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1022     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1023     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1024     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1025     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1026     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1027     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1028     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1029     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1030     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1031     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1032     bb9.append(inst);
1033     inst = new Inst(ConvertInt32ToDouble);
1034     arg = Arg.createTmp(Reg.r9);
1035     inst.args.push(arg);
1036     arg = Arg.createTmp(Reg.xmm6);
1037     inst.args.push(arg);
1038     bb9.append(inst);
1039     inst = new Inst(Jump);
1040     bb9.append(inst);
1041     bb10.successors.push(new FrequentedBlock(bb18, Normal));
1042     bb10.predecessors.push(bb8);
1043     bb10.predecessors.push(bb9);
1044     inst = new Inst(Move);
1045     arg = Arg.createBigImm(144506584, 1);
1046     inst.args.push(arg);
1047     arg = Arg.createTmp(Reg.rdi);
1048     inst.args.push(arg);
1049     bb10.append(inst);
1050     inst = new Inst(Move);
1051     arg = Arg.createAddr(Reg.rdi, 0);
1052     inst.args.push(arg);
1053     arg = Arg.createTmp(Reg.r9);
1054     inst.args.push(arg);
1055     bb10.append(inst);
1056     inst = new Inst(Move32);
1057     arg = Arg.createAddr(Reg.r9, -8);
1058     inst.args.push(arg);
1059     arg = Arg.createTmp(Reg.r8);
1060     inst.args.push(arg);
1061     bb10.append(inst);
1062     inst = new Inst(Move);
1063     arg = Arg.createBigImm(144506544, 1);
1064     inst.args.push(arg);
1065     arg = Arg.createTmp(Reg.rdi);
1066     inst.args.push(arg);
1067     bb10.append(inst);
1068     inst = new Inst(Patch);
1069     arg = Arg.createSpecial();
1070     inst.args.push(arg);
1071     arg = Arg.createRelCond(NotEqual);
1072     inst.args.push(arg);
1073     arg = Arg.createAddr(Reg.rdi, 0);
1074     inst.args.push(arg);
1075     arg = Arg.createImm(80);
1076     inst.args.push(arg);
1077     arg = Arg.createBigImm(144506544, 1);
1078     inst.args.push(arg);
1079     arg = Arg.createStack(slot5, 0);
1080     inst.args.push(arg);
1081     arg = Arg.createTmp(Reg.r12);
1082     inst.args.push(arg);
1083     arg = Arg.createTmp(Reg.rsi);
1084     inst.args.push(arg);
1085     arg = Arg.createTmp(Reg.rdx);
1086     inst.args.push(arg);
1087     arg = Arg.createTmp(Reg.rcx);
1088     inst.args.push(arg);
1089     arg = Arg.createTmp(Reg.r10);
1090     inst.args.push(arg);
1091     arg = Arg.createTmp(Reg.r11);
1092     inst.args.push(arg);
1093     arg = Arg.createTmp(Reg.rax);
1094     inst.args.push(arg);
1095     arg = Arg.createTmp(Reg.rbx);
1096     inst.args.push(arg);
1097     inst.patchHasNonArgEffects = true;
1098     inst.extraEarlyClobberedRegs = new Set();
1099     inst.extraClobberedRegs = new Set();
1100     inst.patchArgData = [];
1101     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1102     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1103     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1104     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1105     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1106     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1107     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1108     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1109     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1110     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1111     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1112     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1113     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1114     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1115     bb10.append(inst);
1116     inst = new Inst(Move);
1117     arg = Arg.createBigImm(144506552, 1);
1118     inst.args.push(arg);
1119     arg = Arg.createTmp(Reg.rdi);
1120     inst.args.push(arg);
1121     bb10.append(inst);
1122     inst = new Inst(Move);
1123     arg = Arg.createAddr(Reg.rdi, 0);
1124     inst.args.push(arg);
1125     arg = Arg.createTmp(Reg.rdi);
1126     inst.args.push(arg);
1127     bb10.append(inst);
1128     inst = new Inst(Move);
1129     arg = Arg.createTmp(Reg.rdi);
1130     inst.args.push(arg);
1131     arg = Arg.createStack(slot2, 0);
1132     inst.args.push(arg);
1133     bb10.append(inst);
1134     inst = new Inst(Move);
1135     arg = Arg.createTmp(Reg.rdi);
1136     inst.args.push(arg);
1137     arg = Arg.createTmp(Reg.rdi);
1138     inst.args.push(arg);
1139     bb10.append(inst);
1140     inst = new Inst(Move32);
1141     arg = Arg.createAddr(Reg.rdi, -8);
1142     inst.args.push(arg);
1143     arg = Arg.createTmp(Reg.rdi);
1144     inst.args.push(arg);
1145     bb10.append(inst);
1146     inst = new Inst(Move32);
1147     arg = Arg.createTmp(Reg.rdi);
1148     inst.args.push(arg);
1149     arg = Arg.createStack(slot3, 0);
1150     inst.args.push(arg);
1151     bb10.append(inst);
1152     inst = new Inst(MoveZeroToDouble);
1153     arg = Arg.createTmp(Reg.xmm7);
1154     inst.args.push(arg);
1155     bb10.append(inst);
1156     inst = new Inst(Move);
1157     arg = Arg.createImm(10);
1158     inst.args.push(arg);
1159     arg = Arg.createStack(slot4, 0);
1160     inst.args.push(arg);
1161     bb10.append(inst);
1162     inst = new Inst(Move);
1163     arg = Arg.createBigImm(2, -65536);
1164     inst.args.push(arg);
1165     arg = Arg.createTmp(Reg.r10);
1166     inst.args.push(arg);
1167     bb10.append(inst);
1168     inst = new Inst(Jump);
1169     bb10.append(inst);
1170     bb11.successors.push(new FrequentedBlock(bb13, Normal));
1171     bb11.predecessors.push(bb35);
1172     inst = new Inst(Move);
1173     arg = Arg.createTmp(Reg.rax);
1174     inst.args.push(arg);
1175     arg = Arg.createTmp(Reg.rcx);
1176     inst.args.push(arg);
1177     bb11.append(inst);
1178     inst = new Inst(Move);
1179     arg = Arg.createImm(0);
1180     inst.args.push(arg);
1181     arg = Arg.createTmp(Reg.rdx);
1182     inst.args.push(arg);
1183     bb11.append(inst);
1184     inst = new Inst(Jump);
1185     bb11.append(inst);
1186     bb12.successors.push(new FrequentedBlock(bb13, Normal));
1187     bb12.predecessors.push(bb34);
1188     inst = new Inst(Move32);
1189     arg = Arg.createTmp(Reg.rax);
1190     inst.args.push(arg);
1191     arg = Arg.createTmp(Reg.rdx);
1192     inst.args.push(arg);
1193     bb12.append(inst);
1194     inst = new Inst(Jump);
1195     bb12.append(inst);
1196     bb13.successors.push(new FrequentedBlock(bb15, Normal));
1197     bb13.predecessors.push(bb11);
1198     bb13.predecessors.push(bb12);
1199     inst = new Inst(Move);
1200     arg = Arg.createImm(-6);
1201     inst.args.push(arg);
1202     arg = Arg.createTmp(Reg.rax);
1203     inst.args.push(arg);
1204     bb13.append(inst);
1205     inst = new Inst(MoveDouble);
1206     arg = Arg.createTmp(Reg.xmm7);
1207     inst.args.push(arg);
1208     arg = Arg.createTmp(Reg.xmm1);
1209     inst.args.push(arg);
1210     bb13.append(inst);
1211     inst = new Inst(MoveDouble);
1212     arg = Arg.createTmp(Reg.xmm7);
1213     inst.args.push(arg);
1214     arg = Arg.createTmp(Reg.xmm2);
1215     inst.args.push(arg);
1216     bb13.append(inst);
1217     inst = new Inst(MoveDouble);
1218     arg = Arg.createTmp(Reg.xmm7);
1219     inst.args.push(arg);
1220     arg = Arg.createTmp(Reg.xmm3);
1221     inst.args.push(arg);
1222     bb13.append(inst);
1223     inst = new Inst(MoveDouble);
1224     arg = Arg.createTmp(Reg.xmm7);
1225     inst.args.push(arg);
1226     arg = Arg.createTmp(Reg.xmm5);
1227     inst.args.push(arg);
1228     bb13.append(inst);
1229     inst = new Inst(Jump);
1230     bb13.append(inst);
1231     bb14.successors.push(new FrequentedBlock(bb15, Normal));
1232     bb14.predecessors.push(bb31);
1233     inst = new Inst(Move32);
1234     arg = Arg.createTmp(Reg.rsi);
1235     inst.args.push(arg);
1236     arg = Arg.createTmp(Reg.rax);
1237     inst.args.push(arg);
1238     bb14.append(inst);
1239     inst = new Inst(Jump);
1240     bb14.append(inst);
1241     bb15.successors.push(new FrequentedBlock(bb28, Normal));
1242     bb15.successors.push(new FrequentedBlock(bb16, Normal));
1243     bb15.predecessors.push(bb13);
1244     bb15.predecessors.push(bb14);
1245     inst = new Inst(Patch);
1246     arg = Arg.createSpecial();
1247     inst.args.push(arg);
1248     arg = Arg.createResCond(Overflow);
1249     inst.args.push(arg);
1250     arg = Arg.createTmp(Reg.rax);
1251     inst.args.push(arg);
1252     arg = Arg.createTmp(Reg.rcx);
1253     inst.args.push(arg);
1254     arg = Arg.createTmp(Reg.rsi);
1255     inst.args.push(arg);
1256     arg = Arg.createStack(slot5, 0);
1257     inst.args.push(arg);
1258     arg = Arg.createTmp(Reg.xmm2);
1259     inst.args.push(arg);
1260     arg = Arg.createTmp(Reg.rcx);
1261     inst.args.push(arg);
1262     arg = Arg.createTmp(Reg.rdx);
1263     inst.args.push(arg);
1264     arg = Arg.createTmp(Reg.xmm3);
1265     inst.args.push(arg);
1266     arg = Arg.createTmp(Reg.xmm1);
1267     inst.args.push(arg);
1268     arg = Arg.createTmp(Reg.rax);
1269     inst.args.push(arg);
1270     arg = Arg.createTmp(Reg.xmm5);
1271     inst.args.push(arg);
1272     inst.patchHasNonArgEffects = true;
1273     inst.extraEarlyClobberedRegs = new Set();
1274     inst.extraClobberedRegs = new Set();
1275     inst.patchArgData = [];
1276     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1277     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1278     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1279     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1280     inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1281     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1282     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1283     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1284     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1285     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1286     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1287     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1288     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1289     bb15.append(inst);
1290     inst = new Inst(Branch32);
1291     arg = Arg.createRelCond(LessThan);
1292     inst.args.push(arg);
1293     arg = Arg.createTmp(Reg.rsi);
1294     inst.args.push(arg);
1295     arg = Arg.createImm(0);
1296     inst.args.push(arg);
1297     bb15.append(inst);
1298     bb16.successors.push(new FrequentedBlock(bb29, Normal));
1299     bb16.successors.push(new FrequentedBlock(bb17, Normal));
1300     bb16.predecessors.push(bb15);
1301     inst = new Inst(Branch32);
1302     arg = Arg.createRelCond(GreaterThanOrEqual);
1303     inst.args.push(arg);
1304     arg = Arg.createTmp(Reg.rsi);
1305     inst.args.push(arg);
1306     arg = Arg.createImm(267);
1307     inst.args.push(arg);
1308     bb16.append(inst);
1309     bb17.successors.push(new FrequentedBlock(bb18, Normal));
1310     bb17.predecessors.push(bb16);
1311     inst = new Inst(Move);
1312     arg = Arg.createTmp(Reg.rcx);
1313     inst.args.push(arg);
1314     arg = Arg.createTmp(Reg.rsi);
1315     inst.args.push(arg);
1316     bb17.append(inst);
1317     inst = new Inst(Move);
1318     arg = Arg.createImm(-6);
1319     inst.args.push(arg);
1320     arg = Arg.createTmp(Reg.rcx);
1321     inst.args.push(arg);
1322     bb17.append(inst);
1323     inst = new Inst(Jump);
1324     bb17.append(inst);
1325     bb18.successors.push(new FrequentedBlock(bb20, Normal));
1326     bb18.successors.push(new FrequentedBlock(bb19, Rare));
1327     bb18.predecessors.push(bb10);
1328     bb18.predecessors.push(bb17);
1329     inst = new Inst(Move);
1330     arg = Arg.createTmp(Reg.rsi);
1331     inst.args.push(arg);
1332     arg = Arg.createStack(slot1, 0);
1333     inst.args.push(arg);
1334     bb18.append(inst);
1335     inst = new Inst(Patch);
1336     arg = Arg.createSpecial();
1337     inst.args.push(arg);
1338     arg = Arg.createResCond(Overflow);
1339     inst.args.push(arg);
1340     arg = Arg.createTmp(Reg.rax);
1341     inst.args.push(arg);
1342     arg = Arg.createTmp(Reg.rsi);
1343     inst.args.push(arg);
1344     arg = Arg.createTmp(Reg.rsi);
1345     inst.args.push(arg);
1346     arg = Arg.createStack(slot5, 0);
1347     inst.args.push(arg);
1348     arg = Arg.createTmp(Reg.xmm2);
1349     inst.args.push(arg);
1350     arg = Arg.createStack(slot1, 0);
1351     inst.args.push(arg);
1352     arg = Arg.createTmp(Reg.rdx);
1353     inst.args.push(arg);
1354     arg = Arg.createTmp(Reg.rcx);
1355     inst.args.push(arg);
1356     arg = Arg.createTmp(Reg.xmm3);
1357     inst.args.push(arg);
1358     arg = Arg.createTmp(Reg.xmm1);
1359     inst.args.push(arg);
1360     arg = Arg.createTmp(Reg.rax);
1361     inst.args.push(arg);
1362     arg = Arg.createTmp(Reg.xmm5);
1363     inst.args.push(arg);
1364     inst.patchHasNonArgEffects = true;
1365     inst.extraEarlyClobberedRegs = new Set();
1366     inst.extraClobberedRegs = new Set();
1367     inst.patchArgData = [];
1368     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1369     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1370     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1371     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1372     inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1373     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1374     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1375     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1376     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1377     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1378     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1379     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1380     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1381     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1382     bb18.append(inst);
1383     inst = new Inst(Patch);
1384     arg = Arg.createSpecial();
1385     inst.args.push(arg);
1386     arg = Arg.createResCond(Overflow);
1387     inst.args.push(arg);
1388     arg = Arg.createTmp(Reg.rsi);
1389     inst.args.push(arg);
1390     arg = Arg.createImm(400);
1391     inst.args.push(arg);
1392     arg = Arg.createTmp(Reg.r11);
1393     inst.args.push(arg);
1394     arg = Arg.createStack(slot5, 0);
1395     inst.args.push(arg);
1396     arg = Arg.createTmp(Reg.xmm2);
1397     inst.args.push(arg);
1398     arg = Arg.createStack(slot1, 0);
1399     inst.args.push(arg);
1400     arg = Arg.createTmp(Reg.rdx);
1401     inst.args.push(arg);
1402     arg = Arg.createTmp(Reg.rcx);
1403     inst.args.push(arg);
1404     arg = Arg.createTmp(Reg.xmm3);
1405     inst.args.push(arg);
1406     arg = Arg.createTmp(Reg.xmm1);
1407     inst.args.push(arg);
1408     arg = Arg.createTmp(Reg.rax);
1409     inst.args.push(arg);
1410     arg = Arg.createTmp(Reg.xmm5);
1411     inst.args.push(arg);
1412     inst.patchHasNonArgEffects = true;
1413     inst.extraEarlyClobberedRegs = new Set();
1414     inst.extraClobberedRegs = new Set();
1415     inst.patchArgData = [];
1416     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1417     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1418     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1419     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1420     inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1421     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1422     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1423     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1424     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1425     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1426     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1427     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1428     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1429     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1430     bb18.append(inst);
1431     inst = new Inst(BranchTest32);
1432     arg = Arg.createResCond(NonZero);
1433     inst.args.push(arg);
1434     arg = Arg.createTmp(Reg.r11);
1435     inst.args.push(arg);
1436     arg = Arg.createTmp(Reg.r11);
1437     inst.args.push(arg);
1438     bb18.append(inst);
1439     bb19.successors.push(new FrequentedBlock(bb20, Normal));
1440     bb19.predecessors.push(bb18);
1441     inst = new Inst(Patch);
1442     arg = Arg.createSpecial();
1443     inst.args.push(arg);
1444     arg = Arg.createRelCond(LessThan);
1445     inst.args.push(arg);
1446     arg = Arg.createTmp(Reg.rsi);
1447     inst.args.push(arg);
1448     arg = Arg.createImm(0);
1449     inst.args.push(arg);
1450     arg = Arg.createStack(slot5, 0);
1451     inst.args.push(arg);
1452     arg = Arg.createTmp(Reg.xmm2);
1453     inst.args.push(arg);
1454     arg = Arg.createStack(slot1, 0);
1455     inst.args.push(arg);
1456     arg = Arg.createTmp(Reg.rdx);
1457     inst.args.push(arg);
1458     arg = Arg.createTmp(Reg.rcx);
1459     inst.args.push(arg);
1460     arg = Arg.createTmp(Reg.xmm3);
1461     inst.args.push(arg);
1462     arg = Arg.createTmp(Reg.xmm1);
1463     inst.args.push(arg);
1464     arg = Arg.createTmp(Reg.rax);
1465     inst.args.push(arg);
1466     arg = Arg.createTmp(Reg.xmm5);
1467     inst.args.push(arg);
1468     inst.patchHasNonArgEffects = true;
1469     inst.extraEarlyClobberedRegs = new Set();
1470     inst.extraClobberedRegs = new Set();
1471     inst.patchArgData = [];
1472     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1473     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1474     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1475     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1476     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1477     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1478     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1479     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1480     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1481     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1482     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1483     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1484     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1485     bb19.append(inst);
1486     inst = new Inst(Jump);
1487     bb19.append(inst);
1488     bb20.successors.push(new FrequentedBlock(bb22, Normal));
1489     bb20.predecessors.push(bb18);
1490     bb20.predecessors.push(bb19);
1491     inst = new Inst(Move32);
1492     arg = Arg.createTmp(Reg.rax);
1493     inst.args.push(arg);
1494     arg = Arg.createTmp(Reg.rsi);
1495     inst.args.push(arg);
1496     bb20.append(inst);
1497     inst = new Inst(Rshift32);
1498     arg = Arg.createImm(31);
1499     inst.args.push(arg);
1500     arg = Arg.createTmp(Reg.rsi);
1501     inst.args.push(arg);
1502     bb20.append(inst);
1503     inst = new Inst(Add32);
1504     arg = Arg.createTmp(Reg.rax);
1505     inst.args.push(arg);
1506     arg = Arg.createTmp(Reg.rsi);
1507     inst.args.push(arg);
1508     arg = Arg.createTmp(Reg.rdi);
1509     inst.args.push(arg);
1510     bb20.append(inst);
1511     inst = new Inst(Xor32);
1512     arg = Arg.createTmp(Reg.rsi);
1513     inst.args.push(arg);
1514     arg = Arg.createTmp(Reg.rdi);
1515     inst.args.push(arg);
1516     arg = Arg.createTmp(Reg.rdi);
1517     inst.args.push(arg);
1518     bb20.append(inst);
1519     inst = new Inst(Patch);
1520     arg = Arg.createSpecial();
1521     inst.args.push(arg);
1522     arg = Arg.createRelCond(LessThan);
1523     inst.args.push(arg);
1524     arg = Arg.createTmp(Reg.rdi);
1525     inst.args.push(arg);
1526     arg = Arg.createImm(0);
1527     inst.args.push(arg);
1528     arg = Arg.createStack(slot5, 0);
1529     inst.args.push(arg);
1530     arg = Arg.createTmp(Reg.xmm2);
1531     inst.args.push(arg);
1532     arg = Arg.createStack(slot1, 0);
1533     inst.args.push(arg);
1534     arg = Arg.createTmp(Reg.rdx);
1535     inst.args.push(arg);
1536     arg = Arg.createTmp(Reg.rcx);
1537     inst.args.push(arg);
1538     arg = Arg.createTmp(Reg.xmm3);
1539     inst.args.push(arg);
1540     arg = Arg.createTmp(Reg.xmm1);
1541     inst.args.push(arg);
1542     arg = Arg.createTmp(Reg.rax);
1543     inst.args.push(arg);
1544     arg = Arg.createTmp(Reg.xmm5);
1545     inst.args.push(arg);
1546     inst.patchHasNonArgEffects = true;
1547     inst.extraEarlyClobberedRegs = new Set();
1548     inst.extraClobberedRegs = new Set();
1549     inst.patchArgData = [];
1550     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1551     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1552     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1553     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1554     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1555     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1556     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1557     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1558     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1559     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1560     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1561     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1562     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1563     bb20.append(inst);
1564     inst = new Inst(Patch);
1565     arg = Arg.createSpecial();
1566     inst.args.push(arg);
1567     arg = Arg.createRelCond(AboveOrEqual);
1568     inst.args.push(arg);
1569     arg = Arg.createTmp(Reg.rdi);
1570     inst.args.push(arg);
1571     arg = Arg.createStack(slot3, 0);
1572     inst.args.push(arg);
1573     arg = Arg.createStack(slot5, 0);
1574     inst.args.push(arg);
1575     arg = Arg.createTmp(Reg.xmm2);
1576     inst.args.push(arg);
1577     arg = Arg.createStack(slot1, 0);
1578     inst.args.push(arg);
1579     arg = Arg.createTmp(Reg.rdx);
1580     inst.args.push(arg);
1581     arg = Arg.createTmp(Reg.rcx);
1582     inst.args.push(arg);
1583     arg = Arg.createTmp(Reg.xmm3);
1584     inst.args.push(arg);
1585     arg = Arg.createTmp(Reg.xmm1);
1586     inst.args.push(arg);
1587     arg = Arg.createTmp(Reg.rax);
1588     inst.args.push(arg);
1589     arg = Arg.createTmp(Reg.xmm5);
1590     inst.args.push(arg);
1591     inst.patchHasNonArgEffects = true;
1592     inst.extraEarlyClobberedRegs = new Set();
1593     inst.extraClobberedRegs = new Set();
1594     inst.patchArgData = [];
1595     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1596     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1597     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1598     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1599     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1600     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1601     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1602     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1603     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1604     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1605     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1606     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1607     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1608     bb20.append(inst);
1609     inst = new Inst(Move);
1610     arg = Arg.createStack(slot2, 0);
1611     inst.args.push(arg);
1612     arg = Arg.createTmp(Reg.rsi);
1613     inst.args.push(arg);
1614     bb20.append(inst);
1615     inst = new Inst(Move);
1616     arg = Arg.createIndex(Reg.rsi, Reg.rdi, 8, 0);
1617     inst.args.push(arg);
1618     arg = Arg.createTmp(Reg.rsi);
1619     inst.args.push(arg);
1620     bb20.append(inst);
1621     inst = new Inst(Move);
1622     arg = Arg.createImm(10);
1623     inst.args.push(arg);
1624     arg = Arg.createTmp(Reg.rdi);
1625     inst.args.push(arg);
1626     bb20.append(inst);
1627     inst = new Inst(MoveConditionallyTest64);
1628     arg = Arg.createResCond(NonZero);
1629     inst.args.push(arg);
1630     arg = Arg.createTmp(Reg.rsi);
1631     inst.args.push(arg);
1632     arg = Arg.createImm(-1);
1633     inst.args.push(arg);
1634     arg = Arg.createTmp(Reg.rsi);
1635     inst.args.push(arg);
1636     arg = Arg.createTmp(Reg.rdi);
1637     inst.args.push(arg);
1638     arg = Arg.createTmp(Reg.rdi);
1639     inst.args.push(arg);
1640     bb20.append(inst);
1641     inst = new Inst(Patch);
1642     arg = Arg.createSpecial();
1643     inst.args.push(arg);
1644     arg = Arg.createResCond(NonZero);
1645     inst.args.push(arg);
1646     arg = Arg.createTmp(Reg.rdi);
1647     inst.args.push(arg);
1648     arg = Arg.createTmp(Reg.r10);
1649     inst.args.push(arg);
1650     arg = Arg.createTmp(Reg.rdi);
1651     inst.args.push(arg);
1652     arg = Arg.createStack(slot5, 0);
1653     inst.args.push(arg);
1654     arg = Arg.createTmp(Reg.xmm2);
1655     inst.args.push(arg);
1656     arg = Arg.createStack(slot1, 0);
1657     inst.args.push(arg);
1658     arg = Arg.createTmp(Reg.rdx);
1659     inst.args.push(arg);
1660     arg = Arg.createTmp(Reg.rcx);
1661     inst.args.push(arg);
1662     arg = Arg.createTmp(Reg.xmm3);
1663     inst.args.push(arg);
1664     arg = Arg.createTmp(Reg.xmm1);
1665     inst.args.push(arg);
1666     arg = Arg.createTmp(Reg.rax);
1667     inst.args.push(arg);
1668     arg = Arg.createTmp(Reg.xmm5);
1669     inst.args.push(arg);
1670     inst.patchHasNonArgEffects = true;
1671     inst.extraEarlyClobberedRegs = new Set();
1672     inst.extraClobberedRegs = new Set();
1673     inst.patchArgData = [];
1674     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1675     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1676     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1677     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1678     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1679     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1680     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1681     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1682     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1683     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1684     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1685     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1686     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1687     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1688     bb20.append(inst);
1689     inst = new Inst(Patch);
1690     arg = Arg.createSpecial();
1691     inst.args.push(arg);
1692     arg = Arg.createRelCond(NotEqual);
1693     inst.args.push(arg);
1694     arg = Arg.createAddr(Reg.rdi, 0);
1695     inst.args.push(arg);
1696     arg = Arg.createImm(79);
1697     inst.args.push(arg);
1698     arg = Arg.createTmp(Reg.rdi);
1699     inst.args.push(arg);
1700     arg = Arg.createStack(slot5, 0);
1701     inst.args.push(arg);
1702     arg = Arg.createTmp(Reg.xmm2);
1703     inst.args.push(arg);
1704     arg = Arg.createStack(slot1, 0);
1705     inst.args.push(arg);
1706     arg = Arg.createTmp(Reg.rdx);
1707     inst.args.push(arg);
1708     arg = Arg.createTmp(Reg.rcx);
1709     inst.args.push(arg);
1710     arg = Arg.createTmp(Reg.xmm3);
1711     inst.args.push(arg);
1712     arg = Arg.createTmp(Reg.xmm1);
1713     inst.args.push(arg);
1714     arg = Arg.createTmp(Reg.rax);
1715     inst.args.push(arg);
1716     arg = Arg.createTmp(Reg.xmm5);
1717     inst.args.push(arg);
1718     inst.patchHasNonArgEffects = true;
1719     inst.extraEarlyClobberedRegs = new Set();
1720     inst.extraClobberedRegs = new Set();
1721     inst.patchArgData = [];
1722     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1723     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1724     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1725     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1726     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1727     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1728     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1729     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1730     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1731     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1732     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1733     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1734     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1735     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1736     bb20.append(inst);
1737     inst = new Inst(Move);
1738     arg = Arg.createAddr(Reg.rdi, 8);
1739     inst.args.push(arg);
1740     arg = Arg.createTmp(Reg.r12);
1741     inst.args.push(arg);
1742     bb20.append(inst);
1743     inst = new Inst(Move32);
1744     arg = Arg.createAddr(Reg.r12, -8);
1745     inst.args.push(arg);
1746     arg = Arg.createTmp(Reg.r13);
1747     inst.args.push(arg);
1748     bb20.append(inst);
1749     inst = new Inst(Jump);
1750     bb20.append(inst);
1751     bb21.successors.push(new FrequentedBlock(bb22, Normal));
1752     bb21.predecessors.push(bb27);
1753     inst = new Inst(Move32);
1754     arg = Arg.createTmp(Reg.rsi);
1755     inst.args.push(arg);
1756     arg = Arg.createTmp(Reg.rcx);
1757     inst.args.push(arg);
1758     bb21.append(inst);
1759     inst = new Inst(Jump);
1760     bb21.append(inst);
1761     bb22.successors.push(new FrequentedBlock(bb25, Normal));
1762     bb22.successors.push(new FrequentedBlock(bb23, Normal));
1763     bb22.predecessors.push(bb20);
1764     bb22.predecessors.push(bb21);
1765     inst = new Inst(Patch);
1766     arg = Arg.createSpecial();
1767     inst.args.push(arg);
1768     arg = Arg.createResCond(Overflow);
1769     inst.args.push(arg);
1770     arg = Arg.createTmp(Reg.rcx);
1771     inst.args.push(arg);
1772     arg = Arg.createTmp(Reg.rdx);
1773     inst.args.push(arg);
1774     arg = Arg.createTmp(Reg.rsi);
1775     inst.args.push(arg);
1776     arg = Arg.createStack(slot5, 0);
1777     inst.args.push(arg);
1778     arg = Arg.createTmp(Reg.xmm2);
1779     inst.args.push(arg);
1780     arg = Arg.createStack(slot1, 0);
1781     inst.args.push(arg);
1782     arg = Arg.createTmp(Reg.rdx);
1783     inst.args.push(arg);
1784     arg = Arg.createTmp(Reg.rcx);
1785     inst.args.push(arg);
1786     arg = Arg.createTmp(Reg.xmm3);
1787     inst.args.push(arg);
1788     arg = Arg.createTmp(Reg.xmm1);
1789     inst.args.push(arg);
1790     arg = Arg.createTmp(Reg.rax);
1791     inst.args.push(arg);
1792     arg = Arg.createTmp(Reg.xmm5);
1793     inst.args.push(arg);
1794     inst.patchHasNonArgEffects = true;
1795     inst.extraEarlyClobberedRegs = new Set();
1796     inst.extraClobberedRegs = new Set();
1797     inst.patchArgData = [];
1798     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1799     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1800     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1801     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1802     inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1803     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1804     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1805     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1806     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1807     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1808     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1809     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1810     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1811     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1812     bb22.append(inst);
1813     inst = new Inst(Branch32);
1814     arg = Arg.createRelCond(LessThan);
1815     inst.args.push(arg);
1816     arg = Arg.createTmp(Reg.rsi);
1817     inst.args.push(arg);
1818     arg = Arg.createImm(0);
1819     inst.args.push(arg);
1820     bb22.append(inst);
1821     bb23.successors.push(new FrequentedBlock(bb26, Normal));
1822     bb23.successors.push(new FrequentedBlock(bb24, Normal));
1823     bb23.predecessors.push(bb22);
1824     inst = new Inst(Branch32);
1825     arg = Arg.createRelCond(GreaterThanOrEqual);
1826     inst.args.push(arg);
1827     arg = Arg.createTmp(Reg.rsi);
1828     inst.args.push(arg);
1829     arg = Arg.createImm(400);
1830     inst.args.push(arg);
1831     bb23.append(inst);
1832     bb24.successors.push(new FrequentedBlock(bb27, Normal));
1833     bb24.predecessors.push(bb23);
1834     inst = new Inst(Patch);
1835     arg = Arg.createSpecial();
1836     inst.args.push(arg);
1837     arg = Arg.createResCond(Overflow);
1838     inst.args.push(arg);
1839     arg = Arg.createTmp(Reg.r11);
1840     inst.args.push(arg);
1841     arg = Arg.createTmp(Reg.rsi);
1842     inst.args.push(arg);
1843     arg = Arg.createTmp(Reg.rbx);
1844     inst.args.push(arg);
1845     arg = Arg.createStack(slot5, 0);
1846     inst.args.push(arg);
1847     arg = Arg.createTmp(Reg.xmm2);
1848     inst.args.push(arg);
1849     arg = Arg.createStack(slot1, 0);
1850     inst.args.push(arg);
1851     arg = Arg.createTmp(Reg.rdx);
1852     inst.args.push(arg);
1853     arg = Arg.createTmp(Reg.rcx);
1854     inst.args.push(arg);
1855     arg = Arg.createTmp(Reg.xmm3);
1856     inst.args.push(arg);
1857     arg = Arg.createTmp(Reg.rax);
1858     inst.args.push(arg);
1859     arg = Arg.createTmp(Reg.xmm5);
1860     inst.args.push(arg);
1861     arg = Arg.createTmp(Reg.xmm1);
1862     inst.args.push(arg);
1863     arg = Arg.createTmp(Reg.r11);
1864     inst.args.push(arg);
1865     arg = Arg.createTmp(Reg.rsi);
1866     inst.args.push(arg);
1867     inst.patchHasNonArgEffects = true;
1868     inst.extraEarlyClobberedRegs = new Set();
1869     inst.extraClobberedRegs = new Set();
1870     inst.patchArgData = [];
1871     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1872     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1873     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1874     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1875     inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1876     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1877     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1878     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1879     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1880     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1881     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1882     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1883     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1884     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1885     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1886     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1887     bb24.append(inst);
1888     inst = new Inst(Patch);
1889     arg = Arg.createSpecial();
1890     inst.args.push(arg);
1891     arg = Arg.createResCond(Overflow);
1892     inst.args.push(arg);
1893     arg = Arg.createTmp(Reg.rbx);
1894     inst.args.push(arg);
1895     arg = Arg.createImm(4);
1896     inst.args.push(arg);
1897     arg = Arg.createTmp(Reg.r15);
1898     inst.args.push(arg);
1899     arg = Arg.createStack(slot5, 0);
1900     inst.args.push(arg);
1901     arg = Arg.createTmp(Reg.xmm2);
1902     inst.args.push(arg);
1903     arg = Arg.createStack(slot1, 0);
1904     inst.args.push(arg);
1905     arg = Arg.createTmp(Reg.rdx);
1906     inst.args.push(arg);
1907     arg = Arg.createTmp(Reg.rcx);
1908     inst.args.push(arg);
1909     arg = Arg.createTmp(Reg.xmm3);
1910     inst.args.push(arg);
1911     arg = Arg.createTmp(Reg.rax);
1912     inst.args.push(arg);
1913     arg = Arg.createTmp(Reg.xmm5);
1914     inst.args.push(arg);
1915     arg = Arg.createTmp(Reg.xmm1);
1916     inst.args.push(arg);
1917     arg = Arg.createTmp(Reg.rbx);
1918     inst.args.push(arg);
1919     inst.patchHasNonArgEffects = true;
1920     inst.extraEarlyClobberedRegs = new Set();
1921     inst.extraClobberedRegs = new Set();
1922     inst.patchArgData = [];
1923     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1924     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1925     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1926     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1927     inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
1928     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
1929     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1930     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1931     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1932     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1933     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1934     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1935     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1936     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
1937     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
1938     bb24.append(inst);
1939     inst = new Inst(Add32);
1940     arg = Arg.createImm(3);
1941     inst.args.push(arg);
1942     arg = Arg.createTmp(Reg.r15);
1943     inst.args.push(arg);
1944     arg = Arg.createTmp(Reg.r14);
1945     inst.args.push(arg);
1946     bb24.append(inst);
1947     inst = new Inst(Patch);
1948     arg = Arg.createSpecial();
1949     inst.args.push(arg);
1950     arg = Arg.createRelCond(AboveOrEqual);
1951     inst.args.push(arg);
1952     arg = Arg.createTmp(Reg.r15);
1953     inst.args.push(arg);
1954     arg = Arg.createTmp(Reg.r8);
1955     inst.args.push(arg);
1956     arg = Arg.createStack(slot5, 0);
1957     inst.args.push(arg);
1958     arg = Arg.createTmp(Reg.xmm2);
1959     inst.args.push(arg);
1960     arg = Arg.createStack(slot1, 0);
1961     inst.args.push(arg);
1962     arg = Arg.createTmp(Reg.rdx);
1963     inst.args.push(arg);
1964     arg = Arg.createTmp(Reg.rcx);
1965     inst.args.push(arg);
1966     arg = Arg.createTmp(Reg.xmm3);
1967     inst.args.push(arg);
1968     arg = Arg.createTmp(Reg.rax);
1969     inst.args.push(arg);
1970     arg = Arg.createTmp(Reg.xmm5);
1971     inst.args.push(arg);
1972     arg = Arg.createTmp(Reg.xmm1);
1973     inst.args.push(arg);
1974     arg = Arg.createTmp(Reg.r15);
1975     inst.args.push(arg);
1976     inst.patchHasNonArgEffects = true;
1977     inst.extraEarlyClobberedRegs = new Set();
1978     inst.extraClobberedRegs = new Set();
1979     inst.patchArgData = [];
1980     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
1981     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1982     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1983     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
1984     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
1985     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1986     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1987     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1988     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1989     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1990     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1991     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1992     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
1993     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
1994     bb24.append(inst);
1995     inst = new Inst(Patch);
1996     arg = Arg.createSpecial();
1997     inst.args.push(arg);
1998     arg = Arg.createRelCond(AboveOrEqual);
1999     inst.args.push(arg);
2000     arg = Arg.createTmp(Reg.r14);
2001     inst.args.push(arg);
2002     arg = Arg.createTmp(Reg.r8);
2003     inst.args.push(arg);
2004     arg = Arg.createStack(slot5, 0);
2005     inst.args.push(arg);
2006     arg = Arg.createTmp(Reg.xmm2);
2007     inst.args.push(arg);
2008     arg = Arg.createStack(slot1, 0);
2009     inst.args.push(arg);
2010     arg = Arg.createTmp(Reg.rdx);
2011     inst.args.push(arg);
2012     arg = Arg.createTmp(Reg.rcx);
2013     inst.args.push(arg);
2014     arg = Arg.createTmp(Reg.xmm3);
2015     inst.args.push(arg);
2016     arg = Arg.createTmp(Reg.rax);
2017     inst.args.push(arg);
2018     arg = Arg.createTmp(Reg.xmm5);
2019     inst.args.push(arg);
2020     arg = Arg.createTmp(Reg.xmm1);
2021     inst.args.push(arg);
2022     arg = Arg.createTmp(Reg.r15);
2023     inst.args.push(arg);
2024     inst.patchHasNonArgEffects = true;
2025     inst.extraEarlyClobberedRegs = new Set();
2026     inst.extraClobberedRegs = new Set();
2027     inst.patchArgData = [];
2028     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2029     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2030     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2031     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2032     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2033     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2034     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2035     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2036     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2037     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2038     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2039     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2040     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2041     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2042     bb24.append(inst);
2043     inst = new Inst(MoveDouble);
2044     arg = Arg.createIndex(Reg.r9, Reg.r15, 8, 0);
2045     inst.args.push(arg);
2046     arg = Arg.createTmp(Reg.xmm0);
2047     inst.args.push(arg);
2048     bb24.append(inst);
2049     inst = new Inst(Move32);
2050     arg = Arg.createTmp(Reg.rcx);
2051     inst.args.push(arg);
2052     arg = Arg.createTmp(Reg.rsi);
2053     inst.args.push(arg);
2054     bb24.append(inst);
2055     inst = new Inst(Rshift32);
2056     arg = Arg.createImm(31);
2057     inst.args.push(arg);
2058     arg = Arg.createTmp(Reg.rsi);
2059     inst.args.push(arg);
2060     bb24.append(inst);
2061     inst = new Inst(Add32);
2062     arg = Arg.createTmp(Reg.rcx);
2063     inst.args.push(arg);
2064     arg = Arg.createTmp(Reg.rsi);
2065     inst.args.push(arg);
2066     arg = Arg.createTmp(Reg.rbx);
2067     inst.args.push(arg);
2068     bb24.append(inst);
2069     inst = new Inst(Xor32);
2070     arg = Arg.createTmp(Reg.rsi);
2071     inst.args.push(arg);
2072     arg = Arg.createTmp(Reg.rbx);
2073     inst.args.push(arg);
2074     arg = Arg.createTmp(Reg.rbx);
2075     inst.args.push(arg);
2076     bb24.append(inst);
2077     inst = new Inst(Patch);
2078     arg = Arg.createSpecial();
2079     inst.args.push(arg);
2080     arg = Arg.createRelCond(LessThan);
2081     inst.args.push(arg);
2082     arg = Arg.createTmp(Reg.rbx);
2083     inst.args.push(arg);
2084     arg = Arg.createImm(0);
2085     inst.args.push(arg);
2086     arg = Arg.createStack(slot5, 0);
2087     inst.args.push(arg);
2088     arg = Arg.createTmp(Reg.xmm2);
2089     inst.args.push(arg);
2090     arg = Arg.createStack(slot1, 0);
2091     inst.args.push(arg);
2092     arg = Arg.createTmp(Reg.rdx);
2093     inst.args.push(arg);
2094     arg = Arg.createTmp(Reg.rcx);
2095     inst.args.push(arg);
2096     arg = Arg.createTmp(Reg.xmm3);
2097     inst.args.push(arg);
2098     arg = Arg.createTmp(Reg.rax);
2099     inst.args.push(arg);
2100     arg = Arg.createTmp(Reg.xmm5);
2101     inst.args.push(arg);
2102     arg = Arg.createTmp(Reg.xmm1);
2103     inst.args.push(arg);
2104     arg = Arg.createTmp(Reg.xmm0);
2105     inst.args.push(arg);
2106     arg = Arg.createTmp(Reg.rdi);
2107     inst.args.push(arg);
2108     arg = Arg.createTmp(Reg.rcx);
2109     inst.args.push(arg);
2110     inst.patchHasNonArgEffects = true;
2111     inst.extraEarlyClobberedRegs = new Set();
2112     inst.extraClobberedRegs = new Set();
2113     inst.patchArgData = [];
2114     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2115     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2116     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2117     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2118     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2119     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2120     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2121     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2122     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2123     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2124     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2125     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2126     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2127     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2128     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2129     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2130     bb24.append(inst);
2131     inst = new Inst(Patch);
2132     arg = Arg.createSpecial();
2133     inst.args.push(arg);
2134     arg = Arg.createRelCond(AboveOrEqual);
2135     inst.args.push(arg);
2136     arg = Arg.createTmp(Reg.rbx);
2137     inst.args.push(arg);
2138     arg = Arg.createTmp(Reg.r13);
2139     inst.args.push(arg);
2140     arg = Arg.createStack(slot5, 0);
2141     inst.args.push(arg);
2142     arg = Arg.createTmp(Reg.xmm2);
2143     inst.args.push(arg);
2144     arg = Arg.createStack(slot1, 0);
2145     inst.args.push(arg);
2146     arg = Arg.createTmp(Reg.rdx);
2147     inst.args.push(arg);
2148     arg = Arg.createTmp(Reg.rcx);
2149     inst.args.push(arg);
2150     arg = Arg.createTmp(Reg.xmm3);
2151     inst.args.push(arg);
2152     arg = Arg.createTmp(Reg.rax);
2153     inst.args.push(arg);
2154     arg = Arg.createTmp(Reg.xmm5);
2155     inst.args.push(arg);
2156     arg = Arg.createTmp(Reg.xmm1);
2157     inst.args.push(arg);
2158     arg = Arg.createTmp(Reg.xmm0);
2159     inst.args.push(arg);
2160     arg = Arg.createTmp(Reg.rdi);
2161     inst.args.push(arg);
2162     arg = Arg.createTmp(Reg.rbx);
2163     inst.args.push(arg);
2164     inst.patchHasNonArgEffects = true;
2165     inst.extraEarlyClobberedRegs = new Set();
2166     inst.extraClobberedRegs = new Set();
2167     inst.patchArgData = [];
2168     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2169     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2170     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2171     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2172     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2173     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2174     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2175     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2176     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2177     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2178     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2179     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2180     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2181     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2182     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2183     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2184     bb24.append(inst);
2185     inst = new Inst(MoveDouble);
2186     arg = Arg.createIndex(Reg.r12, Reg.rbx, 8, 0);
2187     inst.args.push(arg);
2188     arg = Arg.createTmp(Reg.xmm4);
2189     inst.args.push(arg);
2190     bb24.append(inst);
2191     inst = new Inst(MulDouble);
2192     arg = Arg.createTmp(Reg.xmm0);
2193     inst.args.push(arg);
2194     arg = Arg.createTmp(Reg.xmm4);
2195     inst.args.push(arg);
2196     arg = Arg.createTmp(Reg.xmm0);
2197     inst.args.push(arg);
2198     bb24.append(inst);
2199     inst = new Inst(AddDouble);
2200     arg = Arg.createTmp(Reg.xmm1);
2201     inst.args.push(arg);
2202     arg = Arg.createTmp(Reg.xmm0);
2203     inst.args.push(arg);
2204     arg = Arg.createTmp(Reg.xmm1);
2205     inst.args.push(arg);
2206     bb24.append(inst);
2207     inst = new Inst(Add32);
2208     arg = Arg.createImm(1);
2209     inst.args.push(arg);
2210     arg = Arg.createTmp(Reg.r15);
2211     inst.args.push(arg);
2212     arg = Arg.createTmp(Reg.rsi);
2213     inst.args.push(arg);
2214     bb24.append(inst);
2215     inst = new Inst(MulDouble);
2216     arg = Arg.createIndex(Reg.r9, Reg.rsi, 8, 0);
2217     inst.args.push(arg);
2218     arg = Arg.createTmp(Reg.xmm4);
2219     inst.args.push(arg);
2220     arg = Arg.createTmp(Reg.xmm0);
2221     inst.args.push(arg);
2222     bb24.append(inst);
2223     inst = new Inst(AddDouble);
2224     arg = Arg.createTmp(Reg.xmm2);
2225     inst.args.push(arg);
2226     arg = Arg.createTmp(Reg.xmm0);
2227     inst.args.push(arg);
2228     arg = Arg.createTmp(Reg.xmm2);
2229     inst.args.push(arg);
2230     bb24.append(inst);
2231     inst = new Inst(Add32);
2232     arg = Arg.createImm(2);
2233     inst.args.push(arg);
2234     arg = Arg.createTmp(Reg.r15);
2235     inst.args.push(arg);
2236     arg = Arg.createTmp(Reg.r15);
2237     inst.args.push(arg);
2238     bb24.append(inst);
2239     inst = new Inst(MulDouble);
2240     arg = Arg.createIndex(Reg.r9, Reg.r15, 8, 0);
2241     inst.args.push(arg);
2242     arg = Arg.createTmp(Reg.xmm4);
2243     inst.args.push(arg);
2244     arg = Arg.createTmp(Reg.xmm0);
2245     inst.args.push(arg);
2246     bb24.append(inst);
2247     inst = new Inst(AddDouble);
2248     arg = Arg.createTmp(Reg.xmm3);
2249     inst.args.push(arg);
2250     arg = Arg.createTmp(Reg.xmm0);
2251     inst.args.push(arg);
2252     arg = Arg.createTmp(Reg.xmm3);
2253     inst.args.push(arg);
2254     bb24.append(inst);
2255     inst = new Inst(MulDouble);
2256     arg = Arg.createIndex(Reg.r9, Reg.r14, 8, 0);
2257     inst.args.push(arg);
2258     arg = Arg.createTmp(Reg.xmm4);
2259     inst.args.push(arg);
2260     arg = Arg.createTmp(Reg.xmm4);
2261     inst.args.push(arg);
2262     bb24.append(inst);
2263     inst = new Inst(AddDouble);
2264     arg = Arg.createTmp(Reg.xmm5);
2265     inst.args.push(arg);
2266     arg = Arg.createTmp(Reg.xmm4);
2267     inst.args.push(arg);
2268     arg = Arg.createTmp(Reg.xmm5);
2269     inst.args.push(arg);
2270     bb24.append(inst);
2271     inst = new Inst(Jump);
2272     bb24.append(inst);
2273     bb25.successors.push(new FrequentedBlock(bb27, Normal));
2274     bb25.predecessors.push(bb22);
2275     inst = new Inst(Jump);
2276     bb25.append(inst);
2277     bb26.successors.push(new FrequentedBlock(bb27, Normal));
2278     bb26.predecessors.push(bb23);
2279     inst = new Inst(Jump);
2280     bb26.append(inst);
2281     bb27.successors.push(new FrequentedBlock(bb21, Normal));
2282     bb27.successors.push(new FrequentedBlock(bb30, Normal));
2283     bb27.predecessors.push(bb24);
2284     bb27.predecessors.push(bb26);
2285     bb27.predecessors.push(bb25);
2286     inst = new Inst(Move32);
2287     arg = Arg.createTmp(Reg.rcx);
2288     inst.args.push(arg);
2289     arg = Arg.createTmp(Reg.rsi);
2290     inst.args.push(arg);
2291     bb27.append(inst);
2292     inst = new Inst(Patch);
2293     arg = Arg.createSpecial();
2294     inst.args.push(arg);
2295     arg = Arg.createResCond(Overflow);
2296     inst.args.push(arg);
2297     arg = Arg.createImm(1);
2298     inst.args.push(arg);
2299     arg = Arg.createTmp(Reg.rsi);
2300     inst.args.push(arg);
2301     arg = Arg.createStack(slot5, 0);
2302     inst.args.push(arg);
2303     arg = Arg.createTmp(Reg.xmm2);
2304     inst.args.push(arg);
2305     arg = Arg.createStack(slot1, 0);
2306     inst.args.push(arg);
2307     arg = Arg.createTmp(Reg.rdx);
2308     inst.args.push(arg);
2309     arg = Arg.createTmp(Reg.rcx);
2310     inst.args.push(arg);
2311     arg = Arg.createTmp(Reg.xmm3);
2312     inst.args.push(arg);
2313     arg = Arg.createTmp(Reg.xmm1);
2314     inst.args.push(arg);
2315     arg = Arg.createTmp(Reg.rax);
2316     inst.args.push(arg);
2317     arg = Arg.createTmp(Reg.xmm5);
2318     inst.args.push(arg);
2319     inst.patchHasNonArgEffects = true;
2320     inst.extraEarlyClobberedRegs = new Set();
2321     inst.extraClobberedRegs = new Set();
2322     inst.patchArgData = [];
2323     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2324     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2325     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2326     inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32});
2327     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2328     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2329     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2330     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2331     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2332     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2333     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2334     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2335     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2336     bb27.append(inst);
2337     inst = new Inst(Branch32);
2338     arg = Arg.createRelCond(LessThan);
2339     inst.args.push(arg);
2340     arg = Arg.createTmp(Reg.rsi);
2341     inst.args.push(arg);
2342     arg = Arg.createImm(7);
2343     inst.args.push(arg);
2344     bb27.append(inst);
2345     bb28.successors.push(new FrequentedBlock(bb31, Normal));
2346     bb28.predecessors.push(bb15);
2347     inst = new Inst(Jump);
2348     bb28.append(inst);
2349     bb29.successors.push(new FrequentedBlock(bb31, Normal));
2350     bb29.predecessors.push(bb16);
2351     inst = new Inst(Jump);
2352     bb29.append(inst);
2353     bb30.successors.push(new FrequentedBlock(bb31, Normal));
2354     bb30.predecessors.push(bb27);
2355     inst = new Inst(Move);
2356     arg = Arg.createStack(slot1, 0);
2357     inst.args.push(arg);
2358     arg = Arg.createTmp(Reg.rcx);
2359     inst.args.push(arg);
2360     bb30.append(inst);
2361     inst = new Inst(Jump);
2362     bb30.append(inst);
2363     bb31.successors.push(new FrequentedBlock(bb14, Normal));
2364     bb31.successors.push(new FrequentedBlock(bb32, Normal));
2365     bb31.predecessors.push(bb30);
2366     bb31.predecessors.push(bb29);
2367     bb31.predecessors.push(bb28);
2368     inst = new Inst(Move32);
2369     arg = Arg.createTmp(Reg.rax);
2370     inst.args.push(arg);
2371     arg = Arg.createTmp(Reg.rsi);
2372     inst.args.push(arg);
2373     bb31.append(inst);
2374     inst = new Inst(Patch);
2375     arg = Arg.createSpecial();
2376     inst.args.push(arg);
2377     arg = Arg.createResCond(Overflow);
2378     inst.args.push(arg);
2379     arg = Arg.createImm(1);
2380     inst.args.push(arg);
2381     arg = Arg.createTmp(Reg.rsi);
2382     inst.args.push(arg);
2383     arg = Arg.createStack(slot5, 0);
2384     inst.args.push(arg);
2385     arg = Arg.createTmp(Reg.xmm2);
2386     inst.args.push(arg);
2387     arg = Arg.createTmp(Reg.rcx);
2388     inst.args.push(arg);
2389     arg = Arg.createTmp(Reg.rdx);
2390     inst.args.push(arg);
2391     arg = Arg.createTmp(Reg.xmm3);
2392     inst.args.push(arg);
2393     arg = Arg.createTmp(Reg.xmm1);
2394     inst.args.push(arg);
2395     arg = Arg.createTmp(Reg.rax);
2396     inst.args.push(arg);
2397     arg = Arg.createTmp(Reg.xmm5);
2398     inst.args.push(arg);
2399     inst.patchHasNonArgEffects = true;
2400     inst.extraEarlyClobberedRegs = new Set();
2401     inst.extraClobberedRegs = new Set();
2402     inst.patchArgData = [];
2403     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2404     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2405     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2406     inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32});
2407     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2408     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2409     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2410     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2411     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2412     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2413     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2414     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2415     bb31.append(inst);
2416     inst = new Inst(Branch32);
2417     arg = Arg.createRelCond(LessThan);
2418     inst.args.push(arg);
2419     arg = Arg.createTmp(Reg.rsi);
2420     inst.args.push(arg);
2421     arg = Arg.createImm(7);
2422     inst.args.push(arg);
2423     bb31.append(inst);
2424     bb32.successors.push(new FrequentedBlock(bb34, Normal));
2425     bb32.successors.push(new FrequentedBlock(bb33, Rare));
2426     bb32.predecessors.push(bb31);
2427     inst = new Inst(Patch);
2428     arg = Arg.createSpecial();
2429     inst.args.push(arg);
2430     arg = Arg.createResCond(Overflow);
2431     inst.args.push(arg);
2432     arg = Arg.createTmp(Reg.rcx);
2433     inst.args.push(arg);
2434     arg = Arg.createImm(400);
2435     inst.args.push(arg);
2436     arg = Arg.createTmp(Reg.rax);
2437     inst.args.push(arg);
2438     arg = Arg.createStack(slot5, 0);
2439     inst.args.push(arg);
2440     arg = Arg.createTmp(Reg.xmm2);
2441     inst.args.push(arg);
2442     arg = Arg.createTmp(Reg.rcx);
2443     inst.args.push(arg);
2444     arg = Arg.createTmp(Reg.rdx);
2445     inst.args.push(arg);
2446     arg = Arg.createTmp(Reg.xmm3);
2447     inst.args.push(arg);
2448     arg = Arg.createTmp(Reg.xmm1);
2449     inst.args.push(arg);
2450     arg = Arg.createTmp(Reg.xmm5);
2451     inst.args.push(arg);
2452     inst.patchHasNonArgEffects = true;
2453     inst.extraEarlyClobberedRegs = new Set();
2454     inst.extraClobberedRegs = new Set();
2455     inst.patchArgData = [];
2456     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2457     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2458     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2459     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2460     inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
2461     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2462     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2463     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2464     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2465     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2466     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2467     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2468     bb32.append(inst);
2469     inst = new Inst(BranchTest32);
2470     arg = Arg.createResCond(NonZero);
2471     inst.args.push(arg);
2472     arg = Arg.createTmp(Reg.rax);
2473     inst.args.push(arg);
2474     arg = Arg.createTmp(Reg.rax);
2475     inst.args.push(arg);
2476     bb32.append(inst);
2477     bb33.successors.push(new FrequentedBlock(bb34, Normal));
2478     bb33.predecessors.push(bb32);
2479     inst = new Inst(Patch);
2480     arg = Arg.createSpecial();
2481     inst.args.push(arg);
2482     arg = Arg.createRelCond(LessThan);
2483     inst.args.push(arg);
2484     arg = Arg.createTmp(Reg.rcx);
2485     inst.args.push(arg);
2486     arg = Arg.createImm(0);
2487     inst.args.push(arg);
2488     arg = Arg.createStack(slot5, 0);
2489     inst.args.push(arg);
2490     arg = Arg.createTmp(Reg.xmm2);
2491     inst.args.push(arg);
2492     arg = Arg.createTmp(Reg.rcx);
2493     inst.args.push(arg);
2494     arg = Arg.createTmp(Reg.rdx);
2495     inst.args.push(arg);
2496     arg = Arg.createTmp(Reg.xmm3);
2497     inst.args.push(arg);
2498     arg = Arg.createTmp(Reg.xmm1);
2499     inst.args.push(arg);
2500     arg = Arg.createTmp(Reg.xmm5);
2501     inst.args.push(arg);
2502     inst.patchHasNonArgEffects = true;
2503     inst.extraEarlyClobberedRegs = new Set();
2504     inst.extraClobberedRegs = new Set();
2505     inst.patchArgData = [];
2506     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2507     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2508     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2509     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2510     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2511     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2512     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2513     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2514     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2515     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2516     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2517     bb33.append(inst);
2518     inst = new Inst(Jump);
2519     bb33.append(inst);
2520     bb34.successors.push(new FrequentedBlock(bb12, Normal));
2521     bb34.successors.push(new FrequentedBlock(bb35, Normal));
2522     bb34.predecessors.push(bb32);
2523     bb34.predecessors.push(bb33);
2524     inst = new Inst(Patch);
2525     arg = Arg.createSpecial();
2526     inst.args.push(arg);
2527     arg = Arg.createResCond(Overflow);
2528     inst.args.push(arg);
2529     arg = Arg.createTmp(Reg.rdx);
2530     inst.args.push(arg);
2531     arg = Arg.createTmp(Reg.rax);
2532     inst.args.push(arg);
2533     arg = Arg.createTmp(Reg.rdi);
2534     inst.args.push(arg);
2535     arg = Arg.createStack(slot5, 0);
2536     inst.args.push(arg);
2537     arg = Arg.createTmp(Reg.xmm2);
2538     inst.args.push(arg);
2539     arg = Arg.createTmp(Reg.rcx);
2540     inst.args.push(arg);
2541     arg = Arg.createTmp(Reg.rdx);
2542     inst.args.push(arg);
2543     arg = Arg.createTmp(Reg.xmm3);
2544     inst.args.push(arg);
2545     arg = Arg.createTmp(Reg.xmm1);
2546     inst.args.push(arg);
2547     arg = Arg.createTmp(Reg.xmm5);
2548     inst.args.push(arg);
2549     arg = Arg.createTmp(Reg.rax);
2550     inst.args.push(arg);
2551     inst.patchHasNonArgEffects = true;
2552     inst.extraEarlyClobberedRegs = new Set();
2553     inst.extraClobberedRegs = new Set();
2554     inst.patchArgData = [];
2555     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2556     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2557     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2558     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2559     inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
2560     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2561     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2562     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2563     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2564     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2565     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2566     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2567     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2568     bb34.append(inst);
2569     inst = new Inst(Patch);
2570     arg = Arg.createSpecial();
2571     inst.args.push(arg);
2572     arg = Arg.createResCond(Overflow);
2573     inst.args.push(arg);
2574     arg = Arg.createTmp(Reg.rdi);
2575     inst.args.push(arg);
2576     arg = Arg.createImm(4);
2577     inst.args.push(arg);
2578     arg = Arg.createTmp(Reg.rsi);
2579     inst.args.push(arg);
2580     arg = Arg.createStack(slot5, 0);
2581     inst.args.push(arg);
2582     arg = Arg.createTmp(Reg.xmm2);
2583     inst.args.push(arg);
2584     arg = Arg.createTmp(Reg.rcx);
2585     inst.args.push(arg);
2586     arg = Arg.createTmp(Reg.rdx);
2587     inst.args.push(arg);
2588     arg = Arg.createTmp(Reg.xmm3);
2589     inst.args.push(arg);
2590     arg = Arg.createTmp(Reg.xmm1);
2591     inst.args.push(arg);
2592     arg = Arg.createTmp(Reg.xmm5);
2593     inst.args.push(arg);
2594     arg = Arg.createTmp(Reg.rdi);
2595     inst.args.push(arg);
2596     inst.patchHasNonArgEffects = true;
2597     inst.extraEarlyClobberedRegs = new Set();
2598     inst.extraClobberedRegs = new Set();
2599     inst.patchArgData = [];
2600     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2601     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2602     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2603     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2604     inst.patchArgData.push({role: Arg.ZDef, type: GP, width: 32});
2605     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2606     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2607     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2608     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2609     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2610     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2611     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2612     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2613     bb34.append(inst);
2614     inst = new Inst(DivDouble);
2615     arg = Arg.createTmp(Reg.xmm6);
2616     inst.args.push(arg);
2617     arg = Arg.createTmp(Reg.xmm1);
2618     inst.args.push(arg);
2619     bb34.append(inst);
2620     inst = new Inst(Patch);
2621     arg = Arg.createSpecial();
2622     inst.args.push(arg);
2623     arg = Arg.createRelCond(AboveOrEqual);
2624     inst.args.push(arg);
2625     arg = Arg.createTmp(Reg.rsi);
2626     inst.args.push(arg);
2627     arg = Arg.createTmp(Reg.r8);
2628     inst.args.push(arg);
2629     arg = Arg.createStack(slot5, 0);
2630     inst.args.push(arg);
2631     arg = Arg.createTmp(Reg.xmm2);
2632     inst.args.push(arg);
2633     arg = Arg.createTmp(Reg.rcx);
2634     inst.args.push(arg);
2635     arg = Arg.createTmp(Reg.rdx);
2636     inst.args.push(arg);
2637     arg = Arg.createTmp(Reg.xmm3);
2638     inst.args.push(arg);
2639     arg = Arg.createTmp(Reg.xmm5);
2640     inst.args.push(arg);
2641     arg = Arg.createTmp(Reg.rsi);
2642     inst.args.push(arg);
2643     arg = Arg.createTmp(Reg.xmm1);
2644     inst.args.push(arg);
2645     inst.patchHasNonArgEffects = true;
2646     inst.extraEarlyClobberedRegs = new Set();
2647     inst.extraClobberedRegs = new Set();
2648     inst.patchArgData = [];
2649     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2650     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2651     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2652     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2653     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2654     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2655     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2656     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2657     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2658     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2659     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2660     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2661     bb34.append(inst);
2662     inst = new Inst(Patch);
2663     arg = Arg.createSpecial();
2664     inst.args.push(arg);
2665     arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered);
2666     inst.args.push(arg);
2667     arg = Arg.createTmp(Reg.xmm1);
2668     inst.args.push(arg);
2669     arg = Arg.createTmp(Reg.xmm1);
2670     inst.args.push(arg);
2671     arg = Arg.createTmp(Reg.xmm1);
2672     inst.args.push(arg);
2673     arg = Arg.createStack(slot5, 0);
2674     inst.args.push(arg);
2675     arg = Arg.createTmp(Reg.xmm2);
2676     inst.args.push(arg);
2677     arg = Arg.createTmp(Reg.rcx);
2678     inst.args.push(arg);
2679     arg = Arg.createTmp(Reg.rdx);
2680     inst.args.push(arg);
2681     arg = Arg.createTmp(Reg.xmm3);
2682     inst.args.push(arg);
2683     arg = Arg.createTmp(Reg.xmm5);
2684     inst.args.push(arg);
2685     arg = Arg.createTmp(Reg.rsi);
2686     inst.args.push(arg);
2687     arg = Arg.createTmp(Reg.xmm1);
2688     inst.args.push(arg);
2689     inst.patchHasNonArgEffects = true;
2690     inst.extraEarlyClobberedRegs = new Set();
2691     inst.extraClobberedRegs = new Set();
2692     inst.patchArgData = [];
2693     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2694     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2695     inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2696     inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2697     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2698     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2699     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2700     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2701     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2702     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2703     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2704     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2705     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2706     bb34.append(inst);
2707     inst = new Inst(MoveDouble);
2708     arg = Arg.createTmp(Reg.xmm1);
2709     inst.args.push(arg);
2710     arg = Arg.createIndex(Reg.r9, Reg.rsi, 8, 0);
2711     inst.args.push(arg);
2712     bb34.append(inst);
2713     inst = new Inst(Move32);
2714     arg = Arg.createTmp(Reg.rsi);
2715     inst.args.push(arg);
2716     arg = Arg.createTmp(Reg.rdi);
2717     inst.args.push(arg);
2718     bb34.append(inst);
2719     inst = new Inst(Patch);
2720     arg = Arg.createSpecial();
2721     inst.args.push(arg);
2722     arg = Arg.createResCond(Overflow);
2723     inst.args.push(arg);
2724     arg = Arg.createImm(1);
2725     inst.args.push(arg);
2726     arg = Arg.createTmp(Reg.rdi);
2727     inst.args.push(arg);
2728     arg = Arg.createStack(slot5, 0);
2729     inst.args.push(arg);
2730     arg = Arg.createTmp(Reg.xmm2);
2731     inst.args.push(arg);
2732     arg = Arg.createTmp(Reg.rcx);
2733     inst.args.push(arg);
2734     arg = Arg.createTmp(Reg.rdx);
2735     inst.args.push(arg);
2736     arg = Arg.createTmp(Reg.xmm3);
2737     inst.args.push(arg);
2738     arg = Arg.createTmp(Reg.xmm5);
2739     inst.args.push(arg);
2740     arg = Arg.createTmp(Reg.rsi);
2741     inst.args.push(arg);
2742     inst.patchHasNonArgEffects = true;
2743     inst.extraEarlyClobberedRegs = new Set();
2744     inst.extraClobberedRegs = new Set();
2745     inst.patchArgData = [];
2746     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2747     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2748     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2749     inst.patchArgData.push({role: Arg.UseZDef, type: GP, width: 32});
2750     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 64});
2751     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2752     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2753     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2754     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2755     inst.patchArgData.push({role: Arg.LateColdUse, type: FP, width: 64});
2756     inst.patchArgData.push({role: Arg.LateColdUse, type: GP, width: 32});
2757     bb34.append(inst);
2758     inst = new Inst(DivDouble);
2759     arg = Arg.createTmp(Reg.xmm6);
2760     inst.args.push(arg);
2761     arg = Arg.createTmp(Reg.xmm2);
2762     inst.args.push(arg);
2763     bb34.append(inst);
2764     inst = new Inst(Add32);
2765     arg = Arg.createImm(1);
2766     inst.args.push(arg);
2767     arg = Arg.createTmp(Reg.rsi);
2768     inst.args.push(arg);
2769     arg = Arg.createTmp(Reg.r11);
2770     inst.args.push(arg);
2771     bb34.append(inst);
2772     inst = new Inst(Add32);
2773     arg = Arg.createImm(3);
2774     inst.args.push(arg);
2775     arg = Arg.createTmp(Reg.rsi);
2776     inst.args.push(arg);
2777     arg = Arg.createTmp(Reg.rax);
2778     inst.args.push(arg);
2779     bb34.append(inst);
2780     inst = new Inst(Patch);
2781     arg = Arg.createSpecial();
2782     inst.args.push(arg);
2783     arg = Arg.createRelCond(AboveOrEqual);
2784     inst.args.push(arg);
2785     arg = Arg.createTmp(Reg.r11);
2786     inst.args.push(arg);
2787     arg = Arg.createTmp(Reg.r8);
2788     inst.args.push(arg);
2789     arg = Arg.createStack(slot5, 0);
2790     inst.args.push(arg);
2791     arg = Arg.createTmp(Reg.rcx);
2792     inst.args.push(arg);
2793     arg = Arg.createTmp(Reg.rdx);
2794     inst.args.push(arg);
2795     arg = Arg.createTmp(Reg.xmm3);
2796     inst.args.push(arg);
2797     arg = Arg.createTmp(Reg.xmm5);
2798     inst.args.push(arg);
2799     arg = Arg.createTmp(Reg.rdi);
2800     inst.args.push(arg);
2801     arg = Arg.createTmp(Reg.xmm2);
2802     inst.args.push(arg);
2803     inst.patchHasNonArgEffects = true;
2804     inst.extraEarlyClobberedRegs = new Set();
2805     inst.extraClobberedRegs = new Set();
2806     inst.patchArgData = [];
2807     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2808     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2809     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2810     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2811     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2812     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2813     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2814     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2815     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2816     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2817     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2818     bb34.append(inst);
2819     inst = new Inst(Patch);
2820     arg = Arg.createSpecial();
2821     inst.args.push(arg);
2822     arg = Arg.createRelCond(AboveOrEqual);
2823     inst.args.push(arg);
2824     arg = Arg.createTmp(Reg.rax);
2825     inst.args.push(arg);
2826     arg = Arg.createTmp(Reg.r8);
2827     inst.args.push(arg);
2828     arg = Arg.createStack(slot5, 0);
2829     inst.args.push(arg);
2830     arg = Arg.createTmp(Reg.rcx);
2831     inst.args.push(arg);
2832     arg = Arg.createTmp(Reg.rdx);
2833     inst.args.push(arg);
2834     arg = Arg.createTmp(Reg.xmm3);
2835     inst.args.push(arg);
2836     arg = Arg.createTmp(Reg.xmm5);
2837     inst.args.push(arg);
2838     arg = Arg.createTmp(Reg.rdi);
2839     inst.args.push(arg);
2840     arg = Arg.createTmp(Reg.xmm2);
2841     inst.args.push(arg);
2842     inst.patchHasNonArgEffects = true;
2843     inst.extraEarlyClobberedRegs = new Set();
2844     inst.extraClobberedRegs = new Set();
2845     inst.patchArgData = [];
2846     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2847     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2848     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2849     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2850     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2851     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2852     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2853     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2854     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2855     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2856     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2857     bb34.append(inst);
2858     inst = new Inst(Patch);
2859     arg = Arg.createSpecial();
2860     inst.args.push(arg);
2861     arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered);
2862     inst.args.push(arg);
2863     arg = Arg.createTmp(Reg.xmm2);
2864     inst.args.push(arg);
2865     arg = Arg.createTmp(Reg.xmm2);
2866     inst.args.push(arg);
2867     arg = Arg.createTmp(Reg.xmm2);
2868     inst.args.push(arg);
2869     arg = Arg.createStack(slot5, 0);
2870     inst.args.push(arg);
2871     arg = Arg.createTmp(Reg.rcx);
2872     inst.args.push(arg);
2873     arg = Arg.createTmp(Reg.rdx);
2874     inst.args.push(arg);
2875     arg = Arg.createTmp(Reg.xmm3);
2876     inst.args.push(arg);
2877     arg = Arg.createTmp(Reg.xmm5);
2878     inst.args.push(arg);
2879     arg = Arg.createTmp(Reg.rdi);
2880     inst.args.push(arg);
2881     arg = Arg.createTmp(Reg.xmm2);
2882     inst.args.push(arg);
2883     inst.patchHasNonArgEffects = true;
2884     inst.extraEarlyClobberedRegs = new Set();
2885     inst.extraClobberedRegs = new Set();
2886     inst.patchArgData = [];
2887     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2888     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2889     inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2890     inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2891     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2892     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2893     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2894     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2895     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2896     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2897     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2898     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2899     bb34.append(inst);
2900     inst = new Inst(MoveDouble);
2901     arg = Arg.createTmp(Reg.xmm2);
2902     inst.args.push(arg);
2903     arg = Arg.createIndex(Reg.r9, Reg.rdi, 8, 0);
2904     inst.args.push(arg);
2905     bb34.append(inst);
2906     inst = new Inst(Add32);
2907     arg = Arg.createImm(2);
2908     inst.args.push(arg);
2909     arg = Arg.createTmp(Reg.rsi);
2910     inst.args.push(arg);
2911     arg = Arg.createTmp(Reg.rsi);
2912     inst.args.push(arg);
2913     bb34.append(inst);
2914     inst = new Inst(DivDouble);
2915     arg = Arg.createTmp(Reg.xmm6);
2916     inst.args.push(arg);
2917     arg = Arg.createTmp(Reg.xmm3);
2918     inst.args.push(arg);
2919     bb34.append(inst);
2920     inst = new Inst(Patch);
2921     arg = Arg.createSpecial();
2922     inst.args.push(arg);
2923     arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered);
2924     inst.args.push(arg);
2925     arg = Arg.createTmp(Reg.xmm3);
2926     inst.args.push(arg);
2927     arg = Arg.createTmp(Reg.xmm3);
2928     inst.args.push(arg);
2929     arg = Arg.createTmp(Reg.xmm3);
2930     inst.args.push(arg);
2931     arg = Arg.createStack(slot5, 0);
2932     inst.args.push(arg);
2933     arg = Arg.createTmp(Reg.rcx);
2934     inst.args.push(arg);
2935     arg = Arg.createTmp(Reg.rdx);
2936     inst.args.push(arg);
2937     arg = Arg.createTmp(Reg.xmm5);
2938     inst.args.push(arg);
2939     arg = Arg.createTmp(Reg.rsi);
2940     inst.args.push(arg);
2941     arg = Arg.createTmp(Reg.xmm3);
2942     inst.args.push(arg);
2943     inst.patchHasNonArgEffects = true;
2944     inst.extraEarlyClobberedRegs = new Set();
2945     inst.extraClobberedRegs = new Set();
2946     inst.patchArgData = [];
2947     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2948     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2949     inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2950     inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2951     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2952     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
2953     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2954     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2955     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2956     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
2957     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
2958     bb34.append(inst);
2959     inst = new Inst(MoveDouble);
2960     arg = Arg.createTmp(Reg.xmm3);
2961     inst.args.push(arg);
2962     arg = Arg.createIndex(Reg.r9, Reg.rsi, 8, 0);
2963     inst.args.push(arg);
2964     bb34.append(inst);
2965     inst = new Inst(DivDouble);
2966     arg = Arg.createTmp(Reg.xmm6);
2967     inst.args.push(arg);
2968     arg = Arg.createTmp(Reg.xmm5);
2969     inst.args.push(arg);
2970     bb34.append(inst);
2971     inst = new Inst(Patch);
2972     arg = Arg.createSpecial();
2973     inst.args.push(arg);
2974     arg = Arg.createDoubleCond(DoubleNotEqualOrUnordered);
2975     inst.args.push(arg);
2976     arg = Arg.createTmp(Reg.xmm5);
2977     inst.args.push(arg);
2978     arg = Arg.createTmp(Reg.xmm5);
2979     inst.args.push(arg);
2980     arg = Arg.createTmp(Reg.xmm5);
2981     inst.args.push(arg);
2982     arg = Arg.createStack(slot5, 0);
2983     inst.args.push(arg);
2984     arg = Arg.createTmp(Reg.rcx);
2985     inst.args.push(arg);
2986     arg = Arg.createTmp(Reg.rdx);
2987     inst.args.push(arg);
2988     arg = Arg.createTmp(Reg.rax);
2989     inst.args.push(arg);
2990     arg = Arg.createTmp(Reg.xmm5);
2991     inst.args.push(arg);
2992     inst.patchHasNonArgEffects = true;
2993     inst.extraEarlyClobberedRegs = new Set();
2994     inst.extraClobberedRegs = new Set();
2995     inst.patchArgData = [];
2996     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
2997     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
2998     inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
2999     inst.patchArgData.push({role: Arg.Use, type: FP, width: 64});
3000     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
3001     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
3002     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
3003     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
3004     inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 32});
3005     inst.patchArgData.push({role: Arg.ColdUse, type: FP, width: 64});
3006     bb34.append(inst);
3007     inst = new Inst(MoveDouble);
3008     arg = Arg.createTmp(Reg.xmm5);
3009     inst.args.push(arg);
3010     arg = Arg.createIndex(Reg.r9, Reg.rax, 8, 0);
3011     inst.args.push(arg);
3012     bb34.append(inst);
3013     inst = new Inst(Move32);
3014     arg = Arg.createTmp(Reg.rdx);
3015     inst.args.push(arg);
3016     arg = Arg.createTmp(Reg.rax);
3017     inst.args.push(arg);
3018     bb34.append(inst);
3019     inst = new Inst(Patch);
3020     arg = Arg.createSpecial();
3021     inst.args.push(arg);
3022     arg = Arg.createResCond(Overflow);
3023     inst.args.push(arg);
3024     arg = Arg.createImm(1);
3025     inst.args.push(arg);
3026     arg = Arg.createTmp(Reg.rax);
3027     inst.args.push(arg);
3028     arg = Arg.createStack(slot5, 0);
3029     inst.args.push(arg);
3030     arg = Arg.createTmp(Reg.rcx);
3031     inst.args.push(arg);
3032     arg = Arg.createTmp(Reg.rdx);
3033     inst.args.push(arg);
3034     inst.patchHasNonArgEffects = true;
3035     inst.extraEarlyClobberedRegs = new Set();
3036     inst.extraClobberedRegs = new Set();
3037     inst.patchArgData = [];
3038     inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
3039     inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});