(module
 (type $none_=>_i32_i64 (func (result i32 i64)))
 (type $none_=>_none (func))
 (type $none_=>_i32_i64_externref (func (result i32 i64 externref)))
 (type $none_=>_i64 (func (result i64)))
 (type $none_=>_f32_i64_i32 (func (result f32 i64 i32)))
 (type $none_=>_i32_i64_f32 (func (result i32 i64 f32)))
 (type $none_=>_i32 (func (result i32)))
 (type $none_=>_f32 (func (result f32)))
 (import "env" "pair" (func $fimport$0 (type $none_=>_i32_i64) (result i32 i64)))
 (global $global$0 (mut i32) (i32.const 0))
 (global $global$1 (mut i64) (i64.const 0))
 (global $global$2 i32 (i32.const 0))
 (global $global$3 i64 (i64.const 0))
 (func $0 (type $none_=>_i32_i64_f32) (result i32 i64 f32)
  (tuple.make
   (i32.const 42)
   (i64.const 7)
   (f32.const 13)
  )
 )
 (func $1 (type $none_=>_i32) (result i32)
  (local $0 (i32 i64 f32))
  (local $1 i64)
  (local $2 i32)
  (local.set $0
   (call $0)
  )
  (block (result i32)
   (local.set $2
    (tuple.extract 0
     (local.get $0)
    )
   )
   (drop
    (block (result i64)
     (local.set $1
      (tuple.extract 1
       (local.get $0)
      )
     )
     (drop
      (tuple.extract 2
       (local.get $0)
      )
     )
     (local.get $1)
    )
   )
   (local.get $2)
  )
 )
 (func $2 (type $none_=>_i64) (result i64)
  (local $0 i64)
  (local $1 (i32 i64 f32))
  (local $2 i64)
  (local $3 i32)
  (local.set $1
   (call $0)
  )
  (drop
   (block (result i32)
    (local.set $3
     (tuple.extract 0
      (local.get $1)
     )
    )
    (local.set $0
     (block (result i64)
      (local.set $2
       (tuple.extract 1
        (local.get $1)
       )
      )
      (drop
       (tuple.extract 2
        (local.get $1)
       )
      )
      (local.get $2)
     )
    )
    (local.get $3)
   )
  )
  (local.get $0)
 )
 (func $3 (type $none_=>_f32) (result f32)
  (local $0 f32)
  (local $1 (i32 i64 f32))
  (local $2 i64)
  (local $3 i32)
  (local.set $1
   (call $0)
  )
  (drop
   (block (result i32)
    (local.set $3
     (tuple.extract 0
      (local.get $1)
     )
    )
    (drop
     (block (result i64)
      (local.set $2
       (tuple.extract 1
        (local.get $1)
       )
      )
      (local.set $0
       (tuple.extract 2
        (local.get $1)
       )
      )
      (local.get $2)
     )
    )
    (local.get $3)
   )
  )
  (local.get $0)
 )
 (func $4 (type $none_=>_f32_i64_i32) (result f32 i64 i32)
  (local $0 i32)
  (local $1 i64)
  (local $2 i64)
  (local $3 f32)
  (local $4 f32)
  (local $5 (i32 i64 f32))
  (local $6 i64)
  (local $7 i32)
  (local $8 i64)
  (local $9 i32)
  (local $10 i64)
  (local $11 i32)
  (local $12 i64)
  (local $13 i32)
  (local $14 f32)
  (local.set $5
   (call $0)
  )
  (local.set $0
   (block (result i32)
    (local.set $7
     (tuple.extract 0
      (local.get $5)
     )
    )
    (local.set $1
     (block (result i64)
      (local.set $6
       (tuple.extract 1
        (local.get $5)
       )
      )
      (local.set $3
       (tuple.extract 2
        (local.get $5)
       )
      )
      (local.get $6)
     )
    )
    (local.get $7)
   )
  )
  (drop
   (block (result i32)
    (local.set $9
     (local.get $0)
    )
    (drop
     (block (result i64)
      (local.set $8
       (local.get $1)
      )
      (local.set $4
       (local.get $3)
      )
      (local.get $8)
     )
    )
    (local.get $9)
   )
  )
  (tuple.make
   (block (result f32)
    (local.set $14
     (local.get $4)
    )
    (drop
     (block (result i32)
      (local.set $11
       (local.get $0)
      )
      (local.set $2
       (block (result i64)
        (local.set $10
         (local.get $1)
        )
        (drop
         (local.get $3)
        )
        (local.get $10)
       )
      )
      (local.get $11)
     )
    )
    (local.get $14)
   )
   (local.get $2)
   (block (result i32)
    (local.set $13
     (local.get $0)
    )
    (drop
     (block (result i64)
      (local.set $12
       (local.get $1)
      )
      (drop
       (local.get $3)
      )
      (local.get $12)
     )
    )
    (local.get $13)
   )
  )
 )
 (func $5 (type $none_=>_i64) (result i64)
  (drop
   (i32.const 42)
  )
  (drop
   (i64.const 7)
  )
  (unreachable)
 )
 (func $6 (type $none_=>_i32_i64) (result i32 i64)
  (local $0 i32)
  (global.set $global$0
   (block (result i32)
    (local.set $0
     (i32.const 42)
    )
    (global.set $global$1
     (i64.const 7)
    )
    (local.get $0)
   )
  )
  (tuple.make
   (global.get $global$2)
   (global.get $global$3)
  )
 )
 (func $7 (type $none_=>_none)
  (local $0 (i32 i64))
  (local $1 i32)
  (local.set $0
   (call $fimport$0)
  )
  (drop
   (block (result i32)
    (local.set $1
     (tuple.extract 0
      (local.get $0)
     )
    )
    (drop
     (tuple.extract 1
      (local.get $0)
     )
    )
    (local.get $1)
   )
  )
 )
 (func $8 (type $none_=>_none)
  (local $0 i32)
  (drop
   (block (result i32)
    (local.set $0
     (i32.const 42)
    )
    (drop
     (i64.const 42)
    )
    (local.get $0)
   )
  )
 )
 (func $9 (type $none_=>_none)
  (local $0 (i32 i64))
  (local $1 i32)
  (local.set $0
   (block $label$1 (result i32 i64)
    (tuple.make
     (i32.const 42)
     (i64.const 42)
    )
   )
  )
  (drop
   (block (result i32)
    (local.set $1
     (tuple.extract 0
      (local.get $0)
     )
    )
    (drop
     (tuple.extract 1
      (local.get $0)
     )
    )
    (local.get $1)
   )
  )
 )
 (func $10 (type $none_=>_i32_i64) (result i32 i64)
  (return
   (tuple.make
    (i32.const 42)
    (i64.const 42)
   )
  )
 )
 (func $11 (type $none_=>_i32_i64) (result i32 i64)
  (return
   (tuple.make
    (i32.const 42)
    (i64.const 42)
   )
  )
 )
 (func $12 (type $none_=>_i32_i64) (result i32 i64)
  (local $0 (i32 i64))
  (local.set $0
   (block $label$1 (result i32 i64)
    (br $label$1
     (tuple.make
      (i32.const 42)
      (i64.const 42)
     )
    )
   )
  )
  (tuple.make
   (tuple.extract 0
    (local.get $0)
   )
   (tuple.extract 1
    (local.get $0)
   )
  )
 )
 (func $13 (type $none_=>_i32_i64) (result i32 i64)
  (local $0 (i32 i64))
  (local $1 (i32 i64))
  (local.set $1
   (block $label$1 (result i32 i64)
    (local.set $0
     (br_if $label$1
      (tuple.make
       (i32.const 42)
       (i64.const 42)
      )
      (i32.const 1)
     )
    )
    (tuple.make
     (tuple.extract 0
      (local.get $0)
     )
     (tuple.extract 1
      (local.get $0)
     )
    )
   )
  )
  (tuple.make
   (tuple.extract 0
    (local.get $1)
   )
   (tuple.extract 1
    (local.get $1)
   )
  )
 )
 (func $14 (type $none_=>_i32_i64_externref) (result i32 i64 externref)
  (local $0 (i32 i64 externref))
  (local.set $0
   (if (result i32 i64 externref)
    (i32.const 1)
    (tuple.make
     (i32.const 42)
     (i64.const 42)
     (ref.null noextern)
    )
    (tuple.make
     (i32.const 42)
     (i64.const 42)
     (ref.null noextern)
    )
   )
  )
  (tuple.make
   (tuple.extract 0
    (local.get $0)
   )
   (tuple.extract 1
    (local.get $0)
   )
   (tuple.extract 2
    (local.get $0)
   )
  )
 )
 (func $15 (type $none_=>_i32_i64) (result i32 i64)
  (local $0 (i32 i64))
  (local.set $0
   (loop $label$1 (result i32 i64)
    (tuple.make
     (i32.const 42)
     (i64.const 42)
    )
   )
  )
  (tuple.make
   (tuple.extract 0
    (local.get $0)
   )
   (tuple.extract 1
    (local.get $0)
   )
  )
 )
 (func $16 (type $none_=>_i32_i64) (result i32 i64)
  (local $0 (i32 i64))
  (local $1 (i32 i64))
  (local.set $1
   (block $label$1 (result i32 i64)
    (local.set $0
     (block $label$2 (result i32 i64)
      (br_table $label$1 $label$2
       (tuple.make
        (i32.const 42)
        (i64.const 42)
       )
       (i32.const 0)
      )
     )
    )
    (tuple.make
     (tuple.extract 0
      (local.get $0)
     )
     (tuple.extract 1
      (local.get $0)
     )
    )
   )
  )
  (tuple.make
   (tuple.extract 0
    (local.get $1)
   )
   (tuple.extract 1
    (local.get $1)
   )
  )
 )
)

