(module
 (type $0 (func))
 (type $1 (func (param i32)))
 (type $2 (func (param i32 i32) (result i32)))
 (type $3 (func (param f32 f32 i32) (result f32)))
 (type $4 (func (param f64 i32) (result f64)))
 (type $5 (func (param i32 i32 i32)))
 (type $6 (func (param i32) (result i32)))
 (type $FUNCSIG$ii (func (param i32) (result i32)))
 (type $FUNCSIG$viii (func (param i32 i32 i32)))
 (import "env" "_Z4atoiPKc" (func $atoi\28char\20const*\29 (param i32) (result i32)))
 (memory $0 2)
 (table $0 3 3 funcref)
 (elem (i32.const 1) $address_taken_func\28int\2c\20int\2c\20int\29 $address_taken_func2\28int\2c\20int\2c\20int\29)
 (global $global$0 (mut i32) (i32.const 16384))
 (global $global$1 i32 (i32.const 66112))
 (global $global$2 i32 (i32.const 568))
 (export "memory" (memory $0))
 (export "__wasm_call_ctors" (func $__wasm_call_ctors))
 (export "__heap_base" (global $global$1))
 (export "__data_end" (global $global$2))
 (export "main" (func $main))
 (export "stackSave" (func $stackSave))
 (export "stackAlloc" (func $stackAlloc))
 (export "stackRestore" (func $stackRestore))
 (export "__growWasmMemory" (func $__growWasmMemory))
 (export "dynCall_viii" (func $dynCall_viii))
 (func $__wasm_call_ctors (; 1 ;) (type $0)
  (nop)
 )
 (func $address_taken_func\28int\2c\20int\2c\20int\29 (; 2 ;) (type $5) (param $0 i32) (param $1 i32) (param $2 i32)
  (nop)
 )
 (func $address_taken_func2\28int\2c\20int\2c\20int\29 (; 3 ;) (type $5) (param $0 i32) (param $1 i32) (param $2 i32)
  (nop)
 )
 (func $main (; 4 ;) (type $2) (param $0 i32) (param $1 i32) (result i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (local $5 i32)
  (local.set $2
   (call $atoi\28char\20const*\29
    (i32.load offset=4
     (local.get $1)
    )
   )
  )
  (local.set $3
   (call $atoi\28char\20const*\29
    (i32.load offset=8
     (local.get $1)
    )
   )
  )
  (local.set $4
   (call $atoi\28char\20const*\29
    (i32.load offset=12
     (local.get $1)
    )
   )
  )
  (local.set $5
   (call $atoi\28char\20const*\29
    (i32.load offset=16
     (local.get $1)
    )
   )
  )
  (local.set $1
   (call $atoi\28char\20const*\29
    (i32.load offset=20
     (local.get $1)
    )
   )
  )
  (call_indirect (type $0)
   (local.get $2)
  )
  (call_indirect (type $1)
   (i32.const 3)
   (local.get $3)
  )
  (drop
   (call_indirect (type $2)
    (i32.const 4)
    (i32.const 5)
    (local.get $4)
   )
  )
  (drop
   (call_indirect (type $3)
    (f32.const 3.0999999046325684)
    (f32.const 4.199999809265137)
    (i32.const 5)
    (local.get $5)
   )
  )
  (drop
   (call_indirect (type $4)
    (f64.const 4.2)
    (i32.const 5)
    (local.get $1)
   )
  )
  (call_indirect (type $5)
   (i32.const 1)
   (i32.const 2)
   (i32.const 3)
   (select
    (i32.const 1)
    (i32.const 2)
    (i32.gt_s
     (local.get $0)
     (i32.const 3)
    )
   )
  )
  (i32.const 0)
 )
 (func $stackSave (; 5 ;) (result i32)
  (global.get $global$0)
 )
 (func $stackAlloc (; 6 ;) (param $0 i32) (result i32)
  (local $1 i32)
  (global.set $global$0
   (local.tee $1
    (i32.and
     (i32.sub
      (global.get $global$0)
      (local.get $0)
     )
     (i32.const -16)
    )
   )
  )
  (local.get $1)
 )
 (func $stackRestore (; 7 ;) (param $0 i32)
  (global.set $global$0
   (local.get $0)
  )
 )
 (func $__growWasmMemory (; 8 ;) (param $newSize i32) (result i32)
  (grow_memory
   (local.get $newSize)
  )
 )
 (func $dynCall_viii (; 9 ;) (param $fptr i32) (param $0 i32) (param $1 i32) (param $2 i32)
  (call_indirect (type $FUNCSIG$viii)
   (local.get $0)
   (local.get $1)
   (local.get $2)
   (local.get $fptr)
  )
 )
)
(;
--BEGIN METADATA --
{
  "staticBump": 0,
  "tableSize": 3,
  "initializers": [
    "__wasm_call_ctors"
  ],
  "declares": [
    "_Z4atoiPKc"
  ],
  "externs": [
  ],
  "implementedFunctions": [
    "___wasm_call_ctors",
    "_main",
    "_stackSave",
    "_stackAlloc",
    "_stackRestore",
    "___growWasmMemory",
    "_dynCall_viii"
  ],
  "exports": [
    "__wasm_call_ctors",
    "main",
    "stackSave",
    "stackAlloc",
    "stackRestore",
    "__growWasmMemory",
    "dynCall_viii"
  ],
  "namedGlobals": {
    "__heap_base" : "66112",
    "__data_end" : "568"
  },
  "invokeFuncs": [
  ],
  "features": [
    "--mvp-features",
    "--enable-threads",
    "--enable-mutable-globals",
    "--enable-nontrapping-float-to-int",
    "--enable-simd",
    "--enable-bulk-memory",
    "--enable-sign-ext"
  ]
}
-- END METADATA --
;)
