(module
 (type $FUNCSIG$ii (func (param i32) (result i32)))
 (import "env" "setTempRet0" (func $setTempRet0 (param i32) (result i32)))
 (import "env" "memory" (memory $0 256 256))
 (import "env" "table" (table 0 0 anyfunc))
 (import "env" "memoryBase" (global $memoryBase i32))
 (import "env" "tableBase" (global $tableBase i32))
 (func $test1 (result i32)
  (local $$b$1 i32)
  (local $$x_sroa_0_0_extract_trunc i32)
  (local $$2 i32)
  (local $$1$1 i32)
  (local $$1$0 i32)
  (return
   (block i32
    (drop
     (call $setTempRet0
      (i32.or
       (i32.add
        (i32.add
         (i32.mul
          (get_local $$b$1)
          (get_local $$x_sroa_0_0_extract_trunc)
         )
         (get_local $$2)
        )
        (get_local $$1$1)
       )
       (i32.and
        (get_local $$1$1)
        (i32.const 0)
       )
      )
     )
    )
    (i32.or
     (i32.const 0)
     (i32.and
      (get_local $$1$0)
      (i32.const -1)
     )
    )
   )
  )
 )
 (func $test2
  (drop
   (call $setTempRet0
    (i32.const 10)
   )
  )
 )
)
