(module
 (export "add" (func $add))
 (export "ret" (func $ret))
 (export "opts" (func $opts))
 (export "fib" (func $fib))
 (export "switch_reach" (func $switch_reach))
 (export "nofile" (func $nofile))
 (func $add (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
  ;;@ tests/other_file.cpp:314159:0
  (i32.add
   (get_local $1)
   (get_local $1)
  )
 )
 (func $ret (; 1 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  ;;@ return.cpp:50:0
  (set_local $0
   (i32.shl
    (get_local $0)
    (i32.const 1)
   )
  )
  ;;@ return.cpp:100:0
  (i32.add
   (get_local $0)
   (i32.const 1)
  )
 )
 (func $opts (; 2 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
  ;;@ even-opted.cpp:1:0
  (set_local $0
   (i32.add
    (get_local $0)
    (get_local $1)
   )
  )
  ;;@ even-opted.cpp:2:0
  (set_local $1
   (i32.shr_s
    (get_local $1)
    (get_local $0)
   )
  )
  ;;@ even-opted.cpp:3:0
  (i32.add
   (i32.rem_s
    (get_local $0)
    (get_local $1)
   )
   (get_local $1)
  )
 )
 (func $fib (; 3 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (set_local $4
   (if (result i32)
    ;;@ fib.c:3:0
    (i32.gt_s
     (get_local $0)
     (i32.const 0)
    )
    (block (result i32)
     (set_local $3
      (i32.const 1)
     )
     (i32.const 0)
    )
    (block
     (set_local $1
      (i32.const 1)
     )
     ;;@ fib.c:8:0
     (return
      (get_local $1)
     )
    )
   )
  )
  (loop $while-in
   ;;@ fib.c:4:0
   (set_local $1
    (i32.add
     (get_local $3)
     (get_local $4)
    )
   )
   ;;@ fib.c:3:0
   (set_local $2
    (i32.add
     (get_local $2)
     (i32.const 1)
    )
   )
   (if
    (i32.ne
     (get_local $0)
     (get_local $2)
    )
    (block
     (set_local $4
      (get_local $3)
     )
     (set_local $3
      (get_local $1)
     )
     (br $while-in)
    )
   )
  )
  ;;@ fib.c:8:0
  (get_local $1)
 )
 (func $switch_reach (; 4 ;) (; has Stack IR ;) (param $0 i32) (result i32)
  (local $1 i32)
  (set_local $1
   (block $__rjto$0 (result i32)
    (block $__rjti$0
     (br $__rjto$0
      (if (result i32)
       (i32.lt_s
        (tee_local $1
         (i32.add
          (get_local $0)
          (i32.const 52)
         )
        )
        (i32.const 1369188723)
       )
       (block (result i32)
        (br_if $__rjti$0
         (i32.eqz
          (i32.sub
           (get_local $1)
           (i32.const -1108210269)
          )
         )
        )
        (i32.const 0)
       )
       (block (result i32)
        (br_if $__rjti$0
         (i32.eqz
          (i32.sub
           (get_local $1)
           (i32.const 1369188723)
          )
         )
        )
        (i32.const 0)
       )
      )
     )
    )
    (call $switch_reach
     (get_local $0)
    )
   )
  )
  (drop
   (call $switch_reach
    (get_local $0)
   )
  )
  ;;@ /tmp/emscripten_test_binaryen2_28hnAe/src.c:59950:0
  (get_local $1)
 )
 (func $nofile (; 5 ;) (; has Stack IR ;)
  ;;@ (unknown):1337:0
  (call $nofile)
 )
)
