(module $shared_longjmp.wasm
 (type $0 (func))
 (type $1 (func (param i32 i32 i32)))
 (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))
 (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)
 )
 ;; dylink section
 ;;   memorysize: 8
 ;;   memoryalignment: 2
 ;;   tablesize: 0
 ;;   tablealignment: 0
 ;; custom section "producers", size 115
 ;; features section: mutable-globals, nontrapping-float-to-int, bulk-memory, sign-ext, reference-types, multivalue, bulk-memory-opt, call-indirect-overlong
)

