(module
  (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32))
  (import "env" "segfault" (func $segfault (param i32)))
  (memory 10)
  (type $ii (func (param i32 i32)))
  (table 1 1 funcref)
  (elem (i32.const 0))
  (global $__stack_pointer (mut i32) (global.get $STACKTOP$asm2wasm$import))

  (func $nothing
  )
  (func $not-alive
    (local $x i32)
    (local.set $x (i32.const 1))
    (call $nothing)
  )
  (func $spill
    (local $x i32)
    (call $nothing)
    (drop (local.get $x))
  )
  (func $ignore-non-pointers
    (local $x i32)
    (local $y i64)
    (local $z f32)
    (local $w f64)
    (local.set $x (i32.const 1))
    (local.set $y (i64.const 1))
    (local.set $z (f32.const 1))
    (local.set $w (f64.const 1))
    (call $nothing)
    (drop (local.get $x))
    (drop (local.get $y))
    (drop (local.get $z))
    (drop (local.get $w))
  )
  (func $spill4
    (local $x i32)
    (local $y i32)
    (local $z i32)
    (local $w i32)
    (local.set $x (i32.const 1))
    (local.set $y (i32.const 1))
    (local.set $z (i32.const 1))
    (local.set $w (i32.const 1))
    (call $nothing)
    (drop (local.get $x))
    (drop (local.get $y))
    (drop (local.get $z))
    (drop (local.get $w))
  )
  (func $spill5
    (local $x i32)
    (local $y i32)
    (local $z i32)
    (local $w i32)
    (local $a i32)
    (local.set $x (i32.const 1))
    (local.set $y (i32.const 1))
    (local.set $z (i32.const 1))
    (local.set $w (i32.const 1))
    (local.set $a (i32.const 1))
    (call $nothing)
    (drop (local.get $x))
    (drop (local.get $y))
    (drop (local.get $z))
    (drop (local.get $w))
    (drop (local.get $a))
  )
  (func $some-alive
    (local $x i32)
    (local $y i32)
    (call $nothing)
    (drop (local.get $x))
  )
  (func $spill-args (param $p i32) (param $q i32)
    (local $x i32)
    (call $spill-args (i32.const 1) (i32.const 2))
    (drop (local.get $x))
  )
  (func $spill-ret (result i32)
    (local $x i32)
    (call $nothing)
    (drop (local.get $x))
    (if (i32.const 1)
      (then
        (return (i32.const 2))
      )
      (else
        (return (i32.const 3))
      )
    )
    (i32.const 4)
  )
  (func $spill-unreachable (result i32)
    (local $x i32)
    (call $nothing)
    (drop (local.get $x))
    (unreachable)
  )
  (func $spill-call-call0 (param $p i32) (result i32)
    (unreachable)
  )
  (func $spill-call-call1 (param $p i32) (result i32)
    (local $x i32)
    (drop
      (call $spill-call-call0
        (call $spill-call-call1
          (i32.const 1)
        )
      )
    )
    (local.get $x)
  )
  (func $spill-call-ret (param $p i32) (result i32)
    (local $x i32)
    (drop
      (call $spill-call-call0
        (return
          (i32.const 1)
        )
      )
    )
    (local.get $x)
  )
  (func $spill-ret-call (param $p i32) (result i32)
    (local $x i32)
    (drop
      (return
        (call $spill-call-call0
          (i32.const 1)
        )
      )
    )
    (local.get $x)
  )
  (func $spill-ret-ret (result i32)
    (local $x i32)
    (call $nothing)
    (drop (local.get $x))
    (drop
      (return
        (return
          (i32.const 1)
        )
      )
    )
    (local.get $x)
  )
  (func $spill-call-othertype (param $y f64)
    (local $x i32)
    (call $spill-call-othertype (f64.const 1))
    (drop (local.get $x))
  )
  (func $spill-call_indirect
    (local $x i32)
    (call_indirect (type $ii)
      (i32.const 123)
      (i32.const 456)
      (i32.const 789)
    )
    (drop (local.get $x))
  )
  (func $spill-call_import
    (local $x i32)
    (call $segfault
      (i32.const 200)
    )
    (drop (local.get $x))
  )
)

(module
  (import "env" "segfault" (func $segfault (param i32)))
  (memory 10)
  (type $ii (func (param i32 i32)))
  (table 1 1 funcref)
  (elem (i32.const 0))
  (global $__stack_pointer (mut i32) (i32.const 1716592))
  (export "stackSave" (func $stack_save))
  (func $stack_save (result i32)
    (global.get $__stack_pointer)
  )

  (func $nothing
  )
  (func $not-alive
    (local $x i32)
    (local.set $x (i32.const 1))
    (call $nothing)
  )
  (func $spill
    (local $x i32)
    (call $nothing)
    (drop (local.get $x))
  )
  (func $ignore-non-pointers
    (local $x i32)
    (local $y i64)
    (local $z f32)
    (local $w f64)
    (local.set $x (i32.const 1))
    (local.set $y (i64.const 1))
    (local.set $z (f32.const 1))
    (local.set $w (f64.const 1))
    (call $nothing)
    (drop (local.get $x))
    (drop (local.get $y))
    (drop (local.get $z))
    (drop (local.get $w))
  )
  (func $spill4
    (local $x i32)
    (local $y i32)
    (local $z i32)
    (local $w i32)
    (local.set $x (i32.const 1))
    (local.set $y (i32.const 1))
    (local.set $z (i32.const 1))
    (local.set $w (i32.const 1))
    (call $nothing)
    (drop (local.get $x))
    (drop (local.get $y))
    (drop (local.get $z))
    (drop (local.get $w))
  )
  (func $spill5
    (local $x i32)
    (local $y i32)
    (local $z i32)
    (local $w i32)
    (local $a i32)
    (local.set $x (i32.const 1))
    (local.set $y (i32.const 1))
    (local.set $z (i32.const 1))
    (local.set $w (i32.const 1))
    (local.set $a (i32.const 1))
    (call $nothing)
    (drop (local.get $x))
    (drop (local.get $y))
    (drop (local.get $z))
    (drop (local.get $w))
    (drop (local.get $a))
  )
  (func $some-alive
    (local $x i32)
    (local $y i32)
    (call $nothing)
    (drop (local.get $x))
  )
  (func $spill-args (param $p i32) (param $q i32)
    (local $x i32)
    (call $spill-args (i32.const 1) (i32.const 2))
    (drop (local.get $x))
  )
  (func $spill-ret (result i32)
    (local $x i32)
    (call $nothing)
    (drop (local.get $x))
    (if (i32.const 1)
      (then
        (return (i32.const 2))
      )
      (else
        (return (i32.const 3))
      )
    )
    (i32.const 4)
  )
  (func $spill-unreachable (result i32)
    (local $x i32)
    (call $nothing)
    (drop (local.get $x))
    (unreachable)
  )
  (func $spill-call-call0 (param $p i32) (result i32)
    (unreachable)
  )
  (func $spill-call-call1 (param $p i32) (result i32)
    (local $x i32)
    (drop
      (call $spill-call-call0
        (call $spill-call-call1
          (i32.const 1)
        )
      )
    )
    (local.get $x)
  )
  (func $spill-call-ret (param $p i32) (result i32)
    (local $x i32)
    (drop
      (call $spill-call-call0
        (return
          (i32.const 1)
        )
      )
    )
    (local.get $x)
  )
  (func $spill-ret-call (param $p i32) (result i32)
    (local $x i32)
    (drop
      (return
        (call $spill-call-call0
          (i32.const 1)
        )
      )
    )
    (local.get $x)
  )
  (func $spill-ret-ret (result i32)
    (local $x i32)
    (call $nothing)
    (drop (local.get $x))
    (drop
      (return
        (return
          (i32.const 1)
        )
      )
    )
    (local.get $x)
  )
  (func $spill-call-othertype (param $y f64)
    (local $x i32)
    (call $spill-call-othertype (f64.const 1))
    (drop (local.get $x))
  )
  (func $spill-call_indirect
    (local $x i32)
    (call_indirect (type $ii)
      (i32.const 123)
      (i32.const 456)
      (i32.const 789)
    )
    (drop (local.get $x))
  )
  (func $spill-call_import
    (local $x i32)
    (call $segfault
      (i32.const 200)
    )
    (drop (local.get $x))
  )
)
