(module
 (type $i32_=>_i32 (func (param i32) (result i32)))
 (type $i32_i32_=>_none (func (param i32 i32)))
 (type $none_=>_i32 (func (result i32)))
 (type $i32_=>_none (func (param i32)))
 (type $none_=>_none (func))
 (import "env" "memory" (memory $mimport$0 256 256))
 (import "env" "table" (table $timport$0 0 0 funcref))
 (import "env" "DYNAMICTOP_PTR" (global $gimport$0 i32))
 (import "env" "tempDoublePtr" (global $gimport$1 i32))
 (import "env" "ABORT" (global $gimport$2 i32))
 (import "env" "STACKTOP" (global $gimport$3 i32))
 (import "env" "STACK_MAX" (global $gimport$4 i32))
 (import "env" "gb" (global $gimport$5 i32))
 (import "env" "fb" (global $gimport$6 i32))
 (import "global" "NaN" (global $gimport$7 f64))
 (import "global" "Infinity" (global $gimport$8 f64))
 (import "env" "memoryBase" (global $gimport$9 i32))
 (import "env" "tableBase" (global $gimport$10 i32))
 (global $global$0 (mut i32) (global.get $gimport$0))
 (global $global$1 (mut i32) (global.get $gimport$1))
 (global $global$2 (mut i32) (global.get $gimport$2))
 (global $global$3 (mut i32) (global.get $gimport$3))
 (global $global$4 (mut i32) (global.get $gimport$4))
 (global $global$5 (mut i32) (global.get $gimport$5))
 (global $global$6 (mut i32) (global.get $gimport$6))
 (global $global$7 (mut i32) (i32.const 0))
 (global $global$8 (mut i32) (i32.const 0))
 (global $global$9 (mut i32) (i32.const 0))
 (global $global$10 (mut i32) (i32.const 0))
 (global $global$11 (mut f64) (global.get $gimport$7))
 (global $global$12 (mut f64) (global.get $gimport$8))
 (global $global$13 (mut i32) (i32.const 0))
 (global $global$14 (mut i32) (i32.const 0))
 (global $global$15 (mut i32) (i32.const 0))
 (global $global$16 (mut i32) (i32.const 0))
 (global $global$17 (mut f64) (f64.const 0))
 (global $global$18 (mut i32) (i32.const 0))
 (global $global$19 (mut i32) (i32.const 0))
 (global $global$20 (mut i32) (i32.const 0))
 (global $global$21 (mut f64) (f64.const 0))
 (global $global$22 (mut i32) (i32.const 0))
 (global $global$23 (mut f64) (f64.const 0))
 (export "setThrew" (func $setThrew))
 (export "runPostSets" (func $runPostSets))
 (export "establishStackSpace" (func $establishStackSpace))
 (export "stackSave" (func $stackSave))
 (export "stackRestore" (func $stackRestore))
 (export "_fib" (func $_fib))
 (export "stackAlloc" (func $stackAlloc))
 (func $stackAlloc (param $0 i32) (result i32)
  (local $1 i32)
  (block $label$1
   (local.set $1
    (global.get $global$3)
   )
   (global.set $global$3
    (i32.add
     (global.get $global$3)
     (local.get $0)
    )
   )
   (global.set $global$3
    (i32.and
     (i32.add
      (global.get $global$3)
      (i32.const 15)
     )
     (i32.const -16)
    )
   )
   (return
    (local.get $1)
   )
  )
 )
 (func $stackSave (result i32)
  (return
   (global.get $global$3)
  )
 )
 (func $stackRestore (param $0 i32)
  (global.set $global$3
   (local.get $0)
  )
 )
 (func $establishStackSpace (param $0 i32) (param $1 i32)
  (block $label$1
   (global.set $global$3
    (local.get $0)
   )
   (global.set $global$4
    (local.get $1)
   )
  )
 )
 (func $setThrew (param $0 i32) (param $1 i32)
  (if
   (i32.eq
    (global.get $global$7)
    (i32.const 0)
   )
   (block
    (global.set $global$7
     (local.get $0)
    )
    (global.set $global$8
     (local.get $1)
    )
   )
  )
 )
 (func $_fib (param $0 i32) (result i32)
  (local $1 i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local $6 i32)
  (local $7 i32)
  (local $8 i32)
  (local $9 i32)
  (local $10 i32)
  (local $11 i32)
  (block $label$1
   (local.set $11
    (global.get $global$3)
   )
   ;;@ fib.c:3:0
   (local.set $6
    (i32.gt_s
     (local.get $0)
     (i32.const 0)
    )
   )
   (if
    (local.get $6)
    (block
     (local.set $1
      (i32.const 0)
     )
     (local.set $5
      (i32.const 1)
     )
     (local.set $8
      (i32.const 0)
     )
    )
    (block
     (local.set $4
      (i32.const 1)
     )
     ;;@ fib.c:8:0
     (return
      (local.get $4)
     )
    )
   )
   (loop $label$4
    (block $label$5
     ;;@ fib.c:4:0
     (local.set $3
      (i32.add
       (local.get $5)
       (local.get $1)
      )
     )
     ;;@ fib.c:3:0
     (local.set $9
      (i32.add
       (local.get $8)
       (i32.const 1)
      )
     )
     (local.set $7
      (i32.eq
       (local.get $9)
       (local.get $0)
      )
     )
     (if
      (local.get $7)
      (block
       (local.set $4
        (local.get $3)
       )
       (br $label$5)
      )
      (block
       (local.set $2
        (local.get $5)
       )
       (local.set $5
        (local.get $3)
       )
       (local.set $8
        (local.get $9)
       )
       (local.set $1
        (local.get $2)
       )
      )
     )
     (br $label$4)
    )
   )
   ;;@ fib.c:8:0
   (return
    (local.get $4)
   )
  )
 )
 (func $runPostSets
  (local $0 i32)
  (nop)
 )
 ;; custom section "sourceMappingURL", size 35, contents: "\"http://localhost:8000/fib.wasm.map"
)

