(module
 (type $i64_i64_=>_i64 (func (param i64 i64) (result i64)))
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
 (type $f64_=>_f64 (func (param f64) (result f64)))
 (type $f32_=>_f32 (func (param f32) (result f32)))
 (type $i32_i32_i32_=>_none (func (param i32 i32 i32)))
 (type $f64_f64_=>_f64 (func (param f64 f64) (result f64)))
 (type $f32_f32_=>_f32 (func (param f32 f32) (result f32)))
 (type $i32_i32_=>_none (func (param i32 i32)))
 (type $none_=>_f32 (func (result f32)))
 (type $f32_=>_none (func (param f32)))
 (type $none_=>_f64 (func (result f64)))
 (type $f64_=>_none (func (param f64)))
 (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32)))
 (type $i32_=>_none (func (param i32)))
 (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32)))
 (type $i32_i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32 i32) (result i32)))
 (type $none_=>_i32 (func (result i32)))
 (type $none_=>_none (func))
 (import "env" "wasm2js_scratch_load_i32" (func $wasm2js_scratch_load_i32 (param i32) (result i32)))
 (import "env" "wasm2js_scratch_store_i32" (func $wasm2js_scratch_store_i32 (param i32 i32)))
 (import "env" "wasm2js_scratch_load_f32" (func $wasm2js_scratch_load_f32 (result f32)))
 (import "env" "wasm2js_scratch_store_f32" (func $wasm2js_scratch_store_f32 (param f32)))
 (import "env" "wasm2js_scratch_load_f64" (func $wasm2js_scratch_load_f64 (result f64)))
 (import "env" "wasm2js_scratch_store_f64" (func $wasm2js_scratch_store_f64 (param f64)))
 (import "env" "wasm2js_memory_init" (func $wasm2js_memory_init (param i32 i32 i32 i32)))
 (import "env" "wasm2js_memory_fill" (func $wasm2js_memory_fill (param i32 i32 i32)))
 (import "env" "wasm2js_memory_copy" (func $wasm2js_memory_copy (param i32 i32 i32)))
 (import "env" "wasm2js_data_drop" (func $wasm2js_data_drop (param i32)))
 (import "env" "wasm2js_atomic_wait_i32" (func $wasm2js_atomic_wait_i32 (param i32 i32 i32 i32 i32) (result i32)))
 (import "env" "wasm2js_atomic_rmw_i64" (func $wasm2js_atomic_rmw_i64 (param i32 i32 i32 i32 i32 i32) (result i32)))
 (import "env" "wasm2js_get_stashed_bits" (func $wasm2js_get_stashed_bits (result i32)))
 (import "env" "wasm2js_trap" (func $wasm2js_trap))
 (global $__wasm-intrinsics-temp-i64 (mut i64) (i64.const 0))
 (memory $0 1)
 (func $copysign64 (param $0 f64) (param $1 f64) (result f64)
  (f64.reinterpret_i64
   (i64.or
    (i64.and
     (i64.reinterpret_f64
      (local.get $0)
     )
     (i64.const 9223372036854775807)
    )
    (i64.and
     (i64.reinterpret_f64
      (local.get $1)
     )
     (i64.const -9223372036854775808)
    )
   )
  )
 )
 (func $copysign32 (param $0 f32) (param $1 f32) (result f32)
  (f32.reinterpret_i32
   (i32.or
    (i32.and
     (i32.reinterpret_f32
      (local.get $0)
     )
     (i32.const 2147483647)
    )
    (i32.and
     (i32.reinterpret_f32
      (local.get $1)
     )
     (i32.const -2147483648)
    )
   )
  )
 )
 (func $rotl32 (param $0 i32) (param $1 i32) (result i32)
  (call $__wasm_rotl_i32
   (local.get $0)
   (local.get $1)
  )
 )
 (func $rotr32 (param $0 i32) (param $1 i32) (result i32)
  (call $__wasm_rotr_i32
   (local.get $0)
   (local.get $1)
  )
 )
 (func $rotl64 (param $0 i64) (param $1 i64) (result i64)
  (call $__wasm_rotl_i64
   (local.get $0)
   (local.get $1)
  )
 )
 (func $rotr64 (param $0 i64) (param $1 i64) (result i64)
  (call $__wasm_rotr_i64
   (local.get $0)
   (local.get $1)
  )
 )
 (func $nearest64 (param $0 f64) (result f64)
  (call $__wasm_nearest_f64
   (local.get $0)
  )
 )
 (func $nearest32 (param $0 f32) (result f32)
  (call $__wasm_nearest_f32
   (local.get $0)
  )
 )
 (func $trunc64 (param $0 f64) (result f64)
  (f64.trunc
   (local.get $0)
  )
 )
 (func $trunc32 (param $0 f32) (result f32)
  (f32.trunc
   (local.get $0)
  )
 )
 (func $popcnt32 (param $0 i32) (result i32)
  (call $__wasm_popcnt_i32
   (local.get $0)
  )
 )
 (func $ctz32 (param $0 i32) (result i32)
  (call $__wasm_ctz_i32
   (local.get $0)
  )
 )
 (func $i64_sdiv (param $0 i64) (param $1 i64) (result i64)
  (call $__wasm_i64_sdiv
   (local.get $0)
   (local.get $1)
  )
 )
 (func $i64_udiv (param $0 i64) (param $1 i64) (result i64)
  (call $__wasm_i64_udiv
   (local.get $0)
   (local.get $1)
  )
 )
 (func $i64_srem (param $0 i64) (param $1 i64) (result i64)
  (call $__wasm_i64_srem
   (local.get $0)
   (local.get $1)
  )
 )
 (func $i64_urem (param $0 i64) (param $1 i64) (result i64)
  (call $__wasm_i64_urem
   (local.get $0)
   (local.get $1)
  )
 )
 (func $i64_mul (param $0 i64) (param $1 i64) (result i64)
  (call $__wasm_i64_mul
   (local.get $0)
   (local.get $1)
  )
 )
 (func $_ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE (param $var$0 i64) (param $var$1 i64) (result i64)
  (local $var$2 i32)
  (local $var$3 i32)
  (local $var$4 i32)
  (local $var$5 i32)
  (local $var$6 i32)
  (i64.or
   (i64.shl
    (i64.extend_i32_u
     (i32.add
      (i32.add
       (i32.add
        (i32.add
         (i32.mul
          (local.tee $var$4
           (i32.shr_u
            (local.tee $var$2
             (i32.wrap_i64
              (local.get $var$1)
             )
            )
            (i32.const 16)
           )
          )
          (local.tee $var$5
           (i32.shr_u
            (local.tee $var$3
             (i32.wrap_i64
              (local.get $var$0)
             )
            )
            (i32.const 16)
           )
          )
         )
         (i32.mul
          (local.get $var$2)
          (i32.wrap_i64
           (i64.shr_u
            (local.get $var$0)
            (i64.const 32)
           )
          )
         )
        )
        (i32.mul
         (i32.wrap_i64
          (i64.shr_u
           (local.get $var$1)
           (i64.const 32)
          )
         )
         (local.get $var$3)
        )
       )
       (i32.shr_u
        (local.tee $var$2
         (i32.add
          (i32.shr_u
           (local.tee $var$6
            (i32.mul
             (local.tee $var$2
              (i32.and
               (local.get $var$2)
               (i32.const 65535)
              )
             )
             (local.tee $var$3
              (i32.and
               (local.get $var$3)
               (i32.const 65535)
              )
             )
            )
           )
           (i32.const 16)
          )
          (i32.mul
           (local.get $var$2)
           (local.get $var$5)
          )
         )
        )
        (i32.const 16)
       )
      )
      (i32.shr_u
       (local.tee $var$2
        (i32.add
         (i32.and
          (local.get $var$2)
          (i32.const 65535)
         )
         (i32.mul
          (local.get $var$4)
          (local.get $var$3)
         )
        )
       )
       (i32.const 16)
      )
     )
    )
    (i64.const 32)
   )
   (i64.extend_i32_u
    (i32.or
     (i32.shl
      (local.get $var$2)
      (i32.const 16)
     )
     (i32.and
      (local.get $var$6)
      (i32.const 65535)
     )
    )
   )
  )
 )
 (func $_ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E (param $var$0 i64) (param $var$1 i64) (result i64)
  (local $var$2 i64)
  (i64.sub
   (i64.xor
    (call $__wasm_i64_udiv
     (i64.sub
      (i64.xor
       (local.tee $var$2
        (i64.shr_s
         (local.get $var$0)
         (i64.const 63)
        )
       )
       (local.get $var$0)
      )
      (local.get $var$2)
     )
     (i64.sub
      (i64.xor
       (local.tee $var$2
        (i64.shr_s
         (local.get $var$1)
         (i64.const 63)
        )
       )
       (local.get $var$1)
      )
      (local.get $var$2)
     )
    )
    (local.tee $var$0
     (i64.shr_s
      (i64.xor
       (local.get $var$1)
       (local.get $var$0)
      )
      (i64.const 63)
     )
    )
   )
   (local.get $var$0)
  )
 )
 (func $_ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E (param $var$0 i64) (param $var$1 i64) (result i64)
  (local $var$2 i64)
  (i64.sub
   (i64.xor
    (call $__wasm_i64_urem
     (i64.sub
      (i64.xor
       (local.tee $var$2
        (i64.shr_s
         (local.get $var$0)
         (i64.const 63)
        )
       )
       (local.get $var$0)
      )
      (local.get $var$2)
     )
     (i64.sub
      (i64.xor
       (local.tee $var$0
        (i64.shr_s
         (local.get $var$1)
         (i64.const 63)
        )
       )
       (local.get $var$1)
      )
      (local.get $var$0)
     )
    )
    (local.get $var$2)
   )
   (local.get $var$2)
  )
 )
 (func $_ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E (param $var$0 i64) (param $var$1 i64) (result i64)
  (local $var$2 i32)
  (local $var$3 i32)
  (local $var$4 i32)
  (local $var$5 i64)
  (local $var$6 i64)
  (local $var$7 i64)
  (local $var$8 i64)
  (block $label$1
   (block $label$2
    (block $label$3
     (block $label$4
      (block $label$5
       (block $label$6
        (block $label$7
         (block $label$8
          (block $label$9
           (block $label$10
            (block $label$11
             (if
              (local.tee $var$2
               (i32.wrap_i64
                (i64.shr_u
                 (local.get $var$0)
                 (i64.const 32)
                )
               )
              )
              (block
               (br_if $label$11
                (i32.eqz
                 (local.tee $var$3
                  (i32.wrap_i64
                   (local.get $var$1)
                  )
                 )
                )
               )
               (br_if $label$9
                (i32.eqz
                 (local.tee $var$4
                  (i32.wrap_i64
                   (i64.shr_u
                    (local.get $var$1)
                    (i64.const 32)
                   )
                  )
                 )
                )
               )
               (br_if $label$8
                (i32.le_u
                 (local.tee $var$2
                  (i32.sub
                   (i32.clz
                    (local.get $var$4)
                   )
                   (i32.clz
                    (local.get $var$2)
                   )
                  )
                 )
                 (i32.const 31)
                )
               )
               (br $label$2)
              )
             )
             (br_if $label$2
              (i64.ge_u
               (local.get $var$1)
               (i64.const 4294967296)
              )
             )
             (global.set $__wasm-intrinsics-temp-i64
              (i64.extend_i32_u
               (i32.sub
                (local.tee $var$2
                 (i32.wrap_i64
                  (local.get $var$0)
                 )
                )
                (i32.mul
                 (local.tee $var$2
                  (i32.div_u
                   (local.get $var$2)
                   (local.tee $var$3
                    (i32.wrap_i64
                     (local.get $var$1)
                    )
                   )
                  )
                 )
                 (local.get $var$3)
                )
               )
              )
             )
             (return
              (i64.extend_i32_u
               (local.get $var$2)
              )
             )
            )
            (local.set $var$3
             (i32.wrap_i64
              (i64.shr_u
               (local.get $var$1)
               (i64.const 32)
              )
             )
            )
            (br_if $label$7
             (i32.eqz
              (i32.wrap_i64
               (local.get $var$0)
              )
             )
            )
            (br_if $label$6
             (i32.eqz
              (local.get $var$3)
             )
            )
            (br_if $label$6
             (i32.and
              (local.tee $var$4
               (i32.add
                (local.get $var$3)
                (i32.const -1)
               )
              )
              (local.get $var$3)
             )
            )
            (global.set $__wasm-intrinsics-temp-i64
             (i64.or
              (i64.shl
               (i64.extend_i32_u
                (i32.and
                 (local.get $var$4)
                 (local.get $var$2)
                )
               )
               (i64.const 32)
              )
              (i64.and
               (local.get $var$0)
               (i64.const 4294967295)
              )
             )
            )
            (return
             (i64.extend_i32_u
              (i32.shr_u
               (local.get $var$2)
               (i32.and
                (call $__wasm_ctz_i32
                 (local.get $var$3)
                )
                (i32.const 31)
               )
              )
             )
            )
           )
           (unreachable)
          )
          (br_if $label$5
           (i32.eqz
            (i32.and
             (local.tee $var$4
              (i32.add
               (local.get $var$3)
               (i32.const -1)
              )
             )
             (local.get $var$3)
            )
           )
          )
          (local.set $var$3
           (i32.sub
            (i32.const 0)
            (local.tee $var$2
             (i32.sub
              (i32.add
               (i32.clz
                (local.get $var$3)
               )
               (i32.const 33)
              )
              (i32.clz
               (local.get $var$2)
              )
             )
            )
           )
          )
          (br $label$3)
         )
         (local.set $var$3
          (i32.sub
           (i32.const 63)
           (local.get $var$2)
          )
         )
         (local.set $var$2
          (i32.add
           (local.get $var$2)
           (i32.const 1)
          )
         )
         (br $label$3)
        )
        (global.set $__wasm-intrinsics-temp-i64
         (i64.shl
          (i64.extend_i32_u
           (i32.sub
            (local.get $var$2)
            (i32.mul
             (local.tee $var$4
              (i32.div_u
               (local.get $var$2)
               (local.get $var$3)
              )
             )
             (local.get $var$3)
            )
           )
          )
          (i64.const 32)
         )
        )
        (return
         (i64.extend_i32_u
          (local.get $var$4)
         )
        )
       )
       (br_if $label$4
        (i32.lt_u
         (local.tee $var$2
          (i32.sub
           (i32.clz
            (local.get $var$3)
           )
           (i32.clz
            (local.get $var$2)
           )
          )
         )
         (i32.const 31)
        )
       )
       (br $label$2)
      )
      (global.set $__wasm-intrinsics-temp-i64
       (i64.extend_i32_u
        (i32.and
         (local.get $var$4)
         (i32.wrap_i64
          (local.get $var$0)
         )
        )
       )
      )
      (br_if $label$1
       (i32.eq
        (local.get $var$3)
        (i32.const 1)
       )
      )
      (return
       (i64.shr_u
        (local.get $var$0)
        (i64.extend_i32_u
         (call $__wasm_ctz_i32
          (local.get $var$3)
         )
        )
       )
      )
     )
     (local.set $var$3
      (i32.sub
       (i32.const 63)
       (local.get $var$2)
      )
     )
     (local.set $var$2
      (i32.add
       (local.get $var$2)
       (i32.const 1)
      )
     )
    )
    (local.set $var$5
     (i64.shr_u
      (local.get $var$0)
      (i64.extend_i32_u
       (i32.and
        (local.get $var$2)
        (i32.const 63)
       )
      )
     )
    )
    (local.set $var$0
     (i64.shl
      (local.get $var$0)
      (i64.extend_i32_u
       (i32.and
        (local.get $var$3)
        (i32.const 63)
       )
      )
     )
    )
    (block $label$13
     (if
      (local.get $var$2)
      (block
       (local.set $var$8
        (i64.add
         (local.get $var$1)
         (i64.const -1)
        )
       )
       (loop $label$15
        (local.set $var$5
         (i64.sub
          (local.tee $var$5
           (i64.or
            (i64.shl
             (local.get $var$5)
             (i64.const 1)
            )
            (i64.shr_u
             (local.get $var$0)
             (i64.const 63)
            )
           )
          )
          (i64.and
           (local.tee $var$6
            (i64.shr_s
             (i64.sub
              (local.get $var$8)
              (local.get $var$5)
             )
             (i64.const 63)
            )
           )
           (local.get $var$1)
          )
         )
        )
        (local.set $var$0
         (i64.or
          (i64.shl
           (local.get $var$0)
           (i64.const 1)
          )
          (local.get $var$7)
         )
        )
        (local.set $var$7
         (local.tee $var$6
          (i64.and
           (local.get $var$6)
           (i64.const 1)
          )
         )
        )
        (br_if $label$15
         (local.tee $var$2
          (i32.add
           (local.get $var$2)
           (i32.const -1)
          )
         )
        )
       )
       (br $label$13)
      )
     )
    )
    (global.set $__wasm-intrinsics-temp-i64
     (local.get $var$5)
    )
    (return
     (i64.or
      (i64.shl
       (local.get $var$0)
       (i64.const 1)
      )
      (local.get $var$6)
     )
    )
   )
   (global.set $__wasm-intrinsics-temp-i64
    (local.get $var$0)
   )
   (local.set $var$0
    (i64.const 0)
   )
  )
  (local.get $var$0)
 )
 (func $__wasm_ctz_i32 (param $var$0 i32) (result i32)
  (if
   (local.get $var$0)
   (return
    (i32.sub
     (i32.const 31)
     (i32.clz
      (i32.xor
       (i32.add
        (local.get $var$0)
        (i32.const -1)
       )
       (local.get $var$0)
      )
     )
    )
   )
  )
  (i32.const 32)
 )
 (func $__wasm_i64_mul (param $var$0 i64) (param $var$1 i64) (result i64)
  (call $_ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE
   (local.get $var$0)
   (local.get $var$1)
  )
 )
 (func $__wasm_i64_sdiv (param $var$0 i64) (param $var$1 i64) (result i64)
  (call $_ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E
   (local.get $var$0)
   (local.get $var$1)
  )
 )
 (func $__wasm_i64_srem (param $var$0 i64) (param $var$1 i64) (result i64)
  (call $_ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E
   (local.get $var$0)
   (local.get $var$1)
  )
 )
 (func $__wasm_i64_udiv (param $var$0 i64) (param $var$1 i64) (result i64)
  (call $_ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E
   (local.get $var$0)
   (local.get $var$1)
  )
 )
 (func $__wasm_i64_urem (param $var$0 i64) (param $var$1 i64) (result i64)
  (drop
   (call $_ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E
    (local.get $var$0)
    (local.get $var$1)
   )
  )
  (global.get $__wasm-intrinsics-temp-i64)
 )
 (func $__wasm_nearest_f32 (param $var$0 f32) (result f32)
  (local $var$1 f32)
  (local $var$2 f32)
  (if
   (i32.eqz
    (f32.lt
     (local.tee $var$2
      (f32.sub
       (local.get $var$0)
       (local.tee $var$1
        (f32.floor
         (local.get $var$0)
        )
       )
      )
     )
     (f32.const 0.5)
    )
   )
   (block
    (local.set $var$0
     (f32.ceil
      (local.get $var$0)
     )
    )
    (if
     (f32.gt
      (local.get $var$2)
      (f32.const 0.5)
     )
     (return
      (local.get $var$0)
     )
    )
    (local.set $var$1
     (select
      (local.get $var$1)
      (local.get $var$0)
      (f32.eq
       (f32.sub
        (local.tee $var$2
         (f32.mul
          (local.get $var$1)
          (f32.const 0.5)
         )
        )
        (f32.floor
         (local.get $var$2)
        )
       )
       (f32.const 0)
      )
     )
    )
   )
  )
  (local.get $var$1)
 )
 (func $__wasm_nearest_f64 (param $var$0 f64) (result f64)
  (local $var$1 f64)
  (local $var$2 f64)
  (if
   (i32.eqz
    (f64.lt
     (local.tee $var$2
      (f64.sub
       (local.get $var$0)
       (local.tee $var$1
        (f64.floor
         (local.get $var$0)
        )
       )
      )
     )
     (f64.const 0.5)
    )
   )
   (block
    (local.set $var$0
     (f64.ceil
      (local.get $var$0)
     )
    )
    (if
     (f64.gt
      (local.get $var$2)
      (f64.const 0.5)
     )
     (return
      (local.get $var$0)
     )
    )
    (local.set $var$1
     (select
      (local.get $var$1)
      (local.get $var$0)
      (f64.eq
       (f64.sub
        (local.tee $var$2
         (f64.mul
          (local.get $var$1)
          (f64.const 0.5)
         )
        )
        (f64.floor
         (local.get $var$2)
        )
       )
       (f64.const 0)
      )
     )
    )
   )
  )
  (local.get $var$1)
 )
 (func $__wasm_popcnt_i32 (param $var$0 i32) (result i32)
  (local $var$1 i32)
  (block $label$1 (result i32)
   (loop $label$2
    (drop
     (br_if $label$1
      (local.get $var$1)
      (i32.eqz
       (local.get $var$0)
      )
     )
    )
    (local.set $var$0
     (i32.and
      (local.get $var$0)
      (i32.sub
       (local.get $var$0)
       (i32.const 1)
      )
     )
    )
    (local.set $var$1
     (i32.add
      (local.get $var$1)
      (i32.const 1)
     )
    )
    (br $label$2)
   )
  )
 )
 (func $__wasm_rotl_i32 (param $var$0 i32) (param $var$1 i32) (result i32)
  (local $var$2 i32)
  (i32.or
   (i32.shl
    (i32.and
     (i32.shr_u
      (i32.const -1)
      (local.tee $var$2
       (i32.and
        (local.get $var$1)
        (i32.const 31)
       )
      )
     )
     (local.get $var$0)
    )
    (local.get $var$2)
   )
   (i32.shr_u
    (i32.and
     (i32.shl
      (i32.const -1)
      (local.tee $var$1
       (i32.and
        (i32.sub
         (i32.const 0)
         (local.get $var$1)
        )
        (i32.const 31)
       )
      )
     )
     (local.get $var$0)
    )
    (local.get $var$1)
   )
  )
 )
 (func $__wasm_rotl_i64 (param $var$0 i64) (param $var$1 i64) (result i64)
  (local $var$2 i64)
  (i64.or
   (i64.shl
    (i64.and
     (i64.shr_u
      (i64.const -1)
      (local.tee $var$2
       (i64.and
        (local.get $var$1)
        (i64.const 63)
       )
      )
     )
     (local.get $var$0)
    )
    (local.get $var$2)
   )
   (i64.shr_u
    (i64.and
     (i64.shl
      (i64.const -1)
      (local.tee $var$1
       (i64.and
        (i64.sub
         (i64.const 0)
         (local.get $var$1)
        )
        (i64.const 63)
       )
      )
     )
     (local.get $var$0)
    )
    (local.get $var$1)
   )
  )
 )
 (func $__wasm_rotr_i32 (param $var$0 i32) (param $var$1 i32) (result i32)
  (local $var$2 i32)
  (i32.or
   (i32.shr_u
    (i32.and
     (i32.shl
      (i32.const -1)
      (local.tee $var$2
       (i32.and
        (local.get $var$1)
        (i32.const 31)
       )
      )
     )
     (local.get $var$0)
    )
    (local.get $var$2)
   )
   (i32.shl
    (i32.and
     (i32.shr_u
      (i32.const -1)
      (local.tee $var$1
       (i32.and
        (i32.sub
         (i32.const 0)
         (local.get $var$1)
        )
        (i32.const 31)
       )
      )
     )
     (local.get $var$0)
    )
    (local.get $var$1)
   )
  )
 )
 (func $__wasm_rotr_i64 (param $var$0 i64) (param $var$1 i64) (result i64)
  (local $var$2 i64)
  (i64.or
   (i64.shr_u
    (i64.and
     (i64.shl
      (i64.const -1)
      (local.tee $var$2
       (i64.and
        (local.get $var$1)
        (i64.const 63)
       )
      )
     )
     (local.get $var$0)
    )
    (local.get $var$2)
   )
   (i64.shl
    (i64.and
     (i64.shr_u
      (i64.const -1)
      (local.tee $var$1
       (i64.and
        (i64.sub
         (i64.const 0)
         (local.get $var$1)
        )
        (i64.const 63)
       )
      )
     )
     (local.get $var$0)
    )
    (local.get $var$1)
   )
  )
 )
)
