use simplify-locals in wasm2asm, so the output is not horribly verbose with los of extra inefficient variables. this is more similar to the output we had before the flatten rewrite (#1229)

diff --git a/src/wasm2asm.h b/src/wasm2asm.h
index 5d0058f..028e4d4 100644
--- a/src/wasm2asm.h
+++ b/src/wasm2asm.h
@@ -387,6 +387,7 @@
   runner.add<AutoDrop>();
   runner.add("i64-to-i32-lowering");
   runner.add("flatten");
+  runner.add("simplify-locals-notee-nostructure");
   runner.add("vacuum");
   runner.setDebug(flags.debug);
   runner.run();
diff --git a/test/address.2asm.js b/test/address.2asm.js
index 8dfe2dc..c2db815 100644
--- a/test/address.2asm.js
+++ b/test/address.2asm.js
@@ -16,70 +16,32 @@
  function $$0(i) {
   i = i | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, $$21 = 0, $$22 = 0, $$23 = 0, $$24 = 0, $$25 = 0, $$26 = 0, wasm2asm_i32$0 = 0;
-  $$1 = i;
-  $$2 = HEAPU8[$$1 >> 0] | 0;
-  print($$2 | 0);
-  $$3 = i;
-  $$4 = HEAPU8[($$3 + 1 | 0) >> 0] | 0;
-  print($$4 | 0);
-  $$5 = i;
-  $$6 = HEAPU8[($$5 + 2 | 0) >> 0] | 0;
-  print($$6 | 0);
-  $$7 = i;
-  $$8 = HEAPU8[($$7 + 25 | 0) >> 0] | 0;
-  print($$8 | 0);
-  $$9 = i;
-  $$10 = HEAPU16[$$9 >> 1] | 0;
-  print($$10 | 0);
-  $$11 = i;
-  $$12 = (wasm2asm_i32$0 = $$11, HEAPU8[wasm2asm_i32$0 >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0) << 8);
-  print($$12 | 0);
-  $$13 = i;
-  $$14 = (wasm2asm_i32$0 = $$13, HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0) << 8);
-  print($$14 | 0);
-  $$15 = i;
-  $$16 = HEAPU16[($$15 + 2 | 0) >> 1] | 0;
-  print($$16 | 0);
-  $$17 = i;
-  $$18 = (wasm2asm_i32$0 = $$17, HEAPU8[(wasm2asm_i32$0 + 25 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 26 | 0) >> 0] | 0 | 0) << 8);
-  print($$18 | 0);
-  $$19 = i;
-  $$20 = HEAPU32[$$19 >> 2] | 0;
-  print($$20 | 0);
-  $$21 = i;
-  $$22 = (wasm2asm_i32$0 = $$21, HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 3 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 4 | 0) >> 0] | 0 | 0) << 24);
-  print($$22 | 0);
-  $$23 = i;
-  $$24 = (wasm2asm_i32$0 = $$23, HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 3 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 4 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 5 | 0) >> 0] | 0 | 0) << 24);
-  print($$24 | 0);
-  $$25 = i;
-  $$26 = (wasm2asm_i32$0 = $$25, HEAPU8[(wasm2asm_i32$0 + 25 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 26 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 27 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 28 | 0) >> 0] | 0 | 0) << 24);
-  print($$26 | 0);
+  print(HEAPU8[i >> 0] | 0 | 0);
+  print(HEAPU8[(i + 1 | 0) >> 0] | 0 | 0);
+  print(HEAPU8[(i + 2 | 0) >> 0] | 0 | 0);
+  print(HEAPU8[(i + 25 | 0) >> 0] | 0 | 0);
+  print(HEAPU16[i >> 1] | 0 | 0);
+  print((wasm2asm_i32$0 = i, HEAPU8[wasm2asm_i32$0 >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0) << 8) | 0);
+  print((wasm2asm_i32$0 = i, HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0) << 8) | 0);
+  print(HEAPU16[(i + 2 | 0) >> 1] | 0 | 0);
+  print((wasm2asm_i32$0 = i, HEAPU8[(wasm2asm_i32$0 + 25 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 26 | 0) >> 0] | 0 | 0) << 8) | 0);
+  print(HEAPU32[i >> 2] | 0 | 0);
+  print((wasm2asm_i32$0 = i, HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 3 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 4 | 0) >> 0] | 0 | 0) << 24) | 0);
+  print((wasm2asm_i32$0 = i, HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 3 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 4 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 5 | 0) >> 0] | 0 | 0) << 24) | 0);
+  print((wasm2asm_i32$0 = i, HEAPU8[(wasm2asm_i32$0 + 25 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 26 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 27 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 28 | 0) >> 0] | 0 | 0) << 24) | 0);
  }
  
  function $$1(i) {
   i = i | 0;
   var $$1 = 0, $$2 = 0;
-  $$1 = i;
-  $$2 = HEAPU32[($$1 + 4294967295 | 0) >> 2] | 0;
+  HEAPU32[(i + 4294967295 | 0) >> 2] | 0;
  }
  
  function __wasm_ctz_i32(x) {
   x = x | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
-  $$1 = x;
-  $$2 = ($$1 | 0) == (0 | 0);
-  if ($$2) $$9 = 32; else {
-   $$3 = x;
-   $$4 = x;
-   $$5 = $$4 - 1 | 0;
-   $$6 = $$3 ^ $$5 | 0;
-   $$7 = Math_clz32($$6);
-   $$8 = 31 - $$7 | 0;
-   $$9 = $$8;
-  }
-  $$10 = $$9;
-  return $$10 | 0;
+  if ((x | 0) == (0 | 0)) $$9 = 32; else $$9 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
+  return $$9 | 0;
  }
  
  function __wasm_popcnt_i32(x) {
@@ -88,80 +50,31 @@
   count = 0;
   b : {
    l : do {
-    $$2 = count;
-    $$3 = x;
-    $$4 = ($$3 | 0) == (0 | 0);
-    $$5 = $$2;
-    if ($$4) break b;
-    $$6 = $$5;
-    $$7 = x;
-    $$8 = x;
-    $$9 = $$8 - 1 | 0;
-    $$10 = $$7 & $$9 | 0;
-    x = $$10;
-    $$11 = count;
-    $$12 = $$11 + 1 | 0;
-    count = $$12;
+    $$5 = count;
+    if ((x | 0) == (0 | 0)) break b;
+    x = x & (x - 1 | 0) | 0;
+    count = count + 1 | 0;
     continue l;
     break l;
    } while (1);
   };
-  $$13 = $$5;
-  $$14 = $$13;
-  $$15 = $$14;
-  return $$15 | 0;
+  return $$5 | 0;
  }
  
  function __wasm_rotl_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 >>> $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 << $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 << $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 >>> $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_rotr_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 << $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 >>> $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 >>> $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 << $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  return {
diff --git a/test/br_table_temp.2asm.js b/test/br_table_temp.2asm.js
index 748f1ee..00f8f6a 100644
--- a/test/br_table_temp.2asm.js
+++ b/test/br_table_temp.2asm.js
@@ -35,8 +35,7 @@
  function $$5() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 1;
-   $$1 = $$0;
+   $$1 = 1;
    switch (0 | 0) {
    case 0:
     break block;
@@ -44,8 +43,7 @@
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$6() {
@@ -54,9 +52,7 @@
    $i64toi32_block_1 : {
     $i64toi32_block_0 : {
      i64toi32_i32$0 = 0;
-     $$3 = 2;
-     $$4 = $$3;
-     $$5 = $$4;
+     $$5 = 2;
      $$6 = $$5;
      $$7 = $$5;
      switch (0 | 0) {
@@ -66,31 +62,21 @@
       break $i64toi32_block_1;
      };
     };
-    $$8 = $$6;
-    i64toi32_i32$1 = $$8;
-    $$9 = i64toi32_i32$0;
-    i64toi32_i32$2 = $$9;
-    $$10 = i64toi32_i32$1;
-    $$11 = $$10;
+    i64toi32_i32$1 = $$6;
+    $$11 = i64toi32_i32$1;
     break block;
    };
-   $$12 = $$7;
-   i64toi32_i32$1 = $$12;
-   $$13 = i64toi32_i32$0;
-   i64toi32_i32$2 = $$13;
-   $$14 = i64toi32_i32$1;
-   $$11 = $$14;
+   i64toi32_i32$1 = $$7;
+   $$11 = i64toi32_i32$1;
    break block;
   };
-  $$15 = $$11;
-  return $$15 | 0;
+  return $$11 | 0;
  }
  
  function $$7() {
   var $$0 = Math_fround(0), $$1 = Math_fround(0), $$2 = Math_fround(0);
   block : {
-   $$0 = Math_fround(3.0);
-   $$1 = $$0;
+   $$1 = Math_fround(3.0);
    switch (0 | 0) {
    case 0:
     break block;
@@ -98,15 +84,13 @@
     break block;
    };
   };
-  $$2 = $$1;
-  return Math_fround($$2);
+  return Math_fround($$1);
  }
  
  function $$8() {
   var $$0 = 0.0, $$1 = 0.0, $$2 = 0.0;
   block : {
-   $$0 = 4.0;
-   $$1 = $$0;
+   $$1 = 4.0;
    switch (0 | 0) {
    case 0:
     break block;
@@ -114,39 +98,27 @@
     break block;
    };
   };
-  $$2 = $$1;
-  return +$$2;
+  return +$$1;
  }
  
  function $$9($$0) {
   $$0 = $$0 | 0;
-  var $$1 = 0, $$2 = 0, $$3 = 0;
-  block : {
-   $$1 = $$0;
-   switch ($$1 | 0) {
-   default:
-    break block;
-   };
-  };
-  $$2 = 22;
-  $$3 = $$2;
-  return $$3 | 0;
+  var $$1 = 0, $$2 = 0, $$3 = 0, wasm2asm_i32$0 = 0;
+  return 22 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$10($$0) {
   $$0 = $$0 | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0;
   block : {
-   $$1 = $$0;
-   $$2 = 33;
-   $$3 = $$2;
-   switch ($$1 | 0) {
+   $$3 = 33;
+   switch ($$0 | 0) {
    default:
     break block;
    };
   };
-  $$4 = $$3;
-  return $$4 | 0;
+  return $$3 | 0;
  }
  
  function $$11($$0) {
@@ -154,8 +126,7 @@
   var $$1 = 0, $$2 = 0, $$3 = 0;
   block : {
    block0 : {
-    $$1 = $$0;
-    switch ($$1 | 0) {
+    switch ($$0 | 0) {
     case 0:
      break block;
     default:
@@ -164,9 +135,7 @@
    };
    return 20 | 0;
   };
-  $$2 = 22;
-  $$3 = $$2;
-  return $$3 | 0;
+  return 22 | 0;
  }
  
  function $$12($$0) {
@@ -174,22 +143,19 @@
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
   block : {
    block1 : {
-    $$1 = $$0;
     $$2 = 33;
     $$3 = $$2;
     $$4 = $$2;
-    switch ($$1 | 0) {
+    switch ($$0 | 0) {
     case 0:
      break block1;
     default:
      break block;
     };
    };
-   $$5 = $$4;
    $$3 = 32;
   };
-  $$6 = $$3;
-  return $$6 | 0;
+  return $$3 | 0;
  }
  
  function $$13($$0) {
@@ -200,8 +166,7 @@
     block3 : {
      block4 : {
       block5 : {
-       $$1 = $$0;
-       switch ($$1 | 0) {
+       switch ($$0 | 0) {
        case 0:
         break block2;
        case 1:
@@ -222,9 +187,7 @@
    };
    return 103 | 0;
   };
-  $$2 = 104;
-  $$3 = $$2;
-  return $$3 | 0;
+  return 104 | 0;
  }
  
  function $$14($$0) {
@@ -235,14 +198,13 @@
     block7 : {
      block8 : {
       block9 : {
-       $$2 = $$0;
        $$3 = 200;
        $$4 = $$3;
        $$5 = $$3;
        $$6 = $$3;
        $$7 = $$3;
        $$8 = $$3;
-       switch ($$2 | 0) {
+       switch ($$0 | 0) {
        case 0:
         break block6;
        case 1:
@@ -255,37 +217,20 @@
         break block;
        };
       };
-      $$11 = $$8;
-      $$1 = $$11;
-      $$12 = $$1;
-      $$13 = $$12 + 10 | 0;
-      return $$13 | 0;
+      $$1 = $$8;
+      return $$1 + 10 | 0 | 0;
      };
-     $$14 = $$7;
-     $$1 = $$14;
-     $$15 = $$1;
-     $$16 = $$15 + 11 | 0;
-     return $$16 | 0;
+     $$1 = $$7;
+     return $$1 + 11 | 0 | 0;
     };
-    $$17 = $$6;
-    $$1 = $$17;
-    $$18 = $$1;
-    $$19 = $$18 + 12 | 0;
-    return $$19 | 0;
+    $$1 = $$6;
+    return $$1 + 12 | 0 | 0;
    };
-   $$20 = $$5;
-   $$1 = $$20;
-   $$21 = $$1;
-   $$22 = $$21 + 13 | 0;
-   return $$22 | 0;
+   $$1 = $$5;
+   return $$1 + 13 | 0 | 0;
   };
-  $$23 = $$4;
-  $$1 = $$23;
-  $$24 = $$1;
-  $$25 = $$24 + 14 | 0;
-  $$26 = $$25;
-  $$27 = $$26;
-  return $$27 | 0;
+  $$1 = $$4;
+  return $$1 + 14 | 0 | 0;
  }
  
  function $$15($$0) {
@@ -293,8 +238,7 @@
   var $$1 = 0;
   block : {
    block10 : {
-    $$1 = $$0;
-    switch ($$1 | 0) {
+    switch ($$0 | 0) {
     case 0:
      break block10;
     case 1:
@@ -49570,8 +49514,7 @@
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
    dummy();
-   $$0 = 2;
-   $$1 = $$0;
+   $$1 = 2;
    switch (0 | 0) {
    case 0:
     break block;
@@ -49581,16 +49524,14 @@
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$20() {
   var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
   fake_return_waka123 : {
    loop_in : do {
-    $$0 = 3;
-    $$1 = $$0;
+    $$1 = 3;
     switch (0 | 0) {
     case 0:
      break fake_return_waka123;
@@ -49600,8 +49541,7 @@
     break loop_in;
    } while (1);
   };
-  $$6 = $$1;
-  return $$6 | 0;
+  return $$1 | 0;
  }
  
  function $$21() {
@@ -49609,8 +49549,7 @@
   fake_return_waka123 : {
    loop_in : do {
     dummy();
-    $$0 = 4;
-    $$1 = $$0;
+    $$1 = 4;
     switch (4294967295 | 0) {
     case 0:
      break fake_return_waka123;
@@ -49622,8 +49561,7 @@
     break loop_in;
    } while (1);
   };
-  $$6 = $$1;
-  return $$6 | 0;
+  return $$1 | 0;
  }
  
  function $$22() {
@@ -49631,8 +49569,7 @@
   fake_return_waka123 : {
    loop_in : do {
     dummy();
-    $$0 = 5;
-    $$1 = $$0;
+    $$1 = 5;
     switch (1 | 0) {
     case 0:
      break fake_return_waka123;
@@ -49644,8 +49581,7 @@
     break loop_in;
    } while (1);
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$23() {
@@ -49654,8 +49590,7 @@
    $$0 = 9;
    break block;
   };
-  $$1 = $$0;
-  return $$1 | 0;
+  return $$0 | 0;
  }
  
  function $$24() {
@@ -49665,22 +49600,19 @@
  function $$25() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 8;
-   $$1 = $$0;
+   $$1 = 8;
    switch (0 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$26() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 9;
-   $$1 = $$0;
+   $$1 = 9;
    switch (0 | 0) {
    case 0:
     break block;
@@ -49688,8 +49620,7 @@
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$27() {
@@ -49699,29 +49630,25 @@
  function $$28() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 10;
-   $$1 = $$0;
+   $$1 = 10;
    switch (0 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$29() {
   var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0;
   block : {
-   $$0 = 11;
-   $$1 = $$0;
+   $$1 = 11;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$3 = $$1;
-  return $$3 | 0;
+  return $$1 | 0;
  }
  
  function $$30() {
@@ -49729,43 +49656,28 @@
   block : {
    $i64toi32_block_0 : {
     i64toi32_i32$0 = 0;
-    $$3 = 7;
-    $$4 = $$3;
-    $$5 = $$4;
-    $$6 = $$5;
+    $$6 = 7;
     switch (0 | 0) {
     default:
      break $i64toi32_block_0;
     };
    };
-   $$7 = $$6;
-   i64toi32_i32$1 = $$7;
-   $$8 = i64toi32_i32$0;
-   i64toi32_i32$2 = $$8;
-   $$9 = i64toi32_i32$1;
-   $$10 = $$9;
+   $$10 = $$6;
    break block;
   };
-  $$11 = $$10;
-  return $$11 | 0;
+  return $$10 | 0;
  }
  
  function $$31() {
   var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
-  block : {
-   $$if : {
-    $$0 = 2;
-    $$1 = $$0;
-    switch (0 | 0) {
-    default:
-     break $$if;
-    };
+  $$if : {
+   $$1 = 2;
+   switch (0 | 0) {
+   default:
+    break $$if;
    };
-   $$4 = $$1;
-   $$5 = $$4;
   };
-  $$6 = $$5;
-  return $$6 | 0;
+  return $$1 | 0;
  }
  
  function $$32($$0, $$1) {
@@ -49773,23 +49685,16 @@
   $$1 = $$1 | 0;
   var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0;
   block : {
-   $$2 = $$0;
-   if ($$2) {
-    $$3 = 3;
-    $$4 = $$3;
+   if ($$0) {
+    $$4 = 3;
     switch (0 | 0) {
     default:
      break block;
     };
-   } else {
-    $$5 = $$1;
-    $$6 = $$5;
-   }
-   $$7 = $$6;
-   $$4 = $$7;
+   } else $$6 = $$1;
+   $$4 = $$6;
   };
-  $$8 = $$4;
-  return $$8 | 0;
+  return $$4 | 0;
  }
  
  function $$33($$0, $$1) {
@@ -49798,11 +49703,7 @@
   var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
   block : {
    $$if : {
-    $$2 = $$0;
-    if ($$2) {
-     $$3 = $$1;
-     $$7 = $$3;
-    } else {
+    if ($$0) $$7 = $$1; else {
      $$4 = 4;
      $$5 = $$4;
      $$6 = $$4;
@@ -49813,14 +49714,11 @@
       break $$if;
      };
     }
-    $$8 = $$7;
-    $$6 = $$8;
+    $$6 = $$7;
    };
-   $$9 = $$6;
-   $$5 = $$9;
+   $$5 = $$6;
   };
-  $$10 = $$5;
-  return $$10 | 0;
+  return $$5 | 0;
  }
  
  function $$34($$0, $$1) {
@@ -49828,15 +49726,13 @@
   $$1 = $$1 | 0;
   var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
   block : {
-   $$2 = 5;
-   $$3 = $$2;
+   $$3 = 5;
    switch (0 | 0) {
    default:
     break block;
    };
   };
-  $$6 = $$3;
-  return $$6 | 0;
+  return $$3 | 0;
  }
  
  function $$35($$0, $$1) {
@@ -49845,29 +49741,25 @@
   var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
   block : {
    $$2 = $$0;
-   $$3 = 6;
-   $$4 = $$3;
+   $$4 = 6;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$6 = $$4;
-  return $$6 | 0;
+  return $$4 | 0;
  }
  
  function $$36() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 7;
-   $$1 = $$0;
+   $$1 = 7;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function f($$0, $$1, $$2) {
@@ -49882,127 +49774,109 @@
  function $$38() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 12;
-   $$1 = $$0;
+   $$1 = 12;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$39() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 13;
-   $$1 = $$0;
+   $$1 = 13;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$40() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 14;
-   $$1 = $$0;
+   $$1 = 14;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$41() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 20;
-   $$1 = $$0;
+   $$1 = 20;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$42() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 21;
-   $$1 = $$0;
+   $$1 = 21;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$43() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 22;
-   $$1 = $$0;
+   $$1 = 22;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$44() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 23;
-   $$1 = $$0;
+   $$1 = 23;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$45() {
   var $$0 = Math_fround(0), $$1 = 0, $$2 = 0, $$3 = 0;
   block : {
-   $$1 = 17;
-   $$2 = $$1;
+   $$2 = 17;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$3 = $$2;
-  return $$3 | 0;
+  return $$2 | 0;
  }
  
  function $$46() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 2;
-   $$1 = $$0;
+   $$1 = 2;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$47() {
@@ -50010,102 +49884,82 @@
   block : {
    $i64toi32_block_0 : {
     i64toi32_i32$0 = 0;
-    $$3 = 30;
-    $$4 = $$3;
-    $$5 = $$4;
-    $$6 = $$5;
+    $$6 = 30;
     switch (1 | 0) {
     default:
      break $i64toi32_block_0;
     };
    };
-   $$7 = $$6;
-   i64toi32_i32$1 = $$7;
-   $$8 = i64toi32_i32$0;
-   i64toi32_i32$2 = $$8;
-   $$9 = i64toi32_i32$1;
-   $$10 = $$9;
+   $$10 = $$6;
    break block;
   };
-  $$11 = $$10;
-  return $$11 | 0;
+  return $$10 | 0;
  }
  
  function $$48() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 30;
-   $$1 = $$0;
+   $$1 = 30;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$49() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 31;
-   $$1 = $$0;
+   $$1 = 31;
    switch (1 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$50() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 32;
-   $$1 = $$0;
+   $$1 = 32;
    switch (0 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$51() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 33;
-   $$1 = $$0;
+   $$1 = 33;
    switch (0 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$52() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 3;
-   $$1 = $$0;
+   $$1 = 3;
    switch (0 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$53() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 3;
-   $$1 = $$0;
+   $$1 = 3;
    switch (0 | 0) {
    case 0:
     break block;
@@ -50113,58 +49967,42 @@
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$54() {
   var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0;
   block : {
-   i64toi32_i32$0 = 0;
-   $$4 = 10;
-   $$5 = $$4;
    $i64toi32_block_0 : {
     i64toi32_i32$1 = 0;
-    $$6 = 45;
-    $$7 = $$6;
-    $$8 = $$7;
-    $$9 = $$8;
+    $$9 = 45;
     switch (0 | 0) {
     default:
      break $i64toi32_block_0;
     };
    };
-   $$10 = $$9;
-   i64toi32_i32$2 = $$10;
-   $$11 = i64toi32_i32$1;
-   i64toi32_i32$3 = $$11;
-   $$12 = i64toi32_i32$2;
-   $$13 = $$12;
+   $$13 = $$9;
    break block;
   };
-  $$14 = $$13;
-  return $$14 | 0;
+  return $$13 | 0;
  }
  
  function $$55() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 44;
-   $$1 = $$0;
+   $$1 = 44;
    switch (0 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$56() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 43;
-   $$1 = $$0;
+   $$1 = 43;
    switch (0 | 0) {
    case 0:
     break block;
@@ -50172,50 +50010,43 @@
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$57() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 42;
-   $$1 = $$0;
+   $$1 = 42;
    switch (0 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$58() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 41;
-   $$1 = $$0;
+   $$1 = 41;
    switch (0 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$59() {
   var $$0 = 0, $$1 = 0, $$2 = 0;
   block : {
-   $$0 = 40;
-   $$1 = $$0;
+   $$1 = 40;
    switch (0 | 0) {
    default:
     break block;
    };
   };
-  $$2 = $$1;
-  return $$2 | 0;
+  return $$1 | 0;
  }
  
  function $$60($$0) {
@@ -50224,12 +50055,11 @@
   block : {
    block11 : {
     block12 : {
-     $$1 = $$0;
      $$2 = 16;
      $$3 = $$2;
      $$4 = $$2;
      $$5 = $$2;
-     switch ($$1 | 0) {
+     switch ($$0 | 0) {
      case 0:
       break block12;
      case 1:
@@ -50238,16 +50068,11 @@
       break block;
      };
     };
-    $$6 = $$5;
-    $$7 = 2 + $$6 | 0;
-    $$4 = $$7;
+    $$4 = 2 + $$5 | 0;
    };
-   $$8 = $$4;
-   $$9 = 1 + $$8 | 0;
-   $$3 = $$9;
+   $$3 = 1 + $$4 | 0;
   };
-  $$10 = $$3;
-  return $$10 | 0;
+  return $$3 | 0;
  }
  
  function $$61($$0) {
@@ -50256,12 +50081,11 @@
   block : {
    block13 : {
     block14 : {
-     $$1 = $$0;
      $$2 = 8;
      $$3 = $$2;
      $$4 = $$2;
      $$5 = $$2;
-     switch ($$1 | 0) {
+     switch ($$0 | 0) {
      case 0:
       break block;
      case 1:
@@ -50270,15 +50094,11 @@
       break block14;
      };
     };
-    $$6 = $$5;
     $$4 = 16;
    };
-   $$7 = $$4;
-   $$8 = 1 + $$7 | 0;
-   $$3 = $$8;
+   $$3 = 1 + $$4 | 0;
   };
-  $$9 = $$3;
-  return $$9 | 0;
+  return $$3 | 0;
  }
  
  function $$62($$0) {
@@ -50287,12 +50107,11 @@
   block : {
    block15 : {
     block16 : {
-     $$1 = $$0;
      $$2 = 8;
      $$3 = $$2;
      $$4 = $$2;
      $$5 = $$2;
-     switch ($$1 | 0) {
+     switch ($$0 | 0) {
      case 0:
       break block16;
      case 1:
@@ -50301,15 +50120,11 @@
       break block;
      };
     };
-    $$6 = $$5;
     $$4 = 16;
    };
-   $$7 = $$4;
-   $$8 = 1 + $$7 | 0;
-   $$3 = $$8;
+   $$3 = 1 + $$4 | 0;
   };
-  $$9 = $$3;
-  return $$9 | 0;
+  return $$3 | 0;
  }
  
  function $$63($$0) {
@@ -50317,11 +50132,10 @@
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0;
   block : {
    block17 : {
-    $$1 = $$0;
     $$2 = 8;
     $$3 = $$2;
     $$4 = $$2;
-    switch ($$1 | 0) {
+    switch ($$0 | 0) {
     case 0:
      break block17;
     case 1:
@@ -50330,12 +50144,9 @@
      break block17;
     };
    };
-   $$5 = $$4;
-   $$6 = 1 + $$5 | 0;
-   $$3 = $$6;
+   $$3 = 1 + $$4 | 0;
   };
-  $$7 = $$3;
-  return $$7 | 0;
+  return $$3 | 0;
  }
  
  function $$64($$0) {
@@ -50344,12 +50155,11 @@
   block : {
    block18 : {
     block19 : {
-     $$1 = $$0;
      $$2 = 8;
      $$3 = $$2;
      $$4 = $$2;
      $$5 = $$2;
-     switch ($$1 | 0) {
+     switch ($$0 | 0) {
      case 0:
       break block19;
      case 1:
@@ -50358,15 +50168,11 @@
       break block;
      };
     };
-    $$6 = $$5;
     $$4 = 16;
    };
-   $$7 = $$4;
-   $$8 = 1 + $$7 | 0;
-   $$3 = $$8;
+   $$3 = 1 + $$4 | 0;
   };
-  $$9 = $$3;
-  return $$9 | 0;
+  return $$3 | 0;
  }
  
  function $$65($$0) {
@@ -50374,11 +50180,10 @@
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0;
   block : {
    block20 : {
-    $$1 = $$0;
     $$2 = 8;
     $$3 = $$2;
     $$4 = $$2;
-    switch ($$1 | 0) {
+    switch ($$0 | 0) {
     case 0:
      break block20;
     case 1:
@@ -50387,30 +50192,16 @@
      break block20;
     };
    };
-   $$6 = $$4;
-   $$7 = 1 + $$6 | 0;
-   $$3 = $$7;
+   $$3 = 1 + $$4 | 0;
   };
-  $$8 = $$3;
-  return $$8 | 0;
+  return $$3 | 0;
  }
  
  function __wasm_ctz_i32(x) {
   x = x | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
-  $$1 = x;
-  $$2 = ($$1 | 0) == (0 | 0);
-  if ($$2) $$9 = 32; else {
-   $$3 = x;
-   $$4 = x;
-   $$5 = $$4 - 1 | 0;
-   $$6 = $$3 ^ $$5 | 0;
-   $$7 = Math_clz32($$6);
-   $$8 = 31 - $$7 | 0;
-   $$9 = $$8;
-  }
-  $$10 = $$9;
-  return $$10 | 0;
+  if ((x | 0) == (0 | 0)) $$9 = 32; else $$9 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
+  return $$9 | 0;
  }
  
  function __wasm_popcnt_i32(x) {
@@ -50419,80 +50210,31 @@
   count = 0;
   b : {
    l : do {
-    $$2 = count;
-    $$3 = x;
-    $$4 = ($$3 | 0) == (0 | 0);
-    $$5 = $$2;
-    if ($$4) break b;
-    $$6 = $$5;
-    $$7 = x;
-    $$8 = x;
-    $$9 = $$8 - 1 | 0;
-    $$10 = $$7 & $$9 | 0;
-    x = $$10;
-    $$11 = count;
-    $$12 = $$11 + 1 | 0;
-    count = $$12;
+    $$5 = count;
+    if ((x | 0) == (0 | 0)) break b;
+    x = x & (x - 1 | 0) | 0;
+    count = count + 1 | 0;
     continue l;
     break l;
    } while (1);
   };
-  $$13 = $$5;
-  $$14 = $$13;
-  $$15 = $$14;
-  return $$15 | 0;
+  return $$5 | 0;
  }
  
  function __wasm_rotl_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 >>> $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 << $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 << $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 >>> $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_rotr_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 << $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 >>> $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 >>> $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 << $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  var FUNCTION_TABLE_iiii = [f];
diff --git a/test/empty_imported_table.2asm.js b/test/empty_imported_table.2asm.js
index 9dcdcad..240aa7e 100644
--- a/test/empty_imported_table.2asm.js
+++ b/test/empty_imported_table.2asm.js
@@ -16,19 +16,8 @@
  function __wasm_ctz_i32(x) {
   x = x | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
-  $$1 = x;
-  $$2 = ($$1 | 0) == (0 | 0);
-  if ($$2) $$9 = 32; else {
-   $$3 = x;
-   $$4 = x;
-   $$5 = $$4 - 1 | 0;
-   $$6 = $$3 ^ $$5 | 0;
-   $$7 = Math_clz32($$6);
-   $$8 = 31 - $$7 | 0;
-   $$9 = $$8;
-  }
-  $$10 = $$9;
-  return $$10 | 0;
+  if ((x | 0) == (0 | 0)) $$9 = 32; else $$9 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
+  return $$9 | 0;
  }
  
  function __wasm_popcnt_i32(x) {
@@ -37,80 +26,31 @@
   count = 0;
   b : {
    l : do {
-    $$2 = count;
-    $$3 = x;
-    $$4 = ($$3 | 0) == (0 | 0);
-    $$5 = $$2;
-    if ($$4) break b;
-    $$6 = $$5;
-    $$7 = x;
-    $$8 = x;
-    $$9 = $$8 - 1 | 0;
-    $$10 = $$7 & $$9 | 0;
-    x = $$10;
-    $$11 = count;
-    $$12 = $$11 + 1 | 0;
-    count = $$12;
+    $$5 = count;
+    if ((x | 0) == (0 | 0)) break b;
+    x = x & (x - 1 | 0) | 0;
+    count = count + 1 | 0;
     continue l;
     break l;
    } while (1);
   };
-  $$13 = $$5;
-  $$14 = $$13;
-  $$15 = $$14;
-  return $$15 | 0;
+  return $$5 | 0;
  }
  
  function __wasm_rotl_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 >>> $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 << $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 << $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 >>> $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_rotr_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 << $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 >>> $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 >>> $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 << $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  return {
diff --git a/test/empty_table.2asm.js b/test/empty_table.2asm.js
index 3c68223..db1d067 100644
--- a/test/empty_table.2asm.js
+++ b/test/empty_table.2asm.js
@@ -15,19 +15,8 @@
  function __wasm_ctz_i32(x) {
   x = x | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
-  $$1 = x;
-  $$2 = ($$1 | 0) == (0 | 0);
-  if ($$2) $$9 = 32; else {
-   $$3 = x;
-   $$4 = x;
-   $$5 = $$4 - 1 | 0;
-   $$6 = $$3 ^ $$5 | 0;
-   $$7 = Math_clz32($$6);
-   $$8 = 31 - $$7 | 0;
-   $$9 = $$8;
-  }
-  $$10 = $$9;
-  return $$10 | 0;
+  if ((x | 0) == (0 | 0)) $$9 = 32; else $$9 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
+  return $$9 | 0;
  }
  
  function __wasm_popcnt_i32(x) {
@@ -36,80 +25,31 @@
   count = 0;
   b : {
    l : do {
-    $$2 = count;
-    $$3 = x;
-    $$4 = ($$3 | 0) == (0 | 0);
-    $$5 = $$2;
-    if ($$4) break b;
-    $$6 = $$5;
-    $$7 = x;
-    $$8 = x;
-    $$9 = $$8 - 1 | 0;
-    $$10 = $$7 & $$9 | 0;
-    x = $$10;
-    $$11 = count;
-    $$12 = $$11 + 1 | 0;
-    count = $$12;
+    $$5 = count;
+    if ((x | 0) == (0 | 0)) break b;
+    x = x & (x - 1 | 0) | 0;
+    count = count + 1 | 0;
     continue l;
     break l;
    } while (1);
   };
-  $$13 = $$5;
-  $$14 = $$13;
-  $$15 = $$14;
-  return $$15 | 0;
+  return $$5 | 0;
  }
  
  function __wasm_rotl_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 >>> $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 << $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 << $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 >>> $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_rotr_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 << $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 >>> $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 >>> $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 << $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  return {
diff --git a/test/forward.2asm.js b/test/forward.2asm.js
index 479f560..00a15d0 100644
--- a/test/forward.2asm.js
+++ b/test/forward.2asm.js
@@ -15,49 +15,22 @@
  function even(n) {
   n = n | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0;
-  $$1 = n;
-  $$2 = ($$1 | 0) == (0 | 0);
-  if ($$2) $$6 = 1; else {
-   $$3 = n;
-   $$4 = $$3 - 1 | 0;
-   $$5 = odd($$4 | 0) | 0;
-   $$6 = $$5;
-  }
-  $$7 = $$6;
-  return $$7 | 0;
+  if ((n | 0) == (0 | 0)) $$6 = 1; else $$6 = odd(n - 1 | 0 | 0) | 0;
+  return $$6 | 0;
  }
  
  function odd(n) {
   n = n | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0;
-  $$1 = n;
-  $$2 = ($$1 | 0) == (0 | 0);
-  if ($$2) $$6 = 0; else {
-   $$3 = n;
-   $$4 = $$3 - 1 | 0;
-   $$5 = even($$4 | 0) | 0;
-   $$6 = $$5;
-  }
-  $$7 = $$6;
-  return $$7 | 0;
+  if ((n | 0) == (0 | 0)) $$6 = 0; else $$6 = even(n - 1 | 0 | 0) | 0;
+  return $$6 | 0;
  }
  
  function __wasm_ctz_i32(x) {
   x = x | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
-  $$1 = x;
-  $$2 = ($$1 | 0) == (0 | 0);
-  if ($$2) $$9 = 32; else {
-   $$3 = x;
-   $$4 = x;
-   $$5 = $$4 - 1 | 0;
-   $$6 = $$3 ^ $$5 | 0;
-   $$7 = Math_clz32($$6);
-   $$8 = 31 - $$7 | 0;
-   $$9 = $$8;
-  }
-  $$10 = $$9;
-  return $$10 | 0;
+  if ((x | 0) == (0 | 0)) $$9 = 32; else $$9 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
+  return $$9 | 0;
  }
  
  function __wasm_popcnt_i32(x) {
@@ -66,80 +39,31 @@
   count = 0;
   b : {
    l : do {
-    $$2 = count;
-    $$3 = x;
-    $$4 = ($$3 | 0) == (0 | 0);
-    $$5 = $$2;
-    if ($$4) break b;
-    $$6 = $$5;
-    $$7 = x;
-    $$8 = x;
-    $$9 = $$8 - 1 | 0;
-    $$10 = $$7 & $$9 | 0;
-    x = $$10;
-    $$11 = count;
-    $$12 = $$11 + 1 | 0;
-    count = $$12;
+    $$5 = count;
+    if ((x | 0) == (0 | 0)) break b;
+    x = x & (x - 1 | 0) | 0;
+    count = count + 1 | 0;
     continue l;
     break l;
    } while (1);
   };
-  $$13 = $$5;
-  $$14 = $$13;
-  $$15 = $$14;
-  return $$15 | 0;
+  return $$5 | 0;
  }
  
  function __wasm_rotl_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 >>> $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 << $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 << $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 >>> $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_rotr_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 << $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 >>> $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 >>> $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 << $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  return {
diff --git a/test/hello_world.2asm.js b/test/hello_world.2asm.js
index b12c6ed..3302af0 100644
--- a/test/hello_world.2asm.js
+++ b/test/hello_world.2asm.js
@@ -15,29 +15,16 @@
  function add(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 + $$3 | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x + y | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_ctz_i32(x) {
   x = x | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
-  $$1 = x;
-  $$2 = ($$1 | 0) == (0 | 0);
-  if ($$2) $$9 = 32; else {
-   $$3 = x;
-   $$4 = x;
-   $$5 = $$4 - 1 | 0;
-   $$6 = $$3 ^ $$5 | 0;
-   $$7 = Math_clz32($$6);
-   $$8 = 31 - $$7 | 0;
-   $$9 = $$8;
-  }
-  $$10 = $$9;
-  return $$10 | 0;
+  if ((x | 0) == (0 | 0)) $$9 = 32; else $$9 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
+  return $$9 | 0;
  }
  
  function __wasm_popcnt_i32(x) {
@@ -46,80 +33,31 @@
   count = 0;
   b : {
    l : do {
-    $$2 = count;
-    $$3 = x;
-    $$4 = ($$3 | 0) == (0 | 0);
-    $$5 = $$2;
-    if ($$4) break b;
-    $$6 = $$5;
-    $$7 = x;
-    $$8 = x;
-    $$9 = $$8 - 1 | 0;
-    $$10 = $$7 & $$9 | 0;
-    x = $$10;
-    $$11 = count;
-    $$12 = $$11 + 1 | 0;
-    count = $$12;
+    $$5 = count;
+    if ((x | 0) == (0 | 0)) break b;
+    x = x & (x - 1 | 0) | 0;
+    count = count + 1 | 0;
     continue l;
     break l;
    } while (1);
   };
-  $$13 = $$5;
-  $$14 = $$13;
-  $$15 = $$14;
-  return $$15 | 0;
+  return $$5 | 0;
  }
  
  function __wasm_rotl_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 >>> $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 << $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 << $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 >>> $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_rotr_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 << $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 >>> $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 >>> $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 << $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  return {
diff --git a/test/i32.2asm.js b/test/i32.2asm.js
index 4e3532a..83bbb5a 100644
--- a/test/i32.2asm.js
+++ b/test/i32.2asm.js
@@ -15,301 +15,236 @@
  function $$0(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 + $$3 | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x + y | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$1(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 - $$3 | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x - y | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$2(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = Math_imul($$2, $$3);
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return Math_imul(x, y) | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$3(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 | 0) / ($$3 | 0) | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x | 0) / (y | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$4(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 >>> 0) / ($$3 >>> 0) | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x >>> 0) / (y >>> 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$5(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 | 0) % ($$3 | 0) | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x | 0) % (y | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$6(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 >>> 0) % ($$3 >>> 0) | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x >>> 0) % (y >>> 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$7(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 & $$3 | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x & y | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$8(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 | $$3 | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x | y | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$9(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 ^ $$3 | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x ^ y | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$10(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 << $$3 | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x << y | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$11(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 >> $$3 | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x >> y | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$12(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 >>> $$3 | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x >>> y | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$13(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = __wasm_rotl_i32($$2, $$3) | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return __wasm_rotl_i32(x, y) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$14(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = __wasm_rotr_i32($$2, $$3) | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return __wasm_rotr_i32(x, y) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$15(x) {
   x = x | 0;
-  var $$1 = 0, $$2 = 0;
-  $$1 = x;
-  $$2 = Math_clz32($$1);
-  return $$2 | 0;
+  var $$1 = 0, $$2 = 0, wasm2asm_i32$0 = 0;
+  return Math_clz32(x) | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$16(x) {
   x = x | 0;
-  var $$1 = 0, $$2 = 0;
-  $$1 = x;
-  $$2 = __wasm_ctz_i32($$1) | 0;
-  return $$2 | 0;
+  var $$1 = 0, $$2 = 0, wasm2asm_i32$0 = 0;
+  return __wasm_ctz_i32(x) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$17(x) {
   x = x | 0;
-  var $$1 = 0, $$2 = 0;
-  $$1 = x;
-  $$2 = __wasm_popcnt_i32($$1) | 0;
-  return $$2 | 0;
+  var $$1 = 0, $$2 = 0, wasm2asm_i32$0 = 0;
+  return __wasm_popcnt_i32(x) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$18(x) {
   x = x | 0;
-  var $$1 = 0, $$2 = 0;
-  $$1 = x;
-  $$2 = ($$1 | 0) == (0 | 0);
-  return $$2 | 0;
+  var $$1 = 0, $$2 = 0, wasm2asm_i32$0 = 0;
+  return (x | 0) == (0 | 0) | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$19(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 | 0) == ($$3 | 0);
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x | 0) == (y | 0) | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$20(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 | 0) != ($$3 | 0);
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x | 0) != (y | 0) | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$21(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 | 0) < ($$3 | 0);
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x | 0) < (y | 0) | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$22(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 >>> 0 < $$3 >>> 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x >>> 0 < y >>> 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$23(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 | 0) <= ($$3 | 0);
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x | 0) <= (y | 0) | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$24(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 >>> 0 <= $$3 >>> 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x >>> 0 <= y >>> 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$25(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 | 0) > ($$3 | 0);
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x | 0) > (y | 0) | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$26(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 >>> 0 > $$3 >>> 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x >>> 0 > y >>> 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$27(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 | 0) >= ($$3 | 0);
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x | 0) >= (y | 0) | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$28(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 >>> 0 >= $$3 >>> 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x >>> 0 >= y >>> 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_ctz_i32(x) {
   x = x | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
-  $$1 = x;
-  $$2 = ($$1 | 0) == (0 | 0);
-  if ($$2) $$9 = 32; else {
-   $$3 = x;
-   $$4 = x;
-   $$5 = $$4 - 1 | 0;
-   $$6 = $$3 ^ $$5 | 0;
-   $$7 = Math_clz32($$6);
-   $$8 = 31 - $$7 | 0;
-   $$9 = $$8;
-  }
-  $$10 = $$9;
-  return $$10 | 0;
+  if ((x | 0) == (0 | 0)) $$9 = 32; else $$9 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
+  return $$9 | 0;
  }
  
  function __wasm_popcnt_i32(x) {
@@ -318,80 +253,31 @@
   count = 0;
   b : {
    l : do {
-    $$2 = count;
-    $$3 = x;
-    $$4 = ($$3 | 0) == (0 | 0);
-    $$5 = $$2;
-    if ($$4) break b;
-    $$6 = $$5;
-    $$7 = x;
-    $$8 = x;
-    $$9 = $$8 - 1 | 0;
-    $$10 = $$7 & $$9 | 0;
-    x = $$10;
-    $$11 = count;
-    $$12 = $$11 + 1 | 0;
-    count = $$12;
+    $$5 = count;
+    if ((x | 0) == (0 | 0)) break b;
+    x = x & (x - 1 | 0) | 0;
+    count = count + 1 | 0;
     continue l;
     break l;
    } while (1);
   };
-  $$13 = $$5;
-  $$14 = $$13;
-  $$15 = $$14;
-  return $$15 | 0;
+  return $$5 | 0;
  }
  
  function __wasm_rotl_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 >>> $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 << $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 << $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 >>> $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_rotr_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 << $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 >>> $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 >>> $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 << $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  return {
diff --git a/test/wasm2asm.asserts.js b/test/wasm2asm.asserts.js
index c9b2888..a9f5c86 100644
--- a/test/wasm2asm.asserts.js
+++ b/test/wasm2asm.asserts.js
@@ -19,39 +19,24 @@
  function $$1(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 + $$3 | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x + y | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$2(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 | 0) / ($$3 | 0) | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x | 0) / (y | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_ctz_i32(x) {
   x = x | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
-  $$1 = x;
-  $$2 = ($$1 | 0) == (0 | 0);
-  if ($$2) $$9 = 32; else {
-   $$3 = x;
-   $$4 = x;
-   $$5 = $$4 - 1 | 0;
-   $$6 = $$3 ^ $$5 | 0;
-   $$7 = Math_clz32($$6);
-   $$8 = 31 - $$7 | 0;
-   $$9 = $$8;
-  }
-  $$10 = $$9;
-  return $$10 | 0;
+  if ((x | 0) == (0 | 0)) $$9 = 32; else $$9 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
+  return $$9 | 0;
  }
  
  function __wasm_popcnt_i32(x) {
@@ -60,80 +45,31 @@
   count = 0;
   b : {
    l : do {
-    $$2 = count;
-    $$3 = x;
-    $$4 = ($$3 | 0) == (0 | 0);
-    $$5 = $$2;
-    if ($$4) break b;
-    $$6 = $$5;
-    $$7 = x;
-    $$8 = x;
-    $$9 = $$8 - 1 | 0;
-    $$10 = $$7 & $$9 | 0;
-    x = $$10;
-    $$11 = count;
-    $$12 = $$11 + 1 | 0;
-    count = $$12;
+    $$5 = count;
+    if ((x | 0) == (0 | 0)) break b;
+    x = x & (x - 1 | 0) | 0;
+    count = count + 1 | 0;
     continue l;
     break l;
    } while (1);
   };
-  $$13 = $$5;
-  $$14 = $$13;
-  $$15 = $$14;
-  return $$15 | 0;
+  return $$5 | 0;
  }
  
  function __wasm_rotl_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 >>> $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 << $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 << $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 >>> $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_rotr_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 << $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 >>> $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 >>> $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 << $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  return {
diff --git a/test/wasm2asm.traps.js b/test/wasm2asm.traps.js
index 2f4ddb0..5282434 100644
--- a/test/wasm2asm.traps.js
+++ b/test/wasm2asm.traps.js
@@ -19,39 +19,24 @@
  function $$1(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = $$2 + $$3 | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return x + y | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function $$2(x, y) {
   x = x | 0;
   y = y | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0;
-  $$2 = x;
-  $$3 = y;
-  $$4 = ($$2 | 0) / ($$3 | 0) | 0;
-  return $$4 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, wasm2asm_i32$0 = 0;
+  return (x | 0) / (y | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_ctz_i32(x) {
   x = x | 0;
   var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
-  $$1 = x;
-  $$2 = ($$1 | 0) == (0 | 0);
-  if ($$2) $$9 = 32; else {
-   $$3 = x;
-   $$4 = x;
-   $$5 = $$4 - 1 | 0;
-   $$6 = $$3 ^ $$5 | 0;
-   $$7 = Math_clz32($$6);
-   $$8 = 31 - $$7 | 0;
-   $$9 = $$8;
-  }
-  $$10 = $$9;
-  return $$10 | 0;
+  if ((x | 0) == (0 | 0)) $$9 = 32; else $$9 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
+  return $$9 | 0;
  }
  
  function __wasm_popcnt_i32(x) {
@@ -60,80 +45,31 @@
   count = 0;
   b : {
    l : do {
-    $$2 = count;
-    $$3 = x;
-    $$4 = ($$3 | 0) == (0 | 0);
-    $$5 = $$2;
-    if ($$4) break b;
-    $$6 = $$5;
-    $$7 = x;
-    $$8 = x;
-    $$9 = $$8 - 1 | 0;
-    $$10 = $$7 & $$9 | 0;
-    x = $$10;
-    $$11 = count;
-    $$12 = $$11 + 1 | 0;
-    count = $$12;
+    $$5 = count;
+    if ((x | 0) == (0 | 0)) break b;
+    x = x & (x - 1 | 0) | 0;
+    count = count + 1 | 0;
     continue l;
     break l;
    } while (1);
   };
-  $$13 = $$5;
-  $$14 = $$13;
-  $$15 = $$14;
-  return $$15 | 0;
+  return $$5 | 0;
  }
  
  function __wasm_rotl_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 >>> $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 << $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 << $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 >>> $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  function __wasm_rotr_i32(x, k) {
   x = x | 0;
   k = k | 0;
-  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
-  $$2 = k;
-  $$3 = $$2 & 31 | 0;
-  $$4 = 4294967295 << $$3 | 0;
-  $$5 = x;
-  $$6 = $$4 & $$5 | 0;
-  $$7 = k;
-  $$8 = $$7 & 31 | 0;
-  $$9 = $$6 >>> $$8 | 0;
-  $$10 = k;
-  $$11 = $$10 & 31 | 0;
-  $$12 = 32 - $$11 | 0;
-  $$13 = 4294967295 >>> $$12 | 0;
-  $$14 = x;
-  $$15 = $$13 & $$14 | 0;
-  $$16 = k;
-  $$17 = $$16 & 31 | 0;
-  $$18 = 32 - $$17 | 0;
-  $$19 = $$15 << $$18 | 0;
-  $$20 = $$9 | $$19 | 0;
-  return $$20 | 0;
+  var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, wasm2asm_i32$0 = 0;
+  return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+  return wasm2asm_i32$0 | 0;
  }
  
  return {