(module
 (type $FUNCSIG$j (func (result i64)))
 (type $legaltype$illegalImportResult (func (result i32)))
 (import "env" "illegalImportResult" (func $illegalImportResult (result i64)))
 (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32)))
 (import "env" "memory" (memory $0 256 256))
 (import "env" "table" (table 0 0 anyfunc))
 (import "env" "memoryBase" (global $memoryBase i32))
 (import "env" "tableBase" (global $tableBase i32))
 (global $tempRet0 (mut i32) (i32.const 0))
 (export "illegalResult" (func $legalstub$illegalResult))
 (export "imports" (func $imports))
 (func $illegalResult (result i64)
  (return
   (i64.const 8589934593)
  )
 )
 (func $imports (result i32)
  (return
   (i32.wrap/i64
    (call $legalfunc$illegalImportResult)
   )
  )
 )
 (func $legalstub$illegalResult (result i32)
  (local $0 i64)
  (set_local $0
   (call $illegalResult)
  )
  (set_global $tempRet0
   (i32.wrap/i64
    (i64.shr_u
     (get_local $0)
     (i64.const 32)
    )
   )
  )
  (i32.wrap/i64
   (get_local $0)
  )
 )
 (func $legalfunc$illegalImportResult (result i64)
  (i64.or
   (i64.extend_u/i32
    (call $legalimport$illegalImportResult)
   )
   (i64.shl
    (i64.extend_u/i32
     (get_global $tempRet0)
    )
    (i64.const 32)
   )
  )
 )
)
