(module
 (type $0 (func))
 (type $1 (func (result i32)))
 (type $2 (func (result i64)))
 (type $3 (func (param i32)))
 (type $4 (func (param i32) (result i32)))
 (global $glob (mut i32) (i32.const 1))
 (global $glob-imm i32 (i32.const 1))
 (memory $0 1)
 (func $loop1
  (drop
   (i32.const 10)
  )
  (loop $loop
   (nop)
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop2
  (drop
   (i32.const 10)
  )
  (drop
   (i32.const 20)
  )
  (loop $loop
   (nop)
   (nop)
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop3
  (drop
   (i32.const 10)
  )
  (drop
   (i32.const 20)
  )
  (loop $loop
   (nop)
   (call $loop2)
   (nop)
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop4
  (drop
   (i32.load
    (i32.const 1)
   )
  )
  (loop $loop
   (nop)
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop3-4
  (loop $loop
   (drop
    (i32.load
     (i32.const 10)
    )
   )
   (call $loop2)
   (drop
    (i32.load
     (i32.const 20)
    )
   )
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop3-4-b
  (drop
   (i32.load
    (i32.const 10)
   )
  )
  (drop
   (i32.load
    (i32.const 20)
   )
  )
  (loop $loop
   (nop)
   (nop)
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop5
  (loop $loop
   (i32.store
    (i32.const 1)
    (i32.const 2)
   )
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop6
  (loop $loop
   (i32.store
    (i32.const 1)
    (i32.const 2)
   )
   (i32.store
    (i32.const 2)
    (i32.const 3)
   )
  )
 )
 (func $loop7
  (loop $loop
   (i32.store
    (i32.const 1)
    (i32.const 2)
   )
   (i32.store
    (i32.const 2)
    (i32.const 3)
   )
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop8
  (loop $loop
   (i32.store
    (i32.const 1)
    (i32.const 2)
   )
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop9
  (loop $loop
   (drop
    (i32.load
     (i32.const 1)
    )
   )
   (i32.store
    (i32.const 1)
    (i32.const 2)
   )
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop10
  (drop
   (i32.load
    (i32.const 1)
   )
  )
  (drop
   (i32.load
    (i32.const 2)
   )
  )
  (loop $loop
   (nop)
   (nop)
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop11
  (local $x i32)
  (local $y i32)
  (loop $loop
   (drop
    (local.get $x)
   )
   (br_if $loop
    (local.tee $x
     (i32.const 2)
    )
   )
  )
 )
 (func $loop12
  (local $x i32)
  (local $y i32)
  (drop
   (local.get $x)
  )
  (loop $loop
   (nop)
   (br_if $loop
    (local.tee $y
     (i32.const 2)
    )
   )
  )
 )
 (func $loop13
  (local $x i32)
  (local $y i32)
  (local.set $x
   (i32.eqz
    (local.get $y)
   )
  )
  (loop $loop
   (nop)
   (call $loop12)
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop14
  (local $x i32)
  (local $y i32)
  (local.set $x
   (i32.eqz
    (local.get $y)
   )
  )
  (loop $loop
   (nop)
   (call $loop12)
   (br_if $loop
    (i32.const 1)
   )
   (local.set $y
    (local.get $x)
   )
  )
 )
 (func $loop14-1
  (local $x i32)
  (local $y i32)
  (loop $loop
   (local.set $x
    (i32.eqz
     (local.get $y)
    )
   )
   (call $loop12)
   (local.set $y
    (local.get $x)
   )
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop15
  (local $x i32)
  (local $y i32)
  (local.set $x
   (i32.eqz
    (local.get $y)
   )
  )
  (loop $loop
   (nop)
   (call $loop12)
   (br_if $loop
    (i32.const 1)
   )
   (drop
    (local.get $y)
   )
  )
 )
 (func $loop15-1
  (local $x i32)
  (local $y i32)
  (local.set $x
   (i32.eqz
    (local.get $y)
   )
  )
  (drop
   (local.get $y)
  )
  (loop $loop
   (nop)
   (call $loop12)
   (nop)
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop16
  (local $x i32)
  (local $y i32)
  (local.set $x
   (i32.eqz
    (local.get $y)
   )
  )
  (loop $loop
   (nop)
   (call $loop12)
   (br_if $loop
    (i32.const 1)
   )
   (drop
    (local.get $x)
   )
  )
 )
 (func $loop16-1
  (local $x i32)
  (local $y i32)
  (local.set $x
   (i32.eqz
    (local.get $y)
   )
  )
  (drop
   (local.get $x)
  )
  (loop $loop
   (nop)
   (call $loop12)
   (nop)
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $loop16-2
  (local $x i32)
  (local $y i32)
  (local.set $x
   (i32.const 2)
  )
  (block
   (local.set $x
    (i32.eqz
     (local.get $y)
    )
   )
   (drop
    (local.get $x)
   )
   (loop $loop
    (nop)
    (call $loop12)
    (nop)
    (br_if $loop
     (i32.const 1)
    )
   )
  )
 )
 (func $loop16-3
  (local $x i32)
  (local $y i32)
  (local.set $y
   (i32.const 2)
  )
  (block
   (local.set $x
    (i32.eqz
     (local.get $y)
    )
   )
   (drop
    (local.get $x)
   )
   (loop $loop
    (nop)
    (call $loop12)
    (nop)
    (br_if $loop
     (i32.const 1)
    )
   )
  )
 )
 (func $nop
  (loop $loop
   (nop)
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $nested-blocks
  (loop $loop
   (block
    (nop)
   )
   (block $x
    (nop)
   )
   (block $a
    (block $b
     (block $c
      (nop)
     )
    )
   )
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $nested-unhoistable-blocks
  (loop $loop
   (block
    (call $nested-unhoistable-blocks)
   )
   (block $x
    (call $nested-unhoistable-blocks)
   )
   (block $a
    (block $b
     (block $c
      (call $nested-unhoistable-blocks)
     )
    )
   )
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $conditional
  (if
   (i32.const 0)
   (then
    (drop
     (i32.const 10)
    )
   )
  )
  (loop $loop
   (nop)
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $conditional1 (result i32)
  (loop $loop
   (if
    (call $conditional1)
    (then
     (drop
      (i32.const 10)
     )
    )
   )
   (br_if $loop
    (i32.const 1)
   )
  )
  (unreachable)
 )
 (func $conditional2
  (block $out
   (loop $loop
    (br_if $out
     (i32.const 1)
    )
    (drop
     (i32.const 10)
    )
    (br_if $loop
     (i32.const 1)
    )
   )
  )
 )
 (func $conditional3
  (block $out
   (block
    (drop
     (i32.const 10)
    )
    (loop $loop
     (nop)
     (br_if $out
      (i32.const 1)
     )
     (br_if $loop
      (i32.const 1)
     )
    )
   )
  )
 )
 (func $after
  (loop $loop
  )
  (drop
   (i32.const 10)
  )
 )
 (func $loops
  (drop
   (i32.const 10)
  )
  (loop $loop2
   (nop)
   (loop $loop1
    (nop)
    (br_if $loop1
     (i32.const 1)
    )
   )
  )
 )
 (func $loops2
  (drop
   (i32.const 10)
  )
  (loop $loop2
   (nop)
   (loop $loop1
    (nop)
    (br_if $loop2
     (i32.const 1)
    )
   )
  )
 )
 (func $fuzz1 (result i64)
  (local $var$1 i64)
  (drop
   (block (result i32)
    (local.set $var$1
     (block $label$5 (result i64)
      (local.set $var$1
       (i64.const -29585)
      )
      (i64.const -70)
     )
    )
    (loop $label$4 (result i32)
     (nop)
     (i32.const 1)
    )
   )
  )
  (loop $label$1 (result i64)
   (block $label$2
    (block $label$3
     (nop)
     (br $label$2)
    )
    (unreachable)
   )
   (local.get $var$1)
  )
 )
 (func $self (result i32)
  (local $x i32)
  (loop $loop
   (local.set $x
    (i32.add
     (local.get $x)
     (i32.const 1)
    )
   )
   (br_if $loop
    (i32.const 1)
   )
  )
  (local.get $x)
 )
 (func $nested-set
  (local $var$0 i32)
  (local $var$1 i64)
  (loop $label$1
   (local.set $var$0
    (block $label$3 (result i32)
     (local.set $var$1
      (i64.const 0)
     )
     (local.get $var$0)
    )
   )
   (local.set $var$1
    (i64.const 1)
   )
   (br_if $label$1
    (i32.const 0)
   )
  )
 )
 (func $load-store (param $x i32)
  (loop $loop
   (drop
    (i32.load
     (i32.const 0)
    )
   )
   (i32.store
    (local.get $x)
    (local.get $x)
   )
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $set-set (param $x i32) (result i32)
  (loop $loop
   (local.set $x
    (i32.const 1)
   )
   (br_if $loop
    (i32.const 2)
   )
   (local.set $x
    (i32.const 3)
   )
   (br_if $loop
    (i32.const 4)
   )
  )
  (local.get $x)
 )
 (func $copies-no
  (local $x i32)
  (local $y i32)
  (local $z i32)
  (local $a i32)
  (local $b i32)
  (local $c i32)
  (loop $loop
   (local.set $x
    (local.get $x)
   )
   (local.set $y
    (local.get $z)
   )
   (local.set $a
    (local.tee $b
     (local.get $c)
    )
   )
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $consts-no
  (local $x i32)
  (local $a i32)
  (local $b i32)
  (loop $loop
   (local.set $x
    (i32.const 0)
   )
   (local.set $a
    (local.tee $b
     (i32.const 1)
    )
   )
   (br_if $loop
    (i32.const 1)
   )
  )
 )
 (func $global
  (local $x i32)
  (local.set $x
   (global.get $glob)
  )
  (drop
   (local.get $x)
  )
  (loop $loop
   (nop)
   (nop)
   (br_if $loop
    (local.get $x)
   )
  )
 )
 (func $global-call
  (local $x i32)
  (loop $loop
   (local.set $x
    (global.get $glob)
   )
   (call $global)
   (drop
    (local.get $x)
   )
   (br_if $loop
    (local.get $x)
   )
  )
 )
 (func $global-call-immutable
  (local $x i32)
  (local.set $x
   (global.get $glob-imm)
  )
  (drop
   (local.get $x)
  )
  (loop $loop
   (nop)
   (call $global)
   (nop)
   (br_if $loop
    (local.get $x)
   )
  )
 )
)