Put function return values in a slot.

This shouldn't change code generation when debug traces are disabled.
When they are enabled, we now get trace_var opcodes emitted for every
return statement. Internally, this required a fair amount of refactoring
around how return values are passed around, but it should all be
functionally equivalent.

Change-Id: Ieb9d9c75399109186f905e0499d8fe6e2fc2067c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/477981
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/src/sksl/codegen/SkSLVMCodeGenerator.cpp b/src/sksl/codegen/SkSLVMCodeGenerator.cpp
index b7bb0a4..24752fd 100644
--- a/src/sksl/codegen/SkSLVMCodeGenerator.cpp
+++ b/src/sksl/codegen/SkSLVMCodeGenerator.cpp
@@ -147,8 +147,8 @@
      * variable's contents, and construct a Value with those ids.
      */
 
-    /** Appends this variable to the SkVMSlotInfo array inside of SkVMDebugInfo. */
-    void addDebugSlotInfo(String varName, const Type& type, int line);
+    /** Creates a Value from a collection of adjacent slots. */
+    Value getSlotValue(size_t slot, size_t nslots);
 
     /**
      * Returns the slot index of this function inside the SkVMFunctionInfo array in SkVMDebugInfo.
@@ -156,6 +156,12 @@
      */
     int getDebugFunctionInfo(const FunctionDeclaration& decl);
 
+    /** Used by `createSlot` to add this variable to the SkVMSlotInfo array inside SkVMDebugInfo. */
+    void addDebugSlotInfo(String varName, const Type& type, int line);
+
+    /** Used by `getSlot` to create a new slot on its first access. */
+    size_t createSlot(const String& name, const Type& type, int line);
+
     /**
      * Returns the slot holding v's Val(s). Allocates storage if this is first time 'v' is
      * referenced. Compound variables (e.g. vectors) will consume more than one slot, with
@@ -164,6 +170,12 @@
     size_t getSlot(const Variable& v);
 
     /**
+     * Returns the slot holding fn's return value. Allocates storage if this is first time accessing
+     * the slot.
+     */
+    size_t getSlot(const FunctionDefinition& fn);
+
+    /**
      * Writes a value to a slot previously created by getSlot.
      */
     void writeToSlot(int slot, skvm::Val value);
@@ -177,10 +189,8 @@
     /** Initializes uniforms and global variables at the start of main(). */
     void setupGlobals(SkSpan<skvm::Val> uniforms, skvm::Coord device);
 
-    /** Emits an SkSL function. */
-    void writeFunction(const FunctionDefinition& function,
-                       SkSpan<skvm::Val> arguments,
-                       SkSpan<skvm::Val> outReturn);
+    /** Emits an SkSL function. Returns the slot index of the SkSL function's return value. */
+    size_t writeFunction(const FunctionDefinition& function, SkSpan<skvm::Val> arguments);
 
     skvm::F32 f32(skvm::Val id) { SkASSERT(id != skvm::NA); return {fBuilder, id}; }
     skvm::I32 i32(skvm::Val id) { SkASSERT(id != skvm::NA); return {fBuilder, id}; }
@@ -273,7 +283,10 @@
     };
     std::vector<Slot> fSlots;
 
-    std::unordered_map<const Variable*, size_t> fVariableMap;  // [Variable, first slot in fSlots]
+    // [Variable, first slot in fSlots]
+    std::unordered_map<const Variable*, size_t> fVariableMap;
+    // [Function, first slot in fSlots]
+    std::unordered_map<const FunctionDefinition*, size_t> fReturnValueMap;
 
     // Debug trace mask (set to true when fTraceCoord matches device coordinates)
     skvm::I32 fTraceMask;
@@ -292,8 +305,8 @@
     // State that's local to the generation of a single function:
     //
     struct Function {
-        const SkSpan<skvm::Val> fReturnValue;
-        skvm::I32               fReturned;
+        size_t     fReturnSlot;
+        skvm::I32  fReturned;
     };
     std::vector<Function> fFunctionStack;
     Function& currentFunction() { return fFunctionStack.back(); }
@@ -345,7 +358,13 @@
     fConditionMask = fLoopMask = fBuilder->splat(0xffff'ffff);
 
     this->setupGlobals(uniforms, device);
-    this->writeFunction(function, arguments, outReturn);
+    size_t returnSlot = this->writeFunction(function, arguments);
+
+    // Copy the value from the return slot into outReturn.
+    SkASSERT(function.declaration().returnType().slotCount() == outReturn.size());
+    for (size_t i = 0; i < outReturn.size(); ++i) {
+        outReturn[i] = fSlots[returnSlot + i].val;
+    }
 }
 
 void SkVMGenerator::setupGlobals(SkSpan<skvm::Val> uniforms, skvm::Coord device) {
@@ -433,6 +452,14 @@
     SkASSERT(uniformIter == uniforms.end());
 }
 
+Value SkVMGenerator::getSlotValue(size_t slot, size_t nslots) {
+    Value val(nslots);
+    for (size_t i = 0; i < nslots; ++i) {
+        val[i] = fSlots[slot + i].val;
+    }
+    return val;
+}
+
 int SkVMGenerator::getDebugFunctionInfo(const FunctionDeclaration& decl) {
     SkASSERT(fDebugInfo);
 
@@ -451,11 +478,9 @@
     return slot;
 }
 
-void SkVMGenerator::writeFunction(const FunctionDefinition& function,
-                                  SkSpan<skvm::Val> arguments,
-                                  SkSpan<skvm::Val> outReturn) {
+size_t SkVMGenerator::writeFunction(const FunctionDefinition& function,
+                                    SkSpan<skvm::Val> arguments) {
     const FunctionDeclaration& decl = function.declaration();
-    SkASSERT(decl.returnType().slotCount() == outReturn.size());
 
     int funcIndex = -1;
     if (fDebugInfo) {
@@ -463,7 +488,8 @@
         fBuilder->trace_enter(this->traceMask(), funcIndex);
     }
 
-    fFunctionStack.push_back({outReturn, /*returned=*/fBuilder->splat(0)});
+    size_t returnSlot = this->getSlot(function);
+    fFunctionStack.push_back({/*fReturnSlot=*/returnSlot, /*fReturned=*/fBuilder->splat(0)});
 
     // For all parameters, copy incoming argument IDs to our vector of (all) variable IDs
     size_t argIdx = 0;
@@ -501,6 +527,8 @@
     if (fDebugInfo) {
         fBuilder->trace_exit(this->traceMask(), funcIndex);
     }
+
+    return returnSlot;
 }
 
 void SkVMGenerator::writeToSlot(int slot, skvm::Val value) {
@@ -558,31 +586,49 @@
     }
 }
 
+size_t SkVMGenerator::createSlot(const String& name, const Type& type, int line) {
+    size_t slot   = fSlots.size(),
+           nslots = type.slotCount();
+
+    if (fDebugInfo) {
+        // Our debug slot-info table should always have the same length as the actual slot table.
+        SkASSERT(fDebugInfo->fSlotInfo.size() == slot);
+
+        // Append slot names and types to our debug slot-info table.
+        fDebugInfo->fSlotInfo.reserve(slot + nslots);
+        this->addDebugSlotInfo(name, type, line);
+
+        // Confirm that we added the expected number of slots.
+        SkASSERT(fDebugInfo->fSlotInfo.size() == (slot + nslots));
+    }
+
+    // Create brand new slots initialized to zero.
+    skvm::Val initialValue = fBuilder->splat(0.0f).id;
+    fSlots.insert(fSlots.end(), nslots, Slot{initialValue});
+    return slot;
+}
+
 size_t SkVMGenerator::getSlot(const Variable& v) {
     auto entry = fVariableMap.find(&v);
     if (entry != fVariableMap.end()) {
         return entry->second;
     }
 
-    size_t slot   = fSlots.size(),
-           nslots = v.type().slotCount();
+    size_t slot = this->createSlot(String(v.name()), v.type(), v.fLine);
+    fVariableMap[&v] = slot;
+    return slot;
+}
 
-    if (fDebugInfo) {
-        // Our debug slot-info table should always have the same length as the actual slot table.
-        SkASSERT(fDebugInfo->fSlotInfo.size() == slot);
-
-        // Append slots for this variable to our debug slot-info table.
-        fDebugInfo->fSlotInfo.reserve(slot + nslots);
-        this->addDebugSlotInfo(String(v.name()), v.type(), v.fLine);
-
-        // Confirm that we added the expected number of slots.
-        SkASSERT(fDebugInfo->fSlotInfo.size() == (slot + nslots));
+size_t SkVMGenerator::getSlot(const FunctionDefinition& fn) {
+    auto entry = fReturnValueMap.find(&fn);
+    if (entry != fReturnValueMap.end()) {
+        return entry->second;
     }
 
-    // Create zeroed-out slots for this new variable.
-    skvm::Val initialValue = fBuilder->splat(0.0f).id;
-    fSlots.insert(fSlots.end(), nslots, Slot{initialValue});
-    fVariableMap[&v] = slot;
+    size_t slot = this->createSlot("[" + fn.declaration().name() + "].result",
+                                   fn.declaration().returnType(),
+                                   fn.fLine);
+    fReturnValueMap[&fn] = slot;
     return slot;
 }
 
@@ -952,11 +998,7 @@
 
 Value SkVMGenerator::writeVariableExpression(const VariableReference& expr) {
     size_t slot = this->getSlot(*expr.variable());
-    Value val(expr.type().slotCount());
-    for (size_t i = 0; i < val.slots(); ++i) {
-        val[i] = fSlots[slot + i].val;
-    }
-    return val;
+    return this->getSlotValue(slot, expr.type().slotCount());
 }
 
 Value SkVMGenerator::writeMatrixInverse2x2(const Value& m) {
@@ -1330,6 +1372,8 @@
     }
 
     const FunctionDeclaration& decl = f.function();
+    SkASSERTF(decl.definition(), "no definition for function '%s'", decl.description().c_str());
+    const FunctionDefinition& funcDef = *decl.definition();
 
     // Evaluate all arguments, gather the results into a contiguous list of IDs
     std::vector<skvm::Val> argVals;
@@ -1340,28 +1384,19 @@
         }
     }
 
-    // Create storage for the return value
-    const skvm::F32 zero = fBuilder->splat(0.0f);
-    size_t nslots = f.type().slotCount();
-    Value result(nslots);
-    for (size_t i = 0; i < nslots; ++i) {
-        result[i] = zero;
-    }
-
+    size_t returnSlot;
     {
         // This merges currentFunction().fReturned into fConditionMask. Lanes that conditionally
         // returned in the current function would otherwise resume execution within the child.
         ScopedCondition m(this, ~currentFunction().fReturned);
-        SkASSERTF(f.function().definition(), "no definition for function '%s'",
-                  f.function().description().c_str());
-        this->writeFunction(*f.function().definition(), SkMakeSpan(argVals), result.asSpan());
+        returnSlot = this->writeFunction(funcDef, SkMakeSpan(argVals));
     }
 
     // Propagate new values of any 'out' params back to the original arguments
     const std::unique_ptr<Expression>* argIter = f.arguments().begin();
     size_t valIdx = 0;
     for (const Variable* p : decl.parameters()) {
-        nslots = p->type().slotCount();
+        size_t nslots = p->type().slotCount();
         if (p->modifiers().fFlags & Modifiers::kOut_Flag) {
             Value v(nslots);
             for (size_t i = 0; i < nslots; ++i) {
@@ -1374,7 +1409,8 @@
         argIter++;
     }
 
-    return result;
+    // Create a result Value from the return slot
+    return this->getSlotValue(returnSlot, f.type().slotCount());
 }
 
 Value SkVMGenerator::writeExternalFunctionCall(const ExternalFunctionCall& c) {
@@ -1709,10 +1745,13 @@
     if (r.expression()) {
         Value val = this->writeExpression(*r.expression());
 
-        int i = 0;
-        for (skvm::Val& slot : currentFunction().fReturnValue) {
-            slot = select(returnsHere, f32(val[i]), f32(slot)).id;
-            i++;
+        size_t slot = currentFunction().fReturnSlot;
+        size_t nslots = r.expression()->type().slotCount();
+        for (size_t i = 0; i < nslots; ++i) {
+            fSlots[slot + i].writtenTo = false;
+            skvm::Val conditionalStore = this->writeConditionalStore(fSlots[slot + i].val, val[i],
+                                                                     returnsHere);
+            this->writeToSlot(slot + i, conditionalStore);
         }
     }
 
diff --git a/tests/SkSLInterpreterTest.cpp b/tests/SkSLInterpreterTest.cpp
index b6538e7..ce5d9ac 100644
--- a/tests/SkSLInterpreterTest.cpp
+++ b/tests/SkSLInterpreterTest.cpp
@@ -1066,6 +1066,7 @@
 comparison = true
 line 3
 line 4
+[less_than].result = true
 exit bool less_than(float left, int right)
 function_result = true
 line 11
@@ -1078,6 +1079,7 @@
 comparison = false
 line 3
 line 6
+[less_than].result = false
 exit bool less_than(float left, int right)
 function_result = false
 line 11
@@ -1090,10 +1092,12 @@
 comparison = false
 line 3
 line 6
+[less_than].result = false
 exit bool less_than(float left, int right)
 function_result = false
 line 11
 line 14
+[main].result = 40
 exit int main()
 )", "Trace output does not match expectation:\n%s\n", hook.fTrace.c_str());
 }
diff --git a/tests/sksl/runtime/ArrayIndexing.skvm b/tests/sksl/runtime/ArrayIndexing.skvm
index e34d814..72dd6ab 100644
--- a/tests/sksl/runtime/ArrayIndexing.skvm
+++ b/tests/sksl/runtime/ArrayIndexing.skvm
@@ -26,21 +26,29 @@
 $25 = u4[13] (float, L26)
 $26 = u4[14] (float, L26)
 $27 = u4[15] (float, L26)
-$28 = xy (float2 : slot 1/2, L37)
-$29 = xy (float2 : slot 2/2, L37)
-$30 = sum (float, L10)
-$31 = i (int, L11)
-$32 = prod (float, L19)
-$33 = i (int, L20)
-$34 = sum (float, L28)
-$35 = f (float, L29)
+$28 = [main].result (float4 : slot 1/4, L37)
+$29 = [main].result (float4 : slot 2/4, L37)
+$30 = [main].result (float4 : slot 3/4, L37)
+$31 = [main].result (float4 : slot 4/4, L37)
+$32 = xy (float2 : slot 1/2, L37)
+$33 = xy (float2 : slot 2/2, L37)
+$34 = [index_by_literal].result (float, L4)
+$35 = [index_by_loop].result (float, L9)
+$36 = sum (float, L10)
+$37 = i (int, L11)
+$38 = [index_by_complex_loop].result (float, L18)
+$39 = prod (float, L19)
+$40 = i (int, L20)
+$41 = [index_out_of_bounds_checked].result (float, L27)
+$42 = sum (float, L28)
+$43 = f (float, L29)
 F0 = float4 main(float2 xy)
 F1 = float index_by_literal()
 F2 = float index_by_loop()
 F3 = float index_by_complex_loop()
 F4 = float index_out_of_bounds_checked()
 
-54 registers, 171 instructions:
+54 registers, 179 instructions:
 0	r0 = uniform32 ptr0 0
 1	r1 = uniform32 ptr0 4
 2	r2 = uniform32 ptr0 8
@@ -126,90 +134,98 @@
 81	    trace_var r53 $26 = r27
 82	    trace_var r53 $27 = r28
 83	    trace_enter r53 F0
-84	    trace_var r53 $28 = r52
-85	    trace_var r53 $29 = r0
+84	    trace_var r53 $32 = r52
+85	    trace_var r53 $33 = r0
 86	    trace_line r53 L38
 87	    trace_enter r53 F1
 88	    trace_line r53 L5
-89	    trace_exit r53 F1
-90	    trace_enter r53 F2
-91	    trace_line r53 L10
-92	    trace_var r53 $30 = r29
-93	    trace_line r53 L11
-94	    trace_var r53 $31 = r32
-95	    trace_line r53 L12
-96	    trace_var r53 $30 = r8
-97	    trace_line r53 L11
-98	    trace_var r53 $31 = r33
-99	    trace_line r53 L12
-100	    trace_var r53 $30 = r34
-101	    trace_line r53 L11
-102	    trace_var r53 $31 = r35
-103	    trace_line r53 L12
-104	    trace_var r53 $30 = r36
-105	    trace_line r53 L11
-106	    trace_var r53 $31 = r29
-107	    trace_line r53 L12
-108	    trace_var r53 $30 = r37
-109	    trace_line r53 L11
-110	    trace_line r53 L14
-111	    trace_exit r53 F2
-112	    trace_enter r53 F3
-113	    trace_line r53 L19
-114	    trace_var r53 $32 = r38
-115	    trace_line r53 L20
-116	    trace_var r53 $33 = r29
-117	    trace_line r53 L21
-118	    trace_var r53 $32 = r9
-119	    trace_line r53 L20
-120	    trace_var r53 $33 = r35
-121	    trace_line r53 L21
-122	    trace_var r53 $32 = r39
-123	    trace_line r53 L20
-124	    trace_var r53 $33 = r33
-125	    trace_line r53 L21
-126	    trace_var r53 $32 = r40
-127	    trace_line r53 L20
-128	    trace_var r53 $33 = r32
-129	    trace_line r53 L21
-130	    trace_var r53 $32 = r41
-131	    trace_line r53 L20
-132	    trace_line r53 L23
-133	    trace_exit r53 F3
-134	    trace_enter r53 F4
-135	    trace_line r53 L28
-136	    trace_var r53 $34 = r29
-137	    trace_line r53 L29
-138	    trace_var r53 $35 = r42
-139	    trace_line r53 L30
+89	    trace_var r53 $34 = r1
+90	    trace_exit r53 F1
+91	    trace_enter r53 F2
+92	    trace_line r53 L10
+93	    trace_var r53 $36 = r29
+94	    trace_line r53 L11
+95	    trace_var r53 $37 = r32
+96	    trace_line r53 L12
+97	    trace_var r53 $36 = r8
+98	    trace_line r53 L11
+99	    trace_var r53 $37 = r33
+100	    trace_line r53 L12
+101	    trace_var r53 $36 = r34
+102	    trace_line r53 L11
+103	    trace_var r53 $37 = r35
+104	    trace_line r53 L12
+105	    trace_var r53 $36 = r36
+106	    trace_line r53 L11
+107	    trace_var r53 $37 = r29
+108	    trace_line r53 L12
+109	    trace_var r53 $36 = r37
+110	    trace_line r53 L11
+111	    trace_line r53 L14
+112	    trace_var r53 $35 = r37
+113	    trace_exit r53 F2
+114	    trace_enter r53 F3
+115	    trace_line r53 L19
+116	    trace_var r53 $39 = r38
+117	    trace_line r53 L20
+118	    trace_var r53 $40 = r29
+119	    trace_line r53 L21
+120	    trace_var r53 $39 = r9
+121	    trace_line r53 L20
+122	    trace_var r53 $40 = r35
+123	    trace_line r53 L21
+124	    trace_var r53 $39 = r39
+125	    trace_line r53 L20
+126	    trace_var r53 $40 = r33
+127	    trace_line r53 L21
+128	    trace_var r53 $39 = r40
+129	    trace_line r53 L20
+130	    trace_var r53 $40 = r32
+131	    trace_line r53 L21
+132	    trace_var r53 $39 = r41
+133	    trace_line r53 L20
+134	    trace_line r53 L23
+135	    trace_var r53 $38 = r41
+136	    trace_exit r53 F3
+137	    trace_enter r53 F4
+138	    trace_line r53 L28
+139	    trace_var r53 $42 = r29
 140	    trace_line r53 L29
-141	    trace_var r53 $35 = r43
+141	    trace_var r53 $43 = r42
 142	    trace_line r53 L30
-143	    trace_line r53 L31
-144	    trace_var r53 $34 = r44
-145	    trace_line r53 L29
-146	    trace_var r53 $35 = r45
-147	    trace_line r53 L30
-148	    trace_line r53 L31
-149	    trace_var r53 $34 = r46
-150	    trace_line r53 L29
-151	    trace_var r53 $35 = r47
-152	    trace_line r53 L30
-153	    trace_line r53 L31
-154	    trace_var r53 $34 = r48
-155	    trace_line r53 L29
-156	    trace_var r53 $35 = r49
-157	    trace_line r53 L30
-158	    trace_line r53 L31
-159	    trace_var r53 $34 = r50
-160	    trace_line r53 L29
-161	    trace_var r53 $35 = r51
-162	    trace_line r53 L30
+143	    trace_line r53 L29
+144	    trace_var r53 $43 = r43
+145	    trace_line r53 L30
+146	    trace_line r53 L31
+147	    trace_var r53 $42 = r44
+148	    trace_line r53 L29
+149	    trace_var r53 $43 = r45
+150	    trace_line r53 L30
+151	    trace_line r53 L31
+152	    trace_var r53 $42 = r46
+153	    trace_line r53 L29
+154	    trace_var r53 $43 = r47
+155	    trace_line r53 L30
+156	    trace_line r53 L31
+157	    trace_var r53 $42 = r48
+158	    trace_line r53 L29
+159	    trace_var r53 $43 = r49
+160	    trace_line r53 L30
+161	    trace_line r53 L31
+162	    trace_var r53 $42 = r50
 163	    trace_line r53 L29
-164	    trace_line r53 L34
-165	    trace_exit r53 F4
-166	    trace_exit r53 F0
-167	    store32 ptr1 r1
-168	    store32 ptr2 r37
-169	    store32 ptr3 r41
-170	    store32 ptr4 r50
+164	    trace_var r53 $43 = r51
+165	    trace_line r53 L30
+166	    trace_line r53 L29
+167	    trace_line r53 L34
+168	    trace_var r53 $41 = r50
+169	    trace_exit r53 F4
+170	    trace_var r53 $28 = r1
+171	    trace_var r53 $29 = r37
+172	    trace_var r53 $30 = r41
+173	    trace_var r53 $31 = r50
+174	    trace_exit r53 F0
+175	    store32 ptr1 r1
+176	    store32 ptr2 r37
+177	    store32 ptr3 r41
+178	    store32 ptr4 r50
diff --git a/tests/sksl/runtime/LoopFloat.skvm b/tests/sksl/runtime/LoopFloat.skvm
index 934cb86..69711f6 100644
--- a/tests/sksl/runtime/LoopFloat.skvm
+++ b/tests/sksl/runtime/LoopFloat.skvm
@@ -8,50 +8,64 @@
 $7 = colorGreen (float4 : slot 4/4, L3)
 $8 = kZero (float, L6)
 $9 = kTen (float, L15)
-$10 = pos (float2 : slot 1/2, L115)
-$11 = pos (float2 : slot 2/2, L115)
-$12 = five (float, L116)
-$13 = five (float, L7)
-$14 = i (float, L8)
-$15 = five (float, L16)
-$16 = sum (float, L17)
-$17 = i (float, L18)
-$18 = five (float, L26)
-$19 = sum (float, L27)
-$20 = kOne (float, L28)
-$21 = i (float, L29)
-$22 = sum (float, L38)
-$23 = i (float, L39)
-$24 = result (float4 : slot 1/4, L50)
-$25 = result (float4 : slot 2/4, L50)
-$26 = result (float4 : slot 3/4, L50)
-$27 = result (float4 : slot 4/4, L50)
-$28 = i (float, L51)
-$29 = result (float4 : slot 1/4, L62)
-$30 = result (float4 : slot 2/4, L62)
-$31 = result (float4 : slot 3/4, L62)
-$32 = result (float4 : slot 4/4, L62)
-$33 = i (float, L63)
-$34 = result (float4 : slot 1/4, L74)
-$35 = result (float4 : slot 2/4, L74)
-$36 = result (float4 : slot 3/4, L74)
-$37 = result (float4 : slot 4/4, L74)
-$38 = i (float, L75)
-$39 = result (float4 : slot 1/4, L86)
-$40 = result (float4 : slot 2/4, L86)
-$41 = result (float4 : slot 3/4, L86)
-$42 = result (float4 : slot 4/4, L86)
-$43 = i (float, L87)
-$44 = result (float4 : slot 1/4, L108)
-$45 = result (float4 : slot 2/4, L108)
-$46 = result (float4 : slot 3/4, L108)
-$47 = result (float4 : slot 4/4, L108)
-$48 = i (float, L109)
-$49 = result (float4 : slot 1/4, L97)
-$50 = result (float4 : slot 2/4, L97)
-$51 = result (float4 : slot 3/4, L97)
-$52 = result (float4 : slot 4/4, L97)
-$53 = i (float, L98)
+$10 = [main].result (float4 : slot 1/4, L115)
+$11 = [main].result (float4 : slot 2/4, L115)
+$12 = [main].result (float4 : slot 3/4, L115)
+$13 = [main].result (float4 : slot 4/4, L115)
+$14 = pos (float2 : slot 1/2, L115)
+$15 = pos (float2 : slot 2/2, L115)
+$16 = five (float, L116)
+$17 = [return_loop].result (float, L7)
+$18 = five (float, L7)
+$19 = i (float, L8)
+$20 = [continue_loop].result (float, L16)
+$21 = five (float, L16)
+$22 = sum (float, L17)
+$23 = i (float, L18)
+$24 = [break_loop].result (float, L26)
+$25 = five (float, L26)
+$26 = sum (float, L27)
+$27 = kOne (float, L28)
+$28 = i (float, L29)
+$29 = [float_loop].result (float, L37)
+$30 = sum (float, L38)
+$31 = i (float, L39)
+$32 = [loop_operator_le].result (bool, L45)
+$33 = result (float4 : slot 1/4, L50)
+$34 = result (float4 : slot 2/4, L50)
+$35 = result (float4 : slot 3/4, L50)
+$36 = result (float4 : slot 4/4, L50)
+$37 = i (float, L51)
+$38 = [loop_operator_lt].result (bool, L57)
+$39 = result (float4 : slot 1/4, L62)
+$40 = result (float4 : slot 2/4, L62)
+$41 = result (float4 : slot 3/4, L62)
+$42 = result (float4 : slot 4/4, L62)
+$43 = i (float, L63)
+$44 = [loop_operator_ge].result (bool, L69)
+$45 = result (float4 : slot 1/4, L74)
+$46 = result (float4 : slot 2/4, L74)
+$47 = result (float4 : slot 3/4, L74)
+$48 = result (float4 : slot 4/4, L74)
+$49 = i (float, L75)
+$50 = [loop_operator_gt].result (bool, L81)
+$51 = result (float4 : slot 1/4, L86)
+$52 = result (float4 : slot 2/4, L86)
+$53 = result (float4 : slot 3/4, L86)
+$54 = result (float4 : slot 4/4, L86)
+$55 = i (float, L87)
+$56 = [loop_operator_eq].result (bool, L104)
+$57 = result (float4 : slot 1/4, L108)
+$58 = result (float4 : slot 2/4, L108)
+$59 = result (float4 : slot 3/4, L108)
+$60 = result (float4 : slot 4/4, L108)
+$61 = i (float, L109)
+$62 = [loop_operator_ne].result (bool, L93)
+$63 = result (float4 : slot 1/4, L97)
+$64 = result (float4 : slot 2/4, L97)
+$65 = result (float4 : slot 3/4, L97)
+$66 = result (float4 : slot 4/4, L97)
+$67 = i (float, L98)
 F0 = half4 main(float2 pos)
 F1 = float return_loop(float five)
 F2 = float continue_loop(float five)
@@ -64,7 +78,7 @@
 F9 = bool loop_operator_eq()
 F10 = bool loop_operator_ne()
 
-43 registers, 799 instructions:
+43 registers, 823 instructions:
 0	r0 = uniform32 ptr0 0
 1	r1 = uniform32 ptr0 4
 2	r2 = uniform32 ptr0 8
@@ -113,755 +127,779 @@
 44	    trace_var r34 $8 = r9
 45	    trace_var r34 $9 = r13
 46	    trace_enter r34 F0
-47	    trace_var r34 $10 = r33
-48	    trace_var r34 $11 = r0
+47	    trace_var r34 $14 = r33
+48	    trace_var r34 $15 = r0
 49	    trace_line r34 L116
 50	    r33 = min_f32 r33 r8
 51	    r33 = max_f32 r6 r33
 52	    r33 = mul_f32 r33 r14
-53	    trace_var r34 $12 = r33
+53	    trace_var r34 $16 = r33
 54	    trace_line r34 L117
 55	    trace_enter r34 F1
-56	    trace_var r34 $13 = r33
+56	    trace_var r34 $18 = r33
 57	    trace_line r34 L8
-58	    trace_var r34 $14 = r9
+58	    trace_var r34 $19 = r9
 59	    trace_line r34 L9
 60	    r35 = eq_f32 r9 r33
 61	    r36 = bit_and r34 r35
 62	    trace_line r36 L9
-63	    r36 = bit_xor r10 r35
-64	    r37 = bit_and r34 r36
-65	    trace_line r37 L8
-66	    trace_var r37 $14 = r15
-67	    trace_line r37 L9
-68	    r37 = eq_f32 r33 r15
-69	    r37 = bit_and r36 r37
-70	    r36 = bit_and r34 r37
-71	    trace_line r36 L9
-72	    r36 = bit_and r15 r37
-73	    r37 = bit_or r35 r37
-74	    r35 = bit_xor r10 r37
-75	    r38 = bit_and r34 r35
-76	    trace_line r38 L8
-77	    trace_var r38 $14 = r16
-78	    trace_line r38 L9
-79	    r38 = eq_f32 r33 r16
-80	    r38 = bit_and r35 r38
-81	    r35 = bit_and r34 r38
-82	    trace_line r35 L9
-83	    r36 = select r38 r16 r36
-84	    r38 = bit_or r37 r38
-85	    r37 = bit_xor r10 r38
-86	    r35 = bit_and r34 r37
-87	    trace_line r35 L8
-88	    trace_var r35 $14 = r17
-89	    trace_line r35 L9
-90	    r35 = eq_f32 r33 r17
-91	    r35 = bit_and r37 r35
-92	    r37 = bit_and r34 r35
-93	    trace_line r37 L9
-94	    r36 = select r35 r17 r36
-95	    r35 = bit_or r38 r35
-96	    r38 = bit_xor r10 r35
-97	    r37 = bit_and r34 r38
-98	    trace_line r37 L8
-99	    trace_var r37 $14 = r18
-100	    trace_line r37 L9
-101	    r37 = eq_f32 r33 r18
-102	    r37 = bit_and r38 r37
-103	    r38 = bit_and r34 r37
-104	    trace_line r38 L9
-105	    r36 = select r37 r18 r36
-106	    r37 = bit_or r35 r37
-107	    r35 = bit_xor r10 r37
-108	    r38 = bit_and r34 r35
-109	    trace_line r38 L8
-110	    trace_var r38 $14 = r14
-111	    trace_line r38 L9
-112	    r38 = eq_f32 r14 r33
-113	    r38 = bit_and r35 r38
-114	    r35 = bit_and r34 r38
-115	    trace_line r35 L9
-116	    r36 = select r38 r14 r36
-117	    r38 = bit_or r37 r38
-118	    r37 = bit_xor r10 r38
-119	    r35 = bit_and r34 r37
-120	    trace_line r35 L8
-121	    trace_var r35 $14 = r19
-122	    trace_line r35 L9
-123	    r35 = eq_f32 r33 r19
-124	    r35 = bit_and r37 r35
-125	    r37 = bit_and r34 r35
-126	    trace_line r37 L9
-127	    r36 = select r35 r19 r36
-128	    r35 = bit_or r38 r35
-129	    r38 = bit_xor r10 r35
-130	    r37 = bit_and r34 r38
-131	    trace_line r37 L8
-132	    trace_var r37 $14 = r20
-133	    trace_line r37 L9
-134	    r37 = eq_f32 r33 r20
-135	    r37 = bit_and r38 r37
-136	    r38 = bit_and r34 r37
-137	    trace_line r38 L9
-138	    r36 = select r37 r20 r36
-139	    r37 = bit_or r35 r37
-140	    r35 = bit_xor r10 r37
-141	    r38 = bit_and r34 r35
-142	    trace_line r38 L8
-143	    trace_var r38 $14 = r21
-144	    trace_line r38 L9
-145	    r38 = eq_f32 r33 r21
-146	    r38 = bit_and r35 r38
-147	    r35 = bit_and r34 r38
-148	    trace_line r35 L9
-149	    r36 = select r38 r21 r36
-150	    r38 = bit_or r37 r38
-151	    r37 = bit_xor r10 r38
-152	    r35 = bit_and r34 r37
-153	    trace_line r35 L8
-154	    trace_var r35 $14 = r22
-155	    trace_line r35 L9
-156	    r35 = eq_f32 r33 r22
-157	    r35 = bit_and r37 r35
-158	    r37 = bit_and r34 r35
-159	    trace_line r37 L9
-160	    r36 = select r35 r22 r36
-161	    r35 = bit_or r38 r35
-162	    r35 = bit_xor r10 r35
-163	    r38 = bit_and r34 r35
-164	    trace_line r38 L8
-165	    trace_line r38 L11
-166	    r35 = bit_clear r36 r35
-167	    trace_exit r34 F1
-168	    r35 = eq_f32 r14 r35
-169	    r36 = bit_and r34 r35
-170	    trace_enter r36 F2
-171	    trace_var r36 $15 = r33
-172	    trace_line r36 L17
-173	    trace_var r36 $16 = r9
-174	    trace_line r36 L18
-175	    trace_var r36 $17 = r9
-176	    trace_line r36 L19
-177	    r38 = gt_f32 r33 r9
-178	    r38 = bit_and r35 r38
-179	    r37 = bit_and r34 r38
-180	    trace_line r37 L19
-181	    r37 = bit_xor r10 r38
-182	    r39 = bit_and r35 r37
-183	    r39 = bit_and r34 r39
-184	    trace_line r39 L20
-185	    r37 = bit_or r38 r37
-186	    r38 = bit_and r35 r37
-187	    r38 = bit_and r34 r38
-188	    trace_line r38 L18
-189	    trace_var r38 $17 = r15
-190	    trace_line r38 L19
-191	    r38 = gt_f32 r33 r15
-192	    r38 = bit_and r35 r38
-193	    r38 = bit_and r37 r38
-194	    r39 = bit_and r34 r38
-195	    trace_line r39 L19
-196	    r39 = bit_xor r10 r38
-197	    r39 = bit_and r37 r39
-198	    r37 = bit_and r35 r39
-199	    r40 = bit_and r34 r37
-200	    trace_line r40 L20
-201	    r37 = bit_and r15 r37
-202	    trace_var r40 $16 = r37
-203	    r39 = bit_or r38 r39
-204	    r38 = bit_and r35 r39
-205	    r38 = bit_and r34 r38
-206	    trace_line r38 L18
-207	    trace_var r38 $17 = r16
-208	    trace_line r38 L19
-209	    r38 = gt_f32 r33 r16
-210	    r38 = bit_and r35 r38
-211	    r38 = bit_and r39 r38
-212	    r40 = bit_and r34 r38
-213	    trace_line r40 L19
-214	    r40 = bit_xor r10 r38
-215	    r40 = bit_and r39 r40
-216	    r39 = bit_and r35 r40
-217	    r41 = bit_and r34 r39
-218	    trace_line r41 L20
-219	    r42 = add_f32 r16 r37
-220	    r37 = select r39 r42 r37
-221	    trace_var r41 $16 = r37
-222	    r40 = bit_or r38 r40
-223	    r38 = bit_and r35 r40
-224	    r38 = bit_and r34 r38
-225	    trace_line r38 L18
-226	    trace_var r38 $17 = r17
-227	    trace_line r38 L19
-228	    r38 = gt_f32 r33 r17
-229	    r38 = bit_and r35 r38
-230	    r38 = bit_and r40 r38
-231	    r41 = bit_and r34 r38
-232	    trace_line r41 L19
-233	    r41 = bit_xor r10 r38
-234	    r41 = bit_and r40 r41
-235	    r40 = bit_and r35 r41
-236	    r42 = bit_and r34 r40
-237	    trace_line r42 L20
-238	    r39 = add_f32 r17 r37
-239	    r37 = select r40 r39 r37
-240	    trace_var r42 $16 = r37
-241	    r41 = bit_or r38 r41
-242	    r38 = bit_and r35 r41
-243	    r38 = bit_and r34 r38
-244	    trace_line r38 L18
-245	    trace_var r38 $17 = r18
-246	    trace_line r38 L19
-247	    r38 = gt_f32 r33 r18
-248	    r38 = bit_and r35 r38
-249	    r38 = bit_and r41 r38
-250	    r42 = bit_and r34 r38
-251	    trace_line r42 L19
-252	    r42 = bit_xor r10 r38
-253	    r42 = bit_and r41 r42
-254	    r41 = bit_and r35 r42
-255	    r39 = bit_and r34 r41
-256	    trace_line r39 L20
-257	    r40 = add_f32 r18 r37
-258	    r37 = select r41 r40 r37
-259	    trace_var r39 $16 = r37
-260	    r42 = bit_or r38 r42
-261	    r38 = bit_and r35 r42
-262	    r38 = bit_and r34 r38
-263	    trace_line r38 L18
-264	    trace_var r38 $17 = r14
-265	    trace_line r38 L19
-266	    r38 = gt_f32 r33 r14
-267	    r38 = bit_and r35 r38
-268	    r38 = bit_and r42 r38
-269	    r39 = bit_and r34 r38
-270	    trace_line r39 L19
-271	    r39 = bit_xor r10 r38
-272	    r39 = bit_and r42 r39
-273	    r42 = bit_and r35 r39
-274	    r40 = bit_and r34 r42
-275	    trace_line r40 L20
-276	    r41 = add_f32 r14 r37
-277	    r37 = select r42 r41 r37
-278	    trace_var r40 $16 = r37
-279	    r39 = bit_or r38 r39
-280	    r38 = bit_and r35 r39
-281	    r38 = bit_and r34 r38
-282	    trace_line r38 L18
-283	    trace_var r38 $17 = r19
-284	    trace_line r38 L19
-285	    r38 = gt_f32 r33 r19
-286	    r38 = bit_and r35 r38
-287	    r38 = bit_and r39 r38
-288	    r40 = bit_and r34 r38
-289	    trace_line r40 L19
-290	    r40 = bit_xor r10 r38
-291	    r40 = bit_and r39 r40
-292	    r39 = bit_and r35 r40
-293	    r41 = bit_and r34 r39
-294	    trace_line r41 L20
-295	    r42 = add_f32 r19 r37
-296	    r37 = select r39 r42 r37
-297	    trace_var r41 $16 = r37
-298	    r40 = bit_or r38 r40
-299	    r38 = bit_and r35 r40
-300	    r38 = bit_and r34 r38
-301	    trace_line r38 L18
-302	    trace_var r38 $17 = r20
-303	    trace_line r38 L19
-304	    r38 = gt_f32 r33 r20
-305	    r38 = bit_and r35 r38
-306	    r38 = bit_and r40 r38
-307	    r41 = bit_and r34 r38
-308	    trace_line r41 L19
-309	    r41 = bit_xor r10 r38
-310	    r41 = bit_and r40 r41
-311	    r40 = bit_and r35 r41
-312	    r42 = bit_and r34 r40
-313	    trace_line r42 L20
-314	    r39 = add_f32 r20 r37
-315	    r37 = select r40 r39 r37
-316	    trace_var r42 $16 = r37
-317	    r41 = bit_or r38 r41
-318	    r38 = bit_and r35 r41
-319	    r38 = bit_and r34 r38
-320	    trace_line r38 L18
-321	    trace_var r38 $17 = r21
-322	    trace_line r38 L19
-323	    r38 = gt_f32 r33 r21
-324	    r38 = bit_and r35 r38
-325	    r38 = bit_and r41 r38
-326	    r42 = bit_and r34 r38
-327	    trace_line r42 L19
-328	    r42 = bit_xor r10 r38
-329	    r42 = bit_and r41 r42
-330	    r41 = bit_and r35 r42
-331	    r39 = bit_and r34 r41
-332	    trace_line r39 L20
-333	    r40 = add_f32 r21 r37
-334	    r37 = select r41 r40 r37
-335	    trace_var r39 $16 = r37
-336	    r42 = bit_or r38 r42
-337	    r38 = bit_and r35 r42
-338	    r38 = bit_and r34 r38
-339	    trace_line r38 L18
-340	    trace_var r38 $17 = r22
-341	    trace_line r38 L19
-342	    r38 = gt_f32 r33 r22
-343	    r38 = bit_and r35 r38
-344	    r38 = bit_and r42 r38
-345	    r39 = bit_and r34 r38
-346	    trace_line r39 L19
-347	    r39 = bit_xor r10 r38
-348	    r39 = bit_and r42 r39
-349	    r42 = bit_and r35 r39
-350	    r40 = bit_and r34 r42
-351	    trace_line r40 L20
-352	    r41 = add_f32 r22 r37
-353	    r37 = select r42 r41 r37
-354	    trace_var r40 $16 = r37
-355	    r39 = bit_or r38 r39
-356	    r39 = bit_and r35 r39
-357	    r39 = bit_and r34 r39
-358	    trace_line r39 L18
-359	    trace_line r36 L22
-360	    r37 = bit_and r35 r37
-361	    trace_exit r36 F2
-362	    r37 = eq_f32 r37 r23
-363	    r37 = bit_and r35 r37
-364	    r35 = bit_and r34 r37
-365	    trace_enter r35 F3
-366	    trace_var r35 $18 = r33
-367	    trace_line r35 L27
-368	    trace_var r35 $19 = r9
-369	    trace_line r35 L28
-370	    trace_var r35 $20 = r15
-371	    trace_line r35 L29
-372	    trace_var r35 $21 = r9
-373	    trace_line r35 L30
-374	    r36 = gt_f32 r9 r33
-375	    r36 = bit_and r37 r36
-376	    r39 = bit_and r34 r36
-377	    trace_line r39 L30
-378	    r36 = bit_xor r10 r36
-379	    r39 = bit_and r37 r36
-380	    r39 = bit_and r34 r39
-381	    trace_line r39 L31
-382	    trace_line r39 L29
-383	    trace_var r39 $21 = r15
-384	    trace_line r39 L30
-385	    r39 = gt_f32 r15 r33
-386	    r39 = bit_and r37 r39
-387	    r39 = bit_and r36 r39
-388	    r38 = bit_and r34 r39
-389	    trace_line r38 L30
-390	    r39 = bit_xor r10 r39
-391	    r39 = bit_and r36 r39
-392	    r36 = bit_and r37 r39
-393	    r38 = bit_and r34 r36
-394	    trace_line r38 L31
-395	    r36 = bit_and r15 r36
-396	    trace_var r38 $19 = r36
-397	    trace_line r38 L29
-398	    trace_var r38 $21 = r16
-399	    trace_line r38 L30
-400	    r38 = gt_f32 r16 r33
-401	    r38 = bit_and r37 r38
-402	    r38 = bit_and r39 r38
-403	    r40 = bit_and r34 r38
-404	    trace_line r40 L30
-405	    r38 = bit_xor r10 r38
-406	    r38 = bit_and r39 r38
-407	    r39 = bit_and r37 r38
-408	    r40 = bit_and r34 r39
-409	    trace_line r40 L31
-410	    r41 = add_f32 r16 r36
-411	    r36 = select r39 r41 r36
-412	    trace_var r40 $19 = r36
-413	    trace_line r40 L29
-414	    trace_var r40 $21 = r17
-415	    trace_line r40 L30
-416	    r40 = gt_f32 r17 r33
-417	    r40 = bit_and r37 r40
-418	    r40 = bit_and r38 r40
-419	    r41 = bit_and r34 r40
-420	    trace_line r41 L30
-421	    r40 = bit_xor r10 r40
-422	    r40 = bit_and r38 r40
-423	    r38 = bit_and r37 r40
-424	    r41 = bit_and r34 r38
-425	    trace_line r41 L31
-426	    r39 = add_f32 r17 r36
-427	    r36 = select r38 r39 r36
-428	    trace_var r41 $19 = r36
-429	    trace_line r41 L29
-430	    trace_var r41 $21 = r18
-431	    trace_line r41 L30
-432	    r41 = gt_f32 r18 r33
-433	    r41 = bit_and r37 r41
-434	    r41 = bit_and r40 r41
-435	    r39 = bit_and r34 r41
-436	    trace_line r39 L30
-437	    r41 = bit_xor r10 r41
-438	    r41 = bit_and r40 r41
-439	    r40 = bit_and r37 r41
-440	    r39 = bit_and r34 r40
-441	    trace_line r39 L31
-442	    r38 = add_f32 r18 r36
-443	    r36 = select r40 r38 r36
-444	    trace_var r39 $19 = r36
-445	    trace_line r39 L29
-446	    trace_var r39 $21 = r14
-447	    trace_line r39 L30
-448	    r39 = gt_f32 r14 r33
-449	    r39 = bit_and r37 r39
-450	    r39 = bit_and r41 r39
-451	    r38 = bit_and r34 r39
-452	    trace_line r38 L30
-453	    r39 = bit_xor r10 r39
-454	    r39 = bit_and r41 r39
-455	    r41 = bit_and r37 r39
-456	    r38 = bit_and r34 r41
-457	    trace_line r38 L31
-458	    r40 = add_f32 r14 r36
-459	    r36 = select r41 r40 r36
-460	    trace_var r38 $19 = r36
-461	    trace_line r38 L29
-462	    trace_var r38 $21 = r19
-463	    trace_line r38 L30
-464	    r38 = gt_f32 r19 r33
-465	    r38 = bit_and r37 r38
-466	    r38 = bit_and r39 r38
-467	    r40 = bit_and r34 r38
-468	    trace_line r40 L30
-469	    r38 = bit_xor r10 r38
-470	    r38 = bit_and r39 r38
-471	    r39 = bit_and r37 r38
-472	    r40 = bit_and r34 r39
-473	    trace_line r40 L31
-474	    r41 = add_f32 r19 r36
-475	    r36 = select r39 r41 r36
-476	    trace_var r40 $19 = r36
-477	    trace_line r40 L29
-478	    trace_var r40 $21 = r20
-479	    trace_line r40 L30
-480	    r40 = gt_f32 r20 r33
-481	    r40 = bit_and r37 r40
-482	    r40 = bit_and r38 r40
-483	    r41 = bit_and r34 r40
-484	    trace_line r41 L30
-485	    r40 = bit_xor r10 r40
-486	    r40 = bit_and r38 r40
-487	    r38 = bit_and r37 r40
-488	    r41 = bit_and r34 r38
-489	    trace_line r41 L31
-490	    r39 = add_f32 r20 r36
-491	    r36 = select r38 r39 r36
-492	    trace_var r41 $19 = r36
-493	    trace_line r41 L29
-494	    trace_var r41 $21 = r21
-495	    trace_line r41 L30
-496	    r41 = gt_f32 r21 r33
-497	    r41 = bit_and r37 r41
-498	    r41 = bit_and r40 r41
-499	    r39 = bit_and r34 r41
-500	    trace_line r39 L30
-501	    r41 = bit_xor r10 r41
-502	    r41 = bit_and r40 r41
-503	    r40 = bit_and r37 r41
-504	    r39 = bit_and r34 r40
-505	    trace_line r39 L31
-506	    r38 = add_f32 r21 r36
-507	    r36 = select r40 r38 r36
-508	    trace_var r39 $19 = r36
-509	    trace_line r39 L29
-510	    trace_var r39 $21 = r22
-511	    trace_line r39 L30
-512	    r33 = gt_f32 r22 r33
-513	    r33 = bit_and r37 r33
-514	    r33 = bit_and r41 r33
-515	    r39 = bit_and r34 r33
-516	    trace_line r39 L30
-517	    r33 = bit_xor r10 r33
-518	    r33 = bit_and r41 r33
-519	    r33 = bit_and r37 r33
-520	    r41 = bit_and r34 r33
-521	    trace_line r41 L31
-522	    r39 = add_f32 r22 r36
-523	    r36 = select r33 r39 r36
-524	    trace_var r41 $19 = r36
-525	    trace_line r41 L29
-526	    trace_line r35 L33
-527	    r36 = bit_and r37 r36
-528	    trace_exit r35 F3
-529	    r36 = eq_f32 r36 r24
-530	    r36 = bit_and r37 r36
-531	    r37 = bit_and r34 r36
-532	    trace_enter r37 F4
-533	    trace_line r37 L38
-534	    trace_var r37 $22 = r9
-535	    trace_line r37 L39
-536	    trace_var r37 $23 = r25
-537	    trace_line r37 L40
-538	    r35 = bit_and r36 r25
-539	    trace_var r37 $22 = r35
-540	    trace_line r37 L39
-541	    trace_var r37 $23 = r26
-542	    trace_line r37 L40
-543	    r41 = add_f32 r35 r26
-544	    r35 = select r36 r41 r35
-545	    trace_var r37 $22 = r35
-546	    trace_line r37 L39
-547	    trace_var r37 $23 = r27
-548	    trace_line r37 L40
-549	    r41 = add_f32 r35 r27
-550	    r35 = select r36 r41 r35
-551	    trace_var r37 $22 = r35
-552	    trace_line r37 L39
-553	    trace_var r37 $23 = r28
-554	    trace_line r37 L40
-555	    r41 = add_f32 r35 r28
-556	    r35 = select r36 r41 r35
-557	    trace_var r37 $22 = r35
-558	    trace_line r37 L39
-559	    trace_var r37 $23 = r29
-560	    trace_line r37 L40
-561	    r41 = add_f32 r35 r29
-562	    r35 = select r36 r41 r35
-563	    trace_var r37 $22 = r35
-564	    trace_line r37 L39
-565	    trace_line r37 L42
-566	    r35 = sub_f32 r35 r30
-567	    r35 = bit_and r36 r35
-568	    trace_exit r37 F4
-569	    r35 = bit_and r35 r31
-570	    r35 = gt_f32 r32 r35
-571	    r35 = bit_and r36 r35
-572	    r36 = bit_and r34 r35
-573	    trace_enter r36 F5
-574	    trace_line r36 L47
-575	    trace_line r36 L48
-576	    trace_line r36 L50
-577	    trace_var r36 $24 = r22
-578	    trace_var r36 $25 = r22
-579	    trace_var r36 $26 = r22
-580	    trace_var r36 $27 = r22
-581	    trace_line r36 L51
-582	    trace_var r36 $28 = r15
-583	    trace_line r36 L52
-584	    r37 = select r35 r15 r22
-585	    trace_var r36 $27 = r37
-586	    trace_line r36 L51
-587	    trace_var r36 $28 = r16
-588	    trace_line r36 L52
-589	    r41 = select r35 r37 r22
-590	    trace_var r36 $26 = r41
-591	    r37 = select r35 r16 r37
-592	    trace_var r36 $27 = r37
-593	    trace_line r36 L51
-594	    trace_var r36 $28 = r17
-595	    trace_line r36 L52
-596	    r39 = select r35 r41 r22
-597	    trace_var r36 $25 = r39
-598	    r41 = select r35 r37 r41
-599	    trace_var r36 $26 = r41
-600	    r37 = select r35 r17 r37
-601	    trace_var r36 $27 = r37
-602	    trace_line r36 L51
-603	    trace_line r36 L54
-604	    r39 = eq_f32 r15 r39
-605	    r41 = eq_f32 r16 r41
-606	    r37 = eq_f32 r17 r37
-607	    r41 = bit_and r39 r41
-608	    r41 = bit_and r37 r41
-609	    r41 = bit_and r35 r41
-610	    trace_exit r36 F5
-611	    r41 = bit_and r35 r41
-612	    r35 = bit_and r34 r41
-613	    trace_enter r35 F6
-614	    trace_line r35 L59
-615	    trace_line r35 L60
-616	    trace_line r35 L62
-617	    trace_var r35 $29 = r22
-618	    trace_var r35 $30 = r22
-619	    trace_var r35 $31 = r22
-620	    trace_var r35 $32 = r22
-621	    trace_line r35 L63
-622	    trace_var r35 $33 = r15
-623	    trace_line r35 L64
-624	    r36 = select r41 r15 r22
-625	    trace_var r35 $32 = r36
-626	    trace_line r35 L63
-627	    trace_var r35 $33 = r16
-628	    trace_line r35 L64
-629	    r37 = select r41 r36 r22
-630	    trace_var r35 $31 = r37
-631	    r36 = select r41 r16 r36
-632	    trace_var r35 $32 = r36
-633	    trace_line r35 L63
-634	    trace_var r35 $33 = r17
-635	    trace_line r35 L64
-636	    r39 = select r41 r37 r22
-637	    trace_var r35 $30 = r39
-638	    r37 = select r41 r36 r37
-639	    trace_var r35 $31 = r37
-640	    r36 = select r41 r17 r36
-641	    trace_var r35 $32 = r36
-642	    trace_line r35 L63
-643	    trace_line r35 L66
-644	    r39 = eq_f32 r15 r39
-645	    r37 = eq_f32 r16 r37
-646	    r36 = eq_f32 r17 r36
-647	    r37 = bit_and r39 r37
-648	    r37 = bit_and r36 r37
-649	    r37 = bit_and r41 r37
-650	    trace_exit r35 F6
-651	    r37 = bit_and r41 r37
-652	    r41 = bit_and r34 r37
-653	    trace_enter r41 F7
-654	    trace_line r41 L71
-655	    trace_line r41 L72
-656	    trace_line r41 L74
-657	    trace_var r41 $34 = r22
-658	    trace_var r41 $35 = r22
-659	    trace_var r41 $36 = r22
-660	    trace_var r41 $37 = r22
-661	    trace_line r41 L75
-662	    trace_var r41 $38 = r17
-663	    trace_line r41 L76
-664	    r35 = select r37 r17 r22
-665	    trace_var r41 $37 = r35
-666	    trace_line r41 L75
-667	    trace_var r41 $38 = r16
-668	    trace_line r41 L76
-669	    r36 = select r37 r35 r22
-670	    trace_var r41 $36 = r36
-671	    r35 = select r37 r16 r35
-672	    trace_var r41 $37 = r35
-673	    trace_line r41 L75
-674	    trace_var r41 $38 = r15
-675	    trace_line r41 L76
-676	    r39 = select r37 r36 r22
-677	    trace_var r41 $35 = r39
-678	    r36 = select r37 r35 r36
-679	    trace_var r41 $36 = r36
-680	    r35 = select r37 r15 r35
-681	    trace_var r41 $37 = r35
+63	    trace_var r36 $17 = r9
+64	    r36 = bit_xor r10 r35
+65	    r37 = bit_and r34 r36
+66	    trace_line r37 L8
+67	    trace_var r37 $19 = r15
+68	    trace_line r37 L9
+69	    r37 = eq_f32 r33 r15
+70	    r37 = bit_and r36 r37
+71	    r36 = bit_and r34 r37
+72	    trace_line r36 L9
+73	    r38 = bit_and r15 r37
+74	    trace_var r36 $17 = r38
+75	    r37 = bit_or r35 r37
+76	    r35 = bit_xor r10 r37
+77	    r36 = bit_and r34 r35
+78	    trace_line r36 L8
+79	    trace_var r36 $19 = r16
+80	    trace_line r36 L9
+81	    r36 = eq_f32 r33 r16
+82	    r36 = bit_and r35 r36
+83	    r35 = bit_and r34 r36
+84	    trace_line r35 L9
+85	    r38 = select r36 r16 r38
+86	    trace_var r35 $17 = r38
+87	    r36 = bit_or r37 r36
+88	    r37 = bit_xor r10 r36
+89	    r35 = bit_and r34 r37
+90	    trace_line r35 L8
+91	    trace_var r35 $19 = r17
+92	    trace_line r35 L9
+93	    r35 = eq_f32 r33 r17
+94	    r35 = bit_and r37 r35
+95	    r37 = bit_and r34 r35
+96	    trace_line r37 L9
+97	    r38 = select r35 r17 r38
+98	    trace_var r37 $17 = r38
+99	    r35 = bit_or r36 r35
+100	    r36 = bit_xor r10 r35
+101	    r37 = bit_and r34 r36
+102	    trace_line r37 L8
+103	    trace_var r37 $19 = r18
+104	    trace_line r37 L9
+105	    r37 = eq_f32 r33 r18
+106	    r37 = bit_and r36 r37
+107	    r36 = bit_and r34 r37
+108	    trace_line r36 L9
+109	    r38 = select r37 r18 r38
+110	    trace_var r36 $17 = r38
+111	    r37 = bit_or r35 r37
+112	    r35 = bit_xor r10 r37
+113	    r36 = bit_and r34 r35
+114	    trace_line r36 L8
+115	    trace_var r36 $19 = r14
+116	    trace_line r36 L9
+117	    r36 = eq_f32 r14 r33
+118	    r36 = bit_and r35 r36
+119	    r35 = bit_and r34 r36
+120	    trace_line r35 L9
+121	    r38 = select r36 r14 r38
+122	    trace_var r35 $17 = r38
+123	    r36 = bit_or r37 r36
+124	    r37 = bit_xor r10 r36
+125	    r35 = bit_and r34 r37
+126	    trace_line r35 L8
+127	    trace_var r35 $19 = r19
+128	    trace_line r35 L9
+129	    r35 = eq_f32 r33 r19
+130	    r35 = bit_and r37 r35
+131	    r37 = bit_and r34 r35
+132	    trace_line r37 L9
+133	    r38 = select r35 r19 r38
+134	    trace_var r37 $17 = r38
+135	    r35 = bit_or r36 r35
+136	    r36 = bit_xor r10 r35
+137	    r37 = bit_and r34 r36
+138	    trace_line r37 L8
+139	    trace_var r37 $19 = r20
+140	    trace_line r37 L9
+141	    r37 = eq_f32 r33 r20
+142	    r37 = bit_and r36 r37
+143	    r36 = bit_and r34 r37
+144	    trace_line r36 L9
+145	    r38 = select r37 r20 r38
+146	    trace_var r36 $17 = r38
+147	    r37 = bit_or r35 r37
+148	    r35 = bit_xor r10 r37
+149	    r36 = bit_and r34 r35
+150	    trace_line r36 L8
+151	    trace_var r36 $19 = r21
+152	    trace_line r36 L9
+153	    r36 = eq_f32 r33 r21
+154	    r36 = bit_and r35 r36
+155	    r35 = bit_and r34 r36
+156	    trace_line r35 L9
+157	    r38 = select r36 r21 r38
+158	    trace_var r35 $17 = r38
+159	    r36 = bit_or r37 r36
+160	    r37 = bit_xor r10 r36
+161	    r35 = bit_and r34 r37
+162	    trace_line r35 L8
+163	    trace_var r35 $19 = r22
+164	    trace_line r35 L9
+165	    r35 = eq_f32 r33 r22
+166	    r35 = bit_and r37 r35
+167	    r37 = bit_and r34 r35
+168	    trace_line r37 L9
+169	    r38 = select r35 r22 r38
+170	    trace_var r37 $17 = r38
+171	    r35 = bit_or r36 r35
+172	    r35 = bit_xor r10 r35
+173	    r36 = bit_and r34 r35
+174	    trace_line r36 L8
+175	    trace_line r36 L11
+176	    r35 = bit_clear r38 r35
+177	    trace_var r36 $17 = r35
+178	    trace_exit r34 F1
+179	    r35 = eq_f32 r14 r35
+180	    r36 = bit_and r34 r35
+181	    trace_enter r36 F2
+182	    trace_var r36 $21 = r33
+183	    trace_line r36 L17
+184	    trace_var r36 $22 = r9
+185	    trace_line r36 L18
+186	    trace_var r36 $23 = r9
+187	    trace_line r36 L19
+188	    r38 = gt_f32 r33 r9
+189	    r38 = bit_and r35 r38
+190	    r37 = bit_and r34 r38
+191	    trace_line r37 L19
+192	    r37 = bit_xor r10 r38
+193	    r39 = bit_and r35 r37
+194	    r39 = bit_and r34 r39
+195	    trace_line r39 L20
+196	    r37 = bit_or r38 r37
+197	    r38 = bit_and r35 r37
+198	    r38 = bit_and r34 r38
+199	    trace_line r38 L18
+200	    trace_var r38 $23 = r15
+201	    trace_line r38 L19
+202	    r38 = gt_f32 r33 r15
+203	    r38 = bit_and r35 r38
+204	    r38 = bit_and r37 r38
+205	    r39 = bit_and r34 r38
+206	    trace_line r39 L19
+207	    r39 = bit_xor r10 r38
+208	    r39 = bit_and r37 r39
+209	    r37 = bit_and r35 r39
+210	    r40 = bit_and r34 r37
+211	    trace_line r40 L20
+212	    r37 = bit_and r15 r37
+213	    trace_var r40 $22 = r37
+214	    r39 = bit_or r38 r39
+215	    r38 = bit_and r35 r39
+216	    r38 = bit_and r34 r38
+217	    trace_line r38 L18
+218	    trace_var r38 $23 = r16
+219	    trace_line r38 L19
+220	    r38 = gt_f32 r33 r16
+221	    r38 = bit_and r35 r38
+222	    r38 = bit_and r39 r38
+223	    r40 = bit_and r34 r38
+224	    trace_line r40 L19
+225	    r40 = bit_xor r10 r38
+226	    r40 = bit_and r39 r40
+227	    r39 = bit_and r35 r40
+228	    r41 = bit_and r34 r39
+229	    trace_line r41 L20
+230	    r42 = add_f32 r16 r37
+231	    r37 = select r39 r42 r37
+232	    trace_var r41 $22 = r37
+233	    r40 = bit_or r38 r40
+234	    r38 = bit_and r35 r40
+235	    r38 = bit_and r34 r38
+236	    trace_line r38 L18
+237	    trace_var r38 $23 = r17
+238	    trace_line r38 L19
+239	    r38 = gt_f32 r33 r17
+240	    r38 = bit_and r35 r38
+241	    r38 = bit_and r40 r38
+242	    r41 = bit_and r34 r38
+243	    trace_line r41 L19
+244	    r41 = bit_xor r10 r38
+245	    r41 = bit_and r40 r41
+246	    r40 = bit_and r35 r41
+247	    r42 = bit_and r34 r40
+248	    trace_line r42 L20
+249	    r39 = add_f32 r17 r37
+250	    r37 = select r40 r39 r37
+251	    trace_var r42 $22 = r37
+252	    r41 = bit_or r38 r41
+253	    r38 = bit_and r35 r41
+254	    r38 = bit_and r34 r38
+255	    trace_line r38 L18
+256	    trace_var r38 $23 = r18
+257	    trace_line r38 L19
+258	    r38 = gt_f32 r33 r18
+259	    r38 = bit_and r35 r38
+260	    r38 = bit_and r41 r38
+261	    r42 = bit_and r34 r38
+262	    trace_line r42 L19
+263	    r42 = bit_xor r10 r38
+264	    r42 = bit_and r41 r42
+265	    r41 = bit_and r35 r42
+266	    r39 = bit_and r34 r41
+267	    trace_line r39 L20
+268	    r40 = add_f32 r18 r37
+269	    r37 = select r41 r40 r37
+270	    trace_var r39 $22 = r37
+271	    r42 = bit_or r38 r42
+272	    r38 = bit_and r35 r42
+273	    r38 = bit_and r34 r38
+274	    trace_line r38 L18
+275	    trace_var r38 $23 = r14
+276	    trace_line r38 L19
+277	    r38 = gt_f32 r33 r14
+278	    r38 = bit_and r35 r38
+279	    r38 = bit_and r42 r38
+280	    r39 = bit_and r34 r38
+281	    trace_line r39 L19
+282	    r39 = bit_xor r10 r38
+283	    r39 = bit_and r42 r39
+284	    r42 = bit_and r35 r39
+285	    r40 = bit_and r34 r42
+286	    trace_line r40 L20
+287	    r41 = add_f32 r14 r37
+288	    r37 = select r42 r41 r37
+289	    trace_var r40 $22 = r37
+290	    r39 = bit_or r38 r39
+291	    r38 = bit_and r35 r39
+292	    r38 = bit_and r34 r38
+293	    trace_line r38 L18
+294	    trace_var r38 $23 = r19
+295	    trace_line r38 L19
+296	    r38 = gt_f32 r33 r19
+297	    r38 = bit_and r35 r38
+298	    r38 = bit_and r39 r38
+299	    r40 = bit_and r34 r38
+300	    trace_line r40 L19
+301	    r40 = bit_xor r10 r38
+302	    r40 = bit_and r39 r40
+303	    r39 = bit_and r35 r40
+304	    r41 = bit_and r34 r39
+305	    trace_line r41 L20
+306	    r42 = add_f32 r19 r37
+307	    r37 = select r39 r42 r37
+308	    trace_var r41 $22 = r37
+309	    r40 = bit_or r38 r40
+310	    r38 = bit_and r35 r40
+311	    r38 = bit_and r34 r38
+312	    trace_line r38 L18
+313	    trace_var r38 $23 = r20
+314	    trace_line r38 L19
+315	    r38 = gt_f32 r33 r20
+316	    r38 = bit_and r35 r38
+317	    r38 = bit_and r40 r38
+318	    r41 = bit_and r34 r38
+319	    trace_line r41 L19
+320	    r41 = bit_xor r10 r38
+321	    r41 = bit_and r40 r41
+322	    r40 = bit_and r35 r41
+323	    r42 = bit_and r34 r40
+324	    trace_line r42 L20
+325	    r39 = add_f32 r20 r37
+326	    r37 = select r40 r39 r37
+327	    trace_var r42 $22 = r37
+328	    r41 = bit_or r38 r41
+329	    r38 = bit_and r35 r41
+330	    r38 = bit_and r34 r38
+331	    trace_line r38 L18
+332	    trace_var r38 $23 = r21
+333	    trace_line r38 L19
+334	    r38 = gt_f32 r33 r21
+335	    r38 = bit_and r35 r38
+336	    r38 = bit_and r41 r38
+337	    r42 = bit_and r34 r38
+338	    trace_line r42 L19
+339	    r42 = bit_xor r10 r38
+340	    r42 = bit_and r41 r42
+341	    r41 = bit_and r35 r42
+342	    r39 = bit_and r34 r41
+343	    trace_line r39 L20
+344	    r40 = add_f32 r21 r37
+345	    r37 = select r41 r40 r37
+346	    trace_var r39 $22 = r37
+347	    r42 = bit_or r38 r42
+348	    r38 = bit_and r35 r42
+349	    r38 = bit_and r34 r38
+350	    trace_line r38 L18
+351	    trace_var r38 $23 = r22
+352	    trace_line r38 L19
+353	    r38 = gt_f32 r33 r22
+354	    r38 = bit_and r35 r38
+355	    r38 = bit_and r42 r38
+356	    r39 = bit_and r34 r38
+357	    trace_line r39 L19
+358	    r39 = bit_xor r10 r38
+359	    r39 = bit_and r42 r39
+360	    r42 = bit_and r35 r39
+361	    r40 = bit_and r34 r42
+362	    trace_line r40 L20
+363	    r41 = add_f32 r22 r37
+364	    r37 = select r42 r41 r37
+365	    trace_var r40 $22 = r37
+366	    r39 = bit_or r38 r39
+367	    r39 = bit_and r35 r39
+368	    r39 = bit_and r34 r39
+369	    trace_line r39 L18
+370	    trace_line r36 L22
+371	    r37 = bit_and r35 r37
+372	    trace_var r36 $20 = r37
+373	    trace_exit r36 F2
+374	    r37 = eq_f32 r37 r23
+375	    r37 = bit_and r35 r37
+376	    r35 = bit_and r34 r37
+377	    trace_enter r35 F3
+378	    trace_var r35 $25 = r33
+379	    trace_line r35 L27
+380	    trace_var r35 $26 = r9
+381	    trace_line r35 L28
+382	    trace_var r35 $27 = r15
+383	    trace_line r35 L29
+384	    trace_var r35 $28 = r9
+385	    trace_line r35 L30
+386	    r36 = gt_f32 r9 r33
+387	    r36 = bit_and r37 r36
+388	    r39 = bit_and r34 r36
+389	    trace_line r39 L30
+390	    r36 = bit_xor r10 r36
+391	    r39 = bit_and r37 r36
+392	    r39 = bit_and r34 r39
+393	    trace_line r39 L31
+394	    trace_line r39 L29
+395	    trace_var r39 $28 = r15
+396	    trace_line r39 L30
+397	    r39 = gt_f32 r15 r33
+398	    r39 = bit_and r37 r39
+399	    r39 = bit_and r36 r39
+400	    r38 = bit_and r34 r39
+401	    trace_line r38 L30
+402	    r39 = bit_xor r10 r39
+403	    r39 = bit_and r36 r39
+404	    r36 = bit_and r37 r39
+405	    r38 = bit_and r34 r36
+406	    trace_line r38 L31
+407	    r36 = bit_and r15 r36
+408	    trace_var r38 $26 = r36
+409	    trace_line r38 L29
+410	    trace_var r38 $28 = r16
+411	    trace_line r38 L30
+412	    r38 = gt_f32 r16 r33
+413	    r38 = bit_and r37 r38
+414	    r38 = bit_and r39 r38
+415	    r40 = bit_and r34 r38
+416	    trace_line r40 L30
+417	    r38 = bit_xor r10 r38
+418	    r38 = bit_and r39 r38
+419	    r39 = bit_and r37 r38
+420	    r40 = bit_and r34 r39
+421	    trace_line r40 L31
+422	    r41 = add_f32 r16 r36
+423	    r36 = select r39 r41 r36
+424	    trace_var r40 $26 = r36
+425	    trace_line r40 L29
+426	    trace_var r40 $28 = r17
+427	    trace_line r40 L30
+428	    r40 = gt_f32 r17 r33
+429	    r40 = bit_and r37 r40
+430	    r40 = bit_and r38 r40
+431	    r41 = bit_and r34 r40
+432	    trace_line r41 L30
+433	    r40 = bit_xor r10 r40
+434	    r40 = bit_and r38 r40
+435	    r38 = bit_and r37 r40
+436	    r41 = bit_and r34 r38
+437	    trace_line r41 L31
+438	    r39 = add_f32 r17 r36
+439	    r36 = select r38 r39 r36
+440	    trace_var r41 $26 = r36
+441	    trace_line r41 L29
+442	    trace_var r41 $28 = r18
+443	    trace_line r41 L30
+444	    r41 = gt_f32 r18 r33
+445	    r41 = bit_and r37 r41
+446	    r41 = bit_and r40 r41
+447	    r39 = bit_and r34 r41
+448	    trace_line r39 L30
+449	    r41 = bit_xor r10 r41
+450	    r41 = bit_and r40 r41
+451	    r40 = bit_and r37 r41
+452	    r39 = bit_and r34 r40
+453	    trace_line r39 L31
+454	    r38 = add_f32 r18 r36
+455	    r36 = select r40 r38 r36
+456	    trace_var r39 $26 = r36
+457	    trace_line r39 L29
+458	    trace_var r39 $28 = r14
+459	    trace_line r39 L30
+460	    r39 = gt_f32 r14 r33
+461	    r39 = bit_and r37 r39
+462	    r39 = bit_and r41 r39
+463	    r38 = bit_and r34 r39
+464	    trace_line r38 L30
+465	    r39 = bit_xor r10 r39
+466	    r39 = bit_and r41 r39
+467	    r41 = bit_and r37 r39
+468	    r38 = bit_and r34 r41
+469	    trace_line r38 L31
+470	    r40 = add_f32 r14 r36
+471	    r36 = select r41 r40 r36
+472	    trace_var r38 $26 = r36
+473	    trace_line r38 L29
+474	    trace_var r38 $28 = r19
+475	    trace_line r38 L30
+476	    r38 = gt_f32 r19 r33
+477	    r38 = bit_and r37 r38
+478	    r38 = bit_and r39 r38
+479	    r40 = bit_and r34 r38
+480	    trace_line r40 L30
+481	    r38 = bit_xor r10 r38
+482	    r38 = bit_and r39 r38
+483	    r39 = bit_and r37 r38
+484	    r40 = bit_and r34 r39
+485	    trace_line r40 L31
+486	    r41 = add_f32 r19 r36
+487	    r36 = select r39 r41 r36
+488	    trace_var r40 $26 = r36
+489	    trace_line r40 L29
+490	    trace_var r40 $28 = r20
+491	    trace_line r40 L30
+492	    r40 = gt_f32 r20 r33
+493	    r40 = bit_and r37 r40
+494	    r40 = bit_and r38 r40
+495	    r41 = bit_and r34 r40
+496	    trace_line r41 L30
+497	    r40 = bit_xor r10 r40
+498	    r40 = bit_and r38 r40
+499	    r38 = bit_and r37 r40
+500	    r41 = bit_and r34 r38
+501	    trace_line r41 L31
+502	    r39 = add_f32 r20 r36
+503	    r36 = select r38 r39 r36
+504	    trace_var r41 $26 = r36
+505	    trace_line r41 L29
+506	    trace_var r41 $28 = r21
+507	    trace_line r41 L30
+508	    r41 = gt_f32 r21 r33
+509	    r41 = bit_and r37 r41
+510	    r41 = bit_and r40 r41
+511	    r39 = bit_and r34 r41
+512	    trace_line r39 L30
+513	    r41 = bit_xor r10 r41
+514	    r41 = bit_and r40 r41
+515	    r40 = bit_and r37 r41
+516	    r39 = bit_and r34 r40
+517	    trace_line r39 L31
+518	    r38 = add_f32 r21 r36
+519	    r36 = select r40 r38 r36
+520	    trace_var r39 $26 = r36
+521	    trace_line r39 L29
+522	    trace_var r39 $28 = r22
+523	    trace_line r39 L30
+524	    r33 = gt_f32 r22 r33
+525	    r33 = bit_and r37 r33
+526	    r33 = bit_and r41 r33
+527	    r39 = bit_and r34 r33
+528	    trace_line r39 L30
+529	    r33 = bit_xor r10 r33
+530	    r33 = bit_and r41 r33
+531	    r33 = bit_and r37 r33
+532	    r41 = bit_and r34 r33
+533	    trace_line r41 L31
+534	    r39 = add_f32 r22 r36
+535	    r36 = select r33 r39 r36
+536	    trace_var r41 $26 = r36
+537	    trace_line r41 L29
+538	    trace_line r35 L33
+539	    r36 = bit_and r37 r36
+540	    trace_var r35 $24 = r36
+541	    trace_exit r35 F3
+542	    r36 = eq_f32 r36 r24
+543	    r36 = bit_and r37 r36
+544	    r37 = bit_and r34 r36
+545	    trace_enter r37 F4
+546	    trace_line r37 L38
+547	    trace_var r37 $30 = r9
+548	    trace_line r37 L39
+549	    trace_var r37 $31 = r25
+550	    trace_line r37 L40
+551	    r35 = bit_and r36 r25
+552	    trace_var r37 $30 = r35
+553	    trace_line r37 L39
+554	    trace_var r37 $31 = r26
+555	    trace_line r37 L40
+556	    r41 = add_f32 r35 r26
+557	    r35 = select r36 r41 r35
+558	    trace_var r37 $30 = r35
+559	    trace_line r37 L39
+560	    trace_var r37 $31 = r27
+561	    trace_line r37 L40
+562	    r41 = add_f32 r35 r27
+563	    r35 = select r36 r41 r35
+564	    trace_var r37 $30 = r35
+565	    trace_line r37 L39
+566	    trace_var r37 $31 = r28
+567	    trace_line r37 L40
+568	    r41 = add_f32 r35 r28
+569	    r35 = select r36 r41 r35
+570	    trace_var r37 $30 = r35
+571	    trace_line r37 L39
+572	    trace_var r37 $31 = r29
+573	    trace_line r37 L40
+574	    r41 = add_f32 r35 r29
+575	    r35 = select r36 r41 r35
+576	    trace_var r37 $30 = r35
+577	    trace_line r37 L39
+578	    trace_line r37 L42
+579	    r35 = sub_f32 r35 r30
+580	    r35 = bit_and r36 r35
+581	    trace_var r37 $29 = r35
+582	    trace_exit r37 F4
+583	    r35 = bit_and r35 r31
+584	    r35 = gt_f32 r32 r35
+585	    r35 = bit_and r36 r35
+586	    r36 = bit_and r34 r35
+587	    trace_enter r36 F5
+588	    trace_line r36 L47
+589	    trace_line r36 L48
+590	    trace_line r36 L50
+591	    trace_var r36 $33 = r22
+592	    trace_var r36 $34 = r22
+593	    trace_var r36 $35 = r22
+594	    trace_var r36 $36 = r22
+595	    trace_line r36 L51
+596	    trace_var r36 $37 = r15
+597	    trace_line r36 L52
+598	    r37 = select r35 r15 r22
+599	    trace_var r36 $36 = r37
+600	    trace_line r36 L51
+601	    trace_var r36 $37 = r16
+602	    trace_line r36 L52
+603	    r41 = select r35 r37 r22
+604	    trace_var r36 $35 = r41
+605	    r37 = select r35 r16 r37
+606	    trace_var r36 $36 = r37
+607	    trace_line r36 L51
+608	    trace_var r36 $37 = r17
+609	    trace_line r36 L52
+610	    r39 = select r35 r41 r22
+611	    trace_var r36 $34 = r39
+612	    r41 = select r35 r37 r41
+613	    trace_var r36 $35 = r41
+614	    r37 = select r35 r17 r37
+615	    trace_var r36 $36 = r37
+616	    trace_line r36 L51
+617	    trace_line r36 L54
+618	    r39 = eq_f32 r15 r39
+619	    r41 = eq_f32 r16 r41
+620	    r37 = eq_f32 r17 r37
+621	    r41 = bit_and r39 r41
+622	    r41 = bit_and r37 r41
+623	    r41 = bit_and r35 r41
+624	    trace_var r36 $32 = r41
+625	    trace_exit r36 F5
+626	    r41 = bit_and r35 r41
+627	    r35 = bit_and r34 r41
+628	    trace_enter r35 F6
+629	    trace_line r35 L59
+630	    trace_line r35 L60
+631	    trace_line r35 L62
+632	    trace_var r35 $39 = r22
+633	    trace_var r35 $40 = r22
+634	    trace_var r35 $41 = r22
+635	    trace_var r35 $42 = r22
+636	    trace_line r35 L63
+637	    trace_var r35 $43 = r15
+638	    trace_line r35 L64
+639	    r36 = select r41 r15 r22
+640	    trace_var r35 $42 = r36
+641	    trace_line r35 L63
+642	    trace_var r35 $43 = r16
+643	    trace_line r35 L64
+644	    r37 = select r41 r36 r22
+645	    trace_var r35 $41 = r37
+646	    r36 = select r41 r16 r36
+647	    trace_var r35 $42 = r36
+648	    trace_line r35 L63
+649	    trace_var r35 $43 = r17
+650	    trace_line r35 L64
+651	    r39 = select r41 r37 r22
+652	    trace_var r35 $40 = r39
+653	    r37 = select r41 r36 r37
+654	    trace_var r35 $41 = r37
+655	    r36 = select r41 r17 r36
+656	    trace_var r35 $42 = r36
+657	    trace_line r35 L63
+658	    trace_line r35 L66
+659	    r39 = eq_f32 r15 r39
+660	    r37 = eq_f32 r16 r37
+661	    r36 = eq_f32 r17 r36
+662	    r37 = bit_and r39 r37
+663	    r37 = bit_and r36 r37
+664	    r37 = bit_and r41 r37
+665	    trace_var r35 $38 = r37
+666	    trace_exit r35 F6
+667	    r37 = bit_and r41 r37
+668	    r41 = bit_and r34 r37
+669	    trace_enter r41 F7
+670	    trace_line r41 L71
+671	    trace_line r41 L72
+672	    trace_line r41 L74
+673	    trace_var r41 $45 = r22
+674	    trace_var r41 $46 = r22
+675	    trace_var r41 $47 = r22
+676	    trace_var r41 $48 = r22
+677	    trace_line r41 L75
+678	    trace_var r41 $49 = r17
+679	    trace_line r41 L76
+680	    r35 = select r37 r17 r22
+681	    trace_var r41 $48 = r35
 682	    trace_line r41 L75
-683	    trace_line r41 L78
-684	    r39 = eq_f32 r17 r39
-685	    r36 = eq_f32 r16 r36
-686	    r35 = eq_f32 r15 r35
-687	    r36 = bit_and r39 r36
-688	    r36 = bit_and r35 r36
-689	    r36 = bit_and r37 r36
-690	    trace_exit r41 F7
-691	    r36 = bit_and r37 r36
-692	    r37 = bit_and r34 r36
-693	    trace_enter r37 F8
-694	    trace_line r37 L83
-695	    trace_line r37 L84
-696	    trace_line r37 L86
-697	    trace_var r37 $39 = r22
-698	    trace_var r37 $40 = r22
-699	    trace_var r37 $41 = r22
-700	    trace_var r37 $42 = r22
-701	    trace_line r37 L87
-702	    trace_var r37 $43 = r17
-703	    trace_line r37 L88
-704	    r41 = select r36 r17 r22
-705	    trace_var r37 $42 = r41
-706	    trace_line r37 L87
-707	    trace_var r37 $43 = r16
-708	    trace_line r37 L88
-709	    r35 = select r36 r41 r22
-710	    trace_var r37 $41 = r35
-711	    r41 = select r36 r16 r41
-712	    trace_var r37 $42 = r41
-713	    trace_line r37 L87
-714	    trace_var r37 $43 = r15
-715	    trace_line r37 L88
-716	    r39 = select r36 r35 r22
-717	    trace_var r37 $40 = r39
-718	    r35 = select r36 r41 r35
-719	    trace_var r37 $41 = r35
-720	    r41 = select r36 r15 r41
-721	    trace_var r37 $42 = r41
-722	    trace_line r37 L87
-723	    trace_line r37 L90
-724	    r39 = eq_f32 r17 r39
-725	    r35 = eq_f32 r16 r35
-726	    r41 = eq_f32 r15 r41
-727	    r35 = bit_and r39 r35
-728	    r35 = bit_and r41 r35
-729	    r35 = bit_and r36 r35
-730	    trace_exit r37 F8
-731	    r35 = bit_and r36 r35
-732	    r36 = bit_and r34 r35
-733	    trace_enter r36 F9
-734	    trace_line r36 L106
-735	    trace_line r36 L108
-736	    trace_var r36 $44 = r22
-737	    trace_var r36 $45 = r22
-738	    trace_var r36 $46 = r22
-739	    trace_var r36 $47 = r22
-740	    trace_line r36 L109
-741	    trace_var r36 $48 = r15
-742	    trace_line r36 L110
-743	    r37 = select r35 r15 r22
-744	    trace_var r36 $47 = r37
-745	    trace_line r36 L109
-746	    trace_line r36 L112
-747	    r37 = eq_f32 r15 r37
-748	    r37 = bit_and r35 r37
-749	    trace_exit r36 F9
-750	    r37 = bit_and r35 r37
-751	    r35 = bit_and r34 r37
-752	    trace_enter r35 F10
-753	    trace_line r35 L95
-754	    trace_line r35 L97
-755	    trace_var r35 $49 = r22
-756	    trace_var r35 $50 = r22
-757	    trace_var r35 $51 = r22
-758	    trace_var r35 $52 = r22
-759	    trace_line r35 L98
-760	    trace_var r35 $53 = r15
-761	    trace_line r35 L99
-762	    r36 = select r37 r15 r22
-763	    trace_var r35 $52 = r36
-764	    trace_line r35 L98
-765	    trace_var r35 $53 = r16
-766	    trace_line r35 L99
-767	    r41 = select r37 r36 r22
-768	    trace_var r35 $51 = r41
-769	    r36 = select r37 r16 r36
-770	    trace_var r35 $52 = r36
-771	    trace_line r35 L98
-772	    trace_var r35 $53 = r17
-773	    trace_line r35 L99
-774	    r39 = select r37 r41 r22
-775	    trace_var r35 $50 = r39
-776	    r41 = select r37 r36 r41
-777	    trace_var r35 $51 = r41
-778	    r36 = select r37 r17 r36
-779	    trace_var r35 $52 = r36
-780	    trace_line r35 L98
-781	    trace_line r35 L101
-782	    r39 = eq_f32 r15 r39
-783	    r41 = eq_f32 r16 r41
-784	    r36 = eq_f32 r17 r36
-785	    r41 = bit_and r39 r41
-786	    r41 = bit_and r36 r41
-787	    r41 = bit_and r37 r41
-788	    trace_exit r35 F10
-789	    r41 = bit_and r37 r41
-790	    r37 = select r41 r5 r1
-791	    r35 = select r41 r6 r2
-792	    r36 = select r41 r7 r3
-793	    r41 = select r41 r8 r4
-794	    trace_exit r34 F0
-795	    store32 ptr1 r37
-796	    store32 ptr2 r35
-797	    store32 ptr3 r36
-798	    store32 ptr4 r41
+683	    trace_var r41 $49 = r16
+684	    trace_line r41 L76
+685	    r36 = select r37 r35 r22
+686	    trace_var r41 $47 = r36
+687	    r35 = select r37 r16 r35
+688	    trace_var r41 $48 = r35
+689	    trace_line r41 L75
+690	    trace_var r41 $49 = r15
+691	    trace_line r41 L76
+692	    r39 = select r37 r36 r22
+693	    trace_var r41 $46 = r39
+694	    r36 = select r37 r35 r36
+695	    trace_var r41 $47 = r36
+696	    r35 = select r37 r15 r35
+697	    trace_var r41 $48 = r35
+698	    trace_line r41 L75
+699	    trace_line r41 L78
+700	    r39 = eq_f32 r17 r39
+701	    r36 = eq_f32 r16 r36
+702	    r35 = eq_f32 r15 r35
+703	    r36 = bit_and r39 r36
+704	    r36 = bit_and r35 r36
+705	    r36 = bit_and r37 r36
+706	    trace_var r41 $44 = r36
+707	    trace_exit r41 F7
+708	    r36 = bit_and r37 r36
+709	    r37 = bit_and r34 r36
+710	    trace_enter r37 F8
+711	    trace_line r37 L83
+712	    trace_line r37 L84
+713	    trace_line r37 L86
+714	    trace_var r37 $51 = r22
+715	    trace_var r37 $52 = r22
+716	    trace_var r37 $53 = r22
+717	    trace_var r37 $54 = r22
+718	    trace_line r37 L87
+719	    trace_var r37 $55 = r17
+720	    trace_line r37 L88
+721	    r41 = select r36 r17 r22
+722	    trace_var r37 $54 = r41
+723	    trace_line r37 L87
+724	    trace_var r37 $55 = r16
+725	    trace_line r37 L88
+726	    r35 = select r36 r41 r22
+727	    trace_var r37 $53 = r35
+728	    r41 = select r36 r16 r41
+729	    trace_var r37 $54 = r41
+730	    trace_line r37 L87
+731	    trace_var r37 $55 = r15
+732	    trace_line r37 L88
+733	    r39 = select r36 r35 r22
+734	    trace_var r37 $52 = r39
+735	    r35 = select r36 r41 r35
+736	    trace_var r37 $53 = r35
+737	    r41 = select r36 r15 r41
+738	    trace_var r37 $54 = r41
+739	    trace_line r37 L87
+740	    trace_line r37 L90
+741	    r39 = eq_f32 r17 r39
+742	    r35 = eq_f32 r16 r35
+743	    r41 = eq_f32 r15 r41
+744	    r35 = bit_and r39 r35
+745	    r35 = bit_and r41 r35
+746	    r35 = bit_and r36 r35
+747	    trace_var r37 $50 = r35
+748	    trace_exit r37 F8
+749	    r35 = bit_and r36 r35
+750	    r36 = bit_and r34 r35
+751	    trace_enter r36 F9
+752	    trace_line r36 L106
+753	    trace_line r36 L108
+754	    trace_var r36 $57 = r22
+755	    trace_var r36 $58 = r22
+756	    trace_var r36 $59 = r22
+757	    trace_var r36 $60 = r22
+758	    trace_line r36 L109
+759	    trace_var r36 $61 = r15
+760	    trace_line r36 L110
+761	    r37 = select r35 r15 r22
+762	    trace_var r36 $60 = r37
+763	    trace_line r36 L109
+764	    trace_line r36 L112
+765	    r37 = eq_f32 r15 r37
+766	    r37 = bit_and r35 r37
+767	    trace_var r36 $56 = r37
+768	    trace_exit r36 F9
+769	    r37 = bit_and r35 r37
+770	    r35 = bit_and r34 r37
+771	    trace_enter r35 F10
+772	    trace_line r35 L95
+773	    trace_line r35 L97
+774	    trace_var r35 $63 = r22
+775	    trace_var r35 $64 = r22
+776	    trace_var r35 $65 = r22
+777	    trace_var r35 $66 = r22
+778	    trace_line r35 L98
+779	    trace_var r35 $67 = r15
+780	    trace_line r35 L99
+781	    r36 = select r37 r15 r22
+782	    trace_var r35 $66 = r36
+783	    trace_line r35 L98
+784	    trace_var r35 $67 = r16
+785	    trace_line r35 L99
+786	    r41 = select r37 r36 r22
+787	    trace_var r35 $65 = r41
+788	    r36 = select r37 r16 r36
+789	    trace_var r35 $66 = r36
+790	    trace_line r35 L98
+791	    trace_var r35 $67 = r17
+792	    trace_line r35 L99
+793	    r39 = select r37 r41 r22
+794	    trace_var r35 $64 = r39
+795	    r41 = select r37 r36 r41
+796	    trace_var r35 $65 = r41
+797	    r36 = select r37 r17 r36
+798	    trace_var r35 $66 = r36
+799	    trace_line r35 L98
+800	    trace_line r35 L101
+801	    r39 = eq_f32 r15 r39
+802	    r41 = eq_f32 r16 r41
+803	    r36 = eq_f32 r17 r36
+804	    r41 = bit_and r39 r41
+805	    r41 = bit_and r36 r41
+806	    r41 = bit_and r37 r41
+807	    trace_var r35 $62 = r41
+808	    trace_exit r35 F10
+809	    r41 = bit_and r37 r41
+810	    r37 = select r41 r5 r1
+811	    r35 = select r41 r6 r2
+812	    r36 = select r41 r7 r3
+813	    r41 = select r41 r8 r4
+814	    trace_var r34 $10 = r37
+815	    trace_var r34 $11 = r35
+816	    trace_var r34 $12 = r36
+817	    trace_var r34 $13 = r41
+818	    trace_exit r34 F0
+819	    store32 ptr1 r37
+820	    store32 ptr2 r35
+821	    store32 ptr3 r36
+822	    store32 ptr4 r41
diff --git a/tests/sksl/runtime/LoopInt.skvm b/tests/sksl/runtime/LoopInt.skvm
index d76dfd7..33950e5 100644
--- a/tests/sksl/runtime/LoopInt.skvm
+++ b/tests/sksl/runtime/LoopInt.skvm
@@ -8,48 +8,61 @@
 $7 = colorGreen (float4 : slot 4/4, L3)
 $8 = kZero (int, L6)
 $9 = kTen (int, L15)
-$10 = pos (float2 : slot 1/2, L106)
-$11 = pos (float2 : slot 2/2, L106)
-$12 = five (int, L107)
-$13 = five (int, L7)
-$14 = i (int, L8)
-$15 = five (int, L16)
-$16 = sum (int, L17)
-$17 = i (int, L18)
-$18 = five (int, L26)
-$19 = sum (int, L27)
-$20 = kOne (int, L28)
-$21 = i (int, L29)
-$22 = result (int4 : slot 1/4, L41)
-$23 = result (int4 : slot 2/4, L41)
-$24 = result (int4 : slot 3/4, L41)
-$25 = result (int4 : slot 4/4, L41)
-$26 = i (int, L42)
-$27 = result (int4 : slot 1/4, L53)
-$28 = result (int4 : slot 2/4, L53)
-$29 = result (int4 : slot 3/4, L53)
-$30 = result (int4 : slot 4/4, L53)
-$31 = i (int, L54)
-$32 = result (int4 : slot 1/4, L65)
-$33 = result (int4 : slot 2/4, L65)
-$34 = result (int4 : slot 3/4, L65)
-$35 = result (int4 : slot 4/4, L65)
-$36 = i (int, L66)
-$37 = result (int4 : slot 1/4, L77)
-$38 = result (int4 : slot 2/4, L77)
-$39 = result (int4 : slot 3/4, L77)
-$40 = result (int4 : slot 4/4, L77)
-$41 = i (int, L78)
-$42 = result (int4 : slot 1/4, L99)
-$43 = result (int4 : slot 2/4, L99)
-$44 = result (int4 : slot 3/4, L99)
-$45 = result (int4 : slot 4/4, L99)
-$46 = i (int, L100)
-$47 = result (int4 : slot 1/4, L88)
-$48 = result (int4 : slot 2/4, L88)
-$49 = result (int4 : slot 3/4, L88)
-$50 = result (int4 : slot 4/4, L88)
-$51 = i (int, L89)
+$10 = [main].result (float4 : slot 1/4, L106)
+$11 = [main].result (float4 : slot 2/4, L106)
+$12 = [main].result (float4 : slot 3/4, L106)
+$13 = [main].result (float4 : slot 4/4, L106)
+$14 = pos (float2 : slot 1/2, L106)
+$15 = pos (float2 : slot 2/2, L106)
+$16 = five (int, L107)
+$17 = [return_loop].result (int, L7)
+$18 = five (int, L7)
+$19 = i (int, L8)
+$20 = [continue_loop].result (int, L16)
+$21 = five (int, L16)
+$22 = sum (int, L17)
+$23 = i (int, L18)
+$24 = [break_loop].result (int, L26)
+$25 = five (int, L26)
+$26 = sum (int, L27)
+$27 = kOne (int, L28)
+$28 = i (int, L29)
+$29 = [loop_operator_le].result (bool, L36)
+$30 = result (int4 : slot 1/4, L41)
+$31 = result (int4 : slot 2/4, L41)
+$32 = result (int4 : slot 3/4, L41)
+$33 = result (int4 : slot 4/4, L41)
+$34 = i (int, L42)
+$35 = [loop_operator_lt].result (bool, L48)
+$36 = result (int4 : slot 1/4, L53)
+$37 = result (int4 : slot 2/4, L53)
+$38 = result (int4 : slot 3/4, L53)
+$39 = result (int4 : slot 4/4, L53)
+$40 = i (int, L54)
+$41 = [loop_operator_ge].result (bool, L60)
+$42 = result (int4 : slot 1/4, L65)
+$43 = result (int4 : slot 2/4, L65)
+$44 = result (int4 : slot 3/4, L65)
+$45 = result (int4 : slot 4/4, L65)
+$46 = i (int, L66)
+$47 = [loop_operator_gt].result (bool, L72)
+$48 = result (int4 : slot 1/4, L77)
+$49 = result (int4 : slot 2/4, L77)
+$50 = result (int4 : slot 3/4, L77)
+$51 = result (int4 : slot 4/4, L77)
+$52 = i (int, L78)
+$53 = [loop_operator_eq].result (bool, L95)
+$54 = result (int4 : slot 1/4, L99)
+$55 = result (int4 : slot 2/4, L99)
+$56 = result (int4 : slot 3/4, L99)
+$57 = result (int4 : slot 4/4, L99)
+$58 = i (int, L100)
+$59 = [loop_operator_ne].result (bool, L84)
+$60 = result (int4 : slot 1/4, L88)
+$61 = result (int4 : slot 2/4, L88)
+$62 = result (int4 : slot 3/4, L88)
+$63 = result (int4 : slot 4/4, L88)
+$64 = i (int, L89)
 F0 = half4 main(float2 pos)
 F1 = int return_loop(int five)
 F2 = int continue_loop(int five)
@@ -61,7 +74,7 @@
 F8 = bool loop_operator_eq()
 F9 = bool loop_operator_ne()
 
-35 registers, 751 instructions:
+35 registers, 774 instructions:
 0	r0 = uniform32 ptr0 0
 1	r1 = uniform32 ptr0 4
 2	r2 = uniform32 ptr0 8
@@ -102,715 +115,738 @@
 36	    trace_var r26 $8 = r9
 37	    trace_var r26 $9 = r13
 38	    trace_enter r26 F0
-39	    trace_var r26 $10 = r25
-40	    trace_var r26 $11 = r0
+39	    trace_var r26 $14 = r25
+40	    trace_var r26 $15 = r0
 41	    trace_line r26 L107
 42	    r25 = min_f32 r25 r8
 43	    r25 = max_f32 r6 r25
 44	    r25 = trunc r25
 45	    r25 = mul_i32 r25 r14
-46	    trace_var r26 $12 = r25
+46	    trace_var r26 $16 = r25
 47	    trace_line r26 L108
 48	    trace_enter r26 F1
-49	    trace_var r26 $13 = r25
+49	    trace_var r26 $18 = r25
 50	    trace_line r26 L8
-51	    trace_var r26 $14 = r9
+51	    trace_var r26 $19 = r9
 52	    trace_line r26 L9
 53	    r27 = eq_i32 r9 r25
 54	    r28 = bit_and r26 r27
 55	    trace_line r28 L9
-56	    r28 = bit_xor r10 r27
-57	    r29 = bit_and r26 r28
-58	    trace_line r29 L8
-59	    trace_var r29 $14 = r15
-60	    trace_line r29 L9
-61	    r29 = eq_i32 r25 r15
-62	    r29 = bit_and r28 r29
-63	    r28 = bit_and r26 r29
-64	    trace_line r28 L9
-65	    r28 = bit_and r15 r29
-66	    r29 = bit_or r27 r29
-67	    r27 = bit_xor r10 r29
-68	    r30 = bit_and r26 r27
-69	    trace_line r30 L8
-70	    trace_var r30 $14 = r16
-71	    trace_line r30 L9
-72	    r30 = eq_i32 r25 r16
-73	    r30 = bit_and r27 r30
-74	    r27 = bit_and r26 r30
-75	    trace_line r27 L9
-76	    r28 = select r30 r16 r28
-77	    r30 = bit_or r29 r30
-78	    r29 = bit_xor r10 r30
-79	    r27 = bit_and r26 r29
-80	    trace_line r27 L8
-81	    trace_var r27 $14 = r17
-82	    trace_line r27 L9
-83	    r27 = eq_i32 r25 r17
-84	    r27 = bit_and r29 r27
-85	    r29 = bit_and r26 r27
-86	    trace_line r29 L9
-87	    r28 = select r27 r17 r28
-88	    r27 = bit_or r30 r27
-89	    r30 = bit_xor r10 r27
-90	    r29 = bit_and r26 r30
-91	    trace_line r29 L8
-92	    trace_var r29 $14 = r18
-93	    trace_line r29 L9
-94	    r29 = eq_i32 r25 r18
-95	    r29 = bit_and r30 r29
-96	    r30 = bit_and r26 r29
-97	    trace_line r30 L9
-98	    r28 = select r29 r18 r28
-99	    r29 = bit_or r27 r29
-100	    r27 = bit_xor r10 r29
-101	    r30 = bit_and r26 r27
-102	    trace_line r30 L8
-103	    trace_var r30 $14 = r14
-104	    trace_line r30 L9
-105	    r30 = eq_i32 r14 r25
-106	    r30 = bit_and r27 r30
-107	    r27 = bit_and r26 r30
-108	    trace_line r27 L9
-109	    r28 = select r30 r14 r28
-110	    r30 = bit_or r29 r30
-111	    r29 = bit_xor r10 r30
-112	    r27 = bit_and r26 r29
-113	    trace_line r27 L8
-114	    trace_var r27 $14 = r19
-115	    trace_line r27 L9
-116	    r27 = eq_i32 r25 r19
-117	    r27 = bit_and r29 r27
-118	    r29 = bit_and r26 r27
-119	    trace_line r29 L9
-120	    r28 = select r27 r19 r28
-121	    r27 = bit_or r30 r27
-122	    r30 = bit_xor r10 r27
-123	    r29 = bit_and r26 r30
-124	    trace_line r29 L8
-125	    trace_var r29 $14 = r20
-126	    trace_line r29 L9
-127	    r29 = eq_i32 r25 r20
-128	    r29 = bit_and r30 r29
-129	    r30 = bit_and r26 r29
-130	    trace_line r30 L9
-131	    r28 = select r29 r20 r28
-132	    r29 = bit_or r27 r29
-133	    r27 = bit_xor r10 r29
-134	    r30 = bit_and r26 r27
-135	    trace_line r30 L8
-136	    trace_var r30 $14 = r21
-137	    trace_line r30 L9
-138	    r30 = eq_i32 r25 r21
-139	    r30 = bit_and r27 r30
-140	    r27 = bit_and r26 r30
-141	    trace_line r27 L9
-142	    r28 = select r30 r21 r28
-143	    r30 = bit_or r29 r30
-144	    r29 = bit_xor r10 r30
-145	    r27 = bit_and r26 r29
-146	    trace_line r27 L8
-147	    trace_var r27 $14 = r22
-148	    trace_line r27 L9
-149	    r27 = eq_i32 r25 r22
-150	    r27 = bit_and r29 r27
-151	    r29 = bit_and r26 r27
-152	    trace_line r29 L9
-153	    r28 = select r27 r22 r28
-154	    r27 = bit_or r30 r27
-155	    r27 = bit_xor r10 r27
-156	    r30 = bit_and r26 r27
-157	    trace_line r30 L8
-158	    trace_line r30 L11
-159	    r27 = bit_clear r28 r27
-160	    trace_exit r26 F1
-161	    r27 = eq_i32 r14 r27
-162	    r28 = bit_and r26 r27
-163	    trace_enter r28 F2
-164	    trace_var r28 $15 = r25
-165	    trace_line r28 L17
-166	    trace_var r28 $16 = r9
-167	    trace_line r28 L18
-168	    trace_var r28 $17 = r9
-169	    trace_line r28 L19
-170	    r30 = gt_i32 r25 r9
-171	    r30 = bit_and r27 r30
-172	    r29 = bit_and r26 r30
-173	    trace_line r29 L19
-174	    r29 = bit_xor r10 r30
-175	    r31 = bit_and r27 r29
-176	    r31 = bit_and r26 r31
-177	    trace_line r31 L20
-178	    r29 = bit_or r30 r29
-179	    r30 = bit_and r27 r29
-180	    r30 = bit_and r26 r30
-181	    trace_line r30 L18
-182	    trace_var r30 $17 = r15
-183	    trace_line r30 L19
-184	    r30 = gt_i32 r25 r15
-185	    r30 = bit_and r27 r30
-186	    r30 = bit_and r29 r30
-187	    r31 = bit_and r26 r30
-188	    trace_line r31 L19
-189	    r31 = bit_xor r10 r30
-190	    r31 = bit_and r29 r31
-191	    r29 = bit_and r27 r31
-192	    r32 = bit_and r26 r29
-193	    trace_line r32 L20
-194	    r29 = bit_and r15 r29
-195	    trace_var r32 $16 = r29
-196	    r31 = bit_or r30 r31
-197	    r30 = bit_and r27 r31
-198	    r30 = bit_and r26 r30
-199	    trace_line r30 L18
-200	    trace_var r30 $17 = r16
-201	    trace_line r30 L19
-202	    r30 = gt_i32 r25 r16
-203	    r30 = bit_and r27 r30
-204	    r30 = bit_and r31 r30
-205	    r32 = bit_and r26 r30
-206	    trace_line r32 L19
-207	    r32 = bit_xor r10 r30
-208	    r32 = bit_and r31 r32
-209	    r31 = bit_and r27 r32
-210	    r33 = bit_and r26 r31
-211	    trace_line r33 L20
-212	    r34 = add_i32 r16 r29
-213	    r29 = select r31 r34 r29
-214	    trace_var r33 $16 = r29
-215	    r32 = bit_or r30 r32
-216	    r30 = bit_and r27 r32
-217	    r30 = bit_and r26 r30
-218	    trace_line r30 L18
-219	    trace_var r30 $17 = r17
-220	    trace_line r30 L19
-221	    r30 = gt_i32 r25 r17
-222	    r30 = bit_and r27 r30
-223	    r30 = bit_and r32 r30
-224	    r33 = bit_and r26 r30
-225	    trace_line r33 L19
-226	    r33 = bit_xor r10 r30
-227	    r33 = bit_and r32 r33
-228	    r32 = bit_and r27 r33
-229	    r34 = bit_and r26 r32
-230	    trace_line r34 L20
-231	    r31 = add_i32 r17 r29
-232	    r29 = select r32 r31 r29
-233	    trace_var r34 $16 = r29
-234	    r33 = bit_or r30 r33
-235	    r30 = bit_and r27 r33
-236	    r30 = bit_and r26 r30
-237	    trace_line r30 L18
-238	    trace_var r30 $17 = r18
-239	    trace_line r30 L19
-240	    r30 = gt_i32 r25 r18
-241	    r30 = bit_and r27 r30
-242	    r30 = bit_and r33 r30
-243	    r34 = bit_and r26 r30
-244	    trace_line r34 L19
-245	    r34 = bit_xor r10 r30
-246	    r34 = bit_and r33 r34
-247	    r33 = bit_and r27 r34
-248	    r31 = bit_and r26 r33
-249	    trace_line r31 L20
-250	    r32 = add_i32 r18 r29
-251	    r29 = select r33 r32 r29
-252	    trace_var r31 $16 = r29
-253	    r34 = bit_or r30 r34
-254	    r30 = bit_and r27 r34
-255	    r30 = bit_and r26 r30
-256	    trace_line r30 L18
-257	    trace_var r30 $17 = r14
-258	    trace_line r30 L19
-259	    r30 = gt_i32 r25 r14
-260	    r30 = bit_and r27 r30
-261	    r30 = bit_and r34 r30
-262	    r31 = bit_and r26 r30
-263	    trace_line r31 L19
-264	    r31 = bit_xor r10 r30
-265	    r31 = bit_and r34 r31
-266	    r34 = bit_and r27 r31
-267	    r32 = bit_and r26 r34
-268	    trace_line r32 L20
-269	    r33 = add_i32 r14 r29
-270	    r29 = select r34 r33 r29
-271	    trace_var r32 $16 = r29
-272	    r31 = bit_or r30 r31
-273	    r30 = bit_and r27 r31
-274	    r30 = bit_and r26 r30
-275	    trace_line r30 L18
-276	    trace_var r30 $17 = r19
-277	    trace_line r30 L19
-278	    r30 = gt_i32 r25 r19
-279	    r30 = bit_and r27 r30
-280	    r30 = bit_and r31 r30
-281	    r32 = bit_and r26 r30
-282	    trace_line r32 L19
-283	    r32 = bit_xor r10 r30
-284	    r32 = bit_and r31 r32
-285	    r31 = bit_and r27 r32
-286	    r33 = bit_and r26 r31
-287	    trace_line r33 L20
-288	    r34 = add_i32 r19 r29
-289	    r29 = select r31 r34 r29
-290	    trace_var r33 $16 = r29
-291	    r32 = bit_or r30 r32
-292	    r30 = bit_and r27 r32
-293	    r30 = bit_and r26 r30
-294	    trace_line r30 L18
-295	    trace_var r30 $17 = r20
-296	    trace_line r30 L19
-297	    r30 = gt_i32 r25 r20
-298	    r30 = bit_and r27 r30
-299	    r30 = bit_and r32 r30
-300	    r33 = bit_and r26 r30
-301	    trace_line r33 L19
-302	    r33 = bit_xor r10 r30
-303	    r33 = bit_and r32 r33
-304	    r32 = bit_and r27 r33
-305	    r34 = bit_and r26 r32
-306	    trace_line r34 L20
-307	    r31 = add_i32 r20 r29
-308	    r29 = select r32 r31 r29
-309	    trace_var r34 $16 = r29
-310	    r33 = bit_or r30 r33
-311	    r30 = bit_and r27 r33
-312	    r30 = bit_and r26 r30
-313	    trace_line r30 L18
-314	    trace_var r30 $17 = r21
-315	    trace_line r30 L19
-316	    r30 = gt_i32 r25 r21
-317	    r30 = bit_and r27 r30
-318	    r30 = bit_and r33 r30
-319	    r34 = bit_and r26 r30
-320	    trace_line r34 L19
-321	    r34 = bit_xor r10 r30
-322	    r34 = bit_and r33 r34
-323	    r33 = bit_and r27 r34
-324	    r31 = bit_and r26 r33
-325	    trace_line r31 L20
-326	    r32 = add_i32 r21 r29
-327	    r29 = select r33 r32 r29
-328	    trace_var r31 $16 = r29
-329	    r34 = bit_or r30 r34
-330	    r30 = bit_and r27 r34
-331	    r30 = bit_and r26 r30
-332	    trace_line r30 L18
-333	    trace_var r30 $17 = r22
-334	    trace_line r30 L19
-335	    r30 = gt_i32 r25 r22
-336	    r30 = bit_and r27 r30
-337	    r30 = bit_and r34 r30
-338	    r31 = bit_and r26 r30
-339	    trace_line r31 L19
-340	    r31 = bit_xor r10 r30
-341	    r31 = bit_and r34 r31
-342	    r34 = bit_and r27 r31
-343	    r32 = bit_and r26 r34
-344	    trace_line r32 L20
-345	    r33 = add_i32 r22 r29
-346	    r29 = select r34 r33 r29
-347	    trace_var r32 $16 = r29
-348	    r31 = bit_or r30 r31
-349	    r31 = bit_and r27 r31
-350	    r31 = bit_and r26 r31
-351	    trace_line r31 L18
-352	    trace_line r28 L22
-353	    r29 = bit_and r27 r29
-354	    trace_exit r28 F2
-355	    r29 = eq_i32 r29 r23
-356	    r29 = bit_and r27 r29
-357	    r27 = bit_and r26 r29
-358	    trace_enter r27 F3
-359	    trace_var r27 $18 = r25
-360	    trace_line r27 L27
-361	    trace_var r27 $19 = r9
-362	    trace_line r27 L28
-363	    trace_var r27 $20 = r15
-364	    trace_line r27 L29
-365	    trace_var r27 $21 = r9
-366	    trace_line r27 L30
-367	    r28 = gt_i32 r9 r25
-368	    r28 = bit_and r29 r28
-369	    r31 = bit_and r26 r28
-370	    trace_line r31 L30
-371	    r28 = bit_xor r10 r28
-372	    r31 = bit_and r29 r28
-373	    r31 = bit_and r26 r31
-374	    trace_line r31 L31
-375	    trace_line r31 L29
-376	    trace_var r31 $21 = r15
-377	    trace_line r31 L30
-378	    r31 = gt_i32 r15 r25
-379	    r31 = bit_and r29 r31
-380	    r31 = bit_and r28 r31
-381	    r30 = bit_and r26 r31
-382	    trace_line r30 L30
-383	    r31 = bit_xor r10 r31
-384	    r31 = bit_and r28 r31
-385	    r28 = bit_and r29 r31
-386	    r30 = bit_and r26 r28
-387	    trace_line r30 L31
-388	    r28 = bit_and r15 r28
-389	    trace_var r30 $19 = r28
-390	    trace_line r30 L29
-391	    trace_var r30 $21 = r16
-392	    trace_line r30 L30
-393	    r30 = gt_i32 r16 r25
-394	    r30 = bit_and r29 r30
-395	    r30 = bit_and r31 r30
-396	    r32 = bit_and r26 r30
-397	    trace_line r32 L30
-398	    r30 = bit_xor r10 r30
-399	    r30 = bit_and r31 r30
-400	    r31 = bit_and r29 r30
-401	    r32 = bit_and r26 r31
-402	    trace_line r32 L31
-403	    r33 = add_i32 r16 r28
-404	    r28 = select r31 r33 r28
-405	    trace_var r32 $19 = r28
-406	    trace_line r32 L29
-407	    trace_var r32 $21 = r17
-408	    trace_line r32 L30
-409	    r32 = gt_i32 r17 r25
-410	    r32 = bit_and r29 r32
-411	    r32 = bit_and r30 r32
-412	    r33 = bit_and r26 r32
-413	    trace_line r33 L30
-414	    r32 = bit_xor r10 r32
-415	    r32 = bit_and r30 r32
-416	    r30 = bit_and r29 r32
-417	    r33 = bit_and r26 r30
-418	    trace_line r33 L31
-419	    r31 = add_i32 r17 r28
-420	    r28 = select r30 r31 r28
-421	    trace_var r33 $19 = r28
-422	    trace_line r33 L29
-423	    trace_var r33 $21 = r18
-424	    trace_line r33 L30
-425	    r33 = gt_i32 r18 r25
-426	    r33 = bit_and r29 r33
-427	    r33 = bit_and r32 r33
-428	    r31 = bit_and r26 r33
-429	    trace_line r31 L30
-430	    r33 = bit_xor r10 r33
-431	    r33 = bit_and r32 r33
-432	    r32 = bit_and r29 r33
-433	    r31 = bit_and r26 r32
-434	    trace_line r31 L31
-435	    r30 = add_i32 r18 r28
-436	    r28 = select r32 r30 r28
-437	    trace_var r31 $19 = r28
-438	    trace_line r31 L29
-439	    trace_var r31 $21 = r14
-440	    trace_line r31 L30
-441	    r31 = gt_i32 r14 r25
-442	    r31 = bit_and r29 r31
-443	    r31 = bit_and r33 r31
-444	    r30 = bit_and r26 r31
-445	    trace_line r30 L30
-446	    r31 = bit_xor r10 r31
-447	    r31 = bit_and r33 r31
-448	    r33 = bit_and r29 r31
-449	    r30 = bit_and r26 r33
-450	    trace_line r30 L31
-451	    r32 = add_i32 r14 r28
-452	    r28 = select r33 r32 r28
-453	    trace_var r30 $19 = r28
-454	    trace_line r30 L29
-455	    trace_var r30 $21 = r19
-456	    trace_line r30 L30
-457	    r30 = gt_i32 r19 r25
-458	    r30 = bit_and r29 r30
-459	    r30 = bit_and r31 r30
-460	    r32 = bit_and r26 r30
-461	    trace_line r32 L30
-462	    r30 = bit_xor r10 r30
-463	    r30 = bit_and r31 r30
-464	    r31 = bit_and r29 r30
-465	    r32 = bit_and r26 r31
-466	    trace_line r32 L31
-467	    r33 = add_i32 r19 r28
-468	    r28 = select r31 r33 r28
-469	    trace_var r32 $19 = r28
-470	    trace_line r32 L29
-471	    trace_var r32 $21 = r20
-472	    trace_line r32 L30
-473	    r32 = gt_i32 r20 r25
-474	    r32 = bit_and r29 r32
-475	    r32 = bit_and r30 r32
-476	    r33 = bit_and r26 r32
-477	    trace_line r33 L30
-478	    r32 = bit_xor r10 r32
-479	    r32 = bit_and r30 r32
-480	    r30 = bit_and r29 r32
-481	    r33 = bit_and r26 r30
-482	    trace_line r33 L31
-483	    r31 = add_i32 r20 r28
-484	    r28 = select r30 r31 r28
-485	    trace_var r33 $19 = r28
-486	    trace_line r33 L29
-487	    trace_var r33 $21 = r21
-488	    trace_line r33 L30
-489	    r33 = gt_i32 r21 r25
-490	    r33 = bit_and r29 r33
-491	    r33 = bit_and r32 r33
-492	    r31 = bit_and r26 r33
-493	    trace_line r31 L30
-494	    r33 = bit_xor r10 r33
-495	    r33 = bit_and r32 r33
-496	    r32 = bit_and r29 r33
-497	    r31 = bit_and r26 r32
-498	    trace_line r31 L31
-499	    r30 = add_i32 r21 r28
-500	    r28 = select r32 r30 r28
-501	    trace_var r31 $19 = r28
-502	    trace_line r31 L29
-503	    trace_var r31 $21 = r22
-504	    trace_line r31 L30
-505	    r25 = gt_i32 r22 r25
-506	    r25 = bit_and r29 r25
-507	    r25 = bit_and r33 r25
-508	    r31 = bit_and r26 r25
-509	    trace_line r31 L30
-510	    r25 = bit_xor r10 r25
-511	    r25 = bit_and r33 r25
-512	    r25 = bit_and r29 r25
-513	    r33 = bit_and r26 r25
-514	    trace_line r33 L31
-515	    r31 = add_i32 r22 r28
-516	    r28 = select r25 r31 r28
-517	    trace_var r33 $19 = r28
-518	    trace_line r33 L29
-519	    trace_line r27 L33
-520	    r28 = bit_and r29 r28
-521	    trace_exit r27 F3
-522	    r28 = eq_i32 r28 r24
-523	    r28 = bit_and r29 r28
-524	    r29 = bit_and r26 r28
-525	    trace_enter r29 F4
-526	    trace_line r29 L38
-527	    trace_line r29 L39
-528	    trace_line r29 L41
-529	    trace_var r29 $22 = r22
-530	    trace_var r29 $23 = r22
-531	    trace_var r29 $24 = r22
-532	    trace_var r29 $25 = r22
-533	    trace_line r29 L42
-534	    trace_var r29 $26 = r15
-535	    trace_line r29 L43
-536	    r27 = select r28 r15 r22
-537	    trace_var r29 $25 = r27
-538	    trace_line r29 L42
-539	    trace_var r29 $26 = r16
-540	    trace_line r29 L43
-541	    r33 = select r28 r27 r22
-542	    trace_var r29 $24 = r33
-543	    r27 = select r28 r16 r27
-544	    trace_var r29 $25 = r27
-545	    trace_line r29 L42
-546	    trace_var r29 $26 = r17
-547	    trace_line r29 L43
-548	    r31 = select r28 r33 r22
-549	    trace_var r29 $23 = r31
-550	    r33 = select r28 r27 r33
-551	    trace_var r29 $24 = r33
-552	    r27 = select r28 r17 r27
-553	    trace_var r29 $25 = r27
-554	    trace_line r29 L42
-555	    trace_line r29 L45
-556	    r31 = eq_i32 r15 r31
-557	    r33 = eq_i32 r16 r33
-558	    r27 = eq_i32 r17 r27
-559	    r33 = bit_and r31 r33
-560	    r33 = bit_and r27 r33
-561	    r33 = bit_and r28 r33
-562	    trace_exit r29 F4
-563	    r33 = bit_and r28 r33
-564	    r28 = bit_and r26 r33
-565	    trace_enter r28 F5
-566	    trace_line r28 L50
-567	    trace_line r28 L51
-568	    trace_line r28 L53
-569	    trace_var r28 $27 = r22
-570	    trace_var r28 $28 = r22
-571	    trace_var r28 $29 = r22
-572	    trace_var r28 $30 = r22
-573	    trace_line r28 L54
-574	    trace_var r28 $31 = r15
-575	    trace_line r28 L55
-576	    r29 = select r33 r15 r22
-577	    trace_var r28 $30 = r29
-578	    trace_line r28 L54
-579	    trace_var r28 $31 = r16
-580	    trace_line r28 L55
-581	    r27 = select r33 r29 r22
-582	    trace_var r28 $29 = r27
-583	    r29 = select r33 r16 r29
-584	    trace_var r28 $30 = r29
-585	    trace_line r28 L54
-586	    trace_var r28 $31 = r17
-587	    trace_line r28 L55
-588	    r31 = select r33 r27 r22
-589	    trace_var r28 $28 = r31
-590	    r27 = select r33 r29 r27
-591	    trace_var r28 $29 = r27
-592	    r29 = select r33 r17 r29
-593	    trace_var r28 $30 = r29
-594	    trace_line r28 L54
-595	    trace_line r28 L57
-596	    r31 = eq_i32 r15 r31
-597	    r27 = eq_i32 r16 r27
-598	    r29 = eq_i32 r17 r29
-599	    r27 = bit_and r31 r27
-600	    r27 = bit_and r29 r27
-601	    r27 = bit_and r33 r27
-602	    trace_exit r28 F5
-603	    r27 = bit_and r33 r27
-604	    r33 = bit_and r26 r27
-605	    trace_enter r33 F6
-606	    trace_line r33 L62
-607	    trace_line r33 L63
-608	    trace_line r33 L65
-609	    trace_var r33 $32 = r22
-610	    trace_var r33 $33 = r22
-611	    trace_var r33 $34 = r22
-612	    trace_var r33 $35 = r22
-613	    trace_line r33 L66
-614	    trace_var r33 $36 = r17
-615	    trace_line r33 L67
-616	    r28 = select r27 r17 r22
-617	    trace_var r33 $35 = r28
-618	    trace_line r33 L66
-619	    trace_var r33 $36 = r16
-620	    trace_line r33 L67
-621	    r29 = select r27 r28 r22
-622	    trace_var r33 $34 = r29
-623	    r28 = select r27 r16 r28
-624	    trace_var r33 $35 = r28
-625	    trace_line r33 L66
-626	    trace_var r33 $36 = r15
-627	    trace_line r33 L67
-628	    r31 = select r27 r29 r22
-629	    trace_var r33 $33 = r31
-630	    r29 = select r27 r28 r29
-631	    trace_var r33 $34 = r29
-632	    r28 = select r27 r15 r28
-633	    trace_var r33 $35 = r28
-634	    trace_line r33 L66
-635	    trace_line r33 L69
-636	    r31 = eq_i32 r17 r31
-637	    r29 = eq_i32 r16 r29
-638	    r28 = eq_i32 r15 r28
-639	    r29 = bit_and r31 r29
-640	    r29 = bit_and r28 r29
-641	    r29 = bit_and r27 r29
-642	    trace_exit r33 F6
-643	    r29 = bit_and r27 r29
-644	    r27 = bit_and r26 r29
-645	    trace_enter r27 F7
-646	    trace_line r27 L74
-647	    trace_line r27 L75
-648	    trace_line r27 L77
-649	    trace_var r27 $37 = r22
-650	    trace_var r27 $38 = r22
-651	    trace_var r27 $39 = r22
-652	    trace_var r27 $40 = r22
-653	    trace_line r27 L78
-654	    trace_var r27 $41 = r17
-655	    trace_line r27 L79
-656	    r33 = select r29 r17 r22
-657	    trace_var r27 $40 = r33
-658	    trace_line r27 L78
-659	    trace_var r27 $41 = r16
-660	    trace_line r27 L79
-661	    r28 = select r29 r33 r22
-662	    trace_var r27 $39 = r28
-663	    r33 = select r29 r16 r33
-664	    trace_var r27 $40 = r33
-665	    trace_line r27 L78
-666	    trace_var r27 $41 = r15
-667	    trace_line r27 L79
-668	    r31 = select r29 r28 r22
-669	    trace_var r27 $38 = r31
-670	    r28 = select r29 r33 r28
-671	    trace_var r27 $39 = r28
-672	    r33 = select r29 r15 r33
-673	    trace_var r27 $40 = r33
+56	    trace_var r28 $17 = r9
+57	    r28 = bit_xor r10 r27
+58	    r29 = bit_and r26 r28
+59	    trace_line r29 L8
+60	    trace_var r29 $19 = r15
+61	    trace_line r29 L9
+62	    r29 = eq_i32 r25 r15
+63	    r29 = bit_and r28 r29
+64	    r28 = bit_and r26 r29
+65	    trace_line r28 L9
+66	    r30 = bit_and r15 r29
+67	    trace_var r28 $17 = r30
+68	    r29 = bit_or r27 r29
+69	    r27 = bit_xor r10 r29
+70	    r28 = bit_and r26 r27
+71	    trace_line r28 L8
+72	    trace_var r28 $19 = r16
+73	    trace_line r28 L9
+74	    r28 = eq_i32 r25 r16
+75	    r28 = bit_and r27 r28
+76	    r27 = bit_and r26 r28
+77	    trace_line r27 L9
+78	    r30 = select r28 r16 r30
+79	    trace_var r27 $17 = r30
+80	    r28 = bit_or r29 r28
+81	    r29 = bit_xor r10 r28
+82	    r27 = bit_and r26 r29
+83	    trace_line r27 L8
+84	    trace_var r27 $19 = r17
+85	    trace_line r27 L9
+86	    r27 = eq_i32 r25 r17
+87	    r27 = bit_and r29 r27
+88	    r29 = bit_and r26 r27
+89	    trace_line r29 L9
+90	    r30 = select r27 r17 r30
+91	    trace_var r29 $17 = r30
+92	    r27 = bit_or r28 r27
+93	    r28 = bit_xor r10 r27
+94	    r29 = bit_and r26 r28
+95	    trace_line r29 L8
+96	    trace_var r29 $19 = r18
+97	    trace_line r29 L9
+98	    r29 = eq_i32 r25 r18
+99	    r29 = bit_and r28 r29
+100	    r28 = bit_and r26 r29
+101	    trace_line r28 L9
+102	    r30 = select r29 r18 r30
+103	    trace_var r28 $17 = r30
+104	    r29 = bit_or r27 r29
+105	    r27 = bit_xor r10 r29
+106	    r28 = bit_and r26 r27
+107	    trace_line r28 L8
+108	    trace_var r28 $19 = r14
+109	    trace_line r28 L9
+110	    r28 = eq_i32 r14 r25
+111	    r28 = bit_and r27 r28
+112	    r27 = bit_and r26 r28
+113	    trace_line r27 L9
+114	    r30 = select r28 r14 r30
+115	    trace_var r27 $17 = r30
+116	    r28 = bit_or r29 r28
+117	    r29 = bit_xor r10 r28
+118	    r27 = bit_and r26 r29
+119	    trace_line r27 L8
+120	    trace_var r27 $19 = r19
+121	    trace_line r27 L9
+122	    r27 = eq_i32 r25 r19
+123	    r27 = bit_and r29 r27
+124	    r29 = bit_and r26 r27
+125	    trace_line r29 L9
+126	    r30 = select r27 r19 r30
+127	    trace_var r29 $17 = r30
+128	    r27 = bit_or r28 r27
+129	    r28 = bit_xor r10 r27
+130	    r29 = bit_and r26 r28
+131	    trace_line r29 L8
+132	    trace_var r29 $19 = r20
+133	    trace_line r29 L9
+134	    r29 = eq_i32 r25 r20
+135	    r29 = bit_and r28 r29
+136	    r28 = bit_and r26 r29
+137	    trace_line r28 L9
+138	    r30 = select r29 r20 r30
+139	    trace_var r28 $17 = r30
+140	    r29 = bit_or r27 r29
+141	    r27 = bit_xor r10 r29
+142	    r28 = bit_and r26 r27
+143	    trace_line r28 L8
+144	    trace_var r28 $19 = r21
+145	    trace_line r28 L9
+146	    r28 = eq_i32 r25 r21
+147	    r28 = bit_and r27 r28
+148	    r27 = bit_and r26 r28
+149	    trace_line r27 L9
+150	    r30 = select r28 r21 r30
+151	    trace_var r27 $17 = r30
+152	    r28 = bit_or r29 r28
+153	    r29 = bit_xor r10 r28
+154	    r27 = bit_and r26 r29
+155	    trace_line r27 L8
+156	    trace_var r27 $19 = r22
+157	    trace_line r27 L9
+158	    r27 = eq_i32 r25 r22
+159	    r27 = bit_and r29 r27
+160	    r29 = bit_and r26 r27
+161	    trace_line r29 L9
+162	    r30 = select r27 r22 r30
+163	    trace_var r29 $17 = r30
+164	    r27 = bit_or r28 r27
+165	    r27 = bit_xor r10 r27
+166	    r28 = bit_and r26 r27
+167	    trace_line r28 L8
+168	    trace_line r28 L11
+169	    r27 = bit_clear r30 r27
+170	    trace_var r28 $17 = r27
+171	    trace_exit r26 F1
+172	    r27 = eq_i32 r14 r27
+173	    r28 = bit_and r26 r27
+174	    trace_enter r28 F2
+175	    trace_var r28 $21 = r25
+176	    trace_line r28 L17
+177	    trace_var r28 $22 = r9
+178	    trace_line r28 L18
+179	    trace_var r28 $23 = r9
+180	    trace_line r28 L19
+181	    r30 = gt_i32 r25 r9
+182	    r30 = bit_and r27 r30
+183	    r29 = bit_and r26 r30
+184	    trace_line r29 L19
+185	    r29 = bit_xor r10 r30
+186	    r31 = bit_and r27 r29
+187	    r31 = bit_and r26 r31
+188	    trace_line r31 L20
+189	    r29 = bit_or r30 r29
+190	    r30 = bit_and r27 r29
+191	    r30 = bit_and r26 r30
+192	    trace_line r30 L18
+193	    trace_var r30 $23 = r15
+194	    trace_line r30 L19
+195	    r30 = gt_i32 r25 r15
+196	    r30 = bit_and r27 r30
+197	    r30 = bit_and r29 r30
+198	    r31 = bit_and r26 r30
+199	    trace_line r31 L19
+200	    r31 = bit_xor r10 r30
+201	    r31 = bit_and r29 r31
+202	    r29 = bit_and r27 r31
+203	    r32 = bit_and r26 r29
+204	    trace_line r32 L20
+205	    r29 = bit_and r15 r29
+206	    trace_var r32 $22 = r29
+207	    r31 = bit_or r30 r31
+208	    r30 = bit_and r27 r31
+209	    r30 = bit_and r26 r30
+210	    trace_line r30 L18
+211	    trace_var r30 $23 = r16
+212	    trace_line r30 L19
+213	    r30 = gt_i32 r25 r16
+214	    r30 = bit_and r27 r30
+215	    r30 = bit_and r31 r30
+216	    r32 = bit_and r26 r30
+217	    trace_line r32 L19
+218	    r32 = bit_xor r10 r30
+219	    r32 = bit_and r31 r32
+220	    r31 = bit_and r27 r32
+221	    r33 = bit_and r26 r31
+222	    trace_line r33 L20
+223	    r34 = add_i32 r16 r29
+224	    r29 = select r31 r34 r29
+225	    trace_var r33 $22 = r29
+226	    r32 = bit_or r30 r32
+227	    r30 = bit_and r27 r32
+228	    r30 = bit_and r26 r30
+229	    trace_line r30 L18
+230	    trace_var r30 $23 = r17
+231	    trace_line r30 L19
+232	    r30 = gt_i32 r25 r17
+233	    r30 = bit_and r27 r30
+234	    r30 = bit_and r32 r30
+235	    r33 = bit_and r26 r30
+236	    trace_line r33 L19
+237	    r33 = bit_xor r10 r30
+238	    r33 = bit_and r32 r33
+239	    r32 = bit_and r27 r33
+240	    r34 = bit_and r26 r32
+241	    trace_line r34 L20
+242	    r31 = add_i32 r17 r29
+243	    r29 = select r32 r31 r29
+244	    trace_var r34 $22 = r29
+245	    r33 = bit_or r30 r33
+246	    r30 = bit_and r27 r33
+247	    r30 = bit_and r26 r30
+248	    trace_line r30 L18
+249	    trace_var r30 $23 = r18
+250	    trace_line r30 L19
+251	    r30 = gt_i32 r25 r18
+252	    r30 = bit_and r27 r30
+253	    r30 = bit_and r33 r30
+254	    r34 = bit_and r26 r30
+255	    trace_line r34 L19
+256	    r34 = bit_xor r10 r30
+257	    r34 = bit_and r33 r34
+258	    r33 = bit_and r27 r34
+259	    r31 = bit_and r26 r33
+260	    trace_line r31 L20
+261	    r32 = add_i32 r18 r29
+262	    r29 = select r33 r32 r29
+263	    trace_var r31 $22 = r29
+264	    r34 = bit_or r30 r34
+265	    r30 = bit_and r27 r34
+266	    r30 = bit_and r26 r30
+267	    trace_line r30 L18
+268	    trace_var r30 $23 = r14
+269	    trace_line r30 L19
+270	    r30 = gt_i32 r25 r14
+271	    r30 = bit_and r27 r30
+272	    r30 = bit_and r34 r30
+273	    r31 = bit_and r26 r30
+274	    trace_line r31 L19
+275	    r31 = bit_xor r10 r30
+276	    r31 = bit_and r34 r31
+277	    r34 = bit_and r27 r31
+278	    r32 = bit_and r26 r34
+279	    trace_line r32 L20
+280	    r33 = add_i32 r14 r29
+281	    r29 = select r34 r33 r29
+282	    trace_var r32 $22 = r29
+283	    r31 = bit_or r30 r31
+284	    r30 = bit_and r27 r31
+285	    r30 = bit_and r26 r30
+286	    trace_line r30 L18
+287	    trace_var r30 $23 = r19
+288	    trace_line r30 L19
+289	    r30 = gt_i32 r25 r19
+290	    r30 = bit_and r27 r30
+291	    r30 = bit_and r31 r30
+292	    r32 = bit_and r26 r30
+293	    trace_line r32 L19
+294	    r32 = bit_xor r10 r30
+295	    r32 = bit_and r31 r32
+296	    r31 = bit_and r27 r32
+297	    r33 = bit_and r26 r31
+298	    trace_line r33 L20
+299	    r34 = add_i32 r19 r29
+300	    r29 = select r31 r34 r29
+301	    trace_var r33 $22 = r29
+302	    r32 = bit_or r30 r32
+303	    r30 = bit_and r27 r32
+304	    r30 = bit_and r26 r30
+305	    trace_line r30 L18
+306	    trace_var r30 $23 = r20
+307	    trace_line r30 L19
+308	    r30 = gt_i32 r25 r20
+309	    r30 = bit_and r27 r30
+310	    r30 = bit_and r32 r30
+311	    r33 = bit_and r26 r30
+312	    trace_line r33 L19
+313	    r33 = bit_xor r10 r30
+314	    r33 = bit_and r32 r33
+315	    r32 = bit_and r27 r33
+316	    r34 = bit_and r26 r32
+317	    trace_line r34 L20
+318	    r31 = add_i32 r20 r29
+319	    r29 = select r32 r31 r29
+320	    trace_var r34 $22 = r29
+321	    r33 = bit_or r30 r33
+322	    r30 = bit_and r27 r33
+323	    r30 = bit_and r26 r30
+324	    trace_line r30 L18
+325	    trace_var r30 $23 = r21
+326	    trace_line r30 L19
+327	    r30 = gt_i32 r25 r21
+328	    r30 = bit_and r27 r30
+329	    r30 = bit_and r33 r30
+330	    r34 = bit_and r26 r30
+331	    trace_line r34 L19
+332	    r34 = bit_xor r10 r30
+333	    r34 = bit_and r33 r34
+334	    r33 = bit_and r27 r34
+335	    r31 = bit_and r26 r33
+336	    trace_line r31 L20
+337	    r32 = add_i32 r21 r29
+338	    r29 = select r33 r32 r29
+339	    trace_var r31 $22 = r29
+340	    r34 = bit_or r30 r34
+341	    r30 = bit_and r27 r34
+342	    r30 = bit_and r26 r30
+343	    trace_line r30 L18
+344	    trace_var r30 $23 = r22
+345	    trace_line r30 L19
+346	    r30 = gt_i32 r25 r22
+347	    r30 = bit_and r27 r30
+348	    r30 = bit_and r34 r30
+349	    r31 = bit_and r26 r30
+350	    trace_line r31 L19
+351	    r31 = bit_xor r10 r30
+352	    r31 = bit_and r34 r31
+353	    r34 = bit_and r27 r31
+354	    r32 = bit_and r26 r34
+355	    trace_line r32 L20
+356	    r33 = add_i32 r22 r29
+357	    r29 = select r34 r33 r29
+358	    trace_var r32 $22 = r29
+359	    r31 = bit_or r30 r31
+360	    r31 = bit_and r27 r31
+361	    r31 = bit_and r26 r31
+362	    trace_line r31 L18
+363	    trace_line r28 L22
+364	    r29 = bit_and r27 r29
+365	    trace_var r28 $20 = r29
+366	    trace_exit r28 F2
+367	    r29 = eq_i32 r29 r23
+368	    r29 = bit_and r27 r29
+369	    r27 = bit_and r26 r29
+370	    trace_enter r27 F3
+371	    trace_var r27 $25 = r25
+372	    trace_line r27 L27
+373	    trace_var r27 $26 = r9
+374	    trace_line r27 L28
+375	    trace_var r27 $27 = r15
+376	    trace_line r27 L29
+377	    trace_var r27 $28 = r9
+378	    trace_line r27 L30
+379	    r28 = gt_i32 r9 r25
+380	    r28 = bit_and r29 r28
+381	    r31 = bit_and r26 r28
+382	    trace_line r31 L30
+383	    r28 = bit_xor r10 r28
+384	    r31 = bit_and r29 r28
+385	    r31 = bit_and r26 r31
+386	    trace_line r31 L31
+387	    trace_line r31 L29
+388	    trace_var r31 $28 = r15
+389	    trace_line r31 L30
+390	    r31 = gt_i32 r15 r25
+391	    r31 = bit_and r29 r31
+392	    r31 = bit_and r28 r31
+393	    r30 = bit_and r26 r31
+394	    trace_line r30 L30
+395	    r31 = bit_xor r10 r31
+396	    r31 = bit_and r28 r31
+397	    r28 = bit_and r29 r31
+398	    r30 = bit_and r26 r28
+399	    trace_line r30 L31
+400	    r28 = bit_and r15 r28
+401	    trace_var r30 $26 = r28
+402	    trace_line r30 L29
+403	    trace_var r30 $28 = r16
+404	    trace_line r30 L30
+405	    r30 = gt_i32 r16 r25
+406	    r30 = bit_and r29 r30
+407	    r30 = bit_and r31 r30
+408	    r32 = bit_and r26 r30
+409	    trace_line r32 L30
+410	    r30 = bit_xor r10 r30
+411	    r30 = bit_and r31 r30
+412	    r31 = bit_and r29 r30
+413	    r32 = bit_and r26 r31
+414	    trace_line r32 L31
+415	    r33 = add_i32 r16 r28
+416	    r28 = select r31 r33 r28
+417	    trace_var r32 $26 = r28
+418	    trace_line r32 L29
+419	    trace_var r32 $28 = r17
+420	    trace_line r32 L30
+421	    r32 = gt_i32 r17 r25
+422	    r32 = bit_and r29 r32
+423	    r32 = bit_and r30 r32
+424	    r33 = bit_and r26 r32
+425	    trace_line r33 L30
+426	    r32 = bit_xor r10 r32
+427	    r32 = bit_and r30 r32
+428	    r30 = bit_and r29 r32
+429	    r33 = bit_and r26 r30
+430	    trace_line r33 L31
+431	    r31 = add_i32 r17 r28
+432	    r28 = select r30 r31 r28
+433	    trace_var r33 $26 = r28
+434	    trace_line r33 L29
+435	    trace_var r33 $28 = r18
+436	    trace_line r33 L30
+437	    r33 = gt_i32 r18 r25
+438	    r33 = bit_and r29 r33
+439	    r33 = bit_and r32 r33
+440	    r31 = bit_and r26 r33
+441	    trace_line r31 L30
+442	    r33 = bit_xor r10 r33
+443	    r33 = bit_and r32 r33
+444	    r32 = bit_and r29 r33
+445	    r31 = bit_and r26 r32
+446	    trace_line r31 L31
+447	    r30 = add_i32 r18 r28
+448	    r28 = select r32 r30 r28
+449	    trace_var r31 $26 = r28
+450	    trace_line r31 L29
+451	    trace_var r31 $28 = r14
+452	    trace_line r31 L30
+453	    r31 = gt_i32 r14 r25
+454	    r31 = bit_and r29 r31
+455	    r31 = bit_and r33 r31
+456	    r30 = bit_and r26 r31
+457	    trace_line r30 L30
+458	    r31 = bit_xor r10 r31
+459	    r31 = bit_and r33 r31
+460	    r33 = bit_and r29 r31
+461	    r30 = bit_and r26 r33
+462	    trace_line r30 L31
+463	    r32 = add_i32 r14 r28
+464	    r28 = select r33 r32 r28
+465	    trace_var r30 $26 = r28
+466	    trace_line r30 L29
+467	    trace_var r30 $28 = r19
+468	    trace_line r30 L30
+469	    r30 = gt_i32 r19 r25
+470	    r30 = bit_and r29 r30
+471	    r30 = bit_and r31 r30
+472	    r32 = bit_and r26 r30
+473	    trace_line r32 L30
+474	    r30 = bit_xor r10 r30
+475	    r30 = bit_and r31 r30
+476	    r31 = bit_and r29 r30
+477	    r32 = bit_and r26 r31
+478	    trace_line r32 L31
+479	    r33 = add_i32 r19 r28
+480	    r28 = select r31 r33 r28
+481	    trace_var r32 $26 = r28
+482	    trace_line r32 L29
+483	    trace_var r32 $28 = r20
+484	    trace_line r32 L30
+485	    r32 = gt_i32 r20 r25
+486	    r32 = bit_and r29 r32
+487	    r32 = bit_and r30 r32
+488	    r33 = bit_and r26 r32
+489	    trace_line r33 L30
+490	    r32 = bit_xor r10 r32
+491	    r32 = bit_and r30 r32
+492	    r30 = bit_and r29 r32
+493	    r33 = bit_and r26 r30
+494	    trace_line r33 L31
+495	    r31 = add_i32 r20 r28
+496	    r28 = select r30 r31 r28
+497	    trace_var r33 $26 = r28
+498	    trace_line r33 L29
+499	    trace_var r33 $28 = r21
+500	    trace_line r33 L30
+501	    r33 = gt_i32 r21 r25
+502	    r33 = bit_and r29 r33
+503	    r33 = bit_and r32 r33
+504	    r31 = bit_and r26 r33
+505	    trace_line r31 L30
+506	    r33 = bit_xor r10 r33
+507	    r33 = bit_and r32 r33
+508	    r32 = bit_and r29 r33
+509	    r31 = bit_and r26 r32
+510	    trace_line r31 L31
+511	    r30 = add_i32 r21 r28
+512	    r28 = select r32 r30 r28
+513	    trace_var r31 $26 = r28
+514	    trace_line r31 L29
+515	    trace_var r31 $28 = r22
+516	    trace_line r31 L30
+517	    r25 = gt_i32 r22 r25
+518	    r25 = bit_and r29 r25
+519	    r25 = bit_and r33 r25
+520	    r31 = bit_and r26 r25
+521	    trace_line r31 L30
+522	    r25 = bit_xor r10 r25
+523	    r25 = bit_and r33 r25
+524	    r25 = bit_and r29 r25
+525	    r33 = bit_and r26 r25
+526	    trace_line r33 L31
+527	    r31 = add_i32 r22 r28
+528	    r28 = select r25 r31 r28
+529	    trace_var r33 $26 = r28
+530	    trace_line r33 L29
+531	    trace_line r27 L33
+532	    r28 = bit_and r29 r28
+533	    trace_var r27 $24 = r28
+534	    trace_exit r27 F3
+535	    r28 = eq_i32 r28 r24
+536	    r28 = bit_and r29 r28
+537	    r29 = bit_and r26 r28
+538	    trace_enter r29 F4
+539	    trace_line r29 L38
+540	    trace_line r29 L39
+541	    trace_line r29 L41
+542	    trace_var r29 $30 = r22
+543	    trace_var r29 $31 = r22
+544	    trace_var r29 $32 = r22
+545	    trace_var r29 $33 = r22
+546	    trace_line r29 L42
+547	    trace_var r29 $34 = r15
+548	    trace_line r29 L43
+549	    r27 = select r28 r15 r22
+550	    trace_var r29 $33 = r27
+551	    trace_line r29 L42
+552	    trace_var r29 $34 = r16
+553	    trace_line r29 L43
+554	    r33 = select r28 r27 r22
+555	    trace_var r29 $32 = r33
+556	    r27 = select r28 r16 r27
+557	    trace_var r29 $33 = r27
+558	    trace_line r29 L42
+559	    trace_var r29 $34 = r17
+560	    trace_line r29 L43
+561	    r31 = select r28 r33 r22
+562	    trace_var r29 $31 = r31
+563	    r33 = select r28 r27 r33
+564	    trace_var r29 $32 = r33
+565	    r27 = select r28 r17 r27
+566	    trace_var r29 $33 = r27
+567	    trace_line r29 L42
+568	    trace_line r29 L45
+569	    r31 = eq_i32 r15 r31
+570	    r33 = eq_i32 r16 r33
+571	    r27 = eq_i32 r17 r27
+572	    r33 = bit_and r31 r33
+573	    r33 = bit_and r27 r33
+574	    r33 = bit_and r28 r33
+575	    trace_var r29 $29 = r33
+576	    trace_exit r29 F4
+577	    r33 = bit_and r28 r33
+578	    r28 = bit_and r26 r33
+579	    trace_enter r28 F5
+580	    trace_line r28 L50
+581	    trace_line r28 L51
+582	    trace_line r28 L53
+583	    trace_var r28 $36 = r22
+584	    trace_var r28 $37 = r22
+585	    trace_var r28 $38 = r22
+586	    trace_var r28 $39 = r22
+587	    trace_line r28 L54
+588	    trace_var r28 $40 = r15
+589	    trace_line r28 L55
+590	    r29 = select r33 r15 r22
+591	    trace_var r28 $39 = r29
+592	    trace_line r28 L54
+593	    trace_var r28 $40 = r16
+594	    trace_line r28 L55
+595	    r27 = select r33 r29 r22
+596	    trace_var r28 $38 = r27
+597	    r29 = select r33 r16 r29
+598	    trace_var r28 $39 = r29
+599	    trace_line r28 L54
+600	    trace_var r28 $40 = r17
+601	    trace_line r28 L55
+602	    r31 = select r33 r27 r22
+603	    trace_var r28 $37 = r31
+604	    r27 = select r33 r29 r27
+605	    trace_var r28 $38 = r27
+606	    r29 = select r33 r17 r29
+607	    trace_var r28 $39 = r29
+608	    trace_line r28 L54
+609	    trace_line r28 L57
+610	    r31 = eq_i32 r15 r31
+611	    r27 = eq_i32 r16 r27
+612	    r29 = eq_i32 r17 r29
+613	    r27 = bit_and r31 r27
+614	    r27 = bit_and r29 r27
+615	    r27 = bit_and r33 r27
+616	    trace_var r28 $35 = r27
+617	    trace_exit r28 F5
+618	    r27 = bit_and r33 r27
+619	    r33 = bit_and r26 r27
+620	    trace_enter r33 F6
+621	    trace_line r33 L62
+622	    trace_line r33 L63
+623	    trace_line r33 L65
+624	    trace_var r33 $42 = r22
+625	    trace_var r33 $43 = r22
+626	    trace_var r33 $44 = r22
+627	    trace_var r33 $45 = r22
+628	    trace_line r33 L66
+629	    trace_var r33 $46 = r17
+630	    trace_line r33 L67
+631	    r28 = select r27 r17 r22
+632	    trace_var r33 $45 = r28
+633	    trace_line r33 L66
+634	    trace_var r33 $46 = r16
+635	    trace_line r33 L67
+636	    r29 = select r27 r28 r22
+637	    trace_var r33 $44 = r29
+638	    r28 = select r27 r16 r28
+639	    trace_var r33 $45 = r28
+640	    trace_line r33 L66
+641	    trace_var r33 $46 = r15
+642	    trace_line r33 L67
+643	    r31 = select r27 r29 r22
+644	    trace_var r33 $43 = r31
+645	    r29 = select r27 r28 r29
+646	    trace_var r33 $44 = r29
+647	    r28 = select r27 r15 r28
+648	    trace_var r33 $45 = r28
+649	    trace_line r33 L66
+650	    trace_line r33 L69
+651	    r31 = eq_i32 r17 r31
+652	    r29 = eq_i32 r16 r29
+653	    r28 = eq_i32 r15 r28
+654	    r29 = bit_and r31 r29
+655	    r29 = bit_and r28 r29
+656	    r29 = bit_and r27 r29
+657	    trace_var r33 $41 = r29
+658	    trace_exit r33 F6
+659	    r29 = bit_and r27 r29
+660	    r27 = bit_and r26 r29
+661	    trace_enter r27 F7
+662	    trace_line r27 L74
+663	    trace_line r27 L75
+664	    trace_line r27 L77
+665	    trace_var r27 $48 = r22
+666	    trace_var r27 $49 = r22
+667	    trace_var r27 $50 = r22
+668	    trace_var r27 $51 = r22
+669	    trace_line r27 L78
+670	    trace_var r27 $52 = r17
+671	    trace_line r27 L79
+672	    r33 = select r29 r17 r22
+673	    trace_var r27 $51 = r33
 674	    trace_line r27 L78
-675	    trace_line r27 L81
-676	    r31 = eq_i32 r17 r31
-677	    r28 = eq_i32 r16 r28
-678	    r33 = eq_i32 r15 r33
-679	    r28 = bit_and r31 r28
-680	    r28 = bit_and r33 r28
-681	    r28 = bit_and r29 r28
-682	    trace_exit r27 F7
-683	    r28 = bit_and r29 r28
-684	    r29 = bit_and r26 r28
-685	    trace_enter r29 F8
-686	    trace_line r29 L97
-687	    trace_line r29 L99
-688	    trace_var r29 $42 = r22
-689	    trace_var r29 $43 = r22
-690	    trace_var r29 $44 = r22
-691	    trace_var r29 $45 = r22
-692	    trace_line r29 L100
-693	    trace_var r29 $46 = r15
-694	    trace_line r29 L101
-695	    r27 = select r28 r15 r22
-696	    trace_var r29 $45 = r27
-697	    trace_line r29 L100
-698	    trace_line r29 L103
-699	    r27 = eq_i32 r15 r27
-700	    r27 = bit_and r28 r27
-701	    trace_exit r29 F8
-702	    r27 = bit_and r28 r27
-703	    r28 = bit_and r26 r27
-704	    trace_enter r28 F9
-705	    trace_line r28 L86
-706	    trace_line r28 L88
-707	    trace_var r28 $47 = r22
-708	    trace_var r28 $48 = r22
-709	    trace_var r28 $49 = r22
-710	    trace_var r28 $50 = r22
-711	    trace_line r28 L89
-712	    trace_var r28 $51 = r15
-713	    trace_line r28 L90
-714	    r29 = select r27 r15 r22
-715	    trace_var r28 $50 = r29
-716	    trace_line r28 L89
-717	    trace_var r28 $51 = r16
-718	    trace_line r28 L90
-719	    r33 = select r27 r29 r22
-720	    trace_var r28 $49 = r33
-721	    r29 = select r27 r16 r29
-722	    trace_var r28 $50 = r29
-723	    trace_line r28 L89
-724	    trace_var r28 $51 = r17
-725	    trace_line r28 L90
-726	    r31 = select r27 r33 r22
-727	    trace_var r28 $48 = r31
-728	    r33 = select r27 r29 r33
-729	    trace_var r28 $49 = r33
-730	    r29 = select r27 r17 r29
-731	    trace_var r28 $50 = r29
-732	    trace_line r28 L89
-733	    trace_line r28 L92
-734	    r31 = eq_i32 r15 r31
-735	    r33 = eq_i32 r16 r33
-736	    r29 = eq_i32 r17 r29
-737	    r33 = bit_and r31 r33
-738	    r33 = bit_and r29 r33
-739	    r33 = bit_and r27 r33
-740	    trace_exit r28 F9
-741	    r33 = bit_and r27 r33
-742	    r27 = select r33 r5 r1
-743	    r28 = select r33 r6 r2
-744	    r29 = select r33 r7 r3
-745	    r33 = select r33 r8 r4
-746	    trace_exit r26 F0
-747	    store32 ptr1 r27
-748	    store32 ptr2 r28
-749	    store32 ptr3 r29
-750	    store32 ptr4 r33
+675	    trace_var r27 $52 = r16
+676	    trace_line r27 L79
+677	    r28 = select r29 r33 r22
+678	    trace_var r27 $50 = r28
+679	    r33 = select r29 r16 r33
+680	    trace_var r27 $51 = r33
+681	    trace_line r27 L78
+682	    trace_var r27 $52 = r15
+683	    trace_line r27 L79
+684	    r31 = select r29 r28 r22
+685	    trace_var r27 $49 = r31
+686	    r28 = select r29 r33 r28
+687	    trace_var r27 $50 = r28
+688	    r33 = select r29 r15 r33
+689	    trace_var r27 $51 = r33
+690	    trace_line r27 L78
+691	    trace_line r27 L81
+692	    r31 = eq_i32 r17 r31
+693	    r28 = eq_i32 r16 r28
+694	    r33 = eq_i32 r15 r33
+695	    r28 = bit_and r31 r28
+696	    r28 = bit_and r33 r28
+697	    r28 = bit_and r29 r28
+698	    trace_var r27 $47 = r28
+699	    trace_exit r27 F7
+700	    r28 = bit_and r29 r28
+701	    r29 = bit_and r26 r28
+702	    trace_enter r29 F8
+703	    trace_line r29 L97
+704	    trace_line r29 L99
+705	    trace_var r29 $54 = r22
+706	    trace_var r29 $55 = r22
+707	    trace_var r29 $56 = r22
+708	    trace_var r29 $57 = r22
+709	    trace_line r29 L100
+710	    trace_var r29 $58 = r15
+711	    trace_line r29 L101
+712	    r27 = select r28 r15 r22
+713	    trace_var r29 $57 = r27
+714	    trace_line r29 L100
+715	    trace_line r29 L103
+716	    r27 = eq_i32 r15 r27
+717	    r27 = bit_and r28 r27
+718	    trace_var r29 $53 = r27
+719	    trace_exit r29 F8
+720	    r27 = bit_and r28 r27
+721	    r28 = bit_and r26 r27
+722	    trace_enter r28 F9
+723	    trace_line r28 L86
+724	    trace_line r28 L88
+725	    trace_var r28 $60 = r22
+726	    trace_var r28 $61 = r22
+727	    trace_var r28 $62 = r22
+728	    trace_var r28 $63 = r22
+729	    trace_line r28 L89
+730	    trace_var r28 $64 = r15
+731	    trace_line r28 L90
+732	    r29 = select r27 r15 r22
+733	    trace_var r28 $63 = r29
+734	    trace_line r28 L89
+735	    trace_var r28 $64 = r16
+736	    trace_line r28 L90
+737	    r33 = select r27 r29 r22
+738	    trace_var r28 $62 = r33
+739	    r29 = select r27 r16 r29
+740	    trace_var r28 $63 = r29
+741	    trace_line r28 L89
+742	    trace_var r28 $64 = r17
+743	    trace_line r28 L90
+744	    r31 = select r27 r33 r22
+745	    trace_var r28 $61 = r31
+746	    r33 = select r27 r29 r33
+747	    trace_var r28 $62 = r33
+748	    r29 = select r27 r17 r29
+749	    trace_var r28 $63 = r29
+750	    trace_line r28 L89
+751	    trace_line r28 L92
+752	    r31 = eq_i32 r15 r31
+753	    r33 = eq_i32 r16 r33
+754	    r29 = eq_i32 r17 r29
+755	    r33 = bit_and r31 r33
+756	    r33 = bit_and r29 r33
+757	    r33 = bit_and r27 r33
+758	    trace_var r28 $59 = r33
+759	    trace_exit r28 F9
+760	    r33 = bit_and r27 r33
+761	    r27 = select r33 r5 r1
+762	    r28 = select r33 r6 r2
+763	    r29 = select r33 r7 r3
+764	    r33 = select r33 r8 r4
+765	    trace_var r26 $10 = r27
+766	    trace_var r26 $11 = r28
+767	    trace_var r26 $12 = r29
+768	    trace_var r26 $13 = r33
+769	    trace_exit r26 F0
+770	    store32 ptr1 r27
+771	    store32 ptr2 r28
+772	    store32 ptr3 r29
+773	    store32 ptr4 r33
diff --git a/tests/sksl/runtime/PrecisionQualifiers.skvm b/tests/sksl/runtime/PrecisionQualifiers.skvm
index b232ce9..e9e743f 100644
--- a/tests/sksl/runtime/PrecisionQualifiers.skvm
+++ b/tests/sksl/runtime/PrecisionQualifiers.skvm
@@ -6,135 +6,146 @@
 $5 = colorRed (float4 : slot 2/4, L3)
 $6 = colorRed (float4 : slot 3/4, L3)
 $7 = colorRed (float4 : slot 4/4, L3)
-$8 = coords (float2 : slot 1/2, L57)
-$9 = coords (float2 : slot 2/2, L57)
-$10 = zero (float4 : slot 1/4, L58)
-$11 = zero (float4 : slot 2/4, L58)
-$12 = zero (float4 : slot 3/4, L58)
-$13 = zero (float4 : slot 4/4, L58)
-$14 = one (float4 : slot 1/4, L59)
-$15 = one (float4 : slot 2/4, L59)
-$16 = one (float4 : slot 3/4, L59)
-$17 = one (float4 : slot 4/4, L59)
-$18 = green (float4 : slot 1/4, L60)
-$19 = green (float4 : slot 2/4, L60)
-$20 = green (float4 : slot 3/4, L60)
-$21 = green (float4 : slot 4/4, L60)
-$22 = red (float4 : slot 1/4, L63)
-$23 = red (float4 : slot 2/4, L63)
-$24 = red (float4 : slot 3/4, L63)
-$25 = red (float4 : slot 4/4, L63)
-$26 = mp (float, L6)
-$27 = hp (float, L7)
-$28 = ihp (int, L8)
-$29 = imp (int, L9)
-$30 = mp2 (float2 : slot 1/2, L15)
-$31 = mp2 (float2 : slot 2/2, L15)
-$32 = hp2 (float2 : slot 1/2, L16)
-$33 = hp2 (float2 : slot 2/2, L16)
-$34 = mp3 (float3 : slot 1/3, L17)
-$35 = mp3 (float3 : slot 2/3, L17)
-$36 = mp3 (float3 : slot 3/3, L17)
-$37 = hp3 (float3 : slot 1/3, L18)
-$38 = hp3 (float3 : slot 2/3, L18)
-$39 = hp3 (float3 : slot 3/3, L18)
-$40 = mp4 (float4 : slot 1/4, L19)
-$41 = mp4 (float4 : slot 2/4, L19)
-$42 = mp4 (float4 : slot 3/4, L19)
-$43 = mp4 (float4 : slot 4/4, L19)
-$44 = hp4 (float4 : slot 1/4, L20)
-$45 = hp4 (float4 : slot 2/4, L20)
-$46 = hp4 (float4 : slot 3/4, L20)
-$47 = hp4 (float4 : slot 4/4, L20)
-$48 = ihp2 (int2 : slot 1/2, L22)
-$49 = ihp2 (int2 : slot 2/2, L22)
-$50 = imp2 (int2 : slot 1/2, L23)
-$51 = imp2 (int2 : slot 2/2, L23)
-$52 = ihp3 (int3 : slot 1/3, L24)
-$53 = ihp3 (int3 : slot 2/3, L24)
-$54 = ihp3 (int3 : slot 3/3, L24)
-$55 = imp3 (int3 : slot 1/3, L25)
-$56 = imp3 (int3 : slot 2/3, L25)
-$57 = imp3 (int3 : slot 3/3, L25)
-$58 = ihp4 (int4 : slot 1/4, L26)
-$59 = ihp4 (int4 : slot 2/4, L26)
-$60 = ihp4 (int4 : slot 3/4, L26)
-$61 = ihp4 (int4 : slot 4/4, L26)
-$62 = imp4 (int4 : slot 1/4, L27)
-$63 = imp4 (int4 : slot 2/4, L27)
-$64 = imp4 (int4 : slot 3/4, L27)
-$65 = imp4 (int4 : slot 4/4, L27)
-$66 = mp2 (float2x2 : slot 1/4, L34)
-$67 = mp2 (float2x2 : slot 2/4, L34)
-$68 = mp2 (float2x2 : slot 3/4, L34)
-$69 = mp2 (float2x2 : slot 4/4, L34)
-$70 = hp2 (float2x2 : slot 1/4, L35)
-$71 = hp2 (float2x2 : slot 2/4, L35)
-$72 = hp2 (float2x2 : slot 3/4, L35)
-$73 = hp2 (float2x2 : slot 4/4, L35)
-$74 = mp3 (float3x3 : slot 1/9, L36)
-$75 = mp3 (float3x3 : slot 2/9, L36)
-$76 = mp3 (float3x3 : slot 3/9, L36)
-$77 = mp3 (float3x3 : slot 4/9, L36)
-$78 = mp3 (float3x3 : slot 5/9, L36)
-$79 = mp3 (float3x3 : slot 6/9, L36)
-$80 = mp3 (float3x3 : slot 7/9, L36)
-$81 = mp3 (float3x3 : slot 8/9, L36)
-$82 = mp3 (float3x3 : slot 9/9, L36)
-$83 = hp3 (float3x3 : slot 1/9, L37)
-$84 = hp3 (float3x3 : slot 2/9, L37)
-$85 = hp3 (float3x3 : slot 3/9, L37)
-$86 = hp3 (float3x3 : slot 4/9, L37)
-$87 = hp3 (float3x3 : slot 5/9, L37)
-$88 = hp3 (float3x3 : slot 6/9, L37)
-$89 = hp3 (float3x3 : slot 7/9, L37)
-$90 = hp3 (float3x3 : slot 8/9, L37)
-$91 = hp3 (float3x3 : slot 9/9, L37)
-$92 = mp4 (float4x4 : slot 1/16, L38)
-$93 = mp4 (float4x4 : slot 2/16, L38)
-$94 = mp4 (float4x4 : slot 3/16, L38)
-$95 = mp4 (float4x4 : slot 4/16, L38)
-$96 = mp4 (float4x4 : slot 5/16, L38)
-$97 = mp4 (float4x4 : slot 6/16, L38)
-$98 = mp4 (float4x4 : slot 7/16, L38)
-$99 = mp4 (float4x4 : slot 8/16, L38)
-$100 = mp4 (float4x4 : slot 9/16, L38)
-$101 = mp4 (float4x4 : slot 10/16, L38)
-$102 = mp4 (float4x4 : slot 11/16, L38)
-$103 = mp4 (float4x4 : slot 12/16, L38)
-$104 = mp4 (float4x4 : slot 13/16, L38)
-$105 = mp4 (float4x4 : slot 14/16, L38)
-$106 = mp4 (float4x4 : slot 15/16, L38)
-$107 = mp4 (float4x4 : slot 16/16, L38)
-$108 = hp4 (float4x4 : slot 1/16, L39)
-$109 = hp4 (float4x4 : slot 2/16, L39)
-$110 = hp4 (float4x4 : slot 3/16, L39)
-$111 = hp4 (float4x4 : slot 4/16, L39)
-$112 = hp4 (float4x4 : slot 5/16, L39)
-$113 = hp4 (float4x4 : slot 6/16, L39)
-$114 = hp4 (float4x4 : slot 7/16, L39)
-$115 = hp4 (float4x4 : slot 8/16, L39)
-$116 = hp4 (float4x4 : slot 9/16, L39)
-$117 = hp4 (float4x4 : slot 10/16, L39)
-$118 = hp4 (float4x4 : slot 11/16, L39)
-$119 = hp4 (float4x4 : slot 12/16, L39)
-$120 = hp4 (float4x4 : slot 13/16, L39)
-$121 = hp4 (float4x4 : slot 14/16, L39)
-$122 = hp4 (float4x4 : slot 15/16, L39)
-$123 = hp4 (float4x4 : slot 16/16, L39)
-$124 = mf[0] (float, L45)
-$125 = hf[0] (float, L46)
-$126 = mv[0] (float2 : slot 1/2, L47)
-$127 = mv[0] (float2 : slot 2/2, L47)
-$128 = mv[1] (float2 : slot 1/2, L47)
-$129 = mv[1] (float2 : slot 2/2, L47)
-$130 = hv[0] (float2 : slot 1/2, L48)
-$131 = hv[0] (float2 : slot 2/2, L48)
-$132 = hv[1] (float2 : slot 1/2, L48)
-$133 = hv[1] (float2 : slot 2/2, L48)
-$134 = value (float, L53)
-$135 = value (float, L54)
-$136 = value (float, L55)
+$8 = [main].result (float4 : slot 1/4, L57)
+$9 = [main].result (float4 : slot 2/4, L57)
+$10 = [main].result (float4 : slot 3/4, L57)
+$11 = [main].result (float4 : slot 4/4, L57)
+$12 = coords (float2 : slot 1/2, L57)
+$13 = coords (float2 : slot 2/2, L57)
+$14 = zero (float4 : slot 1/4, L58)
+$15 = zero (float4 : slot 2/4, L58)
+$16 = zero (float4 : slot 3/4, L58)
+$17 = zero (float4 : slot 4/4, L58)
+$18 = one (float4 : slot 1/4, L59)
+$19 = one (float4 : slot 2/4, L59)
+$20 = one (float4 : slot 3/4, L59)
+$21 = one (float4 : slot 4/4, L59)
+$22 = green (float4 : slot 1/4, L60)
+$23 = green (float4 : slot 2/4, L60)
+$24 = green (float4 : slot 3/4, L60)
+$25 = green (float4 : slot 4/4, L60)
+$26 = red (float4 : slot 1/4, L63)
+$27 = red (float4 : slot 2/4, L63)
+$28 = red (float4 : slot 3/4, L63)
+$29 = red (float4 : slot 4/4, L63)
+$30 = [test_scalar].result (bool, L5)
+$31 = mp (float, L6)
+$32 = hp (float, L7)
+$33 = ihp (int, L8)
+$34 = imp (int, L9)
+$35 = [test_vector].result (bool, L14)
+$36 = mp2 (float2 : slot 1/2, L15)
+$37 = mp2 (float2 : slot 2/2, L15)
+$38 = hp2 (float2 : slot 1/2, L16)
+$39 = hp2 (float2 : slot 2/2, L16)
+$40 = mp3 (float3 : slot 1/3, L17)
+$41 = mp3 (float3 : slot 2/3, L17)
+$42 = mp3 (float3 : slot 3/3, L17)
+$43 = hp3 (float3 : slot 1/3, L18)
+$44 = hp3 (float3 : slot 2/3, L18)
+$45 = hp3 (float3 : slot 3/3, L18)
+$46 = mp4 (float4 : slot 1/4, L19)
+$47 = mp4 (float4 : slot 2/4, L19)
+$48 = mp4 (float4 : slot 3/4, L19)
+$49 = mp4 (float4 : slot 4/4, L19)
+$50 = hp4 (float4 : slot 1/4, L20)
+$51 = hp4 (float4 : slot 2/4, L20)
+$52 = hp4 (float4 : slot 3/4, L20)
+$53 = hp4 (float4 : slot 4/4, L20)
+$54 = ihp2 (int2 : slot 1/2, L22)
+$55 = ihp2 (int2 : slot 2/2, L22)
+$56 = imp2 (int2 : slot 1/2, L23)
+$57 = imp2 (int2 : slot 2/2, L23)
+$58 = ihp3 (int3 : slot 1/3, L24)
+$59 = ihp3 (int3 : slot 2/3, L24)
+$60 = ihp3 (int3 : slot 3/3, L24)
+$61 = imp3 (int3 : slot 1/3, L25)
+$62 = imp3 (int3 : slot 2/3, L25)
+$63 = imp3 (int3 : slot 3/3, L25)
+$64 = ihp4 (int4 : slot 1/4, L26)
+$65 = ihp4 (int4 : slot 2/4, L26)
+$66 = ihp4 (int4 : slot 3/4, L26)
+$67 = ihp4 (int4 : slot 4/4, L26)
+$68 = imp4 (int4 : slot 1/4, L27)
+$69 = imp4 (int4 : slot 2/4, L27)
+$70 = imp4 (int4 : slot 3/4, L27)
+$71 = imp4 (int4 : slot 4/4, L27)
+$72 = [test_matrix].result (bool, L33)
+$73 = mp2 (float2x2 : slot 1/4, L34)
+$74 = mp2 (float2x2 : slot 2/4, L34)
+$75 = mp2 (float2x2 : slot 3/4, L34)
+$76 = mp2 (float2x2 : slot 4/4, L34)
+$77 = hp2 (float2x2 : slot 1/4, L35)
+$78 = hp2 (float2x2 : slot 2/4, L35)
+$79 = hp2 (float2x2 : slot 3/4, L35)
+$80 = hp2 (float2x2 : slot 4/4, L35)
+$81 = mp3 (float3x3 : slot 1/9, L36)
+$82 = mp3 (float3x3 : slot 2/9, L36)
+$83 = mp3 (float3x3 : slot 3/9, L36)
+$84 = mp3 (float3x3 : slot 4/9, L36)
+$85 = mp3 (float3x3 : slot 5/9, L36)
+$86 = mp3 (float3x3 : slot 6/9, L36)
+$87 = mp3 (float3x3 : slot 7/9, L36)
+$88 = mp3 (float3x3 : slot 8/9, L36)
+$89 = mp3 (float3x3 : slot 9/9, L36)
+$90 = hp3 (float3x3 : slot 1/9, L37)
+$91 = hp3 (float3x3 : slot 2/9, L37)
+$92 = hp3 (float3x3 : slot 3/9, L37)
+$93 = hp3 (float3x3 : slot 4/9, L37)
+$94 = hp3 (float3x3 : slot 5/9, L37)
+$95 = hp3 (float3x3 : slot 6/9, L37)
+$96 = hp3 (float3x3 : slot 7/9, L37)
+$97 = hp3 (float3x3 : slot 8/9, L37)
+$98 = hp3 (float3x3 : slot 9/9, L37)
+$99 = mp4 (float4x4 : slot 1/16, L38)
+$100 = mp4 (float4x4 : slot 2/16, L38)
+$101 = mp4 (float4x4 : slot 3/16, L38)
+$102 = mp4 (float4x4 : slot 4/16, L38)
+$103 = mp4 (float4x4 : slot 5/16, L38)
+$104 = mp4 (float4x4 : slot 6/16, L38)
+$105 = mp4 (float4x4 : slot 7/16, L38)
+$106 = mp4 (float4x4 : slot 8/16, L38)
+$107 = mp4 (float4x4 : slot 9/16, L38)
+$108 = mp4 (float4x4 : slot 10/16, L38)
+$109 = mp4 (float4x4 : slot 11/16, L38)
+$110 = mp4 (float4x4 : slot 12/16, L38)
+$111 = mp4 (float4x4 : slot 13/16, L38)
+$112 = mp4 (float4x4 : slot 14/16, L38)
+$113 = mp4 (float4x4 : slot 15/16, L38)
+$114 = mp4 (float4x4 : slot 16/16, L38)
+$115 = hp4 (float4x4 : slot 1/16, L39)
+$116 = hp4 (float4x4 : slot 2/16, L39)
+$117 = hp4 (float4x4 : slot 3/16, L39)
+$118 = hp4 (float4x4 : slot 4/16, L39)
+$119 = hp4 (float4x4 : slot 5/16, L39)
+$120 = hp4 (float4x4 : slot 6/16, L39)
+$121 = hp4 (float4x4 : slot 7/16, L39)
+$122 = hp4 (float4x4 : slot 8/16, L39)
+$123 = hp4 (float4x4 : slot 9/16, L39)
+$124 = hp4 (float4x4 : slot 10/16, L39)
+$125 = hp4 (float4x4 : slot 11/16, L39)
+$126 = hp4 (float4x4 : slot 12/16, L39)
+$127 = hp4 (float4x4 : slot 13/16, L39)
+$128 = hp4 (float4x4 : slot 14/16, L39)
+$129 = hp4 (float4x4 : slot 15/16, L39)
+$130 = hp4 (float4x4 : slot 16/16, L39)
+$131 = [test_array].result (bool, L44)
+$132 = mf[0] (float, L45)
+$133 = hf[0] (float, L46)
+$134 = mv[0] (float2 : slot 1/2, L47)
+$135 = mv[0] (float2 : slot 2/2, L47)
+$136 = mv[1] (float2 : slot 1/2, L47)
+$137 = mv[1] (float2 : slot 2/2, L47)
+$138 = hv[0] (float2 : slot 1/2, L48)
+$139 = hv[0] (float2 : slot 2/2, L48)
+$140 = hv[1] (float2 : slot 1/2, L48)
+$141 = hv[1] (float2 : slot 2/2, L48)
+$142 = [highp_param].result (bool, L53)
+$143 = value (float, L53)
+$144 = [mediump_param].result (bool, L54)
+$145 = value (float, L54)
+$146 = [lowp_param].result (bool, L55)
+$147 = value (float, L55)
 F0 = float4 main(float2 coords)
 F1 = bool test_scalar()
 F2 = bool test_vector()
@@ -144,7 +155,7 @@
 F6 = bool mediump_param(half value)
 F7 = bool lowp_param(half value)
 
-21 registers, 233 instructions:
+22 registers, 245 instructions:
 0	r0 = uniform32 ptr0 0
 1	r1 = uniform32 ptr0 4
 2	r2 = uniform32 ptr0 8
@@ -155,227 +166,239 @@
 7	r7 = uniform32 ptr0 1C
 8	r8 = uniform32 ptr0 20
 9	r9 = splat 0 (0)
-10	r10 = splat 3F000000 (0.5)
-11	r11 = eq_f32 r0 r10
-12	r12 = splat 3F800000 (1)
-13	r13 = splat 2 (2.8025969e-45)
-14	r14 = splat 40000000 (2)
-15	r15 = splat 40400000 (3)
-16	r16 = splat 40800000 (4)
-17	r17 = splat 3 (4.2038954e-45)
-18	r18 = splat 4 (5.6051939e-45)
+10	r10 = splat FFFFFFFF (nan)
+11	r11 = splat 3F000000 (0.5)
+12	r12 = eq_f32 r0 r11
+13	r13 = splat 3F800000 (1)
+14	r14 = splat 2 (2.8025969e-45)
+15	r15 = splat 40000000 (2)
+16	r16 = splat 40400000 (3)
+17	r17 = splat 40800000 (4)
+18	r18 = splat 3 (4.2038954e-45)
+19	r19 = splat 4 (5.6051939e-45)
 loop:
-19	    r19 = index
-20	    r20 = eq_f32 r19 r10
-21	    r20 = bit_and r20 r11
-22	    trace_var r20 $0 = r1
-23	    trace_var r20 $1 = r2
-24	    trace_var r20 $2 = r3
-25	    trace_var r20 $3 = r4
-26	    trace_var r20 $4 = r5
-27	    trace_var r20 $5 = r6
-28	    trace_var r20 $6 = r7
-29	    trace_var r20 $7 = r8
-30	    trace_enter r20 F0
-31	    trace_var r20 $8 = r19
-32	    trace_var r20 $9 = r0
-33	    trace_line r20 L58
-34	    trace_var r20 $10 = r9
-35	    trace_var r20 $11 = r9
-36	    trace_var r20 $12 = r9
-37	    trace_var r20 $13 = r9
-38	    trace_line r20 L59
-39	    trace_var r20 $14 = r12
-40	    trace_var r20 $15 = r12
-41	    trace_var r20 $16 = r12
-42	    trace_var r20 $17 = r12
-43	    trace_line r20 L60
-44	    trace_var r20 $18 = r1
-45	    trace_var r20 $19 = r2
-46	    trace_var r20 $20 = r3
-47	    trace_var r20 $21 = r4
-48	    trace_line r20 L61
-49	    trace_line r20 L63
-50	    trace_var r20 $22 = r5
-51	    trace_var r20 $23 = r6
-52	    trace_var r20 $24 = r7
-53	    trace_var r20 $25 = r8
-54	    trace_line r20 L64
-55	    trace_line r20 L66
-56	    trace_enter r20 F1
-57	    trace_line r20 L6
-58	    trace_var r20 $26 = r10
-59	    trace_line r20 L7
-60	    trace_var r20 $27 = r10
-61	    trace_line r20 L8
-62	    trace_var r20 $28 = r13
-63	    trace_line r20 L9
-64	    trace_var r20 $29 = r13
-65	    trace_line r20 L11
-66	    trace_exit r20 F1
-67	    trace_enter r20 F2
-68	    trace_line r20 L15
-69	    trace_var r20 $30 = r14
-70	    trace_var r20 $31 = r14
-71	    trace_line r20 L16
-72	    trace_var r20 $32 = r14
-73	    trace_var r20 $33 = r14
-74	    trace_line r20 L17
-75	    trace_var r20 $34 = r15
-76	    trace_var r20 $35 = r15
-77	    trace_var r20 $36 = r15
-78	    trace_line r20 L18
-79	    trace_var r20 $37 = r15
-80	    trace_var r20 $38 = r15
-81	    trace_var r20 $39 = r15
-82	    trace_line r20 L19
-83	    trace_var r20 $40 = r16
-84	    trace_var r20 $41 = r16
-85	    trace_var r20 $42 = r16
-86	    trace_var r20 $43 = r16
-87	    trace_line r20 L20
-88	    trace_var r20 $44 = r16
-89	    trace_var r20 $45 = r16
-90	    trace_var r20 $46 = r16
-91	    trace_var r20 $47 = r16
-92	    trace_line r20 L22
-93	    trace_var r20 $48 = r13
-94	    trace_var r20 $49 = r13
-95	    trace_line r20 L23
-96	    trace_var r20 $50 = r13
-97	    trace_var r20 $51 = r13
-98	    trace_line r20 L24
-99	    trace_var r20 $52 = r17
-100	    trace_var r20 $53 = r17
-101	    trace_var r20 $54 = r17
-102	    trace_line r20 L25
-103	    trace_var r20 $55 = r17
-104	    trace_var r20 $56 = r17
-105	    trace_var r20 $57 = r17
-106	    trace_line r20 L26
-107	    trace_var r20 $58 = r18
-108	    trace_var r20 $59 = r18
-109	    trace_var r20 $60 = r18
-110	    trace_var r20 $61 = r18
-111	    trace_line r20 L27
-112	    trace_var r20 $62 = r18
-113	    trace_var r20 $63 = r18
-114	    trace_var r20 $64 = r18
-115	    trace_var r20 $65 = r18
-116	    trace_line r20 L29
-117	    trace_exit r20 F2
-118	    trace_enter r20 F3
-119	    trace_line r20 L34
-120	    trace_var r20 $66 = r14
-121	    trace_var r20 $67 = r9
-122	    trace_var r20 $68 = r9
-123	    trace_var r20 $69 = r14
-124	    trace_line r20 L35
-125	    trace_var r20 $70 = r14
-126	    trace_var r20 $71 = r9
-127	    trace_var r20 $72 = r9
-128	    trace_var r20 $73 = r14
-129	    trace_line r20 L36
-130	    trace_var r20 $74 = r15
-131	    trace_var r20 $75 = r9
-132	    trace_var r20 $76 = r9
-133	    trace_var r20 $77 = r9
-134	    trace_var r20 $78 = r15
-135	    trace_var r20 $79 = r9
-136	    trace_var r20 $80 = r9
-137	    trace_var r20 $81 = r9
-138	    trace_var r20 $82 = r15
-139	    trace_line r20 L37
-140	    trace_var r20 $83 = r15
-141	    trace_var r20 $84 = r9
-142	    trace_var r20 $85 = r9
-143	    trace_var r20 $86 = r9
-144	    trace_var r20 $87 = r15
-145	    trace_var r20 $88 = r9
-146	    trace_var r20 $89 = r9
-147	    trace_var r20 $90 = r9
-148	    trace_var r20 $91 = r15
-149	    trace_line r20 L38
-150	    trace_var r20 $92 = r16
-151	    trace_var r20 $93 = r9
-152	    trace_var r20 $94 = r9
-153	    trace_var r20 $95 = r9
-154	    trace_var r20 $96 = r9
-155	    trace_var r20 $97 = r16
-156	    trace_var r20 $98 = r9
-157	    trace_var r20 $99 = r9
-158	    trace_var r20 $100 = r9
-159	    trace_var r20 $101 = r9
-160	    trace_var r20 $102 = r16
-161	    trace_var r20 $103 = r9
-162	    trace_var r20 $104 = r9
-163	    trace_var r20 $105 = r9
-164	    trace_var r20 $106 = r9
-165	    trace_var r20 $107 = r16
-166	    trace_line r20 L39
-167	    trace_var r20 $108 = r16
-168	    trace_var r20 $109 = r9
-169	    trace_var r20 $110 = r9
-170	    trace_var r20 $111 = r9
-171	    trace_var r20 $112 = r9
-172	    trace_var r20 $113 = r16
-173	    trace_var r20 $114 = r9
-174	    trace_var r20 $115 = r9
-175	    trace_var r20 $116 = r9
-176	    trace_var r20 $117 = r9
-177	    trace_var r20 $118 = r16
-178	    trace_var r20 $119 = r9
-179	    trace_var r20 $120 = r9
-180	    trace_var r20 $121 = r9
-181	    trace_var r20 $122 = r9
-182	    trace_var r20 $123 = r16
-183	    trace_line r20 L41
-184	    trace_exit r20 F3
-185	    trace_enter r20 F4
-186	    trace_line r20 L45
-187	    trace_var r20 $124 = r9
-188	    trace_line r20 L45
-189	    trace_var r20 $124 = r12
-190	    trace_line r20 L46
-191	    trace_var r20 $125 = r9
-192	    trace_line r20 L46
-193	    trace_var r20 $125 = r12
-194	    trace_line r20 L47
-195	    trace_var r20 $126 = r9
-196	    trace_var r20 $127 = r9
-197	    trace_var r20 $128 = r9
-198	    trace_var r20 $129 = r9
-199	    trace_line r20 L47
-200	    trace_var r20 $127 = r12
-201	    trace_line r20 L47
-202	    trace_var r20 $128 = r14
-203	    trace_var r20 $129 = r15
-204	    trace_line r20 L48
-205	    trace_var r20 $130 = r9
-206	    trace_var r20 $131 = r9
-207	    trace_var r20 $132 = r9
-208	    trace_var r20 $133 = r9
-209	    trace_line r20 L48
-210	    trace_var r20 $131 = r12
-211	    trace_line r20 L48
-212	    trace_var r20 $132 = r14
-213	    trace_var r20 $133 = r15
-214	    trace_line r20 L50
-215	    trace_exit r20 F4
-216	    trace_enter r20 F5
-217	    trace_var r20 $134 = r12
-218	    trace_line r20 L53
-219	    trace_exit r20 F5
-220	    trace_enter r20 F6
-221	    trace_var r20 $135 = r14
-222	    trace_line r20 L54
-223	    trace_exit r20 F6
-224	    trace_enter r20 F7
-225	    trace_var r20 $136 = r15
-226	    trace_line r20 L55
-227	    trace_exit r20 F7
-228	    trace_exit r20 F0
-229	    store32 ptr1 r1
-230	    store32 ptr2 r2
-231	    store32 ptr3 r3
-232	    store32 ptr4 r4
+20	    r20 = index
+21	    r21 = eq_f32 r20 r11
+22	    r21 = bit_and r21 r12
+23	    trace_var r21 $0 = r1
+24	    trace_var r21 $1 = r2
+25	    trace_var r21 $2 = r3
+26	    trace_var r21 $3 = r4
+27	    trace_var r21 $4 = r5
+28	    trace_var r21 $5 = r6
+29	    trace_var r21 $6 = r7
+30	    trace_var r21 $7 = r8
+31	    trace_enter r21 F0
+32	    trace_var r21 $12 = r20
+33	    trace_var r21 $13 = r0
+34	    trace_line r21 L58
+35	    trace_var r21 $14 = r9
+36	    trace_var r21 $15 = r9
+37	    trace_var r21 $16 = r9
+38	    trace_var r21 $17 = r9
+39	    trace_line r21 L59
+40	    trace_var r21 $18 = r13
+41	    trace_var r21 $19 = r13
+42	    trace_var r21 $20 = r13
+43	    trace_var r21 $21 = r13
+44	    trace_line r21 L60
+45	    trace_var r21 $22 = r1
+46	    trace_var r21 $23 = r2
+47	    trace_var r21 $24 = r3
+48	    trace_var r21 $25 = r4
+49	    trace_line r21 L61
+50	    trace_line r21 L63
+51	    trace_var r21 $26 = r5
+52	    trace_var r21 $27 = r6
+53	    trace_var r21 $28 = r7
+54	    trace_var r21 $29 = r8
+55	    trace_line r21 L64
+56	    trace_line r21 L66
+57	    trace_enter r21 F1
+58	    trace_line r21 L6
+59	    trace_var r21 $31 = r11
+60	    trace_line r21 L7
+61	    trace_var r21 $32 = r11
+62	    trace_line r21 L8
+63	    trace_var r21 $33 = r14
+64	    trace_line r21 L9
+65	    trace_var r21 $34 = r14
+66	    trace_line r21 L11
+67	    trace_var r21 $30 = r10
+68	    trace_exit r21 F1
+69	    trace_enter r21 F2
+70	    trace_line r21 L15
+71	    trace_var r21 $36 = r15
+72	    trace_var r21 $37 = r15
+73	    trace_line r21 L16
+74	    trace_var r21 $38 = r15
+75	    trace_var r21 $39 = r15
+76	    trace_line r21 L17
+77	    trace_var r21 $40 = r16
+78	    trace_var r21 $41 = r16
+79	    trace_var r21 $42 = r16
+80	    trace_line r21 L18
+81	    trace_var r21 $43 = r16
+82	    trace_var r21 $44 = r16
+83	    trace_var r21 $45 = r16
+84	    trace_line r21 L19
+85	    trace_var r21 $46 = r17
+86	    trace_var r21 $47 = r17
+87	    trace_var r21 $48 = r17
+88	    trace_var r21 $49 = r17
+89	    trace_line r21 L20
+90	    trace_var r21 $50 = r17
+91	    trace_var r21 $51 = r17
+92	    trace_var r21 $52 = r17
+93	    trace_var r21 $53 = r17
+94	    trace_line r21 L22
+95	    trace_var r21 $54 = r14
+96	    trace_var r21 $55 = r14
+97	    trace_line r21 L23
+98	    trace_var r21 $56 = r14
+99	    trace_var r21 $57 = r14
+100	    trace_line r21 L24
+101	    trace_var r21 $58 = r18
+102	    trace_var r21 $59 = r18
+103	    trace_var r21 $60 = r18
+104	    trace_line r21 L25
+105	    trace_var r21 $61 = r18
+106	    trace_var r21 $62 = r18
+107	    trace_var r21 $63 = r18
+108	    trace_line r21 L26
+109	    trace_var r21 $64 = r19
+110	    trace_var r21 $65 = r19
+111	    trace_var r21 $66 = r19
+112	    trace_var r21 $67 = r19
+113	    trace_line r21 L27
+114	    trace_var r21 $68 = r19
+115	    trace_var r21 $69 = r19
+116	    trace_var r21 $70 = r19
+117	    trace_var r21 $71 = r19
+118	    trace_line r21 L29
+119	    trace_var r21 $35 = r10
+120	    trace_exit r21 F2
+121	    trace_enter r21 F3
+122	    trace_line r21 L34
+123	    trace_var r21 $73 = r15
+124	    trace_var r21 $74 = r9
+125	    trace_var r21 $75 = r9
+126	    trace_var r21 $76 = r15
+127	    trace_line r21 L35
+128	    trace_var r21 $77 = r15
+129	    trace_var r21 $78 = r9
+130	    trace_var r21 $79 = r9
+131	    trace_var r21 $80 = r15
+132	    trace_line r21 L36
+133	    trace_var r21 $81 = r16
+134	    trace_var r21 $82 = r9
+135	    trace_var r21 $83 = r9
+136	    trace_var r21 $84 = r9
+137	    trace_var r21 $85 = r16
+138	    trace_var r21 $86 = r9
+139	    trace_var r21 $87 = r9
+140	    trace_var r21 $88 = r9
+141	    trace_var r21 $89 = r16
+142	    trace_line r21 L37
+143	    trace_var r21 $90 = r16
+144	    trace_var r21 $91 = r9
+145	    trace_var r21 $92 = r9
+146	    trace_var r21 $93 = r9
+147	    trace_var r21 $94 = r16
+148	    trace_var r21 $95 = r9
+149	    trace_var r21 $96 = r9
+150	    trace_var r21 $97 = r9
+151	    trace_var r21 $98 = r16
+152	    trace_line r21 L38
+153	    trace_var r21 $99 = r17
+154	    trace_var r21 $100 = r9
+155	    trace_var r21 $101 = r9
+156	    trace_var r21 $102 = r9
+157	    trace_var r21 $103 = r9
+158	    trace_var r21 $104 = r17
+159	    trace_var r21 $105 = r9
+160	    trace_var r21 $106 = r9
+161	    trace_var r21 $107 = r9
+162	    trace_var r21 $108 = r9
+163	    trace_var r21 $109 = r17
+164	    trace_var r21 $110 = r9
+165	    trace_var r21 $111 = r9
+166	    trace_var r21 $112 = r9
+167	    trace_var r21 $113 = r9
+168	    trace_var r21 $114 = r17
+169	    trace_line r21 L39
+170	    trace_var r21 $115 = r17
+171	    trace_var r21 $116 = r9
+172	    trace_var r21 $117 = r9
+173	    trace_var r21 $118 = r9
+174	    trace_var r21 $119 = r9
+175	    trace_var r21 $120 = r17
+176	    trace_var r21 $121 = r9
+177	    trace_var r21 $122 = r9
+178	    trace_var r21 $123 = r9
+179	    trace_var r21 $124 = r9
+180	    trace_var r21 $125 = r17
+181	    trace_var r21 $126 = r9
+182	    trace_var r21 $127 = r9
+183	    trace_var r21 $128 = r9
+184	    trace_var r21 $129 = r9
+185	    trace_var r21 $130 = r17
+186	    trace_line r21 L41
+187	    trace_var r21 $72 = r10
+188	    trace_exit r21 F3
+189	    trace_enter r21 F4
+190	    trace_line r21 L45
+191	    trace_var r21 $132 = r9
+192	    trace_line r21 L45
+193	    trace_var r21 $132 = r13
+194	    trace_line r21 L46
+195	    trace_var r21 $133 = r9
+196	    trace_line r21 L46
+197	    trace_var r21 $133 = r13
+198	    trace_line r21 L47
+199	    trace_var r21 $134 = r9
+200	    trace_var r21 $135 = r9
+201	    trace_var r21 $136 = r9
+202	    trace_var r21 $137 = r9
+203	    trace_line r21 L47
+204	    trace_var r21 $135 = r13
+205	    trace_line r21 L47
+206	    trace_var r21 $136 = r15
+207	    trace_var r21 $137 = r16
+208	    trace_line r21 L48
+209	    trace_var r21 $138 = r9
+210	    trace_var r21 $139 = r9
+211	    trace_var r21 $140 = r9
+212	    trace_var r21 $141 = r9
+213	    trace_line r21 L48
+214	    trace_var r21 $139 = r13
+215	    trace_line r21 L48
+216	    trace_var r21 $140 = r15
+217	    trace_var r21 $141 = r16
+218	    trace_line r21 L50
+219	    trace_var r21 $131 = r10
+220	    trace_exit r21 F4
+221	    trace_enter r21 F5
+222	    trace_var r21 $143 = r13
+223	    trace_line r21 L53
+224	    trace_var r21 $142 = r10
+225	    trace_exit r21 F5
+226	    trace_enter r21 F6
+227	    trace_var r21 $145 = r15
+228	    trace_line r21 L54
+229	    trace_var r21 $144 = r10
+230	    trace_exit r21 F6
+231	    trace_enter r21 F7
+232	    trace_var r21 $147 = r16
+233	    trace_line r21 L55
+234	    trace_var r21 $146 = r10
+235	    trace_exit r21 F7
+236	    trace_var r21 $8 = r1
+237	    trace_var r21 $9 = r2
+238	    trace_var r21 $10 = r3
+239	    trace_var r21 $11 = r4
+240	    trace_exit r21 F0
+241	    store32 ptr1 r1
+242	    store32 ptr2 r2
+243	    store32 ptr3 r3
+244	    store32 ptr4 r4