<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[201953] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/201953">201953</a></dd>
<dt>Author</dt> <dd>fpizlo@apple.com</dd>
<dt>Date</dt> <dd>2016-06-10 16:54:33 -0700 (Fri, 10 Jun 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>
PerformanceTests:
Rename JSAir to Air.js.

Rubber stamped by Mark Lam.

* Air.js: Copied from PerformanceTests/JSAir.
* Air.js/airjs-tests.yaml: Copied from PerformanceTests/JSAir/jsair-tests.yaml.
* Air.js/benchmark.js: Copied from PerformanceTests/JSAir/benchmark.js.
(Benchmark):
* Air.js/jsair-tests.yaml: Removed.
* Air.js/payload-airjs-ACLj8C.js: Copied from PerformanceTests/JSAir/payload-jsair-ACLj8C.js.
* Air.js/payload-jsair-ACLj8C.js: Removed.
* Air.js/stress-test.js: Copied from PerformanceTests/JSAir/stress-test.js.
* Air.js/test.html: Copied from PerformanceTests/JSAir/test.html.
* Air.js/test.js: Copied from PerformanceTests/JSAir/test.js.
* JSAir: Removed.
* JSAir/all.js: Removed.
* JSAir/allocate_stack.js: Removed.
* JSAir/arg.js: Removed.
* JSAir/basic_block.js: Removed.
* JSAir/benchmark.js: Removed.
* JSAir/code.js: Removed.
* JSAir/custom.js: Removed.
* JSAir/frequented_block.js: Removed.
* JSAir/insertion_set.js: Removed.
* JSAir/inst.js: Removed.
* JSAir/jsair-tests.yaml: Removed.
* JSAir/liveness.js: Removed.
* JSAir/opcode.js: Removed.
* JSAir/payload-gbemu-executeIteration.js: Removed.
* JSAir/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
* JSAir/payload-jsair-ACLj8C.js: Removed.
* JSAir/payload-typescript-scanIdentifier.js: Removed.
* JSAir/reg.js: Removed.
* JSAir/stack_slot.js: Removed.
* JSAir/stress-test.js: Removed.
* JSAir/strip-hash.rb: Removed.
* JSAir/symbols.js: Removed.
* JSAir/test.html: Removed.
* JSAir/test.js: Removed.
* JSAir/tmp.js: Removed.
* JSAir/tmp_base.js: Removed.
* JSAir/util.js: Removed.

Tools:
Rename JSAir to Air.js

Rubber stamped by Mark Lam.

* Scripts/run-javascriptcore-tests:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkPerformanceTestsChangeLog">trunk/PerformanceTests/ChangeLog</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptsrunjavascriptcoretests">trunk/Tools/Scripts/run-javascriptcore-tests</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/PerformanceTests/Air.js/</li>
<li><a href="#trunkPerformanceTestsAirjsairjstestsyaml">trunk/PerformanceTests/Air.js/airjs-tests.yaml</a></li>
<li><a href="#trunkPerformanceTestsAirjsbenchmarkjs">trunk/PerformanceTests/Air.js/benchmark.js</a></li>
<li><a href="#trunkPerformanceTestsAirjspayloadairjsACLj8Cjs">trunk/PerformanceTests/Air.js/payload-airjs-ACLj8C.js</a></li>
<li><a href="#trunkPerformanceTestsAirjsstresstestjs">trunk/PerformanceTests/Air.js/stress-test.js</a></li>
<li><a href="#trunkPerformanceTestsAirjstesthtml">trunk/PerformanceTests/Air.js/test.html</a></li>
<li><a href="#trunkPerformanceTestsAirjstestjs">trunk/PerformanceTests/Air.js/test.js</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkPerformanceTestsAirjsbenchmarkjs">trunk/PerformanceTests/Air.js/benchmark.js</a></li>
<li><a href="#trunkPerformanceTestsAirjsjsairtestsyaml">trunk/PerformanceTests/Air.js/jsair-tests.yaml</a></li>
<li><a href="#trunkPerformanceTestsAirjspayloadjsairACLj8Cjs">trunk/PerformanceTests/Air.js/payload-jsair-ACLj8C.js</a></li>
<li><a href="#trunkPerformanceTestsAirjstesthtml">trunk/PerformanceTests/Air.js/test.html</a></li>
<li><a href="#trunkPerformanceTestsAirjstestjs">trunk/PerformanceTests/Air.js/test.js</a></li>
<li>trunk/PerformanceTests/JSAir/</li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkPerformanceTestsAirjsairjstestsyamlfromrev201947trunkPerformanceTestsJSAirjsairtestsyaml"></a>
<div class="copfile"><h4>Copied: trunk/PerformanceTests/Air.js/airjs-tests.yaml (from rev 201947, trunk/PerformanceTests/JSAir/jsair-tests.yaml) (0 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Air.js/airjs-tests.yaml                                (rev 0)
+++ trunk/PerformanceTests/Air.js/airjs-tests.yaml        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+# Copyright (C) 2016 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer. 
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution. 
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+- path: .
+  tests:
+    - stress-test.js
+  cmd: defaultRunNoisyTest unless parseRunCommands
+
</ins></span></pre></div>
<a id="trunkPerformanceTestsAirjsbenchmarkjs"></a>
<div class="delfile"><h4>Deleted: trunk/PerformanceTests/Air.js/benchmark.js (201937 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/JSAir/benchmark.js        2016-06-10 19:59:20 UTC (rev 201937)
+++ trunk/PerformanceTests/Air.js/benchmark.js        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -1,72 +0,0 @@
</span><del>-/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-&quot;use strict&quot;;
-
-function benchmark()
-{
-    const verbose = 0;
-    const numIterations = 150;
-    
-    let before = currentTime();
-    
-    var payloads = [
-        {generate: createPayloadGbemuExecuteIteration, earlyHash: 632653144, lateHash: 372715518},
-        {generate: createPayloadImagingGaussianBlurGaussianBlur, earlyHash: 3677819581, lateHash: 1252116304},
-        {generate: createPayloadTypescriptScanIdentifier, earlyHash: 1914852601, lateHash: 837339551},
-        {generate: createPayloadJSAirACLj8C, earlyHash: 1373599940, lateHash: 3981283600}
-    ];
-    
-    for (let iteration = 0; iteration &lt; numIterations; ++iteration) {
-        for (let payload of payloads) {
-            // Sadly about 17% of our time is in generate. I don't think that's really avoidable,
-            // and I don't mind testing VMs' ability to run such &quot;data definition&quot; code quickly. I
-            // would not have expected it to be so slow from first principles!
-            let code = payload.generate();
-            
-            if (verbose) {
-                print(&quot;Before allocateStack:&quot;);
-                print(code);
-            }
-            
-            let hash = code.hash();
-            if (hash != payload.earlyHash)
-                throw new Error(`Wrong early hash for ${payload.generate.name}: ${hash}`);
-            
-            allocateStack(code);
-            
-            if (verbose) {
-                print(&quot;After allocateStack:&quot;);
-                print(code);
-            }
-
-            hash = code.hash();
-            if (hash != payload.lateHash)
-                throw new Error(`Wrong late hash for ${payload.generate.name}: ${hash}`);
-        }
-    }
-    
-    let after = currentTime();
-    return after - before;
-}
</del></span></pre></div>
<a id="trunkPerformanceTestsAirjsbenchmarkjsfromrev201947trunkPerformanceTestsJSAirbenchmarkjs"></a>
<div class="copfile"><h4>Copied: trunk/PerformanceTests/Air.js/benchmark.js (from rev 201947, trunk/PerformanceTests/JSAir/benchmark.js) (0 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Air.js/benchmark.js                                (rev 0)
+++ trunk/PerformanceTests/Air.js/benchmark.js        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+&quot;use strict&quot;;
+
+class Benchmark {
+    constructor(verbose = 0)
+    {
+        this._verbose = verbose;
+        
+        this._payloads = [
+            {generate: createPayloadGbemuExecuteIteration, earlyHash: 632653144, lateHash: 372715518},
+            {generate: createPayloadImagingGaussianBlurGaussianBlur, earlyHash: 3677819581, lateHash: 1252116304},
+            {generate: createPayloadTypescriptScanIdentifier, earlyHash: 1914852601, lateHash: 837339551},
+            {generate: createPayloadAirJSACLj8C, earlyHash: 1373599940, lateHash: 3981283600}
+        ];
+    }
+    
+    runIteration()
+    {
+        for (let payload of this._payloads) {
+            // Sadly about 17% of our time is in generate. I don't think that's really avoidable,
+            // and I don't mind testing VMs' ability to run such &quot;data definition&quot; code quickly. I
+            // would not have expected it to be so slow from first principles!
+            let code = payload.generate();
+            
+            if (this._verbose) {
+                print(&quot;Before allocateStack:&quot;);
+                print(code);
+            }
+            
+            let hash = code.hash();
+            if (hash != payload.earlyHash)
+                throw new Error(`Wrong early hash for ${payload.generate.name}: ${hash}`);
+            
+            allocateStack(code);
+            
+            if (this._verbose) {
+                print(&quot;After allocateStack:&quot;);
+                print(code);
+            }
+
+            hash = code.hash();
+            if (hash != payload.lateHash)
+                throw new Error(`Wrong late hash for ${payload.generate.name}: ${hash}`);
+        }
+    }
+}
+
+function runBenchmark()
+{
+    const verbose = 0;
+    const numIterations = 150;
+    
+    let before = currentTime();
+    
+    let benchmark = new Benchmark(verbose);
+    
+    for (let iteration = 0; iteration &lt; numIterations; ++iteration)
+        benchmark.runIteration();
+    
+    let after = currentTime();
+    return after - before;
+}
</ins></span></pre></div>
<a id="trunkPerformanceTestsAirjsjsairtestsyaml"></a>
<div class="delfile"><h4>Deleted: trunk/PerformanceTests/Air.js/jsair-tests.yaml (201937 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/JSAir/jsair-tests.yaml        2016-06-10 19:59:20 UTC (rev 201937)
+++ trunk/PerformanceTests/Air.js/jsair-tests.yaml        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -1,28 +0,0 @@
</span><del>-# Copyright (C) 2016 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1.  Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer. 
-# 2.  Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in the
-#     documentation and/or other materials provided with the distribution. 
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-- path: .
-  tests:
-    - test.js
-  cmd: defaultRunNoisyTest unless parseRunCommands
-
</del></span></pre></div>
<a id="trunkPerformanceTestsAirjspayloadairjsACLj8Cjsfromrev201937trunkPerformanceTestsJSAirpayloadjsairACLj8Cjs"></a>
<div class="copfile"><h4>Copied: trunk/PerformanceTests/Air.js/payload-airjs-ACLj8C.js (from rev 201937, trunk/PerformanceTests/JSAir/payload-jsair-ACLj8C.js) (0 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Air.js/payload-airjs-ACLj8C.js                                (rev 0)
+++ trunk/PerformanceTests/Air.js/payload-airjs-ACLj8C.js        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -0,0 +1,1730 @@
</span><ins>+&quot;use strict&quot;;
+// Generated by Air::dumpAsJS from #ACLj8C in Air.js
+function createPayloadAirJSACLj8C()
+{
+    let code = new Code();
+    let bb0 = code.addBlock();
+    let bb1 = code.addBlock();
+    let bb2 = code.addBlock();
+    let bb3 = code.addBlock();
+    let bb4 = code.addBlock();
+    let bb5 = code.addBlock();
+    let bb6 = code.addBlock();
+    let bb7 = code.addBlock();
+    let bb8 = code.addBlock();
+    let bb9 = code.addBlock();
+    let bb10 = code.addBlock();
+    let bb11 = code.addBlock();
+    let bb12 = code.addBlock();
+    let bb13 = code.addBlock();
+    let bb14 = code.addBlock();
+    let bb15 = code.addBlock();
+    let slot0 = code.addStackSlot(160, Locked);
+    let slot1 = code.addStackSlot(8, Spill);
+    let slot2 = code.addStackSlot(8, Spill);
+    let slot3 = code.addStackSlot(8, Spill);
+    let slot4 = code.addStackSlot(40, Locked);
+    slot4.setOffsetFromFP(-40);
+    let tmp61 = code.newTmp(GP);
+    let tmp60 = code.newTmp(GP);
+    let tmp59 = code.newTmp(GP);
+    let tmp58 = code.newTmp(GP);
+    let tmp57 = code.newTmp(GP);
+    let tmp56 = code.newTmp(GP);
+    let tmp55 = code.newTmp(GP);
+    let tmp54 = code.newTmp(GP);
+    let tmp53 = code.newTmp(GP);
+    let tmp52 = code.newTmp(GP);
+    let tmp51 = code.newTmp(GP);
+    let tmp50 = code.newTmp(GP);
+    let tmp49 = code.newTmp(GP);
+    let tmp48 = code.newTmp(GP);
+    let tmp47 = code.newTmp(GP);
+    let tmp46 = code.newTmp(GP);
+    let tmp45 = code.newTmp(GP);
+    let tmp44 = code.newTmp(GP);
+    let tmp43 = code.newTmp(GP);
+    let tmp42 = code.newTmp(GP);
+    let tmp41 = code.newTmp(GP);
+    let tmp40 = code.newTmp(GP);
+    let tmp39 = code.newTmp(GP);
+    let tmp38 = code.newTmp(GP);
+    let tmp37 = code.newTmp(GP);
+    let tmp36 = code.newTmp(GP);
+    let tmp35 = code.newTmp(GP);
+    let tmp34 = code.newTmp(GP);
+    let tmp33 = code.newTmp(GP);
+    let tmp32 = code.newTmp(GP);
+    let tmp31 = code.newTmp(GP);
+    let tmp30 = code.newTmp(GP);
+    let tmp29 = code.newTmp(GP);
+    let tmp28 = code.newTmp(GP);
+    let tmp27 = code.newTmp(GP);
+    let tmp26 = code.newTmp(GP);
+    let tmp25 = code.newTmp(GP);
+    let tmp24 = code.newTmp(GP);
+    let tmp23 = code.newTmp(GP);
+    let tmp22 = code.newTmp(GP);
+    let tmp21 = code.newTmp(GP);
+    let tmp20 = code.newTmp(GP);
+    let tmp19 = code.newTmp(GP);
+    let tmp18 = code.newTmp(GP);
+    let tmp17 = code.newTmp(GP);
+    let tmp16 = code.newTmp(GP);
+    let tmp15 = code.newTmp(GP);
+    let tmp14 = code.newTmp(GP);
+    let tmp13 = code.newTmp(GP);
+    let tmp12 = code.newTmp(GP);
+    let tmp11 = code.newTmp(GP);
+    let tmp10 = code.newTmp(GP);
+    let tmp9 = code.newTmp(GP);
+    let tmp8 = code.newTmp(GP);
+    let tmp7 = code.newTmp(GP);
+    let tmp6 = code.newTmp(GP);
+    let tmp5 = code.newTmp(GP);
+    let tmp4 = code.newTmp(GP);
+    let tmp3 = code.newTmp(GP);
+    let tmp2 = code.newTmp(GP);
+    let tmp1 = code.newTmp(GP);
+    let tmp0 = code.newTmp(GP);
+    let inst;
+    let arg;
+    bb0.successors.push(new FrequentedBlock(bb1, Normal));
+    bb0.successors.push(new FrequentedBlock(bb15, Normal));
+    inst = new Inst(Move);
+    arg = Arg.createBigImm(276424800, 1);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createAddr(Reg.rbp, 16);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbp);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.extraEarlyClobberedRegs.add(Reg.r11);
+    inst.extraClobberedRegs.add(Reg.r11);
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Scratch, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rbp, 72);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rbp, 64);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rbp, 56);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rbp, 48);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createBigImm(2, -65536);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rbp, 24);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rax, 16);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createBigImm(0, -65536);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r14);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r14);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.extraEarlyClobberedRegs.add(Reg.r11);
+    inst.extraClobberedRegs.add(Reg.r11);
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rcx, 32);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rcx, 40);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createBigImm(276327648, 1);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createRelCond(NotEqual);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createRelCond(NotEqual);
+    inst.args.push(arg);
+    arg = Arg.createAddr(Reg.r8, 5);
+    inst.args.push(arg);
+    arg = Arg.createImm(21);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createRelCond(NotEqual);
+    inst.args.push(arg);
+    arg = Arg.createAddr(Reg.r12, 0);
+    inst.args.push(arg);
+    arg = Arg.createImm(372);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.r12, 8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rax, -40);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createBigImm(276321024, 1);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createRelCond(NotEqual);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot0, 72);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot0, 64);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot0, 56);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot0, 48);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot0, 40);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r14);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.extraEarlyClobberedRegs.add(Reg.r11);
+    inst.extraClobberedRegs.add(Reg.r11);
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Xor64);
+    arg = Arg.createImm(6);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createImm(-2);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot2, 0);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createImm(-2);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r9);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r9);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createImm(1);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot3, 0);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createImm(1);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb0.append(inst);
+    inst = new Inst(BranchTest64);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb0.append(inst);
+    bb1.successors.push(new FrequentedBlock(bb3, Normal));
+    bb1.successors.push(new FrequentedBlock(bb2, Normal));
+    bb1.predecessors.push(bb0);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createRelCond(NotEqual);
+    inst.args.push(arg);
+    arg = Arg.createAddr(Reg.r8, 0);
+    inst.args.push(arg);
+    arg = Arg.createImm(468);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb1.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.r8, 16);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb1.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createBigImm(276741160, 1);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb1.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rcx, 0);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb1.append(inst);
+    inst = new Inst(Branch64);
+    arg = Arg.createRelCond(Equal);
+    inst.args.push(arg);
+    arg = Arg.createAddr(Reg.rax, 8);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb1.append(inst);
+    bb2.predecessors.push(bb1);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r8);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb2.append(inst);
+    inst = new Inst(Oops);
+    bb2.append(inst);
+    bb3.successors.push(new FrequentedBlock(bb4, Normal));
+    bb3.successors.push(new FrequentedBlock(bb7, Normal));
+    bb3.predecessors.push(bb1);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.r8, 24);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r13);
+    inst.args.push(arg);
+    bb3.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createRelCond(NotEqual);
+    inst.args.push(arg);
+    arg = Arg.createAddr(Reg.rbx, 5);
+    inst.args.push(arg);
+    arg = Arg.createImm(23);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r13);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb3.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createBigImm(275739616, 1);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb3.append(inst);
+    inst = new Inst(Branch64);
+    arg = Arg.createRelCond(Equal);
+    inst.args.push(arg);
+    arg = Arg.createAddr(Reg.rbx, 24);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb3.append(inst);
+    bb4.successors.push(new FrequentedBlock(bb5, Normal));
+    bb4.successors.push(new FrequentedBlock(bb6, Normal));
+    bb4.predecessors.push(bb3);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot0, 0);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rbx, 16);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createAddr(Reg.rax, 32);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot1, 0);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r13);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot0, 32);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot0, 24);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot0, 16);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.r13);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot0, 8);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createBigImm(276645872, 1);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createBigImm(276646496, 1);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(8);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move32);
+    arg = Arg.createImm(2);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(16);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(24);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(32);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(8);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(16);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(24);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(32);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r14);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.extraEarlyClobberedRegs.add(Reg.r11);
+    inst.extraClobberedRegs.add(Reg.rcx);
+    inst.extraClobberedRegs.add(Reg.rdx);
+    inst.extraClobberedRegs.add(Reg.rsi);
+    inst.extraClobberedRegs.add(Reg.rdi);
+    inst.extraClobberedRegs.add(Reg.r8);
+    inst.extraClobberedRegs.add(Reg.r9);
+    inst.extraClobberedRegs.add(Reg.r10);
+    inst.extraClobberedRegs.add(Reg.r11);
+    inst.extraClobberedRegs.add(Reg.xmm0);
+    inst.extraClobberedRegs.add(Reg.xmm1);
+    inst.extraClobberedRegs.add(Reg.xmm2);
+    inst.extraClobberedRegs.add(Reg.xmm3);
+    inst.extraClobberedRegs.add(Reg.xmm4);
+    inst.extraClobberedRegs.add(Reg.xmm5);
+    inst.extraClobberedRegs.add(Reg.xmm6);
+    inst.extraClobberedRegs.add(Reg.xmm7);
+    inst.extraClobberedRegs.add(Reg.xmm8);
+    inst.extraClobberedRegs.add(Reg.xmm9);
+    inst.extraClobberedRegs.add(Reg.xmm10);
+    inst.extraClobberedRegs.add(Reg.xmm11);
+    inst.extraClobberedRegs.add(Reg.xmm12);
+    inst.extraClobberedRegs.add(Reg.xmm13);
+    inst.extraClobberedRegs.add(Reg.xmm14);
+    inst.extraClobberedRegs.add(Reg.xmm15);
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    bb4.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot1, 0);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Xor64);
+    arg = Arg.createImm(6);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createImm(-2);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot1, 0);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb4.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createImm(1);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb4.append(inst);
+    inst = new Inst(BranchTest64);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb4.append(inst);
+    bb5.successors.push(new FrequentedBlock(bb8, Normal));
+    bb5.predecessors.push(bb4);
+    inst = new Inst(Move);
+    arg = Arg.createStack(slot1, 0);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb5.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r14);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.extraEarlyClobberedRegs.add(Reg.r11);
+    inst.extraClobberedRegs.add(Reg.r11);
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
+    bb5.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb5.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb5.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createRelCond(NotEqual);
+    inst.args.push(arg);
+    arg = Arg.createAddr(Reg.rcx, 0);
+    inst.args.push(arg);
+    arg = Arg.createImm(419);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb5.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createBigImm(276168608, 1);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb5.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(8);
+    inst.args.push(arg);
+    bb5.append(inst);
+    inst = new Inst(Move32);
+    arg = Arg.createImm(2);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(16);
+    inst.args.push(arg);
+    bb5.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(24);
+    inst.args.push(arg);
+    bb5.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.r13);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(32);
+    inst.args.push(arg);
+    bb5.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(8);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(16);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(24);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(32);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r14);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.extraEarlyClobberedRegs.add(Reg.r11);
+    inst.extraClobberedRegs.add(Reg.rcx);
+    inst.extraClobberedRegs.add(Reg.rdx);
+    inst.extraClobberedRegs.add(Reg.rsi);
+    inst.extraClobberedRegs.add(Reg.rdi);
+    inst.extraClobberedRegs.add(Reg.r8);
+    inst.extraClobberedRegs.add(Reg.r9);
+    inst.extraClobberedRegs.add(Reg.r10);
+    inst.extraClobberedRegs.add(Reg.r11);
+    inst.extraClobberedRegs.add(Reg.xmm0);
+    inst.extraClobberedRegs.add(Reg.xmm1);
+    inst.extraClobberedRegs.add(Reg.xmm2);
+    inst.extraClobberedRegs.add(Reg.xmm3);
+    inst.extraClobberedRegs.add(Reg.xmm4);
+    inst.extraClobberedRegs.add(Reg.xmm5);
+    inst.extraClobberedRegs.add(Reg.xmm6);
+    inst.extraClobberedRegs.add(Reg.xmm7);
+    inst.extraClobberedRegs.add(Reg.xmm8);
+    inst.extraClobberedRegs.add(Reg.xmm9);
+    inst.extraClobberedRegs.add(Reg.xmm10);
+    inst.extraClobberedRegs.add(Reg.xmm11);
+    inst.extraClobberedRegs.add(Reg.xmm12);
+    inst.extraClobberedRegs.add(Reg.xmm13);
+    inst.extraClobberedRegs.add(Reg.xmm14);
+    inst.extraClobberedRegs.add(Reg.xmm15);
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    bb5.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createStack(slot1, 0);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb5.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createImm(10);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb5.append(inst);
+    inst = new Inst(Jump);
+    bb5.append(inst);
+    bb6.successors.push(new FrequentedBlock(bb8, Normal));
+    bb6.predecessors.push(bb4);
+    inst = new Inst(Move);
+    arg = Arg.createImm(10);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb6.append(inst);
+    inst = new Inst(Jump);
+    bb6.append(inst);
+    bb7.successors.push(new FrequentedBlock(bb12, Normal));
+    bb7.successors.push(new FrequentedBlock(bb9, Normal));
+    bb7.predecessors.push(bb3);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb7.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rbx);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(8);
+    inst.args.push(arg);
+    bb7.append(inst);
+    inst = new Inst(Move32);
+    arg = Arg.createImm(5);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(16);
+    inst.args.push(arg);
+    bb7.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createImm(10);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(24);
+    inst.args.push(arg);
+    bb7.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.r13);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(32);
+    inst.args.push(arg);
+    bb7.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rsi);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(40);
+    inst.args.push(arg);
+    bb7.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rdx);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(48);
+    inst.args.push(arg);
+    bb7.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rdi);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(56);
+    inst.args.push(arg);
+    bb7.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(8);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(16);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(24);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(32);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(40);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(48);
+    inst.args.push(arg);
+    arg = Arg.createCallArg(56);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r14);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.extraEarlyClobberedRegs.add(Reg.r11);
+    inst.extraClobberedRegs.add(Reg.rcx);
+    inst.extraClobberedRegs.add(Reg.rdx);
+    inst.extraClobberedRegs.add(Reg.rsi);
+    inst.extraClobberedRegs.add(Reg.rdi);
+    inst.extraClobberedRegs.add(Reg.r8);
+    inst.extraClobberedRegs.add(Reg.r9);
+    inst.extraClobberedRegs.add(Reg.r10);
+    inst.extraClobberedRegs.add(Reg.r11);
+    inst.extraClobberedRegs.add(Reg.xmm0);
+    inst.extraClobberedRegs.add(Reg.xmm1);
+    inst.extraClobberedRegs.add(Reg.xmm2);
+    inst.extraClobberedRegs.add(Reg.xmm3);
+    inst.extraClobberedRegs.add(Reg.xmm4);
+    inst.extraClobberedRegs.add(Reg.xmm5);
+    inst.extraClobberedRegs.add(Reg.xmm6);
+    inst.extraClobberedRegs.add(Reg.xmm7);
+    inst.extraClobberedRegs.add(Reg.xmm8);
+    inst.extraClobberedRegs.add(Reg.xmm9);
+    inst.extraClobberedRegs.add(Reg.xmm10);
+    inst.extraClobberedRegs.add(Reg.xmm11);
+    inst.extraClobberedRegs.add(Reg.xmm12);
+    inst.extraClobberedRegs.add(Reg.xmm13);
+    inst.extraClobberedRegs.add(Reg.xmm14);
+    inst.extraClobberedRegs.add(Reg.xmm15);
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    bb7.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb7.append(inst);
+    inst = new Inst(BranchTest64);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    bb7.append(inst);
+    bb8.successors.push(new FrequentedBlock(bb13, Normal));
+    bb8.successors.push(new FrequentedBlock(bb10, Normal));
+    bb8.predecessors.push(bb6);
+    bb8.predecessors.push(bb5);
+    inst = new Inst(BranchTest64);
+    arg = Arg.createResCond(NonZero);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r15);
+    inst.args.push(arg);
+    bb8.append(inst);
+    bb9.successors.push(new FrequentedBlock(bb11, Normal));
+    bb9.predecessors.push(bb7);
+    inst = new Inst(Jump);
+    bb9.append(inst);
+    bb10.successors.push(new FrequentedBlock(bb11, Normal));
+    bb10.predecessors.push(bb8);
+    inst = new Inst(Jump);
+    bb10.append(inst);
+    bb11.predecessors.push(bb9);
+    bb11.predecessors.push(bb10);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createRelCond(Below);
+    inst.args.push(arg);
+    arg = Arg.createAddr(Reg.rax, 5);
+    inst.args.push(arg);
+    arg = Arg.createImm(20);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb11.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb11.append(inst);
+    inst = new Inst(Oops);
+    bb11.append(inst);
+    bb12.successors.push(new FrequentedBlock(bb14, Normal));
+    bb12.predecessors.push(bb7);
+    inst = new Inst(Jump);
+    bb12.append(inst);
+    bb13.successors.push(new FrequentedBlock(bb14, Normal));
+    bb13.predecessors.push(bb8);
+    inst = new Inst(Jump);
+    bb13.append(inst);
+    bb14.predecessors.push(bb12);
+    bb14.predecessors.push(bb13);
+    inst = new Inst(Move);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb14.append(inst);
+    inst = new Inst(And64);
+    arg = Arg.createImm(-9);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    bb14.append(inst);
+    inst = new Inst(Patch);
+    arg = Arg.createSpecial();
+    inst.args.push(arg);
+    arg = Arg.createRelCond(NotEqual);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rcx);
+    inst.args.push(arg);
+    arg = Arg.createImm(2);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.r12);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    inst.patchHasNonArgEffects = true;
+    inst.extraEarlyClobberedRegs = new Set();
+    inst.extraClobberedRegs = new Set();
+    inst.patchArgData = [];
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
+    bb14.append(inst);
+    inst = new Inst(Move);
+    arg = Arg.createImm(10);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb14.append(inst);
+    inst = new Inst(Ret64);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb14.append(inst);
+    bb15.predecessors.push(bb0);
+    inst = new Inst(Move);
+    arg = Arg.createImm(10);
+    inst.args.push(arg);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb15.append(inst);
+    inst = new Inst(Ret64);
+    arg = Arg.createTmp(Reg.rax);
+    inst.args.push(arg);
+    bb15.append(inst);
+    return code;
+}
</ins></span></pre></div>
<a id="trunkPerformanceTestsAirjspayloadjsairACLj8Cjs"></a>
<div class="delfile"><h4>Deleted: trunk/PerformanceTests/Air.js/payload-jsair-ACLj8C.js (201937 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/JSAir/payload-jsair-ACLj8C.js        2016-06-10 19:59:20 UTC (rev 201937)
+++ trunk/PerformanceTests/Air.js/payload-jsair-ACLj8C.js        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -1,1730 +0,0 @@
</span><del>-&quot;use strict&quot;;
-// Generated by Air::dumpAsJS from #ACLj8C in JSAir
-function createPayloadJSAirACLj8C()
-{
-    let code = new Code();
-    let bb0 = code.addBlock();
-    let bb1 = code.addBlock();
-    let bb2 = code.addBlock();
-    let bb3 = code.addBlock();
-    let bb4 = code.addBlock();
-    let bb5 = code.addBlock();
-    let bb6 = code.addBlock();
-    let bb7 = code.addBlock();
-    let bb8 = code.addBlock();
-    let bb9 = code.addBlock();
-    let bb10 = code.addBlock();
-    let bb11 = code.addBlock();
-    let bb12 = code.addBlock();
-    let bb13 = code.addBlock();
-    let bb14 = code.addBlock();
-    let bb15 = code.addBlock();
-    let slot0 = code.addStackSlot(160, Locked);
-    let slot1 = code.addStackSlot(8, Spill);
-    let slot2 = code.addStackSlot(8, Spill);
-    let slot3 = code.addStackSlot(8, Spill);
-    let slot4 = code.addStackSlot(40, Locked);
-    slot4.setOffsetFromFP(-40);
-    let tmp61 = code.newTmp(GP);
-    let tmp60 = code.newTmp(GP);
-    let tmp59 = code.newTmp(GP);
-    let tmp58 = code.newTmp(GP);
-    let tmp57 = code.newTmp(GP);
-    let tmp56 = code.newTmp(GP);
-    let tmp55 = code.newTmp(GP);
-    let tmp54 = code.newTmp(GP);
-    let tmp53 = code.newTmp(GP);
-    let tmp52 = code.newTmp(GP);
-    let tmp51 = code.newTmp(GP);
-    let tmp50 = code.newTmp(GP);
-    let tmp49 = code.newTmp(GP);
-    let tmp48 = code.newTmp(GP);
-    let tmp47 = code.newTmp(GP);
-    let tmp46 = code.newTmp(GP);
-    let tmp45 = code.newTmp(GP);
-    let tmp44 = code.newTmp(GP);
-    let tmp43 = code.newTmp(GP);
-    let tmp42 = code.newTmp(GP);
-    let tmp41 = code.newTmp(GP);
-    let tmp40 = code.newTmp(GP);
-    let tmp39 = code.newTmp(GP);
-    let tmp38 = code.newTmp(GP);
-    let tmp37 = code.newTmp(GP);
-    let tmp36 = code.newTmp(GP);
-    let tmp35 = code.newTmp(GP);
-    let tmp34 = code.newTmp(GP);
-    let tmp33 = code.newTmp(GP);
-    let tmp32 = code.newTmp(GP);
-    let tmp31 = code.newTmp(GP);
-    let tmp30 = code.newTmp(GP);
-    let tmp29 = code.newTmp(GP);
-    let tmp28 = code.newTmp(GP);
-    let tmp27 = code.newTmp(GP);
-    let tmp26 = code.newTmp(GP);
-    let tmp25 = code.newTmp(GP);
-    let tmp24 = code.newTmp(GP);
-    let tmp23 = code.newTmp(GP);
-    let tmp22 = code.newTmp(GP);
-    let tmp21 = code.newTmp(GP);
-    let tmp20 = code.newTmp(GP);
-    let tmp19 = code.newTmp(GP);
-    let tmp18 = code.newTmp(GP);
-    let tmp17 = code.newTmp(GP);
-    let tmp16 = code.newTmp(GP);
-    let tmp15 = code.newTmp(GP);
-    let tmp14 = code.newTmp(GP);
-    let tmp13 = code.newTmp(GP);
-    let tmp12 = code.newTmp(GP);
-    let tmp11 = code.newTmp(GP);
-    let tmp10 = code.newTmp(GP);
-    let tmp9 = code.newTmp(GP);
-    let tmp8 = code.newTmp(GP);
-    let tmp7 = code.newTmp(GP);
-    let tmp6 = code.newTmp(GP);
-    let tmp5 = code.newTmp(GP);
-    let tmp4 = code.newTmp(GP);
-    let tmp3 = code.newTmp(GP);
-    let tmp2 = code.newTmp(GP);
-    let tmp1 = code.newTmp(GP);
-    let tmp0 = code.newTmp(GP);
-    let inst;
-    let arg;
-    bb0.successors.push(new FrequentedBlock(bb1, Normal));
-    bb0.successors.push(new FrequentedBlock(bb15, Normal));
-    inst = new Inst(Move);
-    arg = Arg.createBigImm(276424800, 1);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createAddr(Reg.rbp, 16);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbp);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.extraEarlyClobberedRegs.add(Reg.r11);
-    inst.extraClobberedRegs.add(Reg.r11);
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Scratch, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rbp, 72);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rbp, 64);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rbp, 56);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rbp, 48);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createBigImm(2, -65536);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rbp, 24);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rax, 16);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createBigImm(0, -65536);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r14);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r14);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.extraEarlyClobberedRegs.add(Reg.r11);
-    inst.extraClobberedRegs.add(Reg.r11);
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rcx, 32);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rcx, 40);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createBigImm(276327648, 1);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createRelCond(NotEqual);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createRelCond(NotEqual);
-    inst.args.push(arg);
-    arg = Arg.createAddr(Reg.r8, 5);
-    inst.args.push(arg);
-    arg = Arg.createImm(21);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createRelCond(NotEqual);
-    inst.args.push(arg);
-    arg = Arg.createAddr(Reg.r12, 0);
-    inst.args.push(arg);
-    arg = Arg.createImm(372);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.r12, 8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rax, -40);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createBigImm(276321024, 1);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createRelCond(NotEqual);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot0, 72);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot0, 64);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot0, 56);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot0, 48);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot0, 40);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r14);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.extraEarlyClobberedRegs.add(Reg.r11);
-    inst.extraClobberedRegs.add(Reg.r11);
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Xor64);
-    arg = Arg.createImm(6);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createImm(-2);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot2, 0);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createImm(-2);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r9);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r9);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createImm(1);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot3, 0);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createImm(1);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb0.append(inst);
-    inst = new Inst(BranchTest64);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb0.append(inst);
-    bb1.successors.push(new FrequentedBlock(bb3, Normal));
-    bb1.successors.push(new FrequentedBlock(bb2, Normal));
-    bb1.predecessors.push(bb0);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createRelCond(NotEqual);
-    inst.args.push(arg);
-    arg = Arg.createAddr(Reg.r8, 0);
-    inst.args.push(arg);
-    arg = Arg.createImm(468);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb1.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.r8, 16);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb1.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createBigImm(276741160, 1);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb1.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rcx, 0);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb1.append(inst);
-    inst = new Inst(Branch64);
-    arg = Arg.createRelCond(Equal);
-    inst.args.push(arg);
-    arg = Arg.createAddr(Reg.rax, 8);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb1.append(inst);
-    bb2.predecessors.push(bb1);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r8);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb2.append(inst);
-    inst = new Inst(Oops);
-    bb2.append(inst);
-    bb3.successors.push(new FrequentedBlock(bb4, Normal));
-    bb3.successors.push(new FrequentedBlock(bb7, Normal));
-    bb3.predecessors.push(bb1);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.r8, 24);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r13);
-    inst.args.push(arg);
-    bb3.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createRelCond(NotEqual);
-    inst.args.push(arg);
-    arg = Arg.createAddr(Reg.rbx, 5);
-    inst.args.push(arg);
-    arg = Arg.createImm(23);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r13);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb3.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createBigImm(275739616, 1);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb3.append(inst);
-    inst = new Inst(Branch64);
-    arg = Arg.createRelCond(Equal);
-    inst.args.push(arg);
-    arg = Arg.createAddr(Reg.rbx, 24);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb3.append(inst);
-    bb4.successors.push(new FrequentedBlock(bb5, Normal));
-    bb4.successors.push(new FrequentedBlock(bb6, Normal));
-    bb4.predecessors.push(bb3);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot0, 0);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rbx, 16);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createAddr(Reg.rax, 32);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot1, 0);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r13);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot0, 32);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot0, 24);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot0, 16);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.r13);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot0, 8);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createBigImm(276645872, 1);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createBigImm(276646496, 1);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(8);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move32);
-    arg = Arg.createImm(2);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(16);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(24);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(32);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(8);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(16);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(24);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(32);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r14);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.extraEarlyClobberedRegs.add(Reg.r11);
-    inst.extraClobberedRegs.add(Reg.rcx);
-    inst.extraClobberedRegs.add(Reg.rdx);
-    inst.extraClobberedRegs.add(Reg.rsi);
-    inst.extraClobberedRegs.add(Reg.rdi);
-    inst.extraClobberedRegs.add(Reg.r8);
-    inst.extraClobberedRegs.add(Reg.r9);
-    inst.extraClobberedRegs.add(Reg.r10);
-    inst.extraClobberedRegs.add(Reg.r11);
-    inst.extraClobberedRegs.add(Reg.xmm0);
-    inst.extraClobberedRegs.add(Reg.xmm1);
-    inst.extraClobberedRegs.add(Reg.xmm2);
-    inst.extraClobberedRegs.add(Reg.xmm3);
-    inst.extraClobberedRegs.add(Reg.xmm4);
-    inst.extraClobberedRegs.add(Reg.xmm5);
-    inst.extraClobberedRegs.add(Reg.xmm6);
-    inst.extraClobberedRegs.add(Reg.xmm7);
-    inst.extraClobberedRegs.add(Reg.xmm8);
-    inst.extraClobberedRegs.add(Reg.xmm9);
-    inst.extraClobberedRegs.add(Reg.xmm10);
-    inst.extraClobberedRegs.add(Reg.xmm11);
-    inst.extraClobberedRegs.add(Reg.xmm12);
-    inst.extraClobberedRegs.add(Reg.xmm13);
-    inst.extraClobberedRegs.add(Reg.xmm14);
-    inst.extraClobberedRegs.add(Reg.xmm15);
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    bb4.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot1, 0);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Xor64);
-    arg = Arg.createImm(6);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createImm(-2);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot1, 0);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb4.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createImm(1);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb4.append(inst);
-    inst = new Inst(BranchTest64);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb4.append(inst);
-    bb5.successors.push(new FrequentedBlock(bb8, Normal));
-    bb5.predecessors.push(bb4);
-    inst = new Inst(Move);
-    arg = Arg.createStack(slot1, 0);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb5.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r14);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.extraEarlyClobberedRegs.add(Reg.r11);
-    inst.extraClobberedRegs.add(Reg.r11);
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.LateUse, type: GP, width: 64});
-    bb5.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb5.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb5.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createRelCond(NotEqual);
-    inst.args.push(arg);
-    arg = Arg.createAddr(Reg.rcx, 0);
-    inst.args.push(arg);
-    arg = Arg.createImm(419);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb5.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createBigImm(276168608, 1);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb5.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(8);
-    inst.args.push(arg);
-    bb5.append(inst);
-    inst = new Inst(Move32);
-    arg = Arg.createImm(2);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(16);
-    inst.args.push(arg);
-    bb5.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(24);
-    inst.args.push(arg);
-    bb5.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.r13);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(32);
-    inst.args.push(arg);
-    bb5.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(8);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(16);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(24);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(32);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r14);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.extraEarlyClobberedRegs.add(Reg.r11);
-    inst.extraClobberedRegs.add(Reg.rcx);
-    inst.extraClobberedRegs.add(Reg.rdx);
-    inst.extraClobberedRegs.add(Reg.rsi);
-    inst.extraClobberedRegs.add(Reg.rdi);
-    inst.extraClobberedRegs.add(Reg.r8);
-    inst.extraClobberedRegs.add(Reg.r9);
-    inst.extraClobberedRegs.add(Reg.r10);
-    inst.extraClobberedRegs.add(Reg.r11);
-    inst.extraClobberedRegs.add(Reg.xmm0);
-    inst.extraClobberedRegs.add(Reg.xmm1);
-    inst.extraClobberedRegs.add(Reg.xmm2);
-    inst.extraClobberedRegs.add(Reg.xmm3);
-    inst.extraClobberedRegs.add(Reg.xmm4);
-    inst.extraClobberedRegs.add(Reg.xmm5);
-    inst.extraClobberedRegs.add(Reg.xmm6);
-    inst.extraClobberedRegs.add(Reg.xmm7);
-    inst.extraClobberedRegs.add(Reg.xmm8);
-    inst.extraClobberedRegs.add(Reg.xmm9);
-    inst.extraClobberedRegs.add(Reg.xmm10);
-    inst.extraClobberedRegs.add(Reg.xmm11);
-    inst.extraClobberedRegs.add(Reg.xmm12);
-    inst.extraClobberedRegs.add(Reg.xmm13);
-    inst.extraClobberedRegs.add(Reg.xmm14);
-    inst.extraClobberedRegs.add(Reg.xmm15);
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    bb5.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createStack(slot1, 0);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb5.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createImm(10);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb5.append(inst);
-    inst = new Inst(Jump);
-    bb5.append(inst);
-    bb6.successors.push(new FrequentedBlock(bb8, Normal));
-    bb6.predecessors.push(bb4);
-    inst = new Inst(Move);
-    arg = Arg.createImm(10);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb6.append(inst);
-    inst = new Inst(Jump);
-    bb6.append(inst);
-    bb7.successors.push(new FrequentedBlock(bb12, Normal));
-    bb7.successors.push(new FrequentedBlock(bb9, Normal));
-    bb7.predecessors.push(bb3);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb7.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rbx);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(8);
-    inst.args.push(arg);
-    bb7.append(inst);
-    inst = new Inst(Move32);
-    arg = Arg.createImm(5);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(16);
-    inst.args.push(arg);
-    bb7.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createImm(10);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(24);
-    inst.args.push(arg);
-    bb7.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.r13);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(32);
-    inst.args.push(arg);
-    bb7.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rsi);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(40);
-    inst.args.push(arg);
-    bb7.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rdx);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(48);
-    inst.args.push(arg);
-    bb7.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rdi);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(56);
-    inst.args.push(arg);
-    bb7.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(8);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(16);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(24);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(32);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(40);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(48);
-    inst.args.push(arg);
-    arg = Arg.createCallArg(56);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r14);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.extraEarlyClobberedRegs.add(Reg.r11);
-    inst.extraClobberedRegs.add(Reg.rcx);
-    inst.extraClobberedRegs.add(Reg.rdx);
-    inst.extraClobberedRegs.add(Reg.rsi);
-    inst.extraClobberedRegs.add(Reg.rdi);
-    inst.extraClobberedRegs.add(Reg.r8);
-    inst.extraClobberedRegs.add(Reg.r9);
-    inst.extraClobberedRegs.add(Reg.r10);
-    inst.extraClobberedRegs.add(Reg.r11);
-    inst.extraClobberedRegs.add(Reg.xmm0);
-    inst.extraClobberedRegs.add(Reg.xmm1);
-    inst.extraClobberedRegs.add(Reg.xmm2);
-    inst.extraClobberedRegs.add(Reg.xmm3);
-    inst.extraClobberedRegs.add(Reg.xmm4);
-    inst.extraClobberedRegs.add(Reg.xmm5);
-    inst.extraClobberedRegs.add(Reg.xmm6);
-    inst.extraClobberedRegs.add(Reg.xmm7);
-    inst.extraClobberedRegs.add(Reg.xmm8);
-    inst.extraClobberedRegs.add(Reg.xmm9);
-    inst.extraClobberedRegs.add(Reg.xmm10);
-    inst.extraClobberedRegs.add(Reg.xmm11);
-    inst.extraClobberedRegs.add(Reg.xmm12);
-    inst.extraClobberedRegs.add(Reg.xmm13);
-    inst.extraClobberedRegs.add(Reg.xmm14);
-    inst.extraClobberedRegs.add(Reg.xmm15);
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Def, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    bb7.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb7.append(inst);
-    inst = new Inst(BranchTest64);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    bb7.append(inst);
-    bb8.successors.push(new FrequentedBlock(bb13, Normal));
-    bb8.successors.push(new FrequentedBlock(bb10, Normal));
-    bb8.predecessors.push(bb6);
-    bb8.predecessors.push(bb5);
-    inst = new Inst(BranchTest64);
-    arg = Arg.createResCond(NonZero);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r15);
-    inst.args.push(arg);
-    bb8.append(inst);
-    bb9.successors.push(new FrequentedBlock(bb11, Normal));
-    bb9.predecessors.push(bb7);
-    inst = new Inst(Jump);
-    bb9.append(inst);
-    bb10.successors.push(new FrequentedBlock(bb11, Normal));
-    bb10.predecessors.push(bb8);
-    inst = new Inst(Jump);
-    bb10.append(inst);
-    bb11.predecessors.push(bb9);
-    bb11.predecessors.push(bb10);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createRelCond(Below);
-    inst.args.push(arg);
-    arg = Arg.createAddr(Reg.rax, 5);
-    inst.args.push(arg);
-    arg = Arg.createImm(20);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 8});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb11.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb11.append(inst);
-    inst = new Inst(Oops);
-    bb11.append(inst);
-    bb12.successors.push(new FrequentedBlock(bb14, Normal));
-    bb12.predecessors.push(bb7);
-    inst = new Inst(Jump);
-    bb12.append(inst);
-    bb13.successors.push(new FrequentedBlock(bb14, Normal));
-    bb13.predecessors.push(bb8);
-    inst = new Inst(Jump);
-    bb13.append(inst);
-    bb14.predecessors.push(bb12);
-    bb14.predecessors.push(bb13);
-    inst = new Inst(Move);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb14.append(inst);
-    inst = new Inst(And64);
-    arg = Arg.createImm(-9);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    bb14.append(inst);
-    inst = new Inst(Patch);
-    arg = Arg.createSpecial();
-    inst.args.push(arg);
-    arg = Arg.createRelCond(NotEqual);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rcx);
-    inst.args.push(arg);
-    arg = Arg.createImm(2);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.r12);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    inst.patchHasNonArgEffects = true;
-    inst.extraEarlyClobberedRegs = new Set();
-    inst.extraClobberedRegs = new Set();
-    inst.patchArgData = [];
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 32});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.Use, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    inst.patchArgData.push({role: Arg.ColdUse, type: GP, width: 64});
-    bb14.append(inst);
-    inst = new Inst(Move);
-    arg = Arg.createImm(10);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb14.append(inst);
-    inst = new Inst(Ret64);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb14.append(inst);
-    bb15.predecessors.push(bb0);
-    inst = new Inst(Move);
-    arg = Arg.createImm(10);
-    inst.args.push(arg);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb15.append(inst);
-    inst = new Inst(Ret64);
-    arg = Arg.createTmp(Reg.rax);
-    inst.args.push(arg);
-    bb15.append(inst);
-    return code;
-}
</del></span></pre></div>
<a id="trunkPerformanceTestsAirjsstresstestjsfromrev201947trunkPerformanceTestsJSAirstresstestjs"></a>
<div class="copfile"><h4>Copied: trunk/PerformanceTests/Air.js/stress-test.js (from rev 201947, trunk/PerformanceTests/JSAir/stress-test.js) (0 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Air.js/stress-test.js                                (rev 0)
+++ trunk/PerformanceTests/Air.js/stress-test.js        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+&quot;use strict&quot;;
+
+load(&quot;all.js&quot;);
+load(&quot;payload-gbemu-executeIteration.js&quot;);
+load(&quot;payload-imaging-gaussian-blur-gaussianBlur.js&quot;);
+load(&quot;payload-airjs-ACLj8C.js&quot;);
+load(&quot;payload-typescript-scanIdentifier.js&quot;);
+load(&quot;benchmark.js&quot;);
+
+let benchmark = new Benchmark();
+let before = preciseTime();
+
+// Run for at least 10 iterations.
+for (let i = 0; i &lt; 10; ++i) {
+    print(&quot;Running mandatory iteration #&quot; + (i + 1) + &quot;:&quot;);
+    benchmark.runIteration();
+}
+
+// Run until we have been running for two seconds.
+while (preciseTime() &lt; before + 2) {
+    print(&quot;Running bonus iteration:&quot;);
+    benchmark.runIteration();
+}
+
+print(&quot;Success!&quot;);
+
+
+
</ins></span></pre></div>
<a id="trunkPerformanceTestsAirjstesthtml"></a>
<div class="delfile"><h4>Deleted: trunk/PerformanceTests/Air.js/test.html (201937 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/JSAir/test.html        2016-06-10 19:59:20 UTC (rev 201937)
+++ trunk/PerformanceTests/Air.js/test.html        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -1,41 +0,0 @@
</span><del>-&lt;html&gt;
-&lt;head&gt;
-&lt;title&gt;JSAir&lt;/title&gt;
-&lt;script src=&quot;symbols.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;tmp_base.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;arg.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;basic_block.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;code.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;frequented_block.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;inst.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;opcode.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;reg.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;stack_slot.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;tmp.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;util.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;custom.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;liveness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;insertion_set.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;allocate_stack.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;payload-gbemu-executeIteration.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;payload-imaging-gaussian-blur-gaussianBlur.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;payload-jsair-ACLj8C.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;payload-typescript-scanIdentifier.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;benchmark.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-    function runTest() {
-        var result = benchmark();
-        document.getElementById(&quot;result-summary&quot;).innerHTML = &quot;That took &quot; + result + &quot; ms.&quot;;
-    }
-&lt;/script&gt;
-&lt;/head&gt;
-&lt;body&gt;
-&lt;h1&gt;JSAir&lt;/h1&gt;
-&lt;p&gt;
-  &lt;div id=&quot;result-summary&quot;&gt;&lt;/div&gt;
-  &lt;div&gt;&lt;a href=&quot;javascript:runTest()&quot;&gt;Start Test&lt;/a&gt;&lt;/div&gt;
-&lt;/p&gt;
-&lt;/body&gt;
-&lt;/html&gt;
-
-
</del></span></pre></div>
<a id="trunkPerformanceTestsAirjstesthtmlfromrev201947trunkPerformanceTestsJSAirtesthtml"></a>
<div class="copfile"><h4>Copied: trunk/PerformanceTests/Air.js/test.html (from rev 201947, trunk/PerformanceTests/JSAir/test.html) (0 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Air.js/test.html                                (rev 0)
+++ trunk/PerformanceTests/Air.js/test.html        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Air.js&lt;/title&gt;
+&lt;script src=&quot;symbols.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;tmp_base.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;arg.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;basic_block.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;code.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;frequented_block.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;inst.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;opcode.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;reg.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;stack_slot.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;tmp.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;util.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;custom.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;liveness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;insertion_set.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;allocate_stack.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;payload-gbemu-executeIteration.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;payload-imaging-gaussian-blur-gaussianBlur.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;payload-airjs-ACLj8C.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;payload-typescript-scanIdentifier.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;benchmark.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+    function runTest() {
+        var result = runBenchmark();
+        document.getElementById(&quot;result-summary&quot;).innerHTML = &quot;That took &quot; + result + &quot; ms.&quot;;
+    }
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Air.js&lt;/h1&gt;
+&lt;p&gt;
+  &lt;div id=&quot;result-summary&quot;&gt;&lt;/div&gt;
+  &lt;div&gt;&lt;a href=&quot;javascript:runTest()&quot;&gt;Start Test&lt;/a&gt;&lt;/div&gt;
+&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+
+
</ins></span></pre></div>
<a id="trunkPerformanceTestsAirjstestjs"></a>
<div class="delfile"><h4>Deleted: trunk/PerformanceTests/Air.js/test.js (201937 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/JSAir/test.js        2016-06-10 19:59:20 UTC (rev 201937)
+++ trunk/PerformanceTests/Air.js/test.js        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -1,11 +0,0 @@
</span><del>-&quot;use strict&quot;;
-
-load(&quot;all.js&quot;);
-load(&quot;payload-gbemu-executeIteration.js&quot;);
-load(&quot;payload-imaging-gaussian-blur-gaussianBlur.js&quot;);
-load(&quot;payload-jsair-ACLj8C.js&quot;);
-load(&quot;payload-typescript-scanIdentifier.js&quot;);
-load(&quot;benchmark.js&quot;);
-
-let result = benchmark();
-print(&quot;That took &quot; + result + &quot; ms.&quot;);
</del></span></pre></div>
<a id="trunkPerformanceTestsAirjstestjsfromrev201947trunkPerformanceTestsJSAirtestjs"></a>
<div class="copfile"><h4>Copied: trunk/PerformanceTests/Air.js/test.js (from rev 201947, trunk/PerformanceTests/JSAir/test.js) (0 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/Air.js/test.js                                (rev 0)
+++ trunk/PerformanceTests/Air.js/test.js        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+&quot;use strict&quot;;
+
+load(&quot;all.js&quot;);
+load(&quot;payload-gbemu-executeIteration.js&quot;);
+load(&quot;payload-imaging-gaussian-blur-gaussianBlur.js&quot;);
+load(&quot;payload-airjs-ACLj8C.js&quot;);
+load(&quot;payload-typescript-scanIdentifier.js&quot;);
+load(&quot;benchmark.js&quot;);
+
+let result = runBenchmark();
+print(&quot;That took &quot; + result + &quot; ms.&quot;);
</ins></span></pre></div>
<a id="trunkPerformanceTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/PerformanceTests/ChangeLog (201952 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/PerformanceTests/ChangeLog        2016-06-10 23:29:10 UTC (rev 201952)
+++ trunk/PerformanceTests/ChangeLog        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -1,5 +1,50 @@
</span><span class="cx"> 2016-06-10  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Rename JSAir to Air.js.
+
+        Rubber stamped by Mark Lam.
+
+        * Air.js: Copied from PerformanceTests/JSAir.
+        * Air.js/airjs-tests.yaml: Copied from PerformanceTests/JSAir/jsair-tests.yaml.
+        * Air.js/benchmark.js: Copied from PerformanceTests/JSAir/benchmark.js.
+        (Benchmark):
+        * Air.js/jsair-tests.yaml: Removed.
+        * Air.js/payload-airjs-ACLj8C.js: Copied from PerformanceTests/JSAir/payload-jsair-ACLj8C.js.
+        * Air.js/payload-jsair-ACLj8C.js: Removed.
+        * Air.js/stress-test.js: Copied from PerformanceTests/JSAir/stress-test.js.
+        * Air.js/test.html: Copied from PerformanceTests/JSAir/test.html.
+        * Air.js/test.js: Copied from PerformanceTests/JSAir/test.js.
+        * JSAir: Removed.
+        * JSAir/all.js: Removed.
+        * JSAir/allocate_stack.js: Removed.
+        * JSAir/arg.js: Removed.
+        * JSAir/basic_block.js: Removed.
+        * JSAir/benchmark.js: Removed.
+        * JSAir/code.js: Removed.
+        * JSAir/custom.js: Removed.
+        * JSAir/frequented_block.js: Removed.
+        * JSAir/insertion_set.js: Removed.
+        * JSAir/inst.js: Removed.
+        * JSAir/jsair-tests.yaml: Removed.
+        * JSAir/liveness.js: Removed.
+        * JSAir/opcode.js: Removed.
+        * JSAir/payload-gbemu-executeIteration.js: Removed.
+        * JSAir/payload-imaging-gaussian-blur-gaussianBlur.js: Removed.
+        * JSAir/payload-jsair-ACLj8C.js: Removed.
+        * JSAir/payload-typescript-scanIdentifier.js: Removed.
+        * JSAir/reg.js: Removed.
+        * JSAir/stack_slot.js: Removed.
+        * JSAir/stress-test.js: Removed.
+        * JSAir/strip-hash.rb: Removed.
+        * JSAir/symbols.js: Removed.
+        * JSAir/test.html: Removed.
+        * JSAir/test.js: Removed.
+        * JSAir/tmp.js: Removed.
+        * JSAir/tmp_base.js: Removed.
+        * JSAir/util.js: Removed.
+
+2016-06-10  Filip Pizlo  &lt;fpizlo@apple.com&gt;
+
</ins><span class="cx">         JSC Stress Test failing: jsair-tests.yaml/test.js.ftl-eager-no-cjit
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=158571
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (201952 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2016-06-10 23:29:10 UTC (rev 201952)
+++ trunk/Tools/ChangeLog        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -1,5 +1,13 @@
</span><span class="cx"> 2016-06-10  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Rename JSAir to Air.js
+
+        Rubber stamped by Mark Lam.
+
+        * Scripts/run-javascriptcore-tests:
+
+2016-06-10  Filip Pizlo  &lt;fpizlo@apple.com&gt;
+
</ins><span class="cx">         JSC Stress Test failing: jsair-tests.yaml/test.js.ftl-eager-no-cjit
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=158571
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsScriptsrunjavascriptcoretests"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/run-javascriptcore-tests (201952 => 201953)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/run-javascriptcore-tests        2016-06-10 23:29:10 UTC (rev 201952)
+++ trunk/Tools/Scripts/run-javascriptcore-tests        2016-06-10 23:54:33 UTC (rev 201953)
</span><span class="lines">@@ -234,7 +234,7 @@
</span><span class="cx">         @testList = (
</span><span class="cx">             &quot;PerformanceTests/SunSpider/tests/sunspider-1.0&quot;,
</span><span class="cx">             &quot;PerformanceTests/JetStream/cdjs/cdjs-tests.yaml&quot;,
</span><del>-            &quot;PerformanceTests/JSAir/jsair-tests.yaml&quot;,
</del><ins>+            &quot;PerformanceTests/Air.js/airjs-tests.yaml&quot;,
</ins><span class="cx">             &quot;Source/JavaScriptCore/tests/executableAllocationFuzz.yaml&quot;,
</span><span class="cx">             &quot;Source/JavaScriptCore/tests/exceptionFuzz.yaml&quot;,
</span><span class="cx">             &quot;PerformanceTests/SunSpider/no-architecture-specific-optimizations.yaml&quot;,
</span></span></pre>
</div>
</div>

</body>
</html>