about summary refs log tree commit diff stats
path: root/html
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-03-06 18:39:16 -0800
committerKartik Agaram <vc@akkartik.com>2020-03-06 18:39:16 -0800
commitee0e67b9d7c275480827d856b926d2c403057bb8 (patch)
tree4c64d0b7bd4f25292fa73868a7ad3a7820ae4644 /html
parent8f256f1f2ee6a2a49816dd23d26cd120f526bf0b (diff)
downloadmu-ee0e67b9d7c275480827d856b926d2c403057bb8.tar.gz
6091
Diffstat (limited to 'html')
-rw-r--r--html/013direct_addressing.cc.html1878
-rw-r--r--html/014indirect_addressing.cc.html6
-rw-r--r--html/015immediate_addressing.cc.html39
-rw-r--r--html/017jump_disp8.cc.html2
-rw-r--r--html/018jump_disp32.cc.html2
-rw-r--r--html/019functions.cc.html2
-rw-r--r--html/021byte_addressing.cc.html103
-rw-r--r--html/033check_operands.cc.html880
-rw-r--r--html/034check_operand_bounds.cc.html2
-rw-r--r--html/067parse-hex.subx.html1081
-rw-r--r--html/079emit.subx.html2
-rw-r--r--html/100array-equal.subx.html2
-rw-r--r--html/apps/assort.subx.html4
-rw-r--r--html/apps/crenshaw2-1.subx.html12
-rw-r--r--html/apps/crenshaw2-1b.subx.html12
-rw-r--r--html/apps/dquotes.subx.html4
-rw-r--r--html/apps/ex1.subx.html4
-rw-r--r--html/apps/ex10.subx.html4
-rw-r--r--html/apps/ex11.subx.html4
-rw-r--r--html/apps/ex12.subx.html4
-rw-r--r--html/apps/ex13.subx.html87
-rw-r--r--html/apps/ex14.subx.html88
-rw-r--r--html/apps/ex2.subx.html4
-rw-r--r--html/apps/ex3.subx.html4
-rw-r--r--html/apps/ex4.subx.html4
-rw-r--r--html/apps/ex5.subx.html4
-rw-r--r--html/apps/ex6.subx.html4
-rw-r--r--html/apps/ex7.subx.html4
-rw-r--r--html/apps/ex8.subx.html4
-rw-r--r--html/apps/ex9.subx.html4
-rw-r--r--html/apps/factorial.subx.html6
-rw-r--r--html/apps/factorial2.subx.html4
-rw-r--r--html/apps/factorial3.subx.html4
-rw-r--r--html/apps/factorial4.subx.html4
-rw-r--r--html/apps/handle.subx.html4
-rw-r--r--html/apps/hex.subx.html10
-rw-r--r--html/apps/mu.subx.html6994
-rw-r--r--html/apps/pack.subx.html6
-rw-r--r--html/apps/random.subx.html4
-rw-r--r--html/apps/sigils.subx.html24
-rw-r--r--html/apps/survey.subx.html6
-rw-r--r--html/apps/tests.subx.html2
42 files changed, 5848 insertions, 5474 deletions
diff --git a/html/013direct_addressing.cc.html b/html/013direct_addressing.cc.html
index d99526d4..2e868413 100644
--- a/html/013direct_addressing.cc.html
+++ b/html/013direct_addressing.cc.html
@@ -382,962 +382,960 @@ if ('onhashchange' in window) {
 <span id="L321" class="LineNr"> 321 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;multiply &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>arg1<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; by r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L322" class="LineNr"> 322 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span>* arg2 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
 <span id="L323" class="LineNr"> 323 </span>  <span class="Normal">int32_t</span> result = <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg1]<span class="Delimiter">.</span>i * <span class="Delimiter">(</span>*arg2<span class="Delimiter">);</span>
-<span id="L324" class="LineNr"> 324 </span>  SF = <span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg1]<span class="Delimiter">.</span>i &lt; <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L325" class="LineNr"> 325 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg1]<span class="Delimiter">.</span>i == <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L326" class="LineNr"> 326 </span>  <span class="Normal">int64_t</span> full_result = <span class="Normal">static_cast</span>&lt;<span class="Normal">int64_t</span>&gt;<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg1]<span class="Delimiter">.</span>i<span class="Delimiter">)</span> * <span class="Delimiter">(</span>*arg2<span class="Delimiter">);</span>
-<span id="L327" class="LineNr"> 327 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg1]<span class="Delimiter">.</span>i != full_result<span class="Delimiter">);</span>
-<span id="L328" class="LineNr"> 328 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <a href='010---vm.cc.html#L82'>OF</a><span class="Delimiter">;</span>
-<span id="L329" class="LineNr"> 329 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L330" class="LineNr"> 330 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg1]<span class="Delimiter">.</span>i = result<span class="Delimiter">;</span>
-<span id="L331" class="LineNr"> 331 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg1]<span class="Delimiter">.</span>i &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L332" class="LineNr"> 332 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L333" class="LineNr"> 333 </span><span class="Delimiter">}</span>
+<span id="L324" class="LineNr"> 324 </span>  <span class="Normal">int64_t</span> full_result = <span class="Normal">static_cast</span>&lt;<span class="Normal">int64_t</span>&gt;<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg1]<span class="Delimiter">.</span>i<span class="Delimiter">)</span> * <span class="Delimiter">(</span>*arg2<span class="Delimiter">);</span>
+<span id="L325" class="LineNr"> 325 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Delimiter">(</span>result != full_result<span class="Delimiter">);</span>
+<span id="L326" class="LineNr"> 326 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <a href='010---vm.cc.html#L82'>OF</a><span class="Delimiter">;</span>
+<span id="L327" class="LineNr"> 327 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L328" class="LineNr"> 328 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg1]<span class="Delimiter">.</span>i = result<span class="Delimiter">;</span>
+<span id="L329" class="LineNr"> 329 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg1]<span class="Delimiter">.</span>i &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L330" class="LineNr"> 330 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L331" class="LineNr"> 331 </span><span class="Delimiter">}</span>
+<span id="L332" class="LineNr"> 332 </span>
+<span id="L333" class="LineNr"> 333 </span><span class="SalientComment">//:: negate</span>
 <span id="L334" class="LineNr"> 334 </span>
-<span id="L335" class="LineNr"> 335 </span><span class="SalientComment">//:: negate</span>
-<span id="L336" class="LineNr"> 336 </span>
-<span id="L337" class="LineNr"> 337 </span><span class="Delimiter">:(code)</span>
-<span id="L338" class="LineNr"> 338 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L338'>test_negate_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L339" class="LineNr"> 339 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L340" class="LineNr"> 340 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L341" class="LineNr"> 341 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L342" class="LineNr"> 342 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L343" class="LineNr"> 343 </span>      <span class="Constant">&quot;  f7     db                                    \n&quot;</span>  <span class="Comment">// negate EBX</span>
-<span id="L344" class="LineNr"> 344 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (subop negate) 011 (dest EBX)</span>
-<span id="L345" class="LineNr"> 345 </span>  <span class="Delimiter">);</span>
-<span id="L346" class="LineNr"> 346 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L347" class="LineNr"> 347 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L348" class="LineNr"> 348 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
-<span id="L349" class="LineNr"> 349 </span>      <span class="Constant">&quot;run: subop: negate\n&quot;</span>
-<span id="L350" class="LineNr"> 350 </span>      <span class="Constant">&quot;run: storing 0xffffffff\n&quot;</span>
-<span id="L351" class="LineNr"> 351 </span>  <span class="Delimiter">);</span>
-<span id="L352" class="LineNr"> 352 </span><span class="Delimiter">}</span>
-<span id="L353" class="LineNr"> 353 </span>
-<span id="L354" class="LineNr"> 354 </span><span class="Delimiter">:(before &quot;End Op f7 Subops&quot;)</span>
-<span id="L355" class="LineNr"> 355 </span><span class="Normal">case</span> <span class="Constant">3</span>: <span class="Delimiter">{</span>  <span class="Comment">// negate r/m32</span>
-<span id="L356" class="LineNr"> 356 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: negate&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L357" class="LineNr"> 357 </span>  <span class="Comment">// one case that can overflow</span>
-<span id="L358" class="LineNr"> 358 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><span class="Normal">static_cast</span>&lt;<span class="Normal">uint32_t</span>&gt;<span class="Delimiter">(</span>*arg1<span class="Delimiter">)</span> == <span class="Constant">0x80000000</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L359" class="LineNr"> 359 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;overflow&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L360" class="LineNr"> 360 </span>    SF = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L361" class="LineNr"> 361 </span>    <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L362" class="LineNr"> 362 </span>    <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L363" class="LineNr"> 363 </span>    <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L364" class="LineNr"> 364 </span>  <span class="Delimiter">}</span>
-<span id="L365" class="LineNr"> 365 </span>  <span class="Normal">int32_t</span> result = -<span class="Delimiter">(</span>*arg1<span class="Delimiter">);</span>
-<span id="L366" class="LineNr"> 366 </span>  SF = <span class="Delimiter">(</span>result &gt;&gt; <span class="Constant">31</span><span class="Delimiter">);</span>
-<span id="L367" class="LineNr"> 367 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>result == <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L368" class="LineNr"> 368 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L369" class="LineNr"> 369 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <span class="Delimiter">(</span>*arg1 != <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L370" class="LineNr"> 370 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L371" class="LineNr"> 371 </span>  *arg1 = result<span class="Delimiter">;</span>
-<span id="L372" class="LineNr"> 372 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L373" class="LineNr"> 373 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L374" class="LineNr"> 374 </span><span class="Delimiter">}</span>
-<span id="L375" class="LineNr"> 375 </span>
-<span id="L376" class="LineNr"> 376 </span><span class="Delimiter">:(code)</span>
-<span id="L377" class="LineNr"> 377 </span><span class="Comment">// negate can overflow in exactly one situation</span>
-<span id="L378" class="LineNr"> 378 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L378'>test_negate_can_overflow</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L379" class="LineNr"> 379 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x80000000</span><span class="Delimiter">;</span>  <span class="Comment">// INT_MIN</span>
-<span id="L380" class="LineNr"> 380 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L381" class="LineNr"> 381 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L382" class="LineNr"> 382 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L383" class="LineNr"> 383 </span>      <span class="Constant">&quot;  f7     db                                    \n&quot;</span>  <span class="Comment">// negate EBX</span>
-<span id="L384" class="LineNr"> 384 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (subop negate) 011 (dest EBX)</span>
-<span id="L385" class="LineNr"> 385 </span>  <span class="Delimiter">);</span>
-<span id="L386" class="LineNr"> 386 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L387" class="LineNr"> 387 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L388" class="LineNr"> 388 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
-<span id="L389" class="LineNr"> 389 </span>      <span class="Constant">&quot;run: subop: negate\n&quot;</span>
-<span id="L390" class="LineNr"> 390 </span>      <span class="Constant">&quot;run: overflow\n&quot;</span>
-<span id="L391" class="LineNr"> 391 </span>  <span class="Delimiter">);</span>
-<span id="L392" class="LineNr"> 392 </span><span class="Delimiter">}</span>
+<span id="L335" class="LineNr"> 335 </span><span class="Delimiter">:(code)</span>
+<span id="L336" class="LineNr"> 336 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L336'>test_negate_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L337" class="LineNr"> 337 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L338" class="LineNr"> 338 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L339" class="LineNr"> 339 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L340" class="LineNr"> 340 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L341" class="LineNr"> 341 </span>      <span class="Constant">&quot;  f7     db                                    \n&quot;</span>  <span class="Comment">// negate EBX</span>
+<span id="L342" class="LineNr"> 342 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (subop negate) 011 (dest EBX)</span>
+<span id="L343" class="LineNr"> 343 </span>  <span class="Delimiter">);</span>
+<span id="L344" class="LineNr"> 344 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L345" class="LineNr"> 345 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L346" class="LineNr"> 346 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
+<span id="L347" class="LineNr"> 347 </span>      <span class="Constant">&quot;run: subop: negate\n&quot;</span>
+<span id="L348" class="LineNr"> 348 </span>      <span class="Constant">&quot;run: storing 0xffffffff\n&quot;</span>
+<span id="L349" class="LineNr"> 349 </span>  <span class="Delimiter">);</span>
+<span id="L350" class="LineNr"> 350 </span><span class="Delimiter">}</span>
+<span id="L351" class="LineNr"> 351 </span>
+<span id="L352" class="LineNr"> 352 </span><span class="Delimiter">:(before &quot;End Op f7 Subops&quot;)</span>
+<span id="L353" class="LineNr"> 353 </span><span class="Normal">case</span> <span class="Constant">3</span>: <span class="Delimiter">{</span>  <span class="Comment">// negate r/m32</span>
+<span id="L354" class="LineNr"> 354 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: negate&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L355" class="LineNr"> 355 </span>  <span class="Comment">// one case that can overflow</span>
+<span id="L356" class="LineNr"> 356 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><span class="Normal">static_cast</span>&lt;<span class="Normal">uint32_t</span>&gt;<span class="Delimiter">(</span>*arg1<span class="Delimiter">)</span> == <span class="Constant">0x80000000</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L357" class="LineNr"> 357 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;overflow&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L358" class="LineNr"> 358 </span>    SF = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L359" class="LineNr"> 359 </span>    <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L360" class="LineNr"> 360 </span>    <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L361" class="LineNr"> 361 </span>    <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L362" class="LineNr"> 362 </span>  <span class="Delimiter">}</span>
+<span id="L363" class="LineNr"> 363 </span>  <span class="Normal">int32_t</span> result = -<span class="Delimiter">(</span>*arg1<span class="Delimiter">);</span>
+<span id="L364" class="LineNr"> 364 </span>  SF = <span class="Delimiter">(</span>result &gt;&gt; <span class="Constant">31</span><span class="Delimiter">);</span>
+<span id="L365" class="LineNr"> 365 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>result == <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L366" class="LineNr"> 366 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L367" class="LineNr"> 367 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <span class="Delimiter">(</span>*arg1 != <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L368" class="LineNr"> 368 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L369" class="LineNr"> 369 </span>  *arg1 = result<span class="Delimiter">;</span>
+<span id="L370" class="LineNr"> 370 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L371" class="LineNr"> 371 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L372" class="LineNr"> 372 </span><span class="Delimiter">}</span>
+<span id="L373" class="LineNr"> 373 </span>
+<span id="L374" class="LineNr"> 374 </span><span class="Delimiter">:(code)</span>
+<span id="L375" class="LineNr"> 375 </span><span class="Comment">// negate can overflow in exactly one situation</span>
+<span id="L376" class="LineNr"> 376 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L376'>test_negate_can_overflow</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L377" class="LineNr"> 377 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x80000000</span><span class="Delimiter">;</span>  <span class="Comment">// INT_MIN</span>
+<span id="L378" class="LineNr"> 378 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L379" class="LineNr"> 379 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L380" class="LineNr"> 380 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L381" class="LineNr"> 381 </span>      <span class="Constant">&quot;  f7     db                                    \n&quot;</span>  <span class="Comment">// negate EBX</span>
+<span id="L382" class="LineNr"> 382 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (subop negate) 011 (dest EBX)</span>
+<span id="L383" class="LineNr"> 383 </span>  <span class="Delimiter">);</span>
+<span id="L384" class="LineNr"> 384 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L385" class="LineNr"> 385 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L386" class="LineNr"> 386 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
+<span id="L387" class="LineNr"> 387 </span>      <span class="Constant">&quot;run: subop: negate\n&quot;</span>
+<span id="L388" class="LineNr"> 388 </span>      <span class="Constant">&quot;run: overflow\n&quot;</span>
+<span id="L389" class="LineNr"> 389 </span>  <span class="Delimiter">);</span>
+<span id="L390" class="LineNr"> 390 </span><span class="Delimiter">}</span>
+<span id="L391" class="LineNr"> 391 </span>
+<span id="L392" class="LineNr"> 392 </span><span class="SalientComment">//:: divide with remainder</span>
 <span id="L393" class="LineNr"> 393 </span>
-<span id="L394" class="LineNr"> 394 </span><span class="SalientComment">//:: divide with remainder</span>
-<span id="L395" class="LineNr"> 395 </span>
-<span id="L396" class="LineNr"> 396 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L396'>test_divide_EAX_by_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L397" class="LineNr"> 397 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">7</span><span class="Delimiter">;</span>
-<span id="L398" class="LineNr"> 398 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>u = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L399" class="LineNr"> 399 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">3</span><span class="Delimiter">;</span>
-<span id="L400" class="LineNr"> 400 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L401" class="LineNr"> 401 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L402" class="LineNr"> 402 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L403" class="LineNr"> 403 </span>      <span class="Constant">&quot;  f7     f9                                    \n&quot;</span>  <span class="Comment">// multiply EAX by ECX</span>
-<span id="L404" class="LineNr"> 404 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop idiv) 001 (divisor ECX)</span>
-<span id="L405" class="LineNr"> 405 </span>  <span class="Delimiter">);</span>
-<span id="L406" class="LineNr"> 406 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L407" class="LineNr"> 407 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L408" class="LineNr"> 408 </span>      <span class="Constant">&quot;run: r/m32 is ECX\n&quot;</span>
-<span id="L409" class="LineNr"> 409 </span>      <span class="Constant">&quot;run: subop: divide <a href='010---vm.cc.html#L12'>EDX</a>:<a href='010---vm.cc.html#L10'>EAX</a> by r/m32, storing quotient in <a href='010---vm.cc.html#L10'>EAX</a> and remainder in EDX\n&quot;</span>
-<span id="L410" class="LineNr"> 410 </span>      <span class="Constant">&quot;run: quotient: 0x00000002\n&quot;</span>
-<span id="L411" class="LineNr"> 411 </span>      <span class="Constant">&quot;run: remainder: 0x00000001\n&quot;</span>
-<span id="L412" class="LineNr"> 412 </span>  <span class="Delimiter">);</span>
-<span id="L413" class="LineNr"> 413 </span><span class="Delimiter">}</span>
-<span id="L414" class="LineNr"> 414 </span>
-<span id="L415" class="LineNr"> 415 </span><span class="Delimiter">:(before &quot;End Op f7 Subops&quot;)</span>
-<span id="L416" class="LineNr"> 416 </span><span class="Normal">case</span> <span class="Constant">7</span>: <span class="Delimiter">{</span>  <span class="Comment">// divide EDX:EAX by r/m32, storing quotient in EAX and remainder in EDX</span>
-<span id="L417" class="LineNr"> 417 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: divide <a href='010---vm.cc.html#L12'>EDX</a>:<a href='010---vm.cc.html#L10'>EAX</a> by r/m32, storing quotient in <a href='010---vm.cc.html#L10'>EAX</a> and remainder in EDX&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L418" class="LineNr"> 418 </span>  <span class="Normal">int64_t</span> dividend = <span class="Normal">static_cast</span>&lt;<span class="Normal">int64_t</span>&gt;<span class="Delimiter">((</span><span class="Normal">static_cast</span>&lt;<span class="Normal">uint64_t</span>&gt;<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>u<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">32</span><span class="Delimiter">)</span> | <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u<span class="Delimiter">);</span>
-<span id="L419" class="LineNr"> 419 </span>  <span class="Normal">int32_t</span> divisor = *arg1<span class="Delimiter">;</span>
-<span id="L420" class="LineNr"> 420 </span>  assert<span class="Delimiter">(</span>divisor != <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L421" class="LineNr"> 421 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = dividend/divisor<span class="Delimiter">;</span>  <span class="Comment">// quotient</span>
-<span id="L422" class="LineNr"> 422 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>i = dividend%divisor<span class="Delimiter">;</span>  <span class="Comment">// remainder</span>
-<span id="L423" class="LineNr"> 423 </span>  <span class="Comment">// flag state undefined</span>
-<span id="L424" class="LineNr"> 424 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;quotient: 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L425" class="LineNr"> 425 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;remainder: 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>i &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L426" class="LineNr"> 426 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L427" class="LineNr"> 427 </span><span class="Delimiter">}</span>
-<span id="L428" class="LineNr"> 428 </span>
-<span id="L429" class="LineNr"> 429 </span><span class="Delimiter">:(code)</span>
-<span id="L430" class="LineNr"> 430 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L430'>test_divide_EAX_by_negative_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L431" class="LineNr"> 431 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">7</span><span class="Delimiter">;</span>
-<span id="L432" class="LineNr"> 432 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>u = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L433" class="LineNr"> 433 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = -<span class="Constant">3</span><span class="Delimiter">;</span>
-<span id="L434" class="LineNr"> 434 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L435" class="LineNr"> 435 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L436" class="LineNr"> 436 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L437" class="LineNr"> 437 </span>      <span class="Constant">&quot;  f7     f9                                    \n&quot;</span>  <span class="Comment">// multiply EAX by ECX</span>
-<span id="L438" class="LineNr"> 438 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop idiv) 001 (divisor ECX)</span>
-<span id="L439" class="LineNr"> 439 </span>  <span class="Delimiter">);</span>
-<span id="L440" class="LineNr"> 440 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L441" class="LineNr"> 441 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L442" class="LineNr"> 442 </span>      <span class="Constant">&quot;run: r/m32 is ECX\n&quot;</span>
-<span id="L443" class="LineNr"> 443 </span>      <span class="Constant">&quot;run: subop: divide <a href='010---vm.cc.html#L12'>EDX</a>:<a href='010---vm.cc.html#L10'>EAX</a> by r/m32, storing quotient in <a href='010---vm.cc.html#L10'>EAX</a> and remainder in EDX\n&quot;</span>
-<span id="L444" class="LineNr"> 444 </span>      <span class="Constant">&quot;run: quotient: 0xfffffffe\n&quot;</span>  <span class="Comment">// -2</span>
-<span id="L445" class="LineNr"> 445 </span>      <span class="Constant">&quot;run: remainder: 0x00000001\n&quot;</span>
-<span id="L446" class="LineNr"> 446 </span>  <span class="Delimiter">);</span>
-<span id="L447" class="LineNr"> 447 </span><span class="Delimiter">}</span>
-<span id="L448" class="LineNr"> 448 </span>
-<span id="L449" class="LineNr"> 449 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L449'>test_divide_negative_EAX_by_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L450" class="LineNr"> 450 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = -<span class="Constant">7</span><span class="Delimiter">;</span>
-<span id="L451" class="LineNr"> 451 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>i = -<span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// sign extend</span>
-<span id="L452" class="LineNr"> 452 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">3</span><span class="Delimiter">;</span>
-<span id="L453" class="LineNr"> 453 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L454" class="LineNr"> 454 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L455" class="LineNr"> 455 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L456" class="LineNr"> 456 </span>      <span class="Constant">&quot;  f7     f9                                    \n&quot;</span>  <span class="Comment">// multiply EAX by ECX</span>
-<span id="L457" class="LineNr"> 457 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop idiv) 001 (divisor ECX)</span>
-<span id="L458" class="LineNr"> 458 </span>  <span class="Delimiter">);</span>
-<span id="L459" class="LineNr"> 459 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L460" class="LineNr"> 460 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L461" class="LineNr"> 461 </span>      <span class="Constant">&quot;run: r/m32 is ECX\n&quot;</span>
-<span id="L462" class="LineNr"> 462 </span>      <span class="Constant">&quot;run: subop: divide <a href='010---vm.cc.html#L12'>EDX</a>:<a href='010---vm.cc.html#L10'>EAX</a> by r/m32, storing quotient in <a href='010---vm.cc.html#L10'>EAX</a> and remainder in EDX\n&quot;</span>
-<span id="L463" class="LineNr"> 463 </span>      <span class="Constant">&quot;run: quotient: 0xfffffffe\n&quot;</span>  <span class="Comment">// -2</span>
-<span id="L464" class="LineNr"> 464 </span>      <span class="Constant">&quot;run: remainder: 0xffffffff\n&quot;</span>  <span class="Comment">// -1, same sign as divident (EDX:EAX)</span>
-<span id="L465" class="LineNr"> 465 </span>  <span class="Delimiter">);</span>
-<span id="L466" class="LineNr"> 466 </span><span class="Delimiter">}</span>
-<span id="L467" class="LineNr"> 467 </span>
-<span id="L468" class="LineNr"> 468 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L468'>test_divide_negative_EDX_EAX_by_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L469" class="LineNr"> 469 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0</span><span class="Delimiter">;</span>  <span class="Comment">// lower 32 bits are clear</span>
-<span id="L470" class="LineNr"> 470 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>i = -<span class="Constant">7</span><span class="Delimiter">;</span>
-<span id="L471" class="LineNr"> 471 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">0x40000000</span><span class="Delimiter">;</span>  <span class="Comment">// 2^30 (largest positive power of 2)</span>
-<span id="L472" class="LineNr"> 472 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L473" class="LineNr"> 473 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L474" class="LineNr"> 474 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L475" class="LineNr"> 475 </span>      <span class="Constant">&quot;  f7     f9                                    \n&quot;</span>  <span class="Comment">// multiply EAX by ECX</span>
-<span id="L476" class="LineNr"> 476 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop idiv) 001 (divisor ECX)</span>
-<span id="L477" class="LineNr"> 477 </span>  <span class="Delimiter">);</span>
-<span id="L478" class="LineNr"> 478 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L479" class="LineNr"> 479 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L480" class="LineNr"> 480 </span>      <span class="Constant">&quot;run: r/m32 is ECX\n&quot;</span>
-<span id="L481" class="LineNr"> 481 </span>      <span class="Constant">&quot;run: subop: divide <a href='010---vm.cc.html#L12'>EDX</a>:<a href='010---vm.cc.html#L10'>EAX</a> by r/m32, storing quotient in <a href='010---vm.cc.html#L10'>EAX</a> and remainder in EDX\n&quot;</span>
-<span id="L482" class="LineNr"> 482 </span>      <span class="Constant">&quot;run: quotient: 0xffffffe4\n&quot;</span>  <span class="Comment">// (-7 &lt;&lt; 32) / (1 &lt;&lt; 30) = -7 &lt;&lt; 2 = -28</span>
-<span id="L483" class="LineNr"> 483 </span>      <span class="Constant">&quot;run: remainder: 0x00000000\n&quot;</span>
-<span id="L484" class="LineNr"> 484 </span>  <span class="Delimiter">);</span>
-<span id="L485" class="LineNr"> 485 </span><span class="Delimiter">}</span>
+<span id="L394" class="LineNr"> 394 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L394'>test_divide_EAX_by_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L395" class="LineNr"> 395 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">7</span><span class="Delimiter">;</span>
+<span id="L396" class="LineNr"> 396 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>u = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L397" class="LineNr"> 397 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">3</span><span class="Delimiter">;</span>
+<span id="L398" class="LineNr"> 398 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L399" class="LineNr"> 399 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L400" class="LineNr"> 400 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L401" class="LineNr"> 401 </span>      <span class="Constant">&quot;  f7     f9                                    \n&quot;</span>  <span class="Comment">// multiply EAX by ECX</span>
+<span id="L402" class="LineNr"> 402 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop idiv) 001 (divisor ECX)</span>
+<span id="L403" class="LineNr"> 403 </span>  <span class="Delimiter">);</span>
+<span id="L404" class="LineNr"> 404 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L405" class="LineNr"> 405 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L406" class="LineNr"> 406 </span>      <span class="Constant">&quot;run: r/m32 is ECX\n&quot;</span>
+<span id="L407" class="LineNr"> 407 </span>      <span class="Constant">&quot;run: subop: divide <a href='010---vm.cc.html#L12'>EDX</a>:<a href='010---vm.cc.html#L10'>EAX</a> by r/m32, storing quotient in <a href='010---vm.cc.html#L10'>EAX</a> and remainder in EDX\n&quot;</span>
+<span id="L408" class="LineNr"> 408 </span>      <span class="Constant">&quot;run: quotient: 0x00000002\n&quot;</span>
+<span id="L409" class="LineNr"> 409 </span>      <span class="Constant">&quot;run: remainder: 0x00000001\n&quot;</span>
+<span id="L410" class="LineNr"> 410 </span>  <span class="Delimiter">);</span>
+<span id="L411" class="LineNr"> 411 </span><span class="Delimiter">}</span>
+<span id="L412" class="LineNr"> 412 </span>
+<span id="L413" class="LineNr"> 413 </span><span class="Delimiter">:(before &quot;End Op f7 Subops&quot;)</span>
+<span id="L414" class="LineNr"> 414 </span><span class="Normal">case</span> <span class="Constant">7</span>: <span class="Delimiter">{</span>  <span class="Comment">// divide EDX:EAX by r/m32, storing quotient in EAX and remainder in EDX</span>
+<span id="L415" class="LineNr"> 415 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: divide <a href='010---vm.cc.html#L12'>EDX</a>:<a href='010---vm.cc.html#L10'>EAX</a> by r/m32, storing quotient in <a href='010---vm.cc.html#L10'>EAX</a> and remainder in EDX&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L416" class="LineNr"> 416 </span>  <span class="Normal">int64_t</span> dividend = <span class="Normal">static_cast</span>&lt;<span class="Normal">int64_t</span>&gt;<span class="Delimiter">((</span><span class="Normal">static_cast</span>&lt;<span class="Normal">uint64_t</span>&gt;<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>u<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">32</span><span class="Delimiter">)</span> | <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u<span class="Delimiter">);</span>
+<span id="L417" class="LineNr"> 417 </span>  <span class="Normal">int32_t</span> divisor = *arg1<span class="Delimiter">;</span>
+<span id="L418" class="LineNr"> 418 </span>  assert<span class="Delimiter">(</span>divisor != <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L419" class="LineNr"> 419 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = dividend/divisor<span class="Delimiter">;</span>  <span class="Comment">// quotient</span>
+<span id="L420" class="LineNr"> 420 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>i = dividend%divisor<span class="Delimiter">;</span>  <span class="Comment">// remainder</span>
+<span id="L421" class="LineNr"> 421 </span>  <span class="Comment">// flag state undefined</span>
+<span id="L422" class="LineNr"> 422 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;quotient: 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L423" class="LineNr"> 423 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;remainder: 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>i &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L424" class="LineNr"> 424 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L425" class="LineNr"> 425 </span><span class="Delimiter">}</span>
+<span id="L426" class="LineNr"> 426 </span>
+<span id="L427" class="LineNr"> 427 </span><span class="Delimiter">:(code)</span>
+<span id="L428" class="LineNr"> 428 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L428'>test_divide_EAX_by_negative_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L429" class="LineNr"> 429 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">7</span><span class="Delimiter">;</span>
+<span id="L430" class="LineNr"> 430 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>u = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L431" class="LineNr"> 431 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = -<span class="Constant">3</span><span class="Delimiter">;</span>
+<span id="L432" class="LineNr"> 432 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L433" class="LineNr"> 433 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L434" class="LineNr"> 434 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L435" class="LineNr"> 435 </span>      <span class="Constant">&quot;  f7     f9                                    \n&quot;</span>  <span class="Comment">// multiply EAX by ECX</span>
+<span id="L436" class="LineNr"> 436 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop idiv) 001 (divisor ECX)</span>
+<span id="L437" class="LineNr"> 437 </span>  <span class="Delimiter">);</span>
+<span id="L438" class="LineNr"> 438 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L439" class="LineNr"> 439 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L440" class="LineNr"> 440 </span>      <span class="Constant">&quot;run: r/m32 is ECX\n&quot;</span>
+<span id="L441" class="LineNr"> 441 </span>      <span class="Constant">&quot;run: subop: divide <a href='010---vm.cc.html#L12'>EDX</a>:<a href='010---vm.cc.html#L10'>EAX</a> by r/m32, storing quotient in <a href='010---vm.cc.html#L10'>EAX</a> and remainder in EDX\n&quot;</span>
+<span id="L442" class="LineNr"> 442 </span>      <span class="Constant">&quot;run: quotient: 0xfffffffe\n&quot;</span>  <span class="Comment">// -2</span>
+<span id="L443" class="LineNr"> 443 </span>      <span class="Constant">&quot;run: remainder: 0x00000001\n&quot;</span>
+<span id="L444" class="LineNr"> 444 </span>  <span class="Delimiter">);</span>
+<span id="L445" class="LineNr"> 445 </span><span class="Delimiter">}</span>
+<span id="L446" class="LineNr"> 446 </span>
+<span id="L447" class="LineNr"> 447 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L447'>test_divide_negative_EAX_by_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L448" class="LineNr"> 448 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = -<span class="Constant">7</span><span class="Delimiter">;</span>
+<span id="L449" class="LineNr"> 449 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>i = -<span class="Constant">1</span><span class="Delimiter">;</span>  <span class="Comment">// sign extend</span>
+<span id="L450" class="LineNr"> 450 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">3</span><span class="Delimiter">;</span>
+<span id="L451" class="LineNr"> 451 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L452" class="LineNr"> 452 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L453" class="LineNr"> 453 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L454" class="LineNr"> 454 </span>      <span class="Constant">&quot;  f7     f9                                    \n&quot;</span>  <span class="Comment">// multiply EAX by ECX</span>
+<span id="L455" class="LineNr"> 455 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop idiv) 001 (divisor ECX)</span>
+<span id="L456" class="LineNr"> 456 </span>  <span class="Delimiter">);</span>
+<span id="L457" class="LineNr"> 457 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L458" class="LineNr"> 458 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L459" class="LineNr"> 459 </span>      <span class="Constant">&quot;run: r/m32 is ECX\n&quot;</span>
+<span id="L460" class="LineNr"> 460 </span>      <span class="Constant">&quot;run: subop: divide <a href='010---vm.cc.html#L12'>EDX</a>:<a href='010---vm.cc.html#L10'>EAX</a> by r/m32, storing quotient in <a href='010---vm.cc.html#L10'>EAX</a> and remainder in EDX\n&quot;</span>
+<span id="L461" class="LineNr"> 461 </span>      <span class="Constant">&quot;run: quotient: 0xfffffffe\n&quot;</span>  <span class="Comment">// -2</span>
+<span id="L462" class="LineNr"> 462 </span>      <span class="Constant">&quot;run: remainder: 0xffffffff\n&quot;</span>  <span class="Comment">// -1, same sign as divident (EDX:EAX)</span>
+<span id="L463" class="LineNr"> 463 </span>  <span class="Delimiter">);</span>
+<span id="L464" class="LineNr"> 464 </span><span class="Delimiter">}</span>
+<span id="L465" class="LineNr"> 465 </span>
+<span id="L466" class="LineNr"> 466 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L466'>test_divide_negative_EDX_EAX_by_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L467" class="LineNr"> 467 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0</span><span class="Delimiter">;</span>  <span class="Comment">// lower 32 bits are clear</span>
+<span id="L468" class="LineNr"> 468 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EDX]<span class="Delimiter">.</span>i = -<span class="Constant">7</span><span class="Delimiter">;</span>
+<span id="L469" class="LineNr"> 469 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">0x40000000</span><span class="Delimiter">;</span>  <span class="Comment">// 2^30 (largest positive power of 2)</span>
+<span id="L470" class="LineNr"> 470 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L471" class="LineNr"> 471 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L472" class="LineNr"> 472 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L473" class="LineNr"> 473 </span>      <span class="Constant">&quot;  f7     f9                                    \n&quot;</span>  <span class="Comment">// multiply EAX by ECX</span>
+<span id="L474" class="LineNr"> 474 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop idiv) 001 (divisor ECX)</span>
+<span id="L475" class="LineNr"> 475 </span>  <span class="Delimiter">);</span>
+<span id="L476" class="LineNr"> 476 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L477" class="LineNr"> 477 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L478" class="LineNr"> 478 </span>      <span class="Constant">&quot;run: r/m32 is ECX\n&quot;</span>
+<span id="L479" class="LineNr"> 479 </span>      <span class="Constant">&quot;run: subop: divide <a href='010---vm.cc.html#L12'>EDX</a>:<a href='010---vm.cc.html#L10'>EAX</a> by r/m32, storing quotient in <a href='010---vm.cc.html#L10'>EAX</a> and remainder in EDX\n&quot;</span>
+<span id="L480" class="LineNr"> 480 </span>      <span class="Constant">&quot;run: quotient: 0xffffffe4\n&quot;</span>  <span class="Comment">// (-7 &lt;&lt; 32) / (1 &lt;&lt; 30) = -7 &lt;&lt; 2 = -28</span>
+<span id="L481" class="LineNr"> 481 </span>      <span class="Constant">&quot;run: remainder: 0x00000000\n&quot;</span>
+<span id="L482" class="LineNr"> 482 </span>  <span class="Delimiter">);</span>
+<span id="L483" class="LineNr"> 483 </span><span class="Delimiter">}</span>
+<span id="L484" class="LineNr"> 484 </span>
+<span id="L485" class="LineNr"> 485 </span><span class="SalientComment">//:: shift left</span>
 <span id="L486" class="LineNr"> 486 </span>
-<span id="L487" class="LineNr"> 487 </span><span class="SalientComment">//:: shift left</span>
-<span id="L488" class="LineNr"> 488 </span>
-<span id="L489" class="LineNr"> 489 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L490" class="LineNr"> 490 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;d3&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;shift rm32 by CL bits depending on subop (sal/sar/shl/shr)&quot;</span><span class="Delimiter">);</span>
-<span id="L491" class="LineNr"> 491 </span>
-<span id="L492" class="LineNr"> 492 </span><span class="Delimiter">:(code)</span>
-<span id="L493" class="LineNr"> 493 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L493'>test_shift_left_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L494" class="LineNr"> 494 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">13</span><span class="Delimiter">;</span>
-<span id="L495" class="LineNr"> 495 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L496" class="LineNr"> 496 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L497" class="LineNr"> 497 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L498" class="LineNr"> 498 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L499" class="LineNr"> 499 </span>      <span class="Constant">&quot;  d3     e3                                    \n&quot;</span>  <span class="Comment">// shift EBX left by CL bits</span>
-<span id="L500" class="LineNr"> 500 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 100 (subop shift left) 011 (dest EBX)</span>
-<span id="L501" class="LineNr"> 501 </span>  <span class="Delimiter">);</span>
-<span id="L502" class="LineNr"> 502 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L503" class="LineNr"> 503 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L504" class="LineNr"> 504 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
-<span id="L505" class="LineNr"> 505 </span>      <span class="Constant">&quot;run: subop: shift left by CL bits\n&quot;</span>
-<span id="L506" class="LineNr"> 506 </span>      <span class="Constant">&quot;run: storing 0x0000001a\n&quot;</span>
-<span id="L507" class="LineNr"> 507 </span>  <span class="Delimiter">);</span>
-<span id="L508" class="LineNr"> 508 </span><span class="Delimiter">}</span>
-<span id="L509" class="LineNr"> 509 </span>
-<span id="L510" class="LineNr"> 510 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L511" class="LineNr"> 511 </span><span class="Normal">case</span> <span class="Constant">0xd3</span>: <span class="Delimiter">{</span>
-<span id="L512" class="LineNr"> 512 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
-<span id="L513" class="LineNr"> 513 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;operate on r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L514" class="LineNr"> 514 </span>  <span class="Normal">int32_t</span>* arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
-<span id="L515" class="LineNr"> 515 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> subop = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>  <span class="Comment">// middle 3 'reg opcode' bits</span>
-<span id="L516" class="LineNr"> 516 </span>  <span class="Normal">switch</span> <span class="Delimiter">(</span>subop<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L517" class="LineNr"> 517 </span>  <span class="Normal">case</span> <span class="Constant">4</span>: <span class="Delimiter">{</span>  <span class="Comment">// shift left r/m32 by CL</span>
-<span id="L518" class="LineNr"> 518 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: shift left by CL bits&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L519" class="LineNr"> 519 </span>    <span class="Normal">uint8_t</span> count = <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>u &amp; <span class="Constant">0x1f</span><span class="Delimiter">;</span>
-<span id="L520" class="LineNr"> 520 </span>    <span class="Comment">// OF is only defined if count is 1</span>
-<span id="L521" class="LineNr"> 521 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>count == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L522" class="LineNr"> 522 </span>      <span class="Normal">bool</span> msb = <span class="Delimiter">(</span>*arg1 &amp; <span class="Constant">0x80000000</span><span class="Delimiter">)</span> &gt;&gt; <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L523" class="LineNr"> 523 </span>      <span class="Normal">bool</span> pnsb = <span class="Delimiter">(</span>*arg1 &amp; <span class="Constant">0x40000000</span><span class="Delimiter">);</span>
-<span id="L524" class="LineNr"> 524 </span>      <a href='010---vm.cc.html#L82'>OF</a> = <span class="Delimiter">(</span>msb != pnsb<span class="Delimiter">);</span>
-<span id="L525" class="LineNr"> 525 </span>    <span class="Delimiter">}</span>
-<span id="L526" class="LineNr"> 526 </span>    <span class="Normal">int32_t</span> result = <span class="Delimiter">(</span>*arg1 &lt;&lt; count<span class="Delimiter">);</span>
-<span id="L527" class="LineNr"> 527 </span>    <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>result == <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L528" class="LineNr"> 528 </span>    SF = <span class="Delimiter">(</span>result &lt; <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L529" class="LineNr"> 529 </span>    <a href='010---vm.cc.html#L81'>CF</a> = <span class="Delimiter">(</span>*arg1 &lt;&lt; <span class="Delimiter">(</span>count-<span class="Constant">1</span><span class="Delimiter">))</span> &amp; <span class="Constant">0x80000000</span><span class="Delimiter">;</span>
-<span id="L530" class="LineNr"> 530 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L531" class="LineNr"> 531 </span>    *arg1 = result<span class="Delimiter">;</span>
-<span id="L532" class="LineNr"> 532 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L533" class="LineNr"> 533 </span>    <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L534" class="LineNr"> 534 </span>  <span class="Delimiter">}</span>
-<span id="L535" class="LineNr"> 535 </span>  <span class="Comment">// End Op d3 Subops</span>
-<span id="L536" class="LineNr"> 536 </span>  <span class="Normal">default</span>:
-<span id="L537" class="LineNr"> 537 </span>    cerr &lt;&lt; <span class="Constant">&quot;unrecognized subop for opcode d3: &quot;</span> &lt;&lt; <a href='010---vm.cc.html#L397'>NUM</a><span class="Delimiter">(</span>subop<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L538" class="LineNr"> 538 </span>    exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L539" class="LineNr"> 539 </span>  <span class="Delimiter">}</span>
-<span id="L540" class="LineNr"> 540 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L541" class="LineNr"> 541 </span><span class="Delimiter">}</span>
+<span id="L487" class="LineNr"> 487 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L488" class="LineNr"> 488 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;d3&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;shift rm32 by CL bits depending on subop (sal/sar/shl/shr)&quot;</span><span class="Delimiter">);</span>
+<span id="L489" class="LineNr"> 489 </span>
+<span id="L490" class="LineNr"> 490 </span><span class="Delimiter">:(code)</span>
+<span id="L491" class="LineNr"> 491 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L491'>test_shift_left_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L492" class="LineNr"> 492 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">13</span><span class="Delimiter">;</span>
+<span id="L493" class="LineNr"> 493 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L494" class="LineNr"> 494 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L495" class="LineNr"> 495 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L496" class="LineNr"> 496 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L497" class="LineNr"> 497 </span>      <span class="Constant">&quot;  d3     e3                                    \n&quot;</span>  <span class="Comment">// shift EBX left by CL bits</span>
+<span id="L498" class="LineNr"> 498 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 100 (subop shift left) 011 (dest EBX)</span>
+<span id="L499" class="LineNr"> 499 </span>  <span class="Delimiter">);</span>
+<span id="L500" class="LineNr"> 500 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L501" class="LineNr"> 501 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L502" class="LineNr"> 502 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
+<span id="L503" class="LineNr"> 503 </span>      <span class="Constant">&quot;run: subop: shift left by CL bits\n&quot;</span>
+<span id="L504" class="LineNr"> 504 </span>      <span class="Constant">&quot;run: storing 0x0000001a\n&quot;</span>
+<span id="L505" class="LineNr"> 505 </span>  <span class="Delimiter">);</span>
+<span id="L506" class="LineNr"> 506 </span><span class="Delimiter">}</span>
+<span id="L507" class="LineNr"> 507 </span>
+<span id="L508" class="LineNr"> 508 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L509" class="LineNr"> 509 </span><span class="Normal">case</span> <span class="Constant">0xd3</span>: <span class="Delimiter">{</span>
+<span id="L510" class="LineNr"> 510 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L511" class="LineNr"> 511 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;operate on r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L512" class="LineNr"> 512 </span>  <span class="Normal">int32_t</span>* arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L513" class="LineNr"> 513 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> subop = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>  <span class="Comment">// middle 3 'reg opcode' bits</span>
+<span id="L514" class="LineNr"> 514 </span>  <span class="Normal">switch</span> <span class="Delimiter">(</span>subop<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L515" class="LineNr"> 515 </span>  <span class="Normal">case</span> <span class="Constant">4</span>: <span class="Delimiter">{</span>  <span class="Comment">// shift left r/m32 by CL</span>
+<span id="L516" class="LineNr"> 516 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: shift left by CL bits&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L517" class="LineNr"> 517 </span>    <span class="Normal">uint8_t</span> count = <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>u &amp; <span class="Constant">0x1f</span><span class="Delimiter">;</span>
+<span id="L518" class="LineNr"> 518 </span>    <span class="Comment">// OF is only defined if count is 1</span>
+<span id="L519" class="LineNr"> 519 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>count == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L520" class="LineNr"> 520 </span>      <span class="Normal">bool</span> msb = <span class="Delimiter">(</span>*arg1 &amp; <span class="Constant">0x80000000</span><span class="Delimiter">)</span> &gt;&gt; <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L521" class="LineNr"> 521 </span>      <span class="Normal">bool</span> pnsb = <span class="Delimiter">(</span>*arg1 &amp; <span class="Constant">0x40000000</span><span class="Delimiter">);</span>
+<span id="L522" class="LineNr"> 522 </span>      <a href='010---vm.cc.html#L82'>OF</a> = <span class="Delimiter">(</span>msb != pnsb<span class="Delimiter">);</span>
+<span id="L523" class="LineNr"> 523 </span>    <span class="Delimiter">}</span>
+<span id="L524" class="LineNr"> 524 </span>    <span class="Normal">int32_t</span> result = <span class="Delimiter">(</span>*arg1 &lt;&lt; count<span class="Delimiter">);</span>
+<span id="L525" class="LineNr"> 525 </span>    <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>result == <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L526" class="LineNr"> 526 </span>    SF = <span class="Delimiter">(</span>result &lt; <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L527" class="LineNr"> 527 </span>    <a href='010---vm.cc.html#L81'>CF</a> = <span class="Delimiter">(</span>*arg1 &lt;&lt; <span class="Delimiter">(</span>count-<span class="Constant">1</span><span class="Delimiter">))</span> &amp; <span class="Constant">0x80000000</span><span class="Delimiter">;</span>
+<span id="L528" class="LineNr"> 528 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L529" class="LineNr"> 529 </span>    *arg1 = result<span class="Delimiter">;</span>
+<span id="L530" class="LineNr"> 530 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L531" class="LineNr"> 531 </span>    <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L532" class="LineNr"> 532 </span>  <span class="Delimiter">}</span>
+<span id="L533" class="LineNr"> 533 </span>  <span class="Comment">// End Op d3 Subops</span>
+<span id="L534" class="LineNr"> 534 </span>  <span class="Normal">default</span>:
+<span id="L535" class="LineNr"> 535 </span>    cerr &lt;&lt; <span class="Constant">&quot;unrecognized subop for opcode d3: &quot;</span> &lt;&lt; <a href='010---vm.cc.html#L397'>NUM</a><span class="Delimiter">(</span>subop<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L536" class="LineNr"> 536 </span>    exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L537" class="LineNr"> 537 </span>  <span class="Delimiter">}</span>
+<span id="L538" class="LineNr"> 538 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L539" class="LineNr"> 539 </span><span class="Delimiter">}</span>
+<span id="L540" class="LineNr"> 540 </span>
+<span id="L541" class="LineNr"> 541 </span><span class="SalientComment">//:: shift right arithmetic</span>
 <span id="L542" class="LineNr"> 542 </span>
-<span id="L543" class="LineNr"> 543 </span><span class="SalientComment">//:: shift right arithmetic</span>
-<span id="L544" class="LineNr"> 544 </span>
-<span id="L545" class="LineNr"> 545 </span><span class="Delimiter">:(code)</span>
-<span id="L546" class="LineNr"> 546 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L546'>test_shift_right_arithmetic_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L547" class="LineNr"> 547 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">26</span><span class="Delimiter">;</span>
-<span id="L548" class="LineNr"> 548 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L549" class="LineNr"> 549 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L550" class="LineNr"> 550 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L551" class="LineNr"> 551 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L552" class="LineNr"> 552 </span>      <span class="Constant">&quot;  d3     fb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while preserving sign</span>
-<span id="L553" class="LineNr"> 553 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop shift right arithmetic) 011 (dest EBX)</span>
-<span id="L554" class="LineNr"> 554 </span>  <span class="Delimiter">);</span>
-<span id="L555" class="LineNr"> 555 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L556" class="LineNr"> 556 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L557" class="LineNr"> 557 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
-<span id="L558" class="LineNr"> 558 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while preserving sign\n&quot;</span>
-<span id="L559" class="LineNr"> 559 </span>      <span class="Constant">&quot;run: storing 0x0000000d\n&quot;</span>
-<span id="L560" class="LineNr"> 560 </span>  <span class="Delimiter">);</span>
-<span id="L561" class="LineNr"> 561 </span><span class="Delimiter">}</span>
-<span id="L562" class="LineNr"> 562 </span>
-<span id="L563" class="LineNr"> 563 </span><span class="Delimiter">:(before &quot;End Op d3 Subops&quot;)</span>
-<span id="L564" class="LineNr"> 564 </span><span class="Normal">case</span> <span class="Constant">7</span>: <span class="Delimiter">{</span>  <span class="Comment">// shift right r/m32 by CL, preserving sign</span>
-<span id="L565" class="LineNr"> 565 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: shift right by CL bits, while preserving sign&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L566" class="LineNr"> 566 </span>  <span class="Normal">uint8_t</span> count = <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>u &amp; <span class="Constant">0x1f</span><span class="Delimiter">;</span>
-<span id="L567" class="LineNr"> 567 </span>  *arg1 = <span class="Delimiter">(</span>*arg1 &gt;&gt; count<span class="Delimiter">);</span>
-<span id="L568" class="LineNr"> 568 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>*arg1 == <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L569" class="LineNr"> 569 </span>  SF = <span class="Delimiter">(</span>*arg1 &lt; <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L570" class="LineNr"> 570 </span>  <span class="Comment">// OF is only defined if count is 1</span>
-<span id="L571" class="LineNr"> 571 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>count == <span class="Constant">1</span><span class="Delimiter">)</span> <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L572" class="LineNr"> 572 </span>  <span class="Comment">// CF undefined</span>
-<span id="L573" class="LineNr"> 573 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L574" class="LineNr"> 574 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L575" class="LineNr"> 575 </span><span class="Delimiter">}</span>
-<span id="L576" class="LineNr"> 576 </span>
-<span id="L577" class="LineNr"> 577 </span><span class="Delimiter">:(code)</span>
-<span id="L578" class="LineNr"> 578 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L578'>test_shift_right_arithmetic_odd_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L579" class="LineNr"> 579 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">27</span><span class="Delimiter">;</span>
-<span id="L580" class="LineNr"> 580 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L581" class="LineNr"> 581 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L582" class="LineNr"> 582 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L583" class="LineNr"> 583 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L584" class="LineNr"> 584 </span>      <span class="Constant">&quot;  d3     fb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while preserving sign</span>
-<span id="L585" class="LineNr"> 585 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop shift right arithmetic) 011 (dest EBX)</span>
-<span id="L586" class="LineNr"> 586 </span>  <span class="Delimiter">);</span>
-<span id="L587" class="LineNr"> 587 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L588" class="LineNr"> 588 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L589" class="LineNr"> 589 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
-<span id="L590" class="LineNr"> 590 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while preserving sign\n&quot;</span>
-<span id="L591" class="LineNr"> 591 </span>      <span class="Comment">// result: 13</span>
-<span id="L592" class="LineNr"> 592 </span>      <span class="Constant">&quot;run: storing 0x0000000d\n&quot;</span>
-<span id="L593" class="LineNr"> 593 </span>  <span class="Delimiter">);</span>
-<span id="L594" class="LineNr"> 594 </span><span class="Delimiter">}</span>
-<span id="L595" class="LineNr"> 595 </span>
-<span id="L596" class="LineNr"> 596 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L596'>test_shift_right_arithmetic_negative_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L597" class="LineNr"> 597 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xfffffffd</span><span class="Delimiter">;</span>  <span class="Comment">// -3</span>
-<span id="L598" class="LineNr"> 598 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L599" class="LineNr"> 599 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L600" class="LineNr"> 600 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L601" class="LineNr"> 601 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L602" class="LineNr"> 602 </span>      <span class="Constant">&quot;  d3     fb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while preserving sign</span>
-<span id="L603" class="LineNr"> 603 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop shift right arithmetic) 011 (dest EBX)</span>
-<span id="L604" class="LineNr"> 604 </span>  <span class="Delimiter">);</span>
-<span id="L605" class="LineNr"> 605 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L606" class="LineNr"> 606 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L607" class="LineNr"> 607 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
-<span id="L608" class="LineNr"> 608 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while preserving sign\n&quot;</span>
-<span id="L609" class="LineNr"> 609 </span>      <span class="Comment">// result: -2</span>
-<span id="L610" class="LineNr"> 610 </span>      <span class="Constant">&quot;run: storing 0xfffffffe\n&quot;</span>
-<span id="L611" class="LineNr"> 611 </span>  <span class="Delimiter">);</span>
-<span id="L612" class="LineNr"> 612 </span><span class="Delimiter">}</span>
+<span id="L543" class="LineNr"> 543 </span><span class="Delimiter">:(code)</span>
+<span id="L544" class="LineNr"> 544 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L544'>test_shift_right_arithmetic_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L545" class="LineNr"> 545 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">26</span><span class="Delimiter">;</span>
+<span id="L546" class="LineNr"> 546 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L547" class="LineNr"> 547 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L548" class="LineNr"> 548 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L549" class="LineNr"> 549 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L550" class="LineNr"> 550 </span>      <span class="Constant">&quot;  d3     fb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while preserving sign</span>
+<span id="L551" class="LineNr"> 551 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop shift right arithmetic) 011 (dest EBX)</span>
+<span id="L552" class="LineNr"> 552 </span>  <span class="Delimiter">);</span>
+<span id="L553" class="LineNr"> 553 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L554" class="LineNr"> 554 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L555" class="LineNr"> 555 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
+<span id="L556" class="LineNr"> 556 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while preserving sign\n&quot;</span>
+<span id="L557" class="LineNr"> 557 </span>      <span class="Constant">&quot;run: storing 0x0000000d\n&quot;</span>
+<span id="L558" class="LineNr"> 558 </span>  <span class="Delimiter">);</span>
+<span id="L559" class="LineNr"> 559 </span><span class="Delimiter">}</span>
+<span id="L560" class="LineNr"> 560 </span>
+<span id="L561" class="LineNr"> 561 </span><span class="Delimiter">:(before &quot;End Op d3 Subops&quot;)</span>
+<span id="L562" class="LineNr"> 562 </span><span class="Normal">case</span> <span class="Constant">7</span>: <span class="Delimiter">{</span>  <span class="Comment">// shift right r/m32 by CL, preserving sign</span>
+<span id="L563" class="LineNr"> 563 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: shift right by CL bits, while preserving sign&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L564" class="LineNr"> 564 </span>  <span class="Normal">uint8_t</span> count = <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>u &amp; <span class="Constant">0x1f</span><span class="Delimiter">;</span>
+<span id="L565" class="LineNr"> 565 </span>  *arg1 = <span class="Delimiter">(</span>*arg1 &gt;&gt; count<span class="Delimiter">);</span>
+<span id="L566" class="LineNr"> 566 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>*arg1 == <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L567" class="LineNr"> 567 </span>  SF = <span class="Delimiter">(</span>*arg1 &lt; <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L568" class="LineNr"> 568 </span>  <span class="Comment">// OF is only defined if count is 1</span>
+<span id="L569" class="LineNr"> 569 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>count == <span class="Constant">1</span><span class="Delimiter">)</span> <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L570" class="LineNr"> 570 </span>  <span class="Comment">// CF undefined</span>
+<span id="L571" class="LineNr"> 571 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L572" class="LineNr"> 572 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L573" class="LineNr"> 573 </span><span class="Delimiter">}</span>
+<span id="L574" class="LineNr"> 574 </span>
+<span id="L575" class="LineNr"> 575 </span><span class="Delimiter">:(code)</span>
+<span id="L576" class="LineNr"> 576 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L576'>test_shift_right_arithmetic_odd_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L577" class="LineNr"> 577 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">27</span><span class="Delimiter">;</span>
+<span id="L578" class="LineNr"> 578 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L579" class="LineNr"> 579 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L580" class="LineNr"> 580 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L581" class="LineNr"> 581 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L582" class="LineNr"> 582 </span>      <span class="Constant">&quot;  d3     fb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while preserving sign</span>
+<span id="L583" class="LineNr"> 583 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop shift right arithmetic) 011 (dest EBX)</span>
+<span id="L584" class="LineNr"> 584 </span>  <span class="Delimiter">);</span>
+<span id="L585" class="LineNr"> 585 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L586" class="LineNr"> 586 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L587" class="LineNr"> 587 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
+<span id="L588" class="LineNr"> 588 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while preserving sign\n&quot;</span>
+<span id="L589" class="LineNr"> 589 </span>      <span class="Comment">// result: 13</span>
+<span id="L590" class="LineNr"> 590 </span>      <span class="Constant">&quot;run: storing 0x0000000d\n&quot;</span>
+<span id="L591" class="LineNr"> 591 </span>  <span class="Delimiter">);</span>
+<span id="L592" class="LineNr"> 592 </span><span class="Delimiter">}</span>
+<span id="L593" class="LineNr"> 593 </span>
+<span id="L594" class="LineNr"> 594 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L594'>test_shift_right_arithmetic_negative_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L595" class="LineNr"> 595 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xfffffffd</span><span class="Delimiter">;</span>  <span class="Comment">// -3</span>
+<span id="L596" class="LineNr"> 596 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L597" class="LineNr"> 597 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L598" class="LineNr"> 598 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L599" class="LineNr"> 599 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L600" class="LineNr"> 600 </span>      <span class="Constant">&quot;  d3     fb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while preserving sign</span>
+<span id="L601" class="LineNr"> 601 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 111 (subop shift right arithmetic) 011 (dest EBX)</span>
+<span id="L602" class="LineNr"> 602 </span>  <span class="Delimiter">);</span>
+<span id="L603" class="LineNr"> 603 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L604" class="LineNr"> 604 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L605" class="LineNr"> 605 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
+<span id="L606" class="LineNr"> 606 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while preserving sign\n&quot;</span>
+<span id="L607" class="LineNr"> 607 </span>      <span class="Comment">// result: -2</span>
+<span id="L608" class="LineNr"> 608 </span>      <span class="Constant">&quot;run: storing 0xfffffffe\n&quot;</span>
+<span id="L609" class="LineNr"> 609 </span>  <span class="Delimiter">);</span>
+<span id="L610" class="LineNr"> 610 </span><span class="Delimiter">}</span>
+<span id="L611" class="LineNr"> 611 </span>
+<span id="L612" class="LineNr"> 612 </span><span class="SalientComment">//:: shift right logical</span>
 <span id="L613" class="LineNr"> 613 </span>
-<span id="L614" class="LineNr"> 614 </span><span class="SalientComment">//:: shift right logical</span>
-<span id="L615" class="LineNr"> 615 </span>
-<span id="L616" class="LineNr"> 616 </span><span class="Delimiter">:(code)</span>
-<span id="L617" class="LineNr"> 617 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L617'>test_shift_right_logical_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L618" class="LineNr"> 618 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">26</span><span class="Delimiter">;</span>
-<span id="L619" class="LineNr"> 619 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L620" class="LineNr"> 620 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L621" class="LineNr"> 621 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L622" class="LineNr"> 622 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L623" class="LineNr"> 623 </span>      <span class="Constant">&quot;  d3     eb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while padding zeroes</span>
-<span id="L624" class="LineNr"> 624 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 101 (subop shift right logical) 011 (dest EBX)</span>
-<span id="L625" class="LineNr"> 625 </span>  <span class="Delimiter">);</span>
-<span id="L626" class="LineNr"> 626 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L627" class="LineNr"> 627 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L628" class="LineNr"> 628 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
-<span id="L629" class="LineNr"> 629 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while padding zeroes\n&quot;</span>
-<span id="L630" class="LineNr"> 630 </span>      <span class="Comment">// result: 13</span>
-<span id="L631" class="LineNr"> 631 </span>      <span class="Constant">&quot;run: storing 0x0000000d\n&quot;</span>
-<span id="L632" class="LineNr"> 632 </span>  <span class="Delimiter">);</span>
-<span id="L633" class="LineNr"> 633 </span><span class="Delimiter">}</span>
-<span id="L634" class="LineNr"> 634 </span>
-<span id="L635" class="LineNr"> 635 </span><span class="Delimiter">:(before &quot;End Op d3 Subops&quot;)</span>
-<span id="L636" class="LineNr"> 636 </span><span class="Normal">case</span> <span class="Constant">5</span>: <span class="Delimiter">{</span>  <span class="Comment">// shift right r/m32 by CL, padding zeroes</span>
-<span id="L637" class="LineNr"> 637 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: shift right by CL bits, while padding zeroes&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L638" class="LineNr"> 638 </span>  <span class="Normal">uint8_t</span> count = <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>u &amp; <span class="Constant">0x1f</span><span class="Delimiter">;</span>
-<span id="L639" class="LineNr"> 639 </span>  <span class="Comment">// OF is only defined if count is 1</span>
-<span id="L640" class="LineNr"> 640 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>count == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L641" class="LineNr"> 641 </span>    <span class="Normal">bool</span> msb = <span class="Delimiter">(</span>*arg1 &amp; <span class="Constant">0x80000000</span><span class="Delimiter">)</span> &gt;&gt; <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L642" class="LineNr"> 642 </span>    <span class="Normal">bool</span> pnsb = <span class="Delimiter">(</span>*arg1 &amp; <span class="Constant">0x40000000</span><span class="Delimiter">);</span>
-<span id="L643" class="LineNr"> 643 </span>    <a href='010---vm.cc.html#L82'>OF</a> = <span class="Delimiter">(</span>msb != pnsb<span class="Delimiter">);</span>
-<span id="L644" class="LineNr"> 644 </span>  <span class="Delimiter">}</span>
-<span id="L645" class="LineNr"> 645 </span>  <span class="Normal">uint32_t</span>* uarg1 = <span class="Normal">reinterpret_cast</span>&lt;<span class="Normal">uint32_t</span>*&gt;<span class="Delimiter">(</span>arg1<span class="Delimiter">);</span>
-<span id="L646" class="LineNr"> 646 </span>  *uarg1 = <span class="Delimiter">(</span>*uarg1 &gt;&gt; count<span class="Delimiter">);</span>
-<span id="L647" class="LineNr"> 647 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>*uarg1 == <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L648" class="LineNr"> 648 </span>  <span class="Comment">// result is always positive by definition</span>
-<span id="L649" class="LineNr"> 649 </span>  SF = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L650" class="LineNr"> 650 </span>  <span class="Comment">// CF undefined</span>
-<span id="L651" class="LineNr"> 651 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L652" class="LineNr"> 652 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L653" class="LineNr"> 653 </span><span class="Delimiter">}</span>
-<span id="L654" class="LineNr"> 654 </span>
-<span id="L655" class="LineNr"> 655 </span><span class="Delimiter">:(code)</span>
-<span id="L656" class="LineNr"> 656 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L656'>test_shift_right_logical_odd_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L657" class="LineNr"> 657 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">27</span><span class="Delimiter">;</span>
-<span id="L658" class="LineNr"> 658 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L659" class="LineNr"> 659 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L660" class="LineNr"> 660 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L661" class="LineNr"> 661 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L662" class="LineNr"> 662 </span>      <span class="Constant">&quot;  d3     eb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while padding zeroes</span>
-<span id="L663" class="LineNr"> 663 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 101 (subop shift right logical) 011 (dest EBX)</span>
-<span id="L664" class="LineNr"> 664 </span>  <span class="Delimiter">);</span>
-<span id="L665" class="LineNr"> 665 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L666" class="LineNr"> 666 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L667" class="LineNr"> 667 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
-<span id="L668" class="LineNr"> 668 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while padding zeroes\n&quot;</span>
-<span id="L669" class="LineNr"> 669 </span>      <span class="Comment">// result: 13</span>
-<span id="L670" class="LineNr"> 670 </span>      <span class="Constant">&quot;run: storing 0x0000000d\n&quot;</span>
-<span id="L671" class="LineNr"> 671 </span>  <span class="Delimiter">);</span>
-<span id="L672" class="LineNr"> 672 </span><span class="Delimiter">}</span>
-<span id="L673" class="LineNr"> 673 </span>
-<span id="L674" class="LineNr"> 674 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L674'>test_shift_right_logical_negative_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L675" class="LineNr"> 675 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xfffffffd</span><span class="Delimiter">;</span>
-<span id="L676" class="LineNr"> 676 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L677" class="LineNr"> 677 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L678" class="LineNr"> 678 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L679" class="LineNr"> 679 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L680" class="LineNr"> 680 </span>      <span class="Constant">&quot;  d3     eb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while padding zeroes</span>
-<span id="L681" class="LineNr"> 681 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 101 (subop shift right logical) 011 (dest EBX)</span>
-<span id="L682" class="LineNr"> 682 </span>  <span class="Delimiter">);</span>
-<span id="L683" class="LineNr"> 683 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L684" class="LineNr"> 684 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L685" class="LineNr"> 685 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
-<span id="L686" class="LineNr"> 686 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while padding zeroes\n&quot;</span>
-<span id="L687" class="LineNr"> 687 </span>      <span class="Constant">&quot;run: storing 0x7ffffffe\n&quot;</span>
-<span id="L688" class="LineNr"> 688 </span>  <span class="Delimiter">);</span>
-<span id="L689" class="LineNr"> 689 </span><span class="Delimiter">}</span>
+<span id="L614" class="LineNr"> 614 </span><span class="Delimiter">:(code)</span>
+<span id="L615" class="LineNr"> 615 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L615'>test_shift_right_logical_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L616" class="LineNr"> 616 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">26</span><span class="Delimiter">;</span>
+<span id="L617" class="LineNr"> 617 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L618" class="LineNr"> 618 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L619" class="LineNr"> 619 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L620" class="LineNr"> 620 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L621" class="LineNr"> 621 </span>      <span class="Constant">&quot;  d3     eb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while padding zeroes</span>
+<span id="L622" class="LineNr"> 622 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 101 (subop shift right logical) 011 (dest EBX)</span>
+<span id="L623" class="LineNr"> 623 </span>  <span class="Delimiter">);</span>
+<span id="L624" class="LineNr"> 624 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L625" class="LineNr"> 625 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L626" class="LineNr"> 626 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
+<span id="L627" class="LineNr"> 627 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while padding zeroes\n&quot;</span>
+<span id="L628" class="LineNr"> 628 </span>      <span class="Comment">// result: 13</span>
+<span id="L629" class="LineNr"> 629 </span>      <span class="Constant">&quot;run: storing 0x0000000d\n&quot;</span>
+<span id="L630" class="LineNr"> 630 </span>  <span class="Delimiter">);</span>
+<span id="L631" class="LineNr"> 631 </span><span class="Delimiter">}</span>
+<span id="L632" class="LineNr"> 632 </span>
+<span id="L633" class="LineNr"> 633 </span><span class="Delimiter">:(before &quot;End Op d3 Subops&quot;)</span>
+<span id="L634" class="LineNr"> 634 </span><span class="Normal">case</span> <span class="Constant">5</span>: <span class="Delimiter">{</span>  <span class="Comment">// shift right r/m32 by CL, padding zeroes</span>
+<span id="L635" class="LineNr"> 635 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: shift right by CL bits, while padding zeroes&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L636" class="LineNr"> 636 </span>  <span class="Normal">uint8_t</span> count = <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>u &amp; <span class="Constant">0x1f</span><span class="Delimiter">;</span>
+<span id="L637" class="LineNr"> 637 </span>  <span class="Comment">// OF is only defined if count is 1</span>
+<span id="L638" class="LineNr"> 638 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>count == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L639" class="LineNr"> 639 </span>    <span class="Normal">bool</span> msb = <span class="Delimiter">(</span>*arg1 &amp; <span class="Constant">0x80000000</span><span class="Delimiter">)</span> &gt;&gt; <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L640" class="LineNr"> 640 </span>    <span class="Normal">bool</span> pnsb = <span class="Delimiter">(</span>*arg1 &amp; <span class="Constant">0x40000000</span><span class="Delimiter">);</span>
+<span id="L641" class="LineNr"> 641 </span>    <a href='010---vm.cc.html#L82'>OF</a> = <span class="Delimiter">(</span>msb != pnsb<span class="Delimiter">);</span>
+<span id="L642" class="LineNr"> 642 </span>  <span class="Delimiter">}</span>
+<span id="L643" class="LineNr"> 643 </span>  <span class="Normal">uint32_t</span>* uarg1 = <span class="Normal">reinterpret_cast</span>&lt;<span class="Normal">uint32_t</span>*&gt;<span class="Delimiter">(</span>arg1<span class="Delimiter">);</span>
+<span id="L644" class="LineNr"> 644 </span>  *uarg1 = <span class="Delimiter">(</span>*uarg1 &gt;&gt; count<span class="Delimiter">);</span>
+<span id="L645" class="LineNr"> 645 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>*uarg1 == <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L646" class="LineNr"> 646 </span>  <span class="Comment">// result is always positive by definition</span>
+<span id="L647" class="LineNr"> 647 </span>  SF = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L648" class="LineNr"> 648 </span>  <span class="Comment">// CF undefined</span>
+<span id="L649" class="LineNr"> 649 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L650" class="LineNr"> 650 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L651" class="LineNr"> 651 </span><span class="Delimiter">}</span>
+<span id="L652" class="LineNr"> 652 </span>
+<span id="L653" class="LineNr"> 653 </span><span class="Delimiter">:(code)</span>
+<span id="L654" class="LineNr"> 654 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L654'>test_shift_right_logical_odd_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L655" class="LineNr"> 655 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">27</span><span class="Delimiter">;</span>
+<span id="L656" class="LineNr"> 656 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L657" class="LineNr"> 657 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L658" class="LineNr"> 658 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L659" class="LineNr"> 659 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L660" class="LineNr"> 660 </span>      <span class="Constant">&quot;  d3     eb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while padding zeroes</span>
+<span id="L661" class="LineNr"> 661 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 101 (subop shift right logical) 011 (dest EBX)</span>
+<span id="L662" class="LineNr"> 662 </span>  <span class="Delimiter">);</span>
+<span id="L663" class="LineNr"> 663 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L664" class="LineNr"> 664 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L665" class="LineNr"> 665 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
+<span id="L666" class="LineNr"> 666 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while padding zeroes\n&quot;</span>
+<span id="L667" class="LineNr"> 667 </span>      <span class="Comment">// result: 13</span>
+<span id="L668" class="LineNr"> 668 </span>      <span class="Constant">&quot;run: storing 0x0000000d\n&quot;</span>
+<span id="L669" class="LineNr"> 669 </span>  <span class="Delimiter">);</span>
+<span id="L670" class="LineNr"> 670 </span><span class="Delimiter">}</span>
+<span id="L671" class="LineNr"> 671 </span>
+<span id="L672" class="LineNr"> 672 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L672'>test_shift_right_logical_negative_r32_with_cl</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L673" class="LineNr"> 673 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xfffffffd</span><span class="Delimiter">;</span>
+<span id="L674" class="LineNr"> 674 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>i = <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L675" class="LineNr"> 675 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L676" class="LineNr"> 676 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L677" class="LineNr"> 677 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L678" class="LineNr"> 678 </span>      <span class="Constant">&quot;  d3     eb                                    \n&quot;</span>  <span class="Comment">// shift EBX right by CL bits, while padding zeroes</span>
+<span id="L679" class="LineNr"> 679 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 101 (subop shift right logical) 011 (dest EBX)</span>
+<span id="L680" class="LineNr"> 680 </span>  <span class="Delimiter">);</span>
+<span id="L681" class="LineNr"> 681 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L682" class="LineNr"> 682 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L683" class="LineNr"> 683 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
+<span id="L684" class="LineNr"> 684 </span>      <span class="Constant">&quot;run: subop: shift right by CL bits, while padding zeroes\n&quot;</span>
+<span id="L685" class="LineNr"> 685 </span>      <span class="Constant">&quot;run: storing 0x7ffffffe\n&quot;</span>
+<span id="L686" class="LineNr"> 686 </span>  <span class="Delimiter">);</span>
+<span id="L687" class="LineNr"> 687 </span><span class="Delimiter">}</span>
+<span id="L688" class="LineNr"> 688 </span>
+<span id="L689" class="LineNr"> 689 </span><span class="SalientComment">//:: and</span>
 <span id="L690" class="LineNr"> 690 </span>
-<span id="L691" class="LineNr"> 691 </span><span class="SalientComment">//:: and</span>
-<span id="L692" class="LineNr"> 692 </span>
-<span id="L693" class="LineNr"> 693 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L694" class="LineNr"> 694 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;21&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;rm32 = bitwise AND of r32 with rm32 (and)&quot;</span><span class="Delimiter">);</span>
-<span id="L695" class="LineNr"> 695 </span>
-<span id="L696" class="LineNr"> 696 </span><span class="Delimiter">:(code)</span>
-<span id="L697" class="LineNr"> 697 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L697'>test_and_r32_with_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L698" class="LineNr"> 698 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
-<span id="L699" class="LineNr"> 699 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x000000ff</span><span class="Delimiter">;</span>
-<span id="L700" class="LineNr"> 700 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L701" class="LineNr"> 701 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L702" class="LineNr"> 702 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L703" class="LineNr"> 703 </span>      <span class="Constant">&quot;  21     d8                                    \n&quot;</span>  <span class="Comment">// and EBX with destination EAX</span>
-<span id="L704" class="LineNr"> 704 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
-<span id="L705" class="LineNr"> 705 </span>  <span class="Delimiter">);</span>
-<span id="L706" class="LineNr"> 706 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L707" class="LineNr"> 707 </span>      <span class="Constant">&quot;run: and <a href='010---vm.cc.html#L13'>EBX</a> with r/m32\n&quot;</span>
-<span id="L708" class="LineNr"> 708 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L709" class="LineNr"> 709 </span>      <span class="Constant">&quot;run: storing 0x0000000d\n&quot;</span>
-<span id="L710" class="LineNr"> 710 </span>  <span class="Delimiter">);</span>
-<span id="L711" class="LineNr"> 711 </span><span class="Delimiter">}</span>
-<span id="L712" class="LineNr"> 712 </span>
-<span id="L713" class="LineNr"> 713 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L714" class="LineNr"> 714 </span><span class="Normal">case</span> <span class="Constant">0x21</span>: <span class="Delimiter">{</span>  <span class="Comment">// and r32 with r/m32</span>
-<span id="L715" class="LineNr"> 715 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
-<span id="L716" class="LineNr"> 716 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> arg2 = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
-<span id="L717" class="LineNr"> 717 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;and &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>arg2<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; with r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L718" class="LineNr"> 718 </span>  <span class="Comment">// bitwise ops technically operate on unsigned numbers, but it makes no</span>
-<span id="L719" class="LineNr"> 719 </span>  <span class="Comment">// difference</span>
-<span id="L720" class="LineNr"> 720 </span>  <span class="Normal">int32_t</span>* signed_arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
-<span id="L721" class="LineNr"> 721 </span>  *signed_arg1 &amp;= <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
-<span id="L722" class="LineNr"> 722 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *signed_arg1 &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L723" class="LineNr"> 723 </span>  SF = <span class="Delimiter">(</span>*signed_arg1 &gt;&gt; <span class="Constant">31</span><span class="Delimiter">);</span>
-<span id="L724" class="LineNr"> 724 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>*signed_arg1 == <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L725" class="LineNr"> 725 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L726" class="LineNr"> 726 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L727" class="LineNr"> 727 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L728" class="LineNr"> 728 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L729" class="LineNr"> 729 </span><span class="Delimiter">}</span>
+<span id="L691" class="LineNr"> 691 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L692" class="LineNr"> 692 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;21&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;rm32 = bitwise AND of r32 with rm32 (and)&quot;</span><span class="Delimiter">);</span>
+<span id="L693" class="LineNr"> 693 </span>
+<span id="L694" class="LineNr"> 694 </span><span class="Delimiter">:(code)</span>
+<span id="L695" class="LineNr"> 695 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L695'>test_and_r32_with_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L696" class="LineNr"> 696 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
+<span id="L697" class="LineNr"> 697 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x000000ff</span><span class="Delimiter">;</span>
+<span id="L698" class="LineNr"> 698 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L699" class="LineNr"> 699 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L700" class="LineNr"> 700 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L701" class="LineNr"> 701 </span>      <span class="Constant">&quot;  21     d8                                    \n&quot;</span>  <span class="Comment">// and EBX with destination EAX</span>
+<span id="L702" class="LineNr"> 702 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
+<span id="L703" class="LineNr"> 703 </span>  <span class="Delimiter">);</span>
+<span id="L704" class="LineNr"> 704 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L705" class="LineNr"> 705 </span>      <span class="Constant">&quot;run: and <a href='010---vm.cc.html#L13'>EBX</a> with r/m32\n&quot;</span>
+<span id="L706" class="LineNr"> 706 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L707" class="LineNr"> 707 </span>      <span class="Constant">&quot;run: storing 0x0000000d\n&quot;</span>
+<span id="L708" class="LineNr"> 708 </span>  <span class="Delimiter">);</span>
+<span id="L709" class="LineNr"> 709 </span><span class="Delimiter">}</span>
+<span id="L710" class="LineNr"> 710 </span>
+<span id="L711" class="LineNr"> 711 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L712" class="LineNr"> 712 </span><span class="Normal">case</span> <span class="Constant">0x21</span>: <span class="Delimiter">{</span>  <span class="Comment">// and r32 with r/m32</span>
+<span id="L713" class="LineNr"> 713 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L714" class="LineNr"> 714 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> arg2 = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
+<span id="L715" class="LineNr"> 715 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;and &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>arg2<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; with r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L716" class="LineNr"> 716 </span>  <span class="Comment">// bitwise ops technically operate on unsigned numbers, but it makes no</span>
+<span id="L717" class="LineNr"> 717 </span>  <span class="Comment">// difference</span>
+<span id="L718" class="LineNr"> 718 </span>  <span class="Normal">int32_t</span>* signed_arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L719" class="LineNr"> 719 </span>  *signed_arg1 &amp;= <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
+<span id="L720" class="LineNr"> 720 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *signed_arg1 &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L721" class="LineNr"> 721 </span>  SF = <span class="Delimiter">(</span>*signed_arg1 &gt;&gt; <span class="Constant">31</span><span class="Delimiter">);</span>
+<span id="L722" class="LineNr"> 722 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>*signed_arg1 == <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L723" class="LineNr"> 723 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L724" class="LineNr"> 724 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L725" class="LineNr"> 725 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L726" class="LineNr"> 726 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L727" class="LineNr"> 727 </span><span class="Delimiter">}</span>
+<span id="L728" class="LineNr"> 728 </span>
+<span id="L729" class="LineNr"> 729 </span><span class="SalientComment">//:: or</span>
 <span id="L730" class="LineNr"> 730 </span>
-<span id="L731" class="LineNr"> 731 </span><span class="SalientComment">//:: or</span>
-<span id="L732" class="LineNr"> 732 </span>
-<span id="L733" class="LineNr"> 733 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L734" class="LineNr"> 734 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;09&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;rm32 = bitwise OR of r32 with rm32 (or)&quot;</span><span class="Delimiter">);</span>
-<span id="L735" class="LineNr"> 735 </span>
-<span id="L736" class="LineNr"> 736 </span><span class="Delimiter">:(code)</span>
-<span id="L737" class="LineNr"> 737 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L737'>test_or_r32_with_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L738" class="LineNr"> 738 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
-<span id="L739" class="LineNr"> 739 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xa0b0c0d0</span><span class="Delimiter">;</span>
-<span id="L740" class="LineNr"> 740 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L741" class="LineNr"> 741 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L742" class="LineNr"> 742 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L743" class="LineNr"> 743 </span>      <span class="Constant">&quot;  09     d8                                    \n&quot;</span>  <span class="Comment">// or EBX with destination EAX</span>
-<span id="L744" class="LineNr"> 744 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
-<span id="L745" class="LineNr"> 745 </span>  <span class="Delimiter">);</span>
-<span id="L746" class="LineNr"> 746 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L747" class="LineNr"> 747 </span>      <span class="Constant">&quot;run: or <a href='010---vm.cc.html#L13'>EBX</a> with r/m32\n&quot;</span>
-<span id="L748" class="LineNr"> 748 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L749" class="LineNr"> 749 </span>      <span class="Constant">&quot;run: storing 0xaabbccdd\n&quot;</span>
-<span id="L750" class="LineNr"> 750 </span>  <span class="Delimiter">);</span>
-<span id="L751" class="LineNr"> 751 </span><span class="Delimiter">}</span>
-<span id="L752" class="LineNr"> 752 </span>
-<span id="L753" class="LineNr"> 753 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L754" class="LineNr"> 754 </span><span class="Normal">case</span> <span class="Constant">0x09</span>: <span class="Delimiter">{</span>  <span class="Comment">// or r32 with r/m32</span>
-<span id="L755" class="LineNr"> 755 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
-<span id="L756" class="LineNr"> 756 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> arg2 = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
-<span id="L757" class="LineNr"> 757 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;or &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>arg2<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; with r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L758" class="LineNr"> 758 </span>  <span class="Comment">// bitwise ops technically operate on unsigned numbers, but it makes no</span>
-<span id="L759" class="LineNr"> 759 </span>  <span class="Comment">// difference</span>
-<span id="L760" class="LineNr"> 760 </span>  <span class="Normal">int32_t</span>* signed_arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
-<span id="L761" class="LineNr"> 761 </span>  *signed_arg1 |= <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
-<span id="L762" class="LineNr"> 762 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *signed_arg1 &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L763" class="LineNr"> 763 </span>  SF = <span class="Delimiter">(</span>*signed_arg1 &gt;&gt; <span class="Constant">31</span><span class="Delimiter">);</span>
-<span id="L764" class="LineNr"> 764 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>*signed_arg1 == <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L765" class="LineNr"> 765 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L766" class="LineNr"> 766 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L767" class="LineNr"> 767 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L768" class="LineNr"> 768 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L769" class="LineNr"> 769 </span><span class="Delimiter">}</span>
+<span id="L731" class="LineNr"> 731 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L732" class="LineNr"> 732 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;09&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;rm32 = bitwise OR of r32 with rm32 (or)&quot;</span><span class="Delimiter">);</span>
+<span id="L733" class="LineNr"> 733 </span>
+<span id="L734" class="LineNr"> 734 </span><span class="Delimiter">:(code)</span>
+<span id="L735" class="LineNr"> 735 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L735'>test_or_r32_with_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L736" class="LineNr"> 736 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
+<span id="L737" class="LineNr"> 737 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xa0b0c0d0</span><span class="Delimiter">;</span>
+<span id="L738" class="LineNr"> 738 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L739" class="LineNr"> 739 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L740" class="LineNr"> 740 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L741" class="LineNr"> 741 </span>      <span class="Constant">&quot;  09     d8                                    \n&quot;</span>  <span class="Comment">// or EBX with destination EAX</span>
+<span id="L742" class="LineNr"> 742 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
+<span id="L743" class="LineNr"> 743 </span>  <span class="Delimiter">);</span>
+<span id="L744" class="LineNr"> 744 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L745" class="LineNr"> 745 </span>      <span class="Constant">&quot;run: or <a href='010---vm.cc.html#L13'>EBX</a> with r/m32\n&quot;</span>
+<span id="L746" class="LineNr"> 746 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L747" class="LineNr"> 747 </span>      <span class="Constant">&quot;run: storing 0xaabbccdd\n&quot;</span>
+<span id="L748" class="LineNr"> 748 </span>  <span class="Delimiter">);</span>
+<span id="L749" class="LineNr"> 749 </span><span class="Delimiter">}</span>
+<span id="L750" class="LineNr"> 750 </span>
+<span id="L751" class="LineNr"> 751 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L752" class="LineNr"> 752 </span><span class="Normal">case</span> <span class="Constant">0x09</span>: <span class="Delimiter">{</span>  <span class="Comment">// or r32 with r/m32</span>
+<span id="L753" class="LineNr"> 753 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L754" class="LineNr"> 754 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> arg2 = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
+<span id="L755" class="LineNr"> 755 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;or &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>arg2<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; with r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L756" class="LineNr"> 756 </span>  <span class="Comment">// bitwise ops technically operate on unsigned numbers, but it makes no</span>
+<span id="L757" class="LineNr"> 757 </span>  <span class="Comment">// difference</span>
+<span id="L758" class="LineNr"> 758 </span>  <span class="Normal">int32_t</span>* signed_arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L759" class="LineNr"> 759 </span>  *signed_arg1 |= <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
+<span id="L760" class="LineNr"> 760 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *signed_arg1 &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L761" class="LineNr"> 761 </span>  SF = <span class="Delimiter">(</span>*signed_arg1 &gt;&gt; <span class="Constant">31</span><span class="Delimiter">);</span>
+<span id="L762" class="LineNr"> 762 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>*signed_arg1 == <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L763" class="LineNr"> 763 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L764" class="LineNr"> 764 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L765" class="LineNr"> 765 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L766" class="LineNr"> 766 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L767" class="LineNr"> 767 </span><span class="Delimiter">}</span>
+<span id="L768" class="LineNr"> 768 </span>
+<span id="L769" class="LineNr"> 769 </span><span class="SalientComment">//:: xor</span>
 <span id="L770" class="LineNr"> 770 </span>
-<span id="L771" class="LineNr"> 771 </span><span class="SalientComment">//:: xor</span>
-<span id="L772" class="LineNr"> 772 </span>
-<span id="L773" class="LineNr"> 773 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L774" class="LineNr"> 774 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;31&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;rm32 = bitwise XOR of r32 with rm32 (xor)&quot;</span><span class="Delimiter">);</span>
-<span id="L775" class="LineNr"> 775 </span>
-<span id="L776" class="LineNr"> 776 </span><span class="Delimiter">:(code)</span>
-<span id="L777" class="LineNr"> 777 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L777'>test_xor_r32_with_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L778" class="LineNr"> 778 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
-<span id="L779" class="LineNr"> 779 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xaabbc0d0</span><span class="Delimiter">;</span>
-<span id="L780" class="LineNr"> 780 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L781" class="LineNr"> 781 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L782" class="LineNr"> 782 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L783" class="LineNr"> 783 </span>      <span class="Constant">&quot;  31     d8                                    \n&quot;</span>  <span class="Comment">// xor EBX with destination EAX</span>
-<span id="L784" class="LineNr"> 784 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
-<span id="L785" class="LineNr"> 785 </span>  <span class="Delimiter">);</span>
-<span id="L786" class="LineNr"> 786 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L787" class="LineNr"> 787 </span>      <span class="Constant">&quot;run: xor <a href='010---vm.cc.html#L13'>EBX</a> with r/m32\n&quot;</span>
-<span id="L788" class="LineNr"> 788 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L789" class="LineNr"> 789 </span>      <span class="Constant">&quot;run: storing 0xa0b0ccdd\n&quot;</span>
-<span id="L790" class="LineNr"> 790 </span>  <span class="Delimiter">);</span>
-<span id="L791" class="LineNr"> 791 </span><span class="Delimiter">}</span>
-<span id="L792" class="LineNr"> 792 </span>
-<span id="L793" class="LineNr"> 793 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L794" class="LineNr"> 794 </span><span class="Normal">case</span> <span class="Constant">0x31</span>: <span class="Delimiter">{</span>  <span class="Comment">// xor r32 with r/m32</span>
-<span id="L795" class="LineNr"> 795 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
-<span id="L796" class="LineNr"> 796 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> arg2 = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
-<span id="L797" class="LineNr"> 797 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;xor &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>arg2<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; with r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L798" class="LineNr"> 798 </span>  <span class="Comment">// bitwise ops technically operate on unsigned numbers, but it makes no</span>
-<span id="L799" class="LineNr"> 799 </span>  <span class="Comment">// difference</span>
-<span id="L800" class="LineNr"> 800 </span>  <span class="Normal">int32_t</span>* signed_arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
-<span id="L801" class="LineNr"> 801 </span>  *signed_arg1 ^= <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
-<span id="L802" class="LineNr"> 802 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *signed_arg1 &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L803" class="LineNr"> 803 </span>  SF = <span class="Delimiter">(</span>*signed_arg1 &gt;&gt; <span class="Constant">31</span><span class="Delimiter">);</span>
-<span id="L804" class="LineNr"> 804 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>*signed_arg1 == <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L805" class="LineNr"> 805 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L806" class="LineNr"> 806 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L807" class="LineNr"> 807 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L808" class="LineNr"> 808 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L809" class="LineNr"> 809 </span><span class="Delimiter">}</span>
+<span id="L771" class="LineNr"> 771 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L772" class="LineNr"> 772 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;31&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;rm32 = bitwise XOR of r32 with rm32 (xor)&quot;</span><span class="Delimiter">);</span>
+<span id="L773" class="LineNr"> 773 </span>
+<span id="L774" class="LineNr"> 774 </span><span class="Delimiter">:(code)</span>
+<span id="L775" class="LineNr"> 775 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L775'>test_xor_r32_with_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L776" class="LineNr"> 776 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
+<span id="L777" class="LineNr"> 777 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xaabbc0d0</span><span class="Delimiter">;</span>
+<span id="L778" class="LineNr"> 778 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L779" class="LineNr"> 779 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L780" class="LineNr"> 780 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L781" class="LineNr"> 781 </span>      <span class="Constant">&quot;  31     d8                                    \n&quot;</span>  <span class="Comment">// xor EBX with destination EAX</span>
+<span id="L782" class="LineNr"> 782 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
+<span id="L783" class="LineNr"> 783 </span>  <span class="Delimiter">);</span>
+<span id="L784" class="LineNr"> 784 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L785" class="LineNr"> 785 </span>      <span class="Constant">&quot;run: xor <a href='010---vm.cc.html#L13'>EBX</a> with r/m32\n&quot;</span>
+<span id="L786" class="LineNr"> 786 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L787" class="LineNr"> 787 </span>      <span class="Constant">&quot;run: storing 0xa0b0ccdd\n&quot;</span>
+<span id="L788" class="LineNr"> 788 </span>  <span class="Delimiter">);</span>
+<span id="L789" class="LineNr"> 789 </span><span class="Delimiter">}</span>
+<span id="L790" class="LineNr"> 790 </span>
+<span id="L791" class="LineNr"> 791 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L792" class="LineNr"> 792 </span><span class="Normal">case</span> <span class="Constant">0x31</span>: <span class="Delimiter">{</span>  <span class="Comment">// xor r32 with r/m32</span>
+<span id="L793" class="LineNr"> 793 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L794" class="LineNr"> 794 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> arg2 = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
+<span id="L795" class="LineNr"> 795 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;xor &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>arg2<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; with r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L796" class="LineNr"> 796 </span>  <span class="Comment">// bitwise ops technically operate on unsigned numbers, but it makes no</span>
+<span id="L797" class="LineNr"> 797 </span>  <span class="Comment">// difference</span>
+<span id="L798" class="LineNr"> 798 </span>  <span class="Normal">int32_t</span>* signed_arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L799" class="LineNr"> 799 </span>  *signed_arg1 ^= <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[arg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
+<span id="L800" class="LineNr"> 800 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *signed_arg1 &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L801" class="LineNr"> 801 </span>  SF = <span class="Delimiter">(</span>*signed_arg1 &gt;&gt; <span class="Constant">31</span><span class="Delimiter">);</span>
+<span id="L802" class="LineNr"> 802 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>*signed_arg1 == <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L803" class="LineNr"> 803 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L804" class="LineNr"> 804 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L805" class="LineNr"> 805 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L806" class="LineNr"> 806 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L807" class="LineNr"> 807 </span><span class="Delimiter">}</span>
+<span id="L808" class="LineNr"> 808 </span>
+<span id="L809" class="LineNr"> 809 </span><span class="SalientComment">//:: not</span>
 <span id="L810" class="LineNr"> 810 </span>
-<span id="L811" class="LineNr"> 811 </span><span class="SalientComment">//:: not</span>
-<span id="L812" class="LineNr"> 812 </span>
-<span id="L813" class="LineNr"> 813 </span><span class="Delimiter">:(code)</span>
-<span id="L814" class="LineNr"> 814 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L814'>test_not_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L815" class="LineNr"> 815 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x0f0f00ff</span><span class="Delimiter">;</span>
-<span id="L816" class="LineNr"> 816 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L817" class="LineNr"> 817 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L818" class="LineNr"> 818 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L819" class="LineNr"> 819 </span>      <span class="Constant">&quot;  f7     d3                                    \n&quot;</span>  <span class="Comment">// not EBX</span>
-<span id="L820" class="LineNr"> 820 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 010 (subop not) 011 (dest EBX)</span>
-<span id="L821" class="LineNr"> 821 </span>  <span class="Delimiter">);</span>
-<span id="L822" class="LineNr"> 822 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L823" class="LineNr"> 823 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
-<span id="L824" class="LineNr"> 824 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
-<span id="L825" class="LineNr"> 825 </span>      <span class="Constant">&quot;run: subop: not\n&quot;</span>
-<span id="L826" class="LineNr"> 826 </span>      <span class="Constant">&quot;run: storing 0xf0f0ff00\n&quot;</span>
-<span id="L827" class="LineNr"> 827 </span>  <span class="Delimiter">);</span>
-<span id="L828" class="LineNr"> 828 </span><span class="Delimiter">}</span>
-<span id="L829" class="LineNr"> 829 </span>
-<span id="L830" class="LineNr"> 830 </span><span class="Delimiter">:(before &quot;End Op f7 Subops&quot;)</span>
-<span id="L831" class="LineNr"> 831 </span><span class="Normal">case</span> <span class="Constant">2</span>: <span class="Delimiter">{</span>  <span class="Comment">// not r/m32</span>
-<span id="L832" class="LineNr"> 832 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: not&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L833" class="LineNr"> 833 </span>  *arg1 = ~<span class="Delimiter">(</span>*arg1<span class="Delimiter">);</span>
-<span id="L834" class="LineNr"> 834 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L835" class="LineNr"> 835 </span>  <span class="Comment">// no flags affected</span>
-<span id="L836" class="LineNr"> 836 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L837" class="LineNr"> 837 </span><span class="Delimiter">}</span>
+<span id="L811" class="LineNr"> 811 </span><span class="Delimiter">:(code)</span>
+<span id="L812" class="LineNr"> 812 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L812'>test_not_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L813" class="LineNr"> 813 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x0f0f00ff</span><span class="Delimiter">;</span>
+<span id="L814" class="LineNr"> 814 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L815" class="LineNr"> 815 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L816" class="LineNr"> 816 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L817" class="LineNr"> 817 </span>      <span class="Constant">&quot;  f7     d3                                    \n&quot;</span>  <span class="Comment">// not EBX</span>
+<span id="L818" class="LineNr"> 818 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 010 (subop not) 011 (dest EBX)</span>
+<span id="L819" class="LineNr"> 819 </span>  <span class="Delimiter">);</span>
+<span id="L820" class="LineNr"> 820 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L821" class="LineNr"> 821 </span>      <span class="Constant">&quot;run: operate on r/m32\n&quot;</span>
+<span id="L822" class="LineNr"> 822 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
+<span id="L823" class="LineNr"> 823 </span>      <span class="Constant">&quot;run: subop: not\n&quot;</span>
+<span id="L824" class="LineNr"> 824 </span>      <span class="Constant">&quot;run: storing 0xf0f0ff00\n&quot;</span>
+<span id="L825" class="LineNr"> 825 </span>  <span class="Delimiter">);</span>
+<span id="L826" class="LineNr"> 826 </span><span class="Delimiter">}</span>
+<span id="L827" class="LineNr"> 827 </span>
+<span id="L828" class="LineNr"> 828 </span><span class="Delimiter">:(before &quot;End Op f7 Subops&quot;)</span>
+<span id="L829" class="LineNr"> 829 </span><span class="Normal">case</span> <span class="Constant">2</span>: <span class="Delimiter">{</span>  <span class="Comment">// not r/m32</span>
+<span id="L830" class="LineNr"> 830 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;subop: not&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L831" class="LineNr"> 831 </span>  *arg1 = ~<span class="Delimiter">(</span>*arg1<span class="Delimiter">);</span>
+<span id="L832" class="LineNr"> 832 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L833" class="LineNr"> 833 </span>  <span class="Comment">// no flags affected</span>
+<span id="L834" class="LineNr"> 834 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L835" class="LineNr"> 835 </span><span class="Delimiter">}</span>
+<span id="L836" class="LineNr"> 836 </span>
+<span id="L837" class="LineNr"> 837 </span><span class="SalientComment">//:: compare (cmp)</span>
 <span id="L838" class="LineNr"> 838 </span>
-<span id="L839" class="LineNr"> 839 </span><span class="SalientComment">//:: compare (cmp)</span>
-<span id="L840" class="LineNr"> 840 </span>
-<span id="L841" class="LineNr"> 841 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L842" class="LineNr"> 842 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;39&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;compare: set SF if rm32 &lt; r32 (cmp)&quot;</span><span class="Delimiter">);</span>
-<span id="L843" class="LineNr"> 843 </span>
-<span id="L844" class="LineNr"> 844 </span><span class="Delimiter">:(code)</span>
-<span id="L845" class="LineNr"> 845 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L845'>test_compare_r32_with_r32_greater</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L846" class="LineNr"> 846 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
-<span id="L847" class="LineNr"> 847 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c07</span><span class="Delimiter">;</span>
-<span id="L848" class="LineNr"> 848 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L849" class="LineNr"> 849 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L850" class="LineNr"> 850 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L851" class="LineNr"> 851 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX with EBX</span>
-<span id="L852" class="LineNr"> 852 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
-<span id="L853" class="LineNr"> 853 </span>  <span class="Delimiter">);</span>
-<span id="L854" class="LineNr"> 854 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L855" class="LineNr"> 855 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
-<span id="L856" class="LineNr"> 856 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L857" class="LineNr"> 857 </span>      <span class="Constant">&quot;run: SF=0; ZF=0; CF=0; OF=0\n&quot;</span>
-<span id="L858" class="LineNr"> 858 </span>  <span class="Delimiter">);</span>
-<span id="L859" class="LineNr"> 859 </span><span class="Delimiter">}</span>
-<span id="L860" class="LineNr"> 860 </span>
-<span id="L861" class="LineNr"> 861 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L862" class="LineNr"> 862 </span><span class="Normal">case</span> <span class="Constant">0x39</span>: <span class="Delimiter">{</span>  <span class="Comment">// set SF if r/m32 &lt; r32</span>
-<span id="L863" class="LineNr"> 863 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
-<span id="L864" class="LineNr"> 864 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> reg2 = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
-<span id="L865" class="LineNr"> 865 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;compare r/m32 with &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>reg2<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L866" class="LineNr"> 866 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span>* signed_arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
-<span id="L867" class="LineNr"> 867 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> signed_difference = *signed_arg1 - <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
-<span id="L868" class="LineNr"> 868 </span>  SF = <span class="Delimiter">(</span>signed_difference &lt; <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L869" class="LineNr"> 869 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>signed_difference == <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L870" class="LineNr"> 870 </span>  <span class="Normal">const</span> <span class="Normal">int64_t</span> signed_full_difference = <span class="Normal">static_cast</span>&lt;<span class="Normal">int64_t</span>&gt;<span class="Delimiter">(</span>*signed_arg1<span class="Delimiter">)</span> - <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
-<span id="L871" class="LineNr"> 871 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Delimiter">(</span>signed_difference != signed_full_difference<span class="Delimiter">);</span>
-<span id="L872" class="LineNr"> 872 </span>  <span class="Comment">// set CF</span>
-<span id="L873" class="LineNr"> 873 </span>  <span class="Normal">const</span> <span class="Normal">uint32_t</span> unsigned_arg1 = <span class="Normal">static_cast</span>&lt;<span class="Normal">uint32_t</span>&gt;<span class="Delimiter">(</span>*signed_arg1<span class="Delimiter">);</span>
-<span id="L874" class="LineNr"> 874 </span>  <span class="Normal">const</span> <span class="Normal">uint32_t</span> unsigned_difference = unsigned_arg1 - <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>u<span class="Delimiter">;</span>
-<span id="L875" class="LineNr"> 875 </span>  <span class="Normal">const</span> <span class="Normal">uint64_t</span> unsigned_full_difference = <span class="Normal">static_cast</span>&lt;<span class="Normal">uint64_t</span>&gt;<span class="Delimiter">(</span>unsigned_arg1<span class="Delimiter">)</span> - <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>u<span class="Delimiter">;</span>
-<span id="L876" class="LineNr"> 876 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <span class="Delimiter">(</span>unsigned_difference != unsigned_full_difference<span class="Delimiter">);</span>
-<span id="L877" class="LineNr"> 877 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L878" class="LineNr"> 878 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L879" class="LineNr"> 879 </span><span class="Delimiter">}</span>
-<span id="L880" class="LineNr"> 880 </span>
-<span id="L881" class="LineNr"> 881 </span><span class="Delimiter">:(code)</span>
-<span id="L882" class="LineNr"> 882 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L882'>test_compare_r32_with_r32_lesser_unsigned_and_signed</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L883" class="LineNr"> 883 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c07</span><span class="Delimiter">;</span>
-<span id="L884" class="LineNr"> 884 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
-<span id="L885" class="LineNr"> 885 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L886" class="LineNr"> 886 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L887" class="LineNr"> 887 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L888" class="LineNr"> 888 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX with EBX</span>
-<span id="L889" class="LineNr"> 889 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
-<span id="L890" class="LineNr"> 890 </span>  <span class="Delimiter">);</span>
-<span id="L891" class="LineNr"> 891 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L892" class="LineNr"> 892 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
-<span id="L893" class="LineNr"> 893 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L894" class="LineNr"> 894 </span>      <span class="Constant">&quot;run: SF=1; ZF=0; CF=1; OF=0\n&quot;</span>
-<span id="L895" class="LineNr"> 895 </span>  <span class="Delimiter">);</span>
-<span id="L896" class="LineNr"> 896 </span><span class="Delimiter">}</span>
-<span id="L897" class="LineNr"> 897 </span>
-<span id="L898" class="LineNr"> 898 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L898'>test_compare_r32_with_r32_lesser_unsigned_and_signed_due_to_overflow</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L899" class="LineNr"> 899 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x7fffffff</span><span class="Delimiter">;</span>  <span class="Comment">// largest positive signed integer</span>
-<span id="L900" class="LineNr"> 900 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x80000000</span><span class="Delimiter">;</span>  <span class="Comment">// smallest negative signed integer</span>
-<span id="L901" class="LineNr"> 901 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L902" class="LineNr"> 902 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L903" class="LineNr"> 903 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L904" class="LineNr"> 904 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX with EBX</span>
-<span id="L905" class="LineNr"> 905 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
-<span id="L906" class="LineNr"> 906 </span>  <span class="Delimiter">);</span>
-<span id="L907" class="LineNr"> 907 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L908" class="LineNr"> 908 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
-<span id="L909" class="LineNr"> 909 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L910" class="LineNr"> 910 </span>      <span class="Constant">&quot;run: SF=1; ZF=0; CF=1; OF=1\n&quot;</span>
-<span id="L911" class="LineNr"> 911 </span>  <span class="Delimiter">);</span>
-<span id="L912" class="LineNr"> 912 </span><span class="Delimiter">}</span>
-<span id="L913" class="LineNr"> 913 </span>
-<span id="L914" class="LineNr"> 914 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L914'>test_compare_r32_with_r32_lesser_signed</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L915" class="LineNr"> 915 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0xffffffff</span><span class="Delimiter">;</span>  <span class="Comment">// -1</span>
-<span id="L916" class="LineNr"> 916 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x00000001</span><span class="Delimiter">;</span>  <span class="Comment">// 1</span>
-<span id="L917" class="LineNr"> 917 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L918" class="LineNr"> 918 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L919" class="LineNr"> 919 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L920" class="LineNr"> 920 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX with EBX</span>
-<span id="L921" class="LineNr"> 921 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
-<span id="L922" class="LineNr"> 922 </span>  <span class="Delimiter">);</span>
-<span id="L923" class="LineNr"> 923 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L924" class="LineNr"> 924 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
-<span id="L925" class="LineNr"> 925 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L926" class="LineNr"> 926 </span>      <span class="Constant">&quot;run: SF=1; ZF=0; CF=0; OF=0\n&quot;</span>
-<span id="L927" class="LineNr"> 927 </span>  <span class="Delimiter">);</span>
-<span id="L928" class="LineNr"> 928 </span><span class="Delimiter">}</span>
-<span id="L929" class="LineNr"> 929 </span>
-<span id="L930" class="LineNr"> 930 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L930'>test_compare_r32_with_r32_lesser_unsigned</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L931" class="LineNr"> 931 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x00000001</span><span class="Delimiter">;</span>  <span class="Comment">// 1</span>
-<span id="L932" class="LineNr"> 932 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xffffffff</span><span class="Delimiter">;</span>  <span class="Comment">// -1</span>
-<span id="L933" class="LineNr"> 933 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L934" class="LineNr"> 934 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L935" class="LineNr"> 935 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L936" class="LineNr"> 936 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX with EBX</span>
-<span id="L937" class="LineNr"> 937 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
-<span id="L938" class="LineNr"> 938 </span>  <span class="Delimiter">);</span>
-<span id="L939" class="LineNr"> 939 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L940" class="LineNr"> 940 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
-<span id="L941" class="LineNr"> 941 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L942" class="LineNr"> 942 </span>      <span class="Constant">&quot;run: SF=0; ZF=0; CF=1; OF=0\n&quot;</span>
-<span id="L943" class="LineNr"> 943 </span>  <span class="Delimiter">);</span>
-<span id="L944" class="LineNr"> 944 </span><span class="Delimiter">}</span>
-<span id="L945" class="LineNr"> 945 </span>
-<span id="L946" class="LineNr"> 946 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L946'>test_compare_r32_with_r32_equal</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L947" class="LineNr"> 947 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
-<span id="L948" class="LineNr"> 948 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
-<span id="L949" class="LineNr"> 949 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L950" class="LineNr"> 950 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L951" class="LineNr"> 951 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L952" class="LineNr"> 952 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX and EBX</span>
-<span id="L953" class="LineNr"> 953 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
-<span id="L954" class="LineNr"> 954 </span>  <span class="Delimiter">);</span>
-<span id="L955" class="LineNr"> 955 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L956" class="LineNr"> 956 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
-<span id="L957" class="LineNr"> 957 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L958" class="LineNr"> 958 </span>      <span class="Constant">&quot;run: SF=0; ZF=1; CF=0; OF=0\n&quot;</span>
-<span id="L959" class="LineNr"> 959 </span>  <span class="Delimiter">);</span>
-<span id="L960" class="LineNr"> 960 </span><span class="Delimiter">}</span>
+<span id="L839" class="LineNr"> 839 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L840" class="LineNr"> 840 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;39&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;compare: set SF if rm32 &lt; r32 (cmp)&quot;</span><span class="Delimiter">);</span>
+<span id="L841" class="LineNr"> 841 </span>
+<span id="L842" class="LineNr"> 842 </span><span class="Delimiter">:(code)</span>
+<span id="L843" class="LineNr"> 843 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L843'>test_compare_r32_with_r32_greater</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L844" class="LineNr"> 844 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
+<span id="L845" class="LineNr"> 845 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c07</span><span class="Delimiter">;</span>
+<span id="L846" class="LineNr"> 846 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L847" class="LineNr"> 847 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L848" class="LineNr"> 848 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L849" class="LineNr"> 849 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX with EBX</span>
+<span id="L850" class="LineNr"> 850 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
+<span id="L851" class="LineNr"> 851 </span>  <span class="Delimiter">);</span>
+<span id="L852" class="LineNr"> 852 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L853" class="LineNr"> 853 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
+<span id="L854" class="LineNr"> 854 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L855" class="LineNr"> 855 </span>      <span class="Constant">&quot;run: SF=0; ZF=0; CF=0; OF=0\n&quot;</span>
+<span id="L856" class="LineNr"> 856 </span>  <span class="Delimiter">);</span>
+<span id="L857" class="LineNr"> 857 </span><span class="Delimiter">}</span>
+<span id="L858" class="LineNr"> 858 </span>
+<span id="L859" class="LineNr"> 859 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L860" class="LineNr"> 860 </span><span class="Normal">case</span> <span class="Constant">0x39</span>: <span class="Delimiter">{</span>  <span class="Comment">// set SF if r/m32 &lt; r32</span>
+<span id="L861" class="LineNr"> 861 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L862" class="LineNr"> 862 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> reg2 = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
+<span id="L863" class="LineNr"> 863 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;compare r/m32 with &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>reg2<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L864" class="LineNr"> 864 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span>* signed_arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L865" class="LineNr"> 865 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> signed_difference = *signed_arg1 - <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
+<span id="L866" class="LineNr"> 866 </span>  SF = <span class="Delimiter">(</span>signed_difference &lt; <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L867" class="LineNr"> 867 </span>  <a href='010---vm.cc.html#L80'>ZF</a> = <span class="Delimiter">(</span>signed_difference == <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L868" class="LineNr"> 868 </span>  <span class="Normal">const</span> <span class="Normal">int64_t</span> signed_full_difference = <span class="Normal">static_cast</span>&lt;<span class="Normal">int64_t</span>&gt;<span class="Delimiter">(</span>*signed_arg1<span class="Delimiter">)</span> - <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
+<span id="L869" class="LineNr"> 869 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Delimiter">(</span>signed_difference != signed_full_difference<span class="Delimiter">);</span>
+<span id="L870" class="LineNr"> 870 </span>  <span class="Comment">// set CF</span>
+<span id="L871" class="LineNr"> 871 </span>  <span class="Normal">const</span> <span class="Normal">uint32_t</span> unsigned_arg1 = <span class="Normal">static_cast</span>&lt;<span class="Normal">uint32_t</span>&gt;<span class="Delimiter">(</span>*signed_arg1<span class="Delimiter">);</span>
+<span id="L872" class="LineNr"> 872 </span>  <span class="Normal">const</span> <span class="Normal">uint32_t</span> unsigned_difference = unsigned_arg1 - <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>u<span class="Delimiter">;</span>
+<span id="L873" class="LineNr"> 873 </span>  <span class="Normal">const</span> <span class="Normal">uint64_t</span> unsigned_full_difference = <span class="Normal">static_cast</span>&lt;<span class="Normal">uint64_t</span>&gt;<span class="Delimiter">(</span>unsigned_arg1<span class="Delimiter">)</span> - <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>u<span class="Delimiter">;</span>
+<span id="L874" class="LineNr"> 874 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <span class="Delimiter">(</span>unsigned_difference != unsigned_full_difference<span class="Delimiter">);</span>
+<span id="L875" class="LineNr"> 875 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L876" class="LineNr"> 876 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L877" class="LineNr"> 877 </span><span class="Delimiter">}</span>
+<span id="L878" class="LineNr"> 878 </span>
+<span id="L879" class="LineNr"> 879 </span><span class="Delimiter">:(code)</span>
+<span id="L880" class="LineNr"> 880 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L880'>test_compare_r32_with_r32_lesser_unsigned_and_signed</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L881" class="LineNr"> 881 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c07</span><span class="Delimiter">;</span>
+<span id="L882" class="LineNr"> 882 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
+<span id="L883" class="LineNr"> 883 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L884" class="LineNr"> 884 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L885" class="LineNr"> 885 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L886" class="LineNr"> 886 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX with EBX</span>
+<span id="L887" class="LineNr"> 887 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
+<span id="L888" class="LineNr"> 888 </span>  <span class="Delimiter">);</span>
+<span id="L889" class="LineNr"> 889 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L890" class="LineNr"> 890 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
+<span id="L891" class="LineNr"> 891 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L892" class="LineNr"> 892 </span>      <span class="Constant">&quot;run: SF=1; ZF=0; CF=1; OF=0\n&quot;</span>
+<span id="L893" class="LineNr"> 893 </span>  <span class="Delimiter">);</span>
+<span id="L894" class="LineNr"> 894 </span><span class="Delimiter">}</span>
+<span id="L895" class="LineNr"> 895 </span>
+<span id="L896" class="LineNr"> 896 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L896'>test_compare_r32_with_r32_lesser_unsigned_and_signed_due_to_overflow</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L897" class="LineNr"> 897 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x7fffffff</span><span class="Delimiter">;</span>  <span class="Comment">// largest positive signed integer</span>
+<span id="L898" class="LineNr"> 898 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x80000000</span><span class="Delimiter">;</span>  <span class="Comment">// smallest negative signed integer</span>
+<span id="L899" class="LineNr"> 899 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L900" class="LineNr"> 900 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L901" class="LineNr"> 901 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L902" class="LineNr"> 902 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX with EBX</span>
+<span id="L903" class="LineNr"> 903 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
+<span id="L904" class="LineNr"> 904 </span>  <span class="Delimiter">);</span>
+<span id="L905" class="LineNr"> 905 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L906" class="LineNr"> 906 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
+<span id="L907" class="LineNr"> 907 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L908" class="LineNr"> 908 </span>      <span class="Constant">&quot;run: SF=1; ZF=0; CF=1; OF=1\n&quot;</span>
+<span id="L909" class="LineNr"> 909 </span>  <span class="Delimiter">);</span>
+<span id="L910" class="LineNr"> 910 </span><span class="Delimiter">}</span>
+<span id="L911" class="LineNr"> 911 </span>
+<span id="L912" class="LineNr"> 912 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L912'>test_compare_r32_with_r32_lesser_signed</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L913" class="LineNr"> 913 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0xffffffff</span><span class="Delimiter">;</span>  <span class="Comment">// -1</span>
+<span id="L914" class="LineNr"> 914 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x00000001</span><span class="Delimiter">;</span>  <span class="Comment">// 1</span>
+<span id="L915" class="LineNr"> 915 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L916" class="LineNr"> 916 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L917" class="LineNr"> 917 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L918" class="LineNr"> 918 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX with EBX</span>
+<span id="L919" class="LineNr"> 919 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
+<span id="L920" class="LineNr"> 920 </span>  <span class="Delimiter">);</span>
+<span id="L921" class="LineNr"> 921 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L922" class="LineNr"> 922 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
+<span id="L923" class="LineNr"> 923 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L924" class="LineNr"> 924 </span>      <span class="Constant">&quot;run: SF=1; ZF=0; CF=0; OF=0\n&quot;</span>
+<span id="L925" class="LineNr"> 925 </span>  <span class="Delimiter">);</span>
+<span id="L926" class="LineNr"> 926 </span><span class="Delimiter">}</span>
+<span id="L927" class="LineNr"> 927 </span>
+<span id="L928" class="LineNr"> 928 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L928'>test_compare_r32_with_r32_lesser_unsigned</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L929" class="LineNr"> 929 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x00000001</span><span class="Delimiter">;</span>  <span class="Comment">// 1</span>
+<span id="L930" class="LineNr"> 930 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xffffffff</span><span class="Delimiter">;</span>  <span class="Comment">// -1</span>
+<span id="L931" class="LineNr"> 931 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L932" class="LineNr"> 932 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L933" class="LineNr"> 933 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L934" class="LineNr"> 934 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX with EBX</span>
+<span id="L935" class="LineNr"> 935 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
+<span id="L936" class="LineNr"> 936 </span>  <span class="Delimiter">);</span>
+<span id="L937" class="LineNr"> 937 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L938" class="LineNr"> 938 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
+<span id="L939" class="LineNr"> 939 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L940" class="LineNr"> 940 </span>      <span class="Constant">&quot;run: SF=0; ZF=0; CF=1; OF=0\n&quot;</span>
+<span id="L941" class="LineNr"> 941 </span>  <span class="Delimiter">);</span>
+<span id="L942" class="LineNr"> 942 </span><span class="Delimiter">}</span>
+<span id="L943" class="LineNr"> 943 </span>
+<span id="L944" class="LineNr"> 944 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L944'>test_compare_r32_with_r32_equal</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L945" class="LineNr"> 945 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
+<span id="L946" class="LineNr"> 946 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x0a0b0c0d</span><span class="Delimiter">;</span>
+<span id="L947" class="LineNr"> 947 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L948" class="LineNr"> 948 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L949" class="LineNr"> 949 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L950" class="LineNr"> 950 </span>      <span class="Constant">&quot;  39     d8                                    \n&quot;</span>  <span class="Comment">// compare EAX and EBX</span>
+<span id="L951" class="LineNr"> 951 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
+<span id="L952" class="LineNr"> 952 </span>  <span class="Delimiter">);</span>
+<span id="L953" class="LineNr"> 953 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L954" class="LineNr"> 954 </span>      <span class="Constant">&quot;run: compare r/m32 with EBX\n&quot;</span>
+<span id="L955" class="LineNr"> 955 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L956" class="LineNr"> 956 </span>      <span class="Constant">&quot;run: SF=0; ZF=1; CF=0; OF=0\n&quot;</span>
+<span id="L957" class="LineNr"> 957 </span>  <span class="Delimiter">);</span>
+<span id="L958" class="LineNr"> 958 </span><span class="Delimiter">}</span>
+<span id="L959" class="LineNr"> 959 </span>
+<span id="L960" class="LineNr"> 960 </span><span class="SalientComment">//:: copy (mov)</span>
 <span id="L961" class="LineNr"> 961 </span>
-<span id="L962" class="LineNr"> 962 </span><span class="SalientComment">//:: copy (mov)</span>
-<span id="L963" class="LineNr"> 963 </span>
-<span id="L964" class="LineNr"> 964 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L965" class="LineNr"> 965 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;89&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;copy r32 to rm32 (mov)&quot;</span><span class="Delimiter">);</span>
-<span id="L966" class="LineNr"> 966 </span>
-<span id="L967" class="LineNr"> 967 </span><span class="Delimiter">:(code)</span>
-<span id="L968" class="LineNr"> 968 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L968'>test_copy_r32_to_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L969" class="LineNr"> 969 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xaf</span><span class="Delimiter">;</span>
-<span id="L970" class="LineNr"> 970 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L971" class="LineNr"> 971 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L972" class="LineNr"> 972 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L973" class="LineNr"> 973 </span>      <span class="Constant">&quot;  89     d8                                    \n&quot;</span>  <span class="Comment">// copy EBX to EAX</span>
-<span id="L974" class="LineNr"> 974 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
-<span id="L975" class="LineNr"> 975 </span>  <span class="Delimiter">);</span>
-<span id="L976" class="LineNr"> 976 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L977" class="LineNr"> 977 </span>      <span class="Constant">&quot;run: copy <a href='010---vm.cc.html#L13'>EBX</a> to r/m32\n&quot;</span>
-<span id="L978" class="LineNr"> 978 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L979" class="LineNr"> 979 </span>      <span class="Constant">&quot;run: storing 0x000000af\n&quot;</span>
-<span id="L980" class="LineNr"> 980 </span>  <span class="Delimiter">);</span>
-<span id="L981" class="LineNr"> 981 </span><span class="Delimiter">}</span>
-<span id="L982" class="LineNr"> 982 </span>
-<span id="L983" class="LineNr"> 983 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L984" class="LineNr"> 984 </span><span class="Normal">case</span> <span class="Constant">0x89</span>: <span class="Delimiter">{</span>  <span class="Comment">// copy r32 to r/m32</span>
-<span id="L985" class="LineNr"> 985 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
-<span id="L986" class="LineNr"> 986 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> rsrc = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
-<span id="L987" class="LineNr"> 987 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;copy &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>rsrc<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; to r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L988" class="LineNr"> 988 </span>  <span class="Normal">int32_t</span>* dest = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
-<span id="L989" class="LineNr"> 989 </span>  *dest = <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[rsrc]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>  <span class="Comment">// Write multiple elements of vector&lt;uint8_t&gt; at once. Assumes sizeof(int) == 4 on the host as well.</span>
-<span id="L990" class="LineNr"> 990 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L991" class="LineNr"> 991 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L992" class="LineNr"> 992 </span><span class="Delimiter">}</span>
+<span id="L962" class="LineNr"> 962 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L963" class="LineNr"> 963 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;89&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;copy r32 to rm32 (mov)&quot;</span><span class="Delimiter">);</span>
+<span id="L964" class="LineNr"> 964 </span>
+<span id="L965" class="LineNr"> 965 </span><span class="Delimiter">:(code)</span>
+<span id="L966" class="LineNr"> 966 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L966'>test_copy_r32_to_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L967" class="LineNr"> 967 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xaf</span><span class="Delimiter">;</span>
+<span id="L968" class="LineNr"> 968 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L969" class="LineNr"> 969 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L970" class="LineNr"> 970 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L971" class="LineNr"> 971 </span>      <span class="Constant">&quot;  89     d8                                    \n&quot;</span>  <span class="Comment">// copy EBX to EAX</span>
+<span id="L972" class="LineNr"> 972 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
+<span id="L973" class="LineNr"> 973 </span>  <span class="Delimiter">);</span>
+<span id="L974" class="LineNr"> 974 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L975" class="LineNr"> 975 </span>      <span class="Constant">&quot;run: copy <a href='010---vm.cc.html#L13'>EBX</a> to r/m32\n&quot;</span>
+<span id="L976" class="LineNr"> 976 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L977" class="LineNr"> 977 </span>      <span class="Constant">&quot;run: storing 0x000000af\n&quot;</span>
+<span id="L978" class="LineNr"> 978 </span>  <span class="Delimiter">);</span>
+<span id="L979" class="LineNr"> 979 </span><span class="Delimiter">}</span>
+<span id="L980" class="LineNr"> 980 </span>
+<span id="L981" class="LineNr"> 981 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L982" class="LineNr"> 982 </span><span class="Normal">case</span> <span class="Constant">0x89</span>: <span class="Delimiter">{</span>  <span class="Comment">// copy r32 to r/m32</span>
+<span id="L983" class="LineNr"> 983 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L984" class="LineNr"> 984 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> rsrc = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
+<span id="L985" class="LineNr"> 985 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;copy &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>rsrc<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; to r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L986" class="LineNr"> 986 </span>  <span class="Normal">int32_t</span>* dest = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L987" class="LineNr"> 987 </span>  *dest = <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[rsrc]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>  <span class="Comment">// Write multiple elements of vector&lt;uint8_t&gt; at once. Assumes sizeof(int) == 4 on the host as well.</span>
+<span id="L988" class="LineNr"> 988 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L989" class="LineNr"> 989 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L990" class="LineNr"> 990 </span><span class="Delimiter">}</span>
+<span id="L991" class="LineNr"> 991 </span>
+<span id="L992" class="LineNr"> 992 </span><span class="SalientComment">//:: xchg</span>
 <span id="L993" class="LineNr"> 993 </span>
-<span id="L994" class="LineNr"> 994 </span><span class="SalientComment">//:: xchg</span>
-<span id="L995" class="LineNr"> 995 </span>
-<span id="L996" class="LineNr"> 996 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L997" class="LineNr"> 997 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;87&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;swap the <a href='003trace.cc.html#L117'>contents</a> of r32 and rm32 (xchg)&quot;</span><span class="Delimiter">);</span>
-<span id="L998" class="LineNr"> 998 </span>
-<span id="L999" class="LineNr"> 999 </span><span class="Delimiter">:(code)</span>
-<span id="L1000" class="LineNr">1000 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1000'>test_xchg_r32_with_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L1001" class="LineNr">1001 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xaf</span><span class="Delimiter">;</span>
-<span id="L1002" class="LineNr">1002 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x2e</span><span class="Delimiter">;</span>
-<span id="L1003" class="LineNr">1003 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L1004" class="LineNr">1004 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L1005" class="LineNr">1005 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L1006" class="LineNr">1006 </span>      <span class="Constant">&quot;  87     d8                                    \n&quot;</span>  <span class="Comment">// exchange EBX with EAX</span>
-<span id="L1007" class="LineNr">1007 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
-<span id="L1008" class="LineNr">1008 </span>  <span class="Delimiter">);</span>
-<span id="L1009" class="LineNr">1009 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L1010" class="LineNr">1010 </span>      <span class="Constant">&quot;run: exchange <a href='010---vm.cc.html#L13'>EBX</a> with r/m32\n&quot;</span>
-<span id="L1011" class="LineNr">1011 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L1012" class="LineNr">1012 </span>      <span class="Constant">&quot;run: storing 0x000000af in r/m32\n&quot;</span>
-<span id="L1013" class="LineNr">1013 </span>      <span class="Constant">&quot;run: storing 0x0000002e in EBX\n&quot;</span>
-<span id="L1014" class="LineNr">1014 </span>  <span class="Delimiter">);</span>
-<span id="L1015" class="LineNr">1015 </span><span class="Delimiter">}</span>
-<span id="L1016" class="LineNr">1016 </span>
-<span id="L1017" class="LineNr">1017 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L1018" class="LineNr">1018 </span><span class="Normal">case</span> <span class="Constant">0x87</span>: <span class="Delimiter">{</span>  <span class="Comment">// exchange r32 with r/m32</span>
-<span id="L1019" class="LineNr">1019 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
-<span id="L1020" class="LineNr">1020 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> reg2 = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
-<span id="L1021" class="LineNr">1021 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;exchange &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>reg2<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; with r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1022" class="LineNr">1022 </span>  <span class="Normal">int32_t</span>* arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
-<span id="L1023" class="LineNr">1023 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> tmp = *arg1<span class="Delimiter">;</span>
-<span id="L1024" class="LineNr">1024 </span>  *arg1 = <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
-<span id="L1025" class="LineNr">1025 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>i = tmp<span class="Delimiter">;</span>
-<span id="L1026" class="LineNr">1026 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; <span class="Constant">&quot; in r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1027" class="LineNr">1027 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>i &lt;&lt; <span class="Constant">&quot; in &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>reg2<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1028" class="LineNr">1028 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L1029" class="LineNr">1029 </span><span class="Delimiter">}</span>
+<span id="L994" class="LineNr"> 994 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L995" class="LineNr"> 995 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;87&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;swap the <a href='003trace.cc.html#L117'>contents</a> of r32 and rm32 (xchg)&quot;</span><span class="Delimiter">);</span>
+<span id="L996" class="LineNr"> 996 </span>
+<span id="L997" class="LineNr"> 997 </span><span class="Delimiter">:(code)</span>
+<span id="L998" class="LineNr"> 998 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L998'>test_xchg_r32_with_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L999" class="LineNr"> 999 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0xaf</span><span class="Delimiter">;</span>
+<span id="L1000" class="LineNr">1000 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">0x2e</span><span class="Delimiter">;</span>
+<span id="L1001" class="LineNr">1001 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L1002" class="LineNr">1002 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L1003" class="LineNr">1003 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L1004" class="LineNr">1004 </span>      <span class="Constant">&quot;  87     d8                                    \n&quot;</span>  <span class="Comment">// exchange EBX with EAX</span>
+<span id="L1005" class="LineNr">1005 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 011 (src EBX) 000 (dest EAX)</span>
+<span id="L1006" class="LineNr">1006 </span>  <span class="Delimiter">);</span>
+<span id="L1007" class="LineNr">1007 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L1008" class="LineNr">1008 </span>      <span class="Constant">&quot;run: exchange <a href='010---vm.cc.html#L13'>EBX</a> with r/m32\n&quot;</span>
+<span id="L1009" class="LineNr">1009 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L1010" class="LineNr">1010 </span>      <span class="Constant">&quot;run: storing 0x000000af in r/m32\n&quot;</span>
+<span id="L1011" class="LineNr">1011 </span>      <span class="Constant">&quot;run: storing 0x0000002e in EBX\n&quot;</span>
+<span id="L1012" class="LineNr">1012 </span>  <span class="Delimiter">);</span>
+<span id="L1013" class="LineNr">1013 </span><span class="Delimiter">}</span>
+<span id="L1014" class="LineNr">1014 </span>
+<span id="L1015" class="LineNr">1015 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L1016" class="LineNr">1016 </span><span class="Normal">case</span> <span class="Constant">0x87</span>: <span class="Delimiter">{</span>  <span class="Comment">// exchange r32 with r/m32</span>
+<span id="L1017" class="LineNr">1017 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L1018" class="LineNr">1018 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> reg2 = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
+<span id="L1019" class="LineNr">1019 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;exchange &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>reg2<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; with r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1020" class="LineNr">1020 </span>  <span class="Normal">int32_t</span>* arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L1021" class="LineNr">1021 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> tmp = *arg1<span class="Delimiter">;</span>
+<span id="L1022" class="LineNr">1022 </span>  *arg1 = <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>i<span class="Delimiter">;</span>
+<span id="L1023" class="LineNr">1023 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>i = tmp<span class="Delimiter">;</span>
+<span id="L1024" class="LineNr">1024 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg1 &lt;&lt; <span class="Constant">&quot; in r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1025" class="LineNr">1025 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg2]<span class="Delimiter">.</span>i &lt;&lt; <span class="Constant">&quot; in &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>reg2<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1026" class="LineNr">1026 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L1027" class="LineNr">1027 </span><span class="Delimiter">}</span>
+<span id="L1028" class="LineNr">1028 </span>
+<span id="L1029" class="LineNr">1029 </span><span class="SalientComment">//:: increment</span>
 <span id="L1030" class="LineNr">1030 </span>
-<span id="L1031" class="LineNr">1031 </span><span class="SalientComment">//:: increment</span>
-<span id="L1032" class="LineNr">1032 </span>
-<span id="L1033" class="LineNr">1033 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L1034" class="LineNr">1034 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;40&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L10'>EAX</a> (inc)&quot;</span><span class="Delimiter">);</span>
-<span id="L1035" class="LineNr">1035 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;41&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L11'>ECX</a> (inc)&quot;</span><span class="Delimiter">);</span>
-<span id="L1036" class="LineNr">1036 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;42&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L12'>EDX</a> (inc)&quot;</span><span class="Delimiter">);</span>
-<span id="L1037" class="LineNr">1037 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;43&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L13'>EBX</a> (inc)&quot;</span><span class="Delimiter">);</span>
-<span id="L1038" class="LineNr">1038 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;44&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L14'>ESP</a> (inc)&quot;</span><span class="Delimiter">);</span>
-<span id="L1039" class="LineNr">1039 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;45&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L15'>EBP</a> (inc)&quot;</span><span class="Delimiter">);</span>
-<span id="L1040" class="LineNr">1040 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;46&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L16'>ESI</a> (inc)&quot;</span><span class="Delimiter">);</span>
-<span id="L1041" class="LineNr">1041 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;47&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L17'>EDI</a> (inc)&quot;</span><span class="Delimiter">);</span>
-<span id="L1042" class="LineNr">1042 </span>
-<span id="L1043" class="LineNr">1043 </span><span class="Delimiter">:(code)</span>
-<span id="L1044" class="LineNr">1044 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1044'>test_increment_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L1045" class="LineNr">1045 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>u = <span class="Constant">0x1f</span><span class="Delimiter">;</span>
-<span id="L1046" class="LineNr">1046 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L1047" class="LineNr">1047 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L1048" class="LineNr">1048 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L1049" class="LineNr">1049 </span>      <span class="Constant">&quot;  41                                           \n&quot;</span>  <span class="Comment">// increment ECX</span>
-<span id="L1050" class="LineNr">1050 </span>  <span class="Delimiter">);</span>
-<span id="L1051" class="LineNr">1051 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L1052" class="LineNr">1052 </span>      <span class="Constant">&quot;run: increment ECX\n&quot;</span>
-<span id="L1053" class="LineNr">1053 </span>      <span class="Constant">&quot;run: storing value 0x00000020\n&quot;</span>
-<span id="L1054" class="LineNr">1054 </span>  <span class="Delimiter">);</span>
-<span id="L1055" class="LineNr">1055 </span><span class="Delimiter">}</span>
-<span id="L1056" class="LineNr">1056 </span>
-<span id="L1057" class="LineNr">1057 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L1058" class="LineNr">1058 </span><span class="Normal">case</span> <span class="Constant">0x40</span>:
-<span id="L1059" class="LineNr">1059 </span><span class="Normal">case</span> <span class="Constant">0x41</span>:
-<span id="L1060" class="LineNr">1060 </span><span class="Normal">case</span> <span class="Constant">0x42</span>:
-<span id="L1061" class="LineNr">1061 </span><span class="Normal">case</span> <span class="Constant">0x43</span>:
-<span id="L1062" class="LineNr">1062 </span><span class="Normal">case</span> <span class="Constant">0x44</span>:
-<span id="L1063" class="LineNr">1063 </span><span class="Normal">case</span> <span class="Constant">0x45</span>:
-<span id="L1064" class="LineNr">1064 </span><span class="Normal">case</span> <span class="Constant">0x46</span>:
-<span id="L1065" class="LineNr">1065 </span><span class="Normal">case</span> <span class="Constant">0x47</span>: <span class="Delimiter">{</span>  <span class="Comment">// increment r32</span>
-<span id="L1066" class="LineNr">1066 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> <a href='010---vm.cc.html#L20'>reg</a> = op &amp; <span class="Constant">0x7</span><span class="Delimiter">;</span>
-<span id="L1067" class="LineNr">1067 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;increment &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span><a href='010---vm.cc.html#L20'>reg</a><span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1068" class="LineNr">1068 </span>  ++<span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u<span class="Delimiter">;</span>
-<span id="L1069" class="LineNr">1069 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing value 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1070" class="LineNr">1070 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L1071" class="LineNr">1071 </span><span class="Delimiter">}</span>
-<span id="L1072" class="LineNr">1072 </span>
-<span id="L1073" class="LineNr">1073 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L1074" class="LineNr">1074 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;ff&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment/decrement/jump/push/call rm32 based on subop (inc/dec/jmp/push/call)&quot;</span><span class="Delimiter">);</span>
-<span id="L1075" class="LineNr">1075 </span>
-<span id="L1076" class="LineNr">1076 </span><span class="Delimiter">:(code)</span>
-<span id="L1077" class="LineNr">1077 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1077'>test_increment_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L1078" class="LineNr">1078 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">0x20</span><span class="Delimiter">;</span>
-<span id="L1079" class="LineNr">1079 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L1080" class="LineNr">1080 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L1081" class="LineNr">1081 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L1082" class="LineNr">1082 </span>      <span class="Constant">&quot;  ff     c0                                    \n&quot;</span>  <span class="Comment">// increment EAX</span>
-<span id="L1083" class="LineNr">1083 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 000 (subop inc) 000 (EAX)</span>
-<span id="L1084" class="LineNr">1084 </span>  <span class="Delimiter">);</span>
-<span id="L1085" class="LineNr">1085 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L1086" class="LineNr">1086 </span>      <span class="Constant">&quot;run: increment r/m32\n&quot;</span>
-<span id="L1087" class="LineNr">1087 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L1088" class="LineNr">1088 </span>      <span class="Constant">&quot;run: storing value 0x00000021\n&quot;</span>
-<span id="L1089" class="LineNr">1089 </span>  <span class="Delimiter">);</span>
-<span id="L1090" class="LineNr">1090 </span><span class="Delimiter">}</span>
-<span id="L1091" class="LineNr">1091 </span>
-<span id="L1092" class="LineNr">1092 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L1093" class="LineNr">1093 </span><span class="Normal">case</span> <span class="Constant">0xff</span>: <span class="Delimiter">{</span>
-<span id="L1094" class="LineNr">1094 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
-<span id="L1095" class="LineNr">1095 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> subop = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>  <span class="Comment">// middle 3 'reg opcode' bits</span>
-<span id="L1096" class="LineNr">1096 </span>  <span class="Normal">switch</span> <span class="Delimiter">(</span>subop<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L1097" class="LineNr">1097 </span>    <span class="Normal">case</span> <span class="Constant">0</span>: <span class="Delimiter">{</span>  <span class="Comment">// increment r/m32</span>
-<span id="L1098" class="LineNr">1098 </span>      <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;increment r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1099" class="LineNr">1099 </span>      <span class="Normal">int32_t</span>* <a href='001help.cc.html#L15'>arg</a> = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
-<span id="L1100" class="LineNr">1100 </span>      ++*arg<span class="Delimiter">;</span>
-<span id="L1101" class="LineNr">1101 </span>      <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing value 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1102" class="LineNr">1102 </span>      <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L1103" class="LineNr">1103 </span>    <span class="Delimiter">}</span>
-<span id="L1104" class="LineNr">1104 </span>    <span class="Normal">default</span>:
-<span id="L1105" class="LineNr">1105 </span>      cerr &lt;&lt; <span class="Constant">&quot;unrecognized subop for ff: &quot;</span> &lt;&lt; <a href='010---vm.cc.html#L394'>HEXBYTE</a> &lt;&lt; <a href='010---vm.cc.html#L397'>NUM</a><span class="Delimiter">(</span>subop<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
-<span id="L1106" class="LineNr">1106 </span>      exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
-<span id="L1107" class="LineNr">1107 </span>    <span class="Comment">// End Op ff Subops</span>
-<span id="L1108" class="LineNr">1108 </span>  <span class="Delimiter">}</span>
-<span id="L1109" class="LineNr">1109 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L1110" class="LineNr">1110 </span><span class="Delimiter">}</span>
+<span id="L1031" class="LineNr">1031 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L1032" class="LineNr">1032 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;40&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L10'>EAX</a> (inc)&quot;</span><span class="Delimiter">);</span>
+<span id="L1033" class="LineNr">1033 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;41&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L11'>ECX</a> (inc)&quot;</span><span class="Delimiter">);</span>
+<span id="L1034" class="LineNr">1034 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;42&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L12'>EDX</a> (inc)&quot;</span><span class="Delimiter">);</span>
+<span id="L1035" class="LineNr">1035 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;43&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L13'>EBX</a> (inc)&quot;</span><span class="Delimiter">);</span>
+<span id="L1036" class="LineNr">1036 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;44&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L14'>ESP</a> (inc)&quot;</span><span class="Delimiter">);</span>
+<span id="L1037" class="LineNr">1037 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;45&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L15'>EBP</a> (inc)&quot;</span><span class="Delimiter">);</span>
+<span id="L1038" class="LineNr">1038 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;46&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L16'>ESI</a> (inc)&quot;</span><span class="Delimiter">);</span>
+<span id="L1039" class="LineNr">1039 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;47&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment <a href='010---vm.cc.html#L17'>EDI</a> (inc)&quot;</span><span class="Delimiter">);</span>
+<span id="L1040" class="LineNr">1040 </span>
+<span id="L1041" class="LineNr">1041 </span><span class="Delimiter">:(code)</span>
+<span id="L1042" class="LineNr">1042 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1042'>test_increment_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L1043" class="LineNr">1043 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>u = <span class="Constant">0x1f</span><span class="Delimiter">;</span>
+<span id="L1044" class="LineNr">1044 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L1045" class="LineNr">1045 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L1046" class="LineNr">1046 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L1047" class="LineNr">1047 </span>      <span class="Constant">&quot;  41                                           \n&quot;</span>  <span class="Comment">// increment ECX</span>
+<span id="L1048" class="LineNr">1048 </span>  <span class="Delimiter">);</span>
+<span id="L1049" class="LineNr">1049 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L1050" class="LineNr">1050 </span>      <span class="Constant">&quot;run: increment ECX\n&quot;</span>
+<span id="L1051" class="LineNr">1051 </span>      <span class="Constant">&quot;run: storing value 0x00000020\n&quot;</span>
+<span id="L1052" class="LineNr">1052 </span>  <span class="Delimiter">);</span>
+<span id="L1053" class="LineNr">1053 </span><span class="Delimiter">}</span>
+<span id="L1054" class="LineNr">1054 </span>
+<span id="L1055" class="LineNr">1055 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L1056" class="LineNr">1056 </span><span class="Normal">case</span> <span class="Constant">0x40</span>:
+<span id="L1057" class="LineNr">1057 </span><span class="Normal">case</span> <span class="Constant">0x41</span>:
+<span id="L1058" class="LineNr">1058 </span><span class="Normal">case</span> <span class="Constant">0x42</span>:
+<span id="L1059" class="LineNr">1059 </span><span class="Normal">case</span> <span class="Constant">0x43</span>:
+<span id="L1060" class="LineNr">1060 </span><span class="Normal">case</span> <span class="Constant">0x44</span>:
+<span id="L1061" class="LineNr">1061 </span><span class="Normal">case</span> <span class="Constant">0x45</span>:
+<span id="L1062" class="LineNr">1062 </span><span class="Normal">case</span> <span class="Constant">0x46</span>:
+<span id="L1063" class="LineNr">1063 </span><span class="Normal">case</span> <span class="Constant">0x47</span>: <span class="Delimiter">{</span>  <span class="Comment">// increment r32</span>
+<span id="L1064" class="LineNr">1064 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> <a href='010---vm.cc.html#L20'>reg</a> = op &amp; <span class="Constant">0x7</span><span class="Delimiter">;</span>
+<span id="L1065" class="LineNr">1065 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;increment &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span><a href='010---vm.cc.html#L20'>reg</a><span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1066" class="LineNr">1066 </span>  ++<span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u<span class="Delimiter">;</span>
+<span id="L1067" class="LineNr">1067 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing value 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1068" class="LineNr">1068 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L1069" class="LineNr">1069 </span><span class="Delimiter">}</span>
+<span id="L1070" class="LineNr">1070 </span>
+<span id="L1071" class="LineNr">1071 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L1072" class="LineNr">1072 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;ff&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;increment/decrement/jump/push/call rm32 based on subop (inc/dec/jmp/push/call)&quot;</span><span class="Delimiter">);</span>
+<span id="L1073" class="LineNr">1073 </span>
+<span id="L1074" class="LineNr">1074 </span><span class="Delimiter">:(code)</span>
+<span id="L1075" class="LineNr">1075 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1075'>test_increment_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L1076" class="LineNr">1076 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">0x20</span><span class="Delimiter">;</span>
+<span id="L1077" class="LineNr">1077 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L1078" class="LineNr">1078 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L1079" class="LineNr">1079 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L1080" class="LineNr">1080 </span>      <span class="Constant">&quot;  ff     c0                                    \n&quot;</span>  <span class="Comment">// increment EAX</span>
+<span id="L1081" class="LineNr">1081 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 000 (subop inc) 000 (EAX)</span>
+<span id="L1082" class="LineNr">1082 </span>  <span class="Delimiter">);</span>
+<span id="L1083" class="LineNr">1083 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L1084" class="LineNr">1084 </span>      <span class="Constant">&quot;run: increment r/m32\n&quot;</span>
+<span id="L1085" class="LineNr">1085 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L1086" class="LineNr">1086 </span>      <span class="Constant">&quot;run: storing value 0x00000021\n&quot;</span>
+<span id="L1087" class="LineNr">1087 </span>  <span class="Delimiter">);</span>
+<span id="L1088" class="LineNr">1088 </span><span class="Delimiter">}</span>
+<span id="L1089" class="LineNr">1089 </span>
+<span id="L1090" class="LineNr">1090 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L1091" class="LineNr">1091 </span><span class="Normal">case</span> <span class="Constant">0xff</span>: <span class="Delimiter">{</span>
+<span id="L1092" class="LineNr">1092 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L1093" class="LineNr">1093 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> subop = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>  <span class="Comment">// middle 3 'reg opcode' bits</span>
+<span id="L1094" class="LineNr">1094 </span>  <span class="Normal">switch</span> <span class="Delimiter">(</span>subop<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L1095" class="LineNr">1095 </span>    <span class="Normal">case</span> <span class="Constant">0</span>: <span class="Delimiter">{</span>  <span class="Comment">// increment r/m32</span>
+<span id="L1096" class="LineNr">1096 </span>      <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;increment r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1097" class="LineNr">1097 </span>      <span class="Normal">int32_t</span>* <a href='001help.cc.html#L15'>arg</a> = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L1098" class="LineNr">1098 </span>      ++*arg<span class="Delimiter">;</span>
+<span id="L1099" class="LineNr">1099 </span>      <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing value 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1100" class="LineNr">1100 </span>      <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L1101" class="LineNr">1101 </span>    <span class="Delimiter">}</span>
+<span id="L1102" class="LineNr">1102 </span>    <span class="Normal">default</span>:
+<span id="L1103" class="LineNr">1103 </span>      cerr &lt;&lt; <span class="Constant">&quot;unrecognized subop for ff: &quot;</span> &lt;&lt; <a href='010---vm.cc.html#L394'>HEXBYTE</a> &lt;&lt; <a href='010---vm.cc.html#L397'>NUM</a><span class="Delimiter">(</span>subop<span class="Delimiter">)</span> &lt;&lt; <span class="cSpecial">'\n'</span><span class="Delimiter">;</span>
+<span id="L1104" class="LineNr">1104 </span>      exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
+<span id="L1105" class="LineNr">1105 </span>    <span class="Comment">// End Op ff Subops</span>
+<span id="L1106" class="LineNr">1106 </span>  <span class="Delimiter">}</span>
+<span id="L1107" class="LineNr">1107 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L1108" class="LineNr">1108 </span><span class="Delimiter">}</span>
+<span id="L1109" class="LineNr">1109 </span>
+<span id="L1110" class="LineNr">1110 </span><span class="SalientComment">//:: decrement</span>
 <span id="L1111" class="LineNr">1111 </span>
-<span id="L1112" class="LineNr">1112 </span><span class="SalientComment">//:: decrement</span>
-<span id="L1113" class="LineNr">1113 </span>
-<span id="L1114" class="LineNr">1114 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L1115" class="LineNr">1115 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;48&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L10'>EAX</a> (dec)&quot;</span><span class="Delimiter">);</span>
-<span id="L1116" class="LineNr">1116 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;49&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L11'>ECX</a> (dec)&quot;</span><span class="Delimiter">);</span>
-<span id="L1117" class="LineNr">1117 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4a&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L12'>EDX</a> (dec)&quot;</span><span class="Delimiter">);</span>
-<span id="L1118" class="LineNr">1118 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4b&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L13'>EBX</a> (dec)&quot;</span><span class="Delimiter">);</span>
-<span id="L1119" class="LineNr">1119 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4c&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L14'>ESP</a> (dec)&quot;</span><span class="Delimiter">);</span>
-<span id="L1120" class="LineNr">1120 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4d&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L15'>EBP</a> (dec)&quot;</span><span class="Delimiter">);</span>
-<span id="L1121" class="LineNr">1121 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4e&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L16'>ESI</a> (dec)&quot;</span><span class="Delimiter">);</span>
-<span id="L1122" class="LineNr">1122 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4f&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L17'>EDI</a> (dec)&quot;</span><span class="Delimiter">);</span>
-<span id="L1123" class="LineNr">1123 </span>
-<span id="L1124" class="LineNr">1124 </span><span class="Delimiter">:(code)</span>
-<span id="L1125" class="LineNr">1125 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1125'>test_decrement_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L1126" class="LineNr">1126 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>u = <span class="Constant">0x1f</span><span class="Delimiter">;</span>
-<span id="L1127" class="LineNr">1127 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L1128" class="LineNr">1128 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L1129" class="LineNr">1129 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L1130" class="LineNr">1130 </span>      <span class="Constant">&quot;  49                                           \n&quot;</span>  <span class="Comment">// decrement ECX</span>
-<span id="L1131" class="LineNr">1131 </span>  <span class="Delimiter">);</span>
-<span id="L1132" class="LineNr">1132 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L1133" class="LineNr">1133 </span>      <span class="Constant">&quot;run: decrement ECX\n&quot;</span>
-<span id="L1134" class="LineNr">1134 </span>      <span class="Constant">&quot;run: storing value 0x0000001e\n&quot;</span>
-<span id="L1135" class="LineNr">1135 </span>  <span class="Delimiter">);</span>
-<span id="L1136" class="LineNr">1136 </span><span class="Delimiter">}</span>
-<span id="L1137" class="LineNr">1137 </span>
-<span id="L1138" class="LineNr">1138 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L1139" class="LineNr">1139 </span><span class="Normal">case</span> <span class="Constant">0x48</span>:
-<span id="L1140" class="LineNr">1140 </span><span class="Normal">case</span> <span class="Constant">0x49</span>:
-<span id="L1141" class="LineNr">1141 </span><span class="Normal">case</span> <span class="Constant">0x4a</span>:
-<span id="L1142" class="LineNr">1142 </span><span class="Normal">case</span> <span class="Constant">0x4b</span>:
-<span id="L1143" class="LineNr">1143 </span><span class="Normal">case</span> <span class="Constant">0x4c</span>:
-<span id="L1144" class="LineNr">1144 </span><span class="Normal">case</span> <span class="Constant">0x4d</span>:
-<span id="L1145" class="LineNr">1145 </span><span class="Normal">case</span> <span class="Constant">0x4e</span>:
-<span id="L1146" class="LineNr">1146 </span><span class="Normal">case</span> <span class="Constant">0x4f</span>: <span class="Delimiter">{</span>  <span class="Comment">// decrement r32</span>
-<span id="L1147" class="LineNr">1147 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> <a href='010---vm.cc.html#L20'>reg</a> = op &amp; <span class="Constant">0x7</span><span class="Delimiter">;</span>
-<span id="L1148" class="LineNr">1148 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;decrement &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span><a href='010---vm.cc.html#L20'>reg</a><span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1149" class="LineNr">1149 </span>  --<span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u<span class="Delimiter">;</span>
-<span id="L1150" class="LineNr">1150 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing value 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1151" class="LineNr">1151 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L1152" class="LineNr">1152 </span><span class="Delimiter">}</span>
-<span id="L1153" class="LineNr">1153 </span>
-<span id="L1154" class="LineNr">1154 </span><span class="Delimiter">:(code)</span>
-<span id="L1155" class="LineNr">1155 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1155'>test_decrement_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L1156" class="LineNr">1156 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">0x20</span><span class="Delimiter">;</span>
-<span id="L1157" class="LineNr">1157 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L1158" class="LineNr">1158 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L1159" class="LineNr">1159 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L1160" class="LineNr">1160 </span>      <span class="Constant">&quot;  ff     c8                                    \n&quot;</span>  <span class="Comment">// decrement EAX</span>
-<span id="L1161" class="LineNr">1161 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 001 (subop inc) 000 (EAX)</span>
-<span id="L1162" class="LineNr">1162 </span>  <span class="Delimiter">);</span>
-<span id="L1163" class="LineNr">1163 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L1164" class="LineNr">1164 </span>      <span class="Constant">&quot;run: decrement r/m32\n&quot;</span>
-<span id="L1165" class="LineNr">1165 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
-<span id="L1166" class="LineNr">1166 </span>      <span class="Constant">&quot;run: storing value 0x0000001f\n&quot;</span>
-<span id="L1167" class="LineNr">1167 </span>  <span class="Delimiter">);</span>
-<span id="L1168" class="LineNr">1168 </span><span class="Delimiter">}</span>
-<span id="L1169" class="LineNr">1169 </span>
-<span id="L1170" class="LineNr">1170 </span><span class="Delimiter">:(before &quot;End Op ff Subops&quot;)</span>
-<span id="L1171" class="LineNr">1171 </span><span class="Normal">case</span> <span class="Constant">1</span>: <span class="Delimiter">{</span>  <span class="Comment">// decrement r/m32</span>
-<span id="L1172" class="LineNr">1172 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;decrement r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1173" class="LineNr">1173 </span>  <span class="Normal">int32_t</span>* <a href='001help.cc.html#L15'>arg</a> = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
-<span id="L1174" class="LineNr">1174 </span>  --*arg<span class="Delimiter">;</span>
-<span id="L1175" class="LineNr">1175 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing value 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1176" class="LineNr">1176 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L1177" class="LineNr">1177 </span><span class="Delimiter">}</span>
+<span id="L1112" class="LineNr">1112 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L1113" class="LineNr">1113 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;48&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L10'>EAX</a> (dec)&quot;</span><span class="Delimiter">);</span>
+<span id="L1114" class="LineNr">1114 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;49&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L11'>ECX</a> (dec)&quot;</span><span class="Delimiter">);</span>
+<span id="L1115" class="LineNr">1115 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4a&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L12'>EDX</a> (dec)&quot;</span><span class="Delimiter">);</span>
+<span id="L1116" class="LineNr">1116 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4b&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L13'>EBX</a> (dec)&quot;</span><span class="Delimiter">);</span>
+<span id="L1117" class="LineNr">1117 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4c&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L14'>ESP</a> (dec)&quot;</span><span class="Delimiter">);</span>
+<span id="L1118" class="LineNr">1118 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4d&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L15'>EBP</a> (dec)&quot;</span><span class="Delimiter">);</span>
+<span id="L1119" class="LineNr">1119 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4e&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L16'>ESI</a> (dec)&quot;</span><span class="Delimiter">);</span>
+<span id="L1120" class="LineNr">1120 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;4f&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;decrement <a href='010---vm.cc.html#L17'>EDI</a> (dec)&quot;</span><span class="Delimiter">);</span>
+<span id="L1121" class="LineNr">1121 </span>
+<span id="L1122" class="LineNr">1122 </span><span class="Delimiter">:(code)</span>
+<span id="L1123" class="LineNr">1123 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1123'>test_decrement_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L1124" class="LineNr">1124 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ECX]<span class="Delimiter">.</span>u = <span class="Constant">0x1f</span><span class="Delimiter">;</span>
+<span id="L1125" class="LineNr">1125 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L1126" class="LineNr">1126 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L1127" class="LineNr">1127 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L1128" class="LineNr">1128 </span>      <span class="Constant">&quot;  49                                           \n&quot;</span>  <span class="Comment">// decrement ECX</span>
+<span id="L1129" class="LineNr">1129 </span>  <span class="Delimiter">);</span>
+<span id="L1130" class="LineNr">1130 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L1131" class="LineNr">1131 </span>      <span class="Constant">&quot;run: decrement ECX\n&quot;</span>
+<span id="L1132" class="LineNr">1132 </span>      <span class="Constant">&quot;run: storing value 0x0000001e\n&quot;</span>
+<span id="L1133" class="LineNr">1133 </span>  <span class="Delimiter">);</span>
+<span id="L1134" class="LineNr">1134 </span><span class="Delimiter">}</span>
+<span id="L1135" class="LineNr">1135 </span>
+<span id="L1136" class="LineNr">1136 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L1137" class="LineNr">1137 </span><span class="Normal">case</span> <span class="Constant">0x48</span>:
+<span id="L1138" class="LineNr">1138 </span><span class="Normal">case</span> <span class="Constant">0x49</span>:
+<span id="L1139" class="LineNr">1139 </span><span class="Normal">case</span> <span class="Constant">0x4a</span>:
+<span id="L1140" class="LineNr">1140 </span><span class="Normal">case</span> <span class="Constant">0x4b</span>:
+<span id="L1141" class="LineNr">1141 </span><span class="Normal">case</span> <span class="Constant">0x4c</span>:
+<span id="L1142" class="LineNr">1142 </span><span class="Normal">case</span> <span class="Constant">0x4d</span>:
+<span id="L1143" class="LineNr">1143 </span><span class="Normal">case</span> <span class="Constant">0x4e</span>:
+<span id="L1144" class="LineNr">1144 </span><span class="Normal">case</span> <span class="Constant">0x4f</span>: <span class="Delimiter">{</span>  <span class="Comment">// decrement r32</span>
+<span id="L1145" class="LineNr">1145 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> <a href='010---vm.cc.html#L20'>reg</a> = op &amp; <span class="Constant">0x7</span><span class="Delimiter">;</span>
+<span id="L1146" class="LineNr">1146 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;decrement &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span><a href='010---vm.cc.html#L20'>reg</a><span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1147" class="LineNr">1147 </span>  --<span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u<span class="Delimiter">;</span>
+<span id="L1148" class="LineNr">1148 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing value 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1149" class="LineNr">1149 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L1150" class="LineNr">1150 </span><span class="Delimiter">}</span>
+<span id="L1151" class="LineNr">1151 </span>
+<span id="L1152" class="LineNr">1152 </span><span class="Delimiter">:(code)</span>
+<span id="L1153" class="LineNr">1153 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1153'>test_decrement_rm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L1154" class="LineNr">1154 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">0x20</span><span class="Delimiter">;</span>
+<span id="L1155" class="LineNr">1155 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L1156" class="LineNr">1156 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L1157" class="LineNr">1157 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L1158" class="LineNr">1158 </span>      <span class="Constant">&quot;  ff     c8                                    \n&quot;</span>  <span class="Comment">// decrement EAX</span>
+<span id="L1159" class="LineNr">1159 </span>      <span class="Comment">// ModR/M in binary: 11 (direct mode) 001 (subop inc) 000 (EAX)</span>
+<span id="L1160" class="LineNr">1160 </span>  <span class="Delimiter">);</span>
+<span id="L1161" class="LineNr">1161 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L1162" class="LineNr">1162 </span>      <span class="Constant">&quot;run: decrement r/m32\n&quot;</span>
+<span id="L1163" class="LineNr">1163 </span>      <span class="Constant">&quot;run: r/m32 is EAX\n&quot;</span>
+<span id="L1164" class="LineNr">1164 </span>      <span class="Constant">&quot;run: storing value 0x0000001f\n&quot;</span>
+<span id="L1165" class="LineNr">1165 </span>  <span class="Delimiter">);</span>
+<span id="L1166" class="LineNr">1166 </span><span class="Delimiter">}</span>
+<span id="L1167" class="LineNr">1167 </span>
+<span id="L1168" class="LineNr">1168 </span><span class="Delimiter">:(before &quot;End Op ff Subops&quot;)</span>
+<span id="L1169" class="LineNr">1169 </span><span class="Normal">case</span> <span class="Constant">1</span>: <span class="Delimiter">{</span>  <span class="Comment">// decrement r/m32</span>
+<span id="L1170" class="LineNr">1170 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;decrement r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1171" class="LineNr">1171 </span>  <span class="Normal">int32_t</span>* <a href='001help.cc.html#L15'>arg</a> = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L1172" class="LineNr">1172 </span>  --*arg<span class="Delimiter">;</span>
+<span id="L1173" class="LineNr">1173 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing value 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; *arg &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1174" class="LineNr">1174 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L1175" class="LineNr">1175 </span><span class="Delimiter">}</span>
+<span id="L1176" class="LineNr">1176 </span>
+<span id="L1177" class="LineNr">1177 </span><span class="SalientComment">//:: push</span>
 <span id="L1178" class="LineNr">1178 </span>
-<span id="L1179" class="LineNr">1179 </span><span class="SalientComment">//:: push</span>
-<span id="L1180" class="LineNr">1180 </span>
-<span id="L1181" class="LineNr">1181 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L1182" class="LineNr">1182 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;50&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L10'>EAX</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1183" class="LineNr">1183 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;51&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L11'>ECX</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1184" class="LineNr">1184 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;52&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L12'>EDX</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1185" class="LineNr">1185 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;53&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L13'>EBX</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1186" class="LineNr">1186 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;54&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L14'>ESP</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1187" class="LineNr">1187 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;55&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L15'>EBP</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1188" class="LineNr">1188 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;56&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L16'>ESI</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1189" class="LineNr">1189 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;57&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L17'>EDI</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1190" class="LineNr">1190 </span>
-<span id="L1191" class="LineNr">1191 </span><span class="Delimiter">:(code)</span>
-<span id="L1192" class="LineNr">1192 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1192'>test_push_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L1193" class="LineNr">1193 </span>  <span class="Special"><a href='010---vm.cc.html#L154'>Mem</a></span><span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>vma<span class="Delimiter">(</span><span class="Constant">0xbd000000</span><span class="Delimiter">));</span>  <span class="Comment">// manually allocate memory</span>
-<span id="L1194" class="LineNr">1194 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u = <span class="Constant">0xbd000008</span><span class="Delimiter">;</span>
-<span id="L1195" class="LineNr">1195 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x0000000a</span><span class="Delimiter">;</span>
-<span id="L1196" class="LineNr">1196 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L1197" class="LineNr">1197 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L1198" class="LineNr">1198 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L1199" class="LineNr">1199 </span>      <span class="Constant">&quot;  53                                           \n&quot;</span>  <span class="Comment">// push EBX to stack</span>
-<span id="L1200" class="LineNr">1200 </span>  <span class="Delimiter">);</span>
-<span id="L1201" class="LineNr">1201 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L1202" class="LineNr">1202 </span>      <span class="Constant">&quot;run: <a href='012elf.cc.html#L94'>push</a> EBX\n&quot;</span>
-<span id="L1203" class="LineNr">1203 </span>      <span class="Constant">&quot;run: decrementing <a href='010---vm.cc.html#L14'>ESP</a> to 0xbd000004\n&quot;</span>
-<span id="L1204" class="LineNr">1204 </span>      <span class="Constant">&quot;run: pushing value 0x0000000a\n&quot;</span>
-<span id="L1205" class="LineNr">1205 </span>  <span class="Delimiter">);</span>
-<span id="L1206" class="LineNr">1206 </span><span class="Delimiter">}</span>
-<span id="L1207" class="LineNr">1207 </span>
-<span id="L1208" class="LineNr">1208 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L1209" class="LineNr">1209 </span><span class="Normal">case</span> <span class="Constant">0x50</span>:
-<span id="L1210" class="LineNr">1210 </span><span class="Normal">case</span> <span class="Constant">0x51</span>:
-<span id="L1211" class="LineNr">1211 </span><span class="Normal">case</span> <span class="Constant">0x52</span>:
-<span id="L1212" class="LineNr">1212 </span><span class="Normal">case</span> <span class="Constant">0x53</span>:
-<span id="L1213" class="LineNr">1213 </span><span class="Normal">case</span> <span class="Constant">0x54</span>:
-<span id="L1214" class="LineNr">1214 </span><span class="Normal">case</span> <span class="Constant">0x55</span>:
-<span id="L1215" class="LineNr">1215 </span><span class="Normal">case</span> <span class="Constant">0x56</span>:
-<span id="L1216" class="LineNr">1216 </span><span class="Normal">case</span> <span class="Constant">0x57</span>: <span class="Delimiter">{</span>  <span class="Comment">// push r32 to stack</span>
-<span id="L1217" class="LineNr">1217 </span>  <span class="Normal">uint8_t</span> <a href='010---vm.cc.html#L20'>reg</a> = op &amp; <span class="Constant">0x7</span><span class="Delimiter">;</span>
-<span id="L1218" class="LineNr">1218 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;push &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span><a href='010---vm.cc.html#L20'>reg</a><span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1219" class="LineNr">1219 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;push: &quot; &lt;&lt; NUM(reg) &lt;&lt; &quot;: &quot; &lt;&lt; Reg[reg].u &lt;&lt; &quot; =&gt; &quot; &lt;&lt; Reg[ESP].u &lt;&lt; '\n';</span>
-<span id="L1220" class="LineNr">1220 </span>  <a href='012elf.cc.html#L94'>push</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u<span class="Delimiter">);</span>
-<span id="L1221" class="LineNr">1221 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L1222" class="LineNr">1222 </span><span class="Delimiter">}</span>
+<span id="L1179" class="LineNr">1179 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L1180" class="LineNr">1180 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;50&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L10'>EAX</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1181" class="LineNr">1181 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;51&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L11'>ECX</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1182" class="LineNr">1182 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;52&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L12'>EDX</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1183" class="LineNr">1183 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;53&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L13'>EBX</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1184" class="LineNr">1184 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;54&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L14'>ESP</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1185" class="LineNr">1185 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;55&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L15'>EBP</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1186" class="LineNr">1186 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;56&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L16'>ESI</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1187" class="LineNr">1187 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;57&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;push <a href='010---vm.cc.html#L17'>EDI</a> to stack (<a href='012elf.cc.html#L94'>push</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1188" class="LineNr">1188 </span>
+<span id="L1189" class="LineNr">1189 </span><span class="Delimiter">:(code)</span>
+<span id="L1190" class="LineNr">1190 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1190'>test_push_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L1191" class="LineNr">1191 </span>  <span class="Special"><a href='010---vm.cc.html#L154'>Mem</a></span><span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>vma<span class="Delimiter">(</span><span class="Constant">0xbd000000</span><span class="Delimiter">));</span>  <span class="Comment">// manually allocate memory</span>
+<span id="L1192" class="LineNr">1192 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u = <span class="Constant">0xbd000008</span><span class="Delimiter">;</span>
+<span id="L1193" class="LineNr">1193 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">0x0000000a</span><span class="Delimiter">;</span>
+<span id="L1194" class="LineNr">1194 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L1195" class="LineNr">1195 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L1196" class="LineNr">1196 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L1197" class="LineNr">1197 </span>      <span class="Constant">&quot;  53                                           \n&quot;</span>  <span class="Comment">// push EBX to stack</span>
+<span id="L1198" class="LineNr">1198 </span>  <span class="Delimiter">);</span>
+<span id="L1199" class="LineNr">1199 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L1200" class="LineNr">1200 </span>      <span class="Constant">&quot;run: <a href='012elf.cc.html#L94'>push</a> EBX\n&quot;</span>
+<span id="L1201" class="LineNr">1201 </span>      <span class="Constant">&quot;run: decrementing <a href='010---vm.cc.html#L14'>ESP</a> to 0xbd000004\n&quot;</span>
+<span id="L1202" class="LineNr">1202 </span>      <span class="Constant">&quot;run: pushing value 0x0000000a\n&quot;</span>
+<span id="L1203" class="LineNr">1203 </span>  <span class="Delimiter">);</span>
+<span id="L1204" class="LineNr">1204 </span><span class="Delimiter">}</span>
+<span id="L1205" class="LineNr">1205 </span>
+<span id="L1206" class="LineNr">1206 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L1207" class="LineNr">1207 </span><span class="Normal">case</span> <span class="Constant">0x50</span>:
+<span id="L1208" class="LineNr">1208 </span><span class="Normal">case</span> <span class="Constant">0x51</span>:
+<span id="L1209" class="LineNr">1209 </span><span class="Normal">case</span> <span class="Constant">0x52</span>:
+<span id="L1210" class="LineNr">1210 </span><span class="Normal">case</span> <span class="Constant">0x53</span>:
+<span id="L1211" class="LineNr">1211 </span><span class="Normal">case</span> <span class="Constant">0x54</span>:
+<span id="L1212" class="LineNr">1212 </span><span class="Normal">case</span> <span class="Constant">0x55</span>:
+<span id="L1213" class="LineNr">1213 </span><span class="Normal">case</span> <span class="Constant">0x56</span>:
+<span id="L1214" class="LineNr">1214 </span><span class="Normal">case</span> <span class="Constant">0x57</span>: <span class="Delimiter">{</span>  <span class="Comment">// push r32 to stack</span>
+<span id="L1215" class="LineNr">1215 </span>  <span class="Normal">uint8_t</span> <a href='010---vm.cc.html#L20'>reg</a> = op &amp; <span class="Constant">0x7</span><span class="Delimiter">;</span>
+<span id="L1216" class="LineNr">1216 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;push &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span><a href='010---vm.cc.html#L20'>reg</a><span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1217" class="LineNr">1217 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;push: &quot; &lt;&lt; NUM(reg) &lt;&lt; &quot;: &quot; &lt;&lt; Reg[reg].u &lt;&lt; &quot; =&gt; &quot; &lt;&lt; Reg[ESP].u &lt;&lt; '\n';</span>
+<span id="L1218" class="LineNr">1218 </span>  <a href='012elf.cc.html#L94'>push</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u<span class="Delimiter">);</span>
+<span id="L1219" class="LineNr">1219 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L1220" class="LineNr">1220 </span><span class="Delimiter">}</span>
+<span id="L1221" class="LineNr">1221 </span>
+<span id="L1222" class="LineNr">1222 </span><span class="SalientComment">//:: pop</span>
 <span id="L1223" class="LineNr">1223 </span>
-<span id="L1224" class="LineNr">1224 </span><span class="SalientComment">//:: pop</span>
-<span id="L1225" class="LineNr">1225 </span>
-<span id="L1226" class="LineNr">1226 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L1227" class="LineNr">1227 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;58&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L10'>EAX</a> (<a href='013direct_addressing.cc.html#L1272'>pop</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1228" class="LineNr">1228 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;59&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L11'>ECX</a> (<a href='013direct_addressing.cc.html#L1272'>pop</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1229" class="LineNr">1229 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5a&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L12'>EDX</a> (<a href='013direct_addressing.cc.html#L1272'>pop</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1230" class="LineNr">1230 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5b&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L13'>EBX</a> (<a href='013direct_addressing.cc.html#L1272'>pop</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1231" class="LineNr">1231 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5c&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L14'>ESP</a> (<a href='013direct_addressing.cc.html#L1272'>pop</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1232" class="LineNr">1232 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5d&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L15'>EBP</a> (<a href='013direct_addressing.cc.html#L1272'>pop</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1233" class="LineNr">1233 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5e&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L16'>ESI</a> (<a href='013direct_addressing.cc.html#L1272'>pop</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1234" class="LineNr">1234 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5f&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L17'>EDI</a> (<a href='013direct_addressing.cc.html#L1272'>pop</a>)&quot;</span><span class="Delimiter">);</span>
-<span id="L1235" class="LineNr">1235 </span>
-<span id="L1236" class="LineNr">1236 </span><span class="Delimiter">:(code)</span>
-<span id="L1237" class="LineNr">1237 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1237'>test_pop_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L1238" class="LineNr">1238 </span>  <span class="Special"><a href='010---vm.cc.html#L154'>Mem</a></span><span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>vma<span class="Delimiter">(</span><span class="Constant">0xbd000000</span><span class="Delimiter">));</span>  <span class="Comment">// manually allocate memory</span>
-<span id="L1239" class="LineNr">1239 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u = <span class="Constant">0xbd000008</span><span class="Delimiter">;</span>
-<span id="L1240" class="LineNr">1240 </span>  <a href='010---vm.cc.html#L243'>write_mem_i32</a><span class="Delimiter">(</span><span class="Constant">0xbd000008</span><span class="Delimiter">,</span> <span class="Constant">0x0000000a</span><span class="Delimiter">);</span>  <span class="Comment">// ..before this write</span>
-<span id="L1241" class="LineNr">1241 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L1242" class="LineNr">1242 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
-<span id="L1243" class="LineNr">1243 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
-<span id="L1244" class="LineNr">1244 </span>      <span class="Constant">&quot;  5b                                           \n&quot;</span>  <span class="Comment">// pop stack to EBX</span>
-<span id="L1245" class="LineNr">1245 </span>      <span class="Constant">&quot;== data 0x2000\n&quot;</span>  <span class="Comment">// data segment</span>
-<span id="L1246" class="LineNr">1246 </span>      <span class="Constant">&quot;0a 00 00 00\n&quot;</span>  <span class="Comment">// 0x0000000a</span>
-<span id="L1247" class="LineNr">1247 </span>  <span class="Delimiter">);</span>
-<span id="L1248" class="LineNr">1248 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L1249" class="LineNr">1249 </span>      <span class="Constant">&quot;run: <a href='013direct_addressing.cc.html#L1272'>pop</a> into EBX\n&quot;</span>
-<span id="L1250" class="LineNr">1250 </span>      <span class="Constant">&quot;run: popping value 0x0000000a\n&quot;</span>
-<span id="L1251" class="LineNr">1251 </span>      <span class="Constant">&quot;run: incrementing <a href='010---vm.cc.html#L14'>ESP</a> to 0xbd00000c\n&quot;</span>
-<span id="L1252" class="LineNr">1252 </span>  <span class="Delimiter">);</span>
-<span id="L1253" class="LineNr">1253 </span><span class="Delimiter">}</span>
-<span id="L1254" class="LineNr">1254 </span>
-<span id="L1255" class="LineNr">1255 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L1256" class="LineNr">1256 </span><span class="Normal">case</span> <span class="Constant">0x58</span>:
-<span id="L1257" class="LineNr">1257 </span><span class="Normal">case</span> <span class="Constant">0x59</span>:
-<span id="L1258" class="LineNr">1258 </span><span class="Normal">case</span> <span class="Constant">0x5a</span>:
-<span id="L1259" class="LineNr">1259 </span><span class="Normal">case</span> <span class="Constant">0x5b</span>:
-<span id="L1260" class="LineNr">1260 </span><span class="Normal">case</span> <span class="Constant">0x5c</span>:
-<span id="L1261" class="LineNr">1261 </span><span class="Normal">case</span> <span class="Constant">0x5d</span>:
-<span id="L1262" class="LineNr">1262 </span><span class="Normal">case</span> <span class="Constant">0x5e</span>:
-<span id="L1263" class="LineNr">1263 </span><span class="Normal">case</span> <span class="Constant">0x5f</span>: <span class="Delimiter">{</span>  <span class="Comment">// pop stack into r32</span>
-<span id="L1264" class="LineNr">1264 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> <a href='010---vm.cc.html#L20'>reg</a> = op &amp; <span class="Constant">0x7</span><span class="Delimiter">;</span>
-<span id="L1265" class="LineNr">1265 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;pop into &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span><a href='010---vm.cc.html#L20'>reg</a><span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1266" class="LineNr">1266 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;pop from &quot; &lt;&lt; Reg[ESP].u &lt;&lt; '\n';</span>
-<span id="L1267" class="LineNr">1267 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u = <a href='013direct_addressing.cc.html#L1272'>pop</a><span class="Delimiter">();</span>
-<span id="L1268" class="LineNr">1268 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;=&gt; &quot; &lt;&lt; NUM(reg) &lt;&lt; &quot;: &quot; &lt;&lt; Reg[reg].u &lt;&lt; '\n';</span>
-<span id="L1269" class="LineNr">1269 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L1270" class="LineNr">1270 </span><span class="Delimiter">}</span>
-<span id="L1271" class="LineNr">1271 </span><span class="Delimiter">:(code)</span>
-<span id="L1272" class="LineNr">1272 </span><span class="Normal">uint32_t</span> <a href='013direct_addressing.cc.html#L1272'>pop</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L1273" class="LineNr">1273 </span>  <span class="Normal">const</span> <span class="Normal">uint32_t</span> result = <a href='010---vm.cc.html#L172'>read_mem_u32</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u<span class="Delimiter">);</span>
-<span id="L1274" class="LineNr">1274 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;popping value 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; result &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1275" class="LineNr">1275 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u += <span class="Constant">4</span><span class="Delimiter">;</span>
-<span id="L1276" class="LineNr">1276 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;incrementing <a href='010---vm.cc.html#L14'>ESP</a> to 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L1277" class="LineNr">1277 </span>  assert<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u &lt; <a href='012elf.cc.html#L153'>AFTER_STACK</a><span class="Delimiter">);</span>
-<span id="L1278" class="LineNr">1278 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
-<span id="L1279" class="LineNr">1279 </span><span class="Delimiter">}</span>
+<span id="L1224" class="LineNr">1224 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L1225" class="LineNr">1225 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;58&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L10'>EAX</a> (<a href='013direct_addressing.cc.html#L1270'>pop</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1226" class="LineNr">1226 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;59&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L11'>ECX</a> (<a href='013direct_addressing.cc.html#L1270'>pop</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1227" class="LineNr">1227 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5a&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L12'>EDX</a> (<a href='013direct_addressing.cc.html#L1270'>pop</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1228" class="LineNr">1228 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5b&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L13'>EBX</a> (<a href='013direct_addressing.cc.html#L1270'>pop</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1229" class="LineNr">1229 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5c&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L14'>ESP</a> (<a href='013direct_addressing.cc.html#L1270'>pop</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1230" class="LineNr">1230 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5d&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L15'>EBP</a> (<a href='013direct_addressing.cc.html#L1270'>pop</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1231" class="LineNr">1231 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5e&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L16'>ESI</a> (<a href='013direct_addressing.cc.html#L1270'>pop</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1232" class="LineNr">1232 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;5f&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to <a href='010---vm.cc.html#L17'>EDI</a> (<a href='013direct_addressing.cc.html#L1270'>pop</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L1233" class="LineNr">1233 </span>
+<span id="L1234" class="LineNr">1234 </span><span class="Delimiter">:(code)</span>
+<span id="L1235" class="LineNr">1235 </span><span class="Normal">void</span> <a href='013direct_addressing.cc.html#L1235'>test_pop_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L1236" class="LineNr">1236 </span>  <span class="Special"><a href='010---vm.cc.html#L154'>Mem</a></span><span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>vma<span class="Delimiter">(</span><span class="Constant">0xbd000000</span><span class="Delimiter">));</span>  <span class="Comment">// manually allocate memory</span>
+<span id="L1237" class="LineNr">1237 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u = <span class="Constant">0xbd000008</span><span class="Delimiter">;</span>
+<span id="L1238" class="LineNr">1238 </span>  <a href='010---vm.cc.html#L243'>write_mem_i32</a><span class="Delimiter">(</span><span class="Constant">0xbd000008</span><span class="Delimiter">,</span> <span class="Constant">0x0000000a</span><span class="Delimiter">);</span>  <span class="Comment">// ..before this write</span>
+<span id="L1239" class="LineNr">1239 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L1240" class="LineNr">1240 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>  <span class="Comment">// code segment</span>
+<span id="L1241" class="LineNr">1241 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L1242" class="LineNr">1242 </span>      <span class="Constant">&quot;  5b                                           \n&quot;</span>  <span class="Comment">// pop stack to EBX</span>
+<span id="L1243" class="LineNr">1243 </span>      <span class="Constant">&quot;== data 0x2000\n&quot;</span>  <span class="Comment">// data segment</span>
+<span id="L1244" class="LineNr">1244 </span>      <span class="Constant">&quot;0a 00 00 00\n&quot;</span>  <span class="Comment">// 0x0000000a</span>
+<span id="L1245" class="LineNr">1245 </span>  <span class="Delimiter">);</span>
+<span id="L1246" class="LineNr">1246 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L1247" class="LineNr">1247 </span>      <span class="Constant">&quot;run: <a href='013direct_addressing.cc.html#L1270'>pop</a> into EBX\n&quot;</span>
+<span id="L1248" class="LineNr">1248 </span>      <span class="Constant">&quot;run: popping value 0x0000000a\n&quot;</span>
+<span id="L1249" class="LineNr">1249 </span>      <span class="Constant">&quot;run: incrementing <a href='010---vm.cc.html#L14'>ESP</a> to 0xbd00000c\n&quot;</span>
+<span id="L1250" class="LineNr">1250 </span>  <span class="Delimiter">);</span>
+<span id="L1251" class="LineNr">1251 </span><span class="Delimiter">}</span>
+<span id="L1252" class="LineNr">1252 </span>
+<span id="L1253" class="LineNr">1253 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L1254" class="LineNr">1254 </span><span class="Normal">case</span> <span class="Constant">0x58</span>:
+<span id="L1255" class="LineNr">1255 </span><span class="Normal">case</span> <span class="Constant">0x59</span>:
+<span id="L1256" class="LineNr">1256 </span><span class="Normal">case</span> <span class="Constant">0x5a</span>:
+<span id="L1257" class="LineNr">1257 </span><span class="Normal">case</span> <span class="Constant">0x5b</span>:
+<span id="L1258" class="LineNr">1258 </span><span class="Normal">case</span> <span class="Constant">0x5c</span>:
+<span id="L1259" class="LineNr">1259 </span><span class="Normal">case</span> <span class="Constant">0x5d</span>:
+<span id="L1260" class="LineNr">1260 </span><span class="Normal">case</span> <span class="Constant">0x5e</span>:
+<span id="L1261" class="LineNr">1261 </span><span class="Normal">case</span> <span class="Constant">0x5f</span>: <span class="Delimiter">{</span>  <span class="Comment">// pop stack into r32</span>
+<span id="L1262" class="LineNr">1262 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> <a href='010---vm.cc.html#L20'>reg</a> = op &amp; <span class="Constant">0x7</span><span class="Delimiter">;</span>
+<span id="L1263" class="LineNr">1263 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;pop into &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span><a href='010---vm.cc.html#L20'>reg</a><span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1264" class="LineNr">1264 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;pop from &quot; &lt;&lt; Reg[ESP].u &lt;&lt; '\n';</span>
+<span id="L1265" class="LineNr">1265 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[reg]<span class="Delimiter">.</span>u = <a href='013direct_addressing.cc.html#L1270'>pop</a><span class="Delimiter">();</span>
+<span id="L1266" class="LineNr">1266 </span><span class="CommentedCode">//?   cerr &lt;&lt; &quot;=&gt; &quot; &lt;&lt; NUM(reg) &lt;&lt; &quot;: &quot; &lt;&lt; Reg[reg].u &lt;&lt; '\n';</span>
+<span id="L1267" class="LineNr">1267 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L1268" class="LineNr">1268 </span><span class="Delimiter">}</span>
+<span id="L1269" class="LineNr">1269 </span><span class="Delimiter">:(code)</span>
+<span id="L1270" class="LineNr">1270 </span><span class="Normal">uint32_t</span> <a href='013direct_addressing.cc.html#L1270'>pop</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L1271" class="LineNr">1271 </span>  <span class="Normal">const</span> <span class="Normal">uint32_t</span> result = <a href='010---vm.cc.html#L172'>read_mem_u32</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u<span class="Delimiter">);</span>
+<span id="L1272" class="LineNr">1272 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;popping value 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; result &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1273" class="LineNr">1273 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u += <span class="Constant">4</span><span class="Delimiter">;</span>
+<span id="L1274" class="LineNr">1274 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;incrementing <a href='010---vm.cc.html#L14'>ESP</a> to 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1275" class="LineNr">1275 </span>  assert<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u &lt; <a href='012elf.cc.html#L153'>AFTER_STACK</a><span class="Delimiter">);</span>
+<span id="L1276" class="LineNr">1276 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
+<span id="L1277" class="LineNr">1277 </span><span class="Delimiter">}</span>
 </pre>
 </body>
 </html>
diff --git a/html/014indirect_addressing.cc.html b/html/014indirect_addressing.cc.html
index bac9cae6..aa64574f 100644
--- a/html/014indirect_addressing.cc.html
+++ b/html/014indirect_addressing.cc.html
@@ -847,7 +847,7 @@ if ('onhashchange' in window) {
 <span id="L788" class="LineNr"> 788 </span><span class="SalientComment">//:: pop</span>
 <span id="L789" class="LineNr"> 789 </span>
 <span id="L790" class="LineNr"> 790 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
-<span id="L791" class="LineNr"> 791 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;8f&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to rm32 (<a href='013direct_addressing.cc.html#L1272'>pop</a>)&quot;</span><span class="Delimiter">);</span>
+<span id="L791" class="LineNr"> 791 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;8f&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;pop top of stack to rm32 (<a href='013direct_addressing.cc.html#L1270'>pop</a>)&quot;</span><span class="Delimiter">);</span>
 <span id="L792" class="LineNr"> 792 </span>
 <span id="L793" class="LineNr"> 793 </span><span class="Delimiter">:(code)</span>
 <span id="L794" class="LineNr"> 794 </span><span class="Normal">void</span> <a href='014indirect_addressing.cc.html#L794'>test_pop_mem_at_r32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
@@ -862,7 +862,7 @@ if ('onhashchange' in window) {
 <span id="L803" class="LineNr"> 803 </span>      <span class="Comment">// ModR/M in binary: 00 (indirect mode) 000 (pop r/m32) 000 (dest EAX)</span>
 <span id="L804" class="LineNr"> 804 </span>  <span class="Delimiter">);</span>
 <span id="L805" class="LineNr"> 805 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L806" class="LineNr"> 806 </span>      <span class="Constant">&quot;run: <a href='013direct_addressing.cc.html#L1272'>pop</a> into r/m32\n&quot;</span>
+<span id="L806" class="LineNr"> 806 </span>      <span class="Constant">&quot;run: <a href='013direct_addressing.cc.html#L1270'>pop</a> into r/m32\n&quot;</span>
 <span id="L807" class="LineNr"> 807 </span>      <span class="Constant">&quot;run: effective address is 0x00000060 (<a href='010---vm.cc.html#L10'>EAX</a>)\n&quot;</span>
 <span id="L808" class="LineNr"> 808 </span>      <span class="Constant">&quot;run: popping value 0x00000030\n&quot;</span>
 <span id="L809" class="LineNr"> 809 </span>      <span class="Constant">&quot;run: incrementing <a href='010---vm.cc.html#L14'>ESP</a> to 0xbd000004\n&quot;</span>
@@ -877,7 +877,7 @@ if ('onhashchange' in window) {
 <span id="L818" class="LineNr"> 818 </span>    <span class="Normal">case</span> <span class="Constant">0</span>: <span class="Delimiter">{</span>
 <span id="L819" class="LineNr"> 819 </span>      <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;pop into r/m32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L820" class="LineNr"> 820 </span>      <span class="Normal">int32_t</span>* dest = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
-<span id="L821" class="LineNr"> 821 </span>      *dest = <a href='013direct_addressing.cc.html#L1272'>pop</a><span class="Delimiter">();</span>  <span class="Comment">// Write multiple elements of vector&lt;uint8_t&gt; at once. Assumes sizeof(int) == 4 on the host as well.</span>
+<span id="L821" class="LineNr"> 821 </span>      *dest = <a href='013direct_addressing.cc.html#L1270'>pop</a><span class="Delimiter">();</span>  <span class="Comment">// Write multiple elements of vector&lt;uint8_t&gt; at once. Assumes sizeof(int) == 4 on the host as well.</span>
 <span id="L822" class="LineNr"> 822 </span>      <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L823" class="LineNr"> 823 </span>    <span class="Delimiter">}</span>
 <span id="L824" class="LineNr"> 824 </span>  <span class="Delimiter">}</span>
diff --git a/html/015immediate_addressing.cc.html b/html/015immediate_addressing.cc.html
index 34f08f0c..0ca822f8 100644
--- a/html/015immediate_addressing.cc.html
+++ b/html/015immediate_addressing.cc.html
@@ -1331,6 +1331,45 @@ if ('onhashchange' in window) {
 <span id="L1270" class="LineNr">1270 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;contents at <a href='010---vm.cc.html#L14'>ESP</a>: 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <a href='010---vm.cc.html#L172'>read_mem_u32</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[ESP]<span class="Delimiter">.</span>u<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L1271" class="LineNr">1271 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L1272" class="LineNr">1272 </span><span class="Delimiter">}</span>
+<span id="L1273" class="LineNr">1273 </span>
+<span id="L1274" class="LineNr">1274 </span><span class="SalientComment">//:: multiply</span>
+<span id="L1275" class="LineNr">1275 </span>
+<span id="L1276" class="LineNr">1276 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L1277" class="LineNr">1277 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;69&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;multiply rm32 by imm32 and store result in r32&quot;</span><span class="Delimiter">);</span>
+<span id="L1278" class="LineNr">1278 </span>
+<span id="L1279" class="LineNr">1279 </span><span class="Delimiter">:(code)</span>
+<span id="L1280" class="LineNr">1280 </span><span class="Normal">void</span> <a href='015immediate_addressing.cc.html#L1280'>test_multiply_imm32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L1281" class="LineNr">1281 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>i = <span class="Constant">2</span><span class="Delimiter">;</span>
+<span id="L1282" class="LineNr">1282 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EBX]<span class="Delimiter">.</span>i = <span class="Constant">3</span><span class="Delimiter">;</span>
+<span id="L1283" class="LineNr">1283 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L1284" class="LineNr">1284 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L1285" class="LineNr">1285 </span>      <span class="Comment">// op     ModR/M  SIB   displacement  immediate</span>
+<span id="L1286" class="LineNr">1286 </span>      <span class="Constant">&quot;  69     c3                          04 00 00 00 \n&quot;</span>  <span class="Comment">// EAX = EBX * 4</span>
+<span id="L1287" class="LineNr">1287 </span>      <span class="Comment">// ModR/M in binary: 11 (direct) 000 (dest EAX) 011 (src EBX)</span>
+<span id="L1288" class="LineNr">1288 </span>  <span class="Delimiter">);</span>
+<span id="L1289" class="LineNr">1289 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L1290" class="LineNr">1290 </span>      <span class="Constant">&quot;run: multiply r/m32 by 0x00000004 and store result in EAX\n&quot;</span>
+<span id="L1291" class="LineNr">1291 </span>      <span class="Constant">&quot;run: r/m32 is EBX\n&quot;</span>
+<span id="L1292" class="LineNr">1292 </span>      <span class="Constant">&quot;run: storing 0x0000000c\n&quot;</span>
+<span id="L1293" class="LineNr">1293 </span>  <span class="Delimiter">);</span>
+<span id="L1294" class="LineNr">1294 </span><span class="Delimiter">}</span>
+<span id="L1295" class="LineNr">1295 </span>
+<span id="L1296" class="LineNr">1296 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
+<span id="L1297" class="LineNr">1297 </span><span class="Normal">case</span> <span class="Constant">0x69</span>: <span class="Delimiter">{</span>
+<span id="L1298" class="LineNr">1298 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L1299" class="LineNr">1299 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> rdest = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
+<span id="L1300" class="LineNr">1300 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> val = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
+<span id="L1301" class="LineNr">1301 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;multiply r/m32 by 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; val &lt;&lt; <span class="Constant">&quot; and store result in &quot;</span> &lt;&lt; <a href='013direct_addressing.cc.html#L136'>rname</a><span class="Delimiter">(</span>rdest<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1302" class="LineNr">1302 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span>* signed_arg1 = <a href='013direct_addressing.cc.html#L101'>effective_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L1303" class="LineNr">1303 </span>  <span class="Normal">int32_t</span> result = *signed_arg1 * val<span class="Delimiter">;</span>
+<span id="L1304" class="LineNr">1304 </span>  <span class="Normal">int64_t</span> full_result = <span class="Normal">static_cast</span>&lt;<span class="Normal">int64_t</span>&gt;<span class="Delimiter">(</span>*signed_arg1<span class="Delimiter">)</span> * val<span class="Delimiter">;</span>
+<span id="L1305" class="LineNr">1305 </span>  <a href='010---vm.cc.html#L82'>OF</a> = <span class="Delimiter">(</span>result != full_result<span class="Delimiter">);</span>
+<span id="L1306" class="LineNr">1306 </span>  <a href='010---vm.cc.html#L81'>CF</a> = <a href='010---vm.cc.html#L82'>OF</a><span class="Delimiter">;</span>
+<span id="L1307" class="LineNr">1307 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;SF=&quot;</span> &lt;&lt; SF &lt;&lt; <span class="Constant">&quot;; ZF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L80'>ZF</a> &lt;&lt; <span class="Constant">&quot;; CF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L81'>CF</a> &lt;&lt; <span class="Constant">&quot;; OF=&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L82'>OF</a> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1308" class="LineNr">1308 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[rdest]<span class="Delimiter">.</span>i = result<span class="Delimiter">;</span>
+<span id="L1309" class="LineNr">1309 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[rdest]<span class="Delimiter">.</span>i &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L1310" class="LineNr">1310 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L1311" class="LineNr">1311 </span><span class="Delimiter">}</span>
 </pre>
 </body>
 </html>
diff --git a/html/017jump_disp8.cc.html b/html/017jump_disp8.cc.html
index 39c3acc3..0db5d9e1 100644
--- a/html/017jump_disp8.cc.html
+++ b/html/017jump_disp8.cc.html
@@ -164,7 +164,7 @@ if ('onhashchange' in window) {
 <span id="L105" class="LineNr">105 </span><span class="Delimiter">}</span>
 <span id="L106" class="LineNr">106 </span>
 <span id="L107" class="LineNr">107 </span><span class="Delimiter">:(before &quot;End Single-Byte Opcodes&quot;)</span>
-<span id="L108" class="LineNr">108 </span><span class="Normal">case</span> <span class="Constant">0x75</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp8 unless ZF</span>
+<span id="L108" class="LineNr">108 </span><span class="Normal">case</span> <span class="Constant">0x75</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp8 if !ZF</span>
 <span id="L109" class="LineNr">109 </span>  <span class="Normal">const</span> <span class="Normal">int8_t</span> offset = <span class="Normal">static_cast</span>&lt;<span class="Normal">int</span>&gt;<span class="Delimiter">(</span><a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">());</span>
 <span id="L110" class="LineNr">110 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!ZF<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L111" class="LineNr">111 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; <a href='010---vm.cc.html#L397'>NUM</a><span class="Delimiter">(</span>offset<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
diff --git a/html/018jump_disp32.cc.html b/html/018jump_disp32.cc.html
index fe7ef115..bbf6d7ca 100644
--- a/html/018jump_disp32.cc.html
+++ b/html/018jump_disp32.cc.html
@@ -164,7 +164,7 @@ if ('onhashchange' in window) {
 <span id="L105" class="LineNr">105 </span><span class="Delimiter">}</span>
 <span id="L106" class="LineNr">106 </span>
 <span id="L107" class="LineNr">107 </span><span class="Delimiter">:(before &quot;End Two-Byte Opcodes Starting With 0f&quot;)</span>
-<span id="L108" class="LineNr">108 </span><span class="Normal">case</span> <span class="Constant">0x85</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 unless ZF</span>
+<span id="L108" class="LineNr">108 </span><span class="Normal">case</span> <span class="Constant">0x85</span>: <span class="Delimiter">{</span>  <span class="Comment">// jump disp32 if !ZF</span>
 <span id="L109" class="LineNr">109 </span>  <span class="Normal">const</span> <span class="Normal">int32_t</span> offset = <a href='011run.cc.html#L433'>next32</a><span class="Delimiter">();</span>
 <span id="L110" class="LineNr">110 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!ZF<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L111" class="LineNr">111 </span>    <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jump &quot;</span> &lt;&lt; offset &lt;&lt; end<span class="Delimiter">();</span>
diff --git a/html/019functions.cc.html b/html/019functions.cc.html
index bcb16130..1a0e9ad9 100644
--- a/html/019functions.cc.html
+++ b/html/019functions.cc.html
@@ -176,7 +176,7 @@ if ('onhashchange' in window) {
 <span id="L116" class="LineNr">116 </span><span class="Normal">case</span> <span class="Constant">0xc3</span>: <span class="Delimiter">{</span>  <span class="Comment">// return from a call</span>
 <span id="L117" class="LineNr">117 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;return&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L118" class="LineNr">118 </span>  --<span class="Special">Callstack_depth</span><span class="Delimiter">;</span>
-<span id="L119" class="LineNr">119 </span>  <a href='010---vm.cc.html#L26'>EIP</a> = <a href='013direct_addressing.cc.html#L1272'>pop</a><span class="Delimiter">();</span>
+<span id="L119" class="LineNr">119 </span>  <a href='010---vm.cc.html#L26'>EIP</a> = <a href='013direct_addressing.cc.html#L1270'>pop</a><span class="Delimiter">();</span>
 <span id="L120" class="LineNr">120 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;jumping to 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L395'>HEXWORD</a> &lt;&lt; <a href='010---vm.cc.html#L26'>EIP</a> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L121" class="LineNr">121 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L122" class="LineNr">122 </span><span class="Delimiter">}</span>
diff --git a/html/021byte_addressing.cc.html b/html/021byte_addressing.cc.html
index 86eac77e..662dac1d 100644
--- a/html/021byte_addressing.cc.html
+++ b/html/021byte_addressing.cc.html
@@ -21,6 +21,7 @@ a { color:inherit; }
 .Special { color: #d70000; }
 .Identifier { color: #af5f00; }
 .Normal { color: #000000; background-color: #c6c6c6; padding-bottom: 1px; }
+.SalientComment { color: #0000af; }
 .cSpecial { color: #008000; }
 -->
 </style>
@@ -125,7 +126,7 @@ if ('onhashchange' in window) {
 <span id="L66" class="LineNr"> 66 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> rsrc = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
 <span id="L67" class="LineNr"> 67 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;copy &quot;</span> &lt;&lt; <a href='021byte_addressing.cc.html#L7'>rname_8bit</a><span class="Delimiter">(</span>rsrc<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; to r8/m8-at-r32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L68" class="LineNr"> 68 </span>  <span class="Comment">// use unsigned to zero-extend 8-bit value to 32 bits</span>
-<span id="L69" class="LineNr"> 69 </span>  <span class="Normal">uint8_t</span>* dest = <span class="Normal">reinterpret_cast</span>&lt;<span class="Normal">uint8_t</span>*&gt;<span class="Delimiter">(</span><a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">));</span>
+<span id="L69" class="LineNr"> 69 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
 <span id="L70" class="LineNr"> 70 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span>* src = <a href='021byte_addressing.cc.html#L33'>reg_8bit</a><span class="Delimiter">(</span>rsrc<span class="Delimiter">);</span>
 <span id="L71" class="LineNr"> 71 </span>  *dest = *src<span class="Delimiter">;</span>  <span class="Comment">// Read/write multiple elements of vector&lt;uint8_t&gt; at once. Assumes sizeof(int) == 4 on the host as well.</span>
 <span id="L72" class="LineNr"> 72 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L394'>HEXBYTE</a> &lt;&lt; <a href='010---vm.cc.html#L397'>NUM</a><span class="Delimiter">(</span>*dest<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
@@ -164,7 +165,7 @@ if ('onhashchange' in window) {
 <span id="L105" class="LineNr">105 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> rdest = <span class="Delimiter">(</span>modrm&gt;&gt;<span class="Constant">3</span><span class="Delimiter">)</span>&amp;<span class="Constant">0x7</span><span class="Delimiter">;</span>
 <span id="L106" class="LineNr">106 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;copy r8/m8-at-r32 to &quot;</span> &lt;&lt; <a href='021byte_addressing.cc.html#L7'>rname_8bit</a><span class="Delimiter">(</span>rdest<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L107" class="LineNr">107 </span>  <span class="Comment">// use unsigned to zero-extend 8-bit value to 32 bits</span>
-<span id="L108" class="LineNr">108 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span>* src = <span class="Normal">reinterpret_cast</span>&lt;<span class="Normal">uint8_t</span>*&gt;<span class="Delimiter">(</span><a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">));</span>
+<span id="L108" class="LineNr">108 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span>* src = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
 <span id="L109" class="LineNr">109 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L33'>reg_8bit</a><span class="Delimiter">(</span>rdest<span class="Delimiter">);</span>
 <span id="L110" class="LineNr">110 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L394'>HEXBYTE</a> &lt;&lt; <a href='010---vm.cc.html#L397'>NUM</a><span class="Delimiter">(</span>*src<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L111" class="LineNr">111 </span>  *dest = *src<span class="Delimiter">;</span>  <span class="Comment">// Read/write multiple elements of vector&lt;uint8_t&gt; at once. Assumes sizeof(int) == 4 on the host as well.</span>
@@ -228,11 +229,107 @@ if ('onhashchange' in window) {
 <span id="L169" class="LineNr">169 </span>    exit<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">);</span>
 <span id="L170" class="LineNr">170 </span>  <span class="Delimiter">}</span>
 <span id="L171" class="LineNr">171 </span>  <span class="Comment">// use unsigned to zero-extend 8-bit value to 32 bits</span>
-<span id="L172" class="LineNr">172 </span>  <span class="Normal">uint8_t</span>* dest = <span class="Normal">reinterpret_cast</span>&lt;<span class="Normal">uint8_t</span>*&gt;<span class="Delimiter">(</span><a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">));</span>
+<span id="L172" class="LineNr">172 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
 <span id="L173" class="LineNr">173 </span>  *dest = src<span class="Delimiter">;</span>  <span class="Comment">// Write multiple elements of vector&lt;uint8_t&gt; at once. Assumes sizeof(int) == 4 on the host as well.</span>
 <span id="L174" class="LineNr">174 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing 0x&quot;</span> &lt;&lt; <a href='010---vm.cc.html#L394'>HEXBYTE</a> &lt;&lt; <a href='010---vm.cc.html#L397'>NUM</a><span class="Delimiter">(</span>*dest<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L175" class="LineNr">175 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L176" class="LineNr">176 </span><span class="Delimiter">}</span>
+<span id="L177" class="LineNr">177 </span>
+<span id="L178" class="LineNr">178 </span><span class="SalientComment">//:: set flags (setcc)</span>
+<span id="L179" class="LineNr">179 </span>
+<span id="L180" class="LineNr">180 </span><span class="Delimiter">:(before &quot;End Initialize Op Names&quot;)</span>
+<span id="L181" class="LineNr">181 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;94&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;set r8/m8-at-rm32 to 1 if equal, if <a href='010---vm.cc.html#L80'>ZF</a> is set, 0 otherwise (setcc/setz/sete)&quot;</span><span class="Delimiter">);</span>
+<span id="L182" class="LineNr">182 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;95&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;set r8/m8-at-rm32 to 1 if not equal, if <a href='010---vm.cc.html#L80'>ZF</a> is not set, 0 otherwise (setcc/setnz/setne)&quot;</span><span class="Delimiter">);</span>
+<span id="L183" class="LineNr">183 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;9f&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;set r8/m8-at-rm32 to 1 if greater (signed), if <a href='010---vm.cc.html#L80'>ZF</a> is unset and SF == <a href='010---vm.cc.html#L82'>OF</a>, 0 otherwise (setcc/setg/setnle)&quot;</span><span class="Delimiter">);</span>
+<span id="L184" class="LineNr">184 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;97&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;set r8/m8-at-rm32 to 1 if greater (unsigned), if <a href='010---vm.cc.html#L80'>ZF</a> is unset and <a href='010---vm.cc.html#L81'>CF</a> is unset, 0 otherwise (setcc/seta/setnbe)&quot;</span><span class="Delimiter">);</span>
+<span id="L185" class="LineNr">185 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;9d&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;set r8/m8-at-rm32 to 1 if greater or equal (signed), if SF == <a href='010---vm.cc.html#L82'>OF</a>, 0 otherwise (setcc/setge/setnl)&quot;</span><span class="Delimiter">);</span>
+<span id="L186" class="LineNr">186 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;93&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;set r8/m8-at-rm32 to 1 if greater or equal (unsigned), if <a href='010---vm.cc.html#L81'>CF</a> is unset, 0 otherwise (setcc/setae/setnb)&quot;</span><span class="Delimiter">);</span>
+<span id="L187" class="LineNr">187 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;9c&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;set r8/m8-at-rm32 to 1 if lesser (signed), if SF != <a href='010---vm.cc.html#L82'>OF</a>, 0 otherwise (setcc/setl/setnge)&quot;</span><span class="Delimiter">);</span>
+<span id="L188" class="LineNr">188 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;92&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;set r8/m8-at-rm32 to 1 if lesser (unsigned), if <a href='010---vm.cc.html#L81'>CF</a> is set, 0 otherwise (setcc/setb/setnae)&quot;</span><span class="Delimiter">);</span>
+<span id="L189" class="LineNr">189 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;9e&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;set r8/m8-at-rm32 to 1 if lesser or equal (signed), if <a href='010---vm.cc.html#L80'>ZF</a> is set or SF != <a href='010---vm.cc.html#L82'>OF</a>, 0 otherwise (setcc/setle/setng)&quot;</span><span class="Delimiter">);</span>
+<span id="L190" class="LineNr">190 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;96&quot;</span><span class="Delimiter">,</span> <span class="Constant">&quot;set r8/m8-at-rm32 to 1 if lesser or equal (unsigned), if <a href='010---vm.cc.html#L80'>ZF</a> is set or <a href='010---vm.cc.html#L81'>CF</a> is set, 0 otherwise (setcc/setbe/setna)&quot;</span><span class="Delimiter">);</span>
+<span id="L191" class="LineNr">191 </span>
+<span id="L192" class="LineNr">192 </span><span class="Delimiter">:(before &quot;End Two-Byte Opcodes Starting With 0f&quot;)</span>
+<span id="L193" class="LineNr">193 </span><span class="Normal">case</span> <span class="Constant">0x94</span>: <span class="Delimiter">{</span>  <span class="Comment">// set r8/m8-at-rm32 if ZF</span>
+<span id="L194" class="LineNr">194 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L195" class="LineNr">195 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;set r8/m8-at-rm32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L196" class="LineNr">196 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L197" class="LineNr">197 </span>  *dest = <a href='010---vm.cc.html#L80'>ZF</a><span class="Delimiter">;</span>
+<span id="L198" class="LineNr">198 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L199" class="LineNr">199 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L200" class="LineNr">200 </span><span class="Delimiter">}</span>
+<span id="L201" class="LineNr">201 </span><span class="Normal">case</span> <span class="Constant">0x95</span>: <span class="Delimiter">{</span>  <span class="Comment">// set r8/m8-at-rm32 if !ZF</span>
+<span id="L202" class="LineNr">202 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L203" class="LineNr">203 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;set r8/m8-at-rm32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L204" class="LineNr">204 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L205" class="LineNr">205 </span>  *dest = !ZF<span class="Delimiter">;</span>
+<span id="L206" class="LineNr">206 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L207" class="LineNr">207 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L208" class="LineNr">208 </span><span class="Delimiter">}</span>
+<span id="L209" class="LineNr">209 </span><span class="Normal">case</span> <span class="Constant">0x9f</span>: <span class="Delimiter">{</span>  <span class="Comment">// set r8/m8-at-rm32 if !SF and !ZF</span>
+<span id="L210" class="LineNr">210 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L211" class="LineNr">211 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;set r8/m8-at-rm32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L212" class="LineNr">212 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L213" class="LineNr">213 </span>  *dest = !ZF &amp;&amp; SF == <a href='010---vm.cc.html#L82'>OF</a><span class="Delimiter">;</span>
+<span id="L214" class="LineNr">214 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L215" class="LineNr">215 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L216" class="LineNr">216 </span><span class="Delimiter">}</span>
+<span id="L217" class="LineNr">217 </span><span class="Normal">case</span> <span class="Constant">0x97</span>: <span class="Delimiter">{</span>  <span class="Comment">// set r8/m8-at-rm32 if !CF and !ZF</span>
+<span id="L218" class="LineNr">218 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L219" class="LineNr">219 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;set r8/m8-at-rm32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L220" class="LineNr">220 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L221" class="LineNr">221 </span>  *dest = <span class="Delimiter">(</span>!CF &amp;&amp; !ZF<span class="Delimiter">);</span>
+<span id="L222" class="LineNr">222 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L223" class="LineNr">223 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L224" class="LineNr">224 </span><span class="Delimiter">}</span>
+<span id="L225" class="LineNr">225 </span><span class="Normal">case</span> <span class="Constant">0x9d</span>: <span class="Delimiter">{</span>  <span class="Comment">// set r8/m8-at-rm32 if !SF</span>
+<span id="L226" class="LineNr">226 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L227" class="LineNr">227 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;set r8/m8-at-rm32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L228" class="LineNr">228 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L229" class="LineNr">229 </span>  *dest = <span class="Delimiter">(</span>SF == <a href='010---vm.cc.html#L82'>OF</a><span class="Delimiter">);</span>
+<span id="L230" class="LineNr">230 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L231" class="LineNr">231 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L232" class="LineNr">232 </span><span class="Delimiter">}</span>
+<span id="L233" class="LineNr">233 </span><span class="Normal">case</span> <span class="Constant">0x93</span>: <span class="Delimiter">{</span>  <span class="Comment">// set r8/m8-at-rm32 if !CF</span>
+<span id="L234" class="LineNr">234 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L235" class="LineNr">235 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;set r8/m8-at-rm32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L236" class="LineNr">236 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L237" class="LineNr">237 </span>  *dest = !CF<span class="Delimiter">;</span>
+<span id="L238" class="LineNr">238 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L239" class="LineNr">239 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L240" class="LineNr">240 </span><span class="Delimiter">}</span>
+<span id="L241" class="LineNr">241 </span><span class="Normal">case</span> <span class="Constant">0x9c</span>: <span class="Delimiter">{</span>  <span class="Comment">// set r8/m8-at-rm32 if SF and !ZF</span>
+<span id="L242" class="LineNr">242 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L243" class="LineNr">243 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;set r8/m8-at-rm32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L244" class="LineNr">244 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L245" class="LineNr">245 </span>  *dest = <span class="Delimiter">(</span>SF != <a href='010---vm.cc.html#L82'>OF</a><span class="Delimiter">);</span>
+<span id="L246" class="LineNr">246 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L247" class="LineNr">247 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L248" class="LineNr">248 </span><span class="Delimiter">}</span>
+<span id="L249" class="LineNr">249 </span><span class="Normal">case</span> <span class="Constant">0x92</span>: <span class="Delimiter">{</span>  <span class="Comment">// set r8/m8-at-rm32 if CF</span>
+<span id="L250" class="LineNr">250 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L251" class="LineNr">251 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;set r8/m8-at-rm32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L252" class="LineNr">252 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L253" class="LineNr">253 </span>  *dest = <a href='010---vm.cc.html#L81'>CF</a><span class="Delimiter">;</span>
+<span id="L254" class="LineNr">254 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L255" class="LineNr">255 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L256" class="LineNr">256 </span><span class="Delimiter">}</span>
+<span id="L257" class="LineNr">257 </span><span class="Normal">case</span> <span class="Constant">0x9e</span>: <span class="Delimiter">{</span>  <span class="Comment">// set r8/m8-at-rm32 if SF or ZF</span>
+<span id="L258" class="LineNr">258 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L259" class="LineNr">259 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;set r8/m8-at-rm32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L260" class="LineNr">260 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L261" class="LineNr">261 </span>  *dest = <span class="Delimiter">(</span><a href='010---vm.cc.html#L80'>ZF</a> || SF != <a href='010---vm.cc.html#L82'>OF</a><span class="Delimiter">);</span>
+<span id="L262" class="LineNr">262 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L263" class="LineNr">263 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L264" class="LineNr">264 </span><span class="Delimiter">}</span>
+<span id="L265" class="LineNr">265 </span><span class="Normal">case</span> <span class="Constant">0x96</span>: <span class="Delimiter">{</span>  <span class="Comment">// set r8/m8-at-rm32 if ZF or CF</span>
+<span id="L266" class="LineNr">266 </span>  <span class="Normal">const</span> <span class="Normal">uint8_t</span> modrm = <a href='010---vm.cc.html#L325'>next</a><span class="Delimiter">();</span>
+<span id="L267" class="LineNr">267 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;set r8/m8-at-rm32&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L268" class="LineNr">268 </span>  <span class="Normal">uint8_t</span>* dest = <a href='021byte_addressing.cc.html#L21'>effective_byte_address</a><span class="Delimiter">(</span>modrm<span class="Delimiter">);</span>
+<span id="L269" class="LineNr">269 </span>  *dest = <span class="Delimiter">(</span><a href='010---vm.cc.html#L80'>ZF</a> || <a href='010---vm.cc.html#L81'>CF</a><span class="Delimiter">);</span>
+<span id="L270" class="LineNr">270 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Special">Callstack_depth</span>+<span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;storing &quot;</span> &lt;&lt; *dest &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L271" class="LineNr">271 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L272" class="LineNr">272 </span><span class="Delimiter">}</span>
 </pre>
 </body>
 </html>
diff --git a/html/033check_operands.cc.html b/html/033check_operands.cc.html
index 72f14492..c362b050 100644
--- a/html/033check_operands.cc.html
+++ b/html/033check_operands.cc.html
@@ -93,14 +93,14 @@ if ('onhashchange' in window) {
 <span id="L32" class="LineNr"> 32 </span>    <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L33" class="LineNr"> 33 </span>  <span class="Delimiter">}</span>
 <span id="L34" class="LineNr"> 34 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>op<span class="Delimiter">.</span>data == <span class="Constant">&quot;f3&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L35" class="LineNr"> 35 </span>    <a href='033check_operands.cc.html#L608'>check_operands_f3</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
+<span id="L35" class="LineNr"> 35 </span>    <a href='033check_operands.cc.html#L613'>check_operands_f3</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
 <span id="L36" class="LineNr"> 36 </span>    <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L37" class="LineNr"> 37 </span>  <span class="Delimiter">}</span>
 <span id="L38" class="LineNr"> 38 </span>  check_operands<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> op<span class="Delimiter">);</span>
 <span id="L39" class="LineNr"> 39 </span><span class="Delimiter">}</span>
 <span id="L40" class="LineNr"> 40 </span>
 <span id="L41" class="LineNr"> 41 </span><a href='011run.cc.html#L127'>word</a> <a href='033check_operands.cc.html#L41'>preprocess_op</a><span class="Delimiter">(</span><a href='011run.cc.html#L127'>word</a><span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L42" class="LineNr"> 42 </span>  op<span class="Delimiter">.</span>data = <a href='033check_operands.cc.html#L673'>tolower</a><span class="Delimiter">(</span>op<span class="Delimiter">.</span>data<span class="Delimiter">.</span>c_str<span class="Delimiter">());</span>
+<span id="L42" class="LineNr"> 42 </span>  op<span class="Delimiter">.</span>data = <a href='033check_operands.cc.html#L689'>tolower</a><span class="Delimiter">(</span>op<span class="Delimiter">.</span>data<span class="Delimiter">.</span>c_str<span class="Delimiter">());</span>
 <span id="L43" class="LineNr"> 43 </span>  <span class="Comment">// opcodes can't be negative</span>
 <span id="L44" class="LineNr"> 44 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L106'>starts_with</a><span class="Delimiter">(</span>op<span class="Delimiter">.</span>data<span class="Delimiter">,</span> <span class="Constant">&quot;0x&quot;</span><span class="Delimiter">))</span>
 <span id="L45" class="LineNr"> 45 </span>    op<span class="Delimiter">.</span>data = op<span class="Delimiter">.</span>data<span class="Delimiter">.</span>substr<span class="Delimiter">(</span><span class="Constant">2</span><span class="Delimiter">);</span>
@@ -307,443 +307,459 @@ if ('onhashchange' in window) {
 <span id="L246" class="LineNr">246 </span>  <a href='001help.cc.html#L229'>put</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L99'>Permitted_operands</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;81&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x43</span><span class="Delimiter">);</span>  <span class="Comment">// combine</span>
 <span id="L247" class="LineNr">247 </span>  <a href='001help.cc.html#L229'>put</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L99'>Permitted_operands</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;c7&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x43</span><span class="Delimiter">);</span>  <span class="Comment">// copy</span>
 <span id="L248" class="LineNr">248 </span>
-<span id="L249" class="LineNr">249 </span>  <span class="Comment">// End Init Permitted Operands</span>
-<span id="L250" class="LineNr">250 </span><span class="Delimiter">}</span>
-<span id="L251" class="LineNr">251 </span>
-<span id="L252" class="LineNr">252 </span><span class="PreProc">#define HAS(bitvector</span><span class="Delimiter">,</span><span class="PreProc"> bit)  ((bitvector) &amp; (</span><span class="Constant">1</span><span class="PreProc"> &lt;&lt; (bit)))</span>
-<span id="L253" class="LineNr">253 </span><span class="PreProc">#define SET(bitvector</span><span class="Delimiter">,</span><span class="PreProc"> bit)  ((bitvector) | (</span><span class="Constant">1</span><span class="PreProc"> &lt;&lt; (bit)))</span>
-<span id="L254" class="LineNr">254 </span><span class="PreProc">#define CLEAR(bitvector</span><span class="Delimiter">,</span><span class="PreProc"> bit)  ((bitvector) &amp; (~(</span><span class="Constant">1</span><span class="PreProc"> &lt;&lt; (bit))))</span>
-<span id="L255" class="LineNr">255 </span>
-<span id="L256" class="LineNr">256 </span><span class="Normal">void</span> check_operands<span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L257" class="LineNr">257 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_hex_byte<span class="Delimiter">(</span>op<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L258" class="LineNr">258 </span>  <span class="Normal">uint8_t</span> expected_bitvector = get<span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L99'>Permitted_operands</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
-<span id="L259" class="LineNr">259 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>HAS<span class="Delimiter">(</span>expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L69'>MODRM</a><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L260" class="LineNr">260 </span>    <a href='033check_operands.cc.html#L372'>check_operands_modrm</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> op<span class="Delimiter">);</span>
-<span id="L261" class="LineNr">261 </span>    <a href='033check_operands.cc.html#L398'>compare_bitvector_modrm</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L288'>maybe_name</a><span class="Delimiter">(</span>op<span class="Delimiter">));</span>
-<span id="L262" class="LineNr">262 </span>  <span class="Delimiter">}</span>
-<span id="L263" class="LineNr">263 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L264" class="LineNr">264 </span>    <a href='033check_operands.cc.html#L270'>compare_bitvector</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L288'>maybe_name</a><span class="Delimiter">(</span>op<span class="Delimiter">));</span>
-<span id="L265" class="LineNr">265 </span>  <span class="Delimiter">}</span>
-<span id="L266" class="LineNr">266 </span><span class="Delimiter">}</span>
-<span id="L267" class="LineNr">267 </span>
-<span id="L268" class="LineNr">268 </span><span class="Comment">//: Many instructions can be checked just by comparing bitvectors.</span>
-<span id="L269" class="LineNr">269 </span>
-<span id="L270" class="LineNr">270 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L270'>compare_bitvector</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">uint8_t</span> expected<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; maybe_op_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L271" class="LineNr">271 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032---operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &amp;&amp; <a href='033check_operands.cc.html#L306'>has_operands</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
-<span id="L272" class="LineNr">272 </span>  <span class="Normal">uint8_t</span> bitvector = <a href='033check_operands.cc.html#L296'>compute_expected_operand_bitvector</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
-<span id="L273" class="LineNr">273 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L264'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// duplicate operand type</span>
-<span id="L274" class="LineNr">274 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>bitvector == expected<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// all good with this instruction</span>
-<span id="L275" class="LineNr">275 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='033check_operands.cc.html#L76'>NUM_OPERAND_TYPES</a><span class="Delimiter">;</span>  ++i<span class="Delimiter">,</span> bitvector &gt;&gt;= <span class="Constant">1</span><span class="Delimiter">,</span> expected &gt;&gt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L276" class="LineNr">276 </span><span class="CommentedCode">//?     cerr &lt;&lt; &quot;comparing &quot; &lt;&lt; HEXBYTE &lt;&lt; NUM(bitvector) &lt;&lt; &quot; with &quot; &lt;&lt; NUM(expected) &lt;&lt; '\n';</span>
-<span id="L277" class="LineNr">277 </span>    <span class="Normal">if</span> <span class="Delimiter">((</span>bitvector &amp; <span class="Constant">0x1</span><span class="Delimiter">)</span> == <span class="Delimiter">(</span>expected &amp; <span class="Constant">0x1</span><span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// all good with this operand</span>
-<span id="L278" class="LineNr">278 </span>    <span class="Normal">const</span> string&amp; optype = <span class="Special"><a href='033check_operands.cc.html#L79'>Operand_type_name</a></span><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L279" class="LineNr">279 </span>    <span class="Normal">if</span> <span class="Delimiter">((</span>bitvector &amp; <span class="Constant">0x1</span><span class="Delimiter">)</span> &gt; <span class="Delimiter">(</span>expected &amp; <span class="Constant">0x1</span><span class="Delimiter">))</span>
-<span id="L280" class="LineNr">280 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; maybe_op_name &lt;&lt; <span class="Constant">&quot;: unexpected &quot;</span> &lt;&lt; optype &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L281" class="LineNr">281 </span>    <span class="Normal">else</span>
-<span id="L282" class="LineNr">282 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; maybe_op_name &lt;&lt; <span class="Constant">&quot;: missing &quot;</span> &lt;&lt; optype &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L283" class="LineNr">283 </span>    <span class="Comment">// continue giving all errors for a single instruction</span>
-<span id="L284" class="LineNr">284 </span>  <span class="Delimiter">}</span>
-<span id="L285" class="LineNr">285 </span>  <span class="Comment">// ignore settings in any unused bits</span>
-<span id="L286" class="LineNr">286 </span><span class="Delimiter">}</span>
-<span id="L287" class="LineNr">287 </span>
-<span id="L288" class="LineNr">288 </span>string <a href='033check_operands.cc.html#L288'>maybe_name</a><span class="Delimiter">(</span><span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L289" class="LineNr">289 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_hex_byte<span class="Delimiter">(</span>op<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
-<span id="L290" class="LineNr">290 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
-<span id="L291" class="LineNr">291 </span>  <span class="Comment">// strip stuff in parens from the name</span>
-<span id="L292" class="LineNr">292 </span>  <span class="Normal">const</span> string&amp; s = get<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
-<span id="L293" class="LineNr">293 </span>  <span class="Identifier">return</span> <span class="Constant">&quot; (&quot;</span>+s<span class="Delimiter">.</span>substr<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> s<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot; (&quot;</span><span class="Delimiter">))</span>+<span class="Constant">')'</span><span class="Delimiter">;</span>
-<span id="L294" class="LineNr">294 </span><span class="Delimiter">}</span>
-<span id="L295" class="LineNr">295 </span>
-<span id="L296" class="LineNr">296 </span><span class="Normal">uint32_t</span> <a href='033check_operands.cc.html#L296'>compute_expected_operand_bitvector</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L297" class="LineNr">297 </span>  set&lt;string&gt; operands_found<span class="Delimiter">;</span>
-<span id="L298" class="LineNr">298 </span>  <span class="Normal">uint32_t</span> bitvector = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L299" class="LineNr">299 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip op</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L170'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L300" class="LineNr">300 </span>    bitvector = bitvector | <a href='033check_operands.cc.html#L323'>expected_bit_for_received_operand</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> operands_found<span class="Delimiter">,</span> inst<span class="Delimiter">);</span>
-<span id="L301" class="LineNr">301 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L264'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span> <a href='033check_operands.cc.html#L100'>INVALID_OPERANDS</a><span class="Delimiter">;</span>  <span class="Comment">// duplicate operand type</span>
-<span id="L302" class="LineNr">302 </span>  <span class="Delimiter">}</span>
-<span id="L303" class="LineNr">303 </span>  <span class="Identifier">return</span> bitvector<span class="Delimiter">;</span>
-<span id="L304" class="LineNr">304 </span><span class="Delimiter">}</span>
-<span id="L305" class="LineNr">305 </span>
-<span id="L306" class="LineNr">306 </span><span class="Normal">bool</span> <a href='033check_operands.cc.html#L306'>has_operands</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L307" class="LineNr">307 </span>  <span class="Identifier">return</span> <a href='001help.cc.html#L170'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">)</span> &gt; <a href='033check_operands.cc.html#L310'>first_operand</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
-<span id="L308" class="LineNr">308 </span><span class="Delimiter">}</span>
-<span id="L309" class="LineNr">309 </span>
-<span id="L310" class="LineNr">310 </span><span class="Normal">int</span> <a href='033check_operands.cc.html#L310'>first_operand</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L311" class="LineNr">311 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>data == <span class="Constant">&quot;0f&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">2</span><span class="Delimiter">;</span>
-<span id="L312" class="LineNr">312 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>data == <span class="Constant">&quot;f2&quot;</span> || inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>data == <span class="Constant">&quot;f3&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L313" class="LineNr">313 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>data == <span class="Constant">&quot;0f&quot;</span><span class="Delimiter">)</span>
-<span id="L314" class="LineNr">314 </span>      <span class="Identifier">return</span> <span class="Constant">3</span><span class="Delimiter">;</span>
-<span id="L315" class="LineNr">315 </span>    <span class="Normal">else</span>
-<span id="L316" class="LineNr">316 </span>      <span class="Identifier">return</span> <span class="Constant">2</span><span class="Delimiter">;</span>
-<span id="L317" class="LineNr">317 </span>  <span class="Delimiter">}</span>
-<span id="L318" class="LineNr">318 </span>  <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
-<span id="L319" class="LineNr">319 </span><span class="Delimiter">}</span>
-<span id="L320" class="LineNr">320 </span>
-<span id="L321" class="LineNr">321 </span><span class="Comment">// Scan the metadata of 'w' and return the expected bit corresponding to any operand type.</span>
-<span id="L322" class="LineNr">322 </span><span class="Comment">// Also raise an error if metadata contains multiple operand types.</span>
-<span id="L323" class="LineNr">323 </span><span class="Normal">uint32_t</span> <a href='033check_operands.cc.html#L323'>expected_bit_for_received_operand</a><span class="Delimiter">(</span><span class="Normal">const</span> word&amp; w<span class="Delimiter">,</span> set&lt;string&gt;&amp; instruction_operands<span class="Delimiter">,</span> <span class="Normal">const</span> line&amp; inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L324" class="LineNr">324 </span>  <span class="Normal">uint32_t</span> bv = <span class="Constant">0</span><span class="Delimiter">;</span>
-<span id="L325" class="LineNr">325 </span>  <span class="Normal">bool</span> found = <span class="Constant">false</span><span class="Delimiter">;</span>
-<span id="L326" class="LineNr">326 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L170'>SIZE</a><span class="Delimiter">(</span>w<span class="Delimiter">.</span>metadata<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L327" class="LineNr">327 </span>    string<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> curr = w<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L328" class="LineNr">328 </span>    string expected_metadata = curr<span class="Delimiter">;</span>
-<span id="L329" class="LineNr">329 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>curr == <span class="Constant">&quot;mod&quot;</span> || curr == <span class="Constant">&quot;rm32&quot;</span> || curr == <span class="Constant">&quot;r32&quot;</span> || curr == <span class="Constant">&quot;scale&quot;</span> || curr == <span class="Constant">&quot;index&quot;</span> || curr == <span class="Constant">&quot;base&quot;</span><span class="Delimiter">)</span>
-<span id="L330" class="LineNr">330 </span>      expected_metadata = <span class="Constant">&quot;modrm&quot;</span><span class="Delimiter">;</span>
-<span id="L331" class="LineNr">331 </span>    <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L80'>Operand_type</a></span><span class="Delimiter">,</span> curr<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// ignore unrecognized metadata</span>
-<span id="L332" class="LineNr">332 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>found<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L333" class="LineNr">333 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; w<span class="Delimiter">.</span>original &lt;&lt; <span class="Constant">&quot;' has conflicting operand types; it should have only one\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L334" class="LineNr">334 </span>      <span class="Identifier">return</span> <a href='033check_operands.cc.html#L100'>INVALID_OPERANDS</a><span class="Delimiter">;</span>
-<span id="L335" class="LineNr">335 </span>    <span class="Delimiter">}</span>
-<span id="L336" class="LineNr">336 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>instruction_operands<span class="Delimiter">.</span>find<span class="Delimiter">(</span>curr<span class="Delimiter">)</span> != instruction_operands<span class="Delimiter">.</span>end<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-<span id="L337" class="LineNr">337 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;': duplicate &quot;</span> &lt;&lt; curr &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L338" class="LineNr">338 </span>      <span class="Identifier">return</span> <a href='033check_operands.cc.html#L100'>INVALID_OPERANDS</a><span class="Delimiter">;</span>
-<span id="L339" class="LineNr">339 </span>    <span class="Delimiter">}</span>
-<span id="L340" class="LineNr">340 </span>    instruction_operands<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>curr<span class="Delimiter">);</span>
-<span id="L341" class="LineNr">341 </span>    bv = <span class="Delimiter">(</span><span class="Constant">1</span> &lt;&lt; get<span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L80'>Operand_type</a></span><span class="Delimiter">,</span> expected_metadata<span class="Delimiter">));</span>
-<span id="L342" class="LineNr">342 </span>    found = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L343" class="LineNr">343 </span>  <span class="Delimiter">}</span>
-<span id="L344" class="LineNr">344 </span>  <span class="Identifier">return</span> bv<span class="Delimiter">;</span>
-<span id="L345" class="LineNr">345 </span><span class="Delimiter">}</span>
-<span id="L346" class="LineNr">346 </span>
-<span id="L347" class="LineNr">347 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L347'>test_conflicting_operand_type</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L348" class="LineNr">348 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L349" class="LineNr">349 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L350" class="LineNr">350 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L351" class="LineNr">351 </span>      <span class="Constant">&quot;cd/software-interrupt 80/imm8/imm32\n&quot;</span>
-<span id="L352" class="LineNr">352 </span>  <span class="Delimiter">);</span>
-<span id="L353" class="LineNr">353 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L354" class="LineNr">354 </span>      <span class="Constant">&quot;error: '80/imm8/imm32' has conflicting operand types; it should have only one\n&quot;</span>
-<span id="L355" class="LineNr">355 </span>  <span class="Delimiter">);</span>
-<span id="L356" class="LineNr">356 </span><span class="Delimiter">}</span>
-<span id="L357" class="LineNr">357 </span>
-<span id="L358" class="LineNr">358 </span><span class="Comment">//: Instructions computing effective addresses have more complex rules, so</span>
-<span id="L359" class="LineNr">359 </span><span class="Comment">//: we'll hard-code a common set of instruction-decoding rules.</span>
-<span id="L360" class="LineNr">360 </span>
-<span id="L361" class="LineNr">361 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L361'>test_check_missing_mod_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L362" class="LineNr">362 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L363" class="LineNr">363 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L364" class="LineNr">364 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L365" class="LineNr">365 </span>      <span class="Constant">&quot;81 0/add/subop       3/rm32/ebx 1/imm32\n&quot;</span>
-<span id="L366" class="LineNr">366 </span>  <span class="Delimiter">);</span>
-<span id="L367" class="LineNr">367 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L368" class="LineNr">368 </span>      <span class="Constant">&quot;error: '81 0/add/subop 3/rm32/ebx 1/imm32' (combine rm32 with imm32 based on subop): missing mod operand\n&quot;</span>
-<span id="L369" class="LineNr">369 </span>  <span class="Delimiter">);</span>
-<span id="L370" class="LineNr">370 </span><span class="Delimiter">}</span>
-<span id="L371" class="LineNr">371 </span>
-<span id="L372" class="LineNr">372 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L372'>check_operands_modrm</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L373" class="LineNr">373 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032---operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
-<span id="L374" class="LineNr">374 </span>  <a href='033check_operands.cc.html#L432'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>
-<span id="L375" class="LineNr">375 </span>  <a href='033check_operands.cc.html#L432'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>
-<span id="L376" class="LineNr">376 </span>  <span class="Comment">// no check for r32; some instructions don't use it; just assume it's 0 if missing</span>
-<span id="L377" class="LineNr">377 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>op<span class="Delimiter">.</span>data == <span class="Constant">&quot;81&quot;</span> || op<span class="Delimiter">.</span>data == <span class="Constant">&quot;8f&quot;</span> || op<span class="Delimiter">.</span>data == <span class="Constant">&quot;ff&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>  <span class="Comment">// keep sync'd with 'help subop'</span>
-<span id="L378" class="LineNr">378 </span>    <a href='033check_operands.cc.html#L432'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;subop&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>
-<span id="L379" class="LineNr">379 </span>    <a href='033check_operands.cc.html#L437'>check_operand_metadata_absent</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;r32&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">,</span> <span class="Constant">&quot;should be replaced by subop&quot;</span><span class="Delimiter">);</span>
-<span id="L380" class="LineNr">380 </span>  <span class="Delimiter">}</span>
-<span id="L381" class="LineNr">381 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L264'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L382" class="LineNr">382 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">).</span>data != <span class="Constant">&quot;4&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L383" class="LineNr">383 </span>  <span class="Comment">// SIB byte checks</span>
-<span id="L384" class="LineNr">384 </span>  <span class="Normal">uint8_t</span> mod = <a href='011run.cc.html#L288'>hex_byte</a><span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">).</span>data<span class="Delimiter">);</span>
-<span id="L385" class="LineNr">385 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>mod != <span class="Comment">/*</span><span class="Comment">direct</span><span class="Comment">*/</span><span class="Constant">3</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L386" class="LineNr">386 </span>    <a href='033check_operands.cc.html#L432'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;base&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>
-<span id="L387" class="LineNr">387 </span>    <a href='033check_operands.cc.html#L432'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;index&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>  <span class="Comment">// otherwise why go to SIB?</span>
-<span id="L388" class="LineNr">388 </span>  <span class="Delimiter">}</span>
-<span id="L389" class="LineNr">389 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L390" class="LineNr">390 </span>    <a href='033check_operands.cc.html#L437'>check_operand_metadata_absent</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;base&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">,</span> <span class="Constant">&quot;direct mode&quot;</span><span class="Delimiter">);</span>
-<span id="L391" class="LineNr">391 </span>    <a href='033check_operands.cc.html#L437'>check_operand_metadata_absent</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;index&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">,</span> <span class="Constant">&quot;direct mode&quot;</span><span class="Delimiter">);</span>
-<span id="L392" class="LineNr">392 </span>  <span class="Delimiter">}</span>
-<span id="L393" class="LineNr">393 </span>  <span class="Comment">// no check for scale; 0 (2**0 = 1) by default</span>
-<span id="L394" class="LineNr">394 </span><span class="Delimiter">}</span>
-<span id="L395" class="LineNr">395 </span>
-<span id="L396" class="LineNr">396 </span><span class="Comment">// same as compare_bitvector, with one additional exception for modrm-based</span>
-<span id="L397" class="LineNr">397 </span><span class="Comment">// instructions: they may use an extra displacement on occasion</span>
-<span id="L398" class="LineNr">398 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L398'>compare_bitvector_modrm</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">uint8_t</span> expected<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; maybe_op_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L399" class="LineNr">399 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032---operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &amp;&amp; <a href='033check_operands.cc.html#L306'>has_operands</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
-<span id="L400" class="LineNr">400 </span>  <span class="Normal">uint8_t</span> bitvector = <a href='033check_operands.cc.html#L296'>compute_expected_operand_bitvector</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
-<span id="L401" class="LineNr">401 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L264'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// duplicate operand type</span>
-<span id="L402" class="LineNr">402 </span>  <span class="Comment">// update 'expected' bitvector for the additional exception</span>
-<span id="L403" class="LineNr">403 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>has_operand_metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L404" class="LineNr">404 </span>    <span class="Normal">int32_t</span> mod = <a href='032---operands.cc.html#L507'>parse_int</a><span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">).</span>data<span class="Delimiter">);</span>
-<span id="L405" class="LineNr">405 </span>    <span class="Normal">switch</span> <span class="Delimiter">(</span>mod<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L406" class="LineNr">406 </span>    <span class="Normal">case</span> <span class="Constant">0</span>:
-<span id="L407" class="LineNr">407 </span>      <span class="Normal">if</span> <span class="Delimiter">(</span>has_operand_metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">)</span> &amp;&amp; <a href='032---operands.cc.html#L507'>parse_int</a><span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">).</span>data<span class="Delimiter">)</span> == <span class="Constant">5</span><span class="Delimiter">)</span>
-<span id="L408" class="LineNr">408 </span>        expected |= <span class="Delimiter">(</span><span class="Constant">1</span>&lt;&lt;DISP32<span class="Delimiter">);</span>
-<span id="L409" class="LineNr">409 </span>      <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L410" class="LineNr">410 </span>    <span class="Normal">case</span> <span class="Constant">1</span>:
-<span id="L411" class="LineNr">411 </span>      expected |= <span class="Delimiter">(</span><span class="Constant">1</span>&lt;&lt;DISP8<span class="Delimiter">);</span>
-<span id="L412" class="LineNr">412 </span>      <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L413" class="LineNr">413 </span>    <span class="Normal">case</span> <span class="Constant">2</span>:
-<span id="L414" class="LineNr">414 </span>      expected |= <span class="Delimiter">(</span><span class="Constant">1</span>&lt;&lt;DISP32<span class="Delimiter">);</span>
-<span id="L415" class="LineNr">415 </span>      <span class="Identifier">break</span><span class="Delimiter">;</span>
-<span id="L416" class="LineNr">416 </span>    <span class="Delimiter">}</span>
-<span id="L417" class="LineNr">417 </span>  <span class="Delimiter">}</span>
-<span id="L418" class="LineNr">418 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>bitvector == expected<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// all good with this instruction</span>
-<span id="L419" class="LineNr">419 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='033check_operands.cc.html#L76'>NUM_OPERAND_TYPES</a><span class="Delimiter">;</span>  ++i<span class="Delimiter">,</span> bitvector &gt;&gt;= <span class="Constant">1</span><span class="Delimiter">,</span> expected &gt;&gt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L420" class="LineNr">420 </span><span class="CommentedCode">//?     cerr &lt;&lt; &quot;comparing for modrm &quot; &lt;&lt; HEXBYTE &lt;&lt; NUM(bitvector) &lt;&lt; &quot; with &quot; &lt;&lt; NUM(expected) &lt;&lt; '\n';</span>
-<span id="L421" class="LineNr">421 </span>    <span class="Normal">if</span> <span class="Delimiter">((</span>bitvector &amp; <span class="Constant">0x1</span><span class="Delimiter">)</span> == <span class="Delimiter">(</span>expected &amp; <span class="Constant">0x1</span><span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// all good with this operand</span>
-<span id="L422" class="LineNr">422 </span>    <span class="Normal">const</span> string&amp; optype = <span class="Special"><a href='033check_operands.cc.html#L79'>Operand_type_name</a></span><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L423" class="LineNr">423 </span>    <span class="Normal">if</span> <span class="Delimiter">((</span>bitvector &amp; <span class="Constant">0x1</span><span class="Delimiter">)</span> &gt; <span class="Delimiter">(</span>expected &amp; <span class="Constant">0x1</span><span class="Delimiter">))</span>
-<span id="L424" class="LineNr">424 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; maybe_op_name &lt;&lt; <span class="Constant">&quot;: unexpected &quot;</span> &lt;&lt; optype &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L425" class="LineNr">425 </span>    <span class="Normal">else</span>
-<span id="L426" class="LineNr">426 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; maybe_op_name &lt;&lt; <span class="Constant">&quot;: missing &quot;</span> &lt;&lt; optype &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L427" class="LineNr">427 </span>    <span class="Comment">// continue giving all errors for a single instruction</span>
-<span id="L428" class="LineNr">428 </span>  <span class="Delimiter">}</span>
-<span id="L429" class="LineNr">429 </span>  <span class="Comment">// ignore settings in any unused bits</span>
-<span id="L430" class="LineNr">430 </span><span class="Delimiter">}</span>
-<span id="L431" class="LineNr">431 </span>
-<span id="L432" class="LineNr">432 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L432'>check_operand_metadata_present</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; type<span class="Delimiter">,</span> <span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L433" class="LineNr">433 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!has_operand_metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> type<span class="Delimiter">))</span>
-<span id="L434" class="LineNr">434 </span>    <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='033check_operands.cc.html#L288'>maybe_name</a><span class="Delimiter">(</span>op<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;: missing &quot;</span> &lt;&lt; type &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L249" class="LineNr">249 </span>  <span class="SalientComment">//// Class Q: op, ModR/M and imm32</span>
+<span id="L250" class="LineNr">250 </span>  <span class="Comment">//  imm32 imm8  disp32 |disp16  disp8 subop modrm</span>
+<span id="L251" class="LineNr">251 </span>  <span class="Comment">//  1     0     0      |0       0     0     1</span>
+<span id="L252" class="LineNr">252 </span>  <a href='001help.cc.html#L229'>put</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L99'>Permitted_operands</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;69&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x41</span><span class="Delimiter">);</span>  <span class="Comment">// multiply</span>
+<span id="L253" class="LineNr">253 </span>
+<span id="L254" class="LineNr">254 </span>  <span class="Comment">// End Init Permitted Operands</span>
+<span id="L255" class="LineNr">255 </span><span class="Delimiter">}</span>
+<span id="L256" class="LineNr">256 </span>
+<span id="L257" class="LineNr">257 </span><span class="PreProc">#define HAS(bitvector</span><span class="Delimiter">,</span><span class="PreProc"> bit)  ((bitvector) &amp; (</span><span class="Constant">1</span><span class="PreProc"> &lt;&lt; (bit)))</span>
+<span id="L258" class="LineNr">258 </span><span class="PreProc">#define SET(bitvector</span><span class="Delimiter">,</span><span class="PreProc"> bit)  ((bitvector) | (</span><span class="Constant">1</span><span class="PreProc"> &lt;&lt; (bit)))</span>
+<span id="L259" class="LineNr">259 </span><span class="PreProc">#define CLEAR(bitvector</span><span class="Delimiter">,</span><span class="PreProc"> bit)  ((bitvector) &amp; (~(</span><span class="Constant">1</span><span class="PreProc"> &lt;&lt; (bit))))</span>
+<span id="L260" class="LineNr">260 </span>
+<span id="L261" class="LineNr">261 </span><span class="Normal">void</span> check_operands<span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L262" class="LineNr">262 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_hex_byte<span class="Delimiter">(</span>op<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L263" class="LineNr">263 </span>  <span class="Normal">uint8_t</span> expected_bitvector = get<span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L99'>Permitted_operands</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
+<span id="L264" class="LineNr">264 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>HAS<span class="Delimiter">(</span>expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L69'>MODRM</a><span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L265" class="LineNr">265 </span>    <a href='033check_operands.cc.html#L377'>check_operands_modrm</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> op<span class="Delimiter">);</span>
+<span id="L266" class="LineNr">266 </span>    <a href='033check_operands.cc.html#L403'>compare_bitvector_modrm</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L293'>maybe_name</a><span class="Delimiter">(</span>op<span class="Delimiter">));</span>
+<span id="L267" class="LineNr">267 </span>  <span class="Delimiter">}</span>
+<span id="L268" class="LineNr">268 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L269" class="LineNr">269 </span>    <a href='033check_operands.cc.html#L275'>compare_bitvector</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L293'>maybe_name</a><span class="Delimiter">(</span>op<span class="Delimiter">));</span>
+<span id="L270" class="LineNr">270 </span>  <span class="Delimiter">}</span>
+<span id="L271" class="LineNr">271 </span><span class="Delimiter">}</span>
+<span id="L272" class="LineNr">272 </span>
+<span id="L273" class="LineNr">273 </span><span class="Comment">//: Many instructions can be checked just by comparing bitvectors.</span>
+<span id="L274" class="LineNr">274 </span>
+<span id="L275" class="LineNr">275 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L275'>compare_bitvector</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">uint8_t</span> expected<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; maybe_op_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L276" class="LineNr">276 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032---operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &amp;&amp; <a href='033check_operands.cc.html#L311'>has_operands</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
+<span id="L277" class="LineNr">277 </span>  <span class="Normal">uint8_t</span> bitvector = <a href='033check_operands.cc.html#L301'>compute_expected_operand_bitvector</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
+<span id="L278" class="LineNr">278 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L264'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// duplicate operand type</span>
+<span id="L279" class="LineNr">279 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>bitvector == expected<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// all good with this instruction</span>
+<span id="L280" class="LineNr">280 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='033check_operands.cc.html#L76'>NUM_OPERAND_TYPES</a><span class="Delimiter">;</span>  ++i<span class="Delimiter">,</span> bitvector &gt;&gt;= <span class="Constant">1</span><span class="Delimiter">,</span> expected &gt;&gt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L281" class="LineNr">281 </span><span class="CommentedCode">//?     cerr &lt;&lt; &quot;comparing &quot; &lt;&lt; HEXBYTE &lt;&lt; NUM(bitvector) &lt;&lt; &quot; with &quot; &lt;&lt; NUM(expected) &lt;&lt; '\n';</span>
+<span id="L282" class="LineNr">282 </span>    <span class="Normal">if</span> <span class="Delimiter">((</span>bitvector &amp; <span class="Constant">0x1</span><span class="Delimiter">)</span> == <span class="Delimiter">(</span>expected &amp; <span class="Constant">0x1</span><span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// all good with this operand</span>
+<span id="L283" class="LineNr">283 </span>    <span class="Normal">const</span> string&amp; optype = <span class="Special"><a href='033check_operands.cc.html#L79'>Operand_type_name</a></span><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L284" class="LineNr">284 </span>    <span class="Normal">if</span> <span class="Delimiter">((</span>bitvector &amp; <span class="Constant">0x1</span><span class="Delimiter">)</span> &gt; <span class="Delimiter">(</span>expected &amp; <span class="Constant">0x1</span><span class="Delimiter">))</span>
+<span id="L285" class="LineNr">285 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; maybe_op_name &lt;&lt; <span class="Constant">&quot;: unexpected &quot;</span> &lt;&lt; optype &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L286" class="LineNr">286 </span>    <span class="Normal">else</span>
+<span id="L287" class="LineNr">287 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; maybe_op_name &lt;&lt; <span class="Constant">&quot;: missing &quot;</span> &lt;&lt; optype &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L288" class="LineNr">288 </span>    <span class="Comment">// continue giving all errors for a single instruction</span>
+<span id="L289" class="LineNr">289 </span>  <span class="Delimiter">}</span>
+<span id="L290" class="LineNr">290 </span>  <span class="Comment">// ignore settings in any unused bits</span>
+<span id="L291" class="LineNr">291 </span><span class="Delimiter">}</span>
+<span id="L292" class="LineNr">292 </span>
+<span id="L293" class="LineNr">293 </span>string <a href='033check_operands.cc.html#L293'>maybe_name</a><span class="Delimiter">(</span><span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L294" class="LineNr">294 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_hex_byte<span class="Delimiter">(</span>op<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
+<span id="L295" class="LineNr">295 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
+<span id="L296" class="LineNr">296 </span>  <span class="Comment">// strip stuff in parens from the name</span>
+<span id="L297" class="LineNr">297 </span>  <span class="Normal">const</span> string&amp; s = get<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
+<span id="L298" class="LineNr">298 </span>  <span class="Identifier">return</span> <span class="Constant">&quot; (&quot;</span>+s<span class="Delimiter">.</span>substr<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> s<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot; (&quot;</span><span class="Delimiter">))</span>+<span class="Constant">')'</span><span class="Delimiter">;</span>
+<span id="L299" class="LineNr">299 </span><span class="Delimiter">}</span>
+<span id="L300" class="LineNr">300 </span>
+<span id="L301" class="LineNr">301 </span><span class="Normal">uint32_t</span> <a href='033check_operands.cc.html#L301'>compute_expected_operand_bitvector</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L302" class="LineNr">302 </span>  set&lt;string&gt; operands_found<span class="Delimiter">;</span>
+<span id="L303" class="LineNr">303 </span>  <span class="Normal">uint32_t</span> bitvector = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L304" class="LineNr">304 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip op</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L170'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L305" class="LineNr">305 </span>    bitvector = bitvector | <a href='033check_operands.cc.html#L328'>expected_bit_for_received_operand</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">),</span> operands_found<span class="Delimiter">,</span> inst<span class="Delimiter">);</span>
+<span id="L306" class="LineNr">306 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L264'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span> <a href='033check_operands.cc.html#L100'>INVALID_OPERANDS</a><span class="Delimiter">;</span>  <span class="Comment">// duplicate operand type</span>
+<span id="L307" class="LineNr">307 </span>  <span class="Delimiter">}</span>
+<span id="L308" class="LineNr">308 </span>  <span class="Identifier">return</span> bitvector<span class="Delimiter">;</span>
+<span id="L309" class="LineNr">309 </span><span class="Delimiter">}</span>
+<span id="L310" class="LineNr">310 </span>
+<span id="L311" class="LineNr">311 </span><span class="Normal">bool</span> <a href='033check_operands.cc.html#L311'>has_operands</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L312" class="LineNr">312 </span>  <span class="Identifier">return</span> <a href='001help.cc.html#L170'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">)</span> &gt; <a href='033check_operands.cc.html#L315'>first_operand</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
+<span id="L313" class="LineNr">313 </span><span class="Delimiter">}</span>
+<span id="L314" class="LineNr">314 </span>
+<span id="L315" class="LineNr">315 </span><span class="Normal">int</span> <a href='033check_operands.cc.html#L315'>first_operand</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L316" class="LineNr">316 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>data == <span class="Constant">&quot;0f&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">2</span><span class="Delimiter">;</span>
+<span id="L317" class="LineNr">317 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>data == <span class="Constant">&quot;f2&quot;</span> || inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>data == <span class="Constant">&quot;f3&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L318" class="LineNr">318 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span>data == <span class="Constant">&quot;0f&quot;</span><span class="Delimiter">)</span>
+<span id="L319" class="LineNr">319 </span>      <span class="Identifier">return</span> <span class="Constant">3</span><span class="Delimiter">;</span>
+<span id="L320" class="LineNr">320 </span>    <span class="Normal">else</span>
+<span id="L321" class="LineNr">321 </span>      <span class="Identifier">return</span> <span class="Constant">2</span><span class="Delimiter">;</span>
+<span id="L322" class="LineNr">322 </span>  <span class="Delimiter">}</span>
+<span id="L323" class="LineNr">323 </span>  <span class="Identifier">return</span> <span class="Constant">1</span><span class="Delimiter">;</span>
+<span id="L324" class="LineNr">324 </span><span class="Delimiter">}</span>
+<span id="L325" class="LineNr">325 </span>
+<span id="L326" class="LineNr">326 </span><span class="Comment">// Scan the metadata of 'w' and return the expected bit corresponding to any operand type.</span>
+<span id="L327" class="LineNr">327 </span><span class="Comment">// Also raise an error if metadata contains multiple operand types.</span>
+<span id="L328" class="LineNr">328 </span><span class="Normal">uint32_t</span> <a href='033check_operands.cc.html#L328'>expected_bit_for_received_operand</a><span class="Delimiter">(</span><span class="Normal">const</span> word&amp; w<span class="Delimiter">,</span> set&lt;string&gt;&amp; instruction_operands<span class="Delimiter">,</span> <span class="Normal">const</span> line&amp; inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L329" class="LineNr">329 </span>  <span class="Normal">uint32_t</span> bv = <span class="Constant">0</span><span class="Delimiter">;</span>
+<span id="L330" class="LineNr">330 </span>  <span class="Normal">bool</span> found = <span class="Constant">false</span><span class="Delimiter">;</span>
+<span id="L331" class="LineNr">331 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L170'>SIZE</a><span class="Delimiter">(</span>w<span class="Delimiter">.</span>metadata<span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L332" class="LineNr">332 </span>    string<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> curr = w<span class="Delimiter">.</span>metadata<span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L333" class="LineNr">333 </span>    string expected_metadata = curr<span class="Delimiter">;</span>
+<span id="L334" class="LineNr">334 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>curr == <span class="Constant">&quot;mod&quot;</span> || curr == <span class="Constant">&quot;rm32&quot;</span> || curr == <span class="Constant">&quot;r32&quot;</span> || curr == <span class="Constant">&quot;scale&quot;</span> || curr == <span class="Constant">&quot;index&quot;</span> || curr == <span class="Constant">&quot;base&quot;</span><span class="Delimiter">)</span>
+<span id="L335" class="LineNr">335 </span>      expected_metadata = <span class="Constant">&quot;modrm&quot;</span><span class="Delimiter">;</span>
+<span id="L336" class="LineNr">336 </span>    <span class="Normal">else</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L80'>Operand_type</a></span><span class="Delimiter">,</span> curr<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// ignore unrecognized metadata</span>
+<span id="L337" class="LineNr">337 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>found<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L338" class="LineNr">338 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; w<span class="Delimiter">.</span>original &lt;&lt; <span class="Constant">&quot;' has conflicting operand types; it should have only one\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L339" class="LineNr">339 </span>      <span class="Identifier">return</span> <a href='033check_operands.cc.html#L100'>INVALID_OPERANDS</a><span class="Delimiter">;</span>
+<span id="L340" class="LineNr">340 </span>    <span class="Delimiter">}</span>
+<span id="L341" class="LineNr">341 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>instruction_operands<span class="Delimiter">.</span>find<span class="Delimiter">(</span>curr<span class="Delimiter">)</span> != instruction_operands<span class="Delimiter">.</span>end<span class="Delimiter">())</span> <span class="Delimiter">{</span>
+<span id="L342" class="LineNr">342 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;': duplicate &quot;</span> &lt;&lt; curr &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L343" class="LineNr">343 </span>      <span class="Identifier">return</span> <a href='033check_operands.cc.html#L100'>INVALID_OPERANDS</a><span class="Delimiter">;</span>
+<span id="L344" class="LineNr">344 </span>    <span class="Delimiter">}</span>
+<span id="L345" class="LineNr">345 </span>    instruction_operands<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>curr<span class="Delimiter">);</span>
+<span id="L346" class="LineNr">346 </span>    bv = <span class="Delimiter">(</span><span class="Constant">1</span> &lt;&lt; get<span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L80'>Operand_type</a></span><span class="Delimiter">,</span> expected_metadata<span class="Delimiter">));</span>
+<span id="L347" class="LineNr">347 </span>    found = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L348" class="LineNr">348 </span>  <span class="Delimiter">}</span>
+<span id="L349" class="LineNr">349 </span>  <span class="Identifier">return</span> bv<span class="Delimiter">;</span>
+<span id="L350" class="LineNr">350 </span><span class="Delimiter">}</span>
+<span id="L351" class="LineNr">351 </span>
+<span id="L352" class="LineNr">352 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L352'>test_conflicting_operand_type</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L353" class="LineNr">353 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L354" class="LineNr">354 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L355" class="LineNr">355 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L356" class="LineNr">356 </span>      <span class="Constant">&quot;cd/software-interrupt 80/imm8/imm32\n&quot;</span>
+<span id="L357" class="LineNr">357 </span>  <span class="Delimiter">);</span>
+<span id="L358" class="LineNr">358 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L359" class="LineNr">359 </span>      <span class="Constant">&quot;error: '80/imm8/imm32' has conflicting operand types; it should have only one\n&quot;</span>
+<span id="L360" class="LineNr">360 </span>  <span class="Delimiter">);</span>
+<span id="L361" class="LineNr">361 </span><span class="Delimiter">}</span>
+<span id="L362" class="LineNr">362 </span>
+<span id="L363" class="LineNr">363 </span><span class="Comment">//: Instructions computing effective addresses have more complex rules, so</span>
+<span id="L364" class="LineNr">364 </span><span class="Comment">//: we'll hard-code a common set of instruction-decoding rules.</span>
+<span id="L365" class="LineNr">365 </span>
+<span id="L366" class="LineNr">366 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L366'>test_check_missing_mod_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L367" class="LineNr">367 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L368" class="LineNr">368 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L369" class="LineNr">369 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L370" class="LineNr">370 </span>      <span class="Constant">&quot;81 0/add/subop       3/rm32/ebx 1/imm32\n&quot;</span>
+<span id="L371" class="LineNr">371 </span>  <span class="Delimiter">);</span>
+<span id="L372" class="LineNr">372 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L373" class="LineNr">373 </span>      <span class="Constant">&quot;error: '81 0/add/subop 3/rm32/ebx 1/imm32' (combine rm32 with imm32 based on subop): missing mod operand\n&quot;</span>
+<span id="L374" class="LineNr">374 </span>  <span class="Delimiter">);</span>
+<span id="L375" class="LineNr">375 </span><span class="Delimiter">}</span>
+<span id="L376" class="LineNr">376 </span>
+<span id="L377" class="LineNr">377 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L377'>check_operands_modrm</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L378" class="LineNr">378 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032---operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
+<span id="L379" class="LineNr">379 </span>  <a href='033check_operands.cc.html#L437'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>
+<span id="L380" class="LineNr">380 </span>  <a href='033check_operands.cc.html#L437'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>
+<span id="L381" class="LineNr">381 </span>  <span class="Comment">// no check for r32; some instructions don't use it; just assume it's 0 if missing</span>
+<span id="L382" class="LineNr">382 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>op<span class="Delimiter">.</span>data == <span class="Constant">&quot;81&quot;</span> || op<span class="Delimiter">.</span>data == <span class="Constant">&quot;8f&quot;</span> || op<span class="Delimiter">.</span>data == <span class="Constant">&quot;ff&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>  <span class="Comment">// keep sync'd with 'help subop'</span>
+<span id="L383" class="LineNr">383 </span>    <a href='033check_operands.cc.html#L437'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;subop&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>
+<span id="L384" class="LineNr">384 </span>    <a href='033check_operands.cc.html#L442'>check_operand_metadata_absent</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;r32&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">,</span> <span class="Constant">&quot;should be replaced by subop&quot;</span><span class="Delimiter">);</span>
+<span id="L385" class="LineNr">385 </span>  <span class="Delimiter">}</span>
+<span id="L386" class="LineNr">386 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L264'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L387" class="LineNr">387 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">).</span>data != <span class="Constant">&quot;4&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L388" class="LineNr">388 </span>  <span class="Comment">// SIB byte checks</span>
+<span id="L389" class="LineNr">389 </span>  <span class="Normal">uint8_t</span> mod = <a href='011run.cc.html#L288'>hex_byte</a><span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">).</span>data<span class="Delimiter">);</span>
+<span id="L390" class="LineNr">390 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>mod != <span class="Comment">/*</span><span class="Comment">direct</span><span class="Comment">*/</span><span class="Constant">3</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L391" class="LineNr">391 </span>    <a href='033check_operands.cc.html#L437'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;base&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>
+<span id="L392" class="LineNr">392 </span>    <a href='033check_operands.cc.html#L437'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;index&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>  <span class="Comment">// otherwise why go to SIB?</span>
+<span id="L393" class="LineNr">393 </span>  <span class="Delimiter">}</span>
+<span id="L394" class="LineNr">394 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L395" class="LineNr">395 </span>    <a href='033check_operands.cc.html#L442'>check_operand_metadata_absent</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;base&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">,</span> <span class="Constant">&quot;direct mode&quot;</span><span class="Delimiter">);</span>
+<span id="L396" class="LineNr">396 </span>    <a href='033check_operands.cc.html#L442'>check_operand_metadata_absent</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;index&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">,</span> <span class="Constant">&quot;direct mode&quot;</span><span class="Delimiter">);</span>
+<span id="L397" class="LineNr">397 </span>  <span class="Delimiter">}</span>
+<span id="L398" class="LineNr">398 </span>  <span class="Comment">// no check for scale; 0 (2**0 = 1) by default</span>
+<span id="L399" class="LineNr">399 </span><span class="Delimiter">}</span>
+<span id="L400" class="LineNr">400 </span>
+<span id="L401" class="LineNr">401 </span><span class="Comment">// same as compare_bitvector, with one additional exception for modrm-based</span>
+<span id="L402" class="LineNr">402 </span><span class="Comment">// instructions: they may use an extra displacement on occasion</span>
+<span id="L403" class="LineNr">403 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L403'>compare_bitvector_modrm</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">uint8_t</span> expected<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; maybe_op_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L404" class="LineNr">404 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032---operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &amp;&amp; <a href='033check_operands.cc.html#L311'>has_operands</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
+<span id="L405" class="LineNr">405 </span>  <span class="Normal">uint8_t</span> bitvector = <a href='033check_operands.cc.html#L301'>compute_expected_operand_bitvector</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
+<span id="L406" class="LineNr">406 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L264'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// duplicate operand type</span>
+<span id="L407" class="LineNr">407 </span>  <span class="Comment">// update 'expected' bitvector for the additional exception</span>
+<span id="L408" class="LineNr">408 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>has_operand_metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L409" class="LineNr">409 </span>    <span class="Normal">int32_t</span> mod = <a href='032---operands.cc.html#L507'>parse_int</a><span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">).</span>data<span class="Delimiter">);</span>
+<span id="L410" class="LineNr">410 </span>    <span class="Normal">switch</span> <span class="Delimiter">(</span>mod<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L411" class="LineNr">411 </span>    <span class="Normal">case</span> <span class="Constant">0</span>:
+<span id="L412" class="LineNr">412 </span>      <span class="Normal">if</span> <span class="Delimiter">(</span>has_operand_metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">)</span> &amp;&amp; <a href='032---operands.cc.html#L507'>parse_int</a><span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">).</span>data<span class="Delimiter">)</span> == <span class="Constant">5</span><span class="Delimiter">)</span>
+<span id="L413" class="LineNr">413 </span>        expected |= <span class="Delimiter">(</span><span class="Constant">1</span>&lt;&lt;DISP32<span class="Delimiter">);</span>
+<span id="L414" class="LineNr">414 </span>      <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L415" class="LineNr">415 </span>    <span class="Normal">case</span> <span class="Constant">1</span>:
+<span id="L416" class="LineNr">416 </span>      expected |= <span class="Delimiter">(</span><span class="Constant">1</span>&lt;&lt;DISP8<span class="Delimiter">);</span>
+<span id="L417" class="LineNr">417 </span>      <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L418" class="LineNr">418 </span>    <span class="Normal">case</span> <span class="Constant">2</span>:
+<span id="L419" class="LineNr">419 </span>      expected |= <span class="Delimiter">(</span><span class="Constant">1</span>&lt;&lt;DISP32<span class="Delimiter">);</span>
+<span id="L420" class="LineNr">420 </span>      <span class="Identifier">break</span><span class="Delimiter">;</span>
+<span id="L421" class="LineNr">421 </span>    <span class="Delimiter">}</span>
+<span id="L422" class="LineNr">422 </span>  <span class="Delimiter">}</span>
+<span id="L423" class="LineNr">423 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>bitvector == expected<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// all good with this instruction</span>
+<span id="L424" class="LineNr">424 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='033check_operands.cc.html#L76'>NUM_OPERAND_TYPES</a><span class="Delimiter">;</span>  ++i<span class="Delimiter">,</span> bitvector &gt;&gt;= <span class="Constant">1</span><span class="Delimiter">,</span> expected &gt;&gt;= <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L425" class="LineNr">425 </span><span class="CommentedCode">//?     cerr &lt;&lt; &quot;comparing for modrm &quot; &lt;&lt; HEXBYTE &lt;&lt; NUM(bitvector) &lt;&lt; &quot; with &quot; &lt;&lt; NUM(expected) &lt;&lt; '\n';</span>
+<span id="L426" class="LineNr">426 </span>    <span class="Normal">if</span> <span class="Delimiter">((</span>bitvector &amp; <span class="Constant">0x1</span><span class="Delimiter">)</span> == <span class="Delimiter">(</span>expected &amp; <span class="Constant">0x1</span><span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>  <span class="Comment">// all good with this operand</span>
+<span id="L427" class="LineNr">427 </span>    <span class="Normal">const</span> string&amp; optype = <span class="Special"><a href='033check_operands.cc.html#L79'>Operand_type_name</a></span><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
+<span id="L428" class="LineNr">428 </span>    <span class="Normal">if</span> <span class="Delimiter">((</span>bitvector &amp; <span class="Constant">0x1</span><span class="Delimiter">)</span> &gt; <span class="Delimiter">(</span>expected &amp; <span class="Constant">0x1</span><span class="Delimiter">))</span>
+<span id="L429" class="LineNr">429 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; maybe_op_name &lt;&lt; <span class="Constant">&quot;: unexpected &quot;</span> &lt;&lt; optype &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L430" class="LineNr">430 </span>    <span class="Normal">else</span>
+<span id="L431" class="LineNr">431 </span>      <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; maybe_op_name &lt;&lt; <span class="Constant">&quot;: missing &quot;</span> &lt;&lt; optype &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L432" class="LineNr">432 </span>    <span class="Comment">// continue giving all errors for a single instruction</span>
+<span id="L433" class="LineNr">433 </span>  <span class="Delimiter">}</span>
+<span id="L434" class="LineNr">434 </span>  <span class="Comment">// ignore settings in any unused bits</span>
 <span id="L435" class="LineNr">435 </span><span class="Delimiter">}</span>
 <span id="L436" class="LineNr">436 </span>
-<span id="L437" class="LineNr">437 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L437'>check_operand_metadata_absent</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; type<span class="Delimiter">,</span> <span class="Normal">const</span> word&amp; op<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; msg<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L438" class="LineNr">438 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>has_operand_metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> type<span class="Delimiter">))</span>
-<span id="L439" class="LineNr">439 </span>    <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='033check_operands.cc.html#L288'>maybe_name</a><span class="Delimiter">(</span>op<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;: unexpected &quot;</span> &lt;&lt; type &lt;&lt; <span class="Constant">&quot; operand (&quot;</span> &lt;&lt; msg &lt;&lt; <span class="Constant">&quot;)\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L437" class="LineNr">437 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L437'>check_operand_metadata_present</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; type<span class="Delimiter">,</span> <span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L438" class="LineNr">438 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!has_operand_metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> type<span class="Delimiter">))</span>
+<span id="L439" class="LineNr">439 </span>    <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='033check_operands.cc.html#L293'>maybe_name</a><span class="Delimiter">(</span>op<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;: missing &quot;</span> &lt;&lt; type &lt;&lt; <span class="Constant">&quot; operand\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L440" class="LineNr">440 </span><span class="Delimiter">}</span>
 <span id="L441" class="LineNr">441 </span>
-<span id="L442" class="LineNr">442 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L442'>test_modrm_with_displacement</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L443" class="LineNr">443 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">0x1</span><span class="Delimiter">;</span>
-<span id="L444" class="LineNr">444 </span>  transform<span class="Delimiter">(</span>
-<span id="L445" class="LineNr">445 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L446" class="LineNr">446 </span>      <span class="Comment">// just avoid null pointer</span>
-<span id="L447" class="LineNr">447 </span>      <span class="Constant">&quot;8b/copy 1/mod/lookup+disp8 0/rm32/EAX 2/r32/EDX 4/disp8\n&quot;</span>  <span class="Comment">// copy *(EAX+4) to EDX</span>
-<span id="L448" class="LineNr">448 </span>  <span class="Delimiter">);</span>
-<span id="L449" class="LineNr">449 </span>  <a href='003trace.cc.html#L296'>CHECK_TRACE_COUNT</a><span class="Delimiter">(</span><span class="Constant">&quot;error&quot;</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L450" class="LineNr">450 </span><span class="Delimiter">}</span>
-<span id="L451" class="LineNr">451 </span>
-<span id="L452" class="LineNr">452 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L452'>test_check_missing_disp8</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L453" class="LineNr">453 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L454" class="LineNr">454 </span>  transform<span class="Delimiter">(</span>
-<span id="L455" class="LineNr">455 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L456" class="LineNr">456 </span>      <span class="Constant">&quot;89/copy 1/mod/lookup+disp8 0/rm32/EAX 1/r32/ECX\n&quot;</span>  <span class="Comment">// missing disp8</span>
-<span id="L457" class="LineNr">457 </span>  <span class="Delimiter">);</span>
-<span id="L458" class="LineNr">458 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L459" class="LineNr">459 </span>      <span class="Constant">&quot;error: '89/copy 1/mod/lookup+disp8 0/rm32/EAX 1/r32/ECX' (copy r32 to rm32): missing disp8 operand\n&quot;</span>
-<span id="L460" class="LineNr">460 </span>  <span class="Delimiter">);</span>
-<span id="L461" class="LineNr">461 </span><span class="Delimiter">}</span>
-<span id="L462" class="LineNr">462 </span>
-<span id="L463" class="LineNr">463 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L463'>test_check_missing_disp32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L464" class="LineNr">464 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L465" class="LineNr">465 </span>  transform<span class="Delimiter">(</span>
-<span id="L466" class="LineNr">466 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L467" class="LineNr">467 </span>      <span class="Constant">&quot;8b/copy 0/mod/indirect 5/rm32/.disp32 2/r32/EDX\n&quot;</span>  <span class="Comment">// missing disp32</span>
-<span id="L468" class="LineNr">468 </span>  <span class="Delimiter">);</span>
-<span id="L469" class="LineNr">469 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L470" class="LineNr">470 </span>      <span class="Constant">&quot;error: '8b/copy 0/mod/indirect 5/rm32/.disp32 2/r32/EDX' (copy rm32 to r32): missing <a href='040---tests.cc.html#L82'>disp32</a> operand\n&quot;</span>
-<span id="L471" class="LineNr">471 </span>  <span class="Delimiter">);</span>
-<span id="L472" class="LineNr">472 </span><span class="Delimiter">}</span>
-<span id="L473" class="LineNr">473 </span>
-<span id="L474" class="LineNr">474 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L474'>test_conflicting_operands_in_modrm_instruction</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L475" class="LineNr">475 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L476" class="LineNr">476 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L477" class="LineNr">477 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L478" class="LineNr">478 </span>      <span class="Constant">&quot;01/add 0/mod 3/mod\n&quot;</span>
-<span id="L479" class="LineNr">479 </span>  <span class="Delimiter">);</span>
-<span id="L480" class="LineNr">480 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L481" class="LineNr">481 </span>      <span class="Constant">&quot;error: '01/add 0/mod 3/mod' has conflicting mod operands\n&quot;</span>
-<span id="L482" class="LineNr">482 </span>  <span class="Delimiter">);</span>
-<span id="L483" class="LineNr">483 </span><span class="Delimiter">}</span>
-<span id="L484" class="LineNr">484 </span>
-<span id="L485" class="LineNr">485 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L485'>test_conflicting_operand_type_modrm</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L486" class="LineNr">486 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L487" class="LineNr">487 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L488" class="LineNr">488 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L489" class="LineNr">489 </span>      <span class="Constant">&quot;01/add 0/mod 3/rm32/r32\n&quot;</span>
-<span id="L490" class="LineNr">490 </span>  <span class="Delimiter">);</span>
-<span id="L491" class="LineNr">491 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L492" class="LineNr">492 </span>      <span class="Constant">&quot;error: '3/rm32/r32' has conflicting operand types; it should have only one\n&quot;</span>
-<span id="L493" class="LineNr">493 </span>  <span class="Delimiter">);</span>
-<span id="L494" class="LineNr">494 </span><span class="Delimiter">}</span>
-<span id="L495" class="LineNr">495 </span>
-<span id="L496" class="LineNr">496 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L496'>test_check_missing_rm32_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L497" class="LineNr">497 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L498" class="LineNr">498 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L499" class="LineNr">499 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L500" class="LineNr">500 </span>      <span class="Constant">&quot;81 0/add/subop 0/mod            1/imm32\n&quot;</span>
-<span id="L501" class="LineNr">501 </span>  <span class="Delimiter">);</span>
-<span id="L502" class="LineNr">502 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L503" class="LineNr">503 </span>      <span class="Constant">&quot;error: '81 0/add/subop 0/mod 1/imm32' (combine rm32 with imm32 based on subop): missing rm32 operand\n&quot;</span>
-<span id="L504" class="LineNr">504 </span>  <span class="Delimiter">);</span>
-<span id="L505" class="LineNr">505 </span><span class="Delimiter">}</span>
-<span id="L506" class="LineNr">506 </span>
-<span id="L507" class="LineNr">507 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L507'>test_check_missing_subop_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L508" class="LineNr">508 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L509" class="LineNr">509 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L510" class="LineNr">510 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L511" class="LineNr">511 </span>      <span class="Constant">&quot;81             0/mod 3/rm32/ebx 1/imm32\n&quot;</span>
-<span id="L512" class="LineNr">512 </span>  <span class="Delimiter">);</span>
-<span id="L513" class="LineNr">513 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L514" class="LineNr">514 </span>      <span class="Constant">&quot;error: '81 0/mod 3/rm32/ebx 1/imm32' (combine rm32 with imm32 based on subop): missing subop operand\n&quot;</span>
-<span id="L515" class="LineNr">515 </span>  <span class="Delimiter">);</span>
-<span id="L516" class="LineNr">516 </span><span class="Delimiter">}</span>
-<span id="L517" class="LineNr">517 </span>
-<span id="L518" class="LineNr">518 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L518'>test_check_missing_base_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L519" class="LineNr">519 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L520" class="LineNr">520 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L521" class="LineNr">521 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L522" class="LineNr">522 </span>      <span class="Constant">&quot;81 0/add/subop 0/mod/indirect 4/rm32/use-sib 1/imm32\n&quot;</span>
-<span id="L523" class="LineNr">523 </span>  <span class="Delimiter">);</span>
-<span id="L524" class="LineNr">524 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L525" class="LineNr">525 </span>      <span class="Constant">&quot;error: '81 0/add/subop 0/mod/indirect 4/rm32/use-sib 1/imm32' (combine rm32 with imm32 based on subop): missing base operand\n&quot;</span>
-<span id="L526" class="LineNr">526 </span>  <span class="Delimiter">);</span>
-<span id="L527" class="LineNr">527 </span><span class="Delimiter">}</span>
-<span id="L528" class="LineNr">528 </span>
-<span id="L529" class="LineNr">529 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L529'>test_check_missing_index_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L530" class="LineNr">530 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L531" class="LineNr">531 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L532" class="LineNr">532 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L533" class="LineNr">533 </span>      <span class="Constant">&quot;81 0/add/subop 0/mod/indirect 4/rm32/use-sib 0/base 1/imm32\n&quot;</span>
-<span id="L534" class="LineNr">534 </span>  <span class="Delimiter">);</span>
-<span id="L535" class="LineNr">535 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L536" class="LineNr">536 </span>      <span class="Constant">&quot;error: '81 0/add/subop 0/mod/indirect 4/rm32/use-sib 0/base 1/imm32' (combine rm32 with imm32 based on subop): missing index operand\n&quot;</span>
-<span id="L537" class="LineNr">537 </span>  <span class="Delimiter">);</span>
-<span id="L538" class="LineNr">538 </span><span class="Delimiter">}</span>
-<span id="L539" class="LineNr">539 </span>
-<span id="L540" class="LineNr">540 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L540'>test_check_missing_base_operand_2</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L541" class="LineNr">541 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L542" class="LineNr">542 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L543" class="LineNr">543 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L544" class="LineNr">544 </span>      <span class="Constant">&quot;81 0/add/subop 0/mod/indirect 4/rm32/use-sib 2/index 3/scale 1/imm32\n&quot;</span>
-<span id="L545" class="LineNr">545 </span>  <span class="Delimiter">);</span>
-<span id="L546" class="LineNr">546 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L547" class="LineNr">547 </span>      <span class="Constant">&quot;error: '81 0/add/subop 0/mod/indirect 4/rm32/use-sib 2/index 3/scale 1/imm32' (combine rm32 with imm32 based on subop): missing base operand\n&quot;</span>
-<span id="L548" class="LineNr">548 </span>  <span class="Delimiter">);</span>
-<span id="L549" class="LineNr">549 </span><span class="Delimiter">}</span>
-<span id="L550" class="LineNr">550 </span>
-<span id="L551" class="LineNr">551 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L551'>test_check_extra_displacement</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L552" class="LineNr">552 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L553" class="LineNr">553 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L554" class="LineNr">554 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L555" class="LineNr">555 </span>      <span class="Constant">&quot;89/copy 0/mod/indirect 0/rm32/EAX 1/r32/ECX 4/disp8\n&quot;</span>
-<span id="L556" class="LineNr">556 </span>  <span class="Delimiter">);</span>
-<span id="L557" class="LineNr">557 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L558" class="LineNr">558 </span>      <span class="Constant">&quot;error: '89/copy 0/mod/indirect 0/rm32/EAX 1/r32/ECX 4/disp8' (copy r32 to rm32): unexpected disp8 operand\n&quot;</span>
-<span id="L559" class="LineNr">559 </span>  <span class="Delimiter">);</span>
-<span id="L560" class="LineNr">560 </span><span class="Delimiter">}</span>
-<span id="L561" class="LineNr">561 </span>
-<span id="L562" class="LineNr">562 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L562'>test_check_duplicate_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L563" class="LineNr">563 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L564" class="LineNr">564 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L565" class="LineNr">565 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L566" class="LineNr">566 </span>      <span class="Constant">&quot;89/copy 0/mod/indirect 0/rm32/EAX 1/r32/ECX 1/r32\n&quot;</span>
-<span id="L567" class="LineNr">567 </span>  <span class="Delimiter">);</span>
-<span id="L568" class="LineNr">568 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L569" class="LineNr">569 </span>      <span class="Constant">&quot;error: '89/copy 0/mod/indirect 0/rm32/EAX 1/r32/ECX 1/r32': duplicate r32 operand\n&quot;</span>
-<span id="L570" class="LineNr">570 </span>  <span class="Delimiter">);</span>
-<span id="L571" class="LineNr">571 </span><span class="Delimiter">}</span>
-<span id="L572" class="LineNr">572 </span>
-<span id="L573" class="LineNr">573 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L573'>test_check_base_operand_not_needed_in_direct_mode</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L574" class="LineNr">574 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L575" class="LineNr">575 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L576" class="LineNr">576 </span>      <span class="Constant">&quot;81 0/add/subop 3/mod/indirect 4/rm32/use-sib 1/imm32\n&quot;</span>
-<span id="L577" class="LineNr">577 </span>  <span class="Delimiter">);</span>
-<span id="L578" class="LineNr">578 </span>  <a href='003trace.cc.html#L296'>CHECK_TRACE_COUNT</a><span class="Delimiter">(</span><span class="Constant">&quot;error&quot;</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
-<span id="L579" class="LineNr">579 </span><span class="Delimiter">}</span>
-<span id="L580" class="LineNr">580 </span>
-<span id="L581" class="LineNr">581 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L581'>test_extra_modrm</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L582" class="LineNr">582 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L583" class="LineNr">583 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L584" class="LineNr">584 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L585" class="LineNr">585 </span>      <span class="Constant">&quot;59/pop-to-ECX  3/mod/direct 1/rm32/ECX 4/r32/ESP\n&quot;</span>
-<span id="L586" class="LineNr">586 </span>  <span class="Delimiter">);</span>
-<span id="L587" class="LineNr">587 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L588" class="LineNr">588 </span>      <span class="Constant">&quot;error: '59/pop-to-ECX 3/mod/direct 1/rm32/ECX 4/r32/ESP' (<a href='013direct_addressing.cc.html#L1272'>pop</a> top of stack to <a href='010---vm.cc.html#L11'>ECX</a>): unexpected modrm operand\n&quot;</span>
-<span id="L589" class="LineNr">589 </span>  <span class="Delimiter">);</span>
-<span id="L590" class="LineNr">590 </span><span class="Delimiter">}</span>
-<span id="L591" class="LineNr">591 </span>
-<span id="L592" class="LineNr">592 </span><span class="SalientComment">//:: similarly handle multi-byte opcodes</span>
-<span id="L593" class="LineNr">593 </span>
-<span id="L594" class="LineNr">594 </span><span class="Normal">void</span> check_operands_0f<span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L595" class="LineNr">595 </span>  assert<span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>data == <span class="Constant">&quot;0f&quot;</span><span class="Delimiter">);</span>
-<span id="L596" class="LineNr">596 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L170'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L597" class="LineNr">597 </span>    <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;opcode '0f' requires a second opcode\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L598" class="LineNr">598 </span>    <span class="Identifier">return</span><span class="Delimiter">;</span>
-<span id="L599" class="LineNr">599 </span>  <span class="Delimiter">}</span>
-<span id="L600" class="LineNr">600 </span>  <a href='011run.cc.html#L127'>word</a> op = <a href='033check_operands.cc.html#L41'>preprocess_op</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">));</span>
-<span id="L601" class="LineNr">601 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L602" class="LineNr">602 </span>    <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;unknown 2-byte opcode '0f &quot;</span> &lt;&lt; op<span class="Delimiter">.</span>data &lt;&lt; <span class="Constant">&quot;'\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L442" class="LineNr">442 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L442'>check_operand_metadata_absent</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; type<span class="Delimiter">,</span> <span class="Normal">const</span> word&amp; op<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; msg<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L443" class="LineNr">443 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>has_operand_metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> type<span class="Delimiter">))</span>
+<span id="L444" class="LineNr">444 </span>    <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'&quot;</span> &lt;&lt; <a href='033check_operands.cc.html#L293'>maybe_name</a><span class="Delimiter">(</span>op<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;: unexpected &quot;</span> &lt;&lt; type &lt;&lt; <span class="Constant">&quot; operand (&quot;</span> &lt;&lt; msg &lt;&lt; <span class="Constant">&quot;)\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L445" class="LineNr">445 </span><span class="Delimiter">}</span>
+<span id="L446" class="LineNr">446 </span>
+<span id="L447" class="LineNr">447 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L447'>test_modrm_with_displacement</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L448" class="LineNr">448 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">0x1</span><span class="Delimiter">;</span>
+<span id="L449" class="LineNr">449 </span>  transform<span class="Delimiter">(</span>
+<span id="L450" class="LineNr">450 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L451" class="LineNr">451 </span>      <span class="Comment">// just avoid null pointer</span>
+<span id="L452" class="LineNr">452 </span>      <span class="Constant">&quot;8b/copy 1/mod/lookup+disp8 0/rm32/EAX 2/r32/EDX 4/disp8\n&quot;</span>  <span class="Comment">// copy *(EAX+4) to EDX</span>
+<span id="L453" class="LineNr">453 </span>  <span class="Delimiter">);</span>
+<span id="L454" class="LineNr">454 </span>  <a href='003trace.cc.html#L296'>CHECK_TRACE_COUNT</a><span class="Delimiter">(</span><span class="Constant">&quot;error&quot;</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L455" class="LineNr">455 </span><span class="Delimiter">}</span>
+<span id="L456" class="LineNr">456 </span>
+<span id="L457" class="LineNr">457 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L457'>test_check_missing_disp8</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L458" class="LineNr">458 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L459" class="LineNr">459 </span>  transform<span class="Delimiter">(</span>
+<span id="L460" class="LineNr">460 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L461" class="LineNr">461 </span>      <span class="Constant">&quot;89/copy 1/mod/lookup+disp8 0/rm32/EAX 1/r32/ECX\n&quot;</span>  <span class="Comment">// missing disp8</span>
+<span id="L462" class="LineNr">462 </span>  <span class="Delimiter">);</span>
+<span id="L463" class="LineNr">463 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L464" class="LineNr">464 </span>      <span class="Constant">&quot;error: '89/copy 1/mod/lookup+disp8 0/rm32/EAX 1/r32/ECX' (copy r32 to rm32): missing disp8 operand\n&quot;</span>
+<span id="L465" class="LineNr">465 </span>  <span class="Delimiter">);</span>
+<span id="L466" class="LineNr">466 </span><span class="Delimiter">}</span>
+<span id="L467" class="LineNr">467 </span>
+<span id="L468" class="LineNr">468 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L468'>test_check_missing_disp32</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L469" class="LineNr">469 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L470" class="LineNr">470 </span>  transform<span class="Delimiter">(</span>
+<span id="L471" class="LineNr">471 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L472" class="LineNr">472 </span>      <span class="Constant">&quot;8b/copy 0/mod/indirect 5/rm32/.disp32 2/r32/EDX\n&quot;</span>  <span class="Comment">// missing disp32</span>
+<span id="L473" class="LineNr">473 </span>  <span class="Delimiter">);</span>
+<span id="L474" class="LineNr">474 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L475" class="LineNr">475 </span>      <span class="Constant">&quot;error: '8b/copy 0/mod/indirect 5/rm32/.disp32 2/r32/EDX' (copy rm32 to r32): missing <a href='040---tests.cc.html#L82'>disp32</a> operand\n&quot;</span>
+<span id="L476" class="LineNr">476 </span>  <span class="Delimiter">);</span>
+<span id="L477" class="LineNr">477 </span><span class="Delimiter">}</span>
+<span id="L478" class="LineNr">478 </span>
+<span id="L479" class="LineNr">479 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L479'>test_conflicting_operands_in_modrm_instruction</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L480" class="LineNr">480 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L481" class="LineNr">481 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L482" class="LineNr">482 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L483" class="LineNr">483 </span>      <span class="Constant">&quot;01/add 0/mod 3/mod\n&quot;</span>
+<span id="L484" class="LineNr">484 </span>  <span class="Delimiter">);</span>
+<span id="L485" class="LineNr">485 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L486" class="LineNr">486 </span>      <span class="Constant">&quot;error: '01/add 0/mod 3/mod' has conflicting mod operands\n&quot;</span>
+<span id="L487" class="LineNr">487 </span>  <span class="Delimiter">);</span>
+<span id="L488" class="LineNr">488 </span><span class="Delimiter">}</span>
+<span id="L489" class="LineNr">489 </span>
+<span id="L490" class="LineNr">490 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L490'>test_conflicting_operand_type_modrm</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L491" class="LineNr">491 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L492" class="LineNr">492 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L493" class="LineNr">493 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L494" class="LineNr">494 </span>      <span class="Constant">&quot;01/add 0/mod 3/rm32/r32\n&quot;</span>
+<span id="L495" class="LineNr">495 </span>  <span class="Delimiter">);</span>
+<span id="L496" class="LineNr">496 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L497" class="LineNr">497 </span>      <span class="Constant">&quot;error: '3/rm32/r32' has conflicting operand types; it should have only one\n&quot;</span>
+<span id="L498" class="LineNr">498 </span>  <span class="Delimiter">);</span>
+<span id="L499" class="LineNr">499 </span><span class="Delimiter">}</span>
+<span id="L500" class="LineNr">500 </span>
+<span id="L501" class="LineNr">501 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L501'>test_check_missing_rm32_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L502" class="LineNr">502 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L503" class="LineNr">503 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L504" class="LineNr">504 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L505" class="LineNr">505 </span>      <span class="Constant">&quot;81 0/add/subop 0/mod            1/imm32\n&quot;</span>
+<span id="L506" class="LineNr">506 </span>  <span class="Delimiter">);</span>
+<span id="L507" class="LineNr">507 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L508" class="LineNr">508 </span>      <span class="Constant">&quot;error: '81 0/add/subop 0/mod 1/imm32' (combine rm32 with imm32 based on subop): missing rm32 operand\n&quot;</span>
+<span id="L509" class="LineNr">509 </span>  <span class="Delimiter">);</span>
+<span id="L510" class="LineNr">510 </span><span class="Delimiter">}</span>
+<span id="L511" class="LineNr">511 </span>
+<span id="L512" class="LineNr">512 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L512'>test_check_missing_subop_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L513" class="LineNr">513 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L514" class="LineNr">514 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L515" class="LineNr">515 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L516" class="LineNr">516 </span>      <span class="Constant">&quot;81             0/mod 3/rm32/ebx 1/imm32\n&quot;</span>
+<span id="L517" class="LineNr">517 </span>  <span class="Delimiter">);</span>
+<span id="L518" class="LineNr">518 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L519" class="LineNr">519 </span>      <span class="Constant">&quot;error: '81 0/mod 3/rm32/ebx 1/imm32' (combine rm32 with imm32 based on subop): missing subop operand\n&quot;</span>
+<span id="L520" class="LineNr">520 </span>  <span class="Delimiter">);</span>
+<span id="L521" class="LineNr">521 </span><span class="Delimiter">}</span>
+<span id="L522" class="LineNr">522 </span>
+<span id="L523" class="LineNr">523 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L523'>test_check_missing_base_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L524" class="LineNr">524 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L525" class="LineNr">525 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L526" class="LineNr">526 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L527" class="LineNr">527 </span>      <span class="Constant">&quot;81 0/add/subop 0/mod/indirect 4/rm32/use-sib 1/imm32\n&quot;</span>
+<span id="L528" class="LineNr">528 </span>  <span class="Delimiter">);</span>
+<span id="L529" class="LineNr">529 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L530" class="LineNr">530 </span>      <span class="Constant">&quot;error: '81 0/add/subop 0/mod/indirect 4/rm32/use-sib 1/imm32' (combine rm32 with imm32 based on subop): missing base operand\n&quot;</span>
+<span id="L531" class="LineNr">531 </span>  <span class="Delimiter">);</span>
+<span id="L532" class="LineNr">532 </span><span class="Delimiter">}</span>
+<span id="L533" class="LineNr">533 </span>
+<span id="L534" class="LineNr">534 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L534'>test_check_missing_index_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L535" class="LineNr">535 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L536" class="LineNr">536 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L537" class="LineNr">537 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L538" class="LineNr">538 </span>      <span class="Constant">&quot;81 0/add/subop 0/mod/indirect 4/rm32/use-sib 0/base 1/imm32\n&quot;</span>
+<span id="L539" class="LineNr">539 </span>  <span class="Delimiter">);</span>
+<span id="L540" class="LineNr">540 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L541" class="LineNr">541 </span>      <span class="Constant">&quot;error: '81 0/add/subop 0/mod/indirect 4/rm32/use-sib 0/base 1/imm32' (combine rm32 with imm32 based on subop): missing index operand\n&quot;</span>
+<span id="L542" class="LineNr">542 </span>  <span class="Delimiter">);</span>
+<span id="L543" class="LineNr">543 </span><span class="Delimiter">}</span>
+<span id="L544" class="LineNr">544 </span>
+<span id="L545" class="LineNr">545 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L545'>test_check_missing_base_operand_2</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L546" class="LineNr">546 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L547" class="LineNr">547 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L548" class="LineNr">548 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L549" class="LineNr">549 </span>      <span class="Constant">&quot;81 0/add/subop 0/mod/indirect 4/rm32/use-sib 2/index 3/scale 1/imm32\n&quot;</span>
+<span id="L550" class="LineNr">550 </span>  <span class="Delimiter">);</span>
+<span id="L551" class="LineNr">551 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L552" class="LineNr">552 </span>      <span class="Constant">&quot;error: '81 0/add/subop 0/mod/indirect 4/rm32/use-sib 2/index 3/scale 1/imm32' (combine rm32 with imm32 based on subop): missing base operand\n&quot;</span>
+<span id="L553" class="LineNr">553 </span>  <span class="Delimiter">);</span>
+<span id="L554" class="LineNr">554 </span><span class="Delimiter">}</span>
+<span id="L555" class="LineNr">555 </span>
+<span id="L556" class="LineNr">556 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L556'>test_check_extra_displacement</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L557" class="LineNr">557 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L558" class="LineNr">558 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L559" class="LineNr">559 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L560" class="LineNr">560 </span>      <span class="Constant">&quot;89/copy 0/mod/indirect 0/rm32/EAX 1/r32/ECX 4/disp8\n&quot;</span>
+<span id="L561" class="LineNr">561 </span>  <span class="Delimiter">);</span>
+<span id="L562" class="LineNr">562 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L563" class="LineNr">563 </span>      <span class="Constant">&quot;error: '89/copy 0/mod/indirect 0/rm32/EAX 1/r32/ECX 4/disp8' (copy r32 to rm32): unexpected disp8 operand\n&quot;</span>
+<span id="L564" class="LineNr">564 </span>  <span class="Delimiter">);</span>
+<span id="L565" class="LineNr">565 </span><span class="Delimiter">}</span>
+<span id="L566" class="LineNr">566 </span>
+<span id="L567" class="LineNr">567 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L567'>test_check_duplicate_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L568" class="LineNr">568 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L569" class="LineNr">569 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L570" class="LineNr">570 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L571" class="LineNr">571 </span>      <span class="Constant">&quot;89/copy 0/mod/indirect 0/rm32/EAX 1/r32/ECX 1/r32\n&quot;</span>
+<span id="L572" class="LineNr">572 </span>  <span class="Delimiter">);</span>
+<span id="L573" class="LineNr">573 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L574" class="LineNr">574 </span>      <span class="Constant">&quot;error: '89/copy 0/mod/indirect 0/rm32/EAX 1/r32/ECX 1/r32': duplicate r32 operand\n&quot;</span>
+<span id="L575" class="LineNr">575 </span>  <span class="Delimiter">);</span>
+<span id="L576" class="LineNr">576 </span><span class="Delimiter">}</span>
+<span id="L577" class="LineNr">577 </span>
+<span id="L578" class="LineNr">578 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L578'>test_check_base_operand_not_needed_in_direct_mode</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L579" class="LineNr">579 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L580" class="LineNr">580 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L581" class="LineNr">581 </span>      <span class="Constant">&quot;81 0/add/subop 3/mod/indirect 4/rm32/use-sib 1/imm32\n&quot;</span>
+<span id="L582" class="LineNr">582 </span>  <span class="Delimiter">);</span>
+<span id="L583" class="LineNr">583 </span>  <a href='003trace.cc.html#L296'>CHECK_TRACE_COUNT</a><span class="Delimiter">(</span><span class="Constant">&quot;error&quot;</span><span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">);</span>
+<span id="L584" class="LineNr">584 </span><span class="Delimiter">}</span>
+<span id="L585" class="LineNr">585 </span>
+<span id="L586" class="LineNr">586 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L586'>test_extra_modrm</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L587" class="LineNr">587 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L588" class="LineNr">588 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L589" class="LineNr">589 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L590" class="LineNr">590 </span>      <span class="Constant">&quot;59/pop-to-ECX  3/mod/direct 1/rm32/ECX 4/r32/ESP\n&quot;</span>
+<span id="L591" class="LineNr">591 </span>  <span class="Delimiter">);</span>
+<span id="L592" class="LineNr">592 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L593" class="LineNr">593 </span>      <span class="Constant">&quot;error: '59/pop-to-ECX 3/mod/direct 1/rm32/ECX 4/r32/ESP' (<a href='013direct_addressing.cc.html#L1270'>pop</a> top of stack to <a href='010---vm.cc.html#L11'>ECX</a>): unexpected modrm operand\n&quot;</span>
+<span id="L594" class="LineNr">594 </span>  <span class="Delimiter">);</span>
+<span id="L595" class="LineNr">595 </span><span class="Delimiter">}</span>
+<span id="L596" class="LineNr">596 </span>
+<span id="L597" class="LineNr">597 </span><span class="SalientComment">//:: similarly handle multi-byte opcodes</span>
+<span id="L598" class="LineNr">598 </span>
+<span id="L599" class="LineNr">599 </span><span class="Normal">void</span> check_operands_0f<span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L600" class="LineNr">600 </span>  assert<span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>data == <span class="Constant">&quot;0f&quot;</span><span class="Delimiter">);</span>
+<span id="L601" class="LineNr">601 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L170'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">)</span> == <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L602" class="LineNr">602 </span>    <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;opcode '0f' requires a second opcode\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L603" class="LineNr">603 </span>    <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L604" class="LineNr">604 </span>  <span class="Delimiter">}</span>
-<span id="L605" class="LineNr">605 </span>  check_operands_0f<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> op<span class="Delimiter">);</span>
-<span id="L606" class="LineNr">606 </span><span class="Delimiter">}</span>
-<span id="L607" class="LineNr">607 </span>
-<span id="L608" class="LineNr">608 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L608'>check_operands_f3</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; <span class="Comment">/*</span><span class="Comment">unused</span><span class="Comment">*/</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L609" class="LineNr">609 </span>  <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;no supported opcodes starting with f3\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-<span id="L610" class="LineNr">610 </span><span class="Delimiter">}</span>
-<span id="L611" class="LineNr">611 </span>
-<span id="L612" class="LineNr">612 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L612'>test_check_missing_disp32_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L613" class="LineNr">613 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
-<span id="L614" class="LineNr">614 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
-<span id="L615" class="LineNr">615 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L616" class="LineNr">616 </span>      <span class="Constant">&quot;  0f 84  # jmp if ZF to ??\n&quot;</span>
-<span id="L617" class="LineNr">617 </span>  <span class="Delimiter">);</span>
-<span id="L618" class="LineNr">618 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L619" class="LineNr">619 </span>      <span class="Constant">&quot;error: '0f 84' (jump <a href='040---tests.cc.html#L82'>disp32</a> bytes away if equal, if <a href='010---vm.cc.html#L80'>ZF</a> is set): missing <a href='040---tests.cc.html#L82'>disp32</a> operand\n&quot;</span>
-<span id="L620" class="LineNr">620 </span>  <span class="Delimiter">);</span>
-<span id="L621" class="LineNr">621 </span><span class="Delimiter">}</span>
-<span id="L622" class="LineNr">622 </span>
-<span id="L623" class="LineNr">623 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L623'>test_0f_opcode_with_modrm</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L624" class="LineNr">624 </span>  transform<span class="Delimiter">(</span>
-<span id="L625" class="LineNr">625 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
-<span id="L626" class="LineNr">626 </span>      <span class="Constant">&quot;0f af/multiply 2/mod/*+disp32 5/rm32/ebp 8/disp32 0/r32\n&quot;</span>
-<span id="L627" class="LineNr">627 </span>  <span class="Delimiter">);</span>
-<span id="L628" class="LineNr">628 </span>  <a href='003trace.cc.html#L306'>CHECK_TRACE_DOESNT_CONTAIN_ERRORS</a><span class="Delimiter">();</span>
-<span id="L629" class="LineNr">629 </span><span class="Delimiter">}</span>
-<span id="L630" class="LineNr">630 </span>
-<span id="L631" class="LineNr">631 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
-<span id="L632" class="LineNr">632 </span>map&lt;<span class="Comment">/*</span><span class="Comment">op</span><span class="Comment">*/</span>string<span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">bitvector</span><span class="Comment">*/</span><span class="Normal">uint8_t</span>&gt; <span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">;</span>
-<span id="L633" class="LineNr">633 </span><span class="Delimiter">:(before &quot;End Init Permitted Operands&quot;)</span>
-<span id="L634" class="LineNr">634 </span><span class="SalientComment">//// Class D: just op and disp32</span>
-<span id="L635" class="LineNr">635 </span><span class="Comment">//  imm32 imm8  disp32 |disp16  disp8 subop modrm</span>
-<span id="L636" class="LineNr">636 </span><span class="Comment">//  0     0     1      |0       0     0     0</span>
-<span id="L637" class="LineNr">637 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;82&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
-<span id="L638" class="LineNr">638 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;83&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
-<span id="L639" class="LineNr">639 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;84&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
-<span id="L640" class="LineNr">640 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;85&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
-<span id="L641" class="LineNr">641 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;86&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
-<span id="L642" class="LineNr">642 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;87&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
-<span id="L643" class="LineNr">643 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;8c&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
-<span id="L644" class="LineNr">644 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;8d&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
-<span id="L645" class="LineNr">645 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;8e&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
-<span id="L646" class="LineNr">646 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;8f&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
-<span id="L647" class="LineNr">647 </span>
-<span id="L648" class="LineNr">648 </span><span class="SalientComment">//// Class M: using ModR/M byte</span>
-<span id="L649" class="LineNr">649 </span><span class="Comment">//  imm32 imm8  disp32 |disp16  disp8 subop modrm</span>
-<span id="L650" class="LineNr">650 </span><span class="Comment">//  0     0     0      |0       0     0     1</span>
-<span id="L651" class="LineNr">651 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;af&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L605" class="LineNr">605 </span>  <a href='011run.cc.html#L127'>word</a> op = <a href='033check_operands.cc.html#L41'>preprocess_op</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">));</span>
+<span id="L606" class="LineNr">606 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L607" class="LineNr">607 </span>    <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;unknown 2-byte opcode '0f &quot;</span> &lt;&lt; op<span class="Delimiter">.</span>data &lt;&lt; <span class="Constant">&quot;'\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L608" class="LineNr">608 </span>    <span class="Identifier">return</span><span class="Delimiter">;</span>
+<span id="L609" class="LineNr">609 </span>  <span class="Delimiter">}</span>
+<span id="L610" class="LineNr">610 </span>  check_operands_0f<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> op<span class="Delimiter">);</span>
+<span id="L611" class="LineNr">611 </span><span class="Delimiter">}</span>
+<span id="L612" class="LineNr">612 </span>
+<span id="L613" class="LineNr">613 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L613'>check_operands_f3</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; <span class="Comment">/*</span><span class="Comment">unused</span><span class="Comment">*/</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L614" class="LineNr">614 </span>  <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;no supported opcodes starting with f3\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+<span id="L615" class="LineNr">615 </span><span class="Delimiter">}</span>
+<span id="L616" class="LineNr">616 </span>
+<span id="L617" class="LineNr">617 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L617'>test_check_missing_disp32_operand</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L618" class="LineNr">618 </span>  <span class="Special">Hide_errors</span> = <span class="Constant">true</span><span class="Delimiter">;</span>
+<span id="L619" class="LineNr">619 </span>  <a href='011run.cc.html#L82'>run</a><span class="Delimiter">(</span>
+<span id="L620" class="LineNr">620 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L621" class="LineNr">621 </span>      <span class="Constant">&quot;  0f 84  # jmp if ZF to ??\n&quot;</span>
+<span id="L622" class="LineNr">622 </span>  <span class="Delimiter">);</span>
+<span id="L623" class="LineNr">623 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
+<span id="L624" class="LineNr">624 </span>      <span class="Constant">&quot;error: '0f 84' (jump <a href='040---tests.cc.html#L82'>disp32</a> bytes away if equal, if <a href='010---vm.cc.html#L80'>ZF</a> is set): missing <a href='040---tests.cc.html#L82'>disp32</a> operand\n&quot;</span>
+<span id="L625" class="LineNr">625 </span>  <span class="Delimiter">);</span>
+<span id="L626" class="LineNr">626 </span><span class="Delimiter">}</span>
+<span id="L627" class="LineNr">627 </span>
+<span id="L628" class="LineNr">628 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L628'>test_0f_opcode_with_modrm</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
+<span id="L629" class="LineNr">629 </span>  transform<span class="Delimiter">(</span>
+<span id="L630" class="LineNr">630 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
+<span id="L631" class="LineNr">631 </span>      <span class="Constant">&quot;0f af/multiply 2/mod/*+disp32 5/rm32/ebp 8/disp32 0/r32\n&quot;</span>
+<span id="L632" class="LineNr">632 </span>  <span class="Delimiter">);</span>
+<span id="L633" class="LineNr">633 </span>  <a href='003trace.cc.html#L306'>CHECK_TRACE_DOESNT_CONTAIN_ERRORS</a><span class="Delimiter">();</span>
+<span id="L634" class="LineNr">634 </span><span class="Delimiter">}</span>
+<span id="L635" class="LineNr">635 </span>
+<span id="L636" class="LineNr">636 </span><span class="Delimiter">:(before &quot;End Globals&quot;)</span>
+<span id="L637" class="LineNr">637 </span>map&lt;<span class="Comment">/*</span><span class="Comment">op</span><span class="Comment">*/</span>string<span class="Delimiter">,</span> <span class="Comment">/*</span><span class="Comment">bitvector</span><span class="Comment">*/</span><span class="Normal">uint8_t</span>&gt; <span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">;</span>
+<span id="L638" class="LineNr">638 </span><span class="Delimiter">:(before &quot;End Init Permitted Operands&quot;)</span>
+<span id="L639" class="LineNr">639 </span><span class="SalientComment">//// Class D: just op and disp32</span>
+<span id="L640" class="LineNr">640 </span><span class="Comment">//  imm32 imm8  disp32 |disp16  disp8 subop modrm</span>
+<span id="L641" class="LineNr">641 </span><span class="Comment">//  0     0     1      |0       0     0     0</span>
+<span id="L642" class="LineNr">642 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;82&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
+<span id="L643" class="LineNr">643 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;83&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
+<span id="L644" class="LineNr">644 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;84&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
+<span id="L645" class="LineNr">645 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;85&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
+<span id="L646" class="LineNr">646 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;86&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
+<span id="L647" class="LineNr">647 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;87&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
+<span id="L648" class="LineNr">648 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;8c&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
+<span id="L649" class="LineNr">649 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;8d&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
+<span id="L650" class="LineNr">650 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;8e&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
+<span id="L651" class="LineNr">651 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;8f&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x10</span><span class="Delimiter">);</span>
 <span id="L652" class="LineNr">652 </span>
-<span id="L653" class="LineNr">653 </span><span class="Delimiter">:(code)</span>
-<span id="L654" class="LineNr">654 </span><span class="Normal">void</span> check_operands_0f<span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L655" class="LineNr">655 </span>  <span class="Normal">uint8_t</span> expected_bitvector = get<span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L632'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
-<span id="L656" class="LineNr">656 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>HAS<span class="Delimiter">(</span>expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L69'>MODRM</a><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L657" class="LineNr">657 </span>    <a href='033check_operands.cc.html#L372'>check_operands_modrm</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> op<span class="Delimiter">);</span>
-<span id="L658" class="LineNr">658 </span>    <a href='033check_operands.cc.html#L398'>compare_bitvector_modrm</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L665'>maybe_name_0f</a><span class="Delimiter">(</span>op<span class="Delimiter">));</span>
-<span id="L659" class="LineNr">659 </span>  <span class="Delimiter">}</span>
-<span id="L660" class="LineNr">660 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
-<span id="L661" class="LineNr">661 </span>    <a href='033check_operands.cc.html#L270'>compare_bitvector</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> CLEAR<span class="Delimiter">(</span>expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L69'>MODRM</a><span class="Delimiter">),</span> <a href='033check_operands.cc.html#L665'>maybe_name_0f</a><span class="Delimiter">(</span>op<span class="Delimiter">));</span>
-<span id="L662" class="LineNr">662 </span>  <span class="Delimiter">}</span>
-<span id="L663" class="LineNr">663 </span><span class="Delimiter">}</span>
-<span id="L664" class="LineNr">664 </span>
-<span id="L665" class="LineNr">665 </span>string <a href='033check_operands.cc.html#L665'>maybe_name_0f</a><span class="Delimiter">(</span><span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L666" class="LineNr">666 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_hex_byte<span class="Delimiter">(</span>op<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
-<span id="L667" class="LineNr">667 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
-<span id="L668" class="LineNr">668 </span>  <span class="Comment">// strip stuff in parens from the name</span>
-<span id="L669" class="LineNr">669 </span>  <span class="Normal">const</span> string&amp; s = get<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
-<span id="L670" class="LineNr">670 </span>  <span class="Identifier">return</span> <span class="Constant">&quot; (&quot;</span>+s<span class="Delimiter">.</span>substr<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> s<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot; (&quot;</span><span class="Delimiter">))</span>+<span class="Constant">')'</span><span class="Delimiter">;</span>
-<span id="L671" class="LineNr">671 </span><span class="Delimiter">}</span>
-<span id="L672" class="LineNr">672 </span>
-<span id="L673" class="LineNr">673 </span>string <a href='033check_operands.cc.html#L673'>tolower</a><span class="Delimiter">(</span><span class="Normal">const</span> <span class="Normal">char</span>* s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L674" class="LineNr">674 </span>  ostringstream out<span class="Delimiter">;</span>
-<span id="L675" class="LineNr">675 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">nada</span><span class="Comment">*/</span><span class="Delimiter">;</span>  *s<span class="Delimiter">;</span>  ++s<span class="Delimiter">)</span>
-<span id="L676" class="LineNr">676 </span>    out &lt;&lt; <span class="Normal">static_cast</span>&lt;<span class="Normal">char</span>&gt;<span class="Delimiter">(</span><a href='033check_operands.cc.html#L673'>tolower</a><span class="Delimiter">(</span>*s<span class="Delimiter">));</span>
-<span id="L677" class="LineNr">677 </span>  <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
-<span id="L678" class="LineNr">678 </span><span class="Delimiter">}</span>
-<span id="L679" class="LineNr">679 </span>
-<span id="L680" class="LineNr">680 </span><span class="PreProc">#undef HAS</span>
-<span id="L681" class="LineNr">681 </span><span class="PreProc">#undef SET</span>
-<span id="L682" class="LineNr">682 </span><span class="PreProc">#undef CLEAR</span>
-<span id="L683" class="LineNr">683 </span>
-<span id="L684" class="LineNr">684 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
-<span id="L685" class="LineNr">685 </span><span class="PreProc">#include</span><span class="Constant">&lt;cctype&gt;</span>
+<span id="L653" class="LineNr">653 </span><span class="SalientComment">//// Class M: using ModR/M byte</span>
+<span id="L654" class="LineNr">654 </span><span class="Comment">//  imm32 imm8  disp32 |disp16  disp8 subop modrm</span>
+<span id="L655" class="LineNr">655 </span><span class="Comment">//  0     0     0      |0       0     0     1</span>
+<span id="L656" class="LineNr">656 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;af&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L657" class="LineNr">657 </span><span class="Comment">// setcc</span>
+<span id="L658" class="LineNr">658 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;92&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L659" class="LineNr">659 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;93&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L660" class="LineNr">660 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;94&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L661" class="LineNr">661 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;95&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L662" class="LineNr">662 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;96&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L663" class="LineNr">663 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;97&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L664" class="LineNr">664 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;9c&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L665" class="LineNr">665 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;9d&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L666" class="LineNr">666 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;9e&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L667" class="LineNr">667 </span><a href='001help.cc.html#L239'>put_new</a><span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> <span class="Constant">&quot;9f&quot;</span><span class="Delimiter">,</span> <span class="Constant">0x01</span><span class="Delimiter">);</span>
+<span id="L668" class="LineNr">668 </span>
+<span id="L669" class="LineNr">669 </span><span class="Delimiter">:(code)</span>
+<span id="L670" class="LineNr">670 </span><span class="Normal">void</span> check_operands_0f<span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L671" class="LineNr">671 </span>  <span class="Normal">uint8_t</span> expected_bitvector = get<span class="Delimiter">(</span><span class="Special"><a href='033check_operands.cc.html#L637'>Permitted_operands_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
+<span id="L672" class="LineNr">672 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>HAS<span class="Delimiter">(</span>expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L69'>MODRM</a><span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L673" class="LineNr">673 </span>    <a href='033check_operands.cc.html#L377'>check_operands_modrm</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> op<span class="Delimiter">);</span>
+<span id="L674" class="LineNr">674 </span>    <a href='033check_operands.cc.html#L403'>compare_bitvector_modrm</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L681'>maybe_name_0f</a><span class="Delimiter">(</span>op<span class="Delimiter">));</span>
+<span id="L675" class="LineNr">675 </span>  <span class="Delimiter">}</span>
+<span id="L676" class="LineNr">676 </span>  <span class="Normal">else</span> <span class="Delimiter">{</span>
+<span id="L677" class="LineNr">677 </span>    <a href='033check_operands.cc.html#L275'>compare_bitvector</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> CLEAR<span class="Delimiter">(</span>expected_bitvector<span class="Delimiter">,</span> <a href='033check_operands.cc.html#L69'>MODRM</a><span class="Delimiter">),</span> <a href='033check_operands.cc.html#L681'>maybe_name_0f</a><span class="Delimiter">(</span>op<span class="Delimiter">));</span>
+<span id="L678" class="LineNr">678 </span>  <span class="Delimiter">}</span>
+<span id="L679" class="LineNr">679 </span><span class="Delimiter">}</span>
+<span id="L680" class="LineNr">680 </span>
+<span id="L681" class="LineNr">681 </span>string <a href='033check_operands.cc.html#L681'>maybe_name_0f</a><span class="Delimiter">(</span><span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L682" class="LineNr">682 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_hex_byte<span class="Delimiter">(</span>op<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
+<span id="L683" class="LineNr">683 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
+<span id="L684" class="LineNr">684 </span>  <span class="Comment">// strip stuff in parens from the name</span>
+<span id="L685" class="LineNr">685 </span>  <span class="Normal">const</span> string&amp; s = get<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
+<span id="L686" class="LineNr">686 </span>  <span class="Identifier">return</span> <span class="Constant">&quot; (&quot;</span>+s<span class="Delimiter">.</span>substr<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> s<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot; (&quot;</span><span class="Delimiter">))</span>+<span class="Constant">')'</span><span class="Delimiter">;</span>
+<span id="L687" class="LineNr">687 </span><span class="Delimiter">}</span>
+<span id="L688" class="LineNr">688 </span>
+<span id="L689" class="LineNr">689 </span>string <a href='033check_operands.cc.html#L689'>tolower</a><span class="Delimiter">(</span><span class="Normal">const</span> <span class="Normal">char</span>* s<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+<span id="L690" class="LineNr">690 </span>  ostringstream out<span class="Delimiter">;</span>
+<span id="L691" class="LineNr">691 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Comment">/*</span><span class="Comment">nada</span><span class="Comment">*/</span><span class="Delimiter">;</span>  *s<span class="Delimiter">;</span>  ++s<span class="Delimiter">)</span>
+<span id="L692" class="LineNr">692 </span>    out &lt;&lt; <span class="Normal">static_cast</span>&lt;<span class="Normal">char</span>&gt;<span class="Delimiter">(</span><a href='033check_operands.cc.html#L689'>tolower</a><span class="Delimiter">(</span>*s<span class="Delimiter">));</span>
+<span id="L693" class="LineNr">693 </span>  <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span>
+<span id="L694" class="LineNr">694 </span><span class="Delimiter">}</span>
+<span id="L695" class="LineNr">695 </span>
+<span id="L696" class="LineNr">696 </span><span class="PreProc">#undef HAS</span>
+<span id="L697" class="LineNr">697 </span><span class="PreProc">#undef SET</span>
+<span id="L698" class="LineNr">698 </span><span class="PreProc">#undef CLEAR</span>
+<span id="L699" class="LineNr">699 </span>
+<span id="L700" class="LineNr">700 </span><span class="Delimiter">:(before &quot;End Includes&quot;)</span>
+<span id="L701" class="LineNr">701 </span><span class="PreProc">#include</span><span class="Constant">&lt;cctype&gt;</span>
 </pre>
 </body>
 </html>
diff --git a/html/034check_operand_bounds.cc.html b/html/034check_operand_bounds.cc.html
index 4f97a676..598e5bd2 100644
--- a/html/034check_operand_bounds.cc.html
+++ b/html/034check_operand_bounds.cc.html
@@ -95,7 +95,7 @@ if ('onhashchange' in window) {
 <span id="L35" class="LineNr"> 35 </span>  <a href='003trace.cc.html#L96'>trace</a><span class="Delimiter">(</span><span class="Constant">3</span><span class="Delimiter">,</span> <span class="Constant">&quot;transform&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;-- check operand bounds&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L36" class="LineNr"> 36 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Constant">0</span><span class="Delimiter">;</span>  i &lt; <a href='001help.cc.html#L170'>SIZE</a><span class="Delimiter">(</span>code<span class="Delimiter">.</span><a href='011run.cc.html#L113'>lines</a><span class="Delimiter">);</span>  ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L37" class="LineNr"> 37 </span>    <span class="Normal">const</span> line&amp; inst = code<span class="Delimiter">.</span><a href='011run.cc.html#L113'>lines</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span>
-<span id="L38" class="LineNr"> 38 </span>    <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <a href='033check_operands.cc.html#L310'>first_operand</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>  j &lt; <a href='001help.cc.html#L170'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span>
+<span id="L38" class="LineNr"> 38 </span>    <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> j = <a href='033check_operands.cc.html#L315'>first_operand</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>  j &lt; <a href='001help.cc.html#L170'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">);</span>  ++j<span class="Delimiter">)</span>
 <span id="L39" class="LineNr"> 39 </span>      check_operand_bounds<span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>j<span class="Delimiter">));</span>
 <span id="L40" class="LineNr"> 40 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L264'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// stop at the first mal-formed instruction</span>
 <span id="L41" class="LineNr"> 41 </span>  <span class="Delimiter">}</span>
diff --git a/html/067parse-hex.subx.html b/html/067parse-hex.subx.html
index b06ad099..7494f8b9 100644
--- a/html/067parse-hex.subx.html
+++ b/html/067parse-hex.subx.html
@@ -121,7 +121,7 @@ if ('onhashchange' in window) {
 <span id="L61" class="LineNr"> 61 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ecx to AL</span>
 <span id="L62" class="LineNr"> 62 </span>    50/push-eax
 <span id="L63" class="LineNr"> 63 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L64" class="LineNr"> 64 </span>    e8/call  <a href='067parse-hex.subx.html#L640'>is-hex-digit?</a>/disp32
+<span id="L64" class="LineNr"> 64 </span>    e8/call  <a href='067parse-hex.subx.html#L701'>is-hex-digit?</a>/disp32
 <span id="L65" class="LineNr"> 65 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L66" class="LineNr"> 66 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
 <span id="L67" class="LineNr"> 67 </span>    <span class="subxComment"># if (eax == false) return false</span>
@@ -411,531 +411,592 @@ if ('onhashchange' in window) {
 <span id="L351" class="LineNr">351 </span>    5d/pop-to-ebp
 <span id="L352" class="LineNr">352 </span>    c3/return
 <span id="L353" class="LineNr">353 </span>
-<span id="L354" class="LineNr">354 </span><span class="subxFunction">parse-hex-int-from-slice</span>:  <span class="subxComment"># in: (addr slice) -&gt; result/eax: int</span>
+<span id="L354" class="LineNr">354 </span><span class="subxFunction">parse-hex-int</span>:  <span class="subxComment"># in: (addr array byte) -&gt; result/eax: int</span>
 <span id="L355" class="LineNr">355 </span>    <span class="subxS1Comment"># . prologue</span>
 <span id="L356" class="LineNr">356 </span>    55/push-ebp
 <span id="L357" class="LineNr">357 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
 <span id="L358" class="LineNr">358 </span>    <span class="subxS1Comment"># . save registers</span>
 <span id="L359" class="LineNr">359 </span>    51/push-ecx
 <span id="L360" class="LineNr">360 </span>    52/push-edx
-<span id="L361" class="LineNr">361 </span>    53/push-ebx
-<span id="L362" class="LineNr">362 </span>    56/push-esi
-<span id="L363" class="LineNr">363 </span>    <span class="subxComment"># var result/ebx: int = 0</span>
-<span id="L364" class="LineNr">364 </span>    31/xor                          3/mod/direct    3/rm32/ebx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/ebx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear ebx</span>
-<span id="L365" class="LineNr">365 </span>    <span class="subxComment"># ecx = in</span>
-<span id="L366" class="LineNr">366 </span>    8b/copy                         1/mod/*+disp8   5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ebp+8) to ecx</span>
-<span id="L367" class="LineNr">367 </span>    <span class="subxComment"># edx = in-&gt;end</span>
-<span id="L368" class="LineNr">368 </span>    8b/copy                         1/mod/*+disp8   1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/edx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ecx+4) to edx</span>
-<span id="L369" class="LineNr">369 </span>    <span class="subxComment"># var curr/ecx: (addr byte) = in-&gt;start</span>
-<span id="L370" class="LineNr">370 </span>    8b/copy                         0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *ecx to ecx</span>
-<span id="L371" class="LineNr">371 </span>    <span class="subxComment"># var negate?/esi: boolean = false</span>
-<span id="L372" class="LineNr">372 </span>    31/xor                          3/mod/direct    6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          6/r32/esi  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear esi</span>
-<span id="L373" class="LineNr">373 </span><span class="Constant">$parse-hex-int-from-slice:negative</span>:
-<span id="L374" class="LineNr">374 </span>    <span class="subxComment"># if (*curr == '-') ++curr, negate = true</span>
-<span id="L375" class="LineNr">375 </span>    31/xor                          3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/eax  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear eax</span>
-<span id="L376" class="LineNr">376 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ecx to AL</span>
-<span id="L377" class="LineNr">377 </span>    3d/compare-eax-and  0x2d/imm32/-
-<span id="L378" class="LineNr">378 </span>    75/jump-if-!=  $parse-hex-int-from-slice:initial-0/disp8
-<span id="L379" class="LineNr">379 </span>    <span class="subxS1Comment"># . ++curr</span>
-<span id="L380" class="LineNr">380 </span>    41/increment-ecx
-<span id="L381" class="LineNr">381 </span>    <span class="subxS1Comment"># . negate = true</span>
-<span id="L382" class="LineNr">382 </span>    be/copy-to-esi  1/imm32/true
-<span id="L383" class="LineNr">383 </span><span class="Constant">$parse-hex-int-from-slice:initial-0</span>:
-<span id="L384" class="LineNr">384 </span>    <span class="subxComment"># skip past leading '0x'</span>
-<span id="L385" class="LineNr">385 </span>    <span class="subxS1Comment"># . if (*curr != '0') jump to loop</span>
-<span id="L386" class="LineNr">386 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ecx to AL</span>
-<span id="L387" class="LineNr">387 </span>    3d/compare-eax-and  0x30/imm32/0
-<span id="L388" class="LineNr">388 </span>    75/jump-if-!=  $parse-hex-int-from-slice:<span class="Constant">loop</span>/disp8
-<span id="L389" class="LineNr">389 </span>    <span class="subxS1Comment"># . ++curr</span>
-<span id="L390" class="LineNr">390 </span>    41/increment-ecx
-<span id="L391" class="LineNr">391 </span><span class="Constant">$parse-hex-int-from-slice:initial-0x</span>:
-<span id="L392" class="LineNr">392 </span>    <span class="subxS1Comment"># . if (curr &gt;= in-&gt;end) return result</span>
-<span id="L393" class="LineNr">393 </span>    39/compare                      3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/edx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># compare ecx with edx</span>
-<span id="L394" class="LineNr">394 </span>    73/jump-if-addr&gt;=  $parse-hex-int-from-slice:end/disp8
-<span id="L395" class="LineNr">395 </span>    <span class="subxS1Comment"># . if (*curr != 'x') jump to loop  # the previous '0' is still valid so doesn't need to be checked again</span>
-<span id="L396" class="LineNr">396 </span>    31/xor                          3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/eax  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear eax</span>
-<span id="L397" class="LineNr">397 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ecx to AL</span>
-<span id="L398" class="LineNr">398 </span>    3d/compare-eax-and  0x78/imm32/x
-<span id="L399" class="LineNr">399 </span>    75/jump-if-!=  $parse-hex-int-from-slice:<span class="Constant">loop</span>/disp8
-<span id="L400" class="LineNr">400 </span>    <span class="subxS1Comment"># . ++curr</span>
-<span id="L401" class="LineNr">401 </span>    41/increment-ecx
-<span id="L402" class="LineNr">402 </span><span class="Constant">$parse-hex-int-from-slice:loop</span>:
-<span id="L403" class="LineNr">403 </span>    <span class="subxComment"># if (curr &gt;= in-&gt;end) break</span>
-<span id="L404" class="LineNr">404 </span>    39/compare                      3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/edx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># compare ecx with edx</span>
-<span id="L405" class="LineNr">405 </span>    73/jump-if-addr&gt;=  $parse-hex-int-from-slice:negate/disp8
-<span id="L406" class="LineNr">406 </span>    <span class="subxComment"># var eax: int = from-hex-char(*curr)</span>
-<span id="L407" class="LineNr">407 </span>    <span class="subxS2Comment"># . . copy arg to eax</span>
-<span id="L408" class="LineNr">408 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ecx to AL</span>
-<span id="L409" class="LineNr">409 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L410" class="LineNr">410 </span>    e8/call  <a href='067parse-hex.subx.html#L803'>from-hex-char</a>/disp32
-<span id="L411" class="LineNr">411 </span>    <span class="subxComment"># result = result * 16 + eax</span>
-<span id="L412" class="LineNr">412 </span>    c1/shift    4/subop/left        3/mod/direct    3/rm32/ebx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm8            <span class="subxComment"># shift ebx left by 4 bits</span>
-<span id="L413" class="LineNr">413 </span>    01/add                          3/mod/direct    3/rm32/ebx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/eax  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># add eax to ebx</span>
-<span id="L414" class="LineNr">414 </span>    <span class="subxComment"># ++curr</span>
-<span id="L415" class="LineNr">415 </span>    41/increment-ecx
-<span id="L416" class="LineNr">416 </span>    <span class="subxComment"># loop</span>
-<span id="L417" class="LineNr">417 </span>    eb/jump  $parse-hex-int-from-slice:<span class="Constant">loop</span>/disp8
-<span id="L418" class="LineNr">418 </span><span class="Constant">$parse-hex-int-from-slice:negate</span>:
-<span id="L419" class="LineNr">419 </span>    <span class="subxComment"># if (negate?) result = -result</span>
-<span id="L420" class="LineNr">420 </span>    81          7/subop/compare     3/mod/direct    6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0/imm32/false     <span class="subxComment"># compare esi</span>
-<span id="L421" class="LineNr">421 </span>    74/jump-if-=  $parse-hex-int-from-slice:end/disp8
-<span id="L422" class="LineNr">422 </span>    f7          3/subop/negate      3/mod/direct    3/rm32/ebx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># negate ebx</span>
-<span id="L423" class="LineNr">423 </span><span class="Constant">$parse-hex-int-from-slice:end</span>:
-<span id="L424" class="LineNr">424 </span>    <span class="subxComment"># return result</span>
-<span id="L425" class="LineNr">425 </span>    89/copy                         3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/ebx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebx to eax</span>
-<span id="L426" class="LineNr">426 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L427" class="LineNr">427 </span>    5e/pop-to-esi
-<span id="L428" class="LineNr">428 </span>    5b/pop-to-ebx
-<span id="L429" class="LineNr">429 </span>    5a/pop-to-edx
-<span id="L430" class="LineNr">430 </span>    59/pop-to-ecx
-<span id="L431" class="LineNr">431 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L432" class="LineNr">432 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
-<span id="L433" class="LineNr">433 </span>    5d/pop-to-ebp
-<span id="L434" class="LineNr">434 </span>    c3/return
-<span id="L435" class="LineNr">435 </span>
-<span id="L436" class="LineNr">436 </span><span class="subxTest">test-parse-hex-int-from-slice-single-digit</span>:
-<span id="L437" class="LineNr">437 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L438" class="LineNr">438 </span>    55/push-ebp
-<span id="L439" class="LineNr">439 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
-<span id="L440" class="LineNr">440 </span>    <span class="subxComment"># (eax..ecx) = &quot;a&quot;</span>
-<span id="L441" class="LineNr">441 </span>    b8/copy-to-eax  <span class="Constant">&quot;a&quot;</span>/imm32
-<span id="L442" class="LineNr">442 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
-<span id="L443" class="LineNr">443 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
-<span id="L444" class="LineNr">444 </span>    05/add-to-eax  4/imm32
-<span id="L445" class="LineNr">445 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
-<span id="L446" class="LineNr">446 </span>    51/push-ecx
-<span id="L447" class="LineNr">447 </span>    50/push-eax
-<span id="L448" class="LineNr">448 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
-<span id="L449" class="LineNr">449 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
-<span id="L450" class="LineNr">450 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L451" class="LineNr">451 </span>    51/push-ecx
-<span id="L452" class="LineNr">452 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L453" class="LineNr">453 </span>    e8/call  <a href='067parse-hex.subx.html#L354'>parse-hex-int-from-slice</a>/disp32
-<span id="L454" class="LineNr">454 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L455" class="LineNr">455 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L456" class="LineNr">456 </span>    <span class="subxComment"># check-ints-equal(eax, 0xa, msg)</span>
-<span id="L457" class="LineNr">457 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L458" class="LineNr">458 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-single-digit&quot;</span>/imm32
-<span id="L459" class="LineNr">459 </span>    68/push  0xa/imm32
-<span id="L460" class="LineNr">460 </span>    50/push-eax
-<span id="L461" class="LineNr">461 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L462" class="LineNr">462 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L463" class="LineNr">463 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L464" class="LineNr">464 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L465" class="LineNr">465 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L466" class="LineNr">466 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
-<span id="L467" class="LineNr">467 </span>    5d/pop-to-ebp
-<span id="L468" class="LineNr">468 </span>    c3/return
-<span id="L469" class="LineNr">469 </span>
-<span id="L470" class="LineNr">470 </span><span class="subxTest">test-parse-hex-int-from-slice-multi-digit</span>:
-<span id="L471" class="LineNr">471 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L472" class="LineNr">472 </span>    55/push-ebp
-<span id="L473" class="LineNr">473 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
-<span id="L474" class="LineNr">474 </span>    <span class="subxComment"># (eax..ecx) = &quot;34a&quot;</span>
-<span id="L475" class="LineNr">475 </span>    b8/copy-to-eax  <span class="Constant">&quot;34a&quot;</span>/imm32
-<span id="L476" class="LineNr">476 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
-<span id="L477" class="LineNr">477 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
-<span id="L478" class="LineNr">478 </span>    05/add-to-eax  4/imm32
-<span id="L479" class="LineNr">479 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
-<span id="L480" class="LineNr">480 </span>    51/push-ecx
-<span id="L481" class="LineNr">481 </span>    50/push-eax
-<span id="L482" class="LineNr">482 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
-<span id="L483" class="LineNr">483 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
-<span id="L484" class="LineNr">484 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L485" class="LineNr">485 </span>    51/push-ecx
-<span id="L486" class="LineNr">486 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L487" class="LineNr">487 </span>    e8/call  <a href='067parse-hex.subx.html#L354'>parse-hex-int-from-slice</a>/disp32
-<span id="L488" class="LineNr">488 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L489" class="LineNr">489 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L490" class="LineNr">490 </span>    <span class="subxComment"># check-ints-equal(eax, 0x34a, msg)</span>
-<span id="L491" class="LineNr">491 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L492" class="LineNr">492 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-multi-digit&quot;</span>/imm32
-<span id="L493" class="LineNr">493 </span>    68/push  0x34a/imm32
-<span id="L494" class="LineNr">494 </span>    50/push-eax
-<span id="L495" class="LineNr">495 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L496" class="LineNr">496 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L497" class="LineNr">497 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L498" class="LineNr">498 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L499" class="LineNr">499 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L500" class="LineNr">500 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
-<span id="L501" class="LineNr">501 </span>    5d/pop-to-ebp
-<span id="L502" class="LineNr">502 </span>    c3/return
-<span id="L503" class="LineNr">503 </span>
-<span id="L504" class="LineNr">504 </span><span class="subxTest">test-parse-hex-int-from-slice-0x-prefix</span>:
-<span id="L505" class="LineNr">505 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L506" class="LineNr">506 </span>    55/push-ebp
-<span id="L507" class="LineNr">507 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
-<span id="L508" class="LineNr">508 </span>    <span class="subxComment"># (eax..ecx) = &quot;0x34&quot;</span>
-<span id="L509" class="LineNr">509 </span>    b8/copy-to-eax  <span class="Constant">&quot;0x34&quot;</span>/imm32
-<span id="L510" class="LineNr">510 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
-<span id="L511" class="LineNr">511 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
-<span id="L512" class="LineNr">512 </span>    05/add-to-eax  4/imm32
-<span id="L513" class="LineNr">513 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
-<span id="L514" class="LineNr">514 </span>    51/push-ecx
-<span id="L515" class="LineNr">515 </span>    50/push-eax
-<span id="L516" class="LineNr">516 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
-<span id="L517" class="LineNr">517 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
+<span id="L361" class="LineNr">361 </span>    <span class="subxComment"># eax = in</span>
+<span id="L362" class="LineNr">362 </span>    8b/copy                         1/mod/*+disp8   5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/eax   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ebp+8) to eax</span>
+<span id="L363" class="LineNr">363 </span>    <span class="subxComment"># var curr/ecx: (addr byte) = &amp;in-&gt;data</span>
+<span id="L364" class="LineNr">364 </span>    8d/copy-address                 1/mod/*+disp8   0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+4 to ecx</span>
+<span id="L365" class="LineNr">365 </span>    <span class="subxComment"># var max/edx: (addr byte) = &amp;in-&gt;data[in-&gt;length]</span>
+<span id="L366" class="LineNr">366 </span>    <span class="subxS1Comment"># . edx = in-&gt;length</span>
+<span id="L367" class="LineNr">367 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/edx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to edx</span>
+<span id="L368" class="LineNr">368 </span>    <span class="subxS1Comment"># . edx = in-&gt;data + in-&gt;length</span>
+<span id="L369" class="LineNr">369 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  2/index/edx  <span class="Normal"> . </span>          2/r32/edx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+edx+4 to edx</span>
+<span id="L370" class="LineNr">370 </span>    <span class="subxComment"># return parse-hex-int-helper(curr, max)</span>
+<span id="L371" class="LineNr">371 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L372" class="LineNr">372 </span>    52/push-edx
+<span id="L373" class="LineNr">373 </span>    51/push-ecx
+<span id="L374" class="LineNr">374 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L375" class="LineNr">375 </span>    e8/call  <a href='067parse-hex.subx.html#L417'>parse-hex-int-helper</a>/disp32
+<span id="L376" class="LineNr">376 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L377" class="LineNr">377 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to esp</span>
+<span id="L378" class="LineNr">378 </span><span class="Constant">$parse-hex-int:end</span>:
+<span id="L379" class="LineNr">379 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L380" class="LineNr">380 </span>    5a/pop-to-edx
+<span id="L381" class="LineNr">381 </span>    59/pop-to-ecx
+<span id="L382" class="LineNr">382 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L383" class="LineNr">383 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
+<span id="L384" class="LineNr">384 </span>    5d/pop-to-ebp
+<span id="L385" class="LineNr">385 </span>    c3/return
+<span id="L386" class="LineNr">386 </span>
+<span id="L387" class="LineNr">387 </span><span class="subxFunction">parse-hex-int-from-slice</span>:  <span class="subxComment"># in: (addr slice) -&gt; result/eax: int</span>
+<span id="L388" class="LineNr">388 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L389" class="LineNr">389 </span>    55/push-ebp
+<span id="L390" class="LineNr">390 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
+<span id="L391" class="LineNr">391 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L392" class="LineNr">392 </span>    51/push-ecx
+<span id="L393" class="LineNr">393 </span>    52/push-edx
+<span id="L394" class="LineNr">394 </span>    <span class="subxComment"># ecx = in</span>
+<span id="L395" class="LineNr">395 </span>    8b/copy                         1/mod/*+disp8   5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ebp+8) to ecx</span>
+<span id="L396" class="LineNr">396 </span>    <span class="subxComment"># edx = in-&gt;end</span>
+<span id="L397" class="LineNr">397 </span>    8b/copy                         1/mod/*+disp8   1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/edx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ecx+4) to edx</span>
+<span id="L398" class="LineNr">398 </span>    <span class="subxComment"># var curr/ecx: (addr byte) = in-&gt;start</span>
+<span id="L399" class="LineNr">399 </span>    8b/copy                         0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *ecx to ecx</span>
+<span id="L400" class="LineNr">400 </span>    <span class="subxComment"># return parse-hex-int-helper(curr, max)</span>
+<span id="L401" class="LineNr">401 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L402" class="LineNr">402 </span>    52/push-edx
+<span id="L403" class="LineNr">403 </span>    51/push-ecx
+<span id="L404" class="LineNr">404 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L405" class="LineNr">405 </span>    e8/call  <a href='067parse-hex.subx.html#L417'>parse-hex-int-helper</a>/disp32
+<span id="L406" class="LineNr">406 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L407" class="LineNr">407 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to esp</span>
+<span id="L408" class="LineNr">408 </span><span class="Constant">$parse-hex-int-from-slice:end</span>:
+<span id="L409" class="LineNr">409 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L410" class="LineNr">410 </span>    5a/pop-to-edx
+<span id="L411" class="LineNr">411 </span>    59/pop-to-ecx
+<span id="L412" class="LineNr">412 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L413" class="LineNr">413 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
+<span id="L414" class="LineNr">414 </span>    5d/pop-to-ebp
+<span id="L415" class="LineNr">415 </span>    c3/return
+<span id="L416" class="LineNr">416 </span>
+<span id="L417" class="LineNr">417 </span><span class="subxFunction">parse-hex-int-helper</span>:  <span class="subxComment"># start: (addr byte), end: (addr byte) -&gt; result/eax: int</span>
+<span id="L418" class="LineNr">418 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L419" class="LineNr">419 </span>    55/push-ebp
+<span id="L420" class="LineNr">420 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
+<span id="L421" class="LineNr">421 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L422" class="LineNr">422 </span>    51/push-ecx
+<span id="L423" class="LineNr">423 </span>    52/push-edx
+<span id="L424" class="LineNr">424 </span>    53/push-ebx
+<span id="L425" class="LineNr">425 </span>    56/push-esi
+<span id="L426" class="LineNr">426 </span>    <span class="subxComment"># var curr/ecx: (addr byte) = start</span>
+<span id="L427" class="LineNr">427 </span>    8b/copy                         1/mod/*+disp8   5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ebp+8) to ecx</span>
+<span id="L428" class="LineNr">428 </span>    <span class="subxComment"># edx = max</span>
+<span id="L429" class="LineNr">429 </span>    8b/copy                         1/mod/*+disp8   5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/edx   0xc/disp8      <span class="Normal"> . </span>                <span class="subxComment"># copy *(ebp+0xc) to edx</span>
+<span id="L430" class="LineNr">430 </span>    <span class="subxComment"># var result/ebx: int = 0</span>
+<span id="L431" class="LineNr">431 </span>    31/xor                          3/mod/direct    3/rm32/ebx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/ebx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear ebx</span>
+<span id="L432" class="LineNr">432 </span>    <span class="subxComment"># var negate?/esi: boolean = false</span>
+<span id="L433" class="LineNr">433 </span>    31/xor                          3/mod/direct    6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          6/r32/esi  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear esi</span>
+<span id="L434" class="LineNr">434 </span><span class="Constant">$parse-hex-int-helper:negative</span>:
+<span id="L435" class="LineNr">435 </span>    <span class="subxComment"># if (*curr == '-') ++curr, negate = true</span>
+<span id="L436" class="LineNr">436 </span>    31/xor                          3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/eax  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear eax</span>
+<span id="L437" class="LineNr">437 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ecx to AL</span>
+<span id="L438" class="LineNr">438 </span>    3d/compare-eax-and  0x2d/imm32/-
+<span id="L439" class="LineNr">439 </span>    75/jump-if-!=  $parse-hex-int-helper:initial-0/disp8
+<span id="L440" class="LineNr">440 </span>    <span class="subxS1Comment"># . ++curr</span>
+<span id="L441" class="LineNr">441 </span>    41/increment-ecx
+<span id="L442" class="LineNr">442 </span>    <span class="subxS1Comment"># . negate = true</span>
+<span id="L443" class="LineNr">443 </span>    be/copy-to-esi  1/imm32/true
+<span id="L444" class="LineNr">444 </span><span class="Constant">$parse-hex-int-helper:initial-0</span>:
+<span id="L445" class="LineNr">445 </span>    <span class="subxComment"># skip past leading '0x'</span>
+<span id="L446" class="LineNr">446 </span>    <span class="subxS1Comment"># . if (*curr != '0') jump to loop</span>
+<span id="L447" class="LineNr">447 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ecx to AL</span>
+<span id="L448" class="LineNr">448 </span>    3d/compare-eax-and  0x30/imm32/0
+<span id="L449" class="LineNr">449 </span>    75/jump-if-!=  $parse-hex-int-helper:<span class="Constant">loop</span>/disp8
+<span id="L450" class="LineNr">450 </span>    <span class="subxS1Comment"># . ++curr</span>
+<span id="L451" class="LineNr">451 </span>    41/increment-ecx
+<span id="L452" class="LineNr">452 </span><span class="Constant">$parse-hex-int-helper:initial-0x</span>:
+<span id="L453" class="LineNr">453 </span>    <span class="subxS1Comment"># . if (curr &gt;= in-&gt;end) return result</span>
+<span id="L454" class="LineNr">454 </span>    39/compare                      3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/edx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># compare ecx with edx</span>
+<span id="L455" class="LineNr">455 </span>    73/jump-if-addr&gt;=  $parse-hex-int-helper:end/disp8
+<span id="L456" class="LineNr">456 </span>    <span class="subxS1Comment"># . if (*curr != 'x') jump to loop  # the previous '0' is still valid so doesn't need to be checked again</span>
+<span id="L457" class="LineNr">457 </span>    31/xor                          3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/eax  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear eax</span>
+<span id="L458" class="LineNr">458 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ecx to AL</span>
+<span id="L459" class="LineNr">459 </span>    3d/compare-eax-and  0x78/imm32/x
+<span id="L460" class="LineNr">460 </span>    75/jump-if-!=  $parse-hex-int-helper:<span class="Constant">loop</span>/disp8
+<span id="L461" class="LineNr">461 </span>    <span class="subxS1Comment"># . ++curr</span>
+<span id="L462" class="LineNr">462 </span>    41/increment-ecx
+<span id="L463" class="LineNr">463 </span><span class="Constant">$parse-hex-int-helper:loop</span>:
+<span id="L464" class="LineNr">464 </span>    <span class="subxComment"># if (curr &gt;= in-&gt;end) break</span>
+<span id="L465" class="LineNr">465 </span>    39/compare                      3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/edx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># compare ecx with edx</span>
+<span id="L466" class="LineNr">466 </span>    73/jump-if-addr&gt;=  $parse-hex-int-helper:negate/disp8
+<span id="L467" class="LineNr">467 </span>    <span class="subxComment"># var eax: int = from-hex-char(*curr)</span>
+<span id="L468" class="LineNr">468 </span>    <span class="subxS2Comment"># . . copy arg to eax</span>
+<span id="L469" class="LineNr">469 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ecx to AL</span>
+<span id="L470" class="LineNr">470 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L471" class="LineNr">471 </span>    e8/call  <a href='067parse-hex.subx.html#L864'>from-hex-char</a>/disp32
+<span id="L472" class="LineNr">472 </span>    <span class="subxComment"># result = result * 16 + eax</span>
+<span id="L473" class="LineNr">473 </span>    c1/shift    4/subop/left        3/mod/direct    3/rm32/ebx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm8            <span class="subxComment"># shift ebx left by 4 bits</span>
+<span id="L474" class="LineNr">474 </span>    01/add                          3/mod/direct    3/rm32/ebx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/eax  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># add eax to ebx</span>
+<span id="L475" class="LineNr">475 </span>    <span class="subxComment"># ++curr</span>
+<span id="L476" class="LineNr">476 </span>    41/increment-ecx
+<span id="L477" class="LineNr">477 </span>    <span class="subxComment"># loop</span>
+<span id="L478" class="LineNr">478 </span>    eb/jump  $parse-hex-int-helper:<span class="Constant">loop</span>/disp8
+<span id="L479" class="LineNr">479 </span><span class="Constant">$parse-hex-int-helper:negate</span>:
+<span id="L480" class="LineNr">480 </span>    <span class="subxComment"># if (negate?) result = -result</span>
+<span id="L481" class="LineNr">481 </span>    81          7/subop/compare     3/mod/direct    6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0/imm32/false     <span class="subxComment"># compare esi</span>
+<span id="L482" class="LineNr">482 </span>    74/jump-if-=  $parse-hex-int-helper:end/disp8
+<span id="L483" class="LineNr">483 </span>    f7          3/subop/negate      3/mod/direct    3/rm32/ebx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># negate ebx</span>
+<span id="L484" class="LineNr">484 </span><span class="Constant">$parse-hex-int-helper:end</span>:
+<span id="L485" class="LineNr">485 </span>    <span class="subxComment"># return result</span>
+<span id="L486" class="LineNr">486 </span>    89/copy                         3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/ebx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebx to eax</span>
+<span id="L487" class="LineNr">487 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L488" class="LineNr">488 </span>    5e/pop-to-esi
+<span id="L489" class="LineNr">489 </span>    5b/pop-to-ebx
+<span id="L490" class="LineNr">490 </span>    5a/pop-to-edx
+<span id="L491" class="LineNr">491 </span>    59/pop-to-ecx
+<span id="L492" class="LineNr">492 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L493" class="LineNr">493 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
+<span id="L494" class="LineNr">494 </span>    5d/pop-to-ebp
+<span id="L495" class="LineNr">495 </span>    c3/return
+<span id="L496" class="LineNr">496 </span>
+<span id="L497" class="LineNr">497 </span><span class="subxTest">test-parse-hex-int-from-slice-single-digit</span>:
+<span id="L498" class="LineNr">498 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L499" class="LineNr">499 </span>    55/push-ebp
+<span id="L500" class="LineNr">500 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
+<span id="L501" class="LineNr">501 </span>    <span class="subxComment"># (eax..ecx) = &quot;a&quot;</span>
+<span id="L502" class="LineNr">502 </span>    b8/copy-to-eax  <span class="Constant">&quot;a&quot;</span>/imm32
+<span id="L503" class="LineNr">503 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
+<span id="L504" class="LineNr">504 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
+<span id="L505" class="LineNr">505 </span>    05/add-to-eax  4/imm32
+<span id="L506" class="LineNr">506 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
+<span id="L507" class="LineNr">507 </span>    51/push-ecx
+<span id="L508" class="LineNr">508 </span>    50/push-eax
+<span id="L509" class="LineNr">509 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
+<span id="L510" class="LineNr">510 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
+<span id="L511" class="LineNr">511 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L512" class="LineNr">512 </span>    51/push-ecx
+<span id="L513" class="LineNr">513 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L514" class="LineNr">514 </span>    e8/call  <a href='067parse-hex.subx.html#L387'>parse-hex-int-from-slice</a>/disp32
+<span id="L515" class="LineNr">515 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L516" class="LineNr">516 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L517" class="LineNr">517 </span>    <span class="subxComment"># check-ints-equal(eax, 0xa, msg)</span>
 <span id="L518" class="LineNr">518 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L519" class="LineNr">519 </span>    51/push-ecx
-<span id="L520" class="LineNr">520 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L521" class="LineNr">521 </span>    e8/call  <a href='067parse-hex.subx.html#L354'>parse-hex-int-from-slice</a>/disp32
-<span id="L522" class="LineNr">522 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L523" class="LineNr">523 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L524" class="LineNr">524 </span>    <span class="subxComment"># check-ints-equal(eax, 0x34a, msg)</span>
-<span id="L525" class="LineNr">525 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L526" class="LineNr">526 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-0x-prefix&quot;</span>/imm32
-<span id="L527" class="LineNr">527 </span>    68/push  0x34/imm32
-<span id="L528" class="LineNr">528 </span>    50/push-eax
-<span id="L529" class="LineNr">529 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L530" class="LineNr">530 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L531" class="LineNr">531 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L532" class="LineNr">532 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L533" class="LineNr">533 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L534" class="LineNr">534 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
-<span id="L535" class="LineNr">535 </span>    5d/pop-to-ebp
-<span id="L536" class="LineNr">536 </span>    c3/return
-<span id="L537" class="LineNr">537 </span>
-<span id="L538" class="LineNr">538 </span><span class="subxTest">test-parse-hex-int-from-slice-zero</span>:
-<span id="L539" class="LineNr">539 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L540" class="LineNr">540 </span>    55/push-ebp
-<span id="L541" class="LineNr">541 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
-<span id="L542" class="LineNr">542 </span>    <span class="subxComment"># (eax..ecx) = &quot;0&quot;</span>
-<span id="L543" class="LineNr">543 </span>    b8/copy-to-eax  <span class="Constant">&quot;0&quot;</span>/imm32
-<span id="L544" class="LineNr">544 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
-<span id="L545" class="LineNr">545 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
-<span id="L546" class="LineNr">546 </span>    05/add-to-eax  4/imm32
-<span id="L547" class="LineNr">547 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
-<span id="L548" class="LineNr">548 </span>    51/push-ecx
-<span id="L549" class="LineNr">549 </span>    50/push-eax
-<span id="L550" class="LineNr">550 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
-<span id="L551" class="LineNr">551 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
+<span id="L519" class="LineNr">519 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-single-digit&quot;</span>/imm32
+<span id="L520" class="LineNr">520 </span>    68/push  0xa/imm32
+<span id="L521" class="LineNr">521 </span>    50/push-eax
+<span id="L522" class="LineNr">522 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L523" class="LineNr">523 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L524" class="LineNr">524 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L525" class="LineNr">525 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L526" class="LineNr">526 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L527" class="LineNr">527 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
+<span id="L528" class="LineNr">528 </span>    5d/pop-to-ebp
+<span id="L529" class="LineNr">529 </span>    c3/return
+<span id="L530" class="LineNr">530 </span>
+<span id="L531" class="LineNr">531 </span><span class="subxTest">test-parse-hex-int-from-slice-multi-digit</span>:
+<span id="L532" class="LineNr">532 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L533" class="LineNr">533 </span>    55/push-ebp
+<span id="L534" class="LineNr">534 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
+<span id="L535" class="LineNr">535 </span>    <span class="subxComment"># (eax..ecx) = &quot;34a&quot;</span>
+<span id="L536" class="LineNr">536 </span>    b8/copy-to-eax  <span class="Constant">&quot;34a&quot;</span>/imm32
+<span id="L537" class="LineNr">537 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
+<span id="L538" class="LineNr">538 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
+<span id="L539" class="LineNr">539 </span>    05/add-to-eax  4/imm32
+<span id="L540" class="LineNr">540 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
+<span id="L541" class="LineNr">541 </span>    51/push-ecx
+<span id="L542" class="LineNr">542 </span>    50/push-eax
+<span id="L543" class="LineNr">543 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
+<span id="L544" class="LineNr">544 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
+<span id="L545" class="LineNr">545 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L546" class="LineNr">546 </span>    51/push-ecx
+<span id="L547" class="LineNr">547 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L548" class="LineNr">548 </span>    e8/call  <a href='067parse-hex.subx.html#L387'>parse-hex-int-from-slice</a>/disp32
+<span id="L549" class="LineNr">549 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L550" class="LineNr">550 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L551" class="LineNr">551 </span>    <span class="subxComment"># check-ints-equal(eax, 0x34a, msg)</span>
 <span id="L552" class="LineNr">552 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L553" class="LineNr">553 </span>    51/push-ecx
-<span id="L554" class="LineNr">554 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L555" class="LineNr">555 </span>    e8/call  <a href='067parse-hex.subx.html#L354'>parse-hex-int-from-slice</a>/disp32
-<span id="L556" class="LineNr">556 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L557" class="LineNr">557 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L558" class="LineNr">558 </span>    <span class="subxComment"># check-ints-equal(eax, 0x34a, msg)</span>
-<span id="L559" class="LineNr">559 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L560" class="LineNr">560 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-zero&quot;</span>/imm32
-<span id="L561" class="LineNr">561 </span>    68/push  0/imm32
-<span id="L562" class="LineNr">562 </span>    50/push-eax
-<span id="L563" class="LineNr">563 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L564" class="LineNr">564 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L565" class="LineNr">565 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L566" class="LineNr">566 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L567" class="LineNr">567 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L568" class="LineNr">568 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
-<span id="L569" class="LineNr">569 </span>    5d/pop-to-ebp
-<span id="L570" class="LineNr">570 </span>    c3/return
-<span id="L571" class="LineNr">571 </span>
-<span id="L572" class="LineNr">572 </span><span class="subxTest">test-parse-hex-int-from-slice-0-prefix</span>:
-<span id="L573" class="LineNr">573 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L574" class="LineNr">574 </span>    55/push-ebp
-<span id="L575" class="LineNr">575 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
-<span id="L576" class="LineNr">576 </span>    <span class="subxComment"># (eax..ecx) = &quot;03&quot;</span>
-<span id="L577" class="LineNr">577 </span>    b8/copy-to-eax  <span class="Constant">&quot;03&quot;</span>/imm32
-<span id="L578" class="LineNr">578 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
-<span id="L579" class="LineNr">579 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
-<span id="L580" class="LineNr">580 </span>    05/add-to-eax  4/imm32
-<span id="L581" class="LineNr">581 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
-<span id="L582" class="LineNr">582 </span>    51/push-ecx
-<span id="L583" class="LineNr">583 </span>    50/push-eax
-<span id="L584" class="LineNr">584 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
-<span id="L585" class="LineNr">585 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
+<span id="L553" class="LineNr">553 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-multi-digit&quot;</span>/imm32
+<span id="L554" class="LineNr">554 </span>    68/push  0x34a/imm32
+<span id="L555" class="LineNr">555 </span>    50/push-eax
+<span id="L556" class="LineNr">556 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L557" class="LineNr">557 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L558" class="LineNr">558 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L559" class="LineNr">559 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L560" class="LineNr">560 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L561" class="LineNr">561 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
+<span id="L562" class="LineNr">562 </span>    5d/pop-to-ebp
+<span id="L563" class="LineNr">563 </span>    c3/return
+<span id="L564" class="LineNr">564 </span>
+<span id="L565" class="LineNr">565 </span><span class="subxTest">test-parse-hex-int-from-slice-0x-prefix</span>:
+<span id="L566" class="LineNr">566 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L567" class="LineNr">567 </span>    55/push-ebp
+<span id="L568" class="LineNr">568 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
+<span id="L569" class="LineNr">569 </span>    <span class="subxComment"># (eax..ecx) = &quot;0x34&quot;</span>
+<span id="L570" class="LineNr">570 </span>    b8/copy-to-eax  <span class="Constant">&quot;0x34&quot;</span>/imm32
+<span id="L571" class="LineNr">571 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
+<span id="L572" class="LineNr">572 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
+<span id="L573" class="LineNr">573 </span>    05/add-to-eax  4/imm32
+<span id="L574" class="LineNr">574 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
+<span id="L575" class="LineNr">575 </span>    51/push-ecx
+<span id="L576" class="LineNr">576 </span>    50/push-eax
+<span id="L577" class="LineNr">577 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
+<span id="L578" class="LineNr">578 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
+<span id="L579" class="LineNr">579 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L580" class="LineNr">580 </span>    51/push-ecx
+<span id="L581" class="LineNr">581 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L582" class="LineNr">582 </span>    e8/call  <a href='067parse-hex.subx.html#L387'>parse-hex-int-from-slice</a>/disp32
+<span id="L583" class="LineNr">583 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L584" class="LineNr">584 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L585" class="LineNr">585 </span>    <span class="subxComment"># check-ints-equal(eax, 0x34a, msg)</span>
 <span id="L586" class="LineNr">586 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L587" class="LineNr">587 </span>    51/push-ecx
-<span id="L588" class="LineNr">588 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L589" class="LineNr">589 </span>    e8/call  <a href='067parse-hex.subx.html#L354'>parse-hex-int-from-slice</a>/disp32
-<span id="L590" class="LineNr">590 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L591" class="LineNr">591 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L592" class="LineNr">592 </span>    <span class="subxComment"># check-ints-equal(eax, 0x3, msg)</span>
-<span id="L593" class="LineNr">593 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L594" class="LineNr">594 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-0-prefix&quot;</span>/imm32
-<span id="L595" class="LineNr">595 </span>    68/push  0x3/imm32
-<span id="L596" class="LineNr">596 </span>    50/push-eax
-<span id="L597" class="LineNr">597 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L598" class="LineNr">598 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L599" class="LineNr">599 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L600" class="LineNr">600 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L601" class="LineNr">601 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L602" class="LineNr">602 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
-<span id="L603" class="LineNr">603 </span>    5d/pop-to-ebp
-<span id="L604" class="LineNr">604 </span>    c3/return
-<span id="L605" class="LineNr">605 </span>
-<span id="L606" class="LineNr">606 </span><span class="subxTest">test-parse-hex-int-from-slice-negative</span>:
-<span id="L607" class="LineNr">607 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L608" class="LineNr">608 </span>    55/push-ebp
-<span id="L609" class="LineNr">609 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
-<span id="L610" class="LineNr">610 </span>    <span class="subxComment"># (eax..ecx) = &quot;-03&quot;</span>
-<span id="L611" class="LineNr">611 </span>    b8/copy-to-eax  <span class="Constant">&quot;-03&quot;</span>/imm32
-<span id="L612" class="LineNr">612 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
-<span id="L613" class="LineNr">613 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
-<span id="L614" class="LineNr">614 </span>    05/add-to-eax  4/imm32
-<span id="L615" class="LineNr">615 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
-<span id="L616" class="LineNr">616 </span>    51/push-ecx
-<span id="L617" class="LineNr">617 </span>    50/push-eax
-<span id="L618" class="LineNr">618 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
-<span id="L619" class="LineNr">619 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
+<span id="L587" class="LineNr">587 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-0x-prefix&quot;</span>/imm32
+<span id="L588" class="LineNr">588 </span>    68/push  0x34/imm32
+<span id="L589" class="LineNr">589 </span>    50/push-eax
+<span id="L590" class="LineNr">590 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L591" class="LineNr">591 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L592" class="LineNr">592 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L593" class="LineNr">593 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L594" class="LineNr">594 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L595" class="LineNr">595 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
+<span id="L596" class="LineNr">596 </span>    5d/pop-to-ebp
+<span id="L597" class="LineNr">597 </span>    c3/return
+<span id="L598" class="LineNr">598 </span>
+<span id="L599" class="LineNr">599 </span><span class="subxTest">test-parse-hex-int-from-slice-zero</span>:
+<span id="L600" class="LineNr">600 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L601" class="LineNr">601 </span>    55/push-ebp
+<span id="L602" class="LineNr">602 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
+<span id="L603" class="LineNr">603 </span>    <span class="subxComment"># (eax..ecx) = &quot;0&quot;</span>
+<span id="L604" class="LineNr">604 </span>    b8/copy-to-eax  <span class="Constant">&quot;0&quot;</span>/imm32
+<span id="L605" class="LineNr">605 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
+<span id="L606" class="LineNr">606 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
+<span id="L607" class="LineNr">607 </span>    05/add-to-eax  4/imm32
+<span id="L608" class="LineNr">608 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
+<span id="L609" class="LineNr">609 </span>    51/push-ecx
+<span id="L610" class="LineNr">610 </span>    50/push-eax
+<span id="L611" class="LineNr">611 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
+<span id="L612" class="LineNr">612 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
+<span id="L613" class="LineNr">613 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L614" class="LineNr">614 </span>    51/push-ecx
+<span id="L615" class="LineNr">615 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L616" class="LineNr">616 </span>    e8/call  <a href='067parse-hex.subx.html#L387'>parse-hex-int-from-slice</a>/disp32
+<span id="L617" class="LineNr">617 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L618" class="LineNr">618 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L619" class="LineNr">619 </span>    <span class="subxComment"># check-ints-equal(eax, 0x34a, msg)</span>
 <span id="L620" class="LineNr">620 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L621" class="LineNr">621 </span>    51/push-ecx
-<span id="L622" class="LineNr">622 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L623" class="LineNr">623 </span>    e8/call  <a href='067parse-hex.subx.html#L354'>parse-hex-int-from-slice</a>/disp32
-<span id="L624" class="LineNr">624 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L625" class="LineNr">625 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L626" class="LineNr">626 </span>    <span class="subxComment"># check-ints-equal(eax, -3, msg)</span>
-<span id="L627" class="LineNr">627 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L628" class="LineNr">628 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-negative&quot;</span>/imm32
-<span id="L629" class="LineNr">629 </span>    68/push  -3/imm32
-<span id="L630" class="LineNr">630 </span>    50/push-eax
-<span id="L631" class="LineNr">631 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L632" class="LineNr">632 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L633" class="LineNr">633 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L634" class="LineNr">634 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L635" class="LineNr">635 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L636" class="LineNr">636 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
-<span id="L637" class="LineNr">637 </span>    5d/pop-to-ebp
-<span id="L638" class="LineNr">638 </span>    c3/return
-<span id="L639" class="LineNr">639 </span>
-<span id="L640" class="LineNr">640 </span><span class="subxFunction">is-hex-digit?</span>:  <span class="subxComment"># c: byte -&gt; eax: boolean</span>
-<span id="L641" class="LineNr">641 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L642" class="LineNr">642 </span>    55/push-ebp
-<span id="L643" class="LineNr">643 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
-<span id="L644" class="LineNr">644 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L645" class="LineNr">645 </span>    51/push-ecx
-<span id="L646" class="LineNr">646 </span>    <span class="subxComment"># ecx = c</span>
-<span id="L647" class="LineNr">647 </span>    8b/copy                         1/mod/*+disp8   5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ebp+8) to ecx</span>
-<span id="L648" class="LineNr">648 </span>    <span class="subxComment"># return false if c &lt; '0'</span>
-<span id="L649" class="LineNr">649 </span>    81          7/subop/compare     3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x30/imm32        <span class="subxComment"># compare ecx</span>
-<span id="L650" class="LineNr">650 </span>    7c/jump-if-&lt;  $is-hex-digit?:false/disp8
-<span id="L651" class="LineNr">651 </span>    <span class="subxComment"># return true if c &lt;= '9'</span>
-<span id="L652" class="LineNr">652 </span>    81          7/subop/compare     3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x39/imm32        <span class="subxComment"># compare ecx</span>
-<span id="L653" class="LineNr">653 </span>    7e/jump-if-&lt;=  $is-hex-digit?:true/disp8
-<span id="L654" class="LineNr">654 </span>    <span class="subxComment"># drop case</span>
-<span id="L655" class="LineNr">655 </span>    25/and-eax-with 0x5f/imm32
-<span id="L656" class="LineNr">656 </span>    <span class="subxComment"># return false if c &gt; 'f'</span>
-<span id="L657" class="LineNr">657 </span>    81          7/subop/compare     3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x66/imm32        <span class="subxComment"># compare ecx</span>
-<span id="L658" class="LineNr">658 </span>    7f/jump-if-&gt;  $is-hex-digit?:false/disp8
-<span id="L659" class="LineNr">659 </span>    <span class="subxComment"># return true if c &gt;= 'a'</span>
-<span id="L660" class="LineNr">660 </span>    81          7/subop/compare     3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x61/imm32        <span class="subxComment"># compare ecx</span>
-<span id="L661" class="LineNr">661 </span>    7d/jump-if-&gt;=  $is-hex-digit?:true/disp8
-<span id="L662" class="LineNr">662 </span>    <span class="subxComment"># otherwise return false</span>
-<span id="L663" class="LineNr">663 </span><span class="Constant">$is-hex-digit?:false</span>:
-<span id="L664" class="LineNr">664 </span>    b8/copy-to-eax  0/imm32/false
-<span id="L665" class="LineNr">665 </span>    eb/jump $is-hex-digit?:end/disp8
-<span id="L666" class="LineNr">666 </span><span class="Constant">$is-hex-digit?:true</span>:
-<span id="L667" class="LineNr">667 </span>    b8/copy-to-eax  1/imm32/true
-<span id="L668" class="LineNr">668 </span><span class="Constant">$is-hex-digit?:end</span>:
-<span id="L669" class="LineNr">669 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L670" class="LineNr">670 </span>    59/pop-to-ecx
-<span id="L671" class="LineNr">671 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L672" class="LineNr">672 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
-<span id="L673" class="LineNr">673 </span>    5d/pop-to-ebp
-<span id="L674" class="LineNr">674 </span>    c3/return
-<span id="L675" class="LineNr">675 </span>
-<span id="L676" class="LineNr">676 </span><span class="subxTest">test-hex-below-0</span>:
-<span id="L677" class="LineNr">677 </span>    <span class="subxComment"># eax = is-hex-digit?(0x2f)</span>
-<span id="L678" class="LineNr">678 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L679" class="LineNr">679 </span>    68/push  0x2f/imm32
-<span id="L680" class="LineNr">680 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L681" class="LineNr">681 </span>    e8/call  <a href='067parse-hex.subx.html#L640'>is-hex-digit?</a>/disp32
-<span id="L682" class="LineNr">682 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L683" class="LineNr">683 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L684" class="LineNr">684 </span>    <span class="subxComment"># check-ints-equal(eax, 0, msg)</span>
-<span id="L685" class="LineNr">685 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L686" class="LineNr">686 </span>    68/push  <span class="Constant">&quot;F - test-hex-below-0&quot;</span>/imm32
-<span id="L687" class="LineNr">687 </span>    68/push  0/imm32/false
-<span id="L688" class="LineNr">688 </span>    50/push-eax
-<span id="L689" class="LineNr">689 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L690" class="LineNr">690 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L691" class="LineNr">691 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L692" class="LineNr">692 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L693" class="LineNr">693 </span>    c3/return
-<span id="L694" class="LineNr">694 </span>
-<span id="L695" class="LineNr">695 </span><span class="subxTest">test-hex-0-to-9</span>:
-<span id="L696" class="LineNr">696 </span>    <span class="subxComment"># eax = is-hex-digit?(0x30)</span>
-<span id="L697" class="LineNr">697 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L698" class="LineNr">698 </span>    68/push  0x30/imm32
-<span id="L699" class="LineNr">699 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L700" class="LineNr">700 </span>    e8/call  <a href='067parse-hex.subx.html#L640'>is-hex-digit?</a>/disp32
-<span id="L701" class="LineNr">701 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L702" class="LineNr">702 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L703" class="LineNr">703 </span>    <span class="subxComment"># check-ints-equal(eax, 1, msg)</span>
-<span id="L704" class="LineNr">704 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L705" class="LineNr">705 </span>    68/push  <span class="Constant">&quot;F - test-hex-at-0&quot;</span>/imm32
-<span id="L706" class="LineNr">706 </span>    68/push  1/imm32/true
-<span id="L707" class="LineNr">707 </span>    50/push-eax
-<span id="L708" class="LineNr">708 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L709" class="LineNr">709 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L710" class="LineNr">710 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L711" class="LineNr">711 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L712" class="LineNr">712 </span>    <span class="subxComment"># eax = is-hex-digit?(0x39)</span>
-<span id="L713" class="LineNr">713 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L714" class="LineNr">714 </span>    68/push  0x39/imm32
-<span id="L715" class="LineNr">715 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L716" class="LineNr">716 </span>    e8/call  <a href='067parse-hex.subx.html#L640'>is-hex-digit?</a>/disp32
-<span id="L717" class="LineNr">717 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L718" class="LineNr">718 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L719" class="LineNr">719 </span>    <span class="subxComment"># check-ints-equal(eax, 1, msg)</span>
-<span id="L720" class="LineNr">720 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L721" class="LineNr">721 </span>    68/push  <span class="Constant">&quot;F - test-hex-at-9&quot;</span>/imm32
-<span id="L722" class="LineNr">722 </span>    68/push  1/imm32/true
-<span id="L723" class="LineNr">723 </span>    50/push-eax
-<span id="L724" class="LineNr">724 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L725" class="LineNr">725 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L726" class="LineNr">726 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L727" class="LineNr">727 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L728" class="LineNr">728 </span>    c3/return
-<span id="L729" class="LineNr">729 </span>
-<span id="L730" class="LineNr">730 </span><span class="subxTest">test-hex-above-9-to-a</span>:
-<span id="L731" class="LineNr">731 </span>    <span class="subxComment"># eax = is-hex-digit?(0x3a)</span>
-<span id="L732" class="LineNr">732 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L733" class="LineNr">733 </span>    68/push  0x3a/imm32
-<span id="L734" class="LineNr">734 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L735" class="LineNr">735 </span>    e8/call  <a href='067parse-hex.subx.html#L640'>is-hex-digit?</a>/disp32
-<span id="L736" class="LineNr">736 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L737" class="LineNr">737 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L738" class="LineNr">738 </span>    <span class="subxComment"># check-ints-equal(eax, 0, msg)</span>
+<span id="L621" class="LineNr">621 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-zero&quot;</span>/imm32
+<span id="L622" class="LineNr">622 </span>    68/push  0/imm32
+<span id="L623" class="LineNr">623 </span>    50/push-eax
+<span id="L624" class="LineNr">624 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L625" class="LineNr">625 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L626" class="LineNr">626 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L627" class="LineNr">627 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L628" class="LineNr">628 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L629" class="LineNr">629 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
+<span id="L630" class="LineNr">630 </span>    5d/pop-to-ebp
+<span id="L631" class="LineNr">631 </span>    c3/return
+<span id="L632" class="LineNr">632 </span>
+<span id="L633" class="LineNr">633 </span><span class="subxTest">test-parse-hex-int-from-slice-0-prefix</span>:
+<span id="L634" class="LineNr">634 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L635" class="LineNr">635 </span>    55/push-ebp
+<span id="L636" class="LineNr">636 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
+<span id="L637" class="LineNr">637 </span>    <span class="subxComment"># (eax..ecx) = &quot;03&quot;</span>
+<span id="L638" class="LineNr">638 </span>    b8/copy-to-eax  <span class="Constant">&quot;03&quot;</span>/imm32
+<span id="L639" class="LineNr">639 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
+<span id="L640" class="LineNr">640 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
+<span id="L641" class="LineNr">641 </span>    05/add-to-eax  4/imm32
+<span id="L642" class="LineNr">642 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
+<span id="L643" class="LineNr">643 </span>    51/push-ecx
+<span id="L644" class="LineNr">644 </span>    50/push-eax
+<span id="L645" class="LineNr">645 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
+<span id="L646" class="LineNr">646 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
+<span id="L647" class="LineNr">647 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L648" class="LineNr">648 </span>    51/push-ecx
+<span id="L649" class="LineNr">649 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L650" class="LineNr">650 </span>    e8/call  <a href='067parse-hex.subx.html#L387'>parse-hex-int-from-slice</a>/disp32
+<span id="L651" class="LineNr">651 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L652" class="LineNr">652 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L653" class="LineNr">653 </span>    <span class="subxComment"># check-ints-equal(eax, 0x3, msg)</span>
+<span id="L654" class="LineNr">654 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L655" class="LineNr">655 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-0-prefix&quot;</span>/imm32
+<span id="L656" class="LineNr">656 </span>    68/push  0x3/imm32
+<span id="L657" class="LineNr">657 </span>    50/push-eax
+<span id="L658" class="LineNr">658 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L659" class="LineNr">659 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L660" class="LineNr">660 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L661" class="LineNr">661 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L662" class="LineNr">662 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L663" class="LineNr">663 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
+<span id="L664" class="LineNr">664 </span>    5d/pop-to-ebp
+<span id="L665" class="LineNr">665 </span>    c3/return
+<span id="L666" class="LineNr">666 </span>
+<span id="L667" class="LineNr">667 </span><span class="subxTest">test-parse-hex-int-from-slice-negative</span>:
+<span id="L668" class="LineNr">668 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L669" class="LineNr">669 </span>    55/push-ebp
+<span id="L670" class="LineNr">670 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
+<span id="L671" class="LineNr">671 </span>    <span class="subxComment"># (eax..ecx) = &quot;-03&quot;</span>
+<span id="L672" class="LineNr">672 </span>    b8/copy-to-eax  <span class="Constant">&quot;-03&quot;</span>/imm32
+<span id="L673" class="LineNr">673 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to ecx</span>
+<span id="L674" class="LineNr">674 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/eax  1/index/ecx  <span class="Normal"> . </span>          1/r32/ecx   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy eax+ecx+4 to ecx</span>
+<span id="L675" class="LineNr">675 </span>    05/add-to-eax  4/imm32
+<span id="L676" class="LineNr">676 </span>    <span class="subxComment"># var slice/ecx: slice = {eax, ecx}</span>
+<span id="L677" class="LineNr">677 </span>    51/push-ecx
+<span id="L678" class="LineNr">678 </span>    50/push-eax
+<span id="L679" class="LineNr">679 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ecx</span>
+<span id="L680" class="LineNr">680 </span>    <span class="subxComment"># eax = parse-hex-int-from-slice(slice)</span>
+<span id="L681" class="LineNr">681 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L682" class="LineNr">682 </span>    51/push-ecx
+<span id="L683" class="LineNr">683 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L684" class="LineNr">684 </span>    e8/call  <a href='067parse-hex.subx.html#L387'>parse-hex-int-from-slice</a>/disp32
+<span id="L685" class="LineNr">685 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L686" class="LineNr">686 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L687" class="LineNr">687 </span>    <span class="subxComment"># check-ints-equal(eax, -3, msg)</span>
+<span id="L688" class="LineNr">688 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L689" class="LineNr">689 </span>    68/push  <span class="Constant">&quot;F - test-parse-hex-int-from-slice-negative&quot;</span>/imm32
+<span id="L690" class="LineNr">690 </span>    68/push  -3/imm32
+<span id="L691" class="LineNr">691 </span>    50/push-eax
+<span id="L692" class="LineNr">692 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L693" class="LineNr">693 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L694" class="LineNr">694 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L695" class="LineNr">695 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L696" class="LineNr">696 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L697" class="LineNr">697 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
+<span id="L698" class="LineNr">698 </span>    5d/pop-to-ebp
+<span id="L699" class="LineNr">699 </span>    c3/return
+<span id="L700" class="LineNr">700 </span>
+<span id="L701" class="LineNr">701 </span><span class="subxFunction">is-hex-digit?</span>:  <span class="subxComment"># c: byte -&gt; eax: boolean</span>
+<span id="L702" class="LineNr">702 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L703" class="LineNr">703 </span>    55/push-ebp
+<span id="L704" class="LineNr">704 </span>    89/copy                         3/mod/direct    5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/esp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy esp to ebp</span>
+<span id="L705" class="LineNr">705 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L706" class="LineNr">706 </span>    51/push-ecx
+<span id="L707" class="LineNr">707 </span>    <span class="subxComment"># ecx = c</span>
+<span id="L708" class="LineNr">708 </span>    8b/copy                         1/mod/*+disp8   5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ecx   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ebp+8) to ecx</span>
+<span id="L709" class="LineNr">709 </span>    <span class="subxComment"># return false if c &lt; '0'</span>
+<span id="L710" class="LineNr">710 </span>    81          7/subop/compare     3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x30/imm32        <span class="subxComment"># compare ecx</span>
+<span id="L711" class="LineNr">711 </span>    7c/jump-if-&lt;  $is-hex-digit?:false/disp8
+<span id="L712" class="LineNr">712 </span>    <span class="subxComment"># return true if c &lt;= '9'</span>
+<span id="L713" class="LineNr">713 </span>    81          7/subop/compare     3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x39/imm32        <span class="subxComment"># compare ecx</span>
+<span id="L714" class="LineNr">714 </span>    7e/jump-if-&lt;=  $is-hex-digit?:true/disp8
+<span id="L715" class="LineNr">715 </span>    <span class="subxComment"># drop case</span>
+<span id="L716" class="LineNr">716 </span>    25/and-eax-with 0x5f/imm32
+<span id="L717" class="LineNr">717 </span>    <span class="subxComment"># return false if c &gt; 'f'</span>
+<span id="L718" class="LineNr">718 </span>    81          7/subop/compare     3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x66/imm32        <span class="subxComment"># compare ecx</span>
+<span id="L719" class="LineNr">719 </span>    7f/jump-if-&gt;  $is-hex-digit?:false/disp8
+<span id="L720" class="LineNr">720 </span>    <span class="subxComment"># return true if c &gt;= 'a'</span>
+<span id="L721" class="LineNr">721 </span>    81          7/subop/compare     3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x61/imm32        <span class="subxComment"># compare ecx</span>
+<span id="L722" class="LineNr">722 </span>    7d/jump-if-&gt;=  $is-hex-digit?:true/disp8
+<span id="L723" class="LineNr">723 </span>    <span class="subxComment"># otherwise return false</span>
+<span id="L724" class="LineNr">724 </span><span class="Constant">$is-hex-digit?:false</span>:
+<span id="L725" class="LineNr">725 </span>    b8/copy-to-eax  0/imm32/false
+<span id="L726" class="LineNr">726 </span>    eb/jump $is-hex-digit?:end/disp8
+<span id="L727" class="LineNr">727 </span><span class="Constant">$is-hex-digit?:true</span>:
+<span id="L728" class="LineNr">728 </span>    b8/copy-to-eax  1/imm32/true
+<span id="L729" class="LineNr">729 </span><span class="Constant">$is-hex-digit?:end</span>:
+<span id="L730" class="LineNr">730 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L731" class="LineNr">731 </span>    59/pop-to-ecx
+<span id="L732" class="LineNr">732 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L733" class="LineNr">733 </span>    89/copy                         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/ebp  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ebp to esp</span>
+<span id="L734" class="LineNr">734 </span>    5d/pop-to-ebp
+<span id="L735" class="LineNr">735 </span>    c3/return
+<span id="L736" class="LineNr">736 </span>
+<span id="L737" class="LineNr">737 </span><span class="subxTest">test-hex-below-0</span>:
+<span id="L738" class="LineNr">738 </span>    <span class="subxComment"># eax = is-hex-digit?(0x2f)</span>
 <span id="L739" class="LineNr">739 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L740" class="LineNr">740 </span>    68/push  <span class="Constant">&quot;F - test-hex-above-9-to-a&quot;</span>/imm32
-<span id="L741" class="LineNr">741 </span>    68/push  0/imm32/false
-<span id="L742" class="LineNr">742 </span>    50/push-eax
-<span id="L743" class="LineNr">743 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L744" class="LineNr">744 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L745" class="LineNr">745 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L746" class="LineNr">746 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L747" class="LineNr">747 </span>    c3/return
-<span id="L748" class="LineNr">748 </span>
-<span id="L749" class="LineNr">749 </span><span class="subxTest">test-hex-a-to-f</span>:
-<span id="L750" class="LineNr">750 </span>    <span class="subxComment"># eax = is-hex-digit?(0x61)</span>
-<span id="L751" class="LineNr">751 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L752" class="LineNr">752 </span>    68/push  0x61/imm32
-<span id="L753" class="LineNr">753 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L754" class="LineNr">754 </span>    e8/call  <a href='067parse-hex.subx.html#L640'>is-hex-digit?</a>/disp32
-<span id="L755" class="LineNr">755 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L756" class="LineNr">756 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L757" class="LineNr">757 </span>    <span class="subxComment"># check-ints-equal(eax, 1, msg)</span>
+<span id="L740" class="LineNr">740 </span>    68/push  0x2f/imm32
+<span id="L741" class="LineNr">741 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L742" class="LineNr">742 </span>    e8/call  <a href='067parse-hex.subx.html#L701'>is-hex-digit?</a>/disp32
+<span id="L743" class="LineNr">743 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L744" class="LineNr">744 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L745" class="LineNr">745 </span>    <span class="subxComment"># check-ints-equal(eax, 0, msg)</span>
+<span id="L746" class="LineNr">746 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L747" class="LineNr">747 </span>    68/push  <span class="Constant">&quot;F - test-hex-below-0&quot;</span>/imm32
+<span id="L748" class="LineNr">748 </span>    68/push  0/imm32/false
+<span id="L749" class="LineNr">749 </span>    50/push-eax
+<span id="L750" class="LineNr">750 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L751" class="LineNr">751 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L752" class="LineNr">752 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L753" class="LineNr">753 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L754" class="LineNr">754 </span>    c3/return
+<span id="L755" class="LineNr">755 </span>
+<span id="L756" class="LineNr">756 </span><span class="subxTest">test-hex-0-to-9</span>:
+<span id="L757" class="LineNr">757 </span>    <span class="subxComment"># eax = is-hex-digit?(0x30)</span>
 <span id="L758" class="LineNr">758 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L759" class="LineNr">759 </span>    68/push  <span class="Constant">&quot;F - test-hex-at-a&quot;</span>/imm32
-<span id="L760" class="LineNr">760 </span>    68/push  1/imm32/true
-<span id="L761" class="LineNr">761 </span>    50/push-eax
-<span id="L762" class="LineNr">762 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L763" class="LineNr">763 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L764" class="LineNr">764 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L765" class="LineNr">765 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L766" class="LineNr">766 </span>    <span class="subxComment"># eax = is-hex-digit?(0x66)</span>
-<span id="L767" class="LineNr">767 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L768" class="LineNr">768 </span>    68/push  0x66/imm32
+<span id="L759" class="LineNr">759 </span>    68/push  0x30/imm32
+<span id="L760" class="LineNr">760 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L761" class="LineNr">761 </span>    e8/call  <a href='067parse-hex.subx.html#L701'>is-hex-digit?</a>/disp32
+<span id="L762" class="LineNr">762 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L763" class="LineNr">763 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L764" class="LineNr">764 </span>    <span class="subxComment"># check-ints-equal(eax, 1, msg)</span>
+<span id="L765" class="LineNr">765 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L766" class="LineNr">766 </span>    68/push  <span class="Constant">&quot;F - test-hex-at-0&quot;</span>/imm32
+<span id="L767" class="LineNr">767 </span>    68/push  1/imm32/true
+<span id="L768" class="LineNr">768 </span>    50/push-eax
 <span id="L769" class="LineNr">769 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L770" class="LineNr">770 </span>    e8/call  <a href='067parse-hex.subx.html#L640'>is-hex-digit?</a>/disp32
+<span id="L770" class="LineNr">770 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L771" class="LineNr">771 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L772" class="LineNr">772 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L773" class="LineNr">773 </span>    <span class="subxComment"># check-ints-equal(eax, 1, msg)</span>
+<span id="L772" class="LineNr">772 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L773" class="LineNr">773 </span>    <span class="subxComment"># eax = is-hex-digit?(0x39)</span>
 <span id="L774" class="LineNr">774 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L775" class="LineNr">775 </span>    68/push  <span class="Constant">&quot;F - test-hex-at-f&quot;</span>/imm32
-<span id="L776" class="LineNr">776 </span>    68/push  1/imm32/true
-<span id="L777" class="LineNr">777 </span>    50/push-eax
-<span id="L778" class="LineNr">778 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L779" class="LineNr">779 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L780" class="LineNr">780 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L781" class="LineNr">781 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L782" class="LineNr">782 </span>    c3/return
-<span id="L783" class="LineNr">783 </span>
-<span id="L784" class="LineNr">784 </span><span class="subxTest">test-hex-above-f</span>:
-<span id="L785" class="LineNr">785 </span>    <span class="subxComment"># eax = is-hex-digit?(0x67)</span>
-<span id="L786" class="LineNr">786 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L787" class="LineNr">787 </span>    68/push  0x67/imm32
-<span id="L788" class="LineNr">788 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L789" class="LineNr">789 </span>    e8/call  <a href='067parse-hex.subx.html#L640'>is-hex-digit?</a>/disp32
-<span id="L790" class="LineNr">790 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L791" class="LineNr">791 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L792" class="LineNr">792 </span>    <span class="subxComment"># check-ints-equal(eax, 0, msg)</span>
+<span id="L775" class="LineNr">775 </span>    68/push  0x39/imm32
+<span id="L776" class="LineNr">776 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L777" class="LineNr">777 </span>    e8/call  <a href='067parse-hex.subx.html#L701'>is-hex-digit?</a>/disp32
+<span id="L778" class="LineNr">778 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L779" class="LineNr">779 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L780" class="LineNr">780 </span>    <span class="subxComment"># check-ints-equal(eax, 1, msg)</span>
+<span id="L781" class="LineNr">781 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L782" class="LineNr">782 </span>    68/push  <span class="Constant">&quot;F - test-hex-at-9&quot;</span>/imm32
+<span id="L783" class="LineNr">783 </span>    68/push  1/imm32/true
+<span id="L784" class="LineNr">784 </span>    50/push-eax
+<span id="L785" class="LineNr">785 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L786" class="LineNr">786 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L787" class="LineNr">787 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L788" class="LineNr">788 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L789" class="LineNr">789 </span>    c3/return
+<span id="L790" class="LineNr">790 </span>
+<span id="L791" class="LineNr">791 </span><span class="subxTest">test-hex-above-9-to-a</span>:
+<span id="L792" class="LineNr">792 </span>    <span class="subxComment"># eax = is-hex-digit?(0x3a)</span>
 <span id="L793" class="LineNr">793 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L794" class="LineNr">794 </span>    68/push  <span class="Constant">&quot;F - test-hex-above-f&quot;</span>/imm32
-<span id="L795" class="LineNr">795 </span>    68/push  0/imm32/false
-<span id="L796" class="LineNr">796 </span>    50/push-eax
-<span id="L797" class="LineNr">797 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L798" class="LineNr">798 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L799" class="LineNr">799 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L800" class="LineNr">800 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
-<span id="L801" class="LineNr">801 </span>    c3/return
-<span id="L802" class="LineNr">802 </span>
-<span id="L803" class="LineNr">803 </span><span class="subxFunction">from-hex-char</span>:  <span class="subxComment"># in/eax: byte -&gt; out/eax: nibble</span>
-<span id="L804" class="LineNr">804 </span><span class="Constant">$from-hex-char:check0</span>:
-<span id="L805" class="LineNr">805 </span>    <span class="subxComment"># if (eax &lt; '0') goto abort</span>
-<span id="L806" class="LineNr">806 </span>    3d/compare-eax-with  0x30/imm32/0
-<span id="L807" class="LineNr">807 </span>    7c/jump-if-&lt;  $from-hex-char:abort/disp8
-<span id="L808" class="LineNr">808 </span><span class="Constant">$from-hex-char:check1</span>:
-<span id="L809" class="LineNr">809 </span>    <span class="subxComment"># if (eax &gt; 'f') goto abort</span>
-<span id="L810" class="LineNr">810 </span>    3d/compare-eax-with  0x66/imm32/f
-<span id="L811" class="LineNr">811 </span>    7f/jump-if-&gt;  $from-hex-char:abort/disp8
-<span id="L812" class="LineNr">812 </span><span class="Constant">$from-hex-char:check2</span>:
-<span id="L813" class="LineNr">813 </span>    <span class="subxComment"># if (eax &gt; '9') goto next check</span>
-<span id="L814" class="LineNr">814 </span>    3d/compare-eax-with  0x39/imm32/9
-<span id="L815" class="LineNr">815 </span>    7f/jump-if-&gt;  $from-hex-char:check3/disp8
-<span id="L816" class="LineNr">816 </span><span class="Constant">$from-hex-char:digit</span>:
-<span id="L817" class="LineNr">817 </span>    <span class="subxComment"># return eax - '0'</span>
-<span id="L818" class="LineNr">818 </span>    2d/subtract-from-eax  0x30/imm32/0
-<span id="L819" class="LineNr">819 </span>    c3/return
-<span id="L820" class="LineNr">820 </span><span class="Constant">$from-hex-char:check3</span>:
-<span id="L821" class="LineNr">821 </span>    <span class="subxComment"># if (eax &lt; 'a') goto abort</span>
-<span id="L822" class="LineNr">822 </span>    3d/compare-eax-with  0x61/imm32/a
-<span id="L823" class="LineNr">823 </span>    7c/jump-if-&lt;  $from-hex-char:abort/disp8
-<span id="L824" class="LineNr">824 </span><span class="Constant">$from-hex-char:letter</span>:
-<span id="L825" class="LineNr">825 </span>    <span class="subxComment"># return eax - ('a'-10)</span>
-<span id="L826" class="LineNr">826 </span>    2d/subtract-from-eax  0x57/imm32/a-10
-<span id="L827" class="LineNr">827 </span>    c3/return
-<span id="L828" class="LineNr">828 </span>
-<span id="L829" class="LineNr">829 </span><span class="Constant">$from-hex-char:abort</span>:
-<span id="L830" class="LineNr">830 </span>    <span class="subxS1Comment"># . _write(2/stderr, error)</span>
-<span id="L831" class="LineNr">831 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L832" class="LineNr">832 </span>    68/push  <span class="Constant">&quot;invalid hex char: &quot;</span>/imm32
-<span id="L833" class="LineNr">833 </span>    68/push  2/imm32/stderr
-<span id="L834" class="LineNr">834 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L835" class="LineNr">835 </span>    e8/call  <a href='050_write.subx.html#L14'>_write</a>/disp32
-<span id="L836" class="LineNr">836 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L837" class="LineNr">837 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to esp</span>
-<span id="L838" class="LineNr">838 </span>    <span class="subxS1Comment"># . clear-stream($Stderr-&gt;buffer)</span>
-<span id="L839" class="LineNr">839 </span>    <span class="subxS2Comment"># . . save eax</span>
-<span id="L840" class="LineNr">840 </span>    50/push-eax
-<span id="L841" class="LineNr">841 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L842" class="LineNr">842 </span>    68/push  $Stderr-&gt;buffer/imm32
-<span id="L843" class="LineNr">843 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L844" class="LineNr">844 </span>    e8/call  <a href='055stream.subx.html#L17'>clear-stream</a>/disp32
-<span id="L845" class="LineNr">845 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L846" class="LineNr">846 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L847" class="LineNr">847 </span>    <span class="subxS2Comment"># . . restore eax</span>
-<span id="L848" class="LineNr">848 </span>    58/pop-to-eax
-<span id="L849" class="LineNr">849 </span>    <span class="subxS1Comment"># . print-int32-buffered(Stderr, eax)</span>
-<span id="L850" class="LineNr">850 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L851" class="LineNr">851 </span>    50/push-eax
-<span id="L852" class="LineNr">852 </span>    68/push  <span class="SpecialChar"><a href='065write-buffered.subx.html#L209'>Stderr</a></span>/imm32
-<span id="L853" class="LineNr">853 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L854" class="LineNr">854 </span>    e8/call  <a href='066print-int.subx.html#L266'>print-int32-buffered</a>/disp32
-<span id="L855" class="LineNr">855 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L856" class="LineNr">856 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to esp</span>
-<span id="L857" class="LineNr">857 </span>    <span class="subxS1Comment"># . flush(Stderr)</span>
-<span id="L858" class="LineNr">858 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L859" class="LineNr">859 </span>    68/push  <span class="SpecialChar"><a href='065write-buffered.subx.html#L209'>Stderr</a></span>/imm32
-<span id="L860" class="LineNr">860 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L861" class="LineNr">861 </span>    e8/call  <a href='064write-byte.subx.html#L81'>flush</a>/disp32
-<span id="L862" class="LineNr">862 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L863" class="LineNr">863 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
-<span id="L864" class="LineNr">864 </span>    <span class="subxS1Comment"># . _write(2/stderr, &quot;\n&quot;)</span>
-<span id="L865" class="LineNr">865 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L866" class="LineNr">866 </span>    68/push  <span class="SpecialChar"><a href='051test.subx.html#L83'>Newline</a></span>/imm32
-<span id="L867" class="LineNr">867 </span>    68/push  2/imm32/stderr
-<span id="L868" class="LineNr">868 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L869" class="LineNr">869 </span>    e8/call  <a href='050_write.subx.html#L14'>_write</a>/disp32
-<span id="L870" class="LineNr">870 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L871" class="LineNr">871 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to esp</span>
-<span id="L872" class="LineNr">872 </span>    <span class="subxS1Comment"># . syscall(exit, 1)</span>
-<span id="L873" class="LineNr">873 </span>    bb/copy-to-ebx  1/imm32
-<span id="L874" class="LineNr">874 </span>    b8/copy-to-eax  1/imm32/exit
-<span id="L875" class="LineNr">875 </span>    cd/syscall  0x80/imm8
-<span id="L876" class="LineNr">876 </span>    <span class="subxComment"># never gets here</span>
-<span id="L877" class="LineNr">877 </span>
-<span id="L878" class="LineNr">878 </span><span class="subxS2Comment"># . . vim&#0058;nowrap:textwidth=0</span>
+<span id="L794" class="LineNr">794 </span>    68/push  0x3a/imm32
+<span id="L795" class="LineNr">795 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L796" class="LineNr">796 </span>    e8/call  <a href='067parse-hex.subx.html#L701'>is-hex-digit?</a>/disp32
+<span id="L797" class="LineNr">797 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L798" class="LineNr">798 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L799" class="LineNr">799 </span>    <span class="subxComment"># check-ints-equal(eax, 0, msg)</span>
+<span id="L800" class="LineNr">800 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L801" class="LineNr">801 </span>    68/push  <span class="Constant">&quot;F - test-hex-above-9-to-a&quot;</span>/imm32
+<span id="L802" class="LineNr">802 </span>    68/push  0/imm32/false
+<span id="L803" class="LineNr">803 </span>    50/push-eax
+<span id="L804" class="LineNr">804 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L805" class="LineNr">805 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L806" class="LineNr">806 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L807" class="LineNr">807 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L808" class="LineNr">808 </span>    c3/return
+<span id="L809" class="LineNr">809 </span>
+<span id="L810" class="LineNr">810 </span><span class="subxTest">test-hex-a-to-f</span>:
+<span id="L811" class="LineNr">811 </span>    <span class="subxComment"># eax = is-hex-digit?(0x61)</span>
+<span id="L812" class="LineNr">812 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L813" class="LineNr">813 </span>    68/push  0x61/imm32
+<span id="L814" class="LineNr">814 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L815" class="LineNr">815 </span>    e8/call  <a href='067parse-hex.subx.html#L701'>is-hex-digit?</a>/disp32
+<span id="L816" class="LineNr">816 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L817" class="LineNr">817 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L818" class="LineNr">818 </span>    <span class="subxComment"># check-ints-equal(eax, 1, msg)</span>
+<span id="L819" class="LineNr">819 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L820" class="LineNr">820 </span>    68/push  <span class="Constant">&quot;F - test-hex-at-a&quot;</span>/imm32
+<span id="L821" class="LineNr">821 </span>    68/push  1/imm32/true
+<span id="L822" class="LineNr">822 </span>    50/push-eax
+<span id="L823" class="LineNr">823 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L824" class="LineNr">824 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L825" class="LineNr">825 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L826" class="LineNr">826 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L827" class="LineNr">827 </span>    <span class="subxComment"># eax = is-hex-digit?(0x66)</span>
+<span id="L828" class="LineNr">828 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L829" class="LineNr">829 </span>    68/push  0x66/imm32
+<span id="L830" class="LineNr">830 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L831" class="LineNr">831 </span>    e8/call  <a href='067parse-hex.subx.html#L701'>is-hex-digit?</a>/disp32
+<span id="L832" class="LineNr">832 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L833" class="LineNr">833 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L834" class="LineNr">834 </span>    <span class="subxComment"># check-ints-equal(eax, 1, msg)</span>
+<span id="L835" class="LineNr">835 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L836" class="LineNr">836 </span>    68/push  <span class="Constant">&quot;F - test-hex-at-f&quot;</span>/imm32
+<span id="L837" class="LineNr">837 </span>    68/push  1/imm32/true
+<span id="L838" class="LineNr">838 </span>    50/push-eax
+<span id="L839" class="LineNr">839 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L840" class="LineNr">840 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L841" class="LineNr">841 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L842" class="LineNr">842 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L843" class="LineNr">843 </span>    c3/return
+<span id="L844" class="LineNr">844 </span>
+<span id="L845" class="LineNr">845 </span><span class="subxTest">test-hex-above-f</span>:
+<span id="L846" class="LineNr">846 </span>    <span class="subxComment"># eax = is-hex-digit?(0x67)</span>
+<span id="L847" class="LineNr">847 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L848" class="LineNr">848 </span>    68/push  0x67/imm32
+<span id="L849" class="LineNr">849 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L850" class="LineNr">850 </span>    e8/call  <a href='067parse-hex.subx.html#L701'>is-hex-digit?</a>/disp32
+<span id="L851" class="LineNr">851 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L852" class="LineNr">852 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L853" class="LineNr">853 </span>    <span class="subxComment"># check-ints-equal(eax, 0, msg)</span>
+<span id="L854" class="LineNr">854 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L855" class="LineNr">855 </span>    68/push  <span class="Constant">&quot;F - test-hex-above-f&quot;</span>/imm32
+<span id="L856" class="LineNr">856 </span>    68/push  0/imm32/false
+<span id="L857" class="LineNr">857 </span>    50/push-eax
+<span id="L858" class="LineNr">858 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L859" class="LineNr">859 </span>    e8/call  <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L860" class="LineNr">860 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L861" class="LineNr">861 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to esp</span>
+<span id="L862" class="LineNr">862 </span>    c3/return
+<span id="L863" class="LineNr">863 </span>
+<span id="L864" class="LineNr">864 </span><span class="subxFunction">from-hex-char</span>:  <span class="subxComment"># in/eax: byte -&gt; out/eax: nibble</span>
+<span id="L865" class="LineNr">865 </span><span class="Constant">$from-hex-char:check0</span>:
+<span id="L866" class="LineNr">866 </span>    <span class="subxComment"># if (eax &lt; '0') goto abort</span>
+<span id="L867" class="LineNr">867 </span>    3d/compare-eax-with  0x30/imm32/0
+<span id="L868" class="LineNr">868 </span>    7c/jump-if-&lt;  $from-hex-char:abort/disp8
+<span id="L869" class="LineNr">869 </span><span class="Constant">$from-hex-char:check1</span>:
+<span id="L870" class="LineNr">870 </span>    <span class="subxComment"># if (eax &gt; 'f') goto abort</span>
+<span id="L871" class="LineNr">871 </span>    3d/compare-eax-with  0x66/imm32/f
+<span id="L872" class="LineNr">872 </span>    7f/jump-if-&gt;  $from-hex-char:abort/disp8
+<span id="L873" class="LineNr">873 </span><span class="Constant">$from-hex-char:check2</span>:
+<span id="L874" class="LineNr">874 </span>    <span class="subxComment"># if (eax &gt; '9') goto next check</span>
+<span id="L875" class="LineNr">875 </span>    3d/compare-eax-with  0x39/imm32/9
+<span id="L876" class="LineNr">876 </span>    7f/jump-if-&gt;  $from-hex-char:check3/disp8
+<span id="L877" class="LineNr">877 </span><span class="Constant">$from-hex-char:digit</span>:
+<span id="L878" class="LineNr">878 </span>    <span class="subxComment"># return eax - '0'</span>
+<span id="L879" class="LineNr">879 </span>    2d/subtract-from-eax  0x30/imm32/0
+<span id="L880" class="LineNr">880 </span>    c3/return
+<span id="L881" class="LineNr">881 </span><span class="Constant">$from-hex-char:check3</span>:
+<span id="L882" class="LineNr">882 </span>    <span class="subxComment"># if (eax &lt; 'a') goto abort</span>
+<span id="L883" class="LineNr">883 </span>    3d/compare-eax-with  0x61/imm32/a
+<span id="L884" class="LineNr">884 </span>    7c/jump-if-&lt;  $from-hex-char:abort/disp8
+<span id="L885" class="LineNr">885 </span><span class="Constant">$from-hex-char:letter</span>:
+<span id="L886" class="LineNr">886 </span>    <span class="subxComment"># return eax - ('a'-10)</span>
+<span id="L887" class="LineNr">887 </span>    2d/subtract-from-eax  0x57/imm32/a-10
+<span id="L888" class="LineNr">888 </span>    c3/return
+<span id="L889" class="LineNr">889 </span>
+<span id="L890" class="LineNr">890 </span><span class="Constant">$from-hex-char:abort</span>:
+<span id="L891" class="LineNr">891 </span>    <span class="subxS1Comment"># . _write(2/stderr, error)</span>
+<span id="L892" class="LineNr">892 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L893" class="LineNr">893 </span>    68/push  <span class="Constant">&quot;invalid hex char: &quot;</span>/imm32
+<span id="L894" class="LineNr">894 </span>    68/push  2/imm32/stderr
+<span id="L895" class="LineNr">895 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L896" class="LineNr">896 </span>    e8/call  <a href='050_write.subx.html#L14'>_write</a>/disp32
+<span id="L897" class="LineNr">897 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L898" class="LineNr">898 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to esp</span>
+<span id="L899" class="LineNr">899 </span>    <span class="subxS1Comment"># . clear-stream($Stderr-&gt;buffer)</span>
+<span id="L900" class="LineNr">900 </span>    <span class="subxS2Comment"># . . save eax</span>
+<span id="L901" class="LineNr">901 </span>    50/push-eax
+<span id="L902" class="LineNr">902 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L903" class="LineNr">903 </span>    68/push  $Stderr-&gt;buffer/imm32
+<span id="L904" class="LineNr">904 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L905" class="LineNr">905 </span>    e8/call  <a href='055stream.subx.html#L17'>clear-stream</a>/disp32
+<span id="L906" class="LineNr">906 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L907" class="LineNr">907 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L908" class="LineNr">908 </span>    <span class="subxS2Comment"># . . restore eax</span>
+<span id="L909" class="LineNr">909 </span>    58/pop-to-eax
+<span id="L910" class="LineNr">910 </span>    <span class="subxS1Comment"># . print-int32-buffered(Stderr, eax)</span>
+<span id="L911" class="LineNr">911 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L912" class="LineNr">912 </span>    50/push-eax
+<span id="L913" class="LineNr">913 </span>    68/push  <span class="SpecialChar"><a href='065write-buffered.subx.html#L209'>Stderr</a></span>/imm32
+<span id="L914" class="LineNr">914 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L915" class="LineNr">915 </span>    e8/call  <a href='066print-int.subx.html#L266'>print-int32-buffered</a>/disp32
+<span id="L916" class="LineNr">916 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L917" class="LineNr">917 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to esp</span>
+<span id="L918" class="LineNr">918 </span>    <span class="subxS1Comment"># . flush(Stderr)</span>
+<span id="L919" class="LineNr">919 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L920" class="LineNr">920 </span>    68/push  <span class="SpecialChar"><a href='065write-buffered.subx.html#L209'>Stderr</a></span>/imm32
+<span id="L921" class="LineNr">921 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L922" class="LineNr">922 </span>    e8/call  <a href='064write-byte.subx.html#L81'>flush</a>/disp32
+<span id="L923" class="LineNr">923 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L924" class="LineNr">924 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
+<span id="L925" class="LineNr">925 </span>    <span class="subxS1Comment"># . _write(2/stderr, &quot;\n&quot;)</span>
+<span id="L926" class="LineNr">926 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L927" class="LineNr">927 </span>    68/push  <span class="SpecialChar"><a href='051test.subx.html#L83'>Newline</a></span>/imm32
+<span id="L928" class="LineNr">928 </span>    68/push  2/imm32/stderr
+<span id="L929" class="LineNr">929 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L930" class="LineNr">930 </span>    e8/call  <a href='050_write.subx.html#L14'>_write</a>/disp32
+<span id="L931" class="LineNr">931 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L932" class="LineNr">932 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to esp</span>
+<span id="L933" class="LineNr">933 </span>    <span class="subxS1Comment"># . syscall(exit, 1)</span>
+<span id="L934" class="LineNr">934 </span>    bb/copy-to-ebx  1/imm32
+<span id="L935" class="LineNr">935 </span>    b8/copy-to-eax  1/imm32/exit
+<span id="L936" class="LineNr">936 </span>    cd/syscall  0x80/imm8
+<span id="L937" class="LineNr">937 </span>    <span class="subxComment"># never gets here</span>
+<span id="L938" class="LineNr">938 </span>
+<span id="L939" class="LineNr">939 </span><span class="subxS2Comment"># . . vim&#0058;nowrap:textwidth=0</span>
 </pre>
 </body>
 </html>
diff --git a/html/079emit.subx.html b/html/079emit.subx.html
index 7b96917b..57b6d11c 100644
--- a/html/079emit.subx.html
+++ b/html/079emit.subx.html
@@ -133,7 +133,7 @@ if ('onhashchange' in window) {
 <span id="L72" class="LineNr"> 72 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L73" class="LineNr"> 73 </span>    57/push-edi
 <span id="L74" class="LineNr"> 74 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L75" class="LineNr"> 75 </span>    e8/call  <a href='067parse-hex.subx.html#L354'>parse-hex-int-from-slice</a>/disp32
+<span id="L75" class="LineNr"> 75 </span>    e8/call  <a href='067parse-hex.subx.html#L387'>parse-hex-int-from-slice</a>/disp32
 <span id="L76" class="LineNr"> 76 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L77" class="LineNr"> 77 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
 <span id="L78" class="LineNr"> 78 </span>    <span class="subxS1Comment"># . emit-hex(out, value, width)</span>
diff --git a/html/100array-equal.subx.html b/html/100array-equal.subx.html
index 7bc1de5c..452840cb 100644
--- a/html/100array-equal.subx.html
+++ b/html/100array-equal.subx.html
@@ -426,7 +426,7 @@ if ('onhashchange' in window) {
 <span id="L366" class="LineNr">366 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L367" class="LineNr">367 </span>    51/push-ecx
 <span id="L368" class="LineNr">368 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L369" class="LineNr">369 </span>    e8/call <a href='067parse-hex.subx.html#L354'>parse-hex-int-from-slice</a>/disp32
+<span id="L369" class="LineNr">369 </span>    e8/call <a href='067parse-hex.subx.html#L387'>parse-hex-int-from-slice</a>/disp32
 <span id="L370" class="LineNr">370 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L371" class="LineNr">371 </span>    81 0/subop/add %esp 4/imm32
 <span id="L372" class="LineNr">372 </span>    <span class="subxS1Comment"># . *out = eax</span>
diff --git a/html/apps/assort.subx.html b/html/apps/assort.subx.html
index 23f49434..efb6a8f2 100644
--- a/html/apps/assort.subx.html
+++ b/html/apps/assort.subx.html
@@ -69,13 +69,13 @@ if ('onhashchange' in window) {
 <span id="L7" class="LineNr">  7 </span><span class="subxComment"># because we don't know if they refer to the line above or the line below.</span>
 <span id="L8" class="LineNr">  8 </span><span class="subxComment">#</span>
 <span id="L9" class="LineNr">  9 </span><span class="subxComment"># To run:</span>
-<span id="L10" class="LineNr"> 10 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/subx-params.subx apps/assort.subx  -o apps/assort</span>
+<span id="L10" class="LineNr"> 10 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/subx-params.subx apps/assort.subx  -o apps/assort</span>
 <span id="L11" class="LineNr"> 11 </span><span class="subxComment">#   $ cat x</span>
 <span id="L12" class="LineNr"> 12 </span><span class="subxComment">#   == code</span>
 <span id="L13" class="LineNr"> 13 </span><span class="subxComment">#   abc</span>
 <span id="L14" class="LineNr"> 14 </span><span class="subxComment">#   == code</span>
 <span id="L15" class="LineNr"> 15 </span><span class="subxComment">#   def</span>
-<span id="L16" class="LineNr"> 16 </span><span class="subxComment">#   $ cat x  |./subx run apps/assort</span>
+<span id="L16" class="LineNr"> 16 </span><span class="subxComment">#   $ cat x  |./bootstrap run apps/assort</span>
 <span id="L17" class="LineNr"> 17 </span><span class="subxComment">#   == code</span>
 <span id="L18" class="LineNr"> 18 </span><span class="subxComment">#   abc</span>
 <span id="L19" class="LineNr"> 19 </span><span class="subxComment">#   def</span>
diff --git a/html/apps/crenshaw2-1.subx.html b/html/apps/crenshaw2-1.subx.html
index 1c9ae904..42bfe4d6 100644
--- a/html/apps/crenshaw2-1.subx.html
+++ b/html/apps/crenshaw2-1.subx.html
@@ -64,8 +64,8 @@ if ('onhashchange' in window) {
 <span id="L3" class="LineNr">  3 </span><span class="subxComment"># except that we support hex digits.</span>
 <span id="L4" class="LineNr">  4 </span><span class="subxComment">#</span>
 <span id="L5" class="LineNr">  5 </span><span class="subxComment"># To run:</span>
-<span id="L6" class="LineNr">  6 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/crenshaw2-1.subx -o apps/crenshaw2-1</span>
-<span id="L7" class="LineNr">  7 </span><span class="subxComment">#   $ echo '3'  |./subx run apps/crenshaw2-1</span>
+<span id="L6" class="LineNr">  6 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/crenshaw2-1.subx -o apps/crenshaw2-1</span>
+<span id="L7" class="LineNr">  7 </span><span class="subxComment">#   $ echo '3'  |./bootstrap run apps/crenshaw2-1</span>
 <span id="L8" class="LineNr">  8 </span><span class="subxComment"># Expected output:</span>
 <span id="L9" class="LineNr">  9 </span><span class="subxComment">#   # syscall(exit, 3)</span>
 <span id="L10" class="LineNr"> 10 </span><span class="subxComment">#   bb/copy-to-ebx  3/imm32</span>
@@ -73,14 +73,14 @@ if ('onhashchange' in window) {
 <span id="L12" class="LineNr"> 12 </span><span class="subxComment">#   cd/syscall  0x80/imm8</span>
 <span id="L13" class="LineNr"> 13 </span><span class="subxComment">#</span>
 <span id="L14" class="LineNr"> 14 </span><span class="subxComment"># To run the generated output:</span>
-<span id="L15" class="LineNr"> 15 </span><span class="subxComment">#   $ echo '3'  |./subx run apps/crenshaw2-1 &gt; z1.subx</span>
-<span id="L16" class="LineNr"> 16 </span><span class="subxComment">#   $ ./subx translate init.linux z1.subx -o z1</span>
-<span id="L17" class="LineNr"> 17 </span><span class="subxComment">#   $ ./subx run z1</span>
+<span id="L15" class="LineNr"> 15 </span><span class="subxComment">#   $ echo '3'  |./bootstrap run apps/crenshaw2-1 &gt; z1.subx</span>
+<span id="L16" class="LineNr"> 16 </span><span class="subxComment">#   $ ./bootstrap translate init.linux z1.subx -o z1</span>
+<span id="L17" class="LineNr"> 17 </span><span class="subxComment">#   $ ./bootstrap run z1</span>
 <span id="L18" class="LineNr"> 18 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L19" class="LineNr"> 19 </span><span class="subxComment">#   3</span>
 <span id="L20" class="LineNr"> 20 </span><span class="subxComment">#</span>
 <span id="L21" class="LineNr"> 21 </span><span class="subxComment"># Stdin must contain just a single hex digit. Other input will print an error:</span>
-<span id="L22" class="LineNr"> 22 </span><span class="subxComment">#   $ echo 'xyz'  |./subx run apps/crenshaw2-1</span>
+<span id="L22" class="LineNr"> 22 </span><span class="subxComment">#   $ echo 'xyz'  |./bootstrap run apps/crenshaw2-1</span>
 <span id="L23" class="LineNr"> 23 </span><span class="subxComment">#   Error: integer expected</span>
 <span id="L24" class="LineNr"> 24 </span><span class="subxComment">#</span>
 <span id="L25" class="LineNr"> 25 </span><span class="subxComment"># Names in this file sometimes follow Crenshaw's original rather than my usual</span>
diff --git a/html/apps/crenshaw2-1b.subx.html b/html/apps/crenshaw2-1b.subx.html
index 01b29a6a..67c8891f 100644
--- a/html/apps/crenshaw2-1b.subx.html
+++ b/html/apps/crenshaw2-1b.subx.html
@@ -64,8 +64,8 @@ if ('onhashchange' in window) {
 <span id="L3" class="LineNr">  3 </span><span class="subxComment"># except that we support hex numbers of multiple digits.</span>
 <span id="L4" class="LineNr">  4 </span><span class="subxComment">#</span>
 <span id="L5" class="LineNr">  5 </span><span class="subxComment"># To run:</span>
-<span id="L6" class="LineNr">  6 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/crenshaw2-1b.subx -o apps/crenshaw2-1b</span>
-<span id="L7" class="LineNr">  7 </span><span class="subxComment">#   $ echo '1a'  |./subx run apps/crenshaw2-1b</span>
+<span id="L6" class="LineNr">  6 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/crenshaw2-1b.subx -o apps/crenshaw2-1b</span>
+<span id="L7" class="LineNr">  7 </span><span class="subxComment">#   $ echo '1a'  |./bootstrap run apps/crenshaw2-1b</span>
 <span id="L8" class="LineNr">  8 </span><span class="subxComment"># Expected output:</span>
 <span id="L9" class="LineNr">  9 </span><span class="subxComment">#   # syscall(exit, 1a)</span>
 <span id="L10" class="LineNr"> 10 </span><span class="subxComment">#   bb/copy-to-ebx  3/imm32</span>
@@ -73,14 +73,14 @@ if ('onhashchange' in window) {
 <span id="L12" class="LineNr"> 12 </span><span class="subxComment">#   cd/syscall  0x80/imm8</span>
 <span id="L13" class="LineNr"> 13 </span><span class="subxComment">#</span>
 <span id="L14" class="LineNr"> 14 </span><span class="subxComment"># To run the generated output:</span>
-<span id="L15" class="LineNr"> 15 </span><span class="subxComment">#   $ echo '1a'  |./subx run apps/crenshaw2-1b &gt; z1.subx</span>
-<span id="L16" class="LineNr"> 16 </span><span class="subxComment">#   $ ./subx translate init.linux z1.subx -o z1</span>
-<span id="L17" class="LineNr"> 17 </span><span class="subxComment">#   $ ./subx run z1</span>
+<span id="L15" class="LineNr"> 15 </span><span class="subxComment">#   $ echo '1a'  |./bootstrap run apps/crenshaw2-1b &gt; z1.subx</span>
+<span id="L16" class="LineNr"> 16 </span><span class="subxComment">#   $ ./bootstrap translate init.linux z1.subx -o z1</span>
+<span id="L17" class="LineNr"> 17 </span><span class="subxComment">#   $ ./bootstrap run z1</span>
 <span id="L18" class="LineNr"> 18 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L19" class="LineNr"> 19 </span><span class="subxComment">#   26  # 0x1a in decimal</span>
 <span id="L20" class="LineNr"> 20 </span><span class="subxComment">#</span>
 <span id="L21" class="LineNr"> 21 </span><span class="subxComment"># Stdin must contain just a single hex digit. Other input will print an error:</span>
-<span id="L22" class="LineNr"> 22 </span><span class="subxComment">#   $ echo 'xyz'  |./subx run apps/crenshaw2-1b</span>
+<span id="L22" class="LineNr"> 22 </span><span class="subxComment">#   $ echo 'xyz'  |./bootstrap run apps/crenshaw2-1b</span>
 <span id="L23" class="LineNr"> 23 </span><span class="subxComment">#   Error: integer expected</span>
 <span id="L24" class="LineNr"> 24 </span><span class="subxComment">#</span>
 <span id="L25" class="LineNr"> 25 </span><span class="subxComment"># Names in this file sometimes follow Crenshaw's original rather than my usual</span>
diff --git a/html/apps/dquotes.subx.html b/html/apps/dquotes.subx.html
index 43be5025..1636fde6 100644
--- a/html/apps/dquotes.subx.html
+++ b/html/apps/dquotes.subx.html
@@ -65,11 +65,11 @@ if ('onhashchange' in window) {
 <span id="L2" class="LineNr">   2 </span><span class="subxComment"># Replace them with references to new variables in the data segment.</span>
 <span id="L3" class="LineNr">   3 </span><span class="subxComment">#</span>
 <span id="L4" class="LineNr">   4 </span><span class="subxComment"># To run:</span>
-<span id="L5" class="LineNr">   5 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/subx-params.subx apps/dquotes.subx  -o apps/dquotes</span>
+<span id="L5" class="LineNr">   5 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/subx-params.subx apps/dquotes.subx  -o apps/dquotes</span>
 <span id="L6" class="LineNr">   6 </span><span class="subxComment">#   $ cat x</span>
 <span id="L7" class="LineNr">   7 </span><span class="subxComment">#   == code</span>
 <span id="L8" class="LineNr">   8 </span><span class="subxComment">#   ab &quot;cd ef&quot;/imm32</span>
-<span id="L9" class="LineNr">   9 </span><span class="subxComment">#   $ cat x  |./subx run apps/dquotes</span>
+<span id="L9" class="LineNr">   9 </span><span class="subxComment">#   $ cat x  |./bootstrap run apps/dquotes</span>
 <span id="L10" class="LineNr">  10 </span><span class="subxComment">#   == code</span>
 <span id="L11" class="LineNr">  11 </span><span class="subxComment">#   ab __string1/imm32</span>
 <span id="L12" class="LineNr">  12 </span><span class="subxComment">#   == data</span>
diff --git a/html/apps/ex1.subx.html b/html/apps/ex1.subx.html
index 4cc9e90f..0d3311bc 100644
--- a/html/apps/ex1.subx.html
+++ b/html/apps/ex1.subx.html
@@ -57,8 +57,8 @@ if ('onhashchange' in window) {
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment"># Just return 42.</span>
 <span id="L3" class="LineNr"> 3 </span><span class="subxComment">#</span>
 <span id="L4" class="LineNr"> 4 </span><span class="subxComment"># To run:</span>
-<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex1.2.subx -o examples/ex1</span>
-<span id="L6" class="LineNr"> 6 </span><span class="subxComment">#   $ ./subx run examples/ex1</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex1.2.subx -o apps/ex1</span>
+<span id="L6" class="LineNr"> 6 </span><span class="subxComment">#   $ ./bootstrap run apps/ex1</span>
 <span id="L7" class="LineNr"> 7 </span><span class="subxComment"># Expected result:</span>
 <span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L9" class="LineNr"> 9 </span><span class="subxComment">#   42</span>
diff --git a/html/apps/ex10.subx.html b/html/apps/ex10.subx.html
index a0a7fd11..ddfd8a6e 100644
--- a/html/apps/ex10.subx.html
+++ b/html/apps/ex10.subx.html
@@ -60,8 +60,8 @@ if ('onhashchange' in window) {
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># String comparison: return 1 iff the two args passed in at the commandline are equal.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
 <span id="L3" class="LineNr"> 3 </span><span class="subxComment"># To run:</span>
-<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex10.subx -o examples/ex10</span>
-<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./subx run examples/ex10 abc abd</span>
+<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex10.subx -o apps/ex10</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap run apps/ex10 abc abd</span>
 <span id="L6" class="LineNr"> 6 </span><span class="subxComment"># Expected result:</span>
 <span id="L7" class="LineNr"> 7 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   0  # false</span>
diff --git a/html/apps/ex11.subx.html b/html/apps/ex11.subx.html
index 199ffcff..275a594b 100644
--- a/html/apps/ex11.subx.html
+++ b/html/apps/ex11.subx.html
@@ -68,8 +68,8 @@ if ('onhashchange' in window) {
 <span id="L6" class="LineNr">  6 </span><span class="subxComment"># a null-terminated 'kernel string' with a length-prefixed 'SubX string'.</span>
 <span id="L7" class="LineNr">  7 </span><span class="subxComment">#</span>
 <span id="L8" class="LineNr">  8 </span><span class="subxComment"># To run:</span>
-<span id="L9" class="LineNr">  9 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex11.subx -o examples/ex11</span>
-<span id="L10" class="LineNr"> 10 </span><span class="subxComment">#   $ ./subx run examples/ex11  # runs a series of tests</span>
+<span id="L9" class="LineNr">  9 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex11.subx -o apps/ex11</span>
+<span id="L10" class="LineNr"> 10 </span><span class="subxComment">#   $ ./bootstrap run apps/ex11  # runs a series of tests</span>
 <span id="L11" class="LineNr"> 11 </span><span class="subxComment">#   ......  # all tests pass</span>
 <span id="L12" class="LineNr"> 12 </span><span class="subxComment">#</span>
 <span id="L13" class="LineNr"> 13 </span><span class="subxComment"># (We can't yet run the tests when given a &quot;test&quot; commandline argument,</span>
diff --git a/html/apps/ex12.subx.html b/html/apps/ex12.subx.html
index 221bec80..4f753e5c 100644
--- a/html/apps/ex12.subx.html
+++ b/html/apps/ex12.subx.html
@@ -59,8 +59,8 @@ if ('onhashchange' in window) {
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment"># Create a new segment using mmap, save the address, write to it.</span>
 <span id="L3" class="LineNr"> 3 </span><span class="subxComment">#</span>
 <span id="L4" class="LineNr"> 4 </span><span class="subxComment"># To run:</span>
-<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex12.subx -o examples/ex12</span>
-<span id="L6" class="LineNr"> 6 </span><span class="subxComment">#   $ ./subx run examples/ex12</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex12.subx -o apps/ex12</span>
+<span id="L6" class="LineNr"> 6 </span><span class="subxComment">#   $ ./bootstrap run apps/ex12</span>
 <span id="L7" class="LineNr"> 7 </span><span class="subxComment"># You shouldn't get a segmentation fault.</span>
 <span id="L8" class="LineNr"> 8 </span>
 <span id="L9" class="LineNr"> 9 </span>== code
diff --git a/html/apps/ex13.subx.html b/html/apps/ex13.subx.html
new file mode 100644
index 00000000..d85c5166
--- /dev/null
+++ b/html/apps/ex13.subx.html
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<title>Mu - apps/ex13.subx</title>
+<meta name="Generator" content="Vim/8.1">
+<meta name="plugin-version" content="vim8.1_v1">
+<meta name="syntax" content="none">
+<meta name="settings" content="number_lines,use_css,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
+<meta name="colorscheme" content="minimal-light">
+<style type="text/css">
+<!--
+pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
+body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.subxComment { color: #005faf; }
+.subxS2Comment { color: #8a8a8a; }
+.LineNr { }
+.subxS1Comment { color: #0000af; }
+.SpecialChar { color: #d70000; }
+.Normal { color: #000000; background-color: #c6c6c6; padding-bottom: 1px; }
+.Constant { color: #008787; }
+-->
+</style>
+
+<script type='text/javascript'>
+<!--
+
+/* function to open any folds containing a jumped-to line before jumping to it */
+function JumpToLine()
+{
+  var lineNum;
+  lineNum = window.location.hash;
+  lineNum = lineNum.substr(1); /* strip off '#' */
+
+  if (lineNum.indexOf('L') == -1) {
+    lineNum = 'L'+lineNum;
+  }
+  var lineElem = document.getElementById(lineNum);
+  /* Always jump to new location even if the line was hidden inside a fold, or
+   * we corrected the raw number to a line ID.
+   */
+  if (lineElem) {
+    lineElem.scrollIntoView(true);
+  }
+  return true;
+}
+if ('onhashchange' in window) {
+  window.onhashchange = JumpToLine;
+}
+
+-->
+</script>
+</head>
+<body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/apps/ex13.subx'>https://github.com/akkartik/mu/blob/master/apps/ex13.subx</a>
+<pre id='vimCodeElement'>
+<span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Compare 3 and 3.</span>
+<span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
+<span id="L3" class="LineNr"> 3 </span><span class="subxComment"># To run:</span>
+<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex13.subx -o apps/ex13</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap run apps/ex13</span>
+<span id="L6" class="LineNr"> 6 </span><span class="subxComment"># Expected result:</span>
+<span id="L7" class="LineNr"> 7 </span><span class="subxComment">#   $ echo $?</span>
+<span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   1</span>
+<span id="L9" class="LineNr"> 9 </span>
+<span id="L10" class="LineNr">10 </span>== code
+<span id="L11" class="LineNr">11 </span><span class="subxComment">#   instruction                     effective address                                                   register    displacement    immediate</span>
+<span id="L12" class="LineNr">12 </span><span class="subxS1Comment"># . op          subop               mod             rm32          base        index         scale       r32</span>
+<span id="L13" class="LineNr">13 </span><span class="subxS1Comment"># . 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes</span>
+<span id="L14" class="LineNr">14 </span>
+<span id="L15" class="LineNr">15 </span><span class="SpecialChar">Entry</span>:
+<span id="L16" class="LineNr">16 </span>    b8/copy-to-eax  3/imm32
+<span id="L17" class="LineNr">17 </span>    3d/compare-eax-and  3/imm32
+<span id="L18" class="LineNr">18 </span>    0f 94/set-if-=                  3/mod/direct    3/rm32/ebx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># set ebx to ZF</span>
+<span id="L19" class="LineNr">19 </span>    81 4/subop/and                  3/mod/direct    3/rm32/ebx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xff/imm32        <span class="subxComment"># AND eax with 0xff</span>
+<span id="L20" class="LineNr">20 </span>
+<span id="L21" class="LineNr">21 </span><span class="Constant">$exit</span>:
+<span id="L22" class="LineNr">22 </span>    <span class="subxComment"># exit(ebx)</span>
+<span id="L23" class="LineNr">23 </span>    e8/call  syscall_exit/disp32
+<span id="L24" class="LineNr">24 </span>
+<span id="L25" class="LineNr">25 </span><span class="subxS2Comment"># . . vim&#0058;nowrap:textwidth=0</span>
+</pre>
+</body>
+</html>
+<!-- vim: set foldmethod=manual : -->
diff --git a/html/apps/ex14.subx.html b/html/apps/ex14.subx.html
new file mode 100644
index 00000000..ed5fa2ee
--- /dev/null
+++ b/html/apps/ex14.subx.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<title>Mu - apps/ex14.subx</title>
+<meta name="Generator" content="Vim/8.1">
+<meta name="plugin-version" content="vim8.1_v1">
+<meta name="syntax" content="none">
+<meta name="settings" content="number_lines,use_css,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
+<meta name="colorscheme" content="minimal-light">
+<style type="text/css">
+<!--
+pre { font-family: monospace; color: #000000; background-color: #c6c6c6; }
+body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
+a { color:inherit; }
+* { font-size:12pt; font-size: 1em; }
+.subxComment { color: #005faf; }
+.subxS2Comment { color: #8a8a8a; }
+.LineNr { }
+.subxS1Comment { color: #0000af; }
+.SpecialChar { color: #d70000; }
+.Normal { color: #000000; background-color: #c6c6c6; padding-bottom: 1px; }
+.Constant { color: #008787; }
+-->
+</style>
+
+<script type='text/javascript'>
+<!--
+
+/* function to open any folds containing a jumped-to line before jumping to it */
+function JumpToLine()
+{
+  var lineNum;
+  lineNum = window.location.hash;
+  lineNum = lineNum.substr(1); /* strip off '#' */
+
+  if (lineNum.indexOf('L') == -1) {
+    lineNum = 'L'+lineNum;
+  }
+  var lineElem = document.getElementById(lineNum);
+  /* Always jump to new location even if the line was hidden inside a fold, or
+   * we corrected the raw number to a line ID.
+   */
+  if (lineElem) {
+    lineElem.scrollIntoView(true);
+  }
+  return true;
+}
+if ('onhashchange' in window) {
+  window.onhashchange = JumpToLine;
+}
+
+-->
+</script>
+</head>
+<body onload='JumpToLine();'>
+<a href='https://github.com/akkartik/mu/blob/master/apps/ex14.subx'>https://github.com/akkartik/mu/blob/master/apps/ex14.subx</a>
+<pre id='vimCodeElement'>
+<span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Multiply 2 numbers.</span>
+<span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
+<span id="L3" class="LineNr"> 3 </span><span class="subxComment"># To run:</span>
+<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex14.subx -o apps/ex14</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap run apps/ex14</span>
+<span id="L6" class="LineNr"> 6 </span><span class="subxComment"># Expected result:</span>
+<span id="L7" class="LineNr"> 7 </span><span class="subxComment">#   $ echo $?</span>
+<span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   6</span>
+<span id="L9" class="LineNr"> 9 </span>
+<span id="L10" class="LineNr">10 </span>== code
+<span id="L11" class="LineNr">11 </span><span class="subxComment">#   instruction                     effective address                                                   register    displacement    immediate</span>
+<span id="L12" class="LineNr">12 </span><span class="subxS1Comment"># . op          subop               mod             rm32          base        index         scale       r32</span>
+<span id="L13" class="LineNr">13 </span><span class="subxS1Comment"># . 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes</span>
+<span id="L14" class="LineNr">14 </span>
+<span id="L15" class="LineNr">15 </span><span class="SpecialChar">Entry</span>:
+<span id="L16" class="LineNr">16 </span>    b8/copy-to-eax  1/imm32
+<span id="L17" class="LineNr">17 </span>    b9/copy-to-ecx  2/imm32
+<span id="L18" class="LineNr">18 </span>    bb/copy-to-ebx  3/imm32
+<span id="L19" class="LineNr">19 </span>
+<span id="L20" class="LineNr">20 </span>    69/multiply                     3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/ebx                   3/imm32           <span class="subxComment"># ebx = ecx * 3</span>
+<span id="L21" class="LineNr">21 </span>
+<span id="L22" class="LineNr">22 </span><span class="Constant">$exit</span>:
+<span id="L23" class="LineNr">23 </span>    <span class="subxComment"># exit(ebx)</span>
+<span id="L24" class="LineNr">24 </span>    e8/call  syscall_exit/disp32
+<span id="L25" class="LineNr">25 </span>
+<span id="L26" class="LineNr">26 </span><span class="subxS2Comment"># . . vim&#0058;nowrap:textwidth=0</span>
+</pre>
+</body>
+</html>
+<!-- vim: set foldmethod=manual : -->
diff --git a/html/apps/ex2.subx.html b/html/apps/ex2.subx.html
index f1e4abe9..392f5440 100644
--- a/html/apps/ex2.subx.html
+++ b/html/apps/ex2.subx.html
@@ -56,8 +56,8 @@ if ('onhashchange' in window) {
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Add 1 and 1, and return the result in the exit code.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
 <span id="L3" class="LineNr"> 3 </span><span class="subxComment"># To run:</span>
-<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex2.subx -o examples/ex2</span>
-<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./subx run examples/ex2</span>
+<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex2.subx -o apps/ex2</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap run apps/ex2</span>
 <span id="L6" class="LineNr"> 6 </span><span class="subxComment"># Expected result:</span>
 <span id="L7" class="LineNr"> 7 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   2</span>
diff --git a/html/apps/ex3.subx.html b/html/apps/ex3.subx.html
index 31ff11a1..e267f0fe 100644
--- a/html/apps/ex3.subx.html
+++ b/html/apps/ex3.subx.html
@@ -59,8 +59,8 @@ if ('onhashchange' in window) {
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Add the first 10 numbers, and return the result in the exit code.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
 <span id="L3" class="LineNr"> 3 </span><span class="subxComment"># To run:</span>
-<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex3.subx -o examples/ex3</span>
-<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./subx run examples/ex3</span>
+<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex3.subx -o apps/ex3</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap run apps/ex3</span>
 <span id="L6" class="LineNr"> 6 </span><span class="subxComment"># Expected result:</span>
 <span id="L7" class="LineNr"> 7 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   55</span>
diff --git a/html/apps/ex4.subx.html b/html/apps/ex4.subx.html
index b1e1019b..297576bb 100644
--- a/html/apps/ex4.subx.html
+++ b/html/apps/ex4.subx.html
@@ -57,8 +57,8 @@ if ('onhashchange' in window) {
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Read a character from stdin, save it to a global, write it to stdout.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
 <span id="L3" class="LineNr"> 3 </span><span class="subxComment"># To run:</span>
-<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex4.subx -o examples/ex4</span>
-<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./subx run examples/ex4</span>
+<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex4.subx -o apps/ex4</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap run apps/ex4</span>
 <span id="L6" class="LineNr"> 6 </span>
 <span id="L7" class="LineNr"> 7 </span>== data
 <span id="L8" class="LineNr"> 8 </span>
diff --git a/html/apps/ex5.subx.html b/html/apps/ex5.subx.html
index 26c5700b..c403dcae 100644
--- a/html/apps/ex5.subx.html
+++ b/html/apps/ex5.subx.html
@@ -58,8 +58,8 @@ if ('onhashchange' in window) {
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Read a character from stdin, save it to a local on the stack, write it to stdout.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
 <span id="L3" class="LineNr"> 3 </span><span class="subxComment"># To run:</span>
-<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex5.subx -o examples/ex5</span>
-<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./subx run examples/ex5</span>
+<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex5.subx -o apps/ex5</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap run apps/ex5</span>
 <span id="L6" class="LineNr"> 6 </span>
 <span id="L7" class="LineNr"> 7 </span>== code
 <span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   instruction                     effective address                                                   register    displacement    immediate</span>
diff --git a/html/apps/ex6.subx.html b/html/apps/ex6.subx.html
index e8f7dbe4..ba8a4037 100644
--- a/html/apps/ex6.subx.html
+++ b/html/apps/ex6.subx.html
@@ -58,8 +58,8 @@ if ('onhashchange' in window) {
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Print out a (global variable) string to stdout.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
 <span id="L3" class="LineNr"> 3 </span><span class="subxComment"># To run:</span>
-<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex6.subx -o examples/ex6</span>
-<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./subx run examples/ex6</span>
+<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex6.subx -o apps/ex6</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap run apps/ex6</span>
 <span id="L6" class="LineNr"> 6 </span><span class="subxComment">#   Hello, world!</span>
 <span id="L7" class="LineNr"> 7 </span>
 <span id="L8" class="LineNr"> 8 </span>== code
diff --git a/html/apps/ex7.subx.html b/html/apps/ex7.subx.html
index 617c44c2..76a1de01 100644
--- a/html/apps/ex7.subx.html
+++ b/html/apps/ex7.subx.html
@@ -62,8 +62,8 @@ if ('onhashchange' in window) {
 <span id="L5" class="LineNr"> 5 </span><span class="subxComment"># the character read.</span>
 <span id="L6" class="LineNr"> 6 </span><span class="subxComment">#</span>
 <span id="L7" class="LineNr"> 7 </span><span class="subxComment"># To run:</span>
-<span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex7.subx -o examples/ex7</span>
-<span id="L9" class="LineNr"> 9 </span><span class="subxComment">#   $ ./subx run examples/ex7</span>
+<span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex7.subx -o apps/ex7</span>
+<span id="L9" class="LineNr"> 9 </span><span class="subxComment">#   $ ./bootstrap run apps/ex7</span>
 <span id="L10" class="LineNr">10 </span><span class="subxComment"># Expected result:</span>
 <span id="L11" class="LineNr">11 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L12" class="LineNr">12 </span><span class="subxComment">#   97</span>
diff --git a/html/apps/ex8.subx.html b/html/apps/ex8.subx.html
index 8cf64378..a6458493 100644
--- a/html/apps/ex8.subx.html
+++ b/html/apps/ex8.subx.html
@@ -60,8 +60,8 @@ if ('onhashchange' in window) {
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Example reading commandline arguments: compute length of first arg.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
 <span id="L3" class="LineNr"> 3 </span><span class="subxComment"># To run:</span>
-<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex8.subx -o examples/ex8</span>
-<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./subx run examples/ex8 abc de fghi</span>
+<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex8.subx -o apps/ex8</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap run apps/ex8 abc de fghi</span>
 <span id="L6" class="LineNr"> 6 </span><span class="subxComment"># Expected result:</span>
 <span id="L7" class="LineNr"> 7 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   3  # length of 'abc'</span>
diff --git a/html/apps/ex9.subx.html b/html/apps/ex9.subx.html
index 3558ac1c..4ac15f83 100644
--- a/html/apps/ex9.subx.html
+++ b/html/apps/ex9.subx.html
@@ -62,8 +62,8 @@ if ('onhashchange' in window) {
 <span id="L4" class="LineNr"> 4 </span><span class="subxComment"># letter of second arg.</span>
 <span id="L5" class="LineNr"> 5 </span><span class="subxComment">#</span>
 <span id="L6" class="LineNr"> 6 </span><span class="subxComment"># To run:</span>
-<span id="L7" class="LineNr"> 7 </span><span class="subxComment">#   $ ./subx translate init.linux examples/ex9.subx -o examples/ex9</span>
-<span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   $ ./subx run examples/ex9 z x</span>
+<span id="L7" class="LineNr"> 7 </span><span class="subxComment">#   $ ./bootstrap translate init.linux apps/ex9.subx -o apps/ex9</span>
+<span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   $ ./bootstrap run apps/ex9 z x</span>
 <span id="L9" class="LineNr"> 9 </span><span class="subxComment"># Expected result:</span>
 <span id="L10" class="LineNr">10 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L11" class="LineNr">11 </span><span class="subxComment">#   2</span>
diff --git a/html/apps/factorial.subx.html b/html/apps/factorial.subx.html
index 8c637957..bbd42944 100644
--- a/html/apps/factorial.subx.html
+++ b/html/apps/factorial.subx.html
@@ -62,14 +62,14 @@ if ('onhashchange' in window) {
 <span id="L1" class="LineNr">  1 </span><span class="subxComment">## compute the factorial of 5, and return the result in the exit code</span>
 <span id="L2" class="LineNr">  2 </span><span class="subxComment">#</span>
 <span id="L3" class="LineNr">  3 </span><span class="subxComment"># To run:</span>
-<span id="L4" class="LineNr">  4 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/factorial.subx -o apps/factorial</span>
-<span id="L5" class="LineNr">  5 </span><span class="subxComment">#   $ ./subx run apps/factorial</span>
+<span id="L4" class="LineNr">  4 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/factorial.subx -o apps/factorial</span>
+<span id="L5" class="LineNr">  5 </span><span class="subxComment">#   $ ./bootstrap run apps/factorial</span>
 <span id="L6" class="LineNr">  6 </span><span class="subxComment"># Expected result:</span>
 <span id="L7" class="LineNr">  7 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L8" class="LineNr">  8 </span><span class="subxComment">#   120</span>
 <span id="L9" class="LineNr">  9 </span><span class="subxComment">#</span>
 <span id="L10" class="LineNr"> 10 </span><span class="subxComment"># You can also run the automated test suite:</span>
-<span id="L11" class="LineNr"> 11 </span><span class="subxComment">#   $ ./subx run apps/factorial test</span>
+<span id="L11" class="LineNr"> 11 </span><span class="subxComment">#   $ ./bootstrap run apps/factorial test</span>
 <span id="L12" class="LineNr"> 12 </span><span class="subxComment"># Expected output:</span>
 <span id="L13" class="LineNr"> 13 </span><span class="subxComment">#   ........</span>
 <span id="L14" class="LineNr"> 14 </span><span class="subxComment"># Every '.' indicates a passing test. Failing tests get a 'F'.</span>
diff --git a/html/apps/factorial2.subx.html b/html/apps/factorial2.subx.html
index 4d59c774..4e09dcf6 100644
--- a/html/apps/factorial2.subx.html
+++ b/html/apps/factorial2.subx.html
@@ -65,13 +65,13 @@ if ('onhashchange' in window) {
 <span id="L5" class="LineNr">  5 </span><span class="subxComment">#</span>
 <span id="L6" class="LineNr">  6 </span><span class="subxComment"># To run:</span>
 <span id="L7" class="LineNr">  7 </span><span class="subxComment">#   $ ./translate_subx init.linux 0*.subx apps/factorial.subx -o apps/factorial</span>
-<span id="L8" class="LineNr">  8 </span><span class="subxComment">#   $ ./subx run apps/factorial</span>
+<span id="L8" class="LineNr">  8 </span><span class="subxComment">#   $ ./bootstrap run apps/factorial</span>
 <span id="L9" class="LineNr">  9 </span><span class="subxComment"># Expected result:</span>
 <span id="L10" class="LineNr"> 10 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L11" class="LineNr"> 11 </span><span class="subxComment">#   120</span>
 <span id="L12" class="LineNr"> 12 </span><span class="subxComment">#</span>
 <span id="L13" class="LineNr"> 13 </span><span class="subxComment"># You can also run the automated test suite:</span>
-<span id="L14" class="LineNr"> 14 </span><span class="subxComment">#   $ ./subx run apps/factorial test</span>
+<span id="L14" class="LineNr"> 14 </span><span class="subxComment">#   $ ./bootstrap run apps/factorial test</span>
 <span id="L15" class="LineNr"> 15 </span><span class="subxComment"># Expected output:</span>
 <span id="L16" class="LineNr"> 16 </span><span class="subxComment">#   ........</span>
 <span id="L17" class="LineNr"> 17 </span><span class="subxComment"># Every '.' indicates a passing test. Failing tests get a 'F'.</span>
diff --git a/html/apps/factorial3.subx.html b/html/apps/factorial3.subx.html
index 7ad4a9fd..10792365 100644
--- a/html/apps/factorial3.subx.html
+++ b/html/apps/factorial3.subx.html
@@ -65,13 +65,13 @@ if ('onhashchange' in window) {
 <span id="L6" class="LineNr"> 6 </span><span class="subxComment">#</span>
 <span id="L7" class="LineNr"> 7 </span><span class="subxComment"># To run:</span>
 <span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   $ ./translate_subx init.linux 0*.subx apps/factorial.subx -o apps/factorial</span>
-<span id="L9" class="LineNr"> 9 </span><span class="subxComment">#   $ ./subx run apps/factorial</span>
+<span id="L9" class="LineNr"> 9 </span><span class="subxComment">#   $ ./bootstrap run apps/factorial</span>
 <span id="L10" class="LineNr">10 </span><span class="subxComment"># Expected result:</span>
 <span id="L11" class="LineNr">11 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L12" class="LineNr">12 </span><span class="subxComment">#   120</span>
 <span id="L13" class="LineNr">13 </span><span class="subxComment">#</span>
 <span id="L14" class="LineNr">14 </span><span class="subxComment"># You can also run the automated test suite:</span>
-<span id="L15" class="LineNr">15 </span><span class="subxComment">#   $ ./subx run apps/factorial test</span>
+<span id="L15" class="LineNr">15 </span><span class="subxComment">#   $ ./bootstrap run apps/factorial test</span>
 <span id="L16" class="LineNr">16 </span><span class="subxComment"># Expected output:</span>
 <span id="L17" class="LineNr">17 </span><span class="subxComment">#   ........</span>
 <span id="L18" class="LineNr">18 </span><span class="subxComment"># Every '.' indicates a passing test. Failing tests get a 'F'.</span>
diff --git a/html/apps/factorial4.subx.html b/html/apps/factorial4.subx.html
index 8759c2f9..bd41739e 100644
--- a/html/apps/factorial4.subx.html
+++ b/html/apps/factorial4.subx.html
@@ -66,13 +66,13 @@ if ('onhashchange' in window) {
 <span id="L7" class="LineNr"> 7 </span><span class="subxComment">#</span>
 <span id="L8" class="LineNr"> 8 </span><span class="subxComment"># To run:</span>
 <span id="L9" class="LineNr"> 9 </span><span class="subxComment">#   $ ./translate_subx init.linux 0*.subx apps/factorial.subx -o apps/factorial</span>
-<span id="L10" class="LineNr">10 </span><span class="subxComment">#   $ ./subx run apps/factorial</span>
+<span id="L10" class="LineNr">10 </span><span class="subxComment">#   $ ./bootstrap run apps/factorial</span>
 <span id="L11" class="LineNr">11 </span><span class="subxComment"># Expected result:</span>
 <span id="L12" class="LineNr">12 </span><span class="subxComment">#   $ echo $?</span>
 <span id="L13" class="LineNr">13 </span><span class="subxComment">#   120</span>
 <span id="L14" class="LineNr">14 </span><span class="subxComment">#</span>
 <span id="L15" class="LineNr">15 </span><span class="subxComment"># You can also run the automated test suite:</span>
-<span id="L16" class="LineNr">16 </span><span class="subxComment">#   $ ./subx run apps/factorial test</span>
+<span id="L16" class="LineNr">16 </span><span class="subxComment">#   $ ./bootstrap run apps/factorial test</span>
 <span id="L17" class="LineNr">17 </span><span class="subxComment"># Expected output:</span>
 <span id="L18" class="LineNr">18 </span><span class="subxComment">#   ........</span>
 <span id="L19" class="LineNr">19 </span><span class="subxComment"># Every '.' indicates a passing test. Failing tests get a 'F'.</span>
diff --git a/html/apps/handle.subx.html b/html/apps/handle.subx.html
index fc0ce1a8..9cf47d93 100644
--- a/html/apps/handle.subx.html
+++ b/html/apps/handle.subx.html
@@ -76,8 +76,8 @@ if ('onhashchange' in window) {
 <span id="L13" class="LineNr"> 13 </span><span class="subxComment">#   offset 4: address</span>
 <span id="L14" class="LineNr"> 14 </span><span class="subxComment">#</span>
 <span id="L15" class="LineNr"> 15 </span><span class="subxComment"># To run:</span>
-<span id="L16" class="LineNr"> 16 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/handle.subx -o apps/handle</span>
-<span id="L17" class="LineNr"> 17 </span><span class="subxComment">#   $ ./subx run apps/handle</span>
+<span id="L16" class="LineNr"> 16 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/handle.subx -o apps/handle</span>
+<span id="L17" class="LineNr"> 17 </span><span class="subxComment">#   $ ./bootstrap run apps/handle</span>
 <span id="L18" class="LineNr"> 18 </span><span class="subxComment"># Expected result is a successful lookup followed by a hard abort:</span>
 <span id="L19" class="LineNr"> 19 </span><span class="subxComment">#   lookup succeeded</span>
 <span id="L20" class="LineNr"> 20 </span><span class="subxComment">#   lookup failed</span>
diff --git a/html/apps/hex.subx.html b/html/apps/hex.subx.html
index 4018c82f..936a37e5 100644
--- a/html/apps/hex.subx.html
+++ b/html/apps/hex.subx.html
@@ -64,8 +64,8 @@ if ('onhashchange' in window) {
 <span id="L3" class="LineNr">   3 </span><span class="subxComment"># comments between '#' and newline.</span>
 <span id="L4" class="LineNr">   4 </span><span class="subxComment">#</span>
 <span id="L5" class="LineNr">   5 </span><span class="subxComment"># To run:</span>
-<span id="L6" class="LineNr">   6 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/subx-params.subx apps/hex.subx  -o apps/hex</span>
-<span id="L7" class="LineNr">   7 </span><span class="subxComment">#   $ echo '80 81 82  # comment'  |./subx run apps/hex  |xxd -</span>
+<span id="L6" class="LineNr">   6 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/subx-params.subx apps/hex.subx  -o apps/hex</span>
+<span id="L7" class="LineNr">   7 </span><span class="subxComment">#   $ echo '80 81 82  # comment'  |./bootstrap run apps/hex  |xxd -</span>
 <span id="L8" class="LineNr">   8 </span><span class="subxComment"># Expected output:</span>
 <span id="L9" class="LineNr">   9 </span><span class="subxComment">#   00000000: 8081 82</span>
 <span id="L10" class="LineNr">  10 </span><span class="subxComment">#</span>
@@ -225,7 +225,7 @@ if ('onhashchange' in window) {
 <span id="L164" class="LineNr"> 164 </span>    3d/compare-eax-and  0xffffffff/imm32/Eof
 <span id="L165" class="LineNr"> 165 </span>    74/jump-if-=  $convert-next-octet:end/disp8
 <span id="L166" class="LineNr"> 166 </span>    <span class="subxComment"># eax = from-hex-char(eax)</span>
-<span id="L167" class="LineNr"> 167 </span>    e8/call <a href='../067parse-hex.subx.html#L803'>from-hex-char</a>/disp32
+<span id="L167" class="LineNr"> 167 </span>    e8/call <a href='../067parse-hex.subx.html#L864'>from-hex-char</a>/disp32
 <span id="L168" class="LineNr"> 168 </span>    <span class="subxComment"># ecx = eax</span>
 <span id="L169" class="LineNr"> 169 </span>    89/copy                         3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/eax  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy eax to ecx</span>
 <span id="L170" class="LineNr"> 170 </span>    <span class="subxComment"># eax = scan-next-byte(in, err, ed)</span>
@@ -250,7 +250,7 @@ if ('onhashchange' in window) {
 <span id="L189" class="LineNr"> 189 </span>    e8/call  <a href='../068error-byte.subx.html#L27'>error-byte</a>/disp32  <span class="subxComment"># never returns</span>
 <span id="L190" class="LineNr"> 190 </span><span class="Constant">$convert-next-octet:convert</span>:
 <span id="L191" class="LineNr"> 191 </span>    <span class="subxComment"># eax = from-hex-char(eax)</span>
-<span id="L192" class="LineNr"> 192 </span>    e8/call <a href='../067parse-hex.subx.html#L803'>from-hex-char</a>/disp32
+<span id="L192" class="LineNr"> 192 </span>    e8/call <a href='../067parse-hex.subx.html#L864'>from-hex-char</a>/disp32
 <span id="L193" class="LineNr"> 193 </span>    <span class="subxComment"># eax = (ecx &lt;&lt; 4) | eax</span>
 <span id="L194" class="LineNr"> 194 </span>    <span class="subxS1Comment"># . ecx &lt;&lt;= 4</span>
 <span id="L195" class="LineNr"> 195 </span>    c1/shift    4/subop/left        3/mod/direct    1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm8            <span class="subxComment"># shift ecx left by 4 bits</span>
@@ -574,7 +574,7 @@ if ('onhashchange' in window) {
 <span id="L513" class="LineNr"> 513 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L514" class="LineNr"> 514 </span>    50/push-eax
 <span id="L515" class="LineNr"> 515 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L516" class="LineNr"> 516 </span>    e8/call  <a href='../067parse-hex.subx.html#L640'>is-hex-digit?</a>/disp32
+<span id="L516" class="LineNr"> 516 </span>    e8/call  <a href='../067parse-hex.subx.html#L701'>is-hex-digit?</a>/disp32
 <span id="L517" class="LineNr"> 517 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L518" class="LineNr"> 518 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
 <span id="L519" class="LineNr"> 519 </span>    <span class="subxS1Comment"># . compare with 'false'</span>
diff --git a/html/apps/mu.subx.html b/html/apps/mu.subx.html
index e79d755b..cb40e41c 100644
--- a/html/apps/mu.subx.html
+++ b/html/apps/mu.subx.html
@@ -5705,9 +5705,9 @@ if ('onhashchange' in window) {
 <span id="L5848" class="LineNr"> 5848 </span>    <span class="subxComment"># Important: each block's depth during code-generation should be identical</span>
 <span id="L5849" class="LineNr"> 5849 </span>    <span class="subxComment"># to what it was during parsing.</span>
 <span id="L5850" class="LineNr"> 5850 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 1/imm32
-<span id="L5851" class="LineNr"> 5851 </span>    (<a href='mu.subx.html#L10470'>emit-subx-prologue</a> %edi)
-<span id="L5852" class="LineNr"> 5852 </span>    (<a href='mu.subx.html#L6937'>emit-subx-block</a> %edi *(ecx+0x10) %edx)  <span class="subxComment"># Function-body</span>
-<span id="L5853" class="LineNr"> 5853 </span>    (<a href='mu.subx.html#L10484'>emit-subx-epilogue</a> %edi)
+<span id="L5851" class="LineNr"> 5851 </span>    (<a href='mu.subx.html#L10458'>emit-subx-prologue</a> %edi)
+<span id="L5852" class="LineNr"> 5852 </span>    (<a href='mu.subx.html#L6933'>emit-subx-block</a> %edi *(ecx+0x10) %edx)  <span class="subxComment"># Function-body</span>
+<span id="L5853" class="LineNr"> 5853 </span>    (<a href='mu.subx.html#L10472'>emit-subx-epilogue</a> %edi)
 <span id="L5854" class="LineNr"> 5854 </span><span class="Constant">$emit-subx-function:end</span>:
 <span id="L5855" class="LineNr"> 5855 </span>    <span class="subxS1Comment"># . reclaim locals</span>
 <span id="L5856" class="LineNr"> 5856 </span>    81 0/subop/add %esp 408/imm32
@@ -5747,7 +5747,7 @@ if ('onhashchange' in window) {
 <span id="L5890" class="LineNr"> 5890 </span>        81 7/subop/compare *ecx 0/imm32/block  <span class="subxComment"># Stmt-tag</span>
 <span id="L5891" class="LineNr"> 5891 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
 <span id="L5892" class="LineNr"> 5892 </span><span class="Constant">$emit-subx-stmt-list:block</span>:
-<span id="L5893" class="LineNr"> 5893 </span>        (<a href='mu.subx.html#L6937'>emit-subx-block</a> *(ebp+8) %ecx *(ebp+0x10))
+<span id="L5893" class="LineNr"> 5893 </span>        (<a href='mu.subx.html#L6933'>emit-subx-block</a> *(ebp+8) %ecx *(ebp+0x10))
 <span id="L5894" class="LineNr"> 5894 </span>      }
 <span id="L5895" class="LineNr"> 5895 </span>      {
 <span id="L5896" class="LineNr"> 5896 </span><span class="Constant">$emit-subx-stmt-list:check-for-stmt</span>:
@@ -5769,7 +5769,7 @@ if ('onhashchange' in window) {
 <span id="L5987" class="Folded"> 5987 </span><span class="Folded">+-- 19 lines: # conditional branches with an explicit target ----------------------------------------------------------------------------------------------------------------------------</span>
 <span id="L6006" class="LineNr"> 6006 </span>        }
 <span id="L6007" class="LineNr"> 6007 </span><span class="Constant">$emit-subx-stmt-list:1-to-1</span>:
-<span id="L6008" class="LineNr"> 6008 </span>        (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> *(ebp+8) %ecx <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> *_Program-functions)
+<span id="L6008" class="LineNr"> 6008 </span>        (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> *(ebp+8) %ecx <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> *_Program-functions)
 <span id="L6009" class="LineNr"> 6009 </span>      }
 <span id="L6010" class="LineNr"> 6010 </span>      {
 <span id="L6011" class="LineNr"> 6011 </span><span class="Constant">$emit-subx-stmt-list:check-for-var-def</span>:
@@ -5791,7 +5791,7 @@ if ('onhashchange' in window) {
 <span id="L6027" class="LineNr"> 6027 </span>        <span class="subxComment"># register variable definition</span>
 <span id="L6028" class="LineNr"> 6028 </span>        (<a href='../092stack.subx.html#L110'>push</a> *(ebp+0x10) %eax)
 <span id="L6029" class="LineNr"> 6029 </span>        <span class="subxComment"># emit the instruction as usual</span>
-<span id="L6030" class="LineNr"> 6030 </span>        (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> *(ebp+8) %ecx <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> *_Program-functions)
+<span id="L6030" class="LineNr"> 6030 </span>        (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> *(ebp+8) %ecx <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> *_Program-functions)
 <span id="L6031" class="LineNr"> 6031 </span>        <span class="subxComment"># var-seen? = true</span>
 <span id="L6032" class="LineNr"> 6032 </span>        ba/copy-to-edx 1/imm32/true
 <span id="L6033" class="LineNr"> 6033 </span>      }
@@ -5837,7 +5837,7 @@ if ('onhashchange' in window) {
 <span id="L6073" class="LineNr"> 6073 </span>    3d/compare-eax-and 0/imm32/false
 <span id="L6074" class="LineNr"> 6074 </span>    75/jump-if-!= $compute-reg-and-maybe-emit-spill:end/disp8
 <span id="L6075" class="LineNr"> 6075 </span>    <span class="subxComment"># emit spill</span>
-<span id="L6076" class="LineNr"> 6076 </span>    (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L6076" class="LineNr"> 6076 </span>    (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
 <span id="L6077" class="LineNr"> 6077 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;ff 6/subop/push %&quot;</span>)
 <span id="L6078" class="LineNr"> 6078 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(ecx+0x10))  <span class="subxComment"># Var-register</span>
 <span id="L6079" class="LineNr"> 6079 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L83'>Newline</a></span>)
@@ -5880,7 +5880,7 @@ if ('onhashchange' in window) {
 <span id="L6116" class="LineNr"> 6116 </span>    <span class="subxComment"># clean up until target block</span>
 <span id="L6117" class="LineNr"> 6117 </span>    (<a href='mu.subx.html#L6373'>emit-cleanup-code-until-target</a> *(ebp+8) *(ebp+0x10) %edx)
 <span id="L6118" class="LineNr"> 6118 </span>    <span class="subxComment"># emit jump to target block</span>
-<span id="L6119" class="LineNr"> 6119 </span>    (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L6119" class="LineNr"> 6119 </span>    (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
 <span id="L6120" class="LineNr"> 6120 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;e9/jump &quot;</span>)
 <span id="L6121" class="LineNr"> 6121 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) %edx)
 <span id="L6122" class="LineNr"> 6122 </span>    (<a href='../054string-equal.subx.html#L58'>string-starts-with?</a> *(ecx+4) <span class="Constant">&quot;break&quot;</span>)
@@ -5936,7 +5936,7 @@ if ('onhashchange' in window) {
 <span id="L6172" class="LineNr"> 6172 </span>    8b/-&gt; *(ebp+0xc) 0/r32/eax
 <span id="L6173" class="LineNr"> 6173 </span>    <span class="subxComment">#</span>
 <span id="L6174" class="LineNr"> 6174 </span>    (<a href='../081table.subx.html#L27'>get</a> <span class="SpecialChar"><a href='mu.subx.html#L6188'>Reverse-branch</a></span> *(eax+4) 8 <span class="Constant">&quot;reverse-branch: &quot;</span>)  <span class="subxComment"># Stmt1-operation =&gt; eax: (addr addr array byte)</span>
-<span id="L6175" class="LineNr"> 6175 </span>    (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L6175" class="LineNr"> 6175 </span>    (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
 <span id="L6176" class="LineNr"> 6176 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *eax)
 <span id="L6177" class="LineNr"> 6177 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot; break/disp32\n&quot;</span>)
 <span id="L6178" class="LineNr"> 6178 </span><span class="Constant">$emit-reverse-break:end</span>:
@@ -6025,7 +6025,7 @@ if ('onhashchange' in window) {
 <span id="L6261" class="LineNr"> 6261 </span>        0f 85/jump-if-!= <span class="Constant">break</span>/disp32
 <span id="L6262" class="LineNr"> 6262 </span><span class="Constant">$emit-unconditional-jump-to-depth:label-found</span>:
 <span id="L6263" class="LineNr"> 6263 </span>        <span class="subxComment"># emit unconditional jump, then return</span>
-<span id="L6264" class="LineNr"> 6264 </span>        (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L6264" class="LineNr"> 6264 </span>        (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
 <span id="L6265" class="LineNr"> 6265 </span>        (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;e9/jump &quot;</span>)
 <span id="L6266" class="LineNr"> 6266 </span>        (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *ebx)  <span class="subxComment"># Var-name</span>
 <span id="L6267" class="LineNr"> 6267 </span>        (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;:&quot;</span>)
@@ -6092,7 +6092,7 @@ if ('onhashchange' in window) {
 <span id="L6328" class="LineNr"> 6328 </span>          3d/compare-eax-and 0/imm32/false
 <span id="L6329" class="LineNr"> 6329 </span>          0f 85/jump-if-!= <span class="Constant">break</span>/disp32
 <span id="L6330" class="LineNr"> 6330 </span><span class="Constant">$emit-cleanup-code-until-depth:reclaim-var-in-register</span>:
-<span id="L6331" class="LineNr"> 6331 </span>          (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L6331" class="LineNr"> 6331 </span>          (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
 <span id="L6332" class="LineNr"> 6332 </span>          (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;8f 0/subop/pop %&quot;</span>)
 <span id="L6333" class="LineNr"> 6333 </span>          (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(ebx+0x10))
 <span id="L6334" class="LineNr"> 6334 </span>          (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L83'>Newline</a></span>)
@@ -6110,7 +6110,7 @@ if ('onhashchange' in window) {
 <span id="L6346" class="LineNr"> 6346 </span>        3d/compare-eax-and 0/imm32
 <span id="L6347" class="LineNr"> 6347 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
 <span id="L6348" class="LineNr"> 6348 </span>        <span class="subxComment">#</span>
-<span id="L6349" class="LineNr"> 6349 </span>        (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L6349" class="LineNr"> 6349 </span>        (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
 <span id="L6350" class="LineNr"> 6350 </span>        (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;81 0/subop/add %esp &quot;</span>)
 <span id="L6351" class="LineNr"> 6351 </span>        (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> *(ebp+8) %eax)
 <span id="L6352" class="LineNr"> 6352 </span>        (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;/imm32\n&quot;</span>)
@@ -6174,7 +6174,7 @@ if ('onhashchange' in window) {
 <span id="L6410" class="LineNr"> 6410 </span>          3d/compare-eax-and 0/imm32/false
 <span id="L6411" class="LineNr"> 6411 </span>          75/jump-if-!= <span class="Constant">break</span>/disp8
 <span id="L6412" class="LineNr"> 6412 </span><span class="Constant">$emit-cleanup-code-until-target:reclaim-var-in-register</span>:
-<span id="L6413" class="LineNr"> 6413 </span>          (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L6413" class="LineNr"> 6413 </span>          (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
 <span id="L6414" class="LineNr"> 6414 </span>          (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;8f 0/subop/pop %&quot;</span>)
 <span id="L6415" class="LineNr"> 6415 </span>          (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(ebx+0x10))
 <span id="L6416" class="LineNr"> 6416 </span>          (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L83'>Newline</a></span>)
@@ -6191,7 +6191,7 @@ if ('onhashchange' in window) {
 <span id="L6427" class="LineNr"> 6427 </span>        3d/compare-eax-and 0/imm32
 <span id="L6428" class="LineNr"> 6428 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
 <span id="L6429" class="LineNr"> 6429 </span>        <span class="subxComment">#</span>
-<span id="L6430" class="LineNr"> 6430 </span>        (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L6430" class="LineNr"> 6430 </span>        (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
 <span id="L6431" class="LineNr"> 6431 </span>        (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;81 0/subop/add %esp &quot;</span>)
 <span id="L6432" class="LineNr"> 6432 </span>        (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> *(ebp+8) %eax)
 <span id="L6433" class="LineNr"> 6433 </span>        (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;/imm32\n&quot;</span>)
@@ -6404,7 +6404,7 @@ if ('onhashchange' in window) {
 <span id="L6640" class="LineNr"> 6640 </span>    {
 <span id="L6641" class="LineNr"> 6641 </span>      3d/compare-eax-with 0/imm32
 <span id="L6642" class="LineNr"> 6642 </span>      7e/jump-if-&lt;= <span class="Constant">break</span>/disp8
-<span id="L6643" class="LineNr"> 6643 </span>      (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L6643" class="LineNr"> 6643 </span>      (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
 <span id="L6644" class="LineNr"> 6644 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;68/push 0/imm32\n&quot;</span>)
 <span id="L6645" class="LineNr"> 6645 </span>      <span class="subxComment"># n -= 4</span>
 <span id="L6646" class="LineNr"> 6646 </span>      2d/subtract-from-eax 4/imm32
@@ -6438,25 +6438,25 @@ if ('onhashchange' in window) {
 <span id="L6795" class="LineNr"> 6795 </span>    <span class="subxComment"># if stmt matches a primitive, emit it</span>
 <span id="L6796" class="LineNr"> 6796 </span>    {
 <span id="L6797" class="LineNr"> 6797 </span><span class="Constant">$emit-subx-stmt:check-for-primitive</span>:
-<span id="L6798" class="LineNr"> 6798 </span>      (<a href='mu.subx.html#L8793'>find-matching-primitive</a> *(ebp+0x10) *(ebp+0xc))  <span class="subxComment"># primitives, stmt =&gt; curr/eax</span>
+<span id="L6798" class="LineNr"> 6798 </span>      (<a href='mu.subx.html#L8789'>find-matching-primitive</a> *(ebp+0x10) *(ebp+0xc))  <span class="subxComment"># primitives, stmt =&gt; curr/eax</span>
 <span id="L6799" class="LineNr"> 6799 </span>      3d/compare-eax-and 0/imm32
 <span id="L6800" class="LineNr"> 6800 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
 <span id="L6801" class="LineNr"> 6801 </span><span class="Constant">$emit-subx-stmt:primitive</span>:
-<span id="L6802" class="LineNr"> 6802 </span>      (<a href='mu.subx.html#L8364'>emit-subx-primitive</a> *(ebp+8) *(ebp+0xc) %eax)  <span class="subxComment"># out, stmt, curr</span>
+<span id="L6802" class="LineNr"> 6802 </span>      (<a href='mu.subx.html#L8360'>emit-subx-primitive</a> *(ebp+8) *(ebp+0xc) %eax)  <span class="subxComment"># out, stmt, curr</span>
 <span id="L6803" class="LineNr"> 6803 </span>      e9/jump $emit-subx-stmt:end/disp32
 <span id="L6804" class="LineNr"> 6804 </span>    }
 <span id="L6805" class="LineNr"> 6805 </span>    <span class="subxComment"># else if stmt matches a function, emit a call to it</span>
 <span id="L6806" class="LineNr"> 6806 </span>    {
 <span id="L6807" class="LineNr"> 6807 </span><span class="Constant">$emit-subx-stmt:check-for-call</span>:
-<span id="L6808" class="LineNr"> 6808 </span>      (<a href='mu.subx.html#L8759'>find-matching-function</a> *(ebp+0x14) *(ebp+0xc))  <span class="subxComment"># functions, stmt =&gt; curr/eax</span>
+<span id="L6808" class="LineNr"> 6808 </span>      (<a href='mu.subx.html#L8755'>find-matching-function</a> *(ebp+0x14) *(ebp+0xc))  <span class="subxComment"># functions, stmt =&gt; curr/eax</span>
 <span id="L6809" class="LineNr"> 6809 </span>      3d/compare-eax-and 0/imm32
 <span id="L6810" class="LineNr"> 6810 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
 <span id="L6811" class="LineNr"> 6811 </span><span class="Constant">$emit-subx-stmt:call</span>:
-<span id="L6812" class="LineNr"> 6812 </span>      (<a href='mu.subx.html#L8564'>emit-subx-call</a> *(ebp+8) *(ebp+0xc) %eax)  <span class="subxComment"># out, stmt, curr</span>
+<span id="L6812" class="LineNr"> 6812 </span>      (<a href='mu.subx.html#L8560'>emit-subx-call</a> *(ebp+8) *(ebp+0xc) %eax)  <span class="subxComment"># out, stmt, curr</span>
 <span id="L6813" class="LineNr"> 6813 </span>      e9/jump $emit-subx-stmt:end/disp32
 <span id="L6814" class="LineNr"> 6814 </span>    }
 <span id="L6815" class="LineNr"> 6815 </span>    <span class="subxComment"># else assume it's a SubX function (TODO: how to type-check?!)</span>
-<span id="L6816" class="LineNr"> 6816 </span>    (<a href='mu.subx.html#L8602'>emit-hailmary-call</a> *(ebp+8) *(ebp+0xc))
+<span id="L6816" class="LineNr"> 6816 </span>    (<a href='mu.subx.html#L8598'>emit-hailmary-call</a> *(ebp+8) *(ebp+0xc))
 <span id="L6817" class="LineNr"> 6817 </span><span class="Constant">$emit-subx-stmt:end</span>:
 <span id="L6818" class="LineNr"> 6818 </span>    <span class="subxS1Comment"># . restore registers</span>
 <span id="L6819" class="LineNr"> 6819 </span>    5b/pop-to-ebx
@@ -6510,3539 +6510,3527 @@ if ('onhashchange' in window) {
 <span id="L6867" class="LineNr"> 6867 </span>    48/decrement-eax
 <span id="L6868" class="LineNr"> 6868 </span>    <span class="subxComment"># var tmp2/eax: int = n &amp; tmp</span>
 <span id="L6869" class="LineNr"> 6869 </span>    0b/and-&gt; *(ebp+8) 0/r32/eax
-<span id="L6870" class="LineNr"> 6870 </span>    <span class="subxComment"># return (tmp2 == 0)  # TODO: replace with setcc</span>
+<span id="L6870" class="LineNr"> 6870 </span>    <span class="subxComment"># return (tmp2 == 0)</span>
 <span id="L6871" class="LineNr"> 6871 </span>    3d/compare-eax-and 0/imm32
-<span id="L6872" class="LineNr"> 6872 </span>    74/jump-if-= $power-of-2?:true/disp8
-<span id="L6873" class="LineNr"> 6873 </span><span class="Constant">$power-of-2?:false</span>:
-<span id="L6874" class="LineNr"> 6874 </span>    b8/copy-to-eax 0/imm32/false
-<span id="L6875" class="LineNr"> 6875 </span>    eb/jump $power-of-2?:end/disp8
-<span id="L6876" class="LineNr"> 6876 </span><span class="Constant">$power-of-2?:true</span>:
-<span id="L6877" class="LineNr"> 6877 </span>    b8/copy-to-eax 1/imm32/true
-<span id="L6878" class="LineNr"> 6878 </span><span class="Constant">$power-of-2?:end</span>:
-<span id="L6879" class="LineNr"> 6879 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L6880" class="LineNr"> 6880 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L6881" class="LineNr"> 6881 </span>    5d/pop-to-ebp
-<span id="L6882" class="LineNr"> 6882 </span>    c3/return
-<span id="L6883" class="LineNr"> 6883 </span>
-<span id="L6884" class="LineNr"> 6884 </span><span class="subxFunction">num-shift-rights</span>:  <span class="subxComment"># n: int -&gt; result/eax: int</span>
-<span id="L6885" class="LineNr"> 6885 </span>    <span class="subxComment"># precondition: n is a positive power of 2</span>
-<span id="L6886" class="LineNr"> 6886 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L6887" class="LineNr"> 6887 </span>    55/push-ebp
-<span id="L6888" class="LineNr"> 6888 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L6889" class="LineNr"> 6889 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L6890" class="LineNr"> 6890 </span>    51/push-ecx
-<span id="L6891" class="LineNr"> 6891 </span>    <span class="subxComment"># var curr/ecx: int = n</span>
-<span id="L6892" class="LineNr"> 6892 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
-<span id="L6893" class="LineNr"> 6893 </span>    <span class="subxComment"># result = 0</span>
-<span id="L6894" class="LineNr"> 6894 </span>    b8/copy-to-eax 0/imm32
-<span id="L6895" class="LineNr"> 6895 </span>    {
-<span id="L6896" class="LineNr"> 6896 </span>      <span class="subxComment"># if (curr &lt;= 1) break</span>
-<span id="L6897" class="LineNr"> 6897 </span>      81 7/subop/compare %ecx 1/imm32
-<span id="L6898" class="LineNr"> 6898 </span>      7e/jump-if-&lt;= <span class="Constant">break</span>/disp8
-<span id="L6899" class="LineNr"> 6899 </span>      40/increment-eax
-<span id="L6900" class="LineNr"> 6900 </span>      c1/shift 5/subop/arithmetic-right %ecx 1/imm8
-<span id="L6901" class="LineNr"> 6901 </span>      eb/jump <span class="Constant">loop</span>/disp8
-<span id="L6902" class="LineNr"> 6902 </span>    }
-<span id="L6903" class="LineNr"> 6903 </span><span class="Constant">$num-shift-rights:end</span>:
-<span id="L6904" class="LineNr"> 6904 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L6905" class="LineNr"> 6905 </span>    59/pop-to-ecx
-<span id="L6906" class="LineNr"> 6906 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L6907" class="LineNr"> 6907 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L6908" class="LineNr"> 6908 </span>    5d/pop-to-ebp
-<span id="L6909" class="LineNr"> 6909 </span>    c3/return
-<span id="L6910" class="LineNr"> 6910 </span>
-<span id="L6911" class="LineNr"> 6911 </span><span class="subxFunction">print-mu-get-offset</span>:  <span class="subxComment"># out: (addr buffered-file), stmt: (handle stmt)</span>
-<span id="L6912" class="LineNr"> 6912 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L6913" class="LineNr"> 6913 </span>    55/push-ebp
-<span id="L6914" class="LineNr"> 6914 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L6915" class="LineNr"> 6915 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L6916" class="LineNr"> 6916 </span>    50/push-eax
-<span id="L6917" class="LineNr"> 6917 </span>    <span class="subxComment"># var second-inout/eax: (handle stmt-var) = stmt-&gt;inouts-&gt;next</span>
-<span id="L6918" class="LineNr"> 6918 </span>    8b/-&gt; *(ebp+0xc) 0/r32/eax
-<span id="L6919" class="LineNr"> 6919 </span>    8b/-&gt; *(eax+8) 0/r32/eax  <span class="subxComment"># Stmt1-inouts</span>
-<span id="L6920" class="LineNr"> 6920 </span>    8b/-&gt; *(eax+4) 0/r32/eax  <span class="subxComment"># Stmt-var-next</span>
-<span id="L6921" class="LineNr"> 6921 </span>    <span class="subxComment"># var output-var/eax: (handle var) = second-inout-&gt;value</span>
-<span id="L6922" class="LineNr"> 6922 </span>    8b/-&gt; *eax 0/r32/eax  <span class="subxComment"># Stmt-var-value</span>
-<span id="L6923" class="LineNr"> 6923 </span>    <span class="subxComment"># print offset</span>
-<span id="L6924" class="LineNr"> 6924 </span><span class="CommentedCode">#?     (write-buffered Stderr &quot;emitting offset from output var &quot;)</span>
-<span id="L6925" class="LineNr"> 6925 </span><span class="CommentedCode">#?     (print-int32-buffered Stderr %eax)</span>
-<span id="L6926" class="LineNr"> 6926 </span><span class="CommentedCode">#?     (write-buffered Stderr Newline)</span>
-<span id="L6927" class="LineNr"> 6927 </span><span class="CommentedCode">#?     (flush Stderr)</span>
-<span id="L6928" class="LineNr"> 6928 </span>    (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> *(ebp+8) *(eax+0xc))  <span class="subxComment"># Var-offset</span>
-<span id="L6929" class="LineNr"> 6929 </span><span class="Constant">$emit-get-offset:end</span>:
-<span id="L6930" class="LineNr"> 6930 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L6931" class="LineNr"> 6931 </span>    58/pop-to-eax
-<span id="L6932" class="LineNr"> 6932 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L6933" class="LineNr"> 6933 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L6934" class="LineNr"> 6934 </span>    5d/pop-to-ebp
-<span id="L6935" class="LineNr"> 6935 </span>    c3/return
-<span id="L6936" class="LineNr"> 6936 </span>
-<span id="L6937" class="LineNr"> 6937 </span><span class="subxFunction">emit-subx-block</span>:  <span class="subxComment"># out: (addr buffered-file), block: (handle block), vars: (addr stack (handle var))</span>
-<span id="L6938" class="LineNr"> 6938 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L6939" class="LineNr"> 6939 </span>    55/push-ebp
-<span id="L6940" class="LineNr"> 6940 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L6941" class="LineNr"> 6941 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L6942" class="LineNr"> 6942 </span>    50/push-eax
-<span id="L6943" class="LineNr"> 6943 </span>    51/push-ecx
-<span id="L6944" class="LineNr"> 6944 </span>    56/push-esi
-<span id="L6945" class="LineNr"> 6945 </span>    <span class="subxComment"># esi = block</span>
-<span id="L6946" class="LineNr"> 6946 </span>    8b/-&gt; *(ebp+0xc) 6/r32/esi
-<span id="L6947" class="LineNr"> 6947 </span>    <span class="subxComment"># var stmts/eax: (handle list stmt) = block-&gt;statements</span>
-<span id="L6948" class="LineNr"> 6948 </span>    8b/-&gt; *(esi+4) 0/r32/eax  <span class="subxComment"># Block-stmts</span>
-<span id="L6949" class="LineNr"> 6949 </span>    <span class="subxComment">#</span>
-<span id="L6950" class="LineNr"> 6950 </span>    {
-<span id="L6951" class="LineNr"> 6951 </span><span class="Constant">$emit-subx-block:check-empty</span>:
-<span id="L6952" class="LineNr"> 6952 </span>      3d/compare-eax-and 0/imm32
-<span id="L6953" class="LineNr"> 6953 </span>      0f 84/jump-if-= <span class="Constant">break</span>/disp32
-<span id="L6954" class="LineNr"> 6954 </span>      (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
-<span id="L6955" class="LineNr"> 6955 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;{\n&quot;</span>)
-<span id="L6956" class="LineNr"> 6956 </span>      <span class="subxComment"># var v/ecx: (addr array byte) = block-&gt;var-&gt;name</span>
-<span id="L6957" class="LineNr"> 6957 </span>      8b/-&gt; *(esi+8) 1/r32/ecx  <span class="subxComment"># Block-var</span>
-<span id="L6958" class="LineNr"> 6958 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *ecx)  <span class="subxComment"># Var-name</span>
-<span id="L6959" class="LineNr"> 6959 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;:loop:\n&quot;</span>)
-<span id="L6960" class="LineNr"> 6960 </span>      ff 0/subop/increment *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>
-<span id="L6961" class="LineNr"> 6961 </span>      (<a href='../092stack.subx.html#L110'>push</a> *(ebp+0x10) %ecx)
-<span id="L6962" class="LineNr"> 6962 </span>      (<a href='mu.subx.html#L5867'>emit-subx-stmt-list</a> *(ebp+8) %eax *(ebp+0x10))
-<span id="L6963" class="LineNr"> 6963 </span>      (<a href='../092stack.subx.html#L230'>pop</a> *(ebp+0x10))  <span class="subxComment"># =&gt; eax</span>
-<span id="L6964" class="LineNr"> 6964 </span>      ff 1/subop/decrement *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>
-<span id="L6965" class="LineNr"> 6965 </span>      (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
-<span id="L6966" class="LineNr"> 6966 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;}\n&quot;</span>)
-<span id="L6967" class="LineNr"> 6967 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *ecx)  <span class="subxComment"># Var-name</span>
-<span id="L6968" class="LineNr"> 6968 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;:break:\n&quot;</span>)
-<span id="L6969" class="LineNr"> 6969 </span>    }
-<span id="L6970" class="LineNr"> 6970 </span><span class="Constant">$emit-subx-block:end</span>:
-<span id="L6971" class="LineNr"> 6971 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L6972" class="LineNr"> 6972 </span>    5e/pop-to-esi
-<span id="L6973" class="LineNr"> 6973 </span>    59/pop-to-ecx
-<span id="L6974" class="LineNr"> 6974 </span>    58/pop-to-eax
-<span id="L6975" class="LineNr"> 6975 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L6976" class="LineNr"> 6976 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L6977" class="LineNr"> 6977 </span>    5d/pop-to-ebp
-<span id="L6978" class="LineNr"> 6978 </span>    c3/return
-<span id="L6979" class="LineNr"> 6979 </span>
-<span id="L6980" class="LineNr"> 6980 </span><span class="subxComment"># Primitives supported</span>
-<span id="L6981" class="LineNr"> 6981 </span><span class="subxComment"># For each operation, put variants with hard-coded registers before flexible ones.</span>
-<span id="L6982" class="LineNr"> 6982 </span>== data
-<span id="L6983" class="LineNr"> 6983 </span><span class="SpecialChar">Primitives</span>:
-<span id="L6984" class="LineNr"> 6984 </span><span class="subxH1Comment"># - increment/decrement</span>
-<span id="L6985" class="LineNr"> 6985 </span><span class="subxMinorFunction">_Primitive-inc-eax</span>:
-<span id="L6986" class="LineNr"> 6986 </span>    <span class="subxComment"># var/eax &lt;- increment =&gt; 40/increment-eax</span>
-<span id="L6987" class="LineNr"> 6987 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L6988" class="LineNr"> 6988 </span>    0/imm32/no-inouts
-<span id="L6989" class="LineNr"> 6989 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8278'>Single-int-var-in-eax</a></span>/imm32/outputs
-<span id="L6990" class="LineNr"> 6990 </span>    <span class="Constant">&quot;40/increment-eax&quot;</span>/imm32/subx-name
-<span id="L6991" class="LineNr"> 6991 </span>    0/imm32/no-rm32
-<span id="L6992" class="LineNr"> 6992 </span>    0/imm32/no-r32
-<span id="L6993" class="LineNr"> 6993 </span>    0/imm32/no-imm32
-<span id="L6994" class="LineNr"> 6994 </span>    0/imm32/no-disp32
-<span id="L6995" class="LineNr"> 6995 </span>    0/imm32/output-is-write-only
-<span id="L6996" class="LineNr"> 6996 </span>    <a href='mu.subx.html#L6997'>_Primitive-inc-ecx</a>/imm32/next
-<span id="L6997" class="LineNr"> 6997 </span><span class="subxMinorFunction">_Primitive-inc-ecx</span>:
-<span id="L6998" class="LineNr"> 6998 </span>    <span class="subxComment"># var/ecx &lt;- increment =&gt; 41/increment-ecx</span>
-<span id="L6999" class="LineNr"> 6999 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L7000" class="LineNr"> 7000 </span>    0/imm32/no-inouts
-<span id="L7001" class="LineNr"> 7001 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8289'>Single-int-var-in-ecx</a></span>/imm32/outputs
-<span id="L7002" class="LineNr"> 7002 </span>    <span class="Constant">&quot;41/increment-ecx&quot;</span>/imm32/subx-name
-<span id="L7003" class="LineNr"> 7003 </span>    0/imm32/no-rm32
-<span id="L7004" class="LineNr"> 7004 </span>    0/imm32/no-r32
-<span id="L7005" class="LineNr"> 7005 </span>    0/imm32/no-imm32
-<span id="L7006" class="LineNr"> 7006 </span>    0/imm32/no-disp32
-<span id="L7007" class="LineNr"> 7007 </span>    0/imm32/output-is-write-only
-<span id="L7008" class="LineNr"> 7008 </span>    <a href='mu.subx.html#L7009'>_Primitive-inc-edx</a>/imm32/next
-<span id="L7009" class="LineNr"> 7009 </span><span class="subxMinorFunction">_Primitive-inc-edx</span>:
-<span id="L7010" class="LineNr"> 7010 </span>    <span class="subxComment"># var/edx &lt;- increment =&gt; 42/increment-edx</span>
-<span id="L7011" class="LineNr"> 7011 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L7012" class="LineNr"> 7012 </span>    0/imm32/no-inouts
-<span id="L7013" class="LineNr"> 7013 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8300'>Single-int-var-in-edx</a></span>/imm32/outputs
-<span id="L7014" class="LineNr"> 7014 </span>    <span class="Constant">&quot;42/increment-edx&quot;</span>/imm32/subx-name
-<span id="L7015" class="LineNr"> 7015 </span>    0/imm32/no-rm32
-<span id="L7016" class="LineNr"> 7016 </span>    0/imm32/no-r32
-<span id="L7017" class="LineNr"> 7017 </span>    0/imm32/no-imm32
-<span id="L7018" class="LineNr"> 7018 </span>    0/imm32/no-disp32
-<span id="L7019" class="LineNr"> 7019 </span>    0/imm32/output-is-write-only
-<span id="L7020" class="LineNr"> 7020 </span>    <a href='mu.subx.html#L7021'>_Primitive-inc-ebx</a>/imm32/next
-<span id="L7021" class="LineNr"> 7021 </span><span class="subxMinorFunction">_Primitive-inc-ebx</span>:
-<span id="L7022" class="LineNr"> 7022 </span>    <span class="subxComment"># var/ebx &lt;- increment =&gt; 43/increment-ebx</span>
-<span id="L7023" class="LineNr"> 7023 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L7024" class="LineNr"> 7024 </span>    0/imm32/no-inouts
-<span id="L7025" class="LineNr"> 7025 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8311'>Single-int-var-in-ebx</a></span>/imm32/outputs
-<span id="L7026" class="LineNr"> 7026 </span>    <span class="Constant">&quot;43/increment-ebx&quot;</span>/imm32/subx-name
-<span id="L7027" class="LineNr"> 7027 </span>    0/imm32/no-rm32
-<span id="L7028" class="LineNr"> 7028 </span>    0/imm32/no-r32
-<span id="L7029" class="LineNr"> 7029 </span>    0/imm32/no-imm32
-<span id="L7030" class="LineNr"> 7030 </span>    0/imm32/no-disp32
-<span id="L7031" class="LineNr"> 7031 </span>    0/imm32/output-is-write-only
-<span id="L7032" class="LineNr"> 7032 </span>    <a href='mu.subx.html#L7033'>_Primitive-inc-esi</a>/imm32/next
-<span id="L7033" class="LineNr"> 7033 </span><span class="subxMinorFunction">_Primitive-inc-esi</span>:
-<span id="L7034" class="LineNr"> 7034 </span>    <span class="subxComment"># var/esi &lt;- increment =&gt; 46/increment-esi</span>
-<span id="L7035" class="LineNr"> 7035 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L7036" class="LineNr"> 7036 </span>    0/imm32/no-inouts
-<span id="L7037" class="LineNr"> 7037 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8322'>Single-int-var-in-esi</a></span>/imm32/outputs
-<span id="L7038" class="LineNr"> 7038 </span>    <span class="Constant">&quot;46/increment-esi&quot;</span>/imm32/subx-name
-<span id="L7039" class="LineNr"> 7039 </span>    0/imm32/no-rm32
-<span id="L7040" class="LineNr"> 7040 </span>    0/imm32/no-r32
-<span id="L7041" class="LineNr"> 7041 </span>    0/imm32/no-imm32
-<span id="L7042" class="LineNr"> 7042 </span>    0/imm32/no-disp32
-<span id="L7043" class="LineNr"> 7043 </span>    0/imm32/output-is-write-only
-<span id="L7044" class="LineNr"> 7044 </span>    <a href='mu.subx.html#L7045'>_Primitive-inc-edi</a>/imm32/next
-<span id="L7045" class="LineNr"> 7045 </span><span class="subxMinorFunction">_Primitive-inc-edi</span>:
-<span id="L7046" class="LineNr"> 7046 </span>    <span class="subxComment"># var/edi &lt;- increment =&gt; 47/increment-edi</span>
-<span id="L7047" class="LineNr"> 7047 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L7048" class="LineNr"> 7048 </span>    0/imm32/no-inouts
-<span id="L7049" class="LineNr"> 7049 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8333'>Single-int-var-in-edi</a></span>/imm32/outputs
-<span id="L7050" class="LineNr"> 7050 </span>    <span class="Constant">&quot;47/increment-edi&quot;</span>/imm32/subx-name
-<span id="L7051" class="LineNr"> 7051 </span>    0/imm32/no-rm32
-<span id="L7052" class="LineNr"> 7052 </span>    0/imm32/no-r32
-<span id="L7053" class="LineNr"> 7053 </span>    0/imm32/no-imm32
-<span id="L7054" class="LineNr"> 7054 </span>    0/imm32/no-disp32
-<span id="L7055" class="LineNr"> 7055 </span>    0/imm32/output-is-write-only
-<span id="L7056" class="LineNr"> 7056 </span>    <a href='mu.subx.html#L7057'>_Primitive-dec-eax</a>/imm32/next
-<span id="L7057" class="LineNr"> 7057 </span><span class="subxMinorFunction">_Primitive-dec-eax</span>:
-<span id="L7058" class="LineNr"> 7058 </span>    <span class="subxComment"># var/eax &lt;- decrement =&gt; 48/decrement-eax</span>
-<span id="L7059" class="LineNr"> 7059 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
-<span id="L7060" class="LineNr"> 7060 </span>    0/imm32/no-inouts
-<span id="L7061" class="LineNr"> 7061 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8278'>Single-int-var-in-eax</a></span>/imm32/outputs
-<span id="L7062" class="LineNr"> 7062 </span>    <span class="Constant">&quot;48/decrement-eax&quot;</span>/imm32/subx-name
-<span id="L7063" class="LineNr"> 7063 </span>    0/imm32/no-rm32
-<span id="L7064" class="LineNr"> 7064 </span>    0/imm32/no-r32
-<span id="L7065" class="LineNr"> 7065 </span>    0/imm32/no-imm32
-<span id="L7066" class="LineNr"> 7066 </span>    0/imm32/no-disp32
-<span id="L7067" class="LineNr"> 7067 </span>    0/imm32/output-is-write-only
-<span id="L7068" class="LineNr"> 7068 </span>    <a href='mu.subx.html#L7069'>_Primitive-dec-ecx</a>/imm32/next
-<span id="L7069" class="LineNr"> 7069 </span><span class="subxMinorFunction">_Primitive-dec-ecx</span>:
-<span id="L7070" class="LineNr"> 7070 </span>    <span class="subxComment"># var/ecx &lt;- decrement =&gt; 49/decrement-ecx</span>
-<span id="L7071" class="LineNr"> 7071 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
-<span id="L7072" class="LineNr"> 7072 </span>    0/imm32/no-inouts
-<span id="L7073" class="LineNr"> 7073 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8289'>Single-int-var-in-ecx</a></span>/imm32/outputs
-<span id="L7074" class="LineNr"> 7074 </span>    <span class="Constant">&quot;49/decrement-ecx&quot;</span>/imm32/subx-name
-<span id="L7075" class="LineNr"> 7075 </span>    0/imm32/no-rm32
-<span id="L7076" class="LineNr"> 7076 </span>    0/imm32/no-r32
-<span id="L7077" class="LineNr"> 7077 </span>    0/imm32/no-imm32
-<span id="L7078" class="LineNr"> 7078 </span>    0/imm32/no-disp32
-<span id="L7079" class="LineNr"> 7079 </span>    0/imm32/output-is-write-only
-<span id="L7080" class="LineNr"> 7080 </span>    <a href='mu.subx.html#L7081'>_Primitive-dec-edx</a>/imm32/next
-<span id="L7081" class="LineNr"> 7081 </span><span class="subxMinorFunction">_Primitive-dec-edx</span>:
-<span id="L7082" class="LineNr"> 7082 </span>    <span class="subxComment"># var/edx &lt;- decrement =&gt; 4a/decrement-edx</span>
-<span id="L7083" class="LineNr"> 7083 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
-<span id="L7084" class="LineNr"> 7084 </span>    0/imm32/no-inouts
-<span id="L7085" class="LineNr"> 7085 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8300'>Single-int-var-in-edx</a></span>/imm32/outputs
-<span id="L7086" class="LineNr"> 7086 </span>    <span class="Constant">&quot;4a/decrement-edx&quot;</span>/imm32/subx-name
-<span id="L7087" class="LineNr"> 7087 </span>    0/imm32/no-rm32
-<span id="L7088" class="LineNr"> 7088 </span>    0/imm32/no-r32
-<span id="L7089" class="LineNr"> 7089 </span>    0/imm32/no-imm32
-<span id="L7090" class="LineNr"> 7090 </span>    0/imm32/no-disp32
-<span id="L7091" class="LineNr"> 7091 </span>    0/imm32/output-is-write-only
-<span id="L7092" class="LineNr"> 7092 </span>    <a href='mu.subx.html#L7093'>_Primitive-dec-ebx</a>/imm32/next
-<span id="L7093" class="LineNr"> 7093 </span><span class="subxMinorFunction">_Primitive-dec-ebx</span>:
-<span id="L7094" class="LineNr"> 7094 </span>    <span class="subxComment"># var/ebx &lt;- decrement =&gt; 4b/decrement-ebx</span>
-<span id="L7095" class="LineNr"> 7095 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
-<span id="L7096" class="LineNr"> 7096 </span>    0/imm32/no-inouts
-<span id="L7097" class="LineNr"> 7097 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8311'>Single-int-var-in-ebx</a></span>/imm32/outputs
-<span id="L7098" class="LineNr"> 7098 </span>    <span class="Constant">&quot;4b/decrement-ebx&quot;</span>/imm32/subx-name
-<span id="L7099" class="LineNr"> 7099 </span>    0/imm32/no-rm32
-<span id="L7100" class="LineNr"> 7100 </span>    0/imm32/no-r32
-<span id="L7101" class="LineNr"> 7101 </span>    0/imm32/no-imm32
-<span id="L7102" class="LineNr"> 7102 </span>    0/imm32/no-disp32
-<span id="L7103" class="LineNr"> 7103 </span>    0/imm32/output-is-write-only
-<span id="L7104" class="LineNr"> 7104 </span>    <a href='mu.subx.html#L7105'>_Primitive-dec-esi</a>/imm32/next
-<span id="L7105" class="LineNr"> 7105 </span><span class="subxMinorFunction">_Primitive-dec-esi</span>:
-<span id="L7106" class="LineNr"> 7106 </span>    <span class="subxComment"># var/esi &lt;- decrement =&gt; 4e/decrement-esi</span>
-<span id="L7107" class="LineNr"> 7107 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
-<span id="L7108" class="LineNr"> 7108 </span>    0/imm32/no-inouts
-<span id="L7109" class="LineNr"> 7109 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8322'>Single-int-var-in-esi</a></span>/imm32/outputs
-<span id="L7110" class="LineNr"> 7110 </span>    <span class="Constant">&quot;4e/decrement-esi&quot;</span>/imm32/subx-name
-<span id="L7111" class="LineNr"> 7111 </span>    0/imm32/no-rm32
-<span id="L7112" class="LineNr"> 7112 </span>    0/imm32/no-r32
-<span id="L7113" class="LineNr"> 7113 </span>    0/imm32/no-imm32
-<span id="L7114" class="LineNr"> 7114 </span>    0/imm32/no-disp32
-<span id="L7115" class="LineNr"> 7115 </span>    0/imm32/output-is-write-only
-<span id="L7116" class="LineNr"> 7116 </span>    <a href='mu.subx.html#L7117'>_Primitive-dec-edi</a>/imm32/next
-<span id="L7117" class="LineNr"> 7117 </span><span class="subxMinorFunction">_Primitive-dec-edi</span>:
-<span id="L7118" class="LineNr"> 7118 </span>    <span class="subxComment"># var/edi &lt;- decrement =&gt; 4f/decrement-edi</span>
-<span id="L7119" class="LineNr"> 7119 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
-<span id="L7120" class="LineNr"> 7120 </span>    0/imm32/no-inouts
-<span id="L7121" class="LineNr"> 7121 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8333'>Single-int-var-in-edi</a></span>/imm32/outputs
-<span id="L7122" class="LineNr"> 7122 </span>    <span class="Constant">&quot;4f/decrement-edi&quot;</span>/imm32/subx-name
-<span id="L7123" class="LineNr"> 7123 </span>    0/imm32/no-rm32
-<span id="L7124" class="LineNr"> 7124 </span>    0/imm32/no-r32
-<span id="L7125" class="LineNr"> 7125 </span>    0/imm32/no-imm32
-<span id="L7126" class="LineNr"> 7126 </span>    0/imm32/no-disp32
-<span id="L7127" class="LineNr"> 7127 </span>    0/imm32/output-is-write-only
-<span id="L7128" class="LineNr"> 7128 </span>    <a href='mu.subx.html#L7129'>_Primitive-inc-mem</a>/imm32/next
-<span id="L7129" class="LineNr"> 7129 </span><span class="subxMinorFunction">_Primitive-inc-mem</span>:
-<span id="L7130" class="LineNr"> 7130 </span>    <span class="subxComment"># increment var =&gt; ff 0/subop/increment *(ebp+__)</span>
-<span id="L7131" class="LineNr"> 7131 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L7132" class="LineNr"> 7132 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Single-int-var-in-mem</a></span>/imm32/inouts
-<span id="L7133" class="LineNr"> 7133 </span>    0/imm32/no-outputs
-<span id="L7134" class="LineNr"> 7134 </span>    <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
-<span id="L7135" class="LineNr"> 7135 </span>    1/imm32/rm32-is-first-inout
-<span id="L7136" class="LineNr"> 7136 </span>    0/imm32/no-r32
-<span id="L7137" class="LineNr"> 7137 </span>    0/imm32/no-imm32
-<span id="L7138" class="LineNr"> 7138 </span>    0/imm32/no-disp32
-<span id="L7139" class="LineNr"> 7139 </span>    0/imm32/output-is-write-only
-<span id="L7140" class="LineNr"> 7140 </span>    <a href='mu.subx.html#L7141'>_Primitive-inc-reg</a>/imm32/next
-<span id="L7141" class="LineNr"> 7141 </span><span class="subxMinorFunction">_Primitive-inc-reg</span>:
-<span id="L7142" class="LineNr"> 7142 </span>    <span class="subxComment"># var/reg &lt;- increment =&gt; ff 0/subop/increment %__</span>
-<span id="L7143" class="LineNr"> 7143 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L7144" class="LineNr"> 7144 </span>    0/imm32/no-inouts
-<span id="L7145" class="LineNr"> 7145 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7146" class="LineNr"> 7146 </span>    <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
-<span id="L7147" class="LineNr"> 7147 </span>    3/imm32/rm32-is-first-output
-<span id="L7148" class="LineNr"> 7148 </span>    0/imm32/no-r32
-<span id="L7149" class="LineNr"> 7149 </span>    0/imm32/no-imm32
-<span id="L7150" class="LineNr"> 7150 </span>    0/imm32/no-disp32
-<span id="L7151" class="LineNr"> 7151 </span>    0/imm32/output-is-write-only
-<span id="L7152" class="LineNr"> 7152 </span>    <a href='mu.subx.html#L7153'>_Primitive-dec-mem</a>/imm32/next
-<span id="L7153" class="LineNr"> 7153 </span><span class="subxMinorFunction">_Primitive-dec-mem</span>:
-<span id="L7154" class="LineNr"> 7154 </span>    <span class="subxComment"># decrement var =&gt; ff 1/subop/decrement *(ebp+__)</span>
-<span id="L7155" class="LineNr"> 7155 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
-<span id="L7156" class="LineNr"> 7156 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Single-int-var-in-mem</a></span>/imm32/inouts
-<span id="L7157" class="LineNr"> 7157 </span>    0/imm32/no-outputs
-<span id="L7158" class="LineNr"> 7158 </span>    <span class="Constant">&quot;ff 1/subop/decrement&quot;</span>/imm32/subx-name
-<span id="L7159" class="LineNr"> 7159 </span>    1/imm32/rm32-is-first-inout
-<span id="L7160" class="LineNr"> 7160 </span>    0/imm32/no-r32
-<span id="L7161" class="LineNr"> 7161 </span>    0/imm32/no-imm32
-<span id="L7162" class="LineNr"> 7162 </span>    0/imm32/no-disp32
-<span id="L7163" class="LineNr"> 7163 </span>    0/imm32/output-is-write-only
-<span id="L7164" class="LineNr"> 7164 </span>    <a href='mu.subx.html#L7165'>_Primitive-dec-reg</a>/imm32/next
-<span id="L7165" class="LineNr"> 7165 </span><span class="subxMinorFunction">_Primitive-dec-reg</span>:
-<span id="L7166" class="LineNr"> 7166 </span>    <span class="subxComment"># var/reg &lt;- decrement =&gt; ff 1/subop/decrement %__</span>
-<span id="L7167" class="LineNr"> 7167 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
-<span id="L7168" class="LineNr"> 7168 </span>    0/imm32/no-inouts
-<span id="L7169" class="LineNr"> 7169 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7170" class="LineNr"> 7170 </span>    <span class="Constant">&quot;ff 1/subop/decrement&quot;</span>/imm32/subx-name
-<span id="L7171" class="LineNr"> 7171 </span>    3/imm32/rm32-is-first-output
-<span id="L7172" class="LineNr"> 7172 </span>    0/imm32/no-r32
-<span id="L7173" class="LineNr"> 7173 </span>    0/imm32/no-imm32
-<span id="L7174" class="LineNr"> 7174 </span>    0/imm32/no-disp32
-<span id="L7175" class="LineNr"> 7175 </span>    0/imm32/output-is-write-only
-<span id="L7176" class="LineNr"> 7176 </span>    <a href='mu.subx.html#L7178'>_Primitive-add-to-eax</a>/imm32/next
-<span id="L7177" class="LineNr"> 7177 </span><span class="subxH1Comment"># - add</span>
-<span id="L7178" class="LineNr"> 7178 </span><span class="subxMinorFunction">_Primitive-add-to-eax</span>:
-<span id="L7179" class="LineNr"> 7179 </span>    <span class="subxComment"># var/eax &lt;- add lit =&gt; 05/add-to-eax lit/imm32</span>
-<span id="L7180" class="LineNr"> 7180 </span>    <span class="Constant">&quot;add&quot;</span>/imm32/name
-<span id="L7181" class="LineNr"> 7181 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7182" class="LineNr"> 7182 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8278'>Single-int-var-in-eax</a></span>/imm32/outputs
-<span id="L7183" class="LineNr"> 7183 </span>    <span class="Constant">&quot;05/add-to-eax&quot;</span>/imm32/subx-name
-<span id="L7184" class="LineNr"> 7184 </span>    0/imm32/no-rm32
-<span id="L7185" class="LineNr"> 7185 </span>    0/imm32/no-r32
-<span id="L7186" class="LineNr"> 7186 </span>    1/imm32/imm32-is-first-inout
-<span id="L7187" class="LineNr"> 7187 </span>    0/imm32/no-disp32
-<span id="L7188" class="LineNr"> 7188 </span>    0/imm32/output-is-write-only
-<span id="L7189" class="LineNr"> 7189 </span>    <a href='mu.subx.html#L7190'>_Primitive-add-reg-to-reg</a>/imm32/next
-<span id="L7190" class="LineNr"> 7190 </span><span class="subxMinorFunction">_Primitive-add-reg-to-reg</span>:
-<span id="L7191" class="LineNr"> 7191 </span>    <span class="subxComment"># var1/reg &lt;- add var2/reg =&gt; 01/add-to var1/rm32 var2/r32</span>
-<span id="L7192" class="LineNr"> 7192 </span>    <span class="Constant">&quot;add&quot;</span>/imm32/name
-<span id="L7193" class="LineNr"> 7193 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/inouts
-<span id="L7194" class="LineNr"> 7194 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7195" class="LineNr"> 7195 </span>    <span class="Constant">&quot;01/add-to&quot;</span>/imm32/subx-name
-<span id="L7196" class="LineNr"> 7196 </span>    3/imm32/rm32-is-first-output
-<span id="L7197" class="LineNr"> 7197 </span>    1/imm32/r32-is-first-inout
-<span id="L7198" class="LineNr"> 7198 </span>    0/imm32/no-imm32
-<span id="L7199" class="LineNr"> 7199 </span>    0/imm32/no-disp32
-<span id="L7200" class="LineNr"> 7200 </span>    0/imm32/output-is-write-only
-<span id="L7201" class="LineNr"> 7201 </span>    <a href='mu.subx.html#L7202'>_Primitive-add-reg-to-mem</a>/imm32/next
-<span id="L7202" class="LineNr"> 7202 </span><span class="subxMinorFunction">_Primitive-add-reg-to-mem</span>:
-<span id="L7203" class="LineNr"> 7203 </span>    <span class="subxComment"># add-to var1 var2/reg =&gt; 01/add-to var1 var2/r32</span>
-<span id="L7204" class="LineNr"> 7204 </span>    <span class="Constant">&quot;add-to&quot;</span>/imm32/name
-<span id="L7205" class="LineNr"> 7205 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8247'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
-<span id="L7206" class="LineNr"> 7206 </span>    0/imm32/outputs
-<span id="L7207" class="LineNr"> 7207 </span>    <span class="Constant">&quot;01/add-to&quot;</span>/imm32/subx-name
-<span id="L7208" class="LineNr"> 7208 </span>    1/imm32/rm32-is-first-inout
-<span id="L7209" class="LineNr"> 7209 </span>    2/imm32/r32-is-second-inout
-<span id="L7210" class="LineNr"> 7210 </span>    0/imm32/no-imm32
-<span id="L7211" class="LineNr"> 7211 </span>    0/imm32/no-disp32
-<span id="L7212" class="LineNr"> 7212 </span>    0/imm32/output-is-write-only
-<span id="L7213" class="LineNr"> 7213 </span>    <a href='mu.subx.html#L7214'>_Primitive-add-mem-to-reg</a>/imm32/next
-<span id="L7214" class="LineNr"> 7214 </span><span class="subxMinorFunction">_Primitive-add-mem-to-reg</span>:
-<span id="L7215" class="LineNr"> 7215 </span>    <span class="subxComment"># var1/reg &lt;- add var2 =&gt; 03/add var2/rm32 var1/r32</span>
-<span id="L7216" class="LineNr"> 7216 </span>    <span class="Constant">&quot;add&quot;</span>/imm32/name
-<span id="L7217" class="LineNr"> 7217 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Single-int-var-in-mem</a></span>/imm32/inouts
-<span id="L7218" class="LineNr"> 7218 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7219" class="LineNr"> 7219 </span>    <span class="Constant">&quot;03/add&quot;</span>/imm32/subx-name
-<span id="L7220" class="LineNr"> 7220 </span>    1/imm32/rm32-is-first-inout
-<span id="L7221" class="LineNr"> 7221 </span>    3/imm32/r32-is-first-output
-<span id="L7222" class="LineNr"> 7222 </span>    0/imm32/no-imm32
-<span id="L7223" class="LineNr"> 7223 </span>    0/imm32/no-disp32
-<span id="L7224" class="LineNr"> 7224 </span>    0/imm32/output-is-write-only
-<span id="L7225" class="LineNr"> 7225 </span>    <a href='mu.subx.html#L7226'>_Primitive-add-lit-to-reg</a>/imm32/next
-<span id="L7226" class="LineNr"> 7226 </span><span class="subxMinorFunction">_Primitive-add-lit-to-reg</span>:
-<span id="L7227" class="LineNr"> 7227 </span>    <span class="subxComment"># var1/reg &lt;- add lit =&gt; 81 0/subop/add var1/rm32 lit/imm32</span>
-<span id="L7228" class="LineNr"> 7228 </span>    <span class="Constant">&quot;add&quot;</span>/imm32/name
-<span id="L7229" class="LineNr"> 7229 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7230" class="LineNr"> 7230 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7231" class="LineNr"> 7231 </span>    <span class="Constant">&quot;81 0/subop/add&quot;</span>/imm32/subx-name
-<span id="L7232" class="LineNr"> 7232 </span>    3/imm32/rm32-is-first-output
-<span id="L7233" class="LineNr"> 7233 </span>    0/imm32/no-r32
-<span id="L7234" class="LineNr"> 7234 </span>    1/imm32/imm32-is-first-inout
-<span id="L7235" class="LineNr"> 7235 </span>    0/imm32/no-disp32
-<span id="L7236" class="LineNr"> 7236 </span>    0/imm32/output-is-write-only
-<span id="L7237" class="LineNr"> 7237 </span>    <a href='mu.subx.html#L7238'>_Primitive-add-lit-to-mem</a>/imm32/next
-<span id="L7238" class="LineNr"> 7238 </span><span class="subxMinorFunction">_Primitive-add-lit-to-mem</span>:
-<span id="L7239" class="LineNr"> 7239 </span>    <span class="subxComment"># add-to var1, lit =&gt; 81 0/subop/add var1/rm32 lit/imm32</span>
-<span id="L7240" class="LineNr"> 7240 </span>    <span class="Constant">&quot;add-to&quot;</span>/imm32/name
-<span id="L7241" class="LineNr"> 7241 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8259'>Int-var-and-literal</a></span>/imm32/inouts
-<span id="L7242" class="LineNr"> 7242 </span>    0/imm32/outputs
-<span id="L7243" class="LineNr"> 7243 </span>    <span class="Constant">&quot;81 0/subop/add&quot;</span>/imm32/subx-name
-<span id="L7244" class="LineNr"> 7244 </span>    1/imm32/rm32-is-first-inout
-<span id="L7245" class="LineNr"> 7245 </span>    0/imm32/no-r32
-<span id="L7246" class="LineNr"> 7246 </span>    2/imm32/imm32-is-second-inout
-<span id="L7247" class="LineNr"> 7247 </span>    0/imm32/no-disp32
-<span id="L7248" class="LineNr"> 7248 </span>    0/imm32/output-is-write-only
-<span id="L7249" class="LineNr"> 7249 </span>    <a href='mu.subx.html#L7251'>_Primitive-subtract-from-eax</a>/imm32/next
-<span id="L7250" class="LineNr"> 7250 </span><span class="subxH1Comment"># - subtract</span>
-<span id="L7251" class="LineNr"> 7251 </span><span class="subxMinorFunction">_Primitive-subtract-from-eax</span>:
-<span id="L7252" class="LineNr"> 7252 </span>    <span class="subxComment"># var/eax &lt;- subtract lit =&gt; 2d/subtract-from-eax lit/imm32</span>
-<span id="L7253" class="LineNr"> 7253 </span>    <span class="Constant">&quot;subtract&quot;</span>/imm32/name
-<span id="L7254" class="LineNr"> 7254 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7255" class="LineNr"> 7255 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8278'>Single-int-var-in-eax</a></span>/imm32/outputs
-<span id="L7256" class="LineNr"> 7256 </span>    <span class="Constant">&quot;2d/subtract-from-eax&quot;</span>/imm32/subx-name
-<span id="L7257" class="LineNr"> 7257 </span>    0/imm32/no-rm32
-<span id="L7258" class="LineNr"> 7258 </span>    0/imm32/no-r32
-<span id="L7259" class="LineNr"> 7259 </span>    1/imm32/imm32-is-first-inout
-<span id="L7260" class="LineNr"> 7260 </span>    0/imm32/no-disp32
-<span id="L7261" class="LineNr"> 7261 </span>    0/imm32/output-is-write-only
-<span id="L7262" class="LineNr"> 7262 </span>    <a href='mu.subx.html#L7263'>_Primitive-subtract-reg-from-reg</a>/imm32/next
-<span id="L7263" class="LineNr"> 7263 </span><span class="subxMinorFunction">_Primitive-subtract-reg-from-reg</span>:
-<span id="L7264" class="LineNr"> 7264 </span>    <span class="subxComment"># var1/reg &lt;- subtract var2/reg =&gt; 29/subtract-from var1/rm32 var2/r32</span>
-<span id="L7265" class="LineNr"> 7265 </span>    <span class="Constant">&quot;subtract&quot;</span>/imm32/name
-<span id="L7266" class="LineNr"> 7266 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/inouts
-<span id="L7267" class="LineNr"> 7267 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7268" class="LineNr"> 7268 </span>    <span class="Constant">&quot;29/subtract-from&quot;</span>/imm32/subx-name
-<span id="L7269" class="LineNr"> 7269 </span>    3/imm32/rm32-is-first-output
-<span id="L7270" class="LineNr"> 7270 </span>    1/imm32/r32-is-first-inout
-<span id="L7271" class="LineNr"> 7271 </span>    0/imm32/no-imm32
-<span id="L7272" class="LineNr"> 7272 </span>    0/imm32/no-disp32
-<span id="L7273" class="LineNr"> 7273 </span>    0/imm32/output-is-write-only
-<span id="L7274" class="LineNr"> 7274 </span>    <a href='mu.subx.html#L7275'>_Primitive-subtract-reg-from-mem</a>/imm32/next
-<span id="L7275" class="LineNr"> 7275 </span><span class="subxMinorFunction">_Primitive-subtract-reg-from-mem</span>:
-<span id="L7276" class="LineNr"> 7276 </span>    <span class="subxComment"># subtract-from var1 var2/reg =&gt; 29/subtract-from var1 var2/r32</span>
-<span id="L7277" class="LineNr"> 7277 </span>    <span class="Constant">&quot;subtract-from&quot;</span>/imm32/name
-<span id="L7278" class="LineNr"> 7278 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8247'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
-<span id="L7279" class="LineNr"> 7279 </span>    0/imm32/outputs
-<span id="L7280" class="LineNr"> 7280 </span>    <span class="Constant">&quot;29/subtract-from&quot;</span>/imm32/subx-name
-<span id="L7281" class="LineNr"> 7281 </span>    1/imm32/rm32-is-first-inout
-<span id="L7282" class="LineNr"> 7282 </span>    2/imm32/r32-is-second-inout
-<span id="L7283" class="LineNr"> 7283 </span>    0/imm32/no-imm32
-<span id="L7284" class="LineNr"> 7284 </span>    0/imm32/no-disp32
-<span id="L7285" class="LineNr"> 7285 </span>    0/imm32/output-is-write-only
-<span id="L7286" class="LineNr"> 7286 </span>    <a href='mu.subx.html#L7287'>_Primitive-subtract-mem-from-reg</a>/imm32/next
-<span id="L7287" class="LineNr"> 7287 </span><span class="subxMinorFunction">_Primitive-subtract-mem-from-reg</span>:
-<span id="L7288" class="LineNr"> 7288 </span>    <span class="subxComment"># var1/reg &lt;- subtract var2 =&gt; 2b/subtract var2/rm32 var1/r32</span>
-<span id="L7289" class="LineNr"> 7289 </span>    <span class="Constant">&quot;subtract&quot;</span>/imm32/name
-<span id="L7290" class="LineNr"> 7290 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Single-int-var-in-mem</a></span>/imm32/inouts
-<span id="L7291" class="LineNr"> 7291 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7292" class="LineNr"> 7292 </span>    <span class="Constant">&quot;2b/subtract&quot;</span>/imm32/subx-name
-<span id="L7293" class="LineNr"> 7293 </span>    1/imm32/rm32-is-first-inout
-<span id="L7294" class="LineNr"> 7294 </span>    3/imm32/r32-is-first-output
-<span id="L7295" class="LineNr"> 7295 </span>    0/imm32/no-imm32
-<span id="L7296" class="LineNr"> 7296 </span>    0/imm32/no-disp32
-<span id="L7297" class="LineNr"> 7297 </span>    0/imm32/output-is-write-only
-<span id="L7298" class="LineNr"> 7298 </span>    <a href='mu.subx.html#L7299'>_Primitive-subtract-lit-from-reg</a>/imm32/next
-<span id="L7299" class="LineNr"> 7299 </span><span class="subxMinorFunction">_Primitive-subtract-lit-from-reg</span>:
-<span id="L7300" class="LineNr"> 7300 </span>    <span class="subxComment"># var1/reg &lt;- subtract lit =&gt; 81 5/subop/subtract var1/rm32 lit/imm32</span>
-<span id="L7301" class="LineNr"> 7301 </span>    <span class="Constant">&quot;subtract&quot;</span>/imm32/name
-<span id="L7302" class="LineNr"> 7302 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7303" class="LineNr"> 7303 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7304" class="LineNr"> 7304 </span>    <span class="Constant">&quot;81 5/subop/subtract&quot;</span>/imm32/subx-name
-<span id="L7305" class="LineNr"> 7305 </span>    3/imm32/rm32-is-first-output
-<span id="L7306" class="LineNr"> 7306 </span>    0/imm32/no-r32
-<span id="L7307" class="LineNr"> 7307 </span>    1/imm32/imm32-is-first-inout
-<span id="L7308" class="LineNr"> 7308 </span>    0/imm32/no-disp32
-<span id="L7309" class="LineNr"> 7309 </span>    0/imm32/output-is-write-only
-<span id="L7310" class="LineNr"> 7310 </span>    <a href='mu.subx.html#L7311'>_Primitive-subtract-lit-from-mem</a>/imm32/next
-<span id="L7311" class="LineNr"> 7311 </span><span class="subxMinorFunction">_Primitive-subtract-lit-from-mem</span>:
-<span id="L7312" class="LineNr"> 7312 </span>    <span class="subxComment"># subtract-from var1, lit =&gt; 81 5/subop/subtract var1/rm32 lit/imm32</span>
-<span id="L7313" class="LineNr"> 7313 </span>    <span class="Constant">&quot;subtract-from&quot;</span>/imm32/name
-<span id="L7314" class="LineNr"> 7314 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8259'>Int-var-and-literal</a></span>/imm32/inouts
-<span id="L7315" class="LineNr"> 7315 </span>    0/imm32/outputs
-<span id="L7316" class="LineNr"> 7316 </span>    <span class="Constant">&quot;81 5/subop/subtract&quot;</span>/imm32/subx-name
-<span id="L7317" class="LineNr"> 7317 </span>    1/imm32/rm32-is-first-inout
-<span id="L7318" class="LineNr"> 7318 </span>    0/imm32/no-r32
-<span id="L7319" class="LineNr"> 7319 </span>    2/imm32/imm32-is-first-inout
-<span id="L7320" class="LineNr"> 7320 </span>    0/imm32/no-disp32
-<span id="L7321" class="LineNr"> 7321 </span>    0/imm32/output-is-write-only
-<span id="L7322" class="LineNr"> 7322 </span>    <a href='mu.subx.html#L7324'>_Primitive-and-with-eax</a>/imm32/next
-<span id="L7323" class="LineNr"> 7323 </span><span class="subxH1Comment"># - and</span>
-<span id="L7324" class="LineNr"> 7324 </span><span class="subxMinorFunction">_Primitive-and-with-eax</span>:
-<span id="L7325" class="LineNr"> 7325 </span>    <span class="subxComment"># var/eax &lt;- and lit =&gt; 25/and-with-eax lit/imm32</span>
-<span id="L7326" class="LineNr"> 7326 </span>    <span class="Constant">&quot;and&quot;</span>/imm32/name
-<span id="L7327" class="LineNr"> 7327 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7328" class="LineNr"> 7328 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8278'>Single-int-var-in-eax</a></span>/imm32/outputs
-<span id="L7329" class="LineNr"> 7329 </span>    <span class="Constant">&quot;25/and-with-eax&quot;</span>/imm32/subx-name
-<span id="L7330" class="LineNr"> 7330 </span>    0/imm32/no-rm32
-<span id="L7331" class="LineNr"> 7331 </span>    0/imm32/no-r32
-<span id="L7332" class="LineNr"> 7332 </span>    1/imm32/imm32-is-first-inout
-<span id="L7333" class="LineNr"> 7333 </span>    0/imm32/no-disp32
-<span id="L7334" class="LineNr"> 7334 </span>    0/imm32/output-is-write-only
-<span id="L7335" class="LineNr"> 7335 </span>    <a href='mu.subx.html#L7336'>_Primitive-and-reg-with-reg</a>/imm32/next
-<span id="L7336" class="LineNr"> 7336 </span><span class="subxMinorFunction">_Primitive-and-reg-with-reg</span>:
-<span id="L7337" class="LineNr"> 7337 </span>    <span class="subxComment"># var1/reg &lt;- and var2/reg =&gt; 21/and-with var1/rm32 var2/r32</span>
-<span id="L7338" class="LineNr"> 7338 </span>    <span class="Constant">&quot;and&quot;</span>/imm32/name
-<span id="L7339" class="LineNr"> 7339 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/inouts
-<span id="L7340" class="LineNr"> 7340 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7341" class="LineNr"> 7341 </span>    <span class="Constant">&quot;21/and-with&quot;</span>/imm32/subx-name
-<span id="L7342" class="LineNr"> 7342 </span>    3/imm32/rm32-is-first-output
-<span id="L7343" class="LineNr"> 7343 </span>    1/imm32/r32-is-first-inout
-<span id="L7344" class="LineNr"> 7344 </span>    0/imm32/no-imm32
-<span id="L7345" class="LineNr"> 7345 </span>    0/imm32/no-disp32
-<span id="L7346" class="LineNr"> 7346 </span>    0/imm32/output-is-write-only
-<span id="L7347" class="LineNr"> 7347 </span>    <a href='mu.subx.html#L7348'>_Primitive-and-reg-with-mem</a>/imm32/next
-<span id="L7348" class="LineNr"> 7348 </span><span class="subxMinorFunction">_Primitive-and-reg-with-mem</span>:
-<span id="L7349" class="LineNr"> 7349 </span>    <span class="subxComment"># and-with var1 var2/reg =&gt; 21/and-with var1 var2/r32</span>
-<span id="L7350" class="LineNr"> 7350 </span>    <span class="Constant">&quot;and-with&quot;</span>/imm32/name
-<span id="L7351" class="LineNr"> 7351 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8247'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
-<span id="L7352" class="LineNr"> 7352 </span>    0/imm32/outputs
-<span id="L7353" class="LineNr"> 7353 </span>    <span class="Constant">&quot;21/and-with&quot;</span>/imm32/subx-name
-<span id="L7354" class="LineNr"> 7354 </span>    1/imm32/rm32-is-first-inout
-<span id="L7355" class="LineNr"> 7355 </span>    2/imm32/r32-is-second-inout
-<span id="L7356" class="LineNr"> 7356 </span>    0/imm32/no-imm32
-<span id="L7357" class="LineNr"> 7357 </span>    0/imm32/no-disp32
-<span id="L7358" class="LineNr"> 7358 </span>    0/imm32/output-is-write-only
-<span id="L7359" class="LineNr"> 7359 </span>    <a href='mu.subx.html#L7360'>_Primitive-and-mem-with-reg</a>/imm32/next
-<span id="L7360" class="LineNr"> 7360 </span><span class="subxMinorFunction">_Primitive-and-mem-with-reg</span>:
-<span id="L7361" class="LineNr"> 7361 </span>    <span class="subxComment"># var1/reg &lt;- and var2 =&gt; 23/and var2/rm32 var1/r32</span>
-<span id="L7362" class="LineNr"> 7362 </span>    <span class="Constant">&quot;and&quot;</span>/imm32/name
-<span id="L7363" class="LineNr"> 7363 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Single-int-var-in-mem</a></span>/imm32/inouts
-<span id="L7364" class="LineNr"> 7364 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7365" class="LineNr"> 7365 </span>    <span class="Constant">&quot;23/and&quot;</span>/imm32/subx-name
-<span id="L7366" class="LineNr"> 7366 </span>    1/imm32/rm32-is-first-inout
-<span id="L7367" class="LineNr"> 7367 </span>    3/imm32/r32-is-first-output
-<span id="L7368" class="LineNr"> 7368 </span>    0/imm32/no-imm32
-<span id="L7369" class="LineNr"> 7369 </span>    0/imm32/no-disp32
-<span id="L7370" class="LineNr"> 7370 </span>    0/imm32/output-is-write-only
-<span id="L7371" class="LineNr"> 7371 </span>    <a href='mu.subx.html#L7372'>_Primitive-and-lit-with-reg</a>/imm32/next
-<span id="L7372" class="LineNr"> 7372 </span><span class="subxMinorFunction">_Primitive-and-lit-with-reg</span>:
-<span id="L7373" class="LineNr"> 7373 </span>    <span class="subxComment"># var1/reg &lt;- and lit =&gt; 81 4/subop/and var1/rm32 lit/imm32</span>
-<span id="L7374" class="LineNr"> 7374 </span>    <span class="Constant">&quot;and&quot;</span>/imm32/name
-<span id="L7375" class="LineNr"> 7375 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7376" class="LineNr"> 7376 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7377" class="LineNr"> 7377 </span>    <span class="Constant">&quot;81 4/subop/and&quot;</span>/imm32/subx-name
-<span id="L7378" class="LineNr"> 7378 </span>    3/imm32/rm32-is-first-output
-<span id="L7379" class="LineNr"> 7379 </span>    0/imm32/no-r32
-<span id="L7380" class="LineNr"> 7380 </span>    1/imm32/imm32-is-first-inout
-<span id="L7381" class="LineNr"> 7381 </span>    0/imm32/no-disp32
-<span id="L7382" class="LineNr"> 7382 </span>    0/imm32/output-is-write-only
-<span id="L7383" class="LineNr"> 7383 </span>    <a href='mu.subx.html#L7384'>_Primitive-and-lit-with-mem</a>/imm32/next
-<span id="L7384" class="LineNr"> 7384 </span><span class="subxMinorFunction">_Primitive-and-lit-with-mem</span>:
-<span id="L7385" class="LineNr"> 7385 </span>    <span class="subxComment"># and-with var1, lit =&gt; 81 4/subop/and var1/rm32 lit/imm32</span>
-<span id="L7386" class="LineNr"> 7386 </span>    <span class="Constant">&quot;and-with&quot;</span>/imm32/name
-<span id="L7387" class="LineNr"> 7387 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8259'>Int-var-and-literal</a></span>/imm32/inouts
-<span id="L7388" class="LineNr"> 7388 </span>    0/imm32/outputs
-<span id="L7389" class="LineNr"> 7389 </span>    <span class="Constant">&quot;81 4/subop/and&quot;</span>/imm32/subx-name
-<span id="L7390" class="LineNr"> 7390 </span>    1/imm32/rm32-is-first-inout
-<span id="L7391" class="LineNr"> 7391 </span>    0/imm32/no-r32
-<span id="L7392" class="LineNr"> 7392 </span>    2/imm32/imm32-is-first-inout
-<span id="L7393" class="LineNr"> 7393 </span>    0/imm32/no-disp32
-<span id="L7394" class="LineNr"> 7394 </span>    0/imm32/output-is-write-only
-<span id="L7395" class="LineNr"> 7395 </span>    <a href='mu.subx.html#L7397'>_Primitive-or-with-eax</a>/imm32/next
-<span id="L7396" class="LineNr"> 7396 </span><span class="subxH1Comment"># - or</span>
-<span id="L7397" class="LineNr"> 7397 </span><span class="subxMinorFunction">_Primitive-or-with-eax</span>:
-<span id="L7398" class="LineNr"> 7398 </span>    <span class="subxComment"># var/eax &lt;- or lit =&gt; 0d/or-with-eax lit/imm32</span>
-<span id="L7399" class="LineNr"> 7399 </span>    <span class="Constant">&quot;or&quot;</span>/imm32/name
-<span id="L7400" class="LineNr"> 7400 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7401" class="LineNr"> 7401 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8278'>Single-int-var-in-eax</a></span>/imm32/outputs
-<span id="L7402" class="LineNr"> 7402 </span>    <span class="Constant">&quot;0d/or-with-eax&quot;</span>/imm32/subx-name
-<span id="L7403" class="LineNr"> 7403 </span>    0/imm32/no-rm32
-<span id="L7404" class="LineNr"> 7404 </span>    0/imm32/no-r32
-<span id="L7405" class="LineNr"> 7405 </span>    1/imm32/imm32-is-first-inout
-<span id="L7406" class="LineNr"> 7406 </span>    0/imm32/no-disp32
-<span id="L7407" class="LineNr"> 7407 </span>    0/imm32/output-is-write-only
-<span id="L7408" class="LineNr"> 7408 </span>    <a href='mu.subx.html#L7409'>_Primitive-or-reg-with-reg</a>/imm32/next
-<span id="L7409" class="LineNr"> 7409 </span><span class="subxMinorFunction">_Primitive-or-reg-with-reg</span>:
-<span id="L7410" class="LineNr"> 7410 </span>    <span class="subxComment"># var1/reg &lt;- or var2/reg =&gt; 09/or-with var1/rm32 var2/r32</span>
-<span id="L7411" class="LineNr"> 7411 </span>    <span class="Constant">&quot;or&quot;</span>/imm32/name
-<span id="L7412" class="LineNr"> 7412 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/inouts
-<span id="L7413" class="LineNr"> 7413 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7414" class="LineNr"> 7414 </span>    <span class="Constant">&quot;09/or-with&quot;</span>/imm32/subx-name
-<span id="L7415" class="LineNr"> 7415 </span>    3/imm32/rm32-is-first-output
-<span id="L7416" class="LineNr"> 7416 </span>    1/imm32/r32-is-first-inout
-<span id="L7417" class="LineNr"> 7417 </span>    0/imm32/no-imm32
-<span id="L7418" class="LineNr"> 7418 </span>    0/imm32/no-disp32
-<span id="L7419" class="LineNr"> 7419 </span>    0/imm32/output-is-write-only
-<span id="L7420" class="LineNr"> 7420 </span>    <a href='mu.subx.html#L7421'>_Primitive-or-reg-with-mem</a>/imm32/next
-<span id="L7421" class="LineNr"> 7421 </span><span class="subxMinorFunction">_Primitive-or-reg-with-mem</span>:
-<span id="L7422" class="LineNr"> 7422 </span>    <span class="subxComment"># or-with var1 var2/reg =&gt; 09/or-with var1 var2/r32</span>
-<span id="L7423" class="LineNr"> 7423 </span>    <span class="Constant">&quot;or-with&quot;</span>/imm32/name
-<span id="L7424" class="LineNr"> 7424 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8247'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
-<span id="L7425" class="LineNr"> 7425 </span>    0/imm32/outputs
-<span id="L7426" class="LineNr"> 7426 </span>    <span class="Constant">&quot;09/or-with&quot;</span>/imm32/subx-name
-<span id="L7427" class="LineNr"> 7427 </span>    1/imm32/rm32-is-first-inout
-<span id="L7428" class="LineNr"> 7428 </span>    2/imm32/r32-is-second-inout
-<span id="L7429" class="LineNr"> 7429 </span>    0/imm32/no-imm32
-<span id="L7430" class="LineNr"> 7430 </span>    0/imm32/no-disp32
-<span id="L7431" class="LineNr"> 7431 </span>    0/imm32/output-is-write-only
-<span id="L7432" class="LineNr"> 7432 </span>    <a href='mu.subx.html#L7433'>_Primitive-or-mem-with-reg</a>/imm32/next
-<span id="L7433" class="LineNr"> 7433 </span><span class="subxMinorFunction">_Primitive-or-mem-with-reg</span>:
-<span id="L7434" class="LineNr"> 7434 </span>    <span class="subxComment"># var1/reg &lt;- or var2 =&gt; 0b/or var2/rm32 var1/r32</span>
-<span id="L7435" class="LineNr"> 7435 </span>    <span class="Constant">&quot;or&quot;</span>/imm32/name
-<span id="L7436" class="LineNr"> 7436 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Single-int-var-in-mem</a></span>/imm32/inouts
-<span id="L7437" class="LineNr"> 7437 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7438" class="LineNr"> 7438 </span>    <span class="Constant">&quot;0b/or&quot;</span>/imm32/subx-name
-<span id="L7439" class="LineNr"> 7439 </span>    1/imm32/rm32-is-first-inout
-<span id="L7440" class="LineNr"> 7440 </span>    3/imm32/r32-is-first-output
-<span id="L7441" class="LineNr"> 7441 </span>    0/imm32/no-imm32
-<span id="L7442" class="LineNr"> 7442 </span>    0/imm32/no-disp32
-<span id="L7443" class="LineNr"> 7443 </span>    0/imm32/output-is-write-only
-<span id="L7444" class="LineNr"> 7444 </span>    <a href='mu.subx.html#L7445'>_Primitive-or-lit-with-reg</a>/imm32/next
-<span id="L7445" class="LineNr"> 7445 </span><span class="subxMinorFunction">_Primitive-or-lit-with-reg</span>:
-<span id="L7446" class="LineNr"> 7446 </span>    <span class="subxComment"># var1/reg &lt;- or lit =&gt; 81 1/subop/or var1/rm32 lit/imm32</span>
-<span id="L7447" class="LineNr"> 7447 </span>    <span class="Constant">&quot;or&quot;</span>/imm32/name
-<span id="L7448" class="LineNr"> 7448 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7449" class="LineNr"> 7449 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7450" class="LineNr"> 7450 </span>    <span class="Constant">&quot;81 1/subop/or&quot;</span>/imm32/subx-name
-<span id="L7451" class="LineNr"> 7451 </span>    3/imm32/rm32-is-first-output
-<span id="L7452" class="LineNr"> 7452 </span>    0/imm32/no-r32
-<span id="L7453" class="LineNr"> 7453 </span>    1/imm32/imm32-is-first-inout
-<span id="L7454" class="LineNr"> 7454 </span>    0/imm32/no-disp32
-<span id="L7455" class="LineNr"> 7455 </span>    0/imm32/output-is-write-only
-<span id="L7456" class="LineNr"> 7456 </span>    <a href='mu.subx.html#L7457'>_Primitive-or-lit-with-mem</a>/imm32/next
-<span id="L7457" class="LineNr"> 7457 </span><span class="subxMinorFunction">_Primitive-or-lit-with-mem</span>:
-<span id="L7458" class="LineNr"> 7458 </span>    <span class="subxComment"># or-with var1, lit =&gt; 81 1/subop/or var1/rm32 lit/imm32</span>
-<span id="L7459" class="LineNr"> 7459 </span>    <span class="Constant">&quot;or-with&quot;</span>/imm32/name
-<span id="L7460" class="LineNr"> 7460 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8259'>Int-var-and-literal</a></span>/imm32/inouts
-<span id="L7461" class="LineNr"> 7461 </span>    0/imm32/outputs
-<span id="L7462" class="LineNr"> 7462 </span>    <span class="Constant">&quot;81 1/subop/or&quot;</span>/imm32/subx-name
-<span id="L7463" class="LineNr"> 7463 </span>    1/imm32/rm32-is-first-inout
-<span id="L7464" class="LineNr"> 7464 </span>    0/imm32/no-r32
-<span id="L7465" class="LineNr"> 7465 </span>    2/imm32/imm32-is-second-inout
-<span id="L7466" class="LineNr"> 7466 </span>    0/imm32/no-disp32
-<span id="L7467" class="LineNr"> 7467 </span>    0/imm32/output-is-write-only
-<span id="L7468" class="LineNr"> 7468 </span>    <a href='mu.subx.html#L7470'>_Primitive-xor-with-eax</a>/imm32/next
-<span id="L7469" class="LineNr"> 7469 </span><span class="subxH1Comment"># - xor</span>
-<span id="L7470" class="LineNr"> 7470 </span><span class="subxMinorFunction">_Primitive-xor-with-eax</span>:
-<span id="L7471" class="LineNr"> 7471 </span>    <span class="subxComment"># var/eax &lt;- xor lit =&gt; 35/xor-with-eax lit/imm32</span>
-<span id="L7472" class="LineNr"> 7472 </span>    <span class="Constant">&quot;xor&quot;</span>/imm32/name
-<span id="L7473" class="LineNr"> 7473 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7474" class="LineNr"> 7474 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8278'>Single-int-var-in-eax</a></span>/imm32/outputs
-<span id="L7475" class="LineNr"> 7475 </span>    <span class="Constant">&quot;35/xor-with-eax&quot;</span>/imm32/subx-name
-<span id="L7476" class="LineNr"> 7476 </span>    0/imm32/no-rm32
-<span id="L7477" class="LineNr"> 7477 </span>    0/imm32/no-r32
-<span id="L7478" class="LineNr"> 7478 </span>    1/imm32/imm32-is-first-inout
-<span id="L7479" class="LineNr"> 7479 </span>    0/imm32/no-disp32
-<span id="L7480" class="LineNr"> 7480 </span>    0/imm32/output-is-write-only
-<span id="L7481" class="LineNr"> 7481 </span>    <a href='mu.subx.html#L7482'>_Primitive-xor-reg-with-reg</a>/imm32/next
-<span id="L7482" class="LineNr"> 7482 </span><span class="subxMinorFunction">_Primitive-xor-reg-with-reg</span>:
-<span id="L7483" class="LineNr"> 7483 </span>    <span class="subxComment"># var1/reg &lt;- xor var2/reg =&gt; 31/xor-with var1/rm32 var2/r32</span>
-<span id="L7484" class="LineNr"> 7484 </span>    <span class="Constant">&quot;xor&quot;</span>/imm32/name
-<span id="L7485" class="LineNr"> 7485 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/inouts
-<span id="L7486" class="LineNr"> 7486 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7487" class="LineNr"> 7487 </span>    <span class="Constant">&quot;31/xor-with&quot;</span>/imm32/subx-name
-<span id="L7488" class="LineNr"> 7488 </span>    3/imm32/rm32-is-first-output
-<span id="L7489" class="LineNr"> 7489 </span>    1/imm32/r32-is-first-inout
-<span id="L7490" class="LineNr"> 7490 </span>    0/imm32/no-imm32
-<span id="L7491" class="LineNr"> 7491 </span>    0/imm32/no-disp32
-<span id="L7492" class="LineNr"> 7492 </span>    0/imm32/output-is-write-only
-<span id="L7493" class="LineNr"> 7493 </span>    <a href='mu.subx.html#L7494'>_Primitive-xor-reg-with-mem</a>/imm32/next
-<span id="L7494" class="LineNr"> 7494 </span><span class="subxMinorFunction">_Primitive-xor-reg-with-mem</span>:
-<span id="L7495" class="LineNr"> 7495 </span>    <span class="subxComment"># xor-with var1 var2/reg =&gt; 31/xor-with var1 var2/r32</span>
-<span id="L7496" class="LineNr"> 7496 </span>    <span class="Constant">&quot;xor-with&quot;</span>/imm32/name
-<span id="L7497" class="LineNr"> 7497 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8247'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
-<span id="L7498" class="LineNr"> 7498 </span>    0/imm32/outputs
-<span id="L7499" class="LineNr"> 7499 </span>    <span class="Constant">&quot;31/xor-with&quot;</span>/imm32/subx-name
-<span id="L7500" class="LineNr"> 7500 </span>    1/imm32/rm32-is-first-inout
-<span id="L7501" class="LineNr"> 7501 </span>    2/imm32/r32-is-second-inout
-<span id="L7502" class="LineNr"> 7502 </span>    0/imm32/no-imm32
-<span id="L7503" class="LineNr"> 7503 </span>    0/imm32/no-disp32
-<span id="L7504" class="LineNr"> 7504 </span>    0/imm32/output-is-write-only
-<span id="L7505" class="LineNr"> 7505 </span>    <a href='mu.subx.html#L7506'>_Primitive-xor-mem-with-reg</a>/imm32/next
-<span id="L7506" class="LineNr"> 7506 </span><span class="subxMinorFunction">_Primitive-xor-mem-with-reg</span>:
-<span id="L7507" class="LineNr"> 7507 </span>    <span class="subxComment"># var1/reg &lt;- xor var2 =&gt; 33/xor var2/rm32 var1/r32</span>
-<span id="L7508" class="LineNr"> 7508 </span>    <span class="Constant">&quot;xor&quot;</span>/imm32/name
-<span id="L7509" class="LineNr"> 7509 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Single-int-var-in-mem</a></span>/imm32/inouts
-<span id="L7510" class="LineNr"> 7510 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7511" class="LineNr"> 7511 </span>    <span class="Constant">&quot;33/xor&quot;</span>/imm32/subx-name
-<span id="L7512" class="LineNr"> 7512 </span>    1/imm32/rm32-is-first-inout
-<span id="L7513" class="LineNr"> 7513 </span>    3/imm32/r32-is-first-output
-<span id="L7514" class="LineNr"> 7514 </span>    0/imm32/no-imm32
-<span id="L7515" class="LineNr"> 7515 </span>    0/imm32/no-disp32
-<span id="L7516" class="LineNr"> 7516 </span>    0/imm32/output-is-write-only
-<span id="L7517" class="LineNr"> 7517 </span>    <a href='mu.subx.html#L7518'>_Primitive-xor-lit-with-reg</a>/imm32/next
-<span id="L7518" class="LineNr"> 7518 </span><span class="subxMinorFunction">_Primitive-xor-lit-with-reg</span>:
-<span id="L7519" class="LineNr"> 7519 </span>    <span class="subxComment"># var1/reg &lt;- xor lit =&gt; 81 6/subop/xor var1/rm32 lit/imm32</span>
-<span id="L7520" class="LineNr"> 7520 </span>    <span class="Constant">&quot;xor&quot;</span>/imm32/name
-<span id="L7521" class="LineNr"> 7521 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7522" class="LineNr"> 7522 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7523" class="LineNr"> 7523 </span>    <span class="Constant">&quot;81 6/subop/xor&quot;</span>/imm32/subx-name
-<span id="L7524" class="LineNr"> 7524 </span>    3/imm32/rm32-is-first-output
-<span id="L7525" class="LineNr"> 7525 </span>    0/imm32/no-r32
-<span id="L7526" class="LineNr"> 7526 </span>    1/imm32/imm32-is-first-inout
-<span id="L7527" class="LineNr"> 7527 </span>    0/imm32/no-disp32
-<span id="L7528" class="LineNr"> 7528 </span>    0/imm32/output-is-write-only
-<span id="L7529" class="LineNr"> 7529 </span>    <a href='mu.subx.html#L7530'>_Primitive-xor-lit-with-mem</a>/imm32/next
-<span id="L7530" class="LineNr"> 7530 </span><span class="subxMinorFunction">_Primitive-xor-lit-with-mem</span>:
-<span id="L7531" class="LineNr"> 7531 </span>    <span class="subxComment"># xor-with var1, lit =&gt; 81 6/subop/xor var1/rm32 lit/imm32</span>
-<span id="L7532" class="LineNr"> 7532 </span>    <span class="Constant">&quot;xor-with&quot;</span>/imm32/name
-<span id="L7533" class="LineNr"> 7533 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8259'>Int-var-and-literal</a></span>/imm32/inouts
-<span id="L7534" class="LineNr"> 7534 </span>    0/imm32/outputs
-<span id="L7535" class="LineNr"> 7535 </span>    <span class="Constant">&quot;81 6/subop/xor&quot;</span>/imm32/subx-name
-<span id="L7536" class="LineNr"> 7536 </span>    1/imm32/rm32-is-first-inout
-<span id="L7537" class="LineNr"> 7537 </span>    0/imm32/no-r32
-<span id="L7538" class="LineNr"> 7538 </span>    2/imm32/imm32-is-first-inout
-<span id="L7539" class="LineNr"> 7539 </span>    0/imm32/no-disp32
-<span id="L7540" class="LineNr"> 7540 </span>    0/imm32/output-is-write-only
-<span id="L7541" class="LineNr"> 7541 </span>    <a href='mu.subx.html#L7543'>_Primitive-copy-to-eax</a>/imm32/next
-<span id="L7542" class="LineNr"> 7542 </span><span class="subxH1Comment"># - copy</span>
-<span id="L7543" class="LineNr"> 7543 </span><span class="subxMinorFunction">_Primitive-copy-to-eax</span>:
-<span id="L7544" class="LineNr"> 7544 </span>    <span class="subxComment"># var/eax &lt;- copy lit =&gt; b8/copy-to-eax lit/imm32</span>
-<span id="L7545" class="LineNr"> 7545 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
-<span id="L7546" class="LineNr"> 7546 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7547" class="LineNr"> 7547 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8278'>Single-int-var-in-eax</a></span>/imm32/outputs
-<span id="L7548" class="LineNr"> 7548 </span>    <span class="Constant">&quot;b8/copy-to-eax&quot;</span>/imm32/subx-name
-<span id="L7549" class="LineNr"> 7549 </span>    0/imm32/no-rm32
-<span id="L7550" class="LineNr"> 7550 </span>    0/imm32/no-r32
-<span id="L7551" class="LineNr"> 7551 </span>    1/imm32/imm32-is-first-inout
-<span id="L7552" class="LineNr"> 7552 </span>    0/imm32/no-disp32
-<span id="L7553" class="LineNr"> 7553 </span>    1/imm32/output-is-write-only
-<span id="L7554" class="LineNr"> 7554 </span>    <a href='mu.subx.html#L7555'>_Primitive-copy-to-ecx</a>/imm32/next
-<span id="L7555" class="LineNr"> 7555 </span><span class="subxMinorFunction">_Primitive-copy-to-ecx</span>:
-<span id="L7556" class="LineNr"> 7556 </span>    <span class="subxComment"># var/ecx &lt;- copy lit =&gt; b9/copy-to-ecx lit/imm32</span>
-<span id="L7557" class="LineNr"> 7557 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
-<span id="L7558" class="LineNr"> 7558 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7559" class="LineNr"> 7559 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8289'>Single-int-var-in-ecx</a></span>/imm32/outputs
-<span id="L7560" class="LineNr"> 7560 </span>    <span class="Constant">&quot;b9/copy-to-ecx&quot;</span>/imm32/subx-name
-<span id="L7561" class="LineNr"> 7561 </span>    0/imm32/no-rm32
-<span id="L7562" class="LineNr"> 7562 </span>    0/imm32/no-r32
-<span id="L7563" class="LineNr"> 7563 </span>    1/imm32/imm32-is-first-inout
-<span id="L7564" class="LineNr"> 7564 </span>    0/imm32/no-disp32
-<span id="L7565" class="LineNr"> 7565 </span>    1/imm32/output-is-write-only
-<span id="L7566" class="LineNr"> 7566 </span>    <a href='mu.subx.html#L7567'>_Primitive-copy-to-edx</a>/imm32/next
-<span id="L7567" class="LineNr"> 7567 </span><span class="subxMinorFunction">_Primitive-copy-to-edx</span>:
-<span id="L7568" class="LineNr"> 7568 </span>    <span class="subxComment"># var/edx &lt;- copy lit =&gt; ba/copy-to-edx lit/imm32</span>
-<span id="L7569" class="LineNr"> 7569 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
-<span id="L7570" class="LineNr"> 7570 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7571" class="LineNr"> 7571 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8300'>Single-int-var-in-edx</a></span>/imm32/outputs
-<span id="L7572" class="LineNr"> 7572 </span>    <span class="Constant">&quot;ba/copy-to-edx&quot;</span>/imm32/subx-name
-<span id="L7573" class="LineNr"> 7573 </span>    0/imm32/no-rm32
-<span id="L7574" class="LineNr"> 7574 </span>    0/imm32/no-r32
-<span id="L7575" class="LineNr"> 7575 </span>    1/imm32/imm32-is-first-inout
-<span id="L7576" class="LineNr"> 7576 </span>    0/imm32/no-disp32
-<span id="L7577" class="LineNr"> 7577 </span>    1/imm32/output-is-write-only
-<span id="L7578" class="LineNr"> 7578 </span>    <a href='mu.subx.html#L7579'>_Primitive-copy-to-ebx</a>/imm32/next
-<span id="L7579" class="LineNr"> 7579 </span><span class="subxMinorFunction">_Primitive-copy-to-ebx</span>:
-<span id="L7580" class="LineNr"> 7580 </span>    <span class="subxComment"># var/ebx &lt;- copy lit =&gt; bb/copy-to-ebx lit/imm32</span>
-<span id="L7581" class="LineNr"> 7581 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
-<span id="L7582" class="LineNr"> 7582 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7583" class="LineNr"> 7583 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8311'>Single-int-var-in-ebx</a></span>/imm32/outputs
-<span id="L7584" class="LineNr"> 7584 </span>    <span class="Constant">&quot;bb/copy-to-ebx&quot;</span>/imm32/subx-name
-<span id="L7585" class="LineNr"> 7585 </span>    0/imm32/no-rm32
-<span id="L7586" class="LineNr"> 7586 </span>    0/imm32/no-r32
-<span id="L7587" class="LineNr"> 7587 </span>    1/imm32/imm32-is-first-inout
-<span id="L7588" class="LineNr"> 7588 </span>    0/imm32/no-disp32
-<span id="L7589" class="LineNr"> 7589 </span>    1/imm32/output-is-write-only
-<span id="L7590" class="LineNr"> 7590 </span>    <a href='mu.subx.html#L7591'>_Primitive-copy-to-esi</a>/imm32/next
-<span id="L7591" class="LineNr"> 7591 </span><span class="subxMinorFunction">_Primitive-copy-to-esi</span>:
-<span id="L7592" class="LineNr"> 7592 </span>    <span class="subxComment"># var/esi &lt;- copy lit =&gt; be/copy-to-esi lit/imm32</span>
-<span id="L7593" class="LineNr"> 7593 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
-<span id="L7594" class="LineNr"> 7594 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7595" class="LineNr"> 7595 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8322'>Single-int-var-in-esi</a></span>/imm32/outputs
-<span id="L7596" class="LineNr"> 7596 </span>    <span class="Constant">&quot;be/copy-to-esi&quot;</span>/imm32/subx-name
-<span id="L7597" class="LineNr"> 7597 </span>    0/imm32/no-rm32
-<span id="L7598" class="LineNr"> 7598 </span>    0/imm32/no-r32
-<span id="L7599" class="LineNr"> 7599 </span>    1/imm32/imm32-is-first-inout
-<span id="L7600" class="LineNr"> 7600 </span>    0/imm32/no-disp32
-<span id="L7601" class="LineNr"> 7601 </span>    1/imm32/output-is-write-only
-<span id="L7602" class="LineNr"> 7602 </span>    <a href='mu.subx.html#L7603'>_Primitive-copy-to-edi</a>/imm32/next
-<span id="L7603" class="LineNr"> 7603 </span><span class="subxMinorFunction">_Primitive-copy-to-edi</span>:
-<span id="L7604" class="LineNr"> 7604 </span>    <span class="subxComment"># var/edi &lt;- copy lit =&gt; bf/copy-to-edi lit/imm32</span>
-<span id="L7605" class="LineNr"> 7605 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
-<span id="L7606" class="LineNr"> 7606 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7607" class="LineNr"> 7607 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8333'>Single-int-var-in-edi</a></span>/imm32/outputs
-<span id="L7608" class="LineNr"> 7608 </span>    <span class="Constant">&quot;bf/copy-to-edi&quot;</span>/imm32/subx-name
-<span id="L7609" class="LineNr"> 7609 </span>    0/imm32/no-rm32
-<span id="L7610" class="LineNr"> 7610 </span>    0/imm32/no-r32
-<span id="L7611" class="LineNr"> 7611 </span>    1/imm32/imm32-is-first-inout
-<span id="L7612" class="LineNr"> 7612 </span>    0/imm32/no-disp32
-<span id="L7613" class="LineNr"> 7613 </span>    1/imm32/output-is-write-only
-<span id="L7614" class="LineNr"> 7614 </span>    <a href='mu.subx.html#L7615'>_Primitive-copy-reg-to-reg</a>/imm32/next
-<span id="L7615" class="LineNr"> 7615 </span><span class="subxMinorFunction">_Primitive-copy-reg-to-reg</span>:
-<span id="L7616" class="LineNr"> 7616 </span>    <span class="subxComment"># var1/reg &lt;- copy var2/reg =&gt; 89/copy-to var1/rm32 var2/r32</span>
-<span id="L7617" class="LineNr"> 7617 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
-<span id="L7618" class="LineNr"> 7618 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/inouts
-<span id="L7619" class="LineNr"> 7619 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7620" class="LineNr"> 7620 </span>    <span class="Constant">&quot;89/copy-to&quot;</span>/imm32/subx-name
-<span id="L7621" class="LineNr"> 7621 </span>    3/imm32/rm32-is-first-output
-<span id="L7622" class="LineNr"> 7622 </span>    1/imm32/r32-is-first-inout
-<span id="L7623" class="LineNr"> 7623 </span>    0/imm32/no-imm32
-<span id="L7624" class="LineNr"> 7624 </span>    0/imm32/no-disp32
-<span id="L7625" class="LineNr"> 7625 </span>    1/imm32/output-is-write-only
-<span id="L7626" class="LineNr"> 7626 </span>    <a href='mu.subx.html#L7627'>_Primitive-copy-reg-to-mem</a>/imm32/next
-<span id="L7627" class="LineNr"> 7627 </span><span class="subxMinorFunction">_Primitive-copy-reg-to-mem</span>:
-<span id="L7628" class="LineNr"> 7628 </span>    <span class="subxComment"># copy-to var1 var2/reg =&gt; 89/copy-to var1 var2/r32</span>
-<span id="L7629" class="LineNr"> 7629 </span>    <span class="Constant">&quot;copy-to&quot;</span>/imm32/name
-<span id="L7630" class="LineNr"> 7630 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8247'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
-<span id="L7631" class="LineNr"> 7631 </span>    0/imm32/outputs
-<span id="L7632" class="LineNr"> 7632 </span>    <span class="Constant">&quot;89/copy-to&quot;</span>/imm32/subx-name
-<span id="L7633" class="LineNr"> 7633 </span>    1/imm32/rm32-is-first-inout
-<span id="L7634" class="LineNr"> 7634 </span>    2/imm32/r32-is-second-inout
-<span id="L7635" class="LineNr"> 7635 </span>    0/imm32/no-imm32
-<span id="L7636" class="LineNr"> 7636 </span>    0/imm32/no-disp32
-<span id="L7637" class="LineNr"> 7637 </span>    1/imm32/output-is-write-only
-<span id="L7638" class="LineNr"> 7638 </span>    <a href='mu.subx.html#L7639'>_Primitive-copy-mem-to-reg</a>/imm32/next
-<span id="L7639" class="LineNr"> 7639 </span><span class="subxMinorFunction">_Primitive-copy-mem-to-reg</span>:
-<span id="L7640" class="LineNr"> 7640 </span>    <span class="subxComment"># var1/reg &lt;- copy var2 =&gt; 8b/copy-from var2/rm32 var1/r32</span>
-<span id="L7641" class="LineNr"> 7641 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
-<span id="L7642" class="LineNr"> 7642 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Single-int-var-in-mem</a></span>/imm32/inouts
-<span id="L7643" class="LineNr"> 7643 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7644" class="LineNr"> 7644 </span>    <span class="Constant">&quot;8b/copy-from&quot;</span>/imm32/subx-name
-<span id="L7645" class="LineNr"> 7645 </span>    1/imm32/rm32-is-first-inout
-<span id="L7646" class="LineNr"> 7646 </span>    3/imm32/r32-is-first-output
-<span id="L7647" class="LineNr"> 7647 </span>    0/imm32/no-imm32
-<span id="L7648" class="LineNr"> 7648 </span>    0/imm32/no-disp32
-<span id="L7649" class="LineNr"> 7649 </span>    1/imm32/output-is-write-only
-<span id="L7650" class="LineNr"> 7650 </span>    <a href='mu.subx.html#L7651'>_Primitive-copy-lit-to-reg</a>/imm32/next
-<span id="L7651" class="LineNr"> 7651 </span><span class="subxMinorFunction">_Primitive-copy-lit-to-reg</span>:
-<span id="L7652" class="LineNr"> 7652 </span>    <span class="subxComment"># var1/reg &lt;- copy lit =&gt; c7 0/subop/copy var1/rm32 lit/imm32</span>
-<span id="L7653" class="LineNr"> 7653 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
-<span id="L7654" class="LineNr"> 7654 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7655" class="LineNr"> 7655 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7656" class="LineNr"> 7656 </span>    <span class="Constant">&quot;c7 0/subop/copy&quot;</span>/imm32/subx-name
-<span id="L7657" class="LineNr"> 7657 </span>    3/imm32/rm32-is-first-output
-<span id="L7658" class="LineNr"> 7658 </span>    0/imm32/no-r32
-<span id="L7659" class="LineNr"> 7659 </span>    1/imm32/imm32-is-first-inout
-<span id="L7660" class="LineNr"> 7660 </span>    0/imm32/no-disp32
-<span id="L7661" class="LineNr"> 7661 </span>    1/imm32/output-is-write-only
-<span id="L7662" class="LineNr"> 7662 </span>    <a href='mu.subx.html#L7663'>_Primitive-copy-lit-to-mem</a>/imm32/next
-<span id="L7663" class="LineNr"> 7663 </span><span class="subxMinorFunction">_Primitive-copy-lit-to-mem</span>:
-<span id="L7664" class="LineNr"> 7664 </span>    <span class="subxComment"># copy-to var1, lit =&gt; c7 0/subop/copy var1/rm32 lit/imm32</span>
-<span id="L7665" class="LineNr"> 7665 </span>    <span class="Constant">&quot;copy-to&quot;</span>/imm32/name
-<span id="L7666" class="LineNr"> 7666 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8259'>Int-var-and-literal</a></span>/imm32/inouts
-<span id="L7667" class="LineNr"> 7667 </span>    0/imm32/outputs
-<span id="L7668" class="LineNr"> 7668 </span>    <span class="Constant">&quot;c7 0/subop/copy&quot;</span>/imm32/subx-name
-<span id="L7669" class="LineNr"> 7669 </span>    1/imm32/rm32-is-first-inout
-<span id="L7670" class="LineNr"> 7670 </span>    0/imm32/no-r32
-<span id="L7671" class="LineNr"> 7671 </span>    2/imm32/imm32-is-first-inout
-<span id="L7672" class="LineNr"> 7672 </span>    0/imm32/no-disp32
-<span id="L7673" class="LineNr"> 7673 </span>    1/imm32/output-is-write-only
-<span id="L7674" class="LineNr"> 7674 </span>    <a href='mu.subx.html#L7676'>_Primitive-compare-mem-with-reg</a>/imm32/next
-<span id="L7675" class="LineNr"> 7675 </span><span class="subxH1Comment"># - compare</span>
-<span id="L7676" class="LineNr"> 7676 </span><span class="subxMinorFunction">_Primitive-compare-mem-with-reg</span>:
-<span id="L7677" class="LineNr"> 7677 </span>    <span class="subxComment"># compare var1 var2/reg =&gt; 39/compare-&gt; var1/rm32 var2/r32</span>
-<span id="L7678" class="LineNr"> 7678 </span>    <span class="Constant">&quot;compare&quot;</span>/imm32/name
-<span id="L7679" class="LineNr"> 7679 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8247'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
-<span id="L7680" class="LineNr"> 7680 </span>    0/imm32/outputs
-<span id="L7681" class="LineNr"> 7681 </span>    <span class="Constant">&quot;39/compare-&gt;&quot;</span>/imm32/subx-name
-<span id="L7682" class="LineNr"> 7682 </span>    1/imm32/rm32-is-first-inout
-<span id="L7683" class="LineNr"> 7683 </span>    2/imm32/r32-is-second-inout
-<span id="L7684" class="LineNr"> 7684 </span>    0/imm32/no-imm32
-<span id="L7685" class="LineNr"> 7685 </span>    0/imm32/no-disp32
-<span id="L7686" class="LineNr"> 7686 </span>    0/imm32/output-is-write-only
-<span id="L7687" class="LineNr"> 7687 </span>    <a href='mu.subx.html#L7688'>_Primitive-compare-reg-with-mem</a>/imm32/next
-<span id="L7688" class="LineNr"> 7688 </span><span class="subxMinorFunction">_Primitive-compare-reg-with-mem</span>:
-<span id="L7689" class="LineNr"> 7689 </span>    <span class="subxComment"># compare var1/reg var2 =&gt; 3b/compare&lt;- var2/rm32 var1/r32</span>
-<span id="L7690" class="LineNr"> 7690 </span>    <span class="Constant">&quot;compare&quot;</span>/imm32/name
-<span id="L7691" class="LineNr"> 7691 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8251'>Two-args-int-reg-int-stack</a></span>/imm32/inouts
-<span id="L7692" class="LineNr"> 7692 </span>    0/imm32/outputs
-<span id="L7693" class="LineNr"> 7693 </span>    <span class="Constant">&quot;3b/compare&lt;-&quot;</span>/imm32/subx-name
-<span id="L7694" class="LineNr"> 7694 </span>    2/imm32/rm32-is-second-inout
-<span id="L7695" class="LineNr"> 7695 </span>    1/imm32/r32-is-first-inout
-<span id="L7696" class="LineNr"> 7696 </span>    0/imm32/no-imm32
-<span id="L7697" class="LineNr"> 7697 </span>    0/imm32/no-disp32
-<span id="L7698" class="LineNr"> 7698 </span>    0/imm32/output-is-write-only
-<span id="L7699" class="LineNr"> 7699 </span>    <a href='mu.subx.html#L7700'>_Primitive-compare-eax-with-literal</a>/imm32/next
-<span id="L7700" class="LineNr"> 7700 </span><span class="subxMinorFunction">_Primitive-compare-eax-with-literal</span>:
-<span id="L7701" class="LineNr"> 7701 </span>    <span class="subxComment"># compare var1/eax n =&gt; 3d/compare-eax-with n/imm32</span>
-<span id="L7702" class="LineNr"> 7702 </span>    <span class="Constant">&quot;compare&quot;</span>/imm32/name
-<span id="L7703" class="LineNr"> 7703 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8255'>Two-args-int-eax-int-literal</a></span>/imm32/inouts
-<span id="L7704" class="LineNr"> 7704 </span>    0/imm32/outputs
-<span id="L7705" class="LineNr"> 7705 </span>    <span class="Constant">&quot;3d/compare-eax-with&quot;</span>/imm32/subx-name
-<span id="L7706" class="LineNr"> 7706 </span>    0/imm32/no-rm32
-<span id="L7707" class="LineNr"> 7707 </span>    0/imm32/no-r32
-<span id="L7708" class="LineNr"> 7708 </span>    2/imm32/imm32-is-second-inout
-<span id="L7709" class="LineNr"> 7709 </span>    0/imm32/no-disp32
-<span id="L7710" class="LineNr"> 7710 </span>    0/imm32/output-is-write-only
-<span id="L7711" class="LineNr"> 7711 </span>    <a href='mu.subx.html#L7712'>_Primitive-compare-reg-with-literal</a>/imm32/next
-<span id="L7712" class="LineNr"> 7712 </span><span class="subxMinorFunction">_Primitive-compare-reg-with-literal</span>:
-<span id="L7713" class="LineNr"> 7713 </span>    <span class="subxComment"># compare var1/reg n =&gt; 81 7/subop/compare %reg n/imm32</span>
-<span id="L7714" class="LineNr"> 7714 </span>    <span class="Constant">&quot;compare&quot;</span>/imm32/name
-<span id="L7715" class="LineNr"> 7715 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Int-var-in-register-and-literal</a></span>/imm32/inouts
-<span id="L7716" class="LineNr"> 7716 </span>    0/imm32/outputs
-<span id="L7717" class="LineNr"> 7717 </span>    <span class="Constant">&quot;81 7/subop/compare&quot;</span>/imm32/subx-name
-<span id="L7718" class="LineNr"> 7718 </span>    1/imm32/rm32-is-first-inout
-<span id="L7719" class="LineNr"> 7719 </span>    0/imm32/no-r32
-<span id="L7720" class="LineNr"> 7720 </span>    2/imm32/imm32-is-second-inout
-<span id="L7721" class="LineNr"> 7721 </span>    0/imm32/no-disp32
-<span id="L7722" class="LineNr"> 7722 </span>    0/imm32/output-is-write-only
-<span id="L7723" class="LineNr"> 7723 </span>    <a href='mu.subx.html#L7724'>_Primitive-compare-mem-with-literal</a>/imm32/next
-<span id="L7724" class="LineNr"> 7724 </span><span class="subxMinorFunction">_Primitive-compare-mem-with-literal</span>:
-<span id="L7725" class="LineNr"> 7725 </span>    <span class="subxComment"># compare var1 n =&gt; 81 7/subop/compare *(ebp+___) n/imm32</span>
-<span id="L7726" class="LineNr"> 7726 </span>    <span class="Constant">&quot;compare&quot;</span>/imm32/name
-<span id="L7727" class="LineNr"> 7727 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8259'>Int-var-and-literal</a></span>/imm32/inouts
-<span id="L7728" class="LineNr"> 7728 </span>    0/imm32/outputs
-<span id="L7729" class="LineNr"> 7729 </span>    <span class="Constant">&quot;81 7/subop/compare&quot;</span>/imm32/subx-name
-<span id="L7730" class="LineNr"> 7730 </span>    1/imm32/rm32-is-first-inout
-<span id="L7731" class="LineNr"> 7731 </span>    0/imm32/no-r32
-<span id="L7732" class="LineNr"> 7732 </span>    2/imm32/imm32-is-second-inout
-<span id="L7733" class="LineNr"> 7733 </span>    0/imm32/no-disp32
-<span id="L7734" class="LineNr"> 7734 </span>    0/imm32/output-is-write-only
-<span id="L7735" class="LineNr"> 7735 </span>    <a href='mu.subx.html#L7737'>_Primitive-multiply-reg-by-mem</a>/imm32/next
-<span id="L7736" class="LineNr"> 7736 </span><span class="subxH1Comment"># - multiply</span>
-<span id="L7737" class="LineNr"> 7737 </span><span class="subxMinorFunction">_Primitive-multiply-reg-by-mem</span>:
-<span id="L7738" class="LineNr"> 7738 </span>    <span class="subxComment"># var1/reg &lt;- multiply var2 =&gt; 0f af/multiply var2/rm32 var1/r32</span>
-<span id="L7739" class="LineNr"> 7739 </span>    <span class="Constant">&quot;multiply&quot;</span>/imm32/name
-<span id="L7740" class="LineNr"> 7740 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Single-int-var-in-mem</a></span>/imm32/inouts
-<span id="L7741" class="LineNr"> 7741 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/outputs
-<span id="L7742" class="LineNr"> 7742 </span>    <span class="Constant">&quot;0f af/multiply&quot;</span>/imm32/subx-name
-<span id="L7743" class="LineNr"> 7743 </span>    1/imm32/rm32-is-first-inout
-<span id="L7744" class="LineNr"> 7744 </span>    3/imm32/r32-is-first-output
-<span id="L7745" class="LineNr"> 7745 </span>    0/imm32/no-imm32
-<span id="L7746" class="LineNr"> 7746 </span>    0/imm32/no-disp32
-<span id="L7747" class="LineNr"> 7747 </span>    0/imm32/output-is-write-only
-<span id="L7748" class="LineNr"> 7748 </span>    <a href='mu.subx.html#L7750'>_Primitive-break-if-addr&lt;</a>/imm32/next
-<span id="L7749" class="LineNr"> 7749 </span><span class="subxH1Comment"># - branches</span>
-<span id="L7750" class="LineNr"> 7750 </span><span class="subxMinorFunction">_Primitive-break-if-addr&lt;</span>:
-<span id="L7751" class="LineNr"> 7751 </span>    <span class="Constant">&quot;break-if-addr&lt;&quot;</span>/imm32/name
-<span id="L7752" class="LineNr"> 7752 </span>    0/imm32/inouts
-<span id="L7753" class="LineNr"> 7753 </span>    0/imm32/outputs
-<span id="L7754" class="LineNr"> 7754 </span>    <span class="Constant">&quot;0f 82/jump-if-addr&lt; break/disp32&quot;</span>/imm32/subx-name
-<span id="L7755" class="LineNr"> 7755 </span>    0/imm32/no-rm32
-<span id="L7756" class="LineNr"> 7756 </span>    0/imm32/no-r32
-<span id="L7757" class="LineNr"> 7757 </span>    0/imm32/no-imm32
-<span id="L7758" class="LineNr"> 7758 </span>    0/imm32/no-disp32
-<span id="L7759" class="LineNr"> 7759 </span>    0/imm32/no-output
-<span id="L7760" class="LineNr"> 7760 </span>    <a href='mu.subx.html#L7761'>_Primitive-break-if-addr&gt;=</a>/imm32/next
-<span id="L7761" class="LineNr"> 7761 </span><span class="subxMinorFunction">_Primitive-break-if-addr&gt;=</span>:
-<span id="L7762" class="LineNr"> 7762 </span>    <span class="Constant">&quot;break-if-addr&gt;=&quot;</span>/imm32/name
-<span id="L7763" class="LineNr"> 7763 </span>    0/imm32/inouts
-<span id="L7764" class="LineNr"> 7764 </span>    0/imm32/outputs
-<span id="L7765" class="LineNr"> 7765 </span>    <span class="Constant">&quot;0f 83/jump-if-addr&gt;= break/disp32&quot;</span>/imm32/subx-name
-<span id="L7766" class="LineNr"> 7766 </span>    0/imm32/no-rm32
-<span id="L7767" class="LineNr"> 7767 </span>    0/imm32/no-r32
-<span id="L7768" class="LineNr"> 7768 </span>    0/imm32/no-imm32
-<span id="L7769" class="LineNr"> 7769 </span>    0/imm32/no-disp32
-<span id="L7770" class="LineNr"> 7770 </span>    0/imm32/no-output
-<span id="L7771" class="LineNr"> 7771 </span>    <a href='mu.subx.html#L7772'>_Primitive-break-if-=</a>/imm32/next
-<span id="L7772" class="LineNr"> 7772 </span><span class="subxMinorFunction">_Primitive-break-if-=</span>:
-<span id="L7773" class="LineNr"> 7773 </span>    <span class="Constant">&quot;break-if-=&quot;</span>/imm32/name
-<span id="L7774" class="LineNr"> 7774 </span>    0/imm32/inouts
-<span id="L7775" class="LineNr"> 7775 </span>    0/imm32/outputs
-<span id="L7776" class="LineNr"> 7776 </span>    <span class="Constant">&quot;0f 84/jump-if-= break/disp32&quot;</span>/imm32/subx-name
-<span id="L7777" class="LineNr"> 7777 </span>    0/imm32/no-rm32
-<span id="L7778" class="LineNr"> 7778 </span>    0/imm32/no-r32
-<span id="L7779" class="LineNr"> 7779 </span>    0/imm32/no-imm32
-<span id="L7780" class="LineNr"> 7780 </span>    0/imm32/no-disp32
-<span id="L7781" class="LineNr"> 7781 </span>    0/imm32/no-output
-<span id="L7782" class="LineNr"> 7782 </span>    <a href='mu.subx.html#L7783'>_Primitive-break-if-!=</a>/imm32/next
-<span id="L7783" class="LineNr"> 7783 </span><span class="subxMinorFunction">_Primitive-break-if-!=</span>:
-<span id="L7784" class="LineNr"> 7784 </span>    <span class="Constant">&quot;break-if-!=&quot;</span>/imm32/name
-<span id="L7785" class="LineNr"> 7785 </span>    0/imm32/inouts
-<span id="L7786" class="LineNr"> 7786 </span>    0/imm32/outputs
-<span id="L7787" class="LineNr"> 7787 </span>    <span class="Constant">&quot;0f 85/jump-if-!= break/disp32&quot;</span>/imm32/subx-name
-<span id="L7788" class="LineNr"> 7788 </span>    0/imm32/no-rm32
-<span id="L7789" class="LineNr"> 7789 </span>    0/imm32/no-r32
-<span id="L7790" class="LineNr"> 7790 </span>    0/imm32/no-imm32
-<span id="L7791" class="LineNr"> 7791 </span>    0/imm32/no-disp32
-<span id="L7792" class="LineNr"> 7792 </span>    0/imm32/no-output
-<span id="L7793" class="LineNr"> 7793 </span>    <a href='mu.subx.html#L7794'>_Primitive-break-if-addr&lt;=</a>/imm32/next
-<span id="L7794" class="LineNr"> 7794 </span><span class="subxMinorFunction">_Primitive-break-if-addr&lt;=</span>:
-<span id="L7795" class="LineNr"> 7795 </span>    <span class="Constant">&quot;break-if-addr&lt;=&quot;</span>/imm32/name
-<span id="L7796" class="LineNr"> 7796 </span>    0/imm32/inouts
-<span id="L7797" class="LineNr"> 7797 </span>    0/imm32/outputs
-<span id="L7798" class="LineNr"> 7798 </span>    <span class="Constant">&quot;0f 86/jump-if-addr&lt;= break/disp32&quot;</span>/imm32/subx-name
-<span id="L7799" class="LineNr"> 7799 </span>    0/imm32/no-rm32
-<span id="L7800" class="LineNr"> 7800 </span>    0/imm32/no-r32
-<span id="L7801" class="LineNr"> 7801 </span>    0/imm32/no-imm32
-<span id="L7802" class="LineNr"> 7802 </span>    0/imm32/no-disp32
-<span id="L7803" class="LineNr"> 7803 </span>    0/imm32/no-output
-<span id="L7804" class="LineNr"> 7804 </span>    <a href='mu.subx.html#L7805'>_Primitive-break-if-addr&gt;</a>/imm32/next
-<span id="L7805" class="LineNr"> 7805 </span><span class="subxMinorFunction">_Primitive-break-if-addr&gt;</span>:
-<span id="L7806" class="LineNr"> 7806 </span>    <span class="Constant">&quot;break-if-addr&gt;&quot;</span>/imm32/name
-<span id="L7807" class="LineNr"> 7807 </span>    0/imm32/inouts
-<span id="L7808" class="LineNr"> 7808 </span>    0/imm32/outputs
-<span id="L7809" class="LineNr"> 7809 </span>    <span class="Constant">&quot;0f 87/jump-if-addr&gt; break/disp32&quot;</span>/imm32/subx-name
-<span id="L7810" class="LineNr"> 7810 </span>    0/imm32/no-rm32
-<span id="L7811" class="LineNr"> 7811 </span>    0/imm32/no-r32
-<span id="L7812" class="LineNr"> 7812 </span>    0/imm32/no-imm32
-<span id="L7813" class="LineNr"> 7813 </span>    0/imm32/no-disp32
-<span id="L7814" class="LineNr"> 7814 </span>    0/imm32/no-output
-<span id="L7815" class="LineNr"> 7815 </span>    <a href='mu.subx.html#L7816'>_Primitive-break-if-&lt;</a>/imm32/next
-<span id="L7816" class="LineNr"> 7816 </span><span class="subxMinorFunction">_Primitive-break-if-&lt;</span>:
-<span id="L7817" class="LineNr"> 7817 </span>    <span class="Constant">&quot;break-if-&lt;&quot;</span>/imm32/name
-<span id="L7818" class="LineNr"> 7818 </span>    0/imm32/inouts
-<span id="L7819" class="LineNr"> 7819 </span>    0/imm32/outputs
-<span id="L7820" class="LineNr"> 7820 </span>    <span class="Constant">&quot;0f 8c/jump-if-&lt; break/disp32&quot;</span>/imm32/subx-name
-<span id="L7821" class="LineNr"> 7821 </span>    0/imm32/no-rm32
-<span id="L7822" class="LineNr"> 7822 </span>    0/imm32/no-r32
-<span id="L7823" class="LineNr"> 7823 </span>    0/imm32/no-imm32
-<span id="L7824" class="LineNr"> 7824 </span>    0/imm32/no-disp32
-<span id="L7825" class="LineNr"> 7825 </span>    0/imm32/no-output
-<span id="L7826" class="LineNr"> 7826 </span>    <a href='mu.subx.html#L7827'>_Primitive-break-if-&gt;=</a>/imm32/next
-<span id="L7827" class="LineNr"> 7827 </span><span class="subxMinorFunction">_Primitive-break-if-&gt;=</span>:
-<span id="L7828" class="LineNr"> 7828 </span>    <span class="Constant">&quot;break-if-&gt;=&quot;</span>/imm32/name
-<span id="L7829" class="LineNr"> 7829 </span>    0/imm32/inouts
-<span id="L7830" class="LineNr"> 7830 </span>    0/imm32/outputs
-<span id="L7831" class="LineNr"> 7831 </span>    <span class="Constant">&quot;0f 8d/jump-if-&gt;= break/disp32&quot;</span>/imm32/subx-name
-<span id="L7832" class="LineNr"> 7832 </span>    0/imm32/no-rm32
-<span id="L7833" class="LineNr"> 7833 </span>    0/imm32/no-r32
-<span id="L7834" class="LineNr"> 7834 </span>    0/imm32/no-imm32
-<span id="L7835" class="LineNr"> 7835 </span>    0/imm32/no-disp32
-<span id="L7836" class="LineNr"> 7836 </span>    0/imm32/no-output
-<span id="L7837" class="LineNr"> 7837 </span>    <a href='mu.subx.html#L7838'>_Primitive-break-if-&lt;=</a>/imm32/next
-<span id="L7838" class="LineNr"> 7838 </span><span class="subxMinorFunction">_Primitive-break-if-&lt;=</span>:
-<span id="L7839" class="LineNr"> 7839 </span>    <span class="Constant">&quot;break-if-&lt;=&quot;</span>/imm32/name
-<span id="L7840" class="LineNr"> 7840 </span>    0/imm32/inouts
-<span id="L7841" class="LineNr"> 7841 </span>    0/imm32/outputs
-<span id="L7842" class="LineNr"> 7842 </span>    <span class="Constant">&quot;0f 8e/jump-if-&lt;= break/disp32&quot;</span>/imm32/subx-name
-<span id="L7843" class="LineNr"> 7843 </span>    0/imm32/no-rm32
-<span id="L7844" class="LineNr"> 7844 </span>    0/imm32/no-r32
-<span id="L7845" class="LineNr"> 7845 </span>    0/imm32/no-imm32
-<span id="L7846" class="LineNr"> 7846 </span>    0/imm32/no-disp32
-<span id="L7847" class="LineNr"> 7847 </span>    0/imm32/no-output
-<span id="L7848" class="LineNr"> 7848 </span>    <a href='mu.subx.html#L7849'>_Primitive-break-if-&gt;</a>/imm32/next
-<span id="L7849" class="LineNr"> 7849 </span><span class="subxMinorFunction">_Primitive-break-if-&gt;</span>:
-<span id="L7850" class="LineNr"> 7850 </span>    <span class="Constant">&quot;break-if-&gt;&quot;</span>/imm32/name
-<span id="L7851" class="LineNr"> 7851 </span>    0/imm32/inouts
-<span id="L7852" class="LineNr"> 7852 </span>    0/imm32/outputs
-<span id="L7853" class="LineNr"> 7853 </span>    <span class="Constant">&quot;0f 8f/jump-if-&gt; break/disp32&quot;</span>/imm32/subx-name
-<span id="L7854" class="LineNr"> 7854 </span>    0/imm32/no-rm32
-<span id="L7855" class="LineNr"> 7855 </span>    0/imm32/no-r32
-<span id="L7856" class="LineNr"> 7856 </span>    0/imm32/no-imm32
-<span id="L7857" class="LineNr"> 7857 </span>    0/imm32/no-disp32
-<span id="L7858" class="LineNr"> 7858 </span>    0/imm32/no-output
-<span id="L7859" class="LineNr"> 7859 </span>    <a href='mu.subx.html#L7860'>_Primitive-break</a>/imm32/next
-<span id="L7860" class="LineNr"> 7860 </span><span class="subxMinorFunction">_Primitive-break</span>:
-<span id="L7861" class="LineNr"> 7861 </span>    <span class="Constant">&quot;break&quot;</span>/imm32/name
-<span id="L7862" class="LineNr"> 7862 </span>    0/imm32/inouts
-<span id="L7863" class="LineNr"> 7863 </span>    0/imm32/outputs
-<span id="L7864" class="LineNr"> 7864 </span>    <span class="Constant">&quot;e9/jump break/disp32&quot;</span>/imm32/subx-name
-<span id="L7865" class="LineNr"> 7865 </span>    0/imm32/no-rm32
-<span id="L7866" class="LineNr"> 7866 </span>    0/imm32/no-r32
-<span id="L7867" class="LineNr"> 7867 </span>    0/imm32/no-imm32
-<span id="L7868" class="LineNr"> 7868 </span>    0/imm32/no-disp32
-<span id="L7869" class="LineNr"> 7869 </span>    0/imm32/no-output
-<span id="L7870" class="LineNr"> 7870 </span>    <a href='mu.subx.html#L7871'>_Primitive-loop-if-addr&lt;</a>/imm32/next
-<span id="L7871" class="LineNr"> 7871 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&lt;</span>:
-<span id="L7872" class="LineNr"> 7872 </span>    <span class="Constant">&quot;loop-if-addr&lt;&quot;</span>/imm32/name
-<span id="L7873" class="LineNr"> 7873 </span>    0/imm32/inouts
-<span id="L7874" class="LineNr"> 7874 </span>    0/imm32/outputs
-<span id="L7875" class="LineNr"> 7875 </span>    <span class="Constant">&quot;0f 82/jump-if-addr&lt; loop/disp32&quot;</span>/imm32/subx-name
-<span id="L7876" class="LineNr"> 7876 </span>    0/imm32/no-rm32
-<span id="L7877" class="LineNr"> 7877 </span>    0/imm32/no-r32
-<span id="L7878" class="LineNr"> 7878 </span>    0/imm32/no-imm32
-<span id="L7879" class="LineNr"> 7879 </span>    0/imm32/no-disp32
-<span id="L7880" class="LineNr"> 7880 </span>    0/imm32/no-output
-<span id="L7881" class="LineNr"> 7881 </span>    <a href='mu.subx.html#L7882'>_Primitive-loop-if-addr&gt;=</a>/imm32/next
-<span id="L7882" class="LineNr"> 7882 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&gt;=</span>:
-<span id="L7883" class="LineNr"> 7883 </span>    <span class="Constant">&quot;loop-if-addr&gt;=&quot;</span>/imm32/name
-<span id="L7884" class="LineNr"> 7884 </span>    0/imm32/inouts
-<span id="L7885" class="LineNr"> 7885 </span>    0/imm32/outputs
-<span id="L7886" class="LineNr"> 7886 </span>    <span class="Constant">&quot;0f 83/jump-if-addr&gt;= loop/disp32&quot;</span>/imm32/subx-name
-<span id="L7887" class="LineNr"> 7887 </span>    0/imm32/no-rm32
-<span id="L7888" class="LineNr"> 7888 </span>    0/imm32/no-r32
-<span id="L7889" class="LineNr"> 7889 </span>    0/imm32/no-imm32
-<span id="L7890" class="LineNr"> 7890 </span>    0/imm32/no-disp32
-<span id="L7891" class="LineNr"> 7891 </span>    0/imm32/no-output
-<span id="L7892" class="LineNr"> 7892 </span>    <a href='mu.subx.html#L7893'>_Primitive-loop-if-=</a>/imm32/next
-<span id="L7893" class="LineNr"> 7893 </span><span class="subxMinorFunction">_Primitive-loop-if-=</span>:
-<span id="L7894" class="LineNr"> 7894 </span>    <span class="Constant">&quot;loop-if-=&quot;</span>/imm32/name
-<span id="L7895" class="LineNr"> 7895 </span>    0/imm32/inouts
-<span id="L7896" class="LineNr"> 7896 </span>    0/imm32/outputs
-<span id="L7897" class="LineNr"> 7897 </span>    <span class="Constant">&quot;0f 84/jump-if-= loop/disp32&quot;</span>/imm32/subx-name
-<span id="L7898" class="LineNr"> 7898 </span>    0/imm32/no-rm32
-<span id="L7899" class="LineNr"> 7899 </span>    0/imm32/no-r32
-<span id="L7900" class="LineNr"> 7900 </span>    0/imm32/no-imm32
-<span id="L7901" class="LineNr"> 7901 </span>    0/imm32/no-disp32
-<span id="L7902" class="LineNr"> 7902 </span>    0/imm32/no-output
-<span id="L7903" class="LineNr"> 7903 </span>    <a href='mu.subx.html#L7904'>_Primitive-loop-if-!=</a>/imm32/next
-<span id="L7904" class="LineNr"> 7904 </span><span class="subxMinorFunction">_Primitive-loop-if-!=</span>:
-<span id="L7905" class="LineNr"> 7905 </span>    <span class="Constant">&quot;loop-if-!=&quot;</span>/imm32/name
-<span id="L7906" class="LineNr"> 7906 </span>    0/imm32/inouts
-<span id="L7907" class="LineNr"> 7907 </span>    0/imm32/outputs
-<span id="L7908" class="LineNr"> 7908 </span>    <span class="Constant">&quot;0f 85/jump-if-!= loop/disp32&quot;</span>/imm32/subx-name
-<span id="L7909" class="LineNr"> 7909 </span>    0/imm32/no-rm32
-<span id="L7910" class="LineNr"> 7910 </span>    0/imm32/no-r32
-<span id="L7911" class="LineNr"> 7911 </span>    0/imm32/no-imm32
-<span id="L7912" class="LineNr"> 7912 </span>    0/imm32/no-disp32
-<span id="L7913" class="LineNr"> 7913 </span>    0/imm32/no-output
-<span id="L7914" class="LineNr"> 7914 </span>    <a href='mu.subx.html#L7915'>_Primitive-loop-if-addr&lt;=</a>/imm32/next
-<span id="L7915" class="LineNr"> 7915 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&lt;=</span>:
-<span id="L7916" class="LineNr"> 7916 </span>    <span class="Constant">&quot;loop-if-addr&lt;=&quot;</span>/imm32/name
-<span id="L7917" class="LineNr"> 7917 </span>    0/imm32/inouts
-<span id="L7918" class="LineNr"> 7918 </span>    0/imm32/outputs
-<span id="L7919" class="LineNr"> 7919 </span>    <span class="Constant">&quot;0f 86/jump-if-addr&lt;= loop/disp32&quot;</span>/imm32/subx-name
-<span id="L7920" class="LineNr"> 7920 </span>    0/imm32/no-rm32
-<span id="L7921" class="LineNr"> 7921 </span>    0/imm32/no-r32
-<span id="L7922" class="LineNr"> 7922 </span>    0/imm32/no-imm32
-<span id="L7923" class="LineNr"> 7923 </span>    0/imm32/no-disp32
-<span id="L7924" class="LineNr"> 7924 </span>    0/imm32/no-output
-<span id="L7925" class="LineNr"> 7925 </span>    <a href='mu.subx.html#L7926'>_Primitive-loop-if-addr&gt;</a>/imm32/next
-<span id="L7926" class="LineNr"> 7926 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&gt;</span>:
-<span id="L7927" class="LineNr"> 7927 </span>    <span class="Constant">&quot;loop-if-addr&gt;&quot;</span>/imm32/name
-<span id="L7928" class="LineNr"> 7928 </span>    0/imm32/inouts
-<span id="L7929" class="LineNr"> 7929 </span>    0/imm32/outputs
-<span id="L7930" class="LineNr"> 7930 </span>    <span class="Constant">&quot;0f 87/jump-if-addr&gt; loop/disp32&quot;</span>/imm32/subx-name
-<span id="L7931" class="LineNr"> 7931 </span>    0/imm32/no-rm32
-<span id="L7932" class="LineNr"> 7932 </span>    0/imm32/no-r32
-<span id="L7933" class="LineNr"> 7933 </span>    0/imm32/no-imm32
-<span id="L7934" class="LineNr"> 7934 </span>    0/imm32/no-disp32
-<span id="L7935" class="LineNr"> 7935 </span>    0/imm32/no-output
-<span id="L7936" class="LineNr"> 7936 </span>    <a href='mu.subx.html#L7937'>_Primitive-loop-if-&lt;</a>/imm32/next
-<span id="L7937" class="LineNr"> 7937 </span><span class="subxMinorFunction">_Primitive-loop-if-&lt;</span>:
-<span id="L7938" class="LineNr"> 7938 </span>    <span class="Constant">&quot;loop-if-&lt;&quot;</span>/imm32/name
-<span id="L7939" class="LineNr"> 7939 </span>    0/imm32/inouts
-<span id="L7940" class="LineNr"> 7940 </span>    0/imm32/outputs
-<span id="L7941" class="LineNr"> 7941 </span>    <span class="Constant">&quot;0f 8c/jump-if-&lt; loop/disp32&quot;</span>/imm32/subx-name
-<span id="L7942" class="LineNr"> 7942 </span>    0/imm32/no-rm32
-<span id="L7943" class="LineNr"> 7943 </span>    0/imm32/no-r32
-<span id="L7944" class="LineNr"> 7944 </span>    0/imm32/no-imm32
-<span id="L7945" class="LineNr"> 7945 </span>    0/imm32/no-disp32
-<span id="L7946" class="LineNr"> 7946 </span>    0/imm32/no-output
-<span id="L7947" class="LineNr"> 7947 </span>    <a href='mu.subx.html#L7948'>_Primitive-loop-if-&gt;=</a>/imm32/next
-<span id="L7948" class="LineNr"> 7948 </span><span class="subxMinorFunction">_Primitive-loop-if-&gt;=</span>:
-<span id="L7949" class="LineNr"> 7949 </span>    <span class="Constant">&quot;loop-if-&gt;=&quot;</span>/imm32/name
-<span id="L7950" class="LineNr"> 7950 </span>    0/imm32/inouts
-<span id="L7951" class="LineNr"> 7951 </span>    0/imm32/outputs
-<span id="L7952" class="LineNr"> 7952 </span>    <span class="Constant">&quot;0f 8d/jump-if-&gt;= loop/disp32&quot;</span>/imm32/subx-name
-<span id="L7953" class="LineNr"> 7953 </span>    0/imm32/no-rm32
-<span id="L7954" class="LineNr"> 7954 </span>    0/imm32/no-r32
-<span id="L7955" class="LineNr"> 7955 </span>    0/imm32/no-imm32
-<span id="L7956" class="LineNr"> 7956 </span>    0/imm32/no-disp32
-<span id="L7957" class="LineNr"> 7957 </span>    0/imm32/no-output
-<span id="L7958" class="LineNr"> 7958 </span>    <a href='mu.subx.html#L7959'>_Primitive-loop-if-&lt;=</a>/imm32/next
-<span id="L7959" class="LineNr"> 7959 </span><span class="subxMinorFunction">_Primitive-loop-if-&lt;=</span>:
-<span id="L7960" class="LineNr"> 7960 </span>    <span class="Constant">&quot;loop-if-&lt;=&quot;</span>/imm32/name
-<span id="L7961" class="LineNr"> 7961 </span>    0/imm32/inouts
-<span id="L7962" class="LineNr"> 7962 </span>    0/imm32/outputs
-<span id="L7963" class="LineNr"> 7963 </span>    <span class="Constant">&quot;0f 8e/jump-if-&lt;= loop/disp32&quot;</span>/imm32/subx-name
-<span id="L7964" class="LineNr"> 7964 </span>    0/imm32/no-rm32
-<span id="L7965" class="LineNr"> 7965 </span>    0/imm32/no-r32
-<span id="L7966" class="LineNr"> 7966 </span>    0/imm32/no-imm32
-<span id="L7967" class="LineNr"> 7967 </span>    0/imm32/no-disp32
-<span id="L7968" class="LineNr"> 7968 </span>    0/imm32/no-output
-<span id="L7969" class="LineNr"> 7969 </span>    <a href='mu.subx.html#L7970'>_Primitive-loop-if-&gt;</a>/imm32/next
-<span id="L7970" class="LineNr"> 7970 </span><span class="subxMinorFunction">_Primitive-loop-if-&gt;</span>:
-<span id="L7971" class="LineNr"> 7971 </span>    <span class="Constant">&quot;loop-if-&gt;&quot;</span>/imm32/name
-<span id="L7972" class="LineNr"> 7972 </span>    0/imm32/inouts
-<span id="L7973" class="LineNr"> 7973 </span>    0/imm32/outputs
-<span id="L7974" class="LineNr"> 7974 </span>    <span class="Constant">&quot;0f 8f/jump-if-&gt; loop/disp32&quot;</span>/imm32/subx-name
-<span id="L7975" class="LineNr"> 7975 </span>    0/imm32/no-rm32
-<span id="L7976" class="LineNr"> 7976 </span>    0/imm32/no-r32
-<span id="L7977" class="LineNr"> 7977 </span>    0/imm32/no-imm32
-<span id="L7978" class="LineNr"> 7978 </span>    0/imm32/no-disp32
-<span id="L7979" class="LineNr"> 7979 </span>    0/imm32/no-output
-<span id="L7980" class="LineNr"> 7980 </span>    <a href='mu.subx.html#L7981'>_Primitive-loop</a>/imm32/next  <span class="subxComment"># we probably don't need an unconditional break</span>
-<span id="L7981" class="LineNr"> 7981 </span><span class="subxMinorFunction">_Primitive-loop</span>:
-<span id="L7982" class="LineNr"> 7982 </span>    <span class="Constant">&quot;loop&quot;</span>/imm32/name
-<span id="L7983" class="LineNr"> 7983 </span>    0/imm32/inouts
-<span id="L7984" class="LineNr"> 7984 </span>    0/imm32/outputs
-<span id="L7985" class="LineNr"> 7985 </span>    <span class="Constant">&quot;e9/jump loop/disp32&quot;</span>/imm32/subx-name
-<span id="L7986" class="LineNr"> 7986 </span>    0/imm32/no-rm32
-<span id="L7987" class="LineNr"> 7987 </span>    0/imm32/no-r32
-<span id="L7988" class="LineNr"> 7988 </span>    0/imm32/no-imm32
-<span id="L7989" class="LineNr"> 7989 </span>    0/imm32/no-disp32
-<span id="L7990" class="LineNr"> 7990 </span>    0/imm32/no-output
-<span id="L7991" class="LineNr"> 7991 </span>    <a href='mu.subx.html#L7993'>_Primitive-break-if-addr&lt;-named</a>/imm32/next
-<span id="L7992" class="LineNr"> 7992 </span><span class="subxH1Comment"># - branches to named blocks</span>
-<span id="L7993" class="LineNr"> 7993 </span><span class="subxMinorFunction">_Primitive-break-if-addr&lt;-named</span>:
-<span id="L7994" class="LineNr"> 7994 </span>    <span class="Constant">&quot;break-if-addr&lt;&quot;</span>/imm32/name
-<span id="L7995" class="LineNr"> 7995 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L7996" class="LineNr"> 7996 </span>    0/imm32/outputs
-<span id="L7997" class="LineNr"> 7997 </span>    <span class="Constant">&quot;0f 82/jump-if-addr&lt;&quot;</span>/imm32/subx-name
-<span id="L7998" class="LineNr"> 7998 </span>    0/imm32/no-rm32
-<span id="L7999" class="LineNr"> 7999 </span>    0/imm32/no-r32
-<span id="L8000" class="LineNr"> 8000 </span>    0/imm32/no-imm32
-<span id="L8001" class="LineNr"> 8001 </span>    1/imm32/disp32-is-first-inout
-<span id="L8002" class="LineNr"> 8002 </span>    0/imm32/no-output
-<span id="L8003" class="LineNr"> 8003 </span>    <a href='mu.subx.html#L8004'>_Primitive-break-if-addr&gt;=-named</a>/imm32/next
-<span id="L8004" class="LineNr"> 8004 </span><span class="subxMinorFunction">_Primitive-break-if-addr&gt;=-named</span>:
-<span id="L8005" class="LineNr"> 8005 </span>    <span class="Constant">&quot;break-if-addr&gt;=&quot;</span>/imm32/name
-<span id="L8006" class="LineNr"> 8006 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8007" class="LineNr"> 8007 </span>    0/imm32/outputs
-<span id="L8008" class="LineNr"> 8008 </span>    <span class="Constant">&quot;0f 83/jump-if-addr&gt;=&quot;</span>/imm32/subx-name
-<span id="L8009" class="LineNr"> 8009 </span>    0/imm32/no-rm32
-<span id="L8010" class="LineNr"> 8010 </span>    0/imm32/no-r32
-<span id="L8011" class="LineNr"> 8011 </span>    0/imm32/no-imm32
-<span id="L8012" class="LineNr"> 8012 </span>    1/imm32/disp32-is-first-inout
-<span id="L8013" class="LineNr"> 8013 </span>    0/imm32/no-output
-<span id="L8014" class="LineNr"> 8014 </span>    <a href='mu.subx.html#L8015'>_Primitive-break-if-=-named</a>/imm32/next
-<span id="L8015" class="LineNr"> 8015 </span><span class="subxMinorFunction">_Primitive-break-if-=-named</span>:
-<span id="L8016" class="LineNr"> 8016 </span>    <span class="Constant">&quot;break-if-=&quot;</span>/imm32/name
-<span id="L8017" class="LineNr"> 8017 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8018" class="LineNr"> 8018 </span>    0/imm32/outputs
-<span id="L8019" class="LineNr"> 8019 </span>    <span class="Constant">&quot;0f 84/jump-if-=&quot;</span>/imm32/subx-name
-<span id="L8020" class="LineNr"> 8020 </span>    0/imm32/no-rm32
-<span id="L8021" class="LineNr"> 8021 </span>    0/imm32/no-r32
-<span id="L8022" class="LineNr"> 8022 </span>    0/imm32/no-imm32
-<span id="L8023" class="LineNr"> 8023 </span>    1/imm32/disp32-is-first-inout
-<span id="L8024" class="LineNr"> 8024 </span>    0/imm32/no-output
-<span id="L8025" class="LineNr"> 8025 </span>    <a href='mu.subx.html#L8026'>_Primitive-break-if-!=-named</a>/imm32/next
-<span id="L8026" class="LineNr"> 8026 </span><span class="subxMinorFunction">_Primitive-break-if-!=-named</span>:
-<span id="L8027" class="LineNr"> 8027 </span>    <span class="Constant">&quot;break-if-!=&quot;</span>/imm32/name
-<span id="L8028" class="LineNr"> 8028 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8029" class="LineNr"> 8029 </span>    0/imm32/outputs
-<span id="L8030" class="LineNr"> 8030 </span>    <span class="Constant">&quot;0f 85/jump-if-!=&quot;</span>/imm32/subx-name
-<span id="L8031" class="LineNr"> 8031 </span>    0/imm32/no-rm32
-<span id="L8032" class="LineNr"> 8032 </span>    0/imm32/no-r32
-<span id="L8033" class="LineNr"> 8033 </span>    0/imm32/no-imm32
-<span id="L8034" class="LineNr"> 8034 </span>    1/imm32/disp32-is-first-inout
-<span id="L8035" class="LineNr"> 8035 </span>    0/imm32/no-output
-<span id="L8036" class="LineNr"> 8036 </span>    <a href='mu.subx.html#L8037'>_Primitive-break-if-addr&lt;=-named</a>/imm32/next
-<span id="L8037" class="LineNr"> 8037 </span><span class="subxMinorFunction">_Primitive-break-if-addr&lt;=-named</span>:
-<span id="L8038" class="LineNr"> 8038 </span>    <span class="Constant">&quot;break-if-addr&lt;=&quot;</span>/imm32/name
-<span id="L8039" class="LineNr"> 8039 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8040" class="LineNr"> 8040 </span>    0/imm32/outputs
-<span id="L8041" class="LineNr"> 8041 </span>    <span class="Constant">&quot;0f 86/jump-if-addr&lt;=&quot;</span>/imm32/subx-name
-<span id="L8042" class="LineNr"> 8042 </span>    0/imm32/no-rm32
-<span id="L8043" class="LineNr"> 8043 </span>    0/imm32/no-r32
-<span id="L8044" class="LineNr"> 8044 </span>    0/imm32/no-imm32
-<span id="L8045" class="LineNr"> 8045 </span>    1/imm32/disp32-is-first-inout
-<span id="L8046" class="LineNr"> 8046 </span>    0/imm32/no-output
-<span id="L8047" class="LineNr"> 8047 </span>    <a href='mu.subx.html#L8048'>_Primitive-break-if-addr&gt;-named</a>/imm32/next
-<span id="L8048" class="LineNr"> 8048 </span><span class="subxMinorFunction">_Primitive-break-if-addr&gt;-named</span>:
-<span id="L8049" class="LineNr"> 8049 </span>    <span class="Constant">&quot;break-if-addr&gt;&quot;</span>/imm32/name
-<span id="L8050" class="LineNr"> 8050 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8051" class="LineNr"> 8051 </span>    0/imm32/outputs
-<span id="L8052" class="LineNr"> 8052 </span>    <span class="Constant">&quot;0f 87/jump-if-addr&gt;&quot;</span>/imm32/subx-name
-<span id="L8053" class="LineNr"> 8053 </span>    0/imm32/no-rm32
-<span id="L8054" class="LineNr"> 8054 </span>    0/imm32/no-r32
-<span id="L8055" class="LineNr"> 8055 </span>    0/imm32/no-imm32
-<span id="L8056" class="LineNr"> 8056 </span>    1/imm32/disp32-is-first-inout
-<span id="L8057" class="LineNr"> 8057 </span>    0/imm32/no-output
-<span id="L8058" class="LineNr"> 8058 </span>    <a href='mu.subx.html#L8059'>_Primitive-break-if-&lt;-named</a>/imm32/next
-<span id="L8059" class="LineNr"> 8059 </span><span class="subxMinorFunction">_Primitive-break-if-&lt;-named</span>:
-<span id="L8060" class="LineNr"> 8060 </span>    <span class="Constant">&quot;break-if-&lt;&quot;</span>/imm32/name
-<span id="L8061" class="LineNr"> 8061 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8062" class="LineNr"> 8062 </span>    0/imm32/outputs
-<span id="L8063" class="LineNr"> 8063 </span>    <span class="Constant">&quot;0f 8c/jump-if-&lt;&quot;</span>/imm32/subx-name
-<span id="L8064" class="LineNr"> 8064 </span>    0/imm32/no-rm32
-<span id="L8065" class="LineNr"> 8065 </span>    0/imm32/no-r32
-<span id="L8066" class="LineNr"> 8066 </span>    0/imm32/no-imm32
-<span id="L8067" class="LineNr"> 8067 </span>    1/imm32/disp32-is-first-inout
-<span id="L8068" class="LineNr"> 8068 </span>    0/imm32/no-output
-<span id="L8069" class="LineNr"> 8069 </span>    <a href='mu.subx.html#L8070'>_Primitive-break-if-&gt;=-named</a>/imm32/next
-<span id="L8070" class="LineNr"> 8070 </span><span class="subxMinorFunction">_Primitive-break-if-&gt;=-named</span>:
-<span id="L8071" class="LineNr"> 8071 </span>    <span class="Constant">&quot;break-if-&gt;=&quot;</span>/imm32/name
-<span id="L8072" class="LineNr"> 8072 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8073" class="LineNr"> 8073 </span>    0/imm32/outputs
-<span id="L8074" class="LineNr"> 8074 </span>    <span class="Constant">&quot;0f 8d/jump-if-&gt;=&quot;</span>/imm32/subx-name
-<span id="L8075" class="LineNr"> 8075 </span>    0/imm32/no-rm32
-<span id="L8076" class="LineNr"> 8076 </span>    0/imm32/no-r32
-<span id="L8077" class="LineNr"> 8077 </span>    0/imm32/no-imm32
-<span id="L8078" class="LineNr"> 8078 </span>    1/imm32/disp32-is-first-inout
-<span id="L8079" class="LineNr"> 8079 </span>    0/imm32/no-output
-<span id="L8080" class="LineNr"> 8080 </span>    <a href='mu.subx.html#L8081'>_Primitive-break-if-&lt;=-named</a>/imm32/next
-<span id="L8081" class="LineNr"> 8081 </span><span class="subxMinorFunction">_Primitive-break-if-&lt;=-named</span>:
-<span id="L8082" class="LineNr"> 8082 </span>    <span class="Constant">&quot;break-if-&lt;=&quot;</span>/imm32/name
-<span id="L8083" class="LineNr"> 8083 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8084" class="LineNr"> 8084 </span>    0/imm32/outputs
-<span id="L8085" class="LineNr"> 8085 </span>    <span class="Constant">&quot;0f 8e/jump-if-&lt;=&quot;</span>/imm32/subx-name
-<span id="L8086" class="LineNr"> 8086 </span>    0/imm32/no-rm32
-<span id="L8087" class="LineNr"> 8087 </span>    0/imm32/no-r32
-<span id="L8088" class="LineNr"> 8088 </span>    0/imm32/no-imm32
-<span id="L8089" class="LineNr"> 8089 </span>    1/imm32/disp32-is-first-inout
-<span id="L8090" class="LineNr"> 8090 </span>    0/imm32/no-output
-<span id="L8091" class="LineNr"> 8091 </span>    <a href='mu.subx.html#L8092'>_Primitive-break-if-&gt;-named</a>/imm32/next
-<span id="L8092" class="LineNr"> 8092 </span><span class="subxMinorFunction">_Primitive-break-if-&gt;-named</span>:
-<span id="L8093" class="LineNr"> 8093 </span>    <span class="Constant">&quot;break-if-&gt;&quot;</span>/imm32/name
-<span id="L8094" class="LineNr"> 8094 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8095" class="LineNr"> 8095 </span>    0/imm32/outputs
-<span id="L8096" class="LineNr"> 8096 </span>    <span class="Constant">&quot;0f 8f/jump-if-&gt;&quot;</span>/imm32/subx-name
-<span id="L8097" class="LineNr"> 8097 </span>    0/imm32/no-rm32
-<span id="L8098" class="LineNr"> 8098 </span>    0/imm32/no-r32
-<span id="L8099" class="LineNr"> 8099 </span>    0/imm32/no-imm32
-<span id="L8100" class="LineNr"> 8100 </span>    1/imm32/disp32-is-first-inout
-<span id="L8101" class="LineNr"> 8101 </span>    0/imm32/no-output
-<span id="L8102" class="LineNr"> 8102 </span>    <a href='mu.subx.html#L8103'>_Primitive-break-named</a>/imm32/next
-<span id="L8103" class="LineNr"> 8103 </span><span class="subxMinorFunction">_Primitive-break-named</span>:
-<span id="L8104" class="LineNr"> 8104 </span>    <span class="Constant">&quot;break&quot;</span>/imm32/name
-<span id="L8105" class="LineNr"> 8105 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8106" class="LineNr"> 8106 </span>    0/imm32/outputs
-<span id="L8107" class="LineNr"> 8107 </span>    <span class="Constant">&quot;e9/jump&quot;</span>/imm32/subx-name
-<span id="L8108" class="LineNr"> 8108 </span>    0/imm32/no-rm32
-<span id="L8109" class="LineNr"> 8109 </span>    0/imm32/no-r32
-<span id="L8110" class="LineNr"> 8110 </span>    0/imm32/no-imm32
-<span id="L8111" class="LineNr"> 8111 </span>    1/imm32/disp32-is-first-inout
-<span id="L8112" class="LineNr"> 8112 </span>    0/imm32/no-output
-<span id="L8113" class="LineNr"> 8113 </span>    <a href='mu.subx.html#L8114'>_Primitive-loop-if-addr&lt;-named</a>/imm32/next
-<span id="L8114" class="LineNr"> 8114 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&lt;-named</span>:
-<span id="L8115" class="LineNr"> 8115 </span>    <span class="Constant">&quot;loop-if-addr&lt;&quot;</span>/imm32/name
-<span id="L8116" class="LineNr"> 8116 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8117" class="LineNr"> 8117 </span>    0/imm32/outputs
-<span id="L8118" class="LineNr"> 8118 </span>    <span class="Constant">&quot;0f 82/jump-if-addr&lt;&quot;</span>/imm32/subx-name
-<span id="L8119" class="LineNr"> 8119 </span>    0/imm32/no-rm32
-<span id="L8120" class="LineNr"> 8120 </span>    0/imm32/no-r32
-<span id="L8121" class="LineNr"> 8121 </span>    0/imm32/no-imm32
-<span id="L8122" class="LineNr"> 8122 </span>    1/imm32/disp32-is-first-inout
-<span id="L8123" class="LineNr"> 8123 </span>    0/imm32/no-output
-<span id="L8124" class="LineNr"> 8124 </span>    <a href='mu.subx.html#L8125'>_Primitive-loop-if-addr&gt;=-named</a>/imm32/next
-<span id="L8125" class="LineNr"> 8125 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&gt;=-named</span>:
-<span id="L8126" class="LineNr"> 8126 </span>    <span class="Constant">&quot;loop-if-addr&gt;=&quot;</span>/imm32/name
-<span id="L8127" class="LineNr"> 8127 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8128" class="LineNr"> 8128 </span>    0/imm32/outputs
-<span id="L8129" class="LineNr"> 8129 </span>    <span class="Constant">&quot;0f 83/jump-if-addr&gt;=&quot;</span>/imm32/subx-name
-<span id="L8130" class="LineNr"> 8130 </span>    0/imm32/no-rm32
-<span id="L8131" class="LineNr"> 8131 </span>    0/imm32/no-r32
-<span id="L8132" class="LineNr"> 8132 </span>    0/imm32/no-imm32
-<span id="L8133" class="LineNr"> 8133 </span>    1/imm32/disp32-is-first-inout
-<span id="L8134" class="LineNr"> 8134 </span>    0/imm32/no-output
-<span id="L8135" class="LineNr"> 8135 </span>    <a href='mu.subx.html#L8136'>_Primitive-loop-if-=-named</a>/imm32/next
-<span id="L8136" class="LineNr"> 8136 </span><span class="subxMinorFunction">_Primitive-loop-if-=-named</span>:
-<span id="L8137" class="LineNr"> 8137 </span>    <span class="Constant">&quot;loop-if-=&quot;</span>/imm32/name
-<span id="L8138" class="LineNr"> 8138 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8139" class="LineNr"> 8139 </span>    0/imm32/outputs
-<span id="L8140" class="LineNr"> 8140 </span>    <span class="Constant">&quot;0f 84/jump-if-=&quot;</span>/imm32/subx-name
-<span id="L8141" class="LineNr"> 8141 </span>    0/imm32/no-rm32
-<span id="L8142" class="LineNr"> 8142 </span>    0/imm32/no-r32
-<span id="L8143" class="LineNr"> 8143 </span>    0/imm32/no-imm32
-<span id="L8144" class="LineNr"> 8144 </span>    1/imm32/disp32-is-first-inout
-<span id="L8145" class="LineNr"> 8145 </span>    0/imm32/no-output
-<span id="L8146" class="LineNr"> 8146 </span>    <a href='mu.subx.html#L8147'>_Primitive-loop-if-!=-named</a>/imm32/next
-<span id="L8147" class="LineNr"> 8147 </span><span class="subxMinorFunction">_Primitive-loop-if-!=-named</span>:
-<span id="L8148" class="LineNr"> 8148 </span>    <span class="Constant">&quot;loop-if-!=&quot;</span>/imm32/name
-<span id="L8149" class="LineNr"> 8149 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8150" class="LineNr"> 8150 </span>    0/imm32/outputs
-<span id="L8151" class="LineNr"> 8151 </span>    <span class="Constant">&quot;0f 85/jump-if-!=&quot;</span>/imm32/subx-name
-<span id="L8152" class="LineNr"> 8152 </span>    0/imm32/no-rm32
-<span id="L8153" class="LineNr"> 8153 </span>    0/imm32/no-r32
-<span id="L8154" class="LineNr"> 8154 </span>    0/imm32/no-imm32
-<span id="L8155" class="LineNr"> 8155 </span>    1/imm32/disp32-is-first-inout
-<span id="L8156" class="LineNr"> 8156 </span>    0/imm32/no-output
-<span id="L8157" class="LineNr"> 8157 </span>    <a href='mu.subx.html#L8158'>_Primitive-loop-if-addr&lt;=-named</a>/imm32/next
-<span id="L8158" class="LineNr"> 8158 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&lt;=-named</span>:
-<span id="L8159" class="LineNr"> 8159 </span>    <span class="Constant">&quot;loop-if-addr&lt;=&quot;</span>/imm32/name
-<span id="L8160" class="LineNr"> 8160 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8161" class="LineNr"> 8161 </span>    0/imm32/outputs
-<span id="L8162" class="LineNr"> 8162 </span>    <span class="Constant">&quot;0f 86/jump-if-addr&lt;=&quot;</span>/imm32/subx-name
-<span id="L8163" class="LineNr"> 8163 </span>    0/imm32/no-rm32
-<span id="L8164" class="LineNr"> 8164 </span>    0/imm32/no-r32
-<span id="L8165" class="LineNr"> 8165 </span>    0/imm32/no-imm32
-<span id="L8166" class="LineNr"> 8166 </span>    1/imm32/disp32-is-first-inout
-<span id="L8167" class="LineNr"> 8167 </span>    0/imm32/no-output
-<span id="L8168" class="LineNr"> 8168 </span>    <a href='mu.subx.html#L8169'>_Primitive-loop-if-addr&gt;-named</a>/imm32/next
-<span id="L8169" class="LineNr"> 8169 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&gt;-named</span>:
-<span id="L8170" class="LineNr"> 8170 </span>    <span class="Constant">&quot;loop-if-addr&gt;&quot;</span>/imm32/name
-<span id="L8171" class="LineNr"> 8171 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8172" class="LineNr"> 8172 </span>    0/imm32/outputs
-<span id="L8173" class="LineNr"> 8173 </span>    <span class="Constant">&quot;0f 87/jump-if-addr&gt;&quot;</span>/imm32/subx-name
-<span id="L8174" class="LineNr"> 8174 </span>    0/imm32/no-rm32
-<span id="L8175" class="LineNr"> 8175 </span>    0/imm32/no-r32
-<span id="L8176" class="LineNr"> 8176 </span>    0/imm32/no-imm32
-<span id="L8177" class="LineNr"> 8177 </span>    1/imm32/disp32-is-first-inout
-<span id="L8178" class="LineNr"> 8178 </span>    0/imm32/no-output
-<span id="L8179" class="LineNr"> 8179 </span>    <a href='mu.subx.html#L8180'>_Primitive-loop-if-&lt;-named</a>/imm32/next
-<span id="L8180" class="LineNr"> 8180 </span><span class="subxMinorFunction">_Primitive-loop-if-&lt;-named</span>:
-<span id="L8181" class="LineNr"> 8181 </span>    <span class="Constant">&quot;loop-if-&lt;&quot;</span>/imm32/name
-<span id="L8182" class="LineNr"> 8182 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8183" class="LineNr"> 8183 </span>    0/imm32/outputs
-<span id="L8184" class="LineNr"> 8184 </span>    <span class="Constant">&quot;0f 8c/jump-if-&lt;&quot;</span>/imm32/subx-name
-<span id="L8185" class="LineNr"> 8185 </span>    0/imm32/no-rm32
-<span id="L8186" class="LineNr"> 8186 </span>    0/imm32/no-r32
-<span id="L8187" class="LineNr"> 8187 </span>    0/imm32/no-imm32
-<span id="L8188" class="LineNr"> 8188 </span>    1/imm32/disp32-is-first-inout
-<span id="L8189" class="LineNr"> 8189 </span>    0/imm32/no-output
-<span id="L8190" class="LineNr"> 8190 </span>    <a href='mu.subx.html#L8191'>_Primitive-loop-if-&gt;=-named</a>/imm32/next
-<span id="L8191" class="LineNr"> 8191 </span><span class="subxMinorFunction">_Primitive-loop-if-&gt;=-named</span>:
-<span id="L8192" class="LineNr"> 8192 </span>    <span class="Constant">&quot;loop-if-&gt;=&quot;</span>/imm32/name
-<span id="L8193" class="LineNr"> 8193 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8194" class="LineNr"> 8194 </span>    0/imm32/outputs
-<span id="L8195" class="LineNr"> 8195 </span>    <span class="Constant">&quot;0f 8d/jump-if-&gt;=&quot;</span>/imm32/subx-name
-<span id="L8196" class="LineNr"> 8196 </span>    0/imm32/no-rm32
-<span id="L8197" class="LineNr"> 8197 </span>    0/imm32/no-r32
-<span id="L8198" class="LineNr"> 8198 </span>    0/imm32/no-imm32
-<span id="L8199" class="LineNr"> 8199 </span>    1/imm32/disp32-is-first-inout
-<span id="L8200" class="LineNr"> 8200 </span>    0/imm32/no-output
-<span id="L8201" class="LineNr"> 8201 </span>    <a href='mu.subx.html#L8202'>_Primitive-loop-if-&lt;=-named</a>/imm32/next
-<span id="L8202" class="LineNr"> 8202 </span><span class="subxMinorFunction">_Primitive-loop-if-&lt;=-named</span>:
-<span id="L8203" class="LineNr"> 8203 </span>    <span class="Constant">&quot;loop-if-&lt;=&quot;</span>/imm32/name
-<span id="L8204" class="LineNr"> 8204 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8205" class="LineNr"> 8205 </span>    0/imm32/outputs
-<span id="L8206" class="LineNr"> 8206 </span>    <span class="Constant">&quot;0f 8e/jump-if-&lt;=&quot;</span>/imm32/subx-name
-<span id="L8207" class="LineNr"> 8207 </span>    0/imm32/no-rm32
-<span id="L8208" class="LineNr"> 8208 </span>    0/imm32/no-r32
-<span id="L8209" class="LineNr"> 8209 </span>    0/imm32/no-imm32
-<span id="L8210" class="LineNr"> 8210 </span>    1/imm32/disp32-is-first-inout
-<span id="L8211" class="LineNr"> 8211 </span>    0/imm32/no-output
-<span id="L8212" class="LineNr"> 8212 </span>    <a href='mu.subx.html#L8213'>_Primitive-loop-if-&gt;-named</a>/imm32/next
-<span id="L8213" class="LineNr"> 8213 </span><span class="subxMinorFunction">_Primitive-loop-if-&gt;-named</span>:
-<span id="L8214" class="LineNr"> 8214 </span>    <span class="Constant">&quot;loop-if-&gt;&quot;</span>/imm32/name
-<span id="L8215" class="LineNr"> 8215 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8216" class="LineNr"> 8216 </span>    0/imm32/outputs
-<span id="L8217" class="LineNr"> 8217 </span>    <span class="Constant">&quot;0f 8f/jump-if-&gt;&quot;</span>/imm32/subx-name
-<span id="L8218" class="LineNr"> 8218 </span>    0/imm32/no-rm32
-<span id="L8219" class="LineNr"> 8219 </span>    0/imm32/no-r32
-<span id="L8220" class="LineNr"> 8220 </span>    0/imm32/no-imm32
-<span id="L8221" class="LineNr"> 8221 </span>    1/imm32/disp32-is-first-inout
-<span id="L8222" class="LineNr"> 8222 </span>    0/imm32/no-output
-<span id="L8223" class="LineNr"> 8223 </span>    <a href='mu.subx.html#L8224'>_Primitive-loop-named</a>/imm32/next  <span class="subxComment"># we probably don't need an unconditional break</span>
-<span id="L8224" class="LineNr"> 8224 </span><span class="subxMinorFunction">_Primitive-loop-named</span>:
-<span id="L8225" class="LineNr"> 8225 </span>    <span class="Constant">&quot;loop&quot;</span>/imm32/name
-<span id="L8226" class="LineNr"> 8226 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/inouts
-<span id="L8227" class="LineNr"> 8227 </span>    0/imm32/outputs
-<span id="L8228" class="LineNr"> 8228 </span>    <span class="Constant">&quot;e9/jump&quot;</span>/imm32/subx-name
-<span id="L8229" class="LineNr"> 8229 </span>    0/imm32/no-rm32
-<span id="L8230" class="LineNr"> 8230 </span>    0/imm32/no-r32
-<span id="L8231" class="LineNr"> 8231 </span>    0/imm32/no-imm32
-<span id="L8232" class="LineNr"> 8232 </span>    1/imm32/disp32-is-first-inout
-<span id="L8233" class="LineNr"> 8233 </span>    0/imm32/no-output
+<span id="L6872" class="LineNr"> 6872 </span>    0f 94/set-if-= %eax
+<span id="L6873" class="LineNr"> 6873 </span>    81 4/subop/and %eax 0xff/imm32
+<span id="L6874" class="LineNr"> 6874 </span><span class="Constant">$power-of-2?:end</span>:
+<span id="L6875" class="LineNr"> 6875 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L6876" class="LineNr"> 6876 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L6877" class="LineNr"> 6877 </span>    5d/pop-to-ebp
+<span id="L6878" class="LineNr"> 6878 </span>    c3/return
+<span id="L6879" class="LineNr"> 6879 </span>
+<span id="L6880" class="LineNr"> 6880 </span><span class="subxFunction">num-shift-rights</span>:  <span class="subxComment"># n: int -&gt; result/eax: int</span>
+<span id="L6881" class="LineNr"> 6881 </span>    <span class="subxComment"># precondition: n is a positive power of 2</span>
+<span id="L6882" class="LineNr"> 6882 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L6883" class="LineNr"> 6883 </span>    55/push-ebp
+<span id="L6884" class="LineNr"> 6884 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L6885" class="LineNr"> 6885 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L6886" class="LineNr"> 6886 </span>    51/push-ecx
+<span id="L6887" class="LineNr"> 6887 </span>    <span class="subxComment"># var curr/ecx: int = n</span>
+<span id="L6888" class="LineNr"> 6888 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
+<span id="L6889" class="LineNr"> 6889 </span>    <span class="subxComment"># result = 0</span>
+<span id="L6890" class="LineNr"> 6890 </span>    b8/copy-to-eax 0/imm32
+<span id="L6891" class="LineNr"> 6891 </span>    {
+<span id="L6892" class="LineNr"> 6892 </span>      <span class="subxComment"># if (curr &lt;= 1) break</span>
+<span id="L6893" class="LineNr"> 6893 </span>      81 7/subop/compare %ecx 1/imm32
+<span id="L6894" class="LineNr"> 6894 </span>      7e/jump-if-&lt;= <span class="Constant">break</span>/disp8
+<span id="L6895" class="LineNr"> 6895 </span>      40/increment-eax
+<span id="L6896" class="LineNr"> 6896 </span>      c1/shift 5/subop/arithmetic-right %ecx 1/imm8
+<span id="L6897" class="LineNr"> 6897 </span>      eb/jump <span class="Constant">loop</span>/disp8
+<span id="L6898" class="LineNr"> 6898 </span>    }
+<span id="L6899" class="LineNr"> 6899 </span><span class="Constant">$num-shift-rights:end</span>:
+<span id="L6900" class="LineNr"> 6900 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L6901" class="LineNr"> 6901 </span>    59/pop-to-ecx
+<span id="L6902" class="LineNr"> 6902 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L6903" class="LineNr"> 6903 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L6904" class="LineNr"> 6904 </span>    5d/pop-to-ebp
+<span id="L6905" class="LineNr"> 6905 </span>    c3/return
+<span id="L6906" class="LineNr"> 6906 </span>
+<span id="L6907" class="LineNr"> 6907 </span><span class="subxFunction">print-mu-get-offset</span>:  <span class="subxComment"># out: (addr buffered-file), stmt: (handle stmt)</span>
+<span id="L6908" class="LineNr"> 6908 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L6909" class="LineNr"> 6909 </span>    55/push-ebp
+<span id="L6910" class="LineNr"> 6910 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L6911" class="LineNr"> 6911 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L6912" class="LineNr"> 6912 </span>    50/push-eax
+<span id="L6913" class="LineNr"> 6913 </span>    <span class="subxComment"># var second-inout/eax: (handle stmt-var) = stmt-&gt;inouts-&gt;next</span>
+<span id="L6914" class="LineNr"> 6914 </span>    8b/-&gt; *(ebp+0xc) 0/r32/eax
+<span id="L6915" class="LineNr"> 6915 </span>    8b/-&gt; *(eax+8) 0/r32/eax  <span class="subxComment"># Stmt1-inouts</span>
+<span id="L6916" class="LineNr"> 6916 </span>    8b/-&gt; *(eax+4) 0/r32/eax  <span class="subxComment"># Stmt-var-next</span>
+<span id="L6917" class="LineNr"> 6917 </span>    <span class="subxComment"># var output-var/eax: (handle var) = second-inout-&gt;value</span>
+<span id="L6918" class="LineNr"> 6918 </span>    8b/-&gt; *eax 0/r32/eax  <span class="subxComment"># Stmt-var-value</span>
+<span id="L6919" class="LineNr"> 6919 </span>    <span class="subxComment"># print offset</span>
+<span id="L6920" class="LineNr"> 6920 </span><span class="CommentedCode">#?     (write-buffered Stderr &quot;emitting offset from output var &quot;)</span>
+<span id="L6921" class="LineNr"> 6921 </span><span class="CommentedCode">#?     (print-int32-buffered Stderr %eax)</span>
+<span id="L6922" class="LineNr"> 6922 </span><span class="CommentedCode">#?     (write-buffered Stderr Newline)</span>
+<span id="L6923" class="LineNr"> 6923 </span><span class="CommentedCode">#?     (flush Stderr)</span>
+<span id="L6924" class="LineNr"> 6924 </span>    (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> *(ebp+8) *(eax+0xc))  <span class="subxComment"># Var-offset</span>
+<span id="L6925" class="LineNr"> 6925 </span><span class="Constant">$emit-get-offset:end</span>:
+<span id="L6926" class="LineNr"> 6926 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L6927" class="LineNr"> 6927 </span>    58/pop-to-eax
+<span id="L6928" class="LineNr"> 6928 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L6929" class="LineNr"> 6929 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L6930" class="LineNr"> 6930 </span>    5d/pop-to-ebp
+<span id="L6931" class="LineNr"> 6931 </span>    c3/return
+<span id="L6932" class="LineNr"> 6932 </span>
+<span id="L6933" class="LineNr"> 6933 </span><span class="subxFunction">emit-subx-block</span>:  <span class="subxComment"># out: (addr buffered-file), block: (handle block), vars: (addr stack (handle var))</span>
+<span id="L6934" class="LineNr"> 6934 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L6935" class="LineNr"> 6935 </span>    55/push-ebp
+<span id="L6936" class="LineNr"> 6936 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L6937" class="LineNr"> 6937 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L6938" class="LineNr"> 6938 </span>    50/push-eax
+<span id="L6939" class="LineNr"> 6939 </span>    51/push-ecx
+<span id="L6940" class="LineNr"> 6940 </span>    56/push-esi
+<span id="L6941" class="LineNr"> 6941 </span>    <span class="subxComment"># esi = block</span>
+<span id="L6942" class="LineNr"> 6942 </span>    8b/-&gt; *(ebp+0xc) 6/r32/esi
+<span id="L6943" class="LineNr"> 6943 </span>    <span class="subxComment"># var stmts/eax: (handle list stmt) = block-&gt;statements</span>
+<span id="L6944" class="LineNr"> 6944 </span>    8b/-&gt; *(esi+4) 0/r32/eax  <span class="subxComment"># Block-stmts</span>
+<span id="L6945" class="LineNr"> 6945 </span>    <span class="subxComment">#</span>
+<span id="L6946" class="LineNr"> 6946 </span>    {
+<span id="L6947" class="LineNr"> 6947 </span><span class="Constant">$emit-subx-block:check-empty</span>:
+<span id="L6948" class="LineNr"> 6948 </span>      3d/compare-eax-and 0/imm32
+<span id="L6949" class="LineNr"> 6949 </span>      0f 84/jump-if-= <span class="Constant">break</span>/disp32
+<span id="L6950" class="LineNr"> 6950 </span>      (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L6951" class="LineNr"> 6951 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;{\n&quot;</span>)
+<span id="L6952" class="LineNr"> 6952 </span>      <span class="subxComment"># var v/ecx: (addr array byte) = block-&gt;var-&gt;name</span>
+<span id="L6953" class="LineNr"> 6953 </span>      8b/-&gt; *(esi+8) 1/r32/ecx  <span class="subxComment"># Block-var</span>
+<span id="L6954" class="LineNr"> 6954 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *ecx)  <span class="subxComment"># Var-name</span>
+<span id="L6955" class="LineNr"> 6955 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;:loop:\n&quot;</span>)
+<span id="L6956" class="LineNr"> 6956 </span>      ff 0/subop/increment *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>
+<span id="L6957" class="LineNr"> 6957 </span>      (<a href='../092stack.subx.html#L110'>push</a> *(ebp+0x10) %ecx)
+<span id="L6958" class="LineNr"> 6958 </span>      (<a href='mu.subx.html#L5867'>emit-subx-stmt-list</a> *(ebp+8) %eax *(ebp+0x10))
+<span id="L6959" class="LineNr"> 6959 </span>      (<a href='../092stack.subx.html#L230'>pop</a> *(ebp+0x10))  <span class="subxComment"># =&gt; eax</span>
+<span id="L6960" class="LineNr"> 6960 </span>      ff 1/subop/decrement *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>
+<span id="L6961" class="LineNr"> 6961 </span>      (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L6962" class="LineNr"> 6962 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;}\n&quot;</span>)
+<span id="L6963" class="LineNr"> 6963 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *ecx)  <span class="subxComment"># Var-name</span>
+<span id="L6964" class="LineNr"> 6964 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;:break:\n&quot;</span>)
+<span id="L6965" class="LineNr"> 6965 </span>    }
+<span id="L6966" class="LineNr"> 6966 </span><span class="Constant">$emit-subx-block:end</span>:
+<span id="L6967" class="LineNr"> 6967 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L6968" class="LineNr"> 6968 </span>    5e/pop-to-esi
+<span id="L6969" class="LineNr"> 6969 </span>    59/pop-to-ecx
+<span id="L6970" class="LineNr"> 6970 </span>    58/pop-to-eax
+<span id="L6971" class="LineNr"> 6971 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L6972" class="LineNr"> 6972 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L6973" class="LineNr"> 6973 </span>    5d/pop-to-ebp
+<span id="L6974" class="LineNr"> 6974 </span>    c3/return
+<span id="L6975" class="LineNr"> 6975 </span>
+<span id="L6976" class="LineNr"> 6976 </span><span class="subxComment"># Primitives supported</span>
+<span id="L6977" class="LineNr"> 6977 </span><span class="subxComment"># For each operation, put variants with hard-coded registers before flexible ones.</span>
+<span id="L6978" class="LineNr"> 6978 </span>== data
+<span id="L6979" class="LineNr"> 6979 </span><span class="SpecialChar">Primitives</span>:
+<span id="L6980" class="LineNr"> 6980 </span><span class="subxH1Comment"># - increment/decrement</span>
+<span id="L6981" class="LineNr"> 6981 </span><span class="subxMinorFunction">_Primitive-inc-eax</span>:
+<span id="L6982" class="LineNr"> 6982 </span>    <span class="subxComment"># var/eax &lt;- increment =&gt; 40/increment-eax</span>
+<span id="L6983" class="LineNr"> 6983 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
+<span id="L6984" class="LineNr"> 6984 </span>    0/imm32/no-inouts
+<span id="L6985" class="LineNr"> 6985 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8274'>Single-int-var-in-eax</a></span>/imm32/outputs
+<span id="L6986" class="LineNr"> 6986 </span>    <span class="Constant">&quot;40/increment-eax&quot;</span>/imm32/subx-name
+<span id="L6987" class="LineNr"> 6987 </span>    0/imm32/no-rm32
+<span id="L6988" class="LineNr"> 6988 </span>    0/imm32/no-r32
+<span id="L6989" class="LineNr"> 6989 </span>    0/imm32/no-imm32
+<span id="L6990" class="LineNr"> 6990 </span>    0/imm32/no-disp32
+<span id="L6991" class="LineNr"> 6991 </span>    0/imm32/output-is-write-only
+<span id="L6992" class="LineNr"> 6992 </span>    <a href='mu.subx.html#L6993'>_Primitive-inc-ecx</a>/imm32/next
+<span id="L6993" class="LineNr"> 6993 </span><span class="subxMinorFunction">_Primitive-inc-ecx</span>:
+<span id="L6994" class="LineNr"> 6994 </span>    <span class="subxComment"># var/ecx &lt;- increment =&gt; 41/increment-ecx</span>
+<span id="L6995" class="LineNr"> 6995 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
+<span id="L6996" class="LineNr"> 6996 </span>    0/imm32/no-inouts
+<span id="L6997" class="LineNr"> 6997 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8285'>Single-int-var-in-ecx</a></span>/imm32/outputs
+<span id="L6998" class="LineNr"> 6998 </span>    <span class="Constant">&quot;41/increment-ecx&quot;</span>/imm32/subx-name
+<span id="L6999" class="LineNr"> 6999 </span>    0/imm32/no-rm32
+<span id="L7000" class="LineNr"> 7000 </span>    0/imm32/no-r32
+<span id="L7001" class="LineNr"> 7001 </span>    0/imm32/no-imm32
+<span id="L7002" class="LineNr"> 7002 </span>    0/imm32/no-disp32
+<span id="L7003" class="LineNr"> 7003 </span>    0/imm32/output-is-write-only
+<span id="L7004" class="LineNr"> 7004 </span>    <a href='mu.subx.html#L7005'>_Primitive-inc-edx</a>/imm32/next
+<span id="L7005" class="LineNr"> 7005 </span><span class="subxMinorFunction">_Primitive-inc-edx</span>:
+<span id="L7006" class="LineNr"> 7006 </span>    <span class="subxComment"># var/edx &lt;- increment =&gt; 42/increment-edx</span>
+<span id="L7007" class="LineNr"> 7007 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
+<span id="L7008" class="LineNr"> 7008 </span>    0/imm32/no-inouts
+<span id="L7009" class="LineNr"> 7009 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8296'>Single-int-var-in-edx</a></span>/imm32/outputs
+<span id="L7010" class="LineNr"> 7010 </span>    <span class="Constant">&quot;42/increment-edx&quot;</span>/imm32/subx-name
+<span id="L7011" class="LineNr"> 7011 </span>    0/imm32/no-rm32
+<span id="L7012" class="LineNr"> 7012 </span>    0/imm32/no-r32
+<span id="L7013" class="LineNr"> 7013 </span>    0/imm32/no-imm32
+<span id="L7014" class="LineNr"> 7014 </span>    0/imm32/no-disp32
+<span id="L7015" class="LineNr"> 7015 </span>    0/imm32/output-is-write-only
+<span id="L7016" class="LineNr"> 7016 </span>    <a href='mu.subx.html#L7017'>_Primitive-inc-ebx</a>/imm32/next
+<span id="L7017" class="LineNr"> 7017 </span><span class="subxMinorFunction">_Primitive-inc-ebx</span>:
+<span id="L7018" class="LineNr"> 7018 </span>    <span class="subxComment"># var/ebx &lt;- increment =&gt; 43/increment-ebx</span>
+<span id="L7019" class="LineNr"> 7019 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
+<span id="L7020" class="LineNr"> 7020 </span>    0/imm32/no-inouts
+<span id="L7021" class="LineNr"> 7021 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8307'>Single-int-var-in-ebx</a></span>/imm32/outputs
+<span id="L7022" class="LineNr"> 7022 </span>    <span class="Constant">&quot;43/increment-ebx&quot;</span>/imm32/subx-name
+<span id="L7023" class="LineNr"> 7023 </span>    0/imm32/no-rm32
+<span id="L7024" class="LineNr"> 7024 </span>    0/imm32/no-r32
+<span id="L7025" class="LineNr"> 7025 </span>    0/imm32/no-imm32
+<span id="L7026" class="LineNr"> 7026 </span>    0/imm32/no-disp32
+<span id="L7027" class="LineNr"> 7027 </span>    0/imm32/output-is-write-only
+<span id="L7028" class="LineNr"> 7028 </span>    <a href='mu.subx.html#L7029'>_Primitive-inc-esi</a>/imm32/next
+<span id="L7029" class="LineNr"> 7029 </span><span class="subxMinorFunction">_Primitive-inc-esi</span>:
+<span id="L7030" class="LineNr"> 7030 </span>    <span class="subxComment"># var/esi &lt;- increment =&gt; 46/increment-esi</span>
+<span id="L7031" class="LineNr"> 7031 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
+<span id="L7032" class="LineNr"> 7032 </span>    0/imm32/no-inouts
+<span id="L7033" class="LineNr"> 7033 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8318'>Single-int-var-in-esi</a></span>/imm32/outputs
+<span id="L7034" class="LineNr"> 7034 </span>    <span class="Constant">&quot;46/increment-esi&quot;</span>/imm32/subx-name
+<span id="L7035" class="LineNr"> 7035 </span>    0/imm32/no-rm32
+<span id="L7036" class="LineNr"> 7036 </span>    0/imm32/no-r32
+<span id="L7037" class="LineNr"> 7037 </span>    0/imm32/no-imm32
+<span id="L7038" class="LineNr"> 7038 </span>    0/imm32/no-disp32
+<span id="L7039" class="LineNr"> 7039 </span>    0/imm32/output-is-write-only
+<span id="L7040" class="LineNr"> 7040 </span>    <a href='mu.subx.html#L7041'>_Primitive-inc-edi</a>/imm32/next
+<span id="L7041" class="LineNr"> 7041 </span><span class="subxMinorFunction">_Primitive-inc-edi</span>:
+<span id="L7042" class="LineNr"> 7042 </span>    <span class="subxComment"># var/edi &lt;- increment =&gt; 47/increment-edi</span>
+<span id="L7043" class="LineNr"> 7043 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
+<span id="L7044" class="LineNr"> 7044 </span>    0/imm32/no-inouts
+<span id="L7045" class="LineNr"> 7045 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8329'>Single-int-var-in-edi</a></span>/imm32/outputs
+<span id="L7046" class="LineNr"> 7046 </span>    <span class="Constant">&quot;47/increment-edi&quot;</span>/imm32/subx-name
+<span id="L7047" class="LineNr"> 7047 </span>    0/imm32/no-rm32
+<span id="L7048" class="LineNr"> 7048 </span>    0/imm32/no-r32
+<span id="L7049" class="LineNr"> 7049 </span>    0/imm32/no-imm32
+<span id="L7050" class="LineNr"> 7050 </span>    0/imm32/no-disp32
+<span id="L7051" class="LineNr"> 7051 </span>    0/imm32/output-is-write-only
+<span id="L7052" class="LineNr"> 7052 </span>    <a href='mu.subx.html#L7053'>_Primitive-dec-eax</a>/imm32/next
+<span id="L7053" class="LineNr"> 7053 </span><span class="subxMinorFunction">_Primitive-dec-eax</span>:
+<span id="L7054" class="LineNr"> 7054 </span>    <span class="subxComment"># var/eax &lt;- decrement =&gt; 48/decrement-eax</span>
+<span id="L7055" class="LineNr"> 7055 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
+<span id="L7056" class="LineNr"> 7056 </span>    0/imm32/no-inouts
+<span id="L7057" class="LineNr"> 7057 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8274'>Single-int-var-in-eax</a></span>/imm32/outputs
+<span id="L7058" class="LineNr"> 7058 </span>    <span class="Constant">&quot;48/decrement-eax&quot;</span>/imm32/subx-name
+<span id="L7059" class="LineNr"> 7059 </span>    0/imm32/no-rm32
+<span id="L7060" class="LineNr"> 7060 </span>    0/imm32/no-r32
+<span id="L7061" class="LineNr"> 7061 </span>    0/imm32/no-imm32
+<span id="L7062" class="LineNr"> 7062 </span>    0/imm32/no-disp32
+<span id="L7063" class="LineNr"> 7063 </span>    0/imm32/output-is-write-only
+<span id="L7064" class="LineNr"> 7064 </span>    <a href='mu.subx.html#L7065'>_Primitive-dec-ecx</a>/imm32/next
+<span id="L7065" class="LineNr"> 7065 </span><span class="subxMinorFunction">_Primitive-dec-ecx</span>:
+<span id="L7066" class="LineNr"> 7066 </span>    <span class="subxComment"># var/ecx &lt;- decrement =&gt; 49/decrement-ecx</span>
+<span id="L7067" class="LineNr"> 7067 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
+<span id="L7068" class="LineNr"> 7068 </span>    0/imm32/no-inouts
+<span id="L7069" class="LineNr"> 7069 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8285'>Single-int-var-in-ecx</a></span>/imm32/outputs
+<span id="L7070" class="LineNr"> 7070 </span>    <span class="Constant">&quot;49/decrement-ecx&quot;</span>/imm32/subx-name
+<span id="L7071" class="LineNr"> 7071 </span>    0/imm32/no-rm32
+<span id="L7072" class="LineNr"> 7072 </span>    0/imm32/no-r32
+<span id="L7073" class="LineNr"> 7073 </span>    0/imm32/no-imm32
+<span id="L7074" class="LineNr"> 7074 </span>    0/imm32/no-disp32
+<span id="L7075" class="LineNr"> 7075 </span>    0/imm32/output-is-write-only
+<span id="L7076" class="LineNr"> 7076 </span>    <a href='mu.subx.html#L7077'>_Primitive-dec-edx</a>/imm32/next
+<span id="L7077" class="LineNr"> 7077 </span><span class="subxMinorFunction">_Primitive-dec-edx</span>:
+<span id="L7078" class="LineNr"> 7078 </span>    <span class="subxComment"># var/edx &lt;- decrement =&gt; 4a/decrement-edx</span>
+<span id="L7079" class="LineNr"> 7079 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
+<span id="L7080" class="LineNr"> 7080 </span>    0/imm32/no-inouts
+<span id="L7081" class="LineNr"> 7081 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8296'>Single-int-var-in-edx</a></span>/imm32/outputs
+<span id="L7082" class="LineNr"> 7082 </span>    <span class="Constant">&quot;4a/decrement-edx&quot;</span>/imm32/subx-name
+<span id="L7083" class="LineNr"> 7083 </span>    0/imm32/no-rm32
+<span id="L7084" class="LineNr"> 7084 </span>    0/imm32/no-r32
+<span id="L7085" class="LineNr"> 7085 </span>    0/imm32/no-imm32
+<span id="L7086" class="LineNr"> 7086 </span>    0/imm32/no-disp32
+<span id="L7087" class="LineNr"> 7087 </span>    0/imm32/output-is-write-only
+<span id="L7088" class="LineNr"> 7088 </span>    <a href='mu.subx.html#L7089'>_Primitive-dec-ebx</a>/imm32/next
+<span id="L7089" class="LineNr"> 7089 </span><span class="subxMinorFunction">_Primitive-dec-ebx</span>:
+<span id="L7090" class="LineNr"> 7090 </span>    <span class="subxComment"># var/ebx &lt;- decrement =&gt; 4b/decrement-ebx</span>
+<span id="L7091" class="LineNr"> 7091 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
+<span id="L7092" class="LineNr"> 7092 </span>    0/imm32/no-inouts
+<span id="L7093" class="LineNr"> 7093 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8307'>Single-int-var-in-ebx</a></span>/imm32/outputs
+<span id="L7094" class="LineNr"> 7094 </span>    <span class="Constant">&quot;4b/decrement-ebx&quot;</span>/imm32/subx-name
+<span id="L7095" class="LineNr"> 7095 </span>    0/imm32/no-rm32
+<span id="L7096" class="LineNr"> 7096 </span>    0/imm32/no-r32
+<span id="L7097" class="LineNr"> 7097 </span>    0/imm32/no-imm32
+<span id="L7098" class="LineNr"> 7098 </span>    0/imm32/no-disp32
+<span id="L7099" class="LineNr"> 7099 </span>    0/imm32/output-is-write-only
+<span id="L7100" class="LineNr"> 7100 </span>    <a href='mu.subx.html#L7101'>_Primitive-dec-esi</a>/imm32/next
+<span id="L7101" class="LineNr"> 7101 </span><span class="subxMinorFunction">_Primitive-dec-esi</span>:
+<span id="L7102" class="LineNr"> 7102 </span>    <span class="subxComment"># var/esi &lt;- decrement =&gt; 4e/decrement-esi</span>
+<span id="L7103" class="LineNr"> 7103 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
+<span id="L7104" class="LineNr"> 7104 </span>    0/imm32/no-inouts
+<span id="L7105" class="LineNr"> 7105 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8318'>Single-int-var-in-esi</a></span>/imm32/outputs
+<span id="L7106" class="LineNr"> 7106 </span>    <span class="Constant">&quot;4e/decrement-esi&quot;</span>/imm32/subx-name
+<span id="L7107" class="LineNr"> 7107 </span>    0/imm32/no-rm32
+<span id="L7108" class="LineNr"> 7108 </span>    0/imm32/no-r32
+<span id="L7109" class="LineNr"> 7109 </span>    0/imm32/no-imm32
+<span id="L7110" class="LineNr"> 7110 </span>    0/imm32/no-disp32
+<span id="L7111" class="LineNr"> 7111 </span>    0/imm32/output-is-write-only
+<span id="L7112" class="LineNr"> 7112 </span>    <a href='mu.subx.html#L7113'>_Primitive-dec-edi</a>/imm32/next
+<span id="L7113" class="LineNr"> 7113 </span><span class="subxMinorFunction">_Primitive-dec-edi</span>:
+<span id="L7114" class="LineNr"> 7114 </span>    <span class="subxComment"># var/edi &lt;- decrement =&gt; 4f/decrement-edi</span>
+<span id="L7115" class="LineNr"> 7115 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
+<span id="L7116" class="LineNr"> 7116 </span>    0/imm32/no-inouts
+<span id="L7117" class="LineNr"> 7117 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8329'>Single-int-var-in-edi</a></span>/imm32/outputs
+<span id="L7118" class="LineNr"> 7118 </span>    <span class="Constant">&quot;4f/decrement-edi&quot;</span>/imm32/subx-name
+<span id="L7119" class="LineNr"> 7119 </span>    0/imm32/no-rm32
+<span id="L7120" class="LineNr"> 7120 </span>    0/imm32/no-r32
+<span id="L7121" class="LineNr"> 7121 </span>    0/imm32/no-imm32
+<span id="L7122" class="LineNr"> 7122 </span>    0/imm32/no-disp32
+<span id="L7123" class="LineNr"> 7123 </span>    0/imm32/output-is-write-only
+<span id="L7124" class="LineNr"> 7124 </span>    <a href='mu.subx.html#L7125'>_Primitive-inc-mem</a>/imm32/next
+<span id="L7125" class="LineNr"> 7125 </span><span class="subxMinorFunction">_Primitive-inc-mem</span>:
+<span id="L7126" class="LineNr"> 7126 </span>    <span class="subxComment"># increment var =&gt; ff 0/subop/increment *(ebp+__)</span>
+<span id="L7127" class="LineNr"> 7127 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
+<span id="L7128" class="LineNr"> 7128 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8232'>Single-int-var-in-mem</a></span>/imm32/inouts
+<span id="L7129" class="LineNr"> 7129 </span>    0/imm32/no-outputs
+<span id="L7130" class="LineNr"> 7130 </span>    <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
+<span id="L7131" class="LineNr"> 7131 </span>    1/imm32/rm32-is-first-inout
+<span id="L7132" class="LineNr"> 7132 </span>    0/imm32/no-r32
+<span id="L7133" class="LineNr"> 7133 </span>    0/imm32/no-imm32
+<span id="L7134" class="LineNr"> 7134 </span>    0/imm32/no-disp32
+<span id="L7135" class="LineNr"> 7135 </span>    0/imm32/output-is-write-only
+<span id="L7136" class="LineNr"> 7136 </span>    <a href='mu.subx.html#L7137'>_Primitive-inc-reg</a>/imm32/next
+<span id="L7137" class="LineNr"> 7137 </span><span class="subxMinorFunction">_Primitive-inc-reg</span>:
+<span id="L7138" class="LineNr"> 7138 </span>    <span class="subxComment"># var/reg &lt;- increment =&gt; ff 0/subop/increment %__</span>
+<span id="L7139" class="LineNr"> 7139 </span>    <span class="Constant">&quot;increment&quot;</span>/imm32/name
+<span id="L7140" class="LineNr"> 7140 </span>    0/imm32/no-inouts
+<span id="L7141" class="LineNr"> 7141 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7142" class="LineNr"> 7142 </span>    <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
+<span id="L7143" class="LineNr"> 7143 </span>    3/imm32/rm32-is-first-output
+<span id="L7144" class="LineNr"> 7144 </span>    0/imm32/no-r32
+<span id="L7145" class="LineNr"> 7145 </span>    0/imm32/no-imm32
+<span id="L7146" class="LineNr"> 7146 </span>    0/imm32/no-disp32
+<span id="L7147" class="LineNr"> 7147 </span>    0/imm32/output-is-write-only
+<span id="L7148" class="LineNr"> 7148 </span>    <a href='mu.subx.html#L7149'>_Primitive-dec-mem</a>/imm32/next
+<span id="L7149" class="LineNr"> 7149 </span><span class="subxMinorFunction">_Primitive-dec-mem</span>:
+<span id="L7150" class="LineNr"> 7150 </span>    <span class="subxComment"># decrement var =&gt; ff 1/subop/decrement *(ebp+__)</span>
+<span id="L7151" class="LineNr"> 7151 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
+<span id="L7152" class="LineNr"> 7152 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8232'>Single-int-var-in-mem</a></span>/imm32/inouts
+<span id="L7153" class="LineNr"> 7153 </span>    0/imm32/no-outputs
+<span id="L7154" class="LineNr"> 7154 </span>    <span class="Constant">&quot;ff 1/subop/decrement&quot;</span>/imm32/subx-name
+<span id="L7155" class="LineNr"> 7155 </span>    1/imm32/rm32-is-first-inout
+<span id="L7156" class="LineNr"> 7156 </span>    0/imm32/no-r32
+<span id="L7157" class="LineNr"> 7157 </span>    0/imm32/no-imm32
+<span id="L7158" class="LineNr"> 7158 </span>    0/imm32/no-disp32
+<span id="L7159" class="LineNr"> 7159 </span>    0/imm32/output-is-write-only
+<span id="L7160" class="LineNr"> 7160 </span>    <a href='mu.subx.html#L7161'>_Primitive-dec-reg</a>/imm32/next
+<span id="L7161" class="LineNr"> 7161 </span><span class="subxMinorFunction">_Primitive-dec-reg</span>:
+<span id="L7162" class="LineNr"> 7162 </span>    <span class="subxComment"># var/reg &lt;- decrement =&gt; ff 1/subop/decrement %__</span>
+<span id="L7163" class="LineNr"> 7163 </span>    <span class="Constant">&quot;decrement&quot;</span>/imm32/name
+<span id="L7164" class="LineNr"> 7164 </span>    0/imm32/no-inouts
+<span id="L7165" class="LineNr"> 7165 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7166" class="LineNr"> 7166 </span>    <span class="Constant">&quot;ff 1/subop/decrement&quot;</span>/imm32/subx-name
+<span id="L7167" class="LineNr"> 7167 </span>    3/imm32/rm32-is-first-output
+<span id="L7168" class="LineNr"> 7168 </span>    0/imm32/no-r32
+<span id="L7169" class="LineNr"> 7169 </span>    0/imm32/no-imm32
+<span id="L7170" class="LineNr"> 7170 </span>    0/imm32/no-disp32
+<span id="L7171" class="LineNr"> 7171 </span>    0/imm32/output-is-write-only
+<span id="L7172" class="LineNr"> 7172 </span>    <a href='mu.subx.html#L7174'>_Primitive-add-to-eax</a>/imm32/next
+<span id="L7173" class="LineNr"> 7173 </span><span class="subxH1Comment"># - add</span>
+<span id="L7174" class="LineNr"> 7174 </span><span class="subxMinorFunction">_Primitive-add-to-eax</span>:
+<span id="L7175" class="LineNr"> 7175 </span>    <span class="subxComment"># var/eax &lt;- add lit =&gt; 05/add-to-eax lit/imm32</span>
+<span id="L7176" class="LineNr"> 7176 </span>    <span class="Constant">&quot;add&quot;</span>/imm32/name
+<span id="L7177" class="LineNr"> 7177 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7178" class="LineNr"> 7178 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8274'>Single-int-var-in-eax</a></span>/imm32/outputs
+<span id="L7179" class="LineNr"> 7179 </span>    <span class="Constant">&quot;05/add-to-eax&quot;</span>/imm32/subx-name
+<span id="L7180" class="LineNr"> 7180 </span>    0/imm32/no-rm32
+<span id="L7181" class="LineNr"> 7181 </span>    0/imm32/no-r32
+<span id="L7182" class="LineNr"> 7182 </span>    1/imm32/imm32-is-first-inout
+<span id="L7183" class="LineNr"> 7183 </span>    0/imm32/no-disp32
+<span id="L7184" class="LineNr"> 7184 </span>    0/imm32/output-is-write-only
+<span id="L7185" class="LineNr"> 7185 </span>    <a href='mu.subx.html#L7186'>_Primitive-add-reg-to-reg</a>/imm32/next
+<span id="L7186" class="LineNr"> 7186 </span><span class="subxMinorFunction">_Primitive-add-reg-to-reg</span>:
+<span id="L7187" class="LineNr"> 7187 </span>    <span class="subxComment"># var1/reg &lt;- add var2/reg =&gt; 01/add-to var1/rm32 var2/r32</span>
+<span id="L7188" class="LineNr"> 7188 </span>    <span class="Constant">&quot;add&quot;</span>/imm32/name
+<span id="L7189" class="LineNr"> 7189 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/inouts
+<span id="L7190" class="LineNr"> 7190 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7191" class="LineNr"> 7191 </span>    <span class="Constant">&quot;01/add-to&quot;</span>/imm32/subx-name
+<span id="L7192" class="LineNr"> 7192 </span>    3/imm32/rm32-is-first-output
+<span id="L7193" class="LineNr"> 7193 </span>    1/imm32/r32-is-first-inout
+<span id="L7194" class="LineNr"> 7194 </span>    0/imm32/no-imm32
+<span id="L7195" class="LineNr"> 7195 </span>    0/imm32/no-disp32
+<span id="L7196" class="LineNr"> 7196 </span>    0/imm32/output-is-write-only
+<span id="L7197" class="LineNr"> 7197 </span>    <a href='mu.subx.html#L7198'>_Primitive-add-reg-to-mem</a>/imm32/next
+<span id="L7198" class="LineNr"> 7198 </span><span class="subxMinorFunction">_Primitive-add-reg-to-mem</span>:
+<span id="L7199" class="LineNr"> 7199 </span>    <span class="subxComment"># add-to var1 var2/reg =&gt; 01/add-to var1 var2/r32</span>
+<span id="L7200" class="LineNr"> 7200 </span>    <span class="Constant">&quot;add-to&quot;</span>/imm32/name
+<span id="L7201" class="LineNr"> 7201 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8243'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
+<span id="L7202" class="LineNr"> 7202 </span>    0/imm32/outputs
+<span id="L7203" class="LineNr"> 7203 </span>    <span class="Constant">&quot;01/add-to&quot;</span>/imm32/subx-name
+<span id="L7204" class="LineNr"> 7204 </span>    1/imm32/rm32-is-first-inout
+<span id="L7205" class="LineNr"> 7205 </span>    2/imm32/r32-is-second-inout
+<span id="L7206" class="LineNr"> 7206 </span>    0/imm32/no-imm32
+<span id="L7207" class="LineNr"> 7207 </span>    0/imm32/no-disp32
+<span id="L7208" class="LineNr"> 7208 </span>    0/imm32/output-is-write-only
+<span id="L7209" class="LineNr"> 7209 </span>    <a href='mu.subx.html#L7210'>_Primitive-add-mem-to-reg</a>/imm32/next
+<span id="L7210" class="LineNr"> 7210 </span><span class="subxMinorFunction">_Primitive-add-mem-to-reg</span>:
+<span id="L7211" class="LineNr"> 7211 </span>    <span class="subxComment"># var1/reg &lt;- add var2 =&gt; 03/add var2/rm32 var1/r32</span>
+<span id="L7212" class="LineNr"> 7212 </span>    <span class="Constant">&quot;add&quot;</span>/imm32/name
+<span id="L7213" class="LineNr"> 7213 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8232'>Single-int-var-in-mem</a></span>/imm32/inouts
+<span id="L7214" class="LineNr"> 7214 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7215" class="LineNr"> 7215 </span>    <span class="Constant">&quot;03/add&quot;</span>/imm32/subx-name
+<span id="L7216" class="LineNr"> 7216 </span>    1/imm32/rm32-is-first-inout
+<span id="L7217" class="LineNr"> 7217 </span>    3/imm32/r32-is-first-output
+<span id="L7218" class="LineNr"> 7218 </span>    0/imm32/no-imm32
+<span id="L7219" class="LineNr"> 7219 </span>    0/imm32/no-disp32
+<span id="L7220" class="LineNr"> 7220 </span>    0/imm32/output-is-write-only
+<span id="L7221" class="LineNr"> 7221 </span>    <a href='mu.subx.html#L7222'>_Primitive-add-lit-to-reg</a>/imm32/next
+<span id="L7222" class="LineNr"> 7222 </span><span class="subxMinorFunction">_Primitive-add-lit-to-reg</span>:
+<span id="L7223" class="LineNr"> 7223 </span>    <span class="subxComment"># var1/reg &lt;- add lit =&gt; 81 0/subop/add var1/rm32 lit/imm32</span>
+<span id="L7224" class="LineNr"> 7224 </span>    <span class="Constant">&quot;add&quot;</span>/imm32/name
+<span id="L7225" class="LineNr"> 7225 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7226" class="LineNr"> 7226 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7227" class="LineNr"> 7227 </span>    <span class="Constant">&quot;81 0/subop/add&quot;</span>/imm32/subx-name
+<span id="L7228" class="LineNr"> 7228 </span>    3/imm32/rm32-is-first-output
+<span id="L7229" class="LineNr"> 7229 </span>    0/imm32/no-r32
+<span id="L7230" class="LineNr"> 7230 </span>    1/imm32/imm32-is-first-inout
+<span id="L7231" class="LineNr"> 7231 </span>    0/imm32/no-disp32
+<span id="L7232" class="LineNr"> 7232 </span>    0/imm32/output-is-write-only
+<span id="L7233" class="LineNr"> 7233 </span>    <a href='mu.subx.html#L7234'>_Primitive-add-lit-to-mem</a>/imm32/next
+<span id="L7234" class="LineNr"> 7234 </span><span class="subxMinorFunction">_Primitive-add-lit-to-mem</span>:
+<span id="L7235" class="LineNr"> 7235 </span>    <span class="subxComment"># add-to var1, lit =&gt; 81 0/subop/add var1/rm32 lit/imm32</span>
+<span id="L7236" class="LineNr"> 7236 </span>    <span class="Constant">&quot;add-to&quot;</span>/imm32/name
+<span id="L7237" class="LineNr"> 7237 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8255'>Int-var-and-literal</a></span>/imm32/inouts
+<span id="L7238" class="LineNr"> 7238 </span>    0/imm32/outputs
+<span id="L7239" class="LineNr"> 7239 </span>    <span class="Constant">&quot;81 0/subop/add&quot;</span>/imm32/subx-name
+<span id="L7240" class="LineNr"> 7240 </span>    1/imm32/rm32-is-first-inout
+<span id="L7241" class="LineNr"> 7241 </span>    0/imm32/no-r32
+<span id="L7242" class="LineNr"> 7242 </span>    2/imm32/imm32-is-second-inout
+<span id="L7243" class="LineNr"> 7243 </span>    0/imm32/no-disp32
+<span id="L7244" class="LineNr"> 7244 </span>    0/imm32/output-is-write-only
+<span id="L7245" class="LineNr"> 7245 </span>    <a href='mu.subx.html#L7247'>_Primitive-subtract-from-eax</a>/imm32/next
+<span id="L7246" class="LineNr"> 7246 </span><span class="subxH1Comment"># - subtract</span>
+<span id="L7247" class="LineNr"> 7247 </span><span class="subxMinorFunction">_Primitive-subtract-from-eax</span>:
+<span id="L7248" class="LineNr"> 7248 </span>    <span class="subxComment"># var/eax &lt;- subtract lit =&gt; 2d/subtract-from-eax lit/imm32</span>
+<span id="L7249" class="LineNr"> 7249 </span>    <span class="Constant">&quot;subtract&quot;</span>/imm32/name
+<span id="L7250" class="LineNr"> 7250 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7251" class="LineNr"> 7251 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8274'>Single-int-var-in-eax</a></span>/imm32/outputs
+<span id="L7252" class="LineNr"> 7252 </span>    <span class="Constant">&quot;2d/subtract-from-eax&quot;</span>/imm32/subx-name
+<span id="L7253" class="LineNr"> 7253 </span>    0/imm32/no-rm32
+<span id="L7254" class="LineNr"> 7254 </span>    0/imm32/no-r32
+<span id="L7255" class="LineNr"> 7255 </span>    1/imm32/imm32-is-first-inout
+<span id="L7256" class="LineNr"> 7256 </span>    0/imm32/no-disp32
+<span id="L7257" class="LineNr"> 7257 </span>    0/imm32/output-is-write-only
+<span id="L7258" class="LineNr"> 7258 </span>    <a href='mu.subx.html#L7259'>_Primitive-subtract-reg-from-reg</a>/imm32/next
+<span id="L7259" class="LineNr"> 7259 </span><span class="subxMinorFunction">_Primitive-subtract-reg-from-reg</span>:
+<span id="L7260" class="LineNr"> 7260 </span>    <span class="subxComment"># var1/reg &lt;- subtract var2/reg =&gt; 29/subtract-from var1/rm32 var2/r32</span>
+<span id="L7261" class="LineNr"> 7261 </span>    <span class="Constant">&quot;subtract&quot;</span>/imm32/name
+<span id="L7262" class="LineNr"> 7262 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/inouts
+<span id="L7263" class="LineNr"> 7263 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7264" class="LineNr"> 7264 </span>    <span class="Constant">&quot;29/subtract-from&quot;</span>/imm32/subx-name
+<span id="L7265" class="LineNr"> 7265 </span>    3/imm32/rm32-is-first-output
+<span id="L7266" class="LineNr"> 7266 </span>    1/imm32/r32-is-first-inout
+<span id="L7267" class="LineNr"> 7267 </span>    0/imm32/no-imm32
+<span id="L7268" class="LineNr"> 7268 </span>    0/imm32/no-disp32
+<span id="L7269" class="LineNr"> 7269 </span>    0/imm32/output-is-write-only
+<span id="L7270" class="LineNr"> 7270 </span>    <a href='mu.subx.html#L7271'>_Primitive-subtract-reg-from-mem</a>/imm32/next
+<span id="L7271" class="LineNr"> 7271 </span><span class="subxMinorFunction">_Primitive-subtract-reg-from-mem</span>:
+<span id="L7272" class="LineNr"> 7272 </span>    <span class="subxComment"># subtract-from var1 var2/reg =&gt; 29/subtract-from var1 var2/r32</span>
+<span id="L7273" class="LineNr"> 7273 </span>    <span class="Constant">&quot;subtract-from&quot;</span>/imm32/name
+<span id="L7274" class="LineNr"> 7274 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8243'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
+<span id="L7275" class="LineNr"> 7275 </span>    0/imm32/outputs
+<span id="L7276" class="LineNr"> 7276 </span>    <span class="Constant">&quot;29/subtract-from&quot;</span>/imm32/subx-name
+<span id="L7277" class="LineNr"> 7277 </span>    1/imm32/rm32-is-first-inout
+<span id="L7278" class="LineNr"> 7278 </span>    2/imm32/r32-is-second-inout
+<span id="L7279" class="LineNr"> 7279 </span>    0/imm32/no-imm32
+<span id="L7280" class="LineNr"> 7280 </span>    0/imm32/no-disp32
+<span id="L7281" class="LineNr"> 7281 </span>    0/imm32/output-is-write-only
+<span id="L7282" class="LineNr"> 7282 </span>    <a href='mu.subx.html#L7283'>_Primitive-subtract-mem-from-reg</a>/imm32/next
+<span id="L7283" class="LineNr"> 7283 </span><span class="subxMinorFunction">_Primitive-subtract-mem-from-reg</span>:
+<span id="L7284" class="LineNr"> 7284 </span>    <span class="subxComment"># var1/reg &lt;- subtract var2 =&gt; 2b/subtract var2/rm32 var1/r32</span>
+<span id="L7285" class="LineNr"> 7285 </span>    <span class="Constant">&quot;subtract&quot;</span>/imm32/name
+<span id="L7286" class="LineNr"> 7286 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8232'>Single-int-var-in-mem</a></span>/imm32/inouts
+<span id="L7287" class="LineNr"> 7287 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7288" class="LineNr"> 7288 </span>    <span class="Constant">&quot;2b/subtract&quot;</span>/imm32/subx-name
+<span id="L7289" class="LineNr"> 7289 </span>    1/imm32/rm32-is-first-inout
+<span id="L7290" class="LineNr"> 7290 </span>    3/imm32/r32-is-first-output
+<span id="L7291" class="LineNr"> 7291 </span>    0/imm32/no-imm32
+<span id="L7292" class="LineNr"> 7292 </span>    0/imm32/no-disp32
+<span id="L7293" class="LineNr"> 7293 </span>    0/imm32/output-is-write-only
+<span id="L7294" class="LineNr"> 7294 </span>    <a href='mu.subx.html#L7295'>_Primitive-subtract-lit-from-reg</a>/imm32/next
+<span id="L7295" class="LineNr"> 7295 </span><span class="subxMinorFunction">_Primitive-subtract-lit-from-reg</span>:
+<span id="L7296" class="LineNr"> 7296 </span>    <span class="subxComment"># var1/reg &lt;- subtract lit =&gt; 81 5/subop/subtract var1/rm32 lit/imm32</span>
+<span id="L7297" class="LineNr"> 7297 </span>    <span class="Constant">&quot;subtract&quot;</span>/imm32/name
+<span id="L7298" class="LineNr"> 7298 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7299" class="LineNr"> 7299 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7300" class="LineNr"> 7300 </span>    <span class="Constant">&quot;81 5/subop/subtract&quot;</span>/imm32/subx-name
+<span id="L7301" class="LineNr"> 7301 </span>    3/imm32/rm32-is-first-output
+<span id="L7302" class="LineNr"> 7302 </span>    0/imm32/no-r32
+<span id="L7303" class="LineNr"> 7303 </span>    1/imm32/imm32-is-first-inout
+<span id="L7304" class="LineNr"> 7304 </span>    0/imm32/no-disp32
+<span id="L7305" class="LineNr"> 7305 </span>    0/imm32/output-is-write-only
+<span id="L7306" class="LineNr"> 7306 </span>    <a href='mu.subx.html#L7307'>_Primitive-subtract-lit-from-mem</a>/imm32/next
+<span id="L7307" class="LineNr"> 7307 </span><span class="subxMinorFunction">_Primitive-subtract-lit-from-mem</span>:
+<span id="L7308" class="LineNr"> 7308 </span>    <span class="subxComment"># subtract-from var1, lit =&gt; 81 5/subop/subtract var1/rm32 lit/imm32</span>
+<span id="L7309" class="LineNr"> 7309 </span>    <span class="Constant">&quot;subtract-from&quot;</span>/imm32/name
+<span id="L7310" class="LineNr"> 7310 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8255'>Int-var-and-literal</a></span>/imm32/inouts
+<span id="L7311" class="LineNr"> 7311 </span>    0/imm32/outputs
+<span id="L7312" class="LineNr"> 7312 </span>    <span class="Constant">&quot;81 5/subop/subtract&quot;</span>/imm32/subx-name
+<span id="L7313" class="LineNr"> 7313 </span>    1/imm32/rm32-is-first-inout
+<span id="L7314" class="LineNr"> 7314 </span>    0/imm32/no-r32
+<span id="L7315" class="LineNr"> 7315 </span>    2/imm32/imm32-is-first-inout
+<span id="L7316" class="LineNr"> 7316 </span>    0/imm32/no-disp32
+<span id="L7317" class="LineNr"> 7317 </span>    0/imm32/output-is-write-only
+<span id="L7318" class="LineNr"> 7318 </span>    <a href='mu.subx.html#L7320'>_Primitive-and-with-eax</a>/imm32/next
+<span id="L7319" class="LineNr"> 7319 </span><span class="subxH1Comment"># - and</span>
+<span id="L7320" class="LineNr"> 7320 </span><span class="subxMinorFunction">_Primitive-and-with-eax</span>:
+<span id="L7321" class="LineNr"> 7321 </span>    <span class="subxComment"># var/eax &lt;- and lit =&gt; 25/and-with-eax lit/imm32</span>
+<span id="L7322" class="LineNr"> 7322 </span>    <span class="Constant">&quot;and&quot;</span>/imm32/name
+<span id="L7323" class="LineNr"> 7323 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7324" class="LineNr"> 7324 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8274'>Single-int-var-in-eax</a></span>/imm32/outputs
+<span id="L7325" class="LineNr"> 7325 </span>    <span class="Constant">&quot;25/and-with-eax&quot;</span>/imm32/subx-name
+<span id="L7326" class="LineNr"> 7326 </span>    0/imm32/no-rm32
+<span id="L7327" class="LineNr"> 7327 </span>    0/imm32/no-r32
+<span id="L7328" class="LineNr"> 7328 </span>    1/imm32/imm32-is-first-inout
+<span id="L7329" class="LineNr"> 7329 </span>    0/imm32/no-disp32
+<span id="L7330" class="LineNr"> 7330 </span>    0/imm32/output-is-write-only
+<span id="L7331" class="LineNr"> 7331 </span>    <a href='mu.subx.html#L7332'>_Primitive-and-reg-with-reg</a>/imm32/next
+<span id="L7332" class="LineNr"> 7332 </span><span class="subxMinorFunction">_Primitive-and-reg-with-reg</span>:
+<span id="L7333" class="LineNr"> 7333 </span>    <span class="subxComment"># var1/reg &lt;- and var2/reg =&gt; 21/and-with var1/rm32 var2/r32</span>
+<span id="L7334" class="LineNr"> 7334 </span>    <span class="Constant">&quot;and&quot;</span>/imm32/name
+<span id="L7335" class="LineNr"> 7335 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/inouts
+<span id="L7336" class="LineNr"> 7336 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7337" class="LineNr"> 7337 </span>    <span class="Constant">&quot;21/and-with&quot;</span>/imm32/subx-name
+<span id="L7338" class="LineNr"> 7338 </span>    3/imm32/rm32-is-first-output
+<span id="L7339" class="LineNr"> 7339 </span>    1/imm32/r32-is-first-inout
+<span id="L7340" class="LineNr"> 7340 </span>    0/imm32/no-imm32
+<span id="L7341" class="LineNr"> 7341 </span>    0/imm32/no-disp32
+<span id="L7342" class="LineNr"> 7342 </span>    0/imm32/output-is-write-only
+<span id="L7343" class="LineNr"> 7343 </span>    <a href='mu.subx.html#L7344'>_Primitive-and-reg-with-mem</a>/imm32/next
+<span id="L7344" class="LineNr"> 7344 </span><span class="subxMinorFunction">_Primitive-and-reg-with-mem</span>:
+<span id="L7345" class="LineNr"> 7345 </span>    <span class="subxComment"># and-with var1 var2/reg =&gt; 21/and-with var1 var2/r32</span>
+<span id="L7346" class="LineNr"> 7346 </span>    <span class="Constant">&quot;and-with&quot;</span>/imm32/name
+<span id="L7347" class="LineNr"> 7347 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8243'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
+<span id="L7348" class="LineNr"> 7348 </span>    0/imm32/outputs
+<span id="L7349" class="LineNr"> 7349 </span>    <span class="Constant">&quot;21/and-with&quot;</span>/imm32/subx-name
+<span id="L7350" class="LineNr"> 7350 </span>    1/imm32/rm32-is-first-inout
+<span id="L7351" class="LineNr"> 7351 </span>    2/imm32/r32-is-second-inout
+<span id="L7352" class="LineNr"> 7352 </span>    0/imm32/no-imm32
+<span id="L7353" class="LineNr"> 7353 </span>    0/imm32/no-disp32
+<span id="L7354" class="LineNr"> 7354 </span>    0/imm32/output-is-write-only
+<span id="L7355" class="LineNr"> 7355 </span>    <a href='mu.subx.html#L7356'>_Primitive-and-mem-with-reg</a>/imm32/next
+<span id="L7356" class="LineNr"> 7356 </span><span class="subxMinorFunction">_Primitive-and-mem-with-reg</span>:
+<span id="L7357" class="LineNr"> 7357 </span>    <span class="subxComment"># var1/reg &lt;- and var2 =&gt; 23/and var2/rm32 var1/r32</span>
+<span id="L7358" class="LineNr"> 7358 </span>    <span class="Constant">&quot;and&quot;</span>/imm32/name
+<span id="L7359" class="LineNr"> 7359 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8232'>Single-int-var-in-mem</a></span>/imm32/inouts
+<span id="L7360" class="LineNr"> 7360 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7361" class="LineNr"> 7361 </span>    <span class="Constant">&quot;23/and&quot;</span>/imm32/subx-name
+<span id="L7362" class="LineNr"> 7362 </span>    1/imm32/rm32-is-first-inout
+<span id="L7363" class="LineNr"> 7363 </span>    3/imm32/r32-is-first-output
+<span id="L7364" class="LineNr"> 7364 </span>    0/imm32/no-imm32
+<span id="L7365" class="LineNr"> 7365 </span>    0/imm32/no-disp32
+<span id="L7366" class="LineNr"> 7366 </span>    0/imm32/output-is-write-only
+<span id="L7367" class="LineNr"> 7367 </span>    <a href='mu.subx.html#L7368'>_Primitive-and-lit-with-reg</a>/imm32/next
+<span id="L7368" class="LineNr"> 7368 </span><span class="subxMinorFunction">_Primitive-and-lit-with-reg</span>:
+<span id="L7369" class="LineNr"> 7369 </span>    <span class="subxComment"># var1/reg &lt;- and lit =&gt; 81 4/subop/and var1/rm32 lit/imm32</span>
+<span id="L7370" class="LineNr"> 7370 </span>    <span class="Constant">&quot;and&quot;</span>/imm32/name
+<span id="L7371" class="LineNr"> 7371 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7372" class="LineNr"> 7372 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7373" class="LineNr"> 7373 </span>    <span class="Constant">&quot;81 4/subop/and&quot;</span>/imm32/subx-name
+<span id="L7374" class="LineNr"> 7374 </span>    3/imm32/rm32-is-first-output
+<span id="L7375" class="LineNr"> 7375 </span>    0/imm32/no-r32
+<span id="L7376" class="LineNr"> 7376 </span>    1/imm32/imm32-is-first-inout
+<span id="L7377" class="LineNr"> 7377 </span>    0/imm32/no-disp32
+<span id="L7378" class="LineNr"> 7378 </span>    0/imm32/output-is-write-only
+<span id="L7379" class="LineNr"> 7379 </span>    <a href='mu.subx.html#L7380'>_Primitive-and-lit-with-mem</a>/imm32/next
+<span id="L7380" class="LineNr"> 7380 </span><span class="subxMinorFunction">_Primitive-and-lit-with-mem</span>:
+<span id="L7381" class="LineNr"> 7381 </span>    <span class="subxComment"># and-with var1, lit =&gt; 81 4/subop/and var1/rm32 lit/imm32</span>
+<span id="L7382" class="LineNr"> 7382 </span>    <span class="Constant">&quot;and-with&quot;</span>/imm32/name
+<span id="L7383" class="LineNr"> 7383 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8255'>Int-var-and-literal</a></span>/imm32/inouts
+<span id="L7384" class="LineNr"> 7384 </span>    0/imm32/outputs
+<span id="L7385" class="LineNr"> 7385 </span>    <span class="Constant">&quot;81 4/subop/and&quot;</span>/imm32/subx-name
+<span id="L7386" class="LineNr"> 7386 </span>    1/imm32/rm32-is-first-inout
+<span id="L7387" class="LineNr"> 7387 </span>    0/imm32/no-r32
+<span id="L7388" class="LineNr"> 7388 </span>    2/imm32/imm32-is-first-inout
+<span id="L7389" class="LineNr"> 7389 </span>    0/imm32/no-disp32
+<span id="L7390" class="LineNr"> 7390 </span>    0/imm32/output-is-write-only
+<span id="L7391" class="LineNr"> 7391 </span>    <a href='mu.subx.html#L7393'>_Primitive-or-with-eax</a>/imm32/next
+<span id="L7392" class="LineNr"> 7392 </span><span class="subxH1Comment"># - or</span>
+<span id="L7393" class="LineNr"> 7393 </span><span class="subxMinorFunction">_Primitive-or-with-eax</span>:
+<span id="L7394" class="LineNr"> 7394 </span>    <span class="subxComment"># var/eax &lt;- or lit =&gt; 0d/or-with-eax lit/imm32</span>
+<span id="L7395" class="LineNr"> 7395 </span>    <span class="Constant">&quot;or&quot;</span>/imm32/name
+<span id="L7396" class="LineNr"> 7396 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7397" class="LineNr"> 7397 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8274'>Single-int-var-in-eax</a></span>/imm32/outputs
+<span id="L7398" class="LineNr"> 7398 </span>    <span class="Constant">&quot;0d/or-with-eax&quot;</span>/imm32/subx-name
+<span id="L7399" class="LineNr"> 7399 </span>    0/imm32/no-rm32
+<span id="L7400" class="LineNr"> 7400 </span>    0/imm32/no-r32
+<span id="L7401" class="LineNr"> 7401 </span>    1/imm32/imm32-is-first-inout
+<span id="L7402" class="LineNr"> 7402 </span>    0/imm32/no-disp32
+<span id="L7403" class="LineNr"> 7403 </span>    0/imm32/output-is-write-only
+<span id="L7404" class="LineNr"> 7404 </span>    <a href='mu.subx.html#L7405'>_Primitive-or-reg-with-reg</a>/imm32/next
+<span id="L7405" class="LineNr"> 7405 </span><span class="subxMinorFunction">_Primitive-or-reg-with-reg</span>:
+<span id="L7406" class="LineNr"> 7406 </span>    <span class="subxComment"># var1/reg &lt;- or var2/reg =&gt; 09/or-with var1/rm32 var2/r32</span>
+<span id="L7407" class="LineNr"> 7407 </span>    <span class="Constant">&quot;or&quot;</span>/imm32/name
+<span id="L7408" class="LineNr"> 7408 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/inouts
+<span id="L7409" class="LineNr"> 7409 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7410" class="LineNr"> 7410 </span>    <span class="Constant">&quot;09/or-with&quot;</span>/imm32/subx-name
+<span id="L7411" class="LineNr"> 7411 </span>    3/imm32/rm32-is-first-output
+<span id="L7412" class="LineNr"> 7412 </span>    1/imm32/r32-is-first-inout
+<span id="L7413" class="LineNr"> 7413 </span>    0/imm32/no-imm32
+<span id="L7414" class="LineNr"> 7414 </span>    0/imm32/no-disp32
+<span id="L7415" class="LineNr"> 7415 </span>    0/imm32/output-is-write-only
+<span id="L7416" class="LineNr"> 7416 </span>    <a href='mu.subx.html#L7417'>_Primitive-or-reg-with-mem</a>/imm32/next
+<span id="L7417" class="LineNr"> 7417 </span><span class="subxMinorFunction">_Primitive-or-reg-with-mem</span>:
+<span id="L7418" class="LineNr"> 7418 </span>    <span class="subxComment"># or-with var1 var2/reg =&gt; 09/or-with var1 var2/r32</span>
+<span id="L7419" class="LineNr"> 7419 </span>    <span class="Constant">&quot;or-with&quot;</span>/imm32/name
+<span id="L7420" class="LineNr"> 7420 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8243'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
+<span id="L7421" class="LineNr"> 7421 </span>    0/imm32/outputs
+<span id="L7422" class="LineNr"> 7422 </span>    <span class="Constant">&quot;09/or-with&quot;</span>/imm32/subx-name
+<span id="L7423" class="LineNr"> 7423 </span>    1/imm32/rm32-is-first-inout
+<span id="L7424" class="LineNr"> 7424 </span>    2/imm32/r32-is-second-inout
+<span id="L7425" class="LineNr"> 7425 </span>    0/imm32/no-imm32
+<span id="L7426" class="LineNr"> 7426 </span>    0/imm32/no-disp32
+<span id="L7427" class="LineNr"> 7427 </span>    0/imm32/output-is-write-only
+<span id="L7428" class="LineNr"> 7428 </span>    <a href='mu.subx.html#L7429'>_Primitive-or-mem-with-reg</a>/imm32/next
+<span id="L7429" class="LineNr"> 7429 </span><span class="subxMinorFunction">_Primitive-or-mem-with-reg</span>:
+<span id="L7430" class="LineNr"> 7430 </span>    <span class="subxComment"># var1/reg &lt;- or var2 =&gt; 0b/or var2/rm32 var1/r32</span>
+<span id="L7431" class="LineNr"> 7431 </span>    <span class="Constant">&quot;or&quot;</span>/imm32/name
+<span id="L7432" class="LineNr"> 7432 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8232'>Single-int-var-in-mem</a></span>/imm32/inouts
+<span id="L7433" class="LineNr"> 7433 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7434" class="LineNr"> 7434 </span>    <span class="Constant">&quot;0b/or&quot;</span>/imm32/subx-name
+<span id="L7435" class="LineNr"> 7435 </span>    1/imm32/rm32-is-first-inout
+<span id="L7436" class="LineNr"> 7436 </span>    3/imm32/r32-is-first-output
+<span id="L7437" class="LineNr"> 7437 </span>    0/imm32/no-imm32
+<span id="L7438" class="LineNr"> 7438 </span>    0/imm32/no-disp32
+<span id="L7439" class="LineNr"> 7439 </span>    0/imm32/output-is-write-only
+<span id="L7440" class="LineNr"> 7440 </span>    <a href='mu.subx.html#L7441'>_Primitive-or-lit-with-reg</a>/imm32/next
+<span id="L7441" class="LineNr"> 7441 </span><span class="subxMinorFunction">_Primitive-or-lit-with-reg</span>:
+<span id="L7442" class="LineNr"> 7442 </span>    <span class="subxComment"># var1/reg &lt;- or lit =&gt; 81 1/subop/or var1/rm32 lit/imm32</span>
+<span id="L7443" class="LineNr"> 7443 </span>    <span class="Constant">&quot;or&quot;</span>/imm32/name
+<span id="L7444" class="LineNr"> 7444 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7445" class="LineNr"> 7445 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7446" class="LineNr"> 7446 </span>    <span class="Constant">&quot;81 1/subop/or&quot;</span>/imm32/subx-name
+<span id="L7447" class="LineNr"> 7447 </span>    3/imm32/rm32-is-first-output
+<span id="L7448" class="LineNr"> 7448 </span>    0/imm32/no-r32
+<span id="L7449" class="LineNr"> 7449 </span>    1/imm32/imm32-is-first-inout
+<span id="L7450" class="LineNr"> 7450 </span>    0/imm32/no-disp32
+<span id="L7451" class="LineNr"> 7451 </span>    0/imm32/output-is-write-only
+<span id="L7452" class="LineNr"> 7452 </span>    <a href='mu.subx.html#L7453'>_Primitive-or-lit-with-mem</a>/imm32/next
+<span id="L7453" class="LineNr"> 7453 </span><span class="subxMinorFunction">_Primitive-or-lit-with-mem</span>:
+<span id="L7454" class="LineNr"> 7454 </span>    <span class="subxComment"># or-with var1, lit =&gt; 81 1/subop/or var1/rm32 lit/imm32</span>
+<span id="L7455" class="LineNr"> 7455 </span>    <span class="Constant">&quot;or-with&quot;</span>/imm32/name
+<span id="L7456" class="LineNr"> 7456 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8255'>Int-var-and-literal</a></span>/imm32/inouts
+<span id="L7457" class="LineNr"> 7457 </span>    0/imm32/outputs
+<span id="L7458" class="LineNr"> 7458 </span>    <span class="Constant">&quot;81 1/subop/or&quot;</span>/imm32/subx-name
+<span id="L7459" class="LineNr"> 7459 </span>    1/imm32/rm32-is-first-inout
+<span id="L7460" class="LineNr"> 7460 </span>    0/imm32/no-r32
+<span id="L7461" class="LineNr"> 7461 </span>    2/imm32/imm32-is-second-inout
+<span id="L7462" class="LineNr"> 7462 </span>    0/imm32/no-disp32
+<span id="L7463" class="LineNr"> 7463 </span>    0/imm32/output-is-write-only
+<span id="L7464" class="LineNr"> 7464 </span>    <a href='mu.subx.html#L7466'>_Primitive-xor-with-eax</a>/imm32/next
+<span id="L7465" class="LineNr"> 7465 </span><span class="subxH1Comment"># - xor</span>
+<span id="L7466" class="LineNr"> 7466 </span><span class="subxMinorFunction">_Primitive-xor-with-eax</span>:
+<span id="L7467" class="LineNr"> 7467 </span>    <span class="subxComment"># var/eax &lt;- xor lit =&gt; 35/xor-with-eax lit/imm32</span>
+<span id="L7468" class="LineNr"> 7468 </span>    <span class="Constant">&quot;xor&quot;</span>/imm32/name
+<span id="L7469" class="LineNr"> 7469 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7470" class="LineNr"> 7470 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8274'>Single-int-var-in-eax</a></span>/imm32/outputs
+<span id="L7471" class="LineNr"> 7471 </span>    <span class="Constant">&quot;35/xor-with-eax&quot;</span>/imm32/subx-name
+<span id="L7472" class="LineNr"> 7472 </span>    0/imm32/no-rm32
+<span id="L7473" class="LineNr"> 7473 </span>    0/imm32/no-r32
+<span id="L7474" class="LineNr"> 7474 </span>    1/imm32/imm32-is-first-inout
+<span id="L7475" class="LineNr"> 7475 </span>    0/imm32/no-disp32
+<span id="L7476" class="LineNr"> 7476 </span>    0/imm32/output-is-write-only
+<span id="L7477" class="LineNr"> 7477 </span>    <a href='mu.subx.html#L7478'>_Primitive-xor-reg-with-reg</a>/imm32/next
+<span id="L7478" class="LineNr"> 7478 </span><span class="subxMinorFunction">_Primitive-xor-reg-with-reg</span>:
+<span id="L7479" class="LineNr"> 7479 </span>    <span class="subxComment"># var1/reg &lt;- xor var2/reg =&gt; 31/xor-with var1/rm32 var2/r32</span>
+<span id="L7480" class="LineNr"> 7480 </span>    <span class="Constant">&quot;xor&quot;</span>/imm32/name
+<span id="L7481" class="LineNr"> 7481 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/inouts
+<span id="L7482" class="LineNr"> 7482 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7483" class="LineNr"> 7483 </span>    <span class="Constant">&quot;31/xor-with&quot;</span>/imm32/subx-name
+<span id="L7484" class="LineNr"> 7484 </span>    3/imm32/rm32-is-first-output
+<span id="L7485" class="LineNr"> 7485 </span>    1/imm32/r32-is-first-inout
+<span id="L7486" class="LineNr"> 7486 </span>    0/imm32/no-imm32
+<span id="L7487" class="LineNr"> 7487 </span>    0/imm32/no-disp32
+<span id="L7488" class="LineNr"> 7488 </span>    0/imm32/output-is-write-only
+<span id="L7489" class="LineNr"> 7489 </span>    <a href='mu.subx.html#L7490'>_Primitive-xor-reg-with-mem</a>/imm32/next
+<span id="L7490" class="LineNr"> 7490 </span><span class="subxMinorFunction">_Primitive-xor-reg-with-mem</span>:
+<span id="L7491" class="LineNr"> 7491 </span>    <span class="subxComment"># xor-with var1 var2/reg =&gt; 31/xor-with var1 var2/r32</span>
+<span id="L7492" class="LineNr"> 7492 </span>    <span class="Constant">&quot;xor-with&quot;</span>/imm32/name
+<span id="L7493" class="LineNr"> 7493 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8243'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
+<span id="L7494" class="LineNr"> 7494 </span>    0/imm32/outputs
+<span id="L7495" class="LineNr"> 7495 </span>    <span class="Constant">&quot;31/xor-with&quot;</span>/imm32/subx-name
+<span id="L7496" class="LineNr"> 7496 </span>    1/imm32/rm32-is-first-inout
+<span id="L7497" class="LineNr"> 7497 </span>    2/imm32/r32-is-second-inout
+<span id="L7498" class="LineNr"> 7498 </span>    0/imm32/no-imm32
+<span id="L7499" class="LineNr"> 7499 </span>    0/imm32/no-disp32
+<span id="L7500" class="LineNr"> 7500 </span>    0/imm32/output-is-write-only
+<span id="L7501" class="LineNr"> 7501 </span>    <a href='mu.subx.html#L7502'>_Primitive-xor-mem-with-reg</a>/imm32/next
+<span id="L7502" class="LineNr"> 7502 </span><span class="subxMinorFunction">_Primitive-xor-mem-with-reg</span>:
+<span id="L7503" class="LineNr"> 7503 </span>    <span class="subxComment"># var1/reg &lt;- xor var2 =&gt; 33/xor var2/rm32 var1/r32</span>
+<span id="L7504" class="LineNr"> 7504 </span>    <span class="Constant">&quot;xor&quot;</span>/imm32/name
+<span id="L7505" class="LineNr"> 7505 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8232'>Single-int-var-in-mem</a></span>/imm32/inouts
+<span id="L7506" class="LineNr"> 7506 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7507" class="LineNr"> 7507 </span>    <span class="Constant">&quot;33/xor&quot;</span>/imm32/subx-name
+<span id="L7508" class="LineNr"> 7508 </span>    1/imm32/rm32-is-first-inout
+<span id="L7509" class="LineNr"> 7509 </span>    3/imm32/r32-is-first-output
+<span id="L7510" class="LineNr"> 7510 </span>    0/imm32/no-imm32
+<span id="L7511" class="LineNr"> 7511 </span>    0/imm32/no-disp32
+<span id="L7512" class="LineNr"> 7512 </span>    0/imm32/output-is-write-only
+<span id="L7513" class="LineNr"> 7513 </span>    <a href='mu.subx.html#L7514'>_Primitive-xor-lit-with-reg</a>/imm32/next
+<span id="L7514" class="LineNr"> 7514 </span><span class="subxMinorFunction">_Primitive-xor-lit-with-reg</span>:
+<span id="L7515" class="LineNr"> 7515 </span>    <span class="subxComment"># var1/reg &lt;- xor lit =&gt; 81 6/subop/xor var1/rm32 lit/imm32</span>
+<span id="L7516" class="LineNr"> 7516 </span>    <span class="Constant">&quot;xor&quot;</span>/imm32/name
+<span id="L7517" class="LineNr"> 7517 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7518" class="LineNr"> 7518 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7519" class="LineNr"> 7519 </span>    <span class="Constant">&quot;81 6/subop/xor&quot;</span>/imm32/subx-name
+<span id="L7520" class="LineNr"> 7520 </span>    3/imm32/rm32-is-first-output
+<span id="L7521" class="LineNr"> 7521 </span>    0/imm32/no-r32
+<span id="L7522" class="LineNr"> 7522 </span>    1/imm32/imm32-is-first-inout
+<span id="L7523" class="LineNr"> 7523 </span>    0/imm32/no-disp32
+<span id="L7524" class="LineNr"> 7524 </span>    0/imm32/output-is-write-only
+<span id="L7525" class="LineNr"> 7525 </span>    <a href='mu.subx.html#L7526'>_Primitive-xor-lit-with-mem</a>/imm32/next
+<span id="L7526" class="LineNr"> 7526 </span><span class="subxMinorFunction">_Primitive-xor-lit-with-mem</span>:
+<span id="L7527" class="LineNr"> 7527 </span>    <span class="subxComment"># xor-with var1, lit =&gt; 81 6/subop/xor var1/rm32 lit/imm32</span>
+<span id="L7528" class="LineNr"> 7528 </span>    <span class="Constant">&quot;xor-with&quot;</span>/imm32/name
+<span id="L7529" class="LineNr"> 7529 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8255'>Int-var-and-literal</a></span>/imm32/inouts
+<span id="L7530" class="LineNr"> 7530 </span>    0/imm32/outputs
+<span id="L7531" class="LineNr"> 7531 </span>    <span class="Constant">&quot;81 6/subop/xor&quot;</span>/imm32/subx-name
+<span id="L7532" class="LineNr"> 7532 </span>    1/imm32/rm32-is-first-inout
+<span id="L7533" class="LineNr"> 7533 </span>    0/imm32/no-r32
+<span id="L7534" class="LineNr"> 7534 </span>    2/imm32/imm32-is-first-inout
+<span id="L7535" class="LineNr"> 7535 </span>    0/imm32/no-disp32
+<span id="L7536" class="LineNr"> 7536 </span>    0/imm32/output-is-write-only
+<span id="L7537" class="LineNr"> 7537 </span>    <a href='mu.subx.html#L7539'>_Primitive-copy-to-eax</a>/imm32/next
+<span id="L7538" class="LineNr"> 7538 </span><span class="subxH1Comment"># - copy</span>
+<span id="L7539" class="LineNr"> 7539 </span><span class="subxMinorFunction">_Primitive-copy-to-eax</span>:
+<span id="L7540" class="LineNr"> 7540 </span>    <span class="subxComment"># var/eax &lt;- copy lit =&gt; b8/copy-to-eax lit/imm32</span>
+<span id="L7541" class="LineNr"> 7541 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
+<span id="L7542" class="LineNr"> 7542 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7543" class="LineNr"> 7543 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8274'>Single-int-var-in-eax</a></span>/imm32/outputs
+<span id="L7544" class="LineNr"> 7544 </span>    <span class="Constant">&quot;b8/copy-to-eax&quot;</span>/imm32/subx-name
+<span id="L7545" class="LineNr"> 7545 </span>    0/imm32/no-rm32
+<span id="L7546" class="LineNr"> 7546 </span>    0/imm32/no-r32
+<span id="L7547" class="LineNr"> 7547 </span>    1/imm32/imm32-is-first-inout
+<span id="L7548" class="LineNr"> 7548 </span>    0/imm32/no-disp32
+<span id="L7549" class="LineNr"> 7549 </span>    1/imm32/output-is-write-only
+<span id="L7550" class="LineNr"> 7550 </span>    <a href='mu.subx.html#L7551'>_Primitive-copy-to-ecx</a>/imm32/next
+<span id="L7551" class="LineNr"> 7551 </span><span class="subxMinorFunction">_Primitive-copy-to-ecx</span>:
+<span id="L7552" class="LineNr"> 7552 </span>    <span class="subxComment"># var/ecx &lt;- copy lit =&gt; b9/copy-to-ecx lit/imm32</span>
+<span id="L7553" class="LineNr"> 7553 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
+<span id="L7554" class="LineNr"> 7554 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7555" class="LineNr"> 7555 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8285'>Single-int-var-in-ecx</a></span>/imm32/outputs
+<span id="L7556" class="LineNr"> 7556 </span>    <span class="Constant">&quot;b9/copy-to-ecx&quot;</span>/imm32/subx-name
+<span id="L7557" class="LineNr"> 7557 </span>    0/imm32/no-rm32
+<span id="L7558" class="LineNr"> 7558 </span>    0/imm32/no-r32
+<span id="L7559" class="LineNr"> 7559 </span>    1/imm32/imm32-is-first-inout
+<span id="L7560" class="LineNr"> 7560 </span>    0/imm32/no-disp32
+<span id="L7561" class="LineNr"> 7561 </span>    1/imm32/output-is-write-only
+<span id="L7562" class="LineNr"> 7562 </span>    <a href='mu.subx.html#L7563'>_Primitive-copy-to-edx</a>/imm32/next
+<span id="L7563" class="LineNr"> 7563 </span><span class="subxMinorFunction">_Primitive-copy-to-edx</span>:
+<span id="L7564" class="LineNr"> 7564 </span>    <span class="subxComment"># var/edx &lt;- copy lit =&gt; ba/copy-to-edx lit/imm32</span>
+<span id="L7565" class="LineNr"> 7565 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
+<span id="L7566" class="LineNr"> 7566 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7567" class="LineNr"> 7567 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8296'>Single-int-var-in-edx</a></span>/imm32/outputs
+<span id="L7568" class="LineNr"> 7568 </span>    <span class="Constant">&quot;ba/copy-to-edx&quot;</span>/imm32/subx-name
+<span id="L7569" class="LineNr"> 7569 </span>    0/imm32/no-rm32
+<span id="L7570" class="LineNr"> 7570 </span>    0/imm32/no-r32
+<span id="L7571" class="LineNr"> 7571 </span>    1/imm32/imm32-is-first-inout
+<span id="L7572" class="LineNr"> 7572 </span>    0/imm32/no-disp32
+<span id="L7573" class="LineNr"> 7573 </span>    1/imm32/output-is-write-only
+<span id="L7574" class="LineNr"> 7574 </span>    <a href='mu.subx.html#L7575'>_Primitive-copy-to-ebx</a>/imm32/next
+<span id="L7575" class="LineNr"> 7575 </span><span class="subxMinorFunction">_Primitive-copy-to-ebx</span>:
+<span id="L7576" class="LineNr"> 7576 </span>    <span class="subxComment"># var/ebx &lt;- copy lit =&gt; bb/copy-to-ebx lit/imm32</span>
+<span id="L7577" class="LineNr"> 7577 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
+<span id="L7578" class="LineNr"> 7578 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7579" class="LineNr"> 7579 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8307'>Single-int-var-in-ebx</a></span>/imm32/outputs
+<span id="L7580" class="LineNr"> 7580 </span>    <span class="Constant">&quot;bb/copy-to-ebx&quot;</span>/imm32/subx-name
+<span id="L7581" class="LineNr"> 7581 </span>    0/imm32/no-rm32
+<span id="L7582" class="LineNr"> 7582 </span>    0/imm32/no-r32
+<span id="L7583" class="LineNr"> 7583 </span>    1/imm32/imm32-is-first-inout
+<span id="L7584" class="LineNr"> 7584 </span>    0/imm32/no-disp32
+<span id="L7585" class="LineNr"> 7585 </span>    1/imm32/output-is-write-only
+<span id="L7586" class="LineNr"> 7586 </span>    <a href='mu.subx.html#L7587'>_Primitive-copy-to-esi</a>/imm32/next
+<span id="L7587" class="LineNr"> 7587 </span><span class="subxMinorFunction">_Primitive-copy-to-esi</span>:
+<span id="L7588" class="LineNr"> 7588 </span>    <span class="subxComment"># var/esi &lt;- copy lit =&gt; be/copy-to-esi lit/imm32</span>
+<span id="L7589" class="LineNr"> 7589 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
+<span id="L7590" class="LineNr"> 7590 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7591" class="LineNr"> 7591 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8318'>Single-int-var-in-esi</a></span>/imm32/outputs
+<span id="L7592" class="LineNr"> 7592 </span>    <span class="Constant">&quot;be/copy-to-esi&quot;</span>/imm32/subx-name
+<span id="L7593" class="LineNr"> 7593 </span>    0/imm32/no-rm32
+<span id="L7594" class="LineNr"> 7594 </span>    0/imm32/no-r32
+<span id="L7595" class="LineNr"> 7595 </span>    1/imm32/imm32-is-first-inout
+<span id="L7596" class="LineNr"> 7596 </span>    0/imm32/no-disp32
+<span id="L7597" class="LineNr"> 7597 </span>    1/imm32/output-is-write-only
+<span id="L7598" class="LineNr"> 7598 </span>    <a href='mu.subx.html#L7599'>_Primitive-copy-to-edi</a>/imm32/next
+<span id="L7599" class="LineNr"> 7599 </span><span class="subxMinorFunction">_Primitive-copy-to-edi</span>:
+<span id="L7600" class="LineNr"> 7600 </span>    <span class="subxComment"># var/edi &lt;- copy lit =&gt; bf/copy-to-edi lit/imm32</span>
+<span id="L7601" class="LineNr"> 7601 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
+<span id="L7602" class="LineNr"> 7602 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7603" class="LineNr"> 7603 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8329'>Single-int-var-in-edi</a></span>/imm32/outputs
+<span id="L7604" class="LineNr"> 7604 </span>    <span class="Constant">&quot;bf/copy-to-edi&quot;</span>/imm32/subx-name
+<span id="L7605" class="LineNr"> 7605 </span>    0/imm32/no-rm32
+<span id="L7606" class="LineNr"> 7606 </span>    0/imm32/no-r32
+<span id="L7607" class="LineNr"> 7607 </span>    1/imm32/imm32-is-first-inout
+<span id="L7608" class="LineNr"> 7608 </span>    0/imm32/no-disp32
+<span id="L7609" class="LineNr"> 7609 </span>    1/imm32/output-is-write-only
+<span id="L7610" class="LineNr"> 7610 </span>    <a href='mu.subx.html#L7611'>_Primitive-copy-reg-to-reg</a>/imm32/next
+<span id="L7611" class="LineNr"> 7611 </span><span class="subxMinorFunction">_Primitive-copy-reg-to-reg</span>:
+<span id="L7612" class="LineNr"> 7612 </span>    <span class="subxComment"># var1/reg &lt;- copy var2/reg =&gt; 89/copy-to var1/rm32 var2/r32</span>
+<span id="L7613" class="LineNr"> 7613 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
+<span id="L7614" class="LineNr"> 7614 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/inouts
+<span id="L7615" class="LineNr"> 7615 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7616" class="LineNr"> 7616 </span>    <span class="Constant">&quot;89/copy-to&quot;</span>/imm32/subx-name
+<span id="L7617" class="LineNr"> 7617 </span>    3/imm32/rm32-is-first-output
+<span id="L7618" class="LineNr"> 7618 </span>    1/imm32/r32-is-first-inout
+<span id="L7619" class="LineNr"> 7619 </span>    0/imm32/no-imm32
+<span id="L7620" class="LineNr"> 7620 </span>    0/imm32/no-disp32
+<span id="L7621" class="LineNr"> 7621 </span>    1/imm32/output-is-write-only
+<span id="L7622" class="LineNr"> 7622 </span>    <a href='mu.subx.html#L7623'>_Primitive-copy-reg-to-mem</a>/imm32/next
+<span id="L7623" class="LineNr"> 7623 </span><span class="subxMinorFunction">_Primitive-copy-reg-to-mem</span>:
+<span id="L7624" class="LineNr"> 7624 </span>    <span class="subxComment"># copy-to var1 var2/reg =&gt; 89/copy-to var1 var2/r32</span>
+<span id="L7625" class="LineNr"> 7625 </span>    <span class="Constant">&quot;copy-to&quot;</span>/imm32/name
+<span id="L7626" class="LineNr"> 7626 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8243'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
+<span id="L7627" class="LineNr"> 7627 </span>    0/imm32/outputs
+<span id="L7628" class="LineNr"> 7628 </span>    <span class="Constant">&quot;89/copy-to&quot;</span>/imm32/subx-name
+<span id="L7629" class="LineNr"> 7629 </span>    1/imm32/rm32-is-first-inout
+<span id="L7630" class="LineNr"> 7630 </span>    2/imm32/r32-is-second-inout
+<span id="L7631" class="LineNr"> 7631 </span>    0/imm32/no-imm32
+<span id="L7632" class="LineNr"> 7632 </span>    0/imm32/no-disp32
+<span id="L7633" class="LineNr"> 7633 </span>    1/imm32/output-is-write-only
+<span id="L7634" class="LineNr"> 7634 </span>    <a href='mu.subx.html#L7635'>_Primitive-copy-mem-to-reg</a>/imm32/next
+<span id="L7635" class="LineNr"> 7635 </span><span class="subxMinorFunction">_Primitive-copy-mem-to-reg</span>:
+<span id="L7636" class="LineNr"> 7636 </span>    <span class="subxComment"># var1/reg &lt;- copy var2 =&gt; 8b/copy-from var2/rm32 var1/r32</span>
+<span id="L7637" class="LineNr"> 7637 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
+<span id="L7638" class="LineNr"> 7638 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8232'>Single-int-var-in-mem</a></span>/imm32/inouts
+<span id="L7639" class="LineNr"> 7639 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7640" class="LineNr"> 7640 </span>    <span class="Constant">&quot;8b/copy-from&quot;</span>/imm32/subx-name
+<span id="L7641" class="LineNr"> 7641 </span>    1/imm32/rm32-is-first-inout
+<span id="L7642" class="LineNr"> 7642 </span>    3/imm32/r32-is-first-output
+<span id="L7643" class="LineNr"> 7643 </span>    0/imm32/no-imm32
+<span id="L7644" class="LineNr"> 7644 </span>    0/imm32/no-disp32
+<span id="L7645" class="LineNr"> 7645 </span>    1/imm32/output-is-write-only
+<span id="L7646" class="LineNr"> 7646 </span>    <a href='mu.subx.html#L7647'>_Primitive-copy-lit-to-reg</a>/imm32/next
+<span id="L7647" class="LineNr"> 7647 </span><span class="subxMinorFunction">_Primitive-copy-lit-to-reg</span>:
+<span id="L7648" class="LineNr"> 7648 </span>    <span class="subxComment"># var1/reg &lt;- copy lit =&gt; c7 0/subop/copy var1/rm32 lit/imm32</span>
+<span id="L7649" class="LineNr"> 7649 </span>    <span class="Constant">&quot;copy&quot;</span>/imm32/name
+<span id="L7650" class="LineNr"> 7650 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7651" class="LineNr"> 7651 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7652" class="LineNr"> 7652 </span>    <span class="Constant">&quot;c7 0/subop/copy&quot;</span>/imm32/subx-name
+<span id="L7653" class="LineNr"> 7653 </span>    3/imm32/rm32-is-first-output
+<span id="L7654" class="LineNr"> 7654 </span>    0/imm32/no-r32
+<span id="L7655" class="LineNr"> 7655 </span>    1/imm32/imm32-is-first-inout
+<span id="L7656" class="LineNr"> 7656 </span>    0/imm32/no-disp32
+<span id="L7657" class="LineNr"> 7657 </span>    1/imm32/output-is-write-only
+<span id="L7658" class="LineNr"> 7658 </span>    <a href='mu.subx.html#L7659'>_Primitive-copy-lit-to-mem</a>/imm32/next
+<span id="L7659" class="LineNr"> 7659 </span><span class="subxMinorFunction">_Primitive-copy-lit-to-mem</span>:
+<span id="L7660" class="LineNr"> 7660 </span>    <span class="subxComment"># copy-to var1, lit =&gt; c7 0/subop/copy var1/rm32 lit/imm32</span>
+<span id="L7661" class="LineNr"> 7661 </span>    <span class="Constant">&quot;copy-to&quot;</span>/imm32/name
+<span id="L7662" class="LineNr"> 7662 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8255'>Int-var-and-literal</a></span>/imm32/inouts
+<span id="L7663" class="LineNr"> 7663 </span>    0/imm32/outputs
+<span id="L7664" class="LineNr"> 7664 </span>    <span class="Constant">&quot;c7 0/subop/copy&quot;</span>/imm32/subx-name
+<span id="L7665" class="LineNr"> 7665 </span>    1/imm32/rm32-is-first-inout
+<span id="L7666" class="LineNr"> 7666 </span>    0/imm32/no-r32
+<span id="L7667" class="LineNr"> 7667 </span>    2/imm32/imm32-is-first-inout
+<span id="L7668" class="LineNr"> 7668 </span>    0/imm32/no-disp32
+<span id="L7669" class="LineNr"> 7669 </span>    1/imm32/output-is-write-only
+<span id="L7670" class="LineNr"> 7670 </span>    <a href='mu.subx.html#L7672'>_Primitive-compare-mem-with-reg</a>/imm32/next
+<span id="L7671" class="LineNr"> 7671 </span><span class="subxH1Comment"># - compare</span>
+<span id="L7672" class="LineNr"> 7672 </span><span class="subxMinorFunction">_Primitive-compare-mem-with-reg</span>:
+<span id="L7673" class="LineNr"> 7673 </span>    <span class="subxComment"># compare var1 var2/reg =&gt; 39/compare-&gt; var1/rm32 var2/r32</span>
+<span id="L7674" class="LineNr"> 7674 </span>    <span class="Constant">&quot;compare&quot;</span>/imm32/name
+<span id="L7675" class="LineNr"> 7675 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8243'>Two-args-int-stack-int-reg</a></span>/imm32/inouts
+<span id="L7676" class="LineNr"> 7676 </span>    0/imm32/outputs
+<span id="L7677" class="LineNr"> 7677 </span>    <span class="Constant">&quot;39/compare-&gt;&quot;</span>/imm32/subx-name
+<span id="L7678" class="LineNr"> 7678 </span>    1/imm32/rm32-is-first-inout
+<span id="L7679" class="LineNr"> 7679 </span>    2/imm32/r32-is-second-inout
+<span id="L7680" class="LineNr"> 7680 </span>    0/imm32/no-imm32
+<span id="L7681" class="LineNr"> 7681 </span>    0/imm32/no-disp32
+<span id="L7682" class="LineNr"> 7682 </span>    0/imm32/output-is-write-only
+<span id="L7683" class="LineNr"> 7683 </span>    <a href='mu.subx.html#L7684'>_Primitive-compare-reg-with-mem</a>/imm32/next
+<span id="L7684" class="LineNr"> 7684 </span><span class="subxMinorFunction">_Primitive-compare-reg-with-mem</span>:
+<span id="L7685" class="LineNr"> 7685 </span>    <span class="subxComment"># compare var1/reg var2 =&gt; 3b/compare&lt;- var2/rm32 var1/r32</span>
+<span id="L7686" class="LineNr"> 7686 </span>    <span class="Constant">&quot;compare&quot;</span>/imm32/name
+<span id="L7687" class="LineNr"> 7687 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8247'>Two-args-int-reg-int-stack</a></span>/imm32/inouts
+<span id="L7688" class="LineNr"> 7688 </span>    0/imm32/outputs
+<span id="L7689" class="LineNr"> 7689 </span>    <span class="Constant">&quot;3b/compare&lt;-&quot;</span>/imm32/subx-name
+<span id="L7690" class="LineNr"> 7690 </span>    2/imm32/rm32-is-second-inout
+<span id="L7691" class="LineNr"> 7691 </span>    1/imm32/r32-is-first-inout
+<span id="L7692" class="LineNr"> 7692 </span>    0/imm32/no-imm32
+<span id="L7693" class="LineNr"> 7693 </span>    0/imm32/no-disp32
+<span id="L7694" class="LineNr"> 7694 </span>    0/imm32/output-is-write-only
+<span id="L7695" class="LineNr"> 7695 </span>    <a href='mu.subx.html#L7696'>_Primitive-compare-eax-with-literal</a>/imm32/next
+<span id="L7696" class="LineNr"> 7696 </span><span class="subxMinorFunction">_Primitive-compare-eax-with-literal</span>:
+<span id="L7697" class="LineNr"> 7697 </span>    <span class="subxComment"># compare var1/eax n =&gt; 3d/compare-eax-with n/imm32</span>
+<span id="L7698" class="LineNr"> 7698 </span>    <span class="Constant">&quot;compare&quot;</span>/imm32/name
+<span id="L7699" class="LineNr"> 7699 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8251'>Two-args-int-eax-int-literal</a></span>/imm32/inouts
+<span id="L7700" class="LineNr"> 7700 </span>    0/imm32/outputs
+<span id="L7701" class="LineNr"> 7701 </span>    <span class="Constant">&quot;3d/compare-eax-with&quot;</span>/imm32/subx-name
+<span id="L7702" class="LineNr"> 7702 </span>    0/imm32/no-rm32
+<span id="L7703" class="LineNr"> 7703 </span>    0/imm32/no-r32
+<span id="L7704" class="LineNr"> 7704 </span>    2/imm32/imm32-is-second-inout
+<span id="L7705" class="LineNr"> 7705 </span>    0/imm32/no-disp32
+<span id="L7706" class="LineNr"> 7706 </span>    0/imm32/output-is-write-only
+<span id="L7707" class="LineNr"> 7707 </span>    <a href='mu.subx.html#L7708'>_Primitive-compare-reg-with-literal</a>/imm32/next
+<span id="L7708" class="LineNr"> 7708 </span><span class="subxMinorFunction">_Primitive-compare-reg-with-literal</span>:
+<span id="L7709" class="LineNr"> 7709 </span>    <span class="subxComment"># compare var1/reg n =&gt; 81 7/subop/compare %reg n/imm32</span>
+<span id="L7710" class="LineNr"> 7710 </span>    <span class="Constant">&quot;compare&quot;</span>/imm32/name
+<span id="L7711" class="LineNr"> 7711 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8259'>Int-var-in-register-and-literal</a></span>/imm32/inouts
+<span id="L7712" class="LineNr"> 7712 </span>    0/imm32/outputs
+<span id="L7713" class="LineNr"> 7713 </span>    <span class="Constant">&quot;81 7/subop/compare&quot;</span>/imm32/subx-name
+<span id="L7714" class="LineNr"> 7714 </span>    1/imm32/rm32-is-first-inout
+<span id="L7715" class="LineNr"> 7715 </span>    0/imm32/no-r32
+<span id="L7716" class="LineNr"> 7716 </span>    2/imm32/imm32-is-second-inout
+<span id="L7717" class="LineNr"> 7717 </span>    0/imm32/no-disp32
+<span id="L7718" class="LineNr"> 7718 </span>    0/imm32/output-is-write-only
+<span id="L7719" class="LineNr"> 7719 </span>    <a href='mu.subx.html#L7720'>_Primitive-compare-mem-with-literal</a>/imm32/next
+<span id="L7720" class="LineNr"> 7720 </span><span class="subxMinorFunction">_Primitive-compare-mem-with-literal</span>:
+<span id="L7721" class="LineNr"> 7721 </span>    <span class="subxComment"># compare var1 n =&gt; 81 7/subop/compare *(ebp+___) n/imm32</span>
+<span id="L7722" class="LineNr"> 7722 </span>    <span class="Constant">&quot;compare&quot;</span>/imm32/name
+<span id="L7723" class="LineNr"> 7723 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8255'>Int-var-and-literal</a></span>/imm32/inouts
+<span id="L7724" class="LineNr"> 7724 </span>    0/imm32/outputs
+<span id="L7725" class="LineNr"> 7725 </span>    <span class="Constant">&quot;81 7/subop/compare&quot;</span>/imm32/subx-name
+<span id="L7726" class="LineNr"> 7726 </span>    1/imm32/rm32-is-first-inout
+<span id="L7727" class="LineNr"> 7727 </span>    0/imm32/no-r32
+<span id="L7728" class="LineNr"> 7728 </span>    2/imm32/imm32-is-second-inout
+<span id="L7729" class="LineNr"> 7729 </span>    0/imm32/no-disp32
+<span id="L7730" class="LineNr"> 7730 </span>    0/imm32/output-is-write-only
+<span id="L7731" class="LineNr"> 7731 </span>    <a href='mu.subx.html#L7733'>_Primitive-multiply-reg-by-mem</a>/imm32/next
+<span id="L7732" class="LineNr"> 7732 </span><span class="subxH1Comment"># - multiply</span>
+<span id="L7733" class="LineNr"> 7733 </span><span class="subxMinorFunction">_Primitive-multiply-reg-by-mem</span>:
+<span id="L7734" class="LineNr"> 7734 </span>    <span class="subxComment"># var1/reg &lt;- multiply var2 =&gt; 0f af/multiply var2/rm32 var1/r32</span>
+<span id="L7735" class="LineNr"> 7735 </span>    <span class="Constant">&quot;multiply&quot;</span>/imm32/name
+<span id="L7736" class="LineNr"> 7736 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8232'>Single-int-var-in-mem</a></span>/imm32/inouts
+<span id="L7737" class="LineNr"> 7737 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/outputs
+<span id="L7738" class="LineNr"> 7738 </span>    <span class="Constant">&quot;0f af/multiply&quot;</span>/imm32/subx-name
+<span id="L7739" class="LineNr"> 7739 </span>    1/imm32/rm32-is-first-inout
+<span id="L7740" class="LineNr"> 7740 </span>    3/imm32/r32-is-first-output
+<span id="L7741" class="LineNr"> 7741 </span>    0/imm32/no-imm32
+<span id="L7742" class="LineNr"> 7742 </span>    0/imm32/no-disp32
+<span id="L7743" class="LineNr"> 7743 </span>    0/imm32/output-is-write-only
+<span id="L7744" class="LineNr"> 7744 </span>    <a href='mu.subx.html#L7746'>_Primitive-break-if-addr&lt;</a>/imm32/next
+<span id="L7745" class="LineNr"> 7745 </span><span class="subxH1Comment"># - branches</span>
+<span id="L7746" class="LineNr"> 7746 </span><span class="subxMinorFunction">_Primitive-break-if-addr&lt;</span>:
+<span id="L7747" class="LineNr"> 7747 </span>    <span class="Constant">&quot;break-if-addr&lt;&quot;</span>/imm32/name
+<span id="L7748" class="LineNr"> 7748 </span>    0/imm32/inouts
+<span id="L7749" class="LineNr"> 7749 </span>    0/imm32/outputs
+<span id="L7750" class="LineNr"> 7750 </span>    <span class="Constant">&quot;0f 82/jump-if-addr&lt; break/disp32&quot;</span>/imm32/subx-name
+<span id="L7751" class="LineNr"> 7751 </span>    0/imm32/no-rm32
+<span id="L7752" class="LineNr"> 7752 </span>    0/imm32/no-r32
+<span id="L7753" class="LineNr"> 7753 </span>    0/imm32/no-imm32
+<span id="L7754" class="LineNr"> 7754 </span>    0/imm32/no-disp32
+<span id="L7755" class="LineNr"> 7755 </span>    0/imm32/no-output
+<span id="L7756" class="LineNr"> 7756 </span>    <a href='mu.subx.html#L7757'>_Primitive-break-if-addr&gt;=</a>/imm32/next
+<span id="L7757" class="LineNr"> 7757 </span><span class="subxMinorFunction">_Primitive-break-if-addr&gt;=</span>:
+<span id="L7758" class="LineNr"> 7758 </span>    <span class="Constant">&quot;break-if-addr&gt;=&quot;</span>/imm32/name
+<span id="L7759" class="LineNr"> 7759 </span>    0/imm32/inouts
+<span id="L7760" class="LineNr"> 7760 </span>    0/imm32/outputs
+<span id="L7761" class="LineNr"> 7761 </span>    <span class="Constant">&quot;0f 83/jump-if-addr&gt;= break/disp32&quot;</span>/imm32/subx-name
+<span id="L7762" class="LineNr"> 7762 </span>    0/imm32/no-rm32
+<span id="L7763" class="LineNr"> 7763 </span>    0/imm32/no-r32
+<span id="L7764" class="LineNr"> 7764 </span>    0/imm32/no-imm32
+<span id="L7765" class="LineNr"> 7765 </span>    0/imm32/no-disp32
+<span id="L7766" class="LineNr"> 7766 </span>    0/imm32/no-output
+<span id="L7767" class="LineNr"> 7767 </span>    <a href='mu.subx.html#L7768'>_Primitive-break-if-=</a>/imm32/next
+<span id="L7768" class="LineNr"> 7768 </span><span class="subxMinorFunction">_Primitive-break-if-=</span>:
+<span id="L7769" class="LineNr"> 7769 </span>    <span class="Constant">&quot;break-if-=&quot;</span>/imm32/name
+<span id="L7770" class="LineNr"> 7770 </span>    0/imm32/inouts
+<span id="L7771" class="LineNr"> 7771 </span>    0/imm32/outputs
+<span id="L7772" class="LineNr"> 7772 </span>    <span class="Constant">&quot;0f 84/jump-if-= break/disp32&quot;</span>/imm32/subx-name
+<span id="L7773" class="LineNr"> 7773 </span>    0/imm32/no-rm32
+<span id="L7774" class="LineNr"> 7774 </span>    0/imm32/no-r32
+<span id="L7775" class="LineNr"> 7775 </span>    0/imm32/no-imm32
+<span id="L7776" class="LineNr"> 7776 </span>    0/imm32/no-disp32
+<span id="L7777" class="LineNr"> 7777 </span>    0/imm32/no-output
+<span id="L7778" class="LineNr"> 7778 </span>    <a href='mu.subx.html#L7779'>_Primitive-break-if-!=</a>/imm32/next
+<span id="L7779" class="LineNr"> 7779 </span><span class="subxMinorFunction">_Primitive-break-if-!=</span>:
+<span id="L7780" class="LineNr"> 7780 </span>    <span class="Constant">&quot;break-if-!=&quot;</span>/imm32/name
+<span id="L7781" class="LineNr"> 7781 </span>    0/imm32/inouts
+<span id="L7782" class="LineNr"> 7782 </span>    0/imm32/outputs
+<span id="L7783" class="LineNr"> 7783 </span>    <span class="Constant">&quot;0f 85/jump-if-!= break/disp32&quot;</span>/imm32/subx-name
+<span id="L7784" class="LineNr"> 7784 </span>    0/imm32/no-rm32
+<span id="L7785" class="LineNr"> 7785 </span>    0/imm32/no-r32
+<span id="L7786" class="LineNr"> 7786 </span>    0/imm32/no-imm32
+<span id="L7787" class="LineNr"> 7787 </span>    0/imm32/no-disp32
+<span id="L7788" class="LineNr"> 7788 </span>    0/imm32/no-output
+<span id="L7789" class="LineNr"> 7789 </span>    <a href='mu.subx.html#L7790'>_Primitive-break-if-addr&lt;=</a>/imm32/next
+<span id="L7790" class="LineNr"> 7790 </span><span class="subxMinorFunction">_Primitive-break-if-addr&lt;=</span>:
+<span id="L7791" class="LineNr"> 7791 </span>    <span class="Constant">&quot;break-if-addr&lt;=&quot;</span>/imm32/name
+<span id="L7792" class="LineNr"> 7792 </span>    0/imm32/inouts
+<span id="L7793" class="LineNr"> 7793 </span>    0/imm32/outputs
+<span id="L7794" class="LineNr"> 7794 </span>    <span class="Constant">&quot;0f 86/jump-if-addr&lt;= break/disp32&quot;</span>/imm32/subx-name
+<span id="L7795" class="LineNr"> 7795 </span>    0/imm32/no-rm32
+<span id="L7796" class="LineNr"> 7796 </span>    0/imm32/no-r32
+<span id="L7797" class="LineNr"> 7797 </span>    0/imm32/no-imm32
+<span id="L7798" class="LineNr"> 7798 </span>    0/imm32/no-disp32
+<span id="L7799" class="LineNr"> 7799 </span>    0/imm32/no-output
+<span id="L7800" class="LineNr"> 7800 </span>    <a href='mu.subx.html#L7801'>_Primitive-break-if-addr&gt;</a>/imm32/next
+<span id="L7801" class="LineNr"> 7801 </span><span class="subxMinorFunction">_Primitive-break-if-addr&gt;</span>:
+<span id="L7802" class="LineNr"> 7802 </span>    <span class="Constant">&quot;break-if-addr&gt;&quot;</span>/imm32/name
+<span id="L7803" class="LineNr"> 7803 </span>    0/imm32/inouts
+<span id="L7804" class="LineNr"> 7804 </span>    0/imm32/outputs
+<span id="L7805" class="LineNr"> 7805 </span>    <span class="Constant">&quot;0f 87/jump-if-addr&gt; break/disp32&quot;</span>/imm32/subx-name
+<span id="L7806" class="LineNr"> 7806 </span>    0/imm32/no-rm32
+<span id="L7807" class="LineNr"> 7807 </span>    0/imm32/no-r32
+<span id="L7808" class="LineNr"> 7808 </span>    0/imm32/no-imm32
+<span id="L7809" class="LineNr"> 7809 </span>    0/imm32/no-disp32
+<span id="L7810" class="LineNr"> 7810 </span>    0/imm32/no-output
+<span id="L7811" class="LineNr"> 7811 </span>    <a href='mu.subx.html#L7812'>_Primitive-break-if-&lt;</a>/imm32/next
+<span id="L7812" class="LineNr"> 7812 </span><span class="subxMinorFunction">_Primitive-break-if-&lt;</span>:
+<span id="L7813" class="LineNr"> 7813 </span>    <span class="Constant">&quot;break-if-&lt;&quot;</span>/imm32/name
+<span id="L7814" class="LineNr"> 7814 </span>    0/imm32/inouts
+<span id="L7815" class="LineNr"> 7815 </span>    0/imm32/outputs
+<span id="L7816" class="LineNr"> 7816 </span>    <span class="Constant">&quot;0f 8c/jump-if-&lt; break/disp32&quot;</span>/imm32/subx-name
+<span id="L7817" class="LineNr"> 7817 </span>    0/imm32/no-rm32
+<span id="L7818" class="LineNr"> 7818 </span>    0/imm32/no-r32
+<span id="L7819" class="LineNr"> 7819 </span>    0/imm32/no-imm32
+<span id="L7820" class="LineNr"> 7820 </span>    0/imm32/no-disp32
+<span id="L7821" class="LineNr"> 7821 </span>    0/imm32/no-output
+<span id="L7822" class="LineNr"> 7822 </span>    <a href='mu.subx.html#L7823'>_Primitive-break-if-&gt;=</a>/imm32/next
+<span id="L7823" class="LineNr"> 7823 </span><span class="subxMinorFunction">_Primitive-break-if-&gt;=</span>:
+<span id="L7824" class="LineNr"> 7824 </span>    <span class="Constant">&quot;break-if-&gt;=&quot;</span>/imm32/name
+<span id="L7825" class="LineNr"> 7825 </span>    0/imm32/inouts
+<span id="L7826" class="LineNr"> 7826 </span>    0/imm32/outputs
+<span id="L7827" class="LineNr"> 7827 </span>    <span class="Constant">&quot;0f 8d/jump-if-&gt;= break/disp32&quot;</span>/imm32/subx-name
+<span id="L7828" class="LineNr"> 7828 </span>    0/imm32/no-rm32
+<span id="L7829" class="LineNr"> 7829 </span>    0/imm32/no-r32
+<span id="L7830" class="LineNr"> 7830 </span>    0/imm32/no-imm32
+<span id="L7831" class="LineNr"> 7831 </span>    0/imm32/no-disp32
+<span id="L7832" class="LineNr"> 7832 </span>    0/imm32/no-output
+<span id="L7833" class="LineNr"> 7833 </span>    <a href='mu.subx.html#L7834'>_Primitive-break-if-&lt;=</a>/imm32/next
+<span id="L7834" class="LineNr"> 7834 </span><span class="subxMinorFunction">_Primitive-break-if-&lt;=</span>:
+<span id="L7835" class="LineNr"> 7835 </span>    <span class="Constant">&quot;break-if-&lt;=&quot;</span>/imm32/name
+<span id="L7836" class="LineNr"> 7836 </span>    0/imm32/inouts
+<span id="L7837" class="LineNr"> 7837 </span>    0/imm32/outputs
+<span id="L7838" class="LineNr"> 7838 </span>    <span class="Constant">&quot;0f 8e/jump-if-&lt;= break/disp32&quot;</span>/imm32/subx-name
+<span id="L7839" class="LineNr"> 7839 </span>    0/imm32/no-rm32
+<span id="L7840" class="LineNr"> 7840 </span>    0/imm32/no-r32
+<span id="L7841" class="LineNr"> 7841 </span>    0/imm32/no-imm32
+<span id="L7842" class="LineNr"> 7842 </span>    0/imm32/no-disp32
+<span id="L7843" class="LineNr"> 7843 </span>    0/imm32/no-output
+<span id="L7844" class="LineNr"> 7844 </span>    <a href='mu.subx.html#L7845'>_Primitive-break-if-&gt;</a>/imm32/next
+<span id="L7845" class="LineNr"> 7845 </span><span class="subxMinorFunction">_Primitive-break-if-&gt;</span>:
+<span id="L7846" class="LineNr"> 7846 </span>    <span class="Constant">&quot;break-if-&gt;&quot;</span>/imm32/name
+<span id="L7847" class="LineNr"> 7847 </span>    0/imm32/inouts
+<span id="L7848" class="LineNr"> 7848 </span>    0/imm32/outputs
+<span id="L7849" class="LineNr"> 7849 </span>    <span class="Constant">&quot;0f 8f/jump-if-&gt; break/disp32&quot;</span>/imm32/subx-name
+<span id="L7850" class="LineNr"> 7850 </span>    0/imm32/no-rm32
+<span id="L7851" class="LineNr"> 7851 </span>    0/imm32/no-r32
+<span id="L7852" class="LineNr"> 7852 </span>    0/imm32/no-imm32
+<span id="L7853" class="LineNr"> 7853 </span>    0/imm32/no-disp32
+<span id="L7854" class="LineNr"> 7854 </span>    0/imm32/no-output
+<span id="L7855" class="LineNr"> 7855 </span>    <a href='mu.subx.html#L7856'>_Primitive-break</a>/imm32/next
+<span id="L7856" class="LineNr"> 7856 </span><span class="subxMinorFunction">_Primitive-break</span>:
+<span id="L7857" class="LineNr"> 7857 </span>    <span class="Constant">&quot;break&quot;</span>/imm32/name
+<span id="L7858" class="LineNr"> 7858 </span>    0/imm32/inouts
+<span id="L7859" class="LineNr"> 7859 </span>    0/imm32/outputs
+<span id="L7860" class="LineNr"> 7860 </span>    <span class="Constant">&quot;e9/jump break/disp32&quot;</span>/imm32/subx-name
+<span id="L7861" class="LineNr"> 7861 </span>    0/imm32/no-rm32
+<span id="L7862" class="LineNr"> 7862 </span>    0/imm32/no-r32
+<span id="L7863" class="LineNr"> 7863 </span>    0/imm32/no-imm32
+<span id="L7864" class="LineNr"> 7864 </span>    0/imm32/no-disp32
+<span id="L7865" class="LineNr"> 7865 </span>    0/imm32/no-output
+<span id="L7866" class="LineNr"> 7866 </span>    <a href='mu.subx.html#L7867'>_Primitive-loop-if-addr&lt;</a>/imm32/next
+<span id="L7867" class="LineNr"> 7867 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&lt;</span>:
+<span id="L7868" class="LineNr"> 7868 </span>    <span class="Constant">&quot;loop-if-addr&lt;&quot;</span>/imm32/name
+<span id="L7869" class="LineNr"> 7869 </span>    0/imm32/inouts
+<span id="L7870" class="LineNr"> 7870 </span>    0/imm32/outputs
+<span id="L7871" class="LineNr"> 7871 </span>    <span class="Constant">&quot;0f 82/jump-if-addr&lt; loop/disp32&quot;</span>/imm32/subx-name
+<span id="L7872" class="LineNr"> 7872 </span>    0/imm32/no-rm32
+<span id="L7873" class="LineNr"> 7873 </span>    0/imm32/no-r32
+<span id="L7874" class="LineNr"> 7874 </span>    0/imm32/no-imm32
+<span id="L7875" class="LineNr"> 7875 </span>    0/imm32/no-disp32
+<span id="L7876" class="LineNr"> 7876 </span>    0/imm32/no-output
+<span id="L7877" class="LineNr"> 7877 </span>    <a href='mu.subx.html#L7878'>_Primitive-loop-if-addr&gt;=</a>/imm32/next
+<span id="L7878" class="LineNr"> 7878 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&gt;=</span>:
+<span id="L7879" class="LineNr"> 7879 </span>    <span class="Constant">&quot;loop-if-addr&gt;=&quot;</span>/imm32/name
+<span id="L7880" class="LineNr"> 7880 </span>    0/imm32/inouts
+<span id="L7881" class="LineNr"> 7881 </span>    0/imm32/outputs
+<span id="L7882" class="LineNr"> 7882 </span>    <span class="Constant">&quot;0f 83/jump-if-addr&gt;= loop/disp32&quot;</span>/imm32/subx-name
+<span id="L7883" class="LineNr"> 7883 </span>    0/imm32/no-rm32
+<span id="L7884" class="LineNr"> 7884 </span>    0/imm32/no-r32
+<span id="L7885" class="LineNr"> 7885 </span>    0/imm32/no-imm32
+<span id="L7886" class="LineNr"> 7886 </span>    0/imm32/no-disp32
+<span id="L7887" class="LineNr"> 7887 </span>    0/imm32/no-output
+<span id="L7888" class="LineNr"> 7888 </span>    <a href='mu.subx.html#L7889'>_Primitive-loop-if-=</a>/imm32/next
+<span id="L7889" class="LineNr"> 7889 </span><span class="subxMinorFunction">_Primitive-loop-if-=</span>:
+<span id="L7890" class="LineNr"> 7890 </span>    <span class="Constant">&quot;loop-if-=&quot;</span>/imm32/name
+<span id="L7891" class="LineNr"> 7891 </span>    0/imm32/inouts
+<span id="L7892" class="LineNr"> 7892 </span>    0/imm32/outputs
+<span id="L7893" class="LineNr"> 7893 </span>    <span class="Constant">&quot;0f 84/jump-if-= loop/disp32&quot;</span>/imm32/subx-name
+<span id="L7894" class="LineNr"> 7894 </span>    0/imm32/no-rm32
+<span id="L7895" class="LineNr"> 7895 </span>    0/imm32/no-r32
+<span id="L7896" class="LineNr"> 7896 </span>    0/imm32/no-imm32
+<span id="L7897" class="LineNr"> 7897 </span>    0/imm32/no-disp32
+<span id="L7898" class="LineNr"> 7898 </span>    0/imm32/no-output
+<span id="L7899" class="LineNr"> 7899 </span>    <a href='mu.subx.html#L7900'>_Primitive-loop-if-!=</a>/imm32/next
+<span id="L7900" class="LineNr"> 7900 </span><span class="subxMinorFunction">_Primitive-loop-if-!=</span>:
+<span id="L7901" class="LineNr"> 7901 </span>    <span class="Constant">&quot;loop-if-!=&quot;</span>/imm32/name
+<span id="L7902" class="LineNr"> 7902 </span>    0/imm32/inouts
+<span id="L7903" class="LineNr"> 7903 </span>    0/imm32/outputs
+<span id="L7904" class="LineNr"> 7904 </span>    <span class="Constant">&quot;0f 85/jump-if-!= loop/disp32&quot;</span>/imm32/subx-name
+<span id="L7905" class="LineNr"> 7905 </span>    0/imm32/no-rm32
+<span id="L7906" class="LineNr"> 7906 </span>    0/imm32/no-r32
+<span id="L7907" class="LineNr"> 7907 </span>    0/imm32/no-imm32
+<span id="L7908" class="LineNr"> 7908 </span>    0/imm32/no-disp32
+<span id="L7909" class="LineNr"> 7909 </span>    0/imm32/no-output
+<span id="L7910" class="LineNr"> 7910 </span>    <a href='mu.subx.html#L7911'>_Primitive-loop-if-addr&lt;=</a>/imm32/next
+<span id="L7911" class="LineNr"> 7911 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&lt;=</span>:
+<span id="L7912" class="LineNr"> 7912 </span>    <span class="Constant">&quot;loop-if-addr&lt;=&quot;</span>/imm32/name
+<span id="L7913" class="LineNr"> 7913 </span>    0/imm32/inouts
+<span id="L7914" class="LineNr"> 7914 </span>    0/imm32/outputs
+<span id="L7915" class="LineNr"> 7915 </span>    <span class="Constant">&quot;0f 86/jump-if-addr&lt;= loop/disp32&quot;</span>/imm32/subx-name
+<span id="L7916" class="LineNr"> 7916 </span>    0/imm32/no-rm32
+<span id="L7917" class="LineNr"> 7917 </span>    0/imm32/no-r32
+<span id="L7918" class="LineNr"> 7918 </span>    0/imm32/no-imm32
+<span id="L7919" class="LineNr"> 7919 </span>    0/imm32/no-disp32
+<span id="L7920" class="LineNr"> 7920 </span>    0/imm32/no-output
+<span id="L7921" class="LineNr"> 7921 </span>    <a href='mu.subx.html#L7922'>_Primitive-loop-if-addr&gt;</a>/imm32/next
+<span id="L7922" class="LineNr"> 7922 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&gt;</span>:
+<span id="L7923" class="LineNr"> 7923 </span>    <span class="Constant">&quot;loop-if-addr&gt;&quot;</span>/imm32/name
+<span id="L7924" class="LineNr"> 7924 </span>    0/imm32/inouts
+<span id="L7925" class="LineNr"> 7925 </span>    0/imm32/outputs
+<span id="L7926" class="LineNr"> 7926 </span>    <span class="Constant">&quot;0f 87/jump-if-addr&gt; loop/disp32&quot;</span>/imm32/subx-name
+<span id="L7927" class="LineNr"> 7927 </span>    0/imm32/no-rm32
+<span id="L7928" class="LineNr"> 7928 </span>    0/imm32/no-r32
+<span id="L7929" class="LineNr"> 7929 </span>    0/imm32/no-imm32
+<span id="L7930" class="LineNr"> 7930 </span>    0/imm32/no-disp32
+<span id="L7931" class="LineNr"> 7931 </span>    0/imm32/no-output
+<span id="L7932" class="LineNr"> 7932 </span>    <a href='mu.subx.html#L7933'>_Primitive-loop-if-&lt;</a>/imm32/next
+<span id="L7933" class="LineNr"> 7933 </span><span class="subxMinorFunction">_Primitive-loop-if-&lt;</span>:
+<span id="L7934" class="LineNr"> 7934 </span>    <span class="Constant">&quot;loop-if-&lt;&quot;</span>/imm32/name
+<span id="L7935" class="LineNr"> 7935 </span>    0/imm32/inouts
+<span id="L7936" class="LineNr"> 7936 </span>    0/imm32/outputs
+<span id="L7937" class="LineNr"> 7937 </span>    <span class="Constant">&quot;0f 8c/jump-if-&lt; loop/disp32&quot;</span>/imm32/subx-name
+<span id="L7938" class="LineNr"> 7938 </span>    0/imm32/no-rm32
+<span id="L7939" class="LineNr"> 7939 </span>    0/imm32/no-r32
+<span id="L7940" class="LineNr"> 7940 </span>    0/imm32/no-imm32
+<span id="L7941" class="LineNr"> 7941 </span>    0/imm32/no-disp32
+<span id="L7942" class="LineNr"> 7942 </span>    0/imm32/no-output
+<span id="L7943" class="LineNr"> 7943 </span>    <a href='mu.subx.html#L7944'>_Primitive-loop-if-&gt;=</a>/imm32/next
+<span id="L7944" class="LineNr"> 7944 </span><span class="subxMinorFunction">_Primitive-loop-if-&gt;=</span>:
+<span id="L7945" class="LineNr"> 7945 </span>    <span class="Constant">&quot;loop-if-&gt;=&quot;</span>/imm32/name
+<span id="L7946" class="LineNr"> 7946 </span>    0/imm32/inouts
+<span id="L7947" class="LineNr"> 7947 </span>    0/imm32/outputs
+<span id="L7948" class="LineNr"> 7948 </span>    <span class="Constant">&quot;0f 8d/jump-if-&gt;= loop/disp32&quot;</span>/imm32/subx-name
+<span id="L7949" class="LineNr"> 7949 </span>    0/imm32/no-rm32
+<span id="L7950" class="LineNr"> 7950 </span>    0/imm32/no-r32
+<span id="L7951" class="LineNr"> 7951 </span>    0/imm32/no-imm32
+<span id="L7952" class="LineNr"> 7952 </span>    0/imm32/no-disp32
+<span id="L7953" class="LineNr"> 7953 </span>    0/imm32/no-output
+<span id="L7954" class="LineNr"> 7954 </span>    <a href='mu.subx.html#L7955'>_Primitive-loop-if-&lt;=</a>/imm32/next
+<span id="L7955" class="LineNr"> 7955 </span><span class="subxMinorFunction">_Primitive-loop-if-&lt;=</span>:
+<span id="L7956" class="LineNr"> 7956 </span>    <span class="Constant">&quot;loop-if-&lt;=&quot;</span>/imm32/name
+<span id="L7957" class="LineNr"> 7957 </span>    0/imm32/inouts
+<span id="L7958" class="LineNr"> 7958 </span>    0/imm32/outputs
+<span id="L7959" class="LineNr"> 7959 </span>    <span class="Constant">&quot;0f 8e/jump-if-&lt;= loop/disp32&quot;</span>/imm32/subx-name
+<span id="L7960" class="LineNr"> 7960 </span>    0/imm32/no-rm32
+<span id="L7961" class="LineNr"> 7961 </span>    0/imm32/no-r32
+<span id="L7962" class="LineNr"> 7962 </span>    0/imm32/no-imm32
+<span id="L7963" class="LineNr"> 7963 </span>    0/imm32/no-disp32
+<span id="L7964" class="LineNr"> 7964 </span>    0/imm32/no-output
+<span id="L7965" class="LineNr"> 7965 </span>    <a href='mu.subx.html#L7966'>_Primitive-loop-if-&gt;</a>/imm32/next
+<span id="L7966" class="LineNr"> 7966 </span><span class="subxMinorFunction">_Primitive-loop-if-&gt;</span>:
+<span id="L7967" class="LineNr"> 7967 </span>    <span class="Constant">&quot;loop-if-&gt;&quot;</span>/imm32/name
+<span id="L7968" class="LineNr"> 7968 </span>    0/imm32/inouts
+<span id="L7969" class="LineNr"> 7969 </span>    0/imm32/outputs
+<span id="L7970" class="LineNr"> 7970 </span>    <span class="Constant">&quot;0f 8f/jump-if-&gt; loop/disp32&quot;</span>/imm32/subx-name
+<span id="L7971" class="LineNr"> 7971 </span>    0/imm32/no-rm32
+<span id="L7972" class="LineNr"> 7972 </span>    0/imm32/no-r32
+<span id="L7973" class="LineNr"> 7973 </span>    0/imm32/no-imm32
+<span id="L7974" class="LineNr"> 7974 </span>    0/imm32/no-disp32
+<span id="L7975" class="LineNr"> 7975 </span>    0/imm32/no-output
+<span id="L7976" class="LineNr"> 7976 </span>    <a href='mu.subx.html#L7977'>_Primitive-loop</a>/imm32/next  <span class="subxComment"># we probably don't need an unconditional break</span>
+<span id="L7977" class="LineNr"> 7977 </span><span class="subxMinorFunction">_Primitive-loop</span>:
+<span id="L7978" class="LineNr"> 7978 </span>    <span class="Constant">&quot;loop&quot;</span>/imm32/name
+<span id="L7979" class="LineNr"> 7979 </span>    0/imm32/inouts
+<span id="L7980" class="LineNr"> 7980 </span>    0/imm32/outputs
+<span id="L7981" class="LineNr"> 7981 </span>    <span class="Constant">&quot;e9/jump loop/disp32&quot;</span>/imm32/subx-name
+<span id="L7982" class="LineNr"> 7982 </span>    0/imm32/no-rm32
+<span id="L7983" class="LineNr"> 7983 </span>    0/imm32/no-r32
+<span id="L7984" class="LineNr"> 7984 </span>    0/imm32/no-imm32
+<span id="L7985" class="LineNr"> 7985 </span>    0/imm32/no-disp32
+<span id="L7986" class="LineNr"> 7986 </span>    0/imm32/no-output
+<span id="L7987" class="LineNr"> 7987 </span>    <a href='mu.subx.html#L7989'>_Primitive-break-if-addr&lt;-named</a>/imm32/next
+<span id="L7988" class="LineNr"> 7988 </span><span class="subxH1Comment"># - branches to named blocks</span>
+<span id="L7989" class="LineNr"> 7989 </span><span class="subxMinorFunction">_Primitive-break-if-addr&lt;-named</span>:
+<span id="L7990" class="LineNr"> 7990 </span>    <span class="Constant">&quot;break-if-addr&lt;&quot;</span>/imm32/name
+<span id="L7991" class="LineNr"> 7991 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L7992" class="LineNr"> 7992 </span>    0/imm32/outputs
+<span id="L7993" class="LineNr"> 7993 </span>    <span class="Constant">&quot;0f 82/jump-if-addr&lt;&quot;</span>/imm32/subx-name
+<span id="L7994" class="LineNr"> 7994 </span>    0/imm32/no-rm32
+<span id="L7995" class="LineNr"> 7995 </span>    0/imm32/no-r32
+<span id="L7996" class="LineNr"> 7996 </span>    0/imm32/no-imm32
+<span id="L7997" class="LineNr"> 7997 </span>    1/imm32/disp32-is-first-inout
+<span id="L7998" class="LineNr"> 7998 </span>    0/imm32/no-output
+<span id="L7999" class="LineNr"> 7999 </span>    <a href='mu.subx.html#L8000'>_Primitive-break-if-addr&gt;=-named</a>/imm32/next
+<span id="L8000" class="LineNr"> 8000 </span><span class="subxMinorFunction">_Primitive-break-if-addr&gt;=-named</span>:
+<span id="L8001" class="LineNr"> 8001 </span>    <span class="Constant">&quot;break-if-addr&gt;=&quot;</span>/imm32/name
+<span id="L8002" class="LineNr"> 8002 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8003" class="LineNr"> 8003 </span>    0/imm32/outputs
+<span id="L8004" class="LineNr"> 8004 </span>    <span class="Constant">&quot;0f 83/jump-if-addr&gt;=&quot;</span>/imm32/subx-name
+<span id="L8005" class="LineNr"> 8005 </span>    0/imm32/no-rm32
+<span id="L8006" class="LineNr"> 8006 </span>    0/imm32/no-r32
+<span id="L8007" class="LineNr"> 8007 </span>    0/imm32/no-imm32
+<span id="L8008" class="LineNr"> 8008 </span>    1/imm32/disp32-is-first-inout
+<span id="L8009" class="LineNr"> 8009 </span>    0/imm32/no-output
+<span id="L8010" class="LineNr"> 8010 </span>    <a href='mu.subx.html#L8011'>_Primitive-break-if-=-named</a>/imm32/next
+<span id="L8011" class="LineNr"> 8011 </span><span class="subxMinorFunction">_Primitive-break-if-=-named</span>:
+<span id="L8012" class="LineNr"> 8012 </span>    <span class="Constant">&quot;break-if-=&quot;</span>/imm32/name
+<span id="L8013" class="LineNr"> 8013 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8014" class="LineNr"> 8014 </span>    0/imm32/outputs
+<span id="L8015" class="LineNr"> 8015 </span>    <span class="Constant">&quot;0f 84/jump-if-=&quot;</span>/imm32/subx-name
+<span id="L8016" class="LineNr"> 8016 </span>    0/imm32/no-rm32
+<span id="L8017" class="LineNr"> 8017 </span>    0/imm32/no-r32
+<span id="L8018" class="LineNr"> 8018 </span>    0/imm32/no-imm32
+<span id="L8019" class="LineNr"> 8019 </span>    1/imm32/disp32-is-first-inout
+<span id="L8020" class="LineNr"> 8020 </span>    0/imm32/no-output
+<span id="L8021" class="LineNr"> 8021 </span>    <a href='mu.subx.html#L8022'>_Primitive-break-if-!=-named</a>/imm32/next
+<span id="L8022" class="LineNr"> 8022 </span><span class="subxMinorFunction">_Primitive-break-if-!=-named</span>:
+<span id="L8023" class="LineNr"> 8023 </span>    <span class="Constant">&quot;break-if-!=&quot;</span>/imm32/name
+<span id="L8024" class="LineNr"> 8024 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8025" class="LineNr"> 8025 </span>    0/imm32/outputs
+<span id="L8026" class="LineNr"> 8026 </span>    <span class="Constant">&quot;0f 85/jump-if-!=&quot;</span>/imm32/subx-name
+<span id="L8027" class="LineNr"> 8027 </span>    0/imm32/no-rm32
+<span id="L8028" class="LineNr"> 8028 </span>    0/imm32/no-r32
+<span id="L8029" class="LineNr"> 8029 </span>    0/imm32/no-imm32
+<span id="L8030" class="LineNr"> 8030 </span>    1/imm32/disp32-is-first-inout
+<span id="L8031" class="LineNr"> 8031 </span>    0/imm32/no-output
+<span id="L8032" class="LineNr"> 8032 </span>    <a href='mu.subx.html#L8033'>_Primitive-break-if-addr&lt;=-named</a>/imm32/next
+<span id="L8033" class="LineNr"> 8033 </span><span class="subxMinorFunction">_Primitive-break-if-addr&lt;=-named</span>:
+<span id="L8034" class="LineNr"> 8034 </span>    <span class="Constant">&quot;break-if-addr&lt;=&quot;</span>/imm32/name
+<span id="L8035" class="LineNr"> 8035 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8036" class="LineNr"> 8036 </span>    0/imm32/outputs
+<span id="L8037" class="LineNr"> 8037 </span>    <span class="Constant">&quot;0f 86/jump-if-addr&lt;=&quot;</span>/imm32/subx-name
+<span id="L8038" class="LineNr"> 8038 </span>    0/imm32/no-rm32
+<span id="L8039" class="LineNr"> 8039 </span>    0/imm32/no-r32
+<span id="L8040" class="LineNr"> 8040 </span>    0/imm32/no-imm32
+<span id="L8041" class="LineNr"> 8041 </span>    1/imm32/disp32-is-first-inout
+<span id="L8042" class="LineNr"> 8042 </span>    0/imm32/no-output
+<span id="L8043" class="LineNr"> 8043 </span>    <a href='mu.subx.html#L8044'>_Primitive-break-if-addr&gt;-named</a>/imm32/next
+<span id="L8044" class="LineNr"> 8044 </span><span class="subxMinorFunction">_Primitive-break-if-addr&gt;-named</span>:
+<span id="L8045" class="LineNr"> 8045 </span>    <span class="Constant">&quot;break-if-addr&gt;&quot;</span>/imm32/name
+<span id="L8046" class="LineNr"> 8046 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8047" class="LineNr"> 8047 </span>    0/imm32/outputs
+<span id="L8048" class="LineNr"> 8048 </span>    <span class="Constant">&quot;0f 87/jump-if-addr&gt;&quot;</span>/imm32/subx-name
+<span id="L8049" class="LineNr"> 8049 </span>    0/imm32/no-rm32
+<span id="L8050" class="LineNr"> 8050 </span>    0/imm32/no-r32
+<span id="L8051" class="LineNr"> 8051 </span>    0/imm32/no-imm32
+<span id="L8052" class="LineNr"> 8052 </span>    1/imm32/disp32-is-first-inout
+<span id="L8053" class="LineNr"> 8053 </span>    0/imm32/no-output
+<span id="L8054" class="LineNr"> 8054 </span>    <a href='mu.subx.html#L8055'>_Primitive-break-if-&lt;-named</a>/imm32/next
+<span id="L8055" class="LineNr"> 8055 </span><span class="subxMinorFunction">_Primitive-break-if-&lt;-named</span>:
+<span id="L8056" class="LineNr"> 8056 </span>    <span class="Constant">&quot;break-if-&lt;&quot;</span>/imm32/name
+<span id="L8057" class="LineNr"> 8057 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8058" class="LineNr"> 8058 </span>    0/imm32/outputs
+<span id="L8059" class="LineNr"> 8059 </span>    <span class="Constant">&quot;0f 8c/jump-if-&lt;&quot;</span>/imm32/subx-name
+<span id="L8060" class="LineNr"> 8060 </span>    0/imm32/no-rm32
+<span id="L8061" class="LineNr"> 8061 </span>    0/imm32/no-r32
+<span id="L8062" class="LineNr"> 8062 </span>    0/imm32/no-imm32
+<span id="L8063" class="LineNr"> 8063 </span>    1/imm32/disp32-is-first-inout
+<span id="L8064" class="LineNr"> 8064 </span>    0/imm32/no-output
+<span id="L8065" class="LineNr"> 8065 </span>    <a href='mu.subx.html#L8066'>_Primitive-break-if-&gt;=-named</a>/imm32/next
+<span id="L8066" class="LineNr"> 8066 </span><span class="subxMinorFunction">_Primitive-break-if-&gt;=-named</span>:
+<span id="L8067" class="LineNr"> 8067 </span>    <span class="Constant">&quot;break-if-&gt;=&quot;</span>/imm32/name
+<span id="L8068" class="LineNr"> 8068 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8069" class="LineNr"> 8069 </span>    0/imm32/outputs
+<span id="L8070" class="LineNr"> 8070 </span>    <span class="Constant">&quot;0f 8d/jump-if-&gt;=&quot;</span>/imm32/subx-name
+<span id="L8071" class="LineNr"> 8071 </span>    0/imm32/no-rm32
+<span id="L8072" class="LineNr"> 8072 </span>    0/imm32/no-r32
+<span id="L8073" class="LineNr"> 8073 </span>    0/imm32/no-imm32
+<span id="L8074" class="LineNr"> 8074 </span>    1/imm32/disp32-is-first-inout
+<span id="L8075" class="LineNr"> 8075 </span>    0/imm32/no-output
+<span id="L8076" class="LineNr"> 8076 </span>    <a href='mu.subx.html#L8077'>_Primitive-break-if-&lt;=-named</a>/imm32/next
+<span id="L8077" class="LineNr"> 8077 </span><span class="subxMinorFunction">_Primitive-break-if-&lt;=-named</span>:
+<span id="L8078" class="LineNr"> 8078 </span>    <span class="Constant">&quot;break-if-&lt;=&quot;</span>/imm32/name
+<span id="L8079" class="LineNr"> 8079 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8080" class="LineNr"> 8080 </span>    0/imm32/outputs
+<span id="L8081" class="LineNr"> 8081 </span>    <span class="Constant">&quot;0f 8e/jump-if-&lt;=&quot;</span>/imm32/subx-name
+<span id="L8082" class="LineNr"> 8082 </span>    0/imm32/no-rm32
+<span id="L8083" class="LineNr"> 8083 </span>    0/imm32/no-r32
+<span id="L8084" class="LineNr"> 8084 </span>    0/imm32/no-imm32
+<span id="L8085" class="LineNr"> 8085 </span>    1/imm32/disp32-is-first-inout
+<span id="L8086" class="LineNr"> 8086 </span>    0/imm32/no-output
+<span id="L8087" class="LineNr"> 8087 </span>    <a href='mu.subx.html#L8088'>_Primitive-break-if-&gt;-named</a>/imm32/next
+<span id="L8088" class="LineNr"> 8088 </span><span class="subxMinorFunction">_Primitive-break-if-&gt;-named</span>:
+<span id="L8089" class="LineNr"> 8089 </span>    <span class="Constant">&quot;break-if-&gt;&quot;</span>/imm32/name
+<span id="L8090" class="LineNr"> 8090 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8091" class="LineNr"> 8091 </span>    0/imm32/outputs
+<span id="L8092" class="LineNr"> 8092 </span>    <span class="Constant">&quot;0f 8f/jump-if-&gt;&quot;</span>/imm32/subx-name
+<span id="L8093" class="LineNr"> 8093 </span>    0/imm32/no-rm32
+<span id="L8094" class="LineNr"> 8094 </span>    0/imm32/no-r32
+<span id="L8095" class="LineNr"> 8095 </span>    0/imm32/no-imm32
+<span id="L8096" class="LineNr"> 8096 </span>    1/imm32/disp32-is-first-inout
+<span id="L8097" class="LineNr"> 8097 </span>    0/imm32/no-output
+<span id="L8098" class="LineNr"> 8098 </span>    <a href='mu.subx.html#L8099'>_Primitive-break-named</a>/imm32/next
+<span id="L8099" class="LineNr"> 8099 </span><span class="subxMinorFunction">_Primitive-break-named</span>:
+<span id="L8100" class="LineNr"> 8100 </span>    <span class="Constant">&quot;break&quot;</span>/imm32/name
+<span id="L8101" class="LineNr"> 8101 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8102" class="LineNr"> 8102 </span>    0/imm32/outputs
+<span id="L8103" class="LineNr"> 8103 </span>    <span class="Constant">&quot;e9/jump&quot;</span>/imm32/subx-name
+<span id="L8104" class="LineNr"> 8104 </span>    0/imm32/no-rm32
+<span id="L8105" class="LineNr"> 8105 </span>    0/imm32/no-r32
+<span id="L8106" class="LineNr"> 8106 </span>    0/imm32/no-imm32
+<span id="L8107" class="LineNr"> 8107 </span>    1/imm32/disp32-is-first-inout
+<span id="L8108" class="LineNr"> 8108 </span>    0/imm32/no-output
+<span id="L8109" class="LineNr"> 8109 </span>    <a href='mu.subx.html#L8110'>_Primitive-loop-if-addr&lt;-named</a>/imm32/next
+<span id="L8110" class="LineNr"> 8110 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&lt;-named</span>:
+<span id="L8111" class="LineNr"> 8111 </span>    <span class="Constant">&quot;loop-if-addr&lt;&quot;</span>/imm32/name
+<span id="L8112" class="LineNr"> 8112 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8113" class="LineNr"> 8113 </span>    0/imm32/outputs
+<span id="L8114" class="LineNr"> 8114 </span>    <span class="Constant">&quot;0f 82/jump-if-addr&lt;&quot;</span>/imm32/subx-name
+<span id="L8115" class="LineNr"> 8115 </span>    0/imm32/no-rm32
+<span id="L8116" class="LineNr"> 8116 </span>    0/imm32/no-r32
+<span id="L8117" class="LineNr"> 8117 </span>    0/imm32/no-imm32
+<span id="L8118" class="LineNr"> 8118 </span>    1/imm32/disp32-is-first-inout
+<span id="L8119" class="LineNr"> 8119 </span>    0/imm32/no-output
+<span id="L8120" class="LineNr"> 8120 </span>    <a href='mu.subx.html#L8121'>_Primitive-loop-if-addr&gt;=-named</a>/imm32/next
+<span id="L8121" class="LineNr"> 8121 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&gt;=-named</span>:
+<span id="L8122" class="LineNr"> 8122 </span>    <span class="Constant">&quot;loop-if-addr&gt;=&quot;</span>/imm32/name
+<span id="L8123" class="LineNr"> 8123 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8124" class="LineNr"> 8124 </span>    0/imm32/outputs
+<span id="L8125" class="LineNr"> 8125 </span>    <span class="Constant">&quot;0f 83/jump-if-addr&gt;=&quot;</span>/imm32/subx-name
+<span id="L8126" class="LineNr"> 8126 </span>    0/imm32/no-rm32
+<span id="L8127" class="LineNr"> 8127 </span>    0/imm32/no-r32
+<span id="L8128" class="LineNr"> 8128 </span>    0/imm32/no-imm32
+<span id="L8129" class="LineNr"> 8129 </span>    1/imm32/disp32-is-first-inout
+<span id="L8130" class="LineNr"> 8130 </span>    0/imm32/no-output
+<span id="L8131" class="LineNr"> 8131 </span>    <a href='mu.subx.html#L8132'>_Primitive-loop-if-=-named</a>/imm32/next
+<span id="L8132" class="LineNr"> 8132 </span><span class="subxMinorFunction">_Primitive-loop-if-=-named</span>:
+<span id="L8133" class="LineNr"> 8133 </span>    <span class="Constant">&quot;loop-if-=&quot;</span>/imm32/name
+<span id="L8134" class="LineNr"> 8134 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8135" class="LineNr"> 8135 </span>    0/imm32/outputs
+<span id="L8136" class="LineNr"> 8136 </span>    <span class="Constant">&quot;0f 84/jump-if-=&quot;</span>/imm32/subx-name
+<span id="L8137" class="LineNr"> 8137 </span>    0/imm32/no-rm32
+<span id="L8138" class="LineNr"> 8138 </span>    0/imm32/no-r32
+<span id="L8139" class="LineNr"> 8139 </span>    0/imm32/no-imm32
+<span id="L8140" class="LineNr"> 8140 </span>    1/imm32/disp32-is-first-inout
+<span id="L8141" class="LineNr"> 8141 </span>    0/imm32/no-output
+<span id="L8142" class="LineNr"> 8142 </span>    <a href='mu.subx.html#L8143'>_Primitive-loop-if-!=-named</a>/imm32/next
+<span id="L8143" class="LineNr"> 8143 </span><span class="subxMinorFunction">_Primitive-loop-if-!=-named</span>:
+<span id="L8144" class="LineNr"> 8144 </span>    <span class="Constant">&quot;loop-if-!=&quot;</span>/imm32/name
+<span id="L8145" class="LineNr"> 8145 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8146" class="LineNr"> 8146 </span>    0/imm32/outputs
+<span id="L8147" class="LineNr"> 8147 </span>    <span class="Constant">&quot;0f 85/jump-if-!=&quot;</span>/imm32/subx-name
+<span id="L8148" class="LineNr"> 8148 </span>    0/imm32/no-rm32
+<span id="L8149" class="LineNr"> 8149 </span>    0/imm32/no-r32
+<span id="L8150" class="LineNr"> 8150 </span>    0/imm32/no-imm32
+<span id="L8151" class="LineNr"> 8151 </span>    1/imm32/disp32-is-first-inout
+<span id="L8152" class="LineNr"> 8152 </span>    0/imm32/no-output
+<span id="L8153" class="LineNr"> 8153 </span>    <a href='mu.subx.html#L8154'>_Primitive-loop-if-addr&lt;=-named</a>/imm32/next
+<span id="L8154" class="LineNr"> 8154 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&lt;=-named</span>:
+<span id="L8155" class="LineNr"> 8155 </span>    <span class="Constant">&quot;loop-if-addr&lt;=&quot;</span>/imm32/name
+<span id="L8156" class="LineNr"> 8156 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8157" class="LineNr"> 8157 </span>    0/imm32/outputs
+<span id="L8158" class="LineNr"> 8158 </span>    <span class="Constant">&quot;0f 86/jump-if-addr&lt;=&quot;</span>/imm32/subx-name
+<span id="L8159" class="LineNr"> 8159 </span>    0/imm32/no-rm32
+<span id="L8160" class="LineNr"> 8160 </span>    0/imm32/no-r32
+<span id="L8161" class="LineNr"> 8161 </span>    0/imm32/no-imm32
+<span id="L8162" class="LineNr"> 8162 </span>    1/imm32/disp32-is-first-inout
+<span id="L8163" class="LineNr"> 8163 </span>    0/imm32/no-output
+<span id="L8164" class="LineNr"> 8164 </span>    <a href='mu.subx.html#L8165'>_Primitive-loop-if-addr&gt;-named</a>/imm32/next
+<span id="L8165" class="LineNr"> 8165 </span><span class="subxMinorFunction">_Primitive-loop-if-addr&gt;-named</span>:
+<span id="L8166" class="LineNr"> 8166 </span>    <span class="Constant">&quot;loop-if-addr&gt;&quot;</span>/imm32/name
+<span id="L8167" class="LineNr"> 8167 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8168" class="LineNr"> 8168 </span>    0/imm32/outputs
+<span id="L8169" class="LineNr"> 8169 </span>    <span class="Constant">&quot;0f 87/jump-if-addr&gt;&quot;</span>/imm32/subx-name
+<span id="L8170" class="LineNr"> 8170 </span>    0/imm32/no-rm32
+<span id="L8171" class="LineNr"> 8171 </span>    0/imm32/no-r32
+<span id="L8172" class="LineNr"> 8172 </span>    0/imm32/no-imm32
+<span id="L8173" class="LineNr"> 8173 </span>    1/imm32/disp32-is-first-inout
+<span id="L8174" class="LineNr"> 8174 </span>    0/imm32/no-output
+<span id="L8175" class="LineNr"> 8175 </span>    <a href='mu.subx.html#L8176'>_Primitive-loop-if-&lt;-named</a>/imm32/next
+<span id="L8176" class="LineNr"> 8176 </span><span class="subxMinorFunction">_Primitive-loop-if-&lt;-named</span>:
+<span id="L8177" class="LineNr"> 8177 </span>    <span class="Constant">&quot;loop-if-&lt;&quot;</span>/imm32/name
+<span id="L8178" class="LineNr"> 8178 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8179" class="LineNr"> 8179 </span>    0/imm32/outputs
+<span id="L8180" class="LineNr"> 8180 </span>    <span class="Constant">&quot;0f 8c/jump-if-&lt;&quot;</span>/imm32/subx-name
+<span id="L8181" class="LineNr"> 8181 </span>    0/imm32/no-rm32
+<span id="L8182" class="LineNr"> 8182 </span>    0/imm32/no-r32
+<span id="L8183" class="LineNr"> 8183 </span>    0/imm32/no-imm32
+<span id="L8184" class="LineNr"> 8184 </span>    1/imm32/disp32-is-first-inout
+<span id="L8185" class="LineNr"> 8185 </span>    0/imm32/no-output
+<span id="L8186" class="LineNr"> 8186 </span>    <a href='mu.subx.html#L8187'>_Primitive-loop-if-&gt;=-named</a>/imm32/next
+<span id="L8187" class="LineNr"> 8187 </span><span class="subxMinorFunction">_Primitive-loop-if-&gt;=-named</span>:
+<span id="L8188" class="LineNr"> 8188 </span>    <span class="Constant">&quot;loop-if-&gt;=&quot;</span>/imm32/name
+<span id="L8189" class="LineNr"> 8189 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8190" class="LineNr"> 8190 </span>    0/imm32/outputs
+<span id="L8191" class="LineNr"> 8191 </span>    <span class="Constant">&quot;0f 8d/jump-if-&gt;=&quot;</span>/imm32/subx-name
+<span id="L8192" class="LineNr"> 8192 </span>    0/imm32/no-rm32
+<span id="L8193" class="LineNr"> 8193 </span>    0/imm32/no-r32
+<span id="L8194" class="LineNr"> 8194 </span>    0/imm32/no-imm32
+<span id="L8195" class="LineNr"> 8195 </span>    1/imm32/disp32-is-first-inout
+<span id="L8196" class="LineNr"> 8196 </span>    0/imm32/no-output
+<span id="L8197" class="LineNr"> 8197 </span>    <a href='mu.subx.html#L8198'>_Primitive-loop-if-&lt;=-named</a>/imm32/next
+<span id="L8198" class="LineNr"> 8198 </span><span class="subxMinorFunction">_Primitive-loop-if-&lt;=-named</span>:
+<span id="L8199" class="LineNr"> 8199 </span>    <span class="Constant">&quot;loop-if-&lt;=&quot;</span>/imm32/name
+<span id="L8200" class="LineNr"> 8200 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8201" class="LineNr"> 8201 </span>    0/imm32/outputs
+<span id="L8202" class="LineNr"> 8202 </span>    <span class="Constant">&quot;0f 8e/jump-if-&lt;=&quot;</span>/imm32/subx-name
+<span id="L8203" class="LineNr"> 8203 </span>    0/imm32/no-rm32
+<span id="L8204" class="LineNr"> 8204 </span>    0/imm32/no-r32
+<span id="L8205" class="LineNr"> 8205 </span>    0/imm32/no-imm32
+<span id="L8206" class="LineNr"> 8206 </span>    1/imm32/disp32-is-first-inout
+<span id="L8207" class="LineNr"> 8207 </span>    0/imm32/no-output
+<span id="L8208" class="LineNr"> 8208 </span>    <a href='mu.subx.html#L8209'>_Primitive-loop-if-&gt;-named</a>/imm32/next
+<span id="L8209" class="LineNr"> 8209 </span><span class="subxMinorFunction">_Primitive-loop-if-&gt;-named</span>:
+<span id="L8210" class="LineNr"> 8210 </span>    <span class="Constant">&quot;loop-if-&gt;&quot;</span>/imm32/name
+<span id="L8211" class="LineNr"> 8211 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8212" class="LineNr"> 8212 </span>    0/imm32/outputs
+<span id="L8213" class="LineNr"> 8213 </span>    <span class="Constant">&quot;0f 8f/jump-if-&gt;&quot;</span>/imm32/subx-name
+<span id="L8214" class="LineNr"> 8214 </span>    0/imm32/no-rm32
+<span id="L8215" class="LineNr"> 8215 </span>    0/imm32/no-r32
+<span id="L8216" class="LineNr"> 8216 </span>    0/imm32/no-imm32
+<span id="L8217" class="LineNr"> 8217 </span>    1/imm32/disp32-is-first-inout
+<span id="L8218" class="LineNr"> 8218 </span>    0/imm32/no-output
+<span id="L8219" class="LineNr"> 8219 </span>    <a href='mu.subx.html#L8220'>_Primitive-loop-named</a>/imm32/next  <span class="subxComment"># we probably don't need an unconditional break</span>
+<span id="L8220" class="LineNr"> 8220 </span><span class="subxMinorFunction">_Primitive-loop-named</span>:
+<span id="L8221" class="LineNr"> 8221 </span>    <span class="Constant">&quot;loop&quot;</span>/imm32/name
+<span id="L8222" class="LineNr"> 8222 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/inouts
+<span id="L8223" class="LineNr"> 8223 </span>    0/imm32/outputs
+<span id="L8224" class="LineNr"> 8224 </span>    <span class="Constant">&quot;e9/jump&quot;</span>/imm32/subx-name
+<span id="L8225" class="LineNr"> 8225 </span>    0/imm32/no-rm32
+<span id="L8226" class="LineNr"> 8226 </span>    0/imm32/no-r32
+<span id="L8227" class="LineNr"> 8227 </span>    0/imm32/no-imm32
+<span id="L8228" class="LineNr"> 8228 </span>    1/imm32/disp32-is-first-inout
+<span id="L8229" class="LineNr"> 8229 </span>    0/imm32/no-output
+<span id="L8230" class="LineNr"> 8230 </span>    0/imm32/next
+<span id="L8231" class="LineNr"> 8231 </span>
+<span id="L8232" class="LineNr"> 8232 </span><span class="SpecialChar">Single-int-var-in-mem</span>:
+<span id="L8233" class="LineNr"> 8233 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Int-var-in-mem</a></span>/imm32
 <span id="L8234" class="LineNr"> 8234 </span>    0/imm32/next
 <span id="L8235" class="LineNr"> 8235 </span>
-<span id="L8236" class="LineNr"> 8236 </span><span class="SpecialChar">Single-int-var-in-mem</span>:
-<span id="L8237" class="LineNr"> 8237 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8240'>Int-var-in-mem</a></span>/imm32
-<span id="L8238" class="LineNr"> 8238 </span>    0/imm32/next
-<span id="L8239" class="LineNr"> 8239 </span>
-<span id="L8240" class="LineNr"> 8240 </span><span class="SpecialChar">Int-var-in-mem</span>:
-<span id="L8241" class="LineNr"> 8241 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
-<span id="L8242" class="LineNr"> 8242 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8355'>Type-int</a></span>/imm32
-<span id="L8243" class="LineNr"> 8243 </span>    1/imm32/some-block-depth
-<span id="L8244" class="LineNr"> 8244 </span>    1/imm32/some-stack-offset
-<span id="L8245" class="LineNr"> 8245 </span>    0/imm32/no-register
+<span id="L8236" class="LineNr"> 8236 </span><span class="SpecialChar">Int-var-in-mem</span>:
+<span id="L8237" class="LineNr"> 8237 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
+<span id="L8238" class="LineNr"> 8238 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8351'>Type-int</a></span>/imm32
+<span id="L8239" class="LineNr"> 8239 </span>    1/imm32/some-block-depth
+<span id="L8240" class="LineNr"> 8240 </span>    1/imm32/some-stack-offset
+<span id="L8241" class="LineNr"> 8241 </span>    0/imm32/no-register
+<span id="L8242" class="LineNr"> 8242 </span>
+<span id="L8243" class="LineNr"> 8243 </span><span class="SpecialChar">Two-args-int-stack-int-reg</span>:
+<span id="L8244" class="LineNr"> 8244 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Int-var-in-mem</a></span>/imm32
+<span id="L8245" class="LineNr"> 8245 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8263'>Single-int-var-in-some-register</a></span>/imm32/next
 <span id="L8246" class="LineNr"> 8246 </span>
-<span id="L8247" class="LineNr"> 8247 </span><span class="SpecialChar">Two-args-int-stack-int-reg</span>:
-<span id="L8248" class="LineNr"> 8248 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8240'>Int-var-in-mem</a></span>/imm32
-<span id="L8249" class="LineNr"> 8249 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Single-int-var-in-some-register</a></span>/imm32/next
+<span id="L8247" class="LineNr"> 8247 </span><span class="SpecialChar">Two-args-int-reg-int-stack</span>:
+<span id="L8248" class="LineNr"> 8248 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Int-var-in-some-register</a></span>/imm32
+<span id="L8249" class="LineNr"> 8249 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8232'>Single-int-var-in-mem</a></span>/imm32/next
 <span id="L8250" class="LineNr"> 8250 </span>
-<span id="L8251" class="LineNr"> 8251 </span><span class="SpecialChar">Two-args-int-reg-int-stack</span>:
-<span id="L8252" class="LineNr"> 8252 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8271'>Int-var-in-some-register</a></span>/imm32
-<span id="L8253" class="LineNr"> 8253 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Single-int-var-in-mem</a></span>/imm32/next
+<span id="L8251" class="LineNr"> 8251 </span><span class="SpecialChar">Two-args-int-eax-int-literal</span>:
+<span id="L8252" class="LineNr"> 8252 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8278'>Int-var-in-eax</a></span>/imm32
+<span id="L8253" class="LineNr"> 8253 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/next
 <span id="L8254" class="LineNr"> 8254 </span>
-<span id="L8255" class="LineNr"> 8255 </span><span class="SpecialChar">Two-args-int-eax-int-literal</span>:
-<span id="L8256" class="LineNr"> 8256 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8282'>Int-var-in-eax</a></span>/imm32
-<span id="L8257" class="LineNr"> 8257 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/next
+<span id="L8255" class="LineNr"> 8255 </span><span class="SpecialChar">Int-var-and-literal</span>:
+<span id="L8256" class="LineNr"> 8256 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8236'>Int-var-in-mem</a></span>/imm32
+<span id="L8257" class="LineNr"> 8257 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/next
 <span id="L8258" class="LineNr"> 8258 </span>
-<span id="L8259" class="LineNr"> 8259 </span><span class="SpecialChar">Int-var-and-literal</span>:
-<span id="L8260" class="LineNr"> 8260 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8240'>Int-var-in-mem</a></span>/imm32
-<span id="L8261" class="LineNr"> 8261 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/next
+<span id="L8259" class="LineNr"> 8259 </span><span class="SpecialChar">Int-var-in-register-and-literal</span>:
+<span id="L8260" class="LineNr"> 8260 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Int-var-in-some-register</a></span>/imm32
+<span id="L8261" class="LineNr"> 8261 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8340'>Single-lit-var</a></span>/imm32/next
 <span id="L8262" class="LineNr"> 8262 </span>
-<span id="L8263" class="LineNr"> 8263 </span><span class="SpecialChar">Int-var-in-register-and-literal</span>:
-<span id="L8264" class="LineNr"> 8264 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8271'>Int-var-in-some-register</a></span>/imm32
-<span id="L8265" class="LineNr"> 8265 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Single-lit-var</a></span>/imm32/next
+<span id="L8263" class="LineNr"> 8263 </span><span class="SpecialChar">Single-int-var-in-some-register</span>:
+<span id="L8264" class="LineNr"> 8264 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8267'>Int-var-in-some-register</a></span>/imm32
+<span id="L8265" class="LineNr"> 8265 </span>    0/imm32/next
 <span id="L8266" class="LineNr"> 8266 </span>
-<span id="L8267" class="LineNr"> 8267 </span><span class="SpecialChar">Single-int-var-in-some-register</span>:
-<span id="L8268" class="LineNr"> 8268 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8271'>Int-var-in-some-register</a></span>/imm32
-<span id="L8269" class="LineNr"> 8269 </span>    0/imm32/next
-<span id="L8270" class="LineNr"> 8270 </span>
-<span id="L8271" class="LineNr"> 8271 </span><span class="SpecialChar">Int-var-in-some-register</span>:
-<span id="L8272" class="LineNr"> 8272 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
-<span id="L8273" class="LineNr"> 8273 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8355'>Type-int</a></span>/imm32
-<span id="L8274" class="LineNr"> 8274 </span>    1/imm32/some-block-depth
-<span id="L8275" class="LineNr"> 8275 </span>    0/imm32/no-stack-offset
-<span id="L8276" class="LineNr"> 8276 </span>    <span class="SpecialChar"><a href='mu.subx.html#L339'>Any-register</a></span>/imm32
+<span id="L8267" class="LineNr"> 8267 </span><span class="SpecialChar">Int-var-in-some-register</span>:
+<span id="L8268" class="LineNr"> 8268 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
+<span id="L8269" class="LineNr"> 8269 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8351'>Type-int</a></span>/imm32
+<span id="L8270" class="LineNr"> 8270 </span>    1/imm32/some-block-depth
+<span id="L8271" class="LineNr"> 8271 </span>    0/imm32/no-stack-offset
+<span id="L8272" class="LineNr"> 8272 </span>    <span class="SpecialChar"><a href='mu.subx.html#L339'>Any-register</a></span>/imm32
+<span id="L8273" class="LineNr"> 8273 </span>
+<span id="L8274" class="LineNr"> 8274 </span><span class="SpecialChar">Single-int-var-in-eax</span>:
+<span id="L8275" class="LineNr"> 8275 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8278'>Int-var-in-eax</a></span>/imm32
+<span id="L8276" class="LineNr"> 8276 </span>    0/imm32/next
 <span id="L8277" class="LineNr"> 8277 </span>
-<span id="L8278" class="LineNr"> 8278 </span><span class="SpecialChar">Single-int-var-in-eax</span>:
-<span id="L8279" class="LineNr"> 8279 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8282'>Int-var-in-eax</a></span>/imm32
-<span id="L8280" class="LineNr"> 8280 </span>    0/imm32/next
-<span id="L8281" class="LineNr"> 8281 </span>
-<span id="L8282" class="LineNr"> 8282 </span><span class="SpecialChar">Int-var-in-eax</span>:
-<span id="L8283" class="LineNr"> 8283 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
-<span id="L8284" class="LineNr"> 8284 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8355'>Type-int</a></span>/imm32
-<span id="L8285" class="LineNr"> 8285 </span>    1/imm32/some-block-depth
-<span id="L8286" class="LineNr"> 8286 </span>    0/imm32/no-stack-offset
-<span id="L8287" class="LineNr"> 8287 </span>    <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L8278" class="LineNr"> 8278 </span><span class="SpecialChar">Int-var-in-eax</span>:
+<span id="L8279" class="LineNr"> 8279 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
+<span id="L8280" class="LineNr"> 8280 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8351'>Type-int</a></span>/imm32
+<span id="L8281" class="LineNr"> 8281 </span>    1/imm32/some-block-depth
+<span id="L8282" class="LineNr"> 8282 </span>    0/imm32/no-stack-offset
+<span id="L8283" class="LineNr"> 8283 </span>    <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L8284" class="LineNr"> 8284 </span>
+<span id="L8285" class="LineNr"> 8285 </span><span class="SpecialChar">Single-int-var-in-ecx</span>:
+<span id="L8286" class="LineNr"> 8286 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8289'>Int-var-in-ecx</a></span>/imm32
+<span id="L8287" class="LineNr"> 8287 </span>    0/imm32/next
 <span id="L8288" class="LineNr"> 8288 </span>
-<span id="L8289" class="LineNr"> 8289 </span><span class="SpecialChar">Single-int-var-in-ecx</span>:
-<span id="L8290" class="LineNr"> 8290 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8293'>Int-var-in-ecx</a></span>/imm32
-<span id="L8291" class="LineNr"> 8291 </span>    0/imm32/next
-<span id="L8292" class="LineNr"> 8292 </span>
-<span id="L8293" class="LineNr"> 8293 </span><span class="SpecialChar">Int-var-in-ecx</span>:
-<span id="L8294" class="LineNr"> 8294 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
-<span id="L8295" class="LineNr"> 8295 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8355'>Type-int</a></span>/imm32
-<span id="L8296" class="LineNr"> 8296 </span>    1/imm32/some-block-depth
-<span id="L8297" class="LineNr"> 8297 </span>    0/imm32/no-stack-offset
-<span id="L8298" class="LineNr"> 8298 </span>    <span class="Constant">&quot;ecx&quot;</span>/imm32/register
+<span id="L8289" class="LineNr"> 8289 </span><span class="SpecialChar">Int-var-in-ecx</span>:
+<span id="L8290" class="LineNr"> 8290 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
+<span id="L8291" class="LineNr"> 8291 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8351'>Type-int</a></span>/imm32
+<span id="L8292" class="LineNr"> 8292 </span>    1/imm32/some-block-depth
+<span id="L8293" class="LineNr"> 8293 </span>    0/imm32/no-stack-offset
+<span id="L8294" class="LineNr"> 8294 </span>    <span class="Constant">&quot;ecx&quot;</span>/imm32/register
+<span id="L8295" class="LineNr"> 8295 </span>
+<span id="L8296" class="LineNr"> 8296 </span><span class="SpecialChar">Single-int-var-in-edx</span>:
+<span id="L8297" class="LineNr"> 8297 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8300'>Int-var-in-edx</a></span>/imm32
+<span id="L8298" class="LineNr"> 8298 </span>    0/imm32/next
 <span id="L8299" class="LineNr"> 8299 </span>
-<span id="L8300" class="LineNr"> 8300 </span><span class="SpecialChar">Single-int-var-in-edx</span>:
-<span id="L8301" class="LineNr"> 8301 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8304'>Int-var-in-edx</a></span>/imm32
-<span id="L8302" class="LineNr"> 8302 </span>    0/imm32/next
-<span id="L8303" class="LineNr"> 8303 </span>
-<span id="L8304" class="LineNr"> 8304 </span><span class="SpecialChar">Int-var-in-edx</span>:
-<span id="L8305" class="LineNr"> 8305 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
-<span id="L8306" class="LineNr"> 8306 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8355'>Type-int</a></span>/imm32
-<span id="L8307" class="LineNr"> 8307 </span>    1/imm32/some-block-depth
-<span id="L8308" class="LineNr"> 8308 </span>    0/imm32/no-stack-offset
-<span id="L8309" class="LineNr"> 8309 </span>    <span class="Constant">&quot;edx&quot;</span>/imm32/register
+<span id="L8300" class="LineNr"> 8300 </span><span class="SpecialChar">Int-var-in-edx</span>:
+<span id="L8301" class="LineNr"> 8301 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
+<span id="L8302" class="LineNr"> 8302 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8351'>Type-int</a></span>/imm32
+<span id="L8303" class="LineNr"> 8303 </span>    1/imm32/some-block-depth
+<span id="L8304" class="LineNr"> 8304 </span>    0/imm32/no-stack-offset
+<span id="L8305" class="LineNr"> 8305 </span>    <span class="Constant">&quot;edx&quot;</span>/imm32/register
+<span id="L8306" class="LineNr"> 8306 </span>
+<span id="L8307" class="LineNr"> 8307 </span><span class="SpecialChar">Single-int-var-in-ebx</span>:
+<span id="L8308" class="LineNr"> 8308 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8311'>Int-var-in-ebx</a></span>/imm32
+<span id="L8309" class="LineNr"> 8309 </span>    0/imm32/next
 <span id="L8310" class="LineNr"> 8310 </span>
-<span id="L8311" class="LineNr"> 8311 </span><span class="SpecialChar">Single-int-var-in-ebx</span>:
-<span id="L8312" class="LineNr"> 8312 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8315'>Int-var-in-ebx</a></span>/imm32
-<span id="L8313" class="LineNr"> 8313 </span>    0/imm32/next
-<span id="L8314" class="LineNr"> 8314 </span>
-<span id="L8315" class="LineNr"> 8315 </span><span class="SpecialChar">Int-var-in-ebx</span>:
-<span id="L8316" class="LineNr"> 8316 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
-<span id="L8317" class="LineNr"> 8317 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8355'>Type-int</a></span>/imm32
-<span id="L8318" class="LineNr"> 8318 </span>    1/imm32/some-block-depth
-<span id="L8319" class="LineNr"> 8319 </span>    0/imm32/no-stack-offset
-<span id="L8320" class="LineNr"> 8320 </span>    <span class="Constant">&quot;ebx&quot;</span>/imm32/register
+<span id="L8311" class="LineNr"> 8311 </span><span class="SpecialChar">Int-var-in-ebx</span>:
+<span id="L8312" class="LineNr"> 8312 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
+<span id="L8313" class="LineNr"> 8313 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8351'>Type-int</a></span>/imm32
+<span id="L8314" class="LineNr"> 8314 </span>    1/imm32/some-block-depth
+<span id="L8315" class="LineNr"> 8315 </span>    0/imm32/no-stack-offset
+<span id="L8316" class="LineNr"> 8316 </span>    <span class="Constant">&quot;ebx&quot;</span>/imm32/register
+<span id="L8317" class="LineNr"> 8317 </span>
+<span id="L8318" class="LineNr"> 8318 </span><span class="SpecialChar">Single-int-var-in-esi</span>:
+<span id="L8319" class="LineNr"> 8319 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8322'>Int-var-in-esi</a></span>/imm32
+<span id="L8320" class="LineNr"> 8320 </span>    0/imm32/next
 <span id="L8321" class="LineNr"> 8321 </span>
-<span id="L8322" class="LineNr"> 8322 </span><span class="SpecialChar">Single-int-var-in-esi</span>:
-<span id="L8323" class="LineNr"> 8323 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8326'>Int-var-in-esi</a></span>/imm32
-<span id="L8324" class="LineNr"> 8324 </span>    0/imm32/next
-<span id="L8325" class="LineNr"> 8325 </span>
-<span id="L8326" class="LineNr"> 8326 </span><span class="SpecialChar">Int-var-in-esi</span>:
-<span id="L8327" class="LineNr"> 8327 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
-<span id="L8328" class="LineNr"> 8328 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8355'>Type-int</a></span>/imm32
-<span id="L8329" class="LineNr"> 8329 </span>    1/imm32/some-block-depth
-<span id="L8330" class="LineNr"> 8330 </span>    0/imm32/no-stack-offset
-<span id="L8331" class="LineNr"> 8331 </span>    <span class="Constant">&quot;esi&quot;</span>/imm32/register
+<span id="L8322" class="LineNr"> 8322 </span><span class="SpecialChar">Int-var-in-esi</span>:
+<span id="L8323" class="LineNr"> 8323 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
+<span id="L8324" class="LineNr"> 8324 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8351'>Type-int</a></span>/imm32
+<span id="L8325" class="LineNr"> 8325 </span>    1/imm32/some-block-depth
+<span id="L8326" class="LineNr"> 8326 </span>    0/imm32/no-stack-offset
+<span id="L8327" class="LineNr"> 8327 </span>    <span class="Constant">&quot;esi&quot;</span>/imm32/register
+<span id="L8328" class="LineNr"> 8328 </span>
+<span id="L8329" class="LineNr"> 8329 </span><span class="SpecialChar">Single-int-var-in-edi</span>:
+<span id="L8330" class="LineNr"> 8330 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8333'>Int-var-in-edi</a></span>/imm32
+<span id="L8331" class="LineNr"> 8331 </span>    0/imm32/next
 <span id="L8332" class="LineNr"> 8332 </span>
-<span id="L8333" class="LineNr"> 8333 </span><span class="SpecialChar">Single-int-var-in-edi</span>:
-<span id="L8334" class="LineNr"> 8334 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8337'>Int-var-in-edi</a></span>/imm32
-<span id="L8335" class="LineNr"> 8335 </span>    0/imm32/next
-<span id="L8336" class="LineNr"> 8336 </span>
-<span id="L8337" class="LineNr"> 8337 </span><span class="SpecialChar">Int-var-in-edi</span>:
-<span id="L8338" class="LineNr"> 8338 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
-<span id="L8339" class="LineNr"> 8339 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8355'>Type-int</a></span>/imm32
-<span id="L8340" class="LineNr"> 8340 </span>    1/imm32/some-block-depth
-<span id="L8341" class="LineNr"> 8341 </span>    0/imm32/no-stack-offset
-<span id="L8342" class="LineNr"> 8342 </span>    <span class="Constant">&quot;edi&quot;</span>/imm32/register
+<span id="L8333" class="LineNr"> 8333 </span><span class="SpecialChar">Int-var-in-edi</span>:
+<span id="L8334" class="LineNr"> 8334 </span>    <span class="Constant">&quot;arg1&quot;</span>/imm32/name
+<span id="L8335" class="LineNr"> 8335 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8351'>Type-int</a></span>/imm32
+<span id="L8336" class="LineNr"> 8336 </span>    1/imm32/some-block-depth
+<span id="L8337" class="LineNr"> 8337 </span>    0/imm32/no-stack-offset
+<span id="L8338" class="LineNr"> 8338 </span>    <span class="Constant">&quot;edi&quot;</span>/imm32/register
+<span id="L8339" class="LineNr"> 8339 </span>
+<span id="L8340" class="LineNr"> 8340 </span><span class="SpecialChar">Single-lit-var</span>:
+<span id="L8341" class="LineNr"> 8341 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8344'>Lit-var</a></span>/imm32
+<span id="L8342" class="LineNr"> 8342 </span>    0/imm32/next
 <span id="L8343" class="LineNr"> 8343 </span>
-<span id="L8344" class="LineNr"> 8344 </span><span class="SpecialChar">Single-lit-var</span>:
-<span id="L8345" class="LineNr"> 8345 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8348'>Lit-var</a></span>/imm32
-<span id="L8346" class="LineNr"> 8346 </span>    0/imm32/next
-<span id="L8347" class="LineNr"> 8347 </span>
-<span id="L8348" class="LineNr"> 8348 </span><span class="SpecialChar">Lit-var</span>:
-<span id="L8349" class="LineNr"> 8349 </span>    <span class="Constant">&quot;literal&quot;</span>/imm32/name
-<span id="L8350" class="LineNr"> 8350 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8359'>Type-literal</a></span>/imm32
-<span id="L8351" class="LineNr"> 8351 </span>    1/imm32/some-block-depth
-<span id="L8352" class="LineNr"> 8352 </span>    0/imm32/no-stack-offset
-<span id="L8353" class="LineNr"> 8353 </span>    0/imm32/no-register
+<span id="L8344" class="LineNr"> 8344 </span><span class="SpecialChar">Lit-var</span>:
+<span id="L8345" class="LineNr"> 8345 </span>    <span class="Constant">&quot;literal&quot;</span>/imm32/name
+<span id="L8346" class="LineNr"> 8346 </span>    <span class="SpecialChar"><a href='mu.subx.html#L8355'>Type-literal</a></span>/imm32
+<span id="L8347" class="LineNr"> 8347 </span>    1/imm32/some-block-depth
+<span id="L8348" class="LineNr"> 8348 </span>    0/imm32/no-stack-offset
+<span id="L8349" class="LineNr"> 8349 </span>    0/imm32/no-register
+<span id="L8350" class="LineNr"> 8350 </span>
+<span id="L8351" class="LineNr"> 8351 </span><span class="SpecialChar">Type-int</span>:
+<span id="L8352" class="LineNr"> 8352 </span>    1/imm32/left/int
+<span id="L8353" class="LineNr"> 8353 </span>    0/imm32/right/null
 <span id="L8354" class="LineNr"> 8354 </span>
-<span id="L8355" class="LineNr"> 8355 </span><span class="SpecialChar">Type-int</span>:
-<span id="L8356" class="LineNr"> 8356 </span>    1/imm32/left/int
+<span id="L8355" class="LineNr"> 8355 </span><span class="SpecialChar">Type-literal</span>:
+<span id="L8356" class="LineNr"> 8356 </span>    0/imm32/left/literal
 <span id="L8357" class="LineNr"> 8357 </span>    0/imm32/right/null
 <span id="L8358" class="LineNr"> 8358 </span>
-<span id="L8359" class="LineNr"> 8359 </span><span class="SpecialChar">Type-literal</span>:
-<span id="L8360" class="LineNr"> 8360 </span>    0/imm32/left/literal
-<span id="L8361" class="LineNr"> 8361 </span>    0/imm32/right/null
-<span id="L8362" class="LineNr"> 8362 </span>
-<span id="L8363" class="LineNr"> 8363 </span>== code
-<span id="L8364" class="LineNr"> 8364 </span><span class="subxFunction">emit-subx-primitive</span>:  <span class="subxComment"># out: (addr buffered-file), stmt: (handle stmt), primitive: (handle function)</span>
-<span id="L8365" class="LineNr"> 8365 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8366" class="LineNr"> 8366 </span>    55/push-ebp
-<span id="L8367" class="LineNr"> 8367 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8368" class="LineNr"> 8368 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8369" class="LineNr"> 8369 </span>    50/push-eax
-<span id="L8370" class="LineNr"> 8370 </span>    51/push-ecx
-<span id="L8371" class="LineNr"> 8371 </span>    <span class="subxComment"># ecx = primitive</span>
-<span id="L8372" class="LineNr"> 8372 </span>    8b/-&gt; *(ebp+0x10) 1/r32/ecx
-<span id="L8373" class="LineNr"> 8373 </span>    <span class="subxComment"># emit primitive name</span>
-<span id="L8374" class="LineNr"> 8374 </span>    (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
-<span id="L8375" class="LineNr"> 8375 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(ecx+0xc))  <span class="subxComment"># Primitive-subx-name</span>
-<span id="L8376" class="LineNr"> 8376 </span>    <span class="subxComment"># emit rm32 if necessary</span>
-<span id="L8377" class="LineNr"> 8377 </span>    (<a href='mu.subx.html#L8394'>emit-subx-rm32</a> *(ebp+8) *(ecx+0x10) *(ebp+0xc))  <span class="subxComment"># out, Primitive-subx-rm32, stmt</span>
-<span id="L8378" class="LineNr"> 8378 </span>    <span class="subxComment"># emit r32 if necessary</span>
-<span id="L8379" class="LineNr"> 8379 </span>    (<a href='mu.subx.html#L8471'>emit-subx-r32</a> *(ebp+8) *(ecx+0x14) *(ebp+0xc))  <span class="subxComment"># out, Primitive-subx-r32, stmt</span>
-<span id="L8380" class="LineNr"> 8380 </span>    <span class="subxComment"># emit imm32 if necessary</span>
-<span id="L8381" class="LineNr"> 8381 </span>    (<a href='mu.subx.html#L8497'>emit-subx-imm32</a> *(ebp+8) *(ecx+0x18) *(ebp+0xc))  <span class="subxComment"># out, Primitive-subx-imm32, stmt</span>
-<span id="L8382" class="LineNr"> 8382 </span>    <span class="subxComment"># emit disp32 if necessary</span>
-<span id="L8383" class="LineNr"> 8383 </span>    (<a href='mu.subx.html#L8522'>emit-subx-disp32</a> *(ebp+8) *(ecx+0x1c) *(ebp+0xc))  <span class="subxComment"># out, Primitive-subx-disp32, stmt</span>
-<span id="L8384" class="LineNr"> 8384 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L83'>Newline</a></span>)
-<span id="L8385" class="LineNr"> 8385 </span><span class="Constant">$emit-subx-primitive:end</span>:
-<span id="L8386" class="LineNr"> 8386 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8387" class="LineNr"> 8387 </span>    59/pop-to-ecx
-<span id="L8388" class="LineNr"> 8388 </span>    58/pop-to-eax
-<span id="L8389" class="LineNr"> 8389 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8390" class="LineNr"> 8390 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8391" class="LineNr"> 8391 </span>    5d/pop-to-ebp
-<span id="L8392" class="LineNr"> 8392 </span>    c3/return
-<span id="L8393" class="LineNr"> 8393 </span>
-<span id="L8394" class="LineNr"> 8394 </span><span class="subxFunction">emit-subx-rm32</span>:  <span class="subxComment"># out: (addr buffered-file), l: arg-location, stmt: (handle stmt)</span>
-<span id="L8395" class="LineNr"> 8395 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8396" class="LineNr"> 8396 </span>    55/push-ebp
-<span id="L8397" class="LineNr"> 8397 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8398" class="LineNr"> 8398 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8399" class="LineNr"> 8399 </span>    50/push-eax
-<span id="L8400" class="LineNr"> 8400 </span>    <span class="subxComment"># if (l == 0) return</span>
-<span id="L8401" class="LineNr"> 8401 </span>    81 7/subop/compare *(ebp+0xc) 0/imm32
-<span id="L8402" class="LineNr"> 8402 </span>    74/jump-if-= $emit-subx-rm32:end/disp8
-<span id="L8403" class="LineNr"> 8403 </span>    <span class="subxComment"># var v/eax: (handle var)</span>
-<span id="L8404" class="LineNr"> 8404 </span>    (<a href='mu.subx.html#L8414'>get-stmt-operand-from-arg-location</a> *(ebp+0x10) *(ebp+0xc))  <span class="subxComment"># =&gt; eax</span>
-<span id="L8405" class="LineNr"> 8405 </span>    (<a href='mu.subx.html#L8705'>emit-subx-var-as-rm32</a> *(ebp+8) %eax)
-<span id="L8406" class="LineNr"> 8406 </span><span class="Constant">$emit-subx-rm32:end</span>:
-<span id="L8407" class="LineNr"> 8407 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8408" class="LineNr"> 8408 </span>    58/pop-to-eax
-<span id="L8409" class="LineNr"> 8409 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8410" class="LineNr"> 8410 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8411" class="LineNr"> 8411 </span>    5d/pop-to-ebp
-<span id="L8412" class="LineNr"> 8412 </span>    c3/return
-<span id="L8413" class="LineNr"> 8413 </span>
-<span id="L8414" class="LineNr"> 8414 </span><span class="subxFunction">get-stmt-operand-from-arg-location</span>:  <span class="subxComment"># stmt: (handle stmt), l: arg-location -&gt; var/eax: (handle stmt-var)</span>
-<span id="L8415" class="LineNr"> 8415 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8416" class="LineNr"> 8416 </span>    55/push-ebp
-<span id="L8417" class="LineNr"> 8417 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8418" class="LineNr"> 8418 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8419" class="LineNr"> 8419 </span>    51/push-ecx
-<span id="L8420" class="LineNr"> 8420 </span>    <span class="subxComment"># eax = l</span>
-<span id="L8421" class="LineNr"> 8421 </span>    8b/-&gt; *(ebp+0xc) 0/r32/eax
-<span id="L8422" class="LineNr"> 8422 </span>    <span class="subxComment"># ecx = stmt</span>
-<span id="L8423" class="LineNr"> 8423 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
-<span id="L8424" class="LineNr"> 8424 </span>    <span class="subxComment"># if (l == 1) return stmt-&gt;inouts</span>
-<span id="L8425" class="LineNr"> 8425 </span>    {
-<span id="L8426" class="LineNr"> 8426 </span>      3d/compare-eax-and 1/imm32
-<span id="L8427" class="LineNr"> 8427 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8428" class="LineNr"> 8428 </span><span class="Constant">$get-stmt-operand-from-arg-location:1</span>:
-<span id="L8429" class="LineNr"> 8429 </span>      8b/-&gt; *(ecx+8) 0/r32/eax  <span class="subxComment"># Stmt1-inouts or Regvardef-inouts</span>
-<span id="L8430" class="LineNr"> 8430 </span>      eb/jump $get-stmt-operand-from-arg-location:end/disp8
-<span id="L8431" class="LineNr"> 8431 </span>    }
-<span id="L8432" class="LineNr"> 8432 </span>    <span class="subxComment"># if (l == 2) return stmt-&gt;inouts-&gt;next</span>
-<span id="L8433" class="LineNr"> 8433 </span>    {
-<span id="L8434" class="LineNr"> 8434 </span>      3d/compare-eax-and 2/imm32
-<span id="L8435" class="LineNr"> 8435 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8436" class="LineNr"> 8436 </span><span class="Constant">$get-stmt-operand-from-arg-location:2</span>:
-<span id="L8437" class="LineNr"> 8437 </span>      8b/-&gt; *(ecx+8) 0/r32/eax  <span class="subxComment"># Stmt1-inouts or Regvardef-inouts</span>
-<span id="L8438" class="LineNr"> 8438 </span>      8b/-&gt; *(eax+4) 0/r32/eax  <span class="subxComment"># Stmt-var-next</span>
-<span id="L8439" class="LineNr"> 8439 </span>      eb/jump $get-stmt-operand-from-arg-location:end/disp8
-<span id="L8440" class="LineNr"> 8440 </span>    }
-<span id="L8441" class="LineNr"> 8441 </span>    <span class="subxComment"># if (l == 3) return stmt-&gt;outputs</span>
-<span id="L8442" class="LineNr"> 8442 </span>    {
-<span id="L8443" class="LineNr"> 8443 </span>      3d/compare-eax-and 3/imm32
-<span id="L8444" class="LineNr"> 8444 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8445" class="LineNr"> 8445 </span><span class="Constant">$get-stmt-operand-from-arg-location:3</span>:
-<span id="L8446" class="LineNr"> 8446 </span>      8b/-&gt; *(ecx+0xc) 0/r32/eax  <span class="subxComment"># Stmt1-outputs</span>
-<span id="L8447" class="LineNr"> 8447 </span>      eb/jump $get-stmt-operand-from-arg-location:end/disp8
-<span id="L8448" class="LineNr"> 8448 </span>    }
-<span id="L8449" class="LineNr"> 8449 </span>    <span class="subxComment"># abort</span>
-<span id="L8450" class="LineNr"> 8450 </span>    e9/jump $get-stmt-operand-from-arg-location:abort/disp32
-<span id="L8451" class="LineNr"> 8451 </span><span class="Constant">$get-stmt-operand-from-arg-location:end</span>:
-<span id="L8452" class="LineNr"> 8452 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8453" class="LineNr"> 8453 </span>    59/pop-to-ecx
-<span id="L8454" class="LineNr"> 8454 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8455" class="LineNr"> 8455 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8456" class="LineNr"> 8456 </span>    5d/pop-to-ebp
-<span id="L8457" class="LineNr"> 8457 </span>    c3/return
-<span id="L8458" class="LineNr"> 8458 </span>
-<span id="L8459" class="LineNr"> 8459 </span><span class="Constant">$get-stmt-operand-from-arg-location:abort</span>:
-<span id="L8460" class="LineNr"> 8460 </span>    <span class="subxComment"># error(&quot;invalid arg-location &quot; eax)</span>
-<span id="L8461" class="LineNr"> 8461 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> <span class="SpecialChar"><a href='../065write-buffered.subx.html#L209'>Stderr</a></span> <span class="Constant">&quot;invalid arg-location &quot;</span>)
-<span id="L8462" class="LineNr"> 8462 </span>    (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> <span class="SpecialChar"><a href='../065write-buffered.subx.html#L209'>Stderr</a></span> %eax)
-<span id="L8463" class="LineNr"> 8463 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> <span class="SpecialChar"><a href='../065write-buffered.subx.html#L209'>Stderr</a></span> <span class="SpecialChar"><a href='../051test.subx.html#L83'>Newline</a></span>)
-<span id="L8464" class="LineNr"> 8464 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <span class="SpecialChar"><a href='../065write-buffered.subx.html#L209'>Stderr</a></span>)
-<span id="L8465" class="LineNr"> 8465 </span>    <span class="subxS1Comment"># . syscall(exit, 1)</span>
-<span id="L8466" class="LineNr"> 8466 </span>    bb/copy-to-ebx  1/imm32
-<span id="L8467" class="LineNr"> 8467 </span>    b8/copy-to-eax  1/imm32/exit
-<span id="L8468" class="LineNr"> 8468 </span>    cd/syscall  0x80/imm8
-<span id="L8469" class="LineNr"> 8469 </span>    <span class="subxComment"># never gets here</span>
-<span id="L8470" class="LineNr"> 8470 </span>
-<span id="L8471" class="LineNr"> 8471 </span><span class="subxFunction">emit-subx-r32</span>:  <span class="subxComment"># out: (addr buffered-file), l: arg-location, stmt: (handle stmt)</span>
-<span id="L8472" class="LineNr"> 8472 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8473" class="LineNr"> 8473 </span>    55/push-ebp
-<span id="L8474" class="LineNr"> 8474 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8475" class="LineNr"> 8475 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8476" class="LineNr"> 8476 </span>    50/push-eax
-<span id="L8477" class="LineNr"> 8477 </span>    51/push-ecx
-<span id="L8478" class="LineNr"> 8478 </span>    <span class="subxComment"># if (location == 0) return</span>
-<span id="L8479" class="LineNr"> 8479 </span>    81 7/subop/compare *(ebp+0xc) 0/imm32
-<span id="L8480" class="LineNr"> 8480 </span>    0f 84/jump-if-= $emit-subx-r32:end/disp32
-<span id="L8481" class="LineNr"> 8481 </span>    <span class="subxComment"># var v/eax: (handle var)</span>
-<span id="L8482" class="LineNr"> 8482 </span>    (<a href='mu.subx.html#L8414'>get-stmt-operand-from-arg-location</a> *(ebp+0x10) *(ebp+0xc))  <span class="subxComment"># =&gt; eax</span>
-<span id="L8483" class="LineNr"> 8483 </span>    8b/-&gt; *eax 0/r32/eax  <span class="subxComment"># Stmt-var-value</span>
-<span id="L8484" class="LineNr"> 8484 </span>    (<a href='../081table.subx.html#L1382'>maybe-get</a> <span class="SpecialChar"><a href='../090register-names.subx.html#L2'>Registers</a></span> *(eax+0x10) 8)  <span class="subxComment"># Var-register =&gt; eax: (addr register-index)</span>
-<span id="L8485" class="LineNr"> 8485 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
-<span id="L8486" class="LineNr"> 8486 </span>    (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> *(ebp+8) *eax)
-<span id="L8487" class="LineNr"> 8487 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;/r32&quot;</span>)
-<span id="L8488" class="LineNr"> 8488 </span><span class="Constant">$emit-subx-r32:end</span>:
-<span id="L8489" class="LineNr"> 8489 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8490" class="LineNr"> 8490 </span>    59/pop-to-ecx
-<span id="L8491" class="LineNr"> 8491 </span>    58/pop-to-eax
-<span id="L8492" class="LineNr"> 8492 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8493" class="LineNr"> 8493 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8494" class="LineNr"> 8494 </span>    5d/pop-to-ebp
-<span id="L8495" class="LineNr"> 8495 </span>    c3/return
-<span id="L8496" class="LineNr"> 8496 </span>
-<span id="L8497" class="LineNr"> 8497 </span><span class="subxFunction">emit-subx-imm32</span>:  <span class="subxComment"># out: (addr buffered-file), l: arg-location, stmt: (handle stmt)</span>
-<span id="L8498" class="LineNr"> 8498 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8499" class="LineNr"> 8499 </span>    55/push-ebp
-<span id="L8500" class="LineNr"> 8500 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8501" class="LineNr"> 8501 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8502" class="LineNr"> 8502 </span>    50/push-eax
-<span id="L8503" class="LineNr"> 8503 </span>    51/push-ecx
-<span id="L8504" class="LineNr"> 8504 </span>    <span class="subxComment"># if (location == 0) return</span>
-<span id="L8505" class="LineNr"> 8505 </span>    81 7/subop/compare *(ebp+0xc) 0/imm32
-<span id="L8506" class="LineNr"> 8506 </span>    74/jump-if-= $emit-subx-imm32:end/disp8
-<span id="L8507" class="LineNr"> 8507 </span>    <span class="subxComment"># var v/eax: (handle var)</span>
-<span id="L8508" class="LineNr"> 8508 </span>    (<a href='mu.subx.html#L8414'>get-stmt-operand-from-arg-location</a> *(ebp+0x10) *(ebp+0xc))  <span class="subxComment"># =&gt; eax</span>
-<span id="L8509" class="LineNr"> 8509 </span>    8b/-&gt; *eax 0/r32/eax  <span class="subxComment"># Stmt-var-value</span>
-<span id="L8510" class="LineNr"> 8510 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
-<span id="L8511" class="LineNr"> 8511 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *eax)  <span class="subxComment"># Var-name</span>
-<span id="L8512" class="LineNr"> 8512 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;/imm32&quot;</span>)
-<span id="L8513" class="LineNr"> 8513 </span><span class="Constant">$emit-subx-imm32:end</span>:
-<span id="L8514" class="LineNr"> 8514 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8515" class="LineNr"> 8515 </span>    59/pop-to-ecx
-<span id="L8516" class="LineNr"> 8516 </span>    58/pop-to-eax
-<span id="L8517" class="LineNr"> 8517 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8518" class="LineNr"> 8518 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8519" class="LineNr"> 8519 </span>    5d/pop-to-ebp
-<span id="L8520" class="LineNr"> 8520 </span>    c3/return
-<span id="L8521" class="LineNr"> 8521 </span>
-<span id="L8522" class="LineNr"> 8522 </span><span class="subxFunction">emit-subx-disp32</span>:  <span class="subxComment"># out: (addr buffered-file), l: arg-location, stmt: (handle stmt)</span>
-<span id="L8523" class="LineNr"> 8523 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8524" class="LineNr"> 8524 </span>    55/push-ebp
-<span id="L8525" class="LineNr"> 8525 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8526" class="LineNr"> 8526 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8527" class="LineNr"> 8527 </span>    50/push-eax
-<span id="L8528" class="LineNr"> 8528 </span>    51/push-ecx
-<span id="L8529" class="LineNr"> 8529 </span>    <span class="subxComment"># if (location == 0) return</span>
-<span id="L8530" class="LineNr"> 8530 </span>    81 7/subop/compare *(ebp+0xc) 0/imm32
-<span id="L8531" class="LineNr"> 8531 </span>    0f 84/jump-if-= $emit-subx-disp32:end/disp32
-<span id="L8532" class="LineNr"> 8532 </span>    <span class="subxComment"># var v/eax: (handle var)</span>
-<span id="L8533" class="LineNr"> 8533 </span>    (<a href='mu.subx.html#L8414'>get-stmt-operand-from-arg-location</a> *(ebp+0x10) *(ebp+0xc))  <span class="subxComment"># =&gt; eax</span>
-<span id="L8534" class="LineNr"> 8534 </span>    8b/-&gt; *eax 0/r32/eax  <span class="subxComment"># Stmt-var-value</span>
-<span id="L8535" class="LineNr"> 8535 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
-<span id="L8536" class="LineNr"> 8536 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *eax)  <span class="subxComment"># Var-name</span>
-<span id="L8537" class="LineNr"> 8537 </span>    <span class="subxComment"># hack: if instruction operation starts with &quot;break&quot;, emit &quot;:break&quot;</span>
-<span id="L8538" class="LineNr"> 8538 </span>    <span class="subxComment"># var name/ecx: (addr array byte) = stmt-&gt;operation</span>
-<span id="L8539" class="LineNr"> 8539 </span>    8b/-&gt; *(ebp+0x10) 0/r32/eax
-<span id="L8540" class="LineNr"> 8540 </span>    8b/-&gt; *(eax+4) 1/r32/ecx
-<span id="L8541" class="LineNr"> 8541 </span>    {
-<span id="L8542" class="LineNr"> 8542 </span>      (<a href='../054string-equal.subx.html#L58'>string-starts-with?</a> %ecx <span class="Constant">&quot;break&quot;</span>)  <span class="subxComment"># =&gt; eax</span>
-<span id="L8543" class="LineNr"> 8543 </span>      3d/compare-eax-and 0/imm32/false
-<span id="L8544" class="LineNr"> 8544 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8545" class="LineNr"> 8545 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;:break&quot;</span>)
-<span id="L8546" class="LineNr"> 8546 </span>    }
-<span id="L8547" class="LineNr"> 8547 </span>    <span class="subxComment"># hack: if instruction operation starts with &quot;loop&quot;, emit &quot;:loop&quot;</span>
-<span id="L8548" class="LineNr"> 8548 </span>    {
-<span id="L8549" class="LineNr"> 8549 </span>      (<a href='../054string-equal.subx.html#L58'>string-starts-with?</a> %ecx <span class="Constant">&quot;loop&quot;</span>)  <span class="subxComment"># =&gt; eax</span>
-<span id="L8550" class="LineNr"> 8550 </span>      3d/compare-eax-and 0/imm32/false
-<span id="L8551" class="LineNr"> 8551 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8552" class="LineNr"> 8552 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;:loop&quot;</span>)
-<span id="L8553" class="LineNr"> 8553 </span>    }
-<span id="L8554" class="LineNr"> 8554 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;/disp32&quot;</span>)
-<span id="L8555" class="LineNr"> 8555 </span><span class="Constant">$emit-subx-disp32:end</span>:
-<span id="L8556" class="LineNr"> 8556 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8557" class="LineNr"> 8557 </span>    59/pop-to-ecx
-<span id="L8558" class="LineNr"> 8558 </span>    58/pop-to-eax
-<span id="L8559" class="LineNr"> 8559 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8560" class="LineNr"> 8560 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8561" class="LineNr"> 8561 </span>    5d/pop-to-ebp
-<span id="L8562" class="LineNr"> 8562 </span>    c3/return
-<span id="L8563" class="LineNr"> 8563 </span>
-<span id="L8564" class="LineNr"> 8564 </span><span class="subxFunction">emit-subx-call</span>:  <span class="subxComment"># out: (addr buffered-file), stmt: (handle stmt), callee: (handle function)</span>
-<span id="L8565" class="LineNr"> 8565 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8566" class="LineNr"> 8566 </span>    55/push-ebp
-<span id="L8567" class="LineNr"> 8567 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8568" class="LineNr"> 8568 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8569" class="LineNr"> 8569 </span>    51/push-ecx
-<span id="L8570" class="LineNr"> 8570 </span>    <span class="subxComment">#</span>
-<span id="L8571" class="LineNr"> 8571 </span>    (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
-<span id="L8572" class="LineNr"> 8572 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;(&quot;</span>)
-<span id="L8573" class="LineNr"> 8573 </span>    <span class="subxH1Comment"># - emit function name</span>
-<span id="L8574" class="LineNr"> 8574 </span>    8b/-&gt; *(ebp+0x10) 1/r32/ecx
-<span id="L8575" class="LineNr"> 8575 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(ecx+4))  <span class="subxComment"># Function-subx-name</span>
-<span id="L8576" class="LineNr"> 8576 </span>    <span class="subxH1Comment"># - emit arguments</span>
-<span id="L8577" class="LineNr"> 8577 </span>    <span class="subxComment"># var curr/ecx: (handle stmt-var) = stmt-&gt;inouts</span>
-<span id="L8578" class="LineNr"> 8578 </span>    8b/-&gt; *(ebp+0xc) 1/r32/ecx
-<span id="L8579" class="LineNr"> 8579 </span>    8b/-&gt; *(ecx+8) 1/r32/ecx  <span class="subxComment"># Stmt1-inouts</span>
-<span id="L8580" class="LineNr"> 8580 </span>    {
-<span id="L8581" class="LineNr"> 8581 </span>      <span class="subxComment"># if (curr == null) break</span>
-<span id="L8582" class="LineNr"> 8582 </span>      81 7/subop/compare %ecx 0/imm32
-<span id="L8583" class="LineNr"> 8583 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8584" class="LineNr"> 8584 </span>      <span class="subxComment">#</span>
-<span id="L8585" class="LineNr"> 8585 </span>      (<a href='mu.subx.html#L8638'>emit-subx-call-operand</a> *(ebp+8) %ecx)
-<span id="L8586" class="LineNr"> 8586 </span>      <span class="subxComment"># curr = curr-&gt;next</span>
-<span id="L8587" class="LineNr"> 8587 </span>      8b/-&gt; *(ecx+4) 1/r32/ecx  <span class="subxComment"># Stmt-var-next</span>
-<span id="L8588" class="LineNr"> 8588 </span>      eb/jump <span class="Constant">loop</span>/disp8
-<span id="L8589" class="LineNr"> 8589 </span>    }
-<span id="L8590" class="LineNr"> 8590 </span>    <span class="subxComment">#</span>
-<span id="L8591" class="LineNr"> 8591 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;)\n&quot;</span>)
-<span id="L8592" class="LineNr"> 8592 </span><span class="Constant">$emit-subx-call:end</span>:
-<span id="L8593" class="LineNr"> 8593 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8594" class="LineNr"> 8594 </span>    59/pop-to-ecx
-<span id="L8595" class="LineNr"> 8595 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8596" class="LineNr"> 8596 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8597" class="LineNr"> 8597 </span>    5d/pop-to-ebp
-<span id="L8598" class="LineNr"> 8598 </span>    c3/return
-<span id="L8599" class="LineNr"> 8599 </span>
-<span id="L8600" class="LineNr"> 8600 </span><span class="subxComment"># like a function call, except we have no idea what function it is</span>
-<span id="L8601" class="LineNr"> 8601 </span><span class="subxComment"># we hope it's defined in SubX and that the types are ok</span>
-<span id="L8602" class="LineNr"> 8602 </span><span class="subxFunction">emit-hailmary-call</span>:  <span class="subxComment"># out: (addr buffered-file), stmt: (handle stmt)</span>
-<span id="L8603" class="LineNr"> 8603 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8604" class="LineNr"> 8604 </span>    55/push-ebp
-<span id="L8605" class="LineNr"> 8605 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8606" class="LineNr"> 8606 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8607" class="LineNr"> 8607 </span>    51/push-ecx
-<span id="L8608" class="LineNr"> 8608 </span>    <span class="subxComment">#</span>
-<span id="L8609" class="LineNr"> 8609 </span>    (<a href='mu.subx.html#L10446'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
-<span id="L8610" class="LineNr"> 8610 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;(&quot;</span>)
-<span id="L8611" class="LineNr"> 8611 </span>    <span class="subxComment"># ecx = stmt</span>
-<span id="L8612" class="LineNr"> 8612 </span>    8b/-&gt; *(ebp+0xc) 1/r32/ecx
-<span id="L8613" class="LineNr"> 8613 </span>    <span class="subxH1Comment"># - emit function name</span>
-<span id="L8614" class="LineNr"> 8614 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(ecx+4))  <span class="subxComment"># Stmt1-operation</span>
-<span id="L8615" class="LineNr"> 8615 </span>    <span class="subxH1Comment"># - emit arguments</span>
-<span id="L8616" class="LineNr"> 8616 </span>    <span class="subxComment"># var curr/ecx: (handle stmt-var) = stmt-&gt;inouts</span>
-<span id="L8617" class="LineNr"> 8617 </span>    8b/-&gt; *(ecx+8) 1/r32/ecx  <span class="subxComment"># Stmt1-inouts</span>
-<span id="L8618" class="LineNr"> 8618 </span>    {
-<span id="L8619" class="LineNr"> 8619 </span>      <span class="subxComment"># if (curr == null) break</span>
-<span id="L8620" class="LineNr"> 8620 </span>      81 7/subop/compare %ecx 0/imm32
-<span id="L8621" class="LineNr"> 8621 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8622" class="LineNr"> 8622 </span>      <span class="subxComment">#</span>
-<span id="L8623" class="LineNr"> 8623 </span>      (<a href='mu.subx.html#L8638'>emit-subx-call-operand</a> *(ebp+8) %ecx)
-<span id="L8624" class="LineNr"> 8624 </span>      <span class="subxComment"># curr = curr-&gt;next</span>
-<span id="L8625" class="LineNr"> 8625 </span>      8b/-&gt; *(ecx+4) 1/r32/ecx  <span class="subxComment"># Stmt-var-next</span>
-<span id="L8626" class="LineNr"> 8626 </span>      eb/jump <span class="Constant">loop</span>/disp8
-<span id="L8627" class="LineNr"> 8627 </span>    }
-<span id="L8628" class="LineNr"> 8628 </span>    <span class="subxComment">#</span>
-<span id="L8629" class="LineNr"> 8629 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;)\n&quot;</span>)
-<span id="L8630" class="LineNr"> 8630 </span><span class="Constant">$emit-hailmary-call:end</span>:
-<span id="L8631" class="LineNr"> 8631 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8632" class="LineNr"> 8632 </span>    59/pop-to-ecx
-<span id="L8633" class="LineNr"> 8633 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8634" class="LineNr"> 8634 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8635" class="LineNr"> 8635 </span>    5d/pop-to-ebp
-<span id="L8636" class="LineNr"> 8636 </span>    c3/return
-<span id="L8637" class="LineNr"> 8637 </span>
-<span id="L8638" class="LineNr"> 8638 </span><span class="subxFunction">emit-subx-call-operand</span>:  <span class="subxComment"># out: (addr buffered-file), s: (handle stmt-var)</span>
-<span id="L8639" class="LineNr"> 8639 </span>    <span class="subxComment"># shares code with emit-subx-var-as-rm32</span>
-<span id="L8640" class="LineNr"> 8640 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8641" class="LineNr"> 8641 </span>    55/push-ebp
-<span id="L8642" class="LineNr"> 8642 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8643" class="LineNr"> 8643 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8644" class="LineNr"> 8644 </span>    50/push-eax
-<span id="L8645" class="LineNr"> 8645 </span>    51/push-ecx
-<span id="L8646" class="LineNr"> 8646 </span>    56/push-esi
-<span id="L8647" class="LineNr"> 8647 </span>    <span class="subxComment"># ecx = s</span>
-<span id="L8648" class="LineNr"> 8648 </span>    8b/-&gt; *(ebp+0xc) 1/r32/ecx
-<span id="L8649" class="LineNr"> 8649 </span>    <span class="subxComment"># var operand/esi: (handle var) = s-&gt;value</span>
-<span id="L8650" class="LineNr"> 8650 </span>    8b/-&gt; *ecx 6/r32/esi  <span class="subxComment"># Stmt-var-value</span>
-<span id="L8651" class="LineNr"> 8651 </span>    <span class="subxComment"># if (operand-&gt;register &amp;&amp; s-&gt;is-deref?) emit &quot;*__&quot;</span>
-<span id="L8652" class="LineNr"> 8652 </span>    {
-<span id="L8653" class="LineNr"> 8653 </span><span class="Constant">$emit-subx-call-operand:check-for-register-indirect</span>:
-<span id="L8654" class="LineNr"> 8654 </span>      81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
-<span id="L8655" class="LineNr"> 8655 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8656" class="LineNr"> 8656 </span>      81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
-<span id="L8657" class="LineNr"> 8657 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8658" class="LineNr"> 8658 </span><span class="Constant">$emit-subx-call-operand:register-indirect</span>:
-<span id="L8659" class="LineNr"> 8659 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot; *&quot;</span>)
-<span id="L8660" class="LineNr"> 8660 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(esi+0x10))  <span class="subxComment"># Var-register</span>
-<span id="L8661" class="LineNr"> 8661 </span>      e9/jump $emit-subx-call-operand:end/disp32
-<span id="L8662" class="LineNr"> 8662 </span>    }
-<span id="L8663" class="LineNr"> 8663 </span>    <span class="subxComment"># if (operand-&gt;register &amp;&amp; !s-&gt;is-deref?) emit &quot;%__&quot;</span>
-<span id="L8664" class="LineNr"> 8664 </span>    {
-<span id="L8665" class="LineNr"> 8665 </span><span class="Constant">$emit-subx-call-operand:check-for-register-direct</span>:
-<span id="L8666" class="LineNr"> 8666 </span>      81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
-<span id="L8667" class="LineNr"> 8667 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8668" class="LineNr"> 8668 </span>      81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
-<span id="L8669" class="LineNr"> 8669 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8670" class="LineNr"> 8670 </span><span class="Constant">$emit-subx-call-operand:register-direct</span>:
-<span id="L8671" class="LineNr"> 8671 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot; %&quot;</span>)
-<span id="L8672" class="LineNr"> 8672 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(esi+0x10))  <span class="subxComment"># Var-register</span>
-<span id="L8673" class="LineNr"> 8673 </span>      e9/jump $emit-subx-call-operand:end/disp32
-<span id="L8674" class="LineNr"> 8674 </span>    }
-<span id="L8675" class="LineNr"> 8675 </span>    <span class="subxComment"># else if (operand-&gt;stack-offset) emit &quot;*(ebp+__)&quot;</span>
-<span id="L8676" class="LineNr"> 8676 </span>    {
-<span id="L8677" class="LineNr"> 8677 </span>      81 7/subop/compare *(esi+0xc) 0/imm32  <span class="subxComment"># Var-offset</span>
-<span id="L8678" class="LineNr"> 8678 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8679" class="LineNr"> 8679 </span><span class="Constant">$emit-subx-call-operand:stack</span>:
-<span id="L8680" class="LineNr"> 8680 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
-<span id="L8681" class="LineNr"> 8681 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;*(ebp+&quot;</span>)
-<span id="L8682" class="LineNr"> 8682 </span>      (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> *(ebp+8) *(esi+0xc))  <span class="subxComment"># Var-offset</span>
-<span id="L8683" class="LineNr"> 8683 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;)&quot;</span>)
-<span id="L8684" class="LineNr"> 8684 </span>      e9/jump $emit-subx-call-operand:end/disp32
-<span id="L8685" class="LineNr"> 8685 </span>    }
-<span id="L8686" class="LineNr"> 8686 </span>    <span class="subxComment"># else if (operand-&gt;type == literal) emit &quot;__&quot;</span>
-<span id="L8687" class="LineNr"> 8687 </span>    {
-<span id="L8688" class="LineNr"> 8688 </span>      8b/-&gt; *(esi+4) 0/r32/eax  <span class="subxComment"># Var-type</span>
-<span id="L8689" class="LineNr"> 8689 </span>      81 7/subop/compare *eax 0/imm32  <span class="subxComment"># Tree-left</span>
-<span id="L8690" class="LineNr"> 8690 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8691" class="LineNr"> 8691 </span><span class="Constant">$emit-subx-call-operand:literal</span>:
-<span id="L8692" class="LineNr"> 8692 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
-<span id="L8693" class="LineNr"> 8693 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *esi)
-<span id="L8694" class="LineNr"> 8694 </span>    }
-<span id="L8695" class="LineNr"> 8695 </span><span class="Constant">$emit-subx-call-operand:end</span>:
-<span id="L8696" class="LineNr"> 8696 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8697" class="LineNr"> 8697 </span>    5e/pop-to-esi
-<span id="L8698" class="LineNr"> 8698 </span>    59/pop-to-ecx
-<span id="L8699" class="LineNr"> 8699 </span>    58/pop-to-eax
-<span id="L8700" class="LineNr"> 8700 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8701" class="LineNr"> 8701 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8702" class="LineNr"> 8702 </span>    5d/pop-to-ebp
-<span id="L8703" class="LineNr"> 8703 </span>    c3/return
-<span id="L8704" class="LineNr"> 8704 </span>
-<span id="L8705" class="LineNr"> 8705 </span><span class="subxFunction">emit-subx-var-as-rm32</span>:  <span class="subxComment"># out: (addr buffered-file), s: (handle stmt-var)</span>
-<span id="L8706" class="LineNr"> 8706 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8707" class="LineNr"> 8707 </span>    55/push-ebp
-<span id="L8708" class="LineNr"> 8708 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8709" class="LineNr"> 8709 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8710" class="LineNr"> 8710 </span>    50/push-eax
-<span id="L8711" class="LineNr"> 8711 </span>    51/push-ecx
-<span id="L8712" class="LineNr"> 8712 </span>    56/push-esi
-<span id="L8713" class="LineNr"> 8713 </span>    <span class="subxComment"># ecx = s</span>
-<span id="L8714" class="LineNr"> 8714 </span>    8b/-&gt; *(ebp+0xc) 1/r32/ecx
-<span id="L8715" class="LineNr"> 8715 </span>    <span class="subxComment"># var operand/esi: (handle var) = s-&gt;value</span>
-<span id="L8716" class="LineNr"> 8716 </span>    8b/-&gt; *ecx 6/r32/esi  <span class="subxComment"># Stmt-var-value</span>
-<span id="L8717" class="LineNr"> 8717 </span>    <span class="subxComment"># if (operand-&gt;register &amp;&amp; s-&gt;is-deref?) emit &quot;*__&quot;</span>
-<span id="L8718" class="LineNr"> 8718 </span>    {
-<span id="L8719" class="LineNr"> 8719 </span><span class="Constant">$emit-subx-var-as-rm32:check-for-register-indirect</span>:
-<span id="L8720" class="LineNr"> 8720 </span>      81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
-<span id="L8721" class="LineNr"> 8721 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8722" class="LineNr"> 8722 </span>      81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
-<span id="L8723" class="LineNr"> 8723 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8724" class="LineNr"> 8724 </span><span class="Constant">$emit-subx-var-as-rm32:register-indirect</span>:
-<span id="L8725" class="LineNr"> 8725 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot; *&quot;</span>)
-<span id="L8726" class="LineNr"> 8726 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(esi+0x10))  <span class="subxComment"># Var-register</span>
-<span id="L8727" class="LineNr"> 8727 </span>    }
-<span id="L8728" class="LineNr"> 8728 </span>    <span class="subxComment"># if (operand-&gt;register &amp;&amp; !s-&gt;is-deref?) emit &quot;%__&quot;</span>
-<span id="L8729" class="LineNr"> 8729 </span>    {
-<span id="L8730" class="LineNr"> 8730 </span><span class="Constant">$emit-subx-var-as-rm32:check-for-register-direct</span>:
-<span id="L8731" class="LineNr"> 8731 </span>      81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
-<span id="L8732" class="LineNr"> 8732 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8733" class="LineNr"> 8733 </span>      81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
-<span id="L8734" class="LineNr"> 8734 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8735" class="LineNr"> 8735 </span><span class="Constant">$emit-subx-var-as-rm32:register-direct</span>:
-<span id="L8736" class="LineNr"> 8736 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot; %&quot;</span>)
-<span id="L8737" class="LineNr"> 8737 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(esi+0x10))  <span class="subxComment"># Var-register</span>
-<span id="L8738" class="LineNr"> 8738 </span>    }
-<span id="L8739" class="LineNr"> 8739 </span>    <span class="subxComment"># else if (operand-&gt;stack-offset) emit &quot;*(ebp+__)&quot;</span>
-<span id="L8740" class="LineNr"> 8740 </span>    {
-<span id="L8741" class="LineNr"> 8741 </span>      81 7/subop/compare *(esi+0xc) 0/imm32  <span class="subxComment"># Var-offset</span>
-<span id="L8742" class="LineNr"> 8742 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8743" class="LineNr"> 8743 </span><span class="Constant">$emit-subx-var-as-rm32:stack</span>:
-<span id="L8744" class="LineNr"> 8744 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
-<span id="L8745" class="LineNr"> 8745 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;*(ebp+&quot;</span>)
-<span id="L8746" class="LineNr"> 8746 </span>      (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> *(ebp+8) *(esi+0xc))  <span class="subxComment"># Var-offset</span>
-<span id="L8747" class="LineNr"> 8747 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;)&quot;</span>)
-<span id="L8748" class="LineNr"> 8748 </span>    }
-<span id="L8749" class="LineNr"> 8749 </span><span class="Constant">$emit-subx-var-as-rm32:end</span>:
-<span id="L8750" class="LineNr"> 8750 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8751" class="LineNr"> 8751 </span>    5e/pop-to-esi
-<span id="L8752" class="LineNr"> 8752 </span>    59/pop-to-ecx
-<span id="L8753" class="LineNr"> 8753 </span>    58/pop-to-eax
-<span id="L8754" class="LineNr"> 8754 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8755" class="LineNr"> 8755 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8756" class="LineNr"> 8756 </span>    5d/pop-to-ebp
-<span id="L8757" class="LineNr"> 8757 </span>    c3/return
-<span id="L8758" class="LineNr"> 8758 </span>
-<span id="L8759" class="LineNr"> 8759 </span><span class="subxFunction">find-matching-function</span>:  <span class="subxComment"># functions: (addr function), stmt: (handle stmt) -&gt; result/eax: (handle function)</span>
-<span id="L8760" class="LineNr"> 8760 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8761" class="LineNr"> 8761 </span>    55/push-ebp
-<span id="L8762" class="LineNr"> 8762 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8763" class="LineNr"> 8763 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8764" class="LineNr"> 8764 </span>    51/push-ecx
-<span id="L8765" class="LineNr"> 8765 </span>    <span class="subxComment"># var curr/ecx: (handle function) = functions</span>
-<span id="L8766" class="LineNr"> 8766 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
-<span id="L8767" class="LineNr"> 8767 </span>    {
-<span id="L8768" class="LineNr"> 8768 </span>      <span class="subxComment"># if (curr == null) break</span>
-<span id="L8769" class="LineNr"> 8769 </span>      81 7/subop/compare %ecx 0/imm32
-<span id="L8770" class="LineNr"> 8770 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8771" class="LineNr"> 8771 </span>      <span class="subxComment"># if match(stmt, curr) return curr</span>
-<span id="L8772" class="LineNr"> 8772 </span>      {
-<span id="L8773" class="LineNr"> 8773 </span>        (<a href='mu.subx.html#L8835'>mu-stmt-matches-function?</a> *(ebp+0xc) %ecx)  <span class="subxComment"># =&gt; eax</span>
-<span id="L8774" class="LineNr"> 8774 </span>        3d/compare-eax-and 0/imm32/false
-<span id="L8775" class="LineNr"> 8775 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8776" class="LineNr"> 8776 </span>        89/&lt;- %eax 1/r32/ecx
-<span id="L8777" class="LineNr"> 8777 </span>        eb/jump $find-matching-function:end/disp8
-<span id="L8778" class="LineNr"> 8778 </span>      }
-<span id="L8779" class="LineNr"> 8779 </span>      <span class="subxComment"># curr = curr-&gt;next</span>
-<span id="L8780" class="LineNr"> 8780 </span>      8b/-&gt; *(ecx+0x14) 1/r32/ecx  <span class="subxComment"># Function-next</span>
-<span id="L8781" class="LineNr"> 8781 </span>      eb/jump <span class="Constant">loop</span>/disp8
-<span id="L8782" class="LineNr"> 8782 </span>    }
-<span id="L8783" class="LineNr"> 8783 </span>    <span class="subxComment"># return null</span>
-<span id="L8784" class="LineNr"> 8784 </span>    b8/copy-to-eax 0/imm32
-<span id="L8785" class="LineNr"> 8785 </span><span class="Constant">$find-matching-function:end</span>:
-<span id="L8786" class="LineNr"> 8786 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8787" class="LineNr"> 8787 </span>    59/pop-to-ecx
-<span id="L8788" class="LineNr"> 8788 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8789" class="LineNr"> 8789 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8790" class="LineNr"> 8790 </span>    5d/pop-to-ebp
-<span id="L8791" class="LineNr"> 8791 </span>    c3/return
-<span id="L8792" class="LineNr"> 8792 </span>
-<span id="L8793" class="LineNr"> 8793 </span><span class="subxFunction">find-matching-primitive</span>:  <span class="subxComment"># primitives: (handle primitive), stmt: (handle stmt) -&gt; result/eax: (handle primitive)</span>
-<span id="L8794" class="LineNr"> 8794 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8795" class="LineNr"> 8795 </span>    55/push-ebp
-<span id="L8796" class="LineNr"> 8796 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8797" class="LineNr"> 8797 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8798" class="LineNr"> 8798 </span>    51/push-ecx
-<span id="L8799" class="LineNr"> 8799 </span>    <span class="subxComment"># var curr/ecx: (handle primitive) = primitives</span>
-<span id="L8800" class="LineNr"> 8800 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
-<span id="L8801" class="LineNr"> 8801 </span>    {
-<span id="L8802" class="LineNr"> 8802 </span><span class="Constant">$find-matching-primitive:loop</span>:
-<span id="L8803" class="LineNr"> 8803 </span>      <span class="subxComment"># if (curr == null) break</span>
-<span id="L8804" class="LineNr"> 8804 </span>      81 7/subop/compare %ecx 0/imm32
-<span id="L8805" class="LineNr"> 8805 </span>      0f 84/jump-if-= <span class="Constant">break</span>/disp32
-<span id="L8806" class="LineNr"> 8806 </span><span class="CommentedCode">#?       (write-buffered Stderr &quot;prim: &quot;)</span>
-<span id="L8807" class="LineNr"> 8807 </span><span class="CommentedCode">#?       (write-buffered Stderr *ecx)  # Primitive-name</span>
-<span id="L8808" class="LineNr"> 8808 </span><span class="CommentedCode">#?       (write-buffered Stderr &quot; =&gt; &quot;)</span>
-<span id="L8809" class="LineNr"> 8809 </span><span class="CommentedCode">#?       (write-buffered Stderr *(ecx+0xc))  # Primitive-subx-name</span>
-<span id="L8810" class="LineNr"> 8810 </span><span class="CommentedCode">#?       (write-buffered Stderr Newline)</span>
-<span id="L8811" class="LineNr"> 8811 </span><span class="CommentedCode">#?       (flush Stderr)</span>
-<span id="L8812" class="LineNr"> 8812 </span>      <span class="subxComment"># if match(curr, stmt) return curr</span>
-<span id="L8813" class="LineNr"> 8813 </span>      {
-<span id="L8814" class="LineNr"> 8814 </span>        (<a href='mu.subx.html#L8853'>mu-stmt-matches-primitive?</a> *(ebp+0xc) %ecx)  <span class="subxComment"># =&gt; eax</span>
-<span id="L8815" class="LineNr"> 8815 </span>        3d/compare-eax-and 0/imm32/false
-<span id="L8816" class="LineNr"> 8816 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L8817" class="LineNr"> 8817 </span>        89/&lt;- %eax 1/r32/ecx
-<span id="L8818" class="LineNr"> 8818 </span>        eb/jump $find-matching-primitive:end/disp8
-<span id="L8819" class="LineNr"> 8819 </span>      }
-<span id="L8820" class="LineNr"> 8820 </span><span class="Constant">$find-matching-primitive:next-primitive</span>:
-<span id="L8821" class="LineNr"> 8821 </span>      <span class="subxComment"># curr = curr-&gt;next</span>
-<span id="L8822" class="LineNr"> 8822 </span>      8b/-&gt; *(ecx+0x24) 1/r32/ecx  <span class="subxComment"># Primitive-next</span>
-<span id="L8823" class="LineNr"> 8823 </span>      e9/jump <span class="Constant">loop</span>/disp32
-<span id="L8824" class="LineNr"> 8824 </span>    }
-<span id="L8825" class="LineNr"> 8825 </span>    <span class="subxComment"># return null</span>
-<span id="L8826" class="LineNr"> 8826 </span>    b8/copy-to-eax 0/imm32
-<span id="L8827" class="LineNr"> 8827 </span><span class="Constant">$find-matching-primitive:end</span>:
-<span id="L8828" class="LineNr"> 8828 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8829" class="LineNr"> 8829 </span>    59/pop-to-ecx
-<span id="L8830" class="LineNr"> 8830 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8831" class="LineNr"> 8831 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8832" class="LineNr"> 8832 </span>    5d/pop-to-ebp
-<span id="L8833" class="LineNr"> 8833 </span>    c3/return
-<span id="L8834" class="LineNr"> 8834 </span>
-<span id="L8835" class="LineNr"> 8835 </span><span class="subxFunction">mu-stmt-matches-function?</span>:  <span class="subxComment"># stmt: (handle stmt), function: (handle function) -&gt; result/eax: boolean</span>
-<span id="L8836" class="LineNr"> 8836 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8837" class="LineNr"> 8837 </span>    55/push-ebp
-<span id="L8838" class="LineNr"> 8838 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8839" class="LineNr"> 8839 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8840" class="LineNr"> 8840 </span>    51/push-ecx
-<span id="L8841" class="LineNr"> 8841 </span>    <span class="subxComment"># return function-&gt;name == stmt-&gt;operation</span>
-<span id="L8842" class="LineNr"> 8842 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
-<span id="L8843" class="LineNr"> 8843 </span>    8b/-&gt; *(ebp+0xc) 0/r32/eax
-<span id="L8844" class="LineNr"> 8844 </span>    (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *(ecx+4) *eax)  <span class="subxComment"># Stmt1-operation, Function-name =&gt; eax</span>
-<span id="L8845" class="LineNr"> 8845 </span><span class="Constant">$mu-stmt-matches-function?:end</span>:
-<span id="L8846" class="LineNr"> 8846 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8847" class="LineNr"> 8847 </span>    59/pop-to-ecx
-<span id="L8848" class="LineNr"> 8848 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8849" class="LineNr"> 8849 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8850" class="LineNr"> 8850 </span>    5d/pop-to-ebp
-<span id="L8851" class="LineNr"> 8851 </span>    c3/return
-<span id="L8852" class="LineNr"> 8852 </span>
-<span id="L8853" class="LineNr"> 8853 </span><span class="subxFunction">mu-stmt-matches-primitive?</span>:  <span class="subxComment"># stmt: (handle stmt), primitive: (handle primitive) -&gt; result/eax: boolean</span>
-<span id="L8854" class="LineNr"> 8854 </span>    <span class="subxComment"># A mu stmt matches a primitive if the name matches, all the inout vars</span>
-<span id="L8855" class="LineNr"> 8855 </span>    <span class="subxComment"># match, and all the output vars match.</span>
-<span id="L8856" class="LineNr"> 8856 </span>    <span class="subxComment"># Vars match if types match and registers match.</span>
-<span id="L8857" class="LineNr"> 8857 </span>    <span class="subxComment"># In addition, a stmt output matches a primitive's output if types match</span>
-<span id="L8858" class="LineNr"> 8858 </span>    <span class="subxComment"># and the primitive has a wildcard register.</span>
-<span id="L8859" class="LineNr"> 8859 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8860" class="LineNr"> 8860 </span>    55/push-ebp
-<span id="L8861" class="LineNr"> 8861 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8862" class="LineNr"> 8862 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8863" class="LineNr"> 8863 </span>    51/push-ecx
-<span id="L8864" class="LineNr"> 8864 </span>    52/push-edx
-<span id="L8865" class="LineNr"> 8865 </span>    53/push-ebx
-<span id="L8866" class="LineNr"> 8866 </span>    56/push-esi
-<span id="L8867" class="LineNr"> 8867 </span>    57/push-edi
-<span id="L8868" class="LineNr"> 8868 </span>    <span class="subxComment"># ecx = stmt</span>
-<span id="L8869" class="LineNr"> 8869 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
-<span id="L8870" class="LineNr"> 8870 </span>    <span class="subxComment"># edx = primitive</span>
-<span id="L8871" class="LineNr"> 8871 </span>    8b/-&gt; *(ebp+0xc) 2/r32/edx
-<span id="L8872" class="LineNr"> 8872 </span>    {
-<span id="L8873" class="LineNr"> 8873 </span><span class="Constant">$mu-stmt-matches-primitive?:check-name</span>:
-<span id="L8874" class="LineNr"> 8874 </span>      <span class="subxComment"># if (primitive-&gt;name != stmt-&gt;operation) return false</span>
-<span id="L8875" class="LineNr"> 8875 </span>      (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *(ecx+4) *edx)  <span class="subxComment"># Stmt1-operation, Primitive-name =&gt; eax</span>
-<span id="L8876" class="LineNr"> 8876 </span>      3d/compare-eax-and 0/imm32/false
-<span id="L8877" class="LineNr"> 8877 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8878" class="LineNr"> 8878 </span>      b8/copy-to-eax 0/imm32
-<span id="L8879" class="LineNr"> 8879 </span>      e9/jump $mu-stmt-matches-primitive?:end/disp32
-<span id="L8880" class="LineNr"> 8880 </span>    }
-<span id="L8881" class="LineNr"> 8881 </span><span class="Constant">$mu-stmt-matches-primitive?:check-inouts</span>:
-<span id="L8882" class="LineNr"> 8882 </span>    <span class="subxComment"># for (curr/esi in stmt-&gt;inouts, curr2/edi in primitive-&gt;inouts)</span>
-<span id="L8883" class="LineNr"> 8883 </span>    8b/-&gt; *(ecx+8) 6/r32/esi  <span class="subxComment"># Stmt1-inouts or Regvardef-inouts</span>
-<span id="L8884" class="LineNr"> 8884 </span>    8b/-&gt; *(edx+4) 7/r32/edi  <span class="subxComment"># Primitive-inouts</span>
-<span id="L8885" class="LineNr"> 8885 </span>    {
-<span id="L8886" class="LineNr"> 8886 </span>      <span class="subxComment"># if (curr == 0 &amp;&amp; curr2 == 0) move on to check outputs</span>
-<span id="L8887" class="LineNr"> 8887 </span>      {
-<span id="L8888" class="LineNr"> 8888 </span>        81 7/subop/compare %esi 0/imm32
-<span id="L8889" class="LineNr"> 8889 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8890" class="LineNr"> 8890 </span><span class="Constant">$mu-stmt-matches-primitive?:stmt-inout-is-null</span>:
-<span id="L8891" class="LineNr"> 8891 </span>        {
-<span id="L8892" class="LineNr"> 8892 </span>          81 7/subop/compare %edi 0/imm32
-<span id="L8893" class="LineNr"> 8893 </span>          75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8894" class="LineNr"> 8894 </span>          <span class="subxComment">#</span>
-<span id="L8895" class="LineNr"> 8895 </span>          e9/jump $mu-stmt-matches-primitive?:check-outputs/disp32
-<span id="L8896" class="LineNr"> 8896 </span>        }
-<span id="L8897" class="LineNr"> 8897 </span>        <span class="subxComment"># return false</span>
-<span id="L8898" class="LineNr"> 8898 </span>        b8/copy-to-eax 0/imm32/false
-<span id="L8899" class="LineNr"> 8899 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
-<span id="L8900" class="LineNr"> 8900 </span>      }
-<span id="L8901" class="LineNr"> 8901 </span>      <span class="subxComment"># if (curr2 == 0) return false</span>
-<span id="L8902" class="LineNr"> 8902 </span>      {
-<span id="L8903" class="LineNr"> 8903 </span>        81 7/subop/compare %edi 0/imm32
-<span id="L8904" class="LineNr"> 8904 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8905" class="LineNr"> 8905 </span><span class="Constant">$mu-stmt-matches-primitive?:prim-inout-is-null</span>:
-<span id="L8906" class="LineNr"> 8906 </span>        b8/copy-to-eax 0/imm32/false
-<span id="L8907" class="LineNr"> 8907 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
-<span id="L8908" class="LineNr"> 8908 </span>      }
-<span id="L8909" class="LineNr"> 8909 </span>      <span class="subxComment"># if (curr != curr2) return false</span>
-<span id="L8910" class="LineNr"> 8910 </span>      {
-<span id="L8911" class="LineNr"> 8911 </span>        (<a href='mu.subx.html#L8979'>operand-matches-primitive?</a> %esi *edi)  <span class="subxComment"># List-value =&gt; eax</span>
-<span id="L8912" class="LineNr"> 8912 </span>        3d/compare-eax-and 0/imm32/false
-<span id="L8913" class="LineNr"> 8913 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8914" class="LineNr"> 8914 </span>        b8/copy-to-eax 0/imm32/false
-<span id="L8915" class="LineNr"> 8915 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
-<span id="L8916" class="LineNr"> 8916 </span>      }
-<span id="L8917" class="LineNr"> 8917 </span>      <span class="subxComment"># curr=curr-&gt;next</span>
-<span id="L8918" class="LineNr"> 8918 </span>      8b/-&gt; *(esi+4) 6/r32/esi  <span class="subxComment"># Stmt-var-next</span>
-<span id="L8919" class="LineNr"> 8919 </span>      <span class="subxComment"># curr2=curr2-&gt;next</span>
-<span id="L8920" class="LineNr"> 8920 </span>      8b/-&gt; *(edi+4) 7/r32/edi  <span class="subxComment"># Stmt-var-next</span>
-<span id="L8921" class="LineNr"> 8921 </span>      eb/jump <span class="Constant">loop</span>/disp8
-<span id="L8922" class="LineNr"> 8922 </span>    }
-<span id="L8923" class="LineNr"> 8923 </span><span class="Constant">$mu-stmt-matches-primitive?:check-outputs</span>:
-<span id="L8924" class="LineNr"> 8924 </span>    <span class="subxComment"># for (curr/esi in stmt-&gt;outputs, curr2/edi in primitive-&gt;outputs)</span>
-<span id="L8925" class="LineNr"> 8925 </span>    8b/-&gt; *(ecx+0xc) 6/r32/esi  <span class="subxComment"># Stmt1-outputs</span>
-<span id="L8926" class="LineNr"> 8926 </span>    8b/-&gt; *(edx+8) 7/r32/edi  <span class="subxComment"># Primitive-outputs</span>
-<span id="L8927" class="LineNr"> 8927 </span>    {
-<span id="L8928" class="LineNr"> 8928 </span>      <span class="subxComment"># if (curr == 0) return (curr2 == 0)</span>
-<span id="L8929" class="LineNr"> 8929 </span>      {
-<span id="L8930" class="LineNr"> 8930 </span><span class="Constant">$mu-stmt-matches-primitive?:check-output</span>:
-<span id="L8931" class="LineNr"> 8931 </span>        81 7/subop/compare %esi 0/imm32
-<span id="L8932" class="LineNr"> 8932 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8933" class="LineNr"> 8933 </span>        {
-<span id="L8934" class="LineNr"> 8934 </span>          81 7/subop/compare %edi 0/imm32
-<span id="L8935" class="LineNr"> 8935 </span>          75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8936" class="LineNr"> 8936 </span>          <span class="subxComment"># return true</span>
-<span id="L8937" class="LineNr"> 8937 </span>          b8/copy-to-eax 1/imm32
-<span id="L8938" class="LineNr"> 8938 </span>          e9/jump $mu-stmt-matches-primitive?:end/disp32
-<span id="L8939" class="LineNr"> 8939 </span>        }
-<span id="L8940" class="LineNr"> 8940 </span>        <span class="subxComment"># return false</span>
-<span id="L8941" class="LineNr"> 8941 </span>        b8/copy-to-eax 0/imm32
-<span id="L8942" class="LineNr"> 8942 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
-<span id="L8943" class="LineNr"> 8943 </span>      }
-<span id="L8944" class="LineNr"> 8944 </span>      <span class="subxComment"># if (curr2 == 0) return false</span>
-<span id="L8945" class="LineNr"> 8945 </span>      {
-<span id="L8946" class="LineNr"> 8946 </span>        81 7/subop/compare %edi 0/imm32
-<span id="L8947" class="LineNr"> 8947 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8948" class="LineNr"> 8948 </span>        b8/copy-to-eax 0/imm32
-<span id="L8949" class="LineNr"> 8949 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
-<span id="L8950" class="LineNr"> 8950 </span>      }
-<span id="L8951" class="LineNr"> 8951 </span>      <span class="subxComment"># if (curr != curr2) return false</span>
-<span id="L8952" class="LineNr"> 8952 </span>      {
-<span id="L8953" class="LineNr"> 8953 </span>        (<a href='mu.subx.html#L8979'>operand-matches-primitive?</a> %esi *edi)  <span class="subxComment"># List-value =&gt; eax</span>
-<span id="L8954" class="LineNr"> 8954 </span>        3d/compare-eax-and 0/imm32/false
-<span id="L8955" class="LineNr"> 8955 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L8956" class="LineNr"> 8956 </span>        b8/copy-to-eax 0/imm32
-<span id="L8957" class="LineNr"> 8957 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
-<span id="L8958" class="LineNr"> 8958 </span>      }
-<span id="L8959" class="LineNr"> 8959 </span>      <span class="subxComment"># curr=curr-&gt;next</span>
-<span id="L8960" class="LineNr"> 8960 </span>      8b/-&gt; *(esi+4) 6/r32/esi  <span class="subxComment"># Stmt-var-next</span>
-<span id="L8961" class="LineNr"> 8961 </span>      <span class="subxComment"># curr2=curr2-&gt;next</span>
-<span id="L8962" class="LineNr"> 8962 </span>      8b/-&gt; *(edi+4) 7/r32/edi  <span class="subxComment"># Stmt-var-next</span>
-<span id="L8963" class="LineNr"> 8963 </span>      eb/jump <span class="Constant">loop</span>/disp8
-<span id="L8964" class="LineNr"> 8964 </span>    }
-<span id="L8965" class="LineNr"> 8965 </span><span class="Constant">$mu-stmt-matches-primitive?:return-true</span>:
-<span id="L8966" class="LineNr"> 8966 </span>    b8/copy-to-eax 1/imm32
-<span id="L8967" class="LineNr"> 8967 </span><span class="Constant">$mu-stmt-matches-primitive?:end</span>:
-<span id="L8968" class="LineNr"> 8968 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L8969" class="LineNr"> 8969 </span>    5f/pop-to-edi
-<span id="L8970" class="LineNr"> 8970 </span>    5e/pop-to-esi
-<span id="L8971" class="LineNr"> 8971 </span>    5b/pop-to-ebx
-<span id="L8972" class="LineNr"> 8972 </span>    5a/pop-to-edx
-<span id="L8973" class="LineNr"> 8973 </span>    59/pop-to-ecx
-<span id="L8974" class="LineNr"> 8974 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L8975" class="LineNr"> 8975 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L8976" class="LineNr"> 8976 </span>    5d/pop-to-ebp
-<span id="L8977" class="LineNr"> 8977 </span>    c3/return
-<span id="L8978" class="LineNr"> 8978 </span>
-<span id="L8979" class="LineNr"> 8979 </span><span class="subxFunction">operand-matches-primitive?</span>:  <span class="subxComment"># s: (handle stmt-var), prim-var: (handle var) -&gt; result/eax: boolean</span>
-<span id="L8980" class="LineNr"> 8980 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L8981" class="LineNr"> 8981 </span>    55/push-ebp
-<span id="L8982" class="LineNr"> 8982 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L8983" class="LineNr"> 8983 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L8984" class="LineNr"> 8984 </span>    51/push-ecx
-<span id="L8985" class="LineNr"> 8985 </span>    56/push-esi
-<span id="L8986" class="LineNr"> 8986 </span>    57/push-edi
-<span id="L8987" class="LineNr"> 8987 </span>    <span class="subxComment"># ecx = s</span>
-<span id="L8988" class="LineNr"> 8988 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
-<span id="L8989" class="LineNr"> 8989 </span>    <span class="subxComment"># var var/esi : (handle var) = s-&gt;value</span>
-<span id="L8990" class="LineNr"> 8990 </span>    8b/-&gt; *ecx 6/r32/esi  <span class="subxComment"># Stmt-var-value</span>
-<span id="L8991" class="LineNr"> 8991 </span>    <span class="subxComment"># edi = prim-var</span>
-<span id="L8992" class="LineNr"> 8992 </span>    8b/-&gt; *(ebp+0xc) 7/r32/edi
-<span id="L8993" class="LineNr"> 8993 </span><span class="Constant">$operand-matches-primitive?:check-type</span>:
-<span id="L8994" class="LineNr"> 8994 </span>    <span class="subxComment"># if (var-&gt;type != prim-var-&gt;type) return false</span>
-<span id="L8995" class="LineNr"> 8995 </span>    (<a href='mu.subx.html#L9057'>subx-type-equal?</a> *(esi+4) *(edi+4))  <span class="subxComment"># Var-type, Var-type =&gt; eax</span>
-<span id="L8996" class="LineNr"> 8996 </span>    3d/compare-eax-and 0/imm32/false
-<span id="L8997" class="LineNr"> 8997 </span>    b8/copy-to-eax 0/imm32/false
-<span id="L8998" class="LineNr"> 8998 </span>    0f 84/jump-if-= $operand-matches-primitive?:end/disp32
-<span id="L8999" class="LineNr"> 8999 </span>    {
-<span id="L9000" class="LineNr"> 9000 </span><span class="Constant">$operand-matches-primitive?:check-register</span>:
-<span id="L9001" class="LineNr"> 9001 </span>      <span class="subxComment"># if prim-var is in memory and var is in register but dereference, match</span>
-<span id="L9002" class="LineNr"> 9002 </span>      {
-<span id="L9003" class="LineNr"> 9003 </span>        81 7/subop/compare *(edi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
-<span id="L9004" class="LineNr"> 9004 </span>        0f 85/jump-if-!= <span class="Constant">break</span>/disp32
-<span id="L9005" class="LineNr"> 9005 </span>        81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
-<span id="L9006" class="LineNr"> 9006 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L9007" class="LineNr"> 9007 </span>        81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
-<span id="L9008" class="LineNr"> 9008 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L9009" class="LineNr"> 9009 </span>        e9/jump $operand-matches-primitive?:return-true/disp32
-<span id="L9010" class="LineNr"> 9010 </span>      }
-<span id="L9011" class="LineNr"> 9011 </span>      <span class="subxComment"># if prim-var is in register and var is in register but dereference, no match</span>
-<span id="L9012" class="LineNr"> 9012 </span>      {
-<span id="L9013" class="LineNr"> 9013 </span>        81 7/subop/compare *(edi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
-<span id="L9014" class="LineNr"> 9014 </span>        0f 84/jump-if-= <span class="Constant">break</span>/disp32
-<span id="L9015" class="LineNr"> 9015 </span>        81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
-<span id="L9016" class="LineNr"> 9016 </span>        0f 84/jump-if-= <span class="Constant">break</span>/disp32
-<span id="L9017" class="LineNr"> 9017 </span>        81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
-<span id="L9018" class="LineNr"> 9018 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L9019" class="LineNr"> 9019 </span>        e9/jump $operand-matches-primitive?:return-false/disp32
-<span id="L9020" class="LineNr"> 9020 </span>      }
-<span id="L9021" class="LineNr"> 9021 </span>      <span class="subxComment"># return false if var-&gt;register doesn't match prim-var-&gt;register</span>
-<span id="L9022" class="LineNr"> 9022 </span>      {
-<span id="L9023" class="LineNr"> 9023 </span>        <span class="subxComment"># if register addresses are equal, it's a match</span>
-<span id="L9024" class="LineNr"> 9024 </span>        8b/-&gt; *(esi+0x10) 0/r32/eax  <span class="subxComment"># Var-register</span>
-<span id="L9025" class="LineNr"> 9025 </span>        39/compare *(edi+0x10) 0/r32/eax  <span class="subxComment"># Var-register</span>
-<span id="L9026" class="LineNr"> 9026 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
-<span id="L9027" class="LineNr"> 9027 </span>        <span class="subxComment"># if either address is 0, return false</span>
-<span id="L9028" class="LineNr"> 9028 </span>        3d/compare-eax-and 0/imm32
-<span id="L9029" class="LineNr"> 9029 </span>        74/jump-if-=  $operand-matches-primitive?:end/disp8  <span class="subxComment"># eax goes from meaning var-&gt;register to result</span>
-<span id="L9030" class="LineNr"> 9030 </span>        81 7/subop/compare *(edi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
-<span id="L9031" class="LineNr"> 9031 </span>        74/jump-if-=  $operand-matches-primitive?:return-false/disp8
-<span id="L9032" class="LineNr"> 9032 </span>        <span class="subxComment"># if prim-var-&gt;register is wildcard, it's a match</span>
-<span id="L9033" class="LineNr"> 9033 </span>        (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *(edi+0x10) <span class="SpecialChar"><a href='mu.subx.html#L339'>Any-register</a></span>)  <span class="subxComment"># Var-register =&gt; eax</span>
+<span id="L8359" class="LineNr"> 8359 </span>== code
+<span id="L8360" class="LineNr"> 8360 </span><span class="subxFunction">emit-subx-primitive</span>:  <span class="subxComment"># out: (addr buffered-file), stmt: (handle stmt), primitive: (handle function)</span>
+<span id="L8361" class="LineNr"> 8361 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8362" class="LineNr"> 8362 </span>    55/push-ebp
+<span id="L8363" class="LineNr"> 8363 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8364" class="LineNr"> 8364 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8365" class="LineNr"> 8365 </span>    50/push-eax
+<span id="L8366" class="LineNr"> 8366 </span>    51/push-ecx
+<span id="L8367" class="LineNr"> 8367 </span>    <span class="subxComment"># ecx = primitive</span>
+<span id="L8368" class="LineNr"> 8368 </span>    8b/-&gt; *(ebp+0x10) 1/r32/ecx
+<span id="L8369" class="LineNr"> 8369 </span>    <span class="subxComment"># emit primitive name</span>
+<span id="L8370" class="LineNr"> 8370 </span>    (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L8371" class="LineNr"> 8371 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(ecx+0xc))  <span class="subxComment"># Primitive-subx-name</span>
+<span id="L8372" class="LineNr"> 8372 </span>    <span class="subxComment"># emit rm32 if necessary</span>
+<span id="L8373" class="LineNr"> 8373 </span>    (<a href='mu.subx.html#L8390'>emit-subx-rm32</a> *(ebp+8) *(ecx+0x10) *(ebp+0xc))  <span class="subxComment"># out, Primitive-subx-rm32, stmt</span>
+<span id="L8374" class="LineNr"> 8374 </span>    <span class="subxComment"># emit r32 if necessary</span>
+<span id="L8375" class="LineNr"> 8375 </span>    (<a href='mu.subx.html#L8467'>emit-subx-r32</a> *(ebp+8) *(ecx+0x14) *(ebp+0xc))  <span class="subxComment"># out, Primitive-subx-r32, stmt</span>
+<span id="L8376" class="LineNr"> 8376 </span>    <span class="subxComment"># emit imm32 if necessary</span>
+<span id="L8377" class="LineNr"> 8377 </span>    (<a href='mu.subx.html#L8493'>emit-subx-imm32</a> *(ebp+8) *(ecx+0x18) *(ebp+0xc))  <span class="subxComment"># out, Primitive-subx-imm32, stmt</span>
+<span id="L8378" class="LineNr"> 8378 </span>    <span class="subxComment"># emit disp32 if necessary</span>
+<span id="L8379" class="LineNr"> 8379 </span>    (<a href='mu.subx.html#L8518'>emit-subx-disp32</a> *(ebp+8) *(ecx+0x1c) *(ebp+0xc))  <span class="subxComment"># out, Primitive-subx-disp32, stmt</span>
+<span id="L8380" class="LineNr"> 8380 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L83'>Newline</a></span>)
+<span id="L8381" class="LineNr"> 8381 </span><span class="Constant">$emit-subx-primitive:end</span>:
+<span id="L8382" class="LineNr"> 8382 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8383" class="LineNr"> 8383 </span>    59/pop-to-ecx
+<span id="L8384" class="LineNr"> 8384 </span>    58/pop-to-eax
+<span id="L8385" class="LineNr"> 8385 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8386" class="LineNr"> 8386 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8387" class="LineNr"> 8387 </span>    5d/pop-to-ebp
+<span id="L8388" class="LineNr"> 8388 </span>    c3/return
+<span id="L8389" class="LineNr"> 8389 </span>
+<span id="L8390" class="LineNr"> 8390 </span><span class="subxFunction">emit-subx-rm32</span>:  <span class="subxComment"># out: (addr buffered-file), l: arg-location, stmt: (handle stmt)</span>
+<span id="L8391" class="LineNr"> 8391 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8392" class="LineNr"> 8392 </span>    55/push-ebp
+<span id="L8393" class="LineNr"> 8393 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8394" class="LineNr"> 8394 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8395" class="LineNr"> 8395 </span>    50/push-eax
+<span id="L8396" class="LineNr"> 8396 </span>    <span class="subxComment"># if (l == 0) return</span>
+<span id="L8397" class="LineNr"> 8397 </span>    81 7/subop/compare *(ebp+0xc) 0/imm32
+<span id="L8398" class="LineNr"> 8398 </span>    74/jump-if-= $emit-subx-rm32:end/disp8
+<span id="L8399" class="LineNr"> 8399 </span>    <span class="subxComment"># var v/eax: (handle var)</span>
+<span id="L8400" class="LineNr"> 8400 </span>    (<a href='mu.subx.html#L8410'>get-stmt-operand-from-arg-location</a> *(ebp+0x10) *(ebp+0xc))  <span class="subxComment"># =&gt; eax</span>
+<span id="L8401" class="LineNr"> 8401 </span>    (<a href='mu.subx.html#L8701'>emit-subx-var-as-rm32</a> *(ebp+8) %eax)
+<span id="L8402" class="LineNr"> 8402 </span><span class="Constant">$emit-subx-rm32:end</span>:
+<span id="L8403" class="LineNr"> 8403 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8404" class="LineNr"> 8404 </span>    58/pop-to-eax
+<span id="L8405" class="LineNr"> 8405 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8406" class="LineNr"> 8406 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8407" class="LineNr"> 8407 </span>    5d/pop-to-ebp
+<span id="L8408" class="LineNr"> 8408 </span>    c3/return
+<span id="L8409" class="LineNr"> 8409 </span>
+<span id="L8410" class="LineNr"> 8410 </span><span class="subxFunction">get-stmt-operand-from-arg-location</span>:  <span class="subxComment"># stmt: (handle stmt), l: arg-location -&gt; var/eax: (handle stmt-var)</span>
+<span id="L8411" class="LineNr"> 8411 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8412" class="LineNr"> 8412 </span>    55/push-ebp
+<span id="L8413" class="LineNr"> 8413 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8414" class="LineNr"> 8414 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8415" class="LineNr"> 8415 </span>    51/push-ecx
+<span id="L8416" class="LineNr"> 8416 </span>    <span class="subxComment"># eax = l</span>
+<span id="L8417" class="LineNr"> 8417 </span>    8b/-&gt; *(ebp+0xc) 0/r32/eax
+<span id="L8418" class="LineNr"> 8418 </span>    <span class="subxComment"># ecx = stmt</span>
+<span id="L8419" class="LineNr"> 8419 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
+<span id="L8420" class="LineNr"> 8420 </span>    <span class="subxComment"># if (l == 1) return stmt-&gt;inouts</span>
+<span id="L8421" class="LineNr"> 8421 </span>    {
+<span id="L8422" class="LineNr"> 8422 </span>      3d/compare-eax-and 1/imm32
+<span id="L8423" class="LineNr"> 8423 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8424" class="LineNr"> 8424 </span><span class="Constant">$get-stmt-operand-from-arg-location:1</span>:
+<span id="L8425" class="LineNr"> 8425 </span>      8b/-&gt; *(ecx+8) 0/r32/eax  <span class="subxComment"># Stmt1-inouts or Regvardef-inouts</span>
+<span id="L8426" class="LineNr"> 8426 </span>      eb/jump $get-stmt-operand-from-arg-location:end/disp8
+<span id="L8427" class="LineNr"> 8427 </span>    }
+<span id="L8428" class="LineNr"> 8428 </span>    <span class="subxComment"># if (l == 2) return stmt-&gt;inouts-&gt;next</span>
+<span id="L8429" class="LineNr"> 8429 </span>    {
+<span id="L8430" class="LineNr"> 8430 </span>      3d/compare-eax-and 2/imm32
+<span id="L8431" class="LineNr"> 8431 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8432" class="LineNr"> 8432 </span><span class="Constant">$get-stmt-operand-from-arg-location:2</span>:
+<span id="L8433" class="LineNr"> 8433 </span>      8b/-&gt; *(ecx+8) 0/r32/eax  <span class="subxComment"># Stmt1-inouts or Regvardef-inouts</span>
+<span id="L8434" class="LineNr"> 8434 </span>      8b/-&gt; *(eax+4) 0/r32/eax  <span class="subxComment"># Stmt-var-next</span>
+<span id="L8435" class="LineNr"> 8435 </span>      eb/jump $get-stmt-operand-from-arg-location:end/disp8
+<span id="L8436" class="LineNr"> 8436 </span>    }
+<span id="L8437" class="LineNr"> 8437 </span>    <span class="subxComment"># if (l == 3) return stmt-&gt;outputs</span>
+<span id="L8438" class="LineNr"> 8438 </span>    {
+<span id="L8439" class="LineNr"> 8439 </span>      3d/compare-eax-and 3/imm32
+<span id="L8440" class="LineNr"> 8440 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8441" class="LineNr"> 8441 </span><span class="Constant">$get-stmt-operand-from-arg-location:3</span>:
+<span id="L8442" class="LineNr"> 8442 </span>      8b/-&gt; *(ecx+0xc) 0/r32/eax  <span class="subxComment"># Stmt1-outputs</span>
+<span id="L8443" class="LineNr"> 8443 </span>      eb/jump $get-stmt-operand-from-arg-location:end/disp8
+<span id="L8444" class="LineNr"> 8444 </span>    }
+<span id="L8445" class="LineNr"> 8445 </span>    <span class="subxComment"># abort</span>
+<span id="L8446" class="LineNr"> 8446 </span>    e9/jump $get-stmt-operand-from-arg-location:abort/disp32
+<span id="L8447" class="LineNr"> 8447 </span><span class="Constant">$get-stmt-operand-from-arg-location:end</span>:
+<span id="L8448" class="LineNr"> 8448 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8449" class="LineNr"> 8449 </span>    59/pop-to-ecx
+<span id="L8450" class="LineNr"> 8450 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8451" class="LineNr"> 8451 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8452" class="LineNr"> 8452 </span>    5d/pop-to-ebp
+<span id="L8453" class="LineNr"> 8453 </span>    c3/return
+<span id="L8454" class="LineNr"> 8454 </span>
+<span id="L8455" class="LineNr"> 8455 </span><span class="Constant">$get-stmt-operand-from-arg-location:abort</span>:
+<span id="L8456" class="LineNr"> 8456 </span>    <span class="subxComment"># error(&quot;invalid arg-location &quot; eax)</span>
+<span id="L8457" class="LineNr"> 8457 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> <span class="SpecialChar"><a href='../065write-buffered.subx.html#L209'>Stderr</a></span> <span class="Constant">&quot;invalid arg-location &quot;</span>)
+<span id="L8458" class="LineNr"> 8458 </span>    (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> <span class="SpecialChar"><a href='../065write-buffered.subx.html#L209'>Stderr</a></span> %eax)
+<span id="L8459" class="LineNr"> 8459 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> <span class="SpecialChar"><a href='../065write-buffered.subx.html#L209'>Stderr</a></span> <span class="SpecialChar"><a href='../051test.subx.html#L83'>Newline</a></span>)
+<span id="L8460" class="LineNr"> 8460 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <span class="SpecialChar"><a href='../065write-buffered.subx.html#L209'>Stderr</a></span>)
+<span id="L8461" class="LineNr"> 8461 </span>    <span class="subxS1Comment"># . syscall(exit, 1)</span>
+<span id="L8462" class="LineNr"> 8462 </span>    bb/copy-to-ebx  1/imm32
+<span id="L8463" class="LineNr"> 8463 </span>    b8/copy-to-eax  1/imm32/exit
+<span id="L8464" class="LineNr"> 8464 </span>    cd/syscall  0x80/imm8
+<span id="L8465" class="LineNr"> 8465 </span>    <span class="subxComment"># never gets here</span>
+<span id="L8466" class="LineNr"> 8466 </span>
+<span id="L8467" class="LineNr"> 8467 </span><span class="subxFunction">emit-subx-r32</span>:  <span class="subxComment"># out: (addr buffered-file), l: arg-location, stmt: (handle stmt)</span>
+<span id="L8468" class="LineNr"> 8468 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8469" class="LineNr"> 8469 </span>    55/push-ebp
+<span id="L8470" class="LineNr"> 8470 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8471" class="LineNr"> 8471 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8472" class="LineNr"> 8472 </span>    50/push-eax
+<span id="L8473" class="LineNr"> 8473 </span>    51/push-ecx
+<span id="L8474" class="LineNr"> 8474 </span>    <span class="subxComment"># if (location == 0) return</span>
+<span id="L8475" class="LineNr"> 8475 </span>    81 7/subop/compare *(ebp+0xc) 0/imm32
+<span id="L8476" class="LineNr"> 8476 </span>    0f 84/jump-if-= $emit-subx-r32:end/disp32
+<span id="L8477" class="LineNr"> 8477 </span>    <span class="subxComment"># var v/eax: (handle var)</span>
+<span id="L8478" class="LineNr"> 8478 </span>    (<a href='mu.subx.html#L8410'>get-stmt-operand-from-arg-location</a> *(ebp+0x10) *(ebp+0xc))  <span class="subxComment"># =&gt; eax</span>
+<span id="L8479" class="LineNr"> 8479 </span>    8b/-&gt; *eax 0/r32/eax  <span class="subxComment"># Stmt-var-value</span>
+<span id="L8480" class="LineNr"> 8480 </span>    (<a href='../081table.subx.html#L1382'>maybe-get</a> <span class="SpecialChar"><a href='../090register-names.subx.html#L2'>Registers</a></span> *(eax+0x10) 8)  <span class="subxComment"># Var-register =&gt; eax: (addr register-index)</span>
+<span id="L8481" class="LineNr"> 8481 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
+<span id="L8482" class="LineNr"> 8482 </span>    (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> *(ebp+8) *eax)
+<span id="L8483" class="LineNr"> 8483 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;/r32&quot;</span>)
+<span id="L8484" class="LineNr"> 8484 </span><span class="Constant">$emit-subx-r32:end</span>:
+<span id="L8485" class="LineNr"> 8485 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8486" class="LineNr"> 8486 </span>    59/pop-to-ecx
+<span id="L8487" class="LineNr"> 8487 </span>    58/pop-to-eax
+<span id="L8488" class="LineNr"> 8488 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8489" class="LineNr"> 8489 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8490" class="LineNr"> 8490 </span>    5d/pop-to-ebp
+<span id="L8491" class="LineNr"> 8491 </span>    c3/return
+<span id="L8492" class="LineNr"> 8492 </span>
+<span id="L8493" class="LineNr"> 8493 </span><span class="subxFunction">emit-subx-imm32</span>:  <span class="subxComment"># out: (addr buffered-file), l: arg-location, stmt: (handle stmt)</span>
+<span id="L8494" class="LineNr"> 8494 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8495" class="LineNr"> 8495 </span>    55/push-ebp
+<span id="L8496" class="LineNr"> 8496 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8497" class="LineNr"> 8497 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8498" class="LineNr"> 8498 </span>    50/push-eax
+<span id="L8499" class="LineNr"> 8499 </span>    51/push-ecx
+<span id="L8500" class="LineNr"> 8500 </span>    <span class="subxComment"># if (location == 0) return</span>
+<span id="L8501" class="LineNr"> 8501 </span>    81 7/subop/compare *(ebp+0xc) 0/imm32
+<span id="L8502" class="LineNr"> 8502 </span>    74/jump-if-= $emit-subx-imm32:end/disp8
+<span id="L8503" class="LineNr"> 8503 </span>    <span class="subxComment"># var v/eax: (handle var)</span>
+<span id="L8504" class="LineNr"> 8504 </span>    (<a href='mu.subx.html#L8410'>get-stmt-operand-from-arg-location</a> *(ebp+0x10) *(ebp+0xc))  <span class="subxComment"># =&gt; eax</span>
+<span id="L8505" class="LineNr"> 8505 </span>    8b/-&gt; *eax 0/r32/eax  <span class="subxComment"># Stmt-var-value</span>
+<span id="L8506" class="LineNr"> 8506 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
+<span id="L8507" class="LineNr"> 8507 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *eax)  <span class="subxComment"># Var-name</span>
+<span id="L8508" class="LineNr"> 8508 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;/imm32&quot;</span>)
+<span id="L8509" class="LineNr"> 8509 </span><span class="Constant">$emit-subx-imm32:end</span>:
+<span id="L8510" class="LineNr"> 8510 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8511" class="LineNr"> 8511 </span>    59/pop-to-ecx
+<span id="L8512" class="LineNr"> 8512 </span>    58/pop-to-eax
+<span id="L8513" class="LineNr"> 8513 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8514" class="LineNr"> 8514 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8515" class="LineNr"> 8515 </span>    5d/pop-to-ebp
+<span id="L8516" class="LineNr"> 8516 </span>    c3/return
+<span id="L8517" class="LineNr"> 8517 </span>
+<span id="L8518" class="LineNr"> 8518 </span><span class="subxFunction">emit-subx-disp32</span>:  <span class="subxComment"># out: (addr buffered-file), l: arg-location, stmt: (handle stmt)</span>
+<span id="L8519" class="LineNr"> 8519 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8520" class="LineNr"> 8520 </span>    55/push-ebp
+<span id="L8521" class="LineNr"> 8521 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8522" class="LineNr"> 8522 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8523" class="LineNr"> 8523 </span>    50/push-eax
+<span id="L8524" class="LineNr"> 8524 </span>    51/push-ecx
+<span id="L8525" class="LineNr"> 8525 </span>    <span class="subxComment"># if (location == 0) return</span>
+<span id="L8526" class="LineNr"> 8526 </span>    81 7/subop/compare *(ebp+0xc) 0/imm32
+<span id="L8527" class="LineNr"> 8527 </span>    0f 84/jump-if-= $emit-subx-disp32:end/disp32
+<span id="L8528" class="LineNr"> 8528 </span>    <span class="subxComment"># var v/eax: (handle var)</span>
+<span id="L8529" class="LineNr"> 8529 </span>    (<a href='mu.subx.html#L8410'>get-stmt-operand-from-arg-location</a> *(ebp+0x10) *(ebp+0xc))  <span class="subxComment"># =&gt; eax</span>
+<span id="L8530" class="LineNr"> 8530 </span>    8b/-&gt; *eax 0/r32/eax  <span class="subxComment"># Stmt-var-value</span>
+<span id="L8531" class="LineNr"> 8531 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
+<span id="L8532" class="LineNr"> 8532 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *eax)  <span class="subxComment"># Var-name</span>
+<span id="L8533" class="LineNr"> 8533 </span>    <span class="subxComment"># hack: if instruction operation starts with &quot;break&quot;, emit &quot;:break&quot;</span>
+<span id="L8534" class="LineNr"> 8534 </span>    <span class="subxComment"># var name/ecx: (addr array byte) = stmt-&gt;operation</span>
+<span id="L8535" class="LineNr"> 8535 </span>    8b/-&gt; *(ebp+0x10) 0/r32/eax
+<span id="L8536" class="LineNr"> 8536 </span>    8b/-&gt; *(eax+4) 1/r32/ecx
+<span id="L8537" class="LineNr"> 8537 </span>    {
+<span id="L8538" class="LineNr"> 8538 </span>      (<a href='../054string-equal.subx.html#L58'>string-starts-with?</a> %ecx <span class="Constant">&quot;break&quot;</span>)  <span class="subxComment"># =&gt; eax</span>
+<span id="L8539" class="LineNr"> 8539 </span>      3d/compare-eax-and 0/imm32/false
+<span id="L8540" class="LineNr"> 8540 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8541" class="LineNr"> 8541 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;:break&quot;</span>)
+<span id="L8542" class="LineNr"> 8542 </span>    }
+<span id="L8543" class="LineNr"> 8543 </span>    <span class="subxComment"># hack: if instruction operation starts with &quot;loop&quot;, emit &quot;:loop&quot;</span>
+<span id="L8544" class="LineNr"> 8544 </span>    {
+<span id="L8545" class="LineNr"> 8545 </span>      (<a href='../054string-equal.subx.html#L58'>string-starts-with?</a> %ecx <span class="Constant">&quot;loop&quot;</span>)  <span class="subxComment"># =&gt; eax</span>
+<span id="L8546" class="LineNr"> 8546 </span>      3d/compare-eax-and 0/imm32/false
+<span id="L8547" class="LineNr"> 8547 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8548" class="LineNr"> 8548 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;:loop&quot;</span>)
+<span id="L8549" class="LineNr"> 8549 </span>    }
+<span id="L8550" class="LineNr"> 8550 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;/disp32&quot;</span>)
+<span id="L8551" class="LineNr"> 8551 </span><span class="Constant">$emit-subx-disp32:end</span>:
+<span id="L8552" class="LineNr"> 8552 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8553" class="LineNr"> 8553 </span>    59/pop-to-ecx
+<span id="L8554" class="LineNr"> 8554 </span>    58/pop-to-eax
+<span id="L8555" class="LineNr"> 8555 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8556" class="LineNr"> 8556 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8557" class="LineNr"> 8557 </span>    5d/pop-to-ebp
+<span id="L8558" class="LineNr"> 8558 </span>    c3/return
+<span id="L8559" class="LineNr"> 8559 </span>
+<span id="L8560" class="LineNr"> 8560 </span><span class="subxFunction">emit-subx-call</span>:  <span class="subxComment"># out: (addr buffered-file), stmt: (handle stmt), callee: (handle function)</span>
+<span id="L8561" class="LineNr"> 8561 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8562" class="LineNr"> 8562 </span>    55/push-ebp
+<span id="L8563" class="LineNr"> 8563 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8564" class="LineNr"> 8564 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8565" class="LineNr"> 8565 </span>    51/push-ecx
+<span id="L8566" class="LineNr"> 8566 </span>    <span class="subxComment">#</span>
+<span id="L8567" class="LineNr"> 8567 </span>    (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L8568" class="LineNr"> 8568 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;(&quot;</span>)
+<span id="L8569" class="LineNr"> 8569 </span>    <span class="subxH1Comment"># - emit function name</span>
+<span id="L8570" class="LineNr"> 8570 </span>    8b/-&gt; *(ebp+0x10) 1/r32/ecx
+<span id="L8571" class="LineNr"> 8571 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(ecx+4))  <span class="subxComment"># Function-subx-name</span>
+<span id="L8572" class="LineNr"> 8572 </span>    <span class="subxH1Comment"># - emit arguments</span>
+<span id="L8573" class="LineNr"> 8573 </span>    <span class="subxComment"># var curr/ecx: (handle stmt-var) = stmt-&gt;inouts</span>
+<span id="L8574" class="LineNr"> 8574 </span>    8b/-&gt; *(ebp+0xc) 1/r32/ecx
+<span id="L8575" class="LineNr"> 8575 </span>    8b/-&gt; *(ecx+8) 1/r32/ecx  <span class="subxComment"># Stmt1-inouts</span>
+<span id="L8576" class="LineNr"> 8576 </span>    {
+<span id="L8577" class="LineNr"> 8577 </span>      <span class="subxComment"># if (curr == null) break</span>
+<span id="L8578" class="LineNr"> 8578 </span>      81 7/subop/compare %ecx 0/imm32
+<span id="L8579" class="LineNr"> 8579 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8580" class="LineNr"> 8580 </span>      <span class="subxComment">#</span>
+<span id="L8581" class="LineNr"> 8581 </span>      (<a href='mu.subx.html#L8634'>emit-subx-call-operand</a> *(ebp+8) %ecx)
+<span id="L8582" class="LineNr"> 8582 </span>      <span class="subxComment"># curr = curr-&gt;next</span>
+<span id="L8583" class="LineNr"> 8583 </span>      8b/-&gt; *(ecx+4) 1/r32/ecx  <span class="subxComment"># Stmt-var-next</span>
+<span id="L8584" class="LineNr"> 8584 </span>      eb/jump <span class="Constant">loop</span>/disp8
+<span id="L8585" class="LineNr"> 8585 </span>    }
+<span id="L8586" class="LineNr"> 8586 </span>    <span class="subxComment">#</span>
+<span id="L8587" class="LineNr"> 8587 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;)\n&quot;</span>)
+<span id="L8588" class="LineNr"> 8588 </span><span class="Constant">$emit-subx-call:end</span>:
+<span id="L8589" class="LineNr"> 8589 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8590" class="LineNr"> 8590 </span>    59/pop-to-ecx
+<span id="L8591" class="LineNr"> 8591 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8592" class="LineNr"> 8592 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8593" class="LineNr"> 8593 </span>    5d/pop-to-ebp
+<span id="L8594" class="LineNr"> 8594 </span>    c3/return
+<span id="L8595" class="LineNr"> 8595 </span>
+<span id="L8596" class="LineNr"> 8596 </span><span class="subxComment"># like a function call, except we have no idea what function it is</span>
+<span id="L8597" class="LineNr"> 8597 </span><span class="subxComment"># we hope it's defined in SubX and that the types are ok</span>
+<span id="L8598" class="LineNr"> 8598 </span><span class="subxFunction">emit-hailmary-call</span>:  <span class="subxComment"># out: (addr buffered-file), stmt: (handle stmt)</span>
+<span id="L8599" class="LineNr"> 8599 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8600" class="LineNr"> 8600 </span>    55/push-ebp
+<span id="L8601" class="LineNr"> 8601 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8602" class="LineNr"> 8602 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8603" class="LineNr"> 8603 </span>    51/push-ecx
+<span id="L8604" class="LineNr"> 8604 </span>    <span class="subxComment">#</span>
+<span id="L8605" class="LineNr"> 8605 </span>    (<a href='mu.subx.html#L10434'>emit-indent</a> *(ebp+8) *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span>)
+<span id="L8606" class="LineNr"> 8606 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;(&quot;</span>)
+<span id="L8607" class="LineNr"> 8607 </span>    <span class="subxComment"># ecx = stmt</span>
+<span id="L8608" class="LineNr"> 8608 </span>    8b/-&gt; *(ebp+0xc) 1/r32/ecx
+<span id="L8609" class="LineNr"> 8609 </span>    <span class="subxH1Comment"># - emit function name</span>
+<span id="L8610" class="LineNr"> 8610 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(ecx+4))  <span class="subxComment"># Stmt1-operation</span>
+<span id="L8611" class="LineNr"> 8611 </span>    <span class="subxH1Comment"># - emit arguments</span>
+<span id="L8612" class="LineNr"> 8612 </span>    <span class="subxComment"># var curr/ecx: (handle stmt-var) = stmt-&gt;inouts</span>
+<span id="L8613" class="LineNr"> 8613 </span>    8b/-&gt; *(ecx+8) 1/r32/ecx  <span class="subxComment"># Stmt1-inouts</span>
+<span id="L8614" class="LineNr"> 8614 </span>    {
+<span id="L8615" class="LineNr"> 8615 </span>      <span class="subxComment"># if (curr == null) break</span>
+<span id="L8616" class="LineNr"> 8616 </span>      81 7/subop/compare %ecx 0/imm32
+<span id="L8617" class="LineNr"> 8617 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8618" class="LineNr"> 8618 </span>      <span class="subxComment">#</span>
+<span id="L8619" class="LineNr"> 8619 </span>      (<a href='mu.subx.html#L8634'>emit-subx-call-operand</a> *(ebp+8) %ecx)
+<span id="L8620" class="LineNr"> 8620 </span>      <span class="subxComment"># curr = curr-&gt;next</span>
+<span id="L8621" class="LineNr"> 8621 </span>      8b/-&gt; *(ecx+4) 1/r32/ecx  <span class="subxComment"># Stmt-var-next</span>
+<span id="L8622" class="LineNr"> 8622 </span>      eb/jump <span class="Constant">loop</span>/disp8
+<span id="L8623" class="LineNr"> 8623 </span>    }
+<span id="L8624" class="LineNr"> 8624 </span>    <span class="subxComment">#</span>
+<span id="L8625" class="LineNr"> 8625 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;)\n&quot;</span>)
+<span id="L8626" class="LineNr"> 8626 </span><span class="Constant">$emit-hailmary-call:end</span>:
+<span id="L8627" class="LineNr"> 8627 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8628" class="LineNr"> 8628 </span>    59/pop-to-ecx
+<span id="L8629" class="LineNr"> 8629 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8630" class="LineNr"> 8630 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8631" class="LineNr"> 8631 </span>    5d/pop-to-ebp
+<span id="L8632" class="LineNr"> 8632 </span>    c3/return
+<span id="L8633" class="LineNr"> 8633 </span>
+<span id="L8634" class="LineNr"> 8634 </span><span class="subxFunction">emit-subx-call-operand</span>:  <span class="subxComment"># out: (addr buffered-file), s: (handle stmt-var)</span>
+<span id="L8635" class="LineNr"> 8635 </span>    <span class="subxComment"># shares code with emit-subx-var-as-rm32</span>
+<span id="L8636" class="LineNr"> 8636 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8637" class="LineNr"> 8637 </span>    55/push-ebp
+<span id="L8638" class="LineNr"> 8638 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8639" class="LineNr"> 8639 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8640" class="LineNr"> 8640 </span>    50/push-eax
+<span id="L8641" class="LineNr"> 8641 </span>    51/push-ecx
+<span id="L8642" class="LineNr"> 8642 </span>    56/push-esi
+<span id="L8643" class="LineNr"> 8643 </span>    <span class="subxComment"># ecx = s</span>
+<span id="L8644" class="LineNr"> 8644 </span>    8b/-&gt; *(ebp+0xc) 1/r32/ecx
+<span id="L8645" class="LineNr"> 8645 </span>    <span class="subxComment"># var operand/esi: (handle var) = s-&gt;value</span>
+<span id="L8646" class="LineNr"> 8646 </span>    8b/-&gt; *ecx 6/r32/esi  <span class="subxComment"># Stmt-var-value</span>
+<span id="L8647" class="LineNr"> 8647 </span>    <span class="subxComment"># if (operand-&gt;register &amp;&amp; s-&gt;is-deref?) emit &quot;*__&quot;</span>
+<span id="L8648" class="LineNr"> 8648 </span>    {
+<span id="L8649" class="LineNr"> 8649 </span><span class="Constant">$emit-subx-call-operand:check-for-register-indirect</span>:
+<span id="L8650" class="LineNr"> 8650 </span>      81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
+<span id="L8651" class="LineNr"> 8651 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8652" class="LineNr"> 8652 </span>      81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
+<span id="L8653" class="LineNr"> 8653 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8654" class="LineNr"> 8654 </span><span class="Constant">$emit-subx-call-operand:register-indirect</span>:
+<span id="L8655" class="LineNr"> 8655 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot; *&quot;</span>)
+<span id="L8656" class="LineNr"> 8656 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(esi+0x10))  <span class="subxComment"># Var-register</span>
+<span id="L8657" class="LineNr"> 8657 </span>      e9/jump $emit-subx-call-operand:end/disp32
+<span id="L8658" class="LineNr"> 8658 </span>    }
+<span id="L8659" class="LineNr"> 8659 </span>    <span class="subxComment"># if (operand-&gt;register &amp;&amp; !s-&gt;is-deref?) emit &quot;%__&quot;</span>
+<span id="L8660" class="LineNr"> 8660 </span>    {
+<span id="L8661" class="LineNr"> 8661 </span><span class="Constant">$emit-subx-call-operand:check-for-register-direct</span>:
+<span id="L8662" class="LineNr"> 8662 </span>      81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
+<span id="L8663" class="LineNr"> 8663 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8664" class="LineNr"> 8664 </span>      81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
+<span id="L8665" class="LineNr"> 8665 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8666" class="LineNr"> 8666 </span><span class="Constant">$emit-subx-call-operand:register-direct</span>:
+<span id="L8667" class="LineNr"> 8667 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot; %&quot;</span>)
+<span id="L8668" class="LineNr"> 8668 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(esi+0x10))  <span class="subxComment"># Var-register</span>
+<span id="L8669" class="LineNr"> 8669 </span>      e9/jump $emit-subx-call-operand:end/disp32
+<span id="L8670" class="LineNr"> 8670 </span>    }
+<span id="L8671" class="LineNr"> 8671 </span>    <span class="subxComment"># else if (operand-&gt;stack-offset) emit &quot;*(ebp+__)&quot;</span>
+<span id="L8672" class="LineNr"> 8672 </span>    {
+<span id="L8673" class="LineNr"> 8673 </span>      81 7/subop/compare *(esi+0xc) 0/imm32  <span class="subxComment"># Var-offset</span>
+<span id="L8674" class="LineNr"> 8674 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8675" class="LineNr"> 8675 </span><span class="Constant">$emit-subx-call-operand:stack</span>:
+<span id="L8676" class="LineNr"> 8676 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
+<span id="L8677" class="LineNr"> 8677 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;*(ebp+&quot;</span>)
+<span id="L8678" class="LineNr"> 8678 </span>      (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> *(ebp+8) *(esi+0xc))  <span class="subxComment"># Var-offset</span>
+<span id="L8679" class="LineNr"> 8679 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;)&quot;</span>)
+<span id="L8680" class="LineNr"> 8680 </span>      e9/jump $emit-subx-call-operand:end/disp32
+<span id="L8681" class="LineNr"> 8681 </span>    }
+<span id="L8682" class="LineNr"> 8682 </span>    <span class="subxComment"># else if (operand-&gt;type == literal) emit &quot;__&quot;</span>
+<span id="L8683" class="LineNr"> 8683 </span>    {
+<span id="L8684" class="LineNr"> 8684 </span>      8b/-&gt; *(esi+4) 0/r32/eax  <span class="subxComment"># Var-type</span>
+<span id="L8685" class="LineNr"> 8685 </span>      81 7/subop/compare *eax 0/imm32  <span class="subxComment"># Tree-left</span>
+<span id="L8686" class="LineNr"> 8686 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8687" class="LineNr"> 8687 </span><span class="Constant">$emit-subx-call-operand:literal</span>:
+<span id="L8688" class="LineNr"> 8688 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
+<span id="L8689" class="LineNr"> 8689 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *esi)
+<span id="L8690" class="LineNr"> 8690 </span>    }
+<span id="L8691" class="LineNr"> 8691 </span><span class="Constant">$emit-subx-call-operand:end</span>:
+<span id="L8692" class="LineNr"> 8692 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8693" class="LineNr"> 8693 </span>    5e/pop-to-esi
+<span id="L8694" class="LineNr"> 8694 </span>    59/pop-to-ecx
+<span id="L8695" class="LineNr"> 8695 </span>    58/pop-to-eax
+<span id="L8696" class="LineNr"> 8696 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8697" class="LineNr"> 8697 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8698" class="LineNr"> 8698 </span>    5d/pop-to-ebp
+<span id="L8699" class="LineNr"> 8699 </span>    c3/return
+<span id="L8700" class="LineNr"> 8700 </span>
+<span id="L8701" class="LineNr"> 8701 </span><span class="subxFunction">emit-subx-var-as-rm32</span>:  <span class="subxComment"># out: (addr buffered-file), s: (handle stmt-var)</span>
+<span id="L8702" class="LineNr"> 8702 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8703" class="LineNr"> 8703 </span>    55/push-ebp
+<span id="L8704" class="LineNr"> 8704 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8705" class="LineNr"> 8705 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8706" class="LineNr"> 8706 </span>    50/push-eax
+<span id="L8707" class="LineNr"> 8707 </span>    51/push-ecx
+<span id="L8708" class="LineNr"> 8708 </span>    56/push-esi
+<span id="L8709" class="LineNr"> 8709 </span>    <span class="subxComment"># ecx = s</span>
+<span id="L8710" class="LineNr"> 8710 </span>    8b/-&gt; *(ebp+0xc) 1/r32/ecx
+<span id="L8711" class="LineNr"> 8711 </span>    <span class="subxComment"># var operand/esi: (handle var) = s-&gt;value</span>
+<span id="L8712" class="LineNr"> 8712 </span>    8b/-&gt; *ecx 6/r32/esi  <span class="subxComment"># Stmt-var-value</span>
+<span id="L8713" class="LineNr"> 8713 </span>    <span class="subxComment"># if (operand-&gt;register &amp;&amp; s-&gt;is-deref?) emit &quot;*__&quot;</span>
+<span id="L8714" class="LineNr"> 8714 </span>    {
+<span id="L8715" class="LineNr"> 8715 </span><span class="Constant">$emit-subx-var-as-rm32:check-for-register-indirect</span>:
+<span id="L8716" class="LineNr"> 8716 </span>      81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
+<span id="L8717" class="LineNr"> 8717 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8718" class="LineNr"> 8718 </span>      81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
+<span id="L8719" class="LineNr"> 8719 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8720" class="LineNr"> 8720 </span><span class="Constant">$emit-subx-var-as-rm32:register-indirect</span>:
+<span id="L8721" class="LineNr"> 8721 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot; *&quot;</span>)
+<span id="L8722" class="LineNr"> 8722 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(esi+0x10))  <span class="subxComment"># Var-register</span>
+<span id="L8723" class="LineNr"> 8723 </span>    }
+<span id="L8724" class="LineNr"> 8724 </span>    <span class="subxComment"># if (operand-&gt;register &amp;&amp; !s-&gt;is-deref?) emit &quot;%__&quot;</span>
+<span id="L8725" class="LineNr"> 8725 </span>    {
+<span id="L8726" class="LineNr"> 8726 </span><span class="Constant">$emit-subx-var-as-rm32:check-for-register-direct</span>:
+<span id="L8727" class="LineNr"> 8727 </span>      81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
+<span id="L8728" class="LineNr"> 8728 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8729" class="LineNr"> 8729 </span>      81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
+<span id="L8730" class="LineNr"> 8730 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8731" class="LineNr"> 8731 </span><span class="Constant">$emit-subx-var-as-rm32:register-direct</span>:
+<span id="L8732" class="LineNr"> 8732 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot; %&quot;</span>)
+<span id="L8733" class="LineNr"> 8733 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) *(esi+0x10))  <span class="subxComment"># Var-register</span>
+<span id="L8734" class="LineNr"> 8734 </span>    }
+<span id="L8735" class="LineNr"> 8735 </span>    <span class="subxComment"># else if (operand-&gt;stack-offset) emit &quot;*(ebp+__)&quot;</span>
+<span id="L8736" class="LineNr"> 8736 </span>    {
+<span id="L8737" class="LineNr"> 8737 </span>      81 7/subop/compare *(esi+0xc) 0/imm32  <span class="subxComment"># Var-offset</span>
+<span id="L8738" class="LineNr"> 8738 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8739" class="LineNr"> 8739 </span><span class="Constant">$emit-subx-var-as-rm32:stack</span>:
+<span id="L8740" class="LineNr"> 8740 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>)
+<span id="L8741" class="LineNr"> 8741 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;*(ebp+&quot;</span>)
+<span id="L8742" class="LineNr"> 8742 </span>      (<a href='../066print-int.subx.html#L266'>print-int32-buffered</a> *(ebp+8) *(esi+0xc))  <span class="subxComment"># Var-offset</span>
+<span id="L8743" class="LineNr"> 8743 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;)&quot;</span>)
+<span id="L8744" class="LineNr"> 8744 </span>    }
+<span id="L8745" class="LineNr"> 8745 </span><span class="Constant">$emit-subx-var-as-rm32:end</span>:
+<span id="L8746" class="LineNr"> 8746 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8747" class="LineNr"> 8747 </span>    5e/pop-to-esi
+<span id="L8748" class="LineNr"> 8748 </span>    59/pop-to-ecx
+<span id="L8749" class="LineNr"> 8749 </span>    58/pop-to-eax
+<span id="L8750" class="LineNr"> 8750 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8751" class="LineNr"> 8751 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8752" class="LineNr"> 8752 </span>    5d/pop-to-ebp
+<span id="L8753" class="LineNr"> 8753 </span>    c3/return
+<span id="L8754" class="LineNr"> 8754 </span>
+<span id="L8755" class="LineNr"> 8755 </span><span class="subxFunction">find-matching-function</span>:  <span class="subxComment"># functions: (addr function), stmt: (handle stmt) -&gt; result/eax: (handle function)</span>
+<span id="L8756" class="LineNr"> 8756 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8757" class="LineNr"> 8757 </span>    55/push-ebp
+<span id="L8758" class="LineNr"> 8758 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8759" class="LineNr"> 8759 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8760" class="LineNr"> 8760 </span>    51/push-ecx
+<span id="L8761" class="LineNr"> 8761 </span>    <span class="subxComment"># var curr/ecx: (handle function) = functions</span>
+<span id="L8762" class="LineNr"> 8762 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
+<span id="L8763" class="LineNr"> 8763 </span>    {
+<span id="L8764" class="LineNr"> 8764 </span>      <span class="subxComment"># if (curr == null) break</span>
+<span id="L8765" class="LineNr"> 8765 </span>      81 7/subop/compare %ecx 0/imm32
+<span id="L8766" class="LineNr"> 8766 </span>      74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8767" class="LineNr"> 8767 </span>      <span class="subxComment"># if match(stmt, curr) return curr</span>
+<span id="L8768" class="LineNr"> 8768 </span>      {
+<span id="L8769" class="LineNr"> 8769 </span>        (<a href='mu.subx.html#L8831'>mu-stmt-matches-function?</a> *(ebp+0xc) %ecx)  <span class="subxComment"># =&gt; eax</span>
+<span id="L8770" class="LineNr"> 8770 </span>        3d/compare-eax-and 0/imm32/false
+<span id="L8771" class="LineNr"> 8771 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8772" class="LineNr"> 8772 </span>        89/&lt;- %eax 1/r32/ecx
+<span id="L8773" class="LineNr"> 8773 </span>        eb/jump $find-matching-function:end/disp8
+<span id="L8774" class="LineNr"> 8774 </span>      }
+<span id="L8775" class="LineNr"> 8775 </span>      <span class="subxComment"># curr = curr-&gt;next</span>
+<span id="L8776" class="LineNr"> 8776 </span>      8b/-&gt; *(ecx+0x14) 1/r32/ecx  <span class="subxComment"># Function-next</span>
+<span id="L8777" class="LineNr"> 8777 </span>      eb/jump <span class="Constant">loop</span>/disp8
+<span id="L8778" class="LineNr"> 8778 </span>    }
+<span id="L8779" class="LineNr"> 8779 </span>    <span class="subxComment"># return null</span>
+<span id="L8780" class="LineNr"> 8780 </span>    b8/copy-to-eax 0/imm32
+<span id="L8781" class="LineNr"> 8781 </span><span class="Constant">$find-matching-function:end</span>:
+<span id="L8782" class="LineNr"> 8782 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8783" class="LineNr"> 8783 </span>    59/pop-to-ecx
+<span id="L8784" class="LineNr"> 8784 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8785" class="LineNr"> 8785 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8786" class="LineNr"> 8786 </span>    5d/pop-to-ebp
+<span id="L8787" class="LineNr"> 8787 </span>    c3/return
+<span id="L8788" class="LineNr"> 8788 </span>
+<span id="L8789" class="LineNr"> 8789 </span><span class="subxFunction">find-matching-primitive</span>:  <span class="subxComment"># primitives: (handle primitive), stmt: (handle stmt) -&gt; result/eax: (handle primitive)</span>
+<span id="L8790" class="LineNr"> 8790 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8791" class="LineNr"> 8791 </span>    55/push-ebp
+<span id="L8792" class="LineNr"> 8792 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8793" class="LineNr"> 8793 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8794" class="LineNr"> 8794 </span>    51/push-ecx
+<span id="L8795" class="LineNr"> 8795 </span>    <span class="subxComment"># var curr/ecx: (handle primitive) = primitives</span>
+<span id="L8796" class="LineNr"> 8796 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
+<span id="L8797" class="LineNr"> 8797 </span>    {
+<span id="L8798" class="LineNr"> 8798 </span><span class="Constant">$find-matching-primitive:loop</span>:
+<span id="L8799" class="LineNr"> 8799 </span>      <span class="subxComment"># if (curr == null) break</span>
+<span id="L8800" class="LineNr"> 8800 </span>      81 7/subop/compare %ecx 0/imm32
+<span id="L8801" class="LineNr"> 8801 </span>      0f 84/jump-if-= <span class="Constant">break</span>/disp32
+<span id="L8802" class="LineNr"> 8802 </span><span class="CommentedCode">#?       (write-buffered Stderr &quot;prim: &quot;)</span>
+<span id="L8803" class="LineNr"> 8803 </span><span class="CommentedCode">#?       (write-buffered Stderr *ecx)  # Primitive-name</span>
+<span id="L8804" class="LineNr"> 8804 </span><span class="CommentedCode">#?       (write-buffered Stderr &quot; =&gt; &quot;)</span>
+<span id="L8805" class="LineNr"> 8805 </span><span class="CommentedCode">#?       (write-buffered Stderr *(ecx+0xc))  # Primitive-subx-name</span>
+<span id="L8806" class="LineNr"> 8806 </span><span class="CommentedCode">#?       (write-buffered Stderr Newline)</span>
+<span id="L8807" class="LineNr"> 8807 </span><span class="CommentedCode">#?       (flush Stderr)</span>
+<span id="L8808" class="LineNr"> 8808 </span>      <span class="subxComment"># if match(curr, stmt) return curr</span>
+<span id="L8809" class="LineNr"> 8809 </span>      {
+<span id="L8810" class="LineNr"> 8810 </span>        (<a href='mu.subx.html#L8849'>mu-stmt-matches-primitive?</a> *(ebp+0xc) %ecx)  <span class="subxComment"># =&gt; eax</span>
+<span id="L8811" class="LineNr"> 8811 </span>        3d/compare-eax-and 0/imm32/false
+<span id="L8812" class="LineNr"> 8812 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L8813" class="LineNr"> 8813 </span>        89/&lt;- %eax 1/r32/ecx
+<span id="L8814" class="LineNr"> 8814 </span>        eb/jump $find-matching-primitive:end/disp8
+<span id="L8815" class="LineNr"> 8815 </span>      }
+<span id="L8816" class="LineNr"> 8816 </span><span class="Constant">$find-matching-primitive:next-primitive</span>:
+<span id="L8817" class="LineNr"> 8817 </span>      <span class="subxComment"># curr = curr-&gt;next</span>
+<span id="L8818" class="LineNr"> 8818 </span>      8b/-&gt; *(ecx+0x24) 1/r32/ecx  <span class="subxComment"># Primitive-next</span>
+<span id="L8819" class="LineNr"> 8819 </span>      e9/jump <span class="Constant">loop</span>/disp32
+<span id="L8820" class="LineNr"> 8820 </span>    }
+<span id="L8821" class="LineNr"> 8821 </span>    <span class="subxComment"># return null</span>
+<span id="L8822" class="LineNr"> 8822 </span>    b8/copy-to-eax 0/imm32
+<span id="L8823" class="LineNr"> 8823 </span><span class="Constant">$find-matching-primitive:end</span>:
+<span id="L8824" class="LineNr"> 8824 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8825" class="LineNr"> 8825 </span>    59/pop-to-ecx
+<span id="L8826" class="LineNr"> 8826 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8827" class="LineNr"> 8827 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8828" class="LineNr"> 8828 </span>    5d/pop-to-ebp
+<span id="L8829" class="LineNr"> 8829 </span>    c3/return
+<span id="L8830" class="LineNr"> 8830 </span>
+<span id="L8831" class="LineNr"> 8831 </span><span class="subxFunction">mu-stmt-matches-function?</span>:  <span class="subxComment"># stmt: (handle stmt), function: (handle function) -&gt; result/eax: boolean</span>
+<span id="L8832" class="LineNr"> 8832 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8833" class="LineNr"> 8833 </span>    55/push-ebp
+<span id="L8834" class="LineNr"> 8834 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8835" class="LineNr"> 8835 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8836" class="LineNr"> 8836 </span>    51/push-ecx
+<span id="L8837" class="LineNr"> 8837 </span>    <span class="subxComment"># return function-&gt;name == stmt-&gt;operation</span>
+<span id="L8838" class="LineNr"> 8838 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
+<span id="L8839" class="LineNr"> 8839 </span>    8b/-&gt; *(ebp+0xc) 0/r32/eax
+<span id="L8840" class="LineNr"> 8840 </span>    (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *(ecx+4) *eax)  <span class="subxComment"># Stmt1-operation, Function-name =&gt; eax</span>
+<span id="L8841" class="LineNr"> 8841 </span><span class="Constant">$mu-stmt-matches-function?:end</span>:
+<span id="L8842" class="LineNr"> 8842 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8843" class="LineNr"> 8843 </span>    59/pop-to-ecx
+<span id="L8844" class="LineNr"> 8844 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8845" class="LineNr"> 8845 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8846" class="LineNr"> 8846 </span>    5d/pop-to-ebp
+<span id="L8847" class="LineNr"> 8847 </span>    c3/return
+<span id="L8848" class="LineNr"> 8848 </span>
+<span id="L8849" class="LineNr"> 8849 </span><span class="subxFunction">mu-stmt-matches-primitive?</span>:  <span class="subxComment"># stmt: (handle stmt), primitive: (handle primitive) -&gt; result/eax: boolean</span>
+<span id="L8850" class="LineNr"> 8850 </span>    <span class="subxComment"># A mu stmt matches a primitive if the name matches, all the inout vars</span>
+<span id="L8851" class="LineNr"> 8851 </span>    <span class="subxComment"># match, and all the output vars match.</span>
+<span id="L8852" class="LineNr"> 8852 </span>    <span class="subxComment"># Vars match if types match and registers match.</span>
+<span id="L8853" class="LineNr"> 8853 </span>    <span class="subxComment"># In addition, a stmt output matches a primitive's output if types match</span>
+<span id="L8854" class="LineNr"> 8854 </span>    <span class="subxComment"># and the primitive has a wildcard register.</span>
+<span id="L8855" class="LineNr"> 8855 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8856" class="LineNr"> 8856 </span>    55/push-ebp
+<span id="L8857" class="LineNr"> 8857 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8858" class="LineNr"> 8858 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8859" class="LineNr"> 8859 </span>    51/push-ecx
+<span id="L8860" class="LineNr"> 8860 </span>    52/push-edx
+<span id="L8861" class="LineNr"> 8861 </span>    53/push-ebx
+<span id="L8862" class="LineNr"> 8862 </span>    56/push-esi
+<span id="L8863" class="LineNr"> 8863 </span>    57/push-edi
+<span id="L8864" class="LineNr"> 8864 </span>    <span class="subxComment"># ecx = stmt</span>
+<span id="L8865" class="LineNr"> 8865 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
+<span id="L8866" class="LineNr"> 8866 </span>    <span class="subxComment"># edx = primitive</span>
+<span id="L8867" class="LineNr"> 8867 </span>    8b/-&gt; *(ebp+0xc) 2/r32/edx
+<span id="L8868" class="LineNr"> 8868 </span>    {
+<span id="L8869" class="LineNr"> 8869 </span><span class="Constant">$mu-stmt-matches-primitive?:check-name</span>:
+<span id="L8870" class="LineNr"> 8870 </span>      <span class="subxComment"># if (primitive-&gt;name != stmt-&gt;operation) return false</span>
+<span id="L8871" class="LineNr"> 8871 </span>      (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *(ecx+4) *edx)  <span class="subxComment"># Stmt1-operation, Primitive-name =&gt; eax</span>
+<span id="L8872" class="LineNr"> 8872 </span>      3d/compare-eax-and 0/imm32/false
+<span id="L8873" class="LineNr"> 8873 </span>      75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8874" class="LineNr"> 8874 </span>      b8/copy-to-eax 0/imm32
+<span id="L8875" class="LineNr"> 8875 </span>      e9/jump $mu-stmt-matches-primitive?:end/disp32
+<span id="L8876" class="LineNr"> 8876 </span>    }
+<span id="L8877" class="LineNr"> 8877 </span><span class="Constant">$mu-stmt-matches-primitive?:check-inouts</span>:
+<span id="L8878" class="LineNr"> 8878 </span>    <span class="subxComment"># for (curr/esi in stmt-&gt;inouts, curr2/edi in primitive-&gt;inouts)</span>
+<span id="L8879" class="LineNr"> 8879 </span>    8b/-&gt; *(ecx+8) 6/r32/esi  <span class="subxComment"># Stmt1-inouts or Regvardef-inouts</span>
+<span id="L8880" class="LineNr"> 8880 </span>    8b/-&gt; *(edx+4) 7/r32/edi  <span class="subxComment"># Primitive-inouts</span>
+<span id="L8881" class="LineNr"> 8881 </span>    {
+<span id="L8882" class="LineNr"> 8882 </span>      <span class="subxComment"># if (curr == 0 &amp;&amp; curr2 == 0) move on to check outputs</span>
+<span id="L8883" class="LineNr"> 8883 </span>      {
+<span id="L8884" class="LineNr"> 8884 </span>        81 7/subop/compare %esi 0/imm32
+<span id="L8885" class="LineNr"> 8885 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8886" class="LineNr"> 8886 </span><span class="Constant">$mu-stmt-matches-primitive?:stmt-inout-is-null</span>:
+<span id="L8887" class="LineNr"> 8887 </span>        {
+<span id="L8888" class="LineNr"> 8888 </span>          81 7/subop/compare %edi 0/imm32
+<span id="L8889" class="LineNr"> 8889 </span>          75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8890" class="LineNr"> 8890 </span>          <span class="subxComment">#</span>
+<span id="L8891" class="LineNr"> 8891 </span>          e9/jump $mu-stmt-matches-primitive?:check-outputs/disp32
+<span id="L8892" class="LineNr"> 8892 </span>        }
+<span id="L8893" class="LineNr"> 8893 </span>        <span class="subxComment"># return false</span>
+<span id="L8894" class="LineNr"> 8894 </span>        b8/copy-to-eax 0/imm32/false
+<span id="L8895" class="LineNr"> 8895 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
+<span id="L8896" class="LineNr"> 8896 </span>      }
+<span id="L8897" class="LineNr"> 8897 </span>      <span class="subxComment"># if (curr2 == 0) return false</span>
+<span id="L8898" class="LineNr"> 8898 </span>      {
+<span id="L8899" class="LineNr"> 8899 </span>        81 7/subop/compare %edi 0/imm32
+<span id="L8900" class="LineNr"> 8900 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8901" class="LineNr"> 8901 </span><span class="Constant">$mu-stmt-matches-primitive?:prim-inout-is-null</span>:
+<span id="L8902" class="LineNr"> 8902 </span>        b8/copy-to-eax 0/imm32/false
+<span id="L8903" class="LineNr"> 8903 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
+<span id="L8904" class="LineNr"> 8904 </span>      }
+<span id="L8905" class="LineNr"> 8905 </span>      <span class="subxComment"># if (curr != curr2) return false</span>
+<span id="L8906" class="LineNr"> 8906 </span>      {
+<span id="L8907" class="LineNr"> 8907 </span>        (<a href='mu.subx.html#L8975'>operand-matches-primitive?</a> %esi *edi)  <span class="subxComment"># List-value =&gt; eax</span>
+<span id="L8908" class="LineNr"> 8908 </span>        3d/compare-eax-and 0/imm32/false
+<span id="L8909" class="LineNr"> 8909 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8910" class="LineNr"> 8910 </span>        b8/copy-to-eax 0/imm32/false
+<span id="L8911" class="LineNr"> 8911 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
+<span id="L8912" class="LineNr"> 8912 </span>      }
+<span id="L8913" class="LineNr"> 8913 </span>      <span class="subxComment"># curr=curr-&gt;next</span>
+<span id="L8914" class="LineNr"> 8914 </span>      8b/-&gt; *(esi+4) 6/r32/esi  <span class="subxComment"># Stmt-var-next</span>
+<span id="L8915" class="LineNr"> 8915 </span>      <span class="subxComment"># curr2=curr2-&gt;next</span>
+<span id="L8916" class="LineNr"> 8916 </span>      8b/-&gt; *(edi+4) 7/r32/edi  <span class="subxComment"># Stmt-var-next</span>
+<span id="L8917" class="LineNr"> 8917 </span>      eb/jump <span class="Constant">loop</span>/disp8
+<span id="L8918" class="LineNr"> 8918 </span>    }
+<span id="L8919" class="LineNr"> 8919 </span><span class="Constant">$mu-stmt-matches-primitive?:check-outputs</span>:
+<span id="L8920" class="LineNr"> 8920 </span>    <span class="subxComment"># for (curr/esi in stmt-&gt;outputs, curr2/edi in primitive-&gt;outputs)</span>
+<span id="L8921" class="LineNr"> 8921 </span>    8b/-&gt; *(ecx+0xc) 6/r32/esi  <span class="subxComment"># Stmt1-outputs</span>
+<span id="L8922" class="LineNr"> 8922 </span>    8b/-&gt; *(edx+8) 7/r32/edi  <span class="subxComment"># Primitive-outputs</span>
+<span id="L8923" class="LineNr"> 8923 </span>    {
+<span id="L8924" class="LineNr"> 8924 </span>      <span class="subxComment"># if (curr == 0) return (curr2 == 0)</span>
+<span id="L8925" class="LineNr"> 8925 </span>      {
+<span id="L8926" class="LineNr"> 8926 </span><span class="Constant">$mu-stmt-matches-primitive?:check-output</span>:
+<span id="L8927" class="LineNr"> 8927 </span>        81 7/subop/compare %esi 0/imm32
+<span id="L8928" class="LineNr"> 8928 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8929" class="LineNr"> 8929 </span>        {
+<span id="L8930" class="LineNr"> 8930 </span>          81 7/subop/compare %edi 0/imm32
+<span id="L8931" class="LineNr"> 8931 </span>          75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8932" class="LineNr"> 8932 </span>          <span class="subxComment"># return true</span>
+<span id="L8933" class="LineNr"> 8933 </span>          b8/copy-to-eax 1/imm32
+<span id="L8934" class="LineNr"> 8934 </span>          e9/jump $mu-stmt-matches-primitive?:end/disp32
+<span id="L8935" class="LineNr"> 8935 </span>        }
+<span id="L8936" class="LineNr"> 8936 </span>        <span class="subxComment"># return false</span>
+<span id="L8937" class="LineNr"> 8937 </span>        b8/copy-to-eax 0/imm32
+<span id="L8938" class="LineNr"> 8938 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
+<span id="L8939" class="LineNr"> 8939 </span>      }
+<span id="L8940" class="LineNr"> 8940 </span>      <span class="subxComment"># if (curr2 == 0) return false</span>
+<span id="L8941" class="LineNr"> 8941 </span>      {
+<span id="L8942" class="LineNr"> 8942 </span>        81 7/subop/compare %edi 0/imm32
+<span id="L8943" class="LineNr"> 8943 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8944" class="LineNr"> 8944 </span>        b8/copy-to-eax 0/imm32
+<span id="L8945" class="LineNr"> 8945 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
+<span id="L8946" class="LineNr"> 8946 </span>      }
+<span id="L8947" class="LineNr"> 8947 </span>      <span class="subxComment"># if (curr != curr2) return false</span>
+<span id="L8948" class="LineNr"> 8948 </span>      {
+<span id="L8949" class="LineNr"> 8949 </span>        (<a href='mu.subx.html#L8975'>operand-matches-primitive?</a> %esi *edi)  <span class="subxComment"># List-value =&gt; eax</span>
+<span id="L8950" class="LineNr"> 8950 </span>        3d/compare-eax-and 0/imm32/false
+<span id="L8951" class="LineNr"> 8951 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L8952" class="LineNr"> 8952 </span>        b8/copy-to-eax 0/imm32
+<span id="L8953" class="LineNr"> 8953 </span>        e9/jump $mu-stmt-matches-primitive?:end/disp32
+<span id="L8954" class="LineNr"> 8954 </span>      }
+<span id="L8955" class="LineNr"> 8955 </span>      <span class="subxComment"># curr=curr-&gt;next</span>
+<span id="L8956" class="LineNr"> 8956 </span>      8b/-&gt; *(esi+4) 6/r32/esi  <span class="subxComment"># Stmt-var-next</span>
+<span id="L8957" class="LineNr"> 8957 </span>      <span class="subxComment"># curr2=curr2-&gt;next</span>
+<span id="L8958" class="LineNr"> 8958 </span>      8b/-&gt; *(edi+4) 7/r32/edi  <span class="subxComment"># Stmt-var-next</span>
+<span id="L8959" class="LineNr"> 8959 </span>      eb/jump <span class="Constant">loop</span>/disp8
+<span id="L8960" class="LineNr"> 8960 </span>    }
+<span id="L8961" class="LineNr"> 8961 </span><span class="Constant">$mu-stmt-matches-primitive?:return-true</span>:
+<span id="L8962" class="LineNr"> 8962 </span>    b8/copy-to-eax 1/imm32
+<span id="L8963" class="LineNr"> 8963 </span><span class="Constant">$mu-stmt-matches-primitive?:end</span>:
+<span id="L8964" class="LineNr"> 8964 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L8965" class="LineNr"> 8965 </span>    5f/pop-to-edi
+<span id="L8966" class="LineNr"> 8966 </span>    5e/pop-to-esi
+<span id="L8967" class="LineNr"> 8967 </span>    5b/pop-to-ebx
+<span id="L8968" class="LineNr"> 8968 </span>    5a/pop-to-edx
+<span id="L8969" class="LineNr"> 8969 </span>    59/pop-to-ecx
+<span id="L8970" class="LineNr"> 8970 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L8971" class="LineNr"> 8971 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L8972" class="LineNr"> 8972 </span>    5d/pop-to-ebp
+<span id="L8973" class="LineNr"> 8973 </span>    c3/return
+<span id="L8974" class="LineNr"> 8974 </span>
+<span id="L8975" class="LineNr"> 8975 </span><span class="subxFunction">operand-matches-primitive?</span>:  <span class="subxComment"># s: (handle stmt-var), prim-var: (handle var) -&gt; result/eax: boolean</span>
+<span id="L8976" class="LineNr"> 8976 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L8977" class="LineNr"> 8977 </span>    55/push-ebp
+<span id="L8978" class="LineNr"> 8978 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L8979" class="LineNr"> 8979 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L8980" class="LineNr"> 8980 </span>    51/push-ecx
+<span id="L8981" class="LineNr"> 8981 </span>    56/push-esi
+<span id="L8982" class="LineNr"> 8982 </span>    57/push-edi
+<span id="L8983" class="LineNr"> 8983 </span>    <span class="subxComment"># ecx = s</span>
+<span id="L8984" class="LineNr"> 8984 </span>    8b/-&gt; *(ebp+8) 1/r32/ecx
+<span id="L8985" class="LineNr"> 8985 </span>    <span class="subxComment"># var var/esi : (handle var) = s-&gt;value</span>
+<span id="L8986" class="LineNr"> 8986 </span>    8b/-&gt; *ecx 6/r32/esi  <span class="subxComment"># Stmt-var-value</span>
+<span id="L8987" class="LineNr"> 8987 </span>    <span class="subxComment"># edi = prim-var</span>
+<span id="L8988" class="LineNr"> 8988 </span>    8b/-&gt; *(ebp+0xc) 7/r32/edi
+<span id="L8989" class="LineNr"> 8989 </span><span class="Constant">$operand-matches-primitive?:check-type</span>:
+<span id="L8990" class="LineNr"> 8990 </span>    <span class="subxComment"># if (var-&gt;type != prim-var-&gt;type) return false</span>
+<span id="L8991" class="LineNr"> 8991 </span>    (<a href='mu.subx.html#L9053'>subx-type-equal?</a> *(esi+4) *(edi+4))  <span class="subxComment"># Var-type, Var-type =&gt; eax</span>
+<span id="L8992" class="LineNr"> 8992 </span>    3d/compare-eax-and 0/imm32/false
+<span id="L8993" class="LineNr"> 8993 </span>    b8/copy-to-eax 0/imm32/false
+<span id="L8994" class="LineNr"> 8994 </span>    0f 84/jump-if-= $operand-matches-primitive?:end/disp32
+<span id="L8995" class="LineNr"> 8995 </span>    {
+<span id="L8996" class="LineNr"> 8996 </span><span class="Constant">$operand-matches-primitive?:check-register</span>:
+<span id="L8997" class="LineNr"> 8997 </span>      <span class="subxComment"># if prim-var is in memory and var is in register but dereference, match</span>
+<span id="L8998" class="LineNr"> 8998 </span>      {
+<span id="L8999" class="LineNr"> 8999 </span>        81 7/subop/compare *(edi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
+<span id="L9000" class="LineNr"> 9000 </span>        0f 85/jump-if-!= <span class="Constant">break</span>/disp32
+<span id="L9001" class="LineNr"> 9001 </span>        81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
+<span id="L9002" class="LineNr"> 9002 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L9003" class="LineNr"> 9003 </span>        81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
+<span id="L9004" class="LineNr"> 9004 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L9005" class="LineNr"> 9005 </span>        e9/jump $operand-matches-primitive?:return-true/disp32
+<span id="L9006" class="LineNr"> 9006 </span>      }
+<span id="L9007" class="LineNr"> 9007 </span>      <span class="subxComment"># if prim-var is in register and var is in register but dereference, no match</span>
+<span id="L9008" class="LineNr"> 9008 </span>      {
+<span id="L9009" class="LineNr"> 9009 </span>        81 7/subop/compare *(edi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
+<span id="L9010" class="LineNr"> 9010 </span>        0f 84/jump-if-= <span class="Constant">break</span>/disp32
+<span id="L9011" class="LineNr"> 9011 </span>        81 7/subop/compare *(esi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
+<span id="L9012" class="LineNr"> 9012 </span>        0f 84/jump-if-= <span class="Constant">break</span>/disp32
+<span id="L9013" class="LineNr"> 9013 </span>        81 7/subop/compare *(ecx+8) 0/imm32/false  <span class="subxComment"># Stmt-var-is-deref</span>
+<span id="L9014" class="LineNr"> 9014 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L9015" class="LineNr"> 9015 </span>        e9/jump $operand-matches-primitive?:return-false/disp32
+<span id="L9016" class="LineNr"> 9016 </span>      }
+<span id="L9017" class="LineNr"> 9017 </span>      <span class="subxComment"># return false if var-&gt;register doesn't match prim-var-&gt;register</span>
+<span id="L9018" class="LineNr"> 9018 </span>      {
+<span id="L9019" class="LineNr"> 9019 </span>        <span class="subxComment"># if register addresses are equal, it's a match</span>
+<span id="L9020" class="LineNr"> 9020 </span>        8b/-&gt; *(esi+0x10) 0/r32/eax  <span class="subxComment"># Var-register</span>
+<span id="L9021" class="LineNr"> 9021 </span>        39/compare *(edi+0x10) 0/r32/eax  <span class="subxComment"># Var-register</span>
+<span id="L9022" class="LineNr"> 9022 </span>        74/jump-if-= <span class="Constant">break</span>/disp8
+<span id="L9023" class="LineNr"> 9023 </span>        <span class="subxComment"># if either address is 0, return false</span>
+<span id="L9024" class="LineNr"> 9024 </span>        3d/compare-eax-and 0/imm32
+<span id="L9025" class="LineNr"> 9025 </span>        74/jump-if-=  $operand-matches-primitive?:end/disp8  <span class="subxComment"># eax goes from meaning var-&gt;register to result</span>
+<span id="L9026" class="LineNr"> 9026 </span>        81 7/subop/compare *(edi+0x10) 0/imm32  <span class="subxComment"># Var-register</span>
+<span id="L9027" class="LineNr"> 9027 </span>        74/jump-if-=  $operand-matches-primitive?:return-false/disp8
+<span id="L9028" class="LineNr"> 9028 </span>        <span class="subxComment"># if prim-var-&gt;register is wildcard, it's a match</span>
+<span id="L9029" class="LineNr"> 9029 </span>        (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *(edi+0x10) <span class="SpecialChar"><a href='mu.subx.html#L339'>Any-register</a></span>)  <span class="subxComment"># Var-register =&gt; eax</span>
+<span id="L9030" class="LineNr"> 9030 </span>        3d/compare-eax-and 0/imm32/false
+<span id="L9031" class="LineNr"> 9031 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
+<span id="L9032" class="LineNr"> 9032 </span>        <span class="subxComment"># if string contents aren't equal, return false</span>
+<span id="L9033" class="LineNr"> 9033 </span>        (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *(esi+0x10) *(edi+0x10))  <span class="subxComment"># Var-register Var-register =&gt; eax</span>
 <span id="L9034" class="LineNr"> 9034 </span>        3d/compare-eax-and 0/imm32/false
-<span id="L9035" class="LineNr"> 9035 </span>        75/jump-if-!= <span class="Constant">break</span>/disp8
-<span id="L9036" class="LineNr"> 9036 </span>        <span class="subxComment"># if string contents aren't equal, return false</span>
-<span id="L9037" class="LineNr"> 9037 </span>        (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *(esi+0x10) *(edi+0x10))  <span class="subxComment"># Var-register Var-register =&gt; eax</span>
-<span id="L9038" class="LineNr"> 9038 </span>        3d/compare-eax-and 0/imm32/false
-<span id="L9039" class="LineNr"> 9039 </span>        74/jump-if-= $operand-matches-primitive?:return-false/disp8
-<span id="L9040" class="LineNr"> 9040 </span>      }
-<span id="L9041" class="LineNr"> 9041 </span>    }
-<span id="L9042" class="LineNr"> 9042 </span><span class="Constant">$operand-matches-primitive?:return-true</span>:
-<span id="L9043" class="LineNr"> 9043 </span>    b8/copy-to-eax 1/imm32/true
-<span id="L9044" class="LineNr"> 9044 </span>    eb/jump $operand-matches-primitive?:end/disp8
-<span id="L9045" class="LineNr"> 9045 </span><span class="Constant">$operand-matches-primitive?:return-false</span>:
-<span id="L9046" class="LineNr"> 9046 </span>    b8/copy-to-eax 0/imm32/false
-<span id="L9047" class="LineNr"> 9047 </span><span class="Constant">$operand-matches-primitive?:end</span>:
-<span id="L9048" class="LineNr"> 9048 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L9049" class="LineNr"> 9049 </span>    5f/pop-to-edi
-<span id="L9050" class="LineNr"> 9050 </span>    5e/pop-to-esi
-<span id="L9051" class="LineNr"> 9051 </span>    59/pop-to-ecx
-<span id="L9052" class="LineNr"> 9052 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9053" class="LineNr"> 9053 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9054" class="LineNr"> 9054 </span>    5d/pop-to-ebp
-<span id="L9055" class="LineNr"> 9055 </span>    c3/return
-<span id="L9056" class="LineNr"> 9056 </span>
-<span id="L9057" class="LineNr"> 9057 </span><span class="subxFunction">subx-type-equal?</span>:  <span class="subxComment"># a: (handle tree type-id), b: (handle tree type-id) -&gt; result/eax: boolean</span>
-<span id="L9058" class="LineNr"> 9058 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9059" class="LineNr"> 9059 </span>    55/push-ebp
-<span id="L9060" class="LineNr"> 9060 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9061" class="LineNr"> 9061 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L9062" class="LineNr"> 9062 </span>    51/push-ecx
-<span id="L9063" class="LineNr"> 9063 </span>    <span class="subxComment"># var alit/ecx: boolean = is-literal-type?(a)</span>
-<span id="L9064" class="LineNr"> 9064 </span>    (<a href='mu.subx.html#L9084'>is-literal-type?</a> *(ebp+8))  <span class="subxComment"># =&gt; eax</span>
-<span id="L9065" class="LineNr"> 9065 </span>    89/&lt;- %ecx 0/r32/eax
-<span id="L9066" class="LineNr"> 9066 </span>    <span class="subxComment"># var blit/eax: boolean = is-literal-type?(b)</span>
-<span id="L9067" class="LineNr"> 9067 </span>    (<a href='mu.subx.html#L9084'>is-literal-type?</a> *(ebp+0xc))  <span class="subxComment"># =&gt; eax</span>
-<span id="L9068" class="LineNr"> 9068 </span>    <span class="subxComment"># return alit == blit</span>
-<span id="L9069" class="LineNr"> 9069 </span>    39/compare %eax 1/r32/ecx
-<span id="L9070" class="LineNr"> 9070 </span>    74/jump-if-= $subx-type-equal?:true/disp8
-<span id="L9071" class="LineNr"> 9071 </span><span class="Constant">$subx-type-equal?:false</span>:  <span class="subxComment"># TODO: replace with setcc</span>
-<span id="L9072" class="LineNr"> 9072 </span>    b8/copy-to-eax 0/imm32/false
-<span id="L9073" class="LineNr"> 9073 </span>    eb/jump $subx-type-equal?:end/disp8
-<span id="L9074" class="LineNr"> 9074 </span><span class="Constant">$subx-type-equal?:true</span>:
-<span id="L9075" class="LineNr"> 9075 </span>    b8/copy-to-eax 1/imm32/true
-<span id="L9076" class="LineNr"> 9076 </span><span class="Constant">$subx-type-equal?:end</span>:
-<span id="L9077" class="LineNr"> 9077 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L9078" class="LineNr"> 9078 </span>    59/pop-to-ecx
-<span id="L9079" class="LineNr"> 9079 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9080" class="LineNr"> 9080 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9081" class="LineNr"> 9081 </span>    5d/pop-to-ebp
-<span id="L9082" class="LineNr"> 9082 </span>    c3/return
-<span id="L9083" class="LineNr"> 9083 </span>
-<span id="L9084" class="LineNr"> 9084 </span><span class="subxFunction">is-literal-type?</span>:  <span class="subxComment"># a: (handle tree type-id) -&gt; result/eax: boolean</span>
-<span id="L9085" class="LineNr"> 9085 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9086" class="LineNr"> 9086 </span>    55/push-ebp
-<span id="L9087" class="LineNr"> 9087 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9088" class="LineNr"> 9088 </span>    <span class="subxComment">#</span>
-<span id="L9089" class="LineNr"> 9089 </span>    8b/-&gt; *(ebp+8) 0/r32/eax
-<span id="L9090" class="LineNr"> 9090 </span>    <span class="subxComment"># return (*eax == 0)  # TODO: replace with setcc</span>
-<span id="L9091" class="LineNr"> 9091 </span>    81 7/subop/compare *eax 0/imm32/literal-type-id  <span class="subxComment"># Atom-type</span>
-<span id="L9092" class="LineNr"> 9092 </span>    75/jump-if-!= $is-literal-type?:false/disp8
-<span id="L9093" class="LineNr"> 9093 </span><span class="Constant">$is-literal-type?:true</span>:
-<span id="L9094" class="LineNr"> 9094 </span>    b8/copy-to-eax 1/imm32/true
-<span id="L9095" class="LineNr"> 9095 </span>    eb/jump $is-literal-type?:end/disp8
-<span id="L9096" class="LineNr"> 9096 </span><span class="Constant">$is-literal-type?:false</span>:
-<span id="L9097" class="LineNr"> 9097 </span>    b8/copy-to-eax 0/imm32/false
-<span id="L9098" class="LineNr"> 9098 </span><span class="Constant">$is-literal-type?:end</span>:
-<span id="L9099" class="LineNr"> 9099 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9100" class="LineNr"> 9100 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9101" class="LineNr"> 9101 </span>    5d/pop-to-ebp
-<span id="L9102" class="LineNr"> 9102 </span>    c3/return
-<span id="L9103" class="LineNr"> 9103 </span>
-<span id="L9104" class="LineNr"> 9104 </span><span class="subxTest">test-emit-subx-stmt-primitive</span>:
-<span id="L9105" class="LineNr"> 9105 </span>    <span class="subxComment"># Primitive operation on a variable on the stack.</span>
-<span id="L9106" class="LineNr"> 9106 </span>    <span class="subxComment">#   increment foo</span>
-<span id="L9107" class="LineNr"> 9107 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9108" class="LineNr"> 9108 </span>    <span class="subxComment">#   ff 0/subop/increment *(ebp-8)</span>
+<span id="L9035" class="LineNr"> 9035 </span>        74/jump-if-= $operand-matches-primitive?:return-false/disp8
+<span id="L9036" class="LineNr"> 9036 </span>      }
+<span id="L9037" class="LineNr"> 9037 </span>    }
+<span id="L9038" class="LineNr"> 9038 </span><span class="Constant">$operand-matches-primitive?:return-true</span>:
+<span id="L9039" class="LineNr"> 9039 </span>    b8/copy-to-eax 1/imm32/true
+<span id="L9040" class="LineNr"> 9040 </span>    eb/jump $operand-matches-primitive?:end/disp8
+<span id="L9041" class="LineNr"> 9041 </span><span class="Constant">$operand-matches-primitive?:return-false</span>:
+<span id="L9042" class="LineNr"> 9042 </span>    b8/copy-to-eax 0/imm32/false
+<span id="L9043" class="LineNr"> 9043 </span><span class="Constant">$operand-matches-primitive?:end</span>:
+<span id="L9044" class="LineNr"> 9044 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L9045" class="LineNr"> 9045 </span>    5f/pop-to-edi
+<span id="L9046" class="LineNr"> 9046 </span>    5e/pop-to-esi
+<span id="L9047" class="LineNr"> 9047 </span>    59/pop-to-ecx
+<span id="L9048" class="LineNr"> 9048 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9049" class="LineNr"> 9049 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9050" class="LineNr"> 9050 </span>    5d/pop-to-ebp
+<span id="L9051" class="LineNr"> 9051 </span>    c3/return
+<span id="L9052" class="LineNr"> 9052 </span>
+<span id="L9053" class="LineNr"> 9053 </span><span class="subxFunction">subx-type-equal?</span>:  <span class="subxComment"># a: (handle tree type-id), b: (handle tree type-id) -&gt; result/eax: boolean</span>
+<span id="L9054" class="LineNr"> 9054 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9055" class="LineNr"> 9055 </span>    55/push-ebp
+<span id="L9056" class="LineNr"> 9056 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9057" class="LineNr"> 9057 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L9058" class="LineNr"> 9058 </span>    51/push-ecx
+<span id="L9059" class="LineNr"> 9059 </span>    <span class="subxComment"># var alit/ecx: boolean = is-literal-type?(a)</span>
+<span id="L9060" class="LineNr"> 9060 </span>    (<a href='mu.subx.html#L9076'>is-literal-type?</a> *(ebp+8))  <span class="subxComment"># =&gt; eax</span>
+<span id="L9061" class="LineNr"> 9061 </span>    89/&lt;- %ecx 0/r32/eax
+<span id="L9062" class="LineNr"> 9062 </span>    <span class="subxComment"># var blit/eax: boolean = is-literal-type?(b)</span>
+<span id="L9063" class="LineNr"> 9063 </span>    (<a href='mu.subx.html#L9076'>is-literal-type?</a> *(ebp+0xc))  <span class="subxComment"># =&gt; eax</span>
+<span id="L9064" class="LineNr"> 9064 </span>    <span class="subxComment"># return alit == blit</span>
+<span id="L9065" class="LineNr"> 9065 </span>    39/compare %eax 1/r32/ecx
+<span id="L9066" class="LineNr"> 9066 </span>    0f 94/set-if-= %eax
+<span id="L9067" class="LineNr"> 9067 </span>    81 4/subop/and %eax 0xff/imm32
+<span id="L9068" class="LineNr"> 9068 </span><span class="Constant">$subx-type-equal?:end</span>:
+<span id="L9069" class="LineNr"> 9069 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L9070" class="LineNr"> 9070 </span>    59/pop-to-ecx
+<span id="L9071" class="LineNr"> 9071 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9072" class="LineNr"> 9072 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9073" class="LineNr"> 9073 </span>    5d/pop-to-ebp
+<span id="L9074" class="LineNr"> 9074 </span>    c3/return
+<span id="L9075" class="LineNr"> 9075 </span>
+<span id="L9076" class="LineNr"> 9076 </span><span class="subxFunction">is-literal-type?</span>:  <span class="subxComment"># a: (handle tree type-id) -&gt; result/eax: boolean</span>
+<span id="L9077" class="LineNr"> 9077 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9078" class="LineNr"> 9078 </span>    55/push-ebp
+<span id="L9079" class="LineNr"> 9079 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9080" class="LineNr"> 9080 </span>    <span class="subxComment">#</span>
+<span id="L9081" class="LineNr"> 9081 </span>    8b/-&gt; *(ebp+8) 0/r32/eax
+<span id="L9082" class="LineNr"> 9082 </span>    <span class="subxComment"># return (*eax == 0)</span>
+<span id="L9083" class="LineNr"> 9083 </span>    81 7/subop/compare *eax 0/imm32/literal-type-id  <span class="subxComment"># Atom-type</span>
+<span id="L9084" class="LineNr"> 9084 </span>    0f 94/set-if-= %eax
+<span id="L9085" class="LineNr"> 9085 </span>    81 4/subop/and %eax 0xff/imm32
+<span id="L9086" class="LineNr"> 9086 </span><span class="Constant">$is-literal-type?:end</span>:
+<span id="L9087" class="LineNr"> 9087 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9088" class="LineNr"> 9088 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9089" class="LineNr"> 9089 </span>    5d/pop-to-ebp
+<span id="L9090" class="LineNr"> 9090 </span>    c3/return
+<span id="L9091" class="LineNr"> 9091 </span>
+<span id="L9092" class="LineNr"> 9092 </span><span class="subxTest">test-emit-subx-stmt-primitive</span>:
+<span id="L9093" class="LineNr"> 9093 </span>    <span class="subxComment"># Primitive operation on a variable on the stack.</span>
+<span id="L9094" class="LineNr"> 9094 </span>    <span class="subxComment">#   increment foo</span>
+<span id="L9095" class="LineNr"> 9095 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9096" class="LineNr"> 9096 </span>    <span class="subxComment">#   ff 0/subop/increment *(ebp-8)</span>
+<span id="L9097" class="LineNr"> 9097 </span>    <span class="subxComment">#</span>
+<span id="L9098" class="LineNr"> 9098 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
+<span id="L9099" class="LineNr"> 9099 </span>    <span class="subxComment">#   name: 'foo'</span>
+<span id="L9100" class="LineNr"> 9100 </span>    <span class="subxComment">#   type: int</span>
+<span id="L9101" class="LineNr"> 9101 </span>    <span class="subxComment">#   stack-offset: -8</span>
+<span id="L9102" class="LineNr"> 9102 </span>    <span class="subxComment">#</span>
+<span id="L9103" class="LineNr"> 9103 </span>    <span class="subxComment"># There's a primitive with this info:</span>
+<span id="L9104" class="LineNr"> 9104 </span>    <span class="subxComment">#   name: 'increment'</span>
+<span id="L9105" class="LineNr"> 9105 </span>    <span class="subxComment">#   inouts: int/mem</span>
+<span id="L9106" class="LineNr"> 9106 </span>    <span class="subxComment">#   value: 'ff 0/subop/increment'</span>
+<span id="L9107" class="LineNr"> 9107 </span>    <span class="subxComment">#</span>
+<span id="L9108" class="LineNr"> 9108 </span>    <span class="subxComment"># There's nothing in functions.</span>
 <span id="L9109" class="LineNr"> 9109 </span>    <span class="subxComment">#</span>
-<span id="L9110" class="LineNr"> 9110 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
-<span id="L9111" class="LineNr"> 9111 </span>    <span class="subxComment">#   name: 'foo'</span>
-<span id="L9112" class="LineNr"> 9112 </span>    <span class="subxComment">#   type: int</span>
-<span id="L9113" class="LineNr"> 9113 </span>    <span class="subxComment">#   stack-offset: -8</span>
-<span id="L9114" class="LineNr"> 9114 </span>    <span class="subxComment">#</span>
-<span id="L9115" class="LineNr"> 9115 </span>    <span class="subxComment"># There's a primitive with this info:</span>
-<span id="L9116" class="LineNr"> 9116 </span>    <span class="subxComment">#   name: 'increment'</span>
-<span id="L9117" class="LineNr"> 9117 </span>    <span class="subxComment">#   inouts: int/mem</span>
-<span id="L9118" class="LineNr"> 9118 </span>    <span class="subxComment">#   value: 'ff 0/subop/increment'</span>
-<span id="L9119" class="LineNr"> 9119 </span>    <span class="subxComment">#</span>
-<span id="L9120" class="LineNr"> 9120 </span>    <span class="subxComment"># There's nothing in functions.</span>
-<span id="L9121" class="LineNr"> 9121 </span>    <span class="subxComment">#</span>
-<span id="L9122" class="LineNr"> 9122 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9123" class="LineNr"> 9123 </span>    55/push-ebp
-<span id="L9124" class="LineNr"> 9124 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9125" class="LineNr"> 9125 </span>    <span class="subxComment"># setup</span>
-<span id="L9126" class="LineNr"> 9126 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9127" class="LineNr"> 9127 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9128" class="LineNr"> 9128 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9129" class="LineNr"> 9129 </span>    68/push 0/imm32/right/null
-<span id="L9130" class="LineNr"> 9130 </span>    68/push 1/imm32/left/int
-<span id="L9131" class="LineNr"> 9131 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9132" class="LineNr"> 9132 </span>    <span class="subxComment"># var var-foo/ecx: var</span>
-<span id="L9133" class="LineNr"> 9133 </span>    68/push 0/imm32/no-register
-<span id="L9134" class="LineNr"> 9134 </span>    68/push -8/imm32/stack-offset
-<span id="L9135" class="LineNr"> 9135 </span>    68/push 1/imm32/block-depth
-<span id="L9136" class="LineNr"> 9136 </span>    51/push-ecx
-<span id="L9137" class="LineNr"> 9137 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
-<span id="L9138" class="LineNr"> 9138 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9139" class="LineNr"> 9139 </span>    <span class="subxComment"># var operand/ebx: (handle stmt-var)</span>
-<span id="L9140" class="LineNr"> 9140 </span>    68/push 0/imm32/is-deref:false
-<span id="L9141" class="LineNr"> 9141 </span>    68/push 0/imm32/next
-<span id="L9142" class="LineNr"> 9142 </span>    51/push-ecx/var-foo
-<span id="L9143" class="LineNr"> 9143 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9144" class="LineNr"> 9144 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9145" class="LineNr"> 9145 </span>    68/push 0/imm32/next
-<span id="L9146" class="LineNr"> 9146 </span>    68/push 0/imm32/outputs
-<span id="L9147" class="LineNr"> 9147 </span>    53/push-ebx/operands
-<span id="L9148" class="LineNr"> 9148 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
-<span id="L9149" class="LineNr"> 9149 </span>    68/push 1/imm32
-<span id="L9150" class="LineNr"> 9150 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9151" class="LineNr"> 9151 </span>    <span class="subxComment"># var primitives/ebx: primitive</span>
-<span id="L9152" class="LineNr"> 9152 </span>    68/push 0/imm32/next
-<span id="L9153" class="LineNr"> 9153 </span>    68/push 0/imm32/output-is-write-only
-<span id="L9154" class="LineNr"> 9154 </span>    68/push 0/imm32/no-disp32
-<span id="L9155" class="LineNr"> 9155 </span>    68/push 0/imm32/no-imm32
-<span id="L9156" class="LineNr"> 9156 </span>    68/push 0/imm32/no-r32
-<span id="L9157" class="LineNr"> 9157 </span>    68/push 1/imm32/rm32-is-first-inout
-<span id="L9158" class="LineNr"> 9158 </span>    68/push <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
-<span id="L9159" class="LineNr"> 9159 </span>    68/push 0/imm32/outputs
-<span id="L9160" class="LineNr"> 9160 </span>    53/push-ebx/inouts  <span class="subxComment"># hack; in practice we won't have the same var in function definition and call</span>
-<span id="L9161" class="LineNr"> 9161 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L9162" class="LineNr"> 9162 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9163" class="LineNr"> 9163 </span>    <span class="subxComment"># convert</span>
-<span id="L9164" class="LineNr"> 9164 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9165" class="LineNr"> 9165 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi %ebx 0)
-<span id="L9166" class="LineNr"> 9166 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9167" class="Folded"> 9167 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9173" class="LineNr"> 9173 </span>    <span class="subxComment"># check output</span>
-<span id="L9174" class="LineNr"> 9174 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;ff 0/subop/increment *(ebp+0xfffffff8)&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-primitive&quot;</span>)
-<span id="L9175" class="LineNr"> 9175 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9176" class="LineNr"> 9176 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9177" class="LineNr"> 9177 </span>    5d/pop-to-ebp
-<span id="L9178" class="LineNr"> 9178 </span>    c3/return
-<span id="L9179" class="LineNr"> 9179 </span>
-<span id="L9180" class="LineNr"> 9180 </span><span class="subxTest">test-emit-subx-stmt-primitive-register</span>:
-<span id="L9181" class="LineNr"> 9181 </span>    <span class="subxComment"># Primitive operation on a variable in a register.</span>
-<span id="L9182" class="LineNr"> 9182 </span>    <span class="subxComment">#   foo &lt;- increment</span>
-<span id="L9183" class="LineNr"> 9183 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9184" class="LineNr"> 9184 </span>    <span class="subxComment">#   ff 0/subop/increment %eax  # sub-optimal, but should suffice</span>
+<span id="L9110" class="LineNr"> 9110 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9111" class="LineNr"> 9111 </span>    55/push-ebp
+<span id="L9112" class="LineNr"> 9112 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9113" class="LineNr"> 9113 </span>    <span class="subxComment"># setup</span>
+<span id="L9114" class="LineNr"> 9114 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9115" class="LineNr"> 9115 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9116" class="LineNr"> 9116 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9117" class="LineNr"> 9117 </span>    68/push 0/imm32/right/null
+<span id="L9118" class="LineNr"> 9118 </span>    68/push 1/imm32/left/int
+<span id="L9119" class="LineNr"> 9119 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9120" class="LineNr"> 9120 </span>    <span class="subxComment"># var var-foo/ecx: var</span>
+<span id="L9121" class="LineNr"> 9121 </span>    68/push 0/imm32/no-register
+<span id="L9122" class="LineNr"> 9122 </span>    68/push -8/imm32/stack-offset
+<span id="L9123" class="LineNr"> 9123 </span>    68/push 1/imm32/block-depth
+<span id="L9124" class="LineNr"> 9124 </span>    51/push-ecx
+<span id="L9125" class="LineNr"> 9125 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
+<span id="L9126" class="LineNr"> 9126 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9127" class="LineNr"> 9127 </span>    <span class="subxComment"># var operand/ebx: (handle stmt-var)</span>
+<span id="L9128" class="LineNr"> 9128 </span>    68/push 0/imm32/is-deref:false
+<span id="L9129" class="LineNr"> 9129 </span>    68/push 0/imm32/next
+<span id="L9130" class="LineNr"> 9130 </span>    51/push-ecx/var-foo
+<span id="L9131" class="LineNr"> 9131 </span>    89/&lt;- %ebx 4/r32/esp
+<span id="L9132" class="LineNr"> 9132 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9133" class="LineNr"> 9133 </span>    68/push 0/imm32/next
+<span id="L9134" class="LineNr"> 9134 </span>    68/push 0/imm32/outputs
+<span id="L9135" class="LineNr"> 9135 </span>    53/push-ebx/operands
+<span id="L9136" class="LineNr"> 9136 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
+<span id="L9137" class="LineNr"> 9137 </span>    68/push 1/imm32
+<span id="L9138" class="LineNr"> 9138 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9139" class="LineNr"> 9139 </span>    <span class="subxComment"># var primitives/ebx: primitive</span>
+<span id="L9140" class="LineNr"> 9140 </span>    68/push 0/imm32/next
+<span id="L9141" class="LineNr"> 9141 </span>    68/push 0/imm32/output-is-write-only
+<span id="L9142" class="LineNr"> 9142 </span>    68/push 0/imm32/no-disp32
+<span id="L9143" class="LineNr"> 9143 </span>    68/push 0/imm32/no-imm32
+<span id="L9144" class="LineNr"> 9144 </span>    68/push 0/imm32/no-r32
+<span id="L9145" class="LineNr"> 9145 </span>    68/push 1/imm32/rm32-is-first-inout
+<span id="L9146" class="LineNr"> 9146 </span>    68/push <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
+<span id="L9147" class="LineNr"> 9147 </span>    68/push 0/imm32/outputs
+<span id="L9148" class="LineNr"> 9148 </span>    53/push-ebx/inouts  <span class="subxComment"># hack; in practice we won't have the same var in function definition and call</span>
+<span id="L9149" class="LineNr"> 9149 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/name
+<span id="L9150" class="LineNr"> 9150 </span>    89/&lt;- %ebx 4/r32/esp
+<span id="L9151" class="LineNr"> 9151 </span>    <span class="subxComment"># convert</span>
+<span id="L9152" class="LineNr"> 9152 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9153" class="LineNr"> 9153 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi %ebx 0)
+<span id="L9154" class="LineNr"> 9154 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9155" class="Folded"> 9155 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9161" class="LineNr"> 9161 </span>    <span class="subxComment"># check output</span>
+<span id="L9162" class="LineNr"> 9162 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;ff 0/subop/increment *(ebp+0xfffffff8)&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-primitive&quot;</span>)
+<span id="L9163" class="LineNr"> 9163 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9164" class="LineNr"> 9164 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9165" class="LineNr"> 9165 </span>    5d/pop-to-ebp
+<span id="L9166" class="LineNr"> 9166 </span>    c3/return
+<span id="L9167" class="LineNr"> 9167 </span>
+<span id="L9168" class="LineNr"> 9168 </span><span class="subxTest">test-emit-subx-stmt-primitive-register</span>:
+<span id="L9169" class="LineNr"> 9169 </span>    <span class="subxComment"># Primitive operation on a variable in a register.</span>
+<span id="L9170" class="LineNr"> 9170 </span>    <span class="subxComment">#   foo &lt;- increment</span>
+<span id="L9171" class="LineNr"> 9171 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9172" class="LineNr"> 9172 </span>    <span class="subxComment">#   ff 0/subop/increment %eax  # sub-optimal, but should suffice</span>
+<span id="L9173" class="LineNr"> 9173 </span>    <span class="subxComment">#</span>
+<span id="L9174" class="LineNr"> 9174 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
+<span id="L9175" class="LineNr"> 9175 </span>    <span class="subxComment">#   name: 'foo'</span>
+<span id="L9176" class="LineNr"> 9176 </span>    <span class="subxComment">#   type: int</span>
+<span id="L9177" class="LineNr"> 9177 </span>    <span class="subxComment">#   register: 'eax'</span>
+<span id="L9178" class="LineNr"> 9178 </span>    <span class="subxComment">#</span>
+<span id="L9179" class="LineNr"> 9179 </span>    <span class="subxComment"># There's a primitive with this info:</span>
+<span id="L9180" class="LineNr"> 9180 </span>    <span class="subxComment">#   name: 'increment'</span>
+<span id="L9181" class="LineNr"> 9181 </span>    <span class="subxComment">#   out: int/reg</span>
+<span id="L9182" class="LineNr"> 9182 </span>    <span class="subxComment">#   value: 'ff 0/subop/increment'</span>
+<span id="L9183" class="LineNr"> 9183 </span>    <span class="subxComment">#</span>
+<span id="L9184" class="LineNr"> 9184 </span>    <span class="subxComment"># There's nothing in functions.</span>
 <span id="L9185" class="LineNr"> 9185 </span>    <span class="subxComment">#</span>
-<span id="L9186" class="LineNr"> 9186 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
-<span id="L9187" class="LineNr"> 9187 </span>    <span class="subxComment">#   name: 'foo'</span>
-<span id="L9188" class="LineNr"> 9188 </span>    <span class="subxComment">#   type: int</span>
-<span id="L9189" class="LineNr"> 9189 </span>    <span class="subxComment">#   register: 'eax'</span>
-<span id="L9190" class="LineNr"> 9190 </span>    <span class="subxComment">#</span>
-<span id="L9191" class="LineNr"> 9191 </span>    <span class="subxComment"># There's a primitive with this info:</span>
-<span id="L9192" class="LineNr"> 9192 </span>    <span class="subxComment">#   name: 'increment'</span>
-<span id="L9193" class="LineNr"> 9193 </span>    <span class="subxComment">#   out: int/reg</span>
-<span id="L9194" class="LineNr"> 9194 </span>    <span class="subxComment">#   value: 'ff 0/subop/increment'</span>
-<span id="L9195" class="LineNr"> 9195 </span>    <span class="subxComment">#</span>
-<span id="L9196" class="LineNr"> 9196 </span>    <span class="subxComment"># There's nothing in functions.</span>
-<span id="L9197" class="LineNr"> 9197 </span>    <span class="subxComment">#</span>
-<span id="L9198" class="LineNr"> 9198 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9199" class="LineNr"> 9199 </span>    55/push-ebp
-<span id="L9200" class="LineNr"> 9200 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9201" class="LineNr"> 9201 </span>    <span class="subxComment"># setup</span>
-<span id="L9202" class="LineNr"> 9202 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9203" class="LineNr"> 9203 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9204" class="LineNr"> 9204 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9205" class="LineNr"> 9205 </span>    68/push 0/imm32/right/null
-<span id="L9206" class="LineNr"> 9206 </span>    68/push 1/imm32/left/int
-<span id="L9207" class="LineNr"> 9207 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9208" class="LineNr"> 9208 </span>    <span class="subxComment"># var var-foo/ecx: var in eax</span>
-<span id="L9209" class="LineNr"> 9209 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
-<span id="L9210" class="LineNr"> 9210 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9211" class="LineNr"> 9211 </span>    68/push 1/imm32/block-depth
-<span id="L9212" class="LineNr"> 9212 </span>    51/push-ecx
-<span id="L9213" class="LineNr"> 9213 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
-<span id="L9214" class="LineNr"> 9214 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9215" class="LineNr"> 9215 </span>    <span class="subxComment"># var operand/ebx: (handle stmt-var)</span>
-<span id="L9216" class="LineNr"> 9216 </span>    68/push 0/imm32/is-deref:false
-<span id="L9217" class="LineNr"> 9217 </span>    68/push 0/imm32/next
-<span id="L9218" class="LineNr"> 9218 </span>    51/push-ecx/var-foo
-<span id="L9219" class="LineNr"> 9219 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9220" class="LineNr"> 9220 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9221" class="LineNr"> 9221 </span>    68/push 0/imm32/next
-<span id="L9222" class="LineNr"> 9222 </span>    53/push-ebx/outputs
-<span id="L9223" class="LineNr"> 9223 </span>    68/push 0/imm32/inouts
-<span id="L9224" class="LineNr"> 9224 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
-<span id="L9225" class="LineNr"> 9225 </span>    68/push 1/imm32
-<span id="L9226" class="LineNr"> 9226 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9227" class="LineNr"> 9227 </span>    <span class="subxComment"># var formal-var/ebx: var in any register</span>
-<span id="L9228" class="LineNr"> 9228 </span>    68/push <span class="SpecialChar"><a href='mu.subx.html#L339'>Any-register</a></span>/imm32
-<span id="L9229" class="LineNr"> 9229 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9230" class="LineNr"> 9230 </span>    68/push 1/imm32/block-depth
-<span id="L9231" class="LineNr"> 9231 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
-<span id="L9232" class="LineNr"> 9232 </span>    68/push <span class="Constant">&quot;dummy&quot;</span>/imm32
-<span id="L9233" class="LineNr"> 9233 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9234" class="LineNr"> 9234 </span>    <span class="subxComment"># var operand/ebx: (handle stmt-var)</span>
-<span id="L9235" class="LineNr"> 9235 </span>    68/push 0/imm32/is-deref:false
-<span id="L9236" class="LineNr"> 9236 </span>    68/push 0/imm32/next
-<span id="L9237" class="LineNr"> 9237 </span>    53/push-ebx/formal-var
+<span id="L9186" class="LineNr"> 9186 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9187" class="LineNr"> 9187 </span>    55/push-ebp
+<span id="L9188" class="LineNr"> 9188 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9189" class="LineNr"> 9189 </span>    <span class="subxComment"># setup</span>
+<span id="L9190" class="LineNr"> 9190 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9191" class="LineNr"> 9191 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9192" class="LineNr"> 9192 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9193" class="LineNr"> 9193 </span>    68/push 0/imm32/right/null
+<span id="L9194" class="LineNr"> 9194 </span>    68/push 1/imm32/left/int
+<span id="L9195" class="LineNr"> 9195 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9196" class="LineNr"> 9196 </span>    <span class="subxComment"># var var-foo/ecx: var in eax</span>
+<span id="L9197" class="LineNr"> 9197 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L9198" class="LineNr"> 9198 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9199" class="LineNr"> 9199 </span>    68/push 1/imm32/block-depth
+<span id="L9200" class="LineNr"> 9200 </span>    51/push-ecx
+<span id="L9201" class="LineNr"> 9201 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
+<span id="L9202" class="LineNr"> 9202 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9203" class="LineNr"> 9203 </span>    <span class="subxComment"># var operand/ebx: (handle stmt-var)</span>
+<span id="L9204" class="LineNr"> 9204 </span>    68/push 0/imm32/is-deref:false
+<span id="L9205" class="LineNr"> 9205 </span>    68/push 0/imm32/next
+<span id="L9206" class="LineNr"> 9206 </span>    51/push-ecx/var-foo
+<span id="L9207" class="LineNr"> 9207 </span>    89/&lt;- %ebx 4/r32/esp
+<span id="L9208" class="LineNr"> 9208 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9209" class="LineNr"> 9209 </span>    68/push 0/imm32/next
+<span id="L9210" class="LineNr"> 9210 </span>    53/push-ebx/outputs
+<span id="L9211" class="LineNr"> 9211 </span>    68/push 0/imm32/inouts
+<span id="L9212" class="LineNr"> 9212 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
+<span id="L9213" class="LineNr"> 9213 </span>    68/push 1/imm32
+<span id="L9214" class="LineNr"> 9214 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9215" class="LineNr"> 9215 </span>    <span class="subxComment"># var formal-var/ebx: var in any register</span>
+<span id="L9216" class="LineNr"> 9216 </span>    68/push <span class="SpecialChar"><a href='mu.subx.html#L339'>Any-register</a></span>/imm32
+<span id="L9217" class="LineNr"> 9217 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9218" class="LineNr"> 9218 </span>    68/push 1/imm32/block-depth
+<span id="L9219" class="LineNr"> 9219 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
+<span id="L9220" class="LineNr"> 9220 </span>    68/push <span class="Constant">&quot;dummy&quot;</span>/imm32
+<span id="L9221" class="LineNr"> 9221 </span>    89/&lt;- %ebx 4/r32/esp
+<span id="L9222" class="LineNr"> 9222 </span>    <span class="subxComment"># var operand/ebx: (handle stmt-var)</span>
+<span id="L9223" class="LineNr"> 9223 </span>    68/push 0/imm32/is-deref:false
+<span id="L9224" class="LineNr"> 9224 </span>    68/push 0/imm32/next
+<span id="L9225" class="LineNr"> 9225 </span>    53/push-ebx/formal-var
+<span id="L9226" class="LineNr"> 9226 </span>    89/&lt;- %ebx 4/r32/esp
+<span id="L9227" class="LineNr"> 9227 </span>    <span class="subxComment"># var primitives/ebx: primitive</span>
+<span id="L9228" class="LineNr"> 9228 </span>    68/push 0/imm32/next
+<span id="L9229" class="LineNr"> 9229 </span>    68/push 0/imm32/output-is-write-only
+<span id="L9230" class="LineNr"> 9230 </span>    68/push 0/imm32/no-disp32
+<span id="L9231" class="LineNr"> 9231 </span>    68/push 0/imm32/no-imm32
+<span id="L9232" class="LineNr"> 9232 </span>    68/push 0/imm32/no-r32
+<span id="L9233" class="LineNr"> 9233 </span>    68/push 3/imm32/rm32-in-first-output
+<span id="L9234" class="LineNr"> 9234 </span>    68/push <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
+<span id="L9235" class="LineNr"> 9235 </span>    53/push-ebx/outputs
+<span id="L9236" class="LineNr"> 9236 </span>    68/push 0/imm32/inouts
+<span id="L9237" class="LineNr"> 9237 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/name
 <span id="L9238" class="LineNr"> 9238 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9239" class="LineNr"> 9239 </span>    <span class="subxComment"># var primitives/ebx: primitive</span>
-<span id="L9240" class="LineNr"> 9240 </span>    68/push 0/imm32/next
-<span id="L9241" class="LineNr"> 9241 </span>    68/push 0/imm32/output-is-write-only
-<span id="L9242" class="LineNr"> 9242 </span>    68/push 0/imm32/no-disp32
-<span id="L9243" class="LineNr"> 9243 </span>    68/push 0/imm32/no-imm32
-<span id="L9244" class="LineNr"> 9244 </span>    68/push 0/imm32/no-r32
-<span id="L9245" class="LineNr"> 9245 </span>    68/push 3/imm32/rm32-in-first-output
-<span id="L9246" class="LineNr"> 9246 </span>    68/push <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
-<span id="L9247" class="LineNr"> 9247 </span>    53/push-ebx/outputs
-<span id="L9248" class="LineNr"> 9248 </span>    68/push 0/imm32/inouts
-<span id="L9249" class="LineNr"> 9249 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L9250" class="LineNr"> 9250 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9251" class="LineNr"> 9251 </span>    <span class="subxComment"># convert</span>
-<span id="L9252" class="LineNr"> 9252 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9253" class="LineNr"> 9253 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi %ebx 0)
-<span id="L9254" class="LineNr"> 9254 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9255" class="Folded"> 9255 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9261" class="LineNr"> 9261 </span>    <span class="subxComment"># check output</span>
-<span id="L9262" class="LineNr"> 9262 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;ff 0/subop/increment %eax&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-primitive-register&quot;</span>)
-<span id="L9263" class="LineNr"> 9263 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9264" class="LineNr"> 9264 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9265" class="LineNr"> 9265 </span>    5d/pop-to-ebp
-<span id="L9266" class="LineNr"> 9266 </span>    c3/return
-<span id="L9267" class="LineNr"> 9267 </span>
-<span id="L9268" class="LineNr"> 9268 </span><span class="subxTest">test-emit-subx-stmt-select-primitive</span>:
-<span id="L9269" class="LineNr"> 9269 </span>    <span class="subxComment"># Select the right primitive between overloads.</span>
-<span id="L9270" class="LineNr"> 9270 </span>    <span class="subxComment">#   foo &lt;- increment</span>
-<span id="L9271" class="LineNr"> 9271 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9272" class="LineNr"> 9272 </span>    <span class="subxComment">#   ff 0/subop/increment %eax  # sub-optimal, but should suffice</span>
-<span id="L9273" class="LineNr"> 9273 </span>    <span class="subxComment">#</span>
-<span id="L9274" class="LineNr"> 9274 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
-<span id="L9275" class="LineNr"> 9275 </span>    <span class="subxComment">#   name: 'foo'</span>
-<span id="L9276" class="LineNr"> 9276 </span>    <span class="subxComment">#   type: int</span>
-<span id="L9277" class="LineNr"> 9277 </span>    <span class="subxComment">#   register: 'eax'</span>
-<span id="L9278" class="LineNr"> 9278 </span>    <span class="subxComment">#</span>
-<span id="L9279" class="LineNr"> 9279 </span>    <span class="subxComment"># There's two primitives, as follows:</span>
-<span id="L9280" class="LineNr"> 9280 </span>    <span class="subxComment">#   - name: 'increment'</span>
-<span id="L9281" class="LineNr"> 9281 </span>    <span class="subxComment">#     out: int/reg</span>
-<span id="L9282" class="LineNr"> 9282 </span>    <span class="subxComment">#     value: 'ff 0/subop/increment'</span>
-<span id="L9283" class="LineNr"> 9283 </span>    <span class="subxComment">#   - name: 'increment'</span>
-<span id="L9284" class="LineNr"> 9284 </span>    <span class="subxComment">#     inout: int/mem</span>
-<span id="L9285" class="LineNr"> 9285 </span>    <span class="subxComment">#     value: 'ff 0/subop/increment'</span>
-<span id="L9286" class="LineNr"> 9286 </span>    <span class="subxComment">#</span>
-<span id="L9287" class="LineNr"> 9287 </span>    <span class="subxComment"># There's nothing in functions.</span>
-<span id="L9288" class="LineNr"> 9288 </span>    <span class="subxComment">#</span>
-<span id="L9289" class="LineNr"> 9289 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9290" class="LineNr"> 9290 </span>    55/push-ebp
-<span id="L9291" class="LineNr"> 9291 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9292" class="LineNr"> 9292 </span>    <span class="subxComment"># setup</span>
-<span id="L9293" class="LineNr"> 9293 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9294" class="LineNr"> 9294 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9295" class="LineNr"> 9295 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9296" class="LineNr"> 9296 </span>    68/push 0/imm32/right/null
-<span id="L9297" class="LineNr"> 9297 </span>    68/push 1/imm32/left/int
-<span id="L9298" class="LineNr"> 9298 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9299" class="LineNr"> 9299 </span>    <span class="subxComment"># var var-foo/ecx: var in eax</span>
-<span id="L9300" class="LineNr"> 9300 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
-<span id="L9301" class="LineNr"> 9301 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9302" class="LineNr"> 9302 </span>    68/push 1/imm32/block-depth
-<span id="L9303" class="LineNr"> 9303 </span>    51/push-ecx
-<span id="L9304" class="LineNr"> 9304 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
-<span id="L9305" class="LineNr"> 9305 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9306" class="LineNr"> 9306 </span>    <span class="subxComment"># var real-outputs/edi: (handle stmt-var)</span>
-<span id="L9307" class="LineNr"> 9307 </span>    68/push 0/imm32/is-deref:false
-<span id="L9308" class="LineNr"> 9308 </span>    68/push 0/imm32/next
-<span id="L9309" class="LineNr"> 9309 </span>    51/push-ecx/var-foo
-<span id="L9310" class="LineNr"> 9310 </span>    89/&lt;- %edi 4/r32/esp
-<span id="L9311" class="LineNr"> 9311 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9312" class="LineNr"> 9312 </span>    68/push 0/imm32/next
-<span id="L9313" class="LineNr"> 9313 </span>    57/push-edi/outputs
-<span id="L9314" class="LineNr"> 9314 </span>    68/push 0/imm32/inouts
-<span id="L9315" class="LineNr"> 9315 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
-<span id="L9316" class="LineNr"> 9316 </span>    68/push 1/imm32
-<span id="L9317" class="LineNr"> 9317 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9318" class="LineNr"> 9318 </span>    <span class="subxComment"># var formal-var/ebx: var in any register</span>
-<span id="L9319" class="LineNr"> 9319 </span>    68/push <span class="SpecialChar"><a href='mu.subx.html#L339'>Any-register</a></span>/imm32
-<span id="L9320" class="LineNr"> 9320 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9321" class="LineNr"> 9321 </span>    68/push 1/imm32/block-depth
-<span id="L9322" class="LineNr"> 9322 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
-<span id="L9323" class="LineNr"> 9323 </span>    68/push <span class="Constant">&quot;dummy&quot;</span>/imm32
-<span id="L9324" class="LineNr"> 9324 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9325" class="LineNr"> 9325 </span>    <span class="subxComment"># var formal-outputs/ebx: (handle stmt-var)</span>
-<span id="L9326" class="LineNr"> 9326 </span>    68/push 0/imm32/is-deref:false
-<span id="L9327" class="LineNr"> 9327 </span>    68/push 0/imm32/next
-<span id="L9328" class="LineNr"> 9328 </span>    53/push-ebx/formal-var
+<span id="L9239" class="LineNr"> 9239 </span>    <span class="subxComment"># convert</span>
+<span id="L9240" class="LineNr"> 9240 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9241" class="LineNr"> 9241 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi %ebx 0)
+<span id="L9242" class="LineNr"> 9242 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9243" class="Folded"> 9243 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9249" class="LineNr"> 9249 </span>    <span class="subxComment"># check output</span>
+<span id="L9250" class="LineNr"> 9250 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;ff 0/subop/increment %eax&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-primitive-register&quot;</span>)
+<span id="L9251" class="LineNr"> 9251 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9252" class="LineNr"> 9252 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9253" class="LineNr"> 9253 </span>    5d/pop-to-ebp
+<span id="L9254" class="LineNr"> 9254 </span>    c3/return
+<span id="L9255" class="LineNr"> 9255 </span>
+<span id="L9256" class="LineNr"> 9256 </span><span class="subxTest">test-emit-subx-stmt-select-primitive</span>:
+<span id="L9257" class="LineNr"> 9257 </span>    <span class="subxComment"># Select the right primitive between overloads.</span>
+<span id="L9258" class="LineNr"> 9258 </span>    <span class="subxComment">#   foo &lt;- increment</span>
+<span id="L9259" class="LineNr"> 9259 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9260" class="LineNr"> 9260 </span>    <span class="subxComment">#   ff 0/subop/increment %eax  # sub-optimal, but should suffice</span>
+<span id="L9261" class="LineNr"> 9261 </span>    <span class="subxComment">#</span>
+<span id="L9262" class="LineNr"> 9262 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
+<span id="L9263" class="LineNr"> 9263 </span>    <span class="subxComment">#   name: 'foo'</span>
+<span id="L9264" class="LineNr"> 9264 </span>    <span class="subxComment">#   type: int</span>
+<span id="L9265" class="LineNr"> 9265 </span>    <span class="subxComment">#   register: 'eax'</span>
+<span id="L9266" class="LineNr"> 9266 </span>    <span class="subxComment">#</span>
+<span id="L9267" class="LineNr"> 9267 </span>    <span class="subxComment"># There's two primitives, as follows:</span>
+<span id="L9268" class="LineNr"> 9268 </span>    <span class="subxComment">#   - name: 'increment'</span>
+<span id="L9269" class="LineNr"> 9269 </span>    <span class="subxComment">#     out: int/reg</span>
+<span id="L9270" class="LineNr"> 9270 </span>    <span class="subxComment">#     value: 'ff 0/subop/increment'</span>
+<span id="L9271" class="LineNr"> 9271 </span>    <span class="subxComment">#   - name: 'increment'</span>
+<span id="L9272" class="LineNr"> 9272 </span>    <span class="subxComment">#     inout: int/mem</span>
+<span id="L9273" class="LineNr"> 9273 </span>    <span class="subxComment">#     value: 'ff 0/subop/increment'</span>
+<span id="L9274" class="LineNr"> 9274 </span>    <span class="subxComment">#</span>
+<span id="L9275" class="LineNr"> 9275 </span>    <span class="subxComment"># There's nothing in functions.</span>
+<span id="L9276" class="LineNr"> 9276 </span>    <span class="subxComment">#</span>
+<span id="L9277" class="LineNr"> 9277 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9278" class="LineNr"> 9278 </span>    55/push-ebp
+<span id="L9279" class="LineNr"> 9279 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9280" class="LineNr"> 9280 </span>    <span class="subxComment"># setup</span>
+<span id="L9281" class="LineNr"> 9281 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9282" class="LineNr"> 9282 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9283" class="LineNr"> 9283 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9284" class="LineNr"> 9284 </span>    68/push 0/imm32/right/null
+<span id="L9285" class="LineNr"> 9285 </span>    68/push 1/imm32/left/int
+<span id="L9286" class="LineNr"> 9286 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9287" class="LineNr"> 9287 </span>    <span class="subxComment"># var var-foo/ecx: var in eax</span>
+<span id="L9288" class="LineNr"> 9288 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L9289" class="LineNr"> 9289 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9290" class="LineNr"> 9290 </span>    68/push 1/imm32/block-depth
+<span id="L9291" class="LineNr"> 9291 </span>    51/push-ecx
+<span id="L9292" class="LineNr"> 9292 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
+<span id="L9293" class="LineNr"> 9293 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9294" class="LineNr"> 9294 </span>    <span class="subxComment"># var real-outputs/edi: (handle stmt-var)</span>
+<span id="L9295" class="LineNr"> 9295 </span>    68/push 0/imm32/is-deref:false
+<span id="L9296" class="LineNr"> 9296 </span>    68/push 0/imm32/next
+<span id="L9297" class="LineNr"> 9297 </span>    51/push-ecx/var-foo
+<span id="L9298" class="LineNr"> 9298 </span>    89/&lt;- %edi 4/r32/esp
+<span id="L9299" class="LineNr"> 9299 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9300" class="LineNr"> 9300 </span>    68/push 0/imm32/next
+<span id="L9301" class="LineNr"> 9301 </span>    57/push-edi/outputs
+<span id="L9302" class="LineNr"> 9302 </span>    68/push 0/imm32/inouts
+<span id="L9303" class="LineNr"> 9303 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
+<span id="L9304" class="LineNr"> 9304 </span>    68/push 1/imm32
+<span id="L9305" class="LineNr"> 9305 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9306" class="LineNr"> 9306 </span>    <span class="subxComment"># var formal-var/ebx: var in any register</span>
+<span id="L9307" class="LineNr"> 9307 </span>    68/push <span class="SpecialChar"><a href='mu.subx.html#L339'>Any-register</a></span>/imm32
+<span id="L9308" class="LineNr"> 9308 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9309" class="LineNr"> 9309 </span>    68/push 1/imm32/block-depth
+<span id="L9310" class="LineNr"> 9310 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
+<span id="L9311" class="LineNr"> 9311 </span>    68/push <span class="Constant">&quot;dummy&quot;</span>/imm32
+<span id="L9312" class="LineNr"> 9312 </span>    89/&lt;- %ebx 4/r32/esp
+<span id="L9313" class="LineNr"> 9313 </span>    <span class="subxComment"># var formal-outputs/ebx: (handle stmt-var)</span>
+<span id="L9314" class="LineNr"> 9314 </span>    68/push 0/imm32/is-deref:false
+<span id="L9315" class="LineNr"> 9315 </span>    68/push 0/imm32/next
+<span id="L9316" class="LineNr"> 9316 </span>    53/push-ebx/formal-var
+<span id="L9317" class="LineNr"> 9317 </span>    89/&lt;- %ebx 4/r32/esp
+<span id="L9318" class="LineNr"> 9318 </span>    <span class="subxComment"># var primitive1/ebx: primitive</span>
+<span id="L9319" class="LineNr"> 9319 </span>    68/push 0/imm32/next
+<span id="L9320" class="LineNr"> 9320 </span>    68/push 0/imm32/output-is-write-only
+<span id="L9321" class="LineNr"> 9321 </span>    68/push 0/imm32/no-disp32
+<span id="L9322" class="LineNr"> 9322 </span>    68/push 0/imm32/no-imm32
+<span id="L9323" class="LineNr"> 9323 </span>    68/push 0/imm32/no-r32
+<span id="L9324" class="LineNr"> 9324 </span>    68/push 3/imm32/rm32-in-first-output
+<span id="L9325" class="LineNr"> 9325 </span>    68/push <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
+<span id="L9326" class="LineNr"> 9326 </span>    53/push-ebx/outputs/formal-outputs
+<span id="L9327" class="LineNr"> 9327 </span>    68/push 0/imm32/inouts
+<span id="L9328" class="LineNr"> 9328 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/name
 <span id="L9329" class="LineNr"> 9329 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9330" class="LineNr"> 9330 </span>    <span class="subxComment"># var primitive1/ebx: primitive</span>
-<span id="L9331" class="LineNr"> 9331 </span>    68/push 0/imm32/next
+<span id="L9330" class="LineNr"> 9330 </span>    <span class="subxComment"># var primitives/ebx: primitive</span>
+<span id="L9331" class="LineNr"> 9331 </span>    53/push-ebx/next
 <span id="L9332" class="LineNr"> 9332 </span>    68/push 0/imm32/output-is-write-only
 <span id="L9333" class="LineNr"> 9333 </span>    68/push 0/imm32/no-disp32
 <span id="L9334" class="LineNr"> 9334 </span>    68/push 0/imm32/no-imm32
 <span id="L9335" class="LineNr"> 9335 </span>    68/push 0/imm32/no-r32
-<span id="L9336" class="LineNr"> 9336 </span>    68/push 3/imm32/rm32-in-first-output
+<span id="L9336" class="LineNr"> 9336 </span>    68/push 1/imm32/rm32-is-first-inout
 <span id="L9337" class="LineNr"> 9337 </span>    68/push <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
-<span id="L9338" class="LineNr"> 9338 </span>    53/push-ebx/outputs/formal-outputs
-<span id="L9339" class="LineNr"> 9339 </span>    68/push 0/imm32/inouts
+<span id="L9338" class="LineNr"> 9338 </span>    68/push 0/imm32/outputs
+<span id="L9339" class="LineNr"> 9339 </span>    57/push-edi/inouts/real-outputs  <span class="subxComment"># hack; in practice we won't have the same var in function definition and call</span>
 <span id="L9340" class="LineNr"> 9340 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/name
 <span id="L9341" class="LineNr"> 9341 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9342" class="LineNr"> 9342 </span>    <span class="subxComment"># var primitives/ebx: primitive</span>
-<span id="L9343" class="LineNr"> 9343 </span>    53/push-ebx/next
-<span id="L9344" class="LineNr"> 9344 </span>    68/push 0/imm32/output-is-write-only
-<span id="L9345" class="LineNr"> 9345 </span>    68/push 0/imm32/no-disp32
-<span id="L9346" class="LineNr"> 9346 </span>    68/push 0/imm32/no-imm32
-<span id="L9347" class="LineNr"> 9347 </span>    68/push 0/imm32/no-r32
-<span id="L9348" class="LineNr"> 9348 </span>    68/push 1/imm32/rm32-is-first-inout
-<span id="L9349" class="LineNr"> 9349 </span>    68/push <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
-<span id="L9350" class="LineNr"> 9350 </span>    68/push 0/imm32/outputs
-<span id="L9351" class="LineNr"> 9351 </span>    57/push-edi/inouts/real-outputs  <span class="subxComment"># hack; in practice we won't have the same var in function definition and call</span>
-<span id="L9352" class="LineNr"> 9352 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L9353" class="LineNr"> 9353 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9354" class="LineNr"> 9354 </span>    <span class="subxComment"># convert</span>
-<span id="L9355" class="LineNr"> 9355 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9356" class="LineNr"> 9356 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi %ebx 0)
-<span id="L9357" class="LineNr"> 9357 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9358" class="Folded"> 9358 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9364" class="LineNr"> 9364 </span>    <span class="subxComment"># check output</span>
-<span id="L9365" class="LineNr"> 9365 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;ff 0/subop/increment %eax&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-select-primitive&quot;</span>)
-<span id="L9366" class="LineNr"> 9366 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9367" class="LineNr"> 9367 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9368" class="LineNr"> 9368 </span>    5d/pop-to-ebp
-<span id="L9369" class="LineNr"> 9369 </span>    c3/return
-<span id="L9370" class="LineNr"> 9370 </span>
-<span id="L9371" class="LineNr"> 9371 </span><span class="subxTest">test-emit-subx-stmt-select-primitive-2</span>:
-<span id="L9372" class="LineNr"> 9372 </span>    <span class="subxComment"># Select the right primitive between overloads.</span>
-<span id="L9373" class="LineNr"> 9373 </span>    <span class="subxComment">#   foo &lt;- increment</span>
-<span id="L9374" class="LineNr"> 9374 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9375" class="LineNr"> 9375 </span>    <span class="subxComment">#   ff 0/subop/increment %eax  # sub-optimal, but should suffice</span>
-<span id="L9376" class="LineNr"> 9376 </span>    <span class="subxComment">#</span>
-<span id="L9377" class="LineNr"> 9377 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
-<span id="L9378" class="LineNr"> 9378 </span>    <span class="subxComment">#   name: 'foo'</span>
-<span id="L9379" class="LineNr"> 9379 </span>    <span class="subxComment">#   type: int</span>
-<span id="L9380" class="LineNr"> 9380 </span>    <span class="subxComment">#   register: 'eax'</span>
-<span id="L9381" class="LineNr"> 9381 </span>    <span class="subxComment">#</span>
-<span id="L9382" class="LineNr"> 9382 </span>    <span class="subxComment"># There's two primitives, as follows:</span>
-<span id="L9383" class="LineNr"> 9383 </span>    <span class="subxComment">#   - name: 'increment'</span>
-<span id="L9384" class="LineNr"> 9384 </span>    <span class="subxComment">#     out: int/reg</span>
-<span id="L9385" class="LineNr"> 9385 </span>    <span class="subxComment">#     value: 'ff 0/subop/increment'</span>
-<span id="L9386" class="LineNr"> 9386 </span>    <span class="subxComment">#   - name: 'increment'</span>
-<span id="L9387" class="LineNr"> 9387 </span>    <span class="subxComment">#     inout: int/mem</span>
-<span id="L9388" class="LineNr"> 9388 </span>    <span class="subxComment">#     value: 'ff 0/subop/increment'</span>
-<span id="L9389" class="LineNr"> 9389 </span>    <span class="subxComment">#</span>
-<span id="L9390" class="LineNr"> 9390 </span>    <span class="subxComment"># There's nothing in functions.</span>
-<span id="L9391" class="LineNr"> 9391 </span>    <span class="subxComment">#</span>
-<span id="L9392" class="LineNr"> 9392 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9393" class="LineNr"> 9393 </span>    55/push-ebp
-<span id="L9394" class="LineNr"> 9394 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9395" class="LineNr"> 9395 </span>    <span class="subxComment"># setup</span>
-<span id="L9396" class="LineNr"> 9396 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9397" class="LineNr"> 9397 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9398" class="LineNr"> 9398 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9399" class="LineNr"> 9399 </span>    68/push 0/imm32/right/null
-<span id="L9400" class="LineNr"> 9400 </span>    68/push 1/imm32/left/int
-<span id="L9401" class="LineNr"> 9401 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9402" class="LineNr"> 9402 </span>    <span class="subxComment"># var var-foo/ecx: var in eax</span>
-<span id="L9403" class="LineNr"> 9403 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
-<span id="L9404" class="LineNr"> 9404 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9405" class="LineNr"> 9405 </span>    68/push 1/imm32/block-depth
-<span id="L9406" class="LineNr"> 9406 </span>    51/push-ecx
-<span id="L9407" class="LineNr"> 9407 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
-<span id="L9408" class="LineNr"> 9408 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9409" class="LineNr"> 9409 </span>    <span class="subxComment"># var inouts/edi: (handle stmt-var)</span>
-<span id="L9410" class="LineNr"> 9410 </span>    68/push 0/imm32/is-deref:false
-<span id="L9411" class="LineNr"> 9411 </span>    68/push 0/imm32/next
-<span id="L9412" class="LineNr"> 9412 </span>    51/push-ecx/var-foo
-<span id="L9413" class="LineNr"> 9413 </span>    89/&lt;- %edi 4/r32/esp
-<span id="L9414" class="LineNr"> 9414 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9415" class="LineNr"> 9415 </span>    68/push 0/imm32/next
-<span id="L9416" class="LineNr"> 9416 </span>    68/push 0/imm32/outputs
-<span id="L9417" class="LineNr"> 9417 </span>    57/push-edi/inouts
-<span id="L9418" class="LineNr"> 9418 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
-<span id="L9419" class="LineNr"> 9419 </span>    68/push 1/imm32
-<span id="L9420" class="LineNr"> 9420 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9421" class="LineNr"> 9421 </span>    <span class="subxComment"># var formal-var/ebx: var in any register</span>
-<span id="L9422" class="LineNr"> 9422 </span>    68/push <span class="SpecialChar"><a href='mu.subx.html#L339'>Any-register</a></span>/imm32
-<span id="L9423" class="LineNr"> 9423 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9424" class="LineNr"> 9424 </span>    68/push 1/imm32/block-depth
-<span id="L9425" class="LineNr"> 9425 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
-<span id="L9426" class="LineNr"> 9426 </span>    68/push <span class="Constant">&quot;dummy&quot;</span>/imm32
-<span id="L9427" class="LineNr"> 9427 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9428" class="LineNr"> 9428 </span>    <span class="subxComment"># var operand/ebx: (handle stmt-var)</span>
-<span id="L9429" class="LineNr"> 9429 </span>    68/push 0/imm32/is-deref:false
-<span id="L9430" class="LineNr"> 9430 </span>    68/push 0/imm32/next
-<span id="L9431" class="LineNr"> 9431 </span>    53/push-ebx/formal-var
+<span id="L9342" class="LineNr"> 9342 </span>    <span class="subxComment"># convert</span>
+<span id="L9343" class="LineNr"> 9343 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9344" class="LineNr"> 9344 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi %ebx 0)
+<span id="L9345" class="LineNr"> 9345 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9346" class="Folded"> 9346 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9352" class="LineNr"> 9352 </span>    <span class="subxComment"># check output</span>
+<span id="L9353" class="LineNr"> 9353 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;ff 0/subop/increment %eax&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-select-primitive&quot;</span>)
+<span id="L9354" class="LineNr"> 9354 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9355" class="LineNr"> 9355 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9356" class="LineNr"> 9356 </span>    5d/pop-to-ebp
+<span id="L9357" class="LineNr"> 9357 </span>    c3/return
+<span id="L9358" class="LineNr"> 9358 </span>
+<span id="L9359" class="LineNr"> 9359 </span><span class="subxTest">test-emit-subx-stmt-select-primitive-2</span>:
+<span id="L9360" class="LineNr"> 9360 </span>    <span class="subxComment"># Select the right primitive between overloads.</span>
+<span id="L9361" class="LineNr"> 9361 </span>    <span class="subxComment">#   foo &lt;- increment</span>
+<span id="L9362" class="LineNr"> 9362 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9363" class="LineNr"> 9363 </span>    <span class="subxComment">#   ff 0/subop/increment %eax  # sub-optimal, but should suffice</span>
+<span id="L9364" class="LineNr"> 9364 </span>    <span class="subxComment">#</span>
+<span id="L9365" class="LineNr"> 9365 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
+<span id="L9366" class="LineNr"> 9366 </span>    <span class="subxComment">#   name: 'foo'</span>
+<span id="L9367" class="LineNr"> 9367 </span>    <span class="subxComment">#   type: int</span>
+<span id="L9368" class="LineNr"> 9368 </span>    <span class="subxComment">#   register: 'eax'</span>
+<span id="L9369" class="LineNr"> 9369 </span>    <span class="subxComment">#</span>
+<span id="L9370" class="LineNr"> 9370 </span>    <span class="subxComment"># There's two primitives, as follows:</span>
+<span id="L9371" class="LineNr"> 9371 </span>    <span class="subxComment">#   - name: 'increment'</span>
+<span id="L9372" class="LineNr"> 9372 </span>    <span class="subxComment">#     out: int/reg</span>
+<span id="L9373" class="LineNr"> 9373 </span>    <span class="subxComment">#     value: 'ff 0/subop/increment'</span>
+<span id="L9374" class="LineNr"> 9374 </span>    <span class="subxComment">#   - name: 'increment'</span>
+<span id="L9375" class="LineNr"> 9375 </span>    <span class="subxComment">#     inout: int/mem</span>
+<span id="L9376" class="LineNr"> 9376 </span>    <span class="subxComment">#     value: 'ff 0/subop/increment'</span>
+<span id="L9377" class="LineNr"> 9377 </span>    <span class="subxComment">#</span>
+<span id="L9378" class="LineNr"> 9378 </span>    <span class="subxComment"># There's nothing in functions.</span>
+<span id="L9379" class="LineNr"> 9379 </span>    <span class="subxComment">#</span>
+<span id="L9380" class="LineNr"> 9380 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9381" class="LineNr"> 9381 </span>    55/push-ebp
+<span id="L9382" class="LineNr"> 9382 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9383" class="LineNr"> 9383 </span>    <span class="subxComment"># setup</span>
+<span id="L9384" class="LineNr"> 9384 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9385" class="LineNr"> 9385 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9386" class="LineNr"> 9386 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9387" class="LineNr"> 9387 </span>    68/push 0/imm32/right/null
+<span id="L9388" class="LineNr"> 9388 </span>    68/push 1/imm32/left/int
+<span id="L9389" class="LineNr"> 9389 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9390" class="LineNr"> 9390 </span>    <span class="subxComment"># var var-foo/ecx: var in eax</span>
+<span id="L9391" class="LineNr"> 9391 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L9392" class="LineNr"> 9392 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9393" class="LineNr"> 9393 </span>    68/push 1/imm32/block-depth
+<span id="L9394" class="LineNr"> 9394 </span>    51/push-ecx
+<span id="L9395" class="LineNr"> 9395 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
+<span id="L9396" class="LineNr"> 9396 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9397" class="LineNr"> 9397 </span>    <span class="subxComment"># var inouts/edi: (handle stmt-var)</span>
+<span id="L9398" class="LineNr"> 9398 </span>    68/push 0/imm32/is-deref:false
+<span id="L9399" class="LineNr"> 9399 </span>    68/push 0/imm32/next
+<span id="L9400" class="LineNr"> 9400 </span>    51/push-ecx/var-foo
+<span id="L9401" class="LineNr"> 9401 </span>    89/&lt;- %edi 4/r32/esp
+<span id="L9402" class="LineNr"> 9402 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9403" class="LineNr"> 9403 </span>    68/push 0/imm32/next
+<span id="L9404" class="LineNr"> 9404 </span>    68/push 0/imm32/outputs
+<span id="L9405" class="LineNr"> 9405 </span>    57/push-edi/inouts
+<span id="L9406" class="LineNr"> 9406 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
+<span id="L9407" class="LineNr"> 9407 </span>    68/push 1/imm32
+<span id="L9408" class="LineNr"> 9408 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9409" class="LineNr"> 9409 </span>    <span class="subxComment"># var formal-var/ebx: var in any register</span>
+<span id="L9410" class="LineNr"> 9410 </span>    68/push <span class="SpecialChar"><a href='mu.subx.html#L339'>Any-register</a></span>/imm32
+<span id="L9411" class="LineNr"> 9411 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9412" class="LineNr"> 9412 </span>    68/push 1/imm32/block-depth
+<span id="L9413" class="LineNr"> 9413 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
+<span id="L9414" class="LineNr"> 9414 </span>    68/push <span class="Constant">&quot;dummy&quot;</span>/imm32
+<span id="L9415" class="LineNr"> 9415 </span>    89/&lt;- %ebx 4/r32/esp
+<span id="L9416" class="LineNr"> 9416 </span>    <span class="subxComment"># var operand/ebx: (handle stmt-var)</span>
+<span id="L9417" class="LineNr"> 9417 </span>    68/push 0/imm32/is-deref:false
+<span id="L9418" class="LineNr"> 9418 </span>    68/push 0/imm32/next
+<span id="L9419" class="LineNr"> 9419 </span>    53/push-ebx/formal-var
+<span id="L9420" class="LineNr"> 9420 </span>    89/&lt;- %ebx 4/r32/esp
+<span id="L9421" class="LineNr"> 9421 </span>    <span class="subxComment"># var primitive1/ebx: primitive</span>
+<span id="L9422" class="LineNr"> 9422 </span>    68/push 0/imm32/next
+<span id="L9423" class="LineNr"> 9423 </span>    68/push 0/imm32/output-is-write-only
+<span id="L9424" class="LineNr"> 9424 </span>    68/push 0/imm32/no-disp32
+<span id="L9425" class="LineNr"> 9425 </span>    68/push 0/imm32/no-imm32
+<span id="L9426" class="LineNr"> 9426 </span>    68/push 0/imm32/no-r32
+<span id="L9427" class="LineNr"> 9427 </span>    68/push 3/imm32/rm32-in-first-output
+<span id="L9428" class="LineNr"> 9428 </span>    68/push <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
+<span id="L9429" class="LineNr"> 9429 </span>    53/push-ebx/outputs/formal-outputs
+<span id="L9430" class="LineNr"> 9430 </span>    68/push 0/imm32/inouts
+<span id="L9431" class="LineNr"> 9431 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/name
 <span id="L9432" class="LineNr"> 9432 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9433" class="LineNr"> 9433 </span>    <span class="subxComment"># var primitive1/ebx: primitive</span>
-<span id="L9434" class="LineNr"> 9434 </span>    68/push 0/imm32/next
+<span id="L9433" class="LineNr"> 9433 </span>    <span class="subxComment"># var primitives/ebx: primitive</span>
+<span id="L9434" class="LineNr"> 9434 </span>    53/push-ebx/next
 <span id="L9435" class="LineNr"> 9435 </span>    68/push 0/imm32/output-is-write-only
 <span id="L9436" class="LineNr"> 9436 </span>    68/push 0/imm32/no-disp32
 <span id="L9437" class="LineNr"> 9437 </span>    68/push 0/imm32/no-imm32
 <span id="L9438" class="LineNr"> 9438 </span>    68/push 0/imm32/no-r32
-<span id="L9439" class="LineNr"> 9439 </span>    68/push 3/imm32/rm32-in-first-output
+<span id="L9439" class="LineNr"> 9439 </span>    68/push 1/imm32/rm32-is-first-inout
 <span id="L9440" class="LineNr"> 9440 </span>    68/push <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
-<span id="L9441" class="LineNr"> 9441 </span>    53/push-ebx/outputs/formal-outputs
-<span id="L9442" class="LineNr"> 9442 </span>    68/push 0/imm32/inouts
+<span id="L9441" class="LineNr"> 9441 </span>    68/push 0/imm32/outputs
+<span id="L9442" class="LineNr"> 9442 </span>    57/push-edi/inouts/real-outputs  <span class="subxComment"># hack; in practice we won't have the same var in function definition and call</span>
 <span id="L9443" class="LineNr"> 9443 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/name
 <span id="L9444" class="LineNr"> 9444 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9445" class="LineNr"> 9445 </span>    <span class="subxComment"># var primitives/ebx: primitive</span>
-<span id="L9446" class="LineNr"> 9446 </span>    53/push-ebx/next
-<span id="L9447" class="LineNr"> 9447 </span>    68/push 0/imm32/output-is-write-only
-<span id="L9448" class="LineNr"> 9448 </span>    68/push 0/imm32/no-disp32
-<span id="L9449" class="LineNr"> 9449 </span>    68/push 0/imm32/no-imm32
-<span id="L9450" class="LineNr"> 9450 </span>    68/push 0/imm32/no-r32
-<span id="L9451" class="LineNr"> 9451 </span>    68/push 1/imm32/rm32-is-first-inout
-<span id="L9452" class="LineNr"> 9452 </span>    68/push <span class="Constant">&quot;ff 0/subop/increment&quot;</span>/imm32/subx-name
-<span id="L9453" class="LineNr"> 9453 </span>    68/push 0/imm32/outputs
-<span id="L9454" class="LineNr"> 9454 </span>    57/push-edi/inouts/real-outputs  <span class="subxComment"># hack; in practice we won't have the same var in function definition and call</span>
-<span id="L9455" class="LineNr"> 9455 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/name
-<span id="L9456" class="LineNr"> 9456 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L9457" class="LineNr"> 9457 </span>    <span class="subxComment"># convert</span>
-<span id="L9458" class="LineNr"> 9458 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9459" class="LineNr"> 9459 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi %ebx 0)
-<span id="L9460" class="LineNr"> 9460 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9461" class="Folded"> 9461 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9467" class="LineNr"> 9467 </span>    <span class="subxComment"># check output</span>
-<span id="L9468" class="LineNr"> 9468 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;ff 0/subop/increment %eax&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-select-primitive-2&quot;</span>)
-<span id="L9469" class="LineNr"> 9469 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9470" class="LineNr"> 9470 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9471" class="LineNr"> 9471 </span>    5d/pop-to-ebp
-<span id="L9472" class="LineNr"> 9472 </span>    c3/return
-<span id="L9473" class="LineNr"> 9473 </span>
-<span id="L9474" class="LineNr"> 9474 </span><span class="subxTest">test-increment-register</span>:
-<span id="L9475" class="LineNr"> 9475 </span>    <span class="subxComment"># Select the right register between overloads.</span>
-<span id="L9476" class="LineNr"> 9476 </span>    <span class="subxComment">#   foo &lt;- increment</span>
-<span id="L9477" class="LineNr"> 9477 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9478" class="LineNr"> 9478 </span>    <span class="subxComment">#   50/increment-eax</span>
-<span id="L9479" class="LineNr"> 9479 </span>    <span class="subxComment">#</span>
-<span id="L9480" class="LineNr"> 9480 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
-<span id="L9481" class="LineNr"> 9481 </span>    <span class="subxComment">#   name: 'foo'</span>
-<span id="L9482" class="LineNr"> 9482 </span>    <span class="subxComment">#   type: int</span>
-<span id="L9483" class="LineNr"> 9483 </span>    <span class="subxComment">#   register: 'eax'</span>
-<span id="L9484" class="LineNr"> 9484 </span>    <span class="subxComment">#</span>
-<span id="L9485" class="LineNr"> 9485 </span>    <span class="subxComment"># Primitives are the global definitions.</span>
-<span id="L9486" class="LineNr"> 9486 </span>    <span class="subxComment">#</span>
-<span id="L9487" class="LineNr"> 9487 </span>    <span class="subxComment"># There are no functions defined.</span>
-<span id="L9488" class="LineNr"> 9488 </span>    <span class="subxComment">#</span>
-<span id="L9489" class="LineNr"> 9489 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9490" class="LineNr"> 9490 </span>    55/push-ebp
-<span id="L9491" class="LineNr"> 9491 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9492" class="LineNr"> 9492 </span>    <span class="subxComment"># setup</span>
-<span id="L9493" class="LineNr"> 9493 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9494" class="LineNr"> 9494 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9495" class="LineNr"> 9495 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9496" class="LineNr"> 9496 </span>    68/push 0/imm32/right/null
-<span id="L9497" class="LineNr"> 9497 </span>    68/push 1/imm32/left/int
-<span id="L9498" class="LineNr"> 9498 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9499" class="LineNr"> 9499 </span>    <span class="subxComment"># var var-foo/ecx: var in eax</span>
-<span id="L9500" class="LineNr"> 9500 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
-<span id="L9501" class="LineNr"> 9501 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9502" class="LineNr"> 9502 </span>    68/push 1/imm32/block-depth
-<span id="L9503" class="LineNr"> 9503 </span>    51/push-ecx
-<span id="L9504" class="LineNr"> 9504 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
-<span id="L9505" class="LineNr"> 9505 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9506" class="LineNr"> 9506 </span>    <span class="subxComment"># var real-outputs/edi: (handle stmt-var)</span>
-<span id="L9507" class="LineNr"> 9507 </span>    68/push 0/imm32/is-deref:false
-<span id="L9508" class="LineNr"> 9508 </span>    68/push 0/imm32/next
-<span id="L9509" class="LineNr"> 9509 </span>    51/push-ecx/var-foo
-<span id="L9510" class="LineNr"> 9510 </span>    89/&lt;- %edi 4/r32/esp
-<span id="L9511" class="LineNr"> 9511 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9512" class="LineNr"> 9512 </span>    68/push 0/imm32/next
-<span id="L9513" class="LineNr"> 9513 </span>    57/push-edi/outputs
-<span id="L9514" class="LineNr"> 9514 </span>    68/push 0/imm32/inouts
-<span id="L9515" class="LineNr"> 9515 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
-<span id="L9516" class="LineNr"> 9516 </span>    68/push 1/imm32/regular-stmt
-<span id="L9517" class="LineNr"> 9517 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9518" class="LineNr"> 9518 </span>    <span class="subxComment"># convert</span>
-<span id="L9519" class="LineNr"> 9519 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9520" class="LineNr"> 9520 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L9521" class="LineNr"> 9521 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9522" class="Folded"> 9522 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9528" class="LineNr"> 9528 </span>    <span class="subxComment"># check output</span>
-<span id="L9529" class="LineNr"> 9529 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;40/increment-eax&quot;</span> <span class="Constant">&quot;F - test-increment-register&quot;</span>)
-<span id="L9530" class="LineNr"> 9530 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9531" class="LineNr"> 9531 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9532" class="LineNr"> 9532 </span>    5d/pop-to-ebp
-<span id="L9533" class="LineNr"> 9533 </span>    c3/return
-<span id="L9534" class="LineNr"> 9534 </span>
-<span id="L9535" class="LineNr"> 9535 </span><span class="subxTest">test-increment-var</span>:
-<span id="L9536" class="LineNr"> 9536 </span>    <span class="subxComment"># Select the right primitive between overloads.</span>
-<span id="L9537" class="LineNr"> 9537 </span>    <span class="subxComment">#   foo &lt;- increment</span>
-<span id="L9538" class="LineNr"> 9538 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9539" class="LineNr"> 9539 </span>    <span class="subxComment">#   ff 0/subop/increment %eax  # sub-optimal, but should suffice</span>
-<span id="L9540" class="LineNr"> 9540 </span>    <span class="subxComment">#</span>
-<span id="L9541" class="LineNr"> 9541 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
-<span id="L9542" class="LineNr"> 9542 </span>    <span class="subxComment">#   name: 'foo'</span>
-<span id="L9543" class="LineNr"> 9543 </span>    <span class="subxComment">#   type: int</span>
-<span id="L9544" class="LineNr"> 9544 </span>    <span class="subxComment">#   register: 'eax'</span>
-<span id="L9545" class="LineNr"> 9545 </span>    <span class="subxComment">#</span>
-<span id="L9546" class="LineNr"> 9546 </span>    <span class="subxComment"># Primitives are the global definitions.</span>
-<span id="L9547" class="LineNr"> 9547 </span>    <span class="subxComment">#</span>
-<span id="L9548" class="LineNr"> 9548 </span>    <span class="subxComment"># There are no functions defined.</span>
-<span id="L9549" class="LineNr"> 9549 </span>    <span class="subxComment">#</span>
-<span id="L9550" class="LineNr"> 9550 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9551" class="LineNr"> 9551 </span>    55/push-ebp
-<span id="L9552" class="LineNr"> 9552 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9553" class="LineNr"> 9553 </span>    <span class="subxComment"># setup</span>
-<span id="L9554" class="LineNr"> 9554 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9555" class="LineNr"> 9555 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9556" class="LineNr"> 9556 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9557" class="LineNr"> 9557 </span>    68/push 0/imm32/right/null
-<span id="L9558" class="LineNr"> 9558 </span>    68/push 1/imm32/left/int
-<span id="L9559" class="LineNr"> 9559 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9560" class="LineNr"> 9560 </span>    <span class="subxComment"># var var-foo/ecx: var in eax</span>
-<span id="L9561" class="LineNr"> 9561 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
-<span id="L9562" class="LineNr"> 9562 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9563" class="LineNr"> 9563 </span>    68/push 1/imm32/block-depth
-<span id="L9564" class="LineNr"> 9564 </span>    51/push-ecx
-<span id="L9565" class="LineNr"> 9565 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
-<span id="L9566" class="LineNr"> 9566 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9567" class="LineNr"> 9567 </span>    <span class="subxComment"># var inouts/edi: (handle stmt-var)</span>
-<span id="L9568" class="LineNr"> 9568 </span>    68/push 0/imm32/is-deref:false
-<span id="L9569" class="LineNr"> 9569 </span>    68/push 0/imm32/next
-<span id="L9570" class="LineNr"> 9570 </span>    51/push-ecx/var-foo
-<span id="L9571" class="LineNr"> 9571 </span>    89/&lt;- %edi 4/r32/esp
-<span id="L9572" class="LineNr"> 9572 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9573" class="LineNr"> 9573 </span>    68/push 0/imm32/next
-<span id="L9574" class="LineNr"> 9574 </span>    57/push-edi/outputs
-<span id="L9575" class="LineNr"> 9575 </span>    68/push 0/imm32/inouts
-<span id="L9576" class="LineNr"> 9576 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
-<span id="L9577" class="LineNr"> 9577 </span>    68/push 1/imm32
-<span id="L9578" class="LineNr"> 9578 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9579" class="LineNr"> 9579 </span>    <span class="subxComment"># convert</span>
-<span id="L9580" class="LineNr"> 9580 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9581" class="LineNr"> 9581 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L9582" class="LineNr"> 9582 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9583" class="Folded"> 9583 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9589" class="LineNr"> 9589 </span>    <span class="subxComment"># check output</span>
-<span id="L9590" class="LineNr"> 9590 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;40/increment-eax&quot;</span> <span class="Constant">&quot;F - test-increment-var&quot;</span>)
-<span id="L9591" class="LineNr"> 9591 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9592" class="LineNr"> 9592 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9593" class="LineNr"> 9593 </span>    5d/pop-to-ebp
-<span id="L9594" class="LineNr"> 9594 </span>    c3/return
-<span id="L9595" class="LineNr"> 9595 </span>
-<span id="L9596" class="LineNr"> 9596 </span><span class="subxTest">test-add-reg-to-reg</span>:
-<span id="L9597" class="LineNr"> 9597 </span>    <span class="subxComment">#   var1/reg &lt;- add var2/reg</span>
-<span id="L9598" class="LineNr"> 9598 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9599" class="LineNr"> 9599 </span>    <span class="subxComment">#   01/add %var1 var2</span>
-<span id="L9600" class="LineNr"> 9600 </span>    <span class="subxComment">#</span>
-<span id="L9601" class="LineNr"> 9601 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9602" class="LineNr"> 9602 </span>    55/push-ebp
-<span id="L9603" class="LineNr"> 9603 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9604" class="LineNr"> 9604 </span>    <span class="subxComment"># setup</span>
-<span id="L9605" class="LineNr"> 9605 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9606" class="LineNr"> 9606 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9607" class="LineNr"> 9607 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9608" class="LineNr"> 9608 </span>    68/push 0/imm32/right/null
-<span id="L9609" class="LineNr"> 9609 </span>    68/push 1/imm32/left/int
-<span id="L9610" class="LineNr"> 9610 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9611" class="LineNr"> 9611 </span>    <span class="subxComment"># var var-var1/ecx: var in eax</span>
-<span id="L9612" class="LineNr"> 9612 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
-<span id="L9613" class="LineNr"> 9613 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9614" class="LineNr"> 9614 </span>    68/push 1/imm32/block-depth
-<span id="L9615" class="LineNr"> 9615 </span>    51/push-ecx
-<span id="L9616" class="LineNr"> 9616 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
-<span id="L9617" class="LineNr"> 9617 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9618" class="LineNr"> 9618 </span>    <span class="subxComment"># var var-var2/edx: var in ecx</span>
-<span id="L9619" class="LineNr"> 9619 </span>    68/push <span class="Constant">&quot;ecx&quot;</span>/imm32/register
-<span id="L9620" class="LineNr"> 9620 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9621" class="LineNr"> 9621 </span>    68/push 1/imm32/block-depth
-<span id="L9622" class="LineNr"> 9622 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
-<span id="L9623" class="LineNr"> 9623 </span>    68/push <span class="Constant">&quot;var2&quot;</span>/imm32
-<span id="L9624" class="LineNr"> 9624 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L9625" class="LineNr"> 9625 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
-<span id="L9626" class="LineNr"> 9626 </span>    68/push 0/imm32/is-deref:false
-<span id="L9627" class="LineNr"> 9627 </span>    68/push 0/imm32/next
-<span id="L9628" class="LineNr"> 9628 </span>    52/push-edx/var-var2
+<span id="L9445" class="LineNr"> 9445 </span>    <span class="subxComment"># convert</span>
+<span id="L9446" class="LineNr"> 9446 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9447" class="LineNr"> 9447 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi %ebx 0)
+<span id="L9448" class="LineNr"> 9448 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9449" class="Folded"> 9449 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9455" class="LineNr"> 9455 </span>    <span class="subxComment"># check output</span>
+<span id="L9456" class="LineNr"> 9456 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;ff 0/subop/increment %eax&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-select-primitive-2&quot;</span>)
+<span id="L9457" class="LineNr"> 9457 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9458" class="LineNr"> 9458 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9459" class="LineNr"> 9459 </span>    5d/pop-to-ebp
+<span id="L9460" class="LineNr"> 9460 </span>    c3/return
+<span id="L9461" class="LineNr"> 9461 </span>
+<span id="L9462" class="LineNr"> 9462 </span><span class="subxTest">test-increment-register</span>:
+<span id="L9463" class="LineNr"> 9463 </span>    <span class="subxComment"># Select the right register between overloads.</span>
+<span id="L9464" class="LineNr"> 9464 </span>    <span class="subxComment">#   foo &lt;- increment</span>
+<span id="L9465" class="LineNr"> 9465 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9466" class="LineNr"> 9466 </span>    <span class="subxComment">#   50/increment-eax</span>
+<span id="L9467" class="LineNr"> 9467 </span>    <span class="subxComment">#</span>
+<span id="L9468" class="LineNr"> 9468 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
+<span id="L9469" class="LineNr"> 9469 </span>    <span class="subxComment">#   name: 'foo'</span>
+<span id="L9470" class="LineNr"> 9470 </span>    <span class="subxComment">#   type: int</span>
+<span id="L9471" class="LineNr"> 9471 </span>    <span class="subxComment">#   register: 'eax'</span>
+<span id="L9472" class="LineNr"> 9472 </span>    <span class="subxComment">#</span>
+<span id="L9473" class="LineNr"> 9473 </span>    <span class="subxComment"># Primitives are the global definitions.</span>
+<span id="L9474" class="LineNr"> 9474 </span>    <span class="subxComment">#</span>
+<span id="L9475" class="LineNr"> 9475 </span>    <span class="subxComment"># There are no functions defined.</span>
+<span id="L9476" class="LineNr"> 9476 </span>    <span class="subxComment">#</span>
+<span id="L9477" class="LineNr"> 9477 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9478" class="LineNr"> 9478 </span>    55/push-ebp
+<span id="L9479" class="LineNr"> 9479 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9480" class="LineNr"> 9480 </span>    <span class="subxComment"># setup</span>
+<span id="L9481" class="LineNr"> 9481 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9482" class="LineNr"> 9482 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9483" class="LineNr"> 9483 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9484" class="LineNr"> 9484 </span>    68/push 0/imm32/right/null
+<span id="L9485" class="LineNr"> 9485 </span>    68/push 1/imm32/left/int
+<span id="L9486" class="LineNr"> 9486 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9487" class="LineNr"> 9487 </span>    <span class="subxComment"># var var-foo/ecx: var in eax</span>
+<span id="L9488" class="LineNr"> 9488 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L9489" class="LineNr"> 9489 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9490" class="LineNr"> 9490 </span>    68/push 1/imm32/block-depth
+<span id="L9491" class="LineNr"> 9491 </span>    51/push-ecx
+<span id="L9492" class="LineNr"> 9492 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
+<span id="L9493" class="LineNr"> 9493 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9494" class="LineNr"> 9494 </span>    <span class="subxComment"># var real-outputs/edi: (handle stmt-var)</span>
+<span id="L9495" class="LineNr"> 9495 </span>    68/push 0/imm32/is-deref:false
+<span id="L9496" class="LineNr"> 9496 </span>    68/push 0/imm32/next
+<span id="L9497" class="LineNr"> 9497 </span>    51/push-ecx/var-foo
+<span id="L9498" class="LineNr"> 9498 </span>    89/&lt;- %edi 4/r32/esp
+<span id="L9499" class="LineNr"> 9499 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9500" class="LineNr"> 9500 </span>    68/push 0/imm32/next
+<span id="L9501" class="LineNr"> 9501 </span>    57/push-edi/outputs
+<span id="L9502" class="LineNr"> 9502 </span>    68/push 0/imm32/inouts
+<span id="L9503" class="LineNr"> 9503 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
+<span id="L9504" class="LineNr"> 9504 </span>    68/push 1/imm32/regular-stmt
+<span id="L9505" class="LineNr"> 9505 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9506" class="LineNr"> 9506 </span>    <span class="subxComment"># convert</span>
+<span id="L9507" class="LineNr"> 9507 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9508" class="LineNr"> 9508 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L9509" class="LineNr"> 9509 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9510" class="Folded"> 9510 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9516" class="LineNr"> 9516 </span>    <span class="subxComment"># check output</span>
+<span id="L9517" class="LineNr"> 9517 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;40/increment-eax&quot;</span> <span class="Constant">&quot;F - test-increment-register&quot;</span>)
+<span id="L9518" class="LineNr"> 9518 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9519" class="LineNr"> 9519 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9520" class="LineNr"> 9520 </span>    5d/pop-to-ebp
+<span id="L9521" class="LineNr"> 9521 </span>    c3/return
+<span id="L9522" class="LineNr"> 9522 </span>
+<span id="L9523" class="LineNr"> 9523 </span><span class="subxTest">test-increment-var</span>:
+<span id="L9524" class="LineNr"> 9524 </span>    <span class="subxComment"># Select the right primitive between overloads.</span>
+<span id="L9525" class="LineNr"> 9525 </span>    <span class="subxComment">#   foo &lt;- increment</span>
+<span id="L9526" class="LineNr"> 9526 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9527" class="LineNr"> 9527 </span>    <span class="subxComment">#   ff 0/subop/increment %eax  # sub-optimal, but should suffice</span>
+<span id="L9528" class="LineNr"> 9528 </span>    <span class="subxComment">#</span>
+<span id="L9529" class="LineNr"> 9529 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
+<span id="L9530" class="LineNr"> 9530 </span>    <span class="subxComment">#   name: 'foo'</span>
+<span id="L9531" class="LineNr"> 9531 </span>    <span class="subxComment">#   type: int</span>
+<span id="L9532" class="LineNr"> 9532 </span>    <span class="subxComment">#   register: 'eax'</span>
+<span id="L9533" class="LineNr"> 9533 </span>    <span class="subxComment">#</span>
+<span id="L9534" class="LineNr"> 9534 </span>    <span class="subxComment"># Primitives are the global definitions.</span>
+<span id="L9535" class="LineNr"> 9535 </span>    <span class="subxComment">#</span>
+<span id="L9536" class="LineNr"> 9536 </span>    <span class="subxComment"># There are no functions defined.</span>
+<span id="L9537" class="LineNr"> 9537 </span>    <span class="subxComment">#</span>
+<span id="L9538" class="LineNr"> 9538 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9539" class="LineNr"> 9539 </span>    55/push-ebp
+<span id="L9540" class="LineNr"> 9540 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9541" class="LineNr"> 9541 </span>    <span class="subxComment"># setup</span>
+<span id="L9542" class="LineNr"> 9542 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9543" class="LineNr"> 9543 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9544" class="LineNr"> 9544 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9545" class="LineNr"> 9545 </span>    68/push 0/imm32/right/null
+<span id="L9546" class="LineNr"> 9546 </span>    68/push 1/imm32/left/int
+<span id="L9547" class="LineNr"> 9547 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9548" class="LineNr"> 9548 </span>    <span class="subxComment"># var var-foo/ecx: var in eax</span>
+<span id="L9549" class="LineNr"> 9549 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L9550" class="LineNr"> 9550 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9551" class="LineNr"> 9551 </span>    68/push 1/imm32/block-depth
+<span id="L9552" class="LineNr"> 9552 </span>    51/push-ecx
+<span id="L9553" class="LineNr"> 9553 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
+<span id="L9554" class="LineNr"> 9554 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9555" class="LineNr"> 9555 </span>    <span class="subxComment"># var inouts/edi: (handle stmt-var)</span>
+<span id="L9556" class="LineNr"> 9556 </span>    68/push 0/imm32/is-deref:false
+<span id="L9557" class="LineNr"> 9557 </span>    68/push 0/imm32/next
+<span id="L9558" class="LineNr"> 9558 </span>    51/push-ecx/var-foo
+<span id="L9559" class="LineNr"> 9559 </span>    89/&lt;- %edi 4/r32/esp
+<span id="L9560" class="LineNr"> 9560 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9561" class="LineNr"> 9561 </span>    68/push 0/imm32/next
+<span id="L9562" class="LineNr"> 9562 </span>    57/push-edi/outputs
+<span id="L9563" class="LineNr"> 9563 </span>    68/push 0/imm32/inouts
+<span id="L9564" class="LineNr"> 9564 </span>    68/push <span class="Constant">&quot;increment&quot;</span>/imm32/operation
+<span id="L9565" class="LineNr"> 9565 </span>    68/push 1/imm32
+<span id="L9566" class="LineNr"> 9566 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9567" class="LineNr"> 9567 </span>    <span class="subxComment"># convert</span>
+<span id="L9568" class="LineNr"> 9568 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9569" class="LineNr"> 9569 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L9570" class="LineNr"> 9570 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9571" class="Folded"> 9571 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9577" class="LineNr"> 9577 </span>    <span class="subxComment"># check output</span>
+<span id="L9578" class="LineNr"> 9578 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;40/increment-eax&quot;</span> <span class="Constant">&quot;F - test-increment-var&quot;</span>)
+<span id="L9579" class="LineNr"> 9579 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9580" class="LineNr"> 9580 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9581" class="LineNr"> 9581 </span>    5d/pop-to-ebp
+<span id="L9582" class="LineNr"> 9582 </span>    c3/return
+<span id="L9583" class="LineNr"> 9583 </span>
+<span id="L9584" class="LineNr"> 9584 </span><span class="subxTest">test-add-reg-to-reg</span>:
+<span id="L9585" class="LineNr"> 9585 </span>    <span class="subxComment">#   var1/reg &lt;- add var2/reg</span>
+<span id="L9586" class="LineNr"> 9586 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9587" class="LineNr"> 9587 </span>    <span class="subxComment">#   01/add %var1 var2</span>
+<span id="L9588" class="LineNr"> 9588 </span>    <span class="subxComment">#</span>
+<span id="L9589" class="LineNr"> 9589 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9590" class="LineNr"> 9590 </span>    55/push-ebp
+<span id="L9591" class="LineNr"> 9591 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9592" class="LineNr"> 9592 </span>    <span class="subxComment"># setup</span>
+<span id="L9593" class="LineNr"> 9593 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9594" class="LineNr"> 9594 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9595" class="LineNr"> 9595 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9596" class="LineNr"> 9596 </span>    68/push 0/imm32/right/null
+<span id="L9597" class="LineNr"> 9597 </span>    68/push 1/imm32/left/int
+<span id="L9598" class="LineNr"> 9598 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9599" class="LineNr"> 9599 </span>    <span class="subxComment"># var var-var1/ecx: var in eax</span>
+<span id="L9600" class="LineNr"> 9600 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L9601" class="LineNr"> 9601 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9602" class="LineNr"> 9602 </span>    68/push 1/imm32/block-depth
+<span id="L9603" class="LineNr"> 9603 </span>    51/push-ecx
+<span id="L9604" class="LineNr"> 9604 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
+<span id="L9605" class="LineNr"> 9605 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9606" class="LineNr"> 9606 </span>    <span class="subxComment"># var var-var2/edx: var in ecx</span>
+<span id="L9607" class="LineNr"> 9607 </span>    68/push <span class="Constant">&quot;ecx&quot;</span>/imm32/register
+<span id="L9608" class="LineNr"> 9608 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9609" class="LineNr"> 9609 </span>    68/push 1/imm32/block-depth
+<span id="L9610" class="LineNr"> 9610 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
+<span id="L9611" class="LineNr"> 9611 </span>    68/push <span class="Constant">&quot;var2&quot;</span>/imm32
+<span id="L9612" class="LineNr"> 9612 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L9613" class="LineNr"> 9613 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
+<span id="L9614" class="LineNr"> 9614 </span>    68/push 0/imm32/is-deref:false
+<span id="L9615" class="LineNr"> 9615 </span>    68/push 0/imm32/next
+<span id="L9616" class="LineNr"> 9616 </span>    52/push-edx/var-var2
+<span id="L9617" class="LineNr"> 9617 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9618" class="LineNr"> 9618 </span>    <span class="subxComment"># var outputs/edi: (handle stmt-var) = [var1, var2]</span>
+<span id="L9619" class="LineNr"> 9619 </span>    68/push 0/imm32/is-deref:false
+<span id="L9620" class="LineNr"> 9620 </span>    68/push 0/imm32/next
+<span id="L9621" class="LineNr"> 9621 </span>    51/push-ecx/var-var1
+<span id="L9622" class="LineNr"> 9622 </span>    89/&lt;- %edi 4/r32/esp
+<span id="L9623" class="LineNr"> 9623 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9624" class="LineNr"> 9624 </span>    68/push 0/imm32/next
+<span id="L9625" class="LineNr"> 9625 </span>    57/push-edi/outputs
+<span id="L9626" class="LineNr"> 9626 </span>    56/push-esi/inouts
+<span id="L9627" class="LineNr"> 9627 </span>    68/push <span class="Constant">&quot;add&quot;</span>/imm32/operation
+<span id="L9628" class="LineNr"> 9628 </span>    68/push 1/imm32
 <span id="L9629" class="LineNr"> 9629 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9630" class="LineNr"> 9630 </span>    <span class="subxComment"># var outputs/edi: (handle stmt-var) = [var1, var2]</span>
-<span id="L9631" class="LineNr"> 9631 </span>    68/push 0/imm32/is-deref:false
-<span id="L9632" class="LineNr"> 9632 </span>    68/push 0/imm32/next
-<span id="L9633" class="LineNr"> 9633 </span>    51/push-ecx/var-var1
-<span id="L9634" class="LineNr"> 9634 </span>    89/&lt;- %edi 4/r32/esp
-<span id="L9635" class="LineNr"> 9635 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9636" class="LineNr"> 9636 </span>    68/push 0/imm32/next
-<span id="L9637" class="LineNr"> 9637 </span>    57/push-edi/outputs
-<span id="L9638" class="LineNr"> 9638 </span>    56/push-esi/inouts
-<span id="L9639" class="LineNr"> 9639 </span>    68/push <span class="Constant">&quot;add&quot;</span>/imm32/operation
-<span id="L9640" class="LineNr"> 9640 </span>    68/push 1/imm32
-<span id="L9641" class="LineNr"> 9641 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9642" class="LineNr"> 9642 </span>    <span class="subxComment"># convert</span>
-<span id="L9643" class="LineNr"> 9643 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9644" class="LineNr"> 9644 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L9645" class="LineNr"> 9645 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9646" class="Folded"> 9646 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9652" class="LineNr"> 9652 </span>    <span class="subxComment"># check output</span>
-<span id="L9653" class="LineNr"> 9653 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;01/add-to %eax 0x00000001/r32&quot;</span> <span class="Constant">&quot;F - test-add-reg-to-reg&quot;</span>)
-<span id="L9654" class="LineNr"> 9654 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9655" class="LineNr"> 9655 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9656" class="LineNr"> 9656 </span>    5d/pop-to-ebp
-<span id="L9657" class="LineNr"> 9657 </span>    c3/return
-<span id="L9658" class="LineNr"> 9658 </span>
-<span id="L9659" class="LineNr"> 9659 </span><span class="subxTest">test-add-reg-to-mem</span>:
-<span id="L9660" class="LineNr"> 9660 </span>    <span class="subxComment">#   add-to var1 var2/reg</span>
-<span id="L9661" class="LineNr"> 9661 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9662" class="LineNr"> 9662 </span>    <span class="subxComment">#   01/add *(ebp+__) var2</span>
-<span id="L9663" class="LineNr"> 9663 </span>    <span class="subxComment">#</span>
-<span id="L9664" class="LineNr"> 9664 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9665" class="LineNr"> 9665 </span>    55/push-ebp
-<span id="L9666" class="LineNr"> 9666 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9667" class="LineNr"> 9667 </span>    <span class="subxComment"># setup</span>
-<span id="L9668" class="LineNr"> 9668 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9669" class="LineNr"> 9669 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9670" class="LineNr"> 9670 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9671" class="LineNr"> 9671 </span>    68/push 0/imm32/right/null
-<span id="L9672" class="LineNr"> 9672 </span>    68/push 1/imm32/left/int
-<span id="L9673" class="LineNr"> 9673 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9674" class="LineNr"> 9674 </span>    <span class="subxComment"># var var-var1/ecx: var</span>
-<span id="L9675" class="LineNr"> 9675 </span>    68/push 0/imm32/no-register
-<span id="L9676" class="LineNr"> 9676 </span>    68/push 8/imm32/stack-offset
-<span id="L9677" class="LineNr"> 9677 </span>    68/push 1/imm32/block-depth
-<span id="L9678" class="LineNr"> 9678 </span>    51/push-ecx
-<span id="L9679" class="LineNr"> 9679 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
-<span id="L9680" class="LineNr"> 9680 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9681" class="LineNr"> 9681 </span>    <span class="subxComment"># var var-var2/edx: var in ecx</span>
-<span id="L9682" class="LineNr"> 9682 </span>    68/push <span class="Constant">&quot;ecx&quot;</span>/imm32/register
-<span id="L9683" class="LineNr"> 9683 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9684" class="LineNr"> 9684 </span>    68/push 1/imm32/block-depth
-<span id="L9685" class="LineNr"> 9685 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
-<span id="L9686" class="LineNr"> 9686 </span>    68/push <span class="Constant">&quot;var2&quot;</span>/imm32
-<span id="L9687" class="LineNr"> 9687 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L9688" class="LineNr"> 9688 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
-<span id="L9689" class="LineNr"> 9689 </span>    68/push 0/imm32/is-deref:false
-<span id="L9690" class="LineNr"> 9690 </span>    68/push 0/imm32/next
-<span id="L9691" class="LineNr"> 9691 </span>    52/push-edx/var-var2
-<span id="L9692" class="LineNr"> 9692 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9693" class="LineNr"> 9693 </span>    <span class="subxComment"># var inouts = (handle stmt-var) = [var1, var2]</span>
-<span id="L9694" class="LineNr"> 9694 </span>    56/push-esi/next
-<span id="L9695" class="LineNr"> 9695 </span>    51/push-ecx/var-var1
-<span id="L9696" class="LineNr"> 9696 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9697" class="LineNr"> 9697 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9698" class="LineNr"> 9698 </span>    68/push 0/imm32/next
-<span id="L9699" class="LineNr"> 9699 </span>    68/push 0/imm32/outputs
-<span id="L9700" class="LineNr"> 9700 </span>    56/push-esi/inouts
-<span id="L9701" class="LineNr"> 9701 </span>    68/push <span class="Constant">&quot;add-to&quot;</span>/imm32/operation
-<span id="L9702" class="LineNr"> 9702 </span>    68/push 1/imm32
-<span id="L9703" class="LineNr"> 9703 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9704" class="LineNr"> 9704 </span>    <span class="subxComment"># convert</span>
-<span id="L9705" class="LineNr"> 9705 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9706" class="LineNr"> 9706 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L9707" class="LineNr"> 9707 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9708" class="Folded"> 9708 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9714" class="LineNr"> 9714 </span>    <span class="subxComment"># check output</span>
-<span id="L9715" class="LineNr"> 9715 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;01/add-to *(ebp+0x00000008) 0x00000001/r32&quot;</span> <span class="Constant">&quot;F - test-add-reg-to-mem&quot;</span>)
-<span id="L9716" class="LineNr"> 9716 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9717" class="LineNr"> 9717 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9718" class="LineNr"> 9718 </span>    5d/pop-to-ebp
-<span id="L9719" class="LineNr"> 9719 </span>    c3/return
-<span id="L9720" class="LineNr"> 9720 </span>
-<span id="L9721" class="LineNr"> 9721 </span><span class="subxTest">test-add-mem-to-reg</span>:
-<span id="L9722" class="LineNr"> 9722 </span>    <span class="subxComment">#   var1/reg &lt;- add var2</span>
-<span id="L9723" class="LineNr"> 9723 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9724" class="LineNr"> 9724 </span>    <span class="subxComment">#   03/add *(ebp+__) var1</span>
-<span id="L9725" class="LineNr"> 9725 </span>    <span class="subxComment">#</span>
-<span id="L9726" class="LineNr"> 9726 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9727" class="LineNr"> 9727 </span>    55/push-ebp
-<span id="L9728" class="LineNr"> 9728 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9729" class="LineNr"> 9729 </span>    <span class="subxComment"># setup</span>
-<span id="L9730" class="LineNr"> 9730 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9731" class="LineNr"> 9731 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9732" class="LineNr"> 9732 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9733" class="LineNr"> 9733 </span>    68/push 0/imm32/right/null
-<span id="L9734" class="LineNr"> 9734 </span>    68/push 1/imm32/left/int
-<span id="L9735" class="LineNr"> 9735 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9736" class="LineNr"> 9736 </span>    <span class="subxComment"># var var-var1/ecx: var in eax</span>
-<span id="L9737" class="LineNr"> 9737 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
-<span id="L9738" class="LineNr"> 9738 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9739" class="LineNr"> 9739 </span>    68/push 1/imm32/block-depth
-<span id="L9740" class="LineNr"> 9740 </span>    51/push-ecx
-<span id="L9741" class="LineNr"> 9741 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
-<span id="L9742" class="LineNr"> 9742 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9743" class="LineNr"> 9743 </span>    <span class="subxComment"># var var-var2/edx: var</span>
-<span id="L9744" class="LineNr"> 9744 </span>    68/push 0/imm32/no-register
-<span id="L9745" class="LineNr"> 9745 </span>    68/push 8/imm32/stack-offset
-<span id="L9746" class="LineNr"> 9746 </span>    68/push 1/imm32/block-depth
-<span id="L9747" class="LineNr"> 9747 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
-<span id="L9748" class="LineNr"> 9748 </span>    68/push <span class="Constant">&quot;var2&quot;</span>/imm32
-<span id="L9749" class="LineNr"> 9749 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L9750" class="LineNr"> 9750 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
-<span id="L9751" class="LineNr"> 9751 </span>    68/push 0/imm32/is-deref:false
-<span id="L9752" class="LineNr"> 9752 </span>    68/push 0/imm32/next
-<span id="L9753" class="LineNr"> 9753 </span>    52/push-edx/var-var2
+<span id="L9630" class="LineNr"> 9630 </span>    <span class="subxComment"># convert</span>
+<span id="L9631" class="LineNr"> 9631 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9632" class="LineNr"> 9632 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L9633" class="LineNr"> 9633 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9634" class="Folded"> 9634 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9640" class="LineNr"> 9640 </span>    <span class="subxComment"># check output</span>
+<span id="L9641" class="LineNr"> 9641 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;01/add-to %eax 0x00000001/r32&quot;</span> <span class="Constant">&quot;F - test-add-reg-to-reg&quot;</span>)
+<span id="L9642" class="LineNr"> 9642 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9643" class="LineNr"> 9643 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9644" class="LineNr"> 9644 </span>    5d/pop-to-ebp
+<span id="L9645" class="LineNr"> 9645 </span>    c3/return
+<span id="L9646" class="LineNr"> 9646 </span>
+<span id="L9647" class="LineNr"> 9647 </span><span class="subxTest">test-add-reg-to-mem</span>:
+<span id="L9648" class="LineNr"> 9648 </span>    <span class="subxComment">#   add-to var1 var2/reg</span>
+<span id="L9649" class="LineNr"> 9649 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9650" class="LineNr"> 9650 </span>    <span class="subxComment">#   01/add *(ebp+__) var2</span>
+<span id="L9651" class="LineNr"> 9651 </span>    <span class="subxComment">#</span>
+<span id="L9652" class="LineNr"> 9652 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9653" class="LineNr"> 9653 </span>    55/push-ebp
+<span id="L9654" class="LineNr"> 9654 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9655" class="LineNr"> 9655 </span>    <span class="subxComment"># setup</span>
+<span id="L9656" class="LineNr"> 9656 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9657" class="LineNr"> 9657 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9658" class="LineNr"> 9658 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9659" class="LineNr"> 9659 </span>    68/push 0/imm32/right/null
+<span id="L9660" class="LineNr"> 9660 </span>    68/push 1/imm32/left/int
+<span id="L9661" class="LineNr"> 9661 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9662" class="LineNr"> 9662 </span>    <span class="subxComment"># var var-var1/ecx: var</span>
+<span id="L9663" class="LineNr"> 9663 </span>    68/push 0/imm32/no-register
+<span id="L9664" class="LineNr"> 9664 </span>    68/push 8/imm32/stack-offset
+<span id="L9665" class="LineNr"> 9665 </span>    68/push 1/imm32/block-depth
+<span id="L9666" class="LineNr"> 9666 </span>    51/push-ecx
+<span id="L9667" class="LineNr"> 9667 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
+<span id="L9668" class="LineNr"> 9668 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9669" class="LineNr"> 9669 </span>    <span class="subxComment"># var var-var2/edx: var in ecx</span>
+<span id="L9670" class="LineNr"> 9670 </span>    68/push <span class="Constant">&quot;ecx&quot;</span>/imm32/register
+<span id="L9671" class="LineNr"> 9671 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9672" class="LineNr"> 9672 </span>    68/push 1/imm32/block-depth
+<span id="L9673" class="LineNr"> 9673 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
+<span id="L9674" class="LineNr"> 9674 </span>    68/push <span class="Constant">&quot;var2&quot;</span>/imm32
+<span id="L9675" class="LineNr"> 9675 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L9676" class="LineNr"> 9676 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
+<span id="L9677" class="LineNr"> 9677 </span>    68/push 0/imm32/is-deref:false
+<span id="L9678" class="LineNr"> 9678 </span>    68/push 0/imm32/next
+<span id="L9679" class="LineNr"> 9679 </span>    52/push-edx/var-var2
+<span id="L9680" class="LineNr"> 9680 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9681" class="LineNr"> 9681 </span>    <span class="subxComment"># var inouts = (handle stmt-var) = [var1, var2]</span>
+<span id="L9682" class="LineNr"> 9682 </span>    56/push-esi/next
+<span id="L9683" class="LineNr"> 9683 </span>    51/push-ecx/var-var1
+<span id="L9684" class="LineNr"> 9684 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9685" class="LineNr"> 9685 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9686" class="LineNr"> 9686 </span>    68/push 0/imm32/next
+<span id="L9687" class="LineNr"> 9687 </span>    68/push 0/imm32/outputs
+<span id="L9688" class="LineNr"> 9688 </span>    56/push-esi/inouts
+<span id="L9689" class="LineNr"> 9689 </span>    68/push <span class="Constant">&quot;add-to&quot;</span>/imm32/operation
+<span id="L9690" class="LineNr"> 9690 </span>    68/push 1/imm32
+<span id="L9691" class="LineNr"> 9691 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9692" class="LineNr"> 9692 </span>    <span class="subxComment"># convert</span>
+<span id="L9693" class="LineNr"> 9693 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9694" class="LineNr"> 9694 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L9695" class="LineNr"> 9695 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9696" class="Folded"> 9696 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9702" class="LineNr"> 9702 </span>    <span class="subxComment"># check output</span>
+<span id="L9703" class="LineNr"> 9703 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;01/add-to *(ebp+0x00000008) 0x00000001/r32&quot;</span> <span class="Constant">&quot;F - test-add-reg-to-mem&quot;</span>)
+<span id="L9704" class="LineNr"> 9704 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9705" class="LineNr"> 9705 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9706" class="LineNr"> 9706 </span>    5d/pop-to-ebp
+<span id="L9707" class="LineNr"> 9707 </span>    c3/return
+<span id="L9708" class="LineNr"> 9708 </span>
+<span id="L9709" class="LineNr"> 9709 </span><span class="subxTest">test-add-mem-to-reg</span>:
+<span id="L9710" class="LineNr"> 9710 </span>    <span class="subxComment">#   var1/reg &lt;- add var2</span>
+<span id="L9711" class="LineNr"> 9711 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9712" class="LineNr"> 9712 </span>    <span class="subxComment">#   03/add *(ebp+__) var1</span>
+<span id="L9713" class="LineNr"> 9713 </span>    <span class="subxComment">#</span>
+<span id="L9714" class="LineNr"> 9714 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9715" class="LineNr"> 9715 </span>    55/push-ebp
+<span id="L9716" class="LineNr"> 9716 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9717" class="LineNr"> 9717 </span>    <span class="subxComment"># setup</span>
+<span id="L9718" class="LineNr"> 9718 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9719" class="LineNr"> 9719 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9720" class="LineNr"> 9720 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9721" class="LineNr"> 9721 </span>    68/push 0/imm32/right/null
+<span id="L9722" class="LineNr"> 9722 </span>    68/push 1/imm32/left/int
+<span id="L9723" class="LineNr"> 9723 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9724" class="LineNr"> 9724 </span>    <span class="subxComment"># var var-var1/ecx: var in eax</span>
+<span id="L9725" class="LineNr"> 9725 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L9726" class="LineNr"> 9726 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9727" class="LineNr"> 9727 </span>    68/push 1/imm32/block-depth
+<span id="L9728" class="LineNr"> 9728 </span>    51/push-ecx
+<span id="L9729" class="LineNr"> 9729 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
+<span id="L9730" class="LineNr"> 9730 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9731" class="LineNr"> 9731 </span>    <span class="subxComment"># var var-var2/edx: var</span>
+<span id="L9732" class="LineNr"> 9732 </span>    68/push 0/imm32/no-register
+<span id="L9733" class="LineNr"> 9733 </span>    68/push 8/imm32/stack-offset
+<span id="L9734" class="LineNr"> 9734 </span>    68/push 1/imm32/block-depth
+<span id="L9735" class="LineNr"> 9735 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
+<span id="L9736" class="LineNr"> 9736 </span>    68/push <span class="Constant">&quot;var2&quot;</span>/imm32
+<span id="L9737" class="LineNr"> 9737 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L9738" class="LineNr"> 9738 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
+<span id="L9739" class="LineNr"> 9739 </span>    68/push 0/imm32/is-deref:false
+<span id="L9740" class="LineNr"> 9740 </span>    68/push 0/imm32/next
+<span id="L9741" class="LineNr"> 9741 </span>    52/push-edx/var-var2
+<span id="L9742" class="LineNr"> 9742 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9743" class="LineNr"> 9743 </span>    <span class="subxComment"># var outputs/edi = (handle stmt-var) = [var1]</span>
+<span id="L9744" class="LineNr"> 9744 </span>    68/push 0/imm32/is-deref:false
+<span id="L9745" class="LineNr"> 9745 </span>    68/push 0/imm32/next
+<span id="L9746" class="LineNr"> 9746 </span>    51/push-ecx/var-var1
+<span id="L9747" class="LineNr"> 9747 </span>    89/&lt;- %edi 4/r32/esp
+<span id="L9748" class="LineNr"> 9748 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9749" class="LineNr"> 9749 </span>    68/push 0/imm32/next
+<span id="L9750" class="LineNr"> 9750 </span>    57/push-edi/outputs
+<span id="L9751" class="LineNr"> 9751 </span>    56/push-esi/inouts
+<span id="L9752" class="LineNr"> 9752 </span>    68/push <span class="Constant">&quot;add&quot;</span>/imm32/operation
+<span id="L9753" class="LineNr"> 9753 </span>    68/push 1/imm32
 <span id="L9754" class="LineNr"> 9754 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9755" class="LineNr"> 9755 </span>    <span class="subxComment"># var outputs/edi = (handle stmt-var) = [var1]</span>
-<span id="L9756" class="LineNr"> 9756 </span>    68/push 0/imm32/is-deref:false
-<span id="L9757" class="LineNr"> 9757 </span>    68/push 0/imm32/next
-<span id="L9758" class="LineNr"> 9758 </span>    51/push-ecx/var-var1
-<span id="L9759" class="LineNr"> 9759 </span>    89/&lt;- %edi 4/r32/esp
-<span id="L9760" class="LineNr"> 9760 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9761" class="LineNr"> 9761 </span>    68/push 0/imm32/next
-<span id="L9762" class="LineNr"> 9762 </span>    57/push-edi/outputs
-<span id="L9763" class="LineNr"> 9763 </span>    56/push-esi/inouts
-<span id="L9764" class="LineNr"> 9764 </span>    68/push <span class="Constant">&quot;add&quot;</span>/imm32/operation
-<span id="L9765" class="LineNr"> 9765 </span>    68/push 1/imm32
-<span id="L9766" class="LineNr"> 9766 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9767" class="LineNr"> 9767 </span>    <span class="subxComment"># convert</span>
-<span id="L9768" class="LineNr"> 9768 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9769" class="LineNr"> 9769 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L9770" class="LineNr"> 9770 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9771" class="Folded"> 9771 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9777" class="LineNr"> 9777 </span>    <span class="subxComment"># check output</span>
-<span id="L9778" class="LineNr"> 9778 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;03/add *(ebp+0x00000008) 0x00000000/r32&quot;</span> <span class="Constant">&quot;F - test-add-mem-to-reg&quot;</span>)
-<span id="L9779" class="LineNr"> 9779 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9780" class="LineNr"> 9780 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9781" class="LineNr"> 9781 </span>    5d/pop-to-ebp
-<span id="L9782" class="LineNr"> 9782 </span>    c3/return
-<span id="L9783" class="LineNr"> 9783 </span>
-<span id="L9784" class="LineNr"> 9784 </span><span class="subxTest">test-add-literal-to-eax</span>:
-<span id="L9785" class="LineNr"> 9785 </span>    <span class="subxComment">#   var1/eax &lt;- add 0x34</span>
-<span id="L9786" class="LineNr"> 9786 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9787" class="LineNr"> 9787 </span>    <span class="subxComment">#   05/add-to-eax 0x34/imm32</span>
-<span id="L9788" class="LineNr"> 9788 </span>    <span class="subxComment">#</span>
-<span id="L9789" class="LineNr"> 9789 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9790" class="LineNr"> 9790 </span>    55/push-ebp
-<span id="L9791" class="LineNr"> 9791 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9792" class="LineNr"> 9792 </span>    <span class="subxComment"># setup</span>
-<span id="L9793" class="LineNr"> 9793 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9794" class="LineNr"> 9794 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9795" class="LineNr"> 9795 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9796" class="LineNr"> 9796 </span>    68/push 0/imm32/right/null
-<span id="L9797" class="LineNr"> 9797 </span>    68/push 1/imm32/left/int
-<span id="L9798" class="LineNr"> 9798 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9799" class="LineNr"> 9799 </span>    <span class="subxComment"># var var-var1/ecx: var in eax</span>
-<span id="L9800" class="LineNr"> 9800 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
-<span id="L9801" class="LineNr"> 9801 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9802" class="LineNr"> 9802 </span>    68/push 1/imm32/block-depth
-<span id="L9803" class="LineNr"> 9803 </span>    51/push-ecx
-<span id="L9804" class="LineNr"> 9804 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
-<span id="L9805" class="LineNr"> 9805 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9806" class="LineNr"> 9806 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
-<span id="L9807" class="LineNr"> 9807 </span>    68/push 0/imm32/right/null
-<span id="L9808" class="LineNr"> 9808 </span>    68/push 0/imm32/left/literal
-<span id="L9809" class="LineNr"> 9809 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L9810" class="LineNr"> 9810 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
-<span id="L9811" class="LineNr"> 9811 </span>    68/push 0/imm32/no-register
-<span id="L9812" class="LineNr"> 9812 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9813" class="LineNr"> 9813 </span>    68/push 1/imm32/block-depth
-<span id="L9814" class="LineNr"> 9814 </span>    52/push-edx
-<span id="L9815" class="LineNr"> 9815 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
-<span id="L9816" class="LineNr"> 9816 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L9817" class="LineNr"> 9817 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
-<span id="L9818" class="LineNr"> 9818 </span>    68/push 0/imm32/is-deref:false
-<span id="L9819" class="LineNr"> 9819 </span>    68/push 0/imm32/next
-<span id="L9820" class="LineNr"> 9820 </span>    52/push-edx/var-var2
+<span id="L9755" class="LineNr"> 9755 </span>    <span class="subxComment"># convert</span>
+<span id="L9756" class="LineNr"> 9756 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9757" class="LineNr"> 9757 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L9758" class="LineNr"> 9758 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9759" class="Folded"> 9759 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9765" class="LineNr"> 9765 </span>    <span class="subxComment"># check output</span>
+<span id="L9766" class="LineNr"> 9766 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;03/add *(ebp+0x00000008) 0x00000000/r32&quot;</span> <span class="Constant">&quot;F - test-add-mem-to-reg&quot;</span>)
+<span id="L9767" class="LineNr"> 9767 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9768" class="LineNr"> 9768 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9769" class="LineNr"> 9769 </span>    5d/pop-to-ebp
+<span id="L9770" class="LineNr"> 9770 </span>    c3/return
+<span id="L9771" class="LineNr"> 9771 </span>
+<span id="L9772" class="LineNr"> 9772 </span><span class="subxTest">test-add-literal-to-eax</span>:
+<span id="L9773" class="LineNr"> 9773 </span>    <span class="subxComment">#   var1/eax &lt;- add 0x34</span>
+<span id="L9774" class="LineNr"> 9774 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9775" class="LineNr"> 9775 </span>    <span class="subxComment">#   05/add-to-eax 0x34/imm32</span>
+<span id="L9776" class="LineNr"> 9776 </span>    <span class="subxComment">#</span>
+<span id="L9777" class="LineNr"> 9777 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9778" class="LineNr"> 9778 </span>    55/push-ebp
+<span id="L9779" class="LineNr"> 9779 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9780" class="LineNr"> 9780 </span>    <span class="subxComment"># setup</span>
+<span id="L9781" class="LineNr"> 9781 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9782" class="LineNr"> 9782 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9783" class="LineNr"> 9783 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9784" class="LineNr"> 9784 </span>    68/push 0/imm32/right/null
+<span id="L9785" class="LineNr"> 9785 </span>    68/push 1/imm32/left/int
+<span id="L9786" class="LineNr"> 9786 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9787" class="LineNr"> 9787 </span>    <span class="subxComment"># var var-var1/ecx: var in eax</span>
+<span id="L9788" class="LineNr"> 9788 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L9789" class="LineNr"> 9789 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9790" class="LineNr"> 9790 </span>    68/push 1/imm32/block-depth
+<span id="L9791" class="LineNr"> 9791 </span>    51/push-ecx
+<span id="L9792" class="LineNr"> 9792 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
+<span id="L9793" class="LineNr"> 9793 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9794" class="LineNr"> 9794 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
+<span id="L9795" class="LineNr"> 9795 </span>    68/push 0/imm32/right/null
+<span id="L9796" class="LineNr"> 9796 </span>    68/push 0/imm32/left/literal
+<span id="L9797" class="LineNr"> 9797 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L9798" class="LineNr"> 9798 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
+<span id="L9799" class="LineNr"> 9799 </span>    68/push 0/imm32/no-register
+<span id="L9800" class="LineNr"> 9800 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9801" class="LineNr"> 9801 </span>    68/push 1/imm32/block-depth
+<span id="L9802" class="LineNr"> 9802 </span>    52/push-edx
+<span id="L9803" class="LineNr"> 9803 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
+<span id="L9804" class="LineNr"> 9804 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L9805" class="LineNr"> 9805 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
+<span id="L9806" class="LineNr"> 9806 </span>    68/push 0/imm32/is-deref:false
+<span id="L9807" class="LineNr"> 9807 </span>    68/push 0/imm32/next
+<span id="L9808" class="LineNr"> 9808 </span>    52/push-edx/var-var2
+<span id="L9809" class="LineNr"> 9809 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9810" class="LineNr"> 9810 </span>    <span class="subxComment"># var outputs/edi: (handle stmt-var) = [var1]</span>
+<span id="L9811" class="LineNr"> 9811 </span>    68/push 0/imm32/is-deref:false
+<span id="L9812" class="LineNr"> 9812 </span>    68/push 0/imm32/next
+<span id="L9813" class="LineNr"> 9813 </span>    51/push-ecx/var-var1
+<span id="L9814" class="LineNr"> 9814 </span>    89/&lt;- %edi 4/r32/esp
+<span id="L9815" class="LineNr"> 9815 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9816" class="LineNr"> 9816 </span>    68/push 0/imm32/next
+<span id="L9817" class="LineNr"> 9817 </span>    57/push-edi/outputs
+<span id="L9818" class="LineNr"> 9818 </span>    56/push-esi/inouts
+<span id="L9819" class="LineNr"> 9819 </span>    68/push <span class="Constant">&quot;add&quot;</span>/imm32/operation
+<span id="L9820" class="LineNr"> 9820 </span>    68/push 1/imm32
 <span id="L9821" class="LineNr"> 9821 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9822" class="LineNr"> 9822 </span>    <span class="subxComment"># var outputs/edi: (handle stmt-var) = [var1]</span>
-<span id="L9823" class="LineNr"> 9823 </span>    68/push 0/imm32/is-deref:false
-<span id="L9824" class="LineNr"> 9824 </span>    68/push 0/imm32/next
-<span id="L9825" class="LineNr"> 9825 </span>    51/push-ecx/var-var1
-<span id="L9826" class="LineNr"> 9826 </span>    89/&lt;- %edi 4/r32/esp
-<span id="L9827" class="LineNr"> 9827 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9828" class="LineNr"> 9828 </span>    68/push 0/imm32/next
-<span id="L9829" class="LineNr"> 9829 </span>    57/push-edi/outputs
-<span id="L9830" class="LineNr"> 9830 </span>    56/push-esi/inouts
-<span id="L9831" class="LineNr"> 9831 </span>    68/push <span class="Constant">&quot;add&quot;</span>/imm32/operation
-<span id="L9832" class="LineNr"> 9832 </span>    68/push 1/imm32
-<span id="L9833" class="LineNr"> 9833 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9834" class="LineNr"> 9834 </span>    <span class="subxComment"># convert</span>
-<span id="L9835" class="LineNr"> 9835 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9836" class="LineNr"> 9836 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L9837" class="LineNr"> 9837 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9838" class="Folded"> 9838 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9844" class="LineNr"> 9844 </span>    <span class="subxComment"># check output</span>
-<span id="L9845" class="LineNr"> 9845 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;05/add-to-eax 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-add-literal-to-eax&quot;</span>)
-<span id="L9846" class="LineNr"> 9846 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9847" class="LineNr"> 9847 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9848" class="LineNr"> 9848 </span>    5d/pop-to-ebp
-<span id="L9849" class="LineNr"> 9849 </span>    c3/return
-<span id="L9850" class="LineNr"> 9850 </span>
-<span id="L9851" class="LineNr"> 9851 </span><span class="subxTest">test-add-literal-to-reg</span>:
-<span id="L9852" class="LineNr"> 9852 </span>    <span class="subxComment">#   var1/ecx &lt;- add 0x34</span>
-<span id="L9853" class="LineNr"> 9853 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9854" class="LineNr"> 9854 </span>    <span class="subxComment">#   81 0/subop/add %ecx 0x34/imm32</span>
-<span id="L9855" class="LineNr"> 9855 </span>    <span class="subxComment">#</span>
-<span id="L9856" class="LineNr"> 9856 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9857" class="LineNr"> 9857 </span>    55/push-ebp
-<span id="L9858" class="LineNr"> 9858 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9859" class="LineNr"> 9859 </span>    <span class="subxComment"># setup</span>
-<span id="L9860" class="LineNr"> 9860 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9861" class="LineNr"> 9861 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9862" class="LineNr"> 9862 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9863" class="LineNr"> 9863 </span>    68/push 0/imm32/right/null
-<span id="L9864" class="LineNr"> 9864 </span>    68/push 1/imm32/left/int
-<span id="L9865" class="LineNr"> 9865 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9866" class="LineNr"> 9866 </span>    <span class="subxComment"># var var-var1/ecx: var in ecx</span>
-<span id="L9867" class="LineNr"> 9867 </span>    68/push <span class="Constant">&quot;ecx&quot;</span>/imm32/register
-<span id="L9868" class="LineNr"> 9868 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9869" class="LineNr"> 9869 </span>    68/push 1/imm32/block-depth
-<span id="L9870" class="LineNr"> 9870 </span>    51/push-ecx
-<span id="L9871" class="LineNr"> 9871 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
-<span id="L9872" class="LineNr"> 9872 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9873" class="LineNr"> 9873 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
-<span id="L9874" class="LineNr"> 9874 </span>    68/push 0/imm32/right/null
-<span id="L9875" class="LineNr"> 9875 </span>    68/push 0/imm32/left/literal
-<span id="L9876" class="LineNr"> 9876 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L9877" class="LineNr"> 9877 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
-<span id="L9878" class="LineNr"> 9878 </span>    68/push 0/imm32/no-register
-<span id="L9879" class="LineNr"> 9879 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9880" class="LineNr"> 9880 </span>    68/push 1/imm32/block-depth
-<span id="L9881" class="LineNr"> 9881 </span>    52/push-edx
-<span id="L9882" class="LineNr"> 9882 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
-<span id="L9883" class="LineNr"> 9883 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L9884" class="LineNr"> 9884 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
-<span id="L9885" class="LineNr"> 9885 </span>    68/push 0/imm32/is-deref:false
-<span id="L9886" class="LineNr"> 9886 </span>    68/push 0/imm32/next
-<span id="L9887" class="LineNr"> 9887 </span>    52/push-edx/var-var2
+<span id="L9822" class="LineNr"> 9822 </span>    <span class="subxComment"># convert</span>
+<span id="L9823" class="LineNr"> 9823 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9824" class="LineNr"> 9824 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L9825" class="LineNr"> 9825 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9826" class="Folded"> 9826 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9832" class="LineNr"> 9832 </span>    <span class="subxComment"># check output</span>
+<span id="L9833" class="LineNr"> 9833 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;05/add-to-eax 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-add-literal-to-eax&quot;</span>)
+<span id="L9834" class="LineNr"> 9834 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9835" class="LineNr"> 9835 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9836" class="LineNr"> 9836 </span>    5d/pop-to-ebp
+<span id="L9837" class="LineNr"> 9837 </span>    c3/return
+<span id="L9838" class="LineNr"> 9838 </span>
+<span id="L9839" class="LineNr"> 9839 </span><span class="subxTest">test-add-literal-to-reg</span>:
+<span id="L9840" class="LineNr"> 9840 </span>    <span class="subxComment">#   var1/ecx &lt;- add 0x34</span>
+<span id="L9841" class="LineNr"> 9841 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9842" class="LineNr"> 9842 </span>    <span class="subxComment">#   81 0/subop/add %ecx 0x34/imm32</span>
+<span id="L9843" class="LineNr"> 9843 </span>    <span class="subxComment">#</span>
+<span id="L9844" class="LineNr"> 9844 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9845" class="LineNr"> 9845 </span>    55/push-ebp
+<span id="L9846" class="LineNr"> 9846 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9847" class="LineNr"> 9847 </span>    <span class="subxComment"># setup</span>
+<span id="L9848" class="LineNr"> 9848 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9849" class="LineNr"> 9849 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9850" class="LineNr"> 9850 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9851" class="LineNr"> 9851 </span>    68/push 0/imm32/right/null
+<span id="L9852" class="LineNr"> 9852 </span>    68/push 1/imm32/left/int
+<span id="L9853" class="LineNr"> 9853 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9854" class="LineNr"> 9854 </span>    <span class="subxComment"># var var-var1/ecx: var in ecx</span>
+<span id="L9855" class="LineNr"> 9855 </span>    68/push <span class="Constant">&quot;ecx&quot;</span>/imm32/register
+<span id="L9856" class="LineNr"> 9856 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9857" class="LineNr"> 9857 </span>    68/push 1/imm32/block-depth
+<span id="L9858" class="LineNr"> 9858 </span>    51/push-ecx
+<span id="L9859" class="LineNr"> 9859 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
+<span id="L9860" class="LineNr"> 9860 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9861" class="LineNr"> 9861 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
+<span id="L9862" class="LineNr"> 9862 </span>    68/push 0/imm32/right/null
+<span id="L9863" class="LineNr"> 9863 </span>    68/push 0/imm32/left/literal
+<span id="L9864" class="LineNr"> 9864 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L9865" class="LineNr"> 9865 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
+<span id="L9866" class="LineNr"> 9866 </span>    68/push 0/imm32/no-register
+<span id="L9867" class="LineNr"> 9867 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9868" class="LineNr"> 9868 </span>    68/push 1/imm32/block-depth
+<span id="L9869" class="LineNr"> 9869 </span>    52/push-edx
+<span id="L9870" class="LineNr"> 9870 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
+<span id="L9871" class="LineNr"> 9871 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L9872" class="LineNr"> 9872 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
+<span id="L9873" class="LineNr"> 9873 </span>    68/push 0/imm32/is-deref:false
+<span id="L9874" class="LineNr"> 9874 </span>    68/push 0/imm32/next
+<span id="L9875" class="LineNr"> 9875 </span>    52/push-edx/var-var2
+<span id="L9876" class="LineNr"> 9876 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9877" class="LineNr"> 9877 </span>    <span class="subxComment"># var outputs/edi: (handle stmt-var) = [var1]</span>
+<span id="L9878" class="LineNr"> 9878 </span>    68/push 0/imm32/is-deref:false
+<span id="L9879" class="LineNr"> 9879 </span>    68/push 0/imm32/next
+<span id="L9880" class="LineNr"> 9880 </span>    51/push-ecx/var-var1
+<span id="L9881" class="LineNr"> 9881 </span>    89/&lt;- %edi 4/r32/esp
+<span id="L9882" class="LineNr"> 9882 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9883" class="LineNr"> 9883 </span>    68/push 0/imm32/next
+<span id="L9884" class="LineNr"> 9884 </span>    57/push-edi/outputs
+<span id="L9885" class="LineNr"> 9885 </span>    56/push-esi/inouts
+<span id="L9886" class="LineNr"> 9886 </span>    68/push <span class="Constant">&quot;add&quot;</span>/imm32/operation
+<span id="L9887" class="LineNr"> 9887 </span>    68/push 1/imm32
 <span id="L9888" class="LineNr"> 9888 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9889" class="LineNr"> 9889 </span>    <span class="subxComment"># var outputs/edi: (handle stmt-var) = [var1]</span>
-<span id="L9890" class="LineNr"> 9890 </span>    68/push 0/imm32/is-deref:false
-<span id="L9891" class="LineNr"> 9891 </span>    68/push 0/imm32/next
-<span id="L9892" class="LineNr"> 9892 </span>    51/push-ecx/var-var1
-<span id="L9893" class="LineNr"> 9893 </span>    89/&lt;- %edi 4/r32/esp
-<span id="L9894" class="LineNr"> 9894 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9895" class="LineNr"> 9895 </span>    68/push 0/imm32/next
-<span id="L9896" class="LineNr"> 9896 </span>    57/push-edi/outputs
-<span id="L9897" class="LineNr"> 9897 </span>    56/push-esi/inouts
-<span id="L9898" class="LineNr"> 9898 </span>    68/push <span class="Constant">&quot;add&quot;</span>/imm32/operation
-<span id="L9899" class="LineNr"> 9899 </span>    68/push 1/imm32
-<span id="L9900" class="LineNr"> 9900 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9901" class="LineNr"> 9901 </span>    <span class="subxComment"># convert</span>
-<span id="L9902" class="LineNr"> 9902 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9903" class="LineNr"> 9903 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L9904" class="LineNr"> 9904 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9905" class="Folded"> 9905 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9911" class="LineNr"> 9911 </span>    <span class="subxComment"># check output</span>
-<span id="L9912" class="LineNr"> 9912 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;81 0/subop/add %ecx 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-add-literal-to-reg&quot;</span>)
-<span id="L9913" class="LineNr"> 9913 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9914" class="LineNr"> 9914 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9915" class="LineNr"> 9915 </span>    5d/pop-to-ebp
-<span id="L9916" class="LineNr"> 9916 </span>    c3/return
-<span id="L9917" class="LineNr"> 9917 </span>
-<span id="L9918" class="LineNr"> 9918 </span><span class="subxTest">test-add-literal-to-mem</span>:
-<span id="L9919" class="LineNr"> 9919 </span>    <span class="subxComment">#   add-to var1, 0x34</span>
-<span id="L9920" class="LineNr"> 9920 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9921" class="LineNr"> 9921 </span>    <span class="subxComment">#   81 0/subop/add %eax 0x34/imm32</span>
-<span id="L9922" class="LineNr"> 9922 </span>    <span class="subxComment">#</span>
-<span id="L9923" class="LineNr"> 9923 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9924" class="LineNr"> 9924 </span>    55/push-ebp
-<span id="L9925" class="LineNr"> 9925 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9926" class="LineNr"> 9926 </span>    <span class="subxComment"># setup</span>
-<span id="L9927" class="LineNr"> 9927 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9928" class="LineNr"> 9928 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9929" class="LineNr"> 9929 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9930" class="LineNr"> 9930 </span>    68/push 0/imm32/right/null
-<span id="L9931" class="LineNr"> 9931 </span>    68/push 1/imm32/left/int
-<span id="L9932" class="LineNr"> 9932 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9933" class="LineNr"> 9933 </span>    <span class="subxComment"># var var-var1/ecx: var</span>
-<span id="L9934" class="LineNr"> 9934 </span>    68/push 0/imm32/no-register
-<span id="L9935" class="LineNr"> 9935 </span>    68/push 8/imm32/stack-offset
-<span id="L9936" class="LineNr"> 9936 </span>    68/push 1/imm32/block-depth
-<span id="L9937" class="LineNr"> 9937 </span>    51/push-ecx
-<span id="L9938" class="LineNr"> 9938 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
-<span id="L9939" class="LineNr"> 9939 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L9940" class="LineNr"> 9940 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
-<span id="L9941" class="LineNr"> 9941 </span>    68/push 0/imm32/right/null
-<span id="L9942" class="LineNr"> 9942 </span>    68/push 0/imm32/left/literal
-<span id="L9943" class="LineNr"> 9943 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L9944" class="LineNr"> 9944 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
-<span id="L9945" class="LineNr"> 9945 </span>    68/push 0/imm32/no-register
-<span id="L9946" class="LineNr"> 9946 </span>    68/push 0/imm32/no-stack-offset
-<span id="L9947" class="LineNr"> 9947 </span>    68/push 1/imm32/block-depth
-<span id="L9948" class="LineNr"> 9948 </span>    52/push-edx
-<span id="L9949" class="LineNr"> 9949 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
-<span id="L9950" class="LineNr"> 9950 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L9951" class="LineNr"> 9951 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
-<span id="L9952" class="LineNr"> 9952 </span>    68/push 0/imm32/is-deref:false
-<span id="L9953" class="LineNr"> 9953 </span>    68/push 0/imm32/next
-<span id="L9954" class="LineNr"> 9954 </span>    52/push-edx/var-var2
+<span id="L9889" class="LineNr"> 9889 </span>    <span class="subxComment"># convert</span>
+<span id="L9890" class="LineNr"> 9890 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9891" class="LineNr"> 9891 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L9892" class="LineNr"> 9892 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9893" class="Folded"> 9893 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9899" class="LineNr"> 9899 </span>    <span class="subxComment"># check output</span>
+<span id="L9900" class="LineNr"> 9900 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;81 0/subop/add %ecx 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-add-literal-to-reg&quot;</span>)
+<span id="L9901" class="LineNr"> 9901 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9902" class="LineNr"> 9902 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9903" class="LineNr"> 9903 </span>    5d/pop-to-ebp
+<span id="L9904" class="LineNr"> 9904 </span>    c3/return
+<span id="L9905" class="LineNr"> 9905 </span>
+<span id="L9906" class="LineNr"> 9906 </span><span class="subxTest">test-add-literal-to-mem</span>:
+<span id="L9907" class="LineNr"> 9907 </span>    <span class="subxComment">#   add-to var1, 0x34</span>
+<span id="L9908" class="LineNr"> 9908 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9909" class="LineNr"> 9909 </span>    <span class="subxComment">#   81 0/subop/add %eax 0x34/imm32</span>
+<span id="L9910" class="LineNr"> 9910 </span>    <span class="subxComment">#</span>
+<span id="L9911" class="LineNr"> 9911 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9912" class="LineNr"> 9912 </span>    55/push-ebp
+<span id="L9913" class="LineNr"> 9913 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9914" class="LineNr"> 9914 </span>    <span class="subxComment"># setup</span>
+<span id="L9915" class="LineNr"> 9915 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9916" class="LineNr"> 9916 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9917" class="LineNr"> 9917 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9918" class="LineNr"> 9918 </span>    68/push 0/imm32/right/null
+<span id="L9919" class="LineNr"> 9919 </span>    68/push 1/imm32/left/int
+<span id="L9920" class="LineNr"> 9920 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9921" class="LineNr"> 9921 </span>    <span class="subxComment"># var var-var1/ecx: var</span>
+<span id="L9922" class="LineNr"> 9922 </span>    68/push 0/imm32/no-register
+<span id="L9923" class="LineNr"> 9923 </span>    68/push 8/imm32/stack-offset
+<span id="L9924" class="LineNr"> 9924 </span>    68/push 1/imm32/block-depth
+<span id="L9925" class="LineNr"> 9925 </span>    51/push-ecx
+<span id="L9926" class="LineNr"> 9926 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
+<span id="L9927" class="LineNr"> 9927 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9928" class="LineNr"> 9928 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
+<span id="L9929" class="LineNr"> 9929 </span>    68/push 0/imm32/right/null
+<span id="L9930" class="LineNr"> 9930 </span>    68/push 0/imm32/left/literal
+<span id="L9931" class="LineNr"> 9931 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L9932" class="LineNr"> 9932 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
+<span id="L9933" class="LineNr"> 9933 </span>    68/push 0/imm32/no-register
+<span id="L9934" class="LineNr"> 9934 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9935" class="LineNr"> 9935 </span>    68/push 1/imm32/block-depth
+<span id="L9936" class="LineNr"> 9936 </span>    52/push-edx
+<span id="L9937" class="LineNr"> 9937 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
+<span id="L9938" class="LineNr"> 9938 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L9939" class="LineNr"> 9939 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
+<span id="L9940" class="LineNr"> 9940 </span>    68/push 0/imm32/is-deref:false
+<span id="L9941" class="LineNr"> 9941 </span>    68/push 0/imm32/next
+<span id="L9942" class="LineNr"> 9942 </span>    52/push-edx/var-var2
+<span id="L9943" class="LineNr"> 9943 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9944" class="LineNr"> 9944 </span>    <span class="subxComment"># var inouts = (handle stmt-var) = [var1, var2]</span>
+<span id="L9945" class="LineNr"> 9945 </span>    68/push 0/imm32/is-deref:false
+<span id="L9946" class="LineNr"> 9946 </span>    56/push-esi/next
+<span id="L9947" class="LineNr"> 9947 </span>    51/push-ecx/var-var1
+<span id="L9948" class="LineNr"> 9948 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L9949" class="LineNr"> 9949 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L9950" class="LineNr"> 9950 </span>    68/push 0/imm32/next
+<span id="L9951" class="LineNr"> 9951 </span>    68/push 0/imm32/outputs
+<span id="L9952" class="LineNr"> 9952 </span>    56/push-esi/inouts
+<span id="L9953" class="LineNr"> 9953 </span>    68/push <span class="Constant">&quot;add-to&quot;</span>/imm32/operation
+<span id="L9954" class="LineNr"> 9954 </span>    68/push 1/imm32
 <span id="L9955" class="LineNr"> 9955 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9956" class="LineNr"> 9956 </span>    <span class="subxComment"># var inouts = (handle stmt-var) = [var1, var2]</span>
-<span id="L9957" class="LineNr"> 9957 </span>    68/push 0/imm32/is-deref:false
-<span id="L9958" class="LineNr"> 9958 </span>    56/push-esi/next
-<span id="L9959" class="LineNr"> 9959 </span>    51/push-ecx/var-var1
-<span id="L9960" class="LineNr"> 9960 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9961" class="LineNr"> 9961 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L9962" class="LineNr"> 9962 </span>    68/push 0/imm32/next
-<span id="L9963" class="LineNr"> 9963 </span>    68/push 0/imm32/outputs
-<span id="L9964" class="LineNr"> 9964 </span>    56/push-esi/inouts
-<span id="L9965" class="LineNr"> 9965 </span>    68/push <span class="Constant">&quot;add-to&quot;</span>/imm32/operation
-<span id="L9966" class="LineNr"> 9966 </span>    68/push 1/imm32
-<span id="L9967" class="LineNr"> 9967 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L9968" class="LineNr"> 9968 </span>    <span class="subxComment"># convert</span>
-<span id="L9969" class="LineNr"> 9969 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L9970" class="LineNr"> 9970 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L9971" class="LineNr"> 9971 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L9972" class="Folded"> 9972 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L9978" class="LineNr"> 9978 </span>    <span class="subxComment"># check output</span>
-<span id="L9979" class="LineNr"> 9979 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;81 0/subop/add *(ebp+0x00000008) 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-add-literal-to-mem&quot;</span>)
-<span id="L9980" class="LineNr"> 9980 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L9981" class="LineNr"> 9981 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L9982" class="LineNr"> 9982 </span>    5d/pop-to-ebp
-<span id="L9983" class="LineNr"> 9983 </span>    c3/return
-<span id="L9984" class="LineNr"> 9984 </span>
-<span id="L9985" class="LineNr"> 9985 </span><span class="subxTest">test-compare-mem-with-reg</span>:
-<span id="L9986" class="LineNr"> 9986 </span>    <span class="subxComment">#   compare var1, var2/eax</span>
-<span id="L9987" class="LineNr"> 9987 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L9988" class="LineNr"> 9988 </span>    <span class="subxComment">#   39/compare *(ebp+___) 0/r32/eax</span>
-<span id="L9989" class="LineNr"> 9989 </span>    <span class="subxComment">#</span>
-<span id="L9990" class="LineNr"> 9990 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L9991" class="LineNr"> 9991 </span>    55/push-ebp
-<span id="L9992" class="LineNr"> 9992 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L9993" class="LineNr"> 9993 </span>    <span class="subxComment"># setup</span>
-<span id="L9994" class="LineNr"> 9994 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L9995" class="LineNr"> 9995 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L9996" class="LineNr"> 9996 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L9997" class="LineNr"> 9997 </span>    68/push 0/imm32/right/null
-<span id="L9998" class="LineNr"> 9998 </span>    68/push 1/imm32/left/int
-<span id="L9999" class="LineNr"> 9999 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10000" class="LineNr">10000 </span>    <span class="subxComment"># var var-var2/ecx: var in eax</span>
-<span id="L10001" class="LineNr">10001 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
-<span id="L10002" class="LineNr">10002 </span>    68/push 0/imm32/no-stack-offset
-<span id="L10003" class="LineNr">10003 </span>    68/push 1/imm32/block-depth
-<span id="L10004" class="LineNr">10004 </span>    51/push-ecx
-<span id="L10005" class="LineNr">10005 </span>    68/push <span class="Constant">&quot;var2&quot;</span>/imm32
-<span id="L10006" class="LineNr">10006 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10007" class="LineNr">10007 </span>    <span class="subxComment"># var var-var1/edx: var</span>
-<span id="L10008" class="LineNr">10008 </span>    68/push 0/imm32/no-register
-<span id="L10009" class="LineNr">10009 </span>    68/push 8/imm32/stack-offset
-<span id="L10010" class="LineNr">10010 </span>    68/push 1/imm32/block-depth
-<span id="L10011" class="LineNr">10011 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
-<span id="L10012" class="LineNr">10012 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
-<span id="L10013" class="LineNr">10013 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L10014" class="LineNr">10014 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
-<span id="L10015" class="LineNr">10015 </span>    68/push 0/imm32/is-deref:false
-<span id="L10016" class="LineNr">10016 </span>    68/push 0/imm32/next
-<span id="L10017" class="LineNr">10017 </span>    51/push-ecx/var-var2
+<span id="L9956" class="LineNr"> 9956 </span>    <span class="subxComment"># convert</span>
+<span id="L9957" class="LineNr"> 9957 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L9958" class="LineNr"> 9958 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L9959" class="LineNr"> 9959 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L9960" class="Folded"> 9960 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L9966" class="LineNr"> 9966 </span>    <span class="subxComment"># check output</span>
+<span id="L9967" class="LineNr"> 9967 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;81 0/subop/add *(ebp+0x00000008) 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-add-literal-to-mem&quot;</span>)
+<span id="L9968" class="LineNr"> 9968 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L9969" class="LineNr"> 9969 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L9970" class="LineNr"> 9970 </span>    5d/pop-to-ebp
+<span id="L9971" class="LineNr"> 9971 </span>    c3/return
+<span id="L9972" class="LineNr"> 9972 </span>
+<span id="L9973" class="LineNr"> 9973 </span><span class="subxTest">test-compare-mem-with-reg</span>:
+<span id="L9974" class="LineNr"> 9974 </span>    <span class="subxComment">#   compare var1, var2/eax</span>
+<span id="L9975" class="LineNr"> 9975 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L9976" class="LineNr"> 9976 </span>    <span class="subxComment">#   39/compare *(ebp+___) 0/r32/eax</span>
+<span id="L9977" class="LineNr"> 9977 </span>    <span class="subxComment">#</span>
+<span id="L9978" class="LineNr"> 9978 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L9979" class="LineNr"> 9979 </span>    55/push-ebp
+<span id="L9980" class="LineNr"> 9980 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L9981" class="LineNr"> 9981 </span>    <span class="subxComment"># setup</span>
+<span id="L9982" class="LineNr"> 9982 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L9983" class="LineNr"> 9983 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L9984" class="LineNr"> 9984 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L9985" class="LineNr"> 9985 </span>    68/push 0/imm32/right/null
+<span id="L9986" class="LineNr"> 9986 </span>    68/push 1/imm32/left/int
+<span id="L9987" class="LineNr"> 9987 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9988" class="LineNr"> 9988 </span>    <span class="subxComment"># var var-var2/ecx: var in eax</span>
+<span id="L9989" class="LineNr"> 9989 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L9990" class="LineNr"> 9990 </span>    68/push 0/imm32/no-stack-offset
+<span id="L9991" class="LineNr"> 9991 </span>    68/push 1/imm32/block-depth
+<span id="L9992" class="LineNr"> 9992 </span>    51/push-ecx
+<span id="L9993" class="LineNr"> 9993 </span>    68/push <span class="Constant">&quot;var2&quot;</span>/imm32
+<span id="L9994" class="LineNr"> 9994 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L9995" class="LineNr"> 9995 </span>    <span class="subxComment"># var var-var1/edx: var</span>
+<span id="L9996" class="LineNr"> 9996 </span>    68/push 0/imm32/no-register
+<span id="L9997" class="LineNr"> 9997 </span>    68/push 8/imm32/stack-offset
+<span id="L9998" class="LineNr"> 9998 </span>    68/push 1/imm32/block-depth
+<span id="L9999" class="LineNr"> 9999 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
+<span id="L10000" class="LineNr">10000 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
+<span id="L10001" class="LineNr">10001 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L10002" class="LineNr">10002 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
+<span id="L10003" class="LineNr">10003 </span>    68/push 0/imm32/is-deref:false
+<span id="L10004" class="LineNr">10004 </span>    68/push 0/imm32/next
+<span id="L10005" class="LineNr">10005 </span>    51/push-ecx/var-var2
+<span id="L10006" class="LineNr">10006 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10007" class="LineNr">10007 </span>    <span class="subxComment"># inouts = [var1, var2]</span>
+<span id="L10008" class="LineNr">10008 </span>    68/push 0/imm32/is-deref:false
+<span id="L10009" class="LineNr">10009 </span>    56/push-esi
+<span id="L10010" class="LineNr">10010 </span>    52/push-edx/var-var1
+<span id="L10011" class="LineNr">10011 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10012" class="LineNr">10012 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L10013" class="LineNr">10013 </span>    68/push 0/imm32/next
+<span id="L10014" class="LineNr">10014 </span>    68/push 0/imm32/outputs
+<span id="L10015" class="LineNr">10015 </span>    56/push-esi/inouts
+<span id="L10016" class="LineNr">10016 </span>    68/push <span class="Constant">&quot;compare&quot;</span>/imm32/operation
+<span id="L10017" class="LineNr">10017 </span>    68/push 1/imm32
 <span id="L10018" class="LineNr">10018 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10019" class="LineNr">10019 </span>    <span class="subxComment"># inouts = [var1, var2]</span>
-<span id="L10020" class="LineNr">10020 </span>    68/push 0/imm32/is-deref:false
-<span id="L10021" class="LineNr">10021 </span>    56/push-esi
-<span id="L10022" class="LineNr">10022 </span>    52/push-edx/var-var1
-<span id="L10023" class="LineNr">10023 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10024" class="LineNr">10024 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L10025" class="LineNr">10025 </span>    68/push 0/imm32/next
-<span id="L10026" class="LineNr">10026 </span>    68/push 0/imm32/outputs
-<span id="L10027" class="LineNr">10027 </span>    56/push-esi/inouts
-<span id="L10028" class="LineNr">10028 </span>    68/push <span class="Constant">&quot;compare&quot;</span>/imm32/operation
-<span id="L10029" class="LineNr">10029 </span>    68/push 1/imm32
-<span id="L10030" class="LineNr">10030 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10031" class="LineNr">10031 </span>    <span class="subxComment"># convert</span>
-<span id="L10032" class="LineNr">10032 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L10033" class="LineNr">10033 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L10034" class="LineNr">10034 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L10035" class="Folded">10035 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L10041" class="LineNr">10041 </span>    <span class="subxComment"># check output</span>
-<span id="L10042" class="LineNr">10042 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;39/compare-&gt; *(ebp+0x00000008) 0x00000000/r32&quot;</span> <span class="Constant">&quot;F - test-compare-mem-with-reg&quot;</span>)
-<span id="L10043" class="LineNr">10043 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L10044" class="LineNr">10044 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L10045" class="LineNr">10045 </span>    5d/pop-to-ebp
-<span id="L10046" class="LineNr">10046 </span>    c3/return
-<span id="L10047" class="LineNr">10047 </span>
-<span id="L10048" class="LineNr">10048 </span><span class="subxTest">test-compare-reg-with-mem</span>:
-<span id="L10049" class="LineNr">10049 </span>    <span class="subxComment">#   compare var1/eax, var2</span>
-<span id="L10050" class="LineNr">10050 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L10051" class="LineNr">10051 </span>    <span class="subxComment">#   3b/compare *(ebp+___) 0/r32/eax</span>
-<span id="L10052" class="LineNr">10052 </span>    <span class="subxComment">#</span>
-<span id="L10053" class="LineNr">10053 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L10054" class="LineNr">10054 </span>    55/push-ebp
-<span id="L10055" class="LineNr">10055 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L10056" class="LineNr">10056 </span>    <span class="subxComment"># setup</span>
-<span id="L10057" class="LineNr">10057 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L10058" class="LineNr">10058 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L10059" class="LineNr">10059 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L10060" class="LineNr">10060 </span>    68/push 0/imm32/right/null
-<span id="L10061" class="LineNr">10061 </span>    68/push 1/imm32/left/int
-<span id="L10062" class="LineNr">10062 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10063" class="LineNr">10063 </span>    <span class="subxComment"># var var-var1/ecx: var in eax</span>
-<span id="L10064" class="LineNr">10064 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
-<span id="L10065" class="LineNr">10065 </span>    68/push 0/imm32/no-stack-offset
-<span id="L10066" class="LineNr">10066 </span>    68/push 1/imm32/block-depth
-<span id="L10067" class="LineNr">10067 </span>    51/push-ecx
-<span id="L10068" class="LineNr">10068 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
-<span id="L10069" class="LineNr">10069 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10070" class="LineNr">10070 </span>    <span class="subxComment"># var var-var2/edx: var</span>
-<span id="L10071" class="LineNr">10071 </span>    68/push 0/imm32/no-register
-<span id="L10072" class="LineNr">10072 </span>    68/push 8/imm32/stack-offset
-<span id="L10073" class="LineNr">10073 </span>    68/push 1/imm32/block-depth
-<span id="L10074" class="LineNr">10074 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
-<span id="L10075" class="LineNr">10075 </span>    68/push <span class="Constant">&quot;var2&quot;</span>/imm32
-<span id="L10076" class="LineNr">10076 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L10077" class="LineNr">10077 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
-<span id="L10078" class="LineNr">10078 </span>    68/push 0/imm32/is-deref:false
-<span id="L10079" class="LineNr">10079 </span>    68/push 0/imm32/next
-<span id="L10080" class="LineNr">10080 </span>    52/push-edx/var-var2
+<span id="L10019" class="LineNr">10019 </span>    <span class="subxComment"># convert</span>
+<span id="L10020" class="LineNr">10020 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L10021" class="LineNr">10021 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L10022" class="LineNr">10022 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L10023" class="Folded">10023 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L10029" class="LineNr">10029 </span>    <span class="subxComment"># check output</span>
+<span id="L10030" class="LineNr">10030 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;39/compare-&gt; *(ebp+0x00000008) 0x00000000/r32&quot;</span> <span class="Constant">&quot;F - test-compare-mem-with-reg&quot;</span>)
+<span id="L10031" class="LineNr">10031 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L10032" class="LineNr">10032 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L10033" class="LineNr">10033 </span>    5d/pop-to-ebp
+<span id="L10034" class="LineNr">10034 </span>    c3/return
+<span id="L10035" class="LineNr">10035 </span>
+<span id="L10036" class="LineNr">10036 </span><span class="subxTest">test-compare-reg-with-mem</span>:
+<span id="L10037" class="LineNr">10037 </span>    <span class="subxComment">#   compare var1/eax, var2</span>
+<span id="L10038" class="LineNr">10038 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L10039" class="LineNr">10039 </span>    <span class="subxComment">#   3b/compare *(ebp+___) 0/r32/eax</span>
+<span id="L10040" class="LineNr">10040 </span>    <span class="subxComment">#</span>
+<span id="L10041" class="LineNr">10041 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L10042" class="LineNr">10042 </span>    55/push-ebp
+<span id="L10043" class="LineNr">10043 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L10044" class="LineNr">10044 </span>    <span class="subxComment"># setup</span>
+<span id="L10045" class="LineNr">10045 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L10046" class="LineNr">10046 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L10047" class="LineNr">10047 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L10048" class="LineNr">10048 </span>    68/push 0/imm32/right/null
+<span id="L10049" class="LineNr">10049 </span>    68/push 1/imm32/left/int
+<span id="L10050" class="LineNr">10050 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10051" class="LineNr">10051 </span>    <span class="subxComment"># var var-var1/ecx: var in eax</span>
+<span id="L10052" class="LineNr">10052 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L10053" class="LineNr">10053 </span>    68/push 0/imm32/no-stack-offset
+<span id="L10054" class="LineNr">10054 </span>    68/push 1/imm32/block-depth
+<span id="L10055" class="LineNr">10055 </span>    51/push-ecx
+<span id="L10056" class="LineNr">10056 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
+<span id="L10057" class="LineNr">10057 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10058" class="LineNr">10058 </span>    <span class="subxComment"># var var-var2/edx: var</span>
+<span id="L10059" class="LineNr">10059 </span>    68/push 0/imm32/no-register
+<span id="L10060" class="LineNr">10060 </span>    68/push 8/imm32/stack-offset
+<span id="L10061" class="LineNr">10061 </span>    68/push 1/imm32/block-depth
+<span id="L10062" class="LineNr">10062 </span>    ff 6/subop/push *(ecx+4)  <span class="subxComment"># Var-type</span>
+<span id="L10063" class="LineNr">10063 </span>    68/push <span class="Constant">&quot;var2&quot;</span>/imm32
+<span id="L10064" class="LineNr">10064 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L10065" class="LineNr">10065 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
+<span id="L10066" class="LineNr">10066 </span>    68/push 0/imm32/is-deref:false
+<span id="L10067" class="LineNr">10067 </span>    68/push 0/imm32/next
+<span id="L10068" class="LineNr">10068 </span>    52/push-edx/var-var2
+<span id="L10069" class="LineNr">10069 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10070" class="LineNr">10070 </span>    <span class="subxComment"># inouts = [var1, var2]</span>
+<span id="L10071" class="LineNr">10071 </span>    68/push 0/imm32/is-deref:false
+<span id="L10072" class="LineNr">10072 </span>    56/push-esi
+<span id="L10073" class="LineNr">10073 </span>    51/push-ecx/var-var1
+<span id="L10074" class="LineNr">10074 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10075" class="LineNr">10075 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L10076" class="LineNr">10076 </span>    68/push 0/imm32/next
+<span id="L10077" class="LineNr">10077 </span>    68/push 0/imm32/outputs
+<span id="L10078" class="LineNr">10078 </span>    56/push-esi/inouts
+<span id="L10079" class="LineNr">10079 </span>    68/push <span class="Constant">&quot;compare&quot;</span>/imm32/operation
+<span id="L10080" class="LineNr">10080 </span>    68/push 1/imm32
 <span id="L10081" class="LineNr">10081 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10082" class="LineNr">10082 </span>    <span class="subxComment"># inouts = [var1, var2]</span>
-<span id="L10083" class="LineNr">10083 </span>    68/push 0/imm32/is-deref:false
-<span id="L10084" class="LineNr">10084 </span>    56/push-esi
-<span id="L10085" class="LineNr">10085 </span>    51/push-ecx/var-var1
-<span id="L10086" class="LineNr">10086 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10087" class="LineNr">10087 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L10088" class="LineNr">10088 </span>    68/push 0/imm32/next
-<span id="L10089" class="LineNr">10089 </span>    68/push 0/imm32/outputs
-<span id="L10090" class="LineNr">10090 </span>    56/push-esi/inouts
-<span id="L10091" class="LineNr">10091 </span>    68/push <span class="Constant">&quot;compare&quot;</span>/imm32/operation
-<span id="L10092" class="LineNr">10092 </span>    68/push 1/imm32
-<span id="L10093" class="LineNr">10093 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10094" class="LineNr">10094 </span>    <span class="subxComment"># convert</span>
-<span id="L10095" class="LineNr">10095 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L10096" class="LineNr">10096 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L10097" class="LineNr">10097 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L10098" class="Folded">10098 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L10104" class="LineNr">10104 </span>    <span class="subxComment"># check output</span>
-<span id="L10105" class="LineNr">10105 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;3b/compare&lt;- *(ebp+0x00000008) 0x00000000/r32&quot;</span> <span class="Constant">&quot;F - test-compare-reg-with-mem&quot;</span>)
-<span id="L10106" class="LineNr">10106 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L10107" class="LineNr">10107 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L10108" class="LineNr">10108 </span>    5d/pop-to-ebp
-<span id="L10109" class="LineNr">10109 </span>    c3/return
-<span id="L10110" class="LineNr">10110 </span>
-<span id="L10111" class="LineNr">10111 </span><span class="subxTest">test-compare-mem-with-literal</span>:
-<span id="L10112" class="LineNr">10112 </span>    <span class="subxComment">#   compare var1, 0x34</span>
-<span id="L10113" class="LineNr">10113 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L10114" class="LineNr">10114 </span>    <span class="subxComment">#   81 7/subop/compare *(ebp+___) 0x34/imm32</span>
-<span id="L10115" class="LineNr">10115 </span>    <span class="subxComment">#</span>
-<span id="L10116" class="LineNr">10116 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L10117" class="LineNr">10117 </span>    55/push-ebp
-<span id="L10118" class="LineNr">10118 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L10119" class="LineNr">10119 </span>    <span class="subxComment"># setup</span>
-<span id="L10120" class="LineNr">10120 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L10121" class="LineNr">10121 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L10122" class="LineNr">10122 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L10123" class="LineNr">10123 </span>    68/push 0/imm32/right/null
-<span id="L10124" class="LineNr">10124 </span>    68/push 1/imm32/left/int
-<span id="L10125" class="LineNr">10125 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10126" class="LineNr">10126 </span>    <span class="subxComment"># var var-var1/ecx: var</span>
-<span id="L10127" class="LineNr">10127 </span>    68/push 0/imm32/no-register
-<span id="L10128" class="LineNr">10128 </span>    68/push 8/imm32/stack-offset
-<span id="L10129" class="LineNr">10129 </span>    68/push 1/imm32/block-depth
-<span id="L10130" class="LineNr">10130 </span>    51/push-ecx
-<span id="L10131" class="LineNr">10131 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
-<span id="L10132" class="LineNr">10132 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10133" class="LineNr">10133 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
-<span id="L10134" class="LineNr">10134 </span>    68/push 0/imm32/right/null
-<span id="L10135" class="LineNr">10135 </span>    68/push 0/imm32/left/literal
-<span id="L10136" class="LineNr">10136 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L10137" class="LineNr">10137 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
-<span id="L10138" class="LineNr">10138 </span>    68/push 0/imm32/no-register
-<span id="L10139" class="LineNr">10139 </span>    68/push 0/imm32/no-stack-offset
-<span id="L10140" class="LineNr">10140 </span>    68/push 1/imm32/block-depth
-<span id="L10141" class="LineNr">10141 </span>    52/push-edx
-<span id="L10142" class="LineNr">10142 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
-<span id="L10143" class="LineNr">10143 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L10144" class="LineNr">10144 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
-<span id="L10145" class="LineNr">10145 </span>    68/push 0/imm32/is-deref:false
-<span id="L10146" class="LineNr">10146 </span>    68/push 0/imm32/next
-<span id="L10147" class="LineNr">10147 </span>    52/push-edx/var-var2
+<span id="L10082" class="LineNr">10082 </span>    <span class="subxComment"># convert</span>
+<span id="L10083" class="LineNr">10083 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L10084" class="LineNr">10084 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L10085" class="LineNr">10085 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L10086" class="Folded">10086 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L10092" class="LineNr">10092 </span>    <span class="subxComment"># check output</span>
+<span id="L10093" class="LineNr">10093 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;3b/compare&lt;- *(ebp+0x00000008) 0x00000000/r32&quot;</span> <span class="Constant">&quot;F - test-compare-reg-with-mem&quot;</span>)
+<span id="L10094" class="LineNr">10094 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L10095" class="LineNr">10095 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L10096" class="LineNr">10096 </span>    5d/pop-to-ebp
+<span id="L10097" class="LineNr">10097 </span>    c3/return
+<span id="L10098" class="LineNr">10098 </span>
+<span id="L10099" class="LineNr">10099 </span><span class="subxTest">test-compare-mem-with-literal</span>:
+<span id="L10100" class="LineNr">10100 </span>    <span class="subxComment">#   compare var1, 0x34</span>
+<span id="L10101" class="LineNr">10101 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L10102" class="LineNr">10102 </span>    <span class="subxComment">#   81 7/subop/compare *(ebp+___) 0x34/imm32</span>
+<span id="L10103" class="LineNr">10103 </span>    <span class="subxComment">#</span>
+<span id="L10104" class="LineNr">10104 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L10105" class="LineNr">10105 </span>    55/push-ebp
+<span id="L10106" class="LineNr">10106 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L10107" class="LineNr">10107 </span>    <span class="subxComment"># setup</span>
+<span id="L10108" class="LineNr">10108 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L10109" class="LineNr">10109 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L10110" class="LineNr">10110 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L10111" class="LineNr">10111 </span>    68/push 0/imm32/right/null
+<span id="L10112" class="LineNr">10112 </span>    68/push 1/imm32/left/int
+<span id="L10113" class="LineNr">10113 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10114" class="LineNr">10114 </span>    <span class="subxComment"># var var-var1/ecx: var</span>
+<span id="L10115" class="LineNr">10115 </span>    68/push 0/imm32/no-register
+<span id="L10116" class="LineNr">10116 </span>    68/push 8/imm32/stack-offset
+<span id="L10117" class="LineNr">10117 </span>    68/push 1/imm32/block-depth
+<span id="L10118" class="LineNr">10118 </span>    51/push-ecx
+<span id="L10119" class="LineNr">10119 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
+<span id="L10120" class="LineNr">10120 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10121" class="LineNr">10121 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
+<span id="L10122" class="LineNr">10122 </span>    68/push 0/imm32/right/null
+<span id="L10123" class="LineNr">10123 </span>    68/push 0/imm32/left/literal
+<span id="L10124" class="LineNr">10124 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L10125" class="LineNr">10125 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
+<span id="L10126" class="LineNr">10126 </span>    68/push 0/imm32/no-register
+<span id="L10127" class="LineNr">10127 </span>    68/push 0/imm32/no-stack-offset
+<span id="L10128" class="LineNr">10128 </span>    68/push 1/imm32/block-depth
+<span id="L10129" class="LineNr">10129 </span>    52/push-edx
+<span id="L10130" class="LineNr">10130 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
+<span id="L10131" class="LineNr">10131 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L10132" class="LineNr">10132 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
+<span id="L10133" class="LineNr">10133 </span>    68/push 0/imm32/is-deref:false
+<span id="L10134" class="LineNr">10134 </span>    68/push 0/imm32/next
+<span id="L10135" class="LineNr">10135 </span>    52/push-edx/var-var2
+<span id="L10136" class="LineNr">10136 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10137" class="LineNr">10137 </span>    <span class="subxComment"># inouts = [var1, var2]</span>
+<span id="L10138" class="LineNr">10138 </span>    68/push 0/imm32/is-deref:false
+<span id="L10139" class="LineNr">10139 </span>    56/push-esi/next
+<span id="L10140" class="LineNr">10140 </span>    51/push-ecx/var-var1
+<span id="L10141" class="LineNr">10141 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10142" class="LineNr">10142 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L10143" class="LineNr">10143 </span>    68/push 0/imm32/next
+<span id="L10144" class="LineNr">10144 </span>    68/push 0/imm32/outputs
+<span id="L10145" class="LineNr">10145 </span>    56/push-esi/inouts
+<span id="L10146" class="LineNr">10146 </span>    68/push <span class="Constant">&quot;compare&quot;</span>/imm32/operation
+<span id="L10147" class="LineNr">10147 </span>    68/push 1/imm32
 <span id="L10148" class="LineNr">10148 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10149" class="LineNr">10149 </span>    <span class="subxComment"># inouts = [var1, var2]</span>
-<span id="L10150" class="LineNr">10150 </span>    68/push 0/imm32/is-deref:false
-<span id="L10151" class="LineNr">10151 </span>    56/push-esi/next
-<span id="L10152" class="LineNr">10152 </span>    51/push-ecx/var-var1
-<span id="L10153" class="LineNr">10153 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10154" class="LineNr">10154 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L10155" class="LineNr">10155 </span>    68/push 0/imm32/next
-<span id="L10156" class="LineNr">10156 </span>    68/push 0/imm32/outputs
-<span id="L10157" class="LineNr">10157 </span>    56/push-esi/inouts
-<span id="L10158" class="LineNr">10158 </span>    68/push <span class="Constant">&quot;compare&quot;</span>/imm32/operation
-<span id="L10159" class="LineNr">10159 </span>    68/push 1/imm32
-<span id="L10160" class="LineNr">10160 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10161" class="LineNr">10161 </span>    <span class="subxComment"># convert</span>
-<span id="L10162" class="LineNr">10162 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L10163" class="LineNr">10163 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L10164" class="LineNr">10164 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L10165" class="Folded">10165 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L10171" class="LineNr">10171 </span>    <span class="subxComment"># check output</span>
-<span id="L10172" class="LineNr">10172 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;81 7/subop/compare *(ebp+0x00000008) 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-compare-mem-with-literal&quot;</span>)
-<span id="L10173" class="LineNr">10173 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L10174" class="LineNr">10174 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L10175" class="LineNr">10175 </span>    5d/pop-to-ebp
-<span id="L10176" class="LineNr">10176 </span>    c3/return
-<span id="L10177" class="LineNr">10177 </span>
-<span id="L10178" class="LineNr">10178 </span><span class="subxTest">test-compare-eax-with-literal</span>:
-<span id="L10179" class="LineNr">10179 </span>    <span class="subxComment">#   compare var1/eax 0x34</span>
-<span id="L10180" class="LineNr">10180 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L10181" class="LineNr">10181 </span>    <span class="subxComment">#   3d/compare-eax-with 0x34/imm32</span>
-<span id="L10182" class="LineNr">10182 </span>    <span class="subxComment">#</span>
-<span id="L10183" class="LineNr">10183 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L10184" class="LineNr">10184 </span>    55/push-ebp
-<span id="L10185" class="LineNr">10185 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L10186" class="LineNr">10186 </span>    <span class="subxComment"># setup</span>
-<span id="L10187" class="LineNr">10187 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L10188" class="LineNr">10188 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L10189" class="LineNr">10189 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L10190" class="LineNr">10190 </span>    68/push 0/imm32/right/null
-<span id="L10191" class="LineNr">10191 </span>    68/push 1/imm32/left/int
-<span id="L10192" class="LineNr">10192 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10193" class="LineNr">10193 </span>    <span class="subxComment"># var var-var1/ecx: var in eax</span>
-<span id="L10194" class="LineNr">10194 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
-<span id="L10195" class="LineNr">10195 </span>    68/push 0/imm32/no-stack-offset
-<span id="L10196" class="LineNr">10196 </span>    68/push 1/imm32/block-depth
-<span id="L10197" class="LineNr">10197 </span>    51/push-ecx
-<span id="L10198" class="LineNr">10198 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
-<span id="L10199" class="LineNr">10199 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10200" class="LineNr">10200 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
-<span id="L10201" class="LineNr">10201 </span>    68/push 0/imm32/right/null
-<span id="L10202" class="LineNr">10202 </span>    68/push 0/imm32/left/literal
-<span id="L10203" class="LineNr">10203 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L10204" class="LineNr">10204 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
-<span id="L10205" class="LineNr">10205 </span>    68/push 0/imm32/no-register
-<span id="L10206" class="LineNr">10206 </span>    68/push 0/imm32/no-stack-offset
-<span id="L10207" class="LineNr">10207 </span>    68/push 1/imm32/block-depth
-<span id="L10208" class="LineNr">10208 </span>    52/push-edx
-<span id="L10209" class="LineNr">10209 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
-<span id="L10210" class="LineNr">10210 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L10211" class="LineNr">10211 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
-<span id="L10212" class="LineNr">10212 </span>    68/push 0/imm32/is-deref:false
-<span id="L10213" class="LineNr">10213 </span>    68/push 0/imm32/next
-<span id="L10214" class="LineNr">10214 </span>    52/push-edx/var-var2
+<span id="L10149" class="LineNr">10149 </span>    <span class="subxComment"># convert</span>
+<span id="L10150" class="LineNr">10150 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L10151" class="LineNr">10151 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L10152" class="LineNr">10152 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L10153" class="Folded">10153 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L10159" class="LineNr">10159 </span>    <span class="subxComment"># check output</span>
+<span id="L10160" class="LineNr">10160 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;81 7/subop/compare *(ebp+0x00000008) 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-compare-mem-with-literal&quot;</span>)
+<span id="L10161" class="LineNr">10161 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L10162" class="LineNr">10162 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L10163" class="LineNr">10163 </span>    5d/pop-to-ebp
+<span id="L10164" class="LineNr">10164 </span>    c3/return
+<span id="L10165" class="LineNr">10165 </span>
+<span id="L10166" class="LineNr">10166 </span><span class="subxTest">test-compare-eax-with-literal</span>:
+<span id="L10167" class="LineNr">10167 </span>    <span class="subxComment">#   compare var1/eax 0x34</span>
+<span id="L10168" class="LineNr">10168 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L10169" class="LineNr">10169 </span>    <span class="subxComment">#   3d/compare-eax-with 0x34/imm32</span>
+<span id="L10170" class="LineNr">10170 </span>    <span class="subxComment">#</span>
+<span id="L10171" class="LineNr">10171 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L10172" class="LineNr">10172 </span>    55/push-ebp
+<span id="L10173" class="LineNr">10173 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L10174" class="LineNr">10174 </span>    <span class="subxComment"># setup</span>
+<span id="L10175" class="LineNr">10175 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L10176" class="LineNr">10176 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L10177" class="LineNr">10177 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L10178" class="LineNr">10178 </span>    68/push 0/imm32/right/null
+<span id="L10179" class="LineNr">10179 </span>    68/push 1/imm32/left/int
+<span id="L10180" class="LineNr">10180 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10181" class="LineNr">10181 </span>    <span class="subxComment"># var var-var1/ecx: var in eax</span>
+<span id="L10182" class="LineNr">10182 </span>    68/push <span class="Constant">&quot;eax&quot;</span>/imm32/register
+<span id="L10183" class="LineNr">10183 </span>    68/push 0/imm32/no-stack-offset
+<span id="L10184" class="LineNr">10184 </span>    68/push 1/imm32/block-depth
+<span id="L10185" class="LineNr">10185 </span>    51/push-ecx
+<span id="L10186" class="LineNr">10186 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
+<span id="L10187" class="LineNr">10187 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10188" class="LineNr">10188 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
+<span id="L10189" class="LineNr">10189 </span>    68/push 0/imm32/right/null
+<span id="L10190" class="LineNr">10190 </span>    68/push 0/imm32/left/literal
+<span id="L10191" class="LineNr">10191 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L10192" class="LineNr">10192 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
+<span id="L10193" class="LineNr">10193 </span>    68/push 0/imm32/no-register
+<span id="L10194" class="LineNr">10194 </span>    68/push 0/imm32/no-stack-offset
+<span id="L10195" class="LineNr">10195 </span>    68/push 1/imm32/block-depth
+<span id="L10196" class="LineNr">10196 </span>    52/push-edx
+<span id="L10197" class="LineNr">10197 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
+<span id="L10198" class="LineNr">10198 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L10199" class="LineNr">10199 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
+<span id="L10200" class="LineNr">10200 </span>    68/push 0/imm32/is-deref:false
+<span id="L10201" class="LineNr">10201 </span>    68/push 0/imm32/next
+<span id="L10202" class="LineNr">10202 </span>    52/push-edx/var-var2
+<span id="L10203" class="LineNr">10203 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10204" class="LineNr">10204 </span>    <span class="subxComment"># inouts = [var1, var2]</span>
+<span id="L10205" class="LineNr">10205 </span>    68/push 0/imm32/is-deref:false
+<span id="L10206" class="LineNr">10206 </span>    56/push-esi/next
+<span id="L10207" class="LineNr">10207 </span>    51/push-ecx/var-var1
+<span id="L10208" class="LineNr">10208 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10209" class="LineNr">10209 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L10210" class="LineNr">10210 </span>    68/push 0/imm32/next
+<span id="L10211" class="LineNr">10211 </span>    68/push 0/imm32/outputs
+<span id="L10212" class="LineNr">10212 </span>    56/push-esi/inouts
+<span id="L10213" class="LineNr">10213 </span>    68/push <span class="Constant">&quot;compare&quot;</span>/imm32/operation
+<span id="L10214" class="LineNr">10214 </span>    68/push 1/imm32/regular-stmt
 <span id="L10215" class="LineNr">10215 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10216" class="LineNr">10216 </span>    <span class="subxComment"># inouts = [var1, var2]</span>
-<span id="L10217" class="LineNr">10217 </span>    68/push 0/imm32/is-deref:false
-<span id="L10218" class="LineNr">10218 </span>    56/push-esi/next
-<span id="L10219" class="LineNr">10219 </span>    51/push-ecx/var-var1
-<span id="L10220" class="LineNr">10220 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10221" class="LineNr">10221 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L10222" class="LineNr">10222 </span>    68/push 0/imm32/next
-<span id="L10223" class="LineNr">10223 </span>    68/push 0/imm32/outputs
-<span id="L10224" class="LineNr">10224 </span>    56/push-esi/inouts
-<span id="L10225" class="LineNr">10225 </span>    68/push <span class="Constant">&quot;compare&quot;</span>/imm32/operation
-<span id="L10226" class="LineNr">10226 </span>    68/push 1/imm32/regular-stmt
-<span id="L10227" class="LineNr">10227 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10228" class="LineNr">10228 </span>    <span class="subxComment"># convert</span>
-<span id="L10229" class="LineNr">10229 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L10230" class="LineNr">10230 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L10231" class="LineNr">10231 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L10232" class="Folded">10232 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L10238" class="LineNr">10238 </span>    <span class="subxComment"># check output</span>
-<span id="L10239" class="LineNr">10239 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;3d/compare-eax-with 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-compare-eax-with-literal&quot;</span>)
-<span id="L10240" class="LineNr">10240 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L10241" class="LineNr">10241 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L10242" class="LineNr">10242 </span>    5d/pop-to-ebp
-<span id="L10243" class="LineNr">10243 </span>    c3/return
-<span id="L10244" class="LineNr">10244 </span>
-<span id="L10245" class="LineNr">10245 </span><span class="subxTest">test-compare-reg-with-literal</span>:
-<span id="L10246" class="LineNr">10246 </span>    <span class="subxComment">#   compare var1/ecx 0x34</span>
-<span id="L10247" class="LineNr">10247 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L10248" class="LineNr">10248 </span>    <span class="subxComment">#   81 7/subop/compare %ecx 0x34/imm32</span>
-<span id="L10249" class="LineNr">10249 </span>    <span class="subxComment">#</span>
-<span id="L10250" class="LineNr">10250 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L10251" class="LineNr">10251 </span>    55/push-ebp
-<span id="L10252" class="LineNr">10252 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L10253" class="LineNr">10253 </span>    <span class="subxComment"># setup</span>
-<span id="L10254" class="LineNr">10254 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L10255" class="LineNr">10255 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L10256" class="LineNr">10256 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L10257" class="LineNr">10257 </span>    68/push 0/imm32/right/null
-<span id="L10258" class="LineNr">10258 </span>    68/push 1/imm32/left/int
-<span id="L10259" class="LineNr">10259 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10260" class="LineNr">10260 </span>    <span class="subxComment"># var var-var1/ecx: var in ecx</span>
-<span id="L10261" class="LineNr">10261 </span>    68/push <span class="Constant">&quot;ecx&quot;</span>/imm32/register
-<span id="L10262" class="LineNr">10262 </span>    68/push 0/imm32/no-stack-offset
-<span id="L10263" class="LineNr">10263 </span>    68/push 1/imm32/block-depth
-<span id="L10264" class="LineNr">10264 </span>    51/push-ecx
-<span id="L10265" class="LineNr">10265 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
-<span id="L10266" class="LineNr">10266 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10267" class="LineNr">10267 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
-<span id="L10268" class="LineNr">10268 </span>    68/push 0/imm32/right/null
-<span id="L10269" class="LineNr">10269 </span>    68/push 0/imm32/left/literal
-<span id="L10270" class="LineNr">10270 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L10271" class="LineNr">10271 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
-<span id="L10272" class="LineNr">10272 </span>    68/push 0/imm32/no-register
-<span id="L10273" class="LineNr">10273 </span>    68/push 0/imm32/no-stack-offset
-<span id="L10274" class="LineNr">10274 </span>    68/push 1/imm32/block-depth
-<span id="L10275" class="LineNr">10275 </span>    52/push-edx
-<span id="L10276" class="LineNr">10276 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
-<span id="L10277" class="LineNr">10277 </span>    89/&lt;- %edx 4/r32/esp
-<span id="L10278" class="LineNr">10278 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
-<span id="L10279" class="LineNr">10279 </span>    68/push 0/imm32/is-deref:false
-<span id="L10280" class="LineNr">10280 </span>    68/push 0/imm32/next
-<span id="L10281" class="LineNr">10281 </span>    52/push-edx/var-var2
+<span id="L10216" class="LineNr">10216 </span>    <span class="subxComment"># convert</span>
+<span id="L10217" class="LineNr">10217 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L10218" class="LineNr">10218 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L10219" class="LineNr">10219 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L10220" class="Folded">10220 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L10226" class="LineNr">10226 </span>    <span class="subxComment"># check output</span>
+<span id="L10227" class="LineNr">10227 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;3d/compare-eax-with 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-compare-eax-with-literal&quot;</span>)
+<span id="L10228" class="LineNr">10228 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L10229" class="LineNr">10229 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L10230" class="LineNr">10230 </span>    5d/pop-to-ebp
+<span id="L10231" class="LineNr">10231 </span>    c3/return
+<span id="L10232" class="LineNr">10232 </span>
+<span id="L10233" class="LineNr">10233 </span><span class="subxTest">test-compare-reg-with-literal</span>:
+<span id="L10234" class="LineNr">10234 </span>    <span class="subxComment">#   compare var1/ecx 0x34</span>
+<span id="L10235" class="LineNr">10235 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L10236" class="LineNr">10236 </span>    <span class="subxComment">#   81 7/subop/compare %ecx 0x34/imm32</span>
+<span id="L10237" class="LineNr">10237 </span>    <span class="subxComment">#</span>
+<span id="L10238" class="LineNr">10238 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L10239" class="LineNr">10239 </span>    55/push-ebp
+<span id="L10240" class="LineNr">10240 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L10241" class="LineNr">10241 </span>    <span class="subxComment"># setup</span>
+<span id="L10242" class="LineNr">10242 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L10243" class="LineNr">10243 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L10244" class="LineNr">10244 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L10245" class="LineNr">10245 </span>    68/push 0/imm32/right/null
+<span id="L10246" class="LineNr">10246 </span>    68/push 1/imm32/left/int
+<span id="L10247" class="LineNr">10247 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10248" class="LineNr">10248 </span>    <span class="subxComment"># var var-var1/ecx: var in ecx</span>
+<span id="L10249" class="LineNr">10249 </span>    68/push <span class="Constant">&quot;ecx&quot;</span>/imm32/register
+<span id="L10250" class="LineNr">10250 </span>    68/push 0/imm32/no-stack-offset
+<span id="L10251" class="LineNr">10251 </span>    68/push 1/imm32/block-depth
+<span id="L10252" class="LineNr">10252 </span>    51/push-ecx
+<span id="L10253" class="LineNr">10253 </span>    68/push <span class="Constant">&quot;var1&quot;</span>/imm32
+<span id="L10254" class="LineNr">10254 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10255" class="LineNr">10255 </span>    <span class="subxComment"># var type/edx: (handle tree type-id) = literal</span>
+<span id="L10256" class="LineNr">10256 </span>    68/push 0/imm32/right/null
+<span id="L10257" class="LineNr">10257 </span>    68/push 0/imm32/left/literal
+<span id="L10258" class="LineNr">10258 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L10259" class="LineNr">10259 </span>    <span class="subxComment"># var var-var2/edx: var literal</span>
+<span id="L10260" class="LineNr">10260 </span>    68/push 0/imm32/no-register
+<span id="L10261" class="LineNr">10261 </span>    68/push 0/imm32/no-stack-offset
+<span id="L10262" class="LineNr">10262 </span>    68/push 1/imm32/block-depth
+<span id="L10263" class="LineNr">10263 </span>    52/push-edx
+<span id="L10264" class="LineNr">10264 </span>    68/push <span class="Constant">&quot;0x34&quot;</span>/imm32
+<span id="L10265" class="LineNr">10265 </span>    89/&lt;- %edx 4/r32/esp
+<span id="L10266" class="LineNr">10266 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var) = [var2]</span>
+<span id="L10267" class="LineNr">10267 </span>    68/push 0/imm32/is-deref:false
+<span id="L10268" class="LineNr">10268 </span>    68/push 0/imm32/next
+<span id="L10269" class="LineNr">10269 </span>    52/push-edx/var-var2
+<span id="L10270" class="LineNr">10270 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10271" class="LineNr">10271 </span>    <span class="subxComment"># inouts = [var1, var2]</span>
+<span id="L10272" class="LineNr">10272 </span>    68/push 0/imm32/is-deref:false
+<span id="L10273" class="LineNr">10273 </span>    56/push-esi/next
+<span id="L10274" class="LineNr">10274 </span>    51/push-ecx/var-var1
+<span id="L10275" class="LineNr">10275 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10276" class="LineNr">10276 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L10277" class="LineNr">10277 </span>    68/push 0/imm32/next
+<span id="L10278" class="LineNr">10278 </span>    68/push 0/imm32/outputs
+<span id="L10279" class="LineNr">10279 </span>    56/push-esi/inouts
+<span id="L10280" class="LineNr">10280 </span>    68/push <span class="Constant">&quot;compare&quot;</span>/imm32/operation
+<span id="L10281" class="LineNr">10281 </span>    68/push 1/imm32/regular-stmt
 <span id="L10282" class="LineNr">10282 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10283" class="LineNr">10283 </span>    <span class="subxComment"># inouts = [var1, var2]</span>
-<span id="L10284" class="LineNr">10284 </span>    68/push 0/imm32/is-deref:false
-<span id="L10285" class="LineNr">10285 </span>    56/push-esi/next
-<span id="L10286" class="LineNr">10286 </span>    51/push-ecx/var-var1
-<span id="L10287" class="LineNr">10287 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10288" class="LineNr">10288 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L10289" class="LineNr">10289 </span>    68/push 0/imm32/next
-<span id="L10290" class="LineNr">10290 </span>    68/push 0/imm32/outputs
-<span id="L10291" class="LineNr">10291 </span>    56/push-esi/inouts
-<span id="L10292" class="LineNr">10292 </span>    68/push <span class="Constant">&quot;compare&quot;</span>/imm32/operation
-<span id="L10293" class="LineNr">10293 </span>    68/push 1/imm32/regular-stmt
-<span id="L10294" class="LineNr">10294 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10295" class="LineNr">10295 </span>    <span class="subxComment"># convert</span>
-<span id="L10296" class="LineNr">10296 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L10297" class="LineNr">10297 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6983'>Primitives</a></span> 0)
-<span id="L10298" class="LineNr">10298 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L10299" class="Folded">10299 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L10305" class="LineNr">10305 </span>    <span class="subxComment"># check output</span>
-<span id="L10306" class="LineNr">10306 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;81 7/subop/compare %ecx 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-compare-reg-with-literal&quot;</span>)
-<span id="L10307" class="LineNr">10307 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L10308" class="LineNr">10308 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L10309" class="LineNr">10309 </span>    5d/pop-to-ebp
-<span id="L10310" class="LineNr">10310 </span>    c3/return
-<span id="L10311" class="LineNr">10311 </span>
-<span id="L10312" class="LineNr">10312 </span><span class="subxTest">test-emit-subx-stmt-function-call</span>:
-<span id="L10313" class="LineNr">10313 </span>    <span class="subxComment"># Call a function on a variable on the stack.</span>
-<span id="L10314" class="LineNr">10314 </span>    <span class="subxComment">#   f foo</span>
-<span id="L10315" class="LineNr">10315 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L10316" class="LineNr">10316 </span>    <span class="subxComment">#   (f2 *(ebp-8))</span>
-<span id="L10317" class="LineNr">10317 </span>    <span class="subxComment"># (Changing the function name supports overloading in general, but here it</span>
-<span id="L10318" class="LineNr">10318 </span>    <span class="subxComment"># just serves to help disambiguate things.)</span>
+<span id="L10283" class="LineNr">10283 </span>    <span class="subxComment"># convert</span>
+<span id="L10284" class="LineNr">10284 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L10285" class="LineNr">10285 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi <span class="SpecialChar"><a href='mu.subx.html#L6979'>Primitives</a></span> 0)
+<span id="L10286" class="LineNr">10286 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L10287" class="Folded">10287 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L10293" class="LineNr">10293 </span>    <span class="subxComment"># check output</span>
+<span id="L10294" class="LineNr">10294 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;81 7/subop/compare %ecx 0x34/imm32&quot;</span> <span class="Constant">&quot;F - test-compare-reg-with-literal&quot;</span>)
+<span id="L10295" class="LineNr">10295 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L10296" class="LineNr">10296 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L10297" class="LineNr">10297 </span>    5d/pop-to-ebp
+<span id="L10298" class="LineNr">10298 </span>    c3/return
+<span id="L10299" class="LineNr">10299 </span>
+<span id="L10300" class="LineNr">10300 </span><span class="subxTest">test-emit-subx-stmt-function-call</span>:
+<span id="L10301" class="LineNr">10301 </span>    <span class="subxComment"># Call a function on a variable on the stack.</span>
+<span id="L10302" class="LineNr">10302 </span>    <span class="subxComment">#   f foo</span>
+<span id="L10303" class="LineNr">10303 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L10304" class="LineNr">10304 </span>    <span class="subxComment">#   (f2 *(ebp-8))</span>
+<span id="L10305" class="LineNr">10305 </span>    <span class="subxComment"># (Changing the function name supports overloading in general, but here it</span>
+<span id="L10306" class="LineNr">10306 </span>    <span class="subxComment"># just serves to help disambiguate things.)</span>
+<span id="L10307" class="LineNr">10307 </span>    <span class="subxComment">#</span>
+<span id="L10308" class="LineNr">10308 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
+<span id="L10309" class="LineNr">10309 </span>    <span class="subxComment">#   name: 'foo'</span>
+<span id="L10310" class="LineNr">10310 </span>    <span class="subxComment">#   type: int</span>
+<span id="L10311" class="LineNr">10311 </span>    <span class="subxComment">#   stack-offset: -8</span>
+<span id="L10312" class="LineNr">10312 </span>    <span class="subxComment">#</span>
+<span id="L10313" class="LineNr">10313 </span>    <span class="subxComment"># There's nothing in primitives.</span>
+<span id="L10314" class="LineNr">10314 </span>    <span class="subxComment">#</span>
+<span id="L10315" class="LineNr">10315 </span>    <span class="subxComment"># There's a function with this info:</span>
+<span id="L10316" class="LineNr">10316 </span>    <span class="subxComment">#   name: 'f'</span>
+<span id="L10317" class="LineNr">10317 </span>    <span class="subxComment">#   inout: int/mem</span>
+<span id="L10318" class="LineNr">10318 </span>    <span class="subxComment">#   value: 'f2'</span>
 <span id="L10319" class="LineNr">10319 </span>    <span class="subxComment">#</span>
-<span id="L10320" class="LineNr">10320 </span>    <span class="subxComment"># There's a variable on the var stack as follows:</span>
-<span id="L10321" class="LineNr">10321 </span>    <span class="subxComment">#   name: 'foo'</span>
-<span id="L10322" class="LineNr">10322 </span>    <span class="subxComment">#   type: int</span>
-<span id="L10323" class="LineNr">10323 </span>    <span class="subxComment">#   stack-offset: -8</span>
-<span id="L10324" class="LineNr">10324 </span>    <span class="subxComment">#</span>
-<span id="L10325" class="LineNr">10325 </span>    <span class="subxComment"># There's nothing in primitives.</span>
-<span id="L10326" class="LineNr">10326 </span>    <span class="subxComment">#</span>
-<span id="L10327" class="LineNr">10327 </span>    <span class="subxComment"># There's a function with this info:</span>
-<span id="L10328" class="LineNr">10328 </span>    <span class="subxComment">#   name: 'f'</span>
-<span id="L10329" class="LineNr">10329 </span>    <span class="subxComment">#   inout: int/mem</span>
-<span id="L10330" class="LineNr">10330 </span>    <span class="subxComment">#   value: 'f2'</span>
-<span id="L10331" class="LineNr">10331 </span>    <span class="subxComment">#</span>
-<span id="L10332" class="LineNr">10332 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L10333" class="LineNr">10333 </span>    55/push-ebp
-<span id="L10334" class="LineNr">10334 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L10335" class="LineNr">10335 </span>    <span class="subxComment"># setup</span>
-<span id="L10336" class="LineNr">10336 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L10337" class="LineNr">10337 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L10338" class="LineNr">10338 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
-<span id="L10339" class="LineNr">10339 </span>    68/push 0/imm32/right/null
-<span id="L10340" class="LineNr">10340 </span>    68/push 1/imm32/left/int
-<span id="L10341" class="LineNr">10341 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10342" class="LineNr">10342 </span>    <span class="subxComment"># var var-foo/ecx: var</span>
-<span id="L10343" class="LineNr">10343 </span>    68/push 0/imm32/no-register
-<span id="L10344" class="LineNr">10344 </span>    68/push -8/imm32/stack-offset
-<span id="L10345" class="LineNr">10345 </span>    68/push 0/imm32/block-depth
-<span id="L10346" class="LineNr">10346 </span>    51/push-ecx
-<span id="L10347" class="LineNr">10347 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
-<span id="L10348" class="LineNr">10348 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10349" class="LineNr">10349 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var)</span>
-<span id="L10350" class="LineNr">10350 </span>    68/push 0/imm32/is-deref:false
-<span id="L10351" class="LineNr">10351 </span>    68/push 0/imm32/next
-<span id="L10352" class="LineNr">10352 </span>    51/push-ecx/var-foo
-<span id="L10353" class="LineNr">10353 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10354" class="LineNr">10354 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L10355" class="LineNr">10355 </span>    68/push 0/imm32/next
-<span id="L10356" class="LineNr">10356 </span>    68/push 0/imm32/outputs
-<span id="L10357" class="LineNr">10357 </span>    56/push-esi/inouts
-<span id="L10358" class="LineNr">10358 </span>    68/push <span class="Constant">&quot;f&quot;</span>/imm32/operation
-<span id="L10359" class="LineNr">10359 </span>    68/push 1/imm32
-<span id="L10360" class="LineNr">10360 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10361" class="LineNr">10361 </span>    <span class="subxComment"># var functions/ebx: function</span>
-<span id="L10362" class="LineNr">10362 </span>    68/push 0/imm32/next
-<span id="L10363" class="LineNr">10363 </span>    68/push 0/imm32/body
-<span id="L10364" class="LineNr">10364 </span>    68/push 0/imm32/outputs
-<span id="L10365" class="LineNr">10365 </span>    51/push-ecx/inouts  <span class="subxComment"># hack; in practice we won't have the same var in function definition and call</span>
-<span id="L10366" class="LineNr">10366 </span>    68/push <span class="Constant">&quot;f2&quot;</span>/imm32/subx-name
-<span id="L10367" class="LineNr">10367 </span>    68/push <span class="Constant">&quot;f&quot;</span>/imm32/name
-<span id="L10368" class="LineNr">10368 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L10369" class="LineNr">10369 </span>    <span class="subxComment"># convert</span>
-<span id="L10370" class="LineNr">10370 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L10371" class="LineNr">10371 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi 0 %ebx)
-<span id="L10372" class="LineNr">10372 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L10373" class="Folded">10373 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L10379" class="LineNr">10379 </span>    <span class="subxComment"># check output</span>
-<span id="L10380" class="LineNr">10380 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;(f2 *(ebp+0xfffffff8))&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-function-call&quot;</span>)
-<span id="L10381" class="LineNr">10381 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L10382" class="LineNr">10382 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L10383" class="LineNr">10383 </span>    5d/pop-to-ebp
-<span id="L10384" class="LineNr">10384 </span>    c3/return
-<span id="L10385" class="LineNr">10385 </span>
-<span id="L10386" class="LineNr">10386 </span><span class="subxTest">test-emit-subx-stmt-function-call-with-literal-arg</span>:
-<span id="L10387" class="LineNr">10387 </span>    <span class="subxComment"># Call a function on a literal.</span>
-<span id="L10388" class="LineNr">10388 </span>    <span class="subxComment">#   f 34</span>
-<span id="L10389" class="LineNr">10389 </span>    <span class="subxComment"># =&gt;</span>
-<span id="L10390" class="LineNr">10390 </span>    <span class="subxComment">#   (f2 34)</span>
-<span id="L10391" class="LineNr">10391 </span>    <span class="subxComment">#</span>
-<span id="L10392" class="LineNr">10392 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L10393" class="LineNr">10393 </span>    55/push-ebp
-<span id="L10394" class="LineNr">10394 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L10395" class="LineNr">10395 </span>    <span class="subxComment"># setup</span>
-<span id="L10396" class="LineNr">10396 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
-<span id="L10397" class="LineNr">10397 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
-<span id="L10398" class="LineNr">10398 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = literal</span>
-<span id="L10399" class="LineNr">10399 </span>    68/push 0/imm32/right/null
-<span id="L10400" class="LineNr">10400 </span>    68/push 0/imm32/left/literal
-<span id="L10401" class="LineNr">10401 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10402" class="LineNr">10402 </span>    <span class="subxComment"># var var-foo/ecx: var literal</span>
-<span id="L10403" class="LineNr">10403 </span>    68/push 0/imm32/no-register
-<span id="L10404" class="LineNr">10404 </span>    68/push 0/imm32/no-stack-offset
-<span id="L10405" class="LineNr">10405 </span>    68/push 0/imm32/block-depth
-<span id="L10406" class="LineNr">10406 </span>    51/push-ecx
-<span id="L10407" class="LineNr">10407 </span>    68/push <span class="Constant">&quot;34&quot;</span>/imm32
-<span id="L10408" class="LineNr">10408 </span>    89/&lt;- %ecx 4/r32/esp
-<span id="L10409" class="LineNr">10409 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var)</span>
-<span id="L10410" class="LineNr">10410 </span>    68/push 0/imm32/is-deref:false
-<span id="L10411" class="LineNr">10411 </span>    68/push 0/imm32/next
-<span id="L10412" class="LineNr">10412 </span>    51/push-ecx/var-foo
-<span id="L10413" class="LineNr">10413 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10414" class="LineNr">10414 </span>    <span class="subxComment"># var stmt/esi: statement</span>
-<span id="L10415" class="LineNr">10415 </span>    68/push 0/imm32/next
-<span id="L10416" class="LineNr">10416 </span>    68/push 0/imm32/outputs
-<span id="L10417" class="LineNr">10417 </span>    56/push-esi/inouts
-<span id="L10418" class="LineNr">10418 </span>    68/push <span class="Constant">&quot;f&quot;</span>/imm32/operation
-<span id="L10419" class="LineNr">10419 </span>    68/push 1/imm32
-<span id="L10420" class="LineNr">10420 </span>    89/&lt;- %esi 4/r32/esp
-<span id="L10421" class="LineNr">10421 </span>    <span class="subxComment"># var functions/ebx: function</span>
-<span id="L10422" class="LineNr">10422 </span>    68/push 0/imm32/next
-<span id="L10423" class="LineNr">10423 </span>    68/push 0/imm32/body
-<span id="L10424" class="LineNr">10424 </span>    68/push 0/imm32/outputs
-<span id="L10425" class="LineNr">10425 </span>    51/push-ecx/inouts  <span class="subxComment"># hack; in practice we won't have the same var in function definition and call</span>
-<span id="L10426" class="LineNr">10426 </span>    68/push <span class="Constant">&quot;f2&quot;</span>/imm32/subx-name
-<span id="L10427" class="LineNr">10427 </span>    68/push <span class="Constant">&quot;f&quot;</span>/imm32/name
-<span id="L10428" class="LineNr">10428 </span>    89/&lt;- %ebx 4/r32/esp
-<span id="L10429" class="LineNr">10429 </span>    <span class="subxComment"># convert</span>
-<span id="L10430" class="LineNr">10430 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
-<span id="L10431" class="LineNr">10431 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi 0 %ebx)
-<span id="L10432" class="LineNr">10432 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
-<span id="L10433" class="Folded">10433 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
-<span id="L10439" class="LineNr">10439 </span>    <span class="subxComment"># check output</span>
-<span id="L10440" class="LineNr">10440 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;(f2 34)&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-function-call-with-literal-arg&quot;</span>)
-<span id="L10441" class="LineNr">10441 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L10442" class="LineNr">10442 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L10443" class="LineNr">10443 </span>    5d/pop-to-ebp
-<span id="L10444" class="LineNr">10444 </span>    c3/return
-<span id="L10445" class="LineNr">10445 </span>
-<span id="L10446" class="LineNr">10446 </span><span class="subxFunction">emit-indent</span>:  <span class="subxComment"># out: (addr buffered-file), n: int</span>
-<span id="L10447" class="LineNr">10447 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L10448" class="LineNr">10448 </span>    55/push-ebp
-<span id="L10449" class="LineNr">10449 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L10450" class="LineNr">10450 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L10451" class="LineNr">10451 </span>    50/push-eax
-<span id="L10452" class="LineNr">10452 </span>    <span class="subxComment"># var i/eax: int = n</span>
-<span id="L10453" class="LineNr">10453 </span>    8b/-&gt; *(ebp+0xc) 0/r32/eax
-<span id="L10454" class="LineNr">10454 </span>    {
-<span id="L10455" class="LineNr">10455 </span>      <span class="subxComment"># if (i &lt;= 0) break</span>
-<span id="L10456" class="LineNr">10456 </span>      3d/compare-eax-with 0/imm32
-<span id="L10457" class="LineNr">10457 </span>      7e/jump-if-&lt;= <span class="Constant">break</span>/disp8
-<span id="L10458" class="LineNr">10458 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  &quot;</span>)
-<span id="L10459" class="LineNr">10459 </span>      48/decrement-eax
-<span id="L10460" class="LineNr">10460 </span>      eb/jump <span class="Constant">loop</span>/disp8
-<span id="L10461" class="LineNr">10461 </span>    }
-<span id="L10462" class="LineNr">10462 </span><span class="Constant">$emit-indent:end</span>:
-<span id="L10463" class="LineNr">10463 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L10464" class="LineNr">10464 </span>    58/pop-to-eax
-<span id="L10465" class="LineNr">10465 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L10466" class="LineNr">10466 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L10467" class="LineNr">10467 </span>    5d/pop-to-ebp
-<span id="L10468" class="LineNr">10468 </span>    c3/return
-<span id="L10469" class="LineNr">10469 </span>
-<span id="L10470" class="LineNr">10470 </span><span class="subxFunction">emit-subx-prologue</span>:  <span class="subxComment"># out: (addr buffered-file)</span>
-<span id="L10471" class="LineNr">10471 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L10472" class="LineNr">10472 </span>    55/push-ebp
-<span id="L10473" class="LineNr">10473 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L10474" class="LineNr">10474 </span>    <span class="subxComment">#</span>
-<span id="L10475" class="LineNr">10475 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  # . prologue\n&quot;</span>)
-<span id="L10476" class="LineNr">10476 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  55/push-ebp\n&quot;</span>)
-<span id="L10477" class="LineNr">10477 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  89/&lt;- %ebp 4/r32/esp\n&quot;</span>)
-<span id="L10478" class="LineNr">10478 </span><span class="Constant">$emit-subx-prologue:end</span>:
-<span id="L10479" class="LineNr">10479 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L10480" class="LineNr">10480 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L10481" class="LineNr">10481 </span>    5d/pop-to-ebp
-<span id="L10482" class="LineNr">10482 </span>    c3/return
-<span id="L10483" class="LineNr">10483 </span>
-<span id="L10484" class="LineNr">10484 </span><span class="subxFunction">emit-subx-epilogue</span>:  <span class="subxComment"># out: (addr buffered-file)</span>
-<span id="L10485" class="LineNr">10485 </span>    <span class="subxS1Comment"># . prologue</span>
-<span id="L10486" class="LineNr">10486 </span>    55/push-ebp
-<span id="L10487" class="LineNr">10487 </span>    89/&lt;- %ebp 4/r32/esp
-<span id="L10488" class="LineNr">10488 </span>    <span class="subxComment">#</span>
-<span id="L10489" class="LineNr">10489 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  # . epilogue\n&quot;</span>)
-<span id="L10490" class="LineNr">10490 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  89/&lt;- %esp 5/r32/ebp\n&quot;</span>)
-<span id="L10491" class="LineNr">10491 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  5d/pop-to-ebp\n&quot;</span>)
-<span id="L10492" class="LineNr">10492 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  c3/return\n&quot;</span>)
-<span id="L10493" class="LineNr">10493 </span><span class="Constant">$emit-subx-epilogue:end</span>:
-<span id="L10494" class="LineNr">10494 </span>    <span class="subxS1Comment"># . epilogue</span>
-<span id="L10495" class="LineNr">10495 </span>    89/&lt;- %esp 5/r32/ebp
-<span id="L10496" class="LineNr">10496 </span>    5d/pop-to-ebp
-<span id="L10497" class="LineNr">10497 </span>    c3/return
+<span id="L10320" class="LineNr">10320 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L10321" class="LineNr">10321 </span>    55/push-ebp
+<span id="L10322" class="LineNr">10322 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L10323" class="LineNr">10323 </span>    <span class="subxComment"># setup</span>
+<span id="L10324" class="LineNr">10324 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L10325" class="LineNr">10325 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L10326" class="LineNr">10326 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = int</span>
+<span id="L10327" class="LineNr">10327 </span>    68/push 0/imm32/right/null
+<span id="L10328" class="LineNr">10328 </span>    68/push 1/imm32/left/int
+<span id="L10329" class="LineNr">10329 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10330" class="LineNr">10330 </span>    <span class="subxComment"># var var-foo/ecx: var</span>
+<span id="L10331" class="LineNr">10331 </span>    68/push 0/imm32/no-register
+<span id="L10332" class="LineNr">10332 </span>    68/push -8/imm32/stack-offset
+<span id="L10333" class="LineNr">10333 </span>    68/push 0/imm32/block-depth
+<span id="L10334" class="LineNr">10334 </span>    51/push-ecx
+<span id="L10335" class="LineNr">10335 </span>    68/push <span class="Constant">&quot;foo&quot;</span>/imm32
+<span id="L10336" class="LineNr">10336 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10337" class="LineNr">10337 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var)</span>
+<span id="L10338" class="LineNr">10338 </span>    68/push 0/imm32/is-deref:false
+<span id="L10339" class="LineNr">10339 </span>    68/push 0/imm32/next
+<span id="L10340" class="LineNr">10340 </span>    51/push-ecx/var-foo
+<span id="L10341" class="LineNr">10341 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10342" class="LineNr">10342 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L10343" class="LineNr">10343 </span>    68/push 0/imm32/next
+<span id="L10344" class="LineNr">10344 </span>    68/push 0/imm32/outputs
+<span id="L10345" class="LineNr">10345 </span>    56/push-esi/inouts
+<span id="L10346" class="LineNr">10346 </span>    68/push <span class="Constant">&quot;f&quot;</span>/imm32/operation
+<span id="L10347" class="LineNr">10347 </span>    68/push 1/imm32
+<span id="L10348" class="LineNr">10348 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10349" class="LineNr">10349 </span>    <span class="subxComment"># var functions/ebx: function</span>
+<span id="L10350" class="LineNr">10350 </span>    68/push 0/imm32/next
+<span id="L10351" class="LineNr">10351 </span>    68/push 0/imm32/body
+<span id="L10352" class="LineNr">10352 </span>    68/push 0/imm32/outputs
+<span id="L10353" class="LineNr">10353 </span>    51/push-ecx/inouts  <span class="subxComment"># hack; in practice we won't have the same var in function definition and call</span>
+<span id="L10354" class="LineNr">10354 </span>    68/push <span class="Constant">&quot;f2&quot;</span>/imm32/subx-name
+<span id="L10355" class="LineNr">10355 </span>    68/push <span class="Constant">&quot;f&quot;</span>/imm32/name
+<span id="L10356" class="LineNr">10356 </span>    89/&lt;- %ebx 4/r32/esp
+<span id="L10357" class="LineNr">10357 </span>    <span class="subxComment"># convert</span>
+<span id="L10358" class="LineNr">10358 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L10359" class="LineNr">10359 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi 0 %ebx)
+<span id="L10360" class="LineNr">10360 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L10361" class="Folded">10361 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L10367" class="LineNr">10367 </span>    <span class="subxComment"># check output</span>
+<span id="L10368" class="LineNr">10368 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;(f2 *(ebp+0xfffffff8))&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-function-call&quot;</span>)
+<span id="L10369" class="LineNr">10369 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L10370" class="LineNr">10370 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L10371" class="LineNr">10371 </span>    5d/pop-to-ebp
+<span id="L10372" class="LineNr">10372 </span>    c3/return
+<span id="L10373" class="LineNr">10373 </span>
+<span id="L10374" class="LineNr">10374 </span><span class="subxTest">test-emit-subx-stmt-function-call-with-literal-arg</span>:
+<span id="L10375" class="LineNr">10375 </span>    <span class="subxComment"># Call a function on a literal.</span>
+<span id="L10376" class="LineNr">10376 </span>    <span class="subxComment">#   f 34</span>
+<span id="L10377" class="LineNr">10377 </span>    <span class="subxComment"># =&gt;</span>
+<span id="L10378" class="LineNr">10378 </span>    <span class="subxComment">#   (f2 34)</span>
+<span id="L10379" class="LineNr">10379 </span>    <span class="subxComment">#</span>
+<span id="L10380" class="LineNr">10380 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L10381" class="LineNr">10381 </span>    55/push-ebp
+<span id="L10382" class="LineNr">10382 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L10383" class="LineNr">10383 </span>    <span class="subxComment"># setup</span>
+<span id="L10384" class="LineNr">10384 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>)
+<span id="L10385" class="LineNr">10385 </span>    (<a href='../055stream.subx.html#L17'>clear-stream</a> $_test-output-buffered-file-&gt;buffer)
+<span id="L10386" class="LineNr">10386 </span>    <span class="subxComment"># var type/ecx: (handle tree type-id) = literal</span>
+<span id="L10387" class="LineNr">10387 </span>    68/push 0/imm32/right/null
+<span id="L10388" class="LineNr">10388 </span>    68/push 0/imm32/left/literal
+<span id="L10389" class="LineNr">10389 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10390" class="LineNr">10390 </span>    <span class="subxComment"># var var-foo/ecx: var literal</span>
+<span id="L10391" class="LineNr">10391 </span>    68/push 0/imm32/no-register
+<span id="L10392" class="LineNr">10392 </span>    68/push 0/imm32/no-stack-offset
+<span id="L10393" class="LineNr">10393 </span>    68/push 0/imm32/block-depth
+<span id="L10394" class="LineNr">10394 </span>    51/push-ecx
+<span id="L10395" class="LineNr">10395 </span>    68/push <span class="Constant">&quot;34&quot;</span>/imm32
+<span id="L10396" class="LineNr">10396 </span>    89/&lt;- %ecx 4/r32/esp
+<span id="L10397" class="LineNr">10397 </span>    <span class="subxComment"># var inouts/esi: (handle stmt-var)</span>
+<span id="L10398" class="LineNr">10398 </span>    68/push 0/imm32/is-deref:false
+<span id="L10399" class="LineNr">10399 </span>    68/push 0/imm32/next
+<span id="L10400" class="LineNr">10400 </span>    51/push-ecx/var-foo
+<span id="L10401" class="LineNr">10401 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10402" class="LineNr">10402 </span>    <span class="subxComment"># var stmt/esi: statement</span>
+<span id="L10403" class="LineNr">10403 </span>    68/push 0/imm32/next
+<span id="L10404" class="LineNr">10404 </span>    68/push 0/imm32/outputs
+<span id="L10405" class="LineNr">10405 </span>    56/push-esi/inouts
+<span id="L10406" class="LineNr">10406 </span>    68/push <span class="Constant">&quot;f&quot;</span>/imm32/operation
+<span id="L10407" class="LineNr">10407 </span>    68/push 1/imm32
+<span id="L10408" class="LineNr">10408 </span>    89/&lt;- %esi 4/r32/esp
+<span id="L10409" class="LineNr">10409 </span>    <span class="subxComment"># var functions/ebx: function</span>
+<span id="L10410" class="LineNr">10410 </span>    68/push 0/imm32/next
+<span id="L10411" class="LineNr">10411 </span>    68/push 0/imm32/body
+<span id="L10412" class="LineNr">10412 </span>    68/push 0/imm32/outputs
+<span id="L10413" class="LineNr">10413 </span>    51/push-ecx/inouts  <span class="subxComment"># hack; in practice we won't have the same var in function definition and call</span>
+<span id="L10414" class="LineNr">10414 </span>    68/push <span class="Constant">&quot;f2&quot;</span>/imm32/subx-name
+<span id="L10415" class="LineNr">10415 </span>    68/push <span class="Constant">&quot;f&quot;</span>/imm32/name
+<span id="L10416" class="LineNr">10416 </span>    89/&lt;- %ebx 4/r32/esp
+<span id="L10417" class="LineNr">10417 </span>    <span class="subxComment"># convert</span>
+<span id="L10418" class="LineNr">10418 </span>    c7 0/subop/copy *<span class="SpecialChar"><a href='mu.subx.html#L3989'>Curr-block-depth</a></span> 0/imm32
+<span id="L10419" class="LineNr">10419 </span>    (<a href='mu.subx.html#L6659'>emit-subx-stmt</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a> %esi 0 %ebx)
+<span id="L10420" class="LineNr">10420 </span>    (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>)
+<span id="L10421" class="Folded">10421 </span><span class="Folded">+--  6 lines: #?     # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span>
+<span id="L10427" class="LineNr">10427 </span>    <span class="subxComment"># check output</span>
+<span id="L10428" class="LineNr">10428 </span>    (<a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">&quot;(f2 34)&quot;</span> <span class="Constant">&quot;F - test-emit-subx-stmt-function-call-with-literal-arg&quot;</span>)
+<span id="L10429" class="LineNr">10429 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L10430" class="LineNr">10430 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L10431" class="LineNr">10431 </span>    5d/pop-to-ebp
+<span id="L10432" class="LineNr">10432 </span>    c3/return
+<span id="L10433" class="LineNr">10433 </span>
+<span id="L10434" class="LineNr">10434 </span><span class="subxFunction">emit-indent</span>:  <span class="subxComment"># out: (addr buffered-file), n: int</span>
+<span id="L10435" class="LineNr">10435 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L10436" class="LineNr">10436 </span>    55/push-ebp
+<span id="L10437" class="LineNr">10437 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L10438" class="LineNr">10438 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L10439" class="LineNr">10439 </span>    50/push-eax
+<span id="L10440" class="LineNr">10440 </span>    <span class="subxComment"># var i/eax: int = n</span>
+<span id="L10441" class="LineNr">10441 </span>    8b/-&gt; *(ebp+0xc) 0/r32/eax
+<span id="L10442" class="LineNr">10442 </span>    {
+<span id="L10443" class="LineNr">10443 </span>      <span class="subxComment"># if (i &lt;= 0) break</span>
+<span id="L10444" class="LineNr">10444 </span>      3d/compare-eax-with 0/imm32
+<span id="L10445" class="LineNr">10445 </span>      7e/jump-if-&lt;= <span class="Constant">break</span>/disp8
+<span id="L10446" class="LineNr">10446 </span>      (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  &quot;</span>)
+<span id="L10447" class="LineNr">10447 </span>      48/decrement-eax
+<span id="L10448" class="LineNr">10448 </span>      eb/jump <span class="Constant">loop</span>/disp8
+<span id="L10449" class="LineNr">10449 </span>    }
+<span id="L10450" class="LineNr">10450 </span><span class="Constant">$emit-indent:end</span>:
+<span id="L10451" class="LineNr">10451 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L10452" class="LineNr">10452 </span>    58/pop-to-eax
+<span id="L10453" class="LineNr">10453 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L10454" class="LineNr">10454 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L10455" class="LineNr">10455 </span>    5d/pop-to-ebp
+<span id="L10456" class="LineNr">10456 </span>    c3/return
+<span id="L10457" class="LineNr">10457 </span>
+<span id="L10458" class="LineNr">10458 </span><span class="subxFunction">emit-subx-prologue</span>:  <span class="subxComment"># out: (addr buffered-file)</span>
+<span id="L10459" class="LineNr">10459 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L10460" class="LineNr">10460 </span>    55/push-ebp
+<span id="L10461" class="LineNr">10461 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L10462" class="LineNr">10462 </span>    <span class="subxComment">#</span>
+<span id="L10463" class="LineNr">10463 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  # . prologue\n&quot;</span>)
+<span id="L10464" class="LineNr">10464 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  55/push-ebp\n&quot;</span>)
+<span id="L10465" class="LineNr">10465 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  89/&lt;- %ebp 4/r32/esp\n&quot;</span>)
+<span id="L10466" class="LineNr">10466 </span><span class="Constant">$emit-subx-prologue:end</span>:
+<span id="L10467" class="LineNr">10467 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L10468" class="LineNr">10468 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L10469" class="LineNr">10469 </span>    5d/pop-to-ebp
+<span id="L10470" class="LineNr">10470 </span>    c3/return
+<span id="L10471" class="LineNr">10471 </span>
+<span id="L10472" class="LineNr">10472 </span><span class="subxFunction">emit-subx-epilogue</span>:  <span class="subxComment"># out: (addr buffered-file)</span>
+<span id="L10473" class="LineNr">10473 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L10474" class="LineNr">10474 </span>    55/push-ebp
+<span id="L10475" class="LineNr">10475 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L10476" class="LineNr">10476 </span>    <span class="subxComment">#</span>
+<span id="L10477" class="LineNr">10477 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  # . epilogue\n&quot;</span>)
+<span id="L10478" class="LineNr">10478 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  89/&lt;- %esp 5/r32/ebp\n&quot;</span>)
+<span id="L10479" class="LineNr">10479 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  5d/pop-to-ebp\n&quot;</span>)
+<span id="L10480" class="LineNr">10480 </span>    (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">&quot;  c3/return\n&quot;</span>)
+<span id="L10481" class="LineNr">10481 </span><span class="Constant">$emit-subx-epilogue:end</span>:
+<span id="L10482" class="LineNr">10482 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L10483" class="LineNr">10483 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L10484" class="LineNr">10484 </span>    5d/pop-to-ebp
+<span id="L10485" class="LineNr">10485 </span>    c3/return
 </pre>
 </body>
 </html>
diff --git a/html/apps/pack.subx.html b/html/apps/pack.subx.html
index 7bf6cc71..a01556fc 100644
--- a/html/apps/pack.subx.html
+++ b/html/apps/pack.subx.html
@@ -65,8 +65,8 @@ if ('onhashchange' in window) {
 <span id="L3" class="LineNr">   3 </span><span class="subxComment"># uses are left untouched.</span>
 <span id="L4" class="LineNr">   4 </span><span class="subxComment">#</span>
 <span id="L5" class="LineNr">   5 </span><span class="subxComment"># To run:</span>
-<span id="L6" class="LineNr">   6 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/subx-params.subx apps/pack.subx  -o apps/pack</span>
-<span id="L7" class="LineNr">   7 </span><span class="subxComment">#   $ echo '05/add-to-eax 0x20/imm32'  |./subx run apps/pack</span>
+<span id="L6" class="LineNr">   6 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/subx-params.subx apps/pack.subx  -o apps/pack</span>
+<span id="L7" class="LineNr">   7 </span><span class="subxComment">#   $ echo '05/add-to-eax 0x20/imm32'  |./bootstrap run apps/pack</span>
 <span id="L8" class="LineNr">   8 </span><span class="subxComment"># Expected output:</span>
 <span id="L9" class="LineNr">   9 </span><span class="subxComment">#   05 20 00 00 00  # 05/add-to-eax 0x20/imm32</span>
 <span id="L10" class="LineNr">  10 </span><span class="subxComment"># The original instruction gets included as a comment at the end of each</span>
@@ -4721,7 +4721,7 @@ if ('onhashchange' in window) {
 <span id="L5864" class="LineNr">5864 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L5865" class="LineNr">5865 </span>    51/push-ecx
 <span id="L5866" class="LineNr">5866 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L5867" class="LineNr">5867 </span>    e8/call  <a href='../067parse-hex.subx.html#L354'>parse-hex-int-from-slice</a>/disp32
+<span id="L5867" class="LineNr">5867 </span>    e8/call  <a href='../067parse-hex.subx.html#L387'>parse-hex-int-from-slice</a>/disp32
 <span id="L5868" class="LineNr">5868 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L5869" class="LineNr">5869 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
 <span id="L5870" class="LineNr">5870 </span><span class="Constant">$parse-datum-of-word:end</span>:
diff --git a/html/apps/random.subx.html b/html/apps/random.subx.html
index 25db616e..882ce5d4 100644
--- a/html/apps/random.subx.html
+++ b/html/apps/random.subx.html
@@ -59,8 +59,8 @@ if ('onhashchange' in window) {
 <span id="L1" class="LineNr"> 1 </span><span class="subxComment"># Repeatedly read 32-bit numbers from /dev/random, print them to stdout.</span>
 <span id="L2" class="LineNr"> 2 </span><span class="subxComment">#</span>
 <span id="L3" class="LineNr"> 3 </span><span class="subxComment"># To run:</span>
-<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/random.subx -o apps/random</span>
-<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./subx run apps/random</span>
+<span id="L4" class="LineNr"> 4 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/random.subx -o apps/random</span>
+<span id="L5" class="LineNr"> 5 </span><span class="subxComment">#   $ ./bootstrap run apps/random</span>
 <span id="L6" class="LineNr"> 6 </span>
 <span id="L7" class="LineNr"> 7 </span>== code 0x09000000
 <span id="L8" class="LineNr"> 8 </span><span class="subxComment">#   instruction                     effective address                                                   register    displacement    immediate</span>
diff --git a/html/apps/sigils.subx.html b/html/apps/sigils.subx.html
index 6bec4179..6d3f9f23 100644
--- a/html/apps/sigils.subx.html
+++ b/html/apps/sigils.subx.html
@@ -64,36 +64,36 @@ if ('onhashchange' in window) {
 <span id="L2" class="LineNr">   2 </span><span class="subxComment"># other related arguments.</span>
 <span id="L3" class="LineNr">   3 </span><span class="subxComment">#</span>
 <span id="L4" class="LineNr">   4 </span><span class="subxComment"># To run:</span>
-<span id="L5" class="LineNr">   5 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/subx-params.subx apps/sigils.subx  -o apps/sigils</span>
+<span id="L5" class="LineNr">   5 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/subx-params.subx apps/sigils.subx  -o apps/sigils</span>
 <span id="L6" class="LineNr">   6 </span><span class="subxComment">#</span>
 <span id="L7" class="LineNr">   7 </span><span class="subxComment"># We currently support the following notations:</span>
 <span id="L8" class="LineNr">   8 </span><span class="subxComment">#</span>
 <span id="L9" class="LineNr">   9 </span><span class="subxComment"># 1.</span>
-<span id="L10" class="LineNr">  10 </span><span class="subxComment">#   $ echo '%eax'  |  ./subx run apps/sigils</span>
+<span id="L10" class="LineNr">  10 </span><span class="subxComment">#   $ echo '%eax'  |  ./bootstrap run apps/sigils</span>
 <span id="L11" class="LineNr">  11 </span><span class="subxComment">#   3/mod 0/rm32</span>
 <span id="L12" class="LineNr">  12 </span><span class="subxComment">#</span>
 <span id="L13" class="LineNr">  13 </span><span class="subxComment"># 2.</span>
-<span id="L14" class="LineNr">  14 </span><span class="subxComment">#   $ echo '*eax'  |  ./subx run apps/sigils</span>
+<span id="L14" class="LineNr">  14 </span><span class="subxComment">#   $ echo '*eax'  |  ./bootstrap run apps/sigils</span>
 <span id="L15" class="LineNr">  15 </span><span class="subxComment">#   0/mod 0/rm32</span>
 <span id="L16" class="LineNr">  16 </span><span class="subxComment">#</span>
 <span id="L17" class="LineNr">  17 </span><span class="subxComment"># 3.</span>
-<span id="L18" class="LineNr">  18 </span><span class="subxComment">#   $ echo '*(eax+4)'  |  ./subx run apps/sigils</span>
+<span id="L18" class="LineNr">  18 </span><span class="subxComment">#   $ echo '*(eax+4)'  |  ./bootstrap run apps/sigils</span>
 <span id="L19" class="LineNr">  19 </span><span class="subxComment">#   2/mod 0/rm32 4/disp32</span>
 <span id="L20" class="LineNr">  20 </span><span class="subxComment">#</span>
 <span id="L21" class="LineNr">  21 </span><span class="subxComment"># 4.</span>
-<span id="L22" class="LineNr">  22 </span><span class="subxComment">#   $ echo '*(eax+ecx)'  |  ./subx run apps/sigils</span>
+<span id="L22" class="LineNr">  22 </span><span class="subxComment">#   $ echo '*(eax+ecx)'  |  ./bootstrap run apps/sigils</span>
 <span id="L23" class="LineNr">  23 </span><span class="subxComment">#   0/mod 4/rm32 0/base 1/index 0/scale</span>
 <span id="L24" class="LineNr">  24 </span><span class="subxComment">#</span>
 <span id="L25" class="LineNr">  25 </span><span class="subxComment"># 5.</span>
-<span id="L26" class="LineNr">  26 </span><span class="subxComment">#   $ echo '*(eax+ecx+4)'  |  ./subx run apps/sigils</span>
+<span id="L26" class="LineNr">  26 </span><span class="subxComment">#   $ echo '*(eax+ecx+4)'  |  ./bootstrap run apps/sigils</span>
 <span id="L27" class="LineNr">  27 </span><span class="subxComment">#   2/mod 4/rm32 0/base 1/index 0/scale 4/disp32</span>
 <span id="L28" class="LineNr">  28 </span><span class="subxComment">#</span>
 <span id="L29" class="LineNr">  29 </span><span class="subxComment"># 6.</span>
-<span id="L30" class="LineNr">  30 </span><span class="subxComment">#   $ echo '*(eax+ecx&lt;&lt;2+4)'  |  ./subx run apps/sigils</span>
+<span id="L30" class="LineNr">  30 </span><span class="subxComment">#   $ echo '*(eax+ecx&lt;&lt;2+4)'  |  ./bootstrap run apps/sigils</span>
 <span id="L31" class="LineNr">  31 </span><span class="subxComment">#   2/mod 4/rm32 0/base 1/index 2/scale 4/disp32</span>
 <span id="L32" class="LineNr">  32 </span><span class="subxComment">#</span>
 <span id="L33" class="LineNr">  33 </span><span class="subxComment"># 7.</span>
-<span id="L34" class="LineNr">  34 </span><span class="subxComment">#   $ echo '*Foo'  |  ./subx run apps/sigils</span>
+<span id="L34" class="LineNr">  34 </span><span class="subxComment">#   $ echo '*Foo'  |  ./bootstrap run apps/sigils</span>
 <span id="L35" class="LineNr">  35 </span><span class="subxComment">#   0/mod 5/rm32/.disp32 Foo/disp32</span>
 <span id="L36" class="LineNr">  36 </span><span class="subxComment">#</span>
 <span id="L37" class="LineNr">  37 </span><span class="subxComment"># Addition isn't commutative here. Template must always be (base+index&lt;&lt;scale+disp),</span>
@@ -3650,7 +3650,7 @@ if ('onhashchange' in window) {
 <span id="L4052" class="LineNr">4052 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L4053" class="LineNr">4053 </span>    50/push-eax
 <span id="L4054" class="LineNr">4054 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L4055" class="LineNr">4055 </span>    e8/call  <a href='../067parse-hex.subx.html#L640'>is-hex-digit?</a>/disp32
+<span id="L4055" class="LineNr">4055 </span>    e8/call  <a href='../067parse-hex.subx.html#L701'>is-hex-digit?</a>/disp32
 <span id="L4056" class="LineNr">4056 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L4057" class="LineNr">4057 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
 <span id="L4058" class="LineNr">4058 </span>    <span class="subxS1Comment"># . if (eax == false) break</span>
@@ -3660,7 +3660,7 @@ if ('onhashchange' in window) {
 <span id="L4062" class="LineNr">4062 </span>    <span class="subxS2Comment"># . . copy arg to eax</span>
 <span id="L4063" class="LineNr">4063 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ecx to AL</span>
 <span id="L4064" class="LineNr">4064 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L4065" class="LineNr">4065 </span>    e8/call  <a href='../067parse-hex.subx.html#L803'>from-hex-char</a>/disp32
+<span id="L4065" class="LineNr">4065 </span>    e8/call  <a href='../067parse-hex.subx.html#L864'>from-hex-char</a>/disp32
 <span id="L4066" class="LineNr">4066 </span>    <span class="subxComment"># result = result * 16 + eax</span>
 <span id="L4067" class="LineNr">4067 </span>    c1/shift    4/subop/left        3/mod/direct    7/rm32/edi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm8            <span class="subxComment"># shift edi left by 4 bits</span>
 <span id="L4068" class="LineNr">4068 </span>    01/add                          3/mod/direct    7/rm32/edi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/eax  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># add eax to edi</span>
@@ -4033,7 +4033,7 @@ if ('onhashchange' in window) {
 <span id="L4435" class="LineNr">4435 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L4436" class="LineNr">4436 </span>    50/push-eax
 <span id="L4437" class="LineNr">4437 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L4438" class="LineNr">4438 </span>    e8/call  <a href='../067parse-hex.subx.html#L640'>is-hex-digit?</a>/disp32
+<span id="L4438" class="LineNr">4438 </span>    e8/call  <a href='../067parse-hex.subx.html#L701'>is-hex-digit?</a>/disp32
 <span id="L4439" class="LineNr">4439 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L4440" class="LineNr">4440 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
 <span id="L4441" class="LineNr">4441 </span>    <span class="subxS1Comment"># . if (eax == false) break</span>
@@ -4043,7 +4043,7 @@ if ('onhashchange' in window) {
 <span id="L4445" class="LineNr">4445 </span>    <span class="subxS2Comment"># . . copy arg to eax</span>
 <span id="L4446" class="LineNr">4446 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ecx   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ecx to AL</span>
 <span id="L4447" class="LineNr">4447 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L4448" class="LineNr">4448 </span>    e8/call  <a href='../067parse-hex.subx.html#L803'>from-hex-char</a>/disp32
+<span id="L4448" class="LineNr">4448 </span>    e8/call  <a href='../067parse-hex.subx.html#L864'>from-hex-char</a>/disp32
 <span id="L4449" class="LineNr">4449 </span>    <span class="subxComment"># result = result * 16 + eax</span>
 <span id="L4450" class="LineNr">4450 </span>    c1/shift    4/subop/left        3/mod/direct    7/rm32/edi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm8            <span class="subxComment"># shift edi left by 4 bits</span>
 <span id="L4451" class="LineNr">4451 </span>    01/add                          3/mod/direct    7/rm32/edi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/eax  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># add eax to edi</span>
diff --git a/html/apps/survey.subx.html b/html/apps/survey.subx.html
index 9acf8ac9..70952749 100644
--- a/html/apps/survey.subx.html
+++ b/html/apps/survey.subx.html
@@ -68,7 +68,7 @@ if ('onhashchange' in window) {
 <span id="L5" class="LineNr">   5 </span><span class="subxComment">#   b) add segment headers with addresses and offsets correctly filled in</span>
 <span id="L6" class="LineNr">   6 </span><span class="subxComment">#</span>
 <span id="L7" class="LineNr">   7 </span><span class="subxComment"># To build:</span>
-<span id="L8" class="LineNr">   8 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/subx-params.subx apps/survey.subx  -o apps/survey</span>
+<span id="L8" class="LineNr">   8 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/subx-params.subx apps/survey.subx  -o apps/survey</span>
 <span id="L9" class="LineNr">   9 </span><span class="subxComment">#</span>
 <span id="L10" class="LineNr">  10 </span><span class="subxComment"># The expected input is a stream of bytes with segment headers, comments and</span>
 <span id="L11" class="LineNr">  11 </span><span class="subxComment"># some interspersed labels.</span>
@@ -86,7 +86,7 @@ if ('onhashchange' in window) {
 <span id="L23" class="LineNr">  23 </span><span class="subxComment"># The output is the stream of bytes without segment headers or label definitions,</span>
 <span id="L24" class="LineNr">  24 </span><span class="subxComment"># and with label references replaced with numeric values/displacements.</span>
 <span id="L25" class="LineNr">  25 </span><span class="subxComment">#</span>
-<span id="L26" class="LineNr">  26 </span><span class="subxComment">#   $ cat x  |./subx run apps/survey</span>
+<span id="L26" class="LineNr">  26 </span><span class="subxComment">#   $ cat x  |./bootstrap run apps/survey</span>
 <span id="L27" class="LineNr">  27 </span><span class="subxComment">#   ...ELF header bytes...</span>
 <span id="L28" class="LineNr">  28 </span><span class="subxComment">#   # ELF header above will specify that code segment begins at this offset</span>
 <span id="L29" class="LineNr">  29 </span><span class="subxComment">#   aa bb nn  # some computed address</span>
@@ -672,7 +672,7 @@ if ('onhashchange' in window) {
 <span id="L990" class="LineNr"> 990 </span>    <span class="subxComment"># seg-&gt;address = parse-hex-int-from-slice(segment-tmp)</span>
 <span id="L991" class="LineNr"> 991 </span>    <span class="subxS1Comment"># . eax = parse-hex-int-from-slice(segment-tmp)</span>
 <span id="L992" class="LineNr"> 992 </span>    68/push  <a href='survey.subx.html#L621'>compute-offsets</a>:segment-tmp/imm32
-<span id="L993" class="LineNr"> 993 </span>    e8/call  <a href='../067parse-hex.subx.html#L354'>parse-hex-int-from-slice</a>/disp32
+<span id="L993" class="LineNr"> 993 </span>    e8/call  <a href='../067parse-hex.subx.html#L387'>parse-hex-int-from-slice</a>/disp32
 <span id="L994" class="LineNr"> 994 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L995" class="LineNr"> 995 </span>    81          0/subop/add         3/mod/direct    4/rm32/esp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to esp</span>
 <span id="L996" class="LineNr"> 996 </span>    <span class="subxS1Comment"># . seg-&gt;address = eax</span>
diff --git a/html/apps/tests.subx.html b/html/apps/tests.subx.html
index 2335bbb3..fa2ae715 100644
--- a/html/apps/tests.subx.html
+++ b/html/apps/tests.subx.html
@@ -62,7 +62,7 @@ if ('onhashchange' in window) {
 <span id="L2" class="LineNr">  2 </span><span class="subxComment"># all functions starting with 'test-'.</span>
 <span id="L3" class="LineNr">  3 </span><span class="subxComment">#</span>
 <span id="L4" class="LineNr">  4 </span><span class="subxComment"># To build:</span>
-<span id="L5" class="LineNr">  5 </span><span class="subxComment">#   $ ./subx translate init.linux 0*.subx apps/subx-params.subx apps/tests.subx  -o apps/tests</span>
+<span id="L5" class="LineNr">  5 </span><span class="subxComment">#   $ ./bootstrap translate init.linux 0*.subx apps/subx-params.subx apps/tests.subx  -o apps/tests</span>
 <span id="L6" class="LineNr">  6 </span>
 <span id="L7" class="LineNr">  7 </span>== code
 <span id="L8" class="LineNr">  8 </span><span class="subxComment">#   instruction                     effective address                                                   register    displacement    immediate</span>