(module
 (type $FUNCSIG$vi (func (param i32)))
 (type $FUNCSIG$ii (func (param i32) (result i32)))
 (import "env" "memoryBase" (global $memoryBase$asm2wasm$import i32))
 (import "env" "abortStackOverflow" (func $abortStackOverflow (param i32)))
 (import "env" "_puts" (func $_puts (param i32) (result i32)))
 (global $STACKTOP (mut i32) (i32.const 0))
 (global $STACK_MAX (mut i32) (i32.const 0))
 (global $_global i32 (i32.const 5242912))
 (export "__ZN3FooC2Ev" (func $__ZN3FooC2Ev))
 (export "__post_instantiate" (func $__post_instantiate))
 (export "runPostSets" (func $runPostSets))
 (export "_global" (global $_global))
 (func $__ZN3FooC2Ev (; 2 ;) (; has Stack IR ;) (param $0 i32)
  (local.set $0
   (global.get $STACKTOP)
  )
  (global.set $STACKTOP
   (i32.add
    (global.get $STACKTOP)
    (i32.const 16)
   )
  )
  (if
   (i32.ge_s
    (global.get $STACKTOP)
    (global.get $STACK_MAX)
   )
   (call $abortStackOverflow
    (i32.const 16)
   )
  )
  (drop
   (call $_puts
    (global.get $memoryBase$asm2wasm$import)
   )
  )
  (global.set $STACKTOP
   (local.get $0)
  )
 )
 (func $runPostSets (; 3 ;) (; has Stack IR ;)
  (nop)
 )
 (func $__post_instantiate (; 4 ;) (; has Stack IR ;)
  (global.set $STACKTOP
   (i32.add
    (global.get $memoryBase$asm2wasm$import)
    (i32.const 32)
   )
  )
  (global.set $STACK_MAX
   (i32.add
    (global.get $STACKTOP)
    (i32.const 5242880)
   )
  )
  (call $__ZN3FooC2Ev
   (i32.add
    (global.get $memoryBase$asm2wasm$import)
    (i32.const 5242912)
   )
  )
 )
)
