(module
 (type $none_=>_none (func))
 (type $i32_=>_none (func (param i32)))
 (memory $0 1 2)
 (global $sleeping (mut i32) (i32.const 0))
 (global $__asyncify_state (mut i32) (i32.const 0))
 (global $__asyncify_data (mut i32) (i32.const 0))
 (export "asyncify_start_unwind" (func $asyncify_start_unwind))
 (export "asyncify_stop_unwind" (func $asyncify_stop_unwind))
 (export "asyncify_start_rewind" (func $asyncify_start_rewind))
 (export "asyncify_stop_rewind" (func $asyncify_stop_rewind))
 (func $do_sleep (; 0 ;)
  (local $0 i32)
  (local $1 i32)
  (local.set $0
   (global.get $sleeping)
  )
  (local.set $1
   (i32.eqz
    (local.get $0)
   )
  )
  (if
   (local.get $1)
   (block $block
    (global.set $sleeping
     (i32.const 1)
    )
    (call $asyncify_start_unwind
     (i32.const 4)
    )
   )
   (block $block0
    (global.set $sleeping
     (i32.const 0)
    )
    (call $asyncify_stop_rewind)
   )
  )
 )
 (func $work (; 1 ;)
  (local $0 i32)
  (local $1 i32)
  (if
   (i32.eq
    (global.get $__asyncify_state)
    (i32.const 2)
   )
   (nop)
  )
  (local.set $0
   (block $__asyncify_unwind (result i32)
    (block
     (block
      (if
       (i32.eq
        (global.get $__asyncify_state)
        (i32.const 2)
       )
       (block
        (i32.store
         (global.get $__asyncify_data)
         (i32.add
          (i32.load
           (global.get $__asyncify_data)
          )
          (i32.const -4)
         )
        )
        (local.set $1
         (i32.load
          (i32.load
           (global.get $__asyncify_data)
          )
         )
        )
       )
      )
      (block
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (call $stuff)
       )
       (if
        (if (result i32)
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 0)
         )
         (i32.const 1)
         (i32.eq
          (local.get $1)
          (i32.const 0)
         )
        )
        (block
         (call $do_sleep)
         (if
          (i32.eq
           (global.get $__asyncify_state)
           (i32.const 1)
          )
          (br $__asyncify_unwind
           (i32.const 0)
          )
         )
        )
       )
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (call $stuff)
       )
      )
     )
     (return)
    )
   )
  )
  (block
   (i32.store
    (i32.load
     (global.get $__asyncify_data)
    )
    (local.get $0)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
  (nop)
 )
 (func $stuff (; 2 ;)
  (nop)
 )
 (func $first_event (; 3 ;)
  (local $0 i32)
  (local $1 i32)
  (if
   (i32.eq
    (global.get $__asyncify_state)
    (i32.const 2)
   )
   (nop)
  )
  (local.set $0
   (block $__asyncify_unwind (result i32)
    (block
     (block
      (if
       (i32.eq
        (global.get $__asyncify_state)
        (i32.const 2)
       )
       (block
        (i32.store
         (global.get $__asyncify_data)
         (i32.add
          (i32.load
           (global.get $__asyncify_data)
          )
          (i32.const -4)
         )
        )
        (local.set $1
         (i32.load
          (i32.load
           (global.get $__asyncify_data)
          )
         )
        )
       )
      )
      (if
       (if (result i32)
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (i32.const 1)
        (i32.eq
         (local.get $1)
         (i32.const 0)
        )
       )
       (block
        (call $work)
        (if
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 1)
         )
         (br $__asyncify_unwind
          (i32.const 0)
         )
        )
       )
      )
     )
     (return)
    )
   )
  )
  (block
   (i32.store
    (i32.load
     (global.get $__asyncify_data)
    )
    (local.get $0)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
  (nop)
 )
 (func $second_event (; 4 ;)
  (call $asyncify_start_rewind
   (i32.const 4)
  )
  (call $work)
 )
 (func $never_sleep (; 5 ;)
  (call $stuff)
  (call $stuff)
  (call $stuff)
 )
 (func $asyncify_start_unwind (; 6 ;) (param $0 i32)
  (global.set $__asyncify_state
   (i32.const 1)
  )
  (global.set $__asyncify_data
   (local.get $0)
  )
  (if
   (i32.gt_u
    (i32.load
     (global.get $__asyncify_data)
    )
    (i32.load offset=4
     (global.get $__asyncify_data)
    )
   )
   (unreachable)
  )
 )
 (func $asyncify_stop_unwind (; 7 ;)
  (global.set $__asyncify_state
   (i32.const 0)
  )
  (if
   (i32.gt_u
    (i32.load
     (global.get $__asyncify_data)
    )
    (i32.load offset=4
     (global.get $__asyncify_data)
    )
   )
   (unreachable)
  )
 )
 (func $asyncify_start_rewind (; 8 ;) (param $0 i32)
  (global.set $__asyncify_state
   (i32.const 2)
  )
  (global.set $__asyncify_data
   (local.get $0)
  )
  (if
   (i32.gt_u
    (i32.load
     (global.get $__asyncify_data)
    )
    (i32.load offset=4
     (global.get $__asyncify_data)
    )
   )
   (unreachable)
  )
 )
 (func $asyncify_stop_rewind (; 9 ;)
  (global.set $__asyncify_state
   (i32.const 0)
  )
  (if
   (i32.gt_u
    (i32.load
     (global.get $__asyncify_data)
    )
    (i32.load offset=4
     (global.get $__asyncify_data)
    )
   )
   (unreachable)
  )
 )
)
(module
 (type $none_=>_none (func))
 (type $i32_=>_none (func (param i32)))
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (type $none_=>_i32 (func (result i32)))
 (import "env" "import" (func $import))
 (import "env" "import2" (func $import2 (result i32)))
 (import "env" "import3" (func $import3 (param i32)))
 (memory $0 1 2)
 (global $__asyncify_state (mut i32) (i32.const 0))
 (global $__asyncify_data (mut i32) (i32.const 0))
 (export "asyncify_start_unwind" (func $asyncify_start_unwind))
 (export "asyncify_stop_unwind" (func $asyncify_stop_unwind))
 (export "asyncify_start_rewind" (func $asyncify_start_rewind))
 (export "asyncify_stop_rewind" (func $asyncify_stop_rewind))
 (func $calls-import (; 3 ;)
  (local $0 i32)
  (local $1 i32)
  (if
   (i32.eq
    (global.get $__asyncify_state)
    (i32.const 2)
   )
   (nop)
  )
  (local.set $0
   (block $__asyncify_unwind (result i32)
    (block
     (block
      (if
       (i32.eq
        (global.get $__asyncify_state)
        (i32.const 2)
       )
       (block
        (i32.store
         (global.get $__asyncify_data)
         (i32.add
          (i32.load
           (global.get $__asyncify_data)
          )
          (i32.const -4)
         )
        )
        (local.set $1
         (i32.load
          (i32.load
           (global.get $__asyncify_data)
          )
         )
        )
       )
      )
      (if
       (if (result i32)
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (i32.const 1)
        (i32.eq
         (local.get $1)
         (i32.const 0)
        )
       )
       (block
        (call $import)
        (if
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 1)
         )
         (br $__asyncify_unwind
          (i32.const 0)
         )
        )
       )
      )
     )
     (return)
    )
   )
  )
  (block
   (i32.store
    (i32.load
     (global.get $__asyncify_data)
    )
    (local.get $0)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
  (nop)
 )
 (func $calls-import2 (; 4 ;) (result i32)
  (local $temp i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (local $7 i32)
  (local $8 i32)
  (local $9 i32)
  (if
   (i32.eq
    (global.get $__asyncify_state)
    (i32.const 2)
   )
   (block
    (i32.store
     (global.get $__asyncify_data)
     (i32.add
      (i32.load
       (global.get $__asyncify_data)
      )
      (i32.const -20)
     )
    )
    (local.set $8
     (i32.load
      (global.get $__asyncify_data)
     )
    )
    (local.set $temp
     (i32.load
      (local.get $8)
     )
    )
    (local.set $1
     (i32.load offset=4
      (local.get $8)
     )
    )
    (local.set $2
     (i32.load offset=8
      (local.get $8)
     )
    )
    (local.set $3
     (i32.load offset=12
      (local.get $8)
     )
    )
    (local.set $4
     (i32.load offset=16
      (local.get $8)
     )
    )
   )
  )
  (local.set $5
   (block $__asyncify_unwind (result i32)
    (block
     (block
      (if
       (i32.eq
        (global.get $__asyncify_state)
        (i32.const 2)
       )
       (block
        (i32.store
         (global.get $__asyncify_data)
         (i32.add
          (i32.load
           (global.get $__asyncify_data)
          )
          (i32.const -4)
         )
        )
        (local.set $6
         (i32.load
          (i32.load
           (global.get $__asyncify_data)
          )
         )
        )
       )
      )
      (block
       (if
        (if (result i32)
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 0)
         )
         (i32.const 1)
         (i32.eq
          (local.get $6)
          (i32.const 0)
         )
        )
        (block
         (local.set $7
          (call $import2)
         )
         (if
          (i32.eq
           (global.get $__asyncify_state)
           (i32.const 1)
          )
          (br $__asyncify_unwind
           (i32.const 0)
          )
          (local.set $1
           (local.get $7)
          )
         )
        )
       )
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (block
         (local.set $temp
          (local.get $1)
         )
         (local.set $2
          (local.get $temp)
         )
         (return
          (local.get $2)
         )
        )
       )
       (nop)
       (nop)
      )
      (unreachable)
     )
     (unreachable)
    )
   )
  )
  (block
   (i32.store
    (i32.load
     (global.get $__asyncify_data)
    )
    (local.get $5)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
  (block
   (local.set $9
    (i32.load
     (global.get $__asyncify_data)
    )
   )
   (i32.store
    (local.get $9)
    (local.get $temp)
   )
   (i32.store offset=4
    (local.get $9)
    (local.get $1)
   )
   (i32.store offset=8
    (local.get $9)
    (local.get $2)
   )
   (i32.store offset=12
    (local.get $9)
    (local.get $3)
   )
   (i32.store offset=16
    (local.get $9)
    (local.get $4)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 20)
    )
   )
  )
  (i32.const 0)
 )
 (func $calls-import2-drop (; 5 ;)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (if
   (i32.eq
    (global.get $__asyncify_state)
    (i32.const 2)
   )
   (block
    (i32.store
     (global.get $__asyncify_data)
     (i32.add
      (i32.load
       (global.get $__asyncify_data)
      )
      (i32.const -4)
     )
    )
    (local.set $4
     (i32.load
      (global.get $__asyncify_data)
     )
    )
    (local.set $0
     (i32.load
      (local.get $4)
     )
    )
   )
  )
  (local.set $1
   (block $__asyncify_unwind (result i32)
    (block
     (block
      (if
       (i32.eq
        (global.get $__asyncify_state)
        (i32.const 2)
       )
       (block
        (i32.store
         (global.get $__asyncify_data)
         (i32.add
          (i32.load
           (global.get $__asyncify_data)
          )
          (i32.const -4)
         )
        )
        (local.set $2
         (i32.load
          (i32.load
           (global.get $__asyncify_data)
          )
         )
        )
       )
      )
      (block
       (if
        (if (result i32)
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 0)
         )
         (i32.const 1)
         (i32.eq
          (local.get $2)
          (i32.const 0)
         )
        )
        (block
         (local.set $3
          (call $import2)
         )
         (if
          (i32.eq
           (global.get $__asyncify_state)
           (i32.const 1)
          )
          (br $__asyncify_unwind
           (i32.const 0)
          )
          (local.set $0
           (local.get $3)
          )
         )
        )
       )
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (drop
         (local.get $0)
        )
       )
      )
     )
     (return)
    )
   )
  )
  (block
   (i32.store
    (i32.load
     (global.get $__asyncify_data)
    )
    (local.get $1)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
  (block
   (local.set $5
    (i32.load
     (global.get $__asyncify_data)
    )
   )
   (i32.store
    (local.get $5)
    (local.get $0)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
 )
 (func $calls-nothing (; 6 ;)
  (local $0 i32)
  (local.set $0
   (i32.eqz
    (i32.const 17)
   )
  )
  (drop
   (local.get $0)
  )
 )
 (func $many-locals (; 7 ;) (param $x i32) (result i32)
  (local $y i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (local $7 i32)
  (local $8 i32)
  (local $9 i32)
  (local $10 i32)
  (local $11 i32)
  (local $12 i32)
  (local $13 i32)
  (if
   (i32.eq
    (global.get $__asyncify_state)
    (i32.const 2)
   )
   (block
    (i32.store
     (global.get $__asyncify_data)
     (i32.add
      (i32.load
       (global.get $__asyncify_data)
      )
      (i32.const -40)
     )
    )
    (local.set $12
     (i32.load
      (global.get $__asyncify_data)
     )
    )
    (local.set $x
     (i32.load
      (local.get $12)
     )
    )
    (local.set $y
     (i32.load offset=4
      (local.get $12)
     )
    )
    (local.set $2
     (i32.load offset=8
      (local.get $12)
     )
    )
    (local.set $3
     (i32.load offset=12
      (local.get $12)
     )
    )
    (local.set $4
     (i32.load offset=16
      (local.get $12)
     )
    )
    (local.set $5
     (i32.load offset=20
      (local.get $12)
     )
    )
    (local.set $6
     (i32.load offset=24
      (local.get $12)
     )
    )
    (local.set $7
     (i32.load offset=28
      (local.get $12)
     )
    )
    (local.set $8
     (i32.load offset=32
      (local.get $12)
     )
    )
    (local.set $9
     (i32.load offset=36
      (local.get $12)
     )
    )
   )
  )
  (local.set $10
   (block $__asyncify_unwind (result i32)
    (block
     (block
      (if
       (i32.eq
        (global.get $__asyncify_state)
        (i32.const 2)
       )
       (block
        (i32.store
         (global.get $__asyncify_data)
         (i32.add
          (i32.load
           (global.get $__asyncify_data)
          )
          (i32.const -4)
         )
        )
        (local.set $11
         (i32.load
          (i32.load
           (global.get $__asyncify_data)
          )
         )
        )
       )
      )
      (block
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (loop $l
         (local.set $2
          (local.get $y)
         )
         (local.set $3
          (i32.add
           (local.get $2)
           (i32.const 1)
          )
         )
         (local.set $x
          (local.get $3)
         )
         (local.set $4
          (local.get $x)
         )
         (local.set $5
          (i32.div_s
           (local.get $4)
           (i32.const 3)
          )
         )
         (local.set $y
          (local.get $5)
         )
         (local.set $6
          (local.get $y)
         )
         (br_if $l
          (local.get $6)
         )
        )
       )
       (if
        (if (result i32)
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 0)
         )
         (i32.const 1)
         (i32.eq
          (local.get $11)
          (i32.const 0)
         )
        )
        (block
         (call $import)
         (if
          (i32.eq
           (global.get $__asyncify_state)
           (i32.const 1)
          )
          (br $__asyncify_unwind
           (i32.const 0)
          )
         )
        )
       )
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (block
         (local.set $7
          (local.get $y)
         )
         (return
          (local.get $7)
         )
        )
       )
       (nop)
      )
      (unreachable)
     )
     (unreachable)
    )
   )
  )
  (block
   (i32.store
    (i32.load
     (global.get $__asyncify_data)
    )
    (local.get $10)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
  (block
   (local.set $13
    (i32.load
     (global.get $__asyncify_data)
    )
   )
   (i32.store
    (local.get $13)
    (local.get $x)
   )
   (i32.store offset=4
    (local.get $13)
    (local.get $y)
   )
   (i32.store offset=8
    (local.get $13)
    (local.get $2)
   )
   (i32.store offset=12
    (local.get $13)
    (local.get $3)
   )
   (i32.store offset=16
    (local.get $13)
    (local.get $4)
   )
   (i32.store offset=20
    (local.get $13)
    (local.get $5)
   )
   (i32.store offset=24
    (local.get $13)
    (local.get $6)
   )
   (i32.store offset=28
    (local.get $13)
    (local.get $7)
   )
   (i32.store offset=32
    (local.get $13)
    (local.get $8)
   )
   (i32.store offset=36
    (local.get $13)
    (local.get $9)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 40)
    )
   )
  )
  (i32.const 0)
 )
 (func $calls-import2-if (; 8 ;) (param $x i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (if
   (i32.eq
    (global.get $__asyncify_state)
    (i32.const 2)
   )
   (block
    (i32.store
     (global.get $__asyncify_data)
     (i32.add
      (i32.load
       (global.get $__asyncify_data)
      )
      (i32.const -8)
     )
    )
    (local.set $4
     (i32.load
      (global.get $__asyncify_data)
     )
    )
    (local.set $x
     (i32.load
      (local.get $4)
     )
    )
    (local.set $1
     (i32.load offset=4
      (local.get $4)
     )
    )
   )
  )
  (local.set $2
   (block $__asyncify_unwind (result i32)
    (block
     (block
      (if
       (i32.eq
        (global.get $__asyncify_state)
        (i32.const 2)
       )
       (block
        (i32.store
         (global.get $__asyncify_data)
         (i32.add
          (i32.load
           (global.get $__asyncify_data)
          )
          (i32.const -4)
         )
        )
        (local.set $3
         (i32.load
          (i32.load
           (global.get $__asyncify_data)
          )
         )
        )
       )
      )
      (block
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (local.set $1
         (local.get $x)
        )
       )
       (if
        (i32.or
         (local.get $1)
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 2)
         )
        )
        (if
         (if (result i32)
          (i32.eq
           (global.get $__asyncify_state)
           (i32.const 0)
          )
          (i32.const 1)
          (i32.eq
           (local.get $3)
           (i32.const 0)
          )
         )
         (block
          (call $import)
          (if
           (i32.eq
            (global.get $__asyncify_state)
            (i32.const 1)
           )
           (br $__asyncify_unwind
            (i32.const 0)
           )
          )
         )
        )
       )
      )
     )
     (return)
    )
   )
  )
  (block
   (i32.store
    (i32.load
     (global.get $__asyncify_data)
    )
    (local.get $2)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
  (block
   (local.set $5
    (i32.load
     (global.get $__asyncify_data)
    )
   )
   (i32.store
    (local.get $5)
    (local.get $x)
   )
   (i32.store offset=4
    (local.get $5)
    (local.get $1)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 8)
    )
   )
  )
 )
 (func $calls-import2-if-else (; 9 ;) (param $x i32)
  (local $1 i32)
  (local.set $1
   (local.get $x)
  )
  (if
   (local.get $1)
   (call $import3
    (i32.const 1)
   )
   (call $import3
    (i32.const 2)
   )
  )
 )
 (func $calls-import2-if-else-oneside (; 10 ;) (param $x i32) (result i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (block
   (local.set $1
    (local.get $x)
   )
   (if
    (local.get $1)
    (return
     (i32.const 1)
    )
    (call $import3
     (i32.const 2)
    )
   )
  )
  (return
   (i32.const 3)
  )
 )
 (func $calls-import2-if-else-oneside2 (; 11 ;) (param $x i32) (result i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (block
   (local.set $1
    (local.get $x)
   )
   (if
    (local.get $1)
    (call $import3
     (i32.const 1)
    )
    (return
     (i32.const 2)
    )
   )
  )
  (return
   (i32.const 3)
  )
 )
 (func $calls-loop (; 12 ;) (param $x i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (loop $l
   (call $import3
    (i32.const 1)
   )
   (local.set $1
    (local.get $x)
   )
   (local.set $2
    (i32.add
     (local.get $1)
     (i32.const 1)
    )
   )
   (local.set $x
    (local.get $2)
   )
   (local.set $3
    (local.get $x)
   )
   (br_if $l
    (local.get $3)
   )
  )
 )
 (func $calls-loop2 (; 13 ;)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (if
   (i32.eq
    (global.get $__asyncify_state)
    (i32.const 2)
   )
   (block
    (i32.store
     (global.get $__asyncify_data)
     (i32.add
      (i32.load
       (global.get $__asyncify_data)
      )
      (i32.const -4)
     )
    )
    (local.set $4
     (i32.load
      (global.get $__asyncify_data)
     )
    )
    (local.set $0
     (i32.load
      (local.get $4)
     )
    )
   )
  )
  (local.set $1
   (block $__asyncify_unwind (result i32)
    (block
     (block
      (if
       (i32.eq
        (global.get $__asyncify_state)
        (i32.const 2)
       )
       (block
        (i32.store
         (global.get $__asyncify_data)
         (i32.add
          (i32.load
           (global.get $__asyncify_data)
          )
          (i32.const -4)
         )
        )
        (local.set $2
         (i32.load
          (i32.load
           (global.get $__asyncify_data)
          )
         )
        )
       )
      )
      (loop $l
       (if
        (if (result i32)
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 0)
         )
         (i32.const 1)
         (i32.eq
          (local.get $2)
          (i32.const 0)
         )
        )
        (block
         (local.set $3
          (call $import2)
         )
         (if
          (i32.eq
           (global.get $__asyncify_state)
           (i32.const 1)
          )
          (br $__asyncify_unwind
           (i32.const 0)
          )
          (local.set $0
           (local.get $3)
          )
         )
        )
       )
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (br_if $l
         (local.get $0)
        )
       )
      )
     )
     (return)
    )
   )
  )
  (block
   (i32.store
    (i32.load
     (global.get $__asyncify_data)
    )
    (local.get $1)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
  (block
   (local.set $5
    (i32.load
     (global.get $__asyncify_data)
    )
   )
   (i32.store
    (local.get $5)
    (local.get $0)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
 )
 (func $calls-mix (; 14 ;)
  (local $0 i32)
  (local $1 i32)
  (if
   (i32.eq
    (global.get $__asyncify_state)
    (i32.const 2)
   )
   (nop)
  )
  (local.set $0
   (block $__asyncify_unwind (result i32)
    (block
     (block
      (if
       (i32.eq
        (global.get $__asyncify_state)
        (i32.const 2)
       )
       (block
        (i32.store
         (global.get $__asyncify_data)
         (i32.add
          (i32.load
           (global.get $__asyncify_data)
          )
          (i32.const -4)
         )
        )
        (local.set $1
         (i32.load
          (i32.load
           (global.get $__asyncify_data)
          )
         )
        )
       )
      )
      (block
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (call $boring)
       )
       (if
        (if (result i32)
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 0)
         )
         (i32.const 1)
         (i32.eq
          (local.get $1)
          (i32.const 0)
         )
        )
        (block
         (call $import)
         (if
          (i32.eq
           (global.get $__asyncify_state)
           (i32.const 1)
          )
          (br $__asyncify_unwind
           (i32.const 0)
          )
         )
        )
       )
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (call $boring)
       )
       (if
        (if (result i32)
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 0)
         )
         (i32.const 1)
         (i32.eq
          (local.get $1)
          (i32.const 1)
         )
        )
        (block
         (call $import)
         (if
          (i32.eq
           (global.get $__asyncify_state)
           (i32.const 1)
          )
          (br $__asyncify_unwind
           (i32.const 1)
          )
         )
        )
       )
      )
     )
     (return)
    )
   )
  )
  (block
   (i32.store
    (i32.load
     (global.get $__asyncify_data)
    )
    (local.get $0)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
  (nop)
 )
 (func $boring (; 15 ;)
  (nop)
 )
 (func $calls-mix-deep (; 16 ;)
  (local $0 i32)
  (local $1 i32)
  (if
   (i32.eq
    (global.get $__asyncify_state)
    (i32.const 2)
   )
   (nop)
  )
  (local.set $0
   (block $__asyncify_unwind (result i32)
    (block
     (block
      (if
       (i32.eq
        (global.get $__asyncify_state)
        (i32.const 2)
       )
       (block
        (i32.store
         (global.get $__asyncify_data)
         (i32.add
          (i32.load
           (global.get $__asyncify_data)
          )
          (i32.const -4)
         )
        )
        (local.set $1
         (i32.load
          (i32.load
           (global.get $__asyncify_data)
          )
         )
        )
       )
      )
      (block
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (call $boring-deep)
       )
       (if
        (if (result i32)
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 0)
         )
         (i32.const 1)
         (i32.eq
          (local.get $1)
          (i32.const 0)
         )
        )
        (block
         (call $import-deep)
         (if
          (i32.eq
           (global.get $__asyncify_state)
           (i32.const 1)
          )
          (br $__asyncify_unwind
           (i32.const 0)
          )
         )
        )
       )
       (if
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (call $boring)
       )
       (if
        (if (result i32)
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 0)
         )
         (i32.const 1)
         (i32.eq
          (local.get $1)
          (i32.const 1)
         )
        )
        (block
         (call $import)
         (if
          (i32.eq
           (global.get $__asyncify_state)
           (i32.const 1)
          )
          (br $__asyncify_unwind
           (i32.const 1)
          )
         )
        )
       )
      )
     )
     (return)
    )
   )
  )
  (block
   (i32.store
    (i32.load
     (global.get $__asyncify_data)
    )
    (local.get $0)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
  (nop)
 )
 (func $boring-deep (; 17 ;)
  (call $boring)
 )
 (func $import-deep (; 18 ;)
  (local $0 i32)
  (local $1 i32)
  (if
   (i32.eq
    (global.get $__asyncify_state)
    (i32.const 2)
   )
   (nop)
  )
  (local.set $0
   (block $__asyncify_unwind (result i32)
    (block
     (block
      (if
       (i32.eq
        (global.get $__asyncify_state)
        (i32.const 2)
       )
       (block
        (i32.store
         (global.get $__asyncify_data)
         (i32.add
          (i32.load
           (global.get $__asyncify_data)
          )
          (i32.const -4)
         )
        )
        (local.set $1
         (i32.load
          (i32.load
           (global.get $__asyncify_data)
          )
         )
        )
       )
      )
      (if
       (if (result i32)
        (i32.eq
         (global.get $__asyncify_state)
         (i32.const 0)
        )
        (i32.const 1)
        (i32.eq
         (local.get $1)
         (i32.const 0)
        )
       )
       (block
        (call $import)
        (if
         (i32.eq
          (global.get $__asyncify_state)
          (i32.const 1)
         )
         (br $__asyncify_unwind
          (i32.const 0)
         )
        )
       )
      )
     )
     (return)
    )
   )
  )
  (block
   (i32.store
    (i32.load
     (global.get $__asyncify_data)
    )
    (local.get $0)
   )
   (i32.store
    (global.get $__asyncify_data)
    (i32.add
     (i32.load
      (global.get $__asyncify_data)
     )
     (i32.const 4)
    )
   )
  )
  (nop)
 )
 (func $asyncify_start_unwind (; 19 ;) (param $0 i32)
  (global.set $__asyncify_state
   (i32.const 1)
  )
  (global.set $__asyncify_data
   (local.get $0)
  )
  (if
   (i32.gt_u
    (i32.load
     (global.get $__asyncify_data)
    )
    (i32.load offset=4
     (global.get $__asyncify_data)
    )
   )
   (unreachable)
  )
 )
 (func $asyncify_stop_unwind (; 20 ;)
  (global.set $__asyncify_state
   (i32.const 0)
  )
  (if
   (i32.gt_u
    (i32.load
     (global.get $__asyncify_data)
    )
    (i32.load offset=4
     (global.get $__asyncify_data)
    )
   )
   (unreachable)
  )
 )
 (func $asyncify_start_rewind (; 21 ;) (param $0 i32)
  (global.set $__asyncify_state
   (i32.const 2)
  )
  (global.set $__asyncify_data
   (local.get $0)
  )
  (if
   (i32.gt_u
    (i32.load
     (global.get $__asyncify_data)
    )
    (i32.load offset=4
     (global.get $__asyncify_data)
    )
   )
   (unreachable)
  )
 )
 (func $asyncify_stop_rewind (; 22 ;)
  (global.set $__asyncify_state
   (i32.const 0)
  )
  (if
   (i32.gt_u
    (i32.load
     (global.get $__asyncify_data)
    )
    (i32.load offset=4
     (global.get $__asyncify_data)
    )
   )
   (unreachable)
  )
 )
)
