(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (nop)
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (i32.const 0)
  )
 )
 (func $other
  (nop)
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (drop
   (i32.const 0)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (i32.const 0)
  )
 )
 (func $other
  (drop
   (i32.const 1)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (table $0 3 3 funcref)
 (elem $0 (i32.const 0) $keep2 $keep2 $caller)
 (export "keep2" (func $keep2))
 (export "other" (func $keep2))
 (start $keep2)
 (func $keep2
  (nop)
 )
 (func $caller
  (call $keep2)
  (call $keep2)
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2-after-two-passes
  (nop)
 )
 (func $keep-caller
  (call $keep2-after-two-passes)
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep-4
  (nop)
 )
 (func $other
  (unreachable)
 )
 (func $keep-caller
  (call $keep-4)
 )
 (func $other-caller
  (call $other)
 )
)
(module
 (type $2 (func))
 (type $3 (func (param i32)))
 (type $T (func (result i32)))
 (memory $0 0)
 (func $keep4-similar-but-func-sig-differs
  (drop
   (i32.const 0)
  )
 )
 (func $other1 (param $i i32)
  (drop
   (i32.const 0)
  )
 )
 (func $other2 (result i32)
  (i32.const 0)
 )
)
(module
 (type $1 (func (param i32)))
 (type $S (func (result i32)))
 (memory $0 0)
 (func $keep2-similar-but-func-sig-differs (param $i i32)
  (drop
   (i32.const 0)
  )
 )
 (func $other2 (result i32)
  (i32.const 0)
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (nop)
 )
 (func $other
  (nop)
  (nop)
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (block $block0
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (block $block0
  )
 )
 (func $other
  (block $block0
   (nop)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (block $block0
   (nop)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (block $block0
   (nop)
  )
 )
 (func $other
  (block $block0
   (nop)
   (unreachable)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (block $block0
   (nop)
  )
 )
 (func $other
  (block $block0
   (unreachable)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase-since-block-names-do-not-matter
  (block $foo
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase-since-block-names-do-not-matter
  (block $foo
   (br $foo)
   (br_table $foo $foo
    (i32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (block $foo
   (block
    (drop
     (i32.const 0)
    )
    (br $foo)
   )
  )
 )
 (func $other
  (block $bar
   (block
    (drop
     (i32.const 1)
    )
    (br $bar)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (block $foo
   (br_if $foo
    (i32.const 0)
   )
  )
 )
 (func $other
  (block $bar
   (br_if $bar
    (i32.const 1)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (block $foo
   (br_if $foo
    (i32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (block $foo
   (br_table $foo $foo
    (i32.const 0)
   )
  )
 )
 (func $other
  (block $bar
   (br_table $bar $bar
    (i32.const 1)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (loop $bar
   (nop)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (block $foo (result i32)
    (br_table $foo $foo
     (i32.const 0)
     (i32.const 0)
    )
   )
  )
 )
 (func $other
  (drop
   (block $bar (result i32)
    (br_table $bar $bar
     (i32.const 0)
     (i32.const 1)
    )
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (block $foo
   (block $bar
    (br_table $foo $bar
     (i32.const 0)
    )
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (block $foo
   (block $bar
    (br_table $foo $bar
     (i32.const 0)
    )
   )
  )
 )
 (func $other
  (block $bar
   (block $foo
    (br_table $foo $bar
     (i32.const 0)
    )
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (call $erase)
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2-but-in-theory-we-could-erase
  (call $keep2-but-in-theory-we-could-erase)
 )
 (func $other
  (call $other)
 )
)
(module
 (type $FUNCSIG$v (func))
 (import "env" "i" (func $i))
 (import "env" "j" (func $j))
 (memory $0 0)
 (func $erase
  (call $i)
 )
)
(module
 (type $FUNCSIG$v (func))
 (import "env" "i" (func $i))
 (import "env" "j" (func $j))
 (memory $0 0)
 (func $keep2
  (call $i)
 )
 (func $other
  (call $j)
 )
)
(module
 (type $T (func))
 (memory $0 0)
 (table $0 2 2 funcref)
 (elem $0 (i32.const 0) $erase $erase)
 (func $erase
  (call_indirect (type $T)
   (i32.const 0)
  )
 )
)
(module
 (type $T (func))
 (memory $0 0)
 (table $0 2 2 funcref)
 (elem $0 (i32.const 0) $keep2 $other)
 (func $keep2
  (call_indirect (type $T)
   (i32.const 0)
  )
 )
 (func $other
  (call_indirect (type $T)
   (i32.const 1)
  )
 )
)
(module
 (type $T (func))
 (memory $0 0)
 (table $0 2 2 funcref)
 (elem $0 (i32.const 0) $keep2 $keep2)
 (func $keep2
  (call_indirect (type $T)
   (i32.const 0)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase-even-locals-with-different-names
  (local $i i32)
  (drop
   (local.get $i)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (local $i i32)
  (drop
   (local.get $i)
  )
 )
 (func $other
  (local $j i64)
  (drop
   (local.get $j)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase-even-locals-with-different-names
  (local $i i32)
  (local.set $i
   (i32.const 0)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (local $i i32)
  (local.set $i
   (i32.const 0)
  )
 )
 (func $other
  (local $j i64)
  (local.set $j
   (i64.const 0)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (local $i i32)
  (local.set $i
   (i32.const 0)
  )
 )
 (func $other
  (local $j i32)
  (local.set $j
   (i32.const 1)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $erase
  (drop
   (i32.load
    (i32.const 0)
   )
  )
  (drop
   (i32.load16_s offset=3
    (i32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $keep2
  (drop
   (i32.load offset=3
    (i32.const 0)
   )
  )
 )
 (func $other
  (drop
   (i32.load16_s offset=3
    (i32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $keep2
  (drop
   (i32.load16_s offset=3
    (i32.const 0)
   )
  )
 )
 (func $other
  (drop
   (i32.load16_s offset=3 align=1
    (i32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $keep2
  (drop
   (i32.load16_s
    (i32.const 0)
   )
  )
 )
 (func $other
  (drop
   (i32.load16_s offset=3
    (i32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $keep2
  (drop
   (i32.load16_s offset=3
    (i32.const 0)
   )
  )
 )
 (func $other
  (drop
   (i32.load16_s offset=3
    (i32.const 1)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $keep2
  (drop
   (i32.load16_u offset=3
    (i32.const 0)
   )
  )
 )
 (func $other
  (drop
   (i32.load16_s offset=3
    (i32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $erase
  (i32.store
   (i32.const 0)
   (i32.const 100)
  )
  (i32.store16 offset=3
   (i32.const 0)
   (i32.const 100)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $keep2
  (i32.store offset=3
   (i32.const 0)
   (i32.const 100)
  )
 )
 (func $other
  (i32.store16 offset=3
   (i32.const 0)
   (i32.const 100)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $keep2
  (i32.store16 offset=3
   (i32.const 0)
   (i32.const 100)
  )
 )
 (func $other
  (i32.store16 offset=3 align=1
   (i32.const 0)
   (i32.const 100)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $keep2
  (i32.store16
   (i32.const 0)
   (i32.const 100)
  )
 )
 (func $other
  (i32.store16 offset=3
   (i32.const 0)
   (i32.const 100)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $keep2
  (i32.store16 offset=3
   (i32.const 0)
   (i32.const 100)
  )
 )
 (func $other
  (i32.store16 offset=3
   (i32.const 1)
   (i32.const 100)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 10)
 (func $keep2
  (i32.store16 offset=3
   (i32.const 0)
   (i32.const 100)
  )
 )
 (func $other
  (i32.store16 offset=3
   (i32.const 0)
   (i32.const 101)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (i32.const 0)
  )
 )
 (func $other
  (drop
   (i64.const 0)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (i32.const 0)
  )
 )
 (func $other
  (drop
   (f32.const 0)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (i32.const 0)
  )
 )
 (func $other
  (drop
   (f64.const 0)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (i64.const 0)
  )
 )
 (func $other
  (drop
   (i64.const 1)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (f32.const 0.10000000149011612)
  )
 )
 (func $other
  (drop
   (f32.const -0.10000000149011612)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (f64.const 0.1)
  )
 )
 (func $other
  (drop
   (f64.const 0.2)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (drop
   (f32.abs
    (f32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (f32.abs
    (f32.const 0)
   )
  )
 )
 (func $other
  (drop
   (f32.abs
    (f32.const 1)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (f32.abs
    (f32.const 0)
   )
  )
 )
 (func $other
  (drop
   (f32.neg
    (f32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (drop
   (f32.add
    (f32.const 0)
    (f32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (f32.add
    (f32.const 0)
    (f32.const 0)
   )
  )
 )
 (func $other
  (drop
   (f32.add
    (f32.const 0)
    (f32.const 1)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (f32.add
    (f32.const 0)
    (f32.const 0)
   )
  )
 )
 (func $other
  (drop
   (f32.add
    (f32.const 1)
    (f32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep2
  (drop
   (f32.add
    (f32.const 0)
    (f32.const 0)
   )
  )
 )
 (func $other
  (drop
   (f32.sub
    (f32.const 0)
    (f32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (drop
   (select
    (i32.const 0)
    (i32.const 0)
    (i32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep
  (drop
   (select
    (i32.const 0)
    (i32.const 0)
    (i32.const 0)
   )
  )
 )
 (func $other
  (drop
   (select
    (i32.const 1)
    (i32.const 0)
    (i32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep
  (drop
   (select
    (i32.const 0)
    (i32.const 0)
    (i32.const 0)
   )
  )
 )
 (func $other
  (drop
   (select
    (i32.const 0)
    (i32.const 2)
    (i32.const 0)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep
  (drop
   (select
    (i32.const 0)
    (i32.const 0)
    (i32.const 0)
   )
  )
 )
 (func $other
  (drop
   (select
    (i32.const 0)
    (i32.const 0)
    (i32.const 3)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (return)
 )
)
(module
 (type $0 (func (result i32)))
 (memory $0 0)
 (func $erase (result i32)
  (return
   (i32.const 0)
  )
 )
)
(module
 (type $0 (func (result i32)))
 (memory $0 0)
 (func $keep (result i32)
  (return
   (i32.const 0)
  )
 )
 (func $other (result i32)
  (return
   (i32.const 1)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (drop
   (memory.size)
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $erase
  (drop
   (memory.grow
    (i32.const 10)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep
  (drop
   (memory.grow
    (i32.const 10)
   )
  )
 )
 (func $other
  (drop
   (memory.grow
    (i32.const 11)
   )
  )
 )
)
(module
 (type $0 (func))
 (memory $0 0)
 (func $keep
  (drop
   (memory.size)
  )
 )
 (func $other
  (drop
   (memory.grow
    (i32.const 10)
   )
  )
 )
)
