(module
 (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32)))
 (type $f64_=>_i32 (func (param f64) (result i32)))
 (import "env" "memory" (memory $memory 256 256))
 (data (global.get $__memory_base) "two_sides.asm.js")
 (import "env" "__memory_base" (global $__memory_base i32))
 (import "asm2wasm" "f64-to-int" (func $f64-to-int (param f64) (result i32)))
 (export "_test" (func $_test))
 (func $_test (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
  (local $5 f64)
  (if (result i32)
   (local.get $4)
   (call $f64-to-int
    (f64.mul
     (f64.add
      (f64.convert_i32_s
       (local.get $2)
      )
      (local.tee $5
       (f64.convert_i32_s
        (i32.mul
         (local.get $0)
         (local.get $1)
        )
       )
      )
     )
     (f64.add
      (local.get $5)
      (f64.convert_i32_s
       (local.get $3)
      )
     )
    )
   )
   (call $f64-to-int
    (f64.mul
     (f64.add
      (f64.convert_i32_s
       (local.get $2)
      )
      (local.tee $5
       (f64.convert_i32_s
        (i32.mul
         (local.get $2)
         (local.get $3)
        )
       )
      )
     )
     (f64.add
      (f64.convert_i32_s
       (local.get $3)
      )
      (local.get $5)
     )
    )
   )
  )
 )
)
