
function asmFunc(imports) {
 var Math_imul = Math.imul;
 var Math_fround = Math.fround;
 var Math_abs = Math.abs;
 var Math_clz32 = Math.clz32;
 var Math_min = Math.min;
 var Math_max = Math.max;
 var Math_floor = Math.floor;
 var Math_ceil = Math.ceil;
 var Math_trunc = Math.trunc;
 var Math_sqrt = Math.sqrt;
 var nan = NaN;
 var infinity = Infinity;
 function legalstub$1($0, $1, $2, $3, $4, $5) {
  $1 = $1 + $3 | 0;
  $0 = $0 + $2 | 0;
  $1 = $2 >>> 0 > $0 >>> 0 ? $1 + 1 | 0 : $1;
  return ($0 | 0) == ($4 | 0) & ($1 | 0) == ($5 | 0);
 }
 
 function legalstub$2($0, $1, $2, $3, $4, $5) {
  return ($4 | 0) == ($0 - $2 | 0) & ($5 | 0) == ($1 - (($0 >>> 0 < $2 >>> 0) + $3 | 0) | 0);
 }
 
 return {
  "check_add_i64": legalstub$1, 
  "check_sub_i64": legalstub$2
 };
}

var retasmFunc = asmFunc({
});
export var check_add_i64 = retasmFunc.check_add_i64;
export var check_sub_i64 = retasmFunc.check_sub_i64;
