(module
  (import "env" "memory" (memory 6 1024 shared))
  (func $__wasm_init_tls (export "__wasm_init_tls") (param i32)
    (i32.const 232323)
    drop
  )
  (func $__wbindgen_malloc (export "__wbindgen_malloc") (param i32 i32) (result i32)
    i32.const 999999
  )
  (func $start
    i32.const 101010
    drop
  )
  (func $__wbindgen_free (export "__wbindgen_free") (param i32 i32 i32))
  (global (export "__heap_base") i32 (i32.const 327680))
  (global (export "__tls_size") i32 (i32.const 128))
  (global (export "__tls_align") i32 (i32.const 4))
  (global (export "__tls_base") (mut i32) (i32.const 0))
  ;; stack pointer
  (global (mut i32) (i32.const 65536))
  (start $start)
)

(; CHECK-ALL:
(module
  (type (;0;) (func))
  (type (;1;) (func (param i32)))
  (type (;2;) (func (param i32 i32) (result i32)))
  (type (;3;) (func (param i32 i32 i32)))
  (import "env" "memory" (memory (;0;) 7 1024 shared))
  (global (;0;) i32 i32.const 393216)
  (global (;1;) (mut i32) i32.const 0)
  (global (;2;) (mut i32) i32.const 65536)
  (global (;3;) (mut i32) i32.const 0)
  (global (;4;) (mut i32) i32.const 2097152)
  (export "__wbindgen_malloc" (func $__wbindgen_malloc))
  (export "__wbindgen_free" (func $__wbindgen_free))
  (export "__heap_base" (global 0))
  (export "__tls_base" (global 1))
  (export "__stack_alloc" (global 3))
  (export "__wbindgen_thread_destroy" (func $__wbindgen_thread_destroy))
  (export "__wbindgen_start" (func 1))
  (func $__wbindgen_thread_destroy (;0;) (type 3) (param i32 i32 i32)
    local.get 0
    if ;; label = @1
      local.get 0
      i32.const 128
      i32.const 4
      call $__wbindgen_free
    else
      global.get 1
      i32.const 128
      i32.const 4
      call $__wbindgen_free
      i32.const -2147483648
      global.set 1
    end
    local.get 1
    if ;; label = @1
      local.get 1
      local.get 2
      i32.const 2097152
      local.get 2
      select
      i32.const 16
      call $__wbindgen_free
    else
      i32.const 393216
      global.set 2
      loop ;; label = @2
        i32.const 327684
        i32.const 0
        i32.const 1
        i32.atomic.rmw.cmpxchg
        if ;; label = @3
          i32.const 327684
          i32.const 1
          i64.const -1
          memory.atomic.wait32
          drop
          br 1 (;@2;)
        else
        end
      end
      global.get 3
      global.get 4
      i32.const 16
      call $__wbindgen_free
      i32.const 327684
      i32.const 0
      i32.atomic.store
      i32.const 327684
      i32.const 1
      memory.atomic.notify
      drop
      i32.const 0
      global.set 3
    end
  )
  (func (;1;) (type 1) (param i32)
    (local i32 i32)
    call $start
    i32.const 327680
    i32.const 1
    i32.atomic.rmw.add
    local.tee 2
    if ;; label = @1
      local.get 0
      if ;; label = @2
        local.get 0
        global.set 4
      else
      end
      i32.const 393216
      global.set 2
      loop ;; label = @2
        i32.const 327684
        i32.const 0
        i32.const 1
        i32.atomic.rmw.cmpxchg
        if ;; label = @3
          i32.const 327684
          i32.const 1
          i64.const -1
          memory.atomic.wait32
          drop
          br 1 (;@2;)
        else
        end
      end
      global.get 4
      i32.const 16
      call $__wbindgen_malloc
      local.tee 1
      i32.const 327684
      i32.const 0
      i32.atomic.store
      i32.const 327684
      i32.const 1
      memory.atomic.notify
      drop
      global.set 3
      global.get 3
      global.get 4
      i32.add
      global.set 2
    else
    end
    i32.const 128
    i32.const 4
    call $__wbindgen_malloc
    global.set 1
    global.get 1
    call $__wasm_init_tls
  )
  (func $__wasm_init_tls (;2;) (type 1) (param i32)
    i32.const 232323
    drop
  )
  (func $start (;3;) (type 0)
    i32.const 101010
    drop
  )
  (func $__wbindgen_malloc (;4;) (type 2) (param i32 i32) (result i32)
    i32.const 999999
  )
  (func $__wbindgen_free (;5;) (type 3) (param i32 i32 i32))
)
;)
