(module $shared_longjmp.wasm
 (type $1 (func (param i32 i32 i32)))
 (type $0 (func))
 (type $2 (func (param i32 i32)))
 (type $3 (func (param i32 i32) (result i32)))
 (type $4 (func (param i32)))
 (type $5 (func (result i32)))
 (import "env" "memory" (memory $mimport$0 1))
 (import "env" "__indirect_function_table" (table $timport$0 0 funcref))
 (import "env" "__stack_pointer" (global $__stack_pointer (mut i32)))
 (import "env" "__memory_base" (global $__memory_base i32))
 (import "env" "__table_base" (global $__table_base i32))
 (import "GOT.mem" "__THREW__" (global $__THREW__ (mut i32)))
 (import "GOT.func" "emscripten_longjmp" (global $emscripten_longjmp (mut i32)))
 (import "GOT.mem" "__threwValue" (global $__threwValue (mut i32)))
 (import "env" "__wasm_setjmp" (func $__wasm_setjmp (param i32 i32 i32)))
 (import "env" "emscripten_longjmp" (func $emscripten_longjmp (param i32 i32)))
 (import "env" "invoke_vii" (func $invoke_vii (param i32 i32 i32)))
 (import "env" "__wasm_setjmp_test" (func $__wasm_setjmp_test (param i32 i32) (result i32)))
 (import "env" "setTempRet0" (func $setTempRet0 (param i32)))
 (import "env" "getTempRet0" (func $getTempRet0 (result i32)))
 (global $global$0 i32 (i32.const 0))
 (global $global$1 i32 (i32.const 4))
 (export "__wasm_call_ctors" (func $__wasm_call_ctors))
 (export "_start" (func $_start))
 (export "__THREW__" (global $global$0))
 (export "__threwValue" (global $global$1))
 (export "dynCall_vii" (func $dynCall_vii))
 (start $__wasm_init_memory)
 (func $__wasm_call_ctors
 )
 (func $__wasm_init_memory
  (memory.fill
   (i32.add
    (i32.const 0)
    (global.get $__memory_base)
   )
   (i32.const 0)
   (i32.const 8)
  )
 )
 (func $_start
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (global.set $__stack_pointer
   (local.tee $0
    (i32.sub
     (global.get $__stack_pointer)
     (i32.const 16)
    )
   )
  )
  (call $__wasm_setjmp
   (local.get $1)
   (i32.const 1)
   (i32.add
    (local.get $0)
    (i32.const 12)
   )
  )
  (local.set $1
   (i32.const 0)
  )
  (block $block2
   (block $block
    (loop $label
     (br_if $block
      (local.get $1)
     )
     (i32.store
      (local.tee $1
       (global.get $__THREW__)
      )
      (i32.const 0)
     )
     (call $invoke_vii
      (global.get $emscripten_longjmp)
      (local.get $1)
      (i32.const 1)
     )
     (local.set $2
      (i32.load
       (local.get $1)
      )
     )
     (i32.store
      (local.get $1)
      (i32.const 0)
     )
     (local.set $1
      (global.get $__threwValue)
     )
     (block $block1
      (br_if $block1
       (i32.eqz
        (local.get $2)
       )
      )
      (br_if $block1
       (i32.eqz
        (local.tee $1
         (i32.load
          (local.get $1)
         )
        )
       )
      )
      (br_if $block2
       (i32.eqz
        (call $__wasm_setjmp_test
         (local.get $2)
         (i32.add
          (local.get $0)
          (i32.const 12)
         )
        )
       )
      )
      (call $setTempRet0
       (local.get $1)
      )
     )
     (local.set $1
      (call $getTempRet0)
     )
     (br $label)
    )
   )
   (global.set $__stack_pointer
    (i32.add
     (local.get $0)
     (i32.const 16)
    )
   )
   (return)
  )
  (call $emscripten_longjmp
   (local.get $2)
   (local.get $1)
  )
  (unreachable)
 )
 (func $dynCall_vii (param $fptr i32) (param $0 i32) (param $1 i32)
  (call_indirect (type $2)
   (local.get $0)
   (local.get $1)
   (local.get $fptr)
  )
 )
)
