text: // Copy Binaryen exports to global scope
  
  const binaryen = global.Binaryen || require("binaryen");
  
  for (var key in binaryen)
    if (key.startsWith("_Binaryen") || key.startsWith("_Relooper"))
      global[key] = binaryen[key];
  
  // Utilize Binaryen's heap
  
  global.allocate_memory = function(size) {
    if (!size) return 0; // should be safe in our case
    return binaryen._malloc(size);
  };
  
  global.free_memory = function(ptr) {
    if (ptr) binaryen._free(ptr);
  };
  
  global.move_memory = function(dest, src, n) {
    return binaryen._memmove(dest, src, n);
  };
  
  global.store = function(ptr, val) {
    binaryen.HEAPU8[ptr] = val;
  };
  
  global.load = function(ptr) {
    return binaryen.HEAPU8[ptr];
  };
  
  // Implement module stubs
  
  const Module = require("../../module").Module;
  
  Module.prototype.toText = function toText() {
    var previousPrint = binaryen.print;
    var ret = "";
    binaryen.print = function(x) { ret += x + "\n" };
    _BinaryenModulePrint(this.ref);
    binaryen.print = previousPrint;
    return ret;
  };
  
  Module.prototype.toAsmjs = function toAsmjs() {
    var previousPrint = binaryen.print;
    var ret = "";
    binaryen.print = function(x) { ret += x + "\n" };
    _BinaryenModulePrintAsmjs(this.ref);
    binaryen.print = previousPrint;
    return ret;
  };
  