(module
 (type $0 (func (param i64) (result i64)))
 (export "fac-expr" (func $0))
 (export "fac-stack" (func $1))
 (export "fac-stack-raw" (func $2))
 (export "fac-mixed" (func $3))
 (export "fac-mixed-raw" (func $4))
 (func $0 (; 0 ;) (type $0) (param $var$0 i64) (result i64)
  (local $var$1 i64)
  (local $var$2 i64)
  (local.set $var$1
   (local.get $var$0)
  )
  (local.set $var$2
   (i64.const 1)
  )
  (block $label$1
   (loop $label$2
    (if
     (i64.eq
      (local.get $var$1)
      (i64.const 0)
     )
     (then
      (br $label$1)
     )
     (else
      (block $label$5
       (local.set $var$2
        (i64.mul
         (local.get $var$1)
         (local.get $var$2)
        )
       )
       (local.set $var$1
        (i64.sub
         (local.get $var$1)
         (i64.const 1)
        )
       )
      )
     )
    )
    (br $label$2)
   )
  )
  (local.get $var$2)
 )
 (func $1 (; 1 ;) (type $0) (param $var$0 i64) (result i64)
  (local $var$1 i64)
  (local $var$2 i64)
  (local.set $var$1
   (local.get $var$0)
  )
  (local.set $var$2
   (i64.const 1)
  )
  (block $label$1
   (loop $label$2
    (if
     (i64.eq
      (local.get $var$1)
      (i64.const 0)
     )
     (then
      (br $label$1)
     )
     (else
      (block
       (local.set $var$2
        (i64.mul
         (local.get $var$1)
         (local.get $var$2)
        )
       )
       (local.set $var$1
        (i64.sub
         (local.get $var$1)
         (i64.const 1)
        )
       )
      )
     )
    )
    (br $label$2)
   )
  )
  (local.get $var$2)
 )
 (func $2 (; 2 ;) (type $0) (param $var$0 i64) (result i64)
  (local $var$1 i64)
  (local $var$2 i64)
  (local.set $var$1
   (local.get $var$0)
  )
  (local.set $var$2
   (i64.const 1)
  )
  (block $label$1
   (loop $label$2
    (if
     (i64.eq
      (local.get $var$1)
      (i64.const 0)
     )
     (then
      (br $label$1)
     )
     (else
      (block
       (local.set $var$2
        (i64.mul
         (local.get $var$1)
         (local.get $var$2)
        )
       )
       (local.set $var$1
        (i64.sub
         (local.get $var$1)
         (i64.const 1)
        )
       )
      )
     )
    )
    (br $label$2)
   )
  )
  (local.get $var$2)
 )
 (func $3 (; 3 ;) (type $0) (param $var$0 i64) (result i64)
  (local $var$1 i64)
  (local $var$2 i64)
  (local.set $var$1
   (local.get $var$0)
  )
  (local.set $var$2
   (i64.const 1)
  )
  (block $label$1
   (loop $label$2
    (if
     (i64.eq
      (local.get $var$1)
      (i64.const 0)
     )
     (then
      (br $label$1)
     )
     (else
      (block
       (local.set $var$2
        (i64.mul
         (local.get $var$1)
         (local.get $var$2)
        )
       )
       (local.set $var$1
        (i64.sub
         (local.get $var$1)
         (i64.const 1)
        )
       )
      )
     )
    )
    (br $label$2)
   )
  )
  (local.get $var$2)
 )
 (func $4 (; 4 ;) (type $0) (param $var$0 i64) (result i64)
  (local $var$1 i64)
  (local $var$2 i64)
  (local.set $var$1
   (local.get $var$0)
  )
  (local.set $var$2
   (i64.const 1)
  )
  (block $label$1
   (loop $label$2
    (if
     (i64.eq
      (local.get $var$1)
      (i64.const 0)
     )
     (then
      (br $label$1)
     )
     (else
      (block
       (local.set $var$2
        (i64.mul
         (local.get $var$1)
         (local.get $var$2)
        )
       )
       (local.set $var$1
        (i64.sub
         (local.get $var$1)
         (i64.const 1)
        )
       )
      )
     )
    )
    (br $label$2)
   )
  )
  (local.get $var$2)
 )
)


(assert_return (invoke "fac-expr" (i64.const 25)) (i64.const 7034535277573963776))
(assert_return (invoke "fac-stack" (i64.const 25)) (i64.const 7034535277573963776))
(assert_return (invoke "fac-mixed" (i64.const 25)) (i64.const 7034535277573963776))
