(module
 (type $FUNCSIG$j (func (result i64)))
 (type $FUNCSIG$vi (func (param i32)))
 (type $FUNCSIG$i (func (result i32)))
 (type $legaltype$illegalImportResult (func (result i32)))
 (import "env" "memory" (memory $memory 256 256))
 (import "env" "table" (table $table 0 0 anyfunc))
 (import "env" "__memory_base" (global $__memory_base i32))
 (import "env" "__table_base" (global $__table_base i32))
 (import "env" "setTempRet0" (func $setTempRet0 (param i32)))
 (import "env" "getTempRet0" (func $getTempRet0 (result i32)))
 (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32)))
 (global $tempRet0 (mut i32) (i32.const 0))
 (export "illegalResult" (func $legalstub$illegalResult))
 (export "imports" (func $imports))
 (func $illegalResult (; 3 ;) (result i64)
  (return
   (i64.const 8589934593)
  )
 )
 (func $imports (; 4 ;) (result i32)
  (return
   (i32.wrap/i64
    (call $legalfunc$illegalImportResult)
   )
  )
 )
 (func $legalstub$illegalResult (; 5 ;) (result i32)
  (local $0 i64)
  (set_local $0
   (call $illegalResult)
  )
  (call $setTempRet0
   (i32.wrap/i64
    (i64.shr_u
     (get_local $0)
     (i64.const 32)
    )
   )
  )
  (i32.wrap/i64
   (get_local $0)
  )
 )
 (func $legalfunc$illegalImportResult (; 6 ;) (result i64)
  (i64.or
   (i64.extend_u/i32
    (call $legalimport$illegalImportResult)
   )
   (i64.shl
    (i64.extend_u/i32
     (call $getTempRet0)
    )
    (i64.const 32)
   )
  )
 )
)
