(module
 (type $0 (func (param i32 i32) (result i32)))
 (type $1 (func))
 (type $2 (func (result i32)))
 (type $3 (func (param i32)))
 (type $4 (func (param i32 i32)))
 (import "env" "printf" (func $printf (param i32 i32) (result i32)))
 (import "env" "__handle_stack_overflow" (func $__handle_stack_overflow (param i32)))
 (global $__stack_pointer (mut i32) (i32.const 66128))
 (global $global$1 i32 (i32.const 66128))
 (global $global$2 i32 (i32.const 587))
 (global $__stack_base (mut i32) (i32.const 0))
 (global $__stack_limit (mut i32) (i32.const 0))
 (memory $0 2)
 (data $0 (i32.const 568) "%d:%d\n\00Result: %d\n\00")
 (table $0 1 1 funcref)
 (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 "__set_stack_limits" (func $__set_stack_limits))
 (func $__wasm_call_ctors
 )
 (func $foo (param $0 i32) (param $1 i32) (result i32)
  (local $2 i32)
  (local $3 i32)
  (local $4 i32)
  (block
   (if
    (i32.or
     (i32.gt_u
      (local.tee $3
       (local.tee $2
        (i32.sub
         (global.get $__stack_pointer)
         (i32.const 16)
        )
       )
      )
      (global.get $__stack_base)
     )
     (i32.lt_u
      (local.get $3)
      (global.get $__stack_limit)
     )
    )
    (then
     (call $__handle_stack_overflow
      (local.get $3)
     )
    )
   )
   (global.set $__stack_pointer
    (local.get $3)
   )
  )
  (i32.store offset=4
   (local.get $2)
   (local.get $1)
  )
  (i32.store
   (local.get $2)
   (local.get $0)
  )
  (drop
   (call $printf
    (i32.const 568)
    (local.get $2)
   )
  )
  (block
   (if
    (i32.or
     (i32.gt_u
      (local.tee $4
       (i32.add
        (local.get $2)
        (i32.const 16)
       )
      )
      (global.get $__stack_base)
     )
     (i32.lt_u
      (local.get $4)
      (global.get $__stack_limit)
     )
    )
    (then
     (call $__handle_stack_overflow
      (local.get $4)
     )
    )
   )
   (global.set $__stack_pointer
    (local.get $4)
   )
  )
  (i32.add
   (local.get $1)
   (local.get $0)
  )
 )
 (func $__original_main (result i32)
  (local $0 i32)
  (local $1 i32)
  (local $2 i32)
  (block
   (if
    (i32.or
     (i32.gt_u
      (local.tee $1
       (local.tee $0
        (i32.sub
         (global.get $__stack_pointer)
         (i32.const 16)
        )
       )
      )
      (global.get $__stack_base)
     )
     (i32.lt_u
      (local.get $1)
      (global.get $__stack_limit)
     )
    )
    (then
     (call $__handle_stack_overflow
      (local.get $1)
     )
    )
   )
   (global.set $__stack_pointer
    (local.get $1)
   )
  )
  (i32.store
   (local.get $0)
   (call $foo
    (i32.const 1)
    (i32.const 2)
   )
  )
  (drop
   (call $printf
    (i32.const 575)
    (local.get $0)
   )
  )
  (block
   (if
    (i32.or
     (i32.gt_u
      (local.tee $2
       (i32.add
        (local.get $0)
        (i32.const 16)
       )
      )
      (global.get $__stack_base)
     )
     (i32.lt_u
      (local.get $2)
      (global.get $__stack_limit)
     )
    )
    (then
     (call $__handle_stack_overflow
      (local.get $2)
     )
    )
   )
   (global.set $__stack_pointer
    (local.get $2)
   )
  )
  (i32.const 0)
 )
 (func $main (param $0 i32) (param $1 i32) (result i32)
  (call $__original_main)
 )
 (func $__set_stack_limits (param $0 i32) (param $1 i32)
  (global.set $__stack_base
   (local.get $0)
  )
  (global.set $__stack_limit
   (local.get $1)
  )
 )
)
