(module
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (memory $memory 0)
 (export "fib" (func $fib))
 (export "looped" (func $looped))
 (export "t0" (func $looped))
 (export "t1" (func $t1))
 (export "t2" (func $t2))
 (export "t3" (func $t3))
 (export "memory" (memory $memory))
 (func $fib (; has Stack IR ;) (param $0 i32) (result i32)
  (if
   (i32.le_s
    (local.get $0)
    (i32.const 2)
   )
   (return
    (local.get $0)
   )
  )
  (i32.add
   (call $fib
    (i32.sub
     (local.get $0)
     (i32.const 1)
    )
   )
   (call $fib
    (i32.sub
     (local.get $0)
     (i32.const 2)
    )
   )
  )
 )
 (func $looped (; has Stack IR ;) (param $0 i32) (result i32)
  (loop $L0
   (if
    (i32.ge_s
     (local.get $0)
     (i32.const 0)
    )
    (block
     (local.set $0
      (i32.sub
       (local.get $0)
       (i32.const 1)
      )
     )
     (br $L0)
    )
   )
  )
  (local.get $0)
 )
 (func $t1 (; has Stack IR ;) (param $0 i32) (result i32)
  (local.set $0
   (i32.add
    (local.get $0)
    (i32.const 1)
   )
  )
  (loop $L0
   (if
    (i32.ge_s
     (local.get $0)
     (i32.const 0)
    )
    (block
     (local.set $0
      (i32.sub
       (local.get $0)
       (i32.const 1)
      )
     )
     (br $L0)
    )
   )
  )
  (local.get $0)
 )
 (func $t2 (; has Stack IR ;) (param $0 i32) (result i32)
  (call $fib
   (local.get $0)
  )
 )
 (func $t3 (; has Stack IR ;) (param $0 i32) (result i32)
  (call $fib
   (i32.add
    (local.get $0)
    (i32.const 1)
   )
  )
 )
)
