(module
 (type $i32_i32_=>_none (func (param i32 i32)))
 (table $0 5 5 funcref)
 (elem (i32.const 1) $foo)
 (func $foo (; 0 ;) (param $0 i32) (param $1 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32)
  (call $foo
   (local.get $x)
   (local.get $y)
  )
 )
)
(module
 (type $i32_i32_=>_none (func (param i32 i32)))
 (table $0 5 5 funcref)
 (elem (i32.const 4) $foo)
 (func $foo (; 0 ;) (param $0 i32) (param $1 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32)
  (call $foo
   (local.get $x)
   (local.get $y)
  )
 )
)
(module
 (type $i32_i32_=>_none (func (param i32 i32)))
 (table $0 5 5 funcref)
 (elem (i32.const 0) $foo)
 (func $foo (; 0 ;) (param $0 i32) (param $1 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32)
  (call $foo
   (local.get $x)
   (local.get $y)
  )
 )
)
(module
 (type $i32_i32_=>_none (func (param i32 i32)))
 (table $0 5 5 funcref)
 (elem (i32.const 0) $foo $foo $foo $foo $foo)
 (func $foo (; 0 ;) (param $0 i32) (param $1 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32)
  (call $foo
   (local.get $x)
   (local.get $y)
  )
 )
)
(module
 (type $i32_i32_=>_none (func (param i32 i32)))
 (import "env" "table" (table $0 5 5 funcref))
 (elem (i32.const 1) $foo)
 (func $foo (; 0 ;) (param $0 i32) (param $1 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32)
  (call_indirect (type $i32_i32_=>_none)
   (local.get $x)
   (local.get $y)
   (i32.const 1)
  )
 )
)
(module
 (type $i32_i32_=>_none (func (param i32 i32)))
 (table $0 5 5 funcref)
 (elem (i32.const 1) $foo)
 (export "tab" (table $0))
 (func $foo (; 0 ;) (param $0 i32) (param $1 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32)
  (call_indirect (type $i32_i32_=>_none)
   (local.get $x)
   (local.get $y)
   (i32.const 1)
  )
 )
)
(module
 (type $i32_i32_=>_none (func (param i32 i32)))
 (table $0 5 5 funcref)
 (elem (global.get $g) $foo)
 (global $g (mut i32) (i32.const 1))
 (func $foo (; 0 ;) (param $0 i32) (param $1 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32)
  (call_indirect (type $i32_i32_=>_none)
   (local.get $x)
   (local.get $y)
   (i32.const 1)
  )
 )
)
(module
 (type $i32_i32_=>_none (func (param i32 i32)))
 (type $i32_i32_i32_=>_none (func (param i32 i32 i32)))
 (table $0 5 5 funcref)
 (elem (i32.const 1) $foo)
 (func $foo (; 0 ;) (param $0 i32) (param $1 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32) (param $z i32)
  (call_indirect (type $i32_i32_=>_none)
   (local.get $x)
   (local.get $y)
   (local.get $z)
  )
 )
)
(module
 (type $i32_i32_=>_none (func (param i32 i32)))
 (table $0 5 5 funcref)
 (elem (i32.const 1) $foo)
 (func $foo (; 0 ;) (param $0 i32) (param $1 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32)
  (block
   (drop
    (local.get $x)
   )
   (drop
    (local.get $y)
   )
  )
  (unreachable)
 )
)
(module
 (type $i32_i32_=>_none (func (param i32 i32)))
 (table $0 5 5 funcref)
 (elem (i32.const 1) $foo)
 (func $foo (; 0 ;) (param $0 i32) (param $1 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32)
  (block
   (drop
    (local.get $x)
   )
   (drop
    (local.get $y)
   )
  )
  (unreachable)
 )
)
(module
 (type $i32_=>_none (func (param i32)))
 (type $i32_i32_=>_none (func (param i32 i32)))
 (table $0 5 5 funcref)
 (elem (i32.const 1) $foo)
 (func $foo (; 0 ;) (param $0 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32)
  (block
   (drop
    (local.get $x)
   )
   (drop
    (local.get $y)
   )
  )
  (unreachable)
 )
)
(module
 (type $i32_=>_none (func (param i32)))
 (func $foo (; 0 ;) (param $0 i32)
  (unreachable)
 )
)
(module
 (type $none_=>_none (func))
 (table $0 8 8 funcref)
 (func $0 (; 0 ;)
  (block $block
   (nop)
   (block
    (block
    )
    (unreachable)
   )
  )
 )
)
(module
 (type $i32_i32_=>_none (func (param i32 i32)))
 (table $0 5 5 funcref)
 (elem (i32.const 1) $foo)
 (func $foo (; 0 ;) (param $0 i32) (param $1 i32)
  (unreachable)
 )
 (func $bar (; 1 ;) (param $x i32) (param $y i32)
  (return_call $foo
   (local.get $x)
   (local.get $y)
  )
 )
)
